@@ -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 result_fetched;
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+ result_fetched:
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