@@ -11758,7 +11758,11 @@ static int zend_jit_fetch_dim_read(dasm_State **Dst,
11758
11758
| ZVAL_COPY_VALUE_V res_addr, -1, val_addr, res_info, ZREG_R0, ZREG_R1
11759
11759
if (Z_MODE(res_addr) == IS_MEM_ZVAL) {
11760
11760
if (type < IS_STRING) {
11761
- | SET_ZVAL_TYPE_INFO res_addr, type
11761
+ if (Z_REG(res_addr) != ZREG_FP ||
11762
+ JIT_G(current_frame) == NULL ||
11763
+ STACK_MEM_TYPE(JIT_G(current_frame)->stack, EX_VAR_TO_NUM(Z_OFFSET(res_addr))) != type) {
11764
+ | SET_ZVAL_TYPE_INFO res_addr, type
11765
+ }
11762
11766
} else {
11763
11767
| SET_ZVAL_TYPE_INFO res_addr, edx
11764
11768
if (!result_avoid_refcounting) {
@@ -12825,7 +12829,11 @@ static int zend_jit_fetch_obj(dasm_State **Dst,
12825
12829
| // ZVAL_COPY
12826
12830
| ZVAL_COPY_VALUE_V res_addr, -1, val_addr, res_info, ZREG_R0, ZREG_R1
12827
12831
if (type < IS_STRING) {
12828
- | SET_ZVAL_TYPE_INFO res_addr, type
12832
+ if (Z_REG(res_addr) != ZREG_FP ||
12833
+ JIT_G(current_frame) == NULL ||
12834
+ STACK_MEM_TYPE(JIT_G(current_frame)->stack, EX_VAR_TO_NUM(Z_OFFSET(res_addr))) != type) {
12835
+ | SET_ZVAL_TYPE_INFO res_addr, type
12836
+ }
12829
12837
} else {
12830
12838
| SET_ZVAL_TYPE_INFO res_addr, edx
12831
12839
if (!result_avoid_refcounting) {
0 commit comments