Skip to content

Commit 1bc5f49

Browse files
committed
Update x86 jit implementation
1 parent 8ac373b commit 1bc5f49

File tree

1 file changed

+14
-3
lines changed

1 file changed

+14
-3
lines changed

ext/opcache/jit/zend_jit_x86.dasc

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12518,12 +12518,18 @@ static int zend_jit_fetch_obj(dasm_State **Dst,
1251812518
|.cold_code
1251912519
|1:
1252012520
| 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:
1252312529
| mov FCARG1a, FCARG2a
1252412530
| EXT_CALL zend_readonly_property_modification_error, r0
1252512531
| jmp >9
12526-
|2:
12532+
|3:
1252712533
if (flags == ZEND_FETCH_DIM_WRITE) {
1252812534
| SET_EX_OPLINE opline, r0
1252912535
| EXT_CALL zend_jit_check_array_promotion, r0
@@ -12564,6 +12570,11 @@ static int zend_jit_fetch_obj(dasm_State **Dst,
1256412570
}
1256512571
if (opline->opcode == ZEND_FETCH_OBJ_W && (prop_info->flags & ZEND_ACC_READONLY)) {
1256612572
| 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
1256712578
|.cold_code
1256812579
|4:
1256912580
| LOAD_ADDR FCARG1a, prop_info

0 commit comments

Comments
 (0)