@@ -989,7 +989,7 @@ ZEND_VM_COLD_HELPER(zend_undefined_function_helper, ANY, ANY)
989989 HANDLE_EXCEPTION ();
990990}
991991
992- ZEND_VM_HANDLER (28 , ZEND_ASSIGN_OBJ_OP , TMPVAR |UNUSED |THIS |CV , CONST |TMPVAR |CV , OP )
992+ ZEND_VM_HANDLER (28 , ZEND_ASSIGN_OBJ_OP , VAR |UNUSED |THIS |CV , CONST |TMPVAR |CV , OP )
993993{
994994 USE_OPLINE
995995 zval * object ;
@@ -1002,7 +1002,7 @@ ZEND_VM_HANDLER(28, ZEND_ASSIGN_OBJ_OP, TMPVAR|UNUSED|THIS|CV, CONST|TMPVAR|CV,
10021002 zend_string * name , * tmp_name ;
10031003
10041004 SAVE_OPLINE ();
1005- object = GET_OP1_OBJ_ZVAL_PTR_UNDEF ( BP_VAR_R );
1005+ object = GET_OP1_OBJ_ZVAL_PTR_PTR_UNDEF ( BP_VAR_RW );
10061006 property = GET_OP2_ZVAL_PTR (BP_VAR_R );
10071007
10081008 do {
@@ -1080,7 +1080,7 @@ ZEND_VM_C_LABEL(assign_op_object):
10801080
10811081 FREE_OP_DATA ();
10821082 FREE_OP2 ();
1083- FREE_OP1 ();
1083+ FREE_OP1_VAR_PTR ();
10841084 /* assign_obj has two opcodes! */
10851085 ZEND_VM_NEXT_OPCODE_EX (1 , 2 );
10861086}
@@ -1248,7 +1248,7 @@ ZEND_VM_HANDLER(26, ZEND_ASSIGN_OP, VAR|CV, CONST|TMPVAR|CV, OP)
12481248 ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION ();
12491249}
12501250
1251- ZEND_VM_HANDLER (132 , ZEND_PRE_INC_OBJ , TMPVAR |UNUSED |THIS |CV , CONST |TMPVAR |CV , CACHE_SLOT )
1251+ ZEND_VM_HANDLER (132 , ZEND_PRE_INC_OBJ , VAR |UNUSED |THIS |CV , CONST |TMPVAR |CV , CACHE_SLOT )
12521252{
12531253 USE_OPLINE
12541254 zval * object ;
@@ -1260,7 +1260,7 @@ ZEND_VM_HANDLER(132, ZEND_PRE_INC_OBJ, TMPVAR|UNUSED|THIS|CV, CONST|TMPVAR|CV, C
12601260 zend_string * name , * tmp_name ;
12611261
12621262 SAVE_OPLINE ();
1263- object = GET_OP1_OBJ_ZVAL_PTR_UNDEF ( BP_VAR_R );
1263+ object = GET_OP1_OBJ_ZVAL_PTR_PTR_UNDEF ( BP_VAR_RW );
12641264 property = GET_OP2_ZVAL_PTR (BP_VAR_R );
12651265
12661266 do {
@@ -1312,7 +1312,7 @@ ZEND_VM_C_LABEL(pre_incdec_object):
13121312 } while (0 );
13131313
13141314 FREE_OP2 ();
1315- FREE_OP1 ();
1315+ FREE_OP1_VAR_PTR ();
13161316 ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION ();
13171317}
13181318
@@ -1333,7 +1333,7 @@ ZEND_VM_HANDLER(134, ZEND_POST_INC_OBJ, VAR|UNUSED|THIS|CV, CONST|TMPVAR|CV, CAC
13331333 zend_string * name , * tmp_name ;
13341334
13351335 SAVE_OPLINE ();
1336- object = GET_OP1_OBJ_ZVAL_PTR_UNDEF ( BP_VAR_R );
1336+ object = GET_OP1_OBJ_ZVAL_PTR_PTR_UNDEF ( BP_VAR_RW );
13371337 property = GET_OP2_ZVAL_PTR (BP_VAR_R );
13381338
13391339 do {
@@ -1384,7 +1384,7 @@ ZEND_VM_C_LABEL(post_incdec_object):
13841384 } while (0 );
13851385
13861386 FREE_OP2 ();
1387- FREE_OP1 ();
1387+ FREE_OP1_VAR_PTR ();
13881388 ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION ();
13891389}
13901390
@@ -2113,39 +2113,39 @@ ZEND_VM_C_LABEL(fetch_obj_r_finish):
21132113 ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION ();
21142114}
21152115
2116- ZEND_VM_HANDLER (85 , ZEND_FETCH_OBJ_W , TMPVAR |UNUSED |THIS |CV , CONST |TMPVAR |CV , FETCH_REF |DIM_WRITE |CACHE_SLOT )
2116+ ZEND_VM_HANDLER (85 , ZEND_FETCH_OBJ_W , VAR |UNUSED |THIS |CV , CONST |TMPVAR |CV , FETCH_REF |DIM_WRITE |CACHE_SLOT )
21172117{
21182118 USE_OPLINE
21192119 zval * property , * container , * result ;
21202120
21212121 SAVE_OPLINE ();
21222122
2123- container = GET_OP1_OBJ_ZVAL_PTR_UNDEF ( BP_VAR_R );
2123+ container = GET_OP1_OBJ_ZVAL_PTR_PTR_UNDEF ( BP_VAR_W );
21242124 property = GET_OP2_ZVAL_PTR (BP_VAR_R );
21252125 result = EX_VAR (opline -> result .var );
21262126 zend_fetch_property_address (
21272127 result , container , OP1_TYPE , property , OP2_TYPE ,
21282128 ((OP2_TYPE == IS_CONST ) ? CACHE_ADDR (opline -> extended_value & ~ZEND_FETCH_OBJ_FLAGS ) : NULL ),
21292129 BP_VAR_W , opline -> extended_value & ZEND_FETCH_OBJ_FLAGS , 1 OPLINE_CC EXECUTE_DATA_CC );
21302130 FREE_OP2 ();
2131- if (OP1_TYPE & ( IS_VAR | IS_TMP_VAR ) ) {
2131+ if (OP1_TYPE == IS_VAR ) {
21322132 FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY (opline -> op1 .var );
21332133 }
21342134 ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION ();
21352135}
21362136
2137- ZEND_VM_HANDLER (88 , ZEND_FETCH_OBJ_RW , TMPVAR |UNUSED |THIS |CV , CONST |TMPVAR |CV , CACHE_SLOT )
2137+ ZEND_VM_HANDLER (88 , ZEND_FETCH_OBJ_RW , VAR |UNUSED |THIS |CV , CONST |TMPVAR |CV , CACHE_SLOT )
21382138{
21392139 USE_OPLINE
21402140 zval * property , * container , * result ;
21412141
21422142 SAVE_OPLINE ();
2143- container = GET_OP1_OBJ_ZVAL_PTR_UNDEF ( BP_VAR_R );
2143+ container = GET_OP1_OBJ_ZVAL_PTR_PTR_UNDEF ( BP_VAR_RW );
21442144 property = GET_OP2_ZVAL_PTR (BP_VAR_R );
21452145 result = EX_VAR (opline -> result .var );
21462146 zend_fetch_property_address (result , container , OP1_TYPE , property , OP2_TYPE , ((OP2_TYPE == IS_CONST ) ? CACHE_ADDR (opline -> extended_value ) : NULL ), BP_VAR_RW , 0 , 1 OPLINE_CC EXECUTE_DATA_CC );
21472147 FREE_OP2 ();
2148- if (OP1_TYPE & ( IS_VAR | IS_TMP_VAR ) ) {
2148+ if (OP1_TYPE == IS_VAR ) {
21492149 FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY (opline -> op1 .var );
21502150 }
21512151 ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION ();
@@ -2262,15 +2262,15 @@ ZEND_VM_C_LABEL(fetch_obj_is_finish):
22622262 ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION ();
22632263}
22642264
2265- ZEND_VM_COLD_CONST_HANDLER (94 , ZEND_FETCH_OBJ_FUNC_ARG , CONST |TMPVAR |UNUSED |THIS |CV , CONST |TMPVAR |CV , FETCH_REF |CACHE_SLOT )
2265+ ZEND_VM_COLD_CONST_HANDLER (94 , ZEND_FETCH_OBJ_FUNC_ARG , CONST |TMP | VAR |UNUSED |THIS |CV , CONST |TMPVAR |CV , FETCH_REF |CACHE_SLOT )
22662266{
22672267#if !ZEND_VM_SPEC
22682268 USE_OPLINE
22692269#endif
22702270
22712271 if (UNEXPECTED (ZEND_CALL_INFO (EX (call )) & ZEND_CALL_SEND_ARG_BY_REF )) {
22722272 /* Behave like FETCH_OBJ_W */
2273- if (OP1_TYPE == IS_CONST ) {
2273+ if (( OP1_TYPE & ( IS_CONST | IS_TMP_VAR )) ) {
22742274 ZEND_VM_DISPATCH_TO_HELPER (zend_use_tmp_in_write_context_helper );
22752275 }
22762276 ZEND_VM_DISPATCH_TO_HANDLER (ZEND_FETCH_OBJ_W );
@@ -2331,15 +2331,15 @@ ZEND_VM_HANDLER(155, ZEND_FETCH_LIST_W, VAR, CONST|TMPVAR|CV)
23312331 ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION ();
23322332}
23332333
2334- ZEND_VM_HANDLER (24 , ZEND_ASSIGN_OBJ , TMPVAR |UNUSED |THIS |CV , CONST |TMPVAR |CV , CACHE_SLOT , SPEC (OP_DATA = CONST |TMP |VAR |CV ))
2334+ ZEND_VM_HANDLER (24 , ZEND_ASSIGN_OBJ , VAR |UNUSED |THIS |CV , CONST |TMPVAR |CV , CACHE_SLOT , SPEC (OP_DATA = CONST |TMP |VAR |CV ))
23352335{
23362336 USE_OPLINE
23372337 zval * object , * property , * value , tmp ;
23382338 zend_object * zobj ;
23392339 zend_string * name , * tmp_name ;
23402340
23412341 SAVE_OPLINE ();
2342- object = GET_OP1_OBJ_ZVAL_PTR_UNDEF ( BP_VAR_R );
2342+ object = GET_OP1_OBJ_ZVAL_PTR_PTR_UNDEF ( BP_VAR_W );
23432343 property = GET_OP2_ZVAL_PTR (BP_VAR_R );
23442344 value = GET_OP_DATA_ZVAL_PTR (BP_VAR_R );
23452345
@@ -2470,7 +2470,7 @@ ZEND_VM_C_LABEL(free_and_exit_assign_obj):
24702470 FREE_OP_DATA ();
24712471ZEND_VM_C_LABEL (exit_assign_obj ):
24722472 FREE_OP2 ();
2473- FREE_OP1 ();
2473+ FREE_OP1_VAR_PTR ();
24742474 /* assign_obj has two opcodes! */
24752475 ZEND_VM_NEXT_OPCODE_EX (1 , 2 );
24762476}
@@ -2676,14 +2676,14 @@ ZEND_VM_HANDLER(30, ZEND_ASSIGN_REF, VAR|CV, VAR|CV, SRC)
26762676 ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION ();
26772677}
26782678
2679- ZEND_VM_HANDLER (32 , ZEND_ASSIGN_OBJ_REF , TMPVAR |UNUSED |THIS |CV , CONST |TMPVAR |CV , CACHE_SLOT |SRC , SPEC (OP_DATA = VAR |CV ))
2679+ ZEND_VM_HANDLER (32 , ZEND_ASSIGN_OBJ_REF , VAR |UNUSED |THIS |CV , CONST |TMPVAR |CV , CACHE_SLOT |SRC , SPEC (OP_DATA = VAR |CV ))
26802680{
26812681 USE_OPLINE
26822682 zval * property , * container , * value_ptr ;
26832683
26842684 SAVE_OPLINE ();
26852685
2686- container = GET_OP1_OBJ_ZVAL_PTR_UNDEF ( BP_VAR_R );
2686+ container = GET_OP1_OBJ_ZVAL_PTR_PTR_UNDEF ( BP_VAR_W );
26872687 property = GET_OP2_ZVAL_PTR (BP_VAR_R );
26882688
26892689 value_ptr = GET_OP_DATA_ZVAL_PTR_PTR (BP_VAR_W );
@@ -2706,7 +2706,7 @@ ZEND_VM_HANDLER(32, ZEND_ASSIGN_OBJ_REF, TMPVAR|UNUSED|THIS|CV, CONST|TMPVAR|CV,
27062706 zend_assign_to_property_reference (container , OP1_TYPE , property , OP2_TYPE , value_ptr OPLINE_CC EXECUTE_DATA_CC );
27072707 }
27082708
2709- FREE_OP1 ();
2709+ FREE_OP1_VAR_PTR ();
27102710 FREE_OP2 ();
27112711 FREE_OP_DATA_VAR_PTR ();
27122712 ZEND_VM_NEXT_OPCODE_EX (1 , 2 );
0 commit comments