@@ -6325,7 +6325,12 @@ static int zend_jit_assign_dim_op(dasm_State **Dst, const zend_op *opline, uint3
6325
6325
| LOAD_ZVAL_ADDR FCARG2x, op3_addr
6326
6326
| LOAD_ADDR CARG3, binary_op
6327
6327
| SET_EX_OPLINE opline, REG0
6328
- | EXT_CALL zend_jit_assign_op_to_typed_ref, REG0
6328
+ if (((opline+1)->op1_type & (IS_TMP_VAR|IS_VAR))
6329
+ && (op1_data_info & (MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE))) {
6330
+ | EXT_CALL zend_jit_assign_op_to_typed_ref_tmp, REG0
6331
+ } else {
6332
+ | EXT_CALL zend_jit_assign_op_to_typed_ref, REG0
6333
+ }
6329
6334
| b >9
6330
6335
|.code
6331
6336
|1:
@@ -6446,7 +6451,12 @@ static int zend_jit_assign_op(dasm_State **Dst, const zend_op *opline, uint32_t
6446
6451
| LOAD_ZVAL_ADDR FCARG2x, op2_addr
6447
6452
| LOAD_ADDR CARG3, binary_op
6448
6453
| SET_EX_OPLINE opline, REG0
6449
- | EXT_CALL zend_jit_assign_op_to_typed_ref, REG0
6454
+ if ((opline->op2_type & (IS_TMP_VAR|IS_VAR))
6455
+ && (op2_info & (MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE))) {
6456
+ | EXT_CALL zend_jit_assign_op_to_typed_ref_tmp, REG0
6457
+ } else {
6458
+ | EXT_CALL zend_jit_assign_op_to_typed_ref, REG0
6459
+ }
6450
6460
zend_jit_check_exception(Dst);
6451
6461
| b >9
6452
6462
|.code
@@ -13231,7 +13241,12 @@ static int zend_jit_assign_obj_op(dasm_State **Dst,
13231
13241
| LOAD_ZVAL_ADDR FCARG2x, val_addr
13232
13242
}
13233
13243
| LOAD_ADDR CARG3, binary_op
13234
- | EXT_CALL zend_jit_assign_op_to_typed_ref, REG0
13244
+ if ((opline->op2_type & (IS_TMP_VAR|IS_VAR))
13245
+ && (val_info & (MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE))) {
13246
+ | EXT_CALL zend_jit_assign_op_to_typed_ref_tmp, REG0
13247
+ } else {
13248
+ | EXT_CALL zend_jit_assign_op_to_typed_ref, REG0
13249
+ }
13235
13250
| b >9
13236
13251
|.code
13237
13252
@@ -13292,7 +13307,12 @@ static int zend_jit_assign_obj_op(dasm_State **Dst,
13292
13307
| SET_EX_OPLINE opline, REG0
13293
13308
}
13294
13309
| LOAD_ADDR CARG3, binary_op
13295
- | EXT_CALL zend_jit_assign_op_to_typed_ref, REG0
13310
+ if (((opline+1)->op1_type & (IS_TMP_VAR|IS_VAR))
13311
+ && (val_info & (MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE))) {
13312
+ | EXT_CALL zend_jit_assign_op_to_typed_ref_tmp, REG0
13313
+ } else {
13314
+ | EXT_CALL zend_jit_assign_op_to_typed_ref, REG0
13315
+ }
13296
13316
| b >9
13297
13317
|.code
13298
13318
|2:
0 commit comments