Skip to content

Commit c890185

Browse files
committed
Try to update arm jit implementation
1 parent c899231 commit c890185

File tree

1 file changed

+14
-3
lines changed

1 file changed

+14
-3
lines changed

ext/opcache/jit/zend_jit_arm64.dasc

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11840,12 +11840,18 @@ static int zend_jit_fetch_obj(dasm_State **Dst,
1184011840
|1:
1184111841
| ldr TMP1w, [FCARG2x, #offsetof(zend_property_info, flags)]
1184211842
| 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:
1184511851
| mov FCARG1x, FCARG2x
1184611852
| EXT_CALL zend_readonly_property_modification_error, REG0
1184711853
| b >9
11848-
|2:
11854+
|3:
1184911855
if (flags == ZEND_FETCH_DIM_WRITE) {
1185011856
| SET_EX_OPLINE opline, REG0
1185111857
| EXT_CALL zend_jit_check_array_promotion, REG0
@@ -11878,6 +11884,11 @@ static int zend_jit_fetch_obj(dasm_State **Dst,
1187811884
}
1187911885
if (opline->opcode == ZEND_FETCH_OBJ_W && (prop_info->flags & ZEND_ACC_READONLY)) {
1188011886
| 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
1188111892
|.cold_code
1188211893
|4:
1188311894
| LOAD_ADDR FCARG1x, prop_info

0 commit comments

Comments
 (0)