@@ -13954,46 +13954,32 @@ static int zend_jit_fetch_obj(zend_jit_ctx *jit,
13954
13954
13955
13955
ir_IF_FALSE_cold(if_prop_obj);
13956
13956
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
-
13966
13957
jit_SET_EX_OPLINE(jit, opline);
13967
13958
ir_CALL_1(IR_VOID, ir_CONST_FC_FUNC(zend_readonly_property_indirect_modification_error), prop_info_ref);
13968
13959
jit_set_Z_TYPE_INFO(jit, res_addr, _IS_ERROR);
13969
13960
ir_END_list(end_inputs);
13970
13961
13971
13962
if (flags == ZEND_FETCH_DIM_WRITE) {
13972
13963
ir_IF_FALSE_cold(if_readonly);
13973
- ir_MERGE_WITH(reinit_path);
13974
13964
jit_SET_EX_OPLINE(jit, opline);
13975
13965
ir_CALL_2(IR_VOID, ir_CONST_FC_FUNC(zend_jit_check_array_promotion),
13976
13966
prop_ref, prop_info_ref);
13977
13967
ir_END_list(end_inputs);
13978
13968
ir_IF_FALSE(if_has_prop_info);
13979
13969
} else if (flags == ZEND_FETCH_REF) {
13980
13970
ir_IF_FALSE_cold(if_readonly);
13981
- ir_MERGE_WITH(reinit_path);
13982
13971
ir_CALL_3(IR_VOID, ir_CONST_FC_FUNC(zend_jit_create_typed_ref),
13983
13972
prop_ref,
13984
13973
prop_info_ref,
13985
13974
jit_ZVAL_ADDR(jit, res_addr));
13986
13975
ir_END_list(end_inputs);
13987
13976
ir_IF_FALSE(if_has_prop_info);
13988
13977
} else {
13989
- ir_ref list = reinit_path;
13990
-
13991
13978
ZEND_ASSERT(flags == 0);
13992
13979
ir_IF_FALSE(if_has_prop_info);
13993
- ir_END_list(list );
13980
+ ir_ref no_prop_info_path = ir_END( );
13994
13981
ir_IF_FALSE(if_readonly);
13995
- ir_END_list(list);
13996
- ir_MERGE_list(list);
13982
+ ir_MERGE_WITH(no_prop_info_path);
13997
13983
}
13998
13984
}
13999
13985
} else {
@@ -14031,19 +14017,12 @@ static int zend_jit_fetch_obj(zend_jit_ctx *jit,
14031
14017
ir_END_list(end_inputs);
14032
14018
14033
14019
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);
14040
14020
jit_SET_EX_OPLINE(jit, opline);
14041
14021
ir_CALL_1(IR_VOID, ir_CONST_FC_FUNC(zend_readonly_property_indirect_modification_error), ir_CONST_ADDR(prop_info));
14042
14022
jit_set_Z_TYPE_INFO(jit, res_addr, _IS_ERROR);
14043
14023
ir_END_list(end_inputs);
14044
14024
14045
- ir_IF_TRUE(if_reinitable);
14046
- ir_STORE(extra_addr, ir_AND_U32(extra, ir_CONST_U32(~IS_PROP_REINITABLE)));
14025
+ goto result_fetched;
14047
14026
}
14048
14027
14049
14028
if (opline->opcode == ZEND_FETCH_OBJ_W
@@ -14117,6 +14096,7 @@ static int zend_jit_fetch_obj(zend_jit_ctx *jit,
14117
14096
}
14118
14097
}
14119
14098
14099
+ result_fetched:
14120
14100
if (op1_avoid_refcounting) {
14121
14101
SET_STACK_REG(JIT_G(current_frame)->stack, EX_VAR_TO_NUM(opline->op1.var), ZREG_NONE);
14122
14102
}
0 commit comments