@@ -12521,12 +12521,18 @@ static int zend_jit_fetch_obj(dasm_State **Dst,
12521
12521
|.cold_code
12522
12522
|1:
12523
12523
| test dword [FCARG2a + offsetof(zend_property_info, flags)], ZEND_ACC_READONLY
12524
- | jz >2
12525
- | IF_Z_TYPE FCARG1a, IS_OBJECT, >2
12524
+ | jz >3
12525
+ | IF_NOT_Z_TYPE FCARG1a, IS_OBJECT, >2
12526
+ | GET_Z_PTR r0, FCARG1a
12527
+ | GC_ADDREF r0
12528
+ | SET_ZVAL_PTR res_addr, r0
12529
+ | SET_ZVAL_TYPE_INFO res_addr, IS_OBJECT_EX
12530
+ | jmp >9
12531
+ |2:
12526
12532
| mov FCARG1a, FCARG2a
12527
12533
| EXT_CALL zend_readonly_property_modification_error, r0
12528
12534
| jmp >9
12529
- |2 :
12535
+ |3 :
12530
12536
if (flags == ZEND_FETCH_DIM_WRITE) {
12531
12537
| SET_EX_OPLINE opline, r0
12532
12538
| EXT_CALL zend_jit_check_array_promotion, r0
@@ -12567,6 +12573,11 @@ static int zend_jit_fetch_obj(dasm_State **Dst,
12567
12573
}
12568
12574
if (opline->opcode == ZEND_FETCH_OBJ_W && (prop_info->flags & ZEND_ACC_READONLY)) {
12569
12575
| IF_NOT_TYPE dl, IS_OBJECT, >4
12576
+ | GET_ZVAL_PTR r0, prop_addr
12577
+ | GC_ADDREF r0
12578
+ | SET_ZVAL_PTR res_addr, r0
12579
+ | SET_ZVAL_TYPE_INFO res_addr, IS_OBJECT_EX
12580
+ | jmp >9
12570
12581
|.cold_code
12571
12582
|4:
12572
12583
| LOAD_ADDR FCARG1a, prop_info
0 commit comments