@@ -6238,6 +6238,7 @@ static int zend_jit_cmp_long_long(dasm_State **Dst, const zend_op *opline, zend_
6238
6238
case ZEND_IS_EQUAL:
6239
6239
case ZEND_IS_IDENTICAL:
6240
6240
case ZEND_CASE:
6241
+ case ZEND_CASE_STRICT:
6241
6242
| sete al
6242
6243
break;
6243
6244
case ZEND_IS_NOT_EQUAL:
@@ -6271,6 +6272,7 @@ static int zend_jit_cmp_long_long(dasm_State **Dst, const zend_op *opline, zend_
6271
6272
case ZEND_IS_EQUAL:
6272
6273
case ZEND_IS_IDENTICAL:
6273
6274
case ZEND_CASE:
6275
+ case ZEND_CASE_STRICT:
6274
6276
if (exit_addr) {
6275
6277
| jne &exit_addr
6276
6278
} else {
@@ -6330,6 +6332,7 @@ static int zend_jit_cmp_long_long(dasm_State **Dst, const zend_op *opline, zend_
6330
6332
case ZEND_IS_EQUAL:
6331
6333
case ZEND_IS_IDENTICAL:
6332
6334
case ZEND_CASE:
6335
+ case ZEND_CASE_STRICT:
6333
6336
if (exit_addr) {
6334
6337
| je &exit_addr
6335
6338
} else {
@@ -6388,6 +6391,7 @@ static int zend_jit_cmp_long_long(dasm_State **Dst, const zend_op *opline, zend_
6388
6391
case ZEND_IS_EQUAL:
6389
6392
case ZEND_IS_IDENTICAL:
6390
6393
case ZEND_CASE:
6394
+ case ZEND_CASE_STRICT:
6391
6395
| jne => target_label
6392
6396
break;
6393
6397
case ZEND_IS_NOT_EQUAL:
@@ -6420,6 +6424,7 @@ static int zend_jit_cmp_long_long(dasm_State **Dst, const zend_op *opline, zend_
6420
6424
case ZEND_IS_EQUAL:
6421
6425
case ZEND_IS_IDENTICAL:
6422
6426
case ZEND_CASE:
6427
+ case ZEND_CASE_STRICT:
6423
6428
| sete al
6424
6429
break;
6425
6430
case ZEND_IS_NOT_EQUAL:
@@ -6459,6 +6464,7 @@ static int zend_jit_cmp_double_common(dasm_State **Dst, const zend_op *opline, z
6459
6464
case ZEND_IS_EQUAL:
6460
6465
case ZEND_IS_IDENTICAL:
6461
6466
case ZEND_CASE:
6467
+ case ZEND_CASE_STRICT:
6462
6468
if (exit_addr) {
6463
6469
| jne &exit_addr
6464
6470
| jp &exit_addr
@@ -6528,6 +6534,7 @@ static int zend_jit_cmp_double_common(dasm_State **Dst, const zend_op *opline, z
6528
6534
case ZEND_IS_EQUAL:
6529
6535
case ZEND_IS_IDENTICAL:
6530
6536
case ZEND_CASE:
6537
+ case ZEND_CASE_STRICT:
6531
6538
| jp >1
6532
6539
if (exit_addr) {
6533
6540
| je &exit_addr
@@ -6597,6 +6604,7 @@ static int zend_jit_cmp_double_common(dasm_State **Dst, const zend_op *opline, z
6597
6604
case ZEND_IS_EQUAL:
6598
6605
case ZEND_IS_IDENTICAL:
6599
6606
case ZEND_CASE:
6607
+ case ZEND_CASE_STRICT:
6600
6608
| jne => target_label
6601
6609
| jp => target_label
6602
6610
break;
@@ -6630,6 +6638,7 @@ static int zend_jit_cmp_double_common(dasm_State **Dst, const zend_op *opline, z
6630
6638
case ZEND_IS_EQUAL:
6631
6639
case ZEND_IS_IDENTICAL:
6632
6640
case ZEND_CASE:
6641
+ case ZEND_CASE_STRICT:
6633
6642
| SET_ZVAL_TYPE_INFO res_addr, IS_FALSE
6634
6643
| jne => target_label
6635
6644
| jp => target_label
@@ -6675,6 +6684,7 @@ static int zend_jit_cmp_double_common(dasm_State **Dst, const zend_op *opline, z
6675
6684
case ZEND_IS_EQUAL:
6676
6685
case ZEND_IS_IDENTICAL:
6677
6686
case ZEND_CASE:
6687
+ case ZEND_CASE_STRICT:
6678
6688
| jp >1
6679
6689
| SET_ZVAL_TYPE_INFO res_addr, IS_TRUE
6680
6690
| je => target_label
@@ -6729,6 +6739,7 @@ static int zend_jit_cmp_double_common(dasm_State **Dst, const zend_op *opline, z
6729
6739
case ZEND_IS_EQUAL:
6730
6740
case ZEND_IS_IDENTICAL:
6731
6741
case ZEND_CASE:
6742
+ case ZEND_CASE_STRICT:
6732
6743
| jp >1
6733
6744
| mov eax, IS_TRUE
6734
6745
| je >2
@@ -7362,7 +7373,7 @@ static int zend_jit_identical(dasm_State **Dst, const zend_op *opline, uint32_t
7362
7373
| jmp =>not_identical_label
7363
7374
}
7364
7375
} else {
7365
- | SET_ZVAL_TYPE_INFO res_addr, (opline->opcode == ZEND_IS_IDENTICAL ? IS_FALSE : IS_TRUE)
7376
+ | SET_ZVAL_TYPE_INFO res_addr, (opline->opcode != ZEND_IS_NOT_IDENTICAL ? IS_FALSE : IS_TRUE)
7366
7377
zend_jit_check_exception(Dst);
7367
7378
}
7368
7379
} else if (has_concrete_type(op1_info) &&
@@ -7378,7 +7389,7 @@ static int zend_jit_identical(dasm_State **Dst, const zend_op *opline, uint32_t
7378
7389
| jmp =>identical_label
7379
7390
}
7380
7391
} else {
7381
- | SET_ZVAL_TYPE_INFO res_addr, (opline->opcode == ZEND_IS_IDENTICAL ? IS_TRUE : IS_FALSE)
7392
+ | SET_ZVAL_TYPE_INFO res_addr, (opline->opcode != ZEND_IS_NOT_IDENTICAL ? IS_TRUE : IS_FALSE)
7382
7393
}
7383
7394
} else if (Z_MODE(op1_addr) == IS_CONST_ZVAL && Z_MODE(op2_addr) == IS_CONST_ZVAL) {
7384
7395
if (zend_is_identical(Z_ZV(op1_addr), Z_ZV(op2_addr))) {
@@ -7391,7 +7402,7 @@ static int zend_jit_identical(dasm_State **Dst, const zend_op *opline, uint32_t
7391
7402
| jmp =>identical_label
7392
7403
}
7393
7404
} else {
7394
- | SET_ZVAL_TYPE_INFO res_addr, (opline->opcode == ZEND_IS_IDENTICAL ? IS_TRUE : IS_FALSE)
7405
+ | SET_ZVAL_TYPE_INFO res_addr, (opline->opcode != ZEND_IS_NOT_IDENTICAL ? IS_TRUE : IS_FALSE)
7395
7406
}
7396
7407
} else {
7397
7408
if (smart_branch_opcode) {
@@ -7403,7 +7414,7 @@ static int zend_jit_identical(dasm_State **Dst, const zend_op *opline, uint32_t
7403
7414
| jmp =>not_identical_label
7404
7415
}
7405
7416
} else {
7406
- | SET_ZVAL_TYPE_INFO res_addr, (opline->opcode == ZEND_IS_IDENTICAL ? IS_FALSE : IS_TRUE)
7417
+ | SET_ZVAL_TYPE_INFO res_addr, (opline->opcode != ZEND_IS_NOT_IDENTICAL ? IS_FALSE : IS_TRUE)
7407
7418
}
7408
7419
}
7409
7420
} else if (Z_MODE(op1_addr) == IS_CONST_ZVAL && Z_TYPE_P(Z_ZV(op1_addr)) <= IS_TRUE) {
@@ -7432,7 +7443,7 @@ static int zend_jit_identical(dasm_State **Dst, const zend_op *opline, uint32_t
7432
7443
| je >9
7433
7444
}
7434
7445
} else {
7435
- if (opline->opcode == ZEND_IS_IDENTICAL ) {
7446
+ if (opline->opcode != ZEND_IS_NOT_IDENTICAL ) {
7436
7447
| sete al
7437
7448
} else {
7438
7449
| setne al
@@ -7481,7 +7492,7 @@ static int zend_jit_identical(dasm_State **Dst, const zend_op *opline, uint32_t
7481
7492
| je >9
7482
7493
}
7483
7494
} else {
7484
- if (opline->opcode == ZEND_IS_IDENTICAL ) {
7495
+ if (opline->opcode != ZEND_IS_NOT_IDENTICAL ) {
7485
7496
| sete al
7486
7497
} else {
7487
7498
| setne al
@@ -7546,7 +7557,7 @@ static int zend_jit_identical(dasm_State **Dst, const zend_op *opline, uint32_t
7546
7557
}
7547
7558
} else {
7548
7559
| movzx eax, al
7549
- if (opline->opcode == ZEND_IS_IDENTICAL ) {
7560
+ if (opline->opcode != ZEND_IS_NOT_IDENTICAL ) {
7550
7561
| lea eax, [eax + 2]
7551
7562
} else {
7552
7563
| neg eax
0 commit comments