Skip to content

Commit 1b13532

Browse files
committed
Update x86 jit implementation
1 parent 39995d8 commit 1b13532

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
@@ -12521,12 +12521,18 @@ static int zend_jit_fetch_obj(dasm_State **Dst,
1252112521
|.cold_code
1252212522
|1:
1252312523
| 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:
1252612532
| mov FCARG1a, FCARG2a
1252712533
| EXT_CALL zend_readonly_property_modification_error, r0
1252812534
| jmp >9
12529-
|2:
12535+
|3:
1253012536
if (flags == ZEND_FETCH_DIM_WRITE) {
1253112537
| SET_EX_OPLINE opline, r0
1253212538
| EXT_CALL zend_jit_check_array_promotion, r0
@@ -12567,6 +12573,11 @@ static int zend_jit_fetch_obj(dasm_State **Dst,
1256712573
}
1256812574
if (opline->opcode == ZEND_FETCH_OBJ_W && (prop_info->flags & ZEND_ACC_READONLY)) {
1256912575
| 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
1257012581
|.cold_code
1257112582
|4:
1257212583
| LOAD_ADDR FCARG1a, prop_info

0 commit comments

Comments
 (0)