Skip to content

Commit e6120aa

Browse files
committed
Implement JIT changes
1 parent 4b7f453 commit e6120aa

File tree

1 file changed

+4
-24
lines changed

1 file changed

+4
-24
lines changed

ext/opcache/jit/zend_jit_ir.c

Lines changed: 4 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -13954,46 +13954,32 @@ static int zend_jit_fetch_obj(zend_jit_ctx *jit,
1395413954

1395513955
ir_IF_FALSE_cold(if_prop_obj);
1395613956

13957-
ir_ref extra_addr = ir_ADD_OFFSET(jit_ZVAL_ADDR(jit, prop_addr), offsetof(zval, u2.extra));
13958-
ir_ref extra = ir_LOAD_U32(extra_addr);
13959-
ir_ref if_reinitable = ir_IF(ir_AND_U32(extra, ir_CONST_U32(IS_PROP_REINITABLE)));
13960-
ir_IF_TRUE(if_reinitable);
13961-
ir_STORE(extra_addr, ir_AND_U32(extra, ir_CONST_U32(~IS_PROP_REINITABLE)));
13962-
ir_ref reinit_path = ir_END();
13963-
13964-
ir_IF_FALSE(if_reinitable);
13965-
1396613957
jit_SET_EX_OPLINE(jit, opline);
1396713958
ir_CALL_1(IR_VOID, ir_CONST_FC_FUNC(zend_readonly_property_indirect_modification_error), prop_info_ref);
1396813959
jit_set_Z_TYPE_INFO(jit, res_addr, _IS_ERROR);
1396913960
ir_END_list(end_inputs);
1397013961

1397113962
if (flags == ZEND_FETCH_DIM_WRITE) {
1397213963
ir_IF_FALSE_cold(if_readonly);
13973-
ir_MERGE_WITH(reinit_path);
1397413964
jit_SET_EX_OPLINE(jit, opline);
1397513965
ir_CALL_2(IR_VOID, ir_CONST_FC_FUNC(zend_jit_check_array_promotion),
1397613966
prop_ref, prop_info_ref);
1397713967
ir_END_list(end_inputs);
1397813968
ir_IF_FALSE(if_has_prop_info);
1397913969
} else if (flags == ZEND_FETCH_REF) {
1398013970
ir_IF_FALSE_cold(if_readonly);
13981-
ir_MERGE_WITH(reinit_path);
1398213971
ir_CALL_3(IR_VOID, ir_CONST_FC_FUNC(zend_jit_create_typed_ref),
1398313972
prop_ref,
1398413973
prop_info_ref,
1398513974
jit_ZVAL_ADDR(jit, res_addr));
1398613975
ir_END_list(end_inputs);
1398713976
ir_IF_FALSE(if_has_prop_info);
1398813977
} else {
13989-
ir_ref list = reinit_path;
13990-
1399113978
ZEND_ASSERT(flags == 0);
1399213979
ir_IF_FALSE(if_has_prop_info);
13993-
ir_END_list(list);
13980+
ir_ref no_prop_info_path = ir_END();
1399413981
ir_IF_FALSE(if_readonly);
13995-
ir_END_list(list);
13996-
ir_MERGE_list(list);
13982+
ir_MERGE_WITH(no_prop_info_path);
1399713983
}
1399813984
}
1399913985
} else {
@@ -14031,19 +14017,12 @@ static int zend_jit_fetch_obj(zend_jit_ctx *jit,
1403114017
ir_END_list(end_inputs);
1403214018

1403314019
ir_IF_FALSE_cold(if_prop_obj);
14034-
14035-
ir_ref extra_addr = ir_ADD_OFFSET(jit_ZVAL_ADDR(jit, prop_addr), offsetof(zval, u2.extra));
14036-
ir_ref extra = ir_LOAD_U32(extra_addr);
14037-
ir_ref if_reinitable = ir_IF(ir_AND_U32(extra, ir_CONST_U32(IS_PROP_REINITABLE)));
14038-
14039-
ir_IF_FALSE(if_reinitable);
1404014020
jit_SET_EX_OPLINE(jit, opline);
1404114021
ir_CALL_1(IR_VOID, ir_CONST_FC_FUNC(zend_readonly_property_indirect_modification_error), ir_CONST_ADDR(prop_info));
1404214022
jit_set_Z_TYPE_INFO(jit, res_addr, _IS_ERROR);
1404314023
ir_END_list(end_inputs);
1404414024

14045-
ir_IF_TRUE(if_reinitable);
14046-
ir_STORE(extra_addr, ir_AND_U32(extra, ir_CONST_U32(~IS_PROP_REINITABLE)));
14025+
goto end;
1404714026
}
1404814027

1404914028
if (opline->opcode == ZEND_FETCH_OBJ_W
@@ -14117,6 +14096,7 @@ static int zend_jit_fetch_obj(zend_jit_ctx *jit,
1411714096
}
1411814097
}
1411914098

14099+
end:
1412014100
if (op1_avoid_refcounting) {
1412114101
SET_STACK_REG(JIT_G(current_frame)->stack, EX_VAR_TO_NUM(opline->op1.var), ZREG_NONE);
1412214102
}

0 commit comments

Comments
 (0)