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