@@ -989,7 +989,7 @@ ZEND_VM_COLD_HELPER(zend_undefined_function_helper, ANY, ANY)
989
989
HANDLE_EXCEPTION ();
990
990
}
991
991
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 )
993
993
{
994
994
USE_OPLINE
995
995
zval * object ;
@@ -1002,7 +1002,7 @@ ZEND_VM_HANDLER(28, ZEND_ASSIGN_OBJ_OP, TMPVAR|UNUSED|THIS|CV, CONST|TMPVAR|CV,
1002
1002
zend_string * name , * tmp_name ;
1003
1003
1004
1004
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 );
1006
1006
property = GET_OP2_ZVAL_PTR (BP_VAR_R );
1007
1007
1008
1008
do {
@@ -1080,7 +1080,7 @@ ZEND_VM_C_LABEL(assign_op_object):
1080
1080
1081
1081
FREE_OP_DATA ();
1082
1082
FREE_OP2 ();
1083
- FREE_OP1 ();
1083
+ FREE_OP1_VAR_PTR ();
1084
1084
/* assign_obj has two opcodes! */
1085
1085
ZEND_VM_NEXT_OPCODE_EX (1 , 2 );
1086
1086
}
@@ -1248,7 +1248,7 @@ ZEND_VM_HANDLER(26, ZEND_ASSIGN_OP, VAR|CV, CONST|TMPVAR|CV, OP)
1248
1248
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION ();
1249
1249
}
1250
1250
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 )
1252
1252
{
1253
1253
USE_OPLINE
1254
1254
zval * object ;
@@ -1260,7 +1260,7 @@ ZEND_VM_HANDLER(132, ZEND_PRE_INC_OBJ, TMPVAR|UNUSED|THIS|CV, CONST|TMPVAR|CV, C
1260
1260
zend_string * name , * tmp_name ;
1261
1261
1262
1262
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 );
1264
1264
property = GET_OP2_ZVAL_PTR (BP_VAR_R );
1265
1265
1266
1266
do {
@@ -1312,7 +1312,7 @@ ZEND_VM_C_LABEL(pre_incdec_object):
1312
1312
} while (0 );
1313
1313
1314
1314
FREE_OP2 ();
1315
- FREE_OP1 ();
1315
+ FREE_OP1_VAR_PTR ();
1316
1316
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION ();
1317
1317
}
1318
1318
@@ -1333,7 +1333,7 @@ ZEND_VM_HANDLER(134, ZEND_POST_INC_OBJ, VAR|UNUSED|THIS|CV, CONST|TMPVAR|CV, CAC
1333
1333
zend_string * name , * tmp_name ;
1334
1334
1335
1335
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 );
1337
1337
property = GET_OP2_ZVAL_PTR (BP_VAR_R );
1338
1338
1339
1339
do {
@@ -1384,7 +1384,7 @@ ZEND_VM_C_LABEL(post_incdec_object):
1384
1384
} while (0 );
1385
1385
1386
1386
FREE_OP2 ();
1387
- FREE_OP1 ();
1387
+ FREE_OP1_VAR_PTR ();
1388
1388
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION ();
1389
1389
}
1390
1390
@@ -2113,39 +2113,39 @@ ZEND_VM_C_LABEL(fetch_obj_r_finish):
2113
2113
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION ();
2114
2114
}
2115
2115
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 )
2117
2117
{
2118
2118
USE_OPLINE
2119
2119
zval * property , * container , * result ;
2120
2120
2121
2121
SAVE_OPLINE ();
2122
2122
2123
- container = GET_OP1_OBJ_ZVAL_PTR_UNDEF ( BP_VAR_R );
2123
+ container = GET_OP1_OBJ_ZVAL_PTR_PTR_UNDEF ( BP_VAR_W );
2124
2124
property = GET_OP2_ZVAL_PTR (BP_VAR_R );
2125
2125
result = EX_VAR (opline -> result .var );
2126
2126
zend_fetch_property_address (
2127
2127
result , container , OP1_TYPE , property , OP2_TYPE ,
2128
2128
((OP2_TYPE == IS_CONST ) ? CACHE_ADDR (opline -> extended_value & ~ZEND_FETCH_OBJ_FLAGS ) : NULL ),
2129
2129
BP_VAR_W , opline -> extended_value & ZEND_FETCH_OBJ_FLAGS , 1 OPLINE_CC EXECUTE_DATA_CC );
2130
2130
FREE_OP2 ();
2131
- if (OP1_TYPE & ( IS_VAR | IS_TMP_VAR ) ) {
2131
+ if (OP1_TYPE == IS_VAR ) {
2132
2132
FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY (opline -> op1 .var );
2133
2133
}
2134
2134
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION ();
2135
2135
}
2136
2136
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 )
2138
2138
{
2139
2139
USE_OPLINE
2140
2140
zval * property , * container , * result ;
2141
2141
2142
2142
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 );
2144
2144
property = GET_OP2_ZVAL_PTR (BP_VAR_R );
2145
2145
result = EX_VAR (opline -> result .var );
2146
2146
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 );
2147
2147
FREE_OP2 ();
2148
- if (OP1_TYPE & ( IS_VAR | IS_TMP_VAR ) ) {
2148
+ if (OP1_TYPE == IS_VAR ) {
2149
2149
FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY (opline -> op1 .var );
2150
2150
}
2151
2151
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION ();
@@ -2262,15 +2262,15 @@ ZEND_VM_C_LABEL(fetch_obj_is_finish):
2262
2262
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION ();
2263
2263
}
2264
2264
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 )
2266
2266
{
2267
2267
#if !ZEND_VM_SPEC
2268
2268
USE_OPLINE
2269
2269
#endif
2270
2270
2271
2271
if (UNEXPECTED (ZEND_CALL_INFO (EX (call )) & ZEND_CALL_SEND_ARG_BY_REF )) {
2272
2272
/* Behave like FETCH_OBJ_W */
2273
- if (OP1_TYPE == IS_CONST ) {
2273
+ if (( OP1_TYPE & ( IS_CONST | IS_TMP_VAR )) ) {
2274
2274
ZEND_VM_DISPATCH_TO_HELPER (zend_use_tmp_in_write_context_helper );
2275
2275
}
2276
2276
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)
2331
2331
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION ();
2332
2332
}
2333
2333
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 ))
2335
2335
{
2336
2336
USE_OPLINE
2337
2337
zval * object , * property , * value , tmp ;
2338
2338
zend_object * zobj ;
2339
2339
zend_string * name , * tmp_name ;
2340
2340
2341
2341
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 );
2343
2343
property = GET_OP2_ZVAL_PTR (BP_VAR_R );
2344
2344
value = GET_OP_DATA_ZVAL_PTR (BP_VAR_R );
2345
2345
@@ -2470,7 +2470,7 @@ ZEND_VM_C_LABEL(free_and_exit_assign_obj):
2470
2470
FREE_OP_DATA ();
2471
2471
ZEND_VM_C_LABEL (exit_assign_obj ):
2472
2472
FREE_OP2 ();
2473
- FREE_OP1 ();
2473
+ FREE_OP1_VAR_PTR ();
2474
2474
/* assign_obj has two opcodes! */
2475
2475
ZEND_VM_NEXT_OPCODE_EX (1 , 2 );
2476
2476
}
@@ -2676,14 +2676,14 @@ ZEND_VM_HANDLER(30, ZEND_ASSIGN_REF, VAR|CV, VAR|CV, SRC)
2676
2676
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION ();
2677
2677
}
2678
2678
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 ))
2680
2680
{
2681
2681
USE_OPLINE
2682
2682
zval * property , * container , * value_ptr ;
2683
2683
2684
2684
SAVE_OPLINE ();
2685
2685
2686
- container = GET_OP1_OBJ_ZVAL_PTR_UNDEF ( BP_VAR_R );
2686
+ container = GET_OP1_OBJ_ZVAL_PTR_PTR_UNDEF ( BP_VAR_W );
2687
2687
property = GET_OP2_ZVAL_PTR (BP_VAR_R );
2688
2688
2689
2689
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,
2706
2706
zend_assign_to_property_reference (container , OP1_TYPE , property , OP2_TYPE , value_ptr OPLINE_CC EXECUTE_DATA_CC );
2707
2707
}
2708
2708
2709
- FREE_OP1 ();
2709
+ FREE_OP1_VAR_PTR ();
2710
2710
FREE_OP2 ();
2711
2711
FREE_OP_DATA_VAR_PTR ();
2712
2712
ZEND_VM_NEXT_OPCODE_EX (1 , 2 );
0 commit comments