@@ -2008,12 +2008,10 @@ ZEND_VM_HOT_OBJ_HANDLER(82, ZEND_FETCH_OBJ_R, CONST|TMPVAR|UNUSED|THIS|CV, CONST
2008
2008
{
2009
2009
USE_OPLINE
2010
2010
zval * container ;
2011
- zval * offset ;
2012
2011
void * * cache_slot = NULL ;
2013
2012
2014
2013
SAVE_OPLINE ();
2015
2014
container = GET_OP1_OBJ_ZVAL_PTR_UNDEF (BP_VAR_R );
2016
- offset = GET_OP2_ZVAL_PTR_UNDEF (BP_VAR_R );
2017
2015
2018
2016
if (OP1_TYPE == IS_CONST ||
2019
2017
(OP1_TYPE != IS_UNUSED && UNEXPECTED (Z_TYPE_P (container ) != IS_OBJECT ))) {
@@ -2027,10 +2025,7 @@ ZEND_VM_HOT_OBJ_HANDLER(82, ZEND_FETCH_OBJ_R, CONST|TMPVAR|UNUSED|THIS|CV, CONST
2027
2025
if (OP1_TYPE == IS_CV && UNEXPECTED (Z_TYPE_P (container ) == IS_UNDEF )) {
2028
2026
ZVAL_UNDEFINED_OP1 ();
2029
2027
}
2030
- if (OP2_TYPE == IS_CV && UNEXPECTED (Z_TYPE_P (offset ) == IS_UNDEF )) {
2031
- ZVAL_UNDEFINED_OP2 ();
2032
- }
2033
- zend_wrong_property_read (container , offset );
2028
+ zend_wrong_property_read (container , GET_OP2_ZVAL_PTR (BP_VAR_R ));
2034
2029
ZVAL_NULL (EX_VAR (opline -> result .var ));
2035
2030
ZEND_VM_C_GOTO (fetch_obj_r_finish );
2036
2031
} while (0 );
@@ -2043,7 +2038,6 @@ ZEND_VM_HOT_OBJ_HANDLER(82, ZEND_FETCH_OBJ_R, CONST|TMPVAR|UNUSED|THIS|CV, CONST
2043
2038
zval * retval ;
2044
2039
2045
2040
if (OP2_TYPE == IS_CONST ) {
2046
- name = Z_STR_P (offset );
2047
2041
cache_slot = CACHE_ADDR (opline -> extended_value & ~ZEND_FETCH_REF /* FUNC_ARG fetch may contain it */ );
2048
2042
2049
2043
if (EXPECTED (zobj -> ce == CACHED_PTR_EX (cache_slot ))) {
@@ -2061,6 +2055,7 @@ ZEND_VM_C_LABEL(fetch_obj_r_fast_copy):
2061
2055
}
2062
2056
}
2063
2057
} else if (EXPECTED (zobj -> properties != NULL )) {
2058
+ name = Z_STR_P (GET_OP2_ZVAL_PTR (BP_VAR_R ));
2064
2059
if (!IS_UNKNOWN_DYNAMIC_PROPERTY_OFFSET (prop_offset )) {
2065
2060
uintptr_t idx = ZEND_DECODE_DYN_PROP_OFFSET (prop_offset );
2066
2061
@@ -2094,11 +2089,9 @@ ZEND_VM_C_LABEL(fetch_obj_r_fast_copy):
2094
2089
}
2095
2090
}
2096
2091
}
2092
+ name = Z_STR_P (GET_OP2_ZVAL_PTR (BP_VAR_R ));
2097
2093
} else {
2098
- if (OP2_TYPE == IS_CV && UNEXPECTED (Z_TYPE_INFO_P (offset ) == IS_UNDEF )) {
2099
- ZVAL_UNDEFINED_OP2 ();
2100
- }
2101
- name = zval_try_get_tmp_string (offset , & tmp_name );
2094
+ name = zval_try_get_tmp_string (GET_OP2_ZVAL_PTR (BP_VAR_R ), & tmp_name );
2102
2095
if (UNEXPECTED (!name )) {
2103
2096
ZVAL_UNDEF (EX_VAR (opline -> result .var ));
2104
2097
break ;
@@ -2172,12 +2165,10 @@ ZEND_VM_COLD_CONST_HANDLER(91, ZEND_FETCH_OBJ_IS, CONST|TMPVAR|UNUSED|THIS|CV, C
2172
2165
{
2173
2166
USE_OPLINE
2174
2167
zval * container ;
2175
- zval * offset ;
2176
2168
void * * cache_slot = NULL ;
2177
2169
2178
2170
SAVE_OPLINE ();
2179
2171
container = GET_OP1_OBJ_ZVAL_PTR (BP_VAR_IS );
2180
- offset = GET_OP2_ZVAL_PTR (BP_VAR_R );
2181
2172
2182
2173
if (OP1_TYPE == IS_CONST ||
2183
2174
(OP1_TYPE != IS_UNUSED && UNEXPECTED (Z_TYPE_P (container ) != IS_OBJECT ))) {
@@ -2188,6 +2179,9 @@ ZEND_VM_COLD_CONST_HANDLER(91, ZEND_FETCH_OBJ_IS, CONST|TMPVAR|UNUSED|THIS|CV, C
2188
2179
break ;
2189
2180
}
2190
2181
}
2182
+ if (OP2_TYPE == IS_CV && Z_TYPE_P (EX_VAR (opline -> op2 .var )) == IS_UNDEF ) {
2183
+ ZVAL_UNDEFINED_OP2 ();
2184
+ }
2191
2185
ZVAL_NULL (EX_VAR (opline -> result .var ));
2192
2186
ZEND_VM_C_GOTO (fetch_obj_is_finish );
2193
2187
} while (0 );
@@ -2200,7 +2194,6 @@ ZEND_VM_COLD_CONST_HANDLER(91, ZEND_FETCH_OBJ_IS, CONST|TMPVAR|UNUSED|THIS|CV, C
2200
2194
zval * retval ;
2201
2195
2202
2196
if (OP2_TYPE == IS_CONST ) {
2203
- name = Z_STR_P (offset );
2204
2197
cache_slot = CACHE_ADDR (opline -> extended_value );
2205
2198
2206
2199
if (EXPECTED (zobj -> ce == CACHED_PTR_EX (cache_slot ))) {
@@ -2218,6 +2211,7 @@ ZEND_VM_C_LABEL(fetch_obj_is_fast_copy):
2218
2211
}
2219
2212
}
2220
2213
} else if (EXPECTED (zobj -> properties != NULL )) {
2214
+ name = Z_STR_P (GET_OP2_ZVAL_PTR (BP_VAR_R ));
2221
2215
if (!IS_UNKNOWN_DYNAMIC_PROPERTY_OFFSET (prop_offset )) {
2222
2216
uintptr_t idx = ZEND_DECODE_DYN_PROP_OFFSET (prop_offset );
2223
2217
@@ -2251,8 +2245,9 @@ ZEND_VM_C_LABEL(fetch_obj_is_fast_copy):
2251
2245
}
2252
2246
}
2253
2247
}
2248
+ name = Z_STR_P (GET_OP2_ZVAL_PTR (BP_VAR_R ));
2254
2249
} else {
2255
- name = zval_try_get_tmp_string (offset , & tmp_name );
2250
+ name = zval_try_get_tmp_string (GET_OP2_ZVAL_PTR ( BP_VAR_R ) , & tmp_name );
2256
2251
if (UNEXPECTED (!name )) {
2257
2252
ZVAL_UNDEF (EX_VAR (opline -> result .var ));
2258
2253
break ;
0 commit comments