@@ -11840,12 +11840,18 @@ static int zend_jit_fetch_obj(dasm_State **Dst,
11840
11840
|1:
11841
11841
| ldr TMP1w, [FCARG2x, #offsetof(zend_property_info, flags)]
11842
11842
| tst TMP1w, #ZEND_ACC_READONLY
11843
- | bne >2
11844
- | IF_TYPE REG2w, IS_OBJECT, >2
11843
+ | bne >3
11844
+ | IF_NOT_TYPE REG2w, IS_OBJECT, >2
11845
+ | GET_Z_PTR REG2, FCARG1x, TMP1
11846
+ | GC_ADDREF REG2, TMP1w
11847
+ | SET_ZVAL_PTR res_addr, REG2, TMP1
11848
+ | SET_ZVAL_TYPE_INFO res_addr, IS_OBJECT_EX, TMP1w, TMP2
11849
+ | b >9
11850
+ |2:
11845
11851
| mov FCARG1x, FCARG2x
11846
11852
| EXT_CALL zend_readonly_property_modification_error, REG0
11847
11853
| b >9
11848
- |2 :
11854
+ |3 :
11849
11855
if (flags == ZEND_FETCH_DIM_WRITE) {
11850
11856
| SET_EX_OPLINE opline, REG0
11851
11857
| EXT_CALL zend_jit_check_array_promotion, REG0
@@ -11878,6 +11884,11 @@ static int zend_jit_fetch_obj(dasm_State **Dst,
11878
11884
}
11879
11885
if (opline->opcode == ZEND_FETCH_OBJ_W && (prop_info->flags & ZEND_ACC_READONLY)) {
11880
11886
| IF_NOT_TYPE REG2w, IS_OBJECT, >4
11887
+ | GET_ZVAL_PTR REG2, prop_addr, TMP1
11888
+ | GC_ADDREF REG2, TMP1w
11889
+ | SET_ZVAL_PTR res_addr, REG2, TMP1
11890
+ | SET_ZVAL_TYPE_INFO res_addr, IS_OBJECT_EX, TMP1w, TMP2
11891
+ | b >9
11881
11892
|.cold_code
11882
11893
|4:
11883
11894
| LOAD_ADDR FCARG1x, prop_info
0 commit comments