Skip to content

Commit 1b7955e

Browse files
committed
Port 08e7591 to IR JIT
Fix (at lease part of the) #phpGH-10635: ARM64 function JIT causes impossible assertion
1 parent 49a88d1 commit 1b7955e

File tree

2 files changed

+5
-5
lines changed

2 files changed

+5
-5
lines changed

ext/opcache/jit/zend_jit_ir.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13011,7 +13011,7 @@ static int zend_jit_fetch_obj(zend_jit_ctx *jit,
1301113011
ir_IF_TRUE(if_def);
1301213012
prop_addr = ZEND_ADDR_REF_ZVAL(prop_ref);
1301313013
if (opline->opcode == ZEND_FETCH_OBJ_W
13014-
&& (!ce || ce_is_instanceof || (ce->ce_flags & ZEND_ACC_HAS_TYPE_HINTS))) {
13014+
&& (!ce || ce_is_instanceof || (ce->ce_flags & (ZEND_ACC_HAS_TYPE_HINTS|ZEND_ACC_TRAIT)))) {
1301513015
uint32_t flags = opline->extended_value & ZEND_FETCH_OBJ_FLAGS;
1301613016

1301713017
ir_ref prop_info_ref = ir_LOAD_A(
@@ -13404,7 +13404,7 @@ static int zend_jit_assign_obj(zend_jit_ctx *jit,
1340413404
ir_IF_TRUE(if_def);
1340513405
prop_addr = ZEND_ADDR_REF_ZVAL(prop_ref);
1340613406

13407-
if (!ce || ce_is_instanceof || (ce->ce_flags & ZEND_ACC_HAS_TYPE_HINTS)) {
13407+
if (!ce || ce_is_instanceof || (ce->ce_flags & (ZEND_ACC_HAS_TYPE_HINTS|ZEND_ACC_TRAIT))) {
1340813408
ir_ref prop_info_ref = ir_LOAD_A(
1340913409
ir_ADD_OFFSET(run_time_cache, (opline->extended_value & ~ZEND_FETCH_OBJ_FLAGS) + sizeof(void*) * 2));
1341013410
ir_ref if_has_prop_info = ir_IF(prop_info_ref);
@@ -13660,7 +13660,7 @@ static int zend_jit_assign_obj_op(zend_jit_ctx *jit,
1366013660
ir_END_list(slow_inputs);
1366113661

1366213662
ir_IF_TRUE(if_same);
13663-
if (!ce || ce_is_instanceof || (ce->ce_flags & ZEND_ACC_HAS_TYPE_HINTS)) {
13663+
if (!ce || ce_is_instanceof || (ce->ce_flags & (ZEND_ACC_HAS_TYPE_HINTS|ZEND_ACC_TRAIT))) {
1366413664
ir_ref prop_info_ref = ir_LOAD_A(
1366513665
ir_ADD_OFFSET(run_time_cache, ((opline+1)->extended_value & ~ZEND_FETCH_OBJ_FLAGS) + sizeof(void*) * 2));
1366613666
ir_ref if_has_prop_info = ir_IF(prop_info_ref);
@@ -14064,7 +14064,7 @@ static int zend_jit_incdec_obj(zend_jit_ctx *jit,
1406414064
ir_END_list(slow_inputs);
1406514065

1406614066
ir_IF_TRUE(if_same);
14067-
if (!ce || ce_is_instanceof || (ce->ce_flags & ZEND_ACC_HAS_TYPE_HINTS)) {
14067+
if (!ce || ce_is_instanceof || (ce->ce_flags & (ZEND_ACC_HAS_TYPE_HINTS|ZEND_ACC_TRAIT))) {
1406814068
ir_ref prop_info_ref = ir_LOAD_A(
1406914069
ir_ADD_OFFSET(run_time_cache, (opline->extended_value & ~ZEND_FETCH_OBJ_FLAGS) + sizeof(void*) * 2));
1407014070
ir_ref if_has_prop_info = ir_IF(prop_info_ref);

0 commit comments

Comments
 (0)