xref: /PHP-7.3/Zend/zend_vm_execute.h (revision 773f980e)
1 /*
2    +----------------------------------------------------------------------+
3    | Zend Engine                                                          |
4    +----------------------------------------------------------------------+
5    | Copyright (c) 1998-2018 Zend Technologies Ltd. (http://www.zend.com) |
6    +----------------------------------------------------------------------+
7    | This source file is subject to version 2.00 of the Zend license,     |
8    | that is bundled with this package in the file LICENSE, and is        |
9    | available through the world-wide-web at the following url:           |
10    | http://www.zend.com/license/2_00.txt.                                |
11    | If you did not receive a copy of the Zend license and are unable to  |
12    | obtain it through the world-wide-web, please send a note to          |
13    | license@zend.com so we can mail you a copy immediately.              |
14    +----------------------------------------------------------------------+
15    | Authors: Andi Gutmans <andi@php.net>                                 |
16    |          Zeev Suraski <zeev@php.net>                                 |
17    |          Dmitry Stogov <dmitry@php.net>                              |
18    +----------------------------------------------------------------------+
19 */
20 
21 #ifdef ZEND_WIN32
22 # pragma warning(disable : 4101)
23 # pragma warning(once : 6235)
24 # pragma warning(once : 6237)
25 # pragma warning(once : 6239)
26 # pragma warning(once : 6240)
27 # pragma warning(once : 6285)
28 # pragma warning(once : 6286)
29 # pragma warning(once : 6326)
30 #endif
31 static user_opcode_handler_t zend_user_opcode_handlers[256] = {
32 	(user_opcode_handler_t)NULL,
33 	(user_opcode_handler_t)NULL,
34 	(user_opcode_handler_t)NULL,
35 	(user_opcode_handler_t)NULL,
36 	(user_opcode_handler_t)NULL,
37 	(user_opcode_handler_t)NULL,
38 	(user_opcode_handler_t)NULL,
39 	(user_opcode_handler_t)NULL,
40 	(user_opcode_handler_t)NULL,
41 	(user_opcode_handler_t)NULL,
42 	(user_opcode_handler_t)NULL,
43 	(user_opcode_handler_t)NULL,
44 	(user_opcode_handler_t)NULL,
45 	(user_opcode_handler_t)NULL,
46 	(user_opcode_handler_t)NULL,
47 	(user_opcode_handler_t)NULL,
48 	(user_opcode_handler_t)NULL,
49 	(user_opcode_handler_t)NULL,
50 	(user_opcode_handler_t)NULL,
51 	(user_opcode_handler_t)NULL,
52 	(user_opcode_handler_t)NULL,
53 	(user_opcode_handler_t)NULL,
54 	(user_opcode_handler_t)NULL,
55 	(user_opcode_handler_t)NULL,
56 	(user_opcode_handler_t)NULL,
57 	(user_opcode_handler_t)NULL,
58 	(user_opcode_handler_t)NULL,
59 	(user_opcode_handler_t)NULL,
60 	(user_opcode_handler_t)NULL,
61 	(user_opcode_handler_t)NULL,
62 	(user_opcode_handler_t)NULL,
63 	(user_opcode_handler_t)NULL,
64 	(user_opcode_handler_t)NULL,
65 	(user_opcode_handler_t)NULL,
66 	(user_opcode_handler_t)NULL,
67 	(user_opcode_handler_t)NULL,
68 	(user_opcode_handler_t)NULL,
69 	(user_opcode_handler_t)NULL,
70 	(user_opcode_handler_t)NULL,
71 	(user_opcode_handler_t)NULL,
72 	(user_opcode_handler_t)NULL,
73 	(user_opcode_handler_t)NULL,
74 	(user_opcode_handler_t)NULL,
75 	(user_opcode_handler_t)NULL,
76 	(user_opcode_handler_t)NULL,
77 	(user_opcode_handler_t)NULL,
78 	(user_opcode_handler_t)NULL,
79 	(user_opcode_handler_t)NULL,
80 	(user_opcode_handler_t)NULL,
81 	(user_opcode_handler_t)NULL,
82 	(user_opcode_handler_t)NULL,
83 	(user_opcode_handler_t)NULL,
84 	(user_opcode_handler_t)NULL,
85 	(user_opcode_handler_t)NULL,
86 	(user_opcode_handler_t)NULL,
87 	(user_opcode_handler_t)NULL,
88 	(user_opcode_handler_t)NULL,
89 	(user_opcode_handler_t)NULL,
90 	(user_opcode_handler_t)NULL,
91 	(user_opcode_handler_t)NULL,
92 	(user_opcode_handler_t)NULL,
93 	(user_opcode_handler_t)NULL,
94 	(user_opcode_handler_t)NULL,
95 	(user_opcode_handler_t)NULL,
96 	(user_opcode_handler_t)NULL,
97 	(user_opcode_handler_t)NULL,
98 	(user_opcode_handler_t)NULL,
99 	(user_opcode_handler_t)NULL,
100 	(user_opcode_handler_t)NULL,
101 	(user_opcode_handler_t)NULL,
102 	(user_opcode_handler_t)NULL,
103 	(user_opcode_handler_t)NULL,
104 	(user_opcode_handler_t)NULL,
105 	(user_opcode_handler_t)NULL,
106 	(user_opcode_handler_t)NULL,
107 	(user_opcode_handler_t)NULL,
108 	(user_opcode_handler_t)NULL,
109 	(user_opcode_handler_t)NULL,
110 	(user_opcode_handler_t)NULL,
111 	(user_opcode_handler_t)NULL,
112 	(user_opcode_handler_t)NULL,
113 	(user_opcode_handler_t)NULL,
114 	(user_opcode_handler_t)NULL,
115 	(user_opcode_handler_t)NULL,
116 	(user_opcode_handler_t)NULL,
117 	(user_opcode_handler_t)NULL,
118 	(user_opcode_handler_t)NULL,
119 	(user_opcode_handler_t)NULL,
120 	(user_opcode_handler_t)NULL,
121 	(user_opcode_handler_t)NULL,
122 	(user_opcode_handler_t)NULL,
123 	(user_opcode_handler_t)NULL,
124 	(user_opcode_handler_t)NULL,
125 	(user_opcode_handler_t)NULL,
126 	(user_opcode_handler_t)NULL,
127 	(user_opcode_handler_t)NULL,
128 	(user_opcode_handler_t)NULL,
129 	(user_opcode_handler_t)NULL,
130 	(user_opcode_handler_t)NULL,
131 	(user_opcode_handler_t)NULL,
132 	(user_opcode_handler_t)NULL,
133 	(user_opcode_handler_t)NULL,
134 	(user_opcode_handler_t)NULL,
135 	(user_opcode_handler_t)NULL,
136 	(user_opcode_handler_t)NULL,
137 	(user_opcode_handler_t)NULL,
138 	(user_opcode_handler_t)NULL,
139 	(user_opcode_handler_t)NULL,
140 	(user_opcode_handler_t)NULL,
141 	(user_opcode_handler_t)NULL,
142 	(user_opcode_handler_t)NULL,
143 	(user_opcode_handler_t)NULL,
144 	(user_opcode_handler_t)NULL,
145 	(user_opcode_handler_t)NULL,
146 	(user_opcode_handler_t)NULL,
147 	(user_opcode_handler_t)NULL,
148 	(user_opcode_handler_t)NULL,
149 	(user_opcode_handler_t)NULL,
150 	(user_opcode_handler_t)NULL,
151 	(user_opcode_handler_t)NULL,
152 	(user_opcode_handler_t)NULL,
153 	(user_opcode_handler_t)NULL,
154 	(user_opcode_handler_t)NULL,
155 	(user_opcode_handler_t)NULL,
156 	(user_opcode_handler_t)NULL,
157 	(user_opcode_handler_t)NULL,
158 	(user_opcode_handler_t)NULL,
159 	(user_opcode_handler_t)NULL,
160 	(user_opcode_handler_t)NULL,
161 	(user_opcode_handler_t)NULL,
162 	(user_opcode_handler_t)NULL,
163 	(user_opcode_handler_t)NULL,
164 	(user_opcode_handler_t)NULL,
165 	(user_opcode_handler_t)NULL,
166 	(user_opcode_handler_t)NULL,
167 	(user_opcode_handler_t)NULL,
168 	(user_opcode_handler_t)NULL,
169 	(user_opcode_handler_t)NULL,
170 	(user_opcode_handler_t)NULL,
171 	(user_opcode_handler_t)NULL,
172 	(user_opcode_handler_t)NULL,
173 	(user_opcode_handler_t)NULL,
174 	(user_opcode_handler_t)NULL,
175 	(user_opcode_handler_t)NULL,
176 	(user_opcode_handler_t)NULL,
177 	(user_opcode_handler_t)NULL,
178 	(user_opcode_handler_t)NULL,
179 	(user_opcode_handler_t)NULL,
180 	(user_opcode_handler_t)NULL,
181 	(user_opcode_handler_t)NULL,
182 	(user_opcode_handler_t)NULL,
183 	(user_opcode_handler_t)NULL,
184 	(user_opcode_handler_t)NULL,
185 	(user_opcode_handler_t)NULL,
186 	(user_opcode_handler_t)NULL,
187 	(user_opcode_handler_t)NULL,
188 	(user_opcode_handler_t)NULL,
189 	(user_opcode_handler_t)NULL,
190 	(user_opcode_handler_t)NULL,
191 	(user_opcode_handler_t)NULL,
192 	(user_opcode_handler_t)NULL,
193 	(user_opcode_handler_t)NULL,
194 	(user_opcode_handler_t)NULL,
195 	(user_opcode_handler_t)NULL,
196 	(user_opcode_handler_t)NULL,
197 	(user_opcode_handler_t)NULL,
198 	(user_opcode_handler_t)NULL,
199 	(user_opcode_handler_t)NULL,
200 	(user_opcode_handler_t)NULL,
201 	(user_opcode_handler_t)NULL,
202 	(user_opcode_handler_t)NULL,
203 	(user_opcode_handler_t)NULL,
204 	(user_opcode_handler_t)NULL,
205 	(user_opcode_handler_t)NULL,
206 	(user_opcode_handler_t)NULL,
207 	(user_opcode_handler_t)NULL,
208 	(user_opcode_handler_t)NULL,
209 	(user_opcode_handler_t)NULL,
210 	(user_opcode_handler_t)NULL,
211 	(user_opcode_handler_t)NULL,
212 	(user_opcode_handler_t)NULL,
213 	(user_opcode_handler_t)NULL,
214 	(user_opcode_handler_t)NULL,
215 	(user_opcode_handler_t)NULL,
216 	(user_opcode_handler_t)NULL,
217 	(user_opcode_handler_t)NULL,
218 	(user_opcode_handler_t)NULL,
219 	(user_opcode_handler_t)NULL,
220 	(user_opcode_handler_t)NULL,
221 	(user_opcode_handler_t)NULL,
222 	(user_opcode_handler_t)NULL,
223 	(user_opcode_handler_t)NULL,
224 	(user_opcode_handler_t)NULL,
225 	(user_opcode_handler_t)NULL,
226 	(user_opcode_handler_t)NULL,
227 	(user_opcode_handler_t)NULL,
228 	(user_opcode_handler_t)NULL,
229 	(user_opcode_handler_t)NULL,
230 	(user_opcode_handler_t)NULL,
231 	(user_opcode_handler_t)NULL,
232 	(user_opcode_handler_t)NULL,
233 	(user_opcode_handler_t)NULL,
234 	(user_opcode_handler_t)NULL,
235 	(user_opcode_handler_t)NULL,
236 	(user_opcode_handler_t)NULL,
237 	(user_opcode_handler_t)NULL,
238 	(user_opcode_handler_t)NULL,
239 	(user_opcode_handler_t)NULL,
240 	(user_opcode_handler_t)NULL,
241 	(user_opcode_handler_t)NULL,
242 	(user_opcode_handler_t)NULL,
243 	(user_opcode_handler_t)NULL,
244 	(user_opcode_handler_t)NULL,
245 	(user_opcode_handler_t)NULL,
246 	(user_opcode_handler_t)NULL,
247 	(user_opcode_handler_t)NULL,
248 	(user_opcode_handler_t)NULL,
249 	(user_opcode_handler_t)NULL,
250 	(user_opcode_handler_t)NULL,
251 	(user_opcode_handler_t)NULL,
252 	(user_opcode_handler_t)NULL,
253 	(user_opcode_handler_t)NULL,
254 	(user_opcode_handler_t)NULL,
255 	(user_opcode_handler_t)NULL,
256 	(user_opcode_handler_t)NULL,
257 	(user_opcode_handler_t)NULL,
258 	(user_opcode_handler_t)NULL,
259 	(user_opcode_handler_t)NULL,
260 	(user_opcode_handler_t)NULL,
261 	(user_opcode_handler_t)NULL,
262 	(user_opcode_handler_t)NULL,
263 	(user_opcode_handler_t)NULL,
264 	(user_opcode_handler_t)NULL,
265 	(user_opcode_handler_t)NULL,
266 	(user_opcode_handler_t)NULL,
267 	(user_opcode_handler_t)NULL,
268 	(user_opcode_handler_t)NULL,
269 	(user_opcode_handler_t)NULL,
270 	(user_opcode_handler_t)NULL,
271 	(user_opcode_handler_t)NULL,
272 	(user_opcode_handler_t)NULL,
273 	(user_opcode_handler_t)NULL,
274 	(user_opcode_handler_t)NULL,
275 	(user_opcode_handler_t)NULL,
276 	(user_opcode_handler_t)NULL,
277 	(user_opcode_handler_t)NULL,
278 	(user_opcode_handler_t)NULL,
279 	(user_opcode_handler_t)NULL,
280 	(user_opcode_handler_t)NULL,
281 	(user_opcode_handler_t)NULL,
282 	(user_opcode_handler_t)NULL,
283 	(user_opcode_handler_t)NULL,
284 	(user_opcode_handler_t)NULL,
285 	(user_opcode_handler_t)NULL,
286 	(user_opcode_handler_t)NULL,
287 	(user_opcode_handler_t)NULL
288 };
289 
290 static zend_uchar zend_user_opcodes[256] = {0,
291 	1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,
292 	17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,
293 	33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,
294 	49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,
295 	65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,
296 	81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,
297 	97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,
298 	113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,
299 	129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,
300 	145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,
301 	161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,
302 	177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,
303 	193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,
304 	209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,
305 	225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,
306 	241,242,243,244,245,246,247,248,249,250,251,252,253,254,255
307 };
308 
309 #define SPEC_START_MASK        0x0000ffff
310 #define SPEC_EXTRA_MASK        0xfffc0000
311 #define SPEC_RULE_OP1          0x00010000
312 #define SPEC_RULE_OP2          0x00020000
313 #define SPEC_RULE_OP_DATA      0x00040000
314 #define SPEC_RULE_RETVAL       0x00080000
315 #define SPEC_RULE_QUICK_ARG    0x00100000
316 #define SPEC_RULE_SMART_BRANCH 0x00200000
317 #define SPEC_RULE_DIM_OBJ      0x00400000
318 #define SPEC_RULE_COMMUTATIVE  0x00800000
319 #define SPEC_RULE_ISSET        0x01000000
320 
321 static const uint32_t *zend_spec_handlers;
322 static const void * const *zend_opcode_handlers;
323 static int zend_handlers_count;
324 #if (ZEND_VM_KIND == ZEND_VM_KIND_HYBRID)
325 static const void * const * zend_opcode_handler_funcs;
326 static zend_op hybrid_halt_op;
327 #endif
328 #if (ZEND_VM_KIND != ZEND_VM_KIND_HYBRID) || !ZEND_VM_SPEC
329 static const void *zend_vm_get_opcode_handler(zend_uchar opcode, const zend_op* op);
330 #endif
331 
332 #if (ZEND_VM_KIND == ZEND_VM_KIND_HYBRID)
333 static const void *zend_vm_get_opcode_handler_func(zend_uchar opcode, const zend_op* op);
334 #else
335 # define zend_vm_get_opcode_handler_func zend_vm_get_opcode_handler
336 #endif
337 
338 #ifndef VM_TRACE
339 # define VM_TRACE(op)
340 #endif
341 #ifndef VM_TRACE_START
342 # define VM_TRACE_START()
343 #endif
344 #ifndef VM_TRACE_END
345 # define VM_TRACE_END()
346 #endif
347 #if (ZEND_VM_KIND == ZEND_VM_KIND_HYBRID)
348 #define HYBRID_NEXT()     goto *(void**)(OPLINE->handler)
349 #define HYBRID_SWITCH()   HYBRID_NEXT();
350 #define HYBRID_CASE(op)   op ## _LABEL
351 #define HYBRID_BREAK()    HYBRID_NEXT()
352 #define HYBRID_DEFAULT    ZEND_NULL_LABEL
353 #endif
354 
355 #ifdef ZEND_VM_FP_GLOBAL_REG
356 # define ZEND_OPCODE_HANDLER_ARGS void
357 # define ZEND_OPCODE_HANDLER_ARGS_PASSTHRU
358 # define ZEND_OPCODE_HANDLER_ARGS_DC
359 # define ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC
360 #else
361 # define ZEND_OPCODE_HANDLER_ARGS zend_execute_data *execute_data
362 # define ZEND_OPCODE_HANDLER_ARGS_PASSTHRU execute_data
363 # define ZEND_OPCODE_HANDLER_ARGS_DC , ZEND_OPCODE_HANDLER_ARGS
364 # define ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC , ZEND_OPCODE_HANDLER_ARGS_PASSTHRU
365 #endif
366 
367 #if defined(ZEND_VM_FP_GLOBAL_REG) && defined(ZEND_VM_IP_GLOBAL_REG)
368 # define ZEND_OPCODE_HANDLER_RET void
369 # define ZEND_VM_TAIL_CALL(call) call; return
370 # ifdef ZEND_VM_TAIL_CALL_DISPATCH
371 #  define ZEND_VM_CONTINUE()     ((opcode_handler_t)OPLINE->handler)(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU); return
372 # else
373 #  define ZEND_VM_CONTINUE()     return
374 # endif
375 # if (ZEND_VM_KIND == ZEND_VM_KIND_HYBRID)
376 #  define ZEND_VM_RETURN()        opline = &hybrid_halt_op; return
377 #  define ZEND_VM_HOT             zend_always_inline ZEND_COLD ZEND_OPT_SIZE
378 #  define ZEND_VM_COLD            ZEND_COLD ZEND_OPT_SIZE
379 # else
380 #  define ZEND_VM_RETURN()        opline = NULL; return
381 #  define ZEND_VM_HOT
382 #  define ZEND_VM_COLD            ZEND_COLD ZEND_OPT_SIZE
383 # endif
384 #else
385 # define ZEND_OPCODE_HANDLER_RET int
386 # define ZEND_VM_TAIL_CALL(call) return call
387 # define ZEND_VM_CONTINUE()      return  0
388 # define ZEND_VM_RETURN()        return -1
389 # define ZEND_VM_HOT
390 # define ZEND_VM_COLD            ZEND_COLD ZEND_OPT_SIZE
391 #endif
392 
393 typedef ZEND_OPCODE_HANDLER_RET (ZEND_FASTCALL *opcode_handler_t) (ZEND_OPCODE_HANDLER_ARGS);
394 
395 #undef OPLINE
396 #undef DCL_OPLINE
397 #undef USE_OPLINE
398 #undef LOAD_OPLINE
399 #undef LOAD_OPLINE_EX
400 #undef SAVE_OPLINE
401 #define DCL_OPLINE
402 #ifdef ZEND_VM_IP_GLOBAL_REG
403 # define OPLINE opline
404 # define USE_OPLINE
405 # define LOAD_OPLINE() opline = EX(opline)
406 # define LOAD_NEXT_OPLINE() opline = EX(opline) + 1
407 # define SAVE_OPLINE() EX(opline) = opline
408 #else
409 # define OPLINE EX(opline)
410 # define USE_OPLINE const zend_op *opline = EX(opline);
411 # define LOAD_OPLINE()
412 # define LOAD_NEXT_OPLINE() ZEND_VM_INC_OPCODE()
413 # define SAVE_OPLINE()
414 #endif
415 #undef HANDLE_EXCEPTION
416 #undef HANDLE_EXCEPTION_LEAVE
417 #define HANDLE_EXCEPTION() LOAD_OPLINE(); ZEND_VM_CONTINUE()
418 #define HANDLE_EXCEPTION_LEAVE() LOAD_OPLINE(); ZEND_VM_LEAVE()
419 #if defined(ZEND_VM_FP_GLOBAL_REG)
420 # define ZEND_VM_ENTER_EX()        ZEND_VM_INTERRUPT_CHECK(); ZEND_VM_CONTINUE()
421 # define ZEND_VM_ENTER()           execute_data = EG(current_execute_data); LOAD_OPLINE(); ZEND_VM_ENTER_EX()
422 # define ZEND_VM_LEAVE()           ZEND_VM_CONTINUE()
423 #elif defined(ZEND_VM_IP_GLOBAL_REG)
424 # define ZEND_VM_ENTER_EX()        return  1
425 # define ZEND_VM_ENTER()           opline = EG(current_execute_data)->opline; ZEND_VM_ENTER_EX()
426 # define ZEND_VM_LEAVE()           return  2
427 #else
428 # define ZEND_VM_ENTER_EX()        return  1
429 # define ZEND_VM_ENTER()           return  1
430 # define ZEND_VM_LEAVE()           return  2
431 #endif
432 #define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
433 #define ZEND_VM_LOOP_INTERRUPT() zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
434 #define ZEND_VM_DISPATCH(opcode, opline) ZEND_VM_TAIL_CALL(((opcode_handler_t)zend_vm_get_opcode_handler_func(opcode, opline))(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
435 
436 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS);
437 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_NULL_HANDLER(ZEND_OPCODE_HANDLER_ARGS);
438 
zend_mod_by_zero_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS)439 static zend_never_inline ZEND_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_mod_by_zero_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS)
440 {
441 	USE_OPLINE
442 
443 	SAVE_OPLINE();
444 	zend_throw_exception_ex(zend_ce_division_by_zero_error, 0, "Modulo by zero");
445 	ZVAL_UNDEF(EX_VAR(opline->result.var));
446 	HANDLE_EXCEPTION();
447 }
448 
zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS)449 static zend_never_inline ZEND_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS)
450 {
451 	USE_OPLINE
452 
453 	SAVE_OPLINE();
454 	zend_throw_error(NULL, "Using $this when not in object context");
455 	if ((opline+1)->opcode == ZEND_OP_DATA) {
456 		FREE_UNFETCHED_OP((opline+1)->op1_type, (opline+1)->op1.var);
457 	}
458 	FREE_UNFETCHED_OP(opline->op2_type, opline->op2.var);
459 	UNDEF_RESULT();
460 	HANDLE_EXCEPTION();
461 }
462 
zend_abstract_method_helper_SPEC(zend_function * fbc ZEND_OPCODE_HANDLER_ARGS_DC)463 static zend_never_inline ZEND_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_abstract_method_helper_SPEC(zend_function *fbc ZEND_OPCODE_HANDLER_ARGS_DC)
464 {
465 	USE_OPLINE
466 
467 	SAVE_OPLINE();
468 	zend_throw_error(NULL, "Cannot call abstract method %s::%s()", ZSTR_VAL(fbc->common.scope->name), ZSTR_VAL(fbc->common.function_name));
469 	UNDEF_RESULT();
470 	HANDLE_EXCEPTION();
471 }
472 
zend_undefined_function_helper_SPEC(zval * function_name ZEND_OPCODE_HANDLER_ARGS_DC)473 static zend_never_inline ZEND_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_undefined_function_helper_SPEC(zval *function_name ZEND_OPCODE_HANDLER_ARGS_DC)
474 {
475 	SAVE_OPLINE();
476 	zend_throw_error(NULL, "Call to undefined function %s()", Z_STRVAL_P(function_name));
477 	HANDLE_EXCEPTION();
478 }
479 
zend_use_tmp_in_write_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS)480 static zend_never_inline ZEND_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_use_tmp_in_write_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS)
481 {
482 	USE_OPLINE
483 
484 	SAVE_OPLINE();
485 	zend_throw_error(NULL, "Cannot use temporary expression in write context");
486 	FREE_UNFETCHED_OP(opline->op2_type, opline->op2.var);
487 	FREE_UNFETCHED_OP(opline->op1_type, opline->op1.var);
488 	ZVAL_UNDEF(EX_VAR(opline->result.var));
489 	HANDLE_EXCEPTION();
490 }
491 
zend_use_undef_in_read_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS)492 static zend_never_inline ZEND_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_use_undef_in_read_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS)
493 {
494 	USE_OPLINE
495 
496 	SAVE_OPLINE();
497 	zend_throw_error(NULL, "Cannot use [] for reading");
498 	FREE_UNFETCHED_OP(opline->op2_type, opline->op2.var);
499 	FREE_UNFETCHED_OP(opline->op1_type, opline->op1.var);
500 	ZVAL_UNDEF(EX_VAR(opline->result.var));
501 	HANDLE_EXCEPTION();
502 }
503 
zend_leave_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS)504 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_leave_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS)
505 {
506 	zend_execute_data *old_execute_data;
507 	uint32_t call_info = EX_CALL_INFO();
508 
509 	if (EXPECTED((call_info & (ZEND_CALL_CODE|ZEND_CALL_TOP|ZEND_CALL_HAS_SYMBOL_TABLE|ZEND_CALL_FREE_EXTRA_ARGS|ZEND_CALL_ALLOCATED)) == 0)) {
510 		EG(current_execute_data) = EX(prev_execute_data);
511 		i_free_compiled_variables(execute_data);
512 
513 		if (UNEXPECTED(call_info & ZEND_CALL_RELEASE_THIS)) {
514 			zend_object *object = Z_OBJ(execute_data->This);
515 #if 0
516 			if (UNEXPECTED(EG(exception) != NULL) && (EX(opline)->op1.num & ZEND_CALL_CTOR)) {
517 #else
518 			if (UNEXPECTED(EG(exception) != NULL) && (call_info & ZEND_CALL_CTOR)) {
519 #endif
520 				GC_DELREF(object);
521 				zend_object_store_ctor_failed(object);
522 			}
523 			OBJ_RELEASE(object);
524 		} else if (UNEXPECTED(call_info & ZEND_CALL_CLOSURE)) {
525 			OBJ_RELEASE(ZEND_CLOSURE_OBJECT(EX(func)));
526 		}
527 		EG(vm_stack_top) = (zval*)execute_data;
528 		execute_data = EX(prev_execute_data);
529 
530 		if (UNEXPECTED(EG(exception) != NULL)) {
531 			zend_rethrow_exception(execute_data);
532 			HANDLE_EXCEPTION_LEAVE();
533 		}
534 
535 		LOAD_NEXT_OPLINE();
536 		ZEND_VM_LEAVE();
537 	} else if (EXPECTED((call_info & (ZEND_CALL_CODE|ZEND_CALL_TOP)) == 0)) {
538 		EG(current_execute_data) = EX(prev_execute_data);
539 		i_free_compiled_variables(execute_data);
540 
541 		if (UNEXPECTED(call_info & ZEND_CALL_HAS_SYMBOL_TABLE)) {
542 			zend_clean_and_cache_symbol_table(EX(symbol_table));
543 		}
544 
545 		/* Free extra args before releasing the closure,
546 		 * as that may free the op_array. */
547 		zend_vm_stack_free_extra_args_ex(call_info, execute_data);
548 
549 		if (UNEXPECTED(call_info & ZEND_CALL_RELEASE_THIS)) {
550 			zend_object *object = Z_OBJ(execute_data->This);
551 #if 0
552 			if (UNEXPECTED(EG(exception) != NULL) && (EX(opline)->op1.num & ZEND_CALL_CTOR)) {
553 #else
554 			if (UNEXPECTED(EG(exception) != NULL) && (call_info & ZEND_CALL_CTOR)) {
555 #endif
556 				GC_DELREF(object);
557 				zend_object_store_ctor_failed(object);
558 			}
559 			OBJ_RELEASE(object);
560 		} else if (UNEXPECTED(call_info & ZEND_CALL_CLOSURE)) {
561 			OBJ_RELEASE(ZEND_CLOSURE_OBJECT(EX(func)));
562 		}
563 
564 		old_execute_data = execute_data;
565 		execute_data = EX(prev_execute_data);
566 		zend_vm_stack_free_call_frame_ex(call_info, old_execute_data);
567 
568 		if (UNEXPECTED(EG(exception) != NULL)) {
569 			zend_rethrow_exception(execute_data);
570 			HANDLE_EXCEPTION_LEAVE();
571 		}
572 
573 		LOAD_NEXT_OPLINE();
574 		ZEND_VM_LEAVE();
575 	} else if (EXPECTED((call_info & ZEND_CALL_TOP) == 0)) {
576 		zend_detach_symbol_table(execute_data);
577 		destroy_op_array(&EX(func)->op_array);
578 		efree_size(EX(func), sizeof(zend_op_array));
579 		old_execute_data = execute_data;
580 		execute_data = EG(current_execute_data) = EX(prev_execute_data);
581 		zend_vm_stack_free_call_frame_ex(call_info, old_execute_data);
582 
583 		zend_attach_symbol_table(execute_data);
584 		if (UNEXPECTED(EG(exception) != NULL)) {
585 			zend_rethrow_exception(execute_data);
586 			HANDLE_EXCEPTION_LEAVE();
587 		}
588 
589 		LOAD_NEXT_OPLINE();
590 		ZEND_VM_LEAVE();
591 	} else {
592 		if (EXPECTED((call_info & ZEND_CALL_CODE) == 0)) {
593 			EG(current_execute_data) = EX(prev_execute_data);
594 			i_free_compiled_variables(execute_data);
595 			if (UNEXPECTED(call_info & (ZEND_CALL_HAS_SYMBOL_TABLE|ZEND_CALL_FREE_EXTRA_ARGS))) {
596 				if (UNEXPECTED(call_info & ZEND_CALL_HAS_SYMBOL_TABLE)) {
597 					zend_clean_and_cache_symbol_table(EX(symbol_table));
598 				}
599 				zend_vm_stack_free_extra_args_ex(call_info, execute_data);
600 			}
601 			if (UNEXPECTED(call_info & ZEND_CALL_CLOSURE)) {
602 				OBJ_RELEASE(ZEND_CLOSURE_OBJECT(EX(func)));
603 			}
604 			ZEND_VM_RETURN();
605 		} else /* if (call_kind == ZEND_CALL_TOP_CODE) */ {
606 			zend_array *symbol_table = EX(symbol_table);
607 
608 			zend_detach_symbol_table(execute_data);
609 			old_execute_data = EX(prev_execute_data);
610 			while (old_execute_data) {
611 				if (old_execute_data->func && (ZEND_CALL_INFO(old_execute_data) & ZEND_CALL_HAS_SYMBOL_TABLE)) {
612 					if (old_execute_data->symbol_table == symbol_table) {
613 						zend_attach_symbol_table(old_execute_data);
614 					}
615 					break;
616 				}
617 				old_execute_data = old_execute_data->prev_execute_data;
618 			}
619 			EG(current_execute_data) = EX(prev_execute_data);
620 			ZEND_VM_RETURN();
621 		}
622 	}
623 }
624 
625 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_JMP_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
626 {
627 	USE_OPLINE
628 
629 	ZEND_VM_JMP_EX(OP_JMP_ADDR(opline, opline->op1), 0);
630 }
631 
632 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_DO_ICALL_SPEC_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
633 {
634 	USE_OPLINE
635 	zend_execute_data *call = EX(call);
636 	zend_function *fbc = call->func;
637 	zval *ret;
638 	zval retval;
639 
640 	SAVE_OPLINE();
641 	EX(call) = call->prev_execute_data;
642 
643 	call->prev_execute_data = execute_data;
644 	EG(current_execute_data) = call;
645 
646 	ret = 0 ? EX_VAR(opline->result.var) : &retval;
647 	ZVAL_NULL(ret);
648 
649 	fbc->internal_function.handler(call, ret);
650 
651 #if ZEND_DEBUG
652 	if (!EG(exception) && call->func) {
653 		ZEND_ASSERT(!(call->func->common.fn_flags & ZEND_ACC_HAS_RETURN_TYPE) ||
654 			zend_verify_internal_return_type(call->func, ret));
655 		ZEND_ASSERT((call->func->common.fn_flags & ZEND_ACC_RETURN_REFERENCE)
656 			? Z_ISREF_P(ret) : !Z_ISREF_P(ret));
657 	}
658 #endif
659 
660 	EG(current_execute_data) = execute_data;
661 	zend_vm_stack_free_args(call);
662 	zend_vm_stack_free_call_frame(call);
663 
664 	if (!0) {
665 		zval_ptr_dtor(ret);
666 	}
667 
668 	if (UNEXPECTED(EG(exception) != NULL)) {
669 		zend_rethrow_exception(execute_data);
670 		HANDLE_EXCEPTION();
671 	}
672 
673 	ZEND_VM_SET_OPCODE(opline + 1);
674 	ZEND_VM_CONTINUE();
675 }
676 
677 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_DO_ICALL_SPEC_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
678 {
679 	USE_OPLINE
680 	zend_execute_data *call = EX(call);
681 	zend_function *fbc = call->func;
682 	zval *ret;
683 	zval retval;
684 
685 	SAVE_OPLINE();
686 	EX(call) = call->prev_execute_data;
687 
688 	call->prev_execute_data = execute_data;
689 	EG(current_execute_data) = call;
690 
691 	ret = 1 ? EX_VAR(opline->result.var) : &retval;
692 	ZVAL_NULL(ret);
693 
694 	fbc->internal_function.handler(call, ret);
695 
696 #if ZEND_DEBUG
697 	if (!EG(exception) && call->func) {
698 		ZEND_ASSERT(!(call->func->common.fn_flags & ZEND_ACC_HAS_RETURN_TYPE) ||
699 			zend_verify_internal_return_type(call->func, ret));
700 		ZEND_ASSERT((call->func->common.fn_flags & ZEND_ACC_RETURN_REFERENCE)
701 			? Z_ISREF_P(ret) : !Z_ISREF_P(ret));
702 	}
703 #endif
704 
705 	EG(current_execute_data) = execute_data;
706 	zend_vm_stack_free_args(call);
707 	zend_vm_stack_free_call_frame(call);
708 
709 	if (!1) {
710 		zval_ptr_dtor(ret);
711 	}
712 
713 	if (UNEXPECTED(EG(exception) != NULL)) {
714 		zend_rethrow_exception(execute_data);
715 		HANDLE_EXCEPTION();
716 	}
717 
718 	ZEND_VM_SET_OPCODE(opline + 1);
719 	ZEND_VM_CONTINUE();
720 }
721 
722 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_DO_UCALL_SPEC_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
723 {
724 	USE_OPLINE
725 	zend_execute_data *call = EX(call);
726 	zend_function *fbc = call->func;
727 	zval *ret;
728 
729 	SAVE_OPLINE();
730 	EX(call) = call->prev_execute_data;
731 
732 	ret = NULL;
733 	if (0) {
734 		ret = EX_VAR(opline->result.var);
735 		ZVAL_NULL(ret);
736 	}
737 
738 	call->prev_execute_data = execute_data;
739 	execute_data = call;
740 	i_init_func_execute_data(&fbc->op_array, ret, 0 EXECUTE_DATA_CC);
741 	LOAD_OPLINE();
742 
743 	ZEND_VM_ENTER_EX();
744 }
745 
746 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_DO_UCALL_SPEC_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
747 {
748 	USE_OPLINE
749 	zend_execute_data *call = EX(call);
750 	zend_function *fbc = call->func;
751 	zval *ret;
752 
753 	SAVE_OPLINE();
754 	EX(call) = call->prev_execute_data;
755 
756 	ret = NULL;
757 	if (1) {
758 		ret = EX_VAR(opline->result.var);
759 		ZVAL_NULL(ret);
760 	}
761 
762 	call->prev_execute_data = execute_data;
763 	execute_data = call;
764 	i_init_func_execute_data(&fbc->op_array, ret, 0 EXECUTE_DATA_CC);
765 	LOAD_OPLINE();
766 
767 	ZEND_VM_ENTER_EX();
768 }
769 
770 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_DO_FCALL_BY_NAME_SPEC_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
771 {
772 	USE_OPLINE
773 	zend_execute_data *call = EX(call);
774 	zend_function *fbc = call->func;
775 	zval *ret;
776 
777 	SAVE_OPLINE();
778 	EX(call) = call->prev_execute_data;
779 
780 	if (EXPECTED(fbc->type == ZEND_USER_FUNCTION)) {
781 		ret = NULL;
782 		if (0) {
783 			ret = EX_VAR(opline->result.var);
784 			ZVAL_NULL(ret);
785 		}
786 
787 		call->prev_execute_data = execute_data;
788 		execute_data = call;
789 		i_init_func_execute_data(&fbc->op_array, ret, 0 EXECUTE_DATA_CC);
790 		LOAD_OPLINE();
791 
792 		ZEND_VM_ENTER_EX();
793 	} else {
794 		zval retval;
795 		ZEND_ASSERT(fbc->type == ZEND_INTERNAL_FUNCTION);
796 
797 		if (UNEXPECTED((fbc->common.fn_flags & ZEND_ACC_DEPRECATED) != 0)) {
798 			zend_deprecated_function(fbc);
799 			if (UNEXPECTED(EG(exception) != NULL)) {
800 			    UNDEF_RESULT();
801 				HANDLE_EXCEPTION();
802 			}
803 		}
804 
805 		call->prev_execute_data = execute_data;
806 		EG(current_execute_data) = call;
807 
808 		if (UNEXPECTED(fbc->common.fn_flags & ZEND_ACC_HAS_TYPE_HINTS)
809 		 && UNEXPECTED(!zend_verify_internal_arg_types(fbc, call))) {
810 			zend_vm_stack_free_call_frame(call);
811 			zend_rethrow_exception(execute_data);
812 		    UNDEF_RESULT();
813 			HANDLE_EXCEPTION();
814 		}
815 
816 		ret = 0 ? EX_VAR(opline->result.var) : &retval;
817 		ZVAL_NULL(ret);
818 
819 		fbc->internal_function.handler(call, ret);
820 
821 #if ZEND_DEBUG
822 		if (!EG(exception) && call->func) {
823 			ZEND_ASSERT(!(call->func->common.fn_flags & ZEND_ACC_HAS_RETURN_TYPE) ||
824 				zend_verify_internal_return_type(call->func, ret));
825 			ZEND_ASSERT((call->func->common.fn_flags & ZEND_ACC_RETURN_REFERENCE)
826 				? Z_ISREF_P(ret) : !Z_ISREF_P(ret));
827 		}
828 #endif
829 
830 		EG(current_execute_data) = execute_data;
831 		zend_vm_stack_free_args(call);
832 		zend_vm_stack_free_call_frame(call);
833 
834 		if (!0) {
835 			zval_ptr_dtor(ret);
836 		}
837 	}
838 
839 	if (UNEXPECTED(EG(exception) != NULL)) {
840 		zend_rethrow_exception(execute_data);
841 		HANDLE_EXCEPTION();
842 	}
843 	ZEND_VM_SET_OPCODE(opline + 1);
844 	ZEND_VM_CONTINUE();
845 }
846 
847 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_DO_FCALL_BY_NAME_SPEC_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
848 {
849 	USE_OPLINE
850 	zend_execute_data *call = EX(call);
851 	zend_function *fbc = call->func;
852 	zval *ret;
853 
854 	SAVE_OPLINE();
855 	EX(call) = call->prev_execute_data;
856 
857 	if (EXPECTED(fbc->type == ZEND_USER_FUNCTION)) {
858 		ret = NULL;
859 		if (1) {
860 			ret = EX_VAR(opline->result.var);
861 			ZVAL_NULL(ret);
862 		}
863 
864 		call->prev_execute_data = execute_data;
865 		execute_data = call;
866 		i_init_func_execute_data(&fbc->op_array, ret, 0 EXECUTE_DATA_CC);
867 		LOAD_OPLINE();
868 
869 		ZEND_VM_ENTER_EX();
870 	} else {
871 		zval retval;
872 		ZEND_ASSERT(fbc->type == ZEND_INTERNAL_FUNCTION);
873 
874 		if (UNEXPECTED((fbc->common.fn_flags & ZEND_ACC_DEPRECATED) != 0)) {
875 			zend_deprecated_function(fbc);
876 			if (UNEXPECTED(EG(exception) != NULL)) {
877 			    UNDEF_RESULT();
878 				HANDLE_EXCEPTION();
879 			}
880 		}
881 
882 		call->prev_execute_data = execute_data;
883 		EG(current_execute_data) = call;
884 
885 		if (UNEXPECTED(fbc->common.fn_flags & ZEND_ACC_HAS_TYPE_HINTS)
886 		 && UNEXPECTED(!zend_verify_internal_arg_types(fbc, call))) {
887 			zend_vm_stack_free_call_frame(call);
888 			zend_rethrow_exception(execute_data);
889 		    UNDEF_RESULT();
890 			HANDLE_EXCEPTION();
891 		}
892 
893 		ret = 1 ? EX_VAR(opline->result.var) : &retval;
894 		ZVAL_NULL(ret);
895 
896 		fbc->internal_function.handler(call, ret);
897 
898 #if ZEND_DEBUG
899 		if (!EG(exception) && call->func) {
900 			ZEND_ASSERT(!(call->func->common.fn_flags & ZEND_ACC_HAS_RETURN_TYPE) ||
901 				zend_verify_internal_return_type(call->func, ret));
902 			ZEND_ASSERT((call->func->common.fn_flags & ZEND_ACC_RETURN_REFERENCE)
903 				? Z_ISREF_P(ret) : !Z_ISREF_P(ret));
904 		}
905 #endif
906 
907 		EG(current_execute_data) = execute_data;
908 		zend_vm_stack_free_args(call);
909 		zend_vm_stack_free_call_frame(call);
910 
911 		if (!1) {
912 			zval_ptr_dtor(ret);
913 		}
914 	}
915 
916 	if (UNEXPECTED(EG(exception) != NULL)) {
917 		zend_rethrow_exception(execute_data);
918 		HANDLE_EXCEPTION();
919 	}
920 	ZEND_VM_SET_OPCODE(opline + 1);
921 	ZEND_VM_CONTINUE();
922 }
923 
924 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_DO_FCALL_SPEC_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
925 {
926 	USE_OPLINE
927 	zend_execute_data *call = EX(call);
928 	zend_function *fbc = call->func;
929 	zend_object *object;
930 	zval *ret;
931 
932 	SAVE_OPLINE();
933 	EX(call) = call->prev_execute_data;
934 	if (UNEXPECTED((fbc->common.fn_flags & (ZEND_ACC_ABSTRACT|ZEND_ACC_DEPRECATED)) != 0)) {
935 		if (UNEXPECTED((fbc->common.fn_flags & ZEND_ACC_ABSTRACT) != 0)) {
936 			ZEND_VM_TAIL_CALL(zend_abstract_method_helper_SPEC(fbc ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
937 		}
938 		if (UNEXPECTED((fbc->common.fn_flags & ZEND_ACC_DEPRECATED) != 0)) {
939 			zend_deprecated_function(fbc);
940 			if (UNEXPECTED(EG(exception) != NULL)) {
941 				UNDEF_RESULT();
942 				HANDLE_EXCEPTION();
943 			}
944 		}
945 	}
946 
947 	if (EXPECTED(fbc->type == ZEND_USER_FUNCTION)) {
948 		ret = NULL;
949 		if (0) {
950 			ret = EX_VAR(opline->result.var);
951 			ZVAL_NULL(ret);
952 		}
953 
954 		call->prev_execute_data = execute_data;
955 		execute_data = call;
956 		i_init_func_execute_data(&fbc->op_array, ret, 1 EXECUTE_DATA_CC);
957 
958 		if (EXPECTED(zend_execute_ex == execute_ex)) {
959 			LOAD_OPLINE();
960 			ZEND_VM_ENTER_EX();
961 		} else {
962 			execute_data = EX(prev_execute_data);
963 			LOAD_OPLINE();
964 			ZEND_ADD_CALL_FLAG(call, ZEND_CALL_TOP);
965 			zend_execute_ex(call);
966 		}
967 	} else if (EXPECTED(fbc->type < ZEND_USER_FUNCTION)) {
968 		zval retval;
969 
970 		call->prev_execute_data = execute_data;
971 		EG(current_execute_data) = call;
972 
973 		if (UNEXPECTED(fbc->common.fn_flags & ZEND_ACC_HAS_TYPE_HINTS)
974 		  && UNEXPECTED(!zend_verify_internal_arg_types(fbc, call))) {
975 			UNDEF_RESULT();
976 			goto fcall_end;
977 		}
978 
979 		ret = 0 ? EX_VAR(opline->result.var) : &retval;
980 		ZVAL_NULL(ret);
981 
982 		if (!zend_execute_internal) {
983 			/* saves one function call if zend_execute_internal is not used */
984 			fbc->internal_function.handler(call, ret);
985 		} else {
986 			zend_execute_internal(call, ret);
987 		}
988 
989 #if ZEND_DEBUG
990 		if (!EG(exception) && call->func) {
991 			ZEND_ASSERT(!(call->func->common.fn_flags & ZEND_ACC_HAS_RETURN_TYPE) ||
992 				zend_verify_internal_return_type(call->func, ret));
993 			ZEND_ASSERT((call->func->common.fn_flags & ZEND_ACC_RETURN_REFERENCE)
994 				? Z_ISREF_P(ret) : !Z_ISREF_P(ret));
995 		}
996 #endif
997 
998 		EG(current_execute_data) = execute_data;
999 		zend_vm_stack_free_args(call);
1000 
1001 		if (!0) {
1002 			zval_ptr_dtor(ret);
1003 		}
1004 
1005 	} else { /* ZEND_OVERLOADED_FUNCTION */
1006 		zval retval;
1007 
1008 		ret = 0 ? EX_VAR(opline->result.var) : &retval;
1009 
1010 		call->prev_execute_data = execute_data;
1011 
1012 		if (UNEXPECTED(!zend_do_fcall_overloaded(call, ret))) {
1013 			UNDEF_RESULT();
1014 			HANDLE_EXCEPTION();
1015 		}
1016 
1017 		if (!0) {
1018 			zval_ptr_dtor(ret);
1019 		}
1020 	}
1021 
1022 fcall_end:
1023 	if (UNEXPECTED(ZEND_CALL_INFO(call) & ZEND_CALL_RELEASE_THIS)) {
1024 		object = Z_OBJ(call->This);
1025 #if 0
1026 		if (UNEXPECTED(EG(exception) != NULL) && (opline->op1.num & ZEND_CALL_CTOR)) {
1027 #else
1028 		if (UNEXPECTED(EG(exception) != NULL) && (ZEND_CALL_INFO(call) & ZEND_CALL_CTOR)) {
1029 #endif
1030 			GC_DELREF(object);
1031 			zend_object_store_ctor_failed(object);
1032 		}
1033 		OBJ_RELEASE(object);
1034 	}
1035 
1036 	zend_vm_stack_free_call_frame(call);
1037 	if (UNEXPECTED(EG(exception) != NULL)) {
1038 		zend_rethrow_exception(execute_data);
1039 		HANDLE_EXCEPTION();
1040 	}
1041 
1042 	ZEND_VM_SET_OPCODE(opline + 1);
1043 	ZEND_VM_CONTINUE();
1044 }
1045 
1046 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_DO_FCALL_SPEC_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
1047 {
1048 	USE_OPLINE
1049 	zend_execute_data *call = EX(call);
1050 	zend_function *fbc = call->func;
1051 	zend_object *object;
1052 	zval *ret;
1053 
1054 	SAVE_OPLINE();
1055 	EX(call) = call->prev_execute_data;
1056 	if (UNEXPECTED((fbc->common.fn_flags & (ZEND_ACC_ABSTRACT|ZEND_ACC_DEPRECATED)) != 0)) {
1057 		if (UNEXPECTED((fbc->common.fn_flags & ZEND_ACC_ABSTRACT) != 0)) {
1058 			ZEND_VM_TAIL_CALL(zend_abstract_method_helper_SPEC(fbc ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
1059 		}
1060 		if (UNEXPECTED((fbc->common.fn_flags & ZEND_ACC_DEPRECATED) != 0)) {
1061 			zend_deprecated_function(fbc);
1062 			if (UNEXPECTED(EG(exception) != NULL)) {
1063 				UNDEF_RESULT();
1064 				HANDLE_EXCEPTION();
1065 			}
1066 		}
1067 	}
1068 
1069 	if (EXPECTED(fbc->type == ZEND_USER_FUNCTION)) {
1070 		ret = NULL;
1071 		if (1) {
1072 			ret = EX_VAR(opline->result.var);
1073 			ZVAL_NULL(ret);
1074 		}
1075 
1076 		call->prev_execute_data = execute_data;
1077 		execute_data = call;
1078 		i_init_func_execute_data(&fbc->op_array, ret, 1 EXECUTE_DATA_CC);
1079 
1080 		if (EXPECTED(zend_execute_ex == execute_ex)) {
1081 			LOAD_OPLINE();
1082 			ZEND_VM_ENTER_EX();
1083 		} else {
1084 			execute_data = EX(prev_execute_data);
1085 			LOAD_OPLINE();
1086 			ZEND_ADD_CALL_FLAG(call, ZEND_CALL_TOP);
1087 			zend_execute_ex(call);
1088 		}
1089 	} else if (EXPECTED(fbc->type < ZEND_USER_FUNCTION)) {
1090 		zval retval;
1091 
1092 		call->prev_execute_data = execute_data;
1093 		EG(current_execute_data) = call;
1094 
1095 		if (UNEXPECTED(fbc->common.fn_flags & ZEND_ACC_HAS_TYPE_HINTS)
1096 		  && UNEXPECTED(!zend_verify_internal_arg_types(fbc, call))) {
1097 			UNDEF_RESULT();
1098 			goto fcall_end;
1099 		}
1100 
1101 		ret = 1 ? EX_VAR(opline->result.var) : &retval;
1102 		ZVAL_NULL(ret);
1103 
1104 		if (!zend_execute_internal) {
1105 			/* saves one function call if zend_execute_internal is not used */
1106 			fbc->internal_function.handler(call, ret);
1107 		} else {
1108 			zend_execute_internal(call, ret);
1109 		}
1110 
1111 #if ZEND_DEBUG
1112 		if (!EG(exception) && call->func) {
1113 			ZEND_ASSERT(!(call->func->common.fn_flags & ZEND_ACC_HAS_RETURN_TYPE) ||
1114 				zend_verify_internal_return_type(call->func, ret));
1115 			ZEND_ASSERT((call->func->common.fn_flags & ZEND_ACC_RETURN_REFERENCE)
1116 				? Z_ISREF_P(ret) : !Z_ISREF_P(ret));
1117 		}
1118 #endif
1119 
1120 		EG(current_execute_data) = execute_data;
1121 		zend_vm_stack_free_args(call);
1122 
1123 		if (!1) {
1124 			zval_ptr_dtor(ret);
1125 		}
1126 
1127 	} else { /* ZEND_OVERLOADED_FUNCTION */
1128 		zval retval;
1129 
1130 		ret = 1 ? EX_VAR(opline->result.var) : &retval;
1131 
1132 		call->prev_execute_data = execute_data;
1133 
1134 		if (UNEXPECTED(!zend_do_fcall_overloaded(call, ret))) {
1135 			UNDEF_RESULT();
1136 			HANDLE_EXCEPTION();
1137 		}
1138 
1139 		if (!1) {
1140 			zval_ptr_dtor(ret);
1141 		}
1142 	}
1143 
1144 fcall_end:
1145 	if (UNEXPECTED(ZEND_CALL_INFO(call) & ZEND_CALL_RELEASE_THIS)) {
1146 		object = Z_OBJ(call->This);
1147 #if 0
1148 		if (UNEXPECTED(EG(exception) != NULL) && (opline->op1.num & ZEND_CALL_CTOR)) {
1149 #else
1150 		if (UNEXPECTED(EG(exception) != NULL) && (ZEND_CALL_INFO(call) & ZEND_CALL_CTOR)) {
1151 #endif
1152 			GC_DELREF(object);
1153 			zend_object_store_ctor_failed(object);
1154 		}
1155 		OBJ_RELEASE(object);
1156 	}
1157 
1158 	zend_vm_stack_free_call_frame(call);
1159 	if (UNEXPECTED(EG(exception) != NULL)) {
1160 		zend_rethrow_exception(execute_data);
1161 		HANDLE_EXCEPTION();
1162 	}
1163 
1164 	ZEND_VM_SET_OPCODE(opline + 1);
1165 	ZEND_VM_CONTINUE();
1166 }
1167 
1168 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_GENERATOR_CREATE_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
1169 {
1170 	zval *return_value = EX(return_value);
1171 
1172 	if (EXPECTED(return_value)) {
1173 		USE_OPLINE
1174 		zend_generator *generator;
1175 		zend_execute_data *gen_execute_data;
1176 		uint32_t num_args, used_stack, call_info;
1177 
1178 		object_init_ex(return_value, zend_ce_generator);
1179 
1180 		/*
1181 		 * Normally the execute_data is allocated on the VM stack (because it does
1182 		 * not actually do any allocation and thus is faster). For generators
1183 		 * though this behavior would be suboptimal, because the (rather large)
1184 		 * structure would have to be copied back and forth every time execution is
1185 		 * suspended or resumed. That's why for generators the execution context
1186 		 * is allocated on heap.
1187 		 */
1188 		num_args = EX_NUM_ARGS();
1189 		if (EXPECTED(num_args <= EX(func)->op_array.num_args)) {
1190 			used_stack = (ZEND_CALL_FRAME_SLOT + EX(func)->op_array.last_var + EX(func)->op_array.T) * sizeof(zval);
1191 			gen_execute_data = (zend_execute_data*)emalloc(used_stack);
1192 			used_stack = (ZEND_CALL_FRAME_SLOT + EX(func)->op_array.last_var) * sizeof(zval);
1193 		} else {
1194 			used_stack = (ZEND_CALL_FRAME_SLOT + num_args + EX(func)->op_array.last_var + EX(func)->op_array.T - EX(func)->op_array.num_args) * sizeof(zval);
1195 			gen_execute_data = (zend_execute_data*)emalloc(used_stack);
1196 		}
1197 		memcpy(gen_execute_data, execute_data, used_stack);
1198 
1199 		/* Save execution context in generator object. */
1200 		generator = (zend_generator *) Z_OBJ_P(EX(return_value));
1201 		generator->execute_data = gen_execute_data;
1202 		generator->frozen_call_stack = NULL;
1203 		generator->execute_fake.opline = NULL;
1204 		generator->execute_fake.func = NULL;
1205 		generator->execute_fake.prev_execute_data = NULL;
1206 		ZVAL_OBJ(&generator->execute_fake.This, (zend_object *) generator);
1207 
1208 		gen_execute_data->opline = opline + 1;
1209 		/* EX(return_value) keeps pointer to zend_object (not a real zval) */
1210 		gen_execute_data->return_value = (zval*)generator;
1211 		call_info = Z_TYPE_INFO(EX(This));
1212 		if ((call_info & Z_TYPE_MASK) == IS_OBJECT
1213 		 && (!(call_info & ((ZEND_CALL_CLOSURE|ZEND_CALL_RELEASE_THIS) << ZEND_CALL_INFO_SHIFT))
1214 			 /* Bug #72523 */
1215 			|| UNEXPECTED(zend_execute_ex != execute_ex))) {
1216 			ZEND_ADD_CALL_FLAG_EX(call_info, ZEND_CALL_RELEASE_THIS);
1217 			Z_ADDREF(gen_execute_data->This);
1218 		}
1219 		ZEND_ADD_CALL_FLAG_EX(call_info, (ZEND_CALL_TOP_FUNCTION | ZEND_CALL_ALLOCATED | ZEND_CALL_GENERATOR));
1220 		Z_TYPE_INFO(gen_execute_data->This) = call_info;
1221 		gen_execute_data->prev_execute_data = NULL;
1222 
1223 		call_info = EX_CALL_INFO();
1224 		EG(current_execute_data) = EX(prev_execute_data);
1225 		if (EXPECTED(!(call_info & (ZEND_CALL_TOP|ZEND_CALL_ALLOCATED)))) {
1226 			EG(vm_stack_top) = (zval*)execute_data;
1227 			execute_data = EX(prev_execute_data);
1228 			LOAD_NEXT_OPLINE();
1229 			ZEND_VM_LEAVE();
1230 		} else if (EXPECTED(!(call_info & ZEND_CALL_TOP))) {
1231 			zend_execute_data *old_execute_data = execute_data;
1232 			execute_data = EX(prev_execute_data);
1233 			zend_vm_stack_free_call_frame_ex(call_info, old_execute_data);
1234 			LOAD_NEXT_OPLINE();
1235 			ZEND_VM_LEAVE();
1236 		} else {
1237 			ZEND_VM_RETURN();
1238 		}
1239 	} else {
1240 		ZEND_VM_TAIL_CALL(zend_leave_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
1241 	}
1242 }
1243 
1244 static zend_never_inline ZEND_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_cannot_pass_by_ref_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS)
1245 {
1246 	USE_OPLINE
1247 	zval *arg;
1248 	uint32_t arg_num = opline->op2.num;
1249 
1250 	SAVE_OPLINE();
1251 	zend_throw_error(NULL, "Cannot pass parameter %d by reference", arg_num);
1252 	FREE_UNFETCHED_OP(opline->op1_type, opline->op1.var);
1253 	arg = ZEND_CALL_VAR(EX(call), opline->result.var);
1254 	ZVAL_UNDEF(arg);
1255 	HANDLE_EXCEPTION();
1256 }
1257 
1258 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SEND_UNPACK_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
1259 {
1260 	USE_OPLINE
1261 	zend_free_op free_op1;
1262 	zval *args;
1263 	int arg_num;
1264 
1265 	SAVE_OPLINE();
1266 	args = get_zval_ptr_undef(opline->op1_type, opline->op1, &free_op1, BP_VAR_R);
1267 	arg_num = ZEND_CALL_NUM_ARGS(EX(call)) + 1;
1268 
1269 send_again:
1270 	if (EXPECTED(Z_TYPE_P(args) == IS_ARRAY)) {
1271 		HashTable *ht = Z_ARRVAL_P(args);
1272 		zval *arg, *top;
1273 		zend_string *name;
1274 
1275 		zend_vm_stack_extend_call_frame(&EX(call), arg_num - 1, zend_hash_num_elements(ht));
1276 
1277 		if ((opline->op1_type & (IS_VAR|IS_CV)) && Z_REFCOUNT_P(args) > 1) {
1278 			uint32_t i;
1279 			int separate = 0;
1280 
1281 			/* check if any of arguments are going to be passed by reference */
1282 			for (i = 0; i < zend_hash_num_elements(ht); i++) {
1283 				if (ARG_SHOULD_BE_SENT_BY_REF(EX(call)->func, arg_num + i)) {
1284 					separate = 1;
1285 					break;
1286 				}
1287 			}
1288 			if (separate) {
1289 				SEPARATE_ARRAY(args);
1290 				ht = Z_ARRVAL_P(args);
1291 			}
1292 		}
1293 
1294 		ZEND_HASH_FOREACH_STR_KEY_VAL(ht, name, arg) {
1295 			if (name) {
1296 				zend_throw_error(NULL, "Cannot unpack array with string keys");
1297 				FREE_OP(free_op1);
1298 				HANDLE_EXCEPTION();
1299 			}
1300 
1301 			top = ZEND_CALL_ARG(EX(call), arg_num);
1302 			if (ARG_SHOULD_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
1303 				if (Z_ISREF_P(arg)) {
1304 					Z_ADDREF_P(arg);
1305 					ZVAL_REF(top, Z_REF_P(arg));
1306 				} else if (opline->op1_type & (IS_VAR|IS_CV)) {
1307 					/* array is already separated above */
1308 					ZVAL_MAKE_REF_EX(arg, 2);
1309 					ZVAL_REF(top, Z_REF_P(arg));
1310 				} else {
1311 					Z_TRY_ADDREF_P(arg);
1312 					ZVAL_NEW_REF(top, arg);
1313 				}
1314 			} else {
1315 				ZVAL_COPY_DEREF(top, arg);
1316 			}
1317 
1318 			ZEND_CALL_NUM_ARGS(EX(call))++;
1319 			arg_num++;
1320 		} ZEND_HASH_FOREACH_END();
1321 
1322 	} else if (EXPECTED(Z_TYPE_P(args) == IS_OBJECT)) {
1323 		zend_class_entry *ce = Z_OBJCE_P(args);
1324 		zend_object_iterator *iter;
1325 
1326 		if (!ce || !ce->get_iterator) {
1327 			zend_error(E_WARNING, "Only arrays and Traversables can be unpacked");
1328 		} else {
1329 
1330 			iter = ce->get_iterator(ce, args, 0);
1331 			if (UNEXPECTED(!iter)) {
1332 				FREE_OP(free_op1);
1333 				if (!EG(exception)) {
1334 					zend_throw_exception_ex(
1335 						NULL, 0, "Object of type %s did not create an Iterator", ZSTR_VAL(ce->name)
1336 					);
1337 				}
1338 				HANDLE_EXCEPTION();
1339 			}
1340 
1341 			if (iter->funcs->rewind) {
1342 				iter->funcs->rewind(iter);
1343 			}
1344 
1345 			for (; iter->funcs->valid(iter) == SUCCESS; ++arg_num) {
1346 				zval *arg, *top;
1347 
1348 				if (UNEXPECTED(EG(exception) != NULL)) {
1349 					break;
1350 				}
1351 
1352 				arg = iter->funcs->get_current_data(iter);
1353 				if (UNEXPECTED(EG(exception) != NULL)) {
1354 					break;
1355 				}
1356 
1357 				if (iter->funcs->get_current_key) {
1358 					zval key;
1359 					iter->funcs->get_current_key(iter, &key);
1360 					if (UNEXPECTED(EG(exception) != NULL)) {
1361 						break;
1362 					}
1363 
1364 					if (UNEXPECTED(Z_TYPE(key) != IS_LONG)) {
1365 						zend_throw_error(NULL,
1366 							(Z_TYPE(key) == IS_STRING) ?
1367 								"Cannot unpack Traversable with string keys" :
1368 								"Cannot unpack Traversable with non-integer keys");
1369 						zval_ptr_dtor(&key);
1370 						break;
1371 					}
1372 				}
1373 
1374 				if (ARG_MUST_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
1375 					zend_error(
1376 						E_WARNING, "Cannot pass by-reference argument %d of %s%s%s()"
1377 						" by unpacking a Traversable, passing by-value instead", arg_num,
1378 						EX(call)->func->common.scope ? ZSTR_VAL(EX(call)->func->common.scope->name) : "",
1379 						EX(call)->func->common.scope ? "::" : "",
1380 						ZSTR_VAL(EX(call)->func->common.function_name)
1381 					);
1382 				}
1383 
1384 				ZVAL_DEREF(arg);
1385 				Z_TRY_ADDREF_P(arg);
1386 
1387 				zend_vm_stack_extend_call_frame(&EX(call), arg_num - 1, 1);
1388 				top = ZEND_CALL_ARG(EX(call), arg_num);
1389 				ZVAL_COPY_VALUE(top, arg);
1390 				ZEND_CALL_NUM_ARGS(EX(call))++;
1391 
1392 				iter->funcs->move_forward(iter);
1393 			}
1394 
1395 			zend_iterator_dtor(iter);
1396 		}
1397 	} else if (EXPECTED(Z_ISREF_P(args))) {
1398 		args = Z_REFVAL_P(args);
1399 		goto send_again;
1400 	} else {
1401 		if (opline->op1_type == IS_CV && UNEXPECTED(Z_TYPE_P(args) == IS_UNDEF)) {
1402 			GET_OP1_UNDEF_CV(args, BP_VAR_R);
1403 		}
1404 		zend_error(E_WARNING, "Only arrays and Traversables can be unpacked");
1405 	}
1406 
1407 	FREE_OP(free_op1);
1408 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
1409 }
1410 
1411 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SEND_ARRAY_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
1412 {
1413 	USE_OPLINE
1414 	zend_free_op free_op1;
1415 	zval *args;
1416 
1417 	SAVE_OPLINE();
1418 	args = get_zval_ptr(opline->op1_type, opline->op1, &free_op1, BP_VAR_R);
1419 
1420 	if (UNEXPECTED(Z_TYPE_P(args) != IS_ARRAY)) {
1421 		if ((opline->op1_type & (IS_VAR|IS_CV)) && Z_ISREF_P(args)) {
1422 			args = Z_REFVAL_P(args);
1423 			if (EXPECTED(Z_TYPE_P(args) == IS_ARRAY)) {
1424 				goto send_array;
1425 			}
1426 		}
1427 		zend_internal_type_error(EX_USES_STRICT_TYPES(), "call_user_func_array() expects parameter 2 to be array, %s given", zend_get_type_by_const(Z_TYPE_P(args)));
1428 		if (ZEND_CALL_INFO(EX(call)) & ZEND_CALL_CLOSURE) {
1429 			OBJ_RELEASE(ZEND_CLOSURE_OBJECT(EX(call)->func));
1430 		}
1431 		if (Z_TYPE(EX(call)->This) == IS_OBJECT) {
1432 			OBJ_RELEASE(Z_OBJ(EX(call)->This));
1433 		}
1434 		EX(call)->func = (zend_function*)&zend_pass_function;
1435 		Z_OBJ(EX(call)->This) = NULL;
1436 		ZEND_SET_CALL_INFO(EX(call), 0, ZEND_CALL_INFO(EX(call)) & ~ZEND_CALL_RELEASE_THIS);
1437 		FREE_UNFETCHED_OP(opline->op2_type, opline->op2.var);
1438 	} else {
1439 		uint32_t arg_num;
1440 		HashTable *ht;
1441 		zval *arg, *param;
1442 
1443 
1444 send_array:
1445 		ht = Z_ARRVAL_P(args);
1446 		if (opline->op2_type != IS_UNUSED) {
1447 			zend_free_op free_op2;
1448 			zval *op2 = get_zval_ptr_deref(opline->op2_type, opline->op2, &free_op2, BP_VAR_R);
1449 			uint32_t skip = opline->extended_value;
1450 			uint32_t count = zend_hash_num_elements(ht);
1451 			zend_long len = zval_get_long(op2);
1452 
1453 			if (len < 0) {
1454 				len += (zend_long)(count - skip);
1455 			}
1456 			if (skip < count && len > 0) {
1457 				if (len > (zend_long)(count - skip)) {
1458 					len = (zend_long)(count - skip);
1459 				}
1460 				zend_vm_stack_extend_call_frame(&EX(call), 0, len);
1461 				arg_num = 1;
1462 				param = ZEND_CALL_ARG(EX(call), 1);
1463 				ZEND_HASH_FOREACH_VAL(ht, arg) {
1464 					if (skip > 0) {
1465 						skip--;
1466 						continue;
1467 					} else if ((zend_long)(arg_num - 1) >= len) {
1468 						break;
1469 					} else if (ARG_SHOULD_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
1470 						if (UNEXPECTED(!Z_ISREF_P(arg))) {
1471 							if (!ARG_MAY_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
1472 								/* By-value send is not allowed -- emit a warning,
1473 								 * but still perform the call. */
1474 								zend_param_must_be_ref(EX(call)->func, arg_num);
1475 							}
1476 						}
1477 					} else {
1478 						if (Z_ISREF_P(arg) &&
1479 						    !(EX(call)->func->common.fn_flags & ZEND_ACC_CALL_VIA_TRAMPOLINE)) {
1480 							/* don't separate references for __call */
1481 							arg = Z_REFVAL_P(arg);
1482 						}
1483 					}
1484 					ZVAL_COPY(param, arg);
1485 					ZEND_CALL_NUM_ARGS(EX(call))++;
1486 					arg_num++;
1487 					param++;
1488 				} ZEND_HASH_FOREACH_END();
1489 			}
1490 			FREE_OP(free_op2);
1491 		} else {
1492 			zend_vm_stack_extend_call_frame(&EX(call), 0, zend_hash_num_elements(ht));
1493 			arg_num = 1;
1494 			param = ZEND_CALL_ARG(EX(call), 1);
1495 			ZEND_HASH_FOREACH_VAL(ht, arg) {
1496 				if (ARG_SHOULD_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
1497 					if (UNEXPECTED(!Z_ISREF_P(arg))) {
1498 						if (!ARG_MAY_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
1499 							/* By-value send is not allowed -- emit a warning,
1500 							 * but still perform the call. */
1501 							zend_param_must_be_ref(EX(call)->func, arg_num);
1502 						}
1503 					}
1504 				} else {
1505 					if (Z_ISREF_P(arg) &&
1506 					    !(EX(call)->func->common.fn_flags & ZEND_ACC_CALL_VIA_TRAMPOLINE)) {
1507 						/* don't separate references for __call */
1508 						arg = Z_REFVAL_P(arg);
1509 					}
1510 				}
1511 				ZVAL_COPY(param, arg);
1512 				ZEND_CALL_NUM_ARGS(EX(call))++;
1513 				arg_num++;
1514 				param++;
1515 			} ZEND_HASH_FOREACH_END();
1516 		}
1517 	}
1518 	FREE_OP(free_op1);
1519 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
1520 }
1521 
1522 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BEGIN_SILENCE_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
1523 {
1524 	USE_OPLINE
1525 
1526 	ZVAL_LONG(EX_VAR(opline->result.var), EG(error_reporting));
1527 
1528 	if (EG(error_reporting)) {
1529 		do {
1530 			EG(error_reporting) = 0;
1531 			if (!EG(error_reporting_ini_entry)) {
1532 				zval *zv = zend_hash_find_ex(EG(ini_directives), ZSTR_KNOWN(ZEND_STR_ERROR_REPORTING), 1);
1533 				if (zv) {
1534 					EG(error_reporting_ini_entry) = (zend_ini_entry *)Z_PTR_P(zv);
1535 				} else {
1536 					break;
1537 				}
1538 			}
1539 			if (!EG(error_reporting_ini_entry)->modified) {
1540 				if (!EG(modified_ini_directives)) {
1541 					ALLOC_HASHTABLE(EG(modified_ini_directives));
1542 					zend_hash_init(EG(modified_ini_directives), 8, NULL, NULL, 0);
1543 				}
1544 				if (EXPECTED(zend_hash_add_ptr(EG(modified_ini_directives), ZSTR_KNOWN(ZEND_STR_ERROR_REPORTING), EG(error_reporting_ini_entry)) != NULL)) {
1545 					EG(error_reporting_ini_entry)->orig_value = EG(error_reporting_ini_entry)->value;
1546 					EG(error_reporting_ini_entry)->orig_modifiable = EG(error_reporting_ini_entry)->modifiable;
1547 					EG(error_reporting_ini_entry)->modified = 1;
1548 				}
1549 			}
1550 		} while (0);
1551 	}
1552 	ZEND_VM_NEXT_OPCODE();
1553 }
1554 
1555 static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_EXT_STMT_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
1556 {
1557 	USE_OPLINE
1558 
1559 	if (!EG(no_extensions)) {
1560 		SAVE_OPLINE();
1561 		zend_llist_apply_with_argument(&zend_extensions, (llist_apply_with_arg_func_t) zend_extension_statement_handler, execute_data);
1562 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
1563 	}
1564 	ZEND_VM_NEXT_OPCODE();
1565 }
1566 
1567 static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_EXT_FCALL_BEGIN_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
1568 {
1569 	USE_OPLINE
1570 
1571 	if (!EG(no_extensions)) {
1572 		SAVE_OPLINE();
1573 		zend_llist_apply_with_argument(&zend_extensions, (llist_apply_with_arg_func_t) zend_extension_fcall_begin_handler, execute_data);
1574 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
1575 	}
1576 	ZEND_VM_NEXT_OPCODE();
1577 }
1578 
1579 static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_EXT_FCALL_END_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
1580 {
1581 	USE_OPLINE
1582 
1583 	if (!EG(no_extensions)) {
1584 		SAVE_OPLINE();
1585 		zend_llist_apply_with_argument(&zend_extensions, (llist_apply_with_arg_func_t) zend_extension_fcall_end_handler, execute_data);
1586 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
1587 	}
1588 	ZEND_VM_NEXT_OPCODE();
1589 }
1590 
1591 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_DECLARE_ANON_CLASS_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
1592 {
1593 	zval *zv;
1594 	zend_class_entry *ce;
1595 	USE_OPLINE
1596 
1597 	SAVE_OPLINE();
1598 	zv = zend_hash_find_ex(EG(class_table), Z_STR_P(RT_CONSTANT(opline, opline->op1)), 1);
1599 	ZEND_ASSERT(zv != NULL);
1600 	ce = Z_CE_P(zv);
1601 	Z_CE_P(EX_VAR(opline->result.var)) = ce;
1602 
1603 	if (ce->ce_flags & ZEND_ACC_ANON_BOUND) {
1604 		ZEND_VM_SET_RELATIVE_OPCODE(opline, opline->extended_value);
1605 		ZEND_VM_CONTINUE();
1606 	}
1607 
1608 	if (!(ce->ce_flags & (ZEND_ACC_INTERFACE|ZEND_ACC_IMPLEMENT_INTERFACES|ZEND_ACC_IMPLEMENT_TRAITS))) {
1609 		zend_verify_abstract_class(ce);
1610 	}
1611 	ce->ce_flags |= ZEND_ACC_ANON_BOUND;
1612 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
1613 }
1614 
1615 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_DECLARE_FUNCTION_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
1616 {
1617 	USE_OPLINE
1618 
1619 	SAVE_OPLINE();
1620 	do_bind_function(&EX(func)->op_array, opline, EG(function_table), 0);
1621 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
1622 }
1623 
1624 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_TICKS_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
1625 {
1626 	USE_OPLINE
1627 
1628 	if ((uint32_t)++EG(ticks_count) >= opline->extended_value) {
1629 		EG(ticks_count) = 0;
1630 		if (zend_ticks_function) {
1631 			SAVE_OPLINE();
1632 			zend_ticks_function(opline->extended_value);
1633 			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
1634 		}
1635 	}
1636 	ZEND_VM_NEXT_OPCODE();
1637 }
1638 
1639 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_EXT_NOP_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
1640 {
1641 	USE_OPLINE
1642 
1643 	ZEND_VM_NEXT_OPCODE();
1644 }
1645 
1646 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_NOP_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
1647 {
1648 	USE_OPLINE
1649 
1650 	ZEND_VM_NEXT_OPCODE();
1651 }
1652 
1653 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ADD_TRAIT_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
1654 {
1655 	USE_OPLINE
1656 	zend_class_entry *ce = Z_CE_P(EX_VAR(opline->op1.var));
1657 	zend_class_entry *trait;
1658 
1659 	SAVE_OPLINE();
1660 	trait = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op2)),
1661 	                                 RT_CONSTANT(opline, opline->op2) + 1,
1662 	                                 ZEND_FETCH_CLASS_TRAIT);
1663 	if (UNEXPECTED(trait == NULL)) {
1664 		ZEND_ASSERT(EG(exception));
1665 		HANDLE_EXCEPTION();
1666 	}
1667 	if (!(trait->ce_flags & ZEND_ACC_TRAIT)) {
1668 		zend_error_noreturn(E_ERROR, "%s cannot use %s - it is not a trait", ZSTR_VAL(ce->name), ZSTR_VAL(trait->name));
1669 	}
1670 
1671 	zend_do_implement_trait(ce, trait);
1672 
1673 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
1674 }
1675 
1676 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BIND_TRAITS_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
1677 {
1678 	USE_OPLINE
1679 	zend_class_entry *ce = Z_CE_P(EX_VAR(opline->op1.var));
1680 
1681 	SAVE_OPLINE();
1682 	zend_do_bind_traits(ce);
1683 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
1684 }
1685 
1686 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_dispatch_try_catch_finally_helper_SPEC(uint32_t try_catch_offset, uint32_t op_num ZEND_OPCODE_HANDLER_ARGS_DC)
1687 {
1688 	/* May be NULL during generator closing (only finally blocks are executed) */
1689 	zend_object *ex = EG(exception);
1690 
1691 	/* Walk try/catch/finally structures upwards, performing the necessary actions */
1692 	while (try_catch_offset != (uint32_t) -1) {
1693 		zend_try_catch_element *try_catch =
1694 			&EX(func)->op_array.try_catch_array[try_catch_offset];
1695 
1696 		if (op_num < try_catch->catch_op && ex) {
1697 			/* Go to catch block */
1698 			cleanup_live_vars(execute_data, op_num, try_catch->catch_op);
1699 			ZEND_VM_JMP_EX(&EX(func)->op_array.opcodes[try_catch->catch_op], 0);
1700 
1701 		} else if (op_num < try_catch->finally_op) {
1702 			/* Go to finally block */
1703 			zval *fast_call = EX_VAR(EX(func)->op_array.opcodes[try_catch->finally_end].op1.var);
1704 			cleanup_live_vars(execute_data, op_num, try_catch->finally_op);
1705 			Z_OBJ_P(fast_call) = EG(exception);
1706 			EG(exception) = NULL;
1707 			Z_OPLINE_NUM_P(fast_call) = (uint32_t)-1;
1708 			ZEND_VM_JMP_EX(&EX(func)->op_array.opcodes[try_catch->finally_op], 0);
1709 
1710 		} else if (op_num < try_catch->finally_end) {
1711 			zval *fast_call = EX_VAR(EX(func)->op_array.opcodes[try_catch->finally_end].op1.var);
1712 
1713 			/* cleanup incomplete RETURN statement */
1714 			if (Z_OPLINE_NUM_P(fast_call) != (uint32_t)-1
1715 			 && (EX(func)->op_array.opcodes[Z_OPLINE_NUM_P(fast_call)].op2_type & (IS_TMP_VAR | IS_VAR))) {
1716 				zval *return_value = EX_VAR(EX(func)->op_array.opcodes[Z_OPLINE_NUM_P(fast_call)].op2.var);
1717 
1718 				zval_ptr_dtor(return_value);
1719 			}
1720 
1721 			/* Chain potential exception from wrapping finally block */
1722 			if (Z_OBJ_P(fast_call)) {
1723 				if (ex) {
1724 					zend_exception_set_previous(ex, Z_OBJ_P(fast_call));
1725 				} else {
1726 					EG(exception) = Z_OBJ_P(fast_call);
1727 				}
1728 				ex = Z_OBJ_P(fast_call);
1729 			}
1730 		}
1731 
1732 		try_catch_offset--;
1733 	}
1734 
1735 	/* Uncaught exception */
1736 	cleanup_live_vars(execute_data, op_num, 0);
1737 	if (UNEXPECTED((EX_CALL_INFO() & ZEND_CALL_GENERATOR) != 0)) {
1738 		zend_generator *generator = zend_get_running_generator(EXECUTE_DATA_C);
1739 		zend_generator_close(generator, 1);
1740 		ZEND_VM_RETURN();
1741 	} else {
1742 		ZEND_VM_TAIL_CALL(zend_leave_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
1743 	}
1744 }
1745 
1746 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_HANDLE_EXCEPTION_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
1747 {
1748 	const zend_op *throw_op = EG(opline_before_exception);
1749 	uint32_t throw_op_num = throw_op - EX(func)->op_array.opcodes;
1750 	int i, current_try_catch_offset = -1;
1751 
1752 	if ((throw_op->opcode == ZEND_FREE || throw_op->opcode == ZEND_FE_FREE)
1753 		&& throw_op->extended_value & ZEND_FREE_ON_RETURN) {
1754 		/* exceptions thrown because of loop var destruction on return/break/...
1755 		 * are logically thrown at the end of the foreach loop, so adjust the
1756 		 * throw_op_num.
1757 		 */
1758 		const zend_live_range *range = find_live_range(
1759 			&EX(func)->op_array, throw_op_num, throw_op->op1.var);
1760 		throw_op_num = range->end;
1761 	}
1762 
1763 	/* Find the innermost try/catch/finally the exception was thrown in */
1764 	for (i = 0; i < EX(func)->op_array.last_try_catch; i++) {
1765 		zend_try_catch_element *try_catch = &EX(func)->op_array.try_catch_array[i];
1766 		if (try_catch->try_op > throw_op_num) {
1767 			/* further blocks will not be relevant... */
1768 			break;
1769 		}
1770 		if (throw_op_num < try_catch->catch_op || throw_op_num < try_catch->finally_end) {
1771 			current_try_catch_offset = i;
1772 		}
1773 	}
1774 
1775 	cleanup_unfinished_calls(execute_data, throw_op_num);
1776 
1777 	if (throw_op->result_type & (IS_VAR | IS_TMP_VAR)) {
1778 		switch (throw_op->opcode) {
1779 			case ZEND_ADD_ARRAY_ELEMENT:
1780 			case ZEND_ROPE_INIT:
1781 			case ZEND_ROPE_ADD:
1782 				break; /* exception while building structures, live range handling will free those */
1783 
1784 			case ZEND_FETCH_CLASS:
1785 			case ZEND_DECLARE_CLASS:
1786 			case ZEND_DECLARE_INHERITED_CLASS:
1787 			case ZEND_DECLARE_ANON_CLASS:
1788 			case ZEND_DECLARE_ANON_INHERITED_CLASS:
1789 				break; /* return value is zend_class_entry pointer */
1790 
1791 			default:
1792 				zval_ptr_dtor_nogc(EX_VAR(throw_op->result.var));
1793 		}
1794 	}
1795 
1796 	ZEND_VM_TAIL_CALL(zend_dispatch_try_catch_finally_helper_SPEC(current_try_catch_offset, throw_op_num ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
1797 }
1798 
1799 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_VERIFY_ABSTRACT_CLASS_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
1800 {
1801 	USE_OPLINE
1802 
1803 	SAVE_OPLINE();
1804 	zend_verify_abstract_class(Z_CE_P(EX_VAR(opline->op1.var)));
1805 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
1806 }
1807 
1808 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_USER_OPCODE_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
1809 {
1810 	USE_OPLINE
1811 	int ret;
1812 
1813 	SAVE_OPLINE();
1814 	ret = zend_user_opcode_handlers[opline->opcode](execute_data);
1815 	opline = EX(opline);
1816 
1817 	switch (ret) {
1818 		case ZEND_USER_OPCODE_CONTINUE:
1819 			ZEND_VM_CONTINUE();
1820 		case ZEND_USER_OPCODE_RETURN:
1821 			if (UNEXPECTED((EX_CALL_INFO() & ZEND_CALL_GENERATOR) != 0)) {
1822 				zend_generator *generator = zend_get_running_generator(EXECUTE_DATA_C);
1823 				zend_generator_close(generator, 1);
1824 				ZEND_VM_RETURN();
1825 			} else {
1826 				ZEND_VM_TAIL_CALL(zend_leave_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
1827 			}
1828 		case ZEND_USER_OPCODE_ENTER:
1829 			ZEND_VM_ENTER();
1830 		case ZEND_USER_OPCODE_LEAVE:
1831 			ZEND_VM_LEAVE();
1832 		case ZEND_USER_OPCODE_DISPATCH:
1833 			ZEND_VM_DISPATCH(opline->opcode, opline);
1834 		default:
1835 			ZEND_VM_DISPATCH((zend_uchar)(ret & 0xff), opline);
1836 	}
1837 }
1838 
1839 static zend_never_inline ZEND_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_yield_in_closed_generator_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS)
1840 {
1841 	USE_OPLINE
1842 
1843 	SAVE_OPLINE();
1844 	zend_throw_error(NULL, "Cannot yield from finally in a force-closed generator");
1845 	FREE_UNFETCHED_OP(opline->op2_type, opline->op2.var);
1846 	FREE_UNFETCHED_OP(opline->op1_type, opline->op1.var);
1847 	UNDEF_RESULT();
1848 	HANDLE_EXCEPTION();
1849 }
1850 
1851 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_DISCARD_EXCEPTION_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
1852 {
1853 	USE_OPLINE
1854 	zval *fast_call = EX_VAR(opline->op1.var);
1855 	SAVE_OPLINE();
1856 
1857 	/* cleanup incomplete RETURN statement */
1858 	if (Z_OPLINE_NUM_P(fast_call) != (uint32_t)-1
1859 	 && (EX(func)->op_array.opcodes[Z_OPLINE_NUM_P(fast_call)].op2_type & (IS_TMP_VAR | IS_VAR))) {
1860 		zval *return_value = EX_VAR(EX(func)->op_array.opcodes[Z_OPLINE_NUM_P(fast_call)].op2.var);
1861 
1862 		zval_ptr_dtor(return_value);
1863 	}
1864 
1865 	/* cleanup delayed exception */
1866 	if (Z_OBJ_P(fast_call) != NULL) {
1867 		/* discard the previously thrown exception */
1868 		OBJ_RELEASE(Z_OBJ_P(fast_call));
1869 		Z_OBJ_P(fast_call) = NULL;
1870 	}
1871 
1872 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
1873 }
1874 
1875 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FAST_CALL_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
1876 {
1877 	USE_OPLINE
1878 	zval *fast_call = EX_VAR(opline->result.var);
1879 
1880 	Z_OBJ_P(fast_call) = NULL;
1881 	/* set return address */
1882 	Z_OPLINE_NUM_P(fast_call) = opline - EX(func)->op_array.opcodes;
1883 	ZEND_VM_JMP_EX(OP_JMP_ADDR(opline, opline->op1), 0);
1884 }
1885 
1886 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FAST_RET_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
1887 {
1888 	USE_OPLINE
1889 	zval *fast_call = EX_VAR(opline->op1.var);
1890 	uint32_t current_try_catch_offset, current_op_num;
1891 
1892 	if (Z_OPLINE_NUM_P(fast_call) != (uint32_t)-1) {
1893 		const zend_op *fast_ret = EX(func)->op_array.opcodes + Z_OPLINE_NUM_P(fast_call);
1894 
1895 		ZEND_VM_JMP_EX(fast_ret + 1, 0);
1896 	}
1897 
1898 	/* special case for unhandled exceptions */
1899 	EG(exception) = Z_OBJ_P(fast_call);
1900 	Z_OBJ_P(fast_call) = NULL;
1901 	current_try_catch_offset = opline->op2.num;
1902 	current_op_num = opline - EX(func)->op_array.opcodes;
1903 	ZEND_VM_TAIL_CALL(zend_dispatch_try_catch_finally_helper_SPEC(current_try_catch_offset, current_op_num ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
1904 }
1905 
1906 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSERT_CHECK_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
1907 {
1908 	USE_OPLINE
1909 
1910 	if (EG(assertions) <= 0) {
1911 		zend_op *target = OP_JMP_ADDR(opline, opline->op2);
1912 		if (RETURN_VALUE_USED(opline)) {
1913 			ZVAL_TRUE(EX_VAR(opline->result.var));
1914 		}
1915 		ZEND_VM_JMP_EX(target, 0);
1916 	} else {
1917 		ZEND_VM_NEXT_OPCODE();
1918 	}
1919 }
1920 
1921 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_CALL_TRAMPOLINE_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
1922 {
1923 	zend_array *args;
1924 	zend_function *fbc = EX(func);
1925 	zval *ret = EX(return_value);
1926 	uint32_t call_info = EX_CALL_INFO() & (ZEND_CALL_NESTED | ZEND_CALL_TOP | ZEND_CALL_RELEASE_THIS);
1927 	uint32_t num_args = EX_NUM_ARGS();
1928 	zend_execute_data *call;
1929 
1930 	SAVE_OPLINE();
1931 
1932 	if (num_args) {
1933 		zval *p = ZEND_CALL_ARG(execute_data, 1);
1934 		zval *end = p + num_args;
1935 
1936 		args = zend_new_array(num_args);
1937 		zend_hash_real_init_packed(args);
1938 		ZEND_HASH_FILL_PACKED(args) {
1939 			do {
1940 				ZEND_HASH_FILL_ADD(p);
1941 				p++;
1942 			} while (p != end);
1943 		} ZEND_HASH_FILL_END();
1944 	}
1945 
1946 	call = execute_data;
1947 	execute_data = EG(current_execute_data) = EX(prev_execute_data);
1948 
1949 	call->func = (fbc->op_array.fn_flags & ZEND_ACC_STATIC) ? fbc->op_array.scope->__callstatic : fbc->op_array.scope->__call;
1950 	ZEND_ASSERT(zend_vm_calc_used_stack(2, call->func) <= (size_t)(((char*)EG(vm_stack_end)) - (char*)call));
1951 	ZEND_CALL_NUM_ARGS(call) = 2;
1952 
1953 	ZVAL_STR(ZEND_CALL_ARG(call, 1), fbc->common.function_name);
1954 	if (num_args) {
1955 		ZVAL_ARR(ZEND_CALL_ARG(call, 2), args);
1956 	} else {
1957 		ZVAL_EMPTY_ARRAY(ZEND_CALL_ARG(call, 2));
1958 	}
1959 	zend_free_trampoline(fbc);
1960 	fbc = call->func;
1961 
1962 	if (EXPECTED(fbc->type == ZEND_USER_FUNCTION)) {
1963 		if (UNEXPECTED(!fbc->op_array.run_time_cache)) {
1964 			init_func_run_time_cache(&fbc->op_array);
1965 		}
1966 		execute_data = call;
1967 		i_init_func_execute_data(&fbc->op_array, ret, 0 EXECUTE_DATA_CC);
1968 		if (EXPECTED(zend_execute_ex == execute_ex)) {
1969 			LOAD_OPLINE();
1970 			ZEND_VM_ENTER_EX();
1971 		} else {
1972 			execute_data = EX(prev_execute_data);
1973 			LOAD_OPLINE();
1974 			ZEND_ADD_CALL_FLAG(call, ZEND_CALL_TOP);
1975 			zend_execute_ex(call);
1976 		}
1977 	} else {
1978 		zval retval;
1979 
1980 		ZEND_ASSERT(fbc->type == ZEND_INTERNAL_FUNCTION);
1981 
1982 		EG(current_execute_data) = call;
1983 
1984 		if (UNEXPECTED(fbc->common.fn_flags & ZEND_ACC_HAS_TYPE_HINTS)
1985 		 && UNEXPECTED(!zend_verify_internal_arg_types(fbc, call))) {
1986 			zend_vm_stack_free_call_frame(call);
1987 			if (ret) {
1988 				ZVAL_UNDEF(ret);
1989 			}
1990 			goto call_trampoline_end;
1991 		}
1992 
1993 		if (ret == NULL) {
1994 			ZVAL_NULL(&retval);
1995 			ret = &retval;
1996 		}
1997 
1998 		if (!zend_execute_internal) {
1999 			/* saves one function call if zend_execute_internal is not used */
2000 			fbc->internal_function.handler(call, ret);
2001 		} else {
2002 			zend_execute_internal(call, ret);
2003 		}
2004 
2005 #if ZEND_DEBUG
2006 		if (!EG(exception) && call->func) {
2007 			ZEND_ASSERT(!(call->func->common.fn_flags & ZEND_ACC_HAS_RETURN_TYPE) ||
2008 				zend_verify_internal_return_type(call->func, ret));
2009 			ZEND_ASSERT((call->func->common.fn_flags & ZEND_ACC_RETURN_REFERENCE)
2010 				? Z_ISREF_P(ret) : !Z_ISREF_P(ret));
2011 		}
2012 #endif
2013 
2014 		EG(current_execute_data) = call->prev_execute_data;
2015 
2016 		zend_vm_stack_free_args(call);
2017 
2018 		if (ret == &retval) {
2019 			zval_ptr_dtor(ret);
2020 		}
2021 	}
2022 
2023 call_trampoline_end:
2024 	execute_data = EG(current_execute_data);
2025 
2026 	if (!EX(func) || !ZEND_USER_CODE(EX(func)->type) || (call_info & ZEND_CALL_TOP)) {
2027 		ZEND_VM_RETURN();
2028 	}
2029 
2030 	if (UNEXPECTED(call_info & ZEND_CALL_RELEASE_THIS)) {
2031 		zend_object *object = Z_OBJ(call->This);
2032 		OBJ_RELEASE(object);
2033 	}
2034 	zend_vm_stack_free_call_frame(call);
2035 
2036 	if (UNEXPECTED(EG(exception) != NULL)) {
2037 		zend_rethrow_exception(execute_data);
2038 		HANDLE_EXCEPTION_LEAVE();
2039 	}
2040 
2041 	LOAD_OPLINE();
2042 	ZEND_VM_INC_OPCODE();
2043 	ZEND_VM_LEAVE();
2044 }
2045 
2046 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_JMP_FORWARD_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
2047 {
2048 	USE_OPLINE
2049 
2050 	OPLINE = OP_JMP_ADDR(opline, opline->op1);
2051 	ZEND_VM_CONTINUE();
2052 }
2053 
2054 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS)
2055 {
2056 	EG(vm_interrupt) = 0;
2057 	SAVE_OPLINE();
2058 	if (EG(timed_out)) {
2059 		zend_timeout(0);
2060 	} else if (zend_interrupt_function) {
2061 		zend_interrupt_function(execute_data);
2062 		ZEND_VM_ENTER();
2063 	}
2064 	ZEND_VM_CONTINUE();
2065 }
2066 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_FCALL_BY_NAME_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
2067 {
2068 	USE_OPLINE
2069 	zend_function *fbc;
2070 	zval *function_name, *func;
2071 	zend_execute_data *call;
2072 
2073 	fbc = CACHED_PTR(opline->result.num);
2074 	if (UNEXPECTED(fbc == NULL)) {
2075 		function_name = (zval*)RT_CONSTANT(opline, opline->op2);
2076 		func = zend_hash_find_ex(EG(function_table), Z_STR_P(function_name+1), 1);
2077 		if (UNEXPECTED(func == NULL)) {
2078 			ZEND_VM_TAIL_CALL(zend_undefined_function_helper_SPEC(function_name ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
2079 		}
2080 		fbc = Z_FUNC_P(func);
2081 		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!fbc->op_array.run_time_cache)) {
2082 			fbc = init_func_run_time_cache_ex(func);
2083 		}
2084 		CACHE_PTR(opline->result.num, fbc);
2085 	}
2086 	call = zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_FUNCTION,
2087 		fbc, opline->extended_value, NULL, NULL);
2088 	call->prev_execute_data = EX(call);
2089 	EX(call) = call;
2090 
2091 	ZEND_VM_NEXT_OPCODE();
2092 }
2093 
2094 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_DYNAMIC_CALL_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
2095 {
2096 	USE_OPLINE
2097 
2098 	zval *function_name;
2099 	zend_execute_data *call;
2100 
2101 	SAVE_OPLINE();
2102 	function_name = RT_CONSTANT(opline, opline->op2);
2103 
2104 try_function_name:
2105 	if (IS_CONST != IS_CONST && EXPECTED(Z_TYPE_P(function_name) == IS_STRING)) {
2106 		call = zend_init_dynamic_call_string(Z_STR_P(function_name), opline->extended_value);
2107 	} else if (IS_CONST != IS_CONST && EXPECTED(Z_TYPE_P(function_name) == IS_OBJECT)) {
2108 		call = zend_init_dynamic_call_object(function_name, opline->extended_value);
2109 	} else if (EXPECTED(Z_TYPE_P(function_name) == IS_ARRAY)) {
2110 		call = zend_init_dynamic_call_array(Z_ARRVAL_P(function_name), opline->extended_value);
2111 	} else if ((IS_CONST & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(function_name) == IS_REFERENCE)) {
2112 		function_name = Z_REFVAL_P(function_name);
2113 		goto try_function_name;
2114 	} else {
2115 		if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
2116 			GET_OP2_UNDEF_CV(function_name, BP_VAR_R);
2117 			if (UNEXPECTED(EG(exception) != NULL)) {
2118 				HANDLE_EXCEPTION();
2119 			}
2120 		}
2121 		zend_throw_error(NULL, "Function name must be a string");
2122 		call = NULL;
2123 	}
2124 
2125 	if (UNEXPECTED(!call)) {
2126 		HANDLE_EXCEPTION();
2127 	}
2128 
2129 	if (IS_CONST & (IS_VAR|IS_TMP_VAR)) {
2130 		if (UNEXPECTED(EG(exception))) {
2131 			if (call) {
2132 				 if (call->func->common.fn_flags & ZEND_ACC_CALL_VIA_TRAMPOLINE) {
2133 					zend_string_release_ex(call->func->common.function_name, 0);
2134 					zend_free_trampoline(call->func);
2135 				}
2136 				zend_vm_stack_free_call_frame(call);
2137 			}
2138 			HANDLE_EXCEPTION();
2139 		}
2140 	}
2141 
2142 	call->prev_execute_data = EX(call);
2143 	EX(call) = call;
2144 
2145 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
2146 }
2147 
2148 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_NS_FCALL_BY_NAME_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
2149 {
2150 	USE_OPLINE
2151 	zval *func_name;
2152 	zval *func;
2153 	zend_function *fbc;
2154 	zend_execute_data *call;
2155 
2156 	fbc = CACHED_PTR(opline->result.num);
2157 	if (UNEXPECTED(fbc == NULL)) {
2158 		func_name = (zval *)RT_CONSTANT(opline, opline->op2);
2159 		func = zend_hash_find_ex(EG(function_table), Z_STR_P(func_name + 1), 1);
2160 		if (func == NULL) {
2161 			func = zend_hash_find_ex(EG(function_table), Z_STR_P(func_name + 2), 1);
2162 			if (UNEXPECTED(func == NULL)) {
2163 				ZEND_VM_TAIL_CALL(zend_undefined_function_helper_SPEC(func_name ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
2164 			}
2165 		}
2166 		fbc = Z_FUNC_P(func);
2167 		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!fbc->op_array.run_time_cache)) {
2168 			fbc = init_func_run_time_cache_ex(func);
2169 		}
2170 		CACHE_PTR(opline->result.num, fbc);
2171 	}
2172 
2173 	call = zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_FUNCTION,
2174 		fbc, opline->extended_value, NULL, NULL);
2175 	call->prev_execute_data = EX(call);
2176 	EX(call) = call;
2177 
2178 	ZEND_VM_NEXT_OPCODE();
2179 }
2180 
2181 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_FCALL_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
2182 {
2183 	USE_OPLINE
2184 
2185 	zval *fname;
2186 	zval *func;
2187 	zend_function *fbc;
2188 	zend_execute_data *call;
2189 
2190 	fbc = CACHED_PTR(opline->result.num);
2191 	if (UNEXPECTED(fbc == NULL)) {
2192 		fname = RT_CONSTANT(opline, opline->op2);
2193 		func = zend_hash_find_ex(EG(function_table), Z_STR_P(fname), 1);
2194 		if (UNEXPECTED(func == NULL)) {
2195 			ZEND_VM_TAIL_CALL(zend_undefined_function_helper_SPEC(fname ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
2196 		}
2197 		fbc = Z_FUNC_P(func);
2198 		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!fbc->op_array.run_time_cache)) {
2199 			fbc = init_func_run_time_cache_ex(func);
2200 		}
2201 		CACHE_PTR(opline->result.num, fbc);
2202 	}
2203 
2204 	call = zend_vm_stack_push_call_frame_ex(
2205 		opline->op1.num, ZEND_CALL_NESTED_FUNCTION,
2206 		fbc, opline->extended_value, NULL, NULL);
2207 	call->prev_execute_data = EX(call);
2208 	EX(call) = call;
2209 
2210 	ZEND_VM_NEXT_OPCODE();
2211 }
2212 
2213 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_RECV_INIT_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
2214 {
2215 	USE_OPLINE
2216 	uint32_t arg_num;
2217 	zval *param;
2218 
2219 	ZEND_VM_REPEATABLE_OPCODE
2220 
2221 	arg_num = opline->op1.num;
2222 	param = EX_VAR(opline->result.var);
2223 	if (arg_num > EX_NUM_ARGS()) {
2224 		zval *default_value = RT_CONSTANT(opline, opline->op2);
2225 
2226 		if (Z_OPT_TYPE_P(default_value) == IS_CONSTANT_AST) {
2227 			zval *cache_val = (zval*)CACHE_ADDR(Z_CACHE_SLOT_P(default_value));
2228 
2229 			/* we keep in cache only not refcounted values */
2230 			if (Z_TYPE_P(cache_val) != IS_UNDEF) {
2231 				ZVAL_COPY_VALUE(param, cache_val);
2232 			} else {
2233 				SAVE_OPLINE();
2234 				ZVAL_COPY(param, default_value);
2235 				if (UNEXPECTED(zval_update_constant_ex(param, EX(func)->op_array.scope) != SUCCESS)) {
2236 					zval_ptr_dtor_nogc(param);
2237 					ZVAL_UNDEF(param);
2238 					HANDLE_EXCEPTION();
2239 				}
2240 				if (!Z_REFCOUNTED_P(param)) {
2241 					ZVAL_COPY_VALUE(cache_val, param);
2242 				}
2243 			}
2244 		} else {
2245 			ZVAL_COPY(param, default_value);
2246 		}
2247 	}
2248 
2249 	if (UNEXPECTED((EX(func)->op_array.fn_flags & ZEND_ACC_HAS_TYPE_HINTS) != 0)) {
2250 		zval *default_value = RT_CONSTANT(opline, opline->op2);
2251 
2252 		SAVE_OPLINE();
2253 		if (UNEXPECTED(!zend_verify_arg_type(EX(func), arg_num, param, default_value, CACHE_ADDR(opline->extended_value)) || EG(exception))) {
2254 			HANDLE_EXCEPTION();
2255 		}
2256 	}
2257 
2258 	ZEND_VM_REPEAT_OPCODE(ZEND_RECV_INIT);
2259 	ZEND_VM_NEXT_OPCODE();
2260 }
2261 
2262 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ADD_INTERFACE_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
2263 {
2264 	USE_OPLINE
2265 	zend_class_entry *ce = Z_CE_P(EX_VAR(opline->op1.var));
2266 	zend_class_entry *iface;
2267 
2268 	SAVE_OPLINE();
2269 	iface = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op2)), RT_CONSTANT(opline, opline->op2) + 1, ZEND_FETCH_CLASS_INTERFACE);
2270 	if (UNEXPECTED(iface == NULL)) {
2271 		ZEND_ASSERT(EG(exception));
2272 		HANDLE_EXCEPTION();
2273 	}
2274 
2275 	if (UNEXPECTED((iface->ce_flags & ZEND_ACC_INTERFACE) == 0)) {
2276 		zend_error_noreturn(E_ERROR, "%s cannot implement %s - it is not an interface", ZSTR_VAL(ce->name), ZSTR_VAL(iface->name));
2277 	}
2278 	zend_do_implement_interface(ce, iface);
2279 
2280 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
2281 }
2282 
2283 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_DYNAMIC_CALL_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
2284 {
2285 	USE_OPLINE
2286 	zend_free_op free_op2;
2287 	zval *function_name;
2288 	zend_execute_data *call;
2289 
2290 	SAVE_OPLINE();
2291 	function_name = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
2292 
2293 try_function_name:
2294 	if ((IS_TMP_VAR|IS_VAR) != IS_CONST && EXPECTED(Z_TYPE_P(function_name) == IS_STRING)) {
2295 		call = zend_init_dynamic_call_string(Z_STR_P(function_name), opline->extended_value);
2296 	} else if ((IS_TMP_VAR|IS_VAR) != IS_CONST && EXPECTED(Z_TYPE_P(function_name) == IS_OBJECT)) {
2297 		call = zend_init_dynamic_call_object(function_name, opline->extended_value);
2298 	} else if (EXPECTED(Z_TYPE_P(function_name) == IS_ARRAY)) {
2299 		call = zend_init_dynamic_call_array(Z_ARRVAL_P(function_name), opline->extended_value);
2300 	} else if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(function_name) == IS_REFERENCE)) {
2301 		function_name = Z_REFVAL_P(function_name);
2302 		goto try_function_name;
2303 	} else {
2304 		if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
2305 			GET_OP2_UNDEF_CV(function_name, BP_VAR_R);
2306 			if (UNEXPECTED(EG(exception) != NULL)) {
2307 				HANDLE_EXCEPTION();
2308 			}
2309 		}
2310 		zend_throw_error(NULL, "Function name must be a string");
2311 		call = NULL;
2312 	}
2313 
2314 	zval_ptr_dtor_nogc(free_op2);
2315 	if (UNEXPECTED(!call)) {
2316 		HANDLE_EXCEPTION();
2317 	}
2318 
2319 	if ((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_TMP_VAR)) {
2320 		if (UNEXPECTED(EG(exception))) {
2321 			if (call) {
2322 				 if (call->func->common.fn_flags & ZEND_ACC_CALL_VIA_TRAMPOLINE) {
2323 					zend_string_release_ex(call->func->common.function_name, 0);
2324 					zend_free_trampoline(call->func);
2325 				}
2326 				zend_vm_stack_free_call_frame(call);
2327 			}
2328 			HANDLE_EXCEPTION();
2329 		}
2330 	}
2331 
2332 	call->prev_execute_data = EX(call);
2333 	EX(call) = call;
2334 
2335 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
2336 }
2337 
2338 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_RECV_SPEC_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
2339 {
2340 	USE_OPLINE
2341 	uint32_t arg_num = opline->op1.num;
2342 
2343 	if (UNEXPECTED(arg_num > EX_NUM_ARGS())) {
2344 		SAVE_OPLINE();
2345 		zend_missing_arg_error(execute_data);
2346 		HANDLE_EXCEPTION();
2347 	} else if (UNEXPECTED((EX(func)->op_array.fn_flags & ZEND_ACC_HAS_TYPE_HINTS) != 0)) {
2348 		zval *param = EX_VAR(opline->result.var);
2349 
2350 		SAVE_OPLINE();
2351 		if (UNEXPECTED(!zend_verify_arg_type(EX(func), arg_num, param, NULL, CACHE_ADDR(opline->op2.num)) || EG(exception))) {
2352 			HANDLE_EXCEPTION();
2353 		}
2354 	}
2355 
2356 	ZEND_VM_NEXT_OPCODE();
2357 }
2358 
2359 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_RECV_VARIADIC_SPEC_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
2360 {
2361 	USE_OPLINE
2362 	uint32_t arg_num = opline->op1.num;
2363 	uint32_t arg_count = EX_NUM_ARGS();
2364 	zval *params;
2365 
2366 	SAVE_OPLINE();
2367 
2368 	params = EX_VAR(opline->result.var);
2369 
2370 	if (arg_num <= arg_count) {
2371 		zval *param;
2372 
2373 		array_init_size(params, arg_count - arg_num + 1);
2374 		zend_hash_real_init_packed(Z_ARRVAL_P(params));
2375 		ZEND_HASH_FILL_PACKED(Z_ARRVAL_P(params)) {
2376 			param = EX_VAR_NUM(EX(func)->op_array.last_var + EX(func)->op_array.T);
2377 			if (UNEXPECTED((EX(func)->op_array.fn_flags & ZEND_ACC_HAS_TYPE_HINTS) != 0)) {
2378 				ZEND_ADD_CALL_FLAG(execute_data, ZEND_CALL_FREE_EXTRA_ARGS);
2379 				do {
2380 					zend_verify_arg_type(EX(func), arg_num, param, NULL, CACHE_ADDR(opline->op2.num));
2381 					if (Z_OPT_REFCOUNTED_P(param)) Z_ADDREF_P(param);
2382 					ZEND_HASH_FILL_ADD(param);
2383 					param++;
2384 				} while (++arg_num <= arg_count);
2385 			} else {
2386 				do {
2387 					if (Z_OPT_REFCOUNTED_P(param)) Z_ADDREF_P(param);
2388 					ZEND_HASH_FILL_ADD(param);
2389 					param++;
2390 				} while (++arg_num <= arg_count);
2391 			}
2392 		} ZEND_HASH_FILL_END();
2393 	} else {
2394 		ZVAL_EMPTY_ARRAY(params);
2395 	}
2396 
2397 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
2398 }
2399 
2400 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_DYNAMIC_CALL_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
2401 {
2402 	USE_OPLINE
2403 
2404 	zval *function_name;
2405 	zend_execute_data *call;
2406 
2407 	SAVE_OPLINE();
2408 	function_name = EX_VAR(opline->op2.var);
2409 
2410 try_function_name:
2411 	if (IS_CV != IS_CONST && EXPECTED(Z_TYPE_P(function_name) == IS_STRING)) {
2412 		call = zend_init_dynamic_call_string(Z_STR_P(function_name), opline->extended_value);
2413 	} else if (IS_CV != IS_CONST && EXPECTED(Z_TYPE_P(function_name) == IS_OBJECT)) {
2414 		call = zend_init_dynamic_call_object(function_name, opline->extended_value);
2415 	} else if (EXPECTED(Z_TYPE_P(function_name) == IS_ARRAY)) {
2416 		call = zend_init_dynamic_call_array(Z_ARRVAL_P(function_name), opline->extended_value);
2417 	} else if ((IS_CV & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(function_name) == IS_REFERENCE)) {
2418 		function_name = Z_REFVAL_P(function_name);
2419 		goto try_function_name;
2420 	} else {
2421 		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
2422 			GET_OP2_UNDEF_CV(function_name, BP_VAR_R);
2423 			if (UNEXPECTED(EG(exception) != NULL)) {
2424 				HANDLE_EXCEPTION();
2425 			}
2426 		}
2427 		zend_throw_error(NULL, "Function name must be a string");
2428 		call = NULL;
2429 	}
2430 
2431 	if (UNEXPECTED(!call)) {
2432 		HANDLE_EXCEPTION();
2433 	}
2434 
2435 	if (IS_CV & (IS_VAR|IS_TMP_VAR)) {
2436 		if (UNEXPECTED(EG(exception))) {
2437 			if (call) {
2438 				 if (call->func->common.fn_flags & ZEND_ACC_CALL_VIA_TRAMPOLINE) {
2439 					zend_string_release_ex(call->func->common.function_name, 0);
2440 					zend_free_trampoline(call->func);
2441 				}
2442 				zend_vm_stack_free_call_frame(call);
2443 			}
2444 			HANDLE_EXCEPTION();
2445 		}
2446 	}
2447 
2448 	call->prev_execute_data = EX(call);
2449 	EX(call) = call;
2450 
2451 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
2452 }
2453 
2454 static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BW_NOT_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
2455 {
2456 	USE_OPLINE
2457 
2458 	zval *op1;
2459 
2460 	op1 = RT_CONSTANT(opline, opline->op1);
2461 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
2462 		ZVAL_LONG(EX_VAR(opline->result.var), ~Z_LVAL_P(op1));
2463 		ZEND_VM_NEXT_OPCODE();
2464 	}
2465 
2466 	SAVE_OPLINE();
2467 	bitwise_not_function(EX_VAR(opline->result.var),
2468 		RT_CONSTANT(opline, opline->op1));
2469 
2470 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
2471 }
2472 
2473 static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BOOL_NOT_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
2474 {
2475 	USE_OPLINE
2476 	zval *val;
2477 
2478 
2479 	val = RT_CONSTANT(opline, opline->op1);
2480 	if (Z_TYPE_INFO_P(val) == IS_TRUE) {
2481 		ZVAL_FALSE(EX_VAR(opline->result.var));
2482 	} else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) {
2483 		/* The result and op1 can be the same cv zval */
2484 		const uint32_t orig_val_type = Z_TYPE_INFO_P(val);
2485 		ZVAL_TRUE(EX_VAR(opline->result.var));
2486 		if (IS_CONST == IS_CV && UNEXPECTED(orig_val_type == IS_UNDEF)) {
2487 			SAVE_OPLINE();
2488 			GET_OP1_UNDEF_CV(val, BP_VAR_R);
2489 			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
2490 		}
2491 	} else {
2492 		SAVE_OPLINE();
2493 		ZVAL_BOOL(EX_VAR(opline->result.var), !i_zend_is_true(val));
2494 
2495 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
2496 	}
2497 	ZEND_VM_NEXT_OPCODE();
2498 }
2499 
2500 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ECHO_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
2501 {
2502 	USE_OPLINE
2503 
2504 	zval *z;
2505 
2506 	SAVE_OPLINE();
2507 	z = RT_CONSTANT(opline, opline->op1);
2508 
2509 	if (Z_TYPE_P(z) == IS_STRING) {
2510 		zend_string *str = Z_STR_P(z);
2511 
2512 		if (ZSTR_LEN(str) != 0) {
2513 			zend_write(ZSTR_VAL(str), ZSTR_LEN(str));
2514 		}
2515 	} else {
2516 		zend_string *str = zval_get_string_func(z);
2517 
2518 		if (ZSTR_LEN(str) != 0) {
2519 			zend_write(ZSTR_VAL(str), ZSTR_LEN(str));
2520 		} else if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(z) == IS_UNDEF)) {
2521 			GET_OP1_UNDEF_CV(z, BP_VAR_R);
2522 		}
2523 		zend_string_release_ex(str, 0);
2524 	}
2525 
2526 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
2527 }
2528 
2529 static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_JMPZ_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
2530 {
2531 	USE_OPLINE
2532 
2533 	zval *val;
2534 
2535 	val = RT_CONSTANT(opline, opline->op1);
2536 
2537 	if (Z_TYPE_INFO_P(val) == IS_TRUE) {
2538 		ZEND_VM_NEXT_OPCODE();
2539 	} else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) {
2540 		if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) {
2541 			SAVE_OPLINE();
2542 			GET_OP1_UNDEF_CV(val, BP_VAR_R);
2543 			if (UNEXPECTED(EG(exception))) {
2544 				HANDLE_EXCEPTION();
2545 			}
2546 		}
2547 		ZEND_VM_JMP_EX(OP_JMP_ADDR(opline, opline->op2), 0);
2548 	}
2549 
2550 	SAVE_OPLINE();
2551 	if (i_zend_is_true(val)) {
2552 		opline++;
2553 	} else {
2554 		opline = OP_JMP_ADDR(opline, opline->op2);
2555 	}
2556 
2557 	ZEND_VM_JMP(opline);
2558 }
2559 
2560 static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_JMPNZ_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
2561 {
2562 	USE_OPLINE
2563 
2564 	zval *val;
2565 
2566 	val = RT_CONSTANT(opline, opline->op1);
2567 
2568 	if (Z_TYPE_INFO_P(val) == IS_TRUE) {
2569 		ZEND_VM_JMP_EX(OP_JMP_ADDR(opline, opline->op2), 0);
2570 	} else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) {
2571 		if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) {
2572 			SAVE_OPLINE();
2573 			GET_OP1_UNDEF_CV(val, BP_VAR_R);
2574 			if (UNEXPECTED(EG(exception))) {
2575 				HANDLE_EXCEPTION();
2576 			}
2577 		}
2578 		ZEND_VM_NEXT_OPCODE();
2579 	}
2580 
2581 	SAVE_OPLINE();
2582 	if (i_zend_is_true(val)) {
2583 		opline = OP_JMP_ADDR(opline, opline->op2);
2584 	} else {
2585 		opline++;
2586 	}
2587 
2588 	ZEND_VM_JMP(opline);
2589 }
2590 
2591 static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_JMPZNZ_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
2592 {
2593 	USE_OPLINE
2594 
2595 	zval *val;
2596 
2597 	val = RT_CONSTANT(opline, opline->op1);
2598 
2599 	if (EXPECTED(Z_TYPE_INFO_P(val) == IS_TRUE)) {
2600 		ZEND_VM_SET_RELATIVE_OPCODE(opline, opline->extended_value);
2601 		ZEND_VM_CONTINUE();
2602 	} else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) {
2603 		if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) {
2604 			SAVE_OPLINE();
2605 			GET_OP1_UNDEF_CV(val, BP_VAR_R);
2606 			if (UNEXPECTED(EG(exception))) {
2607 				HANDLE_EXCEPTION();
2608 			}
2609 		}
2610 		ZEND_VM_JMP_EX(OP_JMP_ADDR(opline, opline->op2), 0);
2611 	}
2612 
2613 	SAVE_OPLINE();
2614 	if (i_zend_is_true(val)) {
2615 		opline = ZEND_OFFSET_TO_OPLINE(opline, opline->extended_value);
2616 	} else {
2617 		opline = OP_JMP_ADDR(opline, opline->op2);
2618 	}
2619 
2620 	ZEND_VM_JMP(opline);
2621 }
2622 
2623 static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_JMPZ_EX_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
2624 {
2625 	USE_OPLINE
2626 
2627 	zval *val;
2628 	int ret;
2629 
2630 	val = RT_CONSTANT(opline, opline->op1);
2631 
2632 	if (Z_TYPE_INFO_P(val) == IS_TRUE) {
2633 		ZVAL_TRUE(EX_VAR(opline->result.var));
2634 		ZEND_VM_NEXT_OPCODE();
2635 	} else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) {
2636 		ZVAL_FALSE(EX_VAR(opline->result.var));
2637 		if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) {
2638 			SAVE_OPLINE();
2639 			GET_OP1_UNDEF_CV(val, BP_VAR_R);
2640 			if (UNEXPECTED(EG(exception))) {
2641 				HANDLE_EXCEPTION();
2642 			}
2643 		}
2644 		ZEND_VM_JMP_EX(OP_JMP_ADDR(opline, opline->op2), 0);
2645 	}
2646 
2647 	SAVE_OPLINE();
2648 	ret = i_zend_is_true(val);
2649 
2650 	if (ret) {
2651 		ZVAL_TRUE(EX_VAR(opline->result.var));
2652 		opline++;
2653 	} else {
2654 		ZVAL_FALSE(EX_VAR(opline->result.var));
2655 		opline = OP_JMP_ADDR(opline, opline->op2);
2656 	}
2657 	ZEND_VM_JMP(opline);
2658 }
2659 
2660 static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_JMPNZ_EX_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
2661 {
2662 	USE_OPLINE
2663 
2664 	zval *val;
2665 	int ret;
2666 
2667 	val = RT_CONSTANT(opline, opline->op1);
2668 
2669 	if (Z_TYPE_INFO_P(val) == IS_TRUE) {
2670 		ZVAL_TRUE(EX_VAR(opline->result.var));
2671 		ZEND_VM_JMP_EX(OP_JMP_ADDR(opline, opline->op2), 0);
2672 	} else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) {
2673 		ZVAL_FALSE(EX_VAR(opline->result.var));
2674 		if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) {
2675 			SAVE_OPLINE();
2676 			GET_OP1_UNDEF_CV(val, BP_VAR_R);
2677 			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
2678 		} else {
2679 			ZEND_VM_NEXT_OPCODE();
2680 		}
2681 	}
2682 
2683 	SAVE_OPLINE();
2684 	ret = i_zend_is_true(val);
2685 
2686 	if (ret) {
2687 		ZVAL_TRUE(EX_VAR(opline->result.var));
2688 		opline = OP_JMP_ADDR(opline, opline->op2);
2689 	} else {
2690 		ZVAL_FALSE(EX_VAR(opline->result.var));
2691 		opline++;
2692 	}
2693 	ZEND_VM_JMP(opline);
2694 }
2695 
2696 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_RETURN_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
2697 {
2698 	USE_OPLINE
2699 	zval *retval_ptr;
2700 	zval *return_value;
2701 	zend_free_op free_op1;
2702 
2703 	retval_ptr = RT_CONSTANT(opline, opline->op1);
2704 	return_value = EX(return_value);
2705 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(retval_ptr) == IS_UNDEF)) {
2706 		SAVE_OPLINE();
2707 		retval_ptr = GET_OP1_UNDEF_CV(retval_ptr, BP_VAR_R);
2708 		if (return_value) {
2709 			ZVAL_NULL(return_value);
2710 		}
2711 	} else if (!return_value) {
2712 		if (IS_CONST & (IS_VAR|IS_TMP_VAR)) {
2713 			if (Z_REFCOUNTED_P(free_op1) && !Z_DELREF_P(free_op1)) {
2714 				SAVE_OPLINE();
2715 				rc_dtor_func(Z_COUNTED_P(free_op1));
2716 			}
2717 		}
2718 	} else {
2719 		if ((IS_CONST & (IS_CONST|IS_TMP_VAR))) {
2720 			ZVAL_COPY_VALUE(return_value, retval_ptr);
2721 			if (IS_CONST == IS_CONST) {
2722 				if (UNEXPECTED(Z_OPT_REFCOUNTED_P(return_value))) {
2723 					Z_ADDREF_P(return_value);
2724 				}
2725 			}
2726 		} else if (IS_CONST == IS_CV) {
2727 			if (Z_OPT_REFCOUNTED_P(retval_ptr)) {
2728 				if (EXPECTED(!Z_OPT_ISREF_P(retval_ptr))) {
2729 					ZVAL_COPY_VALUE(return_value, retval_ptr);
2730 					if (EXPECTED(!(EX_CALL_INFO() & ZEND_CALL_CODE))) {
2731 						zend_refcounted *ref = Z_COUNTED_P(retval_ptr);
2732 						if (GC_MAY_LEAK(ref)) {
2733 							gc_possible_root(ref);
2734 						}
2735 						ZVAL_NULL(retval_ptr);
2736 					} else {
2737 						Z_ADDREF_P(return_value);
2738 					}
2739 				} else {
2740 					retval_ptr = Z_REFVAL_P(retval_ptr);
2741 					ZVAL_COPY(return_value, retval_ptr);
2742 				}
2743 			} else {
2744 				ZVAL_COPY_VALUE(return_value, retval_ptr);
2745 			}
2746 		} else /* if (IS_CONST == IS_VAR) */ {
2747 			if (UNEXPECTED(Z_ISREF_P(retval_ptr))) {
2748 				zend_refcounted *ref = Z_COUNTED_P(retval_ptr);
2749 
2750 				retval_ptr = Z_REFVAL_P(retval_ptr);
2751 				ZVAL_COPY_VALUE(return_value, retval_ptr);
2752 				if (UNEXPECTED(GC_DELREF(ref) == 0)) {
2753 					efree_size(ref, sizeof(zend_reference));
2754 				} else if (Z_OPT_REFCOUNTED_P(retval_ptr)) {
2755 					Z_ADDREF_P(retval_ptr);
2756 				}
2757 			} else {
2758 				ZVAL_COPY_VALUE(return_value, retval_ptr);
2759 			}
2760 		}
2761 	}
2762 	ZEND_VM_TAIL_CALL(zend_leave_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
2763 }
2764 
2765 static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_RETURN_BY_REF_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
2766 {
2767 	USE_OPLINE
2768 	zval *retval_ptr;
2769 
2770 
2771 	SAVE_OPLINE();
2772 
2773 	do {
2774 		if ((IS_CONST & (IS_CONST|IS_TMP_VAR)) ||
2775 		    (IS_CONST == IS_VAR && opline->extended_value == ZEND_RETURNS_VALUE)) {
2776 			/* Not supposed to happen, but we'll allow it */
2777 			zend_error(E_NOTICE, "Only variable references should be returned by reference");
2778 
2779 			retval_ptr = RT_CONSTANT(opline, opline->op1);
2780 			if (!EX(return_value)) {
2781 
2782 			} else {
2783 				if (IS_CONST == IS_VAR && UNEXPECTED(Z_ISREF_P(retval_ptr))) {
2784 					ZVAL_COPY_VALUE(EX(return_value), retval_ptr);
2785 					break;
2786 				}
2787 
2788 				ZVAL_NEW_REF(EX(return_value), retval_ptr);
2789 				if (IS_CONST == IS_CONST) {
2790 					Z_TRY_ADDREF_P(retval_ptr);
2791 				}
2792 			}
2793 			break;
2794 		}
2795 
2796 		retval_ptr = NULL;
2797 
2798 		if (IS_CONST == IS_VAR) {
2799 			if (retval_ptr == &EG(uninitialized_zval) ||
2800 			    (opline->extended_value == ZEND_RETURNS_FUNCTION && !Z_ISREF_P(retval_ptr))) {
2801 				zend_error(E_NOTICE, "Only variable references should be returned by reference");
2802 				if (EX(return_value)) {
2803 					ZVAL_NEW_REF(EX(return_value), retval_ptr);
2804 				} else {
2805 
2806 				}
2807 				break;
2808 			}
2809 		}
2810 
2811 		if (EX(return_value)) {
2812 			if (Z_ISREF_P(retval_ptr)) {
2813 				Z_ADDREF_P(retval_ptr);
2814 			} else {
2815 				ZVAL_MAKE_REF_EX(retval_ptr, 2);
2816 			}
2817 			ZVAL_REF(EX(return_value), Z_REF_P(retval_ptr));
2818 		}
2819 
2820 	} while (0);
2821 
2822 	ZEND_VM_TAIL_CALL(zend_leave_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
2823 }
2824 
2825 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_GENERATOR_RETURN_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
2826 {
2827 	USE_OPLINE
2828 	zval *retval;
2829 
2830 
2831 	zend_generator *generator = zend_get_running_generator(EXECUTE_DATA_C);
2832 
2833 	SAVE_OPLINE();
2834 	retval = RT_CONSTANT(opline, opline->op1);
2835 
2836 	/* Copy return value into generator->retval */
2837 	if ((IS_CONST & (IS_CONST|IS_TMP_VAR))) {
2838 		ZVAL_COPY_VALUE(&generator->retval, retval);
2839 		if (IS_CONST == IS_CONST) {
2840 			if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->retval))) {
2841 				Z_ADDREF(generator->retval);
2842 			}
2843 		}
2844 	} else if (IS_CONST == IS_CV) {
2845 		ZVAL_COPY_DEREF(&generator->retval, retval);
2846 	} else /* if (IS_CONST == IS_VAR) */ {
2847 		if (UNEXPECTED(Z_ISREF_P(retval))) {
2848 			zend_refcounted *ref = Z_COUNTED_P(retval);
2849 
2850 			retval = Z_REFVAL_P(retval);
2851 			ZVAL_COPY_VALUE(&generator->retval, retval);
2852 			if (UNEXPECTED(GC_DELREF(ref) == 0)) {
2853 				efree_size(ref, sizeof(zend_reference));
2854 			} else if (Z_OPT_REFCOUNTED_P(retval)) {
2855 				Z_ADDREF_P(retval);
2856 			}
2857 		} else {
2858 			ZVAL_COPY_VALUE(&generator->retval, retval);
2859 		}
2860 	}
2861 
2862 	/* Close the generator to free up resources */
2863 	zend_generator_close(generator, 1);
2864 
2865 	/* Pass execution back to handling code */
2866 	ZEND_VM_RETURN();
2867 }
2868 
2869 static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_THROW_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
2870 {
2871 	USE_OPLINE
2872 	zval *value;
2873 
2874 
2875 	SAVE_OPLINE();
2876 	value = RT_CONSTANT(opline, opline->op1);
2877 
2878 	do {
2879 		if (IS_CONST == IS_CONST || UNEXPECTED(Z_TYPE_P(value) != IS_OBJECT)) {
2880 			if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
2881 				value = Z_REFVAL_P(value);
2882 				if (EXPECTED(Z_TYPE_P(value) == IS_OBJECT)) {
2883 					break;
2884 				}
2885 			}
2886 			if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
2887 				GET_OP1_UNDEF_CV(value, BP_VAR_R);
2888 				if (UNEXPECTED(EG(exception) != NULL)) {
2889 					HANDLE_EXCEPTION();
2890 				}
2891 			}
2892 			zend_throw_error(NULL, "Can only throw objects");
2893 
2894 			HANDLE_EXCEPTION();
2895 		}
2896 	} while (0);
2897 
2898 	zend_exception_save();
2899 	if (IS_CONST != IS_TMP_VAR) {
2900 		Z_TRY_ADDREF_P(value);
2901 	}
2902 
2903 	zend_throw_exception_object(value);
2904 	zend_exception_restore();
2905 
2906 	HANDLE_EXCEPTION();
2907 }
2908 
2909 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_CATCH_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
2910 {
2911 	USE_OPLINE
2912 	zend_class_entry *ce, *catch_ce;
2913 	zend_object *exception;
2914 	zval *ex;
2915 
2916 	SAVE_OPLINE();
2917 	/* Check whether an exception has been thrown, if not, jump over code */
2918 	zend_exception_restore();
2919 	if (EG(exception) == NULL) {
2920 		ZEND_VM_JMP_EX(OP_JMP_ADDR(opline, opline->op2), 0);
2921 	}
2922 	catch_ce = CACHED_PTR(opline->extended_value & ~ZEND_LAST_CATCH);
2923 	if (UNEXPECTED(catch_ce == NULL)) {
2924 		catch_ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), RT_CONSTANT(opline, opline->op1) + 1, ZEND_FETCH_CLASS_NO_AUTOLOAD);
2925 
2926 		CACHE_PTR(opline->extended_value & ~ZEND_LAST_CATCH, catch_ce);
2927 	}
2928 	ce = EG(exception)->ce;
2929 
2930 #ifdef HAVE_DTRACE
2931 	if (DTRACE_EXCEPTION_CAUGHT_ENABLED()) {
2932 		DTRACE_EXCEPTION_CAUGHT((char *)ce->name);
2933 	}
2934 #endif /* HAVE_DTRACE */
2935 
2936 	if (ce != catch_ce) {
2937 		if (!catch_ce || !instanceof_function(ce, catch_ce)) {
2938 			if (opline->extended_value & ZEND_LAST_CATCH) {
2939 				zend_rethrow_exception(execute_data);
2940 				HANDLE_EXCEPTION();
2941 			}
2942 			ZEND_VM_JMP_EX(OP_JMP_ADDR(opline, opline->op2), 0);
2943 		}
2944 	}
2945 
2946 	exception = EG(exception);
2947 	ex = EX_VAR(opline->result.var);
2948 	if (UNEXPECTED(Z_ISREF_P(ex))) {
2949 		ex = Z_REFVAL_P(ex);
2950 	}
2951 	zval_ptr_dtor(ex);
2952 	ZVAL_OBJ(ex, EG(exception));
2953 	if (UNEXPECTED(EG(exception) != exception)) {
2954 		GC_ADDREF(EG(exception));
2955 		HANDLE_EXCEPTION();
2956 	} else {
2957 		EG(exception) = NULL;
2958 		ZEND_VM_NEXT_OPCODE();
2959 	}
2960 }
2961 
2962 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SEND_VAL_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
2963 {
2964 	USE_OPLINE
2965 	zval *value, *arg;
2966 
2967 
2968 	value = RT_CONSTANT(opline, opline->op1);
2969 	arg = ZEND_CALL_VAR(EX(call), opline->result.var);
2970 	ZVAL_COPY_VALUE(arg, value);
2971 	if (IS_CONST == IS_CONST) {
2972 		if (UNEXPECTED(Z_OPT_REFCOUNTED_P(arg))) {
2973 			Z_ADDREF_P(arg);
2974 		}
2975 	}
2976 	ZEND_VM_NEXT_OPCODE();
2977 }
2978 
2979 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SEND_VAL_EX_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
2980 {
2981 	USE_OPLINE
2982 	zval *value, *arg;
2983 
2984 	uint32_t arg_num = opline->op2.num;
2985 
2986 	if (EXPECTED(0)) {
2987 		if (QUICK_ARG_MUST_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
2988 			goto send_val_by_ref;
2989 		}
2990 	} else if (ARG_MUST_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
2991 send_val_by_ref:
2992 		ZEND_VM_TAIL_CALL(zend_cannot_pass_by_ref_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
2993 	}
2994 	value = RT_CONSTANT(opline, opline->op1);
2995 	arg = ZEND_CALL_VAR(EX(call), opline->result.var);
2996 	ZVAL_COPY_VALUE(arg, value);
2997 	if (IS_CONST == IS_CONST) {
2998 		if (UNEXPECTED(Z_OPT_REFCOUNTED_P(arg))) {
2999 			Z_ADDREF_P(arg);
3000 		}
3001 	}
3002 	ZEND_VM_NEXT_OPCODE();
3003 }
3004 
3005 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SEND_VAL_EX_SPEC_CONST_QUICK_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
3006 {
3007 	USE_OPLINE
3008 	zval *value, *arg;
3009 
3010 	uint32_t arg_num = opline->op2.num;
3011 
3012 	if (EXPECTED(1)) {
3013 		if (QUICK_ARG_MUST_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
3014 			goto send_val_by_ref;
3015 		}
3016 	} else if (ARG_MUST_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
3017 send_val_by_ref:
3018 		ZEND_VM_TAIL_CALL(zend_cannot_pass_by_ref_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
3019 	}
3020 	value = RT_CONSTANT(opline, opline->op1);
3021 	arg = ZEND_CALL_VAR(EX(call), opline->result.var);
3022 	ZVAL_COPY_VALUE(arg, value);
3023 	if (IS_CONST == IS_CONST) {
3024 		if (UNEXPECTED(Z_OPT_REFCOUNTED_P(arg))) {
3025 			Z_ADDREF_P(arg);
3026 		}
3027 	}
3028 	ZEND_VM_NEXT_OPCODE();
3029 }
3030 
3031 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SEND_USER_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
3032 {
3033 	USE_OPLINE
3034 	zval *arg, *param;
3035 
3036 
3037 	SAVE_OPLINE();
3038 	arg = RT_CONSTANT(opline, opline->op1);
3039 	param = ZEND_CALL_VAR(EX(call), opline->result.var);
3040 
3041 	if (UNEXPECTED(ARG_MUST_BE_SENT_BY_REF(EX(call)->func, opline->op2.num))) {
3042 		zend_param_must_be_ref(EX(call)->func, opline->op2.num);
3043 	}
3044 
3045 	ZVAL_COPY(param, arg);
3046 
3047 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
3048 }
3049 
3050 static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BOOL_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
3051 {
3052 	USE_OPLINE
3053 	zval *val;
3054 
3055 
3056 	val = RT_CONSTANT(opline, opline->op1);
3057 	if (Z_TYPE_INFO_P(val) == IS_TRUE) {
3058 		ZVAL_TRUE(EX_VAR(opline->result.var));
3059 	} else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) {
3060 		/* The result and op1 can be the same cv zval */
3061 		const uint32_t orig_val_type = Z_TYPE_INFO_P(val);
3062 		ZVAL_FALSE(EX_VAR(opline->result.var));
3063 		if (IS_CONST == IS_CV && UNEXPECTED(orig_val_type == IS_UNDEF)) {
3064 			SAVE_OPLINE();
3065 			GET_OP1_UNDEF_CV(val, BP_VAR_R);
3066 			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
3067 		}
3068 	} else {
3069 		SAVE_OPLINE();
3070 		ZVAL_BOOL(EX_VAR(opline->result.var), i_zend_is_true(val));
3071 
3072 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
3073 	}
3074 	ZEND_VM_NEXT_OPCODE();
3075 }
3076 
3077 static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_CLONE_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
3078 {
3079 	USE_OPLINE
3080 
3081 	zval *obj;
3082 	zend_class_entry *ce, *scope;
3083 	zend_function *clone;
3084 	zend_object_clone_obj_t clone_call;
3085 
3086 	SAVE_OPLINE();
3087 	obj = RT_CONSTANT(opline, opline->op1);
3088 
3089 	if (IS_CONST == IS_UNUSED && UNEXPECTED(Z_TYPE_P(obj) == IS_UNDEF)) {
3090 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
3091 	}
3092 
3093 	do {
3094 		if (IS_CONST == IS_CONST ||
3095 		    (IS_CONST != IS_UNUSED && UNEXPECTED(Z_TYPE_P(obj) != IS_OBJECT))) {
3096 		    if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(obj)) {
3097 				obj = Z_REFVAL_P(obj);
3098 				if (EXPECTED(Z_TYPE_P(obj) == IS_OBJECT)) {
3099 					break;
3100 				}
3101 			}
3102 			ZVAL_UNDEF(EX_VAR(opline->result.var));
3103 			if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(obj) == IS_UNDEF)) {
3104 				GET_OP1_UNDEF_CV(obj, BP_VAR_R);
3105 				if (UNEXPECTED(EG(exception) != NULL)) {
3106 					HANDLE_EXCEPTION();
3107 				}
3108 			}
3109 			zend_throw_error(NULL, "__clone method called on non-object");
3110 
3111 			HANDLE_EXCEPTION();
3112 		}
3113 	} while (0);
3114 
3115 	ce = Z_OBJCE_P(obj);
3116 	clone = ce->clone;
3117 	clone_call = Z_OBJ_HT_P(obj)->clone_obj;
3118 	if (UNEXPECTED(clone_call == NULL)) {
3119 		zend_throw_error(NULL, "Trying to clone an uncloneable object of class %s", ZSTR_VAL(ce->name));
3120 
3121 		ZVAL_UNDEF(EX_VAR(opline->result.var));
3122 		HANDLE_EXCEPTION();
3123 	}
3124 
3125 	if (clone) {
3126 		if (clone->op_array.fn_flags & ZEND_ACC_PRIVATE) {
3127 			/* Ensure that if we're calling a private function, we're allowed to do so.
3128 			 */
3129 			scope = EX(func)->op_array.scope;
3130 			if (!zend_check_private(clone, scope, clone->common.function_name)) {
3131 				zend_throw_error(NULL, "Call to private %s::__clone() from context '%s'", ZSTR_VAL(clone->common.scope->name), scope ? ZSTR_VAL(scope->name) : "");
3132 
3133 				ZVAL_UNDEF(EX_VAR(opline->result.var));
3134 				HANDLE_EXCEPTION();
3135 			}
3136 		} else if ((clone->common.fn_flags & ZEND_ACC_PROTECTED)) {
3137 			/* Ensure that if we're calling a protected function, we're allowed to do so.
3138 			 */
3139 			scope = EX(func)->op_array.scope;
3140 			if (UNEXPECTED(!zend_check_protected(zend_get_function_root_class(clone), scope))) {
3141 				zend_throw_error(NULL, "Call to protected %s::__clone() from context '%s'", ZSTR_VAL(clone->common.scope->name), scope ? ZSTR_VAL(scope->name) : "");
3142 
3143 				ZVAL_UNDEF(EX_VAR(opline->result.var));
3144 				HANDLE_EXCEPTION();
3145 			}
3146 		}
3147 	}
3148 
3149 	ZVAL_OBJ(EX_VAR(opline->result.var), clone_call(obj));
3150 
3151 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
3152 }
3153 
3154 static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_CAST_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
3155 {
3156 	USE_OPLINE
3157 
3158 	zval *expr;
3159 	zval *result = EX_VAR(opline->result.var);
3160 	HashTable *ht;
3161 
3162 	SAVE_OPLINE();
3163 	expr = RT_CONSTANT(opline, opline->op1);
3164 
3165 	switch (opline->extended_value) {
3166 		case IS_NULL:
3167 			ZVAL_NULL(result);
3168 			break;
3169 		case _IS_BOOL:
3170 			ZVAL_BOOL(result, zend_is_true(expr));
3171 			break;
3172 		case IS_LONG:
3173 			ZVAL_LONG(result, zval_get_long(expr));
3174 			break;
3175 		case IS_DOUBLE:
3176 			ZVAL_DOUBLE(result, zval_get_double(expr));
3177 			break;
3178 		case IS_STRING:
3179 			ZVAL_STR(result, zval_get_string(expr));
3180 			break;
3181 		default:
3182 			if (IS_CONST & (IS_VAR|IS_CV)) {
3183 				ZVAL_DEREF(expr);
3184 			}
3185 			/* If value is already of correct type, return it directly */
3186 			if (Z_TYPE_P(expr) == opline->extended_value) {
3187 				ZVAL_COPY_VALUE(result, expr);
3188 				if (IS_CONST == IS_CONST) {
3189 					if (UNEXPECTED(Z_OPT_REFCOUNTED_P(result))) Z_ADDREF_P(result);
3190 				} else if (IS_CONST != IS_TMP_VAR) {
3191 					if (Z_OPT_REFCOUNTED_P(result)) Z_ADDREF_P(result);
3192 				}
3193 
3194 				ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
3195 			}
3196 
3197 			if (opline->extended_value == IS_ARRAY) {
3198 				if (IS_CONST == IS_CONST || Z_TYPE_P(expr) != IS_OBJECT || Z_OBJCE_P(expr) == zend_ce_closure) {
3199 					if (Z_TYPE_P(expr) != IS_NULL) {
3200 						ZVAL_ARR(result, zend_new_array(1));
3201 						expr = zend_hash_index_add_new(Z_ARRVAL_P(result), 0, expr);
3202 						if (IS_CONST == IS_CONST) {
3203 							if (UNEXPECTED(Z_OPT_REFCOUNTED_P(expr))) Z_ADDREF_P(expr);
3204 						} else {
3205 							if (Z_OPT_REFCOUNTED_P(expr)) Z_ADDREF_P(expr);
3206 						}
3207 					} else {
3208 						ZVAL_EMPTY_ARRAY(result);
3209 					}
3210 				} else if (Z_OBJ_HT_P(expr)->get_properties) {
3211 					HashTable *obj_ht = Z_OBJ_HT_P(expr)->get_properties(expr);
3212 					if (obj_ht) {
3213 						/* fast copy */
3214 						obj_ht = zend_proptable_to_symtable(obj_ht,
3215 							(Z_OBJCE_P(expr)->default_properties_count ||
3216 							 Z_OBJ_P(expr)->handlers != &std_object_handlers ||
3217 							 GC_IS_RECURSIVE(obj_ht)));
3218 						ZVAL_ARR(result, obj_ht);
3219 					} else {
3220 						ZVAL_EMPTY_ARRAY(result);
3221 					}
3222 				} else {
3223 					ZVAL_COPY_VALUE(result, expr);
3224 					Z_ADDREF_P(result);
3225 					convert_to_array(result);
3226 				}
3227 			} else {
3228 				ZVAL_OBJ(result, zend_objects_new(zend_standard_class_def));
3229 				if (Z_TYPE_P(expr) == IS_ARRAY) {
3230 					ht = zend_symtable_to_proptable(Z_ARR_P(expr));
3231 					if (GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) {
3232 						/* TODO: try not to duplicate immutable arrays as well ??? */
3233 						ht = zend_array_dup(ht);
3234 					}
3235 					Z_OBJ_P(result)->properties = ht;
3236 				} else if (Z_TYPE_P(expr) != IS_NULL) {
3237 					Z_OBJ_P(result)->properties = ht = zend_new_array(1);
3238 					expr = zend_hash_add_new(ht, ZSTR_KNOWN(ZEND_STR_SCALAR), expr);
3239 					if (IS_CONST == IS_CONST) {
3240 						if (UNEXPECTED(Z_OPT_REFCOUNTED_P(expr))) Z_ADDREF_P(expr);
3241 					} else {
3242 						if (Z_OPT_REFCOUNTED_P(expr)) Z_ADDREF_P(expr);
3243 					}
3244 				}
3245 			}
3246 	}
3247 
3248 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
3249 }
3250 
3251 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INCLUDE_OR_EVAL_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
3252 {
3253 	USE_OPLINE
3254 	zend_op_array *new_op_array;
3255 
3256 	zval *inc_filename;
3257 
3258 	SAVE_OPLINE();
3259 	inc_filename = RT_CONSTANT(opline, opline->op1);
3260 	new_op_array = zend_include_or_eval(inc_filename, opline->extended_value);
3261 
3262 	if (UNEXPECTED(EG(exception) != NULL)) {
3263 		if (new_op_array != ZEND_FAKE_OP_ARRAY && new_op_array != NULL) {
3264 			destroy_op_array(new_op_array);
3265 			efree_size(new_op_array, sizeof(zend_op_array));
3266 		}
3267 		UNDEF_RESULT();
3268 		HANDLE_EXCEPTION();
3269 	} else if (new_op_array == ZEND_FAKE_OP_ARRAY) {
3270 		if (RETURN_VALUE_USED(opline)) {
3271 			ZVAL_TRUE(EX_VAR(opline->result.var));
3272 		}
3273 	} else if (EXPECTED(new_op_array != NULL)) {
3274 		zval *return_value = NULL;
3275 		zend_execute_data *call;
3276 
3277 		if (RETURN_VALUE_USED(opline)) {
3278 			return_value = EX_VAR(opline->result.var);
3279 			ZVAL_NULL(return_value);
3280 		}
3281 
3282 		new_op_array->scope = EX(func)->op_array.scope;
3283 
3284 		call = zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_CODE | ZEND_CALL_HAS_SYMBOL_TABLE,
3285 			(zend_function*)new_op_array, 0,
3286 			Z_TYPE(EX(This)) != IS_OBJECT ? Z_CE(EX(This)) : NULL,
3287 			Z_TYPE(EX(This)) == IS_OBJECT ? Z_OBJ(EX(This)) : NULL);
3288 
3289 		if (EX_CALL_INFO() & ZEND_CALL_HAS_SYMBOL_TABLE) {
3290 			call->symbol_table = EX(symbol_table);
3291 		} else {
3292 			call->symbol_table = zend_rebuild_symbol_table();
3293 		}
3294 
3295 		call->prev_execute_data = execute_data;
3296 		i_init_code_execute_data(call, new_op_array, return_value);
3297 		if (EXPECTED(zend_execute_ex == execute_ex)) {
3298 			ZEND_VM_ENTER();
3299 		} else {
3300 			ZEND_ADD_CALL_FLAG(call, ZEND_CALL_TOP);
3301 			zend_execute_ex(call);
3302 			zend_vm_stack_free_call_frame(call);
3303 		}
3304 
3305 		destroy_op_array(new_op_array);
3306 		efree_size(new_op_array, sizeof(zend_op_array));
3307 		if (UNEXPECTED(EG(exception) != NULL)) {
3308 			zend_rethrow_exception(execute_data);
3309 			UNDEF_RESULT();
3310 			HANDLE_EXCEPTION();
3311 		}
3312 	} else if (RETURN_VALUE_USED(opline)) {
3313 		ZVAL_FALSE(EX_VAR(opline->result.var));
3314 	}
3315 	ZEND_VM_NEXT_OPCODE();
3316 }
3317 
3318 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FE_RESET_R_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
3319 {
3320 	USE_OPLINE
3321 
3322 	zval *array_ptr, *result;
3323 
3324 	SAVE_OPLINE();
3325 
3326 	array_ptr = RT_CONSTANT(opline, opline->op1);
3327 	if (EXPECTED(Z_TYPE_P(array_ptr) == IS_ARRAY)) {
3328 		result = EX_VAR(opline->result.var);
3329 		ZVAL_COPY_VALUE(result, array_ptr);
3330 		if (IS_CONST != IS_TMP_VAR && Z_OPT_REFCOUNTED_P(result)) {
3331 			Z_ADDREF_P(array_ptr);
3332 		}
3333 		Z_FE_POS_P(result) = 0;
3334 
3335 		ZEND_VM_NEXT_OPCODE();
3336 	} else if (IS_CONST != IS_CONST && EXPECTED(Z_TYPE_P(array_ptr) == IS_OBJECT)) {
3337 		if (!Z_OBJCE_P(array_ptr)->get_iterator) {
3338 			result = EX_VAR(opline->result.var);
3339 			ZVAL_COPY_VALUE(result, array_ptr);
3340 			if (IS_CONST != IS_TMP_VAR) {
3341 				Z_ADDREF_P(array_ptr);
3342 			}
3343 			if (Z_OBJ_P(array_ptr)->properties
3344 			 && UNEXPECTED(GC_REFCOUNT(Z_OBJ_P(array_ptr)->properties) > 1)) {
3345 				if (EXPECTED(!(GC_FLAGS(Z_OBJ_P(array_ptr)->properties) & IS_ARRAY_IMMUTABLE))) {
3346 					GC_DELREF(Z_OBJ_P(array_ptr)->properties);
3347 				}
3348 				Z_OBJ_P(array_ptr)->properties = zend_array_dup(Z_OBJ_P(array_ptr)->properties);
3349 			}
3350 			Z_FE_ITER_P(EX_VAR(opline->result.var)) = zend_hash_iterator_add(Z_OBJPROP_P(array_ptr), 0);
3351 
3352 			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
3353 		} else {
3354 			zend_bool is_empty = zend_fe_reset_iterator(array_ptr, 0 OPLINE_CC EXECUTE_DATA_CC);
3355 
3356 			if (UNEXPECTED(EG(exception))) {
3357 				HANDLE_EXCEPTION();
3358 			} else if (is_empty) {
3359 				ZEND_VM_JMP_EX(OP_JMP_ADDR(opline, opline->op2), 0);
3360 			} else {
3361 				ZEND_VM_NEXT_OPCODE();
3362 			}
3363 		}
3364 	} else {
3365 		zend_error(E_WARNING, "Invalid argument supplied for foreach()");
3366 		ZVAL_UNDEF(EX_VAR(opline->result.var));
3367 		Z_FE_ITER_P(EX_VAR(opline->result.var)) = (uint32_t)-1;
3368 
3369 		ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
3370 	}
3371 }
3372 
3373 static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FE_RESET_RW_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
3374 {
3375 	USE_OPLINE
3376 
3377 	zval *array_ptr, *array_ref;
3378 
3379 	SAVE_OPLINE();
3380 
3381 	if (IS_CONST == IS_VAR || IS_CONST == IS_CV) {
3382 		array_ref = array_ptr = NULL;
3383 		if (Z_ISREF_P(array_ref)) {
3384 			array_ptr = Z_REFVAL_P(array_ref);
3385 		}
3386 	} else {
3387 		array_ref = array_ptr = RT_CONSTANT(opline, opline->op1);
3388 	}
3389 
3390 	if (EXPECTED(Z_TYPE_P(array_ptr) == IS_ARRAY)) {
3391 		if (IS_CONST == IS_VAR || IS_CONST == IS_CV) {
3392 			if (array_ptr == array_ref) {
3393 				ZVAL_NEW_REF(array_ref, array_ref);
3394 				array_ptr = Z_REFVAL_P(array_ref);
3395 			}
3396 			Z_ADDREF_P(array_ref);
3397 			ZVAL_COPY_VALUE(EX_VAR(opline->result.var), array_ref);
3398 		} else {
3399 			array_ref = EX_VAR(opline->result.var);
3400 			ZVAL_NEW_REF(array_ref, array_ptr);
3401 			array_ptr = Z_REFVAL_P(array_ref);
3402 		}
3403 		if (IS_CONST == IS_CONST) {
3404 			ZVAL_ARR(array_ptr, zend_array_dup(Z_ARRVAL_P(array_ptr)));
3405 		} else {
3406 			SEPARATE_ARRAY(array_ptr);
3407 		}
3408 		Z_FE_ITER_P(EX_VAR(opline->result.var)) = zend_hash_iterator_add(Z_ARRVAL_P(array_ptr), 0);
3409 
3410 		if (IS_CONST == IS_VAR) {
3411 
3412 		}
3413 		ZEND_VM_NEXT_OPCODE();
3414 	} else if (IS_CONST != IS_CONST && EXPECTED(Z_TYPE_P(array_ptr) == IS_OBJECT)) {
3415 		if (!Z_OBJCE_P(array_ptr)->get_iterator) {
3416 			if (IS_CONST == IS_VAR || IS_CONST == IS_CV) {
3417 				if (array_ptr == array_ref) {
3418 					ZVAL_NEW_REF(array_ref, array_ref);
3419 					array_ptr = Z_REFVAL_P(array_ref);
3420 				}
3421 				Z_ADDREF_P(array_ref);
3422 				ZVAL_COPY_VALUE(EX_VAR(opline->result.var), array_ref);
3423 			} else {
3424 				array_ptr = EX_VAR(opline->result.var);
3425 				ZVAL_COPY_VALUE(array_ptr, array_ref);
3426 			}
3427 			if (Z_OBJ_P(array_ptr)->properties
3428 			 && UNEXPECTED(GC_REFCOUNT(Z_OBJ_P(array_ptr)->properties) > 1)) {
3429 				if (EXPECTED(!(GC_FLAGS(Z_OBJ_P(array_ptr)->properties) & IS_ARRAY_IMMUTABLE))) {
3430 					GC_DELREF(Z_OBJ_P(array_ptr)->properties);
3431 				}
3432 				Z_OBJ_P(array_ptr)->properties = zend_array_dup(Z_OBJ_P(array_ptr)->properties);
3433 			}
3434 			Z_FE_ITER_P(EX_VAR(opline->result.var)) = zend_hash_iterator_add(Z_OBJPROP_P(array_ptr), 0);
3435 
3436 			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
3437 		} else {
3438 			zend_bool is_empty = zend_fe_reset_iterator(array_ptr, 1 OPLINE_CC EXECUTE_DATA_CC);
3439 
3440 			if (IS_CONST == IS_VAR) {
3441 
3442 			} else {
3443 
3444 			}
3445 			if (UNEXPECTED(EG(exception))) {
3446 				HANDLE_EXCEPTION();
3447 			} else if (is_empty) {
3448 				ZEND_VM_JMP_EX(OP_JMP_ADDR(opline, opline->op2), 0);
3449 			} else {
3450 				ZEND_VM_NEXT_OPCODE();
3451 			}
3452 		}
3453 	} else {
3454 		zend_error(E_WARNING, "Invalid argument supplied for foreach()");
3455 		ZVAL_UNDEF(EX_VAR(opline->result.var));
3456 		Z_FE_ITER_P(EX_VAR(opline->result.var)) = (uint32_t)-1;
3457 		if (IS_CONST == IS_VAR) {
3458 
3459 		} else {
3460 
3461 		}
3462 		ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
3463 	}
3464 }
3465 
3466 static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_EXIT_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
3467 {
3468 	USE_OPLINE
3469 
3470 	SAVE_OPLINE();
3471 	if (IS_CONST != IS_UNUSED) {
3472 
3473 		zval *ptr = RT_CONSTANT(opline, opline->op1);
3474 
3475 		do {
3476 			if (Z_TYPE_P(ptr) == IS_LONG) {
3477 				EG(exit_status) = Z_LVAL_P(ptr);
3478 			} else {
3479 				if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(ptr)) {
3480 					ptr = Z_REFVAL_P(ptr);
3481 					if (Z_TYPE_P(ptr) == IS_LONG) {
3482 						EG(exit_status) = Z_LVAL_P(ptr);
3483 						break;
3484 					}
3485 				}
3486 				zend_print_zval(ptr, 0);
3487 			}
3488 		} while (0);
3489 
3490 	}
3491 	zend_bailout();
3492 	ZEND_VM_NEXT_OPCODE(); /* Never reached */
3493 }
3494 
3495 static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_JMP_SET_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
3496 {
3497 	USE_OPLINE
3498 
3499 	zval *value;
3500 	zval *ref = NULL;
3501 	int ret;
3502 
3503 	SAVE_OPLINE();
3504 	value = RT_CONSTANT(opline, opline->op1);
3505 
3506 	if ((IS_CONST == IS_VAR || IS_CONST == IS_CV) && Z_ISREF_P(value)) {
3507 		if (IS_CONST == IS_VAR) {
3508 			ref = value;
3509 		}
3510 		value = Z_REFVAL_P(value);
3511 	}
3512 
3513 	ret = i_zend_is_true(value);
3514 
3515 	if (UNEXPECTED(EG(exception))) {
3516 
3517 		ZVAL_UNDEF(EX_VAR(opline->result.var));
3518 		HANDLE_EXCEPTION();
3519 	}
3520 
3521 	if (ret) {
3522 		zval *result = EX_VAR(opline->result.var);
3523 
3524 		ZVAL_COPY_VALUE(result, value);
3525 		if (IS_CONST == IS_CONST) {
3526 			if (UNEXPECTED(Z_OPT_REFCOUNTED_P(result))) Z_ADDREF_P(result);
3527 		} else if (IS_CONST == IS_CV) {
3528 			if (Z_OPT_REFCOUNTED_P(result)) Z_ADDREF_P(result);
3529 		} else if (IS_CONST == IS_VAR && ref) {
3530 			zend_reference *r = Z_REF_P(ref);
3531 
3532 			if (UNEXPECTED(GC_DELREF(r) == 0)) {
3533 				efree_size(r, sizeof(zend_reference));
3534 			} else if (Z_OPT_REFCOUNTED_P(result)) {
3535 				Z_ADDREF_P(result);
3536 			}
3537 		}
3538 		ZEND_VM_JMP_EX(OP_JMP_ADDR(opline, opline->op2), 0);
3539 	}
3540 
3541 	ZEND_VM_NEXT_OPCODE();
3542 }
3543 
3544 static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_COALESCE_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
3545 {
3546 	USE_OPLINE
3547 
3548 	zval *value;
3549 	zval *ref = NULL;
3550 
3551 	SAVE_OPLINE();
3552 	value = RT_CONSTANT(opline, opline->op1);
3553 
3554 	if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
3555 		if (IS_CONST & IS_VAR) {
3556 			ref = value;
3557 		}
3558 		value = Z_REFVAL_P(value);
3559 	}
3560 
3561 	if (Z_TYPE_P(value) > IS_NULL) {
3562 		zval *result = EX_VAR(opline->result.var);
3563 		ZVAL_COPY_VALUE(result, value);
3564 		if (IS_CONST == IS_CONST) {
3565 			if (UNEXPECTED(Z_OPT_REFCOUNTED_P(result))) Z_ADDREF_P(result);
3566 		} else if (IS_CONST == IS_CV) {
3567 			if (Z_OPT_REFCOUNTED_P(result)) Z_ADDREF_P(result);
3568 		} else if ((IS_CONST & IS_VAR) && ref) {
3569 			zend_reference *r = Z_REF_P(ref);
3570 
3571 			if (UNEXPECTED(GC_DELREF(r) == 0)) {
3572 				efree_size(r, sizeof(zend_reference));
3573 			} else if (Z_OPT_REFCOUNTED_P(result)) {
3574 				Z_ADDREF_P(result);
3575 			}
3576 		}
3577 		ZEND_VM_JMP_EX(OP_JMP_ADDR(opline, opline->op2), 0);
3578 	}
3579 
3580 	ZEND_VM_NEXT_OPCODE();
3581 }
3582 
3583 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_QM_ASSIGN_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
3584 {
3585 	USE_OPLINE
3586 
3587 	zval *value;
3588 	zval *result = EX_VAR(opline->result.var);
3589 
3590 	value = RT_CONSTANT(opline, opline->op1);
3591 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
3592 		SAVE_OPLINE();
3593 		GET_OP1_UNDEF_CV(value, BP_VAR_R);
3594 		ZVAL_NULL(result);
3595 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
3596 	}
3597 
3598 	if (IS_CONST == IS_CV) {
3599 		ZVAL_COPY_DEREF(result, value);
3600 	} else if (IS_CONST == IS_VAR) {
3601 		if (UNEXPECTED(Z_ISREF_P(value))) {
3602 			ZVAL_COPY_VALUE(result, Z_REFVAL_P(value));
3603 			if (UNEXPECTED(Z_DELREF_P(value) == 0)) {
3604 				efree_size(Z_REF_P(value), sizeof(zend_reference));
3605 			} else if (Z_OPT_REFCOUNTED_P(result)) {
3606 				Z_ADDREF_P(result);
3607 			}
3608 		} else {
3609 			ZVAL_COPY_VALUE(result, value);
3610 		}
3611 	} else {
3612 		ZVAL_COPY_VALUE(result, value);
3613 		if (IS_CONST == IS_CONST) {
3614 			if (UNEXPECTED(Z_OPT_REFCOUNTED_P(result))) {
3615 				Z_ADDREF_P(result);
3616 			}
3617 		}
3618 	}
3619 	ZEND_VM_NEXT_OPCODE();
3620 }
3621 
3622 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_DECLARE_CLASS_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
3623 {
3624 	USE_OPLINE
3625 
3626 	SAVE_OPLINE();
3627 	Z_CE_P(EX_VAR(opline->result.var)) = do_bind_class(&EX(func)->op_array, opline, EG(class_table), 0);
3628 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
3629 }
3630 
3631 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_YIELD_FROM_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
3632 {
3633 	USE_OPLINE
3634 
3635 	zend_generator *generator = zend_get_running_generator(EXECUTE_DATA_C);
3636 
3637 	zval *val;
3638 
3639 
3640 	SAVE_OPLINE();
3641 	val = RT_CONSTANT(opline, opline->op1);
3642 
3643 	if (UNEXPECTED(generator->flags & ZEND_GENERATOR_FORCED_CLOSE)) {
3644 		zend_throw_error(NULL, "Cannot use \"yield from\" in a force-closed generator");
3645 
3646 		UNDEF_RESULT();
3647 		HANDLE_EXCEPTION();
3648 	}
3649 
3650 	if (Z_TYPE_P(val) == IS_ARRAY) {
3651 		ZVAL_COPY_VALUE(&generator->values, val);
3652 		if (IS_CONST != IS_TMP_VAR && Z_OPT_REFCOUNTED_P(val)) {
3653 			Z_ADDREF_P(val);
3654 		}
3655 		Z_FE_POS(generator->values) = 0;
3656 
3657 	} else if (IS_CONST != IS_CONST && Z_TYPE_P(val) == IS_OBJECT && Z_OBJCE_P(val)->get_iterator) {
3658 		zend_class_entry *ce = Z_OBJCE_P(val);
3659 		if (ce == zend_ce_generator) {
3660 			zend_generator *new_gen = (zend_generator *) Z_OBJ_P(val);
3661 
3662 			if (IS_CONST != IS_TMP_VAR) {
3663 				Z_ADDREF_P(val);
3664 			}
3665 
3666 			if (Z_ISUNDEF(new_gen->retval)) {
3667 				if (UNEXPECTED(zend_generator_get_current(new_gen) == generator)) {
3668 					zend_throw_error(NULL, "Impossible to yield from the Generator being currently run");
3669 					zval_ptr_dtor(val);
3670 					UNDEF_RESULT();
3671 					HANDLE_EXCEPTION();
3672 				} else {
3673 					zend_generator_yield_from(generator, new_gen);
3674 				}
3675 			} else if (UNEXPECTED(new_gen->execute_data == NULL)) {
3676 				zend_throw_error(NULL, "Generator passed to yield from was aborted without proper return and is unable to continue");
3677 				zval_ptr_dtor(val);
3678 				UNDEF_RESULT();
3679 				HANDLE_EXCEPTION();
3680 			} else {
3681 				if (RETURN_VALUE_USED(opline)) {
3682 					ZVAL_COPY(EX_VAR(opline->result.var), &new_gen->retval);
3683 				}
3684 				ZEND_VM_NEXT_OPCODE();
3685 			}
3686 		} else {
3687 			zend_object_iterator *iter = ce->get_iterator(ce, val, 0);
3688 
3689 			if (UNEXPECTED(!iter) || UNEXPECTED(EG(exception))) {
3690 				if (!EG(exception)) {
3691 					zend_throw_error(NULL, "Object of type %s did not create an Iterator", ZSTR_VAL(ce->name));
3692 				}
3693 				UNDEF_RESULT();
3694 				HANDLE_EXCEPTION();
3695 			}
3696 
3697 			iter->index = 0;
3698 			if (iter->funcs->rewind) {
3699 				iter->funcs->rewind(iter);
3700 				if (UNEXPECTED(EG(exception) != NULL)) {
3701 					OBJ_RELEASE(&iter->std);
3702 					UNDEF_RESULT();
3703 					HANDLE_EXCEPTION();
3704 				}
3705 			}
3706 
3707 			ZVAL_OBJ(&generator->values, &iter->std);
3708 		}
3709 	} else {
3710 		zend_throw_error(NULL, "Can use \"yield from\" only with arrays and Traversables");
3711 
3712 		UNDEF_RESULT();
3713 		HANDLE_EXCEPTION();
3714 	}
3715 
3716 	/* This is the default return value
3717 	 * when the expression is a Generator, it will be overwritten in zend_generator_resume() */
3718 	if (RETURN_VALUE_USED(opline)) {
3719 		ZVAL_NULL(EX_VAR(opline->result.var));
3720 	}
3721 
3722 	/* This generator has no send target (though the generator we delegate to might have one) */
3723 	generator->send_target = NULL;
3724 
3725 	/* We increment to the next op, so we are at the correct position when the
3726 	 * generator is resumed. */
3727 	ZEND_VM_INC_OPCODE();
3728 
3729 	/* The GOTO VM uses a local opline variable. We need to set the opline
3730 	 * variable in execute_data so we don't resume at an old position. */
3731 	SAVE_OPLINE();
3732 
3733 	ZEND_VM_RETURN();
3734 }
3735 
3736 static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_STRLEN_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
3737 {
3738 	USE_OPLINE
3739 	zval *value;
3740 
3741 
3742 	value = RT_CONSTANT(opline, opline->op1);
3743 	if (EXPECTED(Z_TYPE_P(value) == IS_STRING)) {
3744 		ZVAL_LONG(EX_VAR(opline->result.var), Z_STRLEN_P(value));
3745 
3746 		ZEND_VM_NEXT_OPCODE();
3747 	} else {
3748 		zend_bool strict;
3749 
3750 		if ((IS_CONST & (IS_VAR|IS_CV)) && Z_TYPE_P(value) == IS_REFERENCE) {
3751 			value = Z_REFVAL_P(value);
3752 			if (EXPECTED(Z_TYPE_P(value) == IS_STRING)) {
3753 				ZVAL_LONG(EX_VAR(opline->result.var), Z_STRLEN_P(value));
3754 
3755 				ZEND_VM_NEXT_OPCODE();
3756 			}
3757 		}
3758 
3759 		SAVE_OPLINE();
3760 		if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
3761 			value = GET_OP1_UNDEF_CV(value, BP_VAR_R);
3762 		}
3763 		strict = EX_USES_STRICT_TYPES();
3764 		do {
3765 			if (EXPECTED(!strict)) {
3766 				zend_string *str;
3767 				zval tmp;
3768 
3769 				ZVAL_COPY(&tmp, value);
3770 				if (zend_parse_arg_str_weak(&tmp, &str)) {
3771 					ZVAL_LONG(EX_VAR(opline->result.var), ZSTR_LEN(str));
3772 					zval_ptr_dtor(&tmp);
3773 					break;
3774 				}
3775 				zval_ptr_dtor(&tmp);
3776 			}
3777 			zend_internal_type_error(strict, "strlen() expects parameter 1 to be string, %s given", zend_get_type_by_const(Z_TYPE_P(value)));
3778 			ZVAL_NULL(EX_VAR(opline->result.var));
3779 		} while (0);
3780 	}
3781 
3782 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
3783 }
3784 
3785 static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_TYPE_CHECK_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
3786 {
3787 	USE_OPLINE
3788 	zval *value;
3789 	int result = 0;
3790 
3791 
3792 	value = RT_CONSTANT(opline, opline->op1);
3793 	if ((opline->extended_value >> (uint32_t)Z_TYPE_P(value)) & 1) {
3794 type_check_resource:
3795 		if (EXPECTED(Z_TYPE_P(value) != IS_RESOURCE)
3796 		 || EXPECTED(NULL != zend_rsrc_list_get_rsrc_type(Z_RES_P(value)))) {
3797 			result = 1;
3798 		}
3799 	} else if ((IS_CONST & (IS_CV|IS_VAR)) && Z_ISREF_P(value)) {
3800 		value = Z_REFVAL_P(value);
3801 		if ((opline->extended_value >> (uint32_t)Z_TYPE_P(value)) & 1) {
3802 			goto type_check_resource;
3803 		}
3804 	} else if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
3805 		result = ((1 << IS_NULL) & opline->extended_value) != 0;
3806 		SAVE_OPLINE();
3807 		GET_OP1_UNDEF_CV(value, BP_VAR_R);
3808 		ZEND_VM_SMART_BRANCH(result, 1);
3809 		ZVAL_BOOL(EX_VAR(opline->result.var), result);
3810 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
3811 	}
3812 	if (IS_CONST & (IS_TMP_VAR|IS_VAR)) {
3813 		SAVE_OPLINE();
3814 
3815 		ZEND_VM_SMART_BRANCH(result, 1);
3816 		ZVAL_BOOL(EX_VAR(opline->result.var), result);
3817 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
3818 	} else {
3819 		ZEND_VM_SMART_BRANCH(result, 0);
3820 		ZVAL_BOOL(EX_VAR(opline->result.var), result);
3821 		ZEND_VM_NEXT_OPCODE();
3822 	}
3823 }
3824 
3825 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_DEFINED_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
3826 {
3827 	USE_OPLINE
3828 	zend_constant *c;
3829 	int result;
3830 
3831 	c = CACHED_PTR(opline->extended_value);
3832 	do {
3833 		if (EXPECTED(c != NULL)) {
3834 			if (!IS_SPECIAL_CACHE_VAL(c)) {
3835 				result = 1;
3836 				break;
3837 			} else if (EXPECTED(zend_hash_num_elements(EG(zend_constants)) == DECODE_SPECIAL_CACHE_NUM(c))) {
3838 				result = 0;
3839 				break;
3840 			}
3841 		}
3842 		if (zend_quick_check_constant(RT_CONSTANT(opline, opline->op1) OPLINE_CC EXECUTE_DATA_CC) != SUCCESS) {
3843 			CACHE_PTR(opline->extended_value, ENCODE_SPECIAL_CACHE_NUM(zend_hash_num_elements(EG(zend_constants))));
3844 			result = 0;
3845 		} else {
3846 			result = 1;
3847 		}
3848 	} while (0);
3849 	ZEND_VM_SMART_BRANCH(result, 0);
3850 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
3851 	ZEND_VM_NEXT_OPCODE();
3852 }
3853 
3854 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_QM_ASSIGN_DOUBLE_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
3855 {
3856 	USE_OPLINE
3857 
3858 	zval *value;
3859 
3860 	value = RT_CONSTANT(opline, opline->op1);
3861 	ZVAL_DOUBLE(EX_VAR(opline->result.var), Z_DVAL_P(value));
3862 	ZEND_VM_NEXT_OPCODE();
3863 }
3864 
3865 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_QM_ASSIGN_NOREF_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
3866 {
3867 	USE_OPLINE
3868 
3869 	zval *value;
3870 
3871 	value = RT_CONSTANT(opline, opline->op1);
3872 	ZVAL_COPY_VALUE(EX_VAR(opline->result.var), value);
3873 	ZEND_VM_NEXT_OPCODE();
3874 }
3875 
3876 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SEND_VAL_SIMPLE_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
3877 {
3878 	USE_OPLINE
3879 	zval *value, *arg;
3880 
3881 
3882 	value = RT_CONSTANT(opline, opline->op1);
3883 	arg = ZEND_CALL_VAR(EX(call), opline->result.var);
3884 	ZVAL_COPY_VALUE(arg, value);
3885 	ZEND_VM_NEXT_OPCODE();
3886 }
3887 
3888 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SEND_VAL_EX_SIMPLE_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
3889 {
3890 	USE_OPLINE
3891 	zval *value, *arg;
3892 
3893 	uint32_t arg_num = opline->op2.num;
3894 
3895 	if (QUICK_ARG_MUST_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
3896 		ZEND_VM_TAIL_CALL(zend_cannot_pass_by_ref_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
3897 	}
3898 	value = RT_CONSTANT(opline, opline->op1);
3899 	arg = ZEND_CALL_VAR(EX(call), opline->result.var);
3900 	ZVAL_COPY_VALUE(arg, value);
3901 	ZEND_VM_NEXT_OPCODE();
3902 }
3903 
3904 static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ADD_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
3905 {
3906 	USE_OPLINE
3907 
3908 	zval *op1, *op2, *result;
3909 
3910 	op1 = RT_CONSTANT(opline, opline->op1);
3911 	op2 = RT_CONSTANT(opline, opline->op2);
3912 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
3913 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
3914 			result = EX_VAR(opline->result.var);
3915 			fast_long_add_function(result, op1, op2);
3916 			ZEND_VM_NEXT_OPCODE();
3917 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
3918 			result = EX_VAR(opline->result.var);
3919 			ZVAL_DOUBLE(result, ((double)Z_LVAL_P(op1)) + Z_DVAL_P(op2));
3920 			ZEND_VM_NEXT_OPCODE();
3921 		}
3922 	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
3923 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
3924 			result = EX_VAR(opline->result.var);
3925 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) + Z_DVAL_P(op2));
3926 			ZEND_VM_NEXT_OPCODE();
3927 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
3928 			result = EX_VAR(opline->result.var);
3929 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) + ((double)Z_LVAL_P(op2)));
3930 			ZEND_VM_NEXT_OPCODE();
3931 		}
3932 	}
3933 
3934 	SAVE_OPLINE();
3935 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
3936 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
3937 	}
3938 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
3939 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
3940 	}
3941 	add_function(EX_VAR(opline->result.var), op1, op2);
3942 
3943 
3944 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
3945 }
3946 
3947 static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SUB_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
3948 {
3949 	USE_OPLINE
3950 
3951 	zval *op1, *op2, *result;
3952 
3953 	op1 = RT_CONSTANT(opline, opline->op1);
3954 	op2 = RT_CONSTANT(opline, opline->op2);
3955 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
3956 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
3957 			result = EX_VAR(opline->result.var);
3958 			fast_long_sub_function(result, op1, op2);
3959 			ZEND_VM_NEXT_OPCODE();
3960 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
3961 			result = EX_VAR(opline->result.var);
3962 			ZVAL_DOUBLE(result, ((double)Z_LVAL_P(op1)) - Z_DVAL_P(op2));
3963 			ZEND_VM_NEXT_OPCODE();
3964 		}
3965 	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
3966 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
3967 			result = EX_VAR(opline->result.var);
3968 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) - Z_DVAL_P(op2));
3969 			ZEND_VM_NEXT_OPCODE();
3970 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
3971 			result = EX_VAR(opline->result.var);
3972 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) - ((double)Z_LVAL_P(op2)));
3973 			ZEND_VM_NEXT_OPCODE();
3974 		}
3975 	}
3976 
3977 	SAVE_OPLINE();
3978 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
3979 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
3980 	}
3981 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
3982 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
3983 	}
3984 	sub_function(EX_VAR(opline->result.var), op1, op2);
3985 
3986 
3987 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
3988 }
3989 
3990 static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_MUL_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
3991 {
3992 	USE_OPLINE
3993 
3994 	zval *op1, *op2, *result;
3995 
3996 	op1 = RT_CONSTANT(opline, opline->op1);
3997 	op2 = RT_CONSTANT(opline, opline->op2);
3998 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
3999 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
4000 			zend_long overflow;
4001 
4002 			result = EX_VAR(opline->result.var);
4003 			ZEND_SIGNED_MULTIPLY_LONG(Z_LVAL_P(op1), Z_LVAL_P(op2), Z_LVAL_P(result), Z_DVAL_P(result), overflow);
4004 			Z_TYPE_INFO_P(result) = overflow ? IS_DOUBLE : IS_LONG;
4005 			ZEND_VM_NEXT_OPCODE();
4006 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
4007 			result = EX_VAR(opline->result.var);
4008 			ZVAL_DOUBLE(result, ((double)Z_LVAL_P(op1)) * Z_DVAL_P(op2));
4009 			ZEND_VM_NEXT_OPCODE();
4010 		}
4011 	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
4012 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
4013 			result = EX_VAR(opline->result.var);
4014 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) * Z_DVAL_P(op2));
4015 			ZEND_VM_NEXT_OPCODE();
4016 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
4017 			result = EX_VAR(opline->result.var);
4018 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) * ((double)Z_LVAL_P(op2)));
4019 			ZEND_VM_NEXT_OPCODE();
4020 		}
4021 	}
4022 
4023 	SAVE_OPLINE();
4024 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
4025 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
4026 	}
4027 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
4028 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
4029 	}
4030 	mul_function(EX_VAR(opline->result.var), op1, op2);
4031 
4032 
4033 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
4034 }
4035 
4036 static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_DIV_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
4037 {
4038 	USE_OPLINE
4039 
4040 	zval *op1, *op2;
4041 
4042 	SAVE_OPLINE();
4043 	op1 = RT_CONSTANT(opline, opline->op1);
4044 	op2 = RT_CONSTANT(opline, opline->op2);
4045 	fast_div_function(EX_VAR(opline->result.var), op1, op2);
4046 
4047 
4048 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
4049 }
4050 
4051 static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_MOD_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
4052 {
4053 	USE_OPLINE
4054 
4055 	zval *op1, *op2, *result;
4056 
4057 	op1 = RT_CONSTANT(opline, opline->op1);
4058 	op2 = RT_CONSTANT(opline, opline->op2);
4059 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
4060 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
4061 			result = EX_VAR(opline->result.var);
4062 			if (UNEXPECTED(Z_LVAL_P(op2) == 0)) {
4063 				ZEND_VM_TAIL_CALL(zend_mod_by_zero_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
4064 			} else if (UNEXPECTED(Z_LVAL_P(op2) == -1)) {
4065 				/* Prevent overflow error/crash if op1==ZEND_LONG_MIN */
4066 				ZVAL_LONG(result, 0);
4067 			} else {
4068 				ZVAL_LONG(result, Z_LVAL_P(op1) % Z_LVAL_P(op2));
4069 			}
4070 			ZEND_VM_NEXT_OPCODE();
4071 		}
4072 	}
4073 
4074 	SAVE_OPLINE();
4075 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
4076 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
4077 	}
4078 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
4079 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
4080 	}
4081 	mod_function(EX_VAR(opline->result.var), op1, op2);
4082 
4083 
4084 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
4085 }
4086 
4087 static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SL_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
4088 {
4089 	USE_OPLINE
4090 
4091 	zval *op1, *op2;
4092 
4093 	op1 = RT_CONSTANT(opline, opline->op1);
4094 	op2 = RT_CONSTANT(opline, opline->op2);
4095 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)
4096 			&& EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)
4097 			&& EXPECTED((zend_ulong)Z_LVAL_P(op2) < SIZEOF_ZEND_LONG * 8)) {
4098 		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(op1) << Z_LVAL_P(op2));
4099 		ZEND_VM_NEXT_OPCODE();
4100 	}
4101 
4102 	SAVE_OPLINE();
4103 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
4104 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
4105 	}
4106 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
4107 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
4108 	}
4109 	shift_left_function(EX_VAR(opline->result.var), op1, op2);
4110 
4111 
4112 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
4113 }
4114 
4115 static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SR_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
4116 {
4117 	USE_OPLINE
4118 
4119 	zval *op1, *op2;
4120 
4121 	op1 = RT_CONSTANT(opline, opline->op1);
4122 	op2 = RT_CONSTANT(opline, opline->op2);
4123 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)
4124 			&& EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)
4125 			&& EXPECTED((zend_ulong)Z_LVAL_P(op2) < SIZEOF_ZEND_LONG * 8)) {
4126 		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(op1) >> Z_LVAL_P(op2));
4127 		ZEND_VM_NEXT_OPCODE();
4128 	}
4129 
4130 	SAVE_OPLINE();
4131 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
4132 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
4133 	}
4134 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
4135 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
4136 	}
4137 	shift_right_function(EX_VAR(opline->result.var), op1, op2);
4138 
4139 
4140 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
4141 }
4142 
4143 static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_POW_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
4144 {
4145 	USE_OPLINE
4146 
4147 	zval *op1, *op2;
4148 
4149 	SAVE_OPLINE();
4150 	op1 = RT_CONSTANT(opline, opline->op1);
4151 	op2 = RT_CONSTANT(opline, opline->op2);
4152 	pow_function(EX_VAR(opline->result.var), op1, op2);
4153 
4154 
4155 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
4156 }
4157 
4158 static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_IDENTICAL_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
4159 {
4160 	USE_OPLINE
4161 
4162 	zval *op1, *op2;
4163 	int result;
4164 
4165 	SAVE_OPLINE();
4166 	op1 = RT_CONSTANT(opline, opline->op1);
4167 	op2 = RT_CONSTANT(opline, opline->op2);
4168 	result = fast_is_identical_function(op1, op2);
4169 
4170 
4171 	ZEND_VM_SMART_BRANCH(result, 1);
4172 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
4173 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
4174 }
4175 
4176 static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_NOT_IDENTICAL_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
4177 {
4178 	USE_OPLINE
4179 
4180 	zval *op1, *op2;
4181 	int result;
4182 
4183 	SAVE_OPLINE();
4184 	op1 = RT_CONSTANT(opline, opline->op1);
4185 	op2 = RT_CONSTANT(opline, opline->op2);
4186 	result = fast_is_not_identical_function(op1, op2);
4187 
4188 
4189 	ZEND_VM_SMART_BRANCH(result, 1);
4190 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
4191 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
4192 }
4193 
4194 static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_EQUAL_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
4195 {
4196 	USE_OPLINE
4197 
4198 	zval *op1, *op2, *result;
4199 
4200 	op1 = RT_CONSTANT(opline, opline->op1);
4201 	op2 = RT_CONSTANT(opline, opline->op2);
4202 	do {
4203 		int result;
4204 
4205 		if (EXPECTED(Z_TYPE_P(op1) == IS_LONG)) {
4206 			if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
4207 				result = (Z_LVAL_P(op1) == Z_LVAL_P(op2));
4208 			} else if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
4209 				result = ((double)Z_LVAL_P(op1) == Z_DVAL_P(op2));
4210 			} else {
4211 				break;
4212 			}
4213 		} else if (EXPECTED(Z_TYPE_P(op1) == IS_DOUBLE)) {
4214 			if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
4215 				result = (Z_DVAL_P(op1) == Z_DVAL_P(op2));
4216 			} else if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
4217 				result = (Z_DVAL_P(op1) == ((double)Z_LVAL_P(op2)));
4218 			} else {
4219 				break;
4220 			}
4221 		} else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
4222 			if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
4223 				result = zend_fast_equal_strings(Z_STR_P(op1), Z_STR_P(op2));
4224 
4225 
4226 			} else {
4227 				break;
4228 			}
4229 		} else {
4230 			break;
4231 		}
4232 		ZEND_VM_SMART_BRANCH(result, 0);
4233 		ZVAL_BOOL(EX_VAR(opline->result.var), result);
4234 		ZEND_VM_NEXT_OPCODE();
4235 	} while (0);
4236 
4237 	SAVE_OPLINE();
4238 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
4239 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
4240 	}
4241 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
4242 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
4243 	}
4244 	result = EX_VAR(opline->result.var);
4245 	compare_function(result, op1, op2);
4246 	ZVAL_BOOL(result, Z_LVAL_P(result) == 0);
4247 
4248 
4249 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
4250 }
4251 
4252 static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_NOT_EQUAL_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
4253 {
4254 	USE_OPLINE
4255 
4256 	zval *op1, *op2, *result;
4257 
4258 	op1 = RT_CONSTANT(opline, opline->op1);
4259 	op2 = RT_CONSTANT(opline, opline->op2);
4260 	do {
4261 		int result;
4262 
4263 		if (EXPECTED(Z_TYPE_P(op1) == IS_LONG)) {
4264 			if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
4265 				result = (Z_LVAL_P(op1) != Z_LVAL_P(op2));
4266 			} else if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
4267 				result = ((double)Z_LVAL_P(op1) != Z_DVAL_P(op2));
4268 			} else {
4269 				break;
4270 			}
4271 		} else if (EXPECTED(Z_TYPE_P(op1) == IS_DOUBLE)) {
4272 			if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
4273 				result = (Z_DVAL_P(op1) != Z_DVAL_P(op2));
4274 			} else if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
4275 				result = (Z_DVAL_P(op1) != ((double)Z_LVAL_P(op2)));
4276 			} else {
4277 				break;
4278 			}
4279 		} else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
4280 			if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
4281 				result = !zend_fast_equal_strings(Z_STR_P(op1), Z_STR_P(op2));
4282 
4283 
4284 			} else {
4285 				break;
4286 			}
4287 		} else {
4288 			break;
4289 		}
4290 		ZEND_VM_SMART_BRANCH(result, 0);
4291 		ZVAL_BOOL(EX_VAR(opline->result.var), result);
4292 		ZEND_VM_NEXT_OPCODE();
4293 	} while (0);
4294 
4295 	SAVE_OPLINE();
4296 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
4297 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
4298 	}
4299 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
4300 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
4301 	}
4302 	result = EX_VAR(opline->result.var);
4303 	compare_function(result, op1, op2);
4304 	ZVAL_BOOL(result, Z_LVAL_P(result) != 0);
4305 
4306 
4307 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
4308 }
4309 
4310 static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
4311 {
4312 	USE_OPLINE
4313 
4314 	zval *op1, *op2, *result;
4315 
4316 	op1 = RT_CONSTANT(opline, opline->op1);
4317 	op2 = RT_CONSTANT(opline, opline->op2);
4318 	do {
4319 		int result;
4320 
4321 		if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
4322 			if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
4323 				result = (Z_LVAL_P(op1) < Z_LVAL_P(op2));
4324 			} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
4325 				result = ((double)Z_LVAL_P(op1) < Z_DVAL_P(op2));
4326 			} else {
4327 				break;
4328 			}
4329 		} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
4330 			if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
4331 				result = (Z_DVAL_P(op1) < Z_DVAL_P(op2));
4332 			} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
4333 				result = (Z_DVAL_P(op1) < ((double)Z_LVAL_P(op2)));
4334 			} else {
4335 				break;
4336 			}
4337 		} else {
4338 			break;
4339 		}
4340 		ZEND_VM_SMART_BRANCH(result, 0);
4341 		ZVAL_BOOL(EX_VAR(opline->result.var), result);
4342 		ZEND_VM_NEXT_OPCODE();
4343 	} while (0);
4344 
4345 	SAVE_OPLINE();
4346 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
4347 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
4348 	}
4349 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
4350 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
4351 	}
4352 	result = EX_VAR(opline->result.var);
4353 	compare_function(result, op1, op2);
4354 	ZVAL_BOOL(result, Z_LVAL_P(result) < 0);
4355 
4356 
4357 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
4358 }
4359 
4360 static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_OR_EQUAL_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
4361 {
4362 	USE_OPLINE
4363 
4364 	zval *op1, *op2, *result;
4365 
4366 	op1 = RT_CONSTANT(opline, opline->op1);
4367 	op2 = RT_CONSTANT(opline, opline->op2);
4368 	do {
4369 		int result;
4370 
4371 		if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
4372 			if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
4373 				result = (Z_LVAL_P(op1) <= Z_LVAL_P(op2));
4374 			} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
4375 				result = ((double)Z_LVAL_P(op1) <= Z_DVAL_P(op2));
4376 			} else {
4377 				break;
4378 			}
4379 		} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
4380 			if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
4381 				result = (Z_DVAL_P(op1) <= Z_DVAL_P(op2));
4382 			} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
4383 				result = (Z_DVAL_P(op1) <= ((double)Z_LVAL_P(op2)));
4384 			} else {
4385 				break;
4386 			}
4387 		} else {
4388 			break;
4389 		}
4390 		ZEND_VM_SMART_BRANCH(result, 0);
4391 		ZVAL_BOOL(EX_VAR(opline->result.var), result);
4392 		ZEND_VM_NEXT_OPCODE();
4393 	} while (0);
4394 
4395 	SAVE_OPLINE();
4396 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
4397 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
4398 	}
4399 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
4400 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
4401 	}
4402 	result = EX_VAR(opline->result.var);
4403 	compare_function(result, op1, op2);
4404 	ZVAL_BOOL(result, Z_LVAL_P(result) <= 0);
4405 
4406 
4407 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
4408 }
4409 
4410 static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SPACESHIP_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
4411 {
4412 	USE_OPLINE
4413 
4414 	zval *op1, *op2;
4415 
4416 	SAVE_OPLINE();
4417 	op1 = RT_CONSTANT(opline, opline->op1);
4418 	op2 = RT_CONSTANT(opline, opline->op2);
4419 	compare_function(EX_VAR(opline->result.var), op1, op2);
4420 
4421 
4422 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
4423 }
4424 
4425 static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BW_OR_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
4426 {
4427 	USE_OPLINE
4428 
4429 	zval *op1, *op2;
4430 
4431 	op1 = RT_CONSTANT(opline, opline->op1);
4432 	op2 = RT_CONSTANT(opline, opline->op2);
4433 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)
4434 			&& EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
4435 		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(op1) | Z_LVAL_P(op2));
4436 		ZEND_VM_NEXT_OPCODE();
4437 	}
4438 
4439 	SAVE_OPLINE();
4440 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
4441 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
4442 	}
4443 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
4444 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
4445 	}
4446 	bitwise_or_function(EX_VAR(opline->result.var), op1, op2);
4447 
4448 
4449 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
4450 }
4451 
4452 static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BW_AND_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
4453 {
4454 	USE_OPLINE
4455 
4456 	zval *op1, *op2;
4457 
4458 	op1 = RT_CONSTANT(opline, opline->op1);
4459 	op2 = RT_CONSTANT(opline, opline->op2);
4460 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)
4461 			&& EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
4462 		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(op1) & Z_LVAL_P(op2));
4463 		ZEND_VM_NEXT_OPCODE();
4464 	}
4465 
4466 	SAVE_OPLINE();
4467 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
4468 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
4469 	}
4470 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
4471 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
4472 	}
4473 	bitwise_and_function(EX_VAR(opline->result.var), op1, op2);
4474 
4475 
4476 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
4477 }
4478 
4479 static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BW_XOR_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
4480 {
4481 	USE_OPLINE
4482 
4483 	zval *op1, *op2;
4484 
4485 	op1 = RT_CONSTANT(opline, opline->op1);
4486 	op2 = RT_CONSTANT(opline, opline->op2);
4487 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)
4488 			&& EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
4489 		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(op1) ^ Z_LVAL_P(op2));
4490 		ZEND_VM_NEXT_OPCODE();
4491 	}
4492 
4493 	SAVE_OPLINE();
4494 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
4495 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
4496 	}
4497 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
4498 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
4499 	}
4500 	bitwise_xor_function(EX_VAR(opline->result.var), op1, op2);
4501 
4502 
4503 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
4504 }
4505 
4506 static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BOOL_XOR_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
4507 {
4508 	USE_OPLINE
4509 
4510 	zval *op1, *op2;
4511 
4512 	SAVE_OPLINE();
4513 	op1 = RT_CONSTANT(opline, opline->op1);
4514 	op2 = RT_CONSTANT(opline, opline->op2);
4515 	boolean_xor_function(EX_VAR(opline->result.var), op1, op2);
4516 
4517 
4518 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
4519 }
4520 
4521 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_fetch_static_prop_helper_SPEC_CONST_CONST(int type ZEND_OPCODE_HANDLER_ARGS_DC)
4522 {
4523 	USE_OPLINE
4524 
4525 	zval *varname;
4526 	zval *retval;
4527 	zend_string *name, *tmp_name;
4528 	zend_class_entry *ce;
4529 
4530 	SAVE_OPLINE();
4531 
4532 	do {
4533 		if (IS_CONST == IS_CONST) {
4534 			if (IS_CONST == IS_CONST && EXPECTED((ce = CACHED_PTR(opline->extended_value)) != NULL)) {
4535 				retval = CACHED_PTR(opline->extended_value + sizeof(void*));
4536 				break;
4537 			} else {
4538 				zval *class_name = RT_CONSTANT(opline, opline->op2);
4539 
4540 				if (UNEXPECTED((ce = CACHED_PTR(opline->extended_value)) == NULL)) {
4541 					ce = zend_fetch_class_by_name(Z_STR_P(class_name), class_name + 1, ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
4542 					if (UNEXPECTED(ce == NULL)) {
4543 
4544 						retval = NULL;
4545 						break;
4546 					}
4547 					if (IS_CONST != IS_CONST) {
4548 						CACHE_PTR(opline->extended_value, ce);
4549 					}
4550 				}
4551 			}
4552 		} else {
4553 			if (IS_CONST == IS_UNUSED) {
4554 				ce = zend_fetch_class(NULL, opline->op2.num);
4555 				if (UNEXPECTED(ce == NULL)) {
4556 
4557 					retval = NULL;
4558 					break;
4559 				}
4560 			} else {
4561 				ce = Z_CE_P(EX_VAR(opline->op2.var));
4562 			}
4563 			if (IS_CONST == IS_CONST &&
4564 			    EXPECTED(CACHED_PTR(opline->extended_value) == ce)) {
4565 				retval = CACHED_PTR(opline->extended_value + sizeof(void*));
4566 				break;
4567 			}
4568 		}
4569 
4570 		varname = RT_CONSTANT(opline, opline->op1);
4571 		if (IS_CONST == IS_CONST) {
4572 			name = Z_STR_P(varname);
4573 		} else if (EXPECTED(Z_TYPE_P(varname) == IS_STRING)) {
4574 			name = Z_STR_P(varname);
4575 			tmp_name = NULL;
4576 		} else {
4577 			if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(varname) == IS_UNDEF)) {
4578 				zval_undefined_cv(EX(opline)->op1.var EXECUTE_DATA_CC);
4579 			}
4580 			name = zval_get_tmp_string(varname, &tmp_name);
4581 		}
4582 
4583 		retval = zend_std_get_static_property(ce, name, type == BP_VAR_IS);
4584 
4585 		if (IS_CONST != IS_CONST) {
4586 			zend_tmp_string_release(tmp_name);
4587 		}
4588 
4589 		if (IS_CONST == IS_CONST && EXPECTED(retval)) {
4590 			CACHE_POLYMORPHIC_PTR(opline->extended_value, ce, retval);
4591 		}
4592 
4593 	} while (0);
4594 
4595 	if (UNEXPECTED(retval == NULL)) {
4596 		if (EG(exception)) {
4597 			ZVAL_UNDEF(EX_VAR(opline->result.var));
4598 			HANDLE_EXCEPTION();
4599 		} else {
4600 			ZEND_ASSERT(type == BP_VAR_IS);
4601 			retval = &EG(uninitialized_zval);
4602 		}
4603 	}
4604 
4605 	if (type == BP_VAR_R || type == BP_VAR_IS) {
4606 		ZVAL_COPY_DEREF(EX_VAR(opline->result.var), retval);
4607 	} else {
4608 		ZVAL_INDIRECT(EX_VAR(opline->result.var), retval);
4609 	}
4610 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
4611 }
4612 
4613 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_R_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
4614 {
4615 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_CONST_CONST(BP_VAR_R ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
4616 }
4617 
4618 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_W_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
4619 {
4620 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_CONST_CONST(BP_VAR_W ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
4621 }
4622 
4623 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_RW_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
4624 {
4625 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_CONST_CONST(BP_VAR_RW ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
4626 }
4627 
4628 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
4629 {
4630 	int fetch_type =
4631 		(UNEXPECTED(ZEND_CALL_INFO(EX(call)) & ZEND_CALL_SEND_ARG_BY_REF)) ?
4632 			BP_VAR_W : BP_VAR_R;
4633 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_CONST_CONST(fetch_type ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
4634 }
4635 
4636 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_UNSET_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
4637 {
4638 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_CONST_CONST(BP_VAR_UNSET ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
4639 }
4640 
4641 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_IS_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
4642 {
4643 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_CONST_CONST(BP_VAR_IS ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
4644 }
4645 
4646 static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_R_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
4647 {
4648 	USE_OPLINE
4649 
4650 	zval *container, *dim, *value, *result;
4651 
4652 	SAVE_OPLINE();
4653 	container = RT_CONSTANT(opline, opline->op1);
4654 	dim = RT_CONSTANT(opline, opline->op2);
4655 	if (IS_CONST != IS_CONST) {
4656 		if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
4657 fetch_dim_r_array:
4658 			value = zend_fetch_dimension_address_inner(Z_ARRVAL_P(container), dim, IS_CONST, BP_VAR_R EXECUTE_DATA_CC);
4659 			result = EX_VAR(opline->result.var);
4660 			ZVAL_COPY_DEREF(result, value);
4661 		} else if (EXPECTED(Z_TYPE_P(container) == IS_REFERENCE)) {
4662 			container = Z_REFVAL_P(container);
4663 			if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
4664 				goto fetch_dim_r_array;
4665 			} else {
4666 				goto fetch_dim_r_slow;
4667 			}
4668 		} else {
4669 fetch_dim_r_slow:
4670 			if (IS_CONST == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
4671 				dim++;
4672 			}
4673 			zend_fetch_dimension_address_read_R_slow(container, dim OPLINE_CC EXECUTE_DATA_CC);
4674 		}
4675 	} else {
4676 		zend_fetch_dimension_address_read_R(container, dim, IS_CONST OPLINE_CC EXECUTE_DATA_CC);
4677 	}
4678 
4679 
4680 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
4681 }
4682 
4683 static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_IS_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
4684 {
4685 	USE_OPLINE
4686 
4687 	zval *container;
4688 
4689 	SAVE_OPLINE();
4690 	container = RT_CONSTANT(opline, opline->op1);
4691 	zend_fetch_dimension_address_read_IS(container, RT_CONSTANT(opline, opline->op2), IS_CONST OPLINE_CC EXECUTE_DATA_CC);
4692 
4693 
4694 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
4695 }
4696 
4697 static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_FUNC_ARG_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
4698 {
4699 	if (UNEXPECTED(ZEND_CALL_INFO(EX(call)) & ZEND_CALL_SEND_ARG_BY_REF)) {
4700         if ((IS_CONST & (IS_CONST|IS_TMP_VAR))) {
4701 			ZEND_VM_TAIL_CALL(zend_use_tmp_in_write_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
4702         }
4703 		ZEND_VM_TAIL_CALL(ZEND_NULL_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
4704 	} else {
4705 		if (IS_CONST == IS_UNUSED) {
4706 			ZEND_VM_TAIL_CALL(zend_use_undef_in_read_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
4707 		}
4708 		ZEND_VM_TAIL_CALL(ZEND_FETCH_DIM_R_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
4709 	}
4710 }
4711 
4712 static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_R_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
4713 {
4714 	USE_OPLINE
4715 
4716 	zval *container;
4717 
4718 	zval *offset;
4719 	void **cache_slot = NULL;
4720 
4721 	SAVE_OPLINE();
4722 	container = RT_CONSTANT(opline, opline->op1);
4723 
4724 	if (IS_CONST == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
4725 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
4726 	}
4727 
4728 	offset = RT_CONSTANT(opline, opline->op2);
4729 
4730 	if (IS_CONST == IS_CONST ||
4731 	    (IS_CONST != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
4732 	    do {
4733 			if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
4734 				container = Z_REFVAL_P(container);
4735 				if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
4736 					break;
4737 				}
4738 			}
4739 			if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
4740 				GET_OP1_UNDEF_CV(container, BP_VAR_R);
4741 			}
4742 			if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(offset) == IS_UNDEF)) {
4743 				GET_OP2_UNDEF_CV(offset, BP_VAR_R);
4744 			}
4745 			goto fetch_obj_r_no_object;
4746 		} while (0);
4747 	}
4748 
4749 	/* here we are sure we are dealing with an object */
4750 	do {
4751 		zend_object *zobj = Z_OBJ_P(container);
4752 		zval *retval;
4753 
4754 		if (IS_CONST == IS_CONST) {
4755 			cache_slot = CACHE_ADDR(opline->extended_value);
4756 
4757 			if (EXPECTED(zobj->ce == CACHED_PTR_EX(cache_slot))) {
4758 				uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
4759 
4760 				if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
4761 					retval = OBJ_PROP(zobj, prop_offset);
4762 					if (EXPECTED(Z_TYPE_INFO_P(retval) != IS_UNDEF)) {
4763 						ZVAL_COPY_DEREF(EX_VAR(opline->result.var), retval);
4764 						break;
4765 					}
4766 				} else if (EXPECTED(zobj->properties != NULL)) {
4767 					if (!IS_UNKNOWN_DYNAMIC_PROPERTY_OFFSET(prop_offset)) {
4768 						uintptr_t idx = ZEND_DECODE_DYN_PROP_OFFSET(prop_offset);
4769 
4770 						if (EXPECTED(idx < zobj->properties->nNumUsed * sizeof(Bucket))) {
4771 							Bucket *p = (Bucket*)((char*)zobj->properties->arData + idx);
4772 
4773 							if (EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
4774 						        (EXPECTED(p->key == Z_STR_P(offset)) ||
4775 						         (EXPECTED(p->h == ZSTR_H(Z_STR_P(offset))) &&
4776 						          EXPECTED(p->key != NULL) &&
4777 						          EXPECTED(zend_string_equal_content(p->key, Z_STR_P(offset)))))) {
4778 								ZVAL_COPY_DEREF(EX_VAR(opline->result.var), &p->val);
4779 								break;
4780 							}
4781 						}
4782 						CACHE_PTR_EX(cache_slot + 1, (void*)ZEND_DYNAMIC_PROPERTY_OFFSET);
4783 					}
4784 					retval = zend_hash_find_ex(zobj->properties, Z_STR_P(offset), 1);
4785 					if (EXPECTED(retval)) {
4786 						uintptr_t idx = (char*)retval - (char*)zobj->properties->arData;
4787 						CACHE_PTR_EX(cache_slot + 1, (void*)ZEND_ENCODE_DYN_PROP_OFFSET(idx));
4788 						ZVAL_COPY_DEREF(EX_VAR(opline->result.var), retval);
4789 						break;
4790 					}
4791 				}
4792 			}
4793 		} else if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(offset) == IS_UNDEF)) {
4794 			GET_OP2_UNDEF_CV(offset, BP_VAR_R);
4795 		}
4796 
4797 		if (UNEXPECTED(zobj->handlers->read_property == NULL)) {
4798 fetch_obj_r_no_object:
4799 			zend_wrong_property_read(offset);
4800 			ZVAL_NULL(EX_VAR(opline->result.var));
4801 		} else {
4802 			retval = zobj->handlers->read_property(container, offset, BP_VAR_R, cache_slot, EX_VAR(opline->result.var));
4803 
4804 			if (retval != EX_VAR(opline->result.var)) {
4805 				ZVAL_COPY_DEREF(EX_VAR(opline->result.var), retval);
4806 			} else if (UNEXPECTED(Z_ISREF_P(retval))) {
4807 				zend_unwrap_reference(retval);
4808 			}
4809 		}
4810 	} while (0);
4811 
4812 
4813 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
4814 }
4815 
4816 static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_IS_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
4817 {
4818 	USE_OPLINE
4819 
4820 	zval *container;
4821 
4822 	zval *offset;
4823 	void **cache_slot = NULL;
4824 
4825 	SAVE_OPLINE();
4826 	container = RT_CONSTANT(opline, opline->op1);
4827 
4828 	if (IS_CONST == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
4829 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
4830 	}
4831 
4832 	offset = RT_CONSTANT(opline, opline->op2);
4833 
4834 	if (IS_CONST == IS_CONST ||
4835 	    (IS_CONST != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
4836 		do {
4837 			if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
4838 				container = Z_REFVAL_P(container);
4839 				if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
4840 					break;
4841 				}
4842 			}
4843 			goto fetch_obj_is_no_object;
4844 		} while (0);
4845 	}
4846 
4847 	/* here we are sure we are dealing with an object */
4848 	do {
4849 		zend_object *zobj = Z_OBJ_P(container);
4850 		zval *retval;
4851 
4852 		if (IS_CONST == IS_CONST) {
4853 			cache_slot = CACHE_ADDR(opline->extended_value);
4854 
4855 			if (EXPECTED(zobj->ce == CACHED_PTR_EX(cache_slot))) {
4856 				uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
4857 
4858 				if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
4859 					retval = OBJ_PROP(zobj, prop_offset);
4860 					if (EXPECTED(Z_TYPE_P(retval) != IS_UNDEF)) {
4861 						ZVAL_COPY(EX_VAR(opline->result.var), retval);
4862 						break;
4863 					}
4864 				} else if (EXPECTED(zobj->properties != NULL)) {
4865 					if (!IS_UNKNOWN_DYNAMIC_PROPERTY_OFFSET(prop_offset)) {
4866 						uintptr_t idx = ZEND_DECODE_DYN_PROP_OFFSET(prop_offset);
4867 
4868 						if (EXPECTED(idx < zobj->properties->nNumUsed * sizeof(Bucket))) {
4869 							Bucket *p = (Bucket*)((char*)zobj->properties->arData + idx);
4870 
4871 							if (EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
4872 						        (EXPECTED(p->key == Z_STR_P(offset)) ||
4873 						         (EXPECTED(p->h == ZSTR_H(Z_STR_P(offset))) &&
4874 						          EXPECTED(p->key != NULL) &&
4875 						          EXPECTED(zend_string_equal_content(p->key, Z_STR_P(offset)))))) {
4876 								ZVAL_COPY(EX_VAR(opline->result.var), &p->val);
4877 								break;
4878 							}
4879 						}
4880 						CACHE_PTR_EX(cache_slot + 1, (void*)ZEND_DYNAMIC_PROPERTY_OFFSET);
4881 					}
4882 					retval = zend_hash_find_ex(zobj->properties, Z_STR_P(offset), 1);
4883 					if (EXPECTED(retval)) {
4884 						uintptr_t idx = (char*)retval - (char*)zobj->properties->arData;
4885 						CACHE_PTR_EX(cache_slot + 1, (void*)ZEND_ENCODE_DYN_PROP_OFFSET(idx));
4886 						ZVAL_COPY(EX_VAR(opline->result.var), retval);
4887 						break;
4888 					}
4889 				}
4890 			}
4891 		}
4892 
4893 		if (UNEXPECTED(zobj->handlers->read_property == NULL)) {
4894 fetch_obj_is_no_object:
4895 			ZVAL_NULL(EX_VAR(opline->result.var));
4896 		} else {
4897 
4898 			retval = zobj->handlers->read_property(container, offset, BP_VAR_IS, cache_slot, EX_VAR(opline->result.var));
4899 
4900 			if (retval != EX_VAR(opline->result.var)) {
4901 				ZVAL_COPY(EX_VAR(opline->result.var), retval);
4902 			}
4903 		}
4904 	} while (0);
4905 
4906 
4907 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
4908 }
4909 
4910 static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
4911 {
4912 	if (UNEXPECTED(ZEND_CALL_INFO(EX(call)) & ZEND_CALL_SEND_ARG_BY_REF)) {
4913 		/* Behave like FETCH_OBJ_W */
4914 		if ((IS_CONST & (IS_CONST|IS_TMP_VAR))) {
4915 			ZEND_VM_TAIL_CALL(zend_use_tmp_in_write_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
4916 		}
4917 
4918 		ZEND_VM_TAIL_CALL(ZEND_NULL_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
4919 	} else {
4920 		ZEND_VM_TAIL_CALL(ZEND_FETCH_OBJ_R_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
4921 	}
4922 }
4923 
4924 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_LIST_R_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
4925 {
4926 	USE_OPLINE
4927 
4928 	zval *container;
4929 
4930 	SAVE_OPLINE();
4931 	container = RT_CONSTANT(opline, opline->op1);
4932 	zend_fetch_dimension_address_LIST_r(container, RT_CONSTANT(opline, opline->op2), IS_CONST OPLINE_CC EXECUTE_DATA_CC);
4933 
4934 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
4935 }
4936 
4937 static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FAST_CONCAT_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
4938 {
4939 	USE_OPLINE
4940 
4941 	zval *op1, *op2;
4942 	zend_string *op1_str, *op2_str, *str;
4943 
4944 
4945 	op1 = RT_CONSTANT(opline, opline->op1);
4946 	op2 = RT_CONSTANT(opline, opline->op2);
4947 	if ((IS_CONST == IS_CONST || EXPECTED(Z_TYPE_P(op1) == IS_STRING)) &&
4948 	    (IS_CONST == IS_CONST || EXPECTED(Z_TYPE_P(op2) == IS_STRING))) {
4949 		zend_string *op1_str = Z_STR_P(op1);
4950 		zend_string *op2_str = Z_STR_P(op2);
4951 		zend_string *str;
4952 
4953 		if (IS_CONST != IS_CONST && UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
4954 			if (IS_CONST == IS_CONST || IS_CONST == IS_CV) {
4955 				ZVAL_STR_COPY(EX_VAR(opline->result.var), op2_str);
4956 			} else {
4957 				ZVAL_STR(EX_VAR(opline->result.var), op2_str);
4958 			}
4959 
4960 		} else if (IS_CONST != IS_CONST && UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
4961 			if (IS_CONST == IS_CONST || IS_CONST == IS_CV) {
4962 				ZVAL_STR_COPY(EX_VAR(opline->result.var), op1_str);
4963 			} else {
4964 				ZVAL_STR(EX_VAR(opline->result.var), op1_str);
4965 			}
4966 
4967 		} else if (IS_CONST != IS_CONST && IS_CONST != IS_CV &&
4968 		    !ZSTR_IS_INTERNED(op1_str) && GC_REFCOUNT(op1_str) == 1) {
4969 		    size_t len = ZSTR_LEN(op1_str);
4970 
4971 			str = zend_string_extend(op1_str, len + ZSTR_LEN(op2_str), 0);
4972 			memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
4973 			ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
4974 
4975 		} else {
4976 			str = zend_string_alloc(ZSTR_LEN(op1_str) + ZSTR_LEN(op2_str), 0);
4977 			memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
4978 			memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
4979 			ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
4980 
4981 
4982 		}
4983 		ZEND_VM_NEXT_OPCODE();
4984 	}
4985 
4986 	SAVE_OPLINE();
4987 	if (IS_CONST == IS_CONST) {
4988 		op1_str = Z_STR_P(op1);
4989 	} else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
4990 		op1_str = zend_string_copy(Z_STR_P(op1));
4991 	} else {
4992 		if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
4993 			GET_OP1_UNDEF_CV(op1, BP_VAR_R);
4994 		}
4995 		op1_str = zval_get_string_func(op1);
4996 	}
4997 	if (IS_CONST == IS_CONST) {
4998 		op2_str = Z_STR_P(op2);
4999 	} else if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
5000 		op2_str = zend_string_copy(Z_STR_P(op2));
5001 	} else {
5002 		if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
5003 			GET_OP2_UNDEF_CV(op2, BP_VAR_R);
5004 		}
5005 		op2_str = zval_get_string_func(op2);
5006 	}
5007 	do {
5008 		if (IS_CONST != IS_CONST) {
5009 			if (UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
5010 				if (IS_CONST == IS_CONST) {
5011 					if (UNEXPECTED(Z_REFCOUNTED_P(op2))) {
5012 						GC_ADDREF(op2_str);
5013 					}
5014 				}
5015 				ZVAL_STR(EX_VAR(opline->result.var), op2_str);
5016 				zend_string_release_ex(op1_str, 0);
5017 				break;
5018 			}
5019 		}
5020 		if (IS_CONST != IS_CONST) {
5021 			if (UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
5022 				if (IS_CONST == IS_CONST) {
5023 					if (UNEXPECTED(Z_REFCOUNTED_P(op1))) {
5024 						GC_ADDREF(op1_str);
5025 					}
5026 				}
5027 				ZVAL_STR(EX_VAR(opline->result.var), op1_str);
5028 				zend_string_release_ex(op2_str, 0);
5029 				break;
5030 			}
5031 		}
5032 		str = zend_string_alloc(ZSTR_LEN(op1_str) + ZSTR_LEN(op2_str), 0);
5033 		memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
5034 		memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
5035 		ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
5036 		if (IS_CONST != IS_CONST) {
5037 			zend_string_release_ex(op1_str, 0);
5038 		}
5039 		if (IS_CONST != IS_CONST) {
5040 			zend_string_release_ex(op2_str, 0);
5041 		}
5042 	} while (0);
5043 
5044 
5045 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
5046 }
5047 
5048 static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
5049 {
5050 	USE_OPLINE
5051 	zval *function_name;
5052 	zend_free_op free_op1;
5053 	zval *object;
5054 	zend_function *fbc;
5055 	zend_class_entry *called_scope;
5056 	zend_object *obj;
5057 	zend_execute_data *call;
5058 	uint32_t call_info;
5059 
5060 	SAVE_OPLINE();
5061 
5062 	object = RT_CONSTANT(opline, opline->op1);
5063 
5064 	if (IS_CONST == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
5065 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
5066 	}
5067 
5068 	if (IS_CONST != IS_CONST) {
5069 		function_name = RT_CONSTANT(opline, opline->op2);
5070 	}
5071 
5072 	if (IS_CONST != IS_CONST &&
5073 	    UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) {
5074 		do {
5075 			if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(function_name)) {
5076 				function_name = Z_REFVAL_P(function_name);
5077 				if (EXPECTED(Z_TYPE_P(function_name) == IS_STRING)) {
5078 					break;
5079 				}
5080 			} else if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
5081 				GET_OP2_UNDEF_CV(function_name, BP_VAR_R);
5082 				if (UNEXPECTED(EG(exception) != NULL)) {
5083 
5084 					HANDLE_EXCEPTION();
5085 				}
5086 			}
5087 			zend_throw_error(NULL, "Method name must be a string");
5088 
5089 
5090 			HANDLE_EXCEPTION();
5091 		} while (0);
5092 	}
5093 
5094 	if (IS_CONST != IS_UNUSED) {
5095 		do {
5096 			if (IS_CONST == IS_CONST || UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
5097 				if ((IS_CONST & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(object))) {
5098 					object = Z_REFVAL_P(object);
5099 					if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
5100 						break;
5101 					}
5102 				}
5103 				if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
5104 					object = GET_OP1_UNDEF_CV(object, BP_VAR_R);
5105 					if (UNEXPECTED(EG(exception) != NULL)) {
5106 						if (IS_CONST != IS_CONST) {
5107 
5108 						}
5109 						HANDLE_EXCEPTION();
5110 					}
5111 				}
5112 				if (IS_CONST == IS_CONST) {
5113 					function_name = RT_CONSTANT(opline, opline->op2);
5114 				}
5115 				zend_invalid_method_call(object, function_name);
5116 
5117 
5118 				HANDLE_EXCEPTION();
5119 			}
5120 		} while (0);
5121 	}
5122 
5123 	obj = Z_OBJ_P(object);
5124 	called_scope = obj->ce;
5125 
5126 	if (IS_CONST == IS_CONST &&
5127 	    EXPECTED(CACHED_PTR(opline->result.num) == called_scope)) {
5128 	    fbc = CACHED_PTR(opline->result.num + sizeof(void*));
5129 	} else {
5130 	    zend_object *orig_obj = obj;
5131 
5132 		if (UNEXPECTED(obj->handlers->get_method == NULL)) {
5133 			zend_throw_error(NULL, "Object does not support method calls");
5134 
5135 
5136 			HANDLE_EXCEPTION();
5137 		}
5138 
5139 		if (IS_CONST == IS_CONST) {
5140 			function_name = RT_CONSTANT(opline, opline->op2);
5141 		}
5142 
5143 		/* First, locate the function. */
5144 		fbc = obj->handlers->get_method(&obj, Z_STR_P(function_name), ((IS_CONST == IS_CONST) ? (RT_CONSTANT(opline, opline->op2) + 1) : NULL));
5145 		if (UNEXPECTED(fbc == NULL)) {
5146 			if (EXPECTED(!EG(exception))) {
5147 				zend_undefined_method(obj->ce, Z_STR_P(function_name));
5148 			}
5149 
5150 
5151 			HANDLE_EXCEPTION();
5152 		}
5153 		if (IS_CONST == IS_CONST &&
5154 		    EXPECTED(fbc->type <= ZEND_USER_FUNCTION) &&
5155 		    EXPECTED(!(fbc->common.fn_flags & (ZEND_ACC_CALL_VIA_TRAMPOLINE|ZEND_ACC_NEVER_CACHE))) &&
5156 		    EXPECTED(obj == orig_obj)) {
5157 			CACHE_POLYMORPHIC_PTR(opline->result.num, called_scope, fbc);
5158 		}
5159 		if ((IS_CONST & (IS_VAR|IS_TMP_VAR)) && UNEXPECTED(obj != orig_obj)) {
5160 			/* Reset "object" to trigger reference counting */
5161 			object = NULL;
5162 		}
5163 		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!fbc->op_array.run_time_cache)) {
5164 			init_func_run_time_cache(&fbc->op_array);
5165 		}
5166 	}
5167 
5168 	if (IS_CONST != IS_CONST) {
5169 
5170 	}
5171 
5172 	call_info = ZEND_CALL_NESTED_FUNCTION;
5173 	if (UNEXPECTED((fbc->common.fn_flags & ZEND_ACC_STATIC) != 0)) {
5174 		obj = NULL;
5175 
5176 		if ((IS_CONST & (IS_VAR|IS_TMP_VAR)) && UNEXPECTED(EG(exception))) {
5177 			HANDLE_EXCEPTION();
5178 		}
5179 	} else if (IS_CONST & (IS_VAR|IS_TMP_VAR|IS_CV)) {
5180 		/* CV may be changed indirectly (e.g. when it's a reference) */
5181 		call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_RELEASE_THIS;
5182 		if (IS_CONST == IS_CV) {
5183 			GC_ADDREF(obj); /* For $this pointer */
5184 		} else if (free_op1 != object) {
5185 			GC_ADDREF(obj); /* For $this pointer */
5186 
5187 		}
5188 	}
5189 
5190 	call = zend_vm_stack_push_call_frame(call_info,
5191 		fbc, opline->extended_value, called_scope, obj);
5192 	call->prev_execute_data = EX(call);
5193 	EX(call) = call;
5194 
5195 	ZEND_VM_NEXT_OPCODE();
5196 }
5197 
5198 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
5199 {
5200 	USE_OPLINE
5201 	zval *function_name;
5202 	zend_class_entry *ce;
5203 	zend_object *object;
5204 	zend_function *fbc;
5205 	zend_execute_data *call;
5206 
5207 	SAVE_OPLINE();
5208 
5209 	if (IS_CONST == IS_CONST) {
5210 		/* no function found. try a static method in class */
5211 		ce = CACHED_PTR(opline->result.num);
5212 		if (UNEXPECTED(ce == NULL)) {
5213 			ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), RT_CONSTANT(opline, opline->op1) + 1, ZEND_FETCH_CLASS_DEFAULT |  ZEND_FETCH_CLASS_EXCEPTION);
5214 			if (UNEXPECTED(ce == NULL)) {
5215 				ZEND_ASSERT(EG(exception));
5216 
5217 				HANDLE_EXCEPTION();
5218 			}
5219 			if (IS_CONST != IS_CONST) {
5220 				CACHE_PTR(opline->result.num, ce);
5221 			}
5222 		}
5223 	} else if (IS_CONST == IS_UNUSED) {
5224 		ce = zend_fetch_class(NULL, opline->op1.num);
5225 		if (UNEXPECTED(ce == NULL)) {
5226 			ZEND_ASSERT(EG(exception));
5227 
5228 			HANDLE_EXCEPTION();
5229 		}
5230 	} else {
5231 		ce = Z_CE_P(EX_VAR(opline->op1.var));
5232 	}
5233 
5234 	if (IS_CONST == IS_CONST &&
5235 	    IS_CONST == IS_CONST &&
5236 	    EXPECTED((fbc = CACHED_PTR(opline->result.num + sizeof(void*))) != NULL)) {
5237 		/* nothing to do */
5238 	} else if (IS_CONST != IS_CONST &&
5239 	           IS_CONST == IS_CONST &&
5240 	           EXPECTED(CACHED_PTR(opline->result.num) == ce)) {
5241 		fbc = CACHED_PTR(opline->result.num + sizeof(void*));
5242 	} else if (IS_CONST != IS_UNUSED) {
5243 
5244 
5245 		function_name = RT_CONSTANT(opline, opline->op2);
5246 		if (IS_CONST != IS_CONST) {
5247 			if (UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) {
5248 				do {
5249 					if (IS_CONST & (IS_VAR|IS_CV) && Z_ISREF_P(function_name)) {
5250 						function_name = Z_REFVAL_P(function_name);
5251 						if (EXPECTED(Z_TYPE_P(function_name) == IS_STRING)) {
5252 							break;
5253 						}
5254 					} else if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
5255 						GET_OP2_UNDEF_CV(function_name, BP_VAR_R);
5256 						if (UNEXPECTED(EG(exception) != NULL)) {
5257 							HANDLE_EXCEPTION();
5258 						}
5259 					}
5260 					zend_throw_error(NULL, "Function name must be a string");
5261 
5262 					HANDLE_EXCEPTION();
5263 				} while (0);
5264 			}
5265 		}
5266 
5267 		if (ce->get_static_method) {
5268 			fbc = ce->get_static_method(ce, Z_STR_P(function_name));
5269 		} else {
5270 			fbc = zend_std_get_static_method(ce, Z_STR_P(function_name), ((IS_CONST == IS_CONST) ? (RT_CONSTANT(opline, opline->op2) + 1) : NULL));
5271 		}
5272 		if (UNEXPECTED(fbc == NULL)) {
5273 			if (EXPECTED(!EG(exception))) {
5274 				zend_undefined_method(ce, Z_STR_P(function_name));
5275 			}
5276 
5277 			HANDLE_EXCEPTION();
5278 		}
5279 		if (IS_CONST == IS_CONST &&
5280 		    EXPECTED(fbc->type <= ZEND_USER_FUNCTION) &&
5281 		    EXPECTED(!(fbc->common.fn_flags & (ZEND_ACC_CALL_VIA_TRAMPOLINE|ZEND_ACC_NEVER_CACHE)))) {
5282 			CACHE_POLYMORPHIC_PTR(opline->result.num, ce, fbc);
5283 		}
5284 		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!fbc->op_array.run_time_cache)) {
5285 			init_func_run_time_cache(&fbc->op_array);
5286 		}
5287 		if (IS_CONST != IS_CONST) {
5288 
5289 		}
5290 	} else {
5291 		if (UNEXPECTED(ce->constructor == NULL)) {
5292 			zend_throw_error(NULL, "Cannot call constructor");
5293 			HANDLE_EXCEPTION();
5294 		}
5295 		if (Z_TYPE(EX(This)) == IS_OBJECT && Z_OBJ(EX(This))->ce != ce->constructor->common.scope && (ce->constructor->common.fn_flags & ZEND_ACC_PRIVATE)) {
5296 			zend_throw_error(NULL, "Cannot call private %s::__construct()", ZSTR_VAL(ce->name));
5297 			HANDLE_EXCEPTION();
5298 		}
5299 		fbc = ce->constructor;
5300 		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!fbc->op_array.run_time_cache)) {
5301 			init_func_run_time_cache(&fbc->op_array);
5302 		}
5303 	}
5304 
5305 	object = NULL;
5306 	if (!(fbc->common.fn_flags & ZEND_ACC_STATIC)) {
5307 		if (Z_TYPE(EX(This)) == IS_OBJECT && instanceof_function(Z_OBJCE(EX(This)), ce)) {
5308 			object = Z_OBJ(EX(This));
5309 			ce = object->ce;
5310 		} else {
5311 			zend_non_static_method_call(fbc);
5312 			if (UNEXPECTED(EG(exception) != NULL)) {
5313 				HANDLE_EXCEPTION();
5314 			}
5315 		}
5316 	}
5317 
5318 	if (IS_CONST == IS_UNUSED) {
5319 		/* previous opcode is ZEND_FETCH_CLASS */
5320 		if ((opline->op1.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_PARENT ||
5321 		    (opline->op1.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_SELF) {
5322 			if (Z_TYPE(EX(This)) == IS_OBJECT) {
5323 				ce = Z_OBJCE(EX(This));
5324 			} else {
5325 				ce = Z_CE(EX(This));
5326 			}
5327 		}
5328 	}
5329 
5330 	call = zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_FUNCTION,
5331 		fbc, opline->extended_value, ce, object);
5332 	call->prev_execute_data = EX(call);
5333 	EX(call) = call;
5334 
5335 	ZEND_VM_NEXT_OPCODE();
5336 }
5337 
5338 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_USER_CALL_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
5339 {
5340 	USE_OPLINE
5341 
5342 	zval *function_name;
5343 	zend_fcall_info_cache fcc;
5344 	char *error = NULL;
5345 	zend_function *func;
5346 	zend_class_entry *called_scope;
5347 	zend_object *object;
5348 	zend_execute_data *call;
5349 	uint32_t call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_DYNAMIC;
5350 
5351 	SAVE_OPLINE();
5352 	function_name = RT_CONSTANT(opline, opline->op2);
5353 	if (zend_is_callable_ex(function_name, NULL, 0, NULL, &fcc, &error)) {
5354 		func = fcc.function_handler;
5355 		called_scope = fcc.called_scope;
5356 		object = fcc.object;
5357 		if (error) {
5358 			efree(error);
5359 			/* This is the only soft error is_callable() can generate */
5360 			zend_non_static_method_call(func);
5361 			if (UNEXPECTED(EG(exception) != NULL)) {
5362 
5363 				HANDLE_EXCEPTION();
5364 			}
5365 		}
5366 		if (func->common.fn_flags & ZEND_ACC_CLOSURE) {
5367 			/* Delay closure destruction until its invocation */
5368 			GC_ADDREF(ZEND_CLOSURE_OBJECT(func));
5369 			call_info |= ZEND_CALL_CLOSURE;
5370 			if (func->common.fn_flags & ZEND_ACC_FAKE_CLOSURE) {
5371 				call_info |= ZEND_CALL_FAKE_CLOSURE;
5372 			}
5373 		} else if (object) {
5374 			call_info |= ZEND_CALL_RELEASE_THIS;
5375 			GC_ADDREF(object); /* For $this pointer */
5376 		}
5377 
5378 		if ((IS_CONST & (IS_TMP_VAR|IS_VAR)) && UNEXPECTED(EG(exception))) {
5379 			if (call_info & ZEND_CALL_CLOSURE) {
5380 				zend_object_release(ZEND_CLOSURE_OBJECT(func));
5381 			}
5382 			if (call_info & ZEND_CALL_RELEASE_THIS) {
5383 				zend_object_release(object);
5384 			}
5385 			HANDLE_EXCEPTION();
5386 		}
5387 
5388 		if (EXPECTED(func->type == ZEND_USER_FUNCTION) && UNEXPECTED(!func->op_array.run_time_cache)) {
5389 			init_func_run_time_cache(&func->op_array);
5390 		}
5391 	} else {
5392 		zend_internal_type_error(EX_USES_STRICT_TYPES(), "%s() expects parameter 1 to be a valid callback, %s", Z_STRVAL_P(RT_CONSTANT(opline, opline->op1)), error);
5393 		efree(error);
5394 
5395 		if (UNEXPECTED(EG(exception))) {
5396 			HANDLE_EXCEPTION();
5397 		}
5398 		func = (zend_function*)&zend_pass_function;
5399 		called_scope = NULL;
5400 		object = NULL;
5401 	}
5402 
5403 	call = zend_vm_stack_push_call_frame(call_info,
5404 		func, opline->extended_value, called_scope, object);
5405 	call->prev_execute_data = EX(call);
5406 	EX(call) = call;
5407 
5408 	ZEND_VM_NEXT_OPCODE();
5409 }
5410 
5411 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_CLASS_CONSTANT_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
5412 {
5413 	zend_class_entry *ce, *scope;
5414 	zend_class_constant *c;
5415 	zval *value, *zv;
5416 	USE_OPLINE
5417 
5418 	SAVE_OPLINE();
5419 
5420 	do {
5421 		if (IS_CONST == IS_CONST) {
5422 			if (EXPECTED(CACHED_PTR(opline->extended_value + sizeof(void*)))) {
5423 				value = CACHED_PTR(opline->extended_value + sizeof(void*));
5424 				break;
5425 			} else if (EXPECTED(CACHED_PTR(opline->extended_value))) {
5426 				ce = CACHED_PTR(opline->extended_value);
5427 			} else {
5428 				ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), RT_CONSTANT(opline, opline->op1) + 1, ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
5429 				if (UNEXPECTED(ce == NULL)) {
5430 					ZEND_ASSERT(EG(exception));
5431 					ZVAL_UNDEF(EX_VAR(opline->result.var));
5432 					HANDLE_EXCEPTION();
5433 				}
5434 			}
5435 		} else {
5436 			if (IS_CONST == IS_UNUSED) {
5437 				ce = zend_fetch_class(NULL, opline->op1.num);
5438 				if (UNEXPECTED(ce == NULL)) {
5439 					ZEND_ASSERT(EG(exception));
5440 					ZVAL_UNDEF(EX_VAR(opline->result.var));
5441 					HANDLE_EXCEPTION();
5442 				}
5443 			} else {
5444 				ce = Z_CE_P(EX_VAR(opline->op1.var));
5445 			}
5446 			if (EXPECTED(CACHED_PTR(opline->extended_value) == ce)) {
5447 				value = CACHED_PTR(opline->extended_value + sizeof(void*));
5448 				break;
5449 			}
5450 		}
5451 
5452 		zv = zend_hash_find_ex(&ce->constants_table, Z_STR_P(RT_CONSTANT(opline, opline->op2)), 1);
5453 		if (EXPECTED(zv != NULL)) {
5454 			c = Z_PTR_P(zv);
5455 			scope = EX(func)->op_array.scope;
5456 			if (!zend_verify_const_access(c, scope)) {
5457 				zend_throw_error(NULL, "Cannot access %s const %s::%s", zend_visibility_string(Z_ACCESS_FLAGS(c->value)), ZSTR_VAL(ce->name), Z_STRVAL_P(RT_CONSTANT(opline, opline->op2)));
5458 				ZVAL_UNDEF(EX_VAR(opline->result.var));
5459 				HANDLE_EXCEPTION();
5460 			}
5461 			value = &c->value;
5462 			if (Z_TYPE_P(value) == IS_CONSTANT_AST) {
5463 				zval_update_constant_ex(value, c->ce);
5464 				if (UNEXPECTED(EG(exception) != NULL)) {
5465 					ZVAL_UNDEF(EX_VAR(opline->result.var));
5466 					HANDLE_EXCEPTION();
5467 				}
5468 			}
5469 			CACHE_POLYMORPHIC_PTR(opline->extended_value, ce, value);
5470 		} else {
5471 			zend_throw_error(NULL, "Undefined class constant '%s'", Z_STRVAL_P(RT_CONSTANT(opline, opline->op2)));
5472 			ZVAL_UNDEF(EX_VAR(opline->result.var));
5473 			HANDLE_EXCEPTION();
5474 		}
5475 	} while (0);
5476 
5477 	ZVAL_COPY_OR_DUP(EX_VAR(opline->result.var), value);
5478 
5479 	ZEND_VM_NEXT_OPCODE();
5480 }
5481 
5482 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
5483 {
5484 	USE_OPLINE
5485 
5486 	zval *expr_ptr, new_expr;
5487 
5488 	SAVE_OPLINE();
5489 	if ((IS_CONST == IS_VAR || IS_CONST == IS_CV) &&
5490 	    UNEXPECTED(opline->extended_value & ZEND_ARRAY_ELEMENT_REF)) {
5491 		expr_ptr = NULL;
5492 		if (Z_ISREF_P(expr_ptr)) {
5493 			Z_ADDREF_P(expr_ptr);
5494 		} else {
5495 			ZVAL_MAKE_REF_EX(expr_ptr, 2);
5496 		}
5497 
5498 	} else {
5499 		expr_ptr = RT_CONSTANT(opline, opline->op1);
5500 		if (IS_CONST == IS_TMP_VAR) {
5501 			/* pass */
5502 		} else if (IS_CONST == IS_CONST) {
5503 			Z_TRY_ADDREF_P(expr_ptr);
5504 		} else if (IS_CONST == IS_CV) {
5505 			ZVAL_DEREF(expr_ptr);
5506 			Z_TRY_ADDREF_P(expr_ptr);
5507 		} else /* if (IS_CONST == IS_VAR) */ {
5508 			if (UNEXPECTED(Z_ISREF_P(expr_ptr))) {
5509 				zend_refcounted *ref = Z_COUNTED_P(expr_ptr);
5510 
5511 				expr_ptr = Z_REFVAL_P(expr_ptr);
5512 				if (UNEXPECTED(GC_DELREF(ref) == 0)) {
5513 					ZVAL_COPY_VALUE(&new_expr, expr_ptr);
5514 					expr_ptr = &new_expr;
5515 					efree_size(ref, sizeof(zend_reference));
5516 				} else if (Z_OPT_REFCOUNTED_P(expr_ptr)) {
5517 					Z_ADDREF_P(expr_ptr);
5518 				}
5519 			}
5520 		}
5521 	}
5522 
5523 	if (IS_CONST != IS_UNUSED) {
5524 
5525 		zval *offset = RT_CONSTANT(opline, opline->op2);
5526 		zend_string *str;
5527 		zend_ulong hval;
5528 
5529 add_again:
5530 		if (EXPECTED(Z_TYPE_P(offset) == IS_STRING)) {
5531 			str = Z_STR_P(offset);
5532 			if (IS_CONST != IS_CONST) {
5533 				if (ZEND_HANDLE_NUMERIC(str, hval)) {
5534 					goto num_index;
5535 				}
5536 			}
5537 str_index:
5538 			zend_hash_update(Z_ARRVAL_P(EX_VAR(opline->result.var)), str, expr_ptr);
5539 		} else if (EXPECTED(Z_TYPE_P(offset) == IS_LONG)) {
5540 			hval = Z_LVAL_P(offset);
5541 num_index:
5542 			zend_hash_index_update(Z_ARRVAL_P(EX_VAR(opline->result.var)), hval, expr_ptr);
5543 		} else if ((IS_CONST & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
5544 			offset = Z_REFVAL_P(offset);
5545 			goto add_again;
5546 		} else if (Z_TYPE_P(offset) == IS_NULL) {
5547 			str = ZSTR_EMPTY_ALLOC();
5548 			goto str_index;
5549 		} else if (Z_TYPE_P(offset) == IS_DOUBLE) {
5550 			hval = zend_dval_to_lval(Z_DVAL_P(offset));
5551 			goto num_index;
5552 		} else if (Z_TYPE_P(offset) == IS_FALSE) {
5553 			hval = 0;
5554 			goto num_index;
5555 		} else if (Z_TYPE_P(offset) == IS_TRUE) {
5556 			hval = 1;
5557 			goto num_index;
5558 		} else if (IS_CONST == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
5559 			GET_OP2_UNDEF_CV(offset, BP_VAR_R);
5560 			str = ZSTR_EMPTY_ALLOC();
5561 			goto str_index;
5562 		} else {
5563 			zend_illegal_offset();
5564 			zval_ptr_dtor_nogc(expr_ptr);
5565 		}
5566 
5567 	} else {
5568 		if (!zend_hash_next_index_insert(Z_ARRVAL_P(EX_VAR(opline->result.var)), expr_ptr)) {
5569 			zend_cannot_add_element();
5570 			zval_ptr_dtor_nogc(expr_ptr);
5571 		}
5572 	}
5573 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
5574 }
5575 
5576 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_ARRAY_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
5577 {
5578 	zval *array;
5579 	uint32_t size;
5580 	USE_OPLINE
5581 
5582 	array = EX_VAR(opline->result.var);
5583 	if (IS_CONST != IS_UNUSED) {
5584 		size = opline->extended_value >> ZEND_ARRAY_SIZE_SHIFT;
5585 		ZVAL_ARR(array, zend_new_array(size));
5586 		/* Explicitly initialize array as not-packed if flag is set */
5587 		if (opline->extended_value & ZEND_ARRAY_NOT_PACKED) {
5588 			zend_hash_real_init_mixed(Z_ARRVAL_P(array));
5589 		}
5590 		ZEND_VM_TAIL_CALL(ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
5591 	} else {
5592 		ZVAL_EMPTY_ARRAY(array);
5593 		ZEND_VM_NEXT_OPCODE();
5594 	}
5595 }
5596 
5597 static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_UNSET_STATIC_PROP_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
5598 {
5599 	USE_OPLINE
5600 	zval *varname;
5601 	zend_string *name, *tmp_name;
5602 	zend_class_entry *ce;
5603 
5604 
5605 	SAVE_OPLINE();
5606 
5607 	if (IS_CONST == IS_CONST) {
5608 		ce = CACHED_PTR(opline->extended_value);
5609 		if (UNEXPECTED(ce == NULL)) {
5610 			ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op2)), RT_CONSTANT(opline, opline->op2) + 1, ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
5611 			if (UNEXPECTED(ce == NULL)) {
5612 				ZEND_ASSERT(EG(exception));
5613 
5614 				HANDLE_EXCEPTION();
5615 			}
5616 			/*CACHE_PTR(opline->extended_value, ce);*/
5617 		}
5618 	} else if (IS_CONST == IS_UNUSED) {
5619 		ce = zend_fetch_class(NULL, opline->op2.num);
5620 		if (UNEXPECTED(ce == NULL)) {
5621 			ZEND_ASSERT(EG(exception));
5622 
5623 			HANDLE_EXCEPTION();
5624 		}
5625 	} else {
5626 		ce = Z_CE_P(EX_VAR(opline->op2.var));
5627 	}
5628 
5629 	varname = RT_CONSTANT(opline, opline->op1);
5630 	if (IS_CONST == IS_CONST) {
5631 		name = Z_STR_P(varname);
5632 	} else if (EXPECTED(Z_TYPE_P(varname) == IS_STRING)) {
5633 		name = Z_STR_P(varname);
5634 		tmp_name = NULL;
5635 	} else {
5636 		if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(varname) == IS_UNDEF)) {
5637 			varname = GET_OP1_UNDEF_CV(varname, BP_VAR_R);
5638 		}
5639 		name = zval_get_tmp_string(varname, &tmp_name);
5640 	}
5641 
5642 	zend_std_unset_static_property(ce, name);
5643 
5644 	if (IS_CONST != IS_CONST) {
5645 		zend_tmp_string_release(tmp_name);
5646 	}
5647 
5648 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
5649 }
5650 
5651 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
5652 {
5653 	USE_OPLINE
5654 	zval *value;
5655 	int result;
5656 
5657 	zval *varname;
5658 	zend_string *name, *tmp_name;
5659 	zend_class_entry *ce;
5660 
5661 	SAVE_OPLINE();
5662 	if (IS_CONST == IS_CONST) {
5663 		if (IS_CONST == IS_CONST && EXPECTED((ce = CACHED_PTR(opline->extended_value & ~ZEND_ISEMPTY)) != NULL)) {
5664 			value = CACHED_PTR((opline->extended_value & ~ZEND_ISEMPTY) + sizeof(void*));
5665 			goto is_static_prop_return;
5666 		} else if (UNEXPECTED((ce = CACHED_PTR(opline->extended_value & ~ZEND_ISEMPTY)) == NULL)) {
5667 			ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op2)), RT_CONSTANT(opline, opline->op2) + 1, ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
5668 			if (UNEXPECTED(ce == NULL)) {
5669 				ZEND_ASSERT(EG(exception));
5670 				ZVAL_UNDEF(EX_VAR(opline->result.var));
5671 				HANDLE_EXCEPTION();
5672 			}
5673 			if (IS_CONST != IS_CONST) {
5674 				CACHE_PTR(opline->extended_value & ~ZEND_ISEMPTY, ce);
5675 			}
5676 		}
5677 	} else {
5678 		if (IS_CONST == IS_UNUSED) {
5679 			ce = zend_fetch_class(NULL, opline->op2.num);
5680 			if (UNEXPECTED(ce == NULL)) {
5681 				ZEND_ASSERT(EG(exception));
5682 
5683 				ZVAL_UNDEF(EX_VAR(opline->result.var));
5684 				HANDLE_EXCEPTION();
5685 			}
5686 		} else {
5687 			ce = Z_CE_P(EX_VAR(opline->op2.var));
5688 		}
5689 		if (IS_CONST == IS_CONST &&
5690 		    EXPECTED(CACHED_PTR(opline->extended_value & ~ZEND_ISEMPTY) == ce)) {
5691 
5692 			value = CACHED_PTR((opline->extended_value & ~ZEND_ISEMPTY) + sizeof(void*));
5693 			goto is_static_prop_return;
5694 		}
5695 	}
5696 
5697 	varname = RT_CONSTANT(opline, opline->op1);
5698 	if (IS_CONST == IS_CONST) {
5699 		name = Z_STR_P(varname);
5700 	} else {
5701 		name = zval_get_tmp_string(varname, &tmp_name);
5702 	}
5703 
5704 	value = zend_std_get_static_property(ce, name, 1);
5705 
5706 	if (IS_CONST == IS_CONST && value) {
5707 		CACHE_POLYMORPHIC_PTR(opline->extended_value & ~ZEND_ISEMPTY, ce, value);
5708 	}
5709 
5710 	if (IS_CONST != IS_CONST) {
5711 		zend_tmp_string_release(tmp_name);
5712 	}
5713 
5714 is_static_prop_return:
5715 	if (!(opline->extended_value & ZEND_ISEMPTY)) {
5716 		result = value && Z_TYPE_P(value) > IS_NULL &&
5717 		    (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL);
5718 	} else {
5719 		result = !value || !i_zend_is_true(value);
5720 	}
5721 
5722 	ZEND_VM_SMART_BRANCH(result, 1);
5723 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
5724 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
5725 }
5726 
5727 static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
5728 {
5729 	USE_OPLINE
5730 
5731 	zval *container;
5732 	int result;
5733 	zend_ulong hval;
5734 	zval *offset;
5735 
5736 	SAVE_OPLINE();
5737 	container = RT_CONSTANT(opline, opline->op1);
5738 	offset = RT_CONSTANT(opline, opline->op2);
5739 
5740 	if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
5741 		HashTable *ht;
5742 		zval *value;
5743 		zend_string *str;
5744 
5745 isset_dim_obj_array:
5746 		ht = Z_ARRVAL_P(container);
5747 isset_again:
5748 		if (EXPECTED(Z_TYPE_P(offset) == IS_STRING)) {
5749 			str = Z_STR_P(offset);
5750 			if (IS_CONST != IS_CONST) {
5751 				if (ZEND_HANDLE_NUMERIC(str, hval)) {
5752 					goto num_index_prop;
5753 				}
5754 			}
5755 			value = zend_hash_find_ex_ind(ht, str, IS_CONST == IS_CONST);
5756 		} else if (EXPECTED(Z_TYPE_P(offset) == IS_LONG)) {
5757 			hval = Z_LVAL_P(offset);
5758 num_index_prop:
5759 			value = zend_hash_index_find(ht, hval);
5760 		} else if ((IS_CONST & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(offset))) {
5761 			offset = Z_REFVAL_P(offset);
5762 			goto isset_again;
5763 		} else {
5764 			value = zend_find_array_dim_slow(ht, offset EXECUTE_DATA_CC);
5765 		}
5766 
5767 		if (!(opline->extended_value & ZEND_ISEMPTY)) {
5768 			/* > IS_NULL means not IS_UNDEF and not IS_NULL */
5769 			result = value != NULL && Z_TYPE_P(value) > IS_NULL &&
5770 			    (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL);
5771 		} else {
5772 			result = (value == NULL || !i_zend_is_true(value));
5773 		}
5774 		goto isset_dim_obj_exit;
5775 	} else if ((IS_CONST & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(container))) {
5776 		container = Z_REFVAL_P(container);
5777 		if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
5778 			goto isset_dim_obj_array;
5779 		}
5780 	}
5781 
5782 	if (IS_CONST == IS_CONST && Z_EXTRA_P(offset) == ZEND_EXTRA_VALUE) {
5783 		offset++;
5784 	}
5785 	if (!(opline->extended_value & ZEND_ISEMPTY)) {
5786 		result = zend_isset_dim_slow(container, offset EXECUTE_DATA_CC);
5787 	} else {
5788 		result = zend_isempty_dim_slow(container, offset EXECUTE_DATA_CC);
5789 	}
5790 
5791 isset_dim_obj_exit:
5792 
5793 
5794 	ZEND_VM_SMART_BRANCH(result, 1);
5795 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
5796 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
5797 }
5798 
5799 static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
5800 {
5801 	USE_OPLINE
5802 
5803 	zval *container;
5804 	int result;
5805 	zval *offset;
5806 
5807 	SAVE_OPLINE();
5808 	container = RT_CONSTANT(opline, opline->op1);
5809 
5810 	if (IS_CONST == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
5811 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
5812 	}
5813 
5814 	offset = RT_CONSTANT(opline, opline->op2);
5815 
5816 	if (IS_CONST == IS_CONST ||
5817 	    (IS_CONST != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
5818 		if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
5819 			container = Z_REFVAL_P(container);
5820 			if (UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) {
5821 				goto isset_no_object;
5822 			}
5823 		} else {
5824 			goto isset_no_object;
5825 		}
5826 	}
5827 	if (UNEXPECTED(!Z_OBJ_HT_P(container)->has_property)) {
5828 		zend_wrong_property_check(offset);
5829 isset_no_object:
5830 		result = (opline->extended_value & ZEND_ISEMPTY);
5831 	} else {
5832 		result =
5833 			(opline->extended_value & ZEND_ISEMPTY) ^
5834 			Z_OBJ_HT_P(container)->has_property(container, offset, (opline->extended_value & ZEND_ISEMPTY), ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_ISEMPTY) : NULL));
5835 	}
5836 
5837 
5838 	ZEND_VM_SMART_BRANCH(result, 1);
5839 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
5840 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
5841 }
5842 
5843 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_DECLARE_INHERITED_CLASS_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
5844 {
5845 	zend_class_entry *parent;
5846 	USE_OPLINE
5847 
5848 	SAVE_OPLINE();
5849 	parent = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op2)),
5850 	                                 RT_CONSTANT(opline, opline->op2) + 1,
5851 	                                 ZEND_FETCH_CLASS_EXCEPTION);
5852 	if (UNEXPECTED(parent == NULL)) {
5853 		ZEND_ASSERT(EG(exception));
5854 		HANDLE_EXCEPTION();
5855 	}
5856 	Z_CE_P(EX_VAR(opline->result.var)) = do_bind_inherited_class(&EX(func)->op_array, opline, EG(class_table), parent, 0);
5857 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
5858 }
5859 
5860 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_DECLARE_INHERITED_CLASS_DELAYED_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
5861 {
5862 	USE_OPLINE
5863 	zval *zce, *orig_zce;
5864 	zend_class_entry *parent;
5865 
5866 	SAVE_OPLINE();
5867 	if ((zce = zend_hash_find_ex(EG(class_table), Z_STR_P(RT_CONSTANT(opline, opline->op1)), 1)) == NULL ||
5868 	    ((orig_zce = zend_hash_find_ex(EG(class_table), Z_STR_P(RT_CONSTANT(opline, opline->op1)+1), 1)) != NULL &&
5869 	     Z_CE_P(zce) != Z_CE_P(orig_zce))) {
5870 		parent = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op2)),
5871 	                                 RT_CONSTANT(opline, opline->op2) + 1,
5872 	                                 ZEND_FETCH_CLASS_EXCEPTION);
5873 		if (UNEXPECTED(parent == NULL)) {
5874 			ZEND_ASSERT(EG(exception));
5875 			HANDLE_EXCEPTION();
5876 		}
5877 		do_bind_inherited_class(&EX(func)->op_array, opline, EG(class_table), parent, 0);
5878 	}
5879 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
5880 }
5881 
5882 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_DECLARE_ANON_INHERITED_CLASS_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
5883 {
5884 	zval *zv;
5885 	zend_class_entry *ce, *parent;
5886 	USE_OPLINE
5887 
5888 	SAVE_OPLINE();
5889 	zv = zend_hash_find_ex(EG(class_table), Z_STR_P(RT_CONSTANT(opline, opline->op1)), 1);
5890 	ZEND_ASSERT(zv != NULL);
5891 	ce = Z_CE_P(zv);
5892 	Z_CE_P(EX_VAR(opline->result.var)) = ce;
5893 
5894 	if (ce->ce_flags & ZEND_ACC_ANON_BOUND) {
5895 		ZEND_VM_SET_RELATIVE_OPCODE(opline, opline->extended_value);
5896 		ZEND_VM_CONTINUE();
5897 	}
5898 
5899 	parent = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op2)),
5900 	                                 RT_CONSTANT(opline, opline->op2) + 1,
5901 	                                 ZEND_FETCH_CLASS_EXCEPTION);
5902 	if (UNEXPECTED(parent == NULL)) {
5903 		ZEND_ASSERT(EG(exception));
5904 		HANDLE_EXCEPTION();
5905 	}
5906 
5907 	zend_do_inheritance(ce, parent);
5908 	ce->ce_flags |= ZEND_ACC_ANON_BOUND;
5909 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
5910 }
5911 
5912 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_DECLARE_CONST_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
5913 {
5914 	USE_OPLINE
5915 
5916 	zval *name;
5917 	zval *val;
5918 	zend_constant c;
5919 
5920 	SAVE_OPLINE();
5921 	name  = RT_CONSTANT(opline, opline->op1);
5922 	val   = RT_CONSTANT(opline, opline->op2);
5923 
5924 	ZVAL_COPY(&c.value, val);
5925 	if (Z_OPT_CONSTANT(c.value)) {
5926 		if (UNEXPECTED(zval_update_constant_ex(&c.value, EX(func)->op_array.scope) != SUCCESS)) {
5927 			zval_ptr_dtor_nogc(&c.value);
5928 
5929 
5930 			HANDLE_EXCEPTION();
5931 		}
5932 	}
5933 	/* non persistent, case sensitive */
5934 	ZEND_CONSTANT_SET_FLAGS(&c, CONST_CS, PHP_USER_CONSTANT);
5935 	c.name = zend_string_copy(Z_STR_P(name));
5936 
5937 	if (zend_register_constant(&c) == FAILURE) {
5938 	}
5939 
5940 
5941 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
5942 }
5943 
5944 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_YIELD_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
5945 {
5946 	USE_OPLINE
5947 
5948 	zend_generator *generator = zend_get_running_generator(EXECUTE_DATA_C);
5949 
5950 	SAVE_OPLINE();
5951 	if (UNEXPECTED(generator->flags & ZEND_GENERATOR_FORCED_CLOSE)) {
5952 		ZEND_VM_TAIL_CALL(zend_yield_in_closed_generator_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
5953 	}
5954 
5955 	/* Destroy the previously yielded value */
5956 	zval_ptr_dtor(&generator->value);
5957 
5958 	/* Destroy the previously yielded key */
5959 	zval_ptr_dtor(&generator->key);
5960 
5961 	/* Set the new yielded value */
5962 	if (IS_CONST != IS_UNUSED) {
5963 
5964 
5965 		if (UNEXPECTED(EX(func)->op_array.fn_flags & ZEND_ACC_RETURN_REFERENCE)) {
5966 			/* Constants and temporary variables aren't yieldable by reference,
5967 			 * but we still allow them with a notice. */
5968 			if (IS_CONST & (IS_CONST|IS_TMP_VAR)) {
5969 				zval *value;
5970 
5971 				zend_error(E_NOTICE, "Only variable references should be yielded by reference");
5972 
5973 				value = RT_CONSTANT(opline, opline->op1);
5974 				ZVAL_COPY_VALUE(&generator->value, value);
5975 				if (IS_CONST == IS_CONST) {
5976 					if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
5977 						Z_ADDREF(generator->value);
5978 					}
5979 				}
5980 			} else {
5981 				zval *value_ptr = NULL;
5982 
5983 				/* If a function call result is yielded and the function did
5984 				 * not return by reference we throw a notice. */
5985 				if (IS_CONST == IS_VAR &&
5986 				    (value_ptr == &EG(uninitialized_zval) ||
5987 				     (opline->extended_value == ZEND_RETURNS_FUNCTION &&
5988 				      !Z_ISREF_P(value_ptr)))) {
5989 					zend_error(E_NOTICE, "Only variable references should be yielded by reference");
5990 					ZVAL_COPY(&generator->value, value_ptr);
5991 				} else {
5992 					if (Z_ISREF_P(value_ptr)) {
5993 						Z_ADDREF_P(value_ptr);
5994 					} else {
5995 						ZVAL_MAKE_REF_EX(value_ptr, 2);
5996 					}
5997 					ZVAL_REF(&generator->value, Z_REF_P(value_ptr));
5998 				}
5999 
6000 			}
6001 		} else {
6002 			zval *value = RT_CONSTANT(opline, opline->op1);
6003 
6004 			/* Consts, temporary variables and references need copying */
6005 			if (IS_CONST == IS_CONST) {
6006 				ZVAL_COPY_VALUE(&generator->value, value);
6007 				if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
6008 					Z_ADDREF(generator->value);
6009 				}
6010 			} else if (IS_CONST == IS_TMP_VAR) {
6011 				ZVAL_COPY_VALUE(&generator->value, value);
6012             } else if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
6013 				ZVAL_COPY(&generator->value, Z_REFVAL_P(value));
6014 
6015 			} else {
6016 				ZVAL_COPY_VALUE(&generator->value, value);
6017 				if (IS_CONST == IS_CV) {
6018 					if (Z_OPT_REFCOUNTED_P(value)) Z_ADDREF_P(value);
6019 				}
6020 			}
6021 		}
6022 	} else {
6023 		/* If no value was specified yield null */
6024 		ZVAL_NULL(&generator->value);
6025 	}
6026 
6027 	/* Set the new yielded key */
6028 	if (IS_CONST != IS_UNUSED) {
6029 
6030 		zval *key = RT_CONSTANT(opline, opline->op2);
6031 
6032 		/* Consts, temporary variables and references need copying */
6033 		if (IS_CONST == IS_CONST) {
6034 			ZVAL_COPY_VALUE(&generator->key, key);
6035 			if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->key))) {
6036 				Z_ADDREF(generator->key);
6037 			}
6038 		} else if (IS_CONST == IS_TMP_VAR) {
6039 			ZVAL_COPY_VALUE(&generator->key, key);
6040 		} else if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(key)) {
6041 			ZVAL_COPY(&generator->key, Z_REFVAL_P(key));
6042 
6043 		} else {
6044 			ZVAL_COPY_VALUE(&generator->key, key);
6045 			if (IS_CONST == IS_CV) {
6046 				if (Z_OPT_REFCOUNTED_P(key)) Z_ADDREF_P(key);
6047 			}
6048 		}
6049 
6050 		if (Z_TYPE(generator->key) == IS_LONG
6051 		    && Z_LVAL(generator->key) > generator->largest_used_integer_key
6052 		) {
6053 			generator->largest_used_integer_key = Z_LVAL(generator->key);
6054 		}
6055 	} else {
6056 		/* If no key was specified we use auto-increment keys */
6057 		generator->largest_used_integer_key++;
6058 		ZVAL_LONG(&generator->key, generator->largest_used_integer_key);
6059 	}
6060 
6061 	if (RETURN_VALUE_USED(opline)) {
6062 		/* If the return value of yield is used set the send
6063 		 * target and initialize it to NULL */
6064 		generator->send_target = EX_VAR(opline->result.var);
6065 		ZVAL_NULL(generator->send_target);
6066 	} else {
6067 		generator->send_target = NULL;
6068 	}
6069 
6070 	/* We increment to the next op, so we are at the correct position when the
6071 	 * generator is resumed. */
6072 	ZEND_VM_INC_OPCODE();
6073 
6074 	/* The GOTO VM uses a local opline variable. We need to set the opline
6075 	 * variable in execute_data so we don't resume at an old position. */
6076 	SAVE_OPLINE();
6077 
6078 	ZEND_VM_RETURN();
6079 }
6080 
6081 static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SWITCH_LONG_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
6082 {
6083 	USE_OPLINE
6084 
6085 	zval *op, *jump_zv;
6086 	HashTable *jumptable;
6087 
6088 	op = RT_CONSTANT(opline, opline->op1);
6089 	jumptable = Z_ARRVAL_P(RT_CONSTANT(opline, opline->op2));
6090 
6091 	if (Z_TYPE_P(op) != IS_LONG) {
6092 		ZVAL_DEREF(op);
6093 		if (Z_TYPE_P(op) != IS_LONG) {
6094 			/* Wrong type, fall back to ZEND_CASE chain */
6095 			ZEND_VM_NEXT_OPCODE();
6096 		}
6097 	}
6098 
6099 	jump_zv = zend_hash_index_find(jumptable, Z_LVAL_P(op));
6100 	if (jump_zv != NULL) {
6101 		ZEND_VM_SET_RELATIVE_OPCODE(opline, Z_LVAL_P(jump_zv));
6102 		ZEND_VM_CONTINUE();
6103 	} else {
6104 		/* default */
6105 		ZEND_VM_SET_RELATIVE_OPCODE(opline, opline->extended_value);
6106 		ZEND_VM_CONTINUE();
6107 	}
6108 }
6109 
6110 static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SWITCH_STRING_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
6111 {
6112 	USE_OPLINE
6113 
6114 	zval *op, *jump_zv;
6115 	HashTable *jumptable;
6116 
6117 	op = RT_CONSTANT(opline, opline->op1);
6118 	jumptable = Z_ARRVAL_P(RT_CONSTANT(opline, opline->op2));
6119 
6120 	if (Z_TYPE_P(op) != IS_STRING) {
6121 		if (IS_CONST == IS_CONST) {
6122 			/* Wrong type, fall back to ZEND_CASE chain */
6123 			ZEND_VM_NEXT_OPCODE();
6124 		} else {
6125 			ZVAL_DEREF(op);
6126 			if (Z_TYPE_P(op) != IS_STRING) {
6127 				/* Wrong type, fall back to ZEND_CASE chain */
6128 				ZEND_VM_NEXT_OPCODE();
6129 			}
6130 		}
6131 	}
6132 
6133 	jump_zv = zend_hash_find_ex(jumptable, Z_STR_P(op), IS_CONST == IS_CONST);
6134 	if (jump_zv != NULL) {
6135 		ZEND_VM_SET_RELATIVE_OPCODE(opline, Z_LVAL_P(jump_zv));
6136 		ZEND_VM_CONTINUE();
6137 	} else {
6138 		/* default */
6139 		ZEND_VM_SET_RELATIVE_OPCODE(opline, opline->extended_value);
6140 		ZEND_VM_CONTINUE();
6141 	}
6142 }
6143 
6144 static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IN_ARRAY_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
6145 {
6146 	USE_OPLINE
6147 
6148 	zval *op1;
6149 	HashTable *ht = Z_ARRVAL_P(RT_CONSTANT(opline, opline->op2));
6150 	int result;
6151 
6152 	SAVE_OPLINE();
6153 	op1 = RT_CONSTANT(opline, opline->op1);
6154 	if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
6155 		result = zend_hash_exists(ht, Z_STR_P(op1));
6156 	} else if (opline->extended_value) {
6157 		if (EXPECTED(Z_TYPE_P(op1) == IS_LONG)) {
6158 			result = zend_hash_index_exists(ht, Z_LVAL_P(op1));
6159 		} else {
6160 			result = 0;
6161 		}
6162 	} else if (Z_TYPE_P(op1) <= IS_FALSE) {
6163 		result = zend_hash_exists(ht, ZSTR_EMPTY_ALLOC());
6164 	} else {
6165 		zend_string *key;
6166 		zval key_tmp, result_tmp;
6167 
6168 		result = 0;
6169 		ZEND_HASH_FOREACH_STR_KEY(ht, key) {
6170 			ZVAL_STR(&key_tmp, key);
6171 			compare_function(&result_tmp, op1, &key_tmp);
6172 			if (Z_LVAL(result_tmp) == 0) {
6173 				result = 1;
6174 				break;
6175 			}
6176 		} ZEND_HASH_FOREACH_END();
6177 	}
6178 
6179 	ZEND_VM_SMART_BRANCH(result, 1);
6180 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
6181 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
6182 }
6183 
6184 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SUB_LONG_NO_OVERFLOW_SPEC_CONST_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
6185 {
6186 	USE_OPLINE
6187 	zval *op1, *op2, *result;
6188 
6189 	op1 = RT_CONSTANT(opline, opline->op1);
6190 	op2 = EX_VAR(opline->op2.var);
6191 	result = EX_VAR(opline->result.var);
6192 	ZVAL_LONG(result, Z_LVAL_P(op1) - Z_LVAL_P(op2));
6193 	ZEND_VM_NEXT_OPCODE();
6194 }
6195 
6196 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SUB_LONG_SPEC_CONST_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
6197 {
6198 	USE_OPLINE
6199 	zval *op1, *op2, *result;
6200 
6201 	op1 = RT_CONSTANT(opline, opline->op1);
6202 	op2 = EX_VAR(opline->op2.var);
6203 	result = EX_VAR(opline->result.var);
6204 	fast_long_sub_function(result, op1, op2);
6205 	ZEND_VM_NEXT_OPCODE();
6206 }
6207 
6208 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SUB_DOUBLE_SPEC_CONST_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
6209 {
6210 	USE_OPLINE
6211 	zval *op1, *op2, *result;
6212 
6213 	op1 = RT_CONSTANT(opline, opline->op1);
6214 	op2 = EX_VAR(opline->op2.var);
6215 	result = EX_VAR(opline->result.var);
6216 	ZVAL_DOUBLE(result, Z_DVAL_P(op1) - Z_DVAL_P(op2));
6217 	ZEND_VM_NEXT_OPCODE();
6218 }
6219 
6220 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
6221 {
6222 	USE_OPLINE
6223 	zval *op1, *op2;
6224 	int result;
6225 
6226 	op1 = RT_CONSTANT(opline, opline->op1);
6227 	op2 = EX_VAR(opline->op2.var);
6228 	result = (Z_LVAL_P(op1) < Z_LVAL_P(op2));
6229 
6230 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
6231 	ZEND_VM_NEXT_OPCODE();
6232 }
6233 
6234 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
6235 {
6236 	USE_OPLINE
6237 	zval *op1, *op2;
6238 	int result;
6239 
6240 	op1 = RT_CONSTANT(opline, opline->op1);
6241 	op2 = EX_VAR(opline->op2.var);
6242 	result = (Z_LVAL_P(op1) < Z_LVAL_P(op2));
6243 	ZEND_VM_SMART_BRANCH_JMPZ(result, 0);
6244 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
6245 	ZEND_VM_NEXT_OPCODE();
6246 }
6247 
6248 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPNZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
6249 {
6250 	USE_OPLINE
6251 	zval *op1, *op2;
6252 	int result;
6253 
6254 	op1 = RT_CONSTANT(opline, opline->op1);
6255 	op2 = EX_VAR(opline->op2.var);
6256 	result = (Z_LVAL_P(op1) < Z_LVAL_P(op2));
6257 	ZEND_VM_SMART_BRANCH_JMPNZ(result, 0);
6258 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
6259 	ZEND_VM_NEXT_OPCODE();
6260 }
6261 
6262 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
6263 {
6264 	USE_OPLINE
6265 	zval *op1, *op2;
6266 	int result;
6267 
6268 	op1 = RT_CONSTANT(opline, opline->op1);
6269 	op2 = EX_VAR(opline->op2.var);
6270 	result = (Z_DVAL_P(op1) < Z_DVAL_P(op2));
6271 
6272 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
6273 	ZEND_VM_NEXT_OPCODE();
6274 }
6275 
6276 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
6277 {
6278 	USE_OPLINE
6279 	zval *op1, *op2;
6280 	int result;
6281 
6282 	op1 = RT_CONSTANT(opline, opline->op1);
6283 	op2 = EX_VAR(opline->op2.var);
6284 	result = (Z_DVAL_P(op1) < Z_DVAL_P(op2));
6285 	ZEND_VM_SMART_BRANCH_JMPZ(result, 0);
6286 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
6287 	ZEND_VM_NEXT_OPCODE();
6288 }
6289 
6290 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
6291 {
6292 	USE_OPLINE
6293 	zval *op1, *op2;
6294 	int result;
6295 
6296 	op1 = RT_CONSTANT(opline, opline->op1);
6297 	op2 = EX_VAR(opline->op2.var);
6298 	result = (Z_DVAL_P(op1) < Z_DVAL_P(op2));
6299 	ZEND_VM_SMART_BRANCH_JMPNZ(result, 0);
6300 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
6301 	ZEND_VM_NEXT_OPCODE();
6302 }
6303 
6304 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
6305 {
6306 	USE_OPLINE
6307 	zval *op1, *op2;
6308 	int result;
6309 
6310 	op1 = RT_CONSTANT(opline, opline->op1);
6311 	op2 = EX_VAR(opline->op2.var);
6312 	result = (Z_LVAL_P(op1) <= Z_LVAL_P(op2));
6313 
6314 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
6315 	ZEND_VM_NEXT_OPCODE();
6316 }
6317 
6318 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
6319 {
6320 	USE_OPLINE
6321 	zval *op1, *op2;
6322 	int result;
6323 
6324 	op1 = RT_CONSTANT(opline, opline->op1);
6325 	op2 = EX_VAR(opline->op2.var);
6326 	result = (Z_LVAL_P(op1) <= Z_LVAL_P(op2));
6327 	ZEND_VM_SMART_BRANCH_JMPZ(result, 0);
6328 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
6329 	ZEND_VM_NEXT_OPCODE();
6330 }
6331 
6332 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPNZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
6333 {
6334 	USE_OPLINE
6335 	zval *op1, *op2;
6336 	int result;
6337 
6338 	op1 = RT_CONSTANT(opline, opline->op1);
6339 	op2 = EX_VAR(opline->op2.var);
6340 	result = (Z_LVAL_P(op1) <= Z_LVAL_P(op2));
6341 	ZEND_VM_SMART_BRANCH_JMPNZ(result, 0);
6342 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
6343 	ZEND_VM_NEXT_OPCODE();
6344 }
6345 
6346 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
6347 {
6348 	USE_OPLINE
6349 	zval *op1, *op2;
6350 	int result;
6351 
6352 	op1 = RT_CONSTANT(opline, opline->op1);
6353 	op2 = EX_VAR(opline->op2.var);
6354 	result = (Z_DVAL_P(op1) <= Z_DVAL_P(op2));
6355 
6356 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
6357 	ZEND_VM_NEXT_OPCODE();
6358 }
6359 
6360 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
6361 {
6362 	USE_OPLINE
6363 	zval *op1, *op2;
6364 	int result;
6365 
6366 	op1 = RT_CONSTANT(opline, opline->op1);
6367 	op2 = EX_VAR(opline->op2.var);
6368 	result = (Z_DVAL_P(op1) <= Z_DVAL_P(op2));
6369 	ZEND_VM_SMART_BRANCH_JMPZ(result, 0);
6370 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
6371 	ZEND_VM_NEXT_OPCODE();
6372 }
6373 
6374 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
6375 {
6376 	USE_OPLINE
6377 	zval *op1, *op2;
6378 	int result;
6379 
6380 	op1 = RT_CONSTANT(opline, opline->op1);
6381 	op2 = EX_VAR(opline->op2.var);
6382 	result = (Z_DVAL_P(op1) <= Z_DVAL_P(op2));
6383 	ZEND_VM_SMART_BRANCH_JMPNZ(result, 0);
6384 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
6385 	ZEND_VM_NEXT_OPCODE();
6386 }
6387 
6388 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_R_INDEX_SPEC_CONST_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
6389 {
6390 	USE_OPLINE
6391 
6392 	zval *container, *dim, *value;
6393 	zend_long offset;
6394 	HashTable *ht;
6395 
6396 	container = RT_CONSTANT(opline, opline->op1);
6397 	dim = EX_VAR(opline->op2.var);
6398 	if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
6399 fetch_dim_r_index_array:
6400 		if (EXPECTED(Z_TYPE_P(dim) == IS_LONG)) {
6401 			offset = Z_LVAL_P(dim);
6402 		} else {
6403 			offset = zval_get_long(dim);
6404 		}
6405 		ht = Z_ARRVAL_P(container);
6406 		ZEND_HASH_INDEX_FIND(ht, offset, value, fetch_dim_r_index_undef);
6407 		ZVAL_COPY_DEREF(EX_VAR(opline->result.var), value);
6408 		if (IS_CONST & (IS_TMP_VAR|IS_VAR)) {
6409 			SAVE_OPLINE();
6410 
6411 			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
6412 		} else {
6413 			ZEND_VM_NEXT_OPCODE();
6414 		}
6415 	} else if (IS_CONST != IS_CONST && EXPECTED(Z_TYPE_P(container) == IS_REFERENCE)) {
6416 		container = Z_REFVAL_P(container);
6417 		if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
6418 			goto fetch_dim_r_index_array;
6419 		} else {
6420 			goto fetch_dim_r_index_slow;
6421 		}
6422 	} else {
6423 fetch_dim_r_index_slow:
6424 		SAVE_OPLINE();
6425 		if ((IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
6426 			dim++;
6427 		}
6428 		zend_fetch_dimension_address_read_R_slow(container, dim OPLINE_CC EXECUTE_DATA_CC);
6429 
6430 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
6431 	}
6432 
6433 fetch_dim_r_index_undef:
6434 	ZVAL_NULL(EX_VAR(opline->result.var));
6435 	SAVE_OPLINE();
6436 	zend_undefined_offset(offset);
6437 
6438 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
6439 }
6440 
6441 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ADD_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
6442 {
6443 	USE_OPLINE
6444 	zend_free_op free_op2;
6445 	zval *op1, *op2, *result;
6446 
6447 	op1 = RT_CONSTANT(opline, opline->op1);
6448 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
6449 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
6450 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
6451 			result = EX_VAR(opline->result.var);
6452 			fast_long_add_function(result, op1, op2);
6453 			ZEND_VM_NEXT_OPCODE();
6454 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
6455 			result = EX_VAR(opline->result.var);
6456 			ZVAL_DOUBLE(result, ((double)Z_LVAL_P(op1)) + Z_DVAL_P(op2));
6457 			ZEND_VM_NEXT_OPCODE();
6458 		}
6459 	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
6460 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
6461 			result = EX_VAR(opline->result.var);
6462 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) + Z_DVAL_P(op2));
6463 			ZEND_VM_NEXT_OPCODE();
6464 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
6465 			result = EX_VAR(opline->result.var);
6466 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) + ((double)Z_LVAL_P(op2)));
6467 			ZEND_VM_NEXT_OPCODE();
6468 		}
6469 	}
6470 
6471 	SAVE_OPLINE();
6472 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
6473 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
6474 	}
6475 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
6476 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
6477 	}
6478 	add_function(EX_VAR(opline->result.var), op1, op2);
6479 
6480 	zval_ptr_dtor_nogc(free_op2);
6481 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
6482 }
6483 
6484 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SUB_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
6485 {
6486 	USE_OPLINE
6487 	zend_free_op free_op2;
6488 	zval *op1, *op2, *result;
6489 
6490 	op1 = RT_CONSTANT(opline, opline->op1);
6491 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
6492 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
6493 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
6494 			result = EX_VAR(opline->result.var);
6495 			fast_long_sub_function(result, op1, op2);
6496 			ZEND_VM_NEXT_OPCODE();
6497 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
6498 			result = EX_VAR(opline->result.var);
6499 			ZVAL_DOUBLE(result, ((double)Z_LVAL_P(op1)) - Z_DVAL_P(op2));
6500 			ZEND_VM_NEXT_OPCODE();
6501 		}
6502 	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
6503 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
6504 			result = EX_VAR(opline->result.var);
6505 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) - Z_DVAL_P(op2));
6506 			ZEND_VM_NEXT_OPCODE();
6507 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
6508 			result = EX_VAR(opline->result.var);
6509 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) - ((double)Z_LVAL_P(op2)));
6510 			ZEND_VM_NEXT_OPCODE();
6511 		}
6512 	}
6513 
6514 	SAVE_OPLINE();
6515 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
6516 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
6517 	}
6518 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
6519 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
6520 	}
6521 	sub_function(EX_VAR(opline->result.var), op1, op2);
6522 
6523 	zval_ptr_dtor_nogc(free_op2);
6524 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
6525 }
6526 
6527 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_DIV_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
6528 {
6529 	USE_OPLINE
6530 	zend_free_op free_op2;
6531 	zval *op1, *op2;
6532 
6533 	SAVE_OPLINE();
6534 	op1 = RT_CONSTANT(opline, opline->op1);
6535 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
6536 	fast_div_function(EX_VAR(opline->result.var), op1, op2);
6537 
6538 	zval_ptr_dtor_nogc(free_op2);
6539 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
6540 }
6541 
6542 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_MOD_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
6543 {
6544 	USE_OPLINE
6545 	zend_free_op free_op2;
6546 	zval *op1, *op2, *result;
6547 
6548 	op1 = RT_CONSTANT(opline, opline->op1);
6549 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
6550 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
6551 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
6552 			result = EX_VAR(opline->result.var);
6553 			if (UNEXPECTED(Z_LVAL_P(op2) == 0)) {
6554 				ZEND_VM_TAIL_CALL(zend_mod_by_zero_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
6555 			} else if (UNEXPECTED(Z_LVAL_P(op2) == -1)) {
6556 				/* Prevent overflow error/crash if op1==ZEND_LONG_MIN */
6557 				ZVAL_LONG(result, 0);
6558 			} else {
6559 				ZVAL_LONG(result, Z_LVAL_P(op1) % Z_LVAL_P(op2));
6560 			}
6561 			ZEND_VM_NEXT_OPCODE();
6562 		}
6563 	}
6564 
6565 	SAVE_OPLINE();
6566 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
6567 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
6568 	}
6569 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
6570 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
6571 	}
6572 	mod_function(EX_VAR(opline->result.var), op1, op2);
6573 
6574 	zval_ptr_dtor_nogc(free_op2);
6575 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
6576 }
6577 
6578 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SL_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
6579 {
6580 	USE_OPLINE
6581 	zend_free_op free_op2;
6582 	zval *op1, *op2;
6583 
6584 	op1 = RT_CONSTANT(opline, opline->op1);
6585 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
6586 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)
6587 			&& EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)
6588 			&& EXPECTED((zend_ulong)Z_LVAL_P(op2) < SIZEOF_ZEND_LONG * 8)) {
6589 		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(op1) << Z_LVAL_P(op2));
6590 		ZEND_VM_NEXT_OPCODE();
6591 	}
6592 
6593 	SAVE_OPLINE();
6594 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
6595 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
6596 	}
6597 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
6598 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
6599 	}
6600 	shift_left_function(EX_VAR(opline->result.var), op1, op2);
6601 
6602 	zval_ptr_dtor_nogc(free_op2);
6603 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
6604 }
6605 
6606 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SR_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
6607 {
6608 	USE_OPLINE
6609 	zend_free_op free_op2;
6610 	zval *op1, *op2;
6611 
6612 	op1 = RT_CONSTANT(opline, opline->op1);
6613 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
6614 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)
6615 			&& EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)
6616 			&& EXPECTED((zend_ulong)Z_LVAL_P(op2) < SIZEOF_ZEND_LONG * 8)) {
6617 		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(op1) >> Z_LVAL_P(op2));
6618 		ZEND_VM_NEXT_OPCODE();
6619 	}
6620 
6621 	SAVE_OPLINE();
6622 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
6623 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
6624 	}
6625 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
6626 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
6627 	}
6628 	shift_right_function(EX_VAR(opline->result.var), op1, op2);
6629 
6630 	zval_ptr_dtor_nogc(free_op2);
6631 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
6632 }
6633 
6634 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_POW_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
6635 {
6636 	USE_OPLINE
6637 	zend_free_op free_op2;
6638 	zval *op1, *op2;
6639 
6640 	SAVE_OPLINE();
6641 	op1 = RT_CONSTANT(opline, opline->op1);
6642 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
6643 	pow_function(EX_VAR(opline->result.var), op1, op2);
6644 
6645 	zval_ptr_dtor_nogc(free_op2);
6646 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
6647 }
6648 
6649 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_CONCAT_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
6650 {
6651 	USE_OPLINE
6652 	zend_free_op free_op2;
6653 	zval *op1, *op2;
6654 
6655 	op1 = RT_CONSTANT(opline, opline->op1);
6656 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
6657 
6658 	if ((IS_CONST == IS_CONST || EXPECTED(Z_TYPE_P(op1) == IS_STRING)) &&
6659 	    ((IS_TMP_VAR|IS_VAR) == IS_CONST || EXPECTED(Z_TYPE_P(op2) == IS_STRING))) {
6660 		zend_string *op1_str = Z_STR_P(op1);
6661 		zend_string *op2_str = Z_STR_P(op2);
6662 		zend_string *str;
6663 
6664 		if (IS_CONST != IS_CONST && UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
6665 			if ((IS_TMP_VAR|IS_VAR) == IS_CONST || (IS_TMP_VAR|IS_VAR) == IS_CV) {
6666 				ZVAL_STR_COPY(EX_VAR(opline->result.var), op2_str);
6667 			} else {
6668 				ZVAL_STR(EX_VAR(opline->result.var), op2_str);
6669 			}
6670 
6671 		} else if ((IS_TMP_VAR|IS_VAR) != IS_CONST && UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
6672 			if (IS_CONST == IS_CONST || IS_CONST == IS_CV) {
6673 				ZVAL_STR_COPY(EX_VAR(opline->result.var), op1_str);
6674 			} else {
6675 				ZVAL_STR(EX_VAR(opline->result.var), op1_str);
6676 			}
6677 			zval_ptr_dtor_nogc(free_op2);
6678 		} else if (IS_CONST != IS_CONST && IS_CONST != IS_CV &&
6679 		    !ZSTR_IS_INTERNED(op1_str) && GC_REFCOUNT(op1_str) == 1) {
6680 		    size_t len = ZSTR_LEN(op1_str);
6681 
6682 			str = zend_string_extend(op1_str, len + ZSTR_LEN(op2_str), 0);
6683 			memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
6684 			ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
6685 			zval_ptr_dtor_nogc(free_op2);
6686 		} else {
6687 			str = zend_string_alloc(ZSTR_LEN(op1_str) + ZSTR_LEN(op2_str), 0);
6688 			memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
6689 			memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
6690 			ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
6691 
6692 			zval_ptr_dtor_nogc(free_op2);
6693 		}
6694 		ZEND_VM_NEXT_OPCODE();
6695 	} else {
6696 		SAVE_OPLINE();
6697 
6698 		if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
6699 			op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
6700 		}
6701 		if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
6702 			op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
6703 		}
6704 		concat_function(EX_VAR(opline->result.var), op1, op2);
6705 
6706 		zval_ptr_dtor_nogc(free_op2);
6707 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
6708 	}
6709 }
6710 
6711 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
6712 {
6713 	USE_OPLINE
6714 	zend_free_op free_op2;
6715 	zval *op1, *op2, *result;
6716 
6717 	op1 = RT_CONSTANT(opline, opline->op1);
6718 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
6719 	do {
6720 		int result;
6721 
6722 		if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
6723 			if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
6724 				result = (Z_LVAL_P(op1) < Z_LVAL_P(op2));
6725 			} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
6726 				result = ((double)Z_LVAL_P(op1) < Z_DVAL_P(op2));
6727 			} else {
6728 				break;
6729 			}
6730 		} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
6731 			if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
6732 				result = (Z_DVAL_P(op1) < Z_DVAL_P(op2));
6733 			} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
6734 				result = (Z_DVAL_P(op1) < ((double)Z_LVAL_P(op2)));
6735 			} else {
6736 				break;
6737 			}
6738 		} else {
6739 			break;
6740 		}
6741 		ZEND_VM_SMART_BRANCH(result, 0);
6742 		ZVAL_BOOL(EX_VAR(opline->result.var), result);
6743 		ZEND_VM_NEXT_OPCODE();
6744 	} while (0);
6745 
6746 	SAVE_OPLINE();
6747 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
6748 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
6749 	}
6750 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
6751 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
6752 	}
6753 	result = EX_VAR(opline->result.var);
6754 	compare_function(result, op1, op2);
6755 	ZVAL_BOOL(result, Z_LVAL_P(result) < 0);
6756 
6757 	zval_ptr_dtor_nogc(free_op2);
6758 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
6759 }
6760 
6761 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_OR_EQUAL_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
6762 {
6763 	USE_OPLINE
6764 	zend_free_op free_op2;
6765 	zval *op1, *op2, *result;
6766 
6767 	op1 = RT_CONSTANT(opline, opline->op1);
6768 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
6769 	do {
6770 		int result;
6771 
6772 		if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
6773 			if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
6774 				result = (Z_LVAL_P(op1) <= Z_LVAL_P(op2));
6775 			} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
6776 				result = ((double)Z_LVAL_P(op1) <= Z_DVAL_P(op2));
6777 			} else {
6778 				break;
6779 			}
6780 		} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
6781 			if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
6782 				result = (Z_DVAL_P(op1) <= Z_DVAL_P(op2));
6783 			} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
6784 				result = (Z_DVAL_P(op1) <= ((double)Z_LVAL_P(op2)));
6785 			} else {
6786 				break;
6787 			}
6788 		} else {
6789 			break;
6790 		}
6791 		ZEND_VM_SMART_BRANCH(result, 0);
6792 		ZVAL_BOOL(EX_VAR(opline->result.var), result);
6793 		ZEND_VM_NEXT_OPCODE();
6794 	} while (0);
6795 
6796 	SAVE_OPLINE();
6797 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
6798 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
6799 	}
6800 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
6801 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
6802 	}
6803 	result = EX_VAR(opline->result.var);
6804 	compare_function(result, op1, op2);
6805 	ZVAL_BOOL(result, Z_LVAL_P(result) <= 0);
6806 
6807 	zval_ptr_dtor_nogc(free_op2);
6808 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
6809 }
6810 
6811 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SPACESHIP_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
6812 {
6813 	USE_OPLINE
6814 	zend_free_op free_op2;
6815 	zval *op1, *op2;
6816 
6817 	SAVE_OPLINE();
6818 	op1 = RT_CONSTANT(opline, opline->op1);
6819 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
6820 	compare_function(EX_VAR(opline->result.var), op1, op2);
6821 
6822 	zval_ptr_dtor_nogc(free_op2);
6823 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
6824 }
6825 
6826 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_R_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
6827 {
6828 	USE_OPLINE
6829 	zend_free_op free_op2;
6830 	zval *container, *dim, *value, *result;
6831 
6832 	SAVE_OPLINE();
6833 	container = RT_CONSTANT(opline, opline->op1);
6834 	dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
6835 	if (IS_CONST != IS_CONST) {
6836 		if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
6837 fetch_dim_r_array:
6838 			value = zend_fetch_dimension_address_inner(Z_ARRVAL_P(container), dim, (IS_TMP_VAR|IS_VAR), BP_VAR_R EXECUTE_DATA_CC);
6839 			result = EX_VAR(opline->result.var);
6840 			ZVAL_COPY_DEREF(result, value);
6841 		} else if (EXPECTED(Z_TYPE_P(container) == IS_REFERENCE)) {
6842 			container = Z_REFVAL_P(container);
6843 			if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
6844 				goto fetch_dim_r_array;
6845 			} else {
6846 				goto fetch_dim_r_slow;
6847 			}
6848 		} else {
6849 fetch_dim_r_slow:
6850 			if ((IS_TMP_VAR|IS_VAR) == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
6851 				dim++;
6852 			}
6853 			zend_fetch_dimension_address_read_R_slow(container, dim OPLINE_CC EXECUTE_DATA_CC);
6854 		}
6855 	} else {
6856 		zend_fetch_dimension_address_read_R(container, dim, (IS_TMP_VAR|IS_VAR) OPLINE_CC EXECUTE_DATA_CC);
6857 	}
6858 	zval_ptr_dtor_nogc(free_op2);
6859 
6860 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
6861 }
6862 
6863 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_IS_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
6864 {
6865 	USE_OPLINE
6866 	zend_free_op free_op2;
6867 	zval *container;
6868 
6869 	SAVE_OPLINE();
6870 	container = RT_CONSTANT(opline, opline->op1);
6871 	zend_fetch_dimension_address_read_IS(container, _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC), (IS_TMP_VAR|IS_VAR) OPLINE_CC EXECUTE_DATA_CC);
6872 	zval_ptr_dtor_nogc(free_op2);
6873 
6874 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
6875 }
6876 
6877 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_FUNC_ARG_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
6878 {
6879 	if (UNEXPECTED(ZEND_CALL_INFO(EX(call)) & ZEND_CALL_SEND_ARG_BY_REF)) {
6880         if ((IS_CONST & (IS_CONST|IS_TMP_VAR))) {
6881 			ZEND_VM_TAIL_CALL(zend_use_tmp_in_write_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
6882         }
6883 		ZEND_VM_TAIL_CALL(ZEND_NULL_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
6884 	} else {
6885 		if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) {
6886 			ZEND_VM_TAIL_CALL(zend_use_undef_in_read_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
6887 		}
6888 		ZEND_VM_TAIL_CALL(ZEND_FETCH_DIM_R_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
6889 	}
6890 }
6891 
6892 static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_R_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
6893 {
6894 	USE_OPLINE
6895 
6896 	zval *container;
6897 	zend_free_op free_op2;
6898 	zval *offset;
6899 	void **cache_slot = NULL;
6900 
6901 	SAVE_OPLINE();
6902 	container = RT_CONSTANT(opline, opline->op1);
6903 
6904 	if (IS_CONST == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
6905 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
6906 	}
6907 
6908 	offset = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
6909 
6910 	if (IS_CONST == IS_CONST ||
6911 	    (IS_CONST != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
6912 	    do {
6913 			if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
6914 				container = Z_REFVAL_P(container);
6915 				if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
6916 					break;
6917 				}
6918 			}
6919 			if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
6920 				GET_OP1_UNDEF_CV(container, BP_VAR_R);
6921 			}
6922 			if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(offset) == IS_UNDEF)) {
6923 				GET_OP2_UNDEF_CV(offset, BP_VAR_R);
6924 			}
6925 			goto fetch_obj_r_no_object;
6926 		} while (0);
6927 	}
6928 
6929 	/* here we are sure we are dealing with an object */
6930 	do {
6931 		zend_object *zobj = Z_OBJ_P(container);
6932 		zval *retval;
6933 
6934 		if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
6935 			cache_slot = CACHE_ADDR(opline->extended_value);
6936 
6937 			if (EXPECTED(zobj->ce == CACHED_PTR_EX(cache_slot))) {
6938 				uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
6939 
6940 				if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
6941 					retval = OBJ_PROP(zobj, prop_offset);
6942 					if (EXPECTED(Z_TYPE_INFO_P(retval) != IS_UNDEF)) {
6943 						ZVAL_COPY_DEREF(EX_VAR(opline->result.var), retval);
6944 						break;
6945 					}
6946 				} else if (EXPECTED(zobj->properties != NULL)) {
6947 					if (!IS_UNKNOWN_DYNAMIC_PROPERTY_OFFSET(prop_offset)) {
6948 						uintptr_t idx = ZEND_DECODE_DYN_PROP_OFFSET(prop_offset);
6949 
6950 						if (EXPECTED(idx < zobj->properties->nNumUsed * sizeof(Bucket))) {
6951 							Bucket *p = (Bucket*)((char*)zobj->properties->arData + idx);
6952 
6953 							if (EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
6954 						        (EXPECTED(p->key == Z_STR_P(offset)) ||
6955 						         (EXPECTED(p->h == ZSTR_H(Z_STR_P(offset))) &&
6956 						          EXPECTED(p->key != NULL) &&
6957 						          EXPECTED(zend_string_equal_content(p->key, Z_STR_P(offset)))))) {
6958 								ZVAL_COPY_DEREF(EX_VAR(opline->result.var), &p->val);
6959 								break;
6960 							}
6961 						}
6962 						CACHE_PTR_EX(cache_slot + 1, (void*)ZEND_DYNAMIC_PROPERTY_OFFSET);
6963 					}
6964 					retval = zend_hash_find_ex(zobj->properties, Z_STR_P(offset), 1);
6965 					if (EXPECTED(retval)) {
6966 						uintptr_t idx = (char*)retval - (char*)zobj->properties->arData;
6967 						CACHE_PTR_EX(cache_slot + 1, (void*)ZEND_ENCODE_DYN_PROP_OFFSET(idx));
6968 						ZVAL_COPY_DEREF(EX_VAR(opline->result.var), retval);
6969 						break;
6970 					}
6971 				}
6972 			}
6973 		} else if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(offset) == IS_UNDEF)) {
6974 			GET_OP2_UNDEF_CV(offset, BP_VAR_R);
6975 		}
6976 
6977 		if (UNEXPECTED(zobj->handlers->read_property == NULL)) {
6978 fetch_obj_r_no_object:
6979 			zend_wrong_property_read(offset);
6980 			ZVAL_NULL(EX_VAR(opline->result.var));
6981 		} else {
6982 			retval = zobj->handlers->read_property(container, offset, BP_VAR_R, cache_slot, EX_VAR(opline->result.var));
6983 
6984 			if (retval != EX_VAR(opline->result.var)) {
6985 				ZVAL_COPY_DEREF(EX_VAR(opline->result.var), retval);
6986 			} else if (UNEXPECTED(Z_ISREF_P(retval))) {
6987 				zend_unwrap_reference(retval);
6988 			}
6989 		}
6990 	} while (0);
6991 
6992 	zval_ptr_dtor_nogc(free_op2);
6993 
6994 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
6995 }
6996 
6997 static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_IS_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
6998 {
6999 	USE_OPLINE
7000 
7001 	zval *container;
7002 	zend_free_op free_op2;
7003 	zval *offset;
7004 	void **cache_slot = NULL;
7005 
7006 	SAVE_OPLINE();
7007 	container = RT_CONSTANT(opline, opline->op1);
7008 
7009 	if (IS_CONST == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
7010 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
7011 	}
7012 
7013 	offset = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
7014 
7015 	if (IS_CONST == IS_CONST ||
7016 	    (IS_CONST != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
7017 		do {
7018 			if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
7019 				container = Z_REFVAL_P(container);
7020 				if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
7021 					break;
7022 				}
7023 			}
7024 			goto fetch_obj_is_no_object;
7025 		} while (0);
7026 	}
7027 
7028 	/* here we are sure we are dealing with an object */
7029 	do {
7030 		zend_object *zobj = Z_OBJ_P(container);
7031 		zval *retval;
7032 
7033 		if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
7034 			cache_slot = CACHE_ADDR(opline->extended_value);
7035 
7036 			if (EXPECTED(zobj->ce == CACHED_PTR_EX(cache_slot))) {
7037 				uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
7038 
7039 				if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
7040 					retval = OBJ_PROP(zobj, prop_offset);
7041 					if (EXPECTED(Z_TYPE_P(retval) != IS_UNDEF)) {
7042 						ZVAL_COPY(EX_VAR(opline->result.var), retval);
7043 						break;
7044 					}
7045 				} else if (EXPECTED(zobj->properties != NULL)) {
7046 					if (!IS_UNKNOWN_DYNAMIC_PROPERTY_OFFSET(prop_offset)) {
7047 						uintptr_t idx = ZEND_DECODE_DYN_PROP_OFFSET(prop_offset);
7048 
7049 						if (EXPECTED(idx < zobj->properties->nNumUsed * sizeof(Bucket))) {
7050 							Bucket *p = (Bucket*)((char*)zobj->properties->arData + idx);
7051 
7052 							if (EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
7053 						        (EXPECTED(p->key == Z_STR_P(offset)) ||
7054 						         (EXPECTED(p->h == ZSTR_H(Z_STR_P(offset))) &&
7055 						          EXPECTED(p->key != NULL) &&
7056 						          EXPECTED(zend_string_equal_content(p->key, Z_STR_P(offset)))))) {
7057 								ZVAL_COPY(EX_VAR(opline->result.var), &p->val);
7058 								break;
7059 							}
7060 						}
7061 						CACHE_PTR_EX(cache_slot + 1, (void*)ZEND_DYNAMIC_PROPERTY_OFFSET);
7062 					}
7063 					retval = zend_hash_find_ex(zobj->properties, Z_STR_P(offset), 1);
7064 					if (EXPECTED(retval)) {
7065 						uintptr_t idx = (char*)retval - (char*)zobj->properties->arData;
7066 						CACHE_PTR_EX(cache_slot + 1, (void*)ZEND_ENCODE_DYN_PROP_OFFSET(idx));
7067 						ZVAL_COPY(EX_VAR(opline->result.var), retval);
7068 						break;
7069 					}
7070 				}
7071 			}
7072 		}
7073 
7074 		if (UNEXPECTED(zobj->handlers->read_property == NULL)) {
7075 fetch_obj_is_no_object:
7076 			ZVAL_NULL(EX_VAR(opline->result.var));
7077 		} else {
7078 
7079 			retval = zobj->handlers->read_property(container, offset, BP_VAR_IS, cache_slot, EX_VAR(opline->result.var));
7080 
7081 			if (retval != EX_VAR(opline->result.var)) {
7082 				ZVAL_COPY(EX_VAR(opline->result.var), retval);
7083 			}
7084 		}
7085 	} while (0);
7086 
7087 	zval_ptr_dtor_nogc(free_op2);
7088 
7089 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
7090 }
7091 
7092 static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
7093 {
7094 	if (UNEXPECTED(ZEND_CALL_INFO(EX(call)) & ZEND_CALL_SEND_ARG_BY_REF)) {
7095 		/* Behave like FETCH_OBJ_W */
7096 		if ((IS_CONST & (IS_CONST|IS_TMP_VAR))) {
7097 			ZEND_VM_TAIL_CALL(zend_use_tmp_in_write_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
7098 		}
7099 
7100 		ZEND_VM_TAIL_CALL(ZEND_NULL_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
7101 	} else {
7102 		ZEND_VM_TAIL_CALL(ZEND_FETCH_OBJ_R_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
7103 	}
7104 }
7105 
7106 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_LIST_R_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
7107 {
7108 	USE_OPLINE
7109 	zend_free_op free_op2;
7110 	zval *container;
7111 
7112 	SAVE_OPLINE();
7113 	container = RT_CONSTANT(opline, opline->op1);
7114 	zend_fetch_dimension_address_LIST_r(container, _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC), (IS_TMP_VAR|IS_VAR) OPLINE_CC EXECUTE_DATA_CC);
7115 	zval_ptr_dtor_nogc(free_op2);
7116 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
7117 }
7118 
7119 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FAST_CONCAT_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
7120 {
7121 	USE_OPLINE
7122 	zend_free_op free_op2;
7123 	zval *op1, *op2;
7124 	zend_string *op1_str, *op2_str, *str;
7125 
7126 
7127 	op1 = RT_CONSTANT(opline, opline->op1);
7128 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
7129 	if ((IS_CONST == IS_CONST || EXPECTED(Z_TYPE_P(op1) == IS_STRING)) &&
7130 	    ((IS_TMP_VAR|IS_VAR) == IS_CONST || EXPECTED(Z_TYPE_P(op2) == IS_STRING))) {
7131 		zend_string *op1_str = Z_STR_P(op1);
7132 		zend_string *op2_str = Z_STR_P(op2);
7133 		zend_string *str;
7134 
7135 		if (IS_CONST != IS_CONST && UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
7136 			if ((IS_TMP_VAR|IS_VAR) == IS_CONST || (IS_TMP_VAR|IS_VAR) == IS_CV) {
7137 				ZVAL_STR_COPY(EX_VAR(opline->result.var), op2_str);
7138 			} else {
7139 				ZVAL_STR(EX_VAR(opline->result.var), op2_str);
7140 			}
7141 
7142 		} else if ((IS_TMP_VAR|IS_VAR) != IS_CONST && UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
7143 			if (IS_CONST == IS_CONST || IS_CONST == IS_CV) {
7144 				ZVAL_STR_COPY(EX_VAR(opline->result.var), op1_str);
7145 			} else {
7146 				ZVAL_STR(EX_VAR(opline->result.var), op1_str);
7147 			}
7148 			zval_ptr_dtor_nogc(free_op2);
7149 		} else if (IS_CONST != IS_CONST && IS_CONST != IS_CV &&
7150 		    !ZSTR_IS_INTERNED(op1_str) && GC_REFCOUNT(op1_str) == 1) {
7151 		    size_t len = ZSTR_LEN(op1_str);
7152 
7153 			str = zend_string_extend(op1_str, len + ZSTR_LEN(op2_str), 0);
7154 			memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
7155 			ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
7156 			zval_ptr_dtor_nogc(free_op2);
7157 		} else {
7158 			str = zend_string_alloc(ZSTR_LEN(op1_str) + ZSTR_LEN(op2_str), 0);
7159 			memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
7160 			memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
7161 			ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
7162 
7163 			zval_ptr_dtor_nogc(free_op2);
7164 		}
7165 		ZEND_VM_NEXT_OPCODE();
7166 	}
7167 
7168 	SAVE_OPLINE();
7169 	if (IS_CONST == IS_CONST) {
7170 		op1_str = Z_STR_P(op1);
7171 	} else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
7172 		op1_str = zend_string_copy(Z_STR_P(op1));
7173 	} else {
7174 		if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
7175 			GET_OP1_UNDEF_CV(op1, BP_VAR_R);
7176 		}
7177 		op1_str = zval_get_string_func(op1);
7178 	}
7179 	if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
7180 		op2_str = Z_STR_P(op2);
7181 	} else if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
7182 		op2_str = zend_string_copy(Z_STR_P(op2));
7183 	} else {
7184 		if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
7185 			GET_OP2_UNDEF_CV(op2, BP_VAR_R);
7186 		}
7187 		op2_str = zval_get_string_func(op2);
7188 	}
7189 	do {
7190 		if (IS_CONST != IS_CONST) {
7191 			if (UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
7192 				if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
7193 					if (UNEXPECTED(Z_REFCOUNTED_P(op2))) {
7194 						GC_ADDREF(op2_str);
7195 					}
7196 				}
7197 				ZVAL_STR(EX_VAR(opline->result.var), op2_str);
7198 				zend_string_release_ex(op1_str, 0);
7199 				break;
7200 			}
7201 		}
7202 		if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
7203 			if (UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
7204 				if (IS_CONST == IS_CONST) {
7205 					if (UNEXPECTED(Z_REFCOUNTED_P(op1))) {
7206 						GC_ADDREF(op1_str);
7207 					}
7208 				}
7209 				ZVAL_STR(EX_VAR(opline->result.var), op1_str);
7210 				zend_string_release_ex(op2_str, 0);
7211 				break;
7212 			}
7213 		}
7214 		str = zend_string_alloc(ZSTR_LEN(op1_str) + ZSTR_LEN(op2_str), 0);
7215 		memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
7216 		memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
7217 		ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
7218 		if (IS_CONST != IS_CONST) {
7219 			zend_string_release_ex(op1_str, 0);
7220 		}
7221 		if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
7222 			zend_string_release_ex(op2_str, 0);
7223 		}
7224 	} while (0);
7225 
7226 	zval_ptr_dtor_nogc(free_op2);
7227 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
7228 }
7229 
7230 static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
7231 {
7232 	USE_OPLINE
7233 	zval *function_name;
7234 	zend_free_op free_op1, free_op2;
7235 	zval *object;
7236 	zend_function *fbc;
7237 	zend_class_entry *called_scope;
7238 	zend_object *obj;
7239 	zend_execute_data *call;
7240 	uint32_t call_info;
7241 
7242 	SAVE_OPLINE();
7243 
7244 	object = RT_CONSTANT(opline, opline->op1);
7245 
7246 	if (IS_CONST == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
7247 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
7248 	}
7249 
7250 	if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
7251 		function_name = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
7252 	}
7253 
7254 	if ((IS_TMP_VAR|IS_VAR) != IS_CONST &&
7255 	    UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) {
7256 		do {
7257 			if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV)) && Z_ISREF_P(function_name)) {
7258 				function_name = Z_REFVAL_P(function_name);
7259 				if (EXPECTED(Z_TYPE_P(function_name) == IS_STRING)) {
7260 					break;
7261 				}
7262 			} else if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
7263 				GET_OP2_UNDEF_CV(function_name, BP_VAR_R);
7264 				if (UNEXPECTED(EG(exception) != NULL)) {
7265 
7266 					HANDLE_EXCEPTION();
7267 				}
7268 			}
7269 			zend_throw_error(NULL, "Method name must be a string");
7270 			zval_ptr_dtor_nogc(free_op2);
7271 
7272 			HANDLE_EXCEPTION();
7273 		} while (0);
7274 	}
7275 
7276 	if (IS_CONST != IS_UNUSED) {
7277 		do {
7278 			if (IS_CONST == IS_CONST || UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
7279 				if ((IS_CONST & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(object))) {
7280 					object = Z_REFVAL_P(object);
7281 					if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
7282 						break;
7283 					}
7284 				}
7285 				if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
7286 					object = GET_OP1_UNDEF_CV(object, BP_VAR_R);
7287 					if (UNEXPECTED(EG(exception) != NULL)) {
7288 						if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
7289 							zval_ptr_dtor_nogc(free_op2);
7290 						}
7291 						HANDLE_EXCEPTION();
7292 					}
7293 				}
7294 				if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
7295 					function_name = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
7296 				}
7297 				zend_invalid_method_call(object, function_name);
7298 				zval_ptr_dtor_nogc(free_op2);
7299 
7300 				HANDLE_EXCEPTION();
7301 			}
7302 		} while (0);
7303 	}
7304 
7305 	obj = Z_OBJ_P(object);
7306 	called_scope = obj->ce;
7307 
7308 	if ((IS_TMP_VAR|IS_VAR) == IS_CONST &&
7309 	    EXPECTED(CACHED_PTR(opline->result.num) == called_scope)) {
7310 	    fbc = CACHED_PTR(opline->result.num + sizeof(void*));
7311 	} else {
7312 	    zend_object *orig_obj = obj;
7313 
7314 		if (UNEXPECTED(obj->handlers->get_method == NULL)) {
7315 			zend_throw_error(NULL, "Object does not support method calls");
7316 			zval_ptr_dtor_nogc(free_op2);
7317 
7318 			HANDLE_EXCEPTION();
7319 		}
7320 
7321 		if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
7322 			function_name = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
7323 		}
7324 
7325 		/* First, locate the function. */
7326 		fbc = obj->handlers->get_method(&obj, Z_STR_P(function_name), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (RT_CONSTANT(opline, opline->op2) + 1) : NULL));
7327 		if (UNEXPECTED(fbc == NULL)) {
7328 			if (EXPECTED(!EG(exception))) {
7329 				zend_undefined_method(obj->ce, Z_STR_P(function_name));
7330 			}
7331 			zval_ptr_dtor_nogc(free_op2);
7332 
7333 			HANDLE_EXCEPTION();
7334 		}
7335 		if ((IS_TMP_VAR|IS_VAR) == IS_CONST &&
7336 		    EXPECTED(fbc->type <= ZEND_USER_FUNCTION) &&
7337 		    EXPECTED(!(fbc->common.fn_flags & (ZEND_ACC_CALL_VIA_TRAMPOLINE|ZEND_ACC_NEVER_CACHE))) &&
7338 		    EXPECTED(obj == orig_obj)) {
7339 			CACHE_POLYMORPHIC_PTR(opline->result.num, called_scope, fbc);
7340 		}
7341 		if ((IS_CONST & (IS_VAR|IS_TMP_VAR)) && UNEXPECTED(obj != orig_obj)) {
7342 			/* Reset "object" to trigger reference counting */
7343 			object = NULL;
7344 		}
7345 		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!fbc->op_array.run_time_cache)) {
7346 			init_func_run_time_cache(&fbc->op_array);
7347 		}
7348 	}
7349 
7350 	if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
7351 		zval_ptr_dtor_nogc(free_op2);
7352 	}
7353 
7354 	call_info = ZEND_CALL_NESTED_FUNCTION;
7355 	if (UNEXPECTED((fbc->common.fn_flags & ZEND_ACC_STATIC) != 0)) {
7356 		obj = NULL;
7357 
7358 		if ((IS_CONST & (IS_VAR|IS_TMP_VAR)) && UNEXPECTED(EG(exception))) {
7359 			HANDLE_EXCEPTION();
7360 		}
7361 	} else if (IS_CONST & (IS_VAR|IS_TMP_VAR|IS_CV)) {
7362 		/* CV may be changed indirectly (e.g. when it's a reference) */
7363 		call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_RELEASE_THIS;
7364 		if (IS_CONST == IS_CV) {
7365 			GC_ADDREF(obj); /* For $this pointer */
7366 		} else if (free_op1 != object) {
7367 			GC_ADDREF(obj); /* For $this pointer */
7368 
7369 		}
7370 	}
7371 
7372 	call = zend_vm_stack_push_call_frame(call_info,
7373 		fbc, opline->extended_value, called_scope, obj);
7374 	call->prev_execute_data = EX(call);
7375 	EX(call) = call;
7376 
7377 	ZEND_VM_NEXT_OPCODE();
7378 }
7379 
7380 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
7381 {
7382 	USE_OPLINE
7383 	zval *function_name;
7384 	zend_class_entry *ce;
7385 	zend_object *object;
7386 	zend_function *fbc;
7387 	zend_execute_data *call;
7388 
7389 	SAVE_OPLINE();
7390 
7391 	if (IS_CONST == IS_CONST) {
7392 		/* no function found. try a static method in class */
7393 		ce = CACHED_PTR(opline->result.num);
7394 		if (UNEXPECTED(ce == NULL)) {
7395 			ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), RT_CONSTANT(opline, opline->op1) + 1, ZEND_FETCH_CLASS_DEFAULT |  ZEND_FETCH_CLASS_EXCEPTION);
7396 			if (UNEXPECTED(ce == NULL)) {
7397 				ZEND_ASSERT(EG(exception));
7398 				zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
7399 				HANDLE_EXCEPTION();
7400 			}
7401 			if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
7402 				CACHE_PTR(opline->result.num, ce);
7403 			}
7404 		}
7405 	} else if (IS_CONST == IS_UNUSED) {
7406 		ce = zend_fetch_class(NULL, opline->op1.num);
7407 		if (UNEXPECTED(ce == NULL)) {
7408 			ZEND_ASSERT(EG(exception));
7409 			zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
7410 			HANDLE_EXCEPTION();
7411 		}
7412 	} else {
7413 		ce = Z_CE_P(EX_VAR(opline->op1.var));
7414 	}
7415 
7416 	if (IS_CONST == IS_CONST &&
7417 	    (IS_TMP_VAR|IS_VAR) == IS_CONST &&
7418 	    EXPECTED((fbc = CACHED_PTR(opline->result.num + sizeof(void*))) != NULL)) {
7419 		/* nothing to do */
7420 	} else if (IS_CONST != IS_CONST &&
7421 	           (IS_TMP_VAR|IS_VAR) == IS_CONST &&
7422 	           EXPECTED(CACHED_PTR(opline->result.num) == ce)) {
7423 		fbc = CACHED_PTR(opline->result.num + sizeof(void*));
7424 	} else if ((IS_TMP_VAR|IS_VAR) != IS_UNUSED) {
7425 		zend_free_op free_op2;
7426 
7427 		function_name = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
7428 		if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
7429 			if (UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) {
7430 				do {
7431 					if ((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV) && Z_ISREF_P(function_name)) {
7432 						function_name = Z_REFVAL_P(function_name);
7433 						if (EXPECTED(Z_TYPE_P(function_name) == IS_STRING)) {
7434 							break;
7435 						}
7436 					} else if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
7437 						GET_OP2_UNDEF_CV(function_name, BP_VAR_R);
7438 						if (UNEXPECTED(EG(exception) != NULL)) {
7439 							HANDLE_EXCEPTION();
7440 						}
7441 					}
7442 					zend_throw_error(NULL, "Function name must be a string");
7443 					zval_ptr_dtor_nogc(free_op2);
7444 					HANDLE_EXCEPTION();
7445 				} while (0);
7446 			}
7447 		}
7448 
7449 		if (ce->get_static_method) {
7450 			fbc = ce->get_static_method(ce, Z_STR_P(function_name));
7451 		} else {
7452 			fbc = zend_std_get_static_method(ce, Z_STR_P(function_name), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (RT_CONSTANT(opline, opline->op2) + 1) : NULL));
7453 		}
7454 		if (UNEXPECTED(fbc == NULL)) {
7455 			if (EXPECTED(!EG(exception))) {
7456 				zend_undefined_method(ce, Z_STR_P(function_name));
7457 			}
7458 			zval_ptr_dtor_nogc(free_op2);
7459 			HANDLE_EXCEPTION();
7460 		}
7461 		if ((IS_TMP_VAR|IS_VAR) == IS_CONST &&
7462 		    EXPECTED(fbc->type <= ZEND_USER_FUNCTION) &&
7463 		    EXPECTED(!(fbc->common.fn_flags & (ZEND_ACC_CALL_VIA_TRAMPOLINE|ZEND_ACC_NEVER_CACHE)))) {
7464 			CACHE_POLYMORPHIC_PTR(opline->result.num, ce, fbc);
7465 		}
7466 		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!fbc->op_array.run_time_cache)) {
7467 			init_func_run_time_cache(&fbc->op_array);
7468 		}
7469 		if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
7470 			zval_ptr_dtor_nogc(free_op2);
7471 		}
7472 	} else {
7473 		if (UNEXPECTED(ce->constructor == NULL)) {
7474 			zend_throw_error(NULL, "Cannot call constructor");
7475 			HANDLE_EXCEPTION();
7476 		}
7477 		if (Z_TYPE(EX(This)) == IS_OBJECT && Z_OBJ(EX(This))->ce != ce->constructor->common.scope && (ce->constructor->common.fn_flags & ZEND_ACC_PRIVATE)) {
7478 			zend_throw_error(NULL, "Cannot call private %s::__construct()", ZSTR_VAL(ce->name));
7479 			HANDLE_EXCEPTION();
7480 		}
7481 		fbc = ce->constructor;
7482 		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!fbc->op_array.run_time_cache)) {
7483 			init_func_run_time_cache(&fbc->op_array);
7484 		}
7485 	}
7486 
7487 	object = NULL;
7488 	if (!(fbc->common.fn_flags & ZEND_ACC_STATIC)) {
7489 		if (Z_TYPE(EX(This)) == IS_OBJECT && instanceof_function(Z_OBJCE(EX(This)), ce)) {
7490 			object = Z_OBJ(EX(This));
7491 			ce = object->ce;
7492 		} else {
7493 			zend_non_static_method_call(fbc);
7494 			if (UNEXPECTED(EG(exception) != NULL)) {
7495 				HANDLE_EXCEPTION();
7496 			}
7497 		}
7498 	}
7499 
7500 	if (IS_CONST == IS_UNUSED) {
7501 		/* previous opcode is ZEND_FETCH_CLASS */
7502 		if ((opline->op1.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_PARENT ||
7503 		    (opline->op1.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_SELF) {
7504 			if (Z_TYPE(EX(This)) == IS_OBJECT) {
7505 				ce = Z_OBJCE(EX(This));
7506 			} else {
7507 				ce = Z_CE(EX(This));
7508 			}
7509 		}
7510 	}
7511 
7512 	call = zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_FUNCTION,
7513 		fbc, opline->extended_value, ce, object);
7514 	call->prev_execute_data = EX(call);
7515 	EX(call) = call;
7516 
7517 	ZEND_VM_NEXT_OPCODE();
7518 }
7519 
7520 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_USER_CALL_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
7521 {
7522 	USE_OPLINE
7523 	zend_free_op free_op2;
7524 	zval *function_name;
7525 	zend_fcall_info_cache fcc;
7526 	char *error = NULL;
7527 	zend_function *func;
7528 	zend_class_entry *called_scope;
7529 	zend_object *object;
7530 	zend_execute_data *call;
7531 	uint32_t call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_DYNAMIC;
7532 
7533 	SAVE_OPLINE();
7534 	function_name = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
7535 	if (zend_is_callable_ex(function_name, NULL, 0, NULL, &fcc, &error)) {
7536 		func = fcc.function_handler;
7537 		called_scope = fcc.called_scope;
7538 		object = fcc.object;
7539 		if (error) {
7540 			efree(error);
7541 			/* This is the only soft error is_callable() can generate */
7542 			zend_non_static_method_call(func);
7543 			if (UNEXPECTED(EG(exception) != NULL)) {
7544 				zval_ptr_dtor_nogc(free_op2);
7545 				HANDLE_EXCEPTION();
7546 			}
7547 		}
7548 		if (func->common.fn_flags & ZEND_ACC_CLOSURE) {
7549 			/* Delay closure destruction until its invocation */
7550 			GC_ADDREF(ZEND_CLOSURE_OBJECT(func));
7551 			call_info |= ZEND_CALL_CLOSURE;
7552 			if (func->common.fn_flags & ZEND_ACC_FAKE_CLOSURE) {
7553 				call_info |= ZEND_CALL_FAKE_CLOSURE;
7554 			}
7555 		} else if (object) {
7556 			call_info |= ZEND_CALL_RELEASE_THIS;
7557 			GC_ADDREF(object); /* For $this pointer */
7558 		}
7559 
7560 		zval_ptr_dtor_nogc(free_op2);
7561 		if (((IS_TMP_VAR|IS_VAR) & (IS_TMP_VAR|IS_VAR)) && UNEXPECTED(EG(exception))) {
7562 			if (call_info & ZEND_CALL_CLOSURE) {
7563 				zend_object_release(ZEND_CLOSURE_OBJECT(func));
7564 			}
7565 			if (call_info & ZEND_CALL_RELEASE_THIS) {
7566 				zend_object_release(object);
7567 			}
7568 			HANDLE_EXCEPTION();
7569 		}
7570 
7571 		if (EXPECTED(func->type == ZEND_USER_FUNCTION) && UNEXPECTED(!func->op_array.run_time_cache)) {
7572 			init_func_run_time_cache(&func->op_array);
7573 		}
7574 	} else {
7575 		zend_internal_type_error(EX_USES_STRICT_TYPES(), "%s() expects parameter 1 to be a valid callback, %s", Z_STRVAL_P(RT_CONSTANT(opline, opline->op1)), error);
7576 		efree(error);
7577 		zval_ptr_dtor_nogc(free_op2);
7578 		if (UNEXPECTED(EG(exception))) {
7579 			HANDLE_EXCEPTION();
7580 		}
7581 		func = (zend_function*)&zend_pass_function;
7582 		called_scope = NULL;
7583 		object = NULL;
7584 	}
7585 
7586 	call = zend_vm_stack_push_call_frame(call_info,
7587 		func, opline->extended_value, called_scope, object);
7588 	call->prev_execute_data = EX(call);
7589 	EX(call) = call;
7590 
7591 	ZEND_VM_NEXT_OPCODE();
7592 }
7593 
7594 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
7595 {
7596 	USE_OPLINE
7597 
7598 	zval *expr_ptr, new_expr;
7599 
7600 	SAVE_OPLINE();
7601 	if ((IS_CONST == IS_VAR || IS_CONST == IS_CV) &&
7602 	    UNEXPECTED(opline->extended_value & ZEND_ARRAY_ELEMENT_REF)) {
7603 		expr_ptr = NULL;
7604 		if (Z_ISREF_P(expr_ptr)) {
7605 			Z_ADDREF_P(expr_ptr);
7606 		} else {
7607 			ZVAL_MAKE_REF_EX(expr_ptr, 2);
7608 		}
7609 
7610 	} else {
7611 		expr_ptr = RT_CONSTANT(opline, opline->op1);
7612 		if (IS_CONST == IS_TMP_VAR) {
7613 			/* pass */
7614 		} else if (IS_CONST == IS_CONST) {
7615 			Z_TRY_ADDREF_P(expr_ptr);
7616 		} else if (IS_CONST == IS_CV) {
7617 			ZVAL_DEREF(expr_ptr);
7618 			Z_TRY_ADDREF_P(expr_ptr);
7619 		} else /* if (IS_CONST == IS_VAR) */ {
7620 			if (UNEXPECTED(Z_ISREF_P(expr_ptr))) {
7621 				zend_refcounted *ref = Z_COUNTED_P(expr_ptr);
7622 
7623 				expr_ptr = Z_REFVAL_P(expr_ptr);
7624 				if (UNEXPECTED(GC_DELREF(ref) == 0)) {
7625 					ZVAL_COPY_VALUE(&new_expr, expr_ptr);
7626 					expr_ptr = &new_expr;
7627 					efree_size(ref, sizeof(zend_reference));
7628 				} else if (Z_OPT_REFCOUNTED_P(expr_ptr)) {
7629 					Z_ADDREF_P(expr_ptr);
7630 				}
7631 			}
7632 		}
7633 	}
7634 
7635 	if ((IS_TMP_VAR|IS_VAR) != IS_UNUSED) {
7636 		zend_free_op free_op2;
7637 		zval *offset = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
7638 		zend_string *str;
7639 		zend_ulong hval;
7640 
7641 add_again:
7642 		if (EXPECTED(Z_TYPE_P(offset) == IS_STRING)) {
7643 			str = Z_STR_P(offset);
7644 			if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
7645 				if (ZEND_HANDLE_NUMERIC(str, hval)) {
7646 					goto num_index;
7647 				}
7648 			}
7649 str_index:
7650 			zend_hash_update(Z_ARRVAL_P(EX_VAR(opline->result.var)), str, expr_ptr);
7651 		} else if (EXPECTED(Z_TYPE_P(offset) == IS_LONG)) {
7652 			hval = Z_LVAL_P(offset);
7653 num_index:
7654 			zend_hash_index_update(Z_ARRVAL_P(EX_VAR(opline->result.var)), hval, expr_ptr);
7655 		} else if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
7656 			offset = Z_REFVAL_P(offset);
7657 			goto add_again;
7658 		} else if (Z_TYPE_P(offset) == IS_NULL) {
7659 			str = ZSTR_EMPTY_ALLOC();
7660 			goto str_index;
7661 		} else if (Z_TYPE_P(offset) == IS_DOUBLE) {
7662 			hval = zend_dval_to_lval(Z_DVAL_P(offset));
7663 			goto num_index;
7664 		} else if (Z_TYPE_P(offset) == IS_FALSE) {
7665 			hval = 0;
7666 			goto num_index;
7667 		} else if (Z_TYPE_P(offset) == IS_TRUE) {
7668 			hval = 1;
7669 			goto num_index;
7670 		} else if ((IS_TMP_VAR|IS_VAR) == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
7671 			GET_OP2_UNDEF_CV(offset, BP_VAR_R);
7672 			str = ZSTR_EMPTY_ALLOC();
7673 			goto str_index;
7674 		} else {
7675 			zend_illegal_offset();
7676 			zval_ptr_dtor_nogc(expr_ptr);
7677 		}
7678 		zval_ptr_dtor_nogc(free_op2);
7679 	} else {
7680 		if (!zend_hash_next_index_insert(Z_ARRVAL_P(EX_VAR(opline->result.var)), expr_ptr)) {
7681 			zend_cannot_add_element();
7682 			zval_ptr_dtor_nogc(expr_ptr);
7683 		}
7684 	}
7685 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
7686 }
7687 
7688 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_ARRAY_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
7689 {
7690 	zval *array;
7691 	uint32_t size;
7692 	USE_OPLINE
7693 
7694 	array = EX_VAR(opline->result.var);
7695 	if (IS_CONST != IS_UNUSED) {
7696 		size = opline->extended_value >> ZEND_ARRAY_SIZE_SHIFT;
7697 		ZVAL_ARR(array, zend_new_array(size));
7698 		/* Explicitly initialize array as not-packed if flag is set */
7699 		if (opline->extended_value & ZEND_ARRAY_NOT_PACKED) {
7700 			zend_hash_real_init_mixed(Z_ARRVAL_P(array));
7701 		}
7702 		ZEND_VM_TAIL_CALL(ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
7703 	} else {
7704 		ZVAL_EMPTY_ARRAY(array);
7705 		ZEND_VM_NEXT_OPCODE();
7706 	}
7707 }
7708 
7709 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
7710 {
7711 	USE_OPLINE
7712 	zend_free_op free_op2;
7713 	zval *container;
7714 	int result;
7715 	zend_ulong hval;
7716 	zval *offset;
7717 
7718 	SAVE_OPLINE();
7719 	container = RT_CONSTANT(opline, opline->op1);
7720 	offset = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
7721 
7722 	if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
7723 		HashTable *ht;
7724 		zval *value;
7725 		zend_string *str;
7726 
7727 isset_dim_obj_array:
7728 		ht = Z_ARRVAL_P(container);
7729 isset_again:
7730 		if (EXPECTED(Z_TYPE_P(offset) == IS_STRING)) {
7731 			str = Z_STR_P(offset);
7732 			if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
7733 				if (ZEND_HANDLE_NUMERIC(str, hval)) {
7734 					goto num_index_prop;
7735 				}
7736 			}
7737 			value = zend_hash_find_ex_ind(ht, str, (IS_TMP_VAR|IS_VAR) == IS_CONST);
7738 		} else if (EXPECTED(Z_TYPE_P(offset) == IS_LONG)) {
7739 			hval = Z_LVAL_P(offset);
7740 num_index_prop:
7741 			value = zend_hash_index_find(ht, hval);
7742 		} else if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(offset))) {
7743 			offset = Z_REFVAL_P(offset);
7744 			goto isset_again;
7745 		} else {
7746 			value = zend_find_array_dim_slow(ht, offset EXECUTE_DATA_CC);
7747 		}
7748 
7749 		if (!(opline->extended_value & ZEND_ISEMPTY)) {
7750 			/* > IS_NULL means not IS_UNDEF and not IS_NULL */
7751 			result = value != NULL && Z_TYPE_P(value) > IS_NULL &&
7752 			    (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL);
7753 		} else {
7754 			result = (value == NULL || !i_zend_is_true(value));
7755 		}
7756 		goto isset_dim_obj_exit;
7757 	} else if ((IS_CONST & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(container))) {
7758 		container = Z_REFVAL_P(container);
7759 		if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
7760 			goto isset_dim_obj_array;
7761 		}
7762 	}
7763 
7764 	if ((IS_TMP_VAR|IS_VAR) == IS_CONST && Z_EXTRA_P(offset) == ZEND_EXTRA_VALUE) {
7765 		offset++;
7766 	}
7767 	if (!(opline->extended_value & ZEND_ISEMPTY)) {
7768 		result = zend_isset_dim_slow(container, offset EXECUTE_DATA_CC);
7769 	} else {
7770 		result = zend_isempty_dim_slow(container, offset EXECUTE_DATA_CC);
7771 	}
7772 
7773 isset_dim_obj_exit:
7774 	zval_ptr_dtor_nogc(free_op2);
7775 
7776 	ZEND_VM_SMART_BRANCH(result, 1);
7777 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
7778 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
7779 }
7780 
7781 static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
7782 {
7783 	USE_OPLINE
7784 	zend_free_op free_op2;
7785 	zval *container;
7786 	int result;
7787 	zval *offset;
7788 
7789 	SAVE_OPLINE();
7790 	container = RT_CONSTANT(opline, opline->op1);
7791 
7792 	if (IS_CONST == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
7793 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
7794 	}
7795 
7796 	offset = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
7797 
7798 	if (IS_CONST == IS_CONST ||
7799 	    (IS_CONST != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
7800 		if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
7801 			container = Z_REFVAL_P(container);
7802 			if (UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) {
7803 				goto isset_no_object;
7804 			}
7805 		} else {
7806 			goto isset_no_object;
7807 		}
7808 	}
7809 	if (UNEXPECTED(!Z_OBJ_HT_P(container)->has_property)) {
7810 		zend_wrong_property_check(offset);
7811 isset_no_object:
7812 		result = (opline->extended_value & ZEND_ISEMPTY);
7813 	} else {
7814 		result =
7815 			(opline->extended_value & ZEND_ISEMPTY) ^
7816 			Z_OBJ_HT_P(container)->has_property(container, offset, (opline->extended_value & ZEND_ISEMPTY), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_ISEMPTY) : NULL));
7817 	}
7818 
7819 	zval_ptr_dtor_nogc(free_op2);
7820 
7821 	ZEND_VM_SMART_BRANCH(result, 1);
7822 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
7823 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
7824 }
7825 
7826 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_YIELD_SPEC_CONST_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
7827 {
7828 	USE_OPLINE
7829 
7830 	zend_generator *generator = zend_get_running_generator(EXECUTE_DATA_C);
7831 
7832 	SAVE_OPLINE();
7833 	if (UNEXPECTED(generator->flags & ZEND_GENERATOR_FORCED_CLOSE)) {
7834 		ZEND_VM_TAIL_CALL(zend_yield_in_closed_generator_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
7835 	}
7836 
7837 	/* Destroy the previously yielded value */
7838 	zval_ptr_dtor(&generator->value);
7839 
7840 	/* Destroy the previously yielded key */
7841 	zval_ptr_dtor(&generator->key);
7842 
7843 	/* Set the new yielded value */
7844 	if (IS_CONST != IS_UNUSED) {
7845 
7846 
7847 		if (UNEXPECTED(EX(func)->op_array.fn_flags & ZEND_ACC_RETURN_REFERENCE)) {
7848 			/* Constants and temporary variables aren't yieldable by reference,
7849 			 * but we still allow them with a notice. */
7850 			if (IS_CONST & (IS_CONST|IS_TMP_VAR)) {
7851 				zval *value;
7852 
7853 				zend_error(E_NOTICE, "Only variable references should be yielded by reference");
7854 
7855 				value = RT_CONSTANT(opline, opline->op1);
7856 				ZVAL_COPY_VALUE(&generator->value, value);
7857 				if (IS_CONST == IS_CONST) {
7858 					if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
7859 						Z_ADDREF(generator->value);
7860 					}
7861 				}
7862 			} else {
7863 				zval *value_ptr = NULL;
7864 
7865 				/* If a function call result is yielded and the function did
7866 				 * not return by reference we throw a notice. */
7867 				if (IS_CONST == IS_VAR &&
7868 				    (value_ptr == &EG(uninitialized_zval) ||
7869 				     (opline->extended_value == ZEND_RETURNS_FUNCTION &&
7870 				      !Z_ISREF_P(value_ptr)))) {
7871 					zend_error(E_NOTICE, "Only variable references should be yielded by reference");
7872 					ZVAL_COPY(&generator->value, value_ptr);
7873 				} else {
7874 					if (Z_ISREF_P(value_ptr)) {
7875 						Z_ADDREF_P(value_ptr);
7876 					} else {
7877 						ZVAL_MAKE_REF_EX(value_ptr, 2);
7878 					}
7879 					ZVAL_REF(&generator->value, Z_REF_P(value_ptr));
7880 				}
7881 
7882 			}
7883 		} else {
7884 			zval *value = RT_CONSTANT(opline, opline->op1);
7885 
7886 			/* Consts, temporary variables and references need copying */
7887 			if (IS_CONST == IS_CONST) {
7888 				ZVAL_COPY_VALUE(&generator->value, value);
7889 				if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
7890 					Z_ADDREF(generator->value);
7891 				}
7892 			} else if (IS_CONST == IS_TMP_VAR) {
7893 				ZVAL_COPY_VALUE(&generator->value, value);
7894             } else if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
7895 				ZVAL_COPY(&generator->value, Z_REFVAL_P(value));
7896 
7897 			} else {
7898 				ZVAL_COPY_VALUE(&generator->value, value);
7899 				if (IS_CONST == IS_CV) {
7900 					if (Z_OPT_REFCOUNTED_P(value)) Z_ADDREF_P(value);
7901 				}
7902 			}
7903 		}
7904 	} else {
7905 		/* If no value was specified yield null */
7906 		ZVAL_NULL(&generator->value);
7907 	}
7908 
7909 	/* Set the new yielded key */
7910 	if (IS_TMP_VAR != IS_UNUSED) {
7911 		zend_free_op free_op2;
7912 		zval *key = _get_zval_ptr_tmp(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
7913 
7914 		/* Consts, temporary variables and references need copying */
7915 		if (IS_TMP_VAR == IS_CONST) {
7916 			ZVAL_COPY_VALUE(&generator->key, key);
7917 			if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->key))) {
7918 				Z_ADDREF(generator->key);
7919 			}
7920 		} else if (IS_TMP_VAR == IS_TMP_VAR) {
7921 			ZVAL_COPY_VALUE(&generator->key, key);
7922 		} else if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && Z_ISREF_P(key)) {
7923 			ZVAL_COPY(&generator->key, Z_REFVAL_P(key));
7924 
7925 		} else {
7926 			ZVAL_COPY_VALUE(&generator->key, key);
7927 			if (IS_TMP_VAR == IS_CV) {
7928 				if (Z_OPT_REFCOUNTED_P(key)) Z_ADDREF_P(key);
7929 			}
7930 		}
7931 
7932 		if (Z_TYPE(generator->key) == IS_LONG
7933 		    && Z_LVAL(generator->key) > generator->largest_used_integer_key
7934 		) {
7935 			generator->largest_used_integer_key = Z_LVAL(generator->key);
7936 		}
7937 	} else {
7938 		/* If no key was specified we use auto-increment keys */
7939 		generator->largest_used_integer_key++;
7940 		ZVAL_LONG(&generator->key, generator->largest_used_integer_key);
7941 	}
7942 
7943 	if (RETURN_VALUE_USED(opline)) {
7944 		/* If the return value of yield is used set the send
7945 		 * target and initialize it to NULL */
7946 		generator->send_target = EX_VAR(opline->result.var);
7947 		ZVAL_NULL(generator->send_target);
7948 	} else {
7949 		generator->send_target = NULL;
7950 	}
7951 
7952 	/* We increment to the next op, so we are at the correct position when the
7953 	 * generator is resumed. */
7954 	ZEND_VM_INC_OPCODE();
7955 
7956 	/* The GOTO VM uses a local opline variable. We need to set the opline
7957 	 * variable in execute_data so we don't resume at an old position. */
7958 	SAVE_OPLINE();
7959 
7960 	ZEND_VM_RETURN();
7961 }
7962 
7963 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_fetch_static_prop_helper_SPEC_CONST_VAR(int type ZEND_OPCODE_HANDLER_ARGS_DC)
7964 {
7965 	USE_OPLINE
7966 
7967 	zval *varname;
7968 	zval *retval;
7969 	zend_string *name, *tmp_name;
7970 	zend_class_entry *ce;
7971 
7972 	SAVE_OPLINE();
7973 
7974 	do {
7975 		if (IS_VAR == IS_CONST) {
7976 			if (IS_CONST == IS_CONST && EXPECTED((ce = CACHED_PTR(opline->extended_value)) != NULL)) {
7977 				retval = CACHED_PTR(opline->extended_value + sizeof(void*));
7978 				break;
7979 			} else {
7980 				zval *class_name = RT_CONSTANT(opline, opline->op2);
7981 
7982 				if (UNEXPECTED((ce = CACHED_PTR(opline->extended_value)) == NULL)) {
7983 					ce = zend_fetch_class_by_name(Z_STR_P(class_name), class_name + 1, ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
7984 					if (UNEXPECTED(ce == NULL)) {
7985 
7986 						retval = NULL;
7987 						break;
7988 					}
7989 					if (IS_CONST != IS_CONST) {
7990 						CACHE_PTR(opline->extended_value, ce);
7991 					}
7992 				}
7993 			}
7994 		} else {
7995 			if (IS_VAR == IS_UNUSED) {
7996 				ce = zend_fetch_class(NULL, opline->op2.num);
7997 				if (UNEXPECTED(ce == NULL)) {
7998 
7999 					retval = NULL;
8000 					break;
8001 				}
8002 			} else {
8003 				ce = Z_CE_P(EX_VAR(opline->op2.var));
8004 			}
8005 			if (IS_CONST == IS_CONST &&
8006 			    EXPECTED(CACHED_PTR(opline->extended_value) == ce)) {
8007 				retval = CACHED_PTR(opline->extended_value + sizeof(void*));
8008 				break;
8009 			}
8010 		}
8011 
8012 		varname = RT_CONSTANT(opline, opline->op1);
8013 		if (IS_CONST == IS_CONST) {
8014 			name = Z_STR_P(varname);
8015 		} else if (EXPECTED(Z_TYPE_P(varname) == IS_STRING)) {
8016 			name = Z_STR_P(varname);
8017 			tmp_name = NULL;
8018 		} else {
8019 			if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(varname) == IS_UNDEF)) {
8020 				zval_undefined_cv(EX(opline)->op1.var EXECUTE_DATA_CC);
8021 			}
8022 			name = zval_get_tmp_string(varname, &tmp_name);
8023 		}
8024 
8025 		retval = zend_std_get_static_property(ce, name, type == BP_VAR_IS);
8026 
8027 		if (IS_CONST != IS_CONST) {
8028 			zend_tmp_string_release(tmp_name);
8029 		}
8030 
8031 		if (IS_CONST == IS_CONST && EXPECTED(retval)) {
8032 			CACHE_POLYMORPHIC_PTR(opline->extended_value, ce, retval);
8033 		}
8034 
8035 	} while (0);
8036 
8037 	if (UNEXPECTED(retval == NULL)) {
8038 		if (EG(exception)) {
8039 			ZVAL_UNDEF(EX_VAR(opline->result.var));
8040 			HANDLE_EXCEPTION();
8041 		} else {
8042 			ZEND_ASSERT(type == BP_VAR_IS);
8043 			retval = &EG(uninitialized_zval);
8044 		}
8045 	}
8046 
8047 	if (type == BP_VAR_R || type == BP_VAR_IS) {
8048 		ZVAL_COPY_DEREF(EX_VAR(opline->result.var), retval);
8049 	} else {
8050 		ZVAL_INDIRECT(EX_VAR(opline->result.var), retval);
8051 	}
8052 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
8053 }
8054 
8055 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_R_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
8056 {
8057 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_CONST_VAR(BP_VAR_R ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
8058 }
8059 
8060 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_W_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
8061 {
8062 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_CONST_VAR(BP_VAR_W ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
8063 }
8064 
8065 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_RW_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
8066 {
8067 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_CONST_VAR(BP_VAR_RW ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
8068 }
8069 
8070 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
8071 {
8072 	int fetch_type =
8073 		(UNEXPECTED(ZEND_CALL_INFO(EX(call)) & ZEND_CALL_SEND_ARG_BY_REF)) ?
8074 			BP_VAR_W : BP_VAR_R;
8075 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_CONST_VAR(fetch_type ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
8076 }
8077 
8078 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_UNSET_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
8079 {
8080 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_CONST_VAR(BP_VAR_UNSET ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
8081 }
8082 
8083 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_IS_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
8084 {
8085 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_CONST_VAR(BP_VAR_IS ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
8086 }
8087 
8088 static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_UNSET_STATIC_PROP_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
8089 {
8090 	USE_OPLINE
8091 	zval *varname;
8092 	zend_string *name, *tmp_name;
8093 	zend_class_entry *ce;
8094 
8095 
8096 	SAVE_OPLINE();
8097 
8098 	if (IS_VAR == IS_CONST) {
8099 		ce = CACHED_PTR(opline->extended_value);
8100 		if (UNEXPECTED(ce == NULL)) {
8101 			ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op2)), RT_CONSTANT(opline, opline->op2) + 1, ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
8102 			if (UNEXPECTED(ce == NULL)) {
8103 				ZEND_ASSERT(EG(exception));
8104 
8105 				HANDLE_EXCEPTION();
8106 			}
8107 			/*CACHE_PTR(opline->extended_value, ce);*/
8108 		}
8109 	} else if (IS_VAR == IS_UNUSED) {
8110 		ce = zend_fetch_class(NULL, opline->op2.num);
8111 		if (UNEXPECTED(ce == NULL)) {
8112 			ZEND_ASSERT(EG(exception));
8113 
8114 			HANDLE_EXCEPTION();
8115 		}
8116 	} else {
8117 		ce = Z_CE_P(EX_VAR(opline->op2.var));
8118 	}
8119 
8120 	varname = RT_CONSTANT(opline, opline->op1);
8121 	if (IS_CONST == IS_CONST) {
8122 		name = Z_STR_P(varname);
8123 	} else if (EXPECTED(Z_TYPE_P(varname) == IS_STRING)) {
8124 		name = Z_STR_P(varname);
8125 		tmp_name = NULL;
8126 	} else {
8127 		if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(varname) == IS_UNDEF)) {
8128 			varname = GET_OP1_UNDEF_CV(varname, BP_VAR_R);
8129 		}
8130 		name = zval_get_tmp_string(varname, &tmp_name);
8131 	}
8132 
8133 	zend_std_unset_static_property(ce, name);
8134 
8135 	if (IS_CONST != IS_CONST) {
8136 		zend_tmp_string_release(tmp_name);
8137 	}
8138 
8139 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
8140 }
8141 
8142 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
8143 {
8144 	USE_OPLINE
8145 	zval *value;
8146 	int result;
8147 
8148 	zval *varname;
8149 	zend_string *name, *tmp_name;
8150 	zend_class_entry *ce;
8151 
8152 	SAVE_OPLINE();
8153 	if (IS_VAR == IS_CONST) {
8154 		if (IS_CONST == IS_CONST && EXPECTED((ce = CACHED_PTR(opline->extended_value & ~ZEND_ISEMPTY)) != NULL)) {
8155 			value = CACHED_PTR((opline->extended_value & ~ZEND_ISEMPTY) + sizeof(void*));
8156 			goto is_static_prop_return;
8157 		} else if (UNEXPECTED((ce = CACHED_PTR(opline->extended_value & ~ZEND_ISEMPTY)) == NULL)) {
8158 			ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op2)), RT_CONSTANT(opline, opline->op2) + 1, ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
8159 			if (UNEXPECTED(ce == NULL)) {
8160 				ZEND_ASSERT(EG(exception));
8161 				ZVAL_UNDEF(EX_VAR(opline->result.var));
8162 				HANDLE_EXCEPTION();
8163 			}
8164 			if (IS_CONST != IS_CONST) {
8165 				CACHE_PTR(opline->extended_value & ~ZEND_ISEMPTY, ce);
8166 			}
8167 		}
8168 	} else {
8169 		if (IS_VAR == IS_UNUSED) {
8170 			ce = zend_fetch_class(NULL, opline->op2.num);
8171 			if (UNEXPECTED(ce == NULL)) {
8172 				ZEND_ASSERT(EG(exception));
8173 
8174 				ZVAL_UNDEF(EX_VAR(opline->result.var));
8175 				HANDLE_EXCEPTION();
8176 			}
8177 		} else {
8178 			ce = Z_CE_P(EX_VAR(opline->op2.var));
8179 		}
8180 		if (IS_CONST == IS_CONST &&
8181 		    EXPECTED(CACHED_PTR(opline->extended_value & ~ZEND_ISEMPTY) == ce)) {
8182 
8183 			value = CACHED_PTR((opline->extended_value & ~ZEND_ISEMPTY) + sizeof(void*));
8184 			goto is_static_prop_return;
8185 		}
8186 	}
8187 
8188 	varname = RT_CONSTANT(opline, opline->op1);
8189 	if (IS_CONST == IS_CONST) {
8190 		name = Z_STR_P(varname);
8191 	} else {
8192 		name = zval_get_tmp_string(varname, &tmp_name);
8193 	}
8194 
8195 	value = zend_std_get_static_property(ce, name, 1);
8196 
8197 	if (IS_CONST == IS_CONST && value) {
8198 		CACHE_POLYMORPHIC_PTR(opline->extended_value & ~ZEND_ISEMPTY, ce, value);
8199 	}
8200 
8201 	if (IS_CONST != IS_CONST) {
8202 		zend_tmp_string_release(tmp_name);
8203 	}
8204 
8205 is_static_prop_return:
8206 	if (!(opline->extended_value & ZEND_ISEMPTY)) {
8207 		result = value && Z_TYPE_P(value) > IS_NULL &&
8208 		    (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL);
8209 	} else {
8210 		result = !value || !i_zend_is_true(value);
8211 	}
8212 
8213 	ZEND_VM_SMART_BRANCH(result, 1);
8214 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
8215 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
8216 }
8217 
8218 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_YIELD_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
8219 {
8220 	USE_OPLINE
8221 
8222 	zend_generator *generator = zend_get_running_generator(EXECUTE_DATA_C);
8223 
8224 	SAVE_OPLINE();
8225 	if (UNEXPECTED(generator->flags & ZEND_GENERATOR_FORCED_CLOSE)) {
8226 		ZEND_VM_TAIL_CALL(zend_yield_in_closed_generator_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
8227 	}
8228 
8229 	/* Destroy the previously yielded value */
8230 	zval_ptr_dtor(&generator->value);
8231 
8232 	/* Destroy the previously yielded key */
8233 	zval_ptr_dtor(&generator->key);
8234 
8235 	/* Set the new yielded value */
8236 	if (IS_CONST != IS_UNUSED) {
8237 
8238 
8239 		if (UNEXPECTED(EX(func)->op_array.fn_flags & ZEND_ACC_RETURN_REFERENCE)) {
8240 			/* Constants and temporary variables aren't yieldable by reference,
8241 			 * but we still allow them with a notice. */
8242 			if (IS_CONST & (IS_CONST|IS_TMP_VAR)) {
8243 				zval *value;
8244 
8245 				zend_error(E_NOTICE, "Only variable references should be yielded by reference");
8246 
8247 				value = RT_CONSTANT(opline, opline->op1);
8248 				ZVAL_COPY_VALUE(&generator->value, value);
8249 				if (IS_CONST == IS_CONST) {
8250 					if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
8251 						Z_ADDREF(generator->value);
8252 					}
8253 				}
8254 			} else {
8255 				zval *value_ptr = NULL;
8256 
8257 				/* If a function call result is yielded and the function did
8258 				 * not return by reference we throw a notice. */
8259 				if (IS_CONST == IS_VAR &&
8260 				    (value_ptr == &EG(uninitialized_zval) ||
8261 				     (opline->extended_value == ZEND_RETURNS_FUNCTION &&
8262 				      !Z_ISREF_P(value_ptr)))) {
8263 					zend_error(E_NOTICE, "Only variable references should be yielded by reference");
8264 					ZVAL_COPY(&generator->value, value_ptr);
8265 				} else {
8266 					if (Z_ISREF_P(value_ptr)) {
8267 						Z_ADDREF_P(value_ptr);
8268 					} else {
8269 						ZVAL_MAKE_REF_EX(value_ptr, 2);
8270 					}
8271 					ZVAL_REF(&generator->value, Z_REF_P(value_ptr));
8272 				}
8273 
8274 			}
8275 		} else {
8276 			zval *value = RT_CONSTANT(opline, opline->op1);
8277 
8278 			/* Consts, temporary variables and references need copying */
8279 			if (IS_CONST == IS_CONST) {
8280 				ZVAL_COPY_VALUE(&generator->value, value);
8281 				if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
8282 					Z_ADDREF(generator->value);
8283 				}
8284 			} else if (IS_CONST == IS_TMP_VAR) {
8285 				ZVAL_COPY_VALUE(&generator->value, value);
8286             } else if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
8287 				ZVAL_COPY(&generator->value, Z_REFVAL_P(value));
8288 
8289 			} else {
8290 				ZVAL_COPY_VALUE(&generator->value, value);
8291 				if (IS_CONST == IS_CV) {
8292 					if (Z_OPT_REFCOUNTED_P(value)) Z_ADDREF_P(value);
8293 				}
8294 			}
8295 		}
8296 	} else {
8297 		/* If no value was specified yield null */
8298 		ZVAL_NULL(&generator->value);
8299 	}
8300 
8301 	/* Set the new yielded key */
8302 	if (IS_VAR != IS_UNUSED) {
8303 		zend_free_op free_op2;
8304 		zval *key = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
8305 
8306 		/* Consts, temporary variables and references need copying */
8307 		if (IS_VAR == IS_CONST) {
8308 			ZVAL_COPY_VALUE(&generator->key, key);
8309 			if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->key))) {
8310 				Z_ADDREF(generator->key);
8311 			}
8312 		} else if (IS_VAR == IS_TMP_VAR) {
8313 			ZVAL_COPY_VALUE(&generator->key, key);
8314 		} else if ((IS_VAR & (IS_VAR|IS_CV)) && Z_ISREF_P(key)) {
8315 			ZVAL_COPY(&generator->key, Z_REFVAL_P(key));
8316 			zval_ptr_dtor_nogc(free_op2);
8317 		} else {
8318 			ZVAL_COPY_VALUE(&generator->key, key);
8319 			if (IS_VAR == IS_CV) {
8320 				if (Z_OPT_REFCOUNTED_P(key)) Z_ADDREF_P(key);
8321 			}
8322 		}
8323 
8324 		if (Z_TYPE(generator->key) == IS_LONG
8325 		    && Z_LVAL(generator->key) > generator->largest_used_integer_key
8326 		) {
8327 			generator->largest_used_integer_key = Z_LVAL(generator->key);
8328 		}
8329 	} else {
8330 		/* If no key was specified we use auto-increment keys */
8331 		generator->largest_used_integer_key++;
8332 		ZVAL_LONG(&generator->key, generator->largest_used_integer_key);
8333 	}
8334 
8335 	if (RETURN_VALUE_USED(opline)) {
8336 		/* If the return value of yield is used set the send
8337 		 * target and initialize it to NULL */
8338 		generator->send_target = EX_VAR(opline->result.var);
8339 		ZVAL_NULL(generator->send_target);
8340 	} else {
8341 		generator->send_target = NULL;
8342 	}
8343 
8344 	/* We increment to the next op, so we are at the correct position when the
8345 	 * generator is resumed. */
8346 	ZEND_VM_INC_OPCODE();
8347 
8348 	/* The GOTO VM uses a local opline variable. We need to set the opline
8349 	 * variable in execute_data so we don't resume at an old position. */
8350 	SAVE_OPLINE();
8351 
8352 	ZEND_VM_RETURN();
8353 }
8354 
8355 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_CONST_UNUSED(int type ZEND_OPCODE_HANDLER_ARGS_DC)
8356 {
8357 	USE_OPLINE
8358 
8359 	zval *varname;
8360 	zval *retval;
8361 	zend_string *name, *tmp_name;
8362 	HashTable *target_symbol_table;
8363 
8364 	SAVE_OPLINE();
8365 	varname = RT_CONSTANT(opline, opline->op1);
8366 
8367 	if (IS_CONST == IS_CONST) {
8368 		name = Z_STR_P(varname);
8369 	} else if (EXPECTED(Z_TYPE_P(varname) == IS_STRING)) {
8370 		name = Z_STR_P(varname);
8371 		tmp_name = NULL;
8372 	} else {
8373 		if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(varname) == IS_UNDEF)) {
8374 			GET_OP1_UNDEF_CV(varname, BP_VAR_R);
8375 		}
8376 		name = zval_get_tmp_string(varname, &tmp_name);
8377 	}
8378 
8379 	target_symbol_table = zend_get_target_symbol_table(opline->extended_value EXECUTE_DATA_CC);
8380 	retval = zend_hash_find_ex(target_symbol_table, name, IS_CONST == IS_CONST);
8381 	if (retval == NULL) {
8382 		if (UNEXPECTED(zend_string_equals(name, ZSTR_KNOWN(ZEND_STR_THIS)))) {
8383 fetch_this:
8384 			zend_fetch_this_var(type OPLINE_CC EXECUTE_DATA_CC);
8385 			if (IS_CONST != IS_CONST) {
8386 				zend_tmp_string_release(tmp_name);
8387 			}
8388 			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
8389 		}
8390 		if (type == BP_VAR_W) {
8391 			retval = zend_hash_add_new(target_symbol_table, name, &EG(uninitialized_zval));
8392 		} else if (type == BP_VAR_IS) {
8393 			retval = &EG(uninitialized_zval);
8394 		} else {
8395 			zend_error(E_NOTICE,"Undefined variable: %s", ZSTR_VAL(name));
8396 			if (type == BP_VAR_RW) {
8397 				retval = zend_hash_update(target_symbol_table, name, &EG(uninitialized_zval));
8398 			} else {
8399 				retval = &EG(uninitialized_zval);
8400 			}
8401 		}
8402 	/* GLOBAL or $$name variable may be an INDIRECT pointer to CV */
8403 	} else if (Z_TYPE_P(retval) == IS_INDIRECT) {
8404 		retval = Z_INDIRECT_P(retval);
8405 		if (Z_TYPE_P(retval) == IS_UNDEF) {
8406 			if (UNEXPECTED(zend_string_equals(name, ZSTR_KNOWN(ZEND_STR_THIS)))) {
8407 				goto fetch_this;
8408 			}
8409 			if (type == BP_VAR_W) {
8410 				ZVAL_NULL(retval);
8411 			} else if (type == BP_VAR_IS) {
8412 				retval = &EG(uninitialized_zval);
8413 			} else {
8414 				zend_error(E_NOTICE,"Undefined variable: %s", ZSTR_VAL(name));
8415 				if (type == BP_VAR_RW) {
8416 					ZVAL_NULL(retval);
8417 				} else {
8418 					retval = &EG(uninitialized_zval);
8419 				}
8420 			}
8421 		}
8422 	}
8423 
8424 	if (!(opline->extended_value & ZEND_FETCH_GLOBAL_LOCK)) {
8425 
8426 	}
8427 
8428 	if (IS_CONST != IS_CONST) {
8429 		zend_tmp_string_release(tmp_name);
8430 	}
8431 
8432 	ZEND_ASSERT(retval != NULL);
8433 	if (type == BP_VAR_R || type == BP_VAR_IS) {
8434 		ZVAL_COPY_DEREF(EX_VAR(opline->result.var), retval);
8435 	} else {
8436 		ZVAL_INDIRECT(EX_VAR(opline->result.var), retval);
8437 	}
8438 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
8439 }
8440 
8441 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_R_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
8442 {
8443 	ZEND_VM_TAIL_CALL(zend_fetch_var_address_helper_SPEC_CONST_UNUSED(BP_VAR_R ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
8444 }
8445 
8446 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_W_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
8447 {
8448 	ZEND_VM_TAIL_CALL(zend_fetch_var_address_helper_SPEC_CONST_UNUSED(BP_VAR_W ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
8449 }
8450 
8451 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_RW_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
8452 {
8453 	ZEND_VM_TAIL_CALL(zend_fetch_var_address_helper_SPEC_CONST_UNUSED(BP_VAR_RW ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
8454 }
8455 
8456 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_FUNC_ARG_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
8457 {
8458 	int fetch_type =
8459 		(UNEXPECTED(ZEND_CALL_INFO(EX(call)) & ZEND_CALL_SEND_ARG_BY_REF)) ?
8460 			BP_VAR_W : BP_VAR_R;
8461 	ZEND_VM_TAIL_CALL(zend_fetch_var_address_helper_SPEC_CONST_UNUSED(fetch_type ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
8462 }
8463 
8464 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_UNSET_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
8465 {
8466 	ZEND_VM_TAIL_CALL(zend_fetch_var_address_helper_SPEC_CONST_UNUSED(BP_VAR_UNSET ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
8467 }
8468 
8469 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_IS_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
8470 {
8471 	ZEND_VM_TAIL_CALL(zend_fetch_var_address_helper_SPEC_CONST_UNUSED(BP_VAR_IS ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
8472 }
8473 
8474 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_fetch_static_prop_helper_SPEC_CONST_UNUSED(int type ZEND_OPCODE_HANDLER_ARGS_DC)
8475 {
8476 	USE_OPLINE
8477 
8478 	zval *varname;
8479 	zval *retval;
8480 	zend_string *name, *tmp_name;
8481 	zend_class_entry *ce;
8482 
8483 	SAVE_OPLINE();
8484 
8485 	do {
8486 		if (IS_UNUSED == IS_CONST) {
8487 			if (IS_CONST == IS_CONST && EXPECTED((ce = CACHED_PTR(opline->extended_value)) != NULL)) {
8488 				retval = CACHED_PTR(opline->extended_value + sizeof(void*));
8489 				break;
8490 			} else {
8491 				zval *class_name = RT_CONSTANT(opline, opline->op2);
8492 
8493 				if (UNEXPECTED((ce = CACHED_PTR(opline->extended_value)) == NULL)) {
8494 					ce = zend_fetch_class_by_name(Z_STR_P(class_name), class_name + 1, ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
8495 					if (UNEXPECTED(ce == NULL)) {
8496 
8497 						retval = NULL;
8498 						break;
8499 					}
8500 					if (IS_CONST != IS_CONST) {
8501 						CACHE_PTR(opline->extended_value, ce);
8502 					}
8503 				}
8504 			}
8505 		} else {
8506 			if (IS_UNUSED == IS_UNUSED) {
8507 				ce = zend_fetch_class(NULL, opline->op2.num);
8508 				if (UNEXPECTED(ce == NULL)) {
8509 
8510 					retval = NULL;
8511 					break;
8512 				}
8513 			} else {
8514 				ce = Z_CE_P(EX_VAR(opline->op2.var));
8515 			}
8516 			if (IS_CONST == IS_CONST &&
8517 			    EXPECTED(CACHED_PTR(opline->extended_value) == ce)) {
8518 				retval = CACHED_PTR(opline->extended_value + sizeof(void*));
8519 				break;
8520 			}
8521 		}
8522 
8523 		varname = RT_CONSTANT(opline, opline->op1);
8524 		if (IS_CONST == IS_CONST) {
8525 			name = Z_STR_P(varname);
8526 		} else if (EXPECTED(Z_TYPE_P(varname) == IS_STRING)) {
8527 			name = Z_STR_P(varname);
8528 			tmp_name = NULL;
8529 		} else {
8530 			if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(varname) == IS_UNDEF)) {
8531 				zval_undefined_cv(EX(opline)->op1.var EXECUTE_DATA_CC);
8532 			}
8533 			name = zval_get_tmp_string(varname, &tmp_name);
8534 		}
8535 
8536 		retval = zend_std_get_static_property(ce, name, type == BP_VAR_IS);
8537 
8538 		if (IS_CONST != IS_CONST) {
8539 			zend_tmp_string_release(tmp_name);
8540 		}
8541 
8542 		if (IS_CONST == IS_CONST && EXPECTED(retval)) {
8543 			CACHE_POLYMORPHIC_PTR(opline->extended_value, ce, retval);
8544 		}
8545 
8546 	} while (0);
8547 
8548 	if (UNEXPECTED(retval == NULL)) {
8549 		if (EG(exception)) {
8550 			ZVAL_UNDEF(EX_VAR(opline->result.var));
8551 			HANDLE_EXCEPTION();
8552 		} else {
8553 			ZEND_ASSERT(type == BP_VAR_IS);
8554 			retval = &EG(uninitialized_zval);
8555 		}
8556 	}
8557 
8558 	if (type == BP_VAR_R || type == BP_VAR_IS) {
8559 		ZVAL_COPY_DEREF(EX_VAR(opline->result.var), retval);
8560 	} else {
8561 		ZVAL_INDIRECT(EX_VAR(opline->result.var), retval);
8562 	}
8563 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
8564 }
8565 
8566 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_R_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
8567 {
8568 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_CONST_UNUSED(BP_VAR_R ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
8569 }
8570 
8571 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_W_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
8572 {
8573 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_CONST_UNUSED(BP_VAR_W ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
8574 }
8575 
8576 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_RW_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
8577 {
8578 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_CONST_UNUSED(BP_VAR_RW ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
8579 }
8580 
8581 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
8582 {
8583 	int fetch_type =
8584 		(UNEXPECTED(ZEND_CALL_INFO(EX(call)) & ZEND_CALL_SEND_ARG_BY_REF)) ?
8585 			BP_VAR_W : BP_VAR_R;
8586 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_CONST_UNUSED(fetch_type ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
8587 }
8588 
8589 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_UNSET_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
8590 {
8591 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_CONST_UNUSED(BP_VAR_UNSET ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
8592 }
8593 
8594 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_IS_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
8595 {
8596 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_CONST_UNUSED(BP_VAR_IS ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
8597 }
8598 
8599 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_FUNC_ARG_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
8600 {
8601 	if (UNEXPECTED(ZEND_CALL_INFO(EX(call)) & ZEND_CALL_SEND_ARG_BY_REF)) {
8602         if ((IS_CONST & (IS_CONST|IS_TMP_VAR))) {
8603 			ZEND_VM_TAIL_CALL(zend_use_tmp_in_write_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
8604         }
8605 		ZEND_VM_TAIL_CALL(ZEND_NULL_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
8606 	} else {
8607 		if (IS_UNUSED == IS_UNUSED) {
8608 			ZEND_VM_TAIL_CALL(zend_use_undef_in_read_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
8609 		}
8610 		ZEND_VM_TAIL_CALL(ZEND_NULL_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
8611 	}
8612 }
8613 
8614 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
8615 {
8616 	USE_OPLINE
8617 	zval *function_name;
8618 	zend_class_entry *ce;
8619 	zend_object *object;
8620 	zend_function *fbc;
8621 	zend_execute_data *call;
8622 
8623 	SAVE_OPLINE();
8624 
8625 	if (IS_CONST == IS_CONST) {
8626 		/* no function found. try a static method in class */
8627 		ce = CACHED_PTR(opline->result.num);
8628 		if (UNEXPECTED(ce == NULL)) {
8629 			ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), RT_CONSTANT(opline, opline->op1) + 1, ZEND_FETCH_CLASS_DEFAULT |  ZEND_FETCH_CLASS_EXCEPTION);
8630 			if (UNEXPECTED(ce == NULL)) {
8631 				ZEND_ASSERT(EG(exception));
8632 
8633 				HANDLE_EXCEPTION();
8634 			}
8635 			if (IS_UNUSED != IS_CONST) {
8636 				CACHE_PTR(opline->result.num, ce);
8637 			}
8638 		}
8639 	} else if (IS_CONST == IS_UNUSED) {
8640 		ce = zend_fetch_class(NULL, opline->op1.num);
8641 		if (UNEXPECTED(ce == NULL)) {
8642 			ZEND_ASSERT(EG(exception));
8643 
8644 			HANDLE_EXCEPTION();
8645 		}
8646 	} else {
8647 		ce = Z_CE_P(EX_VAR(opline->op1.var));
8648 	}
8649 
8650 	if (IS_CONST == IS_CONST &&
8651 	    IS_UNUSED == IS_CONST &&
8652 	    EXPECTED((fbc = CACHED_PTR(opline->result.num + sizeof(void*))) != NULL)) {
8653 		/* nothing to do */
8654 	} else if (IS_CONST != IS_CONST &&
8655 	           IS_UNUSED == IS_CONST &&
8656 	           EXPECTED(CACHED_PTR(opline->result.num) == ce)) {
8657 		fbc = CACHED_PTR(opline->result.num + sizeof(void*));
8658 	} else if (IS_UNUSED != IS_UNUSED) {
8659 
8660 
8661 		function_name = NULL;
8662 		if (IS_UNUSED != IS_CONST) {
8663 			if (UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) {
8664 				do {
8665 					if (IS_UNUSED & (IS_VAR|IS_CV) && Z_ISREF_P(function_name)) {
8666 						function_name = Z_REFVAL_P(function_name);
8667 						if (EXPECTED(Z_TYPE_P(function_name) == IS_STRING)) {
8668 							break;
8669 						}
8670 					} else if (IS_UNUSED == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
8671 						GET_OP2_UNDEF_CV(function_name, BP_VAR_R);
8672 						if (UNEXPECTED(EG(exception) != NULL)) {
8673 							HANDLE_EXCEPTION();
8674 						}
8675 					}
8676 					zend_throw_error(NULL, "Function name must be a string");
8677 
8678 					HANDLE_EXCEPTION();
8679 				} while (0);
8680 			}
8681 		}
8682 
8683 		if (ce->get_static_method) {
8684 			fbc = ce->get_static_method(ce, Z_STR_P(function_name));
8685 		} else {
8686 			fbc = zend_std_get_static_method(ce, Z_STR_P(function_name), ((IS_UNUSED == IS_CONST) ? (RT_CONSTANT(opline, opline->op2) + 1) : NULL));
8687 		}
8688 		if (UNEXPECTED(fbc == NULL)) {
8689 			if (EXPECTED(!EG(exception))) {
8690 				zend_undefined_method(ce, Z_STR_P(function_name));
8691 			}
8692 
8693 			HANDLE_EXCEPTION();
8694 		}
8695 		if (IS_UNUSED == IS_CONST &&
8696 		    EXPECTED(fbc->type <= ZEND_USER_FUNCTION) &&
8697 		    EXPECTED(!(fbc->common.fn_flags & (ZEND_ACC_CALL_VIA_TRAMPOLINE|ZEND_ACC_NEVER_CACHE)))) {
8698 			CACHE_POLYMORPHIC_PTR(opline->result.num, ce, fbc);
8699 		}
8700 		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!fbc->op_array.run_time_cache)) {
8701 			init_func_run_time_cache(&fbc->op_array);
8702 		}
8703 		if (IS_UNUSED != IS_CONST) {
8704 
8705 		}
8706 	} else {
8707 		if (UNEXPECTED(ce->constructor == NULL)) {
8708 			zend_throw_error(NULL, "Cannot call constructor");
8709 			HANDLE_EXCEPTION();
8710 		}
8711 		if (Z_TYPE(EX(This)) == IS_OBJECT && Z_OBJ(EX(This))->ce != ce->constructor->common.scope && (ce->constructor->common.fn_flags & ZEND_ACC_PRIVATE)) {
8712 			zend_throw_error(NULL, "Cannot call private %s::__construct()", ZSTR_VAL(ce->name));
8713 			HANDLE_EXCEPTION();
8714 		}
8715 		fbc = ce->constructor;
8716 		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!fbc->op_array.run_time_cache)) {
8717 			init_func_run_time_cache(&fbc->op_array);
8718 		}
8719 	}
8720 
8721 	object = NULL;
8722 	if (!(fbc->common.fn_flags & ZEND_ACC_STATIC)) {
8723 		if (Z_TYPE(EX(This)) == IS_OBJECT && instanceof_function(Z_OBJCE(EX(This)), ce)) {
8724 			object = Z_OBJ(EX(This));
8725 			ce = object->ce;
8726 		} else {
8727 			zend_non_static_method_call(fbc);
8728 			if (UNEXPECTED(EG(exception) != NULL)) {
8729 				HANDLE_EXCEPTION();
8730 			}
8731 		}
8732 	}
8733 
8734 	if (IS_CONST == IS_UNUSED) {
8735 		/* previous opcode is ZEND_FETCH_CLASS */
8736 		if ((opline->op1.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_PARENT ||
8737 		    (opline->op1.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_SELF) {
8738 			if (Z_TYPE(EX(This)) == IS_OBJECT) {
8739 				ce = Z_OBJCE(EX(This));
8740 			} else {
8741 				ce = Z_CE(EX(This));
8742 			}
8743 		}
8744 	}
8745 
8746 	call = zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_FUNCTION,
8747 		fbc, opline->extended_value, ce, object);
8748 	call->prev_execute_data = EX(call);
8749 	EX(call) = call;
8750 
8751 	ZEND_VM_NEXT_OPCODE();
8752 }
8753 
8754 static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_VERIFY_RETURN_TYPE_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
8755 {
8756 	USE_OPLINE
8757 
8758 	SAVE_OPLINE();
8759 	if (IS_CONST == IS_UNUSED) {
8760 		zend_verify_missing_return_type(EX(func), CACHE_ADDR(opline->op2.num));
8761 	} else {
8762 /* prevents "undefined variable opline" errors */
8763 #if 0 || (IS_CONST != IS_UNUSED)
8764 		zval *retval_ref, *retval_ptr;
8765 
8766 		zend_arg_info *ret_info = EX(func)->common.arg_info - 1;
8767 
8768 		retval_ref = retval_ptr = RT_CONSTANT(opline, opline->op1);
8769 
8770 		if (IS_CONST == IS_CONST) {
8771 			ZVAL_COPY(EX_VAR(opline->result.var), retval_ptr);
8772 			retval_ref = retval_ptr = EX_VAR(opline->result.var);
8773 		} else if (IS_CONST == IS_VAR) {
8774 			if (UNEXPECTED(Z_TYPE_P(retval_ptr) == IS_INDIRECT)) {
8775 				retval_ptr = Z_INDIRECT_P(retval_ptr);
8776 			}
8777 			ZVAL_DEREF(retval_ptr);
8778 		} else if (IS_CONST == IS_CV) {
8779 			ZVAL_DEREF(retval_ptr);
8780 		}
8781 
8782 		if (UNEXPECTED(!ZEND_TYPE_IS_CLASS(ret_info->type)
8783 			&& ZEND_TYPE_CODE(ret_info->type) != IS_CALLABLE
8784 			&& ZEND_TYPE_CODE(ret_info->type) != IS_ITERABLE
8785 			&& !ZEND_SAME_FAKE_TYPE(ZEND_TYPE_CODE(ret_info->type), Z_TYPE_P(retval_ptr))
8786 			&& !(EX(func)->op_array.fn_flags & ZEND_ACC_RETURN_REFERENCE)
8787 			&& retval_ref != retval_ptr)
8788 		) {
8789 			/* A cast might happen - unwrap the reference if this is a by-value return */
8790 			if (Z_REFCOUNT_P(retval_ref) == 1) {
8791 				ZVAL_UNREF(retval_ref);
8792 			} else {
8793 				Z_DELREF_P(retval_ref);
8794 				ZVAL_COPY(retval_ref, retval_ptr);
8795 			}
8796 			retval_ptr = retval_ref;
8797 		}
8798 		zend_verify_return_type(EX(func), retval_ptr, CACHE_ADDR(opline->op2.num));
8799 #endif
8800 	}
8801 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
8802 }
8803 
8804 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_NEW_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
8805 {
8806 	USE_OPLINE
8807 	zval *result;
8808 	zend_function *constructor;
8809 	zend_class_entry *ce;
8810 	zend_execute_data *call;
8811 
8812 	SAVE_OPLINE();
8813 	if (IS_CONST == IS_CONST) {
8814 		ce = CACHED_PTR(opline->op2.num);
8815 		if (UNEXPECTED(ce == NULL)) {
8816 			ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), RT_CONSTANT(opline, opline->op1) + 1, ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
8817 			if (UNEXPECTED(ce == NULL)) {
8818 				ZEND_ASSERT(EG(exception));
8819 				ZVAL_UNDEF(EX_VAR(opline->result.var));
8820 				HANDLE_EXCEPTION();
8821 			}
8822 			CACHE_PTR(opline->op2.num, ce);
8823 		}
8824 	} else if (IS_CONST == IS_UNUSED) {
8825 		ce = zend_fetch_class(NULL, opline->op1.num);
8826 		if (UNEXPECTED(ce == NULL)) {
8827 			ZEND_ASSERT(EG(exception));
8828 			ZVAL_UNDEF(EX_VAR(opline->result.var));
8829 			HANDLE_EXCEPTION();
8830 		}
8831 	} else {
8832 		ce = Z_CE_P(EX_VAR(opline->op1.var));
8833 	}
8834 
8835 	result = EX_VAR(opline->result.var);
8836 	if (UNEXPECTED(object_init_ex(result, ce) != SUCCESS)) {
8837 		ZVAL_UNDEF(result);
8838 		HANDLE_EXCEPTION();
8839 	}
8840 
8841 	constructor = Z_OBJ_HT_P(result)->get_constructor(Z_OBJ_P(result));
8842 	if (constructor == NULL) {
8843 		if (UNEXPECTED(EG(exception))) {
8844 			HANDLE_EXCEPTION();
8845 		}
8846 
8847 		/* If there are no arguments, skip over the DO_FCALL opcode. We check if the next
8848 		 * opcode is DO_FCALL in case EXT instructions are used. */
8849 		if (EXPECTED(opline->extended_value == 0 && (opline+1)->opcode == ZEND_DO_FCALL)) {
8850 			ZEND_VM_NEXT_OPCODE_EX(1, 2);
8851 		}
8852 
8853 		/* Perform a dummy function call */
8854 		call = zend_vm_stack_push_call_frame(
8855 			ZEND_CALL_FUNCTION, (zend_function *) &zend_pass_function,
8856 			opline->extended_value, NULL, NULL);
8857 	} else {
8858 		if (EXPECTED(constructor->type == ZEND_USER_FUNCTION) && UNEXPECTED(!constructor->op_array.run_time_cache)) {
8859 			init_func_run_time_cache(&constructor->op_array);
8860 		}
8861 		/* We are not handling overloaded classes right now */
8862 		call = zend_vm_stack_push_call_frame(
8863 			ZEND_CALL_FUNCTION | ZEND_CALL_RELEASE_THIS | ZEND_CALL_CTOR,
8864 			constructor,
8865 			opline->extended_value,
8866 			ce,
8867 			Z_OBJ_P(result));
8868 		Z_ADDREF_P(result);
8869 	}
8870 
8871 	call->prev_execute_data = EX(call);
8872 	EX(call) = call;
8873 	ZEND_VM_NEXT_OPCODE();
8874 }
8875 
8876 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
8877 {
8878 	USE_OPLINE
8879 
8880 	zval *expr_ptr, new_expr;
8881 
8882 	SAVE_OPLINE();
8883 	if ((IS_CONST == IS_VAR || IS_CONST == IS_CV) &&
8884 	    UNEXPECTED(opline->extended_value & ZEND_ARRAY_ELEMENT_REF)) {
8885 		expr_ptr = NULL;
8886 		if (Z_ISREF_P(expr_ptr)) {
8887 			Z_ADDREF_P(expr_ptr);
8888 		} else {
8889 			ZVAL_MAKE_REF_EX(expr_ptr, 2);
8890 		}
8891 
8892 	} else {
8893 		expr_ptr = RT_CONSTANT(opline, opline->op1);
8894 		if (IS_CONST == IS_TMP_VAR) {
8895 			/* pass */
8896 		} else if (IS_CONST == IS_CONST) {
8897 			Z_TRY_ADDREF_P(expr_ptr);
8898 		} else if (IS_CONST == IS_CV) {
8899 			ZVAL_DEREF(expr_ptr);
8900 			Z_TRY_ADDREF_P(expr_ptr);
8901 		} else /* if (IS_CONST == IS_VAR) */ {
8902 			if (UNEXPECTED(Z_ISREF_P(expr_ptr))) {
8903 				zend_refcounted *ref = Z_COUNTED_P(expr_ptr);
8904 
8905 				expr_ptr = Z_REFVAL_P(expr_ptr);
8906 				if (UNEXPECTED(GC_DELREF(ref) == 0)) {
8907 					ZVAL_COPY_VALUE(&new_expr, expr_ptr);
8908 					expr_ptr = &new_expr;
8909 					efree_size(ref, sizeof(zend_reference));
8910 				} else if (Z_OPT_REFCOUNTED_P(expr_ptr)) {
8911 					Z_ADDREF_P(expr_ptr);
8912 				}
8913 			}
8914 		}
8915 	}
8916 
8917 	if (IS_UNUSED != IS_UNUSED) {
8918 
8919 		zval *offset = NULL;
8920 		zend_string *str;
8921 		zend_ulong hval;
8922 
8923 add_again:
8924 		if (EXPECTED(Z_TYPE_P(offset) == IS_STRING)) {
8925 			str = Z_STR_P(offset);
8926 			if (IS_UNUSED != IS_CONST) {
8927 				if (ZEND_HANDLE_NUMERIC(str, hval)) {
8928 					goto num_index;
8929 				}
8930 			}
8931 str_index:
8932 			zend_hash_update(Z_ARRVAL_P(EX_VAR(opline->result.var)), str, expr_ptr);
8933 		} else if (EXPECTED(Z_TYPE_P(offset) == IS_LONG)) {
8934 			hval = Z_LVAL_P(offset);
8935 num_index:
8936 			zend_hash_index_update(Z_ARRVAL_P(EX_VAR(opline->result.var)), hval, expr_ptr);
8937 		} else if ((IS_UNUSED & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
8938 			offset = Z_REFVAL_P(offset);
8939 			goto add_again;
8940 		} else if (Z_TYPE_P(offset) == IS_NULL) {
8941 			str = ZSTR_EMPTY_ALLOC();
8942 			goto str_index;
8943 		} else if (Z_TYPE_P(offset) == IS_DOUBLE) {
8944 			hval = zend_dval_to_lval(Z_DVAL_P(offset));
8945 			goto num_index;
8946 		} else if (Z_TYPE_P(offset) == IS_FALSE) {
8947 			hval = 0;
8948 			goto num_index;
8949 		} else if (Z_TYPE_P(offset) == IS_TRUE) {
8950 			hval = 1;
8951 			goto num_index;
8952 		} else if (IS_UNUSED == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
8953 			GET_OP2_UNDEF_CV(offset, BP_VAR_R);
8954 			str = ZSTR_EMPTY_ALLOC();
8955 			goto str_index;
8956 		} else {
8957 			zend_illegal_offset();
8958 			zval_ptr_dtor_nogc(expr_ptr);
8959 		}
8960 
8961 	} else {
8962 		if (!zend_hash_next_index_insert(Z_ARRVAL_P(EX_VAR(opline->result.var)), expr_ptr)) {
8963 			zend_cannot_add_element();
8964 			zval_ptr_dtor_nogc(expr_ptr);
8965 		}
8966 	}
8967 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
8968 }
8969 
8970 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_ARRAY_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
8971 {
8972 	zval *array;
8973 	uint32_t size;
8974 	USE_OPLINE
8975 
8976 	array = EX_VAR(opline->result.var);
8977 	if (IS_CONST != IS_UNUSED) {
8978 		size = opline->extended_value >> ZEND_ARRAY_SIZE_SHIFT;
8979 		ZVAL_ARR(array, zend_new_array(size));
8980 		/* Explicitly initialize array as not-packed if flag is set */
8981 		if (opline->extended_value & ZEND_ARRAY_NOT_PACKED) {
8982 			zend_hash_real_init_mixed(Z_ARRVAL_P(array));
8983 		}
8984 		ZEND_VM_TAIL_CALL(ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
8985 	} else {
8986 		ZVAL_EMPTY_ARRAY(array);
8987 		ZEND_VM_NEXT_OPCODE();
8988 	}
8989 }
8990 
8991 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_UNSET_VAR_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
8992 {
8993 	USE_OPLINE
8994 	zval *varname;
8995 	zend_string *name, *tmp_name;
8996 	HashTable *target_symbol_table;
8997 
8998 
8999 	SAVE_OPLINE();
9000 
9001 	varname = RT_CONSTANT(opline, opline->op1);
9002 
9003 	if (IS_CONST == IS_CONST) {
9004 		name = Z_STR_P(varname);
9005 	} else if (EXPECTED(Z_TYPE_P(varname) == IS_STRING)) {
9006 		name = Z_STR_P(varname);
9007 		tmp_name = NULL;
9008 	} else {
9009 		if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(varname) == IS_UNDEF)) {
9010 			varname = GET_OP1_UNDEF_CV(varname, BP_VAR_R);
9011 		}
9012 		name = zval_get_tmp_string(varname, &tmp_name);
9013 	}
9014 
9015 	target_symbol_table = zend_get_target_symbol_table(opline->extended_value EXECUTE_DATA_CC);
9016 	zend_hash_del_ind(target_symbol_table, name);
9017 
9018 	if (IS_CONST != IS_CONST) {
9019 		zend_tmp_string_release(tmp_name);
9020 	}
9021 
9022 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
9023 }
9024 
9025 static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_UNSET_STATIC_PROP_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
9026 {
9027 	USE_OPLINE
9028 	zval *varname;
9029 	zend_string *name, *tmp_name;
9030 	zend_class_entry *ce;
9031 
9032 
9033 	SAVE_OPLINE();
9034 
9035 	if (IS_UNUSED == IS_CONST) {
9036 		ce = CACHED_PTR(opline->extended_value);
9037 		if (UNEXPECTED(ce == NULL)) {
9038 			ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op2)), RT_CONSTANT(opline, opline->op2) + 1, ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
9039 			if (UNEXPECTED(ce == NULL)) {
9040 				ZEND_ASSERT(EG(exception));
9041 
9042 				HANDLE_EXCEPTION();
9043 			}
9044 			/*CACHE_PTR(opline->extended_value, ce);*/
9045 		}
9046 	} else if (IS_UNUSED == IS_UNUSED) {
9047 		ce = zend_fetch_class(NULL, opline->op2.num);
9048 		if (UNEXPECTED(ce == NULL)) {
9049 			ZEND_ASSERT(EG(exception));
9050 
9051 			HANDLE_EXCEPTION();
9052 		}
9053 	} else {
9054 		ce = Z_CE_P(EX_VAR(opline->op2.var));
9055 	}
9056 
9057 	varname = RT_CONSTANT(opline, opline->op1);
9058 	if (IS_CONST == IS_CONST) {
9059 		name = Z_STR_P(varname);
9060 	} else if (EXPECTED(Z_TYPE_P(varname) == IS_STRING)) {
9061 		name = Z_STR_P(varname);
9062 		tmp_name = NULL;
9063 	} else {
9064 		if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(varname) == IS_UNDEF)) {
9065 			varname = GET_OP1_UNDEF_CV(varname, BP_VAR_R);
9066 		}
9067 		name = zval_get_tmp_string(varname, &tmp_name);
9068 	}
9069 
9070 	zend_std_unset_static_property(ce, name);
9071 
9072 	if (IS_CONST != IS_CONST) {
9073 		zend_tmp_string_release(tmp_name);
9074 	}
9075 
9076 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
9077 }
9078 
9079 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ISSET_ISEMPTY_VAR_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
9080 {
9081 	USE_OPLINE
9082 	zval *value;
9083 	int result;
9084 
9085 	zval *varname;
9086 	zend_string *name, *tmp_name;
9087 	HashTable *target_symbol_table;
9088 
9089 	SAVE_OPLINE();
9090 	varname = RT_CONSTANT(opline, opline->op1);
9091 	if (IS_CONST == IS_CONST) {
9092 		name = Z_STR_P(varname);
9093 	} else {
9094 		name = zval_get_tmp_string(varname, &tmp_name);
9095 	}
9096 
9097 	target_symbol_table = zend_get_target_symbol_table(opline->extended_value EXECUTE_DATA_CC);
9098 	value = zend_hash_find_ex(target_symbol_table, name, IS_CONST == IS_CONST);
9099 
9100 	if (IS_CONST != IS_CONST) {
9101 		zend_tmp_string_release(tmp_name);
9102 	}
9103 
9104 	if (!value) {
9105 		result = (opline->extended_value & ZEND_ISEMPTY);
9106 	} else {
9107 		if (Z_TYPE_P(value) == IS_INDIRECT) {
9108 			value = Z_INDIRECT_P(value);
9109 		}
9110 		if (!(opline->extended_value & ZEND_ISEMPTY)) {
9111 			if (Z_ISREF_P(value)) {
9112 				value = Z_REFVAL_P(value);
9113 			}
9114 			result = Z_TYPE_P(value) > IS_NULL;
9115 		} else {
9116 			result = !i_zend_is_true(value);
9117 		}
9118 	}
9119 
9120 	ZEND_VM_SMART_BRANCH(result, 1);
9121 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
9122 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
9123 }
9124 
9125 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
9126 {
9127 	USE_OPLINE
9128 	zval *value;
9129 	int result;
9130 
9131 	zval *varname;
9132 	zend_string *name, *tmp_name;
9133 	zend_class_entry *ce;
9134 
9135 	SAVE_OPLINE();
9136 	if (IS_UNUSED == IS_CONST) {
9137 		if (IS_CONST == IS_CONST && EXPECTED((ce = CACHED_PTR(opline->extended_value & ~ZEND_ISEMPTY)) != NULL)) {
9138 			value = CACHED_PTR((opline->extended_value & ~ZEND_ISEMPTY) + sizeof(void*));
9139 			goto is_static_prop_return;
9140 		} else if (UNEXPECTED((ce = CACHED_PTR(opline->extended_value & ~ZEND_ISEMPTY)) == NULL)) {
9141 			ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op2)), RT_CONSTANT(opline, opline->op2) + 1, ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
9142 			if (UNEXPECTED(ce == NULL)) {
9143 				ZEND_ASSERT(EG(exception));
9144 				ZVAL_UNDEF(EX_VAR(opline->result.var));
9145 				HANDLE_EXCEPTION();
9146 			}
9147 			if (IS_CONST != IS_CONST) {
9148 				CACHE_PTR(opline->extended_value & ~ZEND_ISEMPTY, ce);
9149 			}
9150 		}
9151 	} else {
9152 		if (IS_UNUSED == IS_UNUSED) {
9153 			ce = zend_fetch_class(NULL, opline->op2.num);
9154 			if (UNEXPECTED(ce == NULL)) {
9155 				ZEND_ASSERT(EG(exception));
9156 
9157 				ZVAL_UNDEF(EX_VAR(opline->result.var));
9158 				HANDLE_EXCEPTION();
9159 			}
9160 		} else {
9161 			ce = Z_CE_P(EX_VAR(opline->op2.var));
9162 		}
9163 		if (IS_CONST == IS_CONST &&
9164 		    EXPECTED(CACHED_PTR(opline->extended_value & ~ZEND_ISEMPTY) == ce)) {
9165 
9166 			value = CACHED_PTR((opline->extended_value & ~ZEND_ISEMPTY) + sizeof(void*));
9167 			goto is_static_prop_return;
9168 		}
9169 	}
9170 
9171 	varname = RT_CONSTANT(opline, opline->op1);
9172 	if (IS_CONST == IS_CONST) {
9173 		name = Z_STR_P(varname);
9174 	} else {
9175 		name = zval_get_tmp_string(varname, &tmp_name);
9176 	}
9177 
9178 	value = zend_std_get_static_property(ce, name, 1);
9179 
9180 	if (IS_CONST == IS_CONST && value) {
9181 		CACHE_POLYMORPHIC_PTR(opline->extended_value & ~ZEND_ISEMPTY, ce, value);
9182 	}
9183 
9184 	if (IS_CONST != IS_CONST) {
9185 		zend_tmp_string_release(tmp_name);
9186 	}
9187 
9188 is_static_prop_return:
9189 	if (!(opline->extended_value & ZEND_ISEMPTY)) {
9190 		result = value && Z_TYPE_P(value) > IS_NULL &&
9191 		    (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL);
9192 	} else {
9193 		result = !value || !i_zend_is_true(value);
9194 	}
9195 
9196 	ZEND_VM_SMART_BRANCH(result, 1);
9197 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
9198 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
9199 }
9200 
9201 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_DECLARE_LAMBDA_FUNCTION_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
9202 {
9203 	USE_OPLINE
9204 	zval *zfunc;
9205 	zval *object;
9206 	zend_class_entry *called_scope;
9207 	zend_function *fbc;
9208 
9209 	zfunc = zend_hash_find_ex(EG(function_table), Z_STR_P(RT_CONSTANT(opline, opline->op1)), 1);
9210 	ZEND_ASSERT(zfunc != NULL && Z_FUNC_P(zfunc)->type == ZEND_USER_FUNCTION);
9211 
9212 	if (Z_TYPE(EX(This)) == IS_OBJECT) {
9213 		called_scope = Z_OBJCE(EX(This));
9214 		if (UNEXPECTED((Z_FUNC_P(zfunc)->common.fn_flags & ZEND_ACC_STATIC) ||
9215 				(EX(func)->common.fn_flags & ZEND_ACC_STATIC))) {
9216 			object = NULL;
9217 		} else {
9218 			object = &EX(This);
9219 		}
9220 	} else {
9221 		called_scope = Z_CE(EX(This));
9222 		object = NULL;
9223 	}
9224 	zend_create_closure(EX_VAR(opline->result.var), Z_FUNC_P(zfunc),
9225 		EX(func)->op_array.scope, called_scope, object);
9226 
9227 	ZEND_VM_NEXT_OPCODE();
9228 }
9229 
9230 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_YIELD_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
9231 {
9232 	USE_OPLINE
9233 
9234 	zend_generator *generator = zend_get_running_generator(EXECUTE_DATA_C);
9235 
9236 	SAVE_OPLINE();
9237 	if (UNEXPECTED(generator->flags & ZEND_GENERATOR_FORCED_CLOSE)) {
9238 		ZEND_VM_TAIL_CALL(zend_yield_in_closed_generator_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
9239 	}
9240 
9241 	/* Destroy the previously yielded value */
9242 	zval_ptr_dtor(&generator->value);
9243 
9244 	/* Destroy the previously yielded key */
9245 	zval_ptr_dtor(&generator->key);
9246 
9247 	/* Set the new yielded value */
9248 	if (IS_CONST != IS_UNUSED) {
9249 
9250 
9251 		if (UNEXPECTED(EX(func)->op_array.fn_flags & ZEND_ACC_RETURN_REFERENCE)) {
9252 			/* Constants and temporary variables aren't yieldable by reference,
9253 			 * but we still allow them with a notice. */
9254 			if (IS_CONST & (IS_CONST|IS_TMP_VAR)) {
9255 				zval *value;
9256 
9257 				zend_error(E_NOTICE, "Only variable references should be yielded by reference");
9258 
9259 				value = RT_CONSTANT(opline, opline->op1);
9260 				ZVAL_COPY_VALUE(&generator->value, value);
9261 				if (IS_CONST == IS_CONST) {
9262 					if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
9263 						Z_ADDREF(generator->value);
9264 					}
9265 				}
9266 			} else {
9267 				zval *value_ptr = NULL;
9268 
9269 				/* If a function call result is yielded and the function did
9270 				 * not return by reference we throw a notice. */
9271 				if (IS_CONST == IS_VAR &&
9272 				    (value_ptr == &EG(uninitialized_zval) ||
9273 				     (opline->extended_value == ZEND_RETURNS_FUNCTION &&
9274 				      !Z_ISREF_P(value_ptr)))) {
9275 					zend_error(E_NOTICE, "Only variable references should be yielded by reference");
9276 					ZVAL_COPY(&generator->value, value_ptr);
9277 				} else {
9278 					if (Z_ISREF_P(value_ptr)) {
9279 						Z_ADDREF_P(value_ptr);
9280 					} else {
9281 						ZVAL_MAKE_REF_EX(value_ptr, 2);
9282 					}
9283 					ZVAL_REF(&generator->value, Z_REF_P(value_ptr));
9284 				}
9285 
9286 			}
9287 		} else {
9288 			zval *value = RT_CONSTANT(opline, opline->op1);
9289 
9290 			/* Consts, temporary variables and references need copying */
9291 			if (IS_CONST == IS_CONST) {
9292 				ZVAL_COPY_VALUE(&generator->value, value);
9293 				if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
9294 					Z_ADDREF(generator->value);
9295 				}
9296 			} else if (IS_CONST == IS_TMP_VAR) {
9297 				ZVAL_COPY_VALUE(&generator->value, value);
9298             } else if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
9299 				ZVAL_COPY(&generator->value, Z_REFVAL_P(value));
9300 
9301 			} else {
9302 				ZVAL_COPY_VALUE(&generator->value, value);
9303 				if (IS_CONST == IS_CV) {
9304 					if (Z_OPT_REFCOUNTED_P(value)) Z_ADDREF_P(value);
9305 				}
9306 			}
9307 		}
9308 	} else {
9309 		/* If no value was specified yield null */
9310 		ZVAL_NULL(&generator->value);
9311 	}
9312 
9313 	/* Set the new yielded key */
9314 	if (IS_UNUSED != IS_UNUSED) {
9315 
9316 		zval *key = NULL;
9317 
9318 		/* Consts, temporary variables and references need copying */
9319 		if (IS_UNUSED == IS_CONST) {
9320 			ZVAL_COPY_VALUE(&generator->key, key);
9321 			if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->key))) {
9322 				Z_ADDREF(generator->key);
9323 			}
9324 		} else if (IS_UNUSED == IS_TMP_VAR) {
9325 			ZVAL_COPY_VALUE(&generator->key, key);
9326 		} else if ((IS_UNUSED & (IS_VAR|IS_CV)) && Z_ISREF_P(key)) {
9327 			ZVAL_COPY(&generator->key, Z_REFVAL_P(key));
9328 
9329 		} else {
9330 			ZVAL_COPY_VALUE(&generator->key, key);
9331 			if (IS_UNUSED == IS_CV) {
9332 				if (Z_OPT_REFCOUNTED_P(key)) Z_ADDREF_P(key);
9333 			}
9334 		}
9335 
9336 		if (Z_TYPE(generator->key) == IS_LONG
9337 		    && Z_LVAL(generator->key) > generator->largest_used_integer_key
9338 		) {
9339 			generator->largest_used_integer_key = Z_LVAL(generator->key);
9340 		}
9341 	} else {
9342 		/* If no key was specified we use auto-increment keys */
9343 		generator->largest_used_integer_key++;
9344 		ZVAL_LONG(&generator->key, generator->largest_used_integer_key);
9345 	}
9346 
9347 	if (RETURN_VALUE_USED(opline)) {
9348 		/* If the return value of yield is used set the send
9349 		 * target and initialize it to NULL */
9350 		generator->send_target = EX_VAR(opline->result.var);
9351 		ZVAL_NULL(generator->send_target);
9352 	} else {
9353 		generator->send_target = NULL;
9354 	}
9355 
9356 	/* We increment to the next op, so we are at the correct position when the
9357 	 * generator is resumed. */
9358 	ZEND_VM_INC_OPCODE();
9359 
9360 	/* The GOTO VM uses a local opline variable. We need to set the opline
9361 	 * variable in execute_data so we don't resume at an old position. */
9362 	SAVE_OPLINE();
9363 
9364 	ZEND_VM_RETURN();
9365 }
9366 
9367 static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_COUNT_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
9368 {
9369 	USE_OPLINE
9370 
9371 	zval *op1;
9372 	zend_long count;
9373 
9374 	SAVE_OPLINE();
9375 	op1 = RT_CONSTANT(opline, opline->op1);
9376 	do {
9377 		if (Z_TYPE_P(op1) == IS_ARRAY) {
9378 			count = zend_array_count(Z_ARRVAL_P(op1));
9379 			break;
9380 		} else if (Z_TYPE_P(op1) == IS_OBJECT) {
9381 			/* first, we check if the handler is defined */
9382 			if (Z_OBJ_HT_P(op1)->count_elements) {
9383 				if (SUCCESS == Z_OBJ_HT_P(op1)->count_elements(op1, &count)) {
9384 					break;
9385 				}
9386 			}
9387 
9388 			/* if not and the object implements Countable we call its count() method */
9389 			if (instanceof_function(Z_OBJCE_P(op1), zend_ce_countable)) {
9390 				zval retval;
9391 
9392 				zend_call_method_with_0_params(op1, NULL, NULL, "count", &retval);
9393 				count = zval_get_long(&retval);
9394 				zval_ptr_dtor(&retval);
9395 				break;
9396 			}
9397 
9398 			/* If There's no handler and it doesn't implement Countable then add a warning */
9399 			count = 1;
9400 		} else if (Z_TYPE_P(op1) == IS_NULL) {
9401 			count = 0;
9402 		} else {
9403 			count = 1;
9404 		}
9405 		zend_error(E_WARNING, "count(): Parameter must be an array or an object that implements Countable");
9406 	} while (0);
9407 
9408 	ZVAL_LONG(EX_VAR(opline->result.var), count);
9409 
9410 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
9411 }
9412 
9413 static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_GET_CLASS_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
9414 {
9415 	USE_OPLINE
9416 
9417 	if (IS_CONST == IS_UNUSED) {
9418 		if (UNEXPECTED(!EX(func)->common.scope)) {
9419 			SAVE_OPLINE();
9420 			zend_error(E_WARNING, "get_class() called without object from outside a class");
9421 			ZVAL_FALSE(EX_VAR(opline->result.var));
9422 			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
9423 		} else {
9424 			ZVAL_STR_COPY(EX_VAR(opline->result.var), EX(func)->common.scope->name);
9425 			ZEND_VM_NEXT_OPCODE();
9426 		}
9427 	} else {
9428 
9429 		zval *op1;
9430 
9431 		SAVE_OPLINE();
9432 		op1 = RT_CONSTANT(opline, opline->op1);
9433 		if (Z_TYPE_P(op1) == IS_OBJECT) {
9434 			ZVAL_STR_COPY(EX_VAR(opline->result.var), Z_OBJCE_P(op1)->name);
9435 		} else {
9436 			zend_error(E_WARNING, "get_class() expects parameter 1 to be object, %s given", zend_get_type_by_const(Z_TYPE_P(op1)));
9437 			ZVAL_FALSE(EX_VAR(opline->result.var));
9438 		}
9439 
9440 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
9441 	}
9442 }
9443 
9444 static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_GET_TYPE_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
9445 {
9446 	USE_OPLINE
9447 
9448 	zval *op1;
9449 	zend_string *type;
9450 
9451 	SAVE_OPLINE();
9452 	op1 = RT_CONSTANT(opline, opline->op1);
9453 	type = zend_zval_get_type(op1);
9454 	if (EXPECTED(type)) {
9455 		ZVAL_INTERNED_STR(EX_VAR(opline->result.var), type);
9456 	} else {
9457 		ZVAL_STRING(EX_VAR(opline->result.var), "unknown type");
9458 	}
9459 
9460 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
9461 }
9462 
9463 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FUNC_GET_ARGS_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
9464 {
9465 	USE_OPLINE
9466 	zend_array *ht;
9467 	uint32_t arg_count, result_size, skip;
9468 
9469 	arg_count = EX_NUM_ARGS();
9470 	if (IS_CONST == IS_CONST) {
9471 		skip = Z_LVAL_P(RT_CONSTANT(opline, opline->op1));
9472 		if (arg_count < skip) {
9473 			result_size = 0;
9474 		} else {
9475 			result_size = arg_count - skip;
9476 		}
9477 	} else {
9478 		skip = 0;
9479 		result_size = arg_count;
9480 	}
9481 
9482 	if (result_size) {
9483 		uint32_t first_extra_arg = EX(func)->op_array.num_args;
9484 
9485 		ht = zend_new_array(result_size);
9486 		ZVAL_ARR(EX_VAR(opline->result.var), ht);
9487 		zend_hash_real_init_packed(ht);
9488 		ZEND_HASH_FILL_PACKED(ht) {
9489 			zval *p, *q;
9490 			uint32_t i = skip;
9491 			p = EX_VAR_NUM(i);
9492 			if (arg_count > first_extra_arg) {
9493 				while (i < first_extra_arg) {
9494 					q = p;
9495 					if (EXPECTED(Z_TYPE_INFO_P(q) != IS_UNDEF)) {
9496 						ZVAL_DEREF(q);
9497 						if (Z_OPT_REFCOUNTED_P(q)) {
9498 							Z_ADDREF_P(q);
9499 						}
9500 					} else {
9501 						q = &EG(uninitialized_zval);
9502 					}
9503 					ZEND_HASH_FILL_ADD(q);
9504 					p++;
9505 					i++;
9506 				}
9507 				if (skip < first_extra_arg) {
9508 					skip = 0;
9509 				} else {
9510 					skip -= first_extra_arg;
9511 				}
9512 				p = EX_VAR_NUM(EX(func)->op_array.last_var + EX(func)->op_array.T + skip);
9513 			}
9514 			while (i < arg_count) {
9515 				q = p;
9516 				if (EXPECTED(Z_TYPE_INFO_P(q) != IS_UNDEF)) {
9517 					ZVAL_DEREF(q);
9518 					if (Z_OPT_REFCOUNTED_P(q)) {
9519 						Z_ADDREF_P(q);
9520 					}
9521 				} else {
9522 					q = &EG(uninitialized_zval);
9523 				}
9524 				ZEND_HASH_FILL_ADD(q);
9525 				p++;
9526 				i++;
9527 			}
9528 		} ZEND_HASH_FILL_END();
9529 		ht->nNumOfElements = result_size;
9530 	} else {
9531 		ZVAL_EMPTY_ARRAY(EX_VAR(opline->result.var));
9532 	}
9533 	ZEND_VM_NEXT_OPCODE();
9534 }
9535 
9536 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ADD_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
9537 {
9538 	USE_OPLINE
9539 
9540 	zval *op1, *op2, *result;
9541 
9542 	op1 = RT_CONSTANT(opline, opline->op1);
9543 	op2 = EX_VAR(opline->op2.var);
9544 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
9545 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
9546 			result = EX_VAR(opline->result.var);
9547 			fast_long_add_function(result, op1, op2);
9548 			ZEND_VM_NEXT_OPCODE();
9549 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
9550 			result = EX_VAR(opline->result.var);
9551 			ZVAL_DOUBLE(result, ((double)Z_LVAL_P(op1)) + Z_DVAL_P(op2));
9552 			ZEND_VM_NEXT_OPCODE();
9553 		}
9554 	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
9555 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
9556 			result = EX_VAR(opline->result.var);
9557 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) + Z_DVAL_P(op2));
9558 			ZEND_VM_NEXT_OPCODE();
9559 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
9560 			result = EX_VAR(opline->result.var);
9561 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) + ((double)Z_LVAL_P(op2)));
9562 			ZEND_VM_NEXT_OPCODE();
9563 		}
9564 	}
9565 
9566 	SAVE_OPLINE();
9567 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
9568 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
9569 	}
9570 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
9571 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
9572 	}
9573 	add_function(EX_VAR(opline->result.var), op1, op2);
9574 
9575 
9576 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
9577 }
9578 
9579 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SUB_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
9580 {
9581 	USE_OPLINE
9582 
9583 	zval *op1, *op2, *result;
9584 
9585 	op1 = RT_CONSTANT(opline, opline->op1);
9586 	op2 = EX_VAR(opline->op2.var);
9587 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
9588 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
9589 			result = EX_VAR(opline->result.var);
9590 			fast_long_sub_function(result, op1, op2);
9591 			ZEND_VM_NEXT_OPCODE();
9592 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
9593 			result = EX_VAR(opline->result.var);
9594 			ZVAL_DOUBLE(result, ((double)Z_LVAL_P(op1)) - Z_DVAL_P(op2));
9595 			ZEND_VM_NEXT_OPCODE();
9596 		}
9597 	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
9598 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
9599 			result = EX_VAR(opline->result.var);
9600 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) - Z_DVAL_P(op2));
9601 			ZEND_VM_NEXT_OPCODE();
9602 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
9603 			result = EX_VAR(opline->result.var);
9604 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) - ((double)Z_LVAL_P(op2)));
9605 			ZEND_VM_NEXT_OPCODE();
9606 		}
9607 	}
9608 
9609 	SAVE_OPLINE();
9610 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
9611 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
9612 	}
9613 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
9614 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
9615 	}
9616 	sub_function(EX_VAR(opline->result.var), op1, op2);
9617 
9618 
9619 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
9620 }
9621 
9622 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_DIV_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
9623 {
9624 	USE_OPLINE
9625 
9626 	zval *op1, *op2;
9627 
9628 	SAVE_OPLINE();
9629 	op1 = RT_CONSTANT(opline, opline->op1);
9630 	op2 = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
9631 	fast_div_function(EX_VAR(opline->result.var), op1, op2);
9632 
9633 
9634 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
9635 }
9636 
9637 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_MOD_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
9638 {
9639 	USE_OPLINE
9640 
9641 	zval *op1, *op2, *result;
9642 
9643 	op1 = RT_CONSTANT(opline, opline->op1);
9644 	op2 = EX_VAR(opline->op2.var);
9645 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
9646 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
9647 			result = EX_VAR(opline->result.var);
9648 			if (UNEXPECTED(Z_LVAL_P(op2) == 0)) {
9649 				ZEND_VM_TAIL_CALL(zend_mod_by_zero_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
9650 			} else if (UNEXPECTED(Z_LVAL_P(op2) == -1)) {
9651 				/* Prevent overflow error/crash if op1==ZEND_LONG_MIN */
9652 				ZVAL_LONG(result, 0);
9653 			} else {
9654 				ZVAL_LONG(result, Z_LVAL_P(op1) % Z_LVAL_P(op2));
9655 			}
9656 			ZEND_VM_NEXT_OPCODE();
9657 		}
9658 	}
9659 
9660 	SAVE_OPLINE();
9661 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
9662 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
9663 	}
9664 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
9665 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
9666 	}
9667 	mod_function(EX_VAR(opline->result.var), op1, op2);
9668 
9669 
9670 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
9671 }
9672 
9673 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SL_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
9674 {
9675 	USE_OPLINE
9676 
9677 	zval *op1, *op2;
9678 
9679 	op1 = RT_CONSTANT(opline, opline->op1);
9680 	op2 = EX_VAR(opline->op2.var);
9681 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)
9682 			&& EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)
9683 			&& EXPECTED((zend_ulong)Z_LVAL_P(op2) < SIZEOF_ZEND_LONG * 8)) {
9684 		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(op1) << Z_LVAL_P(op2));
9685 		ZEND_VM_NEXT_OPCODE();
9686 	}
9687 
9688 	SAVE_OPLINE();
9689 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
9690 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
9691 	}
9692 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
9693 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
9694 	}
9695 	shift_left_function(EX_VAR(opline->result.var), op1, op2);
9696 
9697 
9698 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
9699 }
9700 
9701 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SR_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
9702 {
9703 	USE_OPLINE
9704 
9705 	zval *op1, *op2;
9706 
9707 	op1 = RT_CONSTANT(opline, opline->op1);
9708 	op2 = EX_VAR(opline->op2.var);
9709 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)
9710 			&& EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)
9711 			&& EXPECTED((zend_ulong)Z_LVAL_P(op2) < SIZEOF_ZEND_LONG * 8)) {
9712 		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(op1) >> Z_LVAL_P(op2));
9713 		ZEND_VM_NEXT_OPCODE();
9714 	}
9715 
9716 	SAVE_OPLINE();
9717 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
9718 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
9719 	}
9720 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
9721 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
9722 	}
9723 	shift_right_function(EX_VAR(opline->result.var), op1, op2);
9724 
9725 
9726 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
9727 }
9728 
9729 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_POW_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
9730 {
9731 	USE_OPLINE
9732 
9733 	zval *op1, *op2;
9734 
9735 	SAVE_OPLINE();
9736 	op1 = RT_CONSTANT(opline, opline->op1);
9737 	op2 = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
9738 	pow_function(EX_VAR(opline->result.var), op1, op2);
9739 
9740 
9741 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
9742 }
9743 
9744 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_CONCAT_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
9745 {
9746 	USE_OPLINE
9747 
9748 	zval *op1, *op2;
9749 
9750 	op1 = RT_CONSTANT(opline, opline->op1);
9751 	op2 = EX_VAR(opline->op2.var);
9752 
9753 	if ((IS_CONST == IS_CONST || EXPECTED(Z_TYPE_P(op1) == IS_STRING)) &&
9754 	    (IS_CV == IS_CONST || EXPECTED(Z_TYPE_P(op2) == IS_STRING))) {
9755 		zend_string *op1_str = Z_STR_P(op1);
9756 		zend_string *op2_str = Z_STR_P(op2);
9757 		zend_string *str;
9758 
9759 		if (IS_CONST != IS_CONST && UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
9760 			if (IS_CV == IS_CONST || IS_CV == IS_CV) {
9761 				ZVAL_STR_COPY(EX_VAR(opline->result.var), op2_str);
9762 			} else {
9763 				ZVAL_STR(EX_VAR(opline->result.var), op2_str);
9764 			}
9765 
9766 		} else if (IS_CV != IS_CONST && UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
9767 			if (IS_CONST == IS_CONST || IS_CONST == IS_CV) {
9768 				ZVAL_STR_COPY(EX_VAR(opline->result.var), op1_str);
9769 			} else {
9770 				ZVAL_STR(EX_VAR(opline->result.var), op1_str);
9771 			}
9772 
9773 		} else if (IS_CONST != IS_CONST && IS_CONST != IS_CV &&
9774 		    !ZSTR_IS_INTERNED(op1_str) && GC_REFCOUNT(op1_str) == 1) {
9775 		    size_t len = ZSTR_LEN(op1_str);
9776 
9777 			str = zend_string_extend(op1_str, len + ZSTR_LEN(op2_str), 0);
9778 			memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
9779 			ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
9780 
9781 		} else {
9782 			str = zend_string_alloc(ZSTR_LEN(op1_str) + ZSTR_LEN(op2_str), 0);
9783 			memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
9784 			memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
9785 			ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
9786 
9787 
9788 		}
9789 		ZEND_VM_NEXT_OPCODE();
9790 	} else {
9791 		SAVE_OPLINE();
9792 
9793 		if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
9794 			op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
9795 		}
9796 		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
9797 			op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
9798 		}
9799 		concat_function(EX_VAR(opline->result.var), op1, op2);
9800 
9801 
9802 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
9803 	}
9804 }
9805 
9806 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
9807 {
9808 	USE_OPLINE
9809 
9810 	zval *op1, *op2, *result;
9811 
9812 	op1 = RT_CONSTANT(opline, opline->op1);
9813 	op2 = EX_VAR(opline->op2.var);
9814 	do {
9815 		int result;
9816 
9817 		if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
9818 			if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
9819 				result = (Z_LVAL_P(op1) < Z_LVAL_P(op2));
9820 			} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
9821 				result = ((double)Z_LVAL_P(op1) < Z_DVAL_P(op2));
9822 			} else {
9823 				break;
9824 			}
9825 		} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
9826 			if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
9827 				result = (Z_DVAL_P(op1) < Z_DVAL_P(op2));
9828 			} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
9829 				result = (Z_DVAL_P(op1) < ((double)Z_LVAL_P(op2)));
9830 			} else {
9831 				break;
9832 			}
9833 		} else {
9834 			break;
9835 		}
9836 		ZEND_VM_SMART_BRANCH(result, 0);
9837 		ZVAL_BOOL(EX_VAR(opline->result.var), result);
9838 		ZEND_VM_NEXT_OPCODE();
9839 	} while (0);
9840 
9841 	SAVE_OPLINE();
9842 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
9843 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
9844 	}
9845 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
9846 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
9847 	}
9848 	result = EX_VAR(opline->result.var);
9849 	compare_function(result, op1, op2);
9850 	ZVAL_BOOL(result, Z_LVAL_P(result) < 0);
9851 
9852 
9853 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
9854 }
9855 
9856 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_OR_EQUAL_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
9857 {
9858 	USE_OPLINE
9859 
9860 	zval *op1, *op2, *result;
9861 
9862 	op1 = RT_CONSTANT(opline, opline->op1);
9863 	op2 = EX_VAR(opline->op2.var);
9864 	do {
9865 		int result;
9866 
9867 		if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
9868 			if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
9869 				result = (Z_LVAL_P(op1) <= Z_LVAL_P(op2));
9870 			} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
9871 				result = ((double)Z_LVAL_P(op1) <= Z_DVAL_P(op2));
9872 			} else {
9873 				break;
9874 			}
9875 		} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
9876 			if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
9877 				result = (Z_DVAL_P(op1) <= Z_DVAL_P(op2));
9878 			} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
9879 				result = (Z_DVAL_P(op1) <= ((double)Z_LVAL_P(op2)));
9880 			} else {
9881 				break;
9882 			}
9883 		} else {
9884 			break;
9885 		}
9886 		ZEND_VM_SMART_BRANCH(result, 0);
9887 		ZVAL_BOOL(EX_VAR(opline->result.var), result);
9888 		ZEND_VM_NEXT_OPCODE();
9889 	} while (0);
9890 
9891 	SAVE_OPLINE();
9892 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
9893 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
9894 	}
9895 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
9896 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
9897 	}
9898 	result = EX_VAR(opline->result.var);
9899 	compare_function(result, op1, op2);
9900 	ZVAL_BOOL(result, Z_LVAL_P(result) <= 0);
9901 
9902 
9903 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
9904 }
9905 
9906 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SPACESHIP_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
9907 {
9908 	USE_OPLINE
9909 
9910 	zval *op1, *op2;
9911 
9912 	SAVE_OPLINE();
9913 	op1 = RT_CONSTANT(opline, opline->op1);
9914 	op2 = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
9915 	compare_function(EX_VAR(opline->result.var), op1, op2);
9916 
9917 
9918 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
9919 }
9920 
9921 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_R_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
9922 {
9923 	USE_OPLINE
9924 
9925 	zval *container, *dim, *value, *result;
9926 
9927 	SAVE_OPLINE();
9928 	container = RT_CONSTANT(opline, opline->op1);
9929 	dim = EX_VAR(opline->op2.var);
9930 	if (IS_CONST != IS_CONST) {
9931 		if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
9932 fetch_dim_r_array:
9933 			value = zend_fetch_dimension_address_inner(Z_ARRVAL_P(container), dim, IS_CV, BP_VAR_R EXECUTE_DATA_CC);
9934 			result = EX_VAR(opline->result.var);
9935 			ZVAL_COPY_DEREF(result, value);
9936 		} else if (EXPECTED(Z_TYPE_P(container) == IS_REFERENCE)) {
9937 			container = Z_REFVAL_P(container);
9938 			if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
9939 				goto fetch_dim_r_array;
9940 			} else {
9941 				goto fetch_dim_r_slow;
9942 			}
9943 		} else {
9944 fetch_dim_r_slow:
9945 			if (IS_CV == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
9946 				dim++;
9947 			}
9948 			zend_fetch_dimension_address_read_R_slow(container, dim OPLINE_CC EXECUTE_DATA_CC);
9949 		}
9950 	} else {
9951 		zend_fetch_dimension_address_read_R(container, dim, IS_CV OPLINE_CC EXECUTE_DATA_CC);
9952 	}
9953 
9954 
9955 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
9956 }
9957 
9958 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_IS_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
9959 {
9960 	USE_OPLINE
9961 
9962 	zval *container;
9963 
9964 	SAVE_OPLINE();
9965 	container = RT_CONSTANT(opline, opline->op1);
9966 	zend_fetch_dimension_address_read_IS(container, EX_VAR(opline->op2.var), IS_CV OPLINE_CC EXECUTE_DATA_CC);
9967 
9968 
9969 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
9970 }
9971 
9972 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_FUNC_ARG_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
9973 {
9974 	if (UNEXPECTED(ZEND_CALL_INFO(EX(call)) & ZEND_CALL_SEND_ARG_BY_REF)) {
9975         if ((IS_CONST & (IS_CONST|IS_TMP_VAR))) {
9976 			ZEND_VM_TAIL_CALL(zend_use_tmp_in_write_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
9977         }
9978 		ZEND_VM_TAIL_CALL(ZEND_NULL_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
9979 	} else {
9980 		if (IS_CV == IS_UNUSED) {
9981 			ZEND_VM_TAIL_CALL(zend_use_undef_in_read_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
9982 		}
9983 		ZEND_VM_TAIL_CALL(ZEND_FETCH_DIM_R_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
9984 	}
9985 }
9986 
9987 static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_R_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
9988 {
9989 	USE_OPLINE
9990 
9991 	zval *container;
9992 
9993 	zval *offset;
9994 	void **cache_slot = NULL;
9995 
9996 	SAVE_OPLINE();
9997 	container = RT_CONSTANT(opline, opline->op1);
9998 
9999 	if (IS_CONST == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
10000 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
10001 	}
10002 
10003 	offset = EX_VAR(opline->op2.var);
10004 
10005 	if (IS_CONST == IS_CONST ||
10006 	    (IS_CONST != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
10007 	    do {
10008 			if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
10009 				container = Z_REFVAL_P(container);
10010 				if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
10011 					break;
10012 				}
10013 			}
10014 			if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
10015 				GET_OP1_UNDEF_CV(container, BP_VAR_R);
10016 			}
10017 			if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(offset) == IS_UNDEF)) {
10018 				GET_OP2_UNDEF_CV(offset, BP_VAR_R);
10019 			}
10020 			goto fetch_obj_r_no_object;
10021 		} while (0);
10022 	}
10023 
10024 	/* here we are sure we are dealing with an object */
10025 	do {
10026 		zend_object *zobj = Z_OBJ_P(container);
10027 		zval *retval;
10028 
10029 		if (IS_CV == IS_CONST) {
10030 			cache_slot = CACHE_ADDR(opline->extended_value);
10031 
10032 			if (EXPECTED(zobj->ce == CACHED_PTR_EX(cache_slot))) {
10033 				uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
10034 
10035 				if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
10036 					retval = OBJ_PROP(zobj, prop_offset);
10037 					if (EXPECTED(Z_TYPE_INFO_P(retval) != IS_UNDEF)) {
10038 						ZVAL_COPY_DEREF(EX_VAR(opline->result.var), retval);
10039 						break;
10040 					}
10041 				} else if (EXPECTED(zobj->properties != NULL)) {
10042 					if (!IS_UNKNOWN_DYNAMIC_PROPERTY_OFFSET(prop_offset)) {
10043 						uintptr_t idx = ZEND_DECODE_DYN_PROP_OFFSET(prop_offset);
10044 
10045 						if (EXPECTED(idx < zobj->properties->nNumUsed * sizeof(Bucket))) {
10046 							Bucket *p = (Bucket*)((char*)zobj->properties->arData + idx);
10047 
10048 							if (EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
10049 						        (EXPECTED(p->key == Z_STR_P(offset)) ||
10050 						         (EXPECTED(p->h == ZSTR_H(Z_STR_P(offset))) &&
10051 						          EXPECTED(p->key != NULL) &&
10052 						          EXPECTED(zend_string_equal_content(p->key, Z_STR_P(offset)))))) {
10053 								ZVAL_COPY_DEREF(EX_VAR(opline->result.var), &p->val);
10054 								break;
10055 							}
10056 						}
10057 						CACHE_PTR_EX(cache_slot + 1, (void*)ZEND_DYNAMIC_PROPERTY_OFFSET);
10058 					}
10059 					retval = zend_hash_find_ex(zobj->properties, Z_STR_P(offset), 1);
10060 					if (EXPECTED(retval)) {
10061 						uintptr_t idx = (char*)retval - (char*)zobj->properties->arData;
10062 						CACHE_PTR_EX(cache_slot + 1, (void*)ZEND_ENCODE_DYN_PROP_OFFSET(idx));
10063 						ZVAL_COPY_DEREF(EX_VAR(opline->result.var), retval);
10064 						break;
10065 					}
10066 				}
10067 			}
10068 		} else if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(offset) == IS_UNDEF)) {
10069 			GET_OP2_UNDEF_CV(offset, BP_VAR_R);
10070 		}
10071 
10072 		if (UNEXPECTED(zobj->handlers->read_property == NULL)) {
10073 fetch_obj_r_no_object:
10074 			zend_wrong_property_read(offset);
10075 			ZVAL_NULL(EX_VAR(opline->result.var));
10076 		} else {
10077 			retval = zobj->handlers->read_property(container, offset, BP_VAR_R, cache_slot, EX_VAR(opline->result.var));
10078 
10079 			if (retval != EX_VAR(opline->result.var)) {
10080 				ZVAL_COPY_DEREF(EX_VAR(opline->result.var), retval);
10081 			} else if (UNEXPECTED(Z_ISREF_P(retval))) {
10082 				zend_unwrap_reference(retval);
10083 			}
10084 		}
10085 	} while (0);
10086 
10087 
10088 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
10089 }
10090 
10091 static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_IS_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
10092 {
10093 	USE_OPLINE
10094 
10095 	zval *container;
10096 
10097 	zval *offset;
10098 	void **cache_slot = NULL;
10099 
10100 	SAVE_OPLINE();
10101 	container = RT_CONSTANT(opline, opline->op1);
10102 
10103 	if (IS_CONST == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
10104 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
10105 	}
10106 
10107 	offset = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
10108 
10109 	if (IS_CONST == IS_CONST ||
10110 	    (IS_CONST != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
10111 		do {
10112 			if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
10113 				container = Z_REFVAL_P(container);
10114 				if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
10115 					break;
10116 				}
10117 			}
10118 			goto fetch_obj_is_no_object;
10119 		} while (0);
10120 	}
10121 
10122 	/* here we are sure we are dealing with an object */
10123 	do {
10124 		zend_object *zobj = Z_OBJ_P(container);
10125 		zval *retval;
10126 
10127 		if (IS_CV == IS_CONST) {
10128 			cache_slot = CACHE_ADDR(opline->extended_value);
10129 
10130 			if (EXPECTED(zobj->ce == CACHED_PTR_EX(cache_slot))) {
10131 				uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
10132 
10133 				if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
10134 					retval = OBJ_PROP(zobj, prop_offset);
10135 					if (EXPECTED(Z_TYPE_P(retval) != IS_UNDEF)) {
10136 						ZVAL_COPY(EX_VAR(opline->result.var), retval);
10137 						break;
10138 					}
10139 				} else if (EXPECTED(zobj->properties != NULL)) {
10140 					if (!IS_UNKNOWN_DYNAMIC_PROPERTY_OFFSET(prop_offset)) {
10141 						uintptr_t idx = ZEND_DECODE_DYN_PROP_OFFSET(prop_offset);
10142 
10143 						if (EXPECTED(idx < zobj->properties->nNumUsed * sizeof(Bucket))) {
10144 							Bucket *p = (Bucket*)((char*)zobj->properties->arData + idx);
10145 
10146 							if (EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
10147 						        (EXPECTED(p->key == Z_STR_P(offset)) ||
10148 						         (EXPECTED(p->h == ZSTR_H(Z_STR_P(offset))) &&
10149 						          EXPECTED(p->key != NULL) &&
10150 						          EXPECTED(zend_string_equal_content(p->key, Z_STR_P(offset)))))) {
10151 								ZVAL_COPY(EX_VAR(opline->result.var), &p->val);
10152 								break;
10153 							}
10154 						}
10155 						CACHE_PTR_EX(cache_slot + 1, (void*)ZEND_DYNAMIC_PROPERTY_OFFSET);
10156 					}
10157 					retval = zend_hash_find_ex(zobj->properties, Z_STR_P(offset), 1);
10158 					if (EXPECTED(retval)) {
10159 						uintptr_t idx = (char*)retval - (char*)zobj->properties->arData;
10160 						CACHE_PTR_EX(cache_slot + 1, (void*)ZEND_ENCODE_DYN_PROP_OFFSET(idx));
10161 						ZVAL_COPY(EX_VAR(opline->result.var), retval);
10162 						break;
10163 					}
10164 				}
10165 			}
10166 		}
10167 
10168 		if (UNEXPECTED(zobj->handlers->read_property == NULL)) {
10169 fetch_obj_is_no_object:
10170 			ZVAL_NULL(EX_VAR(opline->result.var));
10171 		} else {
10172 
10173 			retval = zobj->handlers->read_property(container, offset, BP_VAR_IS, cache_slot, EX_VAR(opline->result.var));
10174 
10175 			if (retval != EX_VAR(opline->result.var)) {
10176 				ZVAL_COPY(EX_VAR(opline->result.var), retval);
10177 			}
10178 		}
10179 	} while (0);
10180 
10181 
10182 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
10183 }
10184 
10185 static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
10186 {
10187 	if (UNEXPECTED(ZEND_CALL_INFO(EX(call)) & ZEND_CALL_SEND_ARG_BY_REF)) {
10188 		/* Behave like FETCH_OBJ_W */
10189 		if ((IS_CONST & (IS_CONST|IS_TMP_VAR))) {
10190 			ZEND_VM_TAIL_CALL(zend_use_tmp_in_write_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
10191 		}
10192 
10193 		ZEND_VM_TAIL_CALL(ZEND_NULL_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
10194 	} else {
10195 		ZEND_VM_TAIL_CALL(ZEND_FETCH_OBJ_R_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
10196 	}
10197 }
10198 
10199 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_LIST_R_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
10200 {
10201 	USE_OPLINE
10202 
10203 	zval *container;
10204 
10205 	SAVE_OPLINE();
10206 	container = RT_CONSTANT(opline, opline->op1);
10207 	zend_fetch_dimension_address_LIST_r(container, EX_VAR(opline->op2.var), IS_CV OPLINE_CC EXECUTE_DATA_CC);
10208 
10209 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
10210 }
10211 
10212 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FAST_CONCAT_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
10213 {
10214 	USE_OPLINE
10215 
10216 	zval *op1, *op2;
10217 	zend_string *op1_str, *op2_str, *str;
10218 
10219 
10220 	op1 = RT_CONSTANT(opline, opline->op1);
10221 	op2 = EX_VAR(opline->op2.var);
10222 	if ((IS_CONST == IS_CONST || EXPECTED(Z_TYPE_P(op1) == IS_STRING)) &&
10223 	    (IS_CV == IS_CONST || EXPECTED(Z_TYPE_P(op2) == IS_STRING))) {
10224 		zend_string *op1_str = Z_STR_P(op1);
10225 		zend_string *op2_str = Z_STR_P(op2);
10226 		zend_string *str;
10227 
10228 		if (IS_CONST != IS_CONST && UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
10229 			if (IS_CV == IS_CONST || IS_CV == IS_CV) {
10230 				ZVAL_STR_COPY(EX_VAR(opline->result.var), op2_str);
10231 			} else {
10232 				ZVAL_STR(EX_VAR(opline->result.var), op2_str);
10233 			}
10234 
10235 		} else if (IS_CV != IS_CONST && UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
10236 			if (IS_CONST == IS_CONST || IS_CONST == IS_CV) {
10237 				ZVAL_STR_COPY(EX_VAR(opline->result.var), op1_str);
10238 			} else {
10239 				ZVAL_STR(EX_VAR(opline->result.var), op1_str);
10240 			}
10241 
10242 		} else if (IS_CONST != IS_CONST && IS_CONST != IS_CV &&
10243 		    !ZSTR_IS_INTERNED(op1_str) && GC_REFCOUNT(op1_str) == 1) {
10244 		    size_t len = ZSTR_LEN(op1_str);
10245 
10246 			str = zend_string_extend(op1_str, len + ZSTR_LEN(op2_str), 0);
10247 			memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
10248 			ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
10249 
10250 		} else {
10251 			str = zend_string_alloc(ZSTR_LEN(op1_str) + ZSTR_LEN(op2_str), 0);
10252 			memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
10253 			memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
10254 			ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
10255 
10256 
10257 		}
10258 		ZEND_VM_NEXT_OPCODE();
10259 	}
10260 
10261 	SAVE_OPLINE();
10262 	if (IS_CONST == IS_CONST) {
10263 		op1_str = Z_STR_P(op1);
10264 	} else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
10265 		op1_str = zend_string_copy(Z_STR_P(op1));
10266 	} else {
10267 		if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
10268 			GET_OP1_UNDEF_CV(op1, BP_VAR_R);
10269 		}
10270 		op1_str = zval_get_string_func(op1);
10271 	}
10272 	if (IS_CV == IS_CONST) {
10273 		op2_str = Z_STR_P(op2);
10274 	} else if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
10275 		op2_str = zend_string_copy(Z_STR_P(op2));
10276 	} else {
10277 		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
10278 			GET_OP2_UNDEF_CV(op2, BP_VAR_R);
10279 		}
10280 		op2_str = zval_get_string_func(op2);
10281 	}
10282 	do {
10283 		if (IS_CONST != IS_CONST) {
10284 			if (UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
10285 				if (IS_CV == IS_CONST) {
10286 					if (UNEXPECTED(Z_REFCOUNTED_P(op2))) {
10287 						GC_ADDREF(op2_str);
10288 					}
10289 				}
10290 				ZVAL_STR(EX_VAR(opline->result.var), op2_str);
10291 				zend_string_release_ex(op1_str, 0);
10292 				break;
10293 			}
10294 		}
10295 		if (IS_CV != IS_CONST) {
10296 			if (UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
10297 				if (IS_CONST == IS_CONST) {
10298 					if (UNEXPECTED(Z_REFCOUNTED_P(op1))) {
10299 						GC_ADDREF(op1_str);
10300 					}
10301 				}
10302 				ZVAL_STR(EX_VAR(opline->result.var), op1_str);
10303 				zend_string_release_ex(op2_str, 0);
10304 				break;
10305 			}
10306 		}
10307 		str = zend_string_alloc(ZSTR_LEN(op1_str) + ZSTR_LEN(op2_str), 0);
10308 		memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
10309 		memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
10310 		ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
10311 		if (IS_CONST != IS_CONST) {
10312 			zend_string_release_ex(op1_str, 0);
10313 		}
10314 		if (IS_CV != IS_CONST) {
10315 			zend_string_release_ex(op2_str, 0);
10316 		}
10317 	} while (0);
10318 
10319 
10320 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
10321 }
10322 
10323 static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
10324 {
10325 	USE_OPLINE
10326 	zval *function_name;
10327 	zend_free_op free_op1;
10328 	zval *object;
10329 	zend_function *fbc;
10330 	zend_class_entry *called_scope;
10331 	zend_object *obj;
10332 	zend_execute_data *call;
10333 	uint32_t call_info;
10334 
10335 	SAVE_OPLINE();
10336 
10337 	object = RT_CONSTANT(opline, opline->op1);
10338 
10339 	if (IS_CONST == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
10340 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
10341 	}
10342 
10343 	if (IS_CV != IS_CONST) {
10344 		function_name = EX_VAR(opline->op2.var);
10345 	}
10346 
10347 	if (IS_CV != IS_CONST &&
10348 	    UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) {
10349 		do {
10350 			if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(function_name)) {
10351 				function_name = Z_REFVAL_P(function_name);
10352 				if (EXPECTED(Z_TYPE_P(function_name) == IS_STRING)) {
10353 					break;
10354 				}
10355 			} else if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
10356 				GET_OP2_UNDEF_CV(function_name, BP_VAR_R);
10357 				if (UNEXPECTED(EG(exception) != NULL)) {
10358 
10359 					HANDLE_EXCEPTION();
10360 				}
10361 			}
10362 			zend_throw_error(NULL, "Method name must be a string");
10363 
10364 
10365 			HANDLE_EXCEPTION();
10366 		} while (0);
10367 	}
10368 
10369 	if (IS_CONST != IS_UNUSED) {
10370 		do {
10371 			if (IS_CONST == IS_CONST || UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
10372 				if ((IS_CONST & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(object))) {
10373 					object = Z_REFVAL_P(object);
10374 					if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
10375 						break;
10376 					}
10377 				}
10378 				if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
10379 					object = GET_OP1_UNDEF_CV(object, BP_VAR_R);
10380 					if (UNEXPECTED(EG(exception) != NULL)) {
10381 						if (IS_CV != IS_CONST) {
10382 
10383 						}
10384 						HANDLE_EXCEPTION();
10385 					}
10386 				}
10387 				if (IS_CV == IS_CONST) {
10388 					function_name = EX_VAR(opline->op2.var);
10389 				}
10390 				zend_invalid_method_call(object, function_name);
10391 
10392 
10393 				HANDLE_EXCEPTION();
10394 			}
10395 		} while (0);
10396 	}
10397 
10398 	obj = Z_OBJ_P(object);
10399 	called_scope = obj->ce;
10400 
10401 	if (IS_CV == IS_CONST &&
10402 	    EXPECTED(CACHED_PTR(opline->result.num) == called_scope)) {
10403 	    fbc = CACHED_PTR(opline->result.num + sizeof(void*));
10404 	} else {
10405 	    zend_object *orig_obj = obj;
10406 
10407 		if (UNEXPECTED(obj->handlers->get_method == NULL)) {
10408 			zend_throw_error(NULL, "Object does not support method calls");
10409 
10410 
10411 			HANDLE_EXCEPTION();
10412 		}
10413 
10414 		if (IS_CV == IS_CONST) {
10415 			function_name = EX_VAR(opline->op2.var);
10416 		}
10417 
10418 		/* First, locate the function. */
10419 		fbc = obj->handlers->get_method(&obj, Z_STR_P(function_name), ((IS_CV == IS_CONST) ? (RT_CONSTANT(opline, opline->op2) + 1) : NULL));
10420 		if (UNEXPECTED(fbc == NULL)) {
10421 			if (EXPECTED(!EG(exception))) {
10422 				zend_undefined_method(obj->ce, Z_STR_P(function_name));
10423 			}
10424 
10425 
10426 			HANDLE_EXCEPTION();
10427 		}
10428 		if (IS_CV == IS_CONST &&
10429 		    EXPECTED(fbc->type <= ZEND_USER_FUNCTION) &&
10430 		    EXPECTED(!(fbc->common.fn_flags & (ZEND_ACC_CALL_VIA_TRAMPOLINE|ZEND_ACC_NEVER_CACHE))) &&
10431 		    EXPECTED(obj == orig_obj)) {
10432 			CACHE_POLYMORPHIC_PTR(opline->result.num, called_scope, fbc);
10433 		}
10434 		if ((IS_CONST & (IS_VAR|IS_TMP_VAR)) && UNEXPECTED(obj != orig_obj)) {
10435 			/* Reset "object" to trigger reference counting */
10436 			object = NULL;
10437 		}
10438 		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!fbc->op_array.run_time_cache)) {
10439 			init_func_run_time_cache(&fbc->op_array);
10440 		}
10441 	}
10442 
10443 	if (IS_CV != IS_CONST) {
10444 
10445 	}
10446 
10447 	call_info = ZEND_CALL_NESTED_FUNCTION;
10448 	if (UNEXPECTED((fbc->common.fn_flags & ZEND_ACC_STATIC) != 0)) {
10449 		obj = NULL;
10450 
10451 		if ((IS_CONST & (IS_VAR|IS_TMP_VAR)) && UNEXPECTED(EG(exception))) {
10452 			HANDLE_EXCEPTION();
10453 		}
10454 	} else if (IS_CONST & (IS_VAR|IS_TMP_VAR|IS_CV)) {
10455 		/* CV may be changed indirectly (e.g. when it's a reference) */
10456 		call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_RELEASE_THIS;
10457 		if (IS_CONST == IS_CV) {
10458 			GC_ADDREF(obj); /* For $this pointer */
10459 		} else if (free_op1 != object) {
10460 			GC_ADDREF(obj); /* For $this pointer */
10461 
10462 		}
10463 	}
10464 
10465 	call = zend_vm_stack_push_call_frame(call_info,
10466 		fbc, opline->extended_value, called_scope, obj);
10467 	call->prev_execute_data = EX(call);
10468 	EX(call) = call;
10469 
10470 	ZEND_VM_NEXT_OPCODE();
10471 }
10472 
10473 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
10474 {
10475 	USE_OPLINE
10476 	zval *function_name;
10477 	zend_class_entry *ce;
10478 	zend_object *object;
10479 	zend_function *fbc;
10480 	zend_execute_data *call;
10481 
10482 	SAVE_OPLINE();
10483 
10484 	if (IS_CONST == IS_CONST) {
10485 		/* no function found. try a static method in class */
10486 		ce = CACHED_PTR(opline->result.num);
10487 		if (UNEXPECTED(ce == NULL)) {
10488 			ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), RT_CONSTANT(opline, opline->op1) + 1, ZEND_FETCH_CLASS_DEFAULT |  ZEND_FETCH_CLASS_EXCEPTION);
10489 			if (UNEXPECTED(ce == NULL)) {
10490 				ZEND_ASSERT(EG(exception));
10491 
10492 				HANDLE_EXCEPTION();
10493 			}
10494 			if (IS_CV != IS_CONST) {
10495 				CACHE_PTR(opline->result.num, ce);
10496 			}
10497 		}
10498 	} else if (IS_CONST == IS_UNUSED) {
10499 		ce = zend_fetch_class(NULL, opline->op1.num);
10500 		if (UNEXPECTED(ce == NULL)) {
10501 			ZEND_ASSERT(EG(exception));
10502 
10503 			HANDLE_EXCEPTION();
10504 		}
10505 	} else {
10506 		ce = Z_CE_P(EX_VAR(opline->op1.var));
10507 	}
10508 
10509 	if (IS_CONST == IS_CONST &&
10510 	    IS_CV == IS_CONST &&
10511 	    EXPECTED((fbc = CACHED_PTR(opline->result.num + sizeof(void*))) != NULL)) {
10512 		/* nothing to do */
10513 	} else if (IS_CONST != IS_CONST &&
10514 	           IS_CV == IS_CONST &&
10515 	           EXPECTED(CACHED_PTR(opline->result.num) == ce)) {
10516 		fbc = CACHED_PTR(opline->result.num + sizeof(void*));
10517 	} else if (IS_CV != IS_UNUSED) {
10518 
10519 
10520 		function_name = EX_VAR(opline->op2.var);
10521 		if (IS_CV != IS_CONST) {
10522 			if (UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) {
10523 				do {
10524 					if (IS_CV & (IS_VAR|IS_CV) && Z_ISREF_P(function_name)) {
10525 						function_name = Z_REFVAL_P(function_name);
10526 						if (EXPECTED(Z_TYPE_P(function_name) == IS_STRING)) {
10527 							break;
10528 						}
10529 					} else if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
10530 						GET_OP2_UNDEF_CV(function_name, BP_VAR_R);
10531 						if (UNEXPECTED(EG(exception) != NULL)) {
10532 							HANDLE_EXCEPTION();
10533 						}
10534 					}
10535 					zend_throw_error(NULL, "Function name must be a string");
10536 
10537 					HANDLE_EXCEPTION();
10538 				} while (0);
10539 			}
10540 		}
10541 
10542 		if (ce->get_static_method) {
10543 			fbc = ce->get_static_method(ce, Z_STR_P(function_name));
10544 		} else {
10545 			fbc = zend_std_get_static_method(ce, Z_STR_P(function_name), ((IS_CV == IS_CONST) ? (RT_CONSTANT(opline, opline->op2) + 1) : NULL));
10546 		}
10547 		if (UNEXPECTED(fbc == NULL)) {
10548 			if (EXPECTED(!EG(exception))) {
10549 				zend_undefined_method(ce, Z_STR_P(function_name));
10550 			}
10551 
10552 			HANDLE_EXCEPTION();
10553 		}
10554 		if (IS_CV == IS_CONST &&
10555 		    EXPECTED(fbc->type <= ZEND_USER_FUNCTION) &&
10556 		    EXPECTED(!(fbc->common.fn_flags & (ZEND_ACC_CALL_VIA_TRAMPOLINE|ZEND_ACC_NEVER_CACHE)))) {
10557 			CACHE_POLYMORPHIC_PTR(opline->result.num, ce, fbc);
10558 		}
10559 		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!fbc->op_array.run_time_cache)) {
10560 			init_func_run_time_cache(&fbc->op_array);
10561 		}
10562 		if (IS_CV != IS_CONST) {
10563 
10564 		}
10565 	} else {
10566 		if (UNEXPECTED(ce->constructor == NULL)) {
10567 			zend_throw_error(NULL, "Cannot call constructor");
10568 			HANDLE_EXCEPTION();
10569 		}
10570 		if (Z_TYPE(EX(This)) == IS_OBJECT && Z_OBJ(EX(This))->ce != ce->constructor->common.scope && (ce->constructor->common.fn_flags & ZEND_ACC_PRIVATE)) {
10571 			zend_throw_error(NULL, "Cannot call private %s::__construct()", ZSTR_VAL(ce->name));
10572 			HANDLE_EXCEPTION();
10573 		}
10574 		fbc = ce->constructor;
10575 		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!fbc->op_array.run_time_cache)) {
10576 			init_func_run_time_cache(&fbc->op_array);
10577 		}
10578 	}
10579 
10580 	object = NULL;
10581 	if (!(fbc->common.fn_flags & ZEND_ACC_STATIC)) {
10582 		if (Z_TYPE(EX(This)) == IS_OBJECT && instanceof_function(Z_OBJCE(EX(This)), ce)) {
10583 			object = Z_OBJ(EX(This));
10584 			ce = object->ce;
10585 		} else {
10586 			zend_non_static_method_call(fbc);
10587 			if (UNEXPECTED(EG(exception) != NULL)) {
10588 				HANDLE_EXCEPTION();
10589 			}
10590 		}
10591 	}
10592 
10593 	if (IS_CONST == IS_UNUSED) {
10594 		/* previous opcode is ZEND_FETCH_CLASS */
10595 		if ((opline->op1.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_PARENT ||
10596 		    (opline->op1.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_SELF) {
10597 			if (Z_TYPE(EX(This)) == IS_OBJECT) {
10598 				ce = Z_OBJCE(EX(This));
10599 			} else {
10600 				ce = Z_CE(EX(This));
10601 			}
10602 		}
10603 	}
10604 
10605 	call = zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_FUNCTION,
10606 		fbc, opline->extended_value, ce, object);
10607 	call->prev_execute_data = EX(call);
10608 	EX(call) = call;
10609 
10610 	ZEND_VM_NEXT_OPCODE();
10611 }
10612 
10613 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_USER_CALL_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
10614 {
10615 	USE_OPLINE
10616 
10617 	zval *function_name;
10618 	zend_fcall_info_cache fcc;
10619 	char *error = NULL;
10620 	zend_function *func;
10621 	zend_class_entry *called_scope;
10622 	zend_object *object;
10623 	zend_execute_data *call;
10624 	uint32_t call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_DYNAMIC;
10625 
10626 	SAVE_OPLINE();
10627 	function_name = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
10628 	if (zend_is_callable_ex(function_name, NULL, 0, NULL, &fcc, &error)) {
10629 		func = fcc.function_handler;
10630 		called_scope = fcc.called_scope;
10631 		object = fcc.object;
10632 		if (error) {
10633 			efree(error);
10634 			/* This is the only soft error is_callable() can generate */
10635 			zend_non_static_method_call(func);
10636 			if (UNEXPECTED(EG(exception) != NULL)) {
10637 
10638 				HANDLE_EXCEPTION();
10639 			}
10640 		}
10641 		if (func->common.fn_flags & ZEND_ACC_CLOSURE) {
10642 			/* Delay closure destruction until its invocation */
10643 			GC_ADDREF(ZEND_CLOSURE_OBJECT(func));
10644 			call_info |= ZEND_CALL_CLOSURE;
10645 			if (func->common.fn_flags & ZEND_ACC_FAKE_CLOSURE) {
10646 				call_info |= ZEND_CALL_FAKE_CLOSURE;
10647 			}
10648 		} else if (object) {
10649 			call_info |= ZEND_CALL_RELEASE_THIS;
10650 			GC_ADDREF(object); /* For $this pointer */
10651 		}
10652 
10653 		if ((IS_CV & (IS_TMP_VAR|IS_VAR)) && UNEXPECTED(EG(exception))) {
10654 			if (call_info & ZEND_CALL_CLOSURE) {
10655 				zend_object_release(ZEND_CLOSURE_OBJECT(func));
10656 			}
10657 			if (call_info & ZEND_CALL_RELEASE_THIS) {
10658 				zend_object_release(object);
10659 			}
10660 			HANDLE_EXCEPTION();
10661 		}
10662 
10663 		if (EXPECTED(func->type == ZEND_USER_FUNCTION) && UNEXPECTED(!func->op_array.run_time_cache)) {
10664 			init_func_run_time_cache(&func->op_array);
10665 		}
10666 	} else {
10667 		zend_internal_type_error(EX_USES_STRICT_TYPES(), "%s() expects parameter 1 to be a valid callback, %s", Z_STRVAL_P(RT_CONSTANT(opline, opline->op1)), error);
10668 		efree(error);
10669 
10670 		if (UNEXPECTED(EG(exception))) {
10671 			HANDLE_EXCEPTION();
10672 		}
10673 		func = (zend_function*)&zend_pass_function;
10674 		called_scope = NULL;
10675 		object = NULL;
10676 	}
10677 
10678 	call = zend_vm_stack_push_call_frame(call_info,
10679 		func, opline->extended_value, called_scope, object);
10680 	call->prev_execute_data = EX(call);
10681 	EX(call) = call;
10682 
10683 	ZEND_VM_NEXT_OPCODE();
10684 }
10685 
10686 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
10687 {
10688 	USE_OPLINE
10689 
10690 	zval *expr_ptr, new_expr;
10691 
10692 	SAVE_OPLINE();
10693 	if ((IS_CONST == IS_VAR || IS_CONST == IS_CV) &&
10694 	    UNEXPECTED(opline->extended_value & ZEND_ARRAY_ELEMENT_REF)) {
10695 		expr_ptr = NULL;
10696 		if (Z_ISREF_P(expr_ptr)) {
10697 			Z_ADDREF_P(expr_ptr);
10698 		} else {
10699 			ZVAL_MAKE_REF_EX(expr_ptr, 2);
10700 		}
10701 
10702 	} else {
10703 		expr_ptr = RT_CONSTANT(opline, opline->op1);
10704 		if (IS_CONST == IS_TMP_VAR) {
10705 			/* pass */
10706 		} else if (IS_CONST == IS_CONST) {
10707 			Z_TRY_ADDREF_P(expr_ptr);
10708 		} else if (IS_CONST == IS_CV) {
10709 			ZVAL_DEREF(expr_ptr);
10710 			Z_TRY_ADDREF_P(expr_ptr);
10711 		} else /* if (IS_CONST == IS_VAR) */ {
10712 			if (UNEXPECTED(Z_ISREF_P(expr_ptr))) {
10713 				zend_refcounted *ref = Z_COUNTED_P(expr_ptr);
10714 
10715 				expr_ptr = Z_REFVAL_P(expr_ptr);
10716 				if (UNEXPECTED(GC_DELREF(ref) == 0)) {
10717 					ZVAL_COPY_VALUE(&new_expr, expr_ptr);
10718 					expr_ptr = &new_expr;
10719 					efree_size(ref, sizeof(zend_reference));
10720 				} else if (Z_OPT_REFCOUNTED_P(expr_ptr)) {
10721 					Z_ADDREF_P(expr_ptr);
10722 				}
10723 			}
10724 		}
10725 	}
10726 
10727 	if (IS_CV != IS_UNUSED) {
10728 
10729 		zval *offset = EX_VAR(opline->op2.var);
10730 		zend_string *str;
10731 		zend_ulong hval;
10732 
10733 add_again:
10734 		if (EXPECTED(Z_TYPE_P(offset) == IS_STRING)) {
10735 			str = Z_STR_P(offset);
10736 			if (IS_CV != IS_CONST) {
10737 				if (ZEND_HANDLE_NUMERIC(str, hval)) {
10738 					goto num_index;
10739 				}
10740 			}
10741 str_index:
10742 			zend_hash_update(Z_ARRVAL_P(EX_VAR(opline->result.var)), str, expr_ptr);
10743 		} else if (EXPECTED(Z_TYPE_P(offset) == IS_LONG)) {
10744 			hval = Z_LVAL_P(offset);
10745 num_index:
10746 			zend_hash_index_update(Z_ARRVAL_P(EX_VAR(opline->result.var)), hval, expr_ptr);
10747 		} else if ((IS_CV & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
10748 			offset = Z_REFVAL_P(offset);
10749 			goto add_again;
10750 		} else if (Z_TYPE_P(offset) == IS_NULL) {
10751 			str = ZSTR_EMPTY_ALLOC();
10752 			goto str_index;
10753 		} else if (Z_TYPE_P(offset) == IS_DOUBLE) {
10754 			hval = zend_dval_to_lval(Z_DVAL_P(offset));
10755 			goto num_index;
10756 		} else if (Z_TYPE_P(offset) == IS_FALSE) {
10757 			hval = 0;
10758 			goto num_index;
10759 		} else if (Z_TYPE_P(offset) == IS_TRUE) {
10760 			hval = 1;
10761 			goto num_index;
10762 		} else if (IS_CV == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
10763 			GET_OP2_UNDEF_CV(offset, BP_VAR_R);
10764 			str = ZSTR_EMPTY_ALLOC();
10765 			goto str_index;
10766 		} else {
10767 			zend_illegal_offset();
10768 			zval_ptr_dtor_nogc(expr_ptr);
10769 		}
10770 
10771 	} else {
10772 		if (!zend_hash_next_index_insert(Z_ARRVAL_P(EX_VAR(opline->result.var)), expr_ptr)) {
10773 			zend_cannot_add_element();
10774 			zval_ptr_dtor_nogc(expr_ptr);
10775 		}
10776 	}
10777 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
10778 }
10779 
10780 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_ARRAY_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
10781 {
10782 	zval *array;
10783 	uint32_t size;
10784 	USE_OPLINE
10785 
10786 	array = EX_VAR(opline->result.var);
10787 	if (IS_CONST != IS_UNUSED) {
10788 		size = opline->extended_value >> ZEND_ARRAY_SIZE_SHIFT;
10789 		ZVAL_ARR(array, zend_new_array(size));
10790 		/* Explicitly initialize array as not-packed if flag is set */
10791 		if (opline->extended_value & ZEND_ARRAY_NOT_PACKED) {
10792 			zend_hash_real_init_mixed(Z_ARRVAL_P(array));
10793 		}
10794 		ZEND_VM_TAIL_CALL(ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
10795 	} else {
10796 		ZVAL_EMPTY_ARRAY(array);
10797 		ZEND_VM_NEXT_OPCODE();
10798 	}
10799 }
10800 
10801 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
10802 {
10803 	USE_OPLINE
10804 
10805 	zval *container;
10806 	int result;
10807 	zend_ulong hval;
10808 	zval *offset;
10809 
10810 	SAVE_OPLINE();
10811 	container = RT_CONSTANT(opline, opline->op1);
10812 	offset = EX_VAR(opline->op2.var);
10813 
10814 	if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
10815 		HashTable *ht;
10816 		zval *value;
10817 		zend_string *str;
10818 
10819 isset_dim_obj_array:
10820 		ht = Z_ARRVAL_P(container);
10821 isset_again:
10822 		if (EXPECTED(Z_TYPE_P(offset) == IS_STRING)) {
10823 			str = Z_STR_P(offset);
10824 			if (IS_CV != IS_CONST) {
10825 				if (ZEND_HANDLE_NUMERIC(str, hval)) {
10826 					goto num_index_prop;
10827 				}
10828 			}
10829 			value = zend_hash_find_ex_ind(ht, str, IS_CV == IS_CONST);
10830 		} else if (EXPECTED(Z_TYPE_P(offset) == IS_LONG)) {
10831 			hval = Z_LVAL_P(offset);
10832 num_index_prop:
10833 			value = zend_hash_index_find(ht, hval);
10834 		} else if ((IS_CV & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(offset))) {
10835 			offset = Z_REFVAL_P(offset);
10836 			goto isset_again;
10837 		} else {
10838 			value = zend_find_array_dim_slow(ht, offset EXECUTE_DATA_CC);
10839 		}
10840 
10841 		if (!(opline->extended_value & ZEND_ISEMPTY)) {
10842 			/* > IS_NULL means not IS_UNDEF and not IS_NULL */
10843 			result = value != NULL && Z_TYPE_P(value) > IS_NULL &&
10844 			    (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL);
10845 		} else {
10846 			result = (value == NULL || !i_zend_is_true(value));
10847 		}
10848 		goto isset_dim_obj_exit;
10849 	} else if ((IS_CONST & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(container))) {
10850 		container = Z_REFVAL_P(container);
10851 		if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
10852 			goto isset_dim_obj_array;
10853 		}
10854 	}
10855 
10856 	if (IS_CV == IS_CONST && Z_EXTRA_P(offset) == ZEND_EXTRA_VALUE) {
10857 		offset++;
10858 	}
10859 	if (!(opline->extended_value & ZEND_ISEMPTY)) {
10860 		result = zend_isset_dim_slow(container, offset EXECUTE_DATA_CC);
10861 	} else {
10862 		result = zend_isempty_dim_slow(container, offset EXECUTE_DATA_CC);
10863 	}
10864 
10865 isset_dim_obj_exit:
10866 
10867 
10868 	ZEND_VM_SMART_BRANCH(result, 1);
10869 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
10870 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
10871 }
10872 
10873 static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
10874 {
10875 	USE_OPLINE
10876 
10877 	zval *container;
10878 	int result;
10879 	zval *offset;
10880 
10881 	SAVE_OPLINE();
10882 	container = RT_CONSTANT(opline, opline->op1);
10883 
10884 	if (IS_CONST == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
10885 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
10886 	}
10887 
10888 	offset = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
10889 
10890 	if (IS_CONST == IS_CONST ||
10891 	    (IS_CONST != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
10892 		if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
10893 			container = Z_REFVAL_P(container);
10894 			if (UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) {
10895 				goto isset_no_object;
10896 			}
10897 		} else {
10898 			goto isset_no_object;
10899 		}
10900 	}
10901 	if (UNEXPECTED(!Z_OBJ_HT_P(container)->has_property)) {
10902 		zend_wrong_property_check(offset);
10903 isset_no_object:
10904 		result = (opline->extended_value & ZEND_ISEMPTY);
10905 	} else {
10906 		result =
10907 			(opline->extended_value & ZEND_ISEMPTY) ^
10908 			Z_OBJ_HT_P(container)->has_property(container, offset, (opline->extended_value & ZEND_ISEMPTY), ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_ISEMPTY) : NULL));
10909 	}
10910 
10911 
10912 	ZEND_VM_SMART_BRANCH(result, 1);
10913 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
10914 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
10915 }
10916 
10917 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_YIELD_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
10918 {
10919 	USE_OPLINE
10920 
10921 	zend_generator *generator = zend_get_running_generator(EXECUTE_DATA_C);
10922 
10923 	SAVE_OPLINE();
10924 	if (UNEXPECTED(generator->flags & ZEND_GENERATOR_FORCED_CLOSE)) {
10925 		ZEND_VM_TAIL_CALL(zend_yield_in_closed_generator_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
10926 	}
10927 
10928 	/* Destroy the previously yielded value */
10929 	zval_ptr_dtor(&generator->value);
10930 
10931 	/* Destroy the previously yielded key */
10932 	zval_ptr_dtor(&generator->key);
10933 
10934 	/* Set the new yielded value */
10935 	if (IS_CONST != IS_UNUSED) {
10936 
10937 
10938 		if (UNEXPECTED(EX(func)->op_array.fn_flags & ZEND_ACC_RETURN_REFERENCE)) {
10939 			/* Constants and temporary variables aren't yieldable by reference,
10940 			 * but we still allow them with a notice. */
10941 			if (IS_CONST & (IS_CONST|IS_TMP_VAR)) {
10942 				zval *value;
10943 
10944 				zend_error(E_NOTICE, "Only variable references should be yielded by reference");
10945 
10946 				value = RT_CONSTANT(opline, opline->op1);
10947 				ZVAL_COPY_VALUE(&generator->value, value);
10948 				if (IS_CONST == IS_CONST) {
10949 					if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
10950 						Z_ADDREF(generator->value);
10951 					}
10952 				}
10953 			} else {
10954 				zval *value_ptr = NULL;
10955 
10956 				/* If a function call result is yielded and the function did
10957 				 * not return by reference we throw a notice. */
10958 				if (IS_CONST == IS_VAR &&
10959 				    (value_ptr == &EG(uninitialized_zval) ||
10960 				     (opline->extended_value == ZEND_RETURNS_FUNCTION &&
10961 				      !Z_ISREF_P(value_ptr)))) {
10962 					zend_error(E_NOTICE, "Only variable references should be yielded by reference");
10963 					ZVAL_COPY(&generator->value, value_ptr);
10964 				} else {
10965 					if (Z_ISREF_P(value_ptr)) {
10966 						Z_ADDREF_P(value_ptr);
10967 					} else {
10968 						ZVAL_MAKE_REF_EX(value_ptr, 2);
10969 					}
10970 					ZVAL_REF(&generator->value, Z_REF_P(value_ptr));
10971 				}
10972 
10973 			}
10974 		} else {
10975 			zval *value = RT_CONSTANT(opline, opline->op1);
10976 
10977 			/* Consts, temporary variables and references need copying */
10978 			if (IS_CONST == IS_CONST) {
10979 				ZVAL_COPY_VALUE(&generator->value, value);
10980 				if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
10981 					Z_ADDREF(generator->value);
10982 				}
10983 			} else if (IS_CONST == IS_TMP_VAR) {
10984 				ZVAL_COPY_VALUE(&generator->value, value);
10985             } else if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
10986 				ZVAL_COPY(&generator->value, Z_REFVAL_P(value));
10987 
10988 			} else {
10989 				ZVAL_COPY_VALUE(&generator->value, value);
10990 				if (IS_CONST == IS_CV) {
10991 					if (Z_OPT_REFCOUNTED_P(value)) Z_ADDREF_P(value);
10992 				}
10993 			}
10994 		}
10995 	} else {
10996 		/* If no value was specified yield null */
10997 		ZVAL_NULL(&generator->value);
10998 	}
10999 
11000 	/* Set the new yielded key */
11001 	if (IS_CV != IS_UNUSED) {
11002 
11003 		zval *key = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
11004 
11005 		/* Consts, temporary variables and references need copying */
11006 		if (IS_CV == IS_CONST) {
11007 			ZVAL_COPY_VALUE(&generator->key, key);
11008 			if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->key))) {
11009 				Z_ADDREF(generator->key);
11010 			}
11011 		} else if (IS_CV == IS_TMP_VAR) {
11012 			ZVAL_COPY_VALUE(&generator->key, key);
11013 		} else if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(key)) {
11014 			ZVAL_COPY(&generator->key, Z_REFVAL_P(key));
11015 
11016 		} else {
11017 			ZVAL_COPY_VALUE(&generator->key, key);
11018 			if (IS_CV == IS_CV) {
11019 				if (Z_OPT_REFCOUNTED_P(key)) Z_ADDREF_P(key);
11020 			}
11021 		}
11022 
11023 		if (Z_TYPE(generator->key) == IS_LONG
11024 		    && Z_LVAL(generator->key) > generator->largest_used_integer_key
11025 		) {
11026 			generator->largest_used_integer_key = Z_LVAL(generator->key);
11027 		}
11028 	} else {
11029 		/* If no key was specified we use auto-increment keys */
11030 		generator->largest_used_integer_key++;
11031 		ZVAL_LONG(&generator->key, generator->largest_used_integer_key);
11032 	}
11033 
11034 	if (RETURN_VALUE_USED(opline)) {
11035 		/* If the return value of yield is used set the send
11036 		 * target and initialize it to NULL */
11037 		generator->send_target = EX_VAR(opline->result.var);
11038 		ZVAL_NULL(generator->send_target);
11039 	} else {
11040 		generator->send_target = NULL;
11041 	}
11042 
11043 	/* We increment to the next op, so we are at the correct position when the
11044 	 * generator is resumed. */
11045 	ZEND_VM_INC_OPCODE();
11046 
11047 	/* The GOTO VM uses a local opline variable. We need to set the opline
11048 	 * variable in execute_data so we don't resume at an old position. */
11049 	SAVE_OPLINE();
11050 
11051 	ZEND_VM_RETURN();
11052 }
11053 
11054 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_QM_ASSIGN_DOUBLE_SPEC_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
11055 {
11056 	USE_OPLINE
11057 
11058 	zval *value;
11059 
11060 	value = EX_VAR(opline->op1.var);
11061 	ZVAL_DOUBLE(EX_VAR(opline->result.var), Z_DVAL_P(value));
11062 	ZEND_VM_NEXT_OPCODE();
11063 }
11064 
11065 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_QM_ASSIGN_NOREF_SPEC_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
11066 {
11067 	USE_OPLINE
11068 
11069 	zval *value;
11070 
11071 	value = EX_VAR(opline->op1.var);
11072 	ZVAL_COPY_VALUE(EX_VAR(opline->result.var), value);
11073 	ZEND_VM_NEXT_OPCODE();
11074 }
11075 
11076 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_LIST_R_SPEC_TMPVARCV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
11077 {
11078 	USE_OPLINE
11079 
11080 	zval *container;
11081 
11082 	SAVE_OPLINE();
11083 	container = EX_VAR(opline->op1.var);
11084 	zend_fetch_dimension_address_LIST_r(container, RT_CONSTANT(opline, opline->op2), IS_CONST OPLINE_CC EXECUTE_DATA_CC);
11085 
11086 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
11087 }
11088 
11089 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SWITCH_LONG_SPEC_TMPVARCV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
11090 {
11091 	USE_OPLINE
11092 
11093 	zval *op, *jump_zv;
11094 	HashTable *jumptable;
11095 
11096 	op = EX_VAR(opline->op1.var);
11097 	jumptable = Z_ARRVAL_P(RT_CONSTANT(opline, opline->op2));
11098 
11099 	if (Z_TYPE_P(op) != IS_LONG) {
11100 		ZVAL_DEREF(op);
11101 		if (Z_TYPE_P(op) != IS_LONG) {
11102 			/* Wrong type, fall back to ZEND_CASE chain */
11103 			ZEND_VM_NEXT_OPCODE();
11104 		}
11105 	}
11106 
11107 	jump_zv = zend_hash_index_find(jumptable, Z_LVAL_P(op));
11108 	if (jump_zv != NULL) {
11109 		ZEND_VM_SET_RELATIVE_OPCODE(opline, Z_LVAL_P(jump_zv));
11110 		ZEND_VM_CONTINUE();
11111 	} else {
11112 		/* default */
11113 		ZEND_VM_SET_RELATIVE_OPCODE(opline, opline->extended_value);
11114 		ZEND_VM_CONTINUE();
11115 	}
11116 }
11117 
11118 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SWITCH_STRING_SPEC_TMPVARCV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
11119 {
11120 	USE_OPLINE
11121 
11122 	zval *op, *jump_zv;
11123 	HashTable *jumptable;
11124 
11125 	op = EX_VAR(opline->op1.var);
11126 	jumptable = Z_ARRVAL_P(RT_CONSTANT(opline, opline->op2));
11127 
11128 	if (Z_TYPE_P(op) != IS_STRING) {
11129 		if ((IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST) {
11130 			/* Wrong type, fall back to ZEND_CASE chain */
11131 			ZEND_VM_NEXT_OPCODE();
11132 		} else {
11133 			ZVAL_DEREF(op);
11134 			if (Z_TYPE_P(op) != IS_STRING) {
11135 				/* Wrong type, fall back to ZEND_CASE chain */
11136 				ZEND_VM_NEXT_OPCODE();
11137 			}
11138 		}
11139 	}
11140 
11141 	jump_zv = zend_hash_find_ex(jumptable, Z_STR_P(op), (IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST);
11142 	if (jump_zv != NULL) {
11143 		ZEND_VM_SET_RELATIVE_OPCODE(opline, Z_LVAL_P(jump_zv));
11144 		ZEND_VM_CONTINUE();
11145 	} else {
11146 		/* default */
11147 		ZEND_VM_SET_RELATIVE_OPCODE(opline, opline->extended_value);
11148 		ZEND_VM_CONTINUE();
11149 	}
11150 }
11151 
11152 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
11153 {
11154 	USE_OPLINE
11155 	zval *op1, *op2, *result;
11156 
11157 	op1 = EX_VAR(opline->op1.var);
11158 	op2 = RT_CONSTANT(opline, opline->op2);
11159 	result = EX_VAR(opline->result.var);
11160 	ZVAL_LONG(result, Z_LVAL_P(op1) + Z_LVAL_P(op2));
11161 	ZEND_VM_NEXT_OPCODE();
11162 }
11163 
11164 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ADD_LONG_SPEC_TMPVARCV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
11165 {
11166 	USE_OPLINE
11167 	zval *op1, *op2, *result;
11168 
11169 	op1 = EX_VAR(opline->op1.var);
11170 	op2 = RT_CONSTANT(opline, opline->op2);
11171 	result = EX_VAR(opline->result.var);
11172 	fast_long_add_function(result, op1, op2);
11173 	ZEND_VM_NEXT_OPCODE();
11174 }
11175 
11176 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ADD_DOUBLE_SPEC_TMPVARCV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
11177 {
11178 	USE_OPLINE
11179 	zval *op1, *op2, *result;
11180 
11181 	op1 = EX_VAR(opline->op1.var);
11182 	op2 = RT_CONSTANT(opline, opline->op2);
11183 	result = EX_VAR(opline->result.var);
11184 	ZVAL_DOUBLE(result, Z_DVAL_P(op1) + Z_DVAL_P(op2));
11185 	ZEND_VM_NEXT_OPCODE();
11186 }
11187 
11188 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
11189 {
11190 	USE_OPLINE
11191 	zval *op1, *op2, *result;
11192 
11193 	op1 = EX_VAR(opline->op1.var);
11194 	op2 = RT_CONSTANT(opline, opline->op2);
11195 	result = EX_VAR(opline->result.var);
11196 	ZVAL_LONG(result, Z_LVAL_P(op1) - Z_LVAL_P(op2));
11197 	ZEND_VM_NEXT_OPCODE();
11198 }
11199 
11200 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SUB_LONG_SPEC_TMPVARCV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
11201 {
11202 	USE_OPLINE
11203 	zval *op1, *op2, *result;
11204 
11205 	op1 = EX_VAR(opline->op1.var);
11206 	op2 = RT_CONSTANT(opline, opline->op2);
11207 	result = EX_VAR(opline->result.var);
11208 	fast_long_sub_function(result, op1, op2);
11209 	ZEND_VM_NEXT_OPCODE();
11210 }
11211 
11212 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SUB_DOUBLE_SPEC_TMPVARCV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
11213 {
11214 	USE_OPLINE
11215 	zval *op1, *op2, *result;
11216 
11217 	op1 = EX_VAR(opline->op1.var);
11218 	op2 = RT_CONSTANT(opline, opline->op2);
11219 	result = EX_VAR(opline->result.var);
11220 	ZVAL_DOUBLE(result, Z_DVAL_P(op1) - Z_DVAL_P(op2));
11221 	ZEND_VM_NEXT_OPCODE();
11222 }
11223 
11224 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
11225 {
11226 	USE_OPLINE
11227 	zval *op1, *op2, *result;
11228 
11229 	op1 = EX_VAR(opline->op1.var);
11230 	op2 = RT_CONSTANT(opline, opline->op2);
11231 	result = EX_VAR(opline->result.var);
11232 	ZVAL_LONG(result, Z_LVAL_P(op1) * Z_LVAL_P(op2));
11233 	ZEND_VM_NEXT_OPCODE();
11234 }
11235 
11236 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_MUL_LONG_SPEC_TMPVARCV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
11237 {
11238 	USE_OPLINE
11239 	zval *op1, *op2, *result;
11240 	zend_long overflow;
11241 
11242 	op1 = EX_VAR(opline->op1.var);
11243 	op2 = RT_CONSTANT(opline, opline->op2);
11244 	result = EX_VAR(opline->result.var);
11245 	ZEND_SIGNED_MULTIPLY_LONG(Z_LVAL_P(op1), Z_LVAL_P(op2), Z_LVAL_P(result), Z_DVAL_P(result), overflow);
11246 	Z_TYPE_INFO_P(result) = overflow ? IS_DOUBLE : IS_LONG;
11247 	ZEND_VM_NEXT_OPCODE();
11248 }
11249 
11250 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_MUL_DOUBLE_SPEC_TMPVARCV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
11251 {
11252 	USE_OPLINE
11253 	zval *op1, *op2, *result;
11254 
11255 	op1 = EX_VAR(opline->op1.var);
11256 	op2 = RT_CONSTANT(opline, opline->op2);
11257 	result = EX_VAR(opline->result.var);
11258 	ZVAL_DOUBLE(result, Z_DVAL_P(op1) * Z_DVAL_P(op2));
11259 	ZEND_VM_NEXT_OPCODE();
11260 }
11261 
11262 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
11263 {
11264 	USE_OPLINE
11265 	zval *op1, *op2;
11266 	int result;
11267 
11268 	op1 = EX_VAR(opline->op1.var);
11269 	op2 = RT_CONSTANT(opline, opline->op2);
11270 	result = (Z_LVAL_P(op1) == Z_LVAL_P(op2));
11271 
11272 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
11273 	ZEND_VM_NEXT_OPCODE();
11274 }
11275 
11276 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
11277 {
11278 	USE_OPLINE
11279 	zval *op1, *op2;
11280 	int result;
11281 
11282 	op1 = EX_VAR(opline->op1.var);
11283 	op2 = RT_CONSTANT(opline, opline->op2);
11284 	result = (Z_LVAL_P(op1) == Z_LVAL_P(op2));
11285 	ZEND_VM_SMART_BRANCH_JMPZ(result, 0);
11286 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
11287 	ZEND_VM_NEXT_OPCODE();
11288 }
11289 
11290 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
11291 {
11292 	USE_OPLINE
11293 	zval *op1, *op2;
11294 	int result;
11295 
11296 	op1 = EX_VAR(opline->op1.var);
11297 	op2 = RT_CONSTANT(opline, opline->op2);
11298 	result = (Z_LVAL_P(op1) == Z_LVAL_P(op2));
11299 	ZEND_VM_SMART_BRANCH_JMPNZ(result, 0);
11300 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
11301 	ZEND_VM_NEXT_OPCODE();
11302 }
11303 
11304 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
11305 {
11306 	USE_OPLINE
11307 	zval *op1, *op2;
11308 	int result;
11309 
11310 	op1 = EX_VAR(opline->op1.var);
11311 	op2 = RT_CONSTANT(opline, opline->op2);
11312 	result = (Z_DVAL_P(op1) == Z_DVAL_P(op2));
11313 
11314 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
11315 	ZEND_VM_NEXT_OPCODE();
11316 }
11317 
11318 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
11319 {
11320 	USE_OPLINE
11321 	zval *op1, *op2;
11322 	int result;
11323 
11324 	op1 = EX_VAR(opline->op1.var);
11325 	op2 = RT_CONSTANT(opline, opline->op2);
11326 	result = (Z_DVAL_P(op1) == Z_DVAL_P(op2));
11327 	ZEND_VM_SMART_BRANCH_JMPZ(result, 0);
11328 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
11329 	ZEND_VM_NEXT_OPCODE();
11330 }
11331 
11332 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
11333 {
11334 	USE_OPLINE
11335 	zval *op1, *op2;
11336 	int result;
11337 
11338 	op1 = EX_VAR(opline->op1.var);
11339 	op2 = RT_CONSTANT(opline, opline->op2);
11340 	result = (Z_DVAL_P(op1) == Z_DVAL_P(op2));
11341 	ZEND_VM_SMART_BRANCH_JMPNZ(result, 0);
11342 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
11343 	ZEND_VM_NEXT_OPCODE();
11344 }
11345 
11346 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
11347 {
11348 	USE_OPLINE
11349 	zval *op1, *op2;
11350 	int result;
11351 
11352 	op1 = EX_VAR(opline->op1.var);
11353 	op2 = RT_CONSTANT(opline, opline->op2);
11354 	result = (Z_LVAL_P(op1) != Z_LVAL_P(op2));
11355 
11356 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
11357 	ZEND_VM_NEXT_OPCODE();
11358 }
11359 
11360 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
11361 {
11362 	USE_OPLINE
11363 	zval *op1, *op2;
11364 	int result;
11365 
11366 	op1 = EX_VAR(opline->op1.var);
11367 	op2 = RT_CONSTANT(opline, opline->op2);
11368 	result = (Z_LVAL_P(op1) != Z_LVAL_P(op2));
11369 	ZEND_VM_SMART_BRANCH_JMPZ(result, 0);
11370 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
11371 	ZEND_VM_NEXT_OPCODE();
11372 }
11373 
11374 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
11375 {
11376 	USE_OPLINE
11377 	zval *op1, *op2;
11378 	int result;
11379 
11380 	op1 = EX_VAR(opline->op1.var);
11381 	op2 = RT_CONSTANT(opline, opline->op2);
11382 	result = (Z_LVAL_P(op1) != Z_LVAL_P(op2));
11383 	ZEND_VM_SMART_BRANCH_JMPNZ(result, 0);
11384 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
11385 	ZEND_VM_NEXT_OPCODE();
11386 }
11387 
11388 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
11389 {
11390 	USE_OPLINE
11391 	zval *op1, *op2;
11392 	int result;
11393 
11394 	op1 = EX_VAR(opline->op1.var);
11395 	op2 = RT_CONSTANT(opline, opline->op2);
11396 	result = (Z_DVAL_P(op1) != Z_DVAL_P(op2));
11397 
11398 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
11399 	ZEND_VM_NEXT_OPCODE();
11400 }
11401 
11402 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
11403 {
11404 	USE_OPLINE
11405 	zval *op1, *op2;
11406 	int result;
11407 
11408 	op1 = EX_VAR(opline->op1.var);
11409 	op2 = RT_CONSTANT(opline, opline->op2);
11410 	result = (Z_DVAL_P(op1) != Z_DVAL_P(op2));
11411 	ZEND_VM_SMART_BRANCH_JMPZ(result, 0);
11412 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
11413 	ZEND_VM_NEXT_OPCODE();
11414 }
11415 
11416 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
11417 {
11418 	USE_OPLINE
11419 	zval *op1, *op2;
11420 	int result;
11421 
11422 	op1 = EX_VAR(opline->op1.var);
11423 	op2 = RT_CONSTANT(opline, opline->op2);
11424 	result = (Z_DVAL_P(op1) != Z_DVAL_P(op2));
11425 	ZEND_VM_SMART_BRANCH_JMPNZ(result, 0);
11426 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
11427 	ZEND_VM_NEXT_OPCODE();
11428 }
11429 
11430 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
11431 {
11432 	USE_OPLINE
11433 	zval *op1, *op2;
11434 	int result;
11435 
11436 	op1 = EX_VAR(opline->op1.var);
11437 	op2 = RT_CONSTANT(opline, opline->op2);
11438 	result = (Z_LVAL_P(op1) < Z_LVAL_P(op2));
11439 
11440 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
11441 	ZEND_VM_NEXT_OPCODE();
11442 }
11443 
11444 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
11445 {
11446 	USE_OPLINE
11447 	zval *op1, *op2;
11448 	int result;
11449 
11450 	op1 = EX_VAR(opline->op1.var);
11451 	op2 = RT_CONSTANT(opline, opline->op2);
11452 	result = (Z_LVAL_P(op1) < Z_LVAL_P(op2));
11453 	ZEND_VM_SMART_BRANCH_JMPZ(result, 0);
11454 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
11455 	ZEND_VM_NEXT_OPCODE();
11456 }
11457 
11458 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPNZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
11459 {
11460 	USE_OPLINE
11461 	zval *op1, *op2;
11462 	int result;
11463 
11464 	op1 = EX_VAR(opline->op1.var);
11465 	op2 = RT_CONSTANT(opline, opline->op2);
11466 	result = (Z_LVAL_P(op1) < Z_LVAL_P(op2));
11467 	ZEND_VM_SMART_BRANCH_JMPNZ(result, 0);
11468 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
11469 	ZEND_VM_NEXT_OPCODE();
11470 }
11471 
11472 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
11473 {
11474 	USE_OPLINE
11475 	zval *op1, *op2;
11476 	int result;
11477 
11478 	op1 = EX_VAR(opline->op1.var);
11479 	op2 = RT_CONSTANT(opline, opline->op2);
11480 	result = (Z_DVAL_P(op1) < Z_DVAL_P(op2));
11481 
11482 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
11483 	ZEND_VM_NEXT_OPCODE();
11484 }
11485 
11486 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
11487 {
11488 	USE_OPLINE
11489 	zval *op1, *op2;
11490 	int result;
11491 
11492 	op1 = EX_VAR(opline->op1.var);
11493 	op2 = RT_CONSTANT(opline, opline->op2);
11494 	result = (Z_DVAL_P(op1) < Z_DVAL_P(op2));
11495 	ZEND_VM_SMART_BRANCH_JMPZ(result, 0);
11496 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
11497 	ZEND_VM_NEXT_OPCODE();
11498 }
11499 
11500 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
11501 {
11502 	USE_OPLINE
11503 	zval *op1, *op2;
11504 	int result;
11505 
11506 	op1 = EX_VAR(opline->op1.var);
11507 	op2 = RT_CONSTANT(opline, opline->op2);
11508 	result = (Z_DVAL_P(op1) < Z_DVAL_P(op2));
11509 	ZEND_VM_SMART_BRANCH_JMPNZ(result, 0);
11510 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
11511 	ZEND_VM_NEXT_OPCODE();
11512 }
11513 
11514 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
11515 {
11516 	USE_OPLINE
11517 	zval *op1, *op2;
11518 	int result;
11519 
11520 	op1 = EX_VAR(opline->op1.var);
11521 	op2 = RT_CONSTANT(opline, opline->op2);
11522 	result = (Z_LVAL_P(op1) <= Z_LVAL_P(op2));
11523 
11524 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
11525 	ZEND_VM_NEXT_OPCODE();
11526 }
11527 
11528 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
11529 {
11530 	USE_OPLINE
11531 	zval *op1, *op2;
11532 	int result;
11533 
11534 	op1 = EX_VAR(opline->op1.var);
11535 	op2 = RT_CONSTANT(opline, opline->op2);
11536 	result = (Z_LVAL_P(op1) <= Z_LVAL_P(op2));
11537 	ZEND_VM_SMART_BRANCH_JMPZ(result, 0);
11538 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
11539 	ZEND_VM_NEXT_OPCODE();
11540 }
11541 
11542 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
11543 {
11544 	USE_OPLINE
11545 	zval *op1, *op2;
11546 	int result;
11547 
11548 	op1 = EX_VAR(opline->op1.var);
11549 	op2 = RT_CONSTANT(opline, opline->op2);
11550 	result = (Z_LVAL_P(op1) <= Z_LVAL_P(op2));
11551 	ZEND_VM_SMART_BRANCH_JMPNZ(result, 0);
11552 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
11553 	ZEND_VM_NEXT_OPCODE();
11554 }
11555 
11556 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
11557 {
11558 	USE_OPLINE
11559 	zval *op1, *op2;
11560 	int result;
11561 
11562 	op1 = EX_VAR(opline->op1.var);
11563 	op2 = RT_CONSTANT(opline, opline->op2);
11564 	result = (Z_DVAL_P(op1) <= Z_DVAL_P(op2));
11565 
11566 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
11567 	ZEND_VM_NEXT_OPCODE();
11568 }
11569 
11570 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
11571 {
11572 	USE_OPLINE
11573 	zval *op1, *op2;
11574 	int result;
11575 
11576 	op1 = EX_VAR(opline->op1.var);
11577 	op2 = RT_CONSTANT(opline, opline->op2);
11578 	result = (Z_DVAL_P(op1) <= Z_DVAL_P(op2));
11579 	ZEND_VM_SMART_BRANCH_JMPZ(result, 0);
11580 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
11581 	ZEND_VM_NEXT_OPCODE();
11582 }
11583 
11584 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
11585 {
11586 	USE_OPLINE
11587 	zval *op1, *op2;
11588 	int result;
11589 
11590 	op1 = EX_VAR(opline->op1.var);
11591 	op2 = RT_CONSTANT(opline, opline->op2);
11592 	result = (Z_DVAL_P(op1) <= Z_DVAL_P(op2));
11593 	ZEND_VM_SMART_BRANCH_JMPNZ(result, 0);
11594 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
11595 	ZEND_VM_NEXT_OPCODE();
11596 }
11597 
11598 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
11599 {
11600 	USE_OPLINE
11601 	zval *op1, *op2, *result;
11602 
11603 	op1 = EX_VAR(opline->op1.var);
11604 	op2 = EX_VAR(opline->op2.var);
11605 	result = EX_VAR(opline->result.var);
11606 	ZVAL_LONG(result, Z_LVAL_P(op1) + Z_LVAL_P(op2));
11607 	ZEND_VM_NEXT_OPCODE();
11608 }
11609 
11610 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
11611 {
11612 	USE_OPLINE
11613 	zval *op1, *op2, *result;
11614 
11615 	op1 = EX_VAR(opline->op1.var);
11616 	op2 = EX_VAR(opline->op2.var);
11617 	result = EX_VAR(opline->result.var);
11618 	fast_long_add_function(result, op1, op2);
11619 	ZEND_VM_NEXT_OPCODE();
11620 }
11621 
11622 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
11623 {
11624 	USE_OPLINE
11625 	zval *op1, *op2, *result;
11626 
11627 	op1 = EX_VAR(opline->op1.var);
11628 	op2 = EX_VAR(opline->op2.var);
11629 	result = EX_VAR(opline->result.var);
11630 	ZVAL_DOUBLE(result, Z_DVAL_P(op1) + Z_DVAL_P(op2));
11631 	ZEND_VM_NEXT_OPCODE();
11632 }
11633 
11634 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
11635 {
11636 	USE_OPLINE
11637 	zval *op1, *op2, *result;
11638 
11639 	op1 = EX_VAR(opline->op1.var);
11640 	op2 = EX_VAR(opline->op2.var);
11641 	result = EX_VAR(opline->result.var);
11642 	ZVAL_LONG(result, Z_LVAL_P(op1) - Z_LVAL_P(op2));
11643 	ZEND_VM_NEXT_OPCODE();
11644 }
11645 
11646 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
11647 {
11648 	USE_OPLINE
11649 	zval *op1, *op2, *result;
11650 
11651 	op1 = EX_VAR(opline->op1.var);
11652 	op2 = EX_VAR(opline->op2.var);
11653 	result = EX_VAR(opline->result.var);
11654 	fast_long_sub_function(result, op1, op2);
11655 	ZEND_VM_NEXT_OPCODE();
11656 }
11657 
11658 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
11659 {
11660 	USE_OPLINE
11661 	zval *op1, *op2, *result;
11662 
11663 	op1 = EX_VAR(opline->op1.var);
11664 	op2 = EX_VAR(opline->op2.var);
11665 	result = EX_VAR(opline->result.var);
11666 	ZVAL_DOUBLE(result, Z_DVAL_P(op1) - Z_DVAL_P(op2));
11667 	ZEND_VM_NEXT_OPCODE();
11668 }
11669 
11670 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
11671 {
11672 	USE_OPLINE
11673 	zval *op1, *op2, *result;
11674 
11675 	op1 = EX_VAR(opline->op1.var);
11676 	op2 = EX_VAR(opline->op2.var);
11677 	result = EX_VAR(opline->result.var);
11678 	ZVAL_LONG(result, Z_LVAL_P(op1) * Z_LVAL_P(op2));
11679 	ZEND_VM_NEXT_OPCODE();
11680 }
11681 
11682 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
11683 {
11684 	USE_OPLINE
11685 	zval *op1, *op2, *result;
11686 	zend_long overflow;
11687 
11688 	op1 = EX_VAR(opline->op1.var);
11689 	op2 = EX_VAR(opline->op2.var);
11690 	result = EX_VAR(opline->result.var);
11691 	ZEND_SIGNED_MULTIPLY_LONG(Z_LVAL_P(op1), Z_LVAL_P(op2), Z_LVAL_P(result), Z_DVAL_P(result), overflow);
11692 	Z_TYPE_INFO_P(result) = overflow ? IS_DOUBLE : IS_LONG;
11693 	ZEND_VM_NEXT_OPCODE();
11694 }
11695 
11696 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
11697 {
11698 	USE_OPLINE
11699 	zval *op1, *op2, *result;
11700 
11701 	op1 = EX_VAR(opline->op1.var);
11702 	op2 = EX_VAR(opline->op2.var);
11703 	result = EX_VAR(opline->result.var);
11704 	ZVAL_DOUBLE(result, Z_DVAL_P(op1) * Z_DVAL_P(op2));
11705 	ZEND_VM_NEXT_OPCODE();
11706 }
11707 
11708 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
11709 {
11710 	USE_OPLINE
11711 	zval *op1, *op2;
11712 	int result;
11713 
11714 	op1 = EX_VAR(opline->op1.var);
11715 	op2 = EX_VAR(opline->op2.var);
11716 	result = (Z_LVAL_P(op1) == Z_LVAL_P(op2));
11717 
11718 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
11719 	ZEND_VM_NEXT_OPCODE();
11720 }
11721 
11722 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
11723 {
11724 	USE_OPLINE
11725 	zval *op1, *op2;
11726 	int result;
11727 
11728 	op1 = EX_VAR(opline->op1.var);
11729 	op2 = EX_VAR(opline->op2.var);
11730 	result = (Z_LVAL_P(op1) == Z_LVAL_P(op2));
11731 	ZEND_VM_SMART_BRANCH_JMPZ(result, 0);
11732 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
11733 	ZEND_VM_NEXT_OPCODE();
11734 }
11735 
11736 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
11737 {
11738 	USE_OPLINE
11739 	zval *op1, *op2;
11740 	int result;
11741 
11742 	op1 = EX_VAR(opline->op1.var);
11743 	op2 = EX_VAR(opline->op2.var);
11744 	result = (Z_LVAL_P(op1) == Z_LVAL_P(op2));
11745 	ZEND_VM_SMART_BRANCH_JMPNZ(result, 0);
11746 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
11747 	ZEND_VM_NEXT_OPCODE();
11748 }
11749 
11750 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
11751 {
11752 	USE_OPLINE
11753 	zval *op1, *op2;
11754 	int result;
11755 
11756 	op1 = EX_VAR(opline->op1.var);
11757 	op2 = EX_VAR(opline->op2.var);
11758 	result = (Z_DVAL_P(op1) == Z_DVAL_P(op2));
11759 
11760 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
11761 	ZEND_VM_NEXT_OPCODE();
11762 }
11763 
11764 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
11765 {
11766 	USE_OPLINE
11767 	zval *op1, *op2;
11768 	int result;
11769 
11770 	op1 = EX_VAR(opline->op1.var);
11771 	op2 = EX_VAR(opline->op2.var);
11772 	result = (Z_DVAL_P(op1) == Z_DVAL_P(op2));
11773 	ZEND_VM_SMART_BRANCH_JMPZ(result, 0);
11774 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
11775 	ZEND_VM_NEXT_OPCODE();
11776 }
11777 
11778 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
11779 {
11780 	USE_OPLINE
11781 	zval *op1, *op2;
11782 	int result;
11783 
11784 	op1 = EX_VAR(opline->op1.var);
11785 	op2 = EX_VAR(opline->op2.var);
11786 	result = (Z_DVAL_P(op1) == Z_DVAL_P(op2));
11787 	ZEND_VM_SMART_BRANCH_JMPNZ(result, 0);
11788 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
11789 	ZEND_VM_NEXT_OPCODE();
11790 }
11791 
11792 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
11793 {
11794 	USE_OPLINE
11795 	zval *op1, *op2;
11796 	int result;
11797 
11798 	op1 = EX_VAR(opline->op1.var);
11799 	op2 = EX_VAR(opline->op2.var);
11800 	result = (Z_LVAL_P(op1) != Z_LVAL_P(op2));
11801 
11802 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
11803 	ZEND_VM_NEXT_OPCODE();
11804 }
11805 
11806 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
11807 {
11808 	USE_OPLINE
11809 	zval *op1, *op2;
11810 	int result;
11811 
11812 	op1 = EX_VAR(opline->op1.var);
11813 	op2 = EX_VAR(opline->op2.var);
11814 	result = (Z_LVAL_P(op1) != Z_LVAL_P(op2));
11815 	ZEND_VM_SMART_BRANCH_JMPZ(result, 0);
11816 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
11817 	ZEND_VM_NEXT_OPCODE();
11818 }
11819 
11820 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
11821 {
11822 	USE_OPLINE
11823 	zval *op1, *op2;
11824 	int result;
11825 
11826 	op1 = EX_VAR(opline->op1.var);
11827 	op2 = EX_VAR(opline->op2.var);
11828 	result = (Z_LVAL_P(op1) != Z_LVAL_P(op2));
11829 	ZEND_VM_SMART_BRANCH_JMPNZ(result, 0);
11830 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
11831 	ZEND_VM_NEXT_OPCODE();
11832 }
11833 
11834 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
11835 {
11836 	USE_OPLINE
11837 	zval *op1, *op2;
11838 	int result;
11839 
11840 	op1 = EX_VAR(opline->op1.var);
11841 	op2 = EX_VAR(opline->op2.var);
11842 	result = (Z_DVAL_P(op1) != Z_DVAL_P(op2));
11843 
11844 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
11845 	ZEND_VM_NEXT_OPCODE();
11846 }
11847 
11848 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
11849 {
11850 	USE_OPLINE
11851 	zval *op1, *op2;
11852 	int result;
11853 
11854 	op1 = EX_VAR(opline->op1.var);
11855 	op2 = EX_VAR(opline->op2.var);
11856 	result = (Z_DVAL_P(op1) != Z_DVAL_P(op2));
11857 	ZEND_VM_SMART_BRANCH_JMPZ(result, 0);
11858 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
11859 	ZEND_VM_NEXT_OPCODE();
11860 }
11861 
11862 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
11863 {
11864 	USE_OPLINE
11865 	zval *op1, *op2;
11866 	int result;
11867 
11868 	op1 = EX_VAR(opline->op1.var);
11869 	op2 = EX_VAR(opline->op2.var);
11870 	result = (Z_DVAL_P(op1) != Z_DVAL_P(op2));
11871 	ZEND_VM_SMART_BRANCH_JMPNZ(result, 0);
11872 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
11873 	ZEND_VM_NEXT_OPCODE();
11874 }
11875 
11876 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
11877 {
11878 	USE_OPLINE
11879 	zval *op1, *op2;
11880 	int result;
11881 
11882 	op1 = EX_VAR(opline->op1.var);
11883 	op2 = EX_VAR(opline->op2.var);
11884 	result = (Z_LVAL_P(op1) < Z_LVAL_P(op2));
11885 
11886 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
11887 	ZEND_VM_NEXT_OPCODE();
11888 }
11889 
11890 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
11891 {
11892 	USE_OPLINE
11893 	zval *op1, *op2;
11894 	int result;
11895 
11896 	op1 = EX_VAR(opline->op1.var);
11897 	op2 = EX_VAR(opline->op2.var);
11898 	result = (Z_LVAL_P(op1) < Z_LVAL_P(op2));
11899 	ZEND_VM_SMART_BRANCH_JMPZ(result, 0);
11900 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
11901 	ZEND_VM_NEXT_OPCODE();
11902 }
11903 
11904 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
11905 {
11906 	USE_OPLINE
11907 	zval *op1, *op2;
11908 	int result;
11909 
11910 	op1 = EX_VAR(opline->op1.var);
11911 	op2 = EX_VAR(opline->op2.var);
11912 	result = (Z_LVAL_P(op1) < Z_LVAL_P(op2));
11913 	ZEND_VM_SMART_BRANCH_JMPNZ(result, 0);
11914 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
11915 	ZEND_VM_NEXT_OPCODE();
11916 }
11917 
11918 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
11919 {
11920 	USE_OPLINE
11921 	zval *op1, *op2;
11922 	int result;
11923 
11924 	op1 = EX_VAR(opline->op1.var);
11925 	op2 = EX_VAR(opline->op2.var);
11926 	result = (Z_DVAL_P(op1) < Z_DVAL_P(op2));
11927 
11928 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
11929 	ZEND_VM_NEXT_OPCODE();
11930 }
11931 
11932 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
11933 {
11934 	USE_OPLINE
11935 	zval *op1, *op2;
11936 	int result;
11937 
11938 	op1 = EX_VAR(opline->op1.var);
11939 	op2 = EX_VAR(opline->op2.var);
11940 	result = (Z_DVAL_P(op1) < Z_DVAL_P(op2));
11941 	ZEND_VM_SMART_BRANCH_JMPZ(result, 0);
11942 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
11943 	ZEND_VM_NEXT_OPCODE();
11944 }
11945 
11946 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
11947 {
11948 	USE_OPLINE
11949 	zval *op1, *op2;
11950 	int result;
11951 
11952 	op1 = EX_VAR(opline->op1.var);
11953 	op2 = EX_VAR(opline->op2.var);
11954 	result = (Z_DVAL_P(op1) < Z_DVAL_P(op2));
11955 	ZEND_VM_SMART_BRANCH_JMPNZ(result, 0);
11956 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
11957 	ZEND_VM_NEXT_OPCODE();
11958 }
11959 
11960 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
11961 {
11962 	USE_OPLINE
11963 	zval *op1, *op2;
11964 	int result;
11965 
11966 	op1 = EX_VAR(opline->op1.var);
11967 	op2 = EX_VAR(opline->op2.var);
11968 	result = (Z_LVAL_P(op1) <= Z_LVAL_P(op2));
11969 
11970 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
11971 	ZEND_VM_NEXT_OPCODE();
11972 }
11973 
11974 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
11975 {
11976 	USE_OPLINE
11977 	zval *op1, *op2;
11978 	int result;
11979 
11980 	op1 = EX_VAR(opline->op1.var);
11981 	op2 = EX_VAR(opline->op2.var);
11982 	result = (Z_LVAL_P(op1) <= Z_LVAL_P(op2));
11983 	ZEND_VM_SMART_BRANCH_JMPZ(result, 0);
11984 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
11985 	ZEND_VM_NEXT_OPCODE();
11986 }
11987 
11988 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
11989 {
11990 	USE_OPLINE
11991 	zval *op1, *op2;
11992 	int result;
11993 
11994 	op1 = EX_VAR(opline->op1.var);
11995 	op2 = EX_VAR(opline->op2.var);
11996 	result = (Z_LVAL_P(op1) <= Z_LVAL_P(op2));
11997 	ZEND_VM_SMART_BRANCH_JMPNZ(result, 0);
11998 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
11999 	ZEND_VM_NEXT_OPCODE();
12000 }
12001 
12002 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
12003 {
12004 	USE_OPLINE
12005 	zval *op1, *op2;
12006 	int result;
12007 
12008 	op1 = EX_VAR(opline->op1.var);
12009 	op2 = EX_VAR(opline->op2.var);
12010 	result = (Z_DVAL_P(op1) <= Z_DVAL_P(op2));
12011 
12012 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
12013 	ZEND_VM_NEXT_OPCODE();
12014 }
12015 
12016 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
12017 {
12018 	USE_OPLINE
12019 	zval *op1, *op2;
12020 	int result;
12021 
12022 	op1 = EX_VAR(opline->op1.var);
12023 	op2 = EX_VAR(opline->op2.var);
12024 	result = (Z_DVAL_P(op1) <= Z_DVAL_P(op2));
12025 	ZEND_VM_SMART_BRANCH_JMPZ(result, 0);
12026 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
12027 	ZEND_VM_NEXT_OPCODE();
12028 }
12029 
12030 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
12031 {
12032 	USE_OPLINE
12033 	zval *op1, *op2;
12034 	int result;
12035 
12036 	op1 = EX_VAR(opline->op1.var);
12037 	op2 = EX_VAR(opline->op2.var);
12038 	result = (Z_DVAL_P(op1) <= Z_DVAL_P(op2));
12039 	ZEND_VM_SMART_BRANCH_JMPNZ(result, 0);
12040 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
12041 	ZEND_VM_NEXT_OPCODE();
12042 }
12043 
12044 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_LIST_R_SPEC_TMPVARCV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
12045 {
12046 	USE_OPLINE
12047 	zend_free_op free_op2;
12048 	zval *container;
12049 
12050 	SAVE_OPLINE();
12051 	container = EX_VAR(opline->op1.var);
12052 	zend_fetch_dimension_address_LIST_r(container, _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC), (IS_TMP_VAR|IS_VAR) OPLINE_CC EXECUTE_DATA_CC);
12053 	zval_ptr_dtor_nogc(free_op2);
12054 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
12055 }
12056 
12057 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_LIST_R_SPEC_TMPVARCV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
12058 {
12059 	USE_OPLINE
12060 
12061 	zval *container;
12062 
12063 	SAVE_OPLINE();
12064 	container = EX_VAR(opline->op1.var);
12065 	zend_fetch_dimension_address_LIST_r(container, EX_VAR(opline->op2.var), IS_CV OPLINE_CC EXECUTE_DATA_CC);
12066 
12067 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
12068 }
12069 
12070 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BW_NOT_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
12071 {
12072 	USE_OPLINE
12073 	zend_free_op free_op1;
12074 	zval *op1;
12075 
12076 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
12077 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
12078 		ZVAL_LONG(EX_VAR(opline->result.var), ~Z_LVAL_P(op1));
12079 		ZEND_VM_NEXT_OPCODE();
12080 	}
12081 
12082 	SAVE_OPLINE();
12083 	bitwise_not_function(EX_VAR(opline->result.var),
12084 		_get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC));
12085 	zval_ptr_dtor_nogc(free_op1);
12086 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
12087 }
12088 
12089 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BOOL_NOT_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
12090 {
12091 	USE_OPLINE
12092 	zval *val;
12093 	zend_free_op free_op1;
12094 
12095 	val = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
12096 	if (Z_TYPE_INFO_P(val) == IS_TRUE) {
12097 		ZVAL_FALSE(EX_VAR(opline->result.var));
12098 	} else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) {
12099 		/* The result and op1 can be the same cv zval */
12100 		const uint32_t orig_val_type = Z_TYPE_INFO_P(val);
12101 		ZVAL_TRUE(EX_VAR(opline->result.var));
12102 		if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(orig_val_type == IS_UNDEF)) {
12103 			SAVE_OPLINE();
12104 			GET_OP1_UNDEF_CV(val, BP_VAR_R);
12105 			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
12106 		}
12107 	} else {
12108 		SAVE_OPLINE();
12109 		ZVAL_BOOL(EX_VAR(opline->result.var), !i_zend_is_true(val));
12110 		zval_ptr_dtor_nogc(free_op1);
12111 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
12112 	}
12113 	ZEND_VM_NEXT_OPCODE();
12114 }
12115 
12116 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ECHO_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
12117 {
12118 	USE_OPLINE
12119 	zend_free_op free_op1;
12120 	zval *z;
12121 
12122 	SAVE_OPLINE();
12123 	z = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
12124 
12125 	if (Z_TYPE_P(z) == IS_STRING) {
12126 		zend_string *str = Z_STR_P(z);
12127 
12128 		if (ZSTR_LEN(str) != 0) {
12129 			zend_write(ZSTR_VAL(str), ZSTR_LEN(str));
12130 		}
12131 	} else {
12132 		zend_string *str = zval_get_string_func(z);
12133 
12134 		if (ZSTR_LEN(str) != 0) {
12135 			zend_write(ZSTR_VAL(str), ZSTR_LEN(str));
12136 		} else if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(z) == IS_UNDEF)) {
12137 			GET_OP1_UNDEF_CV(z, BP_VAR_R);
12138 		}
12139 		zend_string_release_ex(str, 0);
12140 	}
12141 
12142 	zval_ptr_dtor_nogc(free_op1);
12143 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
12144 }
12145 
12146 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_JMPZ_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
12147 {
12148 	USE_OPLINE
12149 	zend_free_op free_op1;
12150 	zval *val;
12151 
12152 	val = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
12153 
12154 	if (Z_TYPE_INFO_P(val) == IS_TRUE) {
12155 		ZEND_VM_NEXT_OPCODE();
12156 	} else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) {
12157 		if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) {
12158 			SAVE_OPLINE();
12159 			GET_OP1_UNDEF_CV(val, BP_VAR_R);
12160 			if (UNEXPECTED(EG(exception))) {
12161 				HANDLE_EXCEPTION();
12162 			}
12163 		}
12164 		ZEND_VM_JMP_EX(OP_JMP_ADDR(opline, opline->op2), 0);
12165 	}
12166 
12167 	SAVE_OPLINE();
12168 	if (i_zend_is_true(val)) {
12169 		opline++;
12170 	} else {
12171 		opline = OP_JMP_ADDR(opline, opline->op2);
12172 	}
12173 	zval_ptr_dtor_nogc(free_op1);
12174 	ZEND_VM_JMP(opline);
12175 }
12176 
12177 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_JMPNZ_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
12178 {
12179 	USE_OPLINE
12180 	zend_free_op free_op1;
12181 	zval *val;
12182 
12183 	val = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
12184 
12185 	if (Z_TYPE_INFO_P(val) == IS_TRUE) {
12186 		ZEND_VM_JMP_EX(OP_JMP_ADDR(opline, opline->op2), 0);
12187 	} else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) {
12188 		if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) {
12189 			SAVE_OPLINE();
12190 			GET_OP1_UNDEF_CV(val, BP_VAR_R);
12191 			if (UNEXPECTED(EG(exception))) {
12192 				HANDLE_EXCEPTION();
12193 			}
12194 		}
12195 		ZEND_VM_NEXT_OPCODE();
12196 	}
12197 
12198 	SAVE_OPLINE();
12199 	if (i_zend_is_true(val)) {
12200 		opline = OP_JMP_ADDR(opline, opline->op2);
12201 	} else {
12202 		opline++;
12203 	}
12204 	zval_ptr_dtor_nogc(free_op1);
12205 	ZEND_VM_JMP(opline);
12206 }
12207 
12208 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_JMPZNZ_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
12209 {
12210 	USE_OPLINE
12211 	zend_free_op free_op1;
12212 	zval *val;
12213 
12214 	val = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
12215 
12216 	if (EXPECTED(Z_TYPE_INFO_P(val) == IS_TRUE)) {
12217 		ZEND_VM_SET_RELATIVE_OPCODE(opline, opline->extended_value);
12218 		ZEND_VM_CONTINUE();
12219 	} else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) {
12220 		if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) {
12221 			SAVE_OPLINE();
12222 			GET_OP1_UNDEF_CV(val, BP_VAR_R);
12223 			if (UNEXPECTED(EG(exception))) {
12224 				HANDLE_EXCEPTION();
12225 			}
12226 		}
12227 		ZEND_VM_JMP_EX(OP_JMP_ADDR(opline, opline->op2), 0);
12228 	}
12229 
12230 	SAVE_OPLINE();
12231 	if (i_zend_is_true(val)) {
12232 		opline = ZEND_OFFSET_TO_OPLINE(opline, opline->extended_value);
12233 	} else {
12234 		opline = OP_JMP_ADDR(opline, opline->op2);
12235 	}
12236 	zval_ptr_dtor_nogc(free_op1);
12237 	ZEND_VM_JMP(opline);
12238 }
12239 
12240 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_JMPZ_EX_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
12241 {
12242 	USE_OPLINE
12243 	zend_free_op free_op1;
12244 	zval *val;
12245 	int ret;
12246 
12247 	val = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
12248 
12249 	if (Z_TYPE_INFO_P(val) == IS_TRUE) {
12250 		ZVAL_TRUE(EX_VAR(opline->result.var));
12251 		ZEND_VM_NEXT_OPCODE();
12252 	} else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) {
12253 		ZVAL_FALSE(EX_VAR(opline->result.var));
12254 		if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) {
12255 			SAVE_OPLINE();
12256 			GET_OP1_UNDEF_CV(val, BP_VAR_R);
12257 			if (UNEXPECTED(EG(exception))) {
12258 				HANDLE_EXCEPTION();
12259 			}
12260 		}
12261 		ZEND_VM_JMP_EX(OP_JMP_ADDR(opline, opline->op2), 0);
12262 	}
12263 
12264 	SAVE_OPLINE();
12265 	ret = i_zend_is_true(val);
12266 	zval_ptr_dtor_nogc(free_op1);
12267 	if (ret) {
12268 		ZVAL_TRUE(EX_VAR(opline->result.var));
12269 		opline++;
12270 	} else {
12271 		ZVAL_FALSE(EX_VAR(opline->result.var));
12272 		opline = OP_JMP_ADDR(opline, opline->op2);
12273 	}
12274 	ZEND_VM_JMP(opline);
12275 }
12276 
12277 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_JMPNZ_EX_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
12278 {
12279 	USE_OPLINE
12280 	zend_free_op free_op1;
12281 	zval *val;
12282 	int ret;
12283 
12284 	val = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
12285 
12286 	if (Z_TYPE_INFO_P(val) == IS_TRUE) {
12287 		ZVAL_TRUE(EX_VAR(opline->result.var));
12288 		ZEND_VM_JMP_EX(OP_JMP_ADDR(opline, opline->op2), 0);
12289 	} else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) {
12290 		ZVAL_FALSE(EX_VAR(opline->result.var));
12291 		if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) {
12292 			SAVE_OPLINE();
12293 			GET_OP1_UNDEF_CV(val, BP_VAR_R);
12294 			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
12295 		} else {
12296 			ZEND_VM_NEXT_OPCODE();
12297 		}
12298 	}
12299 
12300 	SAVE_OPLINE();
12301 	ret = i_zend_is_true(val);
12302 	zval_ptr_dtor_nogc(free_op1);
12303 	if (ret) {
12304 		ZVAL_TRUE(EX_VAR(opline->result.var));
12305 		opline = OP_JMP_ADDR(opline, opline->op2);
12306 	} else {
12307 		ZVAL_FALSE(EX_VAR(opline->result.var));
12308 		opline++;
12309 	}
12310 	ZEND_VM_JMP(opline);
12311 }
12312 
12313 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FREE_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
12314 {
12315 	USE_OPLINE
12316 
12317 	SAVE_OPLINE();
12318 	zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
12319 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
12320 }
12321 
12322 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FE_FREE_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
12323 {
12324 	zval *var;
12325 	USE_OPLINE
12326 
12327 	SAVE_OPLINE();
12328 	var = EX_VAR(opline->op1.var);
12329 	if (Z_TYPE_P(var) != IS_ARRAY && Z_FE_ITER_P(var) != (uint32_t)-1) {
12330 		zend_hash_iterator_del(Z_FE_ITER_P(var));
12331 	}
12332 	zval_ptr_dtor_nogc(var);
12333 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
12334 }
12335 
12336 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SEND_VAL_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
12337 {
12338 	USE_OPLINE
12339 	zval *value, *arg;
12340 	zend_free_op free_op1;
12341 
12342 	value = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
12343 	arg = ZEND_CALL_VAR(EX(call), opline->result.var);
12344 	ZVAL_COPY_VALUE(arg, value);
12345 	if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
12346 		if (UNEXPECTED(Z_OPT_REFCOUNTED_P(arg))) {
12347 			Z_ADDREF_P(arg);
12348 		}
12349 	}
12350 	ZEND_VM_NEXT_OPCODE();
12351 }
12352 
12353 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BOOL_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
12354 {
12355 	USE_OPLINE
12356 	zval *val;
12357 	zend_free_op free_op1;
12358 
12359 	val = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
12360 	if (Z_TYPE_INFO_P(val) == IS_TRUE) {
12361 		ZVAL_TRUE(EX_VAR(opline->result.var));
12362 	} else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) {
12363 		/* The result and op1 can be the same cv zval */
12364 		const uint32_t orig_val_type = Z_TYPE_INFO_P(val);
12365 		ZVAL_FALSE(EX_VAR(opline->result.var));
12366 		if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(orig_val_type == IS_UNDEF)) {
12367 			SAVE_OPLINE();
12368 			GET_OP1_UNDEF_CV(val, BP_VAR_R);
12369 			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
12370 		}
12371 	} else {
12372 		SAVE_OPLINE();
12373 		ZVAL_BOOL(EX_VAR(opline->result.var), i_zend_is_true(val));
12374 		zval_ptr_dtor_nogc(free_op1);
12375 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
12376 	}
12377 	ZEND_VM_NEXT_OPCODE();
12378 }
12379 
12380 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_CLONE_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
12381 {
12382 	USE_OPLINE
12383 	zend_free_op free_op1;
12384 	zval *obj;
12385 	zend_class_entry *ce, *scope;
12386 	zend_function *clone;
12387 	zend_object_clone_obj_t clone_call;
12388 
12389 	SAVE_OPLINE();
12390 	obj = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
12391 
12392 	if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED && UNEXPECTED(Z_TYPE_P(obj) == IS_UNDEF)) {
12393 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
12394 	}
12395 
12396 	do {
12397 		if ((IS_TMP_VAR|IS_VAR) == IS_CONST ||
12398 		    ((IS_TMP_VAR|IS_VAR) != IS_UNUSED && UNEXPECTED(Z_TYPE_P(obj) != IS_OBJECT))) {
12399 		    if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV)) && Z_ISREF_P(obj)) {
12400 				obj = Z_REFVAL_P(obj);
12401 				if (EXPECTED(Z_TYPE_P(obj) == IS_OBJECT)) {
12402 					break;
12403 				}
12404 			}
12405 			ZVAL_UNDEF(EX_VAR(opline->result.var));
12406 			if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(obj) == IS_UNDEF)) {
12407 				GET_OP1_UNDEF_CV(obj, BP_VAR_R);
12408 				if (UNEXPECTED(EG(exception) != NULL)) {
12409 					HANDLE_EXCEPTION();
12410 				}
12411 			}
12412 			zend_throw_error(NULL, "__clone method called on non-object");
12413 			zval_ptr_dtor_nogc(free_op1);
12414 			HANDLE_EXCEPTION();
12415 		}
12416 	} while (0);
12417 
12418 	ce = Z_OBJCE_P(obj);
12419 	clone = ce->clone;
12420 	clone_call = Z_OBJ_HT_P(obj)->clone_obj;
12421 	if (UNEXPECTED(clone_call == NULL)) {
12422 		zend_throw_error(NULL, "Trying to clone an uncloneable object of class %s", ZSTR_VAL(ce->name));
12423 		zval_ptr_dtor_nogc(free_op1);
12424 		ZVAL_UNDEF(EX_VAR(opline->result.var));
12425 		HANDLE_EXCEPTION();
12426 	}
12427 
12428 	if (clone) {
12429 		if (clone->op_array.fn_flags & ZEND_ACC_PRIVATE) {
12430 			/* Ensure that if we're calling a private function, we're allowed to do so.
12431 			 */
12432 			scope = EX(func)->op_array.scope;
12433 			if (!zend_check_private(clone, scope, clone->common.function_name)) {
12434 				zend_throw_error(NULL, "Call to private %s::__clone() from context '%s'", ZSTR_VAL(clone->common.scope->name), scope ? ZSTR_VAL(scope->name) : "");
12435 				zval_ptr_dtor_nogc(free_op1);
12436 				ZVAL_UNDEF(EX_VAR(opline->result.var));
12437 				HANDLE_EXCEPTION();
12438 			}
12439 		} else if ((clone->common.fn_flags & ZEND_ACC_PROTECTED)) {
12440 			/* Ensure that if we're calling a protected function, we're allowed to do so.
12441 			 */
12442 			scope = EX(func)->op_array.scope;
12443 			if (UNEXPECTED(!zend_check_protected(zend_get_function_root_class(clone), scope))) {
12444 				zend_throw_error(NULL, "Call to protected %s::__clone() from context '%s'", ZSTR_VAL(clone->common.scope->name), scope ? ZSTR_VAL(scope->name) : "");
12445 				zval_ptr_dtor_nogc(free_op1);
12446 				ZVAL_UNDEF(EX_VAR(opline->result.var));
12447 				HANDLE_EXCEPTION();
12448 			}
12449 		}
12450 	}
12451 
12452 	ZVAL_OBJ(EX_VAR(opline->result.var), clone_call(obj));
12453 
12454 	zval_ptr_dtor_nogc(free_op1);
12455 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
12456 }
12457 
12458 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INCLUDE_OR_EVAL_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
12459 {
12460 	USE_OPLINE
12461 	zend_op_array *new_op_array;
12462 	zend_free_op free_op1;
12463 	zval *inc_filename;
12464 
12465 	SAVE_OPLINE();
12466 	inc_filename = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
12467 	new_op_array = zend_include_or_eval(inc_filename, opline->extended_value);
12468 	zval_ptr_dtor_nogc(free_op1);
12469 	if (UNEXPECTED(EG(exception) != NULL)) {
12470 		if (new_op_array != ZEND_FAKE_OP_ARRAY && new_op_array != NULL) {
12471 			destroy_op_array(new_op_array);
12472 			efree_size(new_op_array, sizeof(zend_op_array));
12473 		}
12474 		UNDEF_RESULT();
12475 		HANDLE_EXCEPTION();
12476 	} else if (new_op_array == ZEND_FAKE_OP_ARRAY) {
12477 		if (RETURN_VALUE_USED(opline)) {
12478 			ZVAL_TRUE(EX_VAR(opline->result.var));
12479 		}
12480 	} else if (EXPECTED(new_op_array != NULL)) {
12481 		zval *return_value = NULL;
12482 		zend_execute_data *call;
12483 
12484 		if (RETURN_VALUE_USED(opline)) {
12485 			return_value = EX_VAR(opline->result.var);
12486 			ZVAL_NULL(return_value);
12487 		}
12488 
12489 		new_op_array->scope = EX(func)->op_array.scope;
12490 
12491 		call = zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_CODE | ZEND_CALL_HAS_SYMBOL_TABLE,
12492 			(zend_function*)new_op_array, 0,
12493 			Z_TYPE(EX(This)) != IS_OBJECT ? Z_CE(EX(This)) : NULL,
12494 			Z_TYPE(EX(This)) == IS_OBJECT ? Z_OBJ(EX(This)) : NULL);
12495 
12496 		if (EX_CALL_INFO() & ZEND_CALL_HAS_SYMBOL_TABLE) {
12497 			call->symbol_table = EX(symbol_table);
12498 		} else {
12499 			call->symbol_table = zend_rebuild_symbol_table();
12500 		}
12501 
12502 		call->prev_execute_data = execute_data;
12503 		i_init_code_execute_data(call, new_op_array, return_value);
12504 		if (EXPECTED(zend_execute_ex == execute_ex)) {
12505 			ZEND_VM_ENTER();
12506 		} else {
12507 			ZEND_ADD_CALL_FLAG(call, ZEND_CALL_TOP);
12508 			zend_execute_ex(call);
12509 			zend_vm_stack_free_call_frame(call);
12510 		}
12511 
12512 		destroy_op_array(new_op_array);
12513 		efree_size(new_op_array, sizeof(zend_op_array));
12514 		if (UNEXPECTED(EG(exception) != NULL)) {
12515 			zend_rethrow_exception(execute_data);
12516 			UNDEF_RESULT();
12517 			HANDLE_EXCEPTION();
12518 		}
12519 	} else if (RETURN_VALUE_USED(opline)) {
12520 		ZVAL_FALSE(EX_VAR(opline->result.var));
12521 	}
12522 	ZEND_VM_NEXT_OPCODE();
12523 }
12524 
12525 static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_EXIT_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
12526 {
12527 	USE_OPLINE
12528 
12529 	SAVE_OPLINE();
12530 	if ((IS_TMP_VAR|IS_VAR) != IS_UNUSED) {
12531 		zend_free_op free_op1;
12532 		zval *ptr = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
12533 
12534 		do {
12535 			if (Z_TYPE_P(ptr) == IS_LONG) {
12536 				EG(exit_status) = Z_LVAL_P(ptr);
12537 			} else {
12538 				if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV)) && Z_ISREF_P(ptr)) {
12539 					ptr = Z_REFVAL_P(ptr);
12540 					if (Z_TYPE_P(ptr) == IS_LONG) {
12541 						EG(exit_status) = Z_LVAL_P(ptr);
12542 						break;
12543 					}
12544 				}
12545 				zend_print_zval(ptr, 0);
12546 			}
12547 		} while (0);
12548 		zval_ptr_dtor_nogc(free_op1);
12549 	}
12550 	zend_bailout();
12551 	ZEND_VM_NEXT_OPCODE(); /* Never reached */
12552 }
12553 
12554 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_COALESCE_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
12555 {
12556 	USE_OPLINE
12557 	zend_free_op free_op1;
12558 	zval *value;
12559 	zval *ref = NULL;
12560 
12561 	SAVE_OPLINE();
12562 	value = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
12563 
12564 	if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
12565 		if ((IS_TMP_VAR|IS_VAR) & IS_VAR) {
12566 			ref = value;
12567 		}
12568 		value = Z_REFVAL_P(value);
12569 	}
12570 
12571 	if (Z_TYPE_P(value) > IS_NULL) {
12572 		zval *result = EX_VAR(opline->result.var);
12573 		ZVAL_COPY_VALUE(result, value);
12574 		if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
12575 			if (UNEXPECTED(Z_OPT_REFCOUNTED_P(result))) Z_ADDREF_P(result);
12576 		} else if ((IS_TMP_VAR|IS_VAR) == IS_CV) {
12577 			if (Z_OPT_REFCOUNTED_P(result)) Z_ADDREF_P(result);
12578 		} else if (((IS_TMP_VAR|IS_VAR) & IS_VAR) && ref) {
12579 			zend_reference *r = Z_REF_P(ref);
12580 
12581 			if (UNEXPECTED(GC_DELREF(r) == 0)) {
12582 				efree_size(r, sizeof(zend_reference));
12583 			} else if (Z_OPT_REFCOUNTED_P(result)) {
12584 				Z_ADDREF_P(result);
12585 			}
12586 		}
12587 		ZEND_VM_JMP_EX(OP_JMP_ADDR(opline, opline->op2), 0);
12588 	}
12589 
12590 	zval_ptr_dtor_nogc(free_op1);
12591 	ZEND_VM_NEXT_OPCODE();
12592 }
12593 
12594 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_STRLEN_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
12595 {
12596 	USE_OPLINE
12597 	zval *value;
12598 	zend_free_op free_op1;
12599 
12600 	value = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
12601 	if (EXPECTED(Z_TYPE_P(value) == IS_STRING)) {
12602 		ZVAL_LONG(EX_VAR(opline->result.var), Z_STRLEN_P(value));
12603 		zval_ptr_dtor_nogc(free_op1);
12604 		ZEND_VM_NEXT_OPCODE();
12605 	} else {
12606 		zend_bool strict;
12607 
12608 		if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV)) && Z_TYPE_P(value) == IS_REFERENCE) {
12609 			value = Z_REFVAL_P(value);
12610 			if (EXPECTED(Z_TYPE_P(value) == IS_STRING)) {
12611 				ZVAL_LONG(EX_VAR(opline->result.var), Z_STRLEN_P(value));
12612 				zval_ptr_dtor_nogc(free_op1);
12613 				ZEND_VM_NEXT_OPCODE();
12614 			}
12615 		}
12616 
12617 		SAVE_OPLINE();
12618 		if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
12619 			value = GET_OP1_UNDEF_CV(value, BP_VAR_R);
12620 		}
12621 		strict = EX_USES_STRICT_TYPES();
12622 		do {
12623 			if (EXPECTED(!strict)) {
12624 				zend_string *str;
12625 				zval tmp;
12626 
12627 				ZVAL_COPY(&tmp, value);
12628 				if (zend_parse_arg_str_weak(&tmp, &str)) {
12629 					ZVAL_LONG(EX_VAR(opline->result.var), ZSTR_LEN(str));
12630 					zval_ptr_dtor(&tmp);
12631 					break;
12632 				}
12633 				zval_ptr_dtor(&tmp);
12634 			}
12635 			zend_internal_type_error(strict, "strlen() expects parameter 1 to be string, %s given", zend_get_type_by_const(Z_TYPE_P(value)));
12636 			ZVAL_NULL(EX_VAR(opline->result.var));
12637 		} while (0);
12638 	}
12639 	zval_ptr_dtor_nogc(free_op1);
12640 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
12641 }
12642 
12643 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_TYPE_CHECK_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
12644 {
12645 	USE_OPLINE
12646 	zval *value;
12647 	int result = 0;
12648 	zend_free_op free_op1;
12649 
12650 	value = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
12651 	if ((opline->extended_value >> (uint32_t)Z_TYPE_P(value)) & 1) {
12652 type_check_resource:
12653 		if (EXPECTED(Z_TYPE_P(value) != IS_RESOURCE)
12654 		 || EXPECTED(NULL != zend_rsrc_list_get_rsrc_type(Z_RES_P(value)))) {
12655 			result = 1;
12656 		}
12657 	} else if (((IS_TMP_VAR|IS_VAR) & (IS_CV|IS_VAR)) && Z_ISREF_P(value)) {
12658 		value = Z_REFVAL_P(value);
12659 		if ((opline->extended_value >> (uint32_t)Z_TYPE_P(value)) & 1) {
12660 			goto type_check_resource;
12661 		}
12662 	} else if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
12663 		result = ((1 << IS_NULL) & opline->extended_value) != 0;
12664 		SAVE_OPLINE();
12665 		GET_OP1_UNDEF_CV(value, BP_VAR_R);
12666 		ZEND_VM_SMART_BRANCH(result, 1);
12667 		ZVAL_BOOL(EX_VAR(opline->result.var), result);
12668 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
12669 	}
12670 	if ((IS_TMP_VAR|IS_VAR) & (IS_TMP_VAR|IS_VAR)) {
12671 		SAVE_OPLINE();
12672 		zval_ptr_dtor_nogc(free_op1);
12673 		ZEND_VM_SMART_BRANCH(result, 1);
12674 		ZVAL_BOOL(EX_VAR(opline->result.var), result);
12675 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
12676 	} else {
12677 		ZEND_VM_SMART_BRANCH(result, 0);
12678 		ZVAL_BOOL(EX_VAR(opline->result.var), result);
12679 		ZEND_VM_NEXT_OPCODE();
12680 	}
12681 }
12682 
12683 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ADD_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
12684 {
12685 	USE_OPLINE
12686 	zend_free_op free_op1;
12687 	zval *op1, *op2, *result;
12688 
12689 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
12690 	op2 = RT_CONSTANT(opline, opline->op2);
12691 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
12692 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
12693 			result = EX_VAR(opline->result.var);
12694 			fast_long_add_function(result, op1, op2);
12695 			ZEND_VM_NEXT_OPCODE();
12696 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
12697 			result = EX_VAR(opline->result.var);
12698 			ZVAL_DOUBLE(result, ((double)Z_LVAL_P(op1)) + Z_DVAL_P(op2));
12699 			ZEND_VM_NEXT_OPCODE();
12700 		}
12701 	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
12702 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
12703 			result = EX_VAR(opline->result.var);
12704 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) + Z_DVAL_P(op2));
12705 			ZEND_VM_NEXT_OPCODE();
12706 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
12707 			result = EX_VAR(opline->result.var);
12708 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) + ((double)Z_LVAL_P(op2)));
12709 			ZEND_VM_NEXT_OPCODE();
12710 		}
12711 	}
12712 
12713 	SAVE_OPLINE();
12714 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
12715 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
12716 	}
12717 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
12718 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
12719 	}
12720 	add_function(EX_VAR(opline->result.var), op1, op2);
12721 	zval_ptr_dtor_nogc(free_op1);
12722 
12723 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
12724 }
12725 
12726 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SUB_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
12727 {
12728 	USE_OPLINE
12729 	zend_free_op free_op1;
12730 	zval *op1, *op2, *result;
12731 
12732 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
12733 	op2 = RT_CONSTANT(opline, opline->op2);
12734 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
12735 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
12736 			result = EX_VAR(opline->result.var);
12737 			fast_long_sub_function(result, op1, op2);
12738 			ZEND_VM_NEXT_OPCODE();
12739 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
12740 			result = EX_VAR(opline->result.var);
12741 			ZVAL_DOUBLE(result, ((double)Z_LVAL_P(op1)) - Z_DVAL_P(op2));
12742 			ZEND_VM_NEXT_OPCODE();
12743 		}
12744 	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
12745 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
12746 			result = EX_VAR(opline->result.var);
12747 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) - Z_DVAL_P(op2));
12748 			ZEND_VM_NEXT_OPCODE();
12749 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
12750 			result = EX_VAR(opline->result.var);
12751 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) - ((double)Z_LVAL_P(op2)));
12752 			ZEND_VM_NEXT_OPCODE();
12753 		}
12754 	}
12755 
12756 	SAVE_OPLINE();
12757 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
12758 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
12759 	}
12760 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
12761 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
12762 	}
12763 	sub_function(EX_VAR(opline->result.var), op1, op2);
12764 	zval_ptr_dtor_nogc(free_op1);
12765 
12766 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
12767 }
12768 
12769 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_MUL_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
12770 {
12771 	USE_OPLINE
12772 	zend_free_op free_op1;
12773 	zval *op1, *op2, *result;
12774 
12775 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
12776 	op2 = RT_CONSTANT(opline, opline->op2);
12777 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
12778 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
12779 			zend_long overflow;
12780 
12781 			result = EX_VAR(opline->result.var);
12782 			ZEND_SIGNED_MULTIPLY_LONG(Z_LVAL_P(op1), Z_LVAL_P(op2), Z_LVAL_P(result), Z_DVAL_P(result), overflow);
12783 			Z_TYPE_INFO_P(result) = overflow ? IS_DOUBLE : IS_LONG;
12784 			ZEND_VM_NEXT_OPCODE();
12785 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
12786 			result = EX_VAR(opline->result.var);
12787 			ZVAL_DOUBLE(result, ((double)Z_LVAL_P(op1)) * Z_DVAL_P(op2));
12788 			ZEND_VM_NEXT_OPCODE();
12789 		}
12790 	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
12791 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
12792 			result = EX_VAR(opline->result.var);
12793 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) * Z_DVAL_P(op2));
12794 			ZEND_VM_NEXT_OPCODE();
12795 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
12796 			result = EX_VAR(opline->result.var);
12797 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) * ((double)Z_LVAL_P(op2)));
12798 			ZEND_VM_NEXT_OPCODE();
12799 		}
12800 	}
12801 
12802 	SAVE_OPLINE();
12803 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
12804 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
12805 	}
12806 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
12807 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
12808 	}
12809 	mul_function(EX_VAR(opline->result.var), op1, op2);
12810 	zval_ptr_dtor_nogc(free_op1);
12811 
12812 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
12813 }
12814 
12815 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_DIV_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
12816 {
12817 	USE_OPLINE
12818 	zend_free_op free_op1;
12819 	zval *op1, *op2;
12820 
12821 	SAVE_OPLINE();
12822 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
12823 	op2 = RT_CONSTANT(opline, opline->op2);
12824 	fast_div_function(EX_VAR(opline->result.var), op1, op2);
12825 	zval_ptr_dtor_nogc(free_op1);
12826 
12827 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
12828 }
12829 
12830 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_MOD_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
12831 {
12832 	USE_OPLINE
12833 	zend_free_op free_op1;
12834 	zval *op1, *op2, *result;
12835 
12836 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
12837 	op2 = RT_CONSTANT(opline, opline->op2);
12838 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
12839 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
12840 			result = EX_VAR(opline->result.var);
12841 			if (UNEXPECTED(Z_LVAL_P(op2) == 0)) {
12842 				ZEND_VM_TAIL_CALL(zend_mod_by_zero_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
12843 			} else if (UNEXPECTED(Z_LVAL_P(op2) == -1)) {
12844 				/* Prevent overflow error/crash if op1==ZEND_LONG_MIN */
12845 				ZVAL_LONG(result, 0);
12846 			} else {
12847 				ZVAL_LONG(result, Z_LVAL_P(op1) % Z_LVAL_P(op2));
12848 			}
12849 			ZEND_VM_NEXT_OPCODE();
12850 		}
12851 	}
12852 
12853 	SAVE_OPLINE();
12854 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
12855 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
12856 	}
12857 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
12858 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
12859 	}
12860 	mod_function(EX_VAR(opline->result.var), op1, op2);
12861 	zval_ptr_dtor_nogc(free_op1);
12862 
12863 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
12864 }
12865 
12866 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SL_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
12867 {
12868 	USE_OPLINE
12869 	zend_free_op free_op1;
12870 	zval *op1, *op2;
12871 
12872 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
12873 	op2 = RT_CONSTANT(opline, opline->op2);
12874 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)
12875 			&& EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)
12876 			&& EXPECTED((zend_ulong)Z_LVAL_P(op2) < SIZEOF_ZEND_LONG * 8)) {
12877 		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(op1) << Z_LVAL_P(op2));
12878 		ZEND_VM_NEXT_OPCODE();
12879 	}
12880 
12881 	SAVE_OPLINE();
12882 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
12883 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
12884 	}
12885 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
12886 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
12887 	}
12888 	shift_left_function(EX_VAR(opline->result.var), op1, op2);
12889 	zval_ptr_dtor_nogc(free_op1);
12890 
12891 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
12892 }
12893 
12894 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SR_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
12895 {
12896 	USE_OPLINE
12897 	zend_free_op free_op1;
12898 	zval *op1, *op2;
12899 
12900 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
12901 	op2 = RT_CONSTANT(opline, opline->op2);
12902 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)
12903 			&& EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)
12904 			&& EXPECTED((zend_ulong)Z_LVAL_P(op2) < SIZEOF_ZEND_LONG * 8)) {
12905 		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(op1) >> Z_LVAL_P(op2));
12906 		ZEND_VM_NEXT_OPCODE();
12907 	}
12908 
12909 	SAVE_OPLINE();
12910 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
12911 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
12912 	}
12913 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
12914 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
12915 	}
12916 	shift_right_function(EX_VAR(opline->result.var), op1, op2);
12917 	zval_ptr_dtor_nogc(free_op1);
12918 
12919 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
12920 }
12921 
12922 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_POW_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
12923 {
12924 	USE_OPLINE
12925 	zend_free_op free_op1;
12926 	zval *op1, *op2;
12927 
12928 	SAVE_OPLINE();
12929 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
12930 	op2 = RT_CONSTANT(opline, opline->op2);
12931 	pow_function(EX_VAR(opline->result.var), op1, op2);
12932 	zval_ptr_dtor_nogc(free_op1);
12933 
12934 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
12935 }
12936 
12937 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_CONCAT_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
12938 {
12939 	USE_OPLINE
12940 	zend_free_op free_op1;
12941 	zval *op1, *op2;
12942 
12943 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
12944 	op2 = RT_CONSTANT(opline, opline->op2);
12945 
12946 	if (((IS_TMP_VAR|IS_VAR) == IS_CONST || EXPECTED(Z_TYPE_P(op1) == IS_STRING)) &&
12947 	    (IS_CONST == IS_CONST || EXPECTED(Z_TYPE_P(op2) == IS_STRING))) {
12948 		zend_string *op1_str = Z_STR_P(op1);
12949 		zend_string *op2_str = Z_STR_P(op2);
12950 		zend_string *str;
12951 
12952 		if ((IS_TMP_VAR|IS_VAR) != IS_CONST && UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
12953 			if (IS_CONST == IS_CONST || IS_CONST == IS_CV) {
12954 				ZVAL_STR_COPY(EX_VAR(opline->result.var), op2_str);
12955 			} else {
12956 				ZVAL_STR(EX_VAR(opline->result.var), op2_str);
12957 			}
12958 			zval_ptr_dtor_nogc(free_op1);
12959 		} else if (IS_CONST != IS_CONST && UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
12960 			if ((IS_TMP_VAR|IS_VAR) == IS_CONST || (IS_TMP_VAR|IS_VAR) == IS_CV) {
12961 				ZVAL_STR_COPY(EX_VAR(opline->result.var), op1_str);
12962 			} else {
12963 				ZVAL_STR(EX_VAR(opline->result.var), op1_str);
12964 			}
12965 
12966 		} else if ((IS_TMP_VAR|IS_VAR) != IS_CONST && (IS_TMP_VAR|IS_VAR) != IS_CV &&
12967 		    !ZSTR_IS_INTERNED(op1_str) && GC_REFCOUNT(op1_str) == 1) {
12968 		    size_t len = ZSTR_LEN(op1_str);
12969 
12970 			str = zend_string_extend(op1_str, len + ZSTR_LEN(op2_str), 0);
12971 			memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
12972 			ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
12973 
12974 		} else {
12975 			str = zend_string_alloc(ZSTR_LEN(op1_str) + ZSTR_LEN(op2_str), 0);
12976 			memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
12977 			memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
12978 			ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
12979 			zval_ptr_dtor_nogc(free_op1);
12980 
12981 		}
12982 		ZEND_VM_NEXT_OPCODE();
12983 	} else {
12984 		SAVE_OPLINE();
12985 
12986 		if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
12987 			op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
12988 		}
12989 		if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
12990 			op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
12991 		}
12992 		concat_function(EX_VAR(opline->result.var), op1, op2);
12993 		zval_ptr_dtor_nogc(free_op1);
12994 
12995 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
12996 	}
12997 }
12998 
12999 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_EQUAL_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
13000 {
13001 	USE_OPLINE
13002 	zend_free_op free_op1;
13003 	zval *op1, *op2, *result;
13004 
13005 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
13006 	op2 = RT_CONSTANT(opline, opline->op2);
13007 	do {
13008 		int result;
13009 
13010 		if (EXPECTED(Z_TYPE_P(op1) == IS_LONG)) {
13011 			if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
13012 				result = (Z_LVAL_P(op1) == Z_LVAL_P(op2));
13013 			} else if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
13014 				result = ((double)Z_LVAL_P(op1) == Z_DVAL_P(op2));
13015 			} else {
13016 				break;
13017 			}
13018 		} else if (EXPECTED(Z_TYPE_P(op1) == IS_DOUBLE)) {
13019 			if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
13020 				result = (Z_DVAL_P(op1) == Z_DVAL_P(op2));
13021 			} else if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
13022 				result = (Z_DVAL_P(op1) == ((double)Z_LVAL_P(op2)));
13023 			} else {
13024 				break;
13025 			}
13026 		} else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
13027 			if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
13028 				result = zend_fast_equal_strings(Z_STR_P(op1), Z_STR_P(op2));
13029 				zval_ptr_dtor_nogc(free_op1);
13030 
13031 			} else {
13032 				break;
13033 			}
13034 		} else {
13035 			break;
13036 		}
13037 		ZEND_VM_SMART_BRANCH(result, 0);
13038 		ZVAL_BOOL(EX_VAR(opline->result.var), result);
13039 		ZEND_VM_NEXT_OPCODE();
13040 	} while (0);
13041 
13042 	SAVE_OPLINE();
13043 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
13044 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
13045 	}
13046 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
13047 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
13048 	}
13049 	result = EX_VAR(opline->result.var);
13050 	compare_function(result, op1, op2);
13051 	ZVAL_BOOL(result, Z_LVAL_P(result) == 0);
13052 	zval_ptr_dtor_nogc(free_op1);
13053 
13054 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
13055 }
13056 
13057 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_NOT_EQUAL_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
13058 {
13059 	USE_OPLINE
13060 	zend_free_op free_op1;
13061 	zval *op1, *op2, *result;
13062 
13063 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
13064 	op2 = RT_CONSTANT(opline, opline->op2);
13065 	do {
13066 		int result;
13067 
13068 		if (EXPECTED(Z_TYPE_P(op1) == IS_LONG)) {
13069 			if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
13070 				result = (Z_LVAL_P(op1) != Z_LVAL_P(op2));
13071 			} else if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
13072 				result = ((double)Z_LVAL_P(op1) != Z_DVAL_P(op2));
13073 			} else {
13074 				break;
13075 			}
13076 		} else if (EXPECTED(Z_TYPE_P(op1) == IS_DOUBLE)) {
13077 			if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
13078 				result = (Z_DVAL_P(op1) != Z_DVAL_P(op2));
13079 			} else if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
13080 				result = (Z_DVAL_P(op1) != ((double)Z_LVAL_P(op2)));
13081 			} else {
13082 				break;
13083 			}
13084 		} else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
13085 			if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
13086 				result = !zend_fast_equal_strings(Z_STR_P(op1), Z_STR_P(op2));
13087 				zval_ptr_dtor_nogc(free_op1);
13088 
13089 			} else {
13090 				break;
13091 			}
13092 		} else {
13093 			break;
13094 		}
13095 		ZEND_VM_SMART_BRANCH(result, 0);
13096 		ZVAL_BOOL(EX_VAR(opline->result.var), result);
13097 		ZEND_VM_NEXT_OPCODE();
13098 	} while (0);
13099 
13100 	SAVE_OPLINE();
13101 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
13102 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
13103 	}
13104 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
13105 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
13106 	}
13107 	result = EX_VAR(opline->result.var);
13108 	compare_function(result, op1, op2);
13109 	ZVAL_BOOL(result, Z_LVAL_P(result) != 0);
13110 	zval_ptr_dtor_nogc(free_op1);
13111 
13112 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
13113 }
13114 
13115 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
13116 {
13117 	USE_OPLINE
13118 	zend_free_op free_op1;
13119 	zval *op1, *op2, *result;
13120 
13121 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
13122 	op2 = RT_CONSTANT(opline, opline->op2);
13123 	do {
13124 		int result;
13125 
13126 		if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
13127 			if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
13128 				result = (Z_LVAL_P(op1) < Z_LVAL_P(op2));
13129 			} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
13130 				result = ((double)Z_LVAL_P(op1) < Z_DVAL_P(op2));
13131 			} else {
13132 				break;
13133 			}
13134 		} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
13135 			if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
13136 				result = (Z_DVAL_P(op1) < Z_DVAL_P(op2));
13137 			} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
13138 				result = (Z_DVAL_P(op1) < ((double)Z_LVAL_P(op2)));
13139 			} else {
13140 				break;
13141 			}
13142 		} else {
13143 			break;
13144 		}
13145 		ZEND_VM_SMART_BRANCH(result, 0);
13146 		ZVAL_BOOL(EX_VAR(opline->result.var), result);
13147 		ZEND_VM_NEXT_OPCODE();
13148 	} while (0);
13149 
13150 	SAVE_OPLINE();
13151 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
13152 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
13153 	}
13154 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
13155 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
13156 	}
13157 	result = EX_VAR(opline->result.var);
13158 	compare_function(result, op1, op2);
13159 	ZVAL_BOOL(result, Z_LVAL_P(result) < 0);
13160 	zval_ptr_dtor_nogc(free_op1);
13161 
13162 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
13163 }
13164 
13165 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
13166 {
13167 	USE_OPLINE
13168 	zend_free_op free_op1;
13169 	zval *op1, *op2, *result;
13170 
13171 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
13172 	op2 = RT_CONSTANT(opline, opline->op2);
13173 	do {
13174 		int result;
13175 
13176 		if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
13177 			if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
13178 				result = (Z_LVAL_P(op1) <= Z_LVAL_P(op2));
13179 			} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
13180 				result = ((double)Z_LVAL_P(op1) <= Z_DVAL_P(op2));
13181 			} else {
13182 				break;
13183 			}
13184 		} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
13185 			if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
13186 				result = (Z_DVAL_P(op1) <= Z_DVAL_P(op2));
13187 			} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
13188 				result = (Z_DVAL_P(op1) <= ((double)Z_LVAL_P(op2)));
13189 			} else {
13190 				break;
13191 			}
13192 		} else {
13193 			break;
13194 		}
13195 		ZEND_VM_SMART_BRANCH(result, 0);
13196 		ZVAL_BOOL(EX_VAR(opline->result.var), result);
13197 		ZEND_VM_NEXT_OPCODE();
13198 	} while (0);
13199 
13200 	SAVE_OPLINE();
13201 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
13202 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
13203 	}
13204 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
13205 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
13206 	}
13207 	result = EX_VAR(opline->result.var);
13208 	compare_function(result, op1, op2);
13209 	ZVAL_BOOL(result, Z_LVAL_P(result) <= 0);
13210 	zval_ptr_dtor_nogc(free_op1);
13211 
13212 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
13213 }
13214 
13215 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SPACESHIP_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
13216 {
13217 	USE_OPLINE
13218 	zend_free_op free_op1;
13219 	zval *op1, *op2;
13220 
13221 	SAVE_OPLINE();
13222 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
13223 	op2 = RT_CONSTANT(opline, opline->op2);
13224 	compare_function(EX_VAR(opline->result.var), op1, op2);
13225 	zval_ptr_dtor_nogc(free_op1);
13226 
13227 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
13228 }
13229 
13230 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BW_OR_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
13231 {
13232 	USE_OPLINE
13233 	zend_free_op free_op1;
13234 	zval *op1, *op2;
13235 
13236 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
13237 	op2 = RT_CONSTANT(opline, opline->op2);
13238 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)
13239 			&& EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
13240 		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(op1) | Z_LVAL_P(op2));
13241 		ZEND_VM_NEXT_OPCODE();
13242 	}
13243 
13244 	SAVE_OPLINE();
13245 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
13246 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
13247 	}
13248 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
13249 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
13250 	}
13251 	bitwise_or_function(EX_VAR(opline->result.var), op1, op2);
13252 	zval_ptr_dtor_nogc(free_op1);
13253 
13254 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
13255 }
13256 
13257 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BW_AND_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
13258 {
13259 	USE_OPLINE
13260 	zend_free_op free_op1;
13261 	zval *op1, *op2;
13262 
13263 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
13264 	op2 = RT_CONSTANT(opline, opline->op2);
13265 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)
13266 			&& EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
13267 		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(op1) & Z_LVAL_P(op2));
13268 		ZEND_VM_NEXT_OPCODE();
13269 	}
13270 
13271 	SAVE_OPLINE();
13272 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
13273 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
13274 	}
13275 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
13276 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
13277 	}
13278 	bitwise_and_function(EX_VAR(opline->result.var), op1, op2);
13279 	zval_ptr_dtor_nogc(free_op1);
13280 
13281 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
13282 }
13283 
13284 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BW_XOR_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
13285 {
13286 	USE_OPLINE
13287 	zend_free_op free_op1;
13288 	zval *op1, *op2;
13289 
13290 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
13291 	op2 = RT_CONSTANT(opline, opline->op2);
13292 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)
13293 			&& EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
13294 		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(op1) ^ Z_LVAL_P(op2));
13295 		ZEND_VM_NEXT_OPCODE();
13296 	}
13297 
13298 	SAVE_OPLINE();
13299 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
13300 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
13301 	}
13302 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
13303 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
13304 	}
13305 	bitwise_xor_function(EX_VAR(opline->result.var), op1, op2);
13306 	zval_ptr_dtor_nogc(free_op1);
13307 
13308 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
13309 }
13310 
13311 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BOOL_XOR_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
13312 {
13313 	USE_OPLINE
13314 	zend_free_op free_op1;
13315 	zval *op1, *op2;
13316 
13317 	SAVE_OPLINE();
13318 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
13319 	op2 = RT_CONSTANT(opline, opline->op2);
13320 	boolean_xor_function(EX_VAR(opline->result.var), op1, op2);
13321 	zval_ptr_dtor_nogc(free_op1);
13322 
13323 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
13324 }
13325 
13326 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_fetch_static_prop_helper_SPEC_TMPVAR_CONST(int type ZEND_OPCODE_HANDLER_ARGS_DC)
13327 {
13328 	USE_OPLINE
13329 	zend_free_op free_op1;
13330 	zval *varname;
13331 	zval *retval;
13332 	zend_string *name, *tmp_name;
13333 	zend_class_entry *ce;
13334 
13335 	SAVE_OPLINE();
13336 
13337 	do {
13338 		if (IS_CONST == IS_CONST) {
13339 			if ((IS_TMP_VAR|IS_VAR) == IS_CONST && EXPECTED((ce = CACHED_PTR(opline->extended_value)) != NULL)) {
13340 				retval = CACHED_PTR(opline->extended_value + sizeof(void*));
13341 				break;
13342 			} else {
13343 				zval *class_name = RT_CONSTANT(opline, opline->op2);
13344 
13345 				if (UNEXPECTED((ce = CACHED_PTR(opline->extended_value)) == NULL)) {
13346 					ce = zend_fetch_class_by_name(Z_STR_P(class_name), class_name + 1, ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
13347 					if (UNEXPECTED(ce == NULL)) {
13348 						zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
13349 						retval = NULL;
13350 						break;
13351 					}
13352 					if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
13353 						CACHE_PTR(opline->extended_value, ce);
13354 					}
13355 				}
13356 			}
13357 		} else {
13358 			if (IS_CONST == IS_UNUSED) {
13359 				ce = zend_fetch_class(NULL, opline->op2.num);
13360 				if (UNEXPECTED(ce == NULL)) {
13361 					zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
13362 					retval = NULL;
13363 					break;
13364 				}
13365 			} else {
13366 				ce = Z_CE_P(EX_VAR(opline->op2.var));
13367 			}
13368 			if ((IS_TMP_VAR|IS_VAR) == IS_CONST &&
13369 			    EXPECTED(CACHED_PTR(opline->extended_value) == ce)) {
13370 				retval = CACHED_PTR(opline->extended_value + sizeof(void*));
13371 				break;
13372 			}
13373 		}
13374 
13375 		varname = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
13376 		if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
13377 			name = Z_STR_P(varname);
13378 		} else if (EXPECTED(Z_TYPE_P(varname) == IS_STRING)) {
13379 			name = Z_STR_P(varname);
13380 			tmp_name = NULL;
13381 		} else {
13382 			if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(varname) == IS_UNDEF)) {
13383 				zval_undefined_cv(EX(opline)->op1.var EXECUTE_DATA_CC);
13384 			}
13385 			name = zval_get_tmp_string(varname, &tmp_name);
13386 		}
13387 
13388 		retval = zend_std_get_static_property(ce, name, type == BP_VAR_IS);
13389 
13390 		if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
13391 			zend_tmp_string_release(tmp_name);
13392 		}
13393 
13394 		if ((IS_TMP_VAR|IS_VAR) == IS_CONST && EXPECTED(retval)) {
13395 			CACHE_POLYMORPHIC_PTR(opline->extended_value, ce, retval);
13396 		}
13397 
13398 		zval_ptr_dtor_nogc(free_op1);
13399 	} while (0);
13400 
13401 	if (UNEXPECTED(retval == NULL)) {
13402 		if (EG(exception)) {
13403 			ZVAL_UNDEF(EX_VAR(opline->result.var));
13404 			HANDLE_EXCEPTION();
13405 		} else {
13406 			ZEND_ASSERT(type == BP_VAR_IS);
13407 			retval = &EG(uninitialized_zval);
13408 		}
13409 	}
13410 
13411 	if (type == BP_VAR_R || type == BP_VAR_IS) {
13412 		ZVAL_COPY_DEREF(EX_VAR(opline->result.var), retval);
13413 	} else {
13414 		ZVAL_INDIRECT(EX_VAR(opline->result.var), retval);
13415 	}
13416 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
13417 }
13418 
13419 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_R_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
13420 {
13421 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_TMPVAR_CONST(BP_VAR_R ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
13422 }
13423 
13424 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_W_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
13425 {
13426 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_TMPVAR_CONST(BP_VAR_W ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
13427 }
13428 
13429 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_RW_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
13430 {
13431 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_TMPVAR_CONST(BP_VAR_RW ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
13432 }
13433 
13434 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
13435 {
13436 	int fetch_type =
13437 		(UNEXPECTED(ZEND_CALL_INFO(EX(call)) & ZEND_CALL_SEND_ARG_BY_REF)) ?
13438 			BP_VAR_W : BP_VAR_R;
13439 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_TMPVAR_CONST(fetch_type ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
13440 }
13441 
13442 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_UNSET_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
13443 {
13444 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_TMPVAR_CONST(BP_VAR_UNSET ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
13445 }
13446 
13447 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_IS_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
13448 {
13449 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_TMPVAR_CONST(BP_VAR_IS ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
13450 }
13451 
13452 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_R_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
13453 {
13454 	USE_OPLINE
13455 	zend_free_op free_op1;
13456 	zval *container, *dim, *value, *result;
13457 
13458 	SAVE_OPLINE();
13459 	container = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
13460 	dim = RT_CONSTANT(opline, opline->op2);
13461 	if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
13462 		if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
13463 fetch_dim_r_array:
13464 			value = zend_fetch_dimension_address_inner(Z_ARRVAL_P(container), dim, IS_CONST, BP_VAR_R EXECUTE_DATA_CC);
13465 			result = EX_VAR(opline->result.var);
13466 			ZVAL_COPY_DEREF(result, value);
13467 		} else if (EXPECTED(Z_TYPE_P(container) == IS_REFERENCE)) {
13468 			container = Z_REFVAL_P(container);
13469 			if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
13470 				goto fetch_dim_r_array;
13471 			} else {
13472 				goto fetch_dim_r_slow;
13473 			}
13474 		} else {
13475 fetch_dim_r_slow:
13476 			if (IS_CONST == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
13477 				dim++;
13478 			}
13479 			zend_fetch_dimension_address_read_R_slow(container, dim OPLINE_CC EXECUTE_DATA_CC);
13480 		}
13481 	} else {
13482 		zend_fetch_dimension_address_read_R(container, dim, IS_CONST OPLINE_CC EXECUTE_DATA_CC);
13483 	}
13484 
13485 	zval_ptr_dtor_nogc(free_op1);
13486 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
13487 }
13488 
13489 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_IS_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
13490 {
13491 	USE_OPLINE
13492 	zend_free_op free_op1;
13493 	zval *container;
13494 
13495 	SAVE_OPLINE();
13496 	container = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
13497 	zend_fetch_dimension_address_read_IS(container, RT_CONSTANT(opline, opline->op2), IS_CONST OPLINE_CC EXECUTE_DATA_CC);
13498 
13499 	zval_ptr_dtor_nogc(free_op1);
13500 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
13501 }
13502 
13503 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_R_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
13504 {
13505 	USE_OPLINE
13506 	zend_free_op free_op1;
13507 	zval *container;
13508 
13509 	zval *offset;
13510 	void **cache_slot = NULL;
13511 
13512 	SAVE_OPLINE();
13513 	container = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
13514 
13515 	if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
13516 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
13517 	}
13518 
13519 	offset = RT_CONSTANT(opline, opline->op2);
13520 
13521 	if ((IS_TMP_VAR|IS_VAR) == IS_CONST ||
13522 	    ((IS_TMP_VAR|IS_VAR) != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
13523 	    do {
13524 			if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
13525 				container = Z_REFVAL_P(container);
13526 				if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
13527 					break;
13528 				}
13529 			}
13530 			if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
13531 				GET_OP1_UNDEF_CV(container, BP_VAR_R);
13532 			}
13533 			if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(offset) == IS_UNDEF)) {
13534 				GET_OP2_UNDEF_CV(offset, BP_VAR_R);
13535 			}
13536 			goto fetch_obj_r_no_object;
13537 		} while (0);
13538 	}
13539 
13540 	/* here we are sure we are dealing with an object */
13541 	do {
13542 		zend_object *zobj = Z_OBJ_P(container);
13543 		zval *retval;
13544 
13545 		if (IS_CONST == IS_CONST) {
13546 			cache_slot = CACHE_ADDR(opline->extended_value);
13547 
13548 			if (EXPECTED(zobj->ce == CACHED_PTR_EX(cache_slot))) {
13549 				uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
13550 
13551 				if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
13552 					retval = OBJ_PROP(zobj, prop_offset);
13553 					if (EXPECTED(Z_TYPE_INFO_P(retval) != IS_UNDEF)) {
13554 						ZVAL_COPY_DEREF(EX_VAR(opline->result.var), retval);
13555 						break;
13556 					}
13557 				} else if (EXPECTED(zobj->properties != NULL)) {
13558 					if (!IS_UNKNOWN_DYNAMIC_PROPERTY_OFFSET(prop_offset)) {
13559 						uintptr_t idx = ZEND_DECODE_DYN_PROP_OFFSET(prop_offset);
13560 
13561 						if (EXPECTED(idx < zobj->properties->nNumUsed * sizeof(Bucket))) {
13562 							Bucket *p = (Bucket*)((char*)zobj->properties->arData + idx);
13563 
13564 							if (EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
13565 						        (EXPECTED(p->key == Z_STR_P(offset)) ||
13566 						         (EXPECTED(p->h == ZSTR_H(Z_STR_P(offset))) &&
13567 						          EXPECTED(p->key != NULL) &&
13568 						          EXPECTED(zend_string_equal_content(p->key, Z_STR_P(offset)))))) {
13569 								ZVAL_COPY_DEREF(EX_VAR(opline->result.var), &p->val);
13570 								break;
13571 							}
13572 						}
13573 						CACHE_PTR_EX(cache_slot + 1, (void*)ZEND_DYNAMIC_PROPERTY_OFFSET);
13574 					}
13575 					retval = zend_hash_find_ex(zobj->properties, Z_STR_P(offset), 1);
13576 					if (EXPECTED(retval)) {
13577 						uintptr_t idx = (char*)retval - (char*)zobj->properties->arData;
13578 						CACHE_PTR_EX(cache_slot + 1, (void*)ZEND_ENCODE_DYN_PROP_OFFSET(idx));
13579 						ZVAL_COPY_DEREF(EX_VAR(opline->result.var), retval);
13580 						break;
13581 					}
13582 				}
13583 			}
13584 		} else if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(offset) == IS_UNDEF)) {
13585 			GET_OP2_UNDEF_CV(offset, BP_VAR_R);
13586 		}
13587 
13588 		if (UNEXPECTED(zobj->handlers->read_property == NULL)) {
13589 fetch_obj_r_no_object:
13590 			zend_wrong_property_read(offset);
13591 			ZVAL_NULL(EX_VAR(opline->result.var));
13592 		} else {
13593 			retval = zobj->handlers->read_property(container, offset, BP_VAR_R, cache_slot, EX_VAR(opline->result.var));
13594 
13595 			if (retval != EX_VAR(opline->result.var)) {
13596 				ZVAL_COPY_DEREF(EX_VAR(opline->result.var), retval);
13597 			} else if (UNEXPECTED(Z_ISREF_P(retval))) {
13598 				zend_unwrap_reference(retval);
13599 			}
13600 		}
13601 	} while (0);
13602 
13603 	zval_ptr_dtor_nogc(free_op1);
13604 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
13605 }
13606 
13607 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
13608 {
13609 	USE_OPLINE
13610 	zend_free_op free_op1;
13611 	zval *container;
13612 
13613 	zval *offset;
13614 	void **cache_slot = NULL;
13615 
13616 	SAVE_OPLINE();
13617 	container = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
13618 
13619 	if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
13620 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
13621 	}
13622 
13623 	offset = RT_CONSTANT(opline, opline->op2);
13624 
13625 	if ((IS_TMP_VAR|IS_VAR) == IS_CONST ||
13626 	    ((IS_TMP_VAR|IS_VAR) != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
13627 		do {
13628 			if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
13629 				container = Z_REFVAL_P(container);
13630 				if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
13631 					break;
13632 				}
13633 			}
13634 			goto fetch_obj_is_no_object;
13635 		} while (0);
13636 	}
13637 
13638 	/* here we are sure we are dealing with an object */
13639 	do {
13640 		zend_object *zobj = Z_OBJ_P(container);
13641 		zval *retval;
13642 
13643 		if (IS_CONST == IS_CONST) {
13644 			cache_slot = CACHE_ADDR(opline->extended_value);
13645 
13646 			if (EXPECTED(zobj->ce == CACHED_PTR_EX(cache_slot))) {
13647 				uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
13648 
13649 				if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
13650 					retval = OBJ_PROP(zobj, prop_offset);
13651 					if (EXPECTED(Z_TYPE_P(retval) != IS_UNDEF)) {
13652 						ZVAL_COPY(EX_VAR(opline->result.var), retval);
13653 						break;
13654 					}
13655 				} else if (EXPECTED(zobj->properties != NULL)) {
13656 					if (!IS_UNKNOWN_DYNAMIC_PROPERTY_OFFSET(prop_offset)) {
13657 						uintptr_t idx = ZEND_DECODE_DYN_PROP_OFFSET(prop_offset);
13658 
13659 						if (EXPECTED(idx < zobj->properties->nNumUsed * sizeof(Bucket))) {
13660 							Bucket *p = (Bucket*)((char*)zobj->properties->arData + idx);
13661 
13662 							if (EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
13663 						        (EXPECTED(p->key == Z_STR_P(offset)) ||
13664 						         (EXPECTED(p->h == ZSTR_H(Z_STR_P(offset))) &&
13665 						          EXPECTED(p->key != NULL) &&
13666 						          EXPECTED(zend_string_equal_content(p->key, Z_STR_P(offset)))))) {
13667 								ZVAL_COPY(EX_VAR(opline->result.var), &p->val);
13668 								break;
13669 							}
13670 						}
13671 						CACHE_PTR_EX(cache_slot + 1, (void*)ZEND_DYNAMIC_PROPERTY_OFFSET);
13672 					}
13673 					retval = zend_hash_find_ex(zobj->properties, Z_STR_P(offset), 1);
13674 					if (EXPECTED(retval)) {
13675 						uintptr_t idx = (char*)retval - (char*)zobj->properties->arData;
13676 						CACHE_PTR_EX(cache_slot + 1, (void*)ZEND_ENCODE_DYN_PROP_OFFSET(idx));
13677 						ZVAL_COPY(EX_VAR(opline->result.var), retval);
13678 						break;
13679 					}
13680 				}
13681 			}
13682 		}
13683 
13684 		if (UNEXPECTED(zobj->handlers->read_property == NULL)) {
13685 fetch_obj_is_no_object:
13686 			ZVAL_NULL(EX_VAR(opline->result.var));
13687 		} else {
13688 
13689 			retval = zobj->handlers->read_property(container, offset, BP_VAR_IS, cache_slot, EX_VAR(opline->result.var));
13690 
13691 			if (retval != EX_VAR(opline->result.var)) {
13692 				ZVAL_COPY(EX_VAR(opline->result.var), retval);
13693 			}
13694 		}
13695 	} while (0);
13696 
13697 	zval_ptr_dtor_nogc(free_op1);
13698 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
13699 }
13700 
13701 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FAST_CONCAT_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
13702 {
13703 	USE_OPLINE
13704 	zend_free_op free_op1;
13705 	zval *op1, *op2;
13706 	zend_string *op1_str, *op2_str, *str;
13707 
13708 
13709 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
13710 	op2 = RT_CONSTANT(opline, opline->op2);
13711 	if (((IS_TMP_VAR|IS_VAR) == IS_CONST || EXPECTED(Z_TYPE_P(op1) == IS_STRING)) &&
13712 	    (IS_CONST == IS_CONST || EXPECTED(Z_TYPE_P(op2) == IS_STRING))) {
13713 		zend_string *op1_str = Z_STR_P(op1);
13714 		zend_string *op2_str = Z_STR_P(op2);
13715 		zend_string *str;
13716 
13717 		if ((IS_TMP_VAR|IS_VAR) != IS_CONST && UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
13718 			if (IS_CONST == IS_CONST || IS_CONST == IS_CV) {
13719 				ZVAL_STR_COPY(EX_VAR(opline->result.var), op2_str);
13720 			} else {
13721 				ZVAL_STR(EX_VAR(opline->result.var), op2_str);
13722 			}
13723 			zval_ptr_dtor_nogc(free_op1);
13724 		} else if (IS_CONST != IS_CONST && UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
13725 			if ((IS_TMP_VAR|IS_VAR) == IS_CONST || (IS_TMP_VAR|IS_VAR) == IS_CV) {
13726 				ZVAL_STR_COPY(EX_VAR(opline->result.var), op1_str);
13727 			} else {
13728 				ZVAL_STR(EX_VAR(opline->result.var), op1_str);
13729 			}
13730 
13731 		} else if ((IS_TMP_VAR|IS_VAR) != IS_CONST && (IS_TMP_VAR|IS_VAR) != IS_CV &&
13732 		    !ZSTR_IS_INTERNED(op1_str) && GC_REFCOUNT(op1_str) == 1) {
13733 		    size_t len = ZSTR_LEN(op1_str);
13734 
13735 			str = zend_string_extend(op1_str, len + ZSTR_LEN(op2_str), 0);
13736 			memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
13737 			ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
13738 
13739 		} else {
13740 			str = zend_string_alloc(ZSTR_LEN(op1_str) + ZSTR_LEN(op2_str), 0);
13741 			memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
13742 			memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
13743 			ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
13744 			zval_ptr_dtor_nogc(free_op1);
13745 
13746 		}
13747 		ZEND_VM_NEXT_OPCODE();
13748 	}
13749 
13750 	SAVE_OPLINE();
13751 	if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
13752 		op1_str = Z_STR_P(op1);
13753 	} else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
13754 		op1_str = zend_string_copy(Z_STR_P(op1));
13755 	} else {
13756 		if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
13757 			GET_OP1_UNDEF_CV(op1, BP_VAR_R);
13758 		}
13759 		op1_str = zval_get_string_func(op1);
13760 	}
13761 	if (IS_CONST == IS_CONST) {
13762 		op2_str = Z_STR_P(op2);
13763 	} else if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
13764 		op2_str = zend_string_copy(Z_STR_P(op2));
13765 	} else {
13766 		if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
13767 			GET_OP2_UNDEF_CV(op2, BP_VAR_R);
13768 		}
13769 		op2_str = zval_get_string_func(op2);
13770 	}
13771 	do {
13772 		if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
13773 			if (UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
13774 				if (IS_CONST == IS_CONST) {
13775 					if (UNEXPECTED(Z_REFCOUNTED_P(op2))) {
13776 						GC_ADDREF(op2_str);
13777 					}
13778 				}
13779 				ZVAL_STR(EX_VAR(opline->result.var), op2_str);
13780 				zend_string_release_ex(op1_str, 0);
13781 				break;
13782 			}
13783 		}
13784 		if (IS_CONST != IS_CONST) {
13785 			if (UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
13786 				if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
13787 					if (UNEXPECTED(Z_REFCOUNTED_P(op1))) {
13788 						GC_ADDREF(op1_str);
13789 					}
13790 				}
13791 				ZVAL_STR(EX_VAR(opline->result.var), op1_str);
13792 				zend_string_release_ex(op2_str, 0);
13793 				break;
13794 			}
13795 		}
13796 		str = zend_string_alloc(ZSTR_LEN(op1_str) + ZSTR_LEN(op2_str), 0);
13797 		memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
13798 		memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
13799 		ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
13800 		if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
13801 			zend_string_release_ex(op1_str, 0);
13802 		}
13803 		if (IS_CONST != IS_CONST) {
13804 			zend_string_release_ex(op2_str, 0);
13805 		}
13806 	} while (0);
13807 	zval_ptr_dtor_nogc(free_op1);
13808 
13809 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
13810 }
13811 
13812 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
13813 {
13814 	USE_OPLINE
13815 	zval *function_name;
13816 	zend_free_op free_op1;
13817 	zval *object;
13818 	zend_function *fbc;
13819 	zend_class_entry *called_scope;
13820 	zend_object *obj;
13821 	zend_execute_data *call;
13822 	uint32_t call_info;
13823 
13824 	SAVE_OPLINE();
13825 
13826 	object = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
13827 
13828 	if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
13829 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
13830 	}
13831 
13832 	if (IS_CONST != IS_CONST) {
13833 		function_name = RT_CONSTANT(opline, opline->op2);
13834 	}
13835 
13836 	if (IS_CONST != IS_CONST &&
13837 	    UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) {
13838 		do {
13839 			if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(function_name)) {
13840 				function_name = Z_REFVAL_P(function_name);
13841 				if (EXPECTED(Z_TYPE_P(function_name) == IS_STRING)) {
13842 					break;
13843 				}
13844 			} else if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
13845 				GET_OP2_UNDEF_CV(function_name, BP_VAR_R);
13846 				if (UNEXPECTED(EG(exception) != NULL)) {
13847 					zval_ptr_dtor_nogc(free_op1);
13848 					HANDLE_EXCEPTION();
13849 				}
13850 			}
13851 			zend_throw_error(NULL, "Method name must be a string");
13852 
13853 			zval_ptr_dtor_nogc(free_op1);
13854 			HANDLE_EXCEPTION();
13855 		} while (0);
13856 	}
13857 
13858 	if ((IS_TMP_VAR|IS_VAR) != IS_UNUSED) {
13859 		do {
13860 			if ((IS_TMP_VAR|IS_VAR) == IS_CONST || UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
13861 				if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(object))) {
13862 					object = Z_REFVAL_P(object);
13863 					if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
13864 						break;
13865 					}
13866 				}
13867 				if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
13868 					object = GET_OP1_UNDEF_CV(object, BP_VAR_R);
13869 					if (UNEXPECTED(EG(exception) != NULL)) {
13870 						if (IS_CONST != IS_CONST) {
13871 
13872 						}
13873 						HANDLE_EXCEPTION();
13874 					}
13875 				}
13876 				if (IS_CONST == IS_CONST) {
13877 					function_name = RT_CONSTANT(opline, opline->op2);
13878 				}
13879 				zend_invalid_method_call(object, function_name);
13880 
13881 				zval_ptr_dtor_nogc(free_op1);
13882 				HANDLE_EXCEPTION();
13883 			}
13884 		} while (0);
13885 	}
13886 
13887 	obj = Z_OBJ_P(object);
13888 	called_scope = obj->ce;
13889 
13890 	if (IS_CONST == IS_CONST &&
13891 	    EXPECTED(CACHED_PTR(opline->result.num) == called_scope)) {
13892 	    fbc = CACHED_PTR(opline->result.num + sizeof(void*));
13893 	} else {
13894 	    zend_object *orig_obj = obj;
13895 
13896 		if (UNEXPECTED(obj->handlers->get_method == NULL)) {
13897 			zend_throw_error(NULL, "Object does not support method calls");
13898 
13899 			zval_ptr_dtor_nogc(free_op1);
13900 			HANDLE_EXCEPTION();
13901 		}
13902 
13903 		if (IS_CONST == IS_CONST) {
13904 			function_name = RT_CONSTANT(opline, opline->op2);
13905 		}
13906 
13907 		/* First, locate the function. */
13908 		fbc = obj->handlers->get_method(&obj, Z_STR_P(function_name), ((IS_CONST == IS_CONST) ? (RT_CONSTANT(opline, opline->op2) + 1) : NULL));
13909 		if (UNEXPECTED(fbc == NULL)) {
13910 			if (EXPECTED(!EG(exception))) {
13911 				zend_undefined_method(obj->ce, Z_STR_P(function_name));
13912 			}
13913 
13914 			zval_ptr_dtor_nogc(free_op1);
13915 			HANDLE_EXCEPTION();
13916 		}
13917 		if (IS_CONST == IS_CONST &&
13918 		    EXPECTED(fbc->type <= ZEND_USER_FUNCTION) &&
13919 		    EXPECTED(!(fbc->common.fn_flags & (ZEND_ACC_CALL_VIA_TRAMPOLINE|ZEND_ACC_NEVER_CACHE))) &&
13920 		    EXPECTED(obj == orig_obj)) {
13921 			CACHE_POLYMORPHIC_PTR(opline->result.num, called_scope, fbc);
13922 		}
13923 		if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_TMP_VAR)) && UNEXPECTED(obj != orig_obj)) {
13924 			/* Reset "object" to trigger reference counting */
13925 			object = NULL;
13926 		}
13927 		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!fbc->op_array.run_time_cache)) {
13928 			init_func_run_time_cache(&fbc->op_array);
13929 		}
13930 	}
13931 
13932 	if (IS_CONST != IS_CONST) {
13933 
13934 	}
13935 
13936 	call_info = ZEND_CALL_NESTED_FUNCTION;
13937 	if (UNEXPECTED((fbc->common.fn_flags & ZEND_ACC_STATIC) != 0)) {
13938 		obj = NULL;
13939 		zval_ptr_dtor_nogc(free_op1);
13940 
13941 		if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_TMP_VAR)) && UNEXPECTED(EG(exception))) {
13942 			HANDLE_EXCEPTION();
13943 		}
13944 	} else if ((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_TMP_VAR|IS_CV)) {
13945 		/* CV may be changed indirectly (e.g. when it's a reference) */
13946 		call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_RELEASE_THIS;
13947 		if ((IS_TMP_VAR|IS_VAR) == IS_CV) {
13948 			GC_ADDREF(obj); /* For $this pointer */
13949 		} else if (free_op1 != object) {
13950 			GC_ADDREF(obj); /* For $this pointer */
13951 			zval_ptr_dtor_nogc(free_op1);
13952 		}
13953 	}
13954 
13955 	call = zend_vm_stack_push_call_frame(call_info,
13956 		fbc, opline->extended_value, called_scope, obj);
13957 	call->prev_execute_data = EX(call);
13958 	EX(call) = call;
13959 
13960 	ZEND_VM_NEXT_OPCODE();
13961 }
13962 
13963 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_CASE_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
13964 {
13965 	USE_OPLINE
13966 	zend_free_op free_op1;
13967 	zval *op1, *op2, *result;
13968 
13969 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
13970 	op2 = RT_CONSTANT(opline, opline->op2);
13971 	do {
13972 		int result;
13973 
13974 		if (EXPECTED(Z_TYPE_P(op1) == IS_LONG)) {
13975 			if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
13976 				result = (Z_LVAL_P(op1) == Z_LVAL_P(op2));
13977 			} else if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
13978 				result = ((double)Z_LVAL_P(op1) == Z_DVAL_P(op2));
13979 			} else {
13980 				break;
13981 			}
13982 		} else if (EXPECTED(Z_TYPE_P(op1) == IS_DOUBLE)) {
13983 			if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
13984 				result = (Z_DVAL_P(op1) == Z_DVAL_P(op2));
13985 			} else if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
13986 				result = (Z_DVAL_P(op1) == ((double)Z_LVAL_P(op2)));
13987 			} else {
13988 				break;
13989 			}
13990 		} else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
13991 			if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
13992 				result = zend_fast_equal_strings(Z_STR_P(op1), Z_STR_P(op2));
13993 
13994 			} else {
13995 				break;
13996 			}
13997 		} else {
13998 			break;
13999 		}
14000 		ZEND_VM_SMART_BRANCH(result, 0);
14001 		ZVAL_BOOL(EX_VAR(opline->result.var), result);
14002 		ZEND_VM_NEXT_OPCODE();
14003 	} while (0);
14004 
14005 	SAVE_OPLINE();
14006 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
14007 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
14008 	}
14009 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
14010 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
14011 	}
14012 	result = EX_VAR(opline->result.var);
14013 	compare_function(result, op1, op2);
14014 	ZVAL_BOOL(result, Z_LVAL_P(result) == 0);
14015 
14016 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
14017 }
14018 
14019 static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_UNSET_STATIC_PROP_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
14020 {
14021 	USE_OPLINE
14022 	zval *varname;
14023 	zend_string *name, *tmp_name;
14024 	zend_class_entry *ce;
14025 	zend_free_op free_op1;
14026 
14027 	SAVE_OPLINE();
14028 
14029 	if (IS_CONST == IS_CONST) {
14030 		ce = CACHED_PTR(opline->extended_value);
14031 		if (UNEXPECTED(ce == NULL)) {
14032 			ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op2)), RT_CONSTANT(opline, opline->op2) + 1, ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
14033 			if (UNEXPECTED(ce == NULL)) {
14034 				ZEND_ASSERT(EG(exception));
14035 				zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
14036 				HANDLE_EXCEPTION();
14037 			}
14038 			/*CACHE_PTR(opline->extended_value, ce);*/
14039 		}
14040 	} else if (IS_CONST == IS_UNUSED) {
14041 		ce = zend_fetch_class(NULL, opline->op2.num);
14042 		if (UNEXPECTED(ce == NULL)) {
14043 			ZEND_ASSERT(EG(exception));
14044 			zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
14045 			HANDLE_EXCEPTION();
14046 		}
14047 	} else {
14048 		ce = Z_CE_P(EX_VAR(opline->op2.var));
14049 	}
14050 
14051 	varname = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
14052 	if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
14053 		name = Z_STR_P(varname);
14054 	} else if (EXPECTED(Z_TYPE_P(varname) == IS_STRING)) {
14055 		name = Z_STR_P(varname);
14056 		tmp_name = NULL;
14057 	} else {
14058 		if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(varname) == IS_UNDEF)) {
14059 			varname = GET_OP1_UNDEF_CV(varname, BP_VAR_R);
14060 		}
14061 		name = zval_get_tmp_string(varname, &tmp_name);
14062 	}
14063 
14064 	zend_std_unset_static_property(ce, name);
14065 
14066 	if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
14067 		zend_tmp_string_release(tmp_name);
14068 	}
14069 	zval_ptr_dtor_nogc(free_op1);
14070 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
14071 }
14072 
14073 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
14074 {
14075 	USE_OPLINE
14076 	zval *value;
14077 	int result;
14078 	zend_free_op free_op1;
14079 	zval *varname;
14080 	zend_string *name, *tmp_name;
14081 	zend_class_entry *ce;
14082 
14083 	SAVE_OPLINE();
14084 	if (IS_CONST == IS_CONST) {
14085 		if ((IS_TMP_VAR|IS_VAR) == IS_CONST && EXPECTED((ce = CACHED_PTR(opline->extended_value & ~ZEND_ISEMPTY)) != NULL)) {
14086 			value = CACHED_PTR((opline->extended_value & ~ZEND_ISEMPTY) + sizeof(void*));
14087 			goto is_static_prop_return;
14088 		} else if (UNEXPECTED((ce = CACHED_PTR(opline->extended_value & ~ZEND_ISEMPTY)) == NULL)) {
14089 			ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op2)), RT_CONSTANT(opline, opline->op2) + 1, ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
14090 			if (UNEXPECTED(ce == NULL)) {
14091 				ZEND_ASSERT(EG(exception));
14092 				ZVAL_UNDEF(EX_VAR(opline->result.var));
14093 				HANDLE_EXCEPTION();
14094 			}
14095 			if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
14096 				CACHE_PTR(opline->extended_value & ~ZEND_ISEMPTY, ce);
14097 			}
14098 		}
14099 	} else {
14100 		if (IS_CONST == IS_UNUSED) {
14101 			ce = zend_fetch_class(NULL, opline->op2.num);
14102 			if (UNEXPECTED(ce == NULL)) {
14103 				ZEND_ASSERT(EG(exception));
14104 				zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
14105 				ZVAL_UNDEF(EX_VAR(opline->result.var));
14106 				HANDLE_EXCEPTION();
14107 			}
14108 		} else {
14109 			ce = Z_CE_P(EX_VAR(opline->op2.var));
14110 		}
14111 		if ((IS_TMP_VAR|IS_VAR) == IS_CONST &&
14112 		    EXPECTED(CACHED_PTR(opline->extended_value & ~ZEND_ISEMPTY) == ce)) {
14113 
14114 			value = CACHED_PTR((opline->extended_value & ~ZEND_ISEMPTY) + sizeof(void*));
14115 			goto is_static_prop_return;
14116 		}
14117 	}
14118 
14119 	varname = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
14120 	if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
14121 		name = Z_STR_P(varname);
14122 	} else {
14123 		name = zval_get_tmp_string(varname, &tmp_name);
14124 	}
14125 
14126 	value = zend_std_get_static_property(ce, name, 1);
14127 
14128 	if ((IS_TMP_VAR|IS_VAR) == IS_CONST && value) {
14129 		CACHE_POLYMORPHIC_PTR(opline->extended_value & ~ZEND_ISEMPTY, ce, value);
14130 	}
14131 
14132 	if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
14133 		zend_tmp_string_release(tmp_name);
14134 	}
14135 	zval_ptr_dtor_nogc(free_op1);
14136 
14137 is_static_prop_return:
14138 	if (!(opline->extended_value & ZEND_ISEMPTY)) {
14139 		result = value && Z_TYPE_P(value) > IS_NULL &&
14140 		    (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL);
14141 	} else {
14142 		result = !value || !i_zend_is_true(value);
14143 	}
14144 
14145 	ZEND_VM_SMART_BRANCH(result, 1);
14146 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
14147 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
14148 }
14149 
14150 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
14151 {
14152 	USE_OPLINE
14153 	zend_free_op free_op1;
14154 	zval *container;
14155 	int result;
14156 	zend_ulong hval;
14157 	zval *offset;
14158 
14159 	SAVE_OPLINE();
14160 	container = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
14161 	offset = RT_CONSTANT(opline, opline->op2);
14162 
14163 	if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
14164 		HashTable *ht;
14165 		zval *value;
14166 		zend_string *str;
14167 
14168 isset_dim_obj_array:
14169 		ht = Z_ARRVAL_P(container);
14170 isset_again:
14171 		if (EXPECTED(Z_TYPE_P(offset) == IS_STRING)) {
14172 			str = Z_STR_P(offset);
14173 			if (IS_CONST != IS_CONST) {
14174 				if (ZEND_HANDLE_NUMERIC(str, hval)) {
14175 					goto num_index_prop;
14176 				}
14177 			}
14178 			value = zend_hash_find_ex_ind(ht, str, IS_CONST == IS_CONST);
14179 		} else if (EXPECTED(Z_TYPE_P(offset) == IS_LONG)) {
14180 			hval = Z_LVAL_P(offset);
14181 num_index_prop:
14182 			value = zend_hash_index_find(ht, hval);
14183 		} else if ((IS_CONST & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(offset))) {
14184 			offset = Z_REFVAL_P(offset);
14185 			goto isset_again;
14186 		} else {
14187 			value = zend_find_array_dim_slow(ht, offset EXECUTE_DATA_CC);
14188 		}
14189 
14190 		if (!(opline->extended_value & ZEND_ISEMPTY)) {
14191 			/* > IS_NULL means not IS_UNDEF and not IS_NULL */
14192 			result = value != NULL && Z_TYPE_P(value) > IS_NULL &&
14193 			    (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL);
14194 		} else {
14195 			result = (value == NULL || !i_zend_is_true(value));
14196 		}
14197 		goto isset_dim_obj_exit;
14198 	} else if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(container))) {
14199 		container = Z_REFVAL_P(container);
14200 		if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
14201 			goto isset_dim_obj_array;
14202 		}
14203 	}
14204 
14205 	if (IS_CONST == IS_CONST && Z_EXTRA_P(offset) == ZEND_EXTRA_VALUE) {
14206 		offset++;
14207 	}
14208 	if (!(opline->extended_value & ZEND_ISEMPTY)) {
14209 		result = zend_isset_dim_slow(container, offset EXECUTE_DATA_CC);
14210 	} else {
14211 		result = zend_isempty_dim_slow(container, offset EXECUTE_DATA_CC);
14212 	}
14213 
14214 isset_dim_obj_exit:
14215 
14216 	zval_ptr_dtor_nogc(free_op1);
14217 	ZEND_VM_SMART_BRANCH(result, 1);
14218 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
14219 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
14220 }
14221 
14222 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
14223 {
14224 	USE_OPLINE
14225 	zend_free_op free_op1;
14226 	zval *container;
14227 	int result;
14228 	zval *offset;
14229 
14230 	SAVE_OPLINE();
14231 	container = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
14232 
14233 	if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
14234 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
14235 	}
14236 
14237 	offset = RT_CONSTANT(opline, opline->op2);
14238 
14239 	if ((IS_TMP_VAR|IS_VAR) == IS_CONST ||
14240 	    ((IS_TMP_VAR|IS_VAR) != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
14241 		if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
14242 			container = Z_REFVAL_P(container);
14243 			if (UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) {
14244 				goto isset_no_object;
14245 			}
14246 		} else {
14247 			goto isset_no_object;
14248 		}
14249 	}
14250 	if (UNEXPECTED(!Z_OBJ_HT_P(container)->has_property)) {
14251 		zend_wrong_property_check(offset);
14252 isset_no_object:
14253 		result = (opline->extended_value & ZEND_ISEMPTY);
14254 	} else {
14255 		result =
14256 			(opline->extended_value & ZEND_ISEMPTY) ^
14257 			Z_OBJ_HT_P(container)->has_property(container, offset, (opline->extended_value & ZEND_ISEMPTY), ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_ISEMPTY) : NULL));
14258 	}
14259 
14260 	zval_ptr_dtor_nogc(free_op1);
14261 	ZEND_VM_SMART_BRANCH(result, 1);
14262 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
14263 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
14264 }
14265 
14266 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INSTANCEOF_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
14267 {
14268 	USE_OPLINE
14269 	zend_free_op free_op1;
14270 	zval *expr;
14271 	zend_bool result;
14272 
14273 	SAVE_OPLINE();
14274 	expr = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
14275 
14276 try_instanceof:
14277 	if (Z_TYPE_P(expr) == IS_OBJECT) {
14278 		zend_class_entry *ce;
14279 
14280 		if (IS_CONST == IS_CONST) {
14281 			ce = CACHED_PTR(opline->extended_value);
14282 			if (UNEXPECTED(ce == NULL)) {
14283 				ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op2)), RT_CONSTANT(opline, opline->op2) + 1, ZEND_FETCH_CLASS_NO_AUTOLOAD);
14284 				if (EXPECTED(ce)) {
14285 					CACHE_PTR(opline->extended_value, ce);
14286 				}
14287 			}
14288 		} else if (IS_CONST == IS_UNUSED) {
14289 			ce = zend_fetch_class(NULL, opline->op2.num);
14290 			if (UNEXPECTED(ce == NULL)) {
14291 				ZEND_ASSERT(EG(exception));
14292 				zval_ptr_dtor_nogc(free_op1);
14293 				ZVAL_UNDEF(EX_VAR(opline->result.var));
14294 				HANDLE_EXCEPTION();
14295 			}
14296 		} else {
14297 			ce = Z_CE_P(EX_VAR(opline->op2.var));
14298 		}
14299 		result = ce && instanceof_function(Z_OBJCE_P(expr), ce);
14300 	} else if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV)) && Z_TYPE_P(expr) == IS_REFERENCE) {
14301 		expr = Z_REFVAL_P(expr);
14302 		goto try_instanceof;
14303 	} else {
14304 		if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(expr) == IS_UNDEF)) {
14305 			GET_OP1_UNDEF_CV(expr, BP_VAR_R);
14306 		}
14307 		result = 0;
14308 	}
14309 	zval_ptr_dtor_nogc(free_op1);
14310 	ZEND_VM_SMART_BRANCH(result, 1);
14311 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
14312 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
14313 }
14314 
14315 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
14316 {
14317 	USE_OPLINE
14318 	zend_free_op free_op1;
14319 	zval *container, *dim, *value;
14320 	zend_long offset;
14321 	HashTable *ht;
14322 
14323 	container = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
14324 	dim = RT_CONSTANT(opline, opline->op2);
14325 	if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
14326 fetch_dim_r_index_array:
14327 		if (EXPECTED(Z_TYPE_P(dim) == IS_LONG)) {
14328 			offset = Z_LVAL_P(dim);
14329 		} else {
14330 			offset = zval_get_long(dim);
14331 		}
14332 		ht = Z_ARRVAL_P(container);
14333 		ZEND_HASH_INDEX_FIND(ht, offset, value, fetch_dim_r_index_undef);
14334 		ZVAL_COPY_DEREF(EX_VAR(opline->result.var), value);
14335 		if ((IS_TMP_VAR|IS_VAR) & (IS_TMP_VAR|IS_VAR)) {
14336 			SAVE_OPLINE();
14337 			zval_ptr_dtor_nogc(free_op1);
14338 			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
14339 		} else {
14340 			ZEND_VM_NEXT_OPCODE();
14341 		}
14342 	} else if ((IS_TMP_VAR|IS_VAR) != IS_CONST && EXPECTED(Z_TYPE_P(container) == IS_REFERENCE)) {
14343 		container = Z_REFVAL_P(container);
14344 		if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
14345 			goto fetch_dim_r_index_array;
14346 		} else {
14347 			goto fetch_dim_r_index_slow;
14348 		}
14349 	} else {
14350 fetch_dim_r_index_slow:
14351 		SAVE_OPLINE();
14352 		if (IS_CONST == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
14353 			dim++;
14354 		}
14355 		zend_fetch_dimension_address_read_R_slow(container, dim OPLINE_CC EXECUTE_DATA_CC);
14356 		zval_ptr_dtor_nogc(free_op1);
14357 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
14358 	}
14359 
14360 fetch_dim_r_index_undef:
14361 	ZVAL_NULL(EX_VAR(opline->result.var));
14362 	SAVE_OPLINE();
14363 	zend_undefined_offset(offset);
14364 	zval_ptr_dtor_nogc(free_op1);
14365 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
14366 }
14367 
14368 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
14369 {
14370 	USE_OPLINE
14371 	zend_free_op free_op1;
14372 	zval *container, *dim, *value;
14373 	zend_long offset;
14374 	HashTable *ht;
14375 
14376 	container = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
14377 	dim = EX_VAR(opline->op2.var);
14378 	if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
14379 fetch_dim_r_index_array:
14380 		if (EXPECTED(Z_TYPE_P(dim) == IS_LONG)) {
14381 			offset = Z_LVAL_P(dim);
14382 		} else {
14383 			offset = zval_get_long(dim);
14384 		}
14385 		ht = Z_ARRVAL_P(container);
14386 		ZEND_HASH_INDEX_FIND(ht, offset, value, fetch_dim_r_index_undef);
14387 		ZVAL_COPY_DEREF(EX_VAR(opline->result.var), value);
14388 		if ((IS_TMP_VAR|IS_VAR) & (IS_TMP_VAR|IS_VAR)) {
14389 			SAVE_OPLINE();
14390 			zval_ptr_dtor_nogc(free_op1);
14391 			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
14392 		} else {
14393 			ZEND_VM_NEXT_OPCODE();
14394 		}
14395 	} else if ((IS_TMP_VAR|IS_VAR) != IS_CONST && EXPECTED(Z_TYPE_P(container) == IS_REFERENCE)) {
14396 		container = Z_REFVAL_P(container);
14397 		if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
14398 			goto fetch_dim_r_index_array;
14399 		} else {
14400 			goto fetch_dim_r_index_slow;
14401 		}
14402 	} else {
14403 fetch_dim_r_index_slow:
14404 		SAVE_OPLINE();
14405 		if ((IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
14406 			dim++;
14407 		}
14408 		zend_fetch_dimension_address_read_R_slow(container, dim OPLINE_CC EXECUTE_DATA_CC);
14409 		zval_ptr_dtor_nogc(free_op1);
14410 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
14411 	}
14412 
14413 fetch_dim_r_index_undef:
14414 	ZVAL_NULL(EX_VAR(opline->result.var));
14415 	SAVE_OPLINE();
14416 	zend_undefined_offset(offset);
14417 	zval_ptr_dtor_nogc(free_op1);
14418 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
14419 }
14420 
14421 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ADD_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
14422 {
14423 	USE_OPLINE
14424 	zend_free_op free_op1, free_op2;
14425 	zval *op1, *op2, *result;
14426 
14427 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
14428 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
14429 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
14430 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
14431 			result = EX_VAR(opline->result.var);
14432 			fast_long_add_function(result, op1, op2);
14433 			ZEND_VM_NEXT_OPCODE();
14434 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
14435 			result = EX_VAR(opline->result.var);
14436 			ZVAL_DOUBLE(result, ((double)Z_LVAL_P(op1)) + Z_DVAL_P(op2));
14437 			ZEND_VM_NEXT_OPCODE();
14438 		}
14439 	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
14440 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
14441 			result = EX_VAR(opline->result.var);
14442 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) + Z_DVAL_P(op2));
14443 			ZEND_VM_NEXT_OPCODE();
14444 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
14445 			result = EX_VAR(opline->result.var);
14446 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) + ((double)Z_LVAL_P(op2)));
14447 			ZEND_VM_NEXT_OPCODE();
14448 		}
14449 	}
14450 
14451 	SAVE_OPLINE();
14452 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
14453 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
14454 	}
14455 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
14456 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
14457 	}
14458 	add_function(EX_VAR(opline->result.var), op1, op2);
14459 	zval_ptr_dtor_nogc(free_op1);
14460 	zval_ptr_dtor_nogc(free_op2);
14461 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
14462 }
14463 
14464 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SUB_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
14465 {
14466 	USE_OPLINE
14467 	zend_free_op free_op1, free_op2;
14468 	zval *op1, *op2, *result;
14469 
14470 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
14471 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
14472 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
14473 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
14474 			result = EX_VAR(opline->result.var);
14475 			fast_long_sub_function(result, op1, op2);
14476 			ZEND_VM_NEXT_OPCODE();
14477 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
14478 			result = EX_VAR(opline->result.var);
14479 			ZVAL_DOUBLE(result, ((double)Z_LVAL_P(op1)) - Z_DVAL_P(op2));
14480 			ZEND_VM_NEXT_OPCODE();
14481 		}
14482 	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
14483 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
14484 			result = EX_VAR(opline->result.var);
14485 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) - Z_DVAL_P(op2));
14486 			ZEND_VM_NEXT_OPCODE();
14487 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
14488 			result = EX_VAR(opline->result.var);
14489 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) - ((double)Z_LVAL_P(op2)));
14490 			ZEND_VM_NEXT_OPCODE();
14491 		}
14492 	}
14493 
14494 	SAVE_OPLINE();
14495 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
14496 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
14497 	}
14498 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
14499 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
14500 	}
14501 	sub_function(EX_VAR(opline->result.var), op1, op2);
14502 	zval_ptr_dtor_nogc(free_op1);
14503 	zval_ptr_dtor_nogc(free_op2);
14504 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
14505 }
14506 
14507 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_MUL_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
14508 {
14509 	USE_OPLINE
14510 	zend_free_op free_op1, free_op2;
14511 	zval *op1, *op2, *result;
14512 
14513 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
14514 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
14515 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
14516 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
14517 			zend_long overflow;
14518 
14519 			result = EX_VAR(opline->result.var);
14520 			ZEND_SIGNED_MULTIPLY_LONG(Z_LVAL_P(op1), Z_LVAL_P(op2), Z_LVAL_P(result), Z_DVAL_P(result), overflow);
14521 			Z_TYPE_INFO_P(result) = overflow ? IS_DOUBLE : IS_LONG;
14522 			ZEND_VM_NEXT_OPCODE();
14523 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
14524 			result = EX_VAR(opline->result.var);
14525 			ZVAL_DOUBLE(result, ((double)Z_LVAL_P(op1)) * Z_DVAL_P(op2));
14526 			ZEND_VM_NEXT_OPCODE();
14527 		}
14528 	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
14529 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
14530 			result = EX_VAR(opline->result.var);
14531 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) * Z_DVAL_P(op2));
14532 			ZEND_VM_NEXT_OPCODE();
14533 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
14534 			result = EX_VAR(opline->result.var);
14535 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) * ((double)Z_LVAL_P(op2)));
14536 			ZEND_VM_NEXT_OPCODE();
14537 		}
14538 	}
14539 
14540 	SAVE_OPLINE();
14541 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
14542 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
14543 	}
14544 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
14545 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
14546 	}
14547 	mul_function(EX_VAR(opline->result.var), op1, op2);
14548 	zval_ptr_dtor_nogc(free_op1);
14549 	zval_ptr_dtor_nogc(free_op2);
14550 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
14551 }
14552 
14553 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_DIV_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
14554 {
14555 	USE_OPLINE
14556 	zend_free_op free_op1, free_op2;
14557 	zval *op1, *op2;
14558 
14559 	SAVE_OPLINE();
14560 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
14561 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
14562 	fast_div_function(EX_VAR(opline->result.var), op1, op2);
14563 	zval_ptr_dtor_nogc(free_op1);
14564 	zval_ptr_dtor_nogc(free_op2);
14565 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
14566 }
14567 
14568 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_MOD_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
14569 {
14570 	USE_OPLINE
14571 	zend_free_op free_op1, free_op2;
14572 	zval *op1, *op2, *result;
14573 
14574 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
14575 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
14576 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
14577 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
14578 			result = EX_VAR(opline->result.var);
14579 			if (UNEXPECTED(Z_LVAL_P(op2) == 0)) {
14580 				ZEND_VM_TAIL_CALL(zend_mod_by_zero_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
14581 			} else if (UNEXPECTED(Z_LVAL_P(op2) == -1)) {
14582 				/* Prevent overflow error/crash if op1==ZEND_LONG_MIN */
14583 				ZVAL_LONG(result, 0);
14584 			} else {
14585 				ZVAL_LONG(result, Z_LVAL_P(op1) % Z_LVAL_P(op2));
14586 			}
14587 			ZEND_VM_NEXT_OPCODE();
14588 		}
14589 	}
14590 
14591 	SAVE_OPLINE();
14592 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
14593 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
14594 	}
14595 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
14596 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
14597 	}
14598 	mod_function(EX_VAR(opline->result.var), op1, op2);
14599 	zval_ptr_dtor_nogc(free_op1);
14600 	zval_ptr_dtor_nogc(free_op2);
14601 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
14602 }
14603 
14604 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SL_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
14605 {
14606 	USE_OPLINE
14607 	zend_free_op free_op1, free_op2;
14608 	zval *op1, *op2;
14609 
14610 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
14611 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
14612 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)
14613 			&& EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)
14614 			&& EXPECTED((zend_ulong)Z_LVAL_P(op2) < SIZEOF_ZEND_LONG * 8)) {
14615 		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(op1) << Z_LVAL_P(op2));
14616 		ZEND_VM_NEXT_OPCODE();
14617 	}
14618 
14619 	SAVE_OPLINE();
14620 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
14621 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
14622 	}
14623 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
14624 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
14625 	}
14626 	shift_left_function(EX_VAR(opline->result.var), op1, op2);
14627 	zval_ptr_dtor_nogc(free_op1);
14628 	zval_ptr_dtor_nogc(free_op2);
14629 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
14630 }
14631 
14632 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SR_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
14633 {
14634 	USE_OPLINE
14635 	zend_free_op free_op1, free_op2;
14636 	zval *op1, *op2;
14637 
14638 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
14639 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
14640 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)
14641 			&& EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)
14642 			&& EXPECTED((zend_ulong)Z_LVAL_P(op2) < SIZEOF_ZEND_LONG * 8)) {
14643 		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(op1) >> Z_LVAL_P(op2));
14644 		ZEND_VM_NEXT_OPCODE();
14645 	}
14646 
14647 	SAVE_OPLINE();
14648 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
14649 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
14650 	}
14651 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
14652 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
14653 	}
14654 	shift_right_function(EX_VAR(opline->result.var), op1, op2);
14655 	zval_ptr_dtor_nogc(free_op1);
14656 	zval_ptr_dtor_nogc(free_op2);
14657 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
14658 }
14659 
14660 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_POW_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
14661 {
14662 	USE_OPLINE
14663 	zend_free_op free_op1, free_op2;
14664 	zval *op1, *op2;
14665 
14666 	SAVE_OPLINE();
14667 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
14668 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
14669 	pow_function(EX_VAR(opline->result.var), op1, op2);
14670 	zval_ptr_dtor_nogc(free_op1);
14671 	zval_ptr_dtor_nogc(free_op2);
14672 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
14673 }
14674 
14675 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_CONCAT_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
14676 {
14677 	USE_OPLINE
14678 	zend_free_op free_op1, free_op2;
14679 	zval *op1, *op2;
14680 
14681 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
14682 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
14683 
14684 	if (((IS_TMP_VAR|IS_VAR) == IS_CONST || EXPECTED(Z_TYPE_P(op1) == IS_STRING)) &&
14685 	    ((IS_TMP_VAR|IS_VAR) == IS_CONST || EXPECTED(Z_TYPE_P(op2) == IS_STRING))) {
14686 		zend_string *op1_str = Z_STR_P(op1);
14687 		zend_string *op2_str = Z_STR_P(op2);
14688 		zend_string *str;
14689 
14690 		if ((IS_TMP_VAR|IS_VAR) != IS_CONST && UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
14691 			if ((IS_TMP_VAR|IS_VAR) == IS_CONST || (IS_TMP_VAR|IS_VAR) == IS_CV) {
14692 				ZVAL_STR_COPY(EX_VAR(opline->result.var), op2_str);
14693 			} else {
14694 				ZVAL_STR(EX_VAR(opline->result.var), op2_str);
14695 			}
14696 			zval_ptr_dtor_nogc(free_op1);
14697 		} else if ((IS_TMP_VAR|IS_VAR) != IS_CONST && UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
14698 			if ((IS_TMP_VAR|IS_VAR) == IS_CONST || (IS_TMP_VAR|IS_VAR) == IS_CV) {
14699 				ZVAL_STR_COPY(EX_VAR(opline->result.var), op1_str);
14700 			} else {
14701 				ZVAL_STR(EX_VAR(opline->result.var), op1_str);
14702 			}
14703 			zval_ptr_dtor_nogc(free_op2);
14704 		} else if ((IS_TMP_VAR|IS_VAR) != IS_CONST && (IS_TMP_VAR|IS_VAR) != IS_CV &&
14705 		    !ZSTR_IS_INTERNED(op1_str) && GC_REFCOUNT(op1_str) == 1) {
14706 		    size_t len = ZSTR_LEN(op1_str);
14707 
14708 			str = zend_string_extend(op1_str, len + ZSTR_LEN(op2_str), 0);
14709 			memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
14710 			ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
14711 			zval_ptr_dtor_nogc(free_op2);
14712 		} else {
14713 			str = zend_string_alloc(ZSTR_LEN(op1_str) + ZSTR_LEN(op2_str), 0);
14714 			memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
14715 			memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
14716 			ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
14717 			zval_ptr_dtor_nogc(free_op1);
14718 			zval_ptr_dtor_nogc(free_op2);
14719 		}
14720 		ZEND_VM_NEXT_OPCODE();
14721 	} else {
14722 		SAVE_OPLINE();
14723 
14724 		if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
14725 			op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
14726 		}
14727 		if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
14728 			op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
14729 		}
14730 		concat_function(EX_VAR(opline->result.var), op1, op2);
14731 		zval_ptr_dtor_nogc(free_op1);
14732 		zval_ptr_dtor_nogc(free_op2);
14733 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
14734 	}
14735 }
14736 
14737 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_EQUAL_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
14738 {
14739 	USE_OPLINE
14740 	zend_free_op free_op1, free_op2;
14741 	zval *op1, *op2, *result;
14742 
14743 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
14744 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
14745 	do {
14746 		int result;
14747 
14748 		if (EXPECTED(Z_TYPE_P(op1) == IS_LONG)) {
14749 			if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
14750 				result = (Z_LVAL_P(op1) == Z_LVAL_P(op2));
14751 			} else if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
14752 				result = ((double)Z_LVAL_P(op1) == Z_DVAL_P(op2));
14753 			} else {
14754 				break;
14755 			}
14756 		} else if (EXPECTED(Z_TYPE_P(op1) == IS_DOUBLE)) {
14757 			if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
14758 				result = (Z_DVAL_P(op1) == Z_DVAL_P(op2));
14759 			} else if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
14760 				result = (Z_DVAL_P(op1) == ((double)Z_LVAL_P(op2)));
14761 			} else {
14762 				break;
14763 			}
14764 		} else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
14765 			if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
14766 				result = zend_fast_equal_strings(Z_STR_P(op1), Z_STR_P(op2));
14767 				zval_ptr_dtor_nogc(free_op1);
14768 				zval_ptr_dtor_nogc(free_op2);
14769 			} else {
14770 				break;
14771 			}
14772 		} else {
14773 			break;
14774 		}
14775 		ZEND_VM_SMART_BRANCH(result, 0);
14776 		ZVAL_BOOL(EX_VAR(opline->result.var), result);
14777 		ZEND_VM_NEXT_OPCODE();
14778 	} while (0);
14779 
14780 	SAVE_OPLINE();
14781 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
14782 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
14783 	}
14784 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
14785 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
14786 	}
14787 	result = EX_VAR(opline->result.var);
14788 	compare_function(result, op1, op2);
14789 	ZVAL_BOOL(result, Z_LVAL_P(result) == 0);
14790 	zval_ptr_dtor_nogc(free_op1);
14791 	zval_ptr_dtor_nogc(free_op2);
14792 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
14793 }
14794 
14795 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_NOT_EQUAL_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
14796 {
14797 	USE_OPLINE
14798 	zend_free_op free_op1, free_op2;
14799 	zval *op1, *op2, *result;
14800 
14801 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
14802 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
14803 	do {
14804 		int result;
14805 
14806 		if (EXPECTED(Z_TYPE_P(op1) == IS_LONG)) {
14807 			if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
14808 				result = (Z_LVAL_P(op1) != Z_LVAL_P(op2));
14809 			} else if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
14810 				result = ((double)Z_LVAL_P(op1) != Z_DVAL_P(op2));
14811 			} else {
14812 				break;
14813 			}
14814 		} else if (EXPECTED(Z_TYPE_P(op1) == IS_DOUBLE)) {
14815 			if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
14816 				result = (Z_DVAL_P(op1) != Z_DVAL_P(op2));
14817 			} else if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
14818 				result = (Z_DVAL_P(op1) != ((double)Z_LVAL_P(op2)));
14819 			} else {
14820 				break;
14821 			}
14822 		} else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
14823 			if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
14824 				result = !zend_fast_equal_strings(Z_STR_P(op1), Z_STR_P(op2));
14825 				zval_ptr_dtor_nogc(free_op1);
14826 				zval_ptr_dtor_nogc(free_op2);
14827 			} else {
14828 				break;
14829 			}
14830 		} else {
14831 			break;
14832 		}
14833 		ZEND_VM_SMART_BRANCH(result, 0);
14834 		ZVAL_BOOL(EX_VAR(opline->result.var), result);
14835 		ZEND_VM_NEXT_OPCODE();
14836 	} while (0);
14837 
14838 	SAVE_OPLINE();
14839 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
14840 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
14841 	}
14842 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
14843 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
14844 	}
14845 	result = EX_VAR(opline->result.var);
14846 	compare_function(result, op1, op2);
14847 	ZVAL_BOOL(result, Z_LVAL_P(result) != 0);
14848 	zval_ptr_dtor_nogc(free_op1);
14849 	zval_ptr_dtor_nogc(free_op2);
14850 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
14851 }
14852 
14853 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
14854 {
14855 	USE_OPLINE
14856 	zend_free_op free_op1, free_op2;
14857 	zval *op1, *op2, *result;
14858 
14859 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
14860 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
14861 	do {
14862 		int result;
14863 
14864 		if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
14865 			if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
14866 				result = (Z_LVAL_P(op1) < Z_LVAL_P(op2));
14867 			} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
14868 				result = ((double)Z_LVAL_P(op1) < Z_DVAL_P(op2));
14869 			} else {
14870 				break;
14871 			}
14872 		} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
14873 			if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
14874 				result = (Z_DVAL_P(op1) < Z_DVAL_P(op2));
14875 			} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
14876 				result = (Z_DVAL_P(op1) < ((double)Z_LVAL_P(op2)));
14877 			} else {
14878 				break;
14879 			}
14880 		} else {
14881 			break;
14882 		}
14883 		ZEND_VM_SMART_BRANCH(result, 0);
14884 		ZVAL_BOOL(EX_VAR(opline->result.var), result);
14885 		ZEND_VM_NEXT_OPCODE();
14886 	} while (0);
14887 
14888 	SAVE_OPLINE();
14889 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
14890 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
14891 	}
14892 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
14893 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
14894 	}
14895 	result = EX_VAR(opline->result.var);
14896 	compare_function(result, op1, op2);
14897 	ZVAL_BOOL(result, Z_LVAL_P(result) < 0);
14898 	zval_ptr_dtor_nogc(free_op1);
14899 	zval_ptr_dtor_nogc(free_op2);
14900 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
14901 }
14902 
14903 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
14904 {
14905 	USE_OPLINE
14906 	zend_free_op free_op1, free_op2;
14907 	zval *op1, *op2, *result;
14908 
14909 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
14910 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
14911 	do {
14912 		int result;
14913 
14914 		if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
14915 			if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
14916 				result = (Z_LVAL_P(op1) <= Z_LVAL_P(op2));
14917 			} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
14918 				result = ((double)Z_LVAL_P(op1) <= Z_DVAL_P(op2));
14919 			} else {
14920 				break;
14921 			}
14922 		} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
14923 			if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
14924 				result = (Z_DVAL_P(op1) <= Z_DVAL_P(op2));
14925 			} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
14926 				result = (Z_DVAL_P(op1) <= ((double)Z_LVAL_P(op2)));
14927 			} else {
14928 				break;
14929 			}
14930 		} else {
14931 			break;
14932 		}
14933 		ZEND_VM_SMART_BRANCH(result, 0);
14934 		ZVAL_BOOL(EX_VAR(opline->result.var), result);
14935 		ZEND_VM_NEXT_OPCODE();
14936 	} while (0);
14937 
14938 	SAVE_OPLINE();
14939 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
14940 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
14941 	}
14942 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
14943 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
14944 	}
14945 	result = EX_VAR(opline->result.var);
14946 	compare_function(result, op1, op2);
14947 	ZVAL_BOOL(result, Z_LVAL_P(result) <= 0);
14948 	zval_ptr_dtor_nogc(free_op1);
14949 	zval_ptr_dtor_nogc(free_op2);
14950 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
14951 }
14952 
14953 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SPACESHIP_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
14954 {
14955 	USE_OPLINE
14956 	zend_free_op free_op1, free_op2;
14957 	zval *op1, *op2;
14958 
14959 	SAVE_OPLINE();
14960 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
14961 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
14962 	compare_function(EX_VAR(opline->result.var), op1, op2);
14963 	zval_ptr_dtor_nogc(free_op1);
14964 	zval_ptr_dtor_nogc(free_op2);
14965 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
14966 }
14967 
14968 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BW_OR_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
14969 {
14970 	USE_OPLINE
14971 	zend_free_op free_op1, free_op2;
14972 	zval *op1, *op2;
14973 
14974 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
14975 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
14976 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)
14977 			&& EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
14978 		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(op1) | Z_LVAL_P(op2));
14979 		ZEND_VM_NEXT_OPCODE();
14980 	}
14981 
14982 	SAVE_OPLINE();
14983 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
14984 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
14985 	}
14986 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
14987 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
14988 	}
14989 	bitwise_or_function(EX_VAR(opline->result.var), op1, op2);
14990 	zval_ptr_dtor_nogc(free_op1);
14991 	zval_ptr_dtor_nogc(free_op2);
14992 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
14993 }
14994 
14995 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BW_AND_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
14996 {
14997 	USE_OPLINE
14998 	zend_free_op free_op1, free_op2;
14999 	zval *op1, *op2;
15000 
15001 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
15002 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
15003 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)
15004 			&& EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
15005 		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(op1) & Z_LVAL_P(op2));
15006 		ZEND_VM_NEXT_OPCODE();
15007 	}
15008 
15009 	SAVE_OPLINE();
15010 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
15011 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
15012 	}
15013 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
15014 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
15015 	}
15016 	bitwise_and_function(EX_VAR(opline->result.var), op1, op2);
15017 	zval_ptr_dtor_nogc(free_op1);
15018 	zval_ptr_dtor_nogc(free_op2);
15019 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
15020 }
15021 
15022 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BW_XOR_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
15023 {
15024 	USE_OPLINE
15025 	zend_free_op free_op1, free_op2;
15026 	zval *op1, *op2;
15027 
15028 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
15029 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
15030 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)
15031 			&& EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
15032 		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(op1) ^ Z_LVAL_P(op2));
15033 		ZEND_VM_NEXT_OPCODE();
15034 	}
15035 
15036 	SAVE_OPLINE();
15037 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
15038 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
15039 	}
15040 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
15041 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
15042 	}
15043 	bitwise_xor_function(EX_VAR(opline->result.var), op1, op2);
15044 	zval_ptr_dtor_nogc(free_op1);
15045 	zval_ptr_dtor_nogc(free_op2);
15046 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
15047 }
15048 
15049 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BOOL_XOR_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
15050 {
15051 	USE_OPLINE
15052 	zend_free_op free_op1, free_op2;
15053 	zval *op1, *op2;
15054 
15055 	SAVE_OPLINE();
15056 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
15057 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
15058 	boolean_xor_function(EX_VAR(opline->result.var), op1, op2);
15059 	zval_ptr_dtor_nogc(free_op1);
15060 	zval_ptr_dtor_nogc(free_op2);
15061 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
15062 }
15063 
15064 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_R_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
15065 {
15066 	USE_OPLINE
15067 	zend_free_op free_op1, free_op2;
15068 	zval *container, *dim, *value, *result;
15069 
15070 	SAVE_OPLINE();
15071 	container = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
15072 	dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
15073 	if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
15074 		if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
15075 fetch_dim_r_array:
15076 			value = zend_fetch_dimension_address_inner(Z_ARRVAL_P(container), dim, (IS_TMP_VAR|IS_VAR), BP_VAR_R EXECUTE_DATA_CC);
15077 			result = EX_VAR(opline->result.var);
15078 			ZVAL_COPY_DEREF(result, value);
15079 		} else if (EXPECTED(Z_TYPE_P(container) == IS_REFERENCE)) {
15080 			container = Z_REFVAL_P(container);
15081 			if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
15082 				goto fetch_dim_r_array;
15083 			} else {
15084 				goto fetch_dim_r_slow;
15085 			}
15086 		} else {
15087 fetch_dim_r_slow:
15088 			if ((IS_TMP_VAR|IS_VAR) == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
15089 				dim++;
15090 			}
15091 			zend_fetch_dimension_address_read_R_slow(container, dim OPLINE_CC EXECUTE_DATA_CC);
15092 		}
15093 	} else {
15094 		zend_fetch_dimension_address_read_R(container, dim, (IS_TMP_VAR|IS_VAR) OPLINE_CC EXECUTE_DATA_CC);
15095 	}
15096 	zval_ptr_dtor_nogc(free_op2);
15097 	zval_ptr_dtor_nogc(free_op1);
15098 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
15099 }
15100 
15101 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_IS_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
15102 {
15103 	USE_OPLINE
15104 	zend_free_op free_op1, free_op2;
15105 	zval *container;
15106 
15107 	SAVE_OPLINE();
15108 	container = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
15109 	zend_fetch_dimension_address_read_IS(container, _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC), (IS_TMP_VAR|IS_VAR) OPLINE_CC EXECUTE_DATA_CC);
15110 	zval_ptr_dtor_nogc(free_op2);
15111 	zval_ptr_dtor_nogc(free_op1);
15112 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
15113 }
15114 
15115 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_R_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
15116 {
15117 	USE_OPLINE
15118 	zend_free_op free_op1;
15119 	zval *container;
15120 	zend_free_op free_op2;
15121 	zval *offset;
15122 	void **cache_slot = NULL;
15123 
15124 	SAVE_OPLINE();
15125 	container = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
15126 
15127 	if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
15128 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
15129 	}
15130 
15131 	offset = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
15132 
15133 	if ((IS_TMP_VAR|IS_VAR) == IS_CONST ||
15134 	    ((IS_TMP_VAR|IS_VAR) != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
15135 	    do {
15136 			if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
15137 				container = Z_REFVAL_P(container);
15138 				if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
15139 					break;
15140 				}
15141 			}
15142 			if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
15143 				GET_OP1_UNDEF_CV(container, BP_VAR_R);
15144 			}
15145 			if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(offset) == IS_UNDEF)) {
15146 				GET_OP2_UNDEF_CV(offset, BP_VAR_R);
15147 			}
15148 			goto fetch_obj_r_no_object;
15149 		} while (0);
15150 	}
15151 
15152 	/* here we are sure we are dealing with an object */
15153 	do {
15154 		zend_object *zobj = Z_OBJ_P(container);
15155 		zval *retval;
15156 
15157 		if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
15158 			cache_slot = CACHE_ADDR(opline->extended_value);
15159 
15160 			if (EXPECTED(zobj->ce == CACHED_PTR_EX(cache_slot))) {
15161 				uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
15162 
15163 				if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
15164 					retval = OBJ_PROP(zobj, prop_offset);
15165 					if (EXPECTED(Z_TYPE_INFO_P(retval) != IS_UNDEF)) {
15166 						ZVAL_COPY_DEREF(EX_VAR(opline->result.var), retval);
15167 						break;
15168 					}
15169 				} else if (EXPECTED(zobj->properties != NULL)) {
15170 					if (!IS_UNKNOWN_DYNAMIC_PROPERTY_OFFSET(prop_offset)) {
15171 						uintptr_t idx = ZEND_DECODE_DYN_PROP_OFFSET(prop_offset);
15172 
15173 						if (EXPECTED(idx < zobj->properties->nNumUsed * sizeof(Bucket))) {
15174 							Bucket *p = (Bucket*)((char*)zobj->properties->arData + idx);
15175 
15176 							if (EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
15177 						        (EXPECTED(p->key == Z_STR_P(offset)) ||
15178 						         (EXPECTED(p->h == ZSTR_H(Z_STR_P(offset))) &&
15179 						          EXPECTED(p->key != NULL) &&
15180 						          EXPECTED(zend_string_equal_content(p->key, Z_STR_P(offset)))))) {
15181 								ZVAL_COPY_DEREF(EX_VAR(opline->result.var), &p->val);
15182 								break;
15183 							}
15184 						}
15185 						CACHE_PTR_EX(cache_slot + 1, (void*)ZEND_DYNAMIC_PROPERTY_OFFSET);
15186 					}
15187 					retval = zend_hash_find_ex(zobj->properties, Z_STR_P(offset), 1);
15188 					if (EXPECTED(retval)) {
15189 						uintptr_t idx = (char*)retval - (char*)zobj->properties->arData;
15190 						CACHE_PTR_EX(cache_slot + 1, (void*)ZEND_ENCODE_DYN_PROP_OFFSET(idx));
15191 						ZVAL_COPY_DEREF(EX_VAR(opline->result.var), retval);
15192 						break;
15193 					}
15194 				}
15195 			}
15196 		} else if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(offset) == IS_UNDEF)) {
15197 			GET_OP2_UNDEF_CV(offset, BP_VAR_R);
15198 		}
15199 
15200 		if (UNEXPECTED(zobj->handlers->read_property == NULL)) {
15201 fetch_obj_r_no_object:
15202 			zend_wrong_property_read(offset);
15203 			ZVAL_NULL(EX_VAR(opline->result.var));
15204 		} else {
15205 			retval = zobj->handlers->read_property(container, offset, BP_VAR_R, cache_slot, EX_VAR(opline->result.var));
15206 
15207 			if (retval != EX_VAR(opline->result.var)) {
15208 				ZVAL_COPY_DEREF(EX_VAR(opline->result.var), retval);
15209 			} else if (UNEXPECTED(Z_ISREF_P(retval))) {
15210 				zend_unwrap_reference(retval);
15211 			}
15212 		}
15213 	} while (0);
15214 
15215 	zval_ptr_dtor_nogc(free_op2);
15216 	zval_ptr_dtor_nogc(free_op1);
15217 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
15218 }
15219 
15220 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
15221 {
15222 	USE_OPLINE
15223 	zend_free_op free_op1;
15224 	zval *container;
15225 	zend_free_op free_op2;
15226 	zval *offset;
15227 	void **cache_slot = NULL;
15228 
15229 	SAVE_OPLINE();
15230 	container = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
15231 
15232 	if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
15233 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
15234 	}
15235 
15236 	offset = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
15237 
15238 	if ((IS_TMP_VAR|IS_VAR) == IS_CONST ||
15239 	    ((IS_TMP_VAR|IS_VAR) != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
15240 		do {
15241 			if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
15242 				container = Z_REFVAL_P(container);
15243 				if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
15244 					break;
15245 				}
15246 			}
15247 			goto fetch_obj_is_no_object;
15248 		} while (0);
15249 	}
15250 
15251 	/* here we are sure we are dealing with an object */
15252 	do {
15253 		zend_object *zobj = Z_OBJ_P(container);
15254 		zval *retval;
15255 
15256 		if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
15257 			cache_slot = CACHE_ADDR(opline->extended_value);
15258 
15259 			if (EXPECTED(zobj->ce == CACHED_PTR_EX(cache_slot))) {
15260 				uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
15261 
15262 				if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
15263 					retval = OBJ_PROP(zobj, prop_offset);
15264 					if (EXPECTED(Z_TYPE_P(retval) != IS_UNDEF)) {
15265 						ZVAL_COPY(EX_VAR(opline->result.var), retval);
15266 						break;
15267 					}
15268 				} else if (EXPECTED(zobj->properties != NULL)) {
15269 					if (!IS_UNKNOWN_DYNAMIC_PROPERTY_OFFSET(prop_offset)) {
15270 						uintptr_t idx = ZEND_DECODE_DYN_PROP_OFFSET(prop_offset);
15271 
15272 						if (EXPECTED(idx < zobj->properties->nNumUsed * sizeof(Bucket))) {
15273 							Bucket *p = (Bucket*)((char*)zobj->properties->arData + idx);
15274 
15275 							if (EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
15276 						        (EXPECTED(p->key == Z_STR_P(offset)) ||
15277 						         (EXPECTED(p->h == ZSTR_H(Z_STR_P(offset))) &&
15278 						          EXPECTED(p->key != NULL) &&
15279 						          EXPECTED(zend_string_equal_content(p->key, Z_STR_P(offset)))))) {
15280 								ZVAL_COPY(EX_VAR(opline->result.var), &p->val);
15281 								break;
15282 							}
15283 						}
15284 						CACHE_PTR_EX(cache_slot + 1, (void*)ZEND_DYNAMIC_PROPERTY_OFFSET);
15285 					}
15286 					retval = zend_hash_find_ex(zobj->properties, Z_STR_P(offset), 1);
15287 					if (EXPECTED(retval)) {
15288 						uintptr_t idx = (char*)retval - (char*)zobj->properties->arData;
15289 						CACHE_PTR_EX(cache_slot + 1, (void*)ZEND_ENCODE_DYN_PROP_OFFSET(idx));
15290 						ZVAL_COPY(EX_VAR(opline->result.var), retval);
15291 						break;
15292 					}
15293 				}
15294 			}
15295 		}
15296 
15297 		if (UNEXPECTED(zobj->handlers->read_property == NULL)) {
15298 fetch_obj_is_no_object:
15299 			ZVAL_NULL(EX_VAR(opline->result.var));
15300 		} else {
15301 
15302 			retval = zobj->handlers->read_property(container, offset, BP_VAR_IS, cache_slot, EX_VAR(opline->result.var));
15303 
15304 			if (retval != EX_VAR(opline->result.var)) {
15305 				ZVAL_COPY(EX_VAR(opline->result.var), retval);
15306 			}
15307 		}
15308 	} while (0);
15309 
15310 	zval_ptr_dtor_nogc(free_op2);
15311 	zval_ptr_dtor_nogc(free_op1);
15312 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
15313 }
15314 
15315 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FAST_CONCAT_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
15316 {
15317 	USE_OPLINE
15318 	zend_free_op free_op1, free_op2;
15319 	zval *op1, *op2;
15320 	zend_string *op1_str, *op2_str, *str;
15321 
15322 
15323 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
15324 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
15325 	if (((IS_TMP_VAR|IS_VAR) == IS_CONST || EXPECTED(Z_TYPE_P(op1) == IS_STRING)) &&
15326 	    ((IS_TMP_VAR|IS_VAR) == IS_CONST || EXPECTED(Z_TYPE_P(op2) == IS_STRING))) {
15327 		zend_string *op1_str = Z_STR_P(op1);
15328 		zend_string *op2_str = Z_STR_P(op2);
15329 		zend_string *str;
15330 
15331 		if ((IS_TMP_VAR|IS_VAR) != IS_CONST && UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
15332 			if ((IS_TMP_VAR|IS_VAR) == IS_CONST || (IS_TMP_VAR|IS_VAR) == IS_CV) {
15333 				ZVAL_STR_COPY(EX_VAR(opline->result.var), op2_str);
15334 			} else {
15335 				ZVAL_STR(EX_VAR(opline->result.var), op2_str);
15336 			}
15337 			zval_ptr_dtor_nogc(free_op1);
15338 		} else if ((IS_TMP_VAR|IS_VAR) != IS_CONST && UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
15339 			if ((IS_TMP_VAR|IS_VAR) == IS_CONST || (IS_TMP_VAR|IS_VAR) == IS_CV) {
15340 				ZVAL_STR_COPY(EX_VAR(opline->result.var), op1_str);
15341 			} else {
15342 				ZVAL_STR(EX_VAR(opline->result.var), op1_str);
15343 			}
15344 			zval_ptr_dtor_nogc(free_op2);
15345 		} else if ((IS_TMP_VAR|IS_VAR) != IS_CONST && (IS_TMP_VAR|IS_VAR) != IS_CV &&
15346 		    !ZSTR_IS_INTERNED(op1_str) && GC_REFCOUNT(op1_str) == 1) {
15347 		    size_t len = ZSTR_LEN(op1_str);
15348 
15349 			str = zend_string_extend(op1_str, len + ZSTR_LEN(op2_str), 0);
15350 			memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
15351 			ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
15352 			zval_ptr_dtor_nogc(free_op2);
15353 		} else {
15354 			str = zend_string_alloc(ZSTR_LEN(op1_str) + ZSTR_LEN(op2_str), 0);
15355 			memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
15356 			memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
15357 			ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
15358 			zval_ptr_dtor_nogc(free_op1);
15359 			zval_ptr_dtor_nogc(free_op2);
15360 		}
15361 		ZEND_VM_NEXT_OPCODE();
15362 	}
15363 
15364 	SAVE_OPLINE();
15365 	if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
15366 		op1_str = Z_STR_P(op1);
15367 	} else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
15368 		op1_str = zend_string_copy(Z_STR_P(op1));
15369 	} else {
15370 		if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
15371 			GET_OP1_UNDEF_CV(op1, BP_VAR_R);
15372 		}
15373 		op1_str = zval_get_string_func(op1);
15374 	}
15375 	if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
15376 		op2_str = Z_STR_P(op2);
15377 	} else if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
15378 		op2_str = zend_string_copy(Z_STR_P(op2));
15379 	} else {
15380 		if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
15381 			GET_OP2_UNDEF_CV(op2, BP_VAR_R);
15382 		}
15383 		op2_str = zval_get_string_func(op2);
15384 	}
15385 	do {
15386 		if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
15387 			if (UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
15388 				if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
15389 					if (UNEXPECTED(Z_REFCOUNTED_P(op2))) {
15390 						GC_ADDREF(op2_str);
15391 					}
15392 				}
15393 				ZVAL_STR(EX_VAR(opline->result.var), op2_str);
15394 				zend_string_release_ex(op1_str, 0);
15395 				break;
15396 			}
15397 		}
15398 		if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
15399 			if (UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
15400 				if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
15401 					if (UNEXPECTED(Z_REFCOUNTED_P(op1))) {
15402 						GC_ADDREF(op1_str);
15403 					}
15404 				}
15405 				ZVAL_STR(EX_VAR(opline->result.var), op1_str);
15406 				zend_string_release_ex(op2_str, 0);
15407 				break;
15408 			}
15409 		}
15410 		str = zend_string_alloc(ZSTR_LEN(op1_str) + ZSTR_LEN(op2_str), 0);
15411 		memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
15412 		memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
15413 		ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
15414 		if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
15415 			zend_string_release_ex(op1_str, 0);
15416 		}
15417 		if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
15418 			zend_string_release_ex(op2_str, 0);
15419 		}
15420 	} while (0);
15421 	zval_ptr_dtor_nogc(free_op1);
15422 	zval_ptr_dtor_nogc(free_op2);
15423 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
15424 }
15425 
15426 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
15427 {
15428 	USE_OPLINE
15429 	zval *function_name;
15430 	zend_free_op free_op1, free_op2;
15431 	zval *object;
15432 	zend_function *fbc;
15433 	zend_class_entry *called_scope;
15434 	zend_object *obj;
15435 	zend_execute_data *call;
15436 	uint32_t call_info;
15437 
15438 	SAVE_OPLINE();
15439 
15440 	object = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
15441 
15442 	if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
15443 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
15444 	}
15445 
15446 	if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
15447 		function_name = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
15448 	}
15449 
15450 	if ((IS_TMP_VAR|IS_VAR) != IS_CONST &&
15451 	    UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) {
15452 		do {
15453 			if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV)) && Z_ISREF_P(function_name)) {
15454 				function_name = Z_REFVAL_P(function_name);
15455 				if (EXPECTED(Z_TYPE_P(function_name) == IS_STRING)) {
15456 					break;
15457 				}
15458 			} else if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
15459 				GET_OP2_UNDEF_CV(function_name, BP_VAR_R);
15460 				if (UNEXPECTED(EG(exception) != NULL)) {
15461 					zval_ptr_dtor_nogc(free_op1);
15462 					HANDLE_EXCEPTION();
15463 				}
15464 			}
15465 			zend_throw_error(NULL, "Method name must be a string");
15466 			zval_ptr_dtor_nogc(free_op2);
15467 			zval_ptr_dtor_nogc(free_op1);
15468 			HANDLE_EXCEPTION();
15469 		} while (0);
15470 	}
15471 
15472 	if ((IS_TMP_VAR|IS_VAR) != IS_UNUSED) {
15473 		do {
15474 			if ((IS_TMP_VAR|IS_VAR) == IS_CONST || UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
15475 				if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(object))) {
15476 					object = Z_REFVAL_P(object);
15477 					if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
15478 						break;
15479 					}
15480 				}
15481 				if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
15482 					object = GET_OP1_UNDEF_CV(object, BP_VAR_R);
15483 					if (UNEXPECTED(EG(exception) != NULL)) {
15484 						if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
15485 							zval_ptr_dtor_nogc(free_op2);
15486 						}
15487 						HANDLE_EXCEPTION();
15488 					}
15489 				}
15490 				if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
15491 					function_name = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
15492 				}
15493 				zend_invalid_method_call(object, function_name);
15494 				zval_ptr_dtor_nogc(free_op2);
15495 				zval_ptr_dtor_nogc(free_op1);
15496 				HANDLE_EXCEPTION();
15497 			}
15498 		} while (0);
15499 	}
15500 
15501 	obj = Z_OBJ_P(object);
15502 	called_scope = obj->ce;
15503 
15504 	if ((IS_TMP_VAR|IS_VAR) == IS_CONST &&
15505 	    EXPECTED(CACHED_PTR(opline->result.num) == called_scope)) {
15506 	    fbc = CACHED_PTR(opline->result.num + sizeof(void*));
15507 	} else {
15508 	    zend_object *orig_obj = obj;
15509 
15510 		if (UNEXPECTED(obj->handlers->get_method == NULL)) {
15511 			zend_throw_error(NULL, "Object does not support method calls");
15512 			zval_ptr_dtor_nogc(free_op2);
15513 			zval_ptr_dtor_nogc(free_op1);
15514 			HANDLE_EXCEPTION();
15515 		}
15516 
15517 		if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
15518 			function_name = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
15519 		}
15520 
15521 		/* First, locate the function. */
15522 		fbc = obj->handlers->get_method(&obj, Z_STR_P(function_name), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (RT_CONSTANT(opline, opline->op2) + 1) : NULL));
15523 		if (UNEXPECTED(fbc == NULL)) {
15524 			if (EXPECTED(!EG(exception))) {
15525 				zend_undefined_method(obj->ce, Z_STR_P(function_name));
15526 			}
15527 			zval_ptr_dtor_nogc(free_op2);
15528 			zval_ptr_dtor_nogc(free_op1);
15529 			HANDLE_EXCEPTION();
15530 		}
15531 		if ((IS_TMP_VAR|IS_VAR) == IS_CONST &&
15532 		    EXPECTED(fbc->type <= ZEND_USER_FUNCTION) &&
15533 		    EXPECTED(!(fbc->common.fn_flags & (ZEND_ACC_CALL_VIA_TRAMPOLINE|ZEND_ACC_NEVER_CACHE))) &&
15534 		    EXPECTED(obj == orig_obj)) {
15535 			CACHE_POLYMORPHIC_PTR(opline->result.num, called_scope, fbc);
15536 		}
15537 		if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_TMP_VAR)) && UNEXPECTED(obj != orig_obj)) {
15538 			/* Reset "object" to trigger reference counting */
15539 			object = NULL;
15540 		}
15541 		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!fbc->op_array.run_time_cache)) {
15542 			init_func_run_time_cache(&fbc->op_array);
15543 		}
15544 	}
15545 
15546 	if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
15547 		zval_ptr_dtor_nogc(free_op2);
15548 	}
15549 
15550 	call_info = ZEND_CALL_NESTED_FUNCTION;
15551 	if (UNEXPECTED((fbc->common.fn_flags & ZEND_ACC_STATIC) != 0)) {
15552 		obj = NULL;
15553 		zval_ptr_dtor_nogc(free_op1);
15554 
15555 		if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_TMP_VAR)) && UNEXPECTED(EG(exception))) {
15556 			HANDLE_EXCEPTION();
15557 		}
15558 	} else if ((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_TMP_VAR|IS_CV)) {
15559 		/* CV may be changed indirectly (e.g. when it's a reference) */
15560 		call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_RELEASE_THIS;
15561 		if ((IS_TMP_VAR|IS_VAR) == IS_CV) {
15562 			GC_ADDREF(obj); /* For $this pointer */
15563 		} else if (free_op1 != object) {
15564 			GC_ADDREF(obj); /* For $this pointer */
15565 			zval_ptr_dtor_nogc(free_op1);
15566 		}
15567 	}
15568 
15569 	call = zend_vm_stack_push_call_frame(call_info,
15570 		fbc, opline->extended_value, called_scope, obj);
15571 	call->prev_execute_data = EX(call);
15572 	EX(call) = call;
15573 
15574 	ZEND_VM_NEXT_OPCODE();
15575 }
15576 
15577 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_CASE_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
15578 {
15579 	USE_OPLINE
15580 	zend_free_op free_op1, free_op2;
15581 	zval *op1, *op2, *result;
15582 
15583 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
15584 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
15585 	do {
15586 		int result;
15587 
15588 		if (EXPECTED(Z_TYPE_P(op1) == IS_LONG)) {
15589 			if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
15590 				result = (Z_LVAL_P(op1) == Z_LVAL_P(op2));
15591 			} else if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
15592 				result = ((double)Z_LVAL_P(op1) == Z_DVAL_P(op2));
15593 			} else {
15594 				break;
15595 			}
15596 		} else if (EXPECTED(Z_TYPE_P(op1) == IS_DOUBLE)) {
15597 			if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
15598 				result = (Z_DVAL_P(op1) == Z_DVAL_P(op2));
15599 			} else if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
15600 				result = (Z_DVAL_P(op1) == ((double)Z_LVAL_P(op2)));
15601 			} else {
15602 				break;
15603 			}
15604 		} else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
15605 			if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
15606 				result = zend_fast_equal_strings(Z_STR_P(op1), Z_STR_P(op2));
15607 				zval_ptr_dtor_nogc(free_op2);
15608 			} else {
15609 				break;
15610 			}
15611 		} else {
15612 			break;
15613 		}
15614 		ZEND_VM_SMART_BRANCH(result, 0);
15615 		ZVAL_BOOL(EX_VAR(opline->result.var), result);
15616 		ZEND_VM_NEXT_OPCODE();
15617 	} while (0);
15618 
15619 	SAVE_OPLINE();
15620 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
15621 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
15622 	}
15623 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
15624 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
15625 	}
15626 	result = EX_VAR(opline->result.var);
15627 	compare_function(result, op1, op2);
15628 	ZVAL_BOOL(result, Z_LVAL_P(result) == 0);
15629 	zval_ptr_dtor_nogc(free_op2);
15630 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
15631 }
15632 
15633 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
15634 {
15635 	USE_OPLINE
15636 	zend_free_op free_op1, free_op2;
15637 	zval *container;
15638 	int result;
15639 	zend_ulong hval;
15640 	zval *offset;
15641 
15642 	SAVE_OPLINE();
15643 	container = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
15644 	offset = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
15645 
15646 	if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
15647 		HashTable *ht;
15648 		zval *value;
15649 		zend_string *str;
15650 
15651 isset_dim_obj_array:
15652 		ht = Z_ARRVAL_P(container);
15653 isset_again:
15654 		if (EXPECTED(Z_TYPE_P(offset) == IS_STRING)) {
15655 			str = Z_STR_P(offset);
15656 			if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
15657 				if (ZEND_HANDLE_NUMERIC(str, hval)) {
15658 					goto num_index_prop;
15659 				}
15660 			}
15661 			value = zend_hash_find_ex_ind(ht, str, (IS_TMP_VAR|IS_VAR) == IS_CONST);
15662 		} else if (EXPECTED(Z_TYPE_P(offset) == IS_LONG)) {
15663 			hval = Z_LVAL_P(offset);
15664 num_index_prop:
15665 			value = zend_hash_index_find(ht, hval);
15666 		} else if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(offset))) {
15667 			offset = Z_REFVAL_P(offset);
15668 			goto isset_again;
15669 		} else {
15670 			value = zend_find_array_dim_slow(ht, offset EXECUTE_DATA_CC);
15671 		}
15672 
15673 		if (!(opline->extended_value & ZEND_ISEMPTY)) {
15674 			/* > IS_NULL means not IS_UNDEF and not IS_NULL */
15675 			result = value != NULL && Z_TYPE_P(value) > IS_NULL &&
15676 			    (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL);
15677 		} else {
15678 			result = (value == NULL || !i_zend_is_true(value));
15679 		}
15680 		goto isset_dim_obj_exit;
15681 	} else if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(container))) {
15682 		container = Z_REFVAL_P(container);
15683 		if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
15684 			goto isset_dim_obj_array;
15685 		}
15686 	}
15687 
15688 	if ((IS_TMP_VAR|IS_VAR) == IS_CONST && Z_EXTRA_P(offset) == ZEND_EXTRA_VALUE) {
15689 		offset++;
15690 	}
15691 	if (!(opline->extended_value & ZEND_ISEMPTY)) {
15692 		result = zend_isset_dim_slow(container, offset EXECUTE_DATA_CC);
15693 	} else {
15694 		result = zend_isempty_dim_slow(container, offset EXECUTE_DATA_CC);
15695 	}
15696 
15697 isset_dim_obj_exit:
15698 	zval_ptr_dtor_nogc(free_op2);
15699 	zval_ptr_dtor_nogc(free_op1);
15700 	ZEND_VM_SMART_BRANCH(result, 1);
15701 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
15702 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
15703 }
15704 
15705 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
15706 {
15707 	USE_OPLINE
15708 	zend_free_op free_op1, free_op2;
15709 	zval *container;
15710 	int result;
15711 	zval *offset;
15712 
15713 	SAVE_OPLINE();
15714 	container = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
15715 
15716 	if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
15717 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
15718 	}
15719 
15720 	offset = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
15721 
15722 	if ((IS_TMP_VAR|IS_VAR) == IS_CONST ||
15723 	    ((IS_TMP_VAR|IS_VAR) != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
15724 		if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
15725 			container = Z_REFVAL_P(container);
15726 			if (UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) {
15727 				goto isset_no_object;
15728 			}
15729 		} else {
15730 			goto isset_no_object;
15731 		}
15732 	}
15733 	if (UNEXPECTED(!Z_OBJ_HT_P(container)->has_property)) {
15734 		zend_wrong_property_check(offset);
15735 isset_no_object:
15736 		result = (opline->extended_value & ZEND_ISEMPTY);
15737 	} else {
15738 		result =
15739 			(opline->extended_value & ZEND_ISEMPTY) ^
15740 			Z_OBJ_HT_P(container)->has_property(container, offset, (opline->extended_value & ZEND_ISEMPTY), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_ISEMPTY) : NULL));
15741 	}
15742 
15743 	zval_ptr_dtor_nogc(free_op2);
15744 	zval_ptr_dtor_nogc(free_op1);
15745 	ZEND_VM_SMART_BRANCH(result, 1);
15746 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
15747 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
15748 }
15749 
15750 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_fetch_static_prop_helper_SPEC_TMPVAR_VAR(int type ZEND_OPCODE_HANDLER_ARGS_DC)
15751 {
15752 	USE_OPLINE
15753 	zend_free_op free_op1;
15754 	zval *varname;
15755 	zval *retval;
15756 	zend_string *name, *tmp_name;
15757 	zend_class_entry *ce;
15758 
15759 	SAVE_OPLINE();
15760 
15761 	do {
15762 		if (IS_VAR == IS_CONST) {
15763 			if ((IS_TMP_VAR|IS_VAR) == IS_CONST && EXPECTED((ce = CACHED_PTR(opline->extended_value)) != NULL)) {
15764 				retval = CACHED_PTR(opline->extended_value + sizeof(void*));
15765 				break;
15766 			} else {
15767 				zval *class_name = RT_CONSTANT(opline, opline->op2);
15768 
15769 				if (UNEXPECTED((ce = CACHED_PTR(opline->extended_value)) == NULL)) {
15770 					ce = zend_fetch_class_by_name(Z_STR_P(class_name), class_name + 1, ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
15771 					if (UNEXPECTED(ce == NULL)) {
15772 						zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
15773 						retval = NULL;
15774 						break;
15775 					}
15776 					if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
15777 						CACHE_PTR(opline->extended_value, ce);
15778 					}
15779 				}
15780 			}
15781 		} else {
15782 			if (IS_VAR == IS_UNUSED) {
15783 				ce = zend_fetch_class(NULL, opline->op2.num);
15784 				if (UNEXPECTED(ce == NULL)) {
15785 					zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
15786 					retval = NULL;
15787 					break;
15788 				}
15789 			} else {
15790 				ce = Z_CE_P(EX_VAR(opline->op2.var));
15791 			}
15792 			if ((IS_TMP_VAR|IS_VAR) == IS_CONST &&
15793 			    EXPECTED(CACHED_PTR(opline->extended_value) == ce)) {
15794 				retval = CACHED_PTR(opline->extended_value + sizeof(void*));
15795 				break;
15796 			}
15797 		}
15798 
15799 		varname = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
15800 		if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
15801 			name = Z_STR_P(varname);
15802 		} else if (EXPECTED(Z_TYPE_P(varname) == IS_STRING)) {
15803 			name = Z_STR_P(varname);
15804 			tmp_name = NULL;
15805 		} else {
15806 			if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(varname) == IS_UNDEF)) {
15807 				zval_undefined_cv(EX(opline)->op1.var EXECUTE_DATA_CC);
15808 			}
15809 			name = zval_get_tmp_string(varname, &tmp_name);
15810 		}
15811 
15812 		retval = zend_std_get_static_property(ce, name, type == BP_VAR_IS);
15813 
15814 		if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
15815 			zend_tmp_string_release(tmp_name);
15816 		}
15817 
15818 		if ((IS_TMP_VAR|IS_VAR) == IS_CONST && EXPECTED(retval)) {
15819 			CACHE_POLYMORPHIC_PTR(opline->extended_value, ce, retval);
15820 		}
15821 
15822 		zval_ptr_dtor_nogc(free_op1);
15823 	} while (0);
15824 
15825 	if (UNEXPECTED(retval == NULL)) {
15826 		if (EG(exception)) {
15827 			ZVAL_UNDEF(EX_VAR(opline->result.var));
15828 			HANDLE_EXCEPTION();
15829 		} else {
15830 			ZEND_ASSERT(type == BP_VAR_IS);
15831 			retval = &EG(uninitialized_zval);
15832 		}
15833 	}
15834 
15835 	if (type == BP_VAR_R || type == BP_VAR_IS) {
15836 		ZVAL_COPY_DEREF(EX_VAR(opline->result.var), retval);
15837 	} else {
15838 		ZVAL_INDIRECT(EX_VAR(opline->result.var), retval);
15839 	}
15840 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
15841 }
15842 
15843 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_R_SPEC_TMPVAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
15844 {
15845 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_TMPVAR_VAR(BP_VAR_R ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
15846 }
15847 
15848 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_W_SPEC_TMPVAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
15849 {
15850 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_TMPVAR_VAR(BP_VAR_W ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
15851 }
15852 
15853 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_RW_SPEC_TMPVAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
15854 {
15855 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_TMPVAR_VAR(BP_VAR_RW ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
15856 }
15857 
15858 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_TMPVAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
15859 {
15860 	int fetch_type =
15861 		(UNEXPECTED(ZEND_CALL_INFO(EX(call)) & ZEND_CALL_SEND_ARG_BY_REF)) ?
15862 			BP_VAR_W : BP_VAR_R;
15863 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_TMPVAR_VAR(fetch_type ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
15864 }
15865 
15866 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_UNSET_SPEC_TMPVAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
15867 {
15868 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_TMPVAR_VAR(BP_VAR_UNSET ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
15869 }
15870 
15871 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_IS_SPEC_TMPVAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
15872 {
15873 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_TMPVAR_VAR(BP_VAR_IS ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
15874 }
15875 
15876 static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_UNSET_STATIC_PROP_SPEC_TMPVAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
15877 {
15878 	USE_OPLINE
15879 	zval *varname;
15880 	zend_string *name, *tmp_name;
15881 	zend_class_entry *ce;
15882 	zend_free_op free_op1;
15883 
15884 	SAVE_OPLINE();
15885 
15886 	if (IS_VAR == IS_CONST) {
15887 		ce = CACHED_PTR(opline->extended_value);
15888 		if (UNEXPECTED(ce == NULL)) {
15889 			ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op2)), RT_CONSTANT(opline, opline->op2) + 1, ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
15890 			if (UNEXPECTED(ce == NULL)) {
15891 				ZEND_ASSERT(EG(exception));
15892 				zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
15893 				HANDLE_EXCEPTION();
15894 			}
15895 			/*CACHE_PTR(opline->extended_value, ce);*/
15896 		}
15897 	} else if (IS_VAR == IS_UNUSED) {
15898 		ce = zend_fetch_class(NULL, opline->op2.num);
15899 		if (UNEXPECTED(ce == NULL)) {
15900 			ZEND_ASSERT(EG(exception));
15901 			zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
15902 			HANDLE_EXCEPTION();
15903 		}
15904 	} else {
15905 		ce = Z_CE_P(EX_VAR(opline->op2.var));
15906 	}
15907 
15908 	varname = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
15909 	if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
15910 		name = Z_STR_P(varname);
15911 	} else if (EXPECTED(Z_TYPE_P(varname) == IS_STRING)) {
15912 		name = Z_STR_P(varname);
15913 		tmp_name = NULL;
15914 	} else {
15915 		if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(varname) == IS_UNDEF)) {
15916 			varname = GET_OP1_UNDEF_CV(varname, BP_VAR_R);
15917 		}
15918 		name = zval_get_tmp_string(varname, &tmp_name);
15919 	}
15920 
15921 	zend_std_unset_static_property(ce, name);
15922 
15923 	if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
15924 		zend_tmp_string_release(tmp_name);
15925 	}
15926 	zval_ptr_dtor_nogc(free_op1);
15927 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
15928 }
15929 
15930 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_TMPVAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
15931 {
15932 	USE_OPLINE
15933 	zval *value;
15934 	int result;
15935 	zend_free_op free_op1;
15936 	zval *varname;
15937 	zend_string *name, *tmp_name;
15938 	zend_class_entry *ce;
15939 
15940 	SAVE_OPLINE();
15941 	if (IS_VAR == IS_CONST) {
15942 		if ((IS_TMP_VAR|IS_VAR) == IS_CONST && EXPECTED((ce = CACHED_PTR(opline->extended_value & ~ZEND_ISEMPTY)) != NULL)) {
15943 			value = CACHED_PTR((opline->extended_value & ~ZEND_ISEMPTY) + sizeof(void*));
15944 			goto is_static_prop_return;
15945 		} else if (UNEXPECTED((ce = CACHED_PTR(opline->extended_value & ~ZEND_ISEMPTY)) == NULL)) {
15946 			ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op2)), RT_CONSTANT(opline, opline->op2) + 1, ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
15947 			if (UNEXPECTED(ce == NULL)) {
15948 				ZEND_ASSERT(EG(exception));
15949 				ZVAL_UNDEF(EX_VAR(opline->result.var));
15950 				HANDLE_EXCEPTION();
15951 			}
15952 			if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
15953 				CACHE_PTR(opline->extended_value & ~ZEND_ISEMPTY, ce);
15954 			}
15955 		}
15956 	} else {
15957 		if (IS_VAR == IS_UNUSED) {
15958 			ce = zend_fetch_class(NULL, opline->op2.num);
15959 			if (UNEXPECTED(ce == NULL)) {
15960 				ZEND_ASSERT(EG(exception));
15961 				zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
15962 				ZVAL_UNDEF(EX_VAR(opline->result.var));
15963 				HANDLE_EXCEPTION();
15964 			}
15965 		} else {
15966 			ce = Z_CE_P(EX_VAR(opline->op2.var));
15967 		}
15968 		if ((IS_TMP_VAR|IS_VAR) == IS_CONST &&
15969 		    EXPECTED(CACHED_PTR(opline->extended_value & ~ZEND_ISEMPTY) == ce)) {
15970 
15971 			value = CACHED_PTR((opline->extended_value & ~ZEND_ISEMPTY) + sizeof(void*));
15972 			goto is_static_prop_return;
15973 		}
15974 	}
15975 
15976 	varname = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
15977 	if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
15978 		name = Z_STR_P(varname);
15979 	} else {
15980 		name = zval_get_tmp_string(varname, &tmp_name);
15981 	}
15982 
15983 	value = zend_std_get_static_property(ce, name, 1);
15984 
15985 	if ((IS_TMP_VAR|IS_VAR) == IS_CONST && value) {
15986 		CACHE_POLYMORPHIC_PTR(opline->extended_value & ~ZEND_ISEMPTY, ce, value);
15987 	}
15988 
15989 	if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
15990 		zend_tmp_string_release(tmp_name);
15991 	}
15992 	zval_ptr_dtor_nogc(free_op1);
15993 
15994 is_static_prop_return:
15995 	if (!(opline->extended_value & ZEND_ISEMPTY)) {
15996 		result = value && Z_TYPE_P(value) > IS_NULL &&
15997 		    (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL);
15998 	} else {
15999 		result = !value || !i_zend_is_true(value);
16000 	}
16001 
16002 	ZEND_VM_SMART_BRANCH(result, 1);
16003 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
16004 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
16005 }
16006 
16007 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INSTANCEOF_SPEC_TMPVAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
16008 {
16009 	USE_OPLINE
16010 	zend_free_op free_op1;
16011 	zval *expr;
16012 	zend_bool result;
16013 
16014 	SAVE_OPLINE();
16015 	expr = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
16016 
16017 try_instanceof:
16018 	if (Z_TYPE_P(expr) == IS_OBJECT) {
16019 		zend_class_entry *ce;
16020 
16021 		if (IS_VAR == IS_CONST) {
16022 			ce = CACHED_PTR(opline->extended_value);
16023 			if (UNEXPECTED(ce == NULL)) {
16024 				ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op2)), RT_CONSTANT(opline, opline->op2) + 1, ZEND_FETCH_CLASS_NO_AUTOLOAD);
16025 				if (EXPECTED(ce)) {
16026 					CACHE_PTR(opline->extended_value, ce);
16027 				}
16028 			}
16029 		} else if (IS_VAR == IS_UNUSED) {
16030 			ce = zend_fetch_class(NULL, opline->op2.num);
16031 			if (UNEXPECTED(ce == NULL)) {
16032 				ZEND_ASSERT(EG(exception));
16033 				zval_ptr_dtor_nogc(free_op1);
16034 				ZVAL_UNDEF(EX_VAR(opline->result.var));
16035 				HANDLE_EXCEPTION();
16036 			}
16037 		} else {
16038 			ce = Z_CE_P(EX_VAR(opline->op2.var));
16039 		}
16040 		result = ce && instanceof_function(Z_OBJCE_P(expr), ce);
16041 	} else if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV)) && Z_TYPE_P(expr) == IS_REFERENCE) {
16042 		expr = Z_REFVAL_P(expr);
16043 		goto try_instanceof;
16044 	} else {
16045 		if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(expr) == IS_UNDEF)) {
16046 			GET_OP1_UNDEF_CV(expr, BP_VAR_R);
16047 		}
16048 		result = 0;
16049 	}
16050 	zval_ptr_dtor_nogc(free_op1);
16051 	ZEND_VM_SMART_BRANCH(result, 1);
16052 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
16053 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
16054 }
16055 
16056 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_TMPVAR_UNUSED(int type ZEND_OPCODE_HANDLER_ARGS_DC)
16057 {
16058 	USE_OPLINE
16059 	zend_free_op free_op1;
16060 	zval *varname;
16061 	zval *retval;
16062 	zend_string *name, *tmp_name;
16063 	HashTable *target_symbol_table;
16064 
16065 	SAVE_OPLINE();
16066 	varname = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
16067 
16068 	if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
16069 		name = Z_STR_P(varname);
16070 	} else if (EXPECTED(Z_TYPE_P(varname) == IS_STRING)) {
16071 		name = Z_STR_P(varname);
16072 		tmp_name = NULL;
16073 	} else {
16074 		if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(varname) == IS_UNDEF)) {
16075 			GET_OP1_UNDEF_CV(varname, BP_VAR_R);
16076 		}
16077 		name = zval_get_tmp_string(varname, &tmp_name);
16078 	}
16079 
16080 	target_symbol_table = zend_get_target_symbol_table(opline->extended_value EXECUTE_DATA_CC);
16081 	retval = zend_hash_find_ex(target_symbol_table, name, (IS_TMP_VAR|IS_VAR) == IS_CONST);
16082 	if (retval == NULL) {
16083 		if (UNEXPECTED(zend_string_equals(name, ZSTR_KNOWN(ZEND_STR_THIS)))) {
16084 fetch_this:
16085 			zend_fetch_this_var(type OPLINE_CC EXECUTE_DATA_CC);
16086 			if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
16087 				zend_tmp_string_release(tmp_name);
16088 			}
16089 			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
16090 		}
16091 		if (type == BP_VAR_W) {
16092 			retval = zend_hash_add_new(target_symbol_table, name, &EG(uninitialized_zval));
16093 		} else if (type == BP_VAR_IS) {
16094 			retval = &EG(uninitialized_zval);
16095 		} else {
16096 			zend_error(E_NOTICE,"Undefined variable: %s", ZSTR_VAL(name));
16097 			if (type == BP_VAR_RW) {
16098 				retval = zend_hash_update(target_symbol_table, name, &EG(uninitialized_zval));
16099 			} else {
16100 				retval = &EG(uninitialized_zval);
16101 			}
16102 		}
16103 	/* GLOBAL or $$name variable may be an INDIRECT pointer to CV */
16104 	} else if (Z_TYPE_P(retval) == IS_INDIRECT) {
16105 		retval = Z_INDIRECT_P(retval);
16106 		if (Z_TYPE_P(retval) == IS_UNDEF) {
16107 			if (UNEXPECTED(zend_string_equals(name, ZSTR_KNOWN(ZEND_STR_THIS)))) {
16108 				goto fetch_this;
16109 			}
16110 			if (type == BP_VAR_W) {
16111 				ZVAL_NULL(retval);
16112 			} else if (type == BP_VAR_IS) {
16113 				retval = &EG(uninitialized_zval);
16114 			} else {
16115 				zend_error(E_NOTICE,"Undefined variable: %s", ZSTR_VAL(name));
16116 				if (type == BP_VAR_RW) {
16117 					ZVAL_NULL(retval);
16118 				} else {
16119 					retval = &EG(uninitialized_zval);
16120 				}
16121 			}
16122 		}
16123 	}
16124 
16125 	if (!(opline->extended_value & ZEND_FETCH_GLOBAL_LOCK)) {
16126 		zval_ptr_dtor_nogc(free_op1);
16127 	}
16128 
16129 	if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
16130 		zend_tmp_string_release(tmp_name);
16131 	}
16132 
16133 	ZEND_ASSERT(retval != NULL);
16134 	if (type == BP_VAR_R || type == BP_VAR_IS) {
16135 		ZVAL_COPY_DEREF(EX_VAR(opline->result.var), retval);
16136 	} else {
16137 		ZVAL_INDIRECT(EX_VAR(opline->result.var), retval);
16138 	}
16139 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
16140 }
16141 
16142 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_R_SPEC_TMPVAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
16143 {
16144 	ZEND_VM_TAIL_CALL(zend_fetch_var_address_helper_SPEC_TMPVAR_UNUSED(BP_VAR_R ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
16145 }
16146 
16147 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_W_SPEC_TMPVAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
16148 {
16149 	ZEND_VM_TAIL_CALL(zend_fetch_var_address_helper_SPEC_TMPVAR_UNUSED(BP_VAR_W ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
16150 }
16151 
16152 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_RW_SPEC_TMPVAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
16153 {
16154 	ZEND_VM_TAIL_CALL(zend_fetch_var_address_helper_SPEC_TMPVAR_UNUSED(BP_VAR_RW ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
16155 }
16156 
16157 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_FUNC_ARG_SPEC_TMPVAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
16158 {
16159 	int fetch_type =
16160 		(UNEXPECTED(ZEND_CALL_INFO(EX(call)) & ZEND_CALL_SEND_ARG_BY_REF)) ?
16161 			BP_VAR_W : BP_VAR_R;
16162 	ZEND_VM_TAIL_CALL(zend_fetch_var_address_helper_SPEC_TMPVAR_UNUSED(fetch_type ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
16163 }
16164 
16165 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_UNSET_SPEC_TMPVAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
16166 {
16167 	ZEND_VM_TAIL_CALL(zend_fetch_var_address_helper_SPEC_TMPVAR_UNUSED(BP_VAR_UNSET ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
16168 }
16169 
16170 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_IS_SPEC_TMPVAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
16171 {
16172 	ZEND_VM_TAIL_CALL(zend_fetch_var_address_helper_SPEC_TMPVAR_UNUSED(BP_VAR_IS ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
16173 }
16174 
16175 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_fetch_static_prop_helper_SPEC_TMPVAR_UNUSED(int type ZEND_OPCODE_HANDLER_ARGS_DC)
16176 {
16177 	USE_OPLINE
16178 	zend_free_op free_op1;
16179 	zval *varname;
16180 	zval *retval;
16181 	zend_string *name, *tmp_name;
16182 	zend_class_entry *ce;
16183 
16184 	SAVE_OPLINE();
16185 
16186 	do {
16187 		if (IS_UNUSED == IS_CONST) {
16188 			if ((IS_TMP_VAR|IS_VAR) == IS_CONST && EXPECTED((ce = CACHED_PTR(opline->extended_value)) != NULL)) {
16189 				retval = CACHED_PTR(opline->extended_value + sizeof(void*));
16190 				break;
16191 			} else {
16192 				zval *class_name = RT_CONSTANT(opline, opline->op2);
16193 
16194 				if (UNEXPECTED((ce = CACHED_PTR(opline->extended_value)) == NULL)) {
16195 					ce = zend_fetch_class_by_name(Z_STR_P(class_name), class_name + 1, ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
16196 					if (UNEXPECTED(ce == NULL)) {
16197 						zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
16198 						retval = NULL;
16199 						break;
16200 					}
16201 					if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
16202 						CACHE_PTR(opline->extended_value, ce);
16203 					}
16204 				}
16205 			}
16206 		} else {
16207 			if (IS_UNUSED == IS_UNUSED) {
16208 				ce = zend_fetch_class(NULL, opline->op2.num);
16209 				if (UNEXPECTED(ce == NULL)) {
16210 					zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
16211 					retval = NULL;
16212 					break;
16213 				}
16214 			} else {
16215 				ce = Z_CE_P(EX_VAR(opline->op2.var));
16216 			}
16217 			if ((IS_TMP_VAR|IS_VAR) == IS_CONST &&
16218 			    EXPECTED(CACHED_PTR(opline->extended_value) == ce)) {
16219 				retval = CACHED_PTR(opline->extended_value + sizeof(void*));
16220 				break;
16221 			}
16222 		}
16223 
16224 		varname = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
16225 		if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
16226 			name = Z_STR_P(varname);
16227 		} else if (EXPECTED(Z_TYPE_P(varname) == IS_STRING)) {
16228 			name = Z_STR_P(varname);
16229 			tmp_name = NULL;
16230 		} else {
16231 			if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(varname) == IS_UNDEF)) {
16232 				zval_undefined_cv(EX(opline)->op1.var EXECUTE_DATA_CC);
16233 			}
16234 			name = zval_get_tmp_string(varname, &tmp_name);
16235 		}
16236 
16237 		retval = zend_std_get_static_property(ce, name, type == BP_VAR_IS);
16238 
16239 		if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
16240 			zend_tmp_string_release(tmp_name);
16241 		}
16242 
16243 		if ((IS_TMP_VAR|IS_VAR) == IS_CONST && EXPECTED(retval)) {
16244 			CACHE_POLYMORPHIC_PTR(opline->extended_value, ce, retval);
16245 		}
16246 
16247 		zval_ptr_dtor_nogc(free_op1);
16248 	} while (0);
16249 
16250 	if (UNEXPECTED(retval == NULL)) {
16251 		if (EG(exception)) {
16252 			ZVAL_UNDEF(EX_VAR(opline->result.var));
16253 			HANDLE_EXCEPTION();
16254 		} else {
16255 			ZEND_ASSERT(type == BP_VAR_IS);
16256 			retval = &EG(uninitialized_zval);
16257 		}
16258 	}
16259 
16260 	if (type == BP_VAR_R || type == BP_VAR_IS) {
16261 		ZVAL_COPY_DEREF(EX_VAR(opline->result.var), retval);
16262 	} else {
16263 		ZVAL_INDIRECT(EX_VAR(opline->result.var), retval);
16264 	}
16265 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
16266 }
16267 
16268 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_R_SPEC_TMPVAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
16269 {
16270 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_TMPVAR_UNUSED(BP_VAR_R ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
16271 }
16272 
16273 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_W_SPEC_TMPVAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
16274 {
16275 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_TMPVAR_UNUSED(BP_VAR_W ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
16276 }
16277 
16278 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_RW_SPEC_TMPVAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
16279 {
16280 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_TMPVAR_UNUSED(BP_VAR_RW ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
16281 }
16282 
16283 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_TMPVAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
16284 {
16285 	int fetch_type =
16286 		(UNEXPECTED(ZEND_CALL_INFO(EX(call)) & ZEND_CALL_SEND_ARG_BY_REF)) ?
16287 			BP_VAR_W : BP_VAR_R;
16288 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_TMPVAR_UNUSED(fetch_type ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
16289 }
16290 
16291 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_UNSET_SPEC_TMPVAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
16292 {
16293 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_TMPVAR_UNUSED(BP_VAR_UNSET ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
16294 }
16295 
16296 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_IS_SPEC_TMPVAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
16297 {
16298 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_TMPVAR_UNUSED(BP_VAR_IS ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
16299 }
16300 
16301 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_UNSET_VAR_SPEC_TMPVAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
16302 {
16303 	USE_OPLINE
16304 	zval *varname;
16305 	zend_string *name, *tmp_name;
16306 	HashTable *target_symbol_table;
16307 	zend_free_op free_op1;
16308 
16309 	SAVE_OPLINE();
16310 
16311 	varname = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
16312 
16313 	if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
16314 		name = Z_STR_P(varname);
16315 	} else if (EXPECTED(Z_TYPE_P(varname) == IS_STRING)) {
16316 		name = Z_STR_P(varname);
16317 		tmp_name = NULL;
16318 	} else {
16319 		if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(varname) == IS_UNDEF)) {
16320 			varname = GET_OP1_UNDEF_CV(varname, BP_VAR_R);
16321 		}
16322 		name = zval_get_tmp_string(varname, &tmp_name);
16323 	}
16324 
16325 	target_symbol_table = zend_get_target_symbol_table(opline->extended_value EXECUTE_DATA_CC);
16326 	zend_hash_del_ind(target_symbol_table, name);
16327 
16328 	if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
16329 		zend_tmp_string_release(tmp_name);
16330 	}
16331 	zval_ptr_dtor_nogc(free_op1);
16332 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
16333 }
16334 
16335 static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_UNSET_STATIC_PROP_SPEC_TMPVAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
16336 {
16337 	USE_OPLINE
16338 	zval *varname;
16339 	zend_string *name, *tmp_name;
16340 	zend_class_entry *ce;
16341 	zend_free_op free_op1;
16342 
16343 	SAVE_OPLINE();
16344 
16345 	if (IS_UNUSED == IS_CONST) {
16346 		ce = CACHED_PTR(opline->extended_value);
16347 		if (UNEXPECTED(ce == NULL)) {
16348 			ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op2)), RT_CONSTANT(opline, opline->op2) + 1, ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
16349 			if (UNEXPECTED(ce == NULL)) {
16350 				ZEND_ASSERT(EG(exception));
16351 				zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
16352 				HANDLE_EXCEPTION();
16353 			}
16354 			/*CACHE_PTR(opline->extended_value, ce);*/
16355 		}
16356 	} else if (IS_UNUSED == IS_UNUSED) {
16357 		ce = zend_fetch_class(NULL, opline->op2.num);
16358 		if (UNEXPECTED(ce == NULL)) {
16359 			ZEND_ASSERT(EG(exception));
16360 			zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
16361 			HANDLE_EXCEPTION();
16362 		}
16363 	} else {
16364 		ce = Z_CE_P(EX_VAR(opline->op2.var));
16365 	}
16366 
16367 	varname = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
16368 	if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
16369 		name = Z_STR_P(varname);
16370 	} else if (EXPECTED(Z_TYPE_P(varname) == IS_STRING)) {
16371 		name = Z_STR_P(varname);
16372 		tmp_name = NULL;
16373 	} else {
16374 		if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(varname) == IS_UNDEF)) {
16375 			varname = GET_OP1_UNDEF_CV(varname, BP_VAR_R);
16376 		}
16377 		name = zval_get_tmp_string(varname, &tmp_name);
16378 	}
16379 
16380 	zend_std_unset_static_property(ce, name);
16381 
16382 	if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
16383 		zend_tmp_string_release(tmp_name);
16384 	}
16385 	zval_ptr_dtor_nogc(free_op1);
16386 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
16387 }
16388 
16389 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ISSET_ISEMPTY_VAR_SPEC_TMPVAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
16390 {
16391 	USE_OPLINE
16392 	zval *value;
16393 	int result;
16394 	zend_free_op free_op1;
16395 	zval *varname;
16396 	zend_string *name, *tmp_name;
16397 	HashTable *target_symbol_table;
16398 
16399 	SAVE_OPLINE();
16400 	varname = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
16401 	if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
16402 		name = Z_STR_P(varname);
16403 	} else {
16404 		name = zval_get_tmp_string(varname, &tmp_name);
16405 	}
16406 
16407 	target_symbol_table = zend_get_target_symbol_table(opline->extended_value EXECUTE_DATA_CC);
16408 	value = zend_hash_find_ex(target_symbol_table, name, (IS_TMP_VAR|IS_VAR) == IS_CONST);
16409 
16410 	if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
16411 		zend_tmp_string_release(tmp_name);
16412 	}
16413 	zval_ptr_dtor_nogc(free_op1);
16414 
16415 	if (!value) {
16416 		result = (opline->extended_value & ZEND_ISEMPTY);
16417 	} else {
16418 		if (Z_TYPE_P(value) == IS_INDIRECT) {
16419 			value = Z_INDIRECT_P(value);
16420 		}
16421 		if (!(opline->extended_value & ZEND_ISEMPTY)) {
16422 			if (Z_ISREF_P(value)) {
16423 				value = Z_REFVAL_P(value);
16424 			}
16425 			result = Z_TYPE_P(value) > IS_NULL;
16426 		} else {
16427 			result = !i_zend_is_true(value);
16428 		}
16429 	}
16430 
16431 	ZEND_VM_SMART_BRANCH(result, 1);
16432 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
16433 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
16434 }
16435 
16436 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_TMPVAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
16437 {
16438 	USE_OPLINE
16439 	zval *value;
16440 	int result;
16441 	zend_free_op free_op1;
16442 	zval *varname;
16443 	zend_string *name, *tmp_name;
16444 	zend_class_entry *ce;
16445 
16446 	SAVE_OPLINE();
16447 	if (IS_UNUSED == IS_CONST) {
16448 		if ((IS_TMP_VAR|IS_VAR) == IS_CONST && EXPECTED((ce = CACHED_PTR(opline->extended_value & ~ZEND_ISEMPTY)) != NULL)) {
16449 			value = CACHED_PTR((opline->extended_value & ~ZEND_ISEMPTY) + sizeof(void*));
16450 			goto is_static_prop_return;
16451 		} else if (UNEXPECTED((ce = CACHED_PTR(opline->extended_value & ~ZEND_ISEMPTY)) == NULL)) {
16452 			ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op2)), RT_CONSTANT(opline, opline->op2) + 1, ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
16453 			if (UNEXPECTED(ce == NULL)) {
16454 				ZEND_ASSERT(EG(exception));
16455 				ZVAL_UNDEF(EX_VAR(opline->result.var));
16456 				HANDLE_EXCEPTION();
16457 			}
16458 			if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
16459 				CACHE_PTR(opline->extended_value & ~ZEND_ISEMPTY, ce);
16460 			}
16461 		}
16462 	} else {
16463 		if (IS_UNUSED == IS_UNUSED) {
16464 			ce = zend_fetch_class(NULL, opline->op2.num);
16465 			if (UNEXPECTED(ce == NULL)) {
16466 				ZEND_ASSERT(EG(exception));
16467 				zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
16468 				ZVAL_UNDEF(EX_VAR(opline->result.var));
16469 				HANDLE_EXCEPTION();
16470 			}
16471 		} else {
16472 			ce = Z_CE_P(EX_VAR(opline->op2.var));
16473 		}
16474 		if ((IS_TMP_VAR|IS_VAR) == IS_CONST &&
16475 		    EXPECTED(CACHED_PTR(opline->extended_value & ~ZEND_ISEMPTY) == ce)) {
16476 
16477 			value = CACHED_PTR((opline->extended_value & ~ZEND_ISEMPTY) + sizeof(void*));
16478 			goto is_static_prop_return;
16479 		}
16480 	}
16481 
16482 	varname = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
16483 	if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
16484 		name = Z_STR_P(varname);
16485 	} else {
16486 		name = zval_get_tmp_string(varname, &tmp_name);
16487 	}
16488 
16489 	value = zend_std_get_static_property(ce, name, 1);
16490 
16491 	if ((IS_TMP_VAR|IS_VAR) == IS_CONST && value) {
16492 		CACHE_POLYMORPHIC_PTR(opline->extended_value & ~ZEND_ISEMPTY, ce, value);
16493 	}
16494 
16495 	if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
16496 		zend_tmp_string_release(tmp_name);
16497 	}
16498 	zval_ptr_dtor_nogc(free_op1);
16499 
16500 is_static_prop_return:
16501 	if (!(opline->extended_value & ZEND_ISEMPTY)) {
16502 		result = value && Z_TYPE_P(value) > IS_NULL &&
16503 		    (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL);
16504 	} else {
16505 		result = !value || !i_zend_is_true(value);
16506 	}
16507 
16508 	ZEND_VM_SMART_BRANCH(result, 1);
16509 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
16510 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
16511 }
16512 
16513 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INSTANCEOF_SPEC_TMPVAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
16514 {
16515 	USE_OPLINE
16516 	zend_free_op free_op1;
16517 	zval *expr;
16518 	zend_bool result;
16519 
16520 	SAVE_OPLINE();
16521 	expr = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
16522 
16523 try_instanceof:
16524 	if (Z_TYPE_P(expr) == IS_OBJECT) {
16525 		zend_class_entry *ce;
16526 
16527 		if (IS_UNUSED == IS_CONST) {
16528 			ce = CACHED_PTR(opline->extended_value);
16529 			if (UNEXPECTED(ce == NULL)) {
16530 				ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op2)), RT_CONSTANT(opline, opline->op2) + 1, ZEND_FETCH_CLASS_NO_AUTOLOAD);
16531 				if (EXPECTED(ce)) {
16532 					CACHE_PTR(opline->extended_value, ce);
16533 				}
16534 			}
16535 		} else if (IS_UNUSED == IS_UNUSED) {
16536 			ce = zend_fetch_class(NULL, opline->op2.num);
16537 			if (UNEXPECTED(ce == NULL)) {
16538 				ZEND_ASSERT(EG(exception));
16539 				zval_ptr_dtor_nogc(free_op1);
16540 				ZVAL_UNDEF(EX_VAR(opline->result.var));
16541 				HANDLE_EXCEPTION();
16542 			}
16543 		} else {
16544 			ce = Z_CE_P(EX_VAR(opline->op2.var));
16545 		}
16546 		result = ce && instanceof_function(Z_OBJCE_P(expr), ce);
16547 	} else if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV)) && Z_TYPE_P(expr) == IS_REFERENCE) {
16548 		expr = Z_REFVAL_P(expr);
16549 		goto try_instanceof;
16550 	} else {
16551 		if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(expr) == IS_UNDEF)) {
16552 			GET_OP1_UNDEF_CV(expr, BP_VAR_R);
16553 		}
16554 		result = 0;
16555 	}
16556 	zval_ptr_dtor_nogc(free_op1);
16557 	ZEND_VM_SMART_BRANCH(result, 1);
16558 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
16559 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
16560 }
16561 
16562 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ADD_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
16563 {
16564 	USE_OPLINE
16565 	zend_free_op free_op1;
16566 	zval *op1, *op2, *result;
16567 
16568 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
16569 	op2 = EX_VAR(opline->op2.var);
16570 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
16571 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
16572 			result = EX_VAR(opline->result.var);
16573 			fast_long_add_function(result, op1, op2);
16574 			ZEND_VM_NEXT_OPCODE();
16575 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
16576 			result = EX_VAR(opline->result.var);
16577 			ZVAL_DOUBLE(result, ((double)Z_LVAL_P(op1)) + Z_DVAL_P(op2));
16578 			ZEND_VM_NEXT_OPCODE();
16579 		}
16580 	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
16581 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
16582 			result = EX_VAR(opline->result.var);
16583 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) + Z_DVAL_P(op2));
16584 			ZEND_VM_NEXT_OPCODE();
16585 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
16586 			result = EX_VAR(opline->result.var);
16587 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) + ((double)Z_LVAL_P(op2)));
16588 			ZEND_VM_NEXT_OPCODE();
16589 		}
16590 	}
16591 
16592 	SAVE_OPLINE();
16593 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
16594 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
16595 	}
16596 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
16597 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
16598 	}
16599 	add_function(EX_VAR(opline->result.var), op1, op2);
16600 	zval_ptr_dtor_nogc(free_op1);
16601 
16602 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
16603 }
16604 
16605 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SUB_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
16606 {
16607 	USE_OPLINE
16608 	zend_free_op free_op1;
16609 	zval *op1, *op2, *result;
16610 
16611 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
16612 	op2 = EX_VAR(opline->op2.var);
16613 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
16614 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
16615 			result = EX_VAR(opline->result.var);
16616 			fast_long_sub_function(result, op1, op2);
16617 			ZEND_VM_NEXT_OPCODE();
16618 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
16619 			result = EX_VAR(opline->result.var);
16620 			ZVAL_DOUBLE(result, ((double)Z_LVAL_P(op1)) - Z_DVAL_P(op2));
16621 			ZEND_VM_NEXT_OPCODE();
16622 		}
16623 	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
16624 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
16625 			result = EX_VAR(opline->result.var);
16626 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) - Z_DVAL_P(op2));
16627 			ZEND_VM_NEXT_OPCODE();
16628 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
16629 			result = EX_VAR(opline->result.var);
16630 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) - ((double)Z_LVAL_P(op2)));
16631 			ZEND_VM_NEXT_OPCODE();
16632 		}
16633 	}
16634 
16635 	SAVE_OPLINE();
16636 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
16637 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
16638 	}
16639 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
16640 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
16641 	}
16642 	sub_function(EX_VAR(opline->result.var), op1, op2);
16643 	zval_ptr_dtor_nogc(free_op1);
16644 
16645 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
16646 }
16647 
16648 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_DIV_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
16649 {
16650 	USE_OPLINE
16651 	zend_free_op free_op1;
16652 	zval *op1, *op2;
16653 
16654 	SAVE_OPLINE();
16655 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
16656 	op2 = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
16657 	fast_div_function(EX_VAR(opline->result.var), op1, op2);
16658 	zval_ptr_dtor_nogc(free_op1);
16659 
16660 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
16661 }
16662 
16663 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_MOD_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
16664 {
16665 	USE_OPLINE
16666 	zend_free_op free_op1;
16667 	zval *op1, *op2, *result;
16668 
16669 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
16670 	op2 = EX_VAR(opline->op2.var);
16671 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
16672 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
16673 			result = EX_VAR(opline->result.var);
16674 			if (UNEXPECTED(Z_LVAL_P(op2) == 0)) {
16675 				ZEND_VM_TAIL_CALL(zend_mod_by_zero_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
16676 			} else if (UNEXPECTED(Z_LVAL_P(op2) == -1)) {
16677 				/* Prevent overflow error/crash if op1==ZEND_LONG_MIN */
16678 				ZVAL_LONG(result, 0);
16679 			} else {
16680 				ZVAL_LONG(result, Z_LVAL_P(op1) % Z_LVAL_P(op2));
16681 			}
16682 			ZEND_VM_NEXT_OPCODE();
16683 		}
16684 	}
16685 
16686 	SAVE_OPLINE();
16687 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
16688 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
16689 	}
16690 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
16691 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
16692 	}
16693 	mod_function(EX_VAR(opline->result.var), op1, op2);
16694 	zval_ptr_dtor_nogc(free_op1);
16695 
16696 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
16697 }
16698 
16699 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SL_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
16700 {
16701 	USE_OPLINE
16702 	zend_free_op free_op1;
16703 	zval *op1, *op2;
16704 
16705 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
16706 	op2 = EX_VAR(opline->op2.var);
16707 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)
16708 			&& EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)
16709 			&& EXPECTED((zend_ulong)Z_LVAL_P(op2) < SIZEOF_ZEND_LONG * 8)) {
16710 		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(op1) << Z_LVAL_P(op2));
16711 		ZEND_VM_NEXT_OPCODE();
16712 	}
16713 
16714 	SAVE_OPLINE();
16715 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
16716 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
16717 	}
16718 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
16719 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
16720 	}
16721 	shift_left_function(EX_VAR(opline->result.var), op1, op2);
16722 	zval_ptr_dtor_nogc(free_op1);
16723 
16724 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
16725 }
16726 
16727 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SR_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
16728 {
16729 	USE_OPLINE
16730 	zend_free_op free_op1;
16731 	zval *op1, *op2;
16732 
16733 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
16734 	op2 = EX_VAR(opline->op2.var);
16735 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)
16736 			&& EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)
16737 			&& EXPECTED((zend_ulong)Z_LVAL_P(op2) < SIZEOF_ZEND_LONG * 8)) {
16738 		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(op1) >> Z_LVAL_P(op2));
16739 		ZEND_VM_NEXT_OPCODE();
16740 	}
16741 
16742 	SAVE_OPLINE();
16743 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
16744 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
16745 	}
16746 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
16747 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
16748 	}
16749 	shift_right_function(EX_VAR(opline->result.var), op1, op2);
16750 	zval_ptr_dtor_nogc(free_op1);
16751 
16752 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
16753 }
16754 
16755 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_POW_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
16756 {
16757 	USE_OPLINE
16758 	zend_free_op free_op1;
16759 	zval *op1, *op2;
16760 
16761 	SAVE_OPLINE();
16762 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
16763 	op2 = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
16764 	pow_function(EX_VAR(opline->result.var), op1, op2);
16765 	zval_ptr_dtor_nogc(free_op1);
16766 
16767 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
16768 }
16769 
16770 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_CONCAT_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
16771 {
16772 	USE_OPLINE
16773 	zend_free_op free_op1;
16774 	zval *op1, *op2;
16775 
16776 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
16777 	op2 = EX_VAR(opline->op2.var);
16778 
16779 	if (((IS_TMP_VAR|IS_VAR) == IS_CONST || EXPECTED(Z_TYPE_P(op1) == IS_STRING)) &&
16780 	    (IS_CV == IS_CONST || EXPECTED(Z_TYPE_P(op2) == IS_STRING))) {
16781 		zend_string *op1_str = Z_STR_P(op1);
16782 		zend_string *op2_str = Z_STR_P(op2);
16783 		zend_string *str;
16784 
16785 		if ((IS_TMP_VAR|IS_VAR) != IS_CONST && UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
16786 			if (IS_CV == IS_CONST || IS_CV == IS_CV) {
16787 				ZVAL_STR_COPY(EX_VAR(opline->result.var), op2_str);
16788 			} else {
16789 				ZVAL_STR(EX_VAR(opline->result.var), op2_str);
16790 			}
16791 			zval_ptr_dtor_nogc(free_op1);
16792 		} else if (IS_CV != IS_CONST && UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
16793 			if ((IS_TMP_VAR|IS_VAR) == IS_CONST || (IS_TMP_VAR|IS_VAR) == IS_CV) {
16794 				ZVAL_STR_COPY(EX_VAR(opline->result.var), op1_str);
16795 			} else {
16796 				ZVAL_STR(EX_VAR(opline->result.var), op1_str);
16797 			}
16798 
16799 		} else if ((IS_TMP_VAR|IS_VAR) != IS_CONST && (IS_TMP_VAR|IS_VAR) != IS_CV &&
16800 		    !ZSTR_IS_INTERNED(op1_str) && GC_REFCOUNT(op1_str) == 1) {
16801 		    size_t len = ZSTR_LEN(op1_str);
16802 
16803 			str = zend_string_extend(op1_str, len + ZSTR_LEN(op2_str), 0);
16804 			memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
16805 			ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
16806 
16807 		} else {
16808 			str = zend_string_alloc(ZSTR_LEN(op1_str) + ZSTR_LEN(op2_str), 0);
16809 			memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
16810 			memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
16811 			ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
16812 			zval_ptr_dtor_nogc(free_op1);
16813 
16814 		}
16815 		ZEND_VM_NEXT_OPCODE();
16816 	} else {
16817 		SAVE_OPLINE();
16818 
16819 		if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
16820 			op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
16821 		}
16822 		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
16823 			op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
16824 		}
16825 		concat_function(EX_VAR(opline->result.var), op1, op2);
16826 		zval_ptr_dtor_nogc(free_op1);
16827 
16828 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
16829 	}
16830 }
16831 
16832 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
16833 {
16834 	USE_OPLINE
16835 	zend_free_op free_op1;
16836 	zval *op1, *op2, *result;
16837 
16838 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
16839 	op2 = EX_VAR(opline->op2.var);
16840 	do {
16841 		int result;
16842 
16843 		if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
16844 			if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
16845 				result = (Z_LVAL_P(op1) < Z_LVAL_P(op2));
16846 			} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
16847 				result = ((double)Z_LVAL_P(op1) < Z_DVAL_P(op2));
16848 			} else {
16849 				break;
16850 			}
16851 		} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
16852 			if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
16853 				result = (Z_DVAL_P(op1) < Z_DVAL_P(op2));
16854 			} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
16855 				result = (Z_DVAL_P(op1) < ((double)Z_LVAL_P(op2)));
16856 			} else {
16857 				break;
16858 			}
16859 		} else {
16860 			break;
16861 		}
16862 		ZEND_VM_SMART_BRANCH(result, 0);
16863 		ZVAL_BOOL(EX_VAR(opline->result.var), result);
16864 		ZEND_VM_NEXT_OPCODE();
16865 	} while (0);
16866 
16867 	SAVE_OPLINE();
16868 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
16869 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
16870 	}
16871 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
16872 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
16873 	}
16874 	result = EX_VAR(opline->result.var);
16875 	compare_function(result, op1, op2);
16876 	ZVAL_BOOL(result, Z_LVAL_P(result) < 0);
16877 	zval_ptr_dtor_nogc(free_op1);
16878 
16879 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
16880 }
16881 
16882 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
16883 {
16884 	USE_OPLINE
16885 	zend_free_op free_op1;
16886 	zval *op1, *op2, *result;
16887 
16888 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
16889 	op2 = EX_VAR(opline->op2.var);
16890 	do {
16891 		int result;
16892 
16893 		if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
16894 			if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
16895 				result = (Z_LVAL_P(op1) <= Z_LVAL_P(op2));
16896 			} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
16897 				result = ((double)Z_LVAL_P(op1) <= Z_DVAL_P(op2));
16898 			} else {
16899 				break;
16900 			}
16901 		} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
16902 			if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
16903 				result = (Z_DVAL_P(op1) <= Z_DVAL_P(op2));
16904 			} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
16905 				result = (Z_DVAL_P(op1) <= ((double)Z_LVAL_P(op2)));
16906 			} else {
16907 				break;
16908 			}
16909 		} else {
16910 			break;
16911 		}
16912 		ZEND_VM_SMART_BRANCH(result, 0);
16913 		ZVAL_BOOL(EX_VAR(opline->result.var), result);
16914 		ZEND_VM_NEXT_OPCODE();
16915 	} while (0);
16916 
16917 	SAVE_OPLINE();
16918 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
16919 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
16920 	}
16921 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
16922 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
16923 	}
16924 	result = EX_VAR(opline->result.var);
16925 	compare_function(result, op1, op2);
16926 	ZVAL_BOOL(result, Z_LVAL_P(result) <= 0);
16927 	zval_ptr_dtor_nogc(free_op1);
16928 
16929 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
16930 }
16931 
16932 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SPACESHIP_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
16933 {
16934 	USE_OPLINE
16935 	zend_free_op free_op1;
16936 	zval *op1, *op2;
16937 
16938 	SAVE_OPLINE();
16939 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
16940 	op2 = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
16941 	compare_function(EX_VAR(opline->result.var), op1, op2);
16942 	zval_ptr_dtor_nogc(free_op1);
16943 
16944 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
16945 }
16946 
16947 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_R_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
16948 {
16949 	USE_OPLINE
16950 	zend_free_op free_op1;
16951 	zval *container, *dim, *value, *result;
16952 
16953 	SAVE_OPLINE();
16954 	container = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
16955 	dim = EX_VAR(opline->op2.var);
16956 	if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
16957 		if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
16958 fetch_dim_r_array:
16959 			value = zend_fetch_dimension_address_inner(Z_ARRVAL_P(container), dim, IS_CV, BP_VAR_R EXECUTE_DATA_CC);
16960 			result = EX_VAR(opline->result.var);
16961 			ZVAL_COPY_DEREF(result, value);
16962 		} else if (EXPECTED(Z_TYPE_P(container) == IS_REFERENCE)) {
16963 			container = Z_REFVAL_P(container);
16964 			if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
16965 				goto fetch_dim_r_array;
16966 			} else {
16967 				goto fetch_dim_r_slow;
16968 			}
16969 		} else {
16970 fetch_dim_r_slow:
16971 			if (IS_CV == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
16972 				dim++;
16973 			}
16974 			zend_fetch_dimension_address_read_R_slow(container, dim OPLINE_CC EXECUTE_DATA_CC);
16975 		}
16976 	} else {
16977 		zend_fetch_dimension_address_read_R(container, dim, IS_CV OPLINE_CC EXECUTE_DATA_CC);
16978 	}
16979 
16980 	zval_ptr_dtor_nogc(free_op1);
16981 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
16982 }
16983 
16984 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_IS_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
16985 {
16986 	USE_OPLINE
16987 	zend_free_op free_op1;
16988 	zval *container;
16989 
16990 	SAVE_OPLINE();
16991 	container = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
16992 	zend_fetch_dimension_address_read_IS(container, EX_VAR(opline->op2.var), IS_CV OPLINE_CC EXECUTE_DATA_CC);
16993 
16994 	zval_ptr_dtor_nogc(free_op1);
16995 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
16996 }
16997 
16998 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_R_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
16999 {
17000 	USE_OPLINE
17001 	zend_free_op free_op1;
17002 	zval *container;
17003 
17004 	zval *offset;
17005 	void **cache_slot = NULL;
17006 
17007 	SAVE_OPLINE();
17008 	container = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
17009 
17010 	if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
17011 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
17012 	}
17013 
17014 	offset = EX_VAR(opline->op2.var);
17015 
17016 	if ((IS_TMP_VAR|IS_VAR) == IS_CONST ||
17017 	    ((IS_TMP_VAR|IS_VAR) != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
17018 	    do {
17019 			if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
17020 				container = Z_REFVAL_P(container);
17021 				if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
17022 					break;
17023 				}
17024 			}
17025 			if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
17026 				GET_OP1_UNDEF_CV(container, BP_VAR_R);
17027 			}
17028 			if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(offset) == IS_UNDEF)) {
17029 				GET_OP2_UNDEF_CV(offset, BP_VAR_R);
17030 			}
17031 			goto fetch_obj_r_no_object;
17032 		} while (0);
17033 	}
17034 
17035 	/* here we are sure we are dealing with an object */
17036 	do {
17037 		zend_object *zobj = Z_OBJ_P(container);
17038 		zval *retval;
17039 
17040 		if (IS_CV == IS_CONST) {
17041 			cache_slot = CACHE_ADDR(opline->extended_value);
17042 
17043 			if (EXPECTED(zobj->ce == CACHED_PTR_EX(cache_slot))) {
17044 				uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
17045 
17046 				if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
17047 					retval = OBJ_PROP(zobj, prop_offset);
17048 					if (EXPECTED(Z_TYPE_INFO_P(retval) != IS_UNDEF)) {
17049 						ZVAL_COPY_DEREF(EX_VAR(opline->result.var), retval);
17050 						break;
17051 					}
17052 				} else if (EXPECTED(zobj->properties != NULL)) {
17053 					if (!IS_UNKNOWN_DYNAMIC_PROPERTY_OFFSET(prop_offset)) {
17054 						uintptr_t idx = ZEND_DECODE_DYN_PROP_OFFSET(prop_offset);
17055 
17056 						if (EXPECTED(idx < zobj->properties->nNumUsed * sizeof(Bucket))) {
17057 							Bucket *p = (Bucket*)((char*)zobj->properties->arData + idx);
17058 
17059 							if (EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
17060 						        (EXPECTED(p->key == Z_STR_P(offset)) ||
17061 						         (EXPECTED(p->h == ZSTR_H(Z_STR_P(offset))) &&
17062 						          EXPECTED(p->key != NULL) &&
17063 						          EXPECTED(zend_string_equal_content(p->key, Z_STR_P(offset)))))) {
17064 								ZVAL_COPY_DEREF(EX_VAR(opline->result.var), &p->val);
17065 								break;
17066 							}
17067 						}
17068 						CACHE_PTR_EX(cache_slot + 1, (void*)ZEND_DYNAMIC_PROPERTY_OFFSET);
17069 					}
17070 					retval = zend_hash_find_ex(zobj->properties, Z_STR_P(offset), 1);
17071 					if (EXPECTED(retval)) {
17072 						uintptr_t idx = (char*)retval - (char*)zobj->properties->arData;
17073 						CACHE_PTR_EX(cache_slot + 1, (void*)ZEND_ENCODE_DYN_PROP_OFFSET(idx));
17074 						ZVAL_COPY_DEREF(EX_VAR(opline->result.var), retval);
17075 						break;
17076 					}
17077 				}
17078 			}
17079 		} else if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(offset) == IS_UNDEF)) {
17080 			GET_OP2_UNDEF_CV(offset, BP_VAR_R);
17081 		}
17082 
17083 		if (UNEXPECTED(zobj->handlers->read_property == NULL)) {
17084 fetch_obj_r_no_object:
17085 			zend_wrong_property_read(offset);
17086 			ZVAL_NULL(EX_VAR(opline->result.var));
17087 		} else {
17088 			retval = zobj->handlers->read_property(container, offset, BP_VAR_R, cache_slot, EX_VAR(opline->result.var));
17089 
17090 			if (retval != EX_VAR(opline->result.var)) {
17091 				ZVAL_COPY_DEREF(EX_VAR(opline->result.var), retval);
17092 			} else if (UNEXPECTED(Z_ISREF_P(retval))) {
17093 				zend_unwrap_reference(retval);
17094 			}
17095 		}
17096 	} while (0);
17097 
17098 	zval_ptr_dtor_nogc(free_op1);
17099 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
17100 }
17101 
17102 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
17103 {
17104 	USE_OPLINE
17105 	zend_free_op free_op1;
17106 	zval *container;
17107 
17108 	zval *offset;
17109 	void **cache_slot = NULL;
17110 
17111 	SAVE_OPLINE();
17112 	container = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
17113 
17114 	if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
17115 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
17116 	}
17117 
17118 	offset = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
17119 
17120 	if ((IS_TMP_VAR|IS_VAR) == IS_CONST ||
17121 	    ((IS_TMP_VAR|IS_VAR) != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
17122 		do {
17123 			if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
17124 				container = Z_REFVAL_P(container);
17125 				if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
17126 					break;
17127 				}
17128 			}
17129 			goto fetch_obj_is_no_object;
17130 		} while (0);
17131 	}
17132 
17133 	/* here we are sure we are dealing with an object */
17134 	do {
17135 		zend_object *zobj = Z_OBJ_P(container);
17136 		zval *retval;
17137 
17138 		if (IS_CV == IS_CONST) {
17139 			cache_slot = CACHE_ADDR(opline->extended_value);
17140 
17141 			if (EXPECTED(zobj->ce == CACHED_PTR_EX(cache_slot))) {
17142 				uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
17143 
17144 				if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
17145 					retval = OBJ_PROP(zobj, prop_offset);
17146 					if (EXPECTED(Z_TYPE_P(retval) != IS_UNDEF)) {
17147 						ZVAL_COPY(EX_VAR(opline->result.var), retval);
17148 						break;
17149 					}
17150 				} else if (EXPECTED(zobj->properties != NULL)) {
17151 					if (!IS_UNKNOWN_DYNAMIC_PROPERTY_OFFSET(prop_offset)) {
17152 						uintptr_t idx = ZEND_DECODE_DYN_PROP_OFFSET(prop_offset);
17153 
17154 						if (EXPECTED(idx < zobj->properties->nNumUsed * sizeof(Bucket))) {
17155 							Bucket *p = (Bucket*)((char*)zobj->properties->arData + idx);
17156 
17157 							if (EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
17158 						        (EXPECTED(p->key == Z_STR_P(offset)) ||
17159 						         (EXPECTED(p->h == ZSTR_H(Z_STR_P(offset))) &&
17160 						          EXPECTED(p->key != NULL) &&
17161 						          EXPECTED(zend_string_equal_content(p->key, Z_STR_P(offset)))))) {
17162 								ZVAL_COPY(EX_VAR(opline->result.var), &p->val);
17163 								break;
17164 							}
17165 						}
17166 						CACHE_PTR_EX(cache_slot + 1, (void*)ZEND_DYNAMIC_PROPERTY_OFFSET);
17167 					}
17168 					retval = zend_hash_find_ex(zobj->properties, Z_STR_P(offset), 1);
17169 					if (EXPECTED(retval)) {
17170 						uintptr_t idx = (char*)retval - (char*)zobj->properties->arData;
17171 						CACHE_PTR_EX(cache_slot + 1, (void*)ZEND_ENCODE_DYN_PROP_OFFSET(idx));
17172 						ZVAL_COPY(EX_VAR(opline->result.var), retval);
17173 						break;
17174 					}
17175 				}
17176 			}
17177 		}
17178 
17179 		if (UNEXPECTED(zobj->handlers->read_property == NULL)) {
17180 fetch_obj_is_no_object:
17181 			ZVAL_NULL(EX_VAR(opline->result.var));
17182 		} else {
17183 
17184 			retval = zobj->handlers->read_property(container, offset, BP_VAR_IS, cache_slot, EX_VAR(opline->result.var));
17185 
17186 			if (retval != EX_VAR(opline->result.var)) {
17187 				ZVAL_COPY(EX_VAR(opline->result.var), retval);
17188 			}
17189 		}
17190 	} while (0);
17191 
17192 	zval_ptr_dtor_nogc(free_op1);
17193 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
17194 }
17195 
17196 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FAST_CONCAT_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
17197 {
17198 	USE_OPLINE
17199 	zend_free_op free_op1;
17200 	zval *op1, *op2;
17201 	zend_string *op1_str, *op2_str, *str;
17202 
17203 
17204 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
17205 	op2 = EX_VAR(opline->op2.var);
17206 	if (((IS_TMP_VAR|IS_VAR) == IS_CONST || EXPECTED(Z_TYPE_P(op1) == IS_STRING)) &&
17207 	    (IS_CV == IS_CONST || EXPECTED(Z_TYPE_P(op2) == IS_STRING))) {
17208 		zend_string *op1_str = Z_STR_P(op1);
17209 		zend_string *op2_str = Z_STR_P(op2);
17210 		zend_string *str;
17211 
17212 		if ((IS_TMP_VAR|IS_VAR) != IS_CONST && UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
17213 			if (IS_CV == IS_CONST || IS_CV == IS_CV) {
17214 				ZVAL_STR_COPY(EX_VAR(opline->result.var), op2_str);
17215 			} else {
17216 				ZVAL_STR(EX_VAR(opline->result.var), op2_str);
17217 			}
17218 			zval_ptr_dtor_nogc(free_op1);
17219 		} else if (IS_CV != IS_CONST && UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
17220 			if ((IS_TMP_VAR|IS_VAR) == IS_CONST || (IS_TMP_VAR|IS_VAR) == IS_CV) {
17221 				ZVAL_STR_COPY(EX_VAR(opline->result.var), op1_str);
17222 			} else {
17223 				ZVAL_STR(EX_VAR(opline->result.var), op1_str);
17224 			}
17225 
17226 		} else if ((IS_TMP_VAR|IS_VAR) != IS_CONST && (IS_TMP_VAR|IS_VAR) != IS_CV &&
17227 		    !ZSTR_IS_INTERNED(op1_str) && GC_REFCOUNT(op1_str) == 1) {
17228 		    size_t len = ZSTR_LEN(op1_str);
17229 
17230 			str = zend_string_extend(op1_str, len + ZSTR_LEN(op2_str), 0);
17231 			memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
17232 			ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
17233 
17234 		} else {
17235 			str = zend_string_alloc(ZSTR_LEN(op1_str) + ZSTR_LEN(op2_str), 0);
17236 			memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
17237 			memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
17238 			ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
17239 			zval_ptr_dtor_nogc(free_op1);
17240 
17241 		}
17242 		ZEND_VM_NEXT_OPCODE();
17243 	}
17244 
17245 	SAVE_OPLINE();
17246 	if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
17247 		op1_str = Z_STR_P(op1);
17248 	} else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
17249 		op1_str = zend_string_copy(Z_STR_P(op1));
17250 	} else {
17251 		if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
17252 			GET_OP1_UNDEF_CV(op1, BP_VAR_R);
17253 		}
17254 		op1_str = zval_get_string_func(op1);
17255 	}
17256 	if (IS_CV == IS_CONST) {
17257 		op2_str = Z_STR_P(op2);
17258 	} else if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
17259 		op2_str = zend_string_copy(Z_STR_P(op2));
17260 	} else {
17261 		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
17262 			GET_OP2_UNDEF_CV(op2, BP_VAR_R);
17263 		}
17264 		op2_str = zval_get_string_func(op2);
17265 	}
17266 	do {
17267 		if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
17268 			if (UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
17269 				if (IS_CV == IS_CONST) {
17270 					if (UNEXPECTED(Z_REFCOUNTED_P(op2))) {
17271 						GC_ADDREF(op2_str);
17272 					}
17273 				}
17274 				ZVAL_STR(EX_VAR(opline->result.var), op2_str);
17275 				zend_string_release_ex(op1_str, 0);
17276 				break;
17277 			}
17278 		}
17279 		if (IS_CV != IS_CONST) {
17280 			if (UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
17281 				if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
17282 					if (UNEXPECTED(Z_REFCOUNTED_P(op1))) {
17283 						GC_ADDREF(op1_str);
17284 					}
17285 				}
17286 				ZVAL_STR(EX_VAR(opline->result.var), op1_str);
17287 				zend_string_release_ex(op2_str, 0);
17288 				break;
17289 			}
17290 		}
17291 		str = zend_string_alloc(ZSTR_LEN(op1_str) + ZSTR_LEN(op2_str), 0);
17292 		memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
17293 		memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
17294 		ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
17295 		if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
17296 			zend_string_release_ex(op1_str, 0);
17297 		}
17298 		if (IS_CV != IS_CONST) {
17299 			zend_string_release_ex(op2_str, 0);
17300 		}
17301 	} while (0);
17302 	zval_ptr_dtor_nogc(free_op1);
17303 
17304 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
17305 }
17306 
17307 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
17308 {
17309 	USE_OPLINE
17310 	zval *function_name;
17311 	zend_free_op free_op1;
17312 	zval *object;
17313 	zend_function *fbc;
17314 	zend_class_entry *called_scope;
17315 	zend_object *obj;
17316 	zend_execute_data *call;
17317 	uint32_t call_info;
17318 
17319 	SAVE_OPLINE();
17320 
17321 	object = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
17322 
17323 	if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
17324 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
17325 	}
17326 
17327 	if (IS_CV != IS_CONST) {
17328 		function_name = EX_VAR(opline->op2.var);
17329 	}
17330 
17331 	if (IS_CV != IS_CONST &&
17332 	    UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) {
17333 		do {
17334 			if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(function_name)) {
17335 				function_name = Z_REFVAL_P(function_name);
17336 				if (EXPECTED(Z_TYPE_P(function_name) == IS_STRING)) {
17337 					break;
17338 				}
17339 			} else if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
17340 				GET_OP2_UNDEF_CV(function_name, BP_VAR_R);
17341 				if (UNEXPECTED(EG(exception) != NULL)) {
17342 					zval_ptr_dtor_nogc(free_op1);
17343 					HANDLE_EXCEPTION();
17344 				}
17345 			}
17346 			zend_throw_error(NULL, "Method name must be a string");
17347 
17348 			zval_ptr_dtor_nogc(free_op1);
17349 			HANDLE_EXCEPTION();
17350 		} while (0);
17351 	}
17352 
17353 	if ((IS_TMP_VAR|IS_VAR) != IS_UNUSED) {
17354 		do {
17355 			if ((IS_TMP_VAR|IS_VAR) == IS_CONST || UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
17356 				if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(object))) {
17357 					object = Z_REFVAL_P(object);
17358 					if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
17359 						break;
17360 					}
17361 				}
17362 				if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
17363 					object = GET_OP1_UNDEF_CV(object, BP_VAR_R);
17364 					if (UNEXPECTED(EG(exception) != NULL)) {
17365 						if (IS_CV != IS_CONST) {
17366 
17367 						}
17368 						HANDLE_EXCEPTION();
17369 					}
17370 				}
17371 				if (IS_CV == IS_CONST) {
17372 					function_name = EX_VAR(opline->op2.var);
17373 				}
17374 				zend_invalid_method_call(object, function_name);
17375 
17376 				zval_ptr_dtor_nogc(free_op1);
17377 				HANDLE_EXCEPTION();
17378 			}
17379 		} while (0);
17380 	}
17381 
17382 	obj = Z_OBJ_P(object);
17383 	called_scope = obj->ce;
17384 
17385 	if (IS_CV == IS_CONST &&
17386 	    EXPECTED(CACHED_PTR(opline->result.num) == called_scope)) {
17387 	    fbc = CACHED_PTR(opline->result.num + sizeof(void*));
17388 	} else {
17389 	    zend_object *orig_obj = obj;
17390 
17391 		if (UNEXPECTED(obj->handlers->get_method == NULL)) {
17392 			zend_throw_error(NULL, "Object does not support method calls");
17393 
17394 			zval_ptr_dtor_nogc(free_op1);
17395 			HANDLE_EXCEPTION();
17396 		}
17397 
17398 		if (IS_CV == IS_CONST) {
17399 			function_name = EX_VAR(opline->op2.var);
17400 		}
17401 
17402 		/* First, locate the function. */
17403 		fbc = obj->handlers->get_method(&obj, Z_STR_P(function_name), ((IS_CV == IS_CONST) ? (RT_CONSTANT(opline, opline->op2) + 1) : NULL));
17404 		if (UNEXPECTED(fbc == NULL)) {
17405 			if (EXPECTED(!EG(exception))) {
17406 				zend_undefined_method(obj->ce, Z_STR_P(function_name));
17407 			}
17408 
17409 			zval_ptr_dtor_nogc(free_op1);
17410 			HANDLE_EXCEPTION();
17411 		}
17412 		if (IS_CV == IS_CONST &&
17413 		    EXPECTED(fbc->type <= ZEND_USER_FUNCTION) &&
17414 		    EXPECTED(!(fbc->common.fn_flags & (ZEND_ACC_CALL_VIA_TRAMPOLINE|ZEND_ACC_NEVER_CACHE))) &&
17415 		    EXPECTED(obj == orig_obj)) {
17416 			CACHE_POLYMORPHIC_PTR(opline->result.num, called_scope, fbc);
17417 		}
17418 		if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_TMP_VAR)) && UNEXPECTED(obj != orig_obj)) {
17419 			/* Reset "object" to trigger reference counting */
17420 			object = NULL;
17421 		}
17422 		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!fbc->op_array.run_time_cache)) {
17423 			init_func_run_time_cache(&fbc->op_array);
17424 		}
17425 	}
17426 
17427 	if (IS_CV != IS_CONST) {
17428 
17429 	}
17430 
17431 	call_info = ZEND_CALL_NESTED_FUNCTION;
17432 	if (UNEXPECTED((fbc->common.fn_flags & ZEND_ACC_STATIC) != 0)) {
17433 		obj = NULL;
17434 		zval_ptr_dtor_nogc(free_op1);
17435 
17436 		if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_TMP_VAR)) && UNEXPECTED(EG(exception))) {
17437 			HANDLE_EXCEPTION();
17438 		}
17439 	} else if ((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_TMP_VAR|IS_CV)) {
17440 		/* CV may be changed indirectly (e.g. when it's a reference) */
17441 		call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_RELEASE_THIS;
17442 		if ((IS_TMP_VAR|IS_VAR) == IS_CV) {
17443 			GC_ADDREF(obj); /* For $this pointer */
17444 		} else if (free_op1 != object) {
17445 			GC_ADDREF(obj); /* For $this pointer */
17446 			zval_ptr_dtor_nogc(free_op1);
17447 		}
17448 	}
17449 
17450 	call = zend_vm_stack_push_call_frame(call_info,
17451 		fbc, opline->extended_value, called_scope, obj);
17452 	call->prev_execute_data = EX(call);
17453 	EX(call) = call;
17454 
17455 	ZEND_VM_NEXT_OPCODE();
17456 }
17457 
17458 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_CASE_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
17459 {
17460 	USE_OPLINE
17461 	zend_free_op free_op1;
17462 	zval *op1, *op2, *result;
17463 
17464 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
17465 	op2 = EX_VAR(opline->op2.var);
17466 	do {
17467 		int result;
17468 
17469 		if (EXPECTED(Z_TYPE_P(op1) == IS_LONG)) {
17470 			if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
17471 				result = (Z_LVAL_P(op1) == Z_LVAL_P(op2));
17472 			} else if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
17473 				result = ((double)Z_LVAL_P(op1) == Z_DVAL_P(op2));
17474 			} else {
17475 				break;
17476 			}
17477 		} else if (EXPECTED(Z_TYPE_P(op1) == IS_DOUBLE)) {
17478 			if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
17479 				result = (Z_DVAL_P(op1) == Z_DVAL_P(op2));
17480 			} else if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
17481 				result = (Z_DVAL_P(op1) == ((double)Z_LVAL_P(op2)));
17482 			} else {
17483 				break;
17484 			}
17485 		} else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
17486 			if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
17487 				result = zend_fast_equal_strings(Z_STR_P(op1), Z_STR_P(op2));
17488 
17489 			} else {
17490 				break;
17491 			}
17492 		} else {
17493 			break;
17494 		}
17495 		ZEND_VM_SMART_BRANCH(result, 0);
17496 		ZVAL_BOOL(EX_VAR(opline->result.var), result);
17497 		ZEND_VM_NEXT_OPCODE();
17498 	} while (0);
17499 
17500 	SAVE_OPLINE();
17501 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
17502 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
17503 	}
17504 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
17505 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
17506 	}
17507 	result = EX_VAR(opline->result.var);
17508 	compare_function(result, op1, op2);
17509 	ZVAL_BOOL(result, Z_LVAL_P(result) == 0);
17510 
17511 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
17512 }
17513 
17514 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
17515 {
17516 	USE_OPLINE
17517 	zend_free_op free_op1;
17518 	zval *container;
17519 	int result;
17520 	zend_ulong hval;
17521 	zval *offset;
17522 
17523 	SAVE_OPLINE();
17524 	container = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
17525 	offset = EX_VAR(opline->op2.var);
17526 
17527 	if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
17528 		HashTable *ht;
17529 		zval *value;
17530 		zend_string *str;
17531 
17532 isset_dim_obj_array:
17533 		ht = Z_ARRVAL_P(container);
17534 isset_again:
17535 		if (EXPECTED(Z_TYPE_P(offset) == IS_STRING)) {
17536 			str = Z_STR_P(offset);
17537 			if (IS_CV != IS_CONST) {
17538 				if (ZEND_HANDLE_NUMERIC(str, hval)) {
17539 					goto num_index_prop;
17540 				}
17541 			}
17542 			value = zend_hash_find_ex_ind(ht, str, IS_CV == IS_CONST);
17543 		} else if (EXPECTED(Z_TYPE_P(offset) == IS_LONG)) {
17544 			hval = Z_LVAL_P(offset);
17545 num_index_prop:
17546 			value = zend_hash_index_find(ht, hval);
17547 		} else if ((IS_CV & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(offset))) {
17548 			offset = Z_REFVAL_P(offset);
17549 			goto isset_again;
17550 		} else {
17551 			value = zend_find_array_dim_slow(ht, offset EXECUTE_DATA_CC);
17552 		}
17553 
17554 		if (!(opline->extended_value & ZEND_ISEMPTY)) {
17555 			/* > IS_NULL means not IS_UNDEF and not IS_NULL */
17556 			result = value != NULL && Z_TYPE_P(value) > IS_NULL &&
17557 			    (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL);
17558 		} else {
17559 			result = (value == NULL || !i_zend_is_true(value));
17560 		}
17561 		goto isset_dim_obj_exit;
17562 	} else if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(container))) {
17563 		container = Z_REFVAL_P(container);
17564 		if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
17565 			goto isset_dim_obj_array;
17566 		}
17567 	}
17568 
17569 	if (IS_CV == IS_CONST && Z_EXTRA_P(offset) == ZEND_EXTRA_VALUE) {
17570 		offset++;
17571 	}
17572 	if (!(opline->extended_value & ZEND_ISEMPTY)) {
17573 		result = zend_isset_dim_slow(container, offset EXECUTE_DATA_CC);
17574 	} else {
17575 		result = zend_isempty_dim_slow(container, offset EXECUTE_DATA_CC);
17576 	}
17577 
17578 isset_dim_obj_exit:
17579 
17580 	zval_ptr_dtor_nogc(free_op1);
17581 	ZEND_VM_SMART_BRANCH(result, 1);
17582 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
17583 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
17584 }
17585 
17586 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
17587 {
17588 	USE_OPLINE
17589 	zend_free_op free_op1;
17590 	zval *container;
17591 	int result;
17592 	zval *offset;
17593 
17594 	SAVE_OPLINE();
17595 	container = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
17596 
17597 	if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
17598 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
17599 	}
17600 
17601 	offset = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
17602 
17603 	if ((IS_TMP_VAR|IS_VAR) == IS_CONST ||
17604 	    ((IS_TMP_VAR|IS_VAR) != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
17605 		if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
17606 			container = Z_REFVAL_P(container);
17607 			if (UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) {
17608 				goto isset_no_object;
17609 			}
17610 		} else {
17611 			goto isset_no_object;
17612 		}
17613 	}
17614 	if (UNEXPECTED(!Z_OBJ_HT_P(container)->has_property)) {
17615 		zend_wrong_property_check(offset);
17616 isset_no_object:
17617 		result = (opline->extended_value & ZEND_ISEMPTY);
17618 	} else {
17619 		result =
17620 			(opline->extended_value & ZEND_ISEMPTY) ^
17621 			Z_OBJ_HT_P(container)->has_property(container, offset, (opline->extended_value & ZEND_ISEMPTY), ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_ISEMPTY) : NULL));
17622 	}
17623 
17624 	zval_ptr_dtor_nogc(free_op1);
17625 	ZEND_VM_SMART_BRANCH(result, 1);
17626 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
17627 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
17628 }
17629 
17630 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_RETURN_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
17631 {
17632 	USE_OPLINE
17633 	zval *retval_ptr;
17634 	zval *return_value;
17635 	zend_free_op free_op1;
17636 
17637 	retval_ptr = _get_zval_ptr_tmp(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
17638 	return_value = EX(return_value);
17639 	if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(retval_ptr) == IS_UNDEF)) {
17640 		SAVE_OPLINE();
17641 		retval_ptr = GET_OP1_UNDEF_CV(retval_ptr, BP_VAR_R);
17642 		if (return_value) {
17643 			ZVAL_NULL(return_value);
17644 		}
17645 	} else if (!return_value) {
17646 		if (IS_TMP_VAR & (IS_VAR|IS_TMP_VAR)) {
17647 			if (Z_REFCOUNTED_P(free_op1) && !Z_DELREF_P(free_op1)) {
17648 				SAVE_OPLINE();
17649 				rc_dtor_func(Z_COUNTED_P(free_op1));
17650 			}
17651 		}
17652 	} else {
17653 		if ((IS_TMP_VAR & (IS_CONST|IS_TMP_VAR))) {
17654 			ZVAL_COPY_VALUE(return_value, retval_ptr);
17655 			if (IS_TMP_VAR == IS_CONST) {
17656 				if (UNEXPECTED(Z_OPT_REFCOUNTED_P(return_value))) {
17657 					Z_ADDREF_P(return_value);
17658 				}
17659 			}
17660 		} else if (IS_TMP_VAR == IS_CV) {
17661 			if (Z_OPT_REFCOUNTED_P(retval_ptr)) {
17662 				if (EXPECTED(!Z_OPT_ISREF_P(retval_ptr))) {
17663 					ZVAL_COPY_VALUE(return_value, retval_ptr);
17664 					if (EXPECTED(!(EX_CALL_INFO() & ZEND_CALL_CODE))) {
17665 						zend_refcounted *ref = Z_COUNTED_P(retval_ptr);
17666 						if (GC_MAY_LEAK(ref)) {
17667 							gc_possible_root(ref);
17668 						}
17669 						ZVAL_NULL(retval_ptr);
17670 					} else {
17671 						Z_ADDREF_P(return_value);
17672 					}
17673 				} else {
17674 					retval_ptr = Z_REFVAL_P(retval_ptr);
17675 					ZVAL_COPY(return_value, retval_ptr);
17676 				}
17677 			} else {
17678 				ZVAL_COPY_VALUE(return_value, retval_ptr);
17679 			}
17680 		} else /* if (IS_TMP_VAR == IS_VAR) */ {
17681 			if (UNEXPECTED(Z_ISREF_P(retval_ptr))) {
17682 				zend_refcounted *ref = Z_COUNTED_P(retval_ptr);
17683 
17684 				retval_ptr = Z_REFVAL_P(retval_ptr);
17685 				ZVAL_COPY_VALUE(return_value, retval_ptr);
17686 				if (UNEXPECTED(GC_DELREF(ref) == 0)) {
17687 					efree_size(ref, sizeof(zend_reference));
17688 				} else if (Z_OPT_REFCOUNTED_P(retval_ptr)) {
17689 					Z_ADDREF_P(retval_ptr);
17690 				}
17691 			} else {
17692 				ZVAL_COPY_VALUE(return_value, retval_ptr);
17693 			}
17694 		}
17695 	}
17696 	ZEND_VM_TAIL_CALL(zend_leave_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
17697 }
17698 
17699 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_RETURN_BY_REF_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
17700 {
17701 	USE_OPLINE
17702 	zval *retval_ptr;
17703 	zend_free_op free_op1;
17704 
17705 	SAVE_OPLINE();
17706 
17707 	do {
17708 		if ((IS_TMP_VAR & (IS_CONST|IS_TMP_VAR)) ||
17709 		    (IS_TMP_VAR == IS_VAR && opline->extended_value == ZEND_RETURNS_VALUE)) {
17710 			/* Not supposed to happen, but we'll allow it */
17711 			zend_error(E_NOTICE, "Only variable references should be returned by reference");
17712 
17713 			retval_ptr = _get_zval_ptr_tmp(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
17714 			if (!EX(return_value)) {
17715 				zval_ptr_dtor_nogc(free_op1);
17716 			} else {
17717 				if (IS_TMP_VAR == IS_VAR && UNEXPECTED(Z_ISREF_P(retval_ptr))) {
17718 					ZVAL_COPY_VALUE(EX(return_value), retval_ptr);
17719 					break;
17720 				}
17721 
17722 				ZVAL_NEW_REF(EX(return_value), retval_ptr);
17723 				if (IS_TMP_VAR == IS_CONST) {
17724 					Z_TRY_ADDREF_P(retval_ptr);
17725 				}
17726 			}
17727 			break;
17728 		}
17729 
17730 		retval_ptr = NULL;
17731 
17732 		if (IS_TMP_VAR == IS_VAR) {
17733 			if (retval_ptr == &EG(uninitialized_zval) ||
17734 			    (opline->extended_value == ZEND_RETURNS_FUNCTION && !Z_ISREF_P(retval_ptr))) {
17735 				zend_error(E_NOTICE, "Only variable references should be returned by reference");
17736 				if (EX(return_value)) {
17737 					ZVAL_NEW_REF(EX(return_value), retval_ptr);
17738 				} else {
17739 
17740 				}
17741 				break;
17742 			}
17743 		}
17744 
17745 		if (EX(return_value)) {
17746 			if (Z_ISREF_P(retval_ptr)) {
17747 				Z_ADDREF_P(retval_ptr);
17748 			} else {
17749 				ZVAL_MAKE_REF_EX(retval_ptr, 2);
17750 			}
17751 			ZVAL_REF(EX(return_value), Z_REF_P(retval_ptr));
17752 		}
17753 
17754 	} while (0);
17755 
17756 	ZEND_VM_TAIL_CALL(zend_leave_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
17757 }
17758 
17759 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_GENERATOR_RETURN_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
17760 {
17761 	USE_OPLINE
17762 	zval *retval;
17763 	zend_free_op free_op1;
17764 
17765 	zend_generator *generator = zend_get_running_generator(EXECUTE_DATA_C);
17766 
17767 	SAVE_OPLINE();
17768 	retval = _get_zval_ptr_tmp(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
17769 
17770 	/* Copy return value into generator->retval */
17771 	if ((IS_TMP_VAR & (IS_CONST|IS_TMP_VAR))) {
17772 		ZVAL_COPY_VALUE(&generator->retval, retval);
17773 		if (IS_TMP_VAR == IS_CONST) {
17774 			if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->retval))) {
17775 				Z_ADDREF(generator->retval);
17776 			}
17777 		}
17778 	} else if (IS_TMP_VAR == IS_CV) {
17779 		ZVAL_COPY_DEREF(&generator->retval, retval);
17780 	} else /* if (IS_TMP_VAR == IS_VAR) */ {
17781 		if (UNEXPECTED(Z_ISREF_P(retval))) {
17782 			zend_refcounted *ref = Z_COUNTED_P(retval);
17783 
17784 			retval = Z_REFVAL_P(retval);
17785 			ZVAL_COPY_VALUE(&generator->retval, retval);
17786 			if (UNEXPECTED(GC_DELREF(ref) == 0)) {
17787 				efree_size(ref, sizeof(zend_reference));
17788 			} else if (Z_OPT_REFCOUNTED_P(retval)) {
17789 				Z_ADDREF_P(retval);
17790 			}
17791 		} else {
17792 			ZVAL_COPY_VALUE(&generator->retval, retval);
17793 		}
17794 	}
17795 
17796 	/* Close the generator to free up resources */
17797 	zend_generator_close(generator, 1);
17798 
17799 	/* Pass execution back to handling code */
17800 	ZEND_VM_RETURN();
17801 }
17802 
17803 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_THROW_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
17804 {
17805 	USE_OPLINE
17806 	zval *value;
17807 	zend_free_op free_op1;
17808 
17809 	SAVE_OPLINE();
17810 	value = _get_zval_ptr_tmp(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
17811 
17812 	do {
17813 		if (IS_TMP_VAR == IS_CONST || UNEXPECTED(Z_TYPE_P(value) != IS_OBJECT)) {
17814 			if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
17815 				value = Z_REFVAL_P(value);
17816 				if (EXPECTED(Z_TYPE_P(value) == IS_OBJECT)) {
17817 					break;
17818 				}
17819 			}
17820 			if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
17821 				GET_OP1_UNDEF_CV(value, BP_VAR_R);
17822 				if (UNEXPECTED(EG(exception) != NULL)) {
17823 					HANDLE_EXCEPTION();
17824 				}
17825 			}
17826 			zend_throw_error(NULL, "Can only throw objects");
17827 			zval_ptr_dtor_nogc(free_op1);
17828 			HANDLE_EXCEPTION();
17829 		}
17830 	} while (0);
17831 
17832 	zend_exception_save();
17833 	if (IS_TMP_VAR != IS_TMP_VAR) {
17834 		Z_TRY_ADDREF_P(value);
17835 	}
17836 
17837 	zend_throw_exception_object(value);
17838 	zend_exception_restore();
17839 
17840 	HANDLE_EXCEPTION();
17841 }
17842 
17843 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SEND_VAL_EX_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
17844 {
17845 	USE_OPLINE
17846 	zval *value, *arg;
17847 	zend_free_op free_op1;
17848 	uint32_t arg_num = opline->op2.num;
17849 
17850 	if (EXPECTED(0)) {
17851 		if (QUICK_ARG_MUST_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
17852 			goto send_val_by_ref;
17853 		}
17854 	} else if (ARG_MUST_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
17855 send_val_by_ref:
17856 		ZEND_VM_TAIL_CALL(zend_cannot_pass_by_ref_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
17857 	}
17858 	value = _get_zval_ptr_tmp(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
17859 	arg = ZEND_CALL_VAR(EX(call), opline->result.var);
17860 	ZVAL_COPY_VALUE(arg, value);
17861 	if (IS_TMP_VAR == IS_CONST) {
17862 		if (UNEXPECTED(Z_OPT_REFCOUNTED_P(arg))) {
17863 			Z_ADDREF_P(arg);
17864 		}
17865 	}
17866 	ZEND_VM_NEXT_OPCODE();
17867 }
17868 
17869 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SEND_VAL_EX_SPEC_TMP_QUICK_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
17870 {
17871 	USE_OPLINE
17872 	zval *value, *arg;
17873 	zend_free_op free_op1;
17874 	uint32_t arg_num = opline->op2.num;
17875 
17876 	if (EXPECTED(1)) {
17877 		if (QUICK_ARG_MUST_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
17878 			goto send_val_by_ref;
17879 		}
17880 	} else if (ARG_MUST_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
17881 send_val_by_ref:
17882 		ZEND_VM_TAIL_CALL(zend_cannot_pass_by_ref_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
17883 	}
17884 	value = _get_zval_ptr_tmp(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
17885 	arg = ZEND_CALL_VAR(EX(call), opline->result.var);
17886 	ZVAL_COPY_VALUE(arg, value);
17887 	if (IS_TMP_VAR == IS_CONST) {
17888 		if (UNEXPECTED(Z_OPT_REFCOUNTED_P(arg))) {
17889 			Z_ADDREF_P(arg);
17890 		}
17891 	}
17892 	ZEND_VM_NEXT_OPCODE();
17893 }
17894 
17895 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SEND_USER_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
17896 {
17897 	USE_OPLINE
17898 	zval *arg, *param;
17899 	zend_free_op free_op1;
17900 
17901 	SAVE_OPLINE();
17902 	arg = _get_zval_ptr_tmp(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
17903 	param = ZEND_CALL_VAR(EX(call), opline->result.var);
17904 
17905 	if (UNEXPECTED(ARG_MUST_BE_SENT_BY_REF(EX(call)->func, opline->op2.num))) {
17906 		zend_param_must_be_ref(EX(call)->func, opline->op2.num);
17907 	}
17908 
17909 	ZVAL_COPY(param, arg);
17910 
17911 	zval_ptr_dtor_nogc(free_op1);
17912 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
17913 }
17914 
17915 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_CAST_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
17916 {
17917 	USE_OPLINE
17918 	zend_free_op free_op1;
17919 	zval *expr;
17920 	zval *result = EX_VAR(opline->result.var);
17921 	HashTable *ht;
17922 
17923 	SAVE_OPLINE();
17924 	expr = _get_zval_ptr_tmp(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
17925 
17926 	switch (opline->extended_value) {
17927 		case IS_NULL:
17928 			ZVAL_NULL(result);
17929 			break;
17930 		case _IS_BOOL:
17931 			ZVAL_BOOL(result, zend_is_true(expr));
17932 			break;
17933 		case IS_LONG:
17934 			ZVAL_LONG(result, zval_get_long(expr));
17935 			break;
17936 		case IS_DOUBLE:
17937 			ZVAL_DOUBLE(result, zval_get_double(expr));
17938 			break;
17939 		case IS_STRING:
17940 			ZVAL_STR(result, zval_get_string(expr));
17941 			break;
17942 		default:
17943 			if (IS_TMP_VAR & (IS_VAR|IS_CV)) {
17944 				ZVAL_DEREF(expr);
17945 			}
17946 			/* If value is already of correct type, return it directly */
17947 			if (Z_TYPE_P(expr) == opline->extended_value) {
17948 				ZVAL_COPY_VALUE(result, expr);
17949 				if (IS_TMP_VAR == IS_CONST) {
17950 					if (UNEXPECTED(Z_OPT_REFCOUNTED_P(result))) Z_ADDREF_P(result);
17951 				} else if (IS_TMP_VAR != IS_TMP_VAR) {
17952 					if (Z_OPT_REFCOUNTED_P(result)) Z_ADDREF_P(result);
17953 				}
17954 
17955 				ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
17956 			}
17957 
17958 			if (opline->extended_value == IS_ARRAY) {
17959 				if (IS_TMP_VAR == IS_CONST || Z_TYPE_P(expr) != IS_OBJECT || Z_OBJCE_P(expr) == zend_ce_closure) {
17960 					if (Z_TYPE_P(expr) != IS_NULL) {
17961 						ZVAL_ARR(result, zend_new_array(1));
17962 						expr = zend_hash_index_add_new(Z_ARRVAL_P(result), 0, expr);
17963 						if (IS_TMP_VAR == IS_CONST) {
17964 							if (UNEXPECTED(Z_OPT_REFCOUNTED_P(expr))) Z_ADDREF_P(expr);
17965 						} else {
17966 							if (Z_OPT_REFCOUNTED_P(expr)) Z_ADDREF_P(expr);
17967 						}
17968 					} else {
17969 						ZVAL_EMPTY_ARRAY(result);
17970 					}
17971 				} else if (Z_OBJ_HT_P(expr)->get_properties) {
17972 					HashTable *obj_ht = Z_OBJ_HT_P(expr)->get_properties(expr);
17973 					if (obj_ht) {
17974 						/* fast copy */
17975 						obj_ht = zend_proptable_to_symtable(obj_ht,
17976 							(Z_OBJCE_P(expr)->default_properties_count ||
17977 							 Z_OBJ_P(expr)->handlers != &std_object_handlers ||
17978 							 GC_IS_RECURSIVE(obj_ht)));
17979 						ZVAL_ARR(result, obj_ht);
17980 					} else {
17981 						ZVAL_EMPTY_ARRAY(result);
17982 					}
17983 				} else {
17984 					ZVAL_COPY_VALUE(result, expr);
17985 					Z_ADDREF_P(result);
17986 					convert_to_array(result);
17987 				}
17988 			} else {
17989 				ZVAL_OBJ(result, zend_objects_new(zend_standard_class_def));
17990 				if (Z_TYPE_P(expr) == IS_ARRAY) {
17991 					ht = zend_symtable_to_proptable(Z_ARR_P(expr));
17992 					if (GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) {
17993 						/* TODO: try not to duplicate immutable arrays as well ??? */
17994 						ht = zend_array_dup(ht);
17995 					}
17996 					Z_OBJ_P(result)->properties = ht;
17997 				} else if (Z_TYPE_P(expr) != IS_NULL) {
17998 					Z_OBJ_P(result)->properties = ht = zend_new_array(1);
17999 					expr = zend_hash_add_new(ht, ZSTR_KNOWN(ZEND_STR_SCALAR), expr);
18000 					if (IS_TMP_VAR == IS_CONST) {
18001 						if (UNEXPECTED(Z_OPT_REFCOUNTED_P(expr))) Z_ADDREF_P(expr);
18002 					} else {
18003 						if (Z_OPT_REFCOUNTED_P(expr)) Z_ADDREF_P(expr);
18004 					}
18005 				}
18006 			}
18007 	}
18008 
18009 	zval_ptr_dtor_nogc(free_op1);
18010 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
18011 }
18012 
18013 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FE_RESET_R_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
18014 {
18015 	USE_OPLINE
18016 	zend_free_op free_op1;
18017 	zval *array_ptr, *result;
18018 
18019 	SAVE_OPLINE();
18020 
18021 	array_ptr = _get_zval_ptr_tmp(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
18022 	if (EXPECTED(Z_TYPE_P(array_ptr) == IS_ARRAY)) {
18023 		result = EX_VAR(opline->result.var);
18024 		ZVAL_COPY_VALUE(result, array_ptr);
18025 		if (IS_TMP_VAR != IS_TMP_VAR && Z_OPT_REFCOUNTED_P(result)) {
18026 			Z_ADDREF_P(array_ptr);
18027 		}
18028 		Z_FE_POS_P(result) = 0;
18029 
18030 		ZEND_VM_NEXT_OPCODE();
18031 	} else if (IS_TMP_VAR != IS_CONST && EXPECTED(Z_TYPE_P(array_ptr) == IS_OBJECT)) {
18032 		if (!Z_OBJCE_P(array_ptr)->get_iterator) {
18033 			result = EX_VAR(opline->result.var);
18034 			ZVAL_COPY_VALUE(result, array_ptr);
18035 			if (IS_TMP_VAR != IS_TMP_VAR) {
18036 				Z_ADDREF_P(array_ptr);
18037 			}
18038 			if (Z_OBJ_P(array_ptr)->properties
18039 			 && UNEXPECTED(GC_REFCOUNT(Z_OBJ_P(array_ptr)->properties) > 1)) {
18040 				if (EXPECTED(!(GC_FLAGS(Z_OBJ_P(array_ptr)->properties) & IS_ARRAY_IMMUTABLE))) {
18041 					GC_DELREF(Z_OBJ_P(array_ptr)->properties);
18042 				}
18043 				Z_OBJ_P(array_ptr)->properties = zend_array_dup(Z_OBJ_P(array_ptr)->properties);
18044 			}
18045 			Z_FE_ITER_P(EX_VAR(opline->result.var)) = zend_hash_iterator_add(Z_OBJPROP_P(array_ptr), 0);
18046 
18047 			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
18048 		} else {
18049 			zend_bool is_empty = zend_fe_reset_iterator(array_ptr, 0 OPLINE_CC EXECUTE_DATA_CC);
18050 
18051 			zval_ptr_dtor_nogc(free_op1);
18052 			if (UNEXPECTED(EG(exception))) {
18053 				HANDLE_EXCEPTION();
18054 			} else if (is_empty) {
18055 				ZEND_VM_JMP_EX(OP_JMP_ADDR(opline, opline->op2), 0);
18056 			} else {
18057 				ZEND_VM_NEXT_OPCODE();
18058 			}
18059 		}
18060 	} else {
18061 		zend_error(E_WARNING, "Invalid argument supplied for foreach()");
18062 		ZVAL_UNDEF(EX_VAR(opline->result.var));
18063 		Z_FE_ITER_P(EX_VAR(opline->result.var)) = (uint32_t)-1;
18064 		zval_ptr_dtor_nogc(free_op1);
18065 		ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
18066 	}
18067 }
18068 
18069 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FE_RESET_RW_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
18070 {
18071 	USE_OPLINE
18072 	zend_free_op free_op1;
18073 	zval *array_ptr, *array_ref;
18074 
18075 	SAVE_OPLINE();
18076 
18077 	if (IS_TMP_VAR == IS_VAR || IS_TMP_VAR == IS_CV) {
18078 		array_ref = array_ptr = NULL;
18079 		if (Z_ISREF_P(array_ref)) {
18080 			array_ptr = Z_REFVAL_P(array_ref);
18081 		}
18082 	} else {
18083 		array_ref = array_ptr = _get_zval_ptr_tmp(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
18084 	}
18085 
18086 	if (EXPECTED(Z_TYPE_P(array_ptr) == IS_ARRAY)) {
18087 		if (IS_TMP_VAR == IS_VAR || IS_TMP_VAR == IS_CV) {
18088 			if (array_ptr == array_ref) {
18089 				ZVAL_NEW_REF(array_ref, array_ref);
18090 				array_ptr = Z_REFVAL_P(array_ref);
18091 			}
18092 			Z_ADDREF_P(array_ref);
18093 			ZVAL_COPY_VALUE(EX_VAR(opline->result.var), array_ref);
18094 		} else {
18095 			array_ref = EX_VAR(opline->result.var);
18096 			ZVAL_NEW_REF(array_ref, array_ptr);
18097 			array_ptr = Z_REFVAL_P(array_ref);
18098 		}
18099 		if (IS_TMP_VAR == IS_CONST) {
18100 			ZVAL_ARR(array_ptr, zend_array_dup(Z_ARRVAL_P(array_ptr)));
18101 		} else {
18102 			SEPARATE_ARRAY(array_ptr);
18103 		}
18104 		Z_FE_ITER_P(EX_VAR(opline->result.var)) = zend_hash_iterator_add(Z_ARRVAL_P(array_ptr), 0);
18105 
18106 		if (IS_TMP_VAR == IS_VAR) {
18107 
18108 		}
18109 		ZEND_VM_NEXT_OPCODE();
18110 	} else if (IS_TMP_VAR != IS_CONST && EXPECTED(Z_TYPE_P(array_ptr) == IS_OBJECT)) {
18111 		if (!Z_OBJCE_P(array_ptr)->get_iterator) {
18112 			if (IS_TMP_VAR == IS_VAR || IS_TMP_VAR == IS_CV) {
18113 				if (array_ptr == array_ref) {
18114 					ZVAL_NEW_REF(array_ref, array_ref);
18115 					array_ptr = Z_REFVAL_P(array_ref);
18116 				}
18117 				Z_ADDREF_P(array_ref);
18118 				ZVAL_COPY_VALUE(EX_VAR(opline->result.var), array_ref);
18119 			} else {
18120 				array_ptr = EX_VAR(opline->result.var);
18121 				ZVAL_COPY_VALUE(array_ptr, array_ref);
18122 			}
18123 			if (Z_OBJ_P(array_ptr)->properties
18124 			 && UNEXPECTED(GC_REFCOUNT(Z_OBJ_P(array_ptr)->properties) > 1)) {
18125 				if (EXPECTED(!(GC_FLAGS(Z_OBJ_P(array_ptr)->properties) & IS_ARRAY_IMMUTABLE))) {
18126 					GC_DELREF(Z_OBJ_P(array_ptr)->properties);
18127 				}
18128 				Z_OBJ_P(array_ptr)->properties = zend_array_dup(Z_OBJ_P(array_ptr)->properties);
18129 			}
18130 			Z_FE_ITER_P(EX_VAR(opline->result.var)) = zend_hash_iterator_add(Z_OBJPROP_P(array_ptr), 0);
18131 
18132 			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
18133 		} else {
18134 			zend_bool is_empty = zend_fe_reset_iterator(array_ptr, 1 OPLINE_CC EXECUTE_DATA_CC);
18135 
18136 			if (IS_TMP_VAR == IS_VAR) {
18137 
18138 			} else {
18139 				zval_ptr_dtor_nogc(free_op1);
18140 			}
18141 			if (UNEXPECTED(EG(exception))) {
18142 				HANDLE_EXCEPTION();
18143 			} else if (is_empty) {
18144 				ZEND_VM_JMP_EX(OP_JMP_ADDR(opline, opline->op2), 0);
18145 			} else {
18146 				ZEND_VM_NEXT_OPCODE();
18147 			}
18148 		}
18149 	} else {
18150 		zend_error(E_WARNING, "Invalid argument supplied for foreach()");
18151 		ZVAL_UNDEF(EX_VAR(opline->result.var));
18152 		Z_FE_ITER_P(EX_VAR(opline->result.var)) = (uint32_t)-1;
18153 		if (IS_TMP_VAR == IS_VAR) {
18154 
18155 		} else {
18156 			zval_ptr_dtor_nogc(free_op1);
18157 		}
18158 		ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
18159 	}
18160 }
18161 
18162 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_END_SILENCE_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
18163 {
18164 	USE_OPLINE
18165 
18166 	if (!EG(error_reporting) && Z_LVAL_P(EX_VAR(opline->op1.var)) != 0) {
18167 		EG(error_reporting) = Z_LVAL_P(EX_VAR(opline->op1.var));
18168 	}
18169 	ZEND_VM_NEXT_OPCODE();
18170 }
18171 
18172 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_JMP_SET_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
18173 {
18174 	USE_OPLINE
18175 	zend_free_op free_op1;
18176 	zval *value;
18177 	zval *ref = NULL;
18178 	int ret;
18179 
18180 	SAVE_OPLINE();
18181 	value = _get_zval_ptr_tmp(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
18182 
18183 	if ((IS_TMP_VAR == IS_VAR || IS_TMP_VAR == IS_CV) && Z_ISREF_P(value)) {
18184 		if (IS_TMP_VAR == IS_VAR) {
18185 			ref = value;
18186 		}
18187 		value = Z_REFVAL_P(value);
18188 	}
18189 
18190 	ret = i_zend_is_true(value);
18191 
18192 	if (UNEXPECTED(EG(exception))) {
18193 		zval_ptr_dtor_nogc(free_op1);
18194 		ZVAL_UNDEF(EX_VAR(opline->result.var));
18195 		HANDLE_EXCEPTION();
18196 	}
18197 
18198 	if (ret) {
18199 		zval *result = EX_VAR(opline->result.var);
18200 
18201 		ZVAL_COPY_VALUE(result, value);
18202 		if (IS_TMP_VAR == IS_CONST) {
18203 			if (UNEXPECTED(Z_OPT_REFCOUNTED_P(result))) Z_ADDREF_P(result);
18204 		} else if (IS_TMP_VAR == IS_CV) {
18205 			if (Z_OPT_REFCOUNTED_P(result)) Z_ADDREF_P(result);
18206 		} else if (IS_TMP_VAR == IS_VAR && ref) {
18207 			zend_reference *r = Z_REF_P(ref);
18208 
18209 			if (UNEXPECTED(GC_DELREF(r) == 0)) {
18210 				efree_size(r, sizeof(zend_reference));
18211 			} else if (Z_OPT_REFCOUNTED_P(result)) {
18212 				Z_ADDREF_P(result);
18213 			}
18214 		}
18215 		ZEND_VM_JMP_EX(OP_JMP_ADDR(opline, opline->op2), 0);
18216 	}
18217 
18218 	zval_ptr_dtor_nogc(free_op1);
18219 	ZEND_VM_NEXT_OPCODE();
18220 }
18221 
18222 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_QM_ASSIGN_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
18223 {
18224 	USE_OPLINE
18225 	zend_free_op free_op1;
18226 	zval *value;
18227 	zval *result = EX_VAR(opline->result.var);
18228 
18229 	value = _get_zval_ptr_tmp(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
18230 	if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
18231 		SAVE_OPLINE();
18232 		GET_OP1_UNDEF_CV(value, BP_VAR_R);
18233 		ZVAL_NULL(result);
18234 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
18235 	}
18236 
18237 	if (IS_TMP_VAR == IS_CV) {
18238 		ZVAL_COPY_DEREF(result, value);
18239 	} else if (IS_TMP_VAR == IS_VAR) {
18240 		if (UNEXPECTED(Z_ISREF_P(value))) {
18241 			ZVAL_COPY_VALUE(result, Z_REFVAL_P(value));
18242 			if (UNEXPECTED(Z_DELREF_P(value) == 0)) {
18243 				efree_size(Z_REF_P(value), sizeof(zend_reference));
18244 			} else if (Z_OPT_REFCOUNTED_P(result)) {
18245 				Z_ADDREF_P(result);
18246 			}
18247 		} else {
18248 			ZVAL_COPY_VALUE(result, value);
18249 		}
18250 	} else {
18251 		ZVAL_COPY_VALUE(result, value);
18252 		if (IS_TMP_VAR == IS_CONST) {
18253 			if (UNEXPECTED(Z_OPT_REFCOUNTED_P(result))) {
18254 				Z_ADDREF_P(result);
18255 			}
18256 		}
18257 	}
18258 	ZEND_VM_NEXT_OPCODE();
18259 }
18260 
18261 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_YIELD_FROM_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
18262 {
18263 	USE_OPLINE
18264 
18265 	zend_generator *generator = zend_get_running_generator(EXECUTE_DATA_C);
18266 
18267 	zval *val;
18268 	zend_free_op free_op1;
18269 
18270 	SAVE_OPLINE();
18271 	val = _get_zval_ptr_tmp(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
18272 
18273 	if (UNEXPECTED(generator->flags & ZEND_GENERATOR_FORCED_CLOSE)) {
18274 		zend_throw_error(NULL, "Cannot use \"yield from\" in a force-closed generator");
18275 		zval_ptr_dtor_nogc(free_op1);
18276 		UNDEF_RESULT();
18277 		HANDLE_EXCEPTION();
18278 	}
18279 
18280 	if (Z_TYPE_P(val) == IS_ARRAY) {
18281 		ZVAL_COPY_VALUE(&generator->values, val);
18282 		if (IS_TMP_VAR != IS_TMP_VAR && Z_OPT_REFCOUNTED_P(val)) {
18283 			Z_ADDREF_P(val);
18284 		}
18285 		Z_FE_POS(generator->values) = 0;
18286 
18287 	} else if (IS_TMP_VAR != IS_CONST && Z_TYPE_P(val) == IS_OBJECT && Z_OBJCE_P(val)->get_iterator) {
18288 		zend_class_entry *ce = Z_OBJCE_P(val);
18289 		if (ce == zend_ce_generator) {
18290 			zend_generator *new_gen = (zend_generator *) Z_OBJ_P(val);
18291 
18292 			if (IS_TMP_VAR != IS_TMP_VAR) {
18293 				Z_ADDREF_P(val);
18294 			}
18295 
18296 			if (Z_ISUNDEF(new_gen->retval)) {
18297 				if (UNEXPECTED(zend_generator_get_current(new_gen) == generator)) {
18298 					zend_throw_error(NULL, "Impossible to yield from the Generator being currently run");
18299 					zval_ptr_dtor(val);
18300 					UNDEF_RESULT();
18301 					HANDLE_EXCEPTION();
18302 				} else {
18303 					zend_generator_yield_from(generator, new_gen);
18304 				}
18305 			} else if (UNEXPECTED(new_gen->execute_data == NULL)) {
18306 				zend_throw_error(NULL, "Generator passed to yield from was aborted without proper return and is unable to continue");
18307 				zval_ptr_dtor(val);
18308 				UNDEF_RESULT();
18309 				HANDLE_EXCEPTION();
18310 			} else {
18311 				if (RETURN_VALUE_USED(opline)) {
18312 					ZVAL_COPY(EX_VAR(opline->result.var), &new_gen->retval);
18313 				}
18314 				ZEND_VM_NEXT_OPCODE();
18315 			}
18316 		} else {
18317 			zend_object_iterator *iter = ce->get_iterator(ce, val, 0);
18318 			zval_ptr_dtor_nogc(free_op1);
18319 
18320 			if (UNEXPECTED(!iter) || UNEXPECTED(EG(exception))) {
18321 				if (!EG(exception)) {
18322 					zend_throw_error(NULL, "Object of type %s did not create an Iterator", ZSTR_VAL(ce->name));
18323 				}
18324 				UNDEF_RESULT();
18325 				HANDLE_EXCEPTION();
18326 			}
18327 
18328 			iter->index = 0;
18329 			if (iter->funcs->rewind) {
18330 				iter->funcs->rewind(iter);
18331 				if (UNEXPECTED(EG(exception) != NULL)) {
18332 					OBJ_RELEASE(&iter->std);
18333 					UNDEF_RESULT();
18334 					HANDLE_EXCEPTION();
18335 				}
18336 			}
18337 
18338 			ZVAL_OBJ(&generator->values, &iter->std);
18339 		}
18340 	} else {
18341 		zend_throw_error(NULL, "Can use \"yield from\" only with arrays and Traversables");
18342 		zval_ptr_dtor_nogc(free_op1);
18343 		UNDEF_RESULT();
18344 		HANDLE_EXCEPTION();
18345 	}
18346 
18347 	/* This is the default return value
18348 	 * when the expression is a Generator, it will be overwritten in zend_generator_resume() */
18349 	if (RETURN_VALUE_USED(opline)) {
18350 		ZVAL_NULL(EX_VAR(opline->result.var));
18351 	}
18352 
18353 	/* This generator has no send target (though the generator we delegate to might have one) */
18354 	generator->send_target = NULL;
18355 
18356 	/* We increment to the next op, so we are at the correct position when the
18357 	 * generator is resumed. */
18358 	ZEND_VM_INC_OPCODE();
18359 
18360 	/* The GOTO VM uses a local opline variable. We need to set the opline
18361 	 * variable in execute_data so we don't resume at an old position. */
18362 	SAVE_OPLINE();
18363 
18364 	ZEND_VM_RETURN();
18365 }
18366 
18367 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_IDENTICAL_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
18368 {
18369 	USE_OPLINE
18370 	zend_free_op free_op1;
18371 	zval *op1, *op2;
18372 	int result;
18373 
18374 	SAVE_OPLINE();
18375 	op1 = _get_zval_ptr_tmp(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
18376 	op2 = RT_CONSTANT(opline, opline->op2);
18377 	result = fast_is_identical_function(op1, op2);
18378 	zval_ptr_dtor_nogc(free_op1);
18379 
18380 	ZEND_VM_SMART_BRANCH(result, 1);
18381 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
18382 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
18383 }
18384 
18385 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_NOT_IDENTICAL_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
18386 {
18387 	USE_OPLINE
18388 	zend_free_op free_op1;
18389 	zval *op1, *op2;
18390 	int result;
18391 
18392 	SAVE_OPLINE();
18393 	op1 = _get_zval_ptr_tmp(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
18394 	op2 = RT_CONSTANT(opline, opline->op2);
18395 	result = fast_is_not_identical_function(op1, op2);
18396 	zval_ptr_dtor_nogc(free_op1);
18397 
18398 	ZEND_VM_SMART_BRANCH(result, 1);
18399 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
18400 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
18401 }
18402 
18403 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_FUNC_ARG_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
18404 {
18405 	if (UNEXPECTED(ZEND_CALL_INFO(EX(call)) & ZEND_CALL_SEND_ARG_BY_REF)) {
18406         if ((IS_TMP_VAR & (IS_CONST|IS_TMP_VAR))) {
18407 			ZEND_VM_TAIL_CALL(zend_use_tmp_in_write_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
18408         }
18409 		ZEND_VM_TAIL_CALL(ZEND_NULL_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
18410 	} else {
18411 		if (IS_CONST == IS_UNUSED) {
18412 			ZEND_VM_TAIL_CALL(zend_use_undef_in_read_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
18413 		}
18414 		ZEND_VM_TAIL_CALL(ZEND_FETCH_DIM_R_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
18415 	}
18416 }
18417 
18418 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_FUNC_ARG_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
18419 {
18420 	if (UNEXPECTED(ZEND_CALL_INFO(EX(call)) & ZEND_CALL_SEND_ARG_BY_REF)) {
18421 		/* Behave like FETCH_OBJ_W */
18422 		if ((IS_TMP_VAR & (IS_CONST|IS_TMP_VAR))) {
18423 			ZEND_VM_TAIL_CALL(zend_use_tmp_in_write_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
18424 		}
18425 
18426 		ZEND_VM_TAIL_CALL(ZEND_NULL_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
18427 	} else {
18428 		ZEND_VM_TAIL_CALL(ZEND_FETCH_OBJ_R_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
18429 	}
18430 }
18431 
18432 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ROPE_ADD_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
18433 {
18434 	USE_OPLINE
18435 
18436 	zend_string **rope;
18437 	zval *var;
18438 
18439 	/* op1 and result are the same */
18440 	rope = (zend_string**)EX_VAR(opline->op1.var);
18441 	if (IS_CONST == IS_CONST) {
18442 		var = RT_CONSTANT(opline, opline->op2);
18443 		rope[opline->extended_value] = Z_STR_P(var);
18444 		if (UNEXPECTED(Z_REFCOUNTED_P(var))) {
18445 			Z_ADDREF_P(var);
18446 		}
18447 	} else {
18448 		var = RT_CONSTANT(opline, opline->op2);
18449 		if (EXPECTED(Z_TYPE_P(var) == IS_STRING)) {
18450 			if (IS_CONST == IS_CV) {
18451 				rope[opline->extended_value] = zend_string_copy(Z_STR_P(var));
18452 			} else {
18453 				rope[opline->extended_value] = Z_STR_P(var);
18454 			}
18455 		} else {
18456 			SAVE_OPLINE();
18457 			if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(var) == IS_UNDEF)) {
18458 				GET_OP2_UNDEF_CV(var, BP_VAR_R);
18459 			}
18460 			rope[opline->extended_value] = zval_get_string_func(var);
18461 
18462 			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
18463 		}
18464 	}
18465 	ZEND_VM_NEXT_OPCODE();
18466 }
18467 
18468 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ROPE_END_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
18469 {
18470 	USE_OPLINE
18471 
18472 	zend_string **rope;
18473 	zval *var, *ret;
18474 	uint32_t i;
18475 	size_t len = 0;
18476 	char *target;
18477 
18478 	rope = (zend_string**)EX_VAR(opline->op1.var);
18479 	if (IS_CONST == IS_CONST) {
18480 		var = RT_CONSTANT(opline, opline->op2);
18481 		rope[opline->extended_value] = Z_STR_P(var);
18482 		if (UNEXPECTED(Z_REFCOUNTED_P(var))) {
18483 			Z_ADDREF_P(var);
18484 		}
18485 	} else {
18486 		var = RT_CONSTANT(opline, opline->op2);
18487 		if (EXPECTED(Z_TYPE_P(var) == IS_STRING)) {
18488 			if (IS_CONST == IS_CV) {
18489 				rope[opline->extended_value] = zend_string_copy(Z_STR_P(var));
18490 			} else {
18491 				rope[opline->extended_value] = Z_STR_P(var);
18492 			}
18493 		} else {
18494 			SAVE_OPLINE();
18495 			if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(var) == IS_UNDEF)) {
18496 				GET_OP2_UNDEF_CV(var, BP_VAR_R);
18497 			}
18498 			rope[opline->extended_value] = zval_get_string_func(var);
18499 
18500 			if (UNEXPECTED(EG(exception))) {
18501 				for (i = 0; i <= opline->extended_value; i++) {
18502 					zend_string_release_ex(rope[i], 0);
18503 				}
18504 				ZVAL_UNDEF(EX_VAR(opline->result.var));
18505 				HANDLE_EXCEPTION();
18506 			}
18507 		}
18508 	}
18509 	for (i = 0; i <= opline->extended_value; i++) {
18510 		len += ZSTR_LEN(rope[i]);
18511 	}
18512 	ret = EX_VAR(opline->result.var);
18513 	ZVAL_STR(ret, zend_string_alloc(len, 0));
18514 	target = Z_STRVAL_P(ret);
18515 	for (i = 0; i <= opline->extended_value; i++) {
18516 		memcpy(target, ZSTR_VAL(rope[i]), ZSTR_LEN(rope[i]));
18517 		target += ZSTR_LEN(rope[i]);
18518 		zend_string_release_ex(rope[i], 0);
18519 	}
18520 	*target = '\0';
18521 
18522 	ZEND_VM_NEXT_OPCODE();
18523 }
18524 
18525 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
18526 {
18527 	USE_OPLINE
18528 	zend_free_op free_op1;
18529 	zval *expr_ptr, new_expr;
18530 
18531 	SAVE_OPLINE();
18532 	if ((IS_TMP_VAR == IS_VAR || IS_TMP_VAR == IS_CV) &&
18533 	    UNEXPECTED(opline->extended_value & ZEND_ARRAY_ELEMENT_REF)) {
18534 		expr_ptr = NULL;
18535 		if (Z_ISREF_P(expr_ptr)) {
18536 			Z_ADDREF_P(expr_ptr);
18537 		} else {
18538 			ZVAL_MAKE_REF_EX(expr_ptr, 2);
18539 		}
18540 
18541 	} else {
18542 		expr_ptr = _get_zval_ptr_tmp(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
18543 		if (IS_TMP_VAR == IS_TMP_VAR) {
18544 			/* pass */
18545 		} else if (IS_TMP_VAR == IS_CONST) {
18546 			Z_TRY_ADDREF_P(expr_ptr);
18547 		} else if (IS_TMP_VAR == IS_CV) {
18548 			ZVAL_DEREF(expr_ptr);
18549 			Z_TRY_ADDREF_P(expr_ptr);
18550 		} else /* if (IS_TMP_VAR == IS_VAR) */ {
18551 			if (UNEXPECTED(Z_ISREF_P(expr_ptr))) {
18552 				zend_refcounted *ref = Z_COUNTED_P(expr_ptr);
18553 
18554 				expr_ptr = Z_REFVAL_P(expr_ptr);
18555 				if (UNEXPECTED(GC_DELREF(ref) == 0)) {
18556 					ZVAL_COPY_VALUE(&new_expr, expr_ptr);
18557 					expr_ptr = &new_expr;
18558 					efree_size(ref, sizeof(zend_reference));
18559 				} else if (Z_OPT_REFCOUNTED_P(expr_ptr)) {
18560 					Z_ADDREF_P(expr_ptr);
18561 				}
18562 			}
18563 		}
18564 	}
18565 
18566 	if (IS_CONST != IS_UNUSED) {
18567 
18568 		zval *offset = RT_CONSTANT(opline, opline->op2);
18569 		zend_string *str;
18570 		zend_ulong hval;
18571 
18572 add_again:
18573 		if (EXPECTED(Z_TYPE_P(offset) == IS_STRING)) {
18574 			str = Z_STR_P(offset);
18575 			if (IS_CONST != IS_CONST) {
18576 				if (ZEND_HANDLE_NUMERIC(str, hval)) {
18577 					goto num_index;
18578 				}
18579 			}
18580 str_index:
18581 			zend_hash_update(Z_ARRVAL_P(EX_VAR(opline->result.var)), str, expr_ptr);
18582 		} else if (EXPECTED(Z_TYPE_P(offset) == IS_LONG)) {
18583 			hval = Z_LVAL_P(offset);
18584 num_index:
18585 			zend_hash_index_update(Z_ARRVAL_P(EX_VAR(opline->result.var)), hval, expr_ptr);
18586 		} else if ((IS_CONST & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
18587 			offset = Z_REFVAL_P(offset);
18588 			goto add_again;
18589 		} else if (Z_TYPE_P(offset) == IS_NULL) {
18590 			str = ZSTR_EMPTY_ALLOC();
18591 			goto str_index;
18592 		} else if (Z_TYPE_P(offset) == IS_DOUBLE) {
18593 			hval = zend_dval_to_lval(Z_DVAL_P(offset));
18594 			goto num_index;
18595 		} else if (Z_TYPE_P(offset) == IS_FALSE) {
18596 			hval = 0;
18597 			goto num_index;
18598 		} else if (Z_TYPE_P(offset) == IS_TRUE) {
18599 			hval = 1;
18600 			goto num_index;
18601 		} else if (IS_CONST == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
18602 			GET_OP2_UNDEF_CV(offset, BP_VAR_R);
18603 			str = ZSTR_EMPTY_ALLOC();
18604 			goto str_index;
18605 		} else {
18606 			zend_illegal_offset();
18607 			zval_ptr_dtor_nogc(expr_ptr);
18608 		}
18609 
18610 	} else {
18611 		if (!zend_hash_next_index_insert(Z_ARRVAL_P(EX_VAR(opline->result.var)), expr_ptr)) {
18612 			zend_cannot_add_element();
18613 			zval_ptr_dtor_nogc(expr_ptr);
18614 		}
18615 	}
18616 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
18617 }
18618 
18619 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_ARRAY_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
18620 {
18621 	zval *array;
18622 	uint32_t size;
18623 	USE_OPLINE
18624 
18625 	array = EX_VAR(opline->result.var);
18626 	if (IS_TMP_VAR != IS_UNUSED) {
18627 		size = opline->extended_value >> ZEND_ARRAY_SIZE_SHIFT;
18628 		ZVAL_ARR(array, zend_new_array(size));
18629 		/* Explicitly initialize array as not-packed if flag is set */
18630 		if (opline->extended_value & ZEND_ARRAY_NOT_PACKED) {
18631 			zend_hash_real_init_mixed(Z_ARRVAL_P(array));
18632 		}
18633 		ZEND_VM_TAIL_CALL(ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
18634 	} else {
18635 		ZVAL_EMPTY_ARRAY(array);
18636 		ZEND_VM_NEXT_OPCODE();
18637 	}
18638 }
18639 
18640 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_YIELD_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
18641 {
18642 	USE_OPLINE
18643 
18644 	zend_generator *generator = zend_get_running_generator(EXECUTE_DATA_C);
18645 
18646 	SAVE_OPLINE();
18647 	if (UNEXPECTED(generator->flags & ZEND_GENERATOR_FORCED_CLOSE)) {
18648 		ZEND_VM_TAIL_CALL(zend_yield_in_closed_generator_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
18649 	}
18650 
18651 	/* Destroy the previously yielded value */
18652 	zval_ptr_dtor(&generator->value);
18653 
18654 	/* Destroy the previously yielded key */
18655 	zval_ptr_dtor(&generator->key);
18656 
18657 	/* Set the new yielded value */
18658 	if (IS_TMP_VAR != IS_UNUSED) {
18659 		zend_free_op free_op1;
18660 
18661 		if (UNEXPECTED(EX(func)->op_array.fn_flags & ZEND_ACC_RETURN_REFERENCE)) {
18662 			/* Constants and temporary variables aren't yieldable by reference,
18663 			 * but we still allow them with a notice. */
18664 			if (IS_TMP_VAR & (IS_CONST|IS_TMP_VAR)) {
18665 				zval *value;
18666 
18667 				zend_error(E_NOTICE, "Only variable references should be yielded by reference");
18668 
18669 				value = _get_zval_ptr_tmp(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
18670 				ZVAL_COPY_VALUE(&generator->value, value);
18671 				if (IS_TMP_VAR == IS_CONST) {
18672 					if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
18673 						Z_ADDREF(generator->value);
18674 					}
18675 				}
18676 			} else {
18677 				zval *value_ptr = NULL;
18678 
18679 				/* If a function call result is yielded and the function did
18680 				 * not return by reference we throw a notice. */
18681 				if (IS_TMP_VAR == IS_VAR &&
18682 				    (value_ptr == &EG(uninitialized_zval) ||
18683 				     (opline->extended_value == ZEND_RETURNS_FUNCTION &&
18684 				      !Z_ISREF_P(value_ptr)))) {
18685 					zend_error(E_NOTICE, "Only variable references should be yielded by reference");
18686 					ZVAL_COPY(&generator->value, value_ptr);
18687 				} else {
18688 					if (Z_ISREF_P(value_ptr)) {
18689 						Z_ADDREF_P(value_ptr);
18690 					} else {
18691 						ZVAL_MAKE_REF_EX(value_ptr, 2);
18692 					}
18693 					ZVAL_REF(&generator->value, Z_REF_P(value_ptr));
18694 				}
18695 
18696 			}
18697 		} else {
18698 			zval *value = _get_zval_ptr_tmp(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
18699 
18700 			/* Consts, temporary variables and references need copying */
18701 			if (IS_TMP_VAR == IS_CONST) {
18702 				ZVAL_COPY_VALUE(&generator->value, value);
18703 				if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
18704 					Z_ADDREF(generator->value);
18705 				}
18706 			} else if (IS_TMP_VAR == IS_TMP_VAR) {
18707 				ZVAL_COPY_VALUE(&generator->value, value);
18708             } else if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
18709 				ZVAL_COPY(&generator->value, Z_REFVAL_P(value));
18710 
18711 			} else {
18712 				ZVAL_COPY_VALUE(&generator->value, value);
18713 				if (IS_TMP_VAR == IS_CV) {
18714 					if (Z_OPT_REFCOUNTED_P(value)) Z_ADDREF_P(value);
18715 				}
18716 			}
18717 		}
18718 	} else {
18719 		/* If no value was specified yield null */
18720 		ZVAL_NULL(&generator->value);
18721 	}
18722 
18723 	/* Set the new yielded key */
18724 	if (IS_CONST != IS_UNUSED) {
18725 
18726 		zval *key = RT_CONSTANT(opline, opline->op2);
18727 
18728 		/* Consts, temporary variables and references need copying */
18729 		if (IS_CONST == IS_CONST) {
18730 			ZVAL_COPY_VALUE(&generator->key, key);
18731 			if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->key))) {
18732 				Z_ADDREF(generator->key);
18733 			}
18734 		} else if (IS_CONST == IS_TMP_VAR) {
18735 			ZVAL_COPY_VALUE(&generator->key, key);
18736 		} else if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(key)) {
18737 			ZVAL_COPY(&generator->key, Z_REFVAL_P(key));
18738 
18739 		} else {
18740 			ZVAL_COPY_VALUE(&generator->key, key);
18741 			if (IS_CONST == IS_CV) {
18742 				if (Z_OPT_REFCOUNTED_P(key)) Z_ADDREF_P(key);
18743 			}
18744 		}
18745 
18746 		if (Z_TYPE(generator->key) == IS_LONG
18747 		    && Z_LVAL(generator->key) > generator->largest_used_integer_key
18748 		) {
18749 			generator->largest_used_integer_key = Z_LVAL(generator->key);
18750 		}
18751 	} else {
18752 		/* If no key was specified we use auto-increment keys */
18753 		generator->largest_used_integer_key++;
18754 		ZVAL_LONG(&generator->key, generator->largest_used_integer_key);
18755 	}
18756 
18757 	if (RETURN_VALUE_USED(opline)) {
18758 		/* If the return value of yield is used set the send
18759 		 * target and initialize it to NULL */
18760 		generator->send_target = EX_VAR(opline->result.var);
18761 		ZVAL_NULL(generator->send_target);
18762 	} else {
18763 		generator->send_target = NULL;
18764 	}
18765 
18766 	/* We increment to the next op, so we are at the correct position when the
18767 	 * generator is resumed. */
18768 	ZEND_VM_INC_OPCODE();
18769 
18770 	/* The GOTO VM uses a local opline variable. We need to set the opline
18771 	 * variable in execute_data so we don't resume at an old position. */
18772 	SAVE_OPLINE();
18773 
18774 	ZEND_VM_RETURN();
18775 }
18776 
18777 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IN_ARRAY_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
18778 {
18779 	USE_OPLINE
18780 	zend_free_op free_op1;
18781 	zval *op1;
18782 	HashTable *ht = Z_ARRVAL_P(RT_CONSTANT(opline, opline->op2));
18783 	int result;
18784 
18785 	SAVE_OPLINE();
18786 	op1 = _get_zval_ptr_tmp(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
18787 	if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
18788 		result = zend_hash_exists(ht, Z_STR_P(op1));
18789 	} else if (opline->extended_value) {
18790 		if (EXPECTED(Z_TYPE_P(op1) == IS_LONG)) {
18791 			result = zend_hash_index_exists(ht, Z_LVAL_P(op1));
18792 		} else {
18793 			result = 0;
18794 		}
18795 	} else if (Z_TYPE_P(op1) <= IS_FALSE) {
18796 		result = zend_hash_exists(ht, ZSTR_EMPTY_ALLOC());
18797 	} else {
18798 		zend_string *key;
18799 		zval key_tmp, result_tmp;
18800 
18801 		result = 0;
18802 		ZEND_HASH_FOREACH_STR_KEY(ht, key) {
18803 			ZVAL_STR(&key_tmp, key);
18804 			compare_function(&result_tmp, op1, &key_tmp);
18805 			if (Z_LVAL(result_tmp) == 0) {
18806 				result = 1;
18807 				break;
18808 			}
18809 		} ZEND_HASH_FOREACH_END();
18810 	}
18811 	zval_ptr_dtor_nogc(free_op1);
18812 	ZEND_VM_SMART_BRANCH(result, 1);
18813 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
18814 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
18815 }
18816 
18817 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_FUNC_ARG_SPEC_TMP_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
18818 {
18819 	if (UNEXPECTED(ZEND_CALL_INFO(EX(call)) & ZEND_CALL_SEND_ARG_BY_REF)) {
18820         if ((IS_TMP_VAR & (IS_CONST|IS_TMP_VAR))) {
18821 			ZEND_VM_TAIL_CALL(zend_use_tmp_in_write_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
18822         }
18823 		ZEND_VM_TAIL_CALL(ZEND_NULL_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
18824 	} else {
18825 		if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) {
18826 			ZEND_VM_TAIL_CALL(zend_use_undef_in_read_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
18827 		}
18828 		ZEND_VM_TAIL_CALL(ZEND_FETCH_DIM_R_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
18829 	}
18830 }
18831 
18832 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_FUNC_ARG_SPEC_TMP_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
18833 {
18834 	if (UNEXPECTED(ZEND_CALL_INFO(EX(call)) & ZEND_CALL_SEND_ARG_BY_REF)) {
18835 		/* Behave like FETCH_OBJ_W */
18836 		if ((IS_TMP_VAR & (IS_CONST|IS_TMP_VAR))) {
18837 			ZEND_VM_TAIL_CALL(zend_use_tmp_in_write_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
18838 		}
18839 
18840 		ZEND_VM_TAIL_CALL(ZEND_NULL_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
18841 	} else {
18842 		ZEND_VM_TAIL_CALL(ZEND_FETCH_OBJ_R_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
18843 	}
18844 }
18845 
18846 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ROPE_ADD_SPEC_TMP_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
18847 {
18848 	USE_OPLINE
18849 	zend_free_op free_op2;
18850 	zend_string **rope;
18851 	zval *var;
18852 
18853 	/* op1 and result are the same */
18854 	rope = (zend_string**)EX_VAR(opline->op1.var);
18855 	if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
18856 		var = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
18857 		rope[opline->extended_value] = Z_STR_P(var);
18858 		if (UNEXPECTED(Z_REFCOUNTED_P(var))) {
18859 			Z_ADDREF_P(var);
18860 		}
18861 	} else {
18862 		var = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
18863 		if (EXPECTED(Z_TYPE_P(var) == IS_STRING)) {
18864 			if ((IS_TMP_VAR|IS_VAR) == IS_CV) {
18865 				rope[opline->extended_value] = zend_string_copy(Z_STR_P(var));
18866 			} else {
18867 				rope[opline->extended_value] = Z_STR_P(var);
18868 			}
18869 		} else {
18870 			SAVE_OPLINE();
18871 			if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(var) == IS_UNDEF)) {
18872 				GET_OP2_UNDEF_CV(var, BP_VAR_R);
18873 			}
18874 			rope[opline->extended_value] = zval_get_string_func(var);
18875 			zval_ptr_dtor_nogc(free_op2);
18876 			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
18877 		}
18878 	}
18879 	ZEND_VM_NEXT_OPCODE();
18880 }
18881 
18882 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ROPE_END_SPEC_TMP_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
18883 {
18884 	USE_OPLINE
18885 	zend_free_op free_op2;
18886 	zend_string **rope;
18887 	zval *var, *ret;
18888 	uint32_t i;
18889 	size_t len = 0;
18890 	char *target;
18891 
18892 	rope = (zend_string**)EX_VAR(opline->op1.var);
18893 	if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
18894 		var = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
18895 		rope[opline->extended_value] = Z_STR_P(var);
18896 		if (UNEXPECTED(Z_REFCOUNTED_P(var))) {
18897 			Z_ADDREF_P(var);
18898 		}
18899 	} else {
18900 		var = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
18901 		if (EXPECTED(Z_TYPE_P(var) == IS_STRING)) {
18902 			if ((IS_TMP_VAR|IS_VAR) == IS_CV) {
18903 				rope[opline->extended_value] = zend_string_copy(Z_STR_P(var));
18904 			} else {
18905 				rope[opline->extended_value] = Z_STR_P(var);
18906 			}
18907 		} else {
18908 			SAVE_OPLINE();
18909 			if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(var) == IS_UNDEF)) {
18910 				GET_OP2_UNDEF_CV(var, BP_VAR_R);
18911 			}
18912 			rope[opline->extended_value] = zval_get_string_func(var);
18913 			zval_ptr_dtor_nogc(free_op2);
18914 			if (UNEXPECTED(EG(exception))) {
18915 				for (i = 0; i <= opline->extended_value; i++) {
18916 					zend_string_release_ex(rope[i], 0);
18917 				}
18918 				ZVAL_UNDEF(EX_VAR(opline->result.var));
18919 				HANDLE_EXCEPTION();
18920 			}
18921 		}
18922 	}
18923 	for (i = 0; i <= opline->extended_value; i++) {
18924 		len += ZSTR_LEN(rope[i]);
18925 	}
18926 	ret = EX_VAR(opline->result.var);
18927 	ZVAL_STR(ret, zend_string_alloc(len, 0));
18928 	target = Z_STRVAL_P(ret);
18929 	for (i = 0; i <= opline->extended_value; i++) {
18930 		memcpy(target, ZSTR_VAL(rope[i]), ZSTR_LEN(rope[i]));
18931 		target += ZSTR_LEN(rope[i]);
18932 		zend_string_release_ex(rope[i], 0);
18933 	}
18934 	*target = '\0';
18935 
18936 	ZEND_VM_NEXT_OPCODE();
18937 }
18938 
18939 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
18940 {
18941 	USE_OPLINE
18942 	zend_free_op free_op1;
18943 	zval *expr_ptr, new_expr;
18944 
18945 	SAVE_OPLINE();
18946 	if ((IS_TMP_VAR == IS_VAR || IS_TMP_VAR == IS_CV) &&
18947 	    UNEXPECTED(opline->extended_value & ZEND_ARRAY_ELEMENT_REF)) {
18948 		expr_ptr = NULL;
18949 		if (Z_ISREF_P(expr_ptr)) {
18950 			Z_ADDREF_P(expr_ptr);
18951 		} else {
18952 			ZVAL_MAKE_REF_EX(expr_ptr, 2);
18953 		}
18954 
18955 	} else {
18956 		expr_ptr = _get_zval_ptr_tmp(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
18957 		if (IS_TMP_VAR == IS_TMP_VAR) {
18958 			/* pass */
18959 		} else if (IS_TMP_VAR == IS_CONST) {
18960 			Z_TRY_ADDREF_P(expr_ptr);
18961 		} else if (IS_TMP_VAR == IS_CV) {
18962 			ZVAL_DEREF(expr_ptr);
18963 			Z_TRY_ADDREF_P(expr_ptr);
18964 		} else /* if (IS_TMP_VAR == IS_VAR) */ {
18965 			if (UNEXPECTED(Z_ISREF_P(expr_ptr))) {
18966 				zend_refcounted *ref = Z_COUNTED_P(expr_ptr);
18967 
18968 				expr_ptr = Z_REFVAL_P(expr_ptr);
18969 				if (UNEXPECTED(GC_DELREF(ref) == 0)) {
18970 					ZVAL_COPY_VALUE(&new_expr, expr_ptr);
18971 					expr_ptr = &new_expr;
18972 					efree_size(ref, sizeof(zend_reference));
18973 				} else if (Z_OPT_REFCOUNTED_P(expr_ptr)) {
18974 					Z_ADDREF_P(expr_ptr);
18975 				}
18976 			}
18977 		}
18978 	}
18979 
18980 	if ((IS_TMP_VAR|IS_VAR) != IS_UNUSED) {
18981 		zend_free_op free_op2;
18982 		zval *offset = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
18983 		zend_string *str;
18984 		zend_ulong hval;
18985 
18986 add_again:
18987 		if (EXPECTED(Z_TYPE_P(offset) == IS_STRING)) {
18988 			str = Z_STR_P(offset);
18989 			if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
18990 				if (ZEND_HANDLE_NUMERIC(str, hval)) {
18991 					goto num_index;
18992 				}
18993 			}
18994 str_index:
18995 			zend_hash_update(Z_ARRVAL_P(EX_VAR(opline->result.var)), str, expr_ptr);
18996 		} else if (EXPECTED(Z_TYPE_P(offset) == IS_LONG)) {
18997 			hval = Z_LVAL_P(offset);
18998 num_index:
18999 			zend_hash_index_update(Z_ARRVAL_P(EX_VAR(opline->result.var)), hval, expr_ptr);
19000 		} else if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
19001 			offset = Z_REFVAL_P(offset);
19002 			goto add_again;
19003 		} else if (Z_TYPE_P(offset) == IS_NULL) {
19004 			str = ZSTR_EMPTY_ALLOC();
19005 			goto str_index;
19006 		} else if (Z_TYPE_P(offset) == IS_DOUBLE) {
19007 			hval = zend_dval_to_lval(Z_DVAL_P(offset));
19008 			goto num_index;
19009 		} else if (Z_TYPE_P(offset) == IS_FALSE) {
19010 			hval = 0;
19011 			goto num_index;
19012 		} else if (Z_TYPE_P(offset) == IS_TRUE) {
19013 			hval = 1;
19014 			goto num_index;
19015 		} else if ((IS_TMP_VAR|IS_VAR) == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
19016 			GET_OP2_UNDEF_CV(offset, BP_VAR_R);
19017 			str = ZSTR_EMPTY_ALLOC();
19018 			goto str_index;
19019 		} else {
19020 			zend_illegal_offset();
19021 			zval_ptr_dtor_nogc(expr_ptr);
19022 		}
19023 		zval_ptr_dtor_nogc(free_op2);
19024 	} else {
19025 		if (!zend_hash_next_index_insert(Z_ARRVAL_P(EX_VAR(opline->result.var)), expr_ptr)) {
19026 			zend_cannot_add_element();
19027 			zval_ptr_dtor_nogc(expr_ptr);
19028 		}
19029 	}
19030 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
19031 }
19032 
19033 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_ARRAY_SPEC_TMP_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
19034 {
19035 	zval *array;
19036 	uint32_t size;
19037 	USE_OPLINE
19038 
19039 	array = EX_VAR(opline->result.var);
19040 	if (IS_TMP_VAR != IS_UNUSED) {
19041 		size = opline->extended_value >> ZEND_ARRAY_SIZE_SHIFT;
19042 		ZVAL_ARR(array, zend_new_array(size));
19043 		/* Explicitly initialize array as not-packed if flag is set */
19044 		if (opline->extended_value & ZEND_ARRAY_NOT_PACKED) {
19045 			zend_hash_real_init_mixed(Z_ARRVAL_P(array));
19046 		}
19047 		ZEND_VM_TAIL_CALL(ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
19048 	} else {
19049 		ZVAL_EMPTY_ARRAY(array);
19050 		ZEND_VM_NEXT_OPCODE();
19051 	}
19052 }
19053 
19054 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_IDENTICAL_SPEC_TMP_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
19055 {
19056 	USE_OPLINE
19057 	zend_free_op free_op1, free_op2;
19058 	zval *op1, *op2;
19059 	int result;
19060 
19061 	SAVE_OPLINE();
19062 	op1 = _get_zval_ptr_tmp(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
19063 	op2 = _get_zval_ptr_tmp(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
19064 	result = fast_is_identical_function(op1, op2);
19065 	zval_ptr_dtor_nogc(free_op1);
19066 	zval_ptr_dtor_nogc(free_op2);
19067 	ZEND_VM_SMART_BRANCH(result, 1);
19068 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
19069 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
19070 }
19071 
19072 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_NOT_IDENTICAL_SPEC_TMP_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
19073 {
19074 	USE_OPLINE
19075 	zend_free_op free_op1, free_op2;
19076 	zval *op1, *op2;
19077 	int result;
19078 
19079 	SAVE_OPLINE();
19080 	op1 = _get_zval_ptr_tmp(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
19081 	op2 = _get_zval_ptr_tmp(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
19082 	result = fast_is_not_identical_function(op1, op2);
19083 	zval_ptr_dtor_nogc(free_op1);
19084 	zval_ptr_dtor_nogc(free_op2);
19085 	ZEND_VM_SMART_BRANCH(result, 1);
19086 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
19087 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
19088 }
19089 
19090 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_YIELD_SPEC_TMP_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
19091 {
19092 	USE_OPLINE
19093 
19094 	zend_generator *generator = zend_get_running_generator(EXECUTE_DATA_C);
19095 
19096 	SAVE_OPLINE();
19097 	if (UNEXPECTED(generator->flags & ZEND_GENERATOR_FORCED_CLOSE)) {
19098 		ZEND_VM_TAIL_CALL(zend_yield_in_closed_generator_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
19099 	}
19100 
19101 	/* Destroy the previously yielded value */
19102 	zval_ptr_dtor(&generator->value);
19103 
19104 	/* Destroy the previously yielded key */
19105 	zval_ptr_dtor(&generator->key);
19106 
19107 	/* Set the new yielded value */
19108 	if (IS_TMP_VAR != IS_UNUSED) {
19109 		zend_free_op free_op1;
19110 
19111 		if (UNEXPECTED(EX(func)->op_array.fn_flags & ZEND_ACC_RETURN_REFERENCE)) {
19112 			/* Constants and temporary variables aren't yieldable by reference,
19113 			 * but we still allow them with a notice. */
19114 			if (IS_TMP_VAR & (IS_CONST|IS_TMP_VAR)) {
19115 				zval *value;
19116 
19117 				zend_error(E_NOTICE, "Only variable references should be yielded by reference");
19118 
19119 				value = _get_zval_ptr_tmp(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
19120 				ZVAL_COPY_VALUE(&generator->value, value);
19121 				if (IS_TMP_VAR == IS_CONST) {
19122 					if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
19123 						Z_ADDREF(generator->value);
19124 					}
19125 				}
19126 			} else {
19127 				zval *value_ptr = NULL;
19128 
19129 				/* If a function call result is yielded and the function did
19130 				 * not return by reference we throw a notice. */
19131 				if (IS_TMP_VAR == IS_VAR &&
19132 				    (value_ptr == &EG(uninitialized_zval) ||
19133 				     (opline->extended_value == ZEND_RETURNS_FUNCTION &&
19134 				      !Z_ISREF_P(value_ptr)))) {
19135 					zend_error(E_NOTICE, "Only variable references should be yielded by reference");
19136 					ZVAL_COPY(&generator->value, value_ptr);
19137 				} else {
19138 					if (Z_ISREF_P(value_ptr)) {
19139 						Z_ADDREF_P(value_ptr);
19140 					} else {
19141 						ZVAL_MAKE_REF_EX(value_ptr, 2);
19142 					}
19143 					ZVAL_REF(&generator->value, Z_REF_P(value_ptr));
19144 				}
19145 
19146 			}
19147 		} else {
19148 			zval *value = _get_zval_ptr_tmp(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
19149 
19150 			/* Consts, temporary variables and references need copying */
19151 			if (IS_TMP_VAR == IS_CONST) {
19152 				ZVAL_COPY_VALUE(&generator->value, value);
19153 				if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
19154 					Z_ADDREF(generator->value);
19155 				}
19156 			} else if (IS_TMP_VAR == IS_TMP_VAR) {
19157 				ZVAL_COPY_VALUE(&generator->value, value);
19158             } else if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
19159 				ZVAL_COPY(&generator->value, Z_REFVAL_P(value));
19160 
19161 			} else {
19162 				ZVAL_COPY_VALUE(&generator->value, value);
19163 				if (IS_TMP_VAR == IS_CV) {
19164 					if (Z_OPT_REFCOUNTED_P(value)) Z_ADDREF_P(value);
19165 				}
19166 			}
19167 		}
19168 	} else {
19169 		/* If no value was specified yield null */
19170 		ZVAL_NULL(&generator->value);
19171 	}
19172 
19173 	/* Set the new yielded key */
19174 	if (IS_TMP_VAR != IS_UNUSED) {
19175 		zend_free_op free_op2;
19176 		zval *key = _get_zval_ptr_tmp(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
19177 
19178 		/* Consts, temporary variables and references need copying */
19179 		if (IS_TMP_VAR == IS_CONST) {
19180 			ZVAL_COPY_VALUE(&generator->key, key);
19181 			if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->key))) {
19182 				Z_ADDREF(generator->key);
19183 			}
19184 		} else if (IS_TMP_VAR == IS_TMP_VAR) {
19185 			ZVAL_COPY_VALUE(&generator->key, key);
19186 		} else if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && Z_ISREF_P(key)) {
19187 			ZVAL_COPY(&generator->key, Z_REFVAL_P(key));
19188 
19189 		} else {
19190 			ZVAL_COPY_VALUE(&generator->key, key);
19191 			if (IS_TMP_VAR == IS_CV) {
19192 				if (Z_OPT_REFCOUNTED_P(key)) Z_ADDREF_P(key);
19193 			}
19194 		}
19195 
19196 		if (Z_TYPE(generator->key) == IS_LONG
19197 		    && Z_LVAL(generator->key) > generator->largest_used_integer_key
19198 		) {
19199 			generator->largest_used_integer_key = Z_LVAL(generator->key);
19200 		}
19201 	} else {
19202 		/* If no key was specified we use auto-increment keys */
19203 		generator->largest_used_integer_key++;
19204 		ZVAL_LONG(&generator->key, generator->largest_used_integer_key);
19205 	}
19206 
19207 	if (RETURN_VALUE_USED(opline)) {
19208 		/* If the return value of yield is used set the send
19209 		 * target and initialize it to NULL */
19210 		generator->send_target = EX_VAR(opline->result.var);
19211 		ZVAL_NULL(generator->send_target);
19212 	} else {
19213 		generator->send_target = NULL;
19214 	}
19215 
19216 	/* We increment to the next op, so we are at the correct position when the
19217 	 * generator is resumed. */
19218 	ZEND_VM_INC_OPCODE();
19219 
19220 	/* The GOTO VM uses a local opline variable. We need to set the opline
19221 	 * variable in execute_data so we don't resume at an old position. */
19222 	SAVE_OPLINE();
19223 
19224 	ZEND_VM_RETURN();
19225 }
19226 
19227 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_YIELD_SPEC_TMP_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
19228 {
19229 	USE_OPLINE
19230 
19231 	zend_generator *generator = zend_get_running_generator(EXECUTE_DATA_C);
19232 
19233 	SAVE_OPLINE();
19234 	if (UNEXPECTED(generator->flags & ZEND_GENERATOR_FORCED_CLOSE)) {
19235 		ZEND_VM_TAIL_CALL(zend_yield_in_closed_generator_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
19236 	}
19237 
19238 	/* Destroy the previously yielded value */
19239 	zval_ptr_dtor(&generator->value);
19240 
19241 	/* Destroy the previously yielded key */
19242 	zval_ptr_dtor(&generator->key);
19243 
19244 	/* Set the new yielded value */
19245 	if (IS_TMP_VAR != IS_UNUSED) {
19246 		zend_free_op free_op1;
19247 
19248 		if (UNEXPECTED(EX(func)->op_array.fn_flags & ZEND_ACC_RETURN_REFERENCE)) {
19249 			/* Constants and temporary variables aren't yieldable by reference,
19250 			 * but we still allow them with a notice. */
19251 			if (IS_TMP_VAR & (IS_CONST|IS_TMP_VAR)) {
19252 				zval *value;
19253 
19254 				zend_error(E_NOTICE, "Only variable references should be yielded by reference");
19255 
19256 				value = _get_zval_ptr_tmp(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
19257 				ZVAL_COPY_VALUE(&generator->value, value);
19258 				if (IS_TMP_VAR == IS_CONST) {
19259 					if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
19260 						Z_ADDREF(generator->value);
19261 					}
19262 				}
19263 			} else {
19264 				zval *value_ptr = NULL;
19265 
19266 				/* If a function call result is yielded and the function did
19267 				 * not return by reference we throw a notice. */
19268 				if (IS_TMP_VAR == IS_VAR &&
19269 				    (value_ptr == &EG(uninitialized_zval) ||
19270 				     (opline->extended_value == ZEND_RETURNS_FUNCTION &&
19271 				      !Z_ISREF_P(value_ptr)))) {
19272 					zend_error(E_NOTICE, "Only variable references should be yielded by reference");
19273 					ZVAL_COPY(&generator->value, value_ptr);
19274 				} else {
19275 					if (Z_ISREF_P(value_ptr)) {
19276 						Z_ADDREF_P(value_ptr);
19277 					} else {
19278 						ZVAL_MAKE_REF_EX(value_ptr, 2);
19279 					}
19280 					ZVAL_REF(&generator->value, Z_REF_P(value_ptr));
19281 				}
19282 
19283 			}
19284 		} else {
19285 			zval *value = _get_zval_ptr_tmp(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
19286 
19287 			/* Consts, temporary variables and references need copying */
19288 			if (IS_TMP_VAR == IS_CONST) {
19289 				ZVAL_COPY_VALUE(&generator->value, value);
19290 				if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
19291 					Z_ADDREF(generator->value);
19292 				}
19293 			} else if (IS_TMP_VAR == IS_TMP_VAR) {
19294 				ZVAL_COPY_VALUE(&generator->value, value);
19295             } else if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
19296 				ZVAL_COPY(&generator->value, Z_REFVAL_P(value));
19297 
19298 			} else {
19299 				ZVAL_COPY_VALUE(&generator->value, value);
19300 				if (IS_TMP_VAR == IS_CV) {
19301 					if (Z_OPT_REFCOUNTED_P(value)) Z_ADDREF_P(value);
19302 				}
19303 			}
19304 		}
19305 	} else {
19306 		/* If no value was specified yield null */
19307 		ZVAL_NULL(&generator->value);
19308 	}
19309 
19310 	/* Set the new yielded key */
19311 	if (IS_VAR != IS_UNUSED) {
19312 		zend_free_op free_op2;
19313 		zval *key = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
19314 
19315 		/* Consts, temporary variables and references need copying */
19316 		if (IS_VAR == IS_CONST) {
19317 			ZVAL_COPY_VALUE(&generator->key, key);
19318 			if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->key))) {
19319 				Z_ADDREF(generator->key);
19320 			}
19321 		} else if (IS_VAR == IS_TMP_VAR) {
19322 			ZVAL_COPY_VALUE(&generator->key, key);
19323 		} else if ((IS_VAR & (IS_VAR|IS_CV)) && Z_ISREF_P(key)) {
19324 			ZVAL_COPY(&generator->key, Z_REFVAL_P(key));
19325 			zval_ptr_dtor_nogc(free_op2);
19326 		} else {
19327 			ZVAL_COPY_VALUE(&generator->key, key);
19328 			if (IS_VAR == IS_CV) {
19329 				if (Z_OPT_REFCOUNTED_P(key)) Z_ADDREF_P(key);
19330 			}
19331 		}
19332 
19333 		if (Z_TYPE(generator->key) == IS_LONG
19334 		    && Z_LVAL(generator->key) > generator->largest_used_integer_key
19335 		) {
19336 			generator->largest_used_integer_key = Z_LVAL(generator->key);
19337 		}
19338 	} else {
19339 		/* If no key was specified we use auto-increment keys */
19340 		generator->largest_used_integer_key++;
19341 		ZVAL_LONG(&generator->key, generator->largest_used_integer_key);
19342 	}
19343 
19344 	if (RETURN_VALUE_USED(opline)) {
19345 		/* If the return value of yield is used set the send
19346 		 * target and initialize it to NULL */
19347 		generator->send_target = EX_VAR(opline->result.var);
19348 		ZVAL_NULL(generator->send_target);
19349 	} else {
19350 		generator->send_target = NULL;
19351 	}
19352 
19353 	/* We increment to the next op, so we are at the correct position when the
19354 	 * generator is resumed. */
19355 	ZEND_VM_INC_OPCODE();
19356 
19357 	/* The GOTO VM uses a local opline variable. We need to set the opline
19358 	 * variable in execute_data so we don't resume at an old position. */
19359 	SAVE_OPLINE();
19360 
19361 	ZEND_VM_RETURN();
19362 }
19363 
19364 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_FUNC_ARG_SPEC_TMP_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
19365 {
19366 	if (UNEXPECTED(ZEND_CALL_INFO(EX(call)) & ZEND_CALL_SEND_ARG_BY_REF)) {
19367         if ((IS_TMP_VAR & (IS_CONST|IS_TMP_VAR))) {
19368 			ZEND_VM_TAIL_CALL(zend_use_tmp_in_write_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
19369         }
19370 		ZEND_VM_TAIL_CALL(ZEND_NULL_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
19371 	} else {
19372 		if (IS_UNUSED == IS_UNUSED) {
19373 			ZEND_VM_TAIL_CALL(zend_use_undef_in_read_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
19374 		}
19375 		ZEND_VM_TAIL_CALL(ZEND_NULL_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
19376 	}
19377 }
19378 
19379 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_VERIFY_RETURN_TYPE_SPEC_TMP_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
19380 {
19381 	USE_OPLINE
19382 
19383 	SAVE_OPLINE();
19384 	if (IS_TMP_VAR == IS_UNUSED) {
19385 		zend_verify_missing_return_type(EX(func), CACHE_ADDR(opline->op2.num));
19386 	} else {
19387 /* prevents "undefined variable opline" errors */
19388 #if 0 || (IS_TMP_VAR != IS_UNUSED)
19389 		zval *retval_ref, *retval_ptr;
19390 		zend_free_op free_op1;
19391 		zend_arg_info *ret_info = EX(func)->common.arg_info - 1;
19392 
19393 		retval_ref = retval_ptr = _get_zval_ptr_tmp(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
19394 
19395 		if (IS_TMP_VAR == IS_CONST) {
19396 			ZVAL_COPY(EX_VAR(opline->result.var), retval_ptr);
19397 			retval_ref = retval_ptr = EX_VAR(opline->result.var);
19398 		} else if (IS_TMP_VAR == IS_VAR) {
19399 			if (UNEXPECTED(Z_TYPE_P(retval_ptr) == IS_INDIRECT)) {
19400 				retval_ptr = Z_INDIRECT_P(retval_ptr);
19401 			}
19402 			ZVAL_DEREF(retval_ptr);
19403 		} else if (IS_TMP_VAR == IS_CV) {
19404 			ZVAL_DEREF(retval_ptr);
19405 		}
19406 
19407 		if (UNEXPECTED(!ZEND_TYPE_IS_CLASS(ret_info->type)
19408 			&& ZEND_TYPE_CODE(ret_info->type) != IS_CALLABLE
19409 			&& ZEND_TYPE_CODE(ret_info->type) != IS_ITERABLE
19410 			&& !ZEND_SAME_FAKE_TYPE(ZEND_TYPE_CODE(ret_info->type), Z_TYPE_P(retval_ptr))
19411 			&& !(EX(func)->op_array.fn_flags & ZEND_ACC_RETURN_REFERENCE)
19412 			&& retval_ref != retval_ptr)
19413 		) {
19414 			/* A cast might happen - unwrap the reference if this is a by-value return */
19415 			if (Z_REFCOUNT_P(retval_ref) == 1) {
19416 				ZVAL_UNREF(retval_ref);
19417 			} else {
19418 				Z_DELREF_P(retval_ref);
19419 				ZVAL_COPY(retval_ref, retval_ptr);
19420 			}
19421 			retval_ptr = retval_ref;
19422 		}
19423 		zend_verify_return_type(EX(func), retval_ptr, CACHE_ADDR(opline->op2.num));
19424 #endif
19425 	}
19426 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
19427 }
19428 
19429 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
19430 {
19431 	USE_OPLINE
19432 	zend_free_op free_op1;
19433 	zval *expr_ptr, new_expr;
19434 
19435 	SAVE_OPLINE();
19436 	if ((IS_TMP_VAR == IS_VAR || IS_TMP_VAR == IS_CV) &&
19437 	    UNEXPECTED(opline->extended_value & ZEND_ARRAY_ELEMENT_REF)) {
19438 		expr_ptr = NULL;
19439 		if (Z_ISREF_P(expr_ptr)) {
19440 			Z_ADDREF_P(expr_ptr);
19441 		} else {
19442 			ZVAL_MAKE_REF_EX(expr_ptr, 2);
19443 		}
19444 
19445 	} else {
19446 		expr_ptr = _get_zval_ptr_tmp(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
19447 		if (IS_TMP_VAR == IS_TMP_VAR) {
19448 			/* pass */
19449 		} else if (IS_TMP_VAR == IS_CONST) {
19450 			Z_TRY_ADDREF_P(expr_ptr);
19451 		} else if (IS_TMP_VAR == IS_CV) {
19452 			ZVAL_DEREF(expr_ptr);
19453 			Z_TRY_ADDREF_P(expr_ptr);
19454 		} else /* if (IS_TMP_VAR == IS_VAR) */ {
19455 			if (UNEXPECTED(Z_ISREF_P(expr_ptr))) {
19456 				zend_refcounted *ref = Z_COUNTED_P(expr_ptr);
19457 
19458 				expr_ptr = Z_REFVAL_P(expr_ptr);
19459 				if (UNEXPECTED(GC_DELREF(ref) == 0)) {
19460 					ZVAL_COPY_VALUE(&new_expr, expr_ptr);
19461 					expr_ptr = &new_expr;
19462 					efree_size(ref, sizeof(zend_reference));
19463 				} else if (Z_OPT_REFCOUNTED_P(expr_ptr)) {
19464 					Z_ADDREF_P(expr_ptr);
19465 				}
19466 			}
19467 		}
19468 	}
19469 
19470 	if (IS_UNUSED != IS_UNUSED) {
19471 
19472 		zval *offset = NULL;
19473 		zend_string *str;
19474 		zend_ulong hval;
19475 
19476 add_again:
19477 		if (EXPECTED(Z_TYPE_P(offset) == IS_STRING)) {
19478 			str = Z_STR_P(offset);
19479 			if (IS_UNUSED != IS_CONST) {
19480 				if (ZEND_HANDLE_NUMERIC(str, hval)) {
19481 					goto num_index;
19482 				}
19483 			}
19484 str_index:
19485 			zend_hash_update(Z_ARRVAL_P(EX_VAR(opline->result.var)), str, expr_ptr);
19486 		} else if (EXPECTED(Z_TYPE_P(offset) == IS_LONG)) {
19487 			hval = Z_LVAL_P(offset);
19488 num_index:
19489 			zend_hash_index_update(Z_ARRVAL_P(EX_VAR(opline->result.var)), hval, expr_ptr);
19490 		} else if ((IS_UNUSED & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
19491 			offset = Z_REFVAL_P(offset);
19492 			goto add_again;
19493 		} else if (Z_TYPE_P(offset) == IS_NULL) {
19494 			str = ZSTR_EMPTY_ALLOC();
19495 			goto str_index;
19496 		} else if (Z_TYPE_P(offset) == IS_DOUBLE) {
19497 			hval = zend_dval_to_lval(Z_DVAL_P(offset));
19498 			goto num_index;
19499 		} else if (Z_TYPE_P(offset) == IS_FALSE) {
19500 			hval = 0;
19501 			goto num_index;
19502 		} else if (Z_TYPE_P(offset) == IS_TRUE) {
19503 			hval = 1;
19504 			goto num_index;
19505 		} else if (IS_UNUSED == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
19506 			GET_OP2_UNDEF_CV(offset, BP_VAR_R);
19507 			str = ZSTR_EMPTY_ALLOC();
19508 			goto str_index;
19509 		} else {
19510 			zend_illegal_offset();
19511 			zval_ptr_dtor_nogc(expr_ptr);
19512 		}
19513 
19514 	} else {
19515 		if (!zend_hash_next_index_insert(Z_ARRVAL_P(EX_VAR(opline->result.var)), expr_ptr)) {
19516 			zend_cannot_add_element();
19517 			zval_ptr_dtor_nogc(expr_ptr);
19518 		}
19519 	}
19520 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
19521 }
19522 
19523 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_ARRAY_SPEC_TMP_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
19524 {
19525 	zval *array;
19526 	uint32_t size;
19527 	USE_OPLINE
19528 
19529 	array = EX_VAR(opline->result.var);
19530 	if (IS_TMP_VAR != IS_UNUSED) {
19531 		size = opline->extended_value >> ZEND_ARRAY_SIZE_SHIFT;
19532 		ZVAL_ARR(array, zend_new_array(size));
19533 		/* Explicitly initialize array as not-packed if flag is set */
19534 		if (opline->extended_value & ZEND_ARRAY_NOT_PACKED) {
19535 			zend_hash_real_init_mixed(Z_ARRVAL_P(array));
19536 		}
19537 		ZEND_VM_TAIL_CALL(ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
19538 	} else {
19539 		ZVAL_EMPTY_ARRAY(array);
19540 		ZEND_VM_NEXT_OPCODE();
19541 	}
19542 }
19543 
19544 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_YIELD_SPEC_TMP_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
19545 {
19546 	USE_OPLINE
19547 
19548 	zend_generator *generator = zend_get_running_generator(EXECUTE_DATA_C);
19549 
19550 	SAVE_OPLINE();
19551 	if (UNEXPECTED(generator->flags & ZEND_GENERATOR_FORCED_CLOSE)) {
19552 		ZEND_VM_TAIL_CALL(zend_yield_in_closed_generator_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
19553 	}
19554 
19555 	/* Destroy the previously yielded value */
19556 	zval_ptr_dtor(&generator->value);
19557 
19558 	/* Destroy the previously yielded key */
19559 	zval_ptr_dtor(&generator->key);
19560 
19561 	/* Set the new yielded value */
19562 	if (IS_TMP_VAR != IS_UNUSED) {
19563 		zend_free_op free_op1;
19564 
19565 		if (UNEXPECTED(EX(func)->op_array.fn_flags & ZEND_ACC_RETURN_REFERENCE)) {
19566 			/* Constants and temporary variables aren't yieldable by reference,
19567 			 * but we still allow them with a notice. */
19568 			if (IS_TMP_VAR & (IS_CONST|IS_TMP_VAR)) {
19569 				zval *value;
19570 
19571 				zend_error(E_NOTICE, "Only variable references should be yielded by reference");
19572 
19573 				value = _get_zval_ptr_tmp(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
19574 				ZVAL_COPY_VALUE(&generator->value, value);
19575 				if (IS_TMP_VAR == IS_CONST) {
19576 					if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
19577 						Z_ADDREF(generator->value);
19578 					}
19579 				}
19580 			} else {
19581 				zval *value_ptr = NULL;
19582 
19583 				/* If a function call result is yielded and the function did
19584 				 * not return by reference we throw a notice. */
19585 				if (IS_TMP_VAR == IS_VAR &&
19586 				    (value_ptr == &EG(uninitialized_zval) ||
19587 				     (opline->extended_value == ZEND_RETURNS_FUNCTION &&
19588 				      !Z_ISREF_P(value_ptr)))) {
19589 					zend_error(E_NOTICE, "Only variable references should be yielded by reference");
19590 					ZVAL_COPY(&generator->value, value_ptr);
19591 				} else {
19592 					if (Z_ISREF_P(value_ptr)) {
19593 						Z_ADDREF_P(value_ptr);
19594 					} else {
19595 						ZVAL_MAKE_REF_EX(value_ptr, 2);
19596 					}
19597 					ZVAL_REF(&generator->value, Z_REF_P(value_ptr));
19598 				}
19599 
19600 			}
19601 		} else {
19602 			zval *value = _get_zval_ptr_tmp(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
19603 
19604 			/* Consts, temporary variables and references need copying */
19605 			if (IS_TMP_VAR == IS_CONST) {
19606 				ZVAL_COPY_VALUE(&generator->value, value);
19607 				if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
19608 					Z_ADDREF(generator->value);
19609 				}
19610 			} else if (IS_TMP_VAR == IS_TMP_VAR) {
19611 				ZVAL_COPY_VALUE(&generator->value, value);
19612             } else if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
19613 				ZVAL_COPY(&generator->value, Z_REFVAL_P(value));
19614 
19615 			} else {
19616 				ZVAL_COPY_VALUE(&generator->value, value);
19617 				if (IS_TMP_VAR == IS_CV) {
19618 					if (Z_OPT_REFCOUNTED_P(value)) Z_ADDREF_P(value);
19619 				}
19620 			}
19621 		}
19622 	} else {
19623 		/* If no value was specified yield null */
19624 		ZVAL_NULL(&generator->value);
19625 	}
19626 
19627 	/* Set the new yielded key */
19628 	if (IS_UNUSED != IS_UNUSED) {
19629 
19630 		zval *key = NULL;
19631 
19632 		/* Consts, temporary variables and references need copying */
19633 		if (IS_UNUSED == IS_CONST) {
19634 			ZVAL_COPY_VALUE(&generator->key, key);
19635 			if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->key))) {
19636 				Z_ADDREF(generator->key);
19637 			}
19638 		} else if (IS_UNUSED == IS_TMP_VAR) {
19639 			ZVAL_COPY_VALUE(&generator->key, key);
19640 		} else if ((IS_UNUSED & (IS_VAR|IS_CV)) && Z_ISREF_P(key)) {
19641 			ZVAL_COPY(&generator->key, Z_REFVAL_P(key));
19642 
19643 		} else {
19644 			ZVAL_COPY_VALUE(&generator->key, key);
19645 			if (IS_UNUSED == IS_CV) {
19646 				if (Z_OPT_REFCOUNTED_P(key)) Z_ADDREF_P(key);
19647 			}
19648 		}
19649 
19650 		if (Z_TYPE(generator->key) == IS_LONG
19651 		    && Z_LVAL(generator->key) > generator->largest_used_integer_key
19652 		) {
19653 			generator->largest_used_integer_key = Z_LVAL(generator->key);
19654 		}
19655 	} else {
19656 		/* If no key was specified we use auto-increment keys */
19657 		generator->largest_used_integer_key++;
19658 		ZVAL_LONG(&generator->key, generator->largest_used_integer_key);
19659 	}
19660 
19661 	if (RETURN_VALUE_USED(opline)) {
19662 		/* If the return value of yield is used set the send
19663 		 * target and initialize it to NULL */
19664 		generator->send_target = EX_VAR(opline->result.var);
19665 		ZVAL_NULL(generator->send_target);
19666 	} else {
19667 		generator->send_target = NULL;
19668 	}
19669 
19670 	/* We increment to the next op, so we are at the correct position when the
19671 	 * generator is resumed. */
19672 	ZEND_VM_INC_OPCODE();
19673 
19674 	/* The GOTO VM uses a local opline variable. We need to set the opline
19675 	 * variable in execute_data so we don't resume at an old position. */
19676 	SAVE_OPLINE();
19677 
19678 	ZEND_VM_RETURN();
19679 }
19680 
19681 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_COUNT_SPEC_TMP_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
19682 {
19683 	USE_OPLINE
19684 	zend_free_op free_op1;
19685 	zval *op1;
19686 	zend_long count;
19687 
19688 	SAVE_OPLINE();
19689 	op1 = _get_zval_ptr_tmp(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
19690 	do {
19691 		if (Z_TYPE_P(op1) == IS_ARRAY) {
19692 			count = zend_array_count(Z_ARRVAL_P(op1));
19693 			break;
19694 		} else if (Z_TYPE_P(op1) == IS_OBJECT) {
19695 			/* first, we check if the handler is defined */
19696 			if (Z_OBJ_HT_P(op1)->count_elements) {
19697 				if (SUCCESS == Z_OBJ_HT_P(op1)->count_elements(op1, &count)) {
19698 					break;
19699 				}
19700 			}
19701 
19702 			/* if not and the object implements Countable we call its count() method */
19703 			if (instanceof_function(Z_OBJCE_P(op1), zend_ce_countable)) {
19704 				zval retval;
19705 
19706 				zend_call_method_with_0_params(op1, NULL, NULL, "count", &retval);
19707 				count = zval_get_long(&retval);
19708 				zval_ptr_dtor(&retval);
19709 				break;
19710 			}
19711 
19712 			/* If There's no handler and it doesn't implement Countable then add a warning */
19713 			count = 1;
19714 		} else if (Z_TYPE_P(op1) == IS_NULL) {
19715 			count = 0;
19716 		} else {
19717 			count = 1;
19718 		}
19719 		zend_error(E_WARNING, "count(): Parameter must be an array or an object that implements Countable");
19720 	} while (0);
19721 
19722 	ZVAL_LONG(EX_VAR(opline->result.var), count);
19723 	zval_ptr_dtor_nogc(free_op1);
19724 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
19725 }
19726 
19727 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_GET_CLASS_SPEC_TMP_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
19728 {
19729 	USE_OPLINE
19730 
19731 	if (IS_TMP_VAR == IS_UNUSED) {
19732 		if (UNEXPECTED(!EX(func)->common.scope)) {
19733 			SAVE_OPLINE();
19734 			zend_error(E_WARNING, "get_class() called without object from outside a class");
19735 			ZVAL_FALSE(EX_VAR(opline->result.var));
19736 			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
19737 		} else {
19738 			ZVAL_STR_COPY(EX_VAR(opline->result.var), EX(func)->common.scope->name);
19739 			ZEND_VM_NEXT_OPCODE();
19740 		}
19741 	} else {
19742 		zend_free_op free_op1;
19743 		zval *op1;
19744 
19745 		SAVE_OPLINE();
19746 		op1 = _get_zval_ptr_tmp(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
19747 		if (Z_TYPE_P(op1) == IS_OBJECT) {
19748 			ZVAL_STR_COPY(EX_VAR(opline->result.var), Z_OBJCE_P(op1)->name);
19749 		} else {
19750 			zend_error(E_WARNING, "get_class() expects parameter 1 to be object, %s given", zend_get_type_by_const(Z_TYPE_P(op1)));
19751 			ZVAL_FALSE(EX_VAR(opline->result.var));
19752 		}
19753 		zval_ptr_dtor_nogc(free_op1);
19754 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
19755 	}
19756 }
19757 
19758 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_GET_TYPE_SPEC_TMP_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
19759 {
19760 	USE_OPLINE
19761 	zend_free_op free_op1;
19762 	zval *op1;
19763 	zend_string *type;
19764 
19765 	SAVE_OPLINE();
19766 	op1 = _get_zval_ptr_tmp(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
19767 	type = zend_zval_get_type(op1);
19768 	if (EXPECTED(type)) {
19769 		ZVAL_INTERNED_STR(EX_VAR(opline->result.var), type);
19770 	} else {
19771 		ZVAL_STRING(EX_VAR(opline->result.var), "unknown type");
19772 	}
19773 	zval_ptr_dtor_nogc(free_op1);
19774 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
19775 }
19776 
19777 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_FUNC_ARG_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
19778 {
19779 	if (UNEXPECTED(ZEND_CALL_INFO(EX(call)) & ZEND_CALL_SEND_ARG_BY_REF)) {
19780         if ((IS_TMP_VAR & (IS_CONST|IS_TMP_VAR))) {
19781 			ZEND_VM_TAIL_CALL(zend_use_tmp_in_write_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
19782         }
19783 		ZEND_VM_TAIL_CALL(ZEND_NULL_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
19784 	} else {
19785 		if (IS_CV == IS_UNUSED) {
19786 			ZEND_VM_TAIL_CALL(zend_use_undef_in_read_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
19787 		}
19788 		ZEND_VM_TAIL_CALL(ZEND_FETCH_DIM_R_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
19789 	}
19790 }
19791 
19792 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_FUNC_ARG_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
19793 {
19794 	if (UNEXPECTED(ZEND_CALL_INFO(EX(call)) & ZEND_CALL_SEND_ARG_BY_REF)) {
19795 		/* Behave like FETCH_OBJ_W */
19796 		if ((IS_TMP_VAR & (IS_CONST|IS_TMP_VAR))) {
19797 			ZEND_VM_TAIL_CALL(zend_use_tmp_in_write_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
19798 		}
19799 
19800 		ZEND_VM_TAIL_CALL(ZEND_NULL_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
19801 	} else {
19802 		ZEND_VM_TAIL_CALL(ZEND_FETCH_OBJ_R_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
19803 	}
19804 }
19805 
19806 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ROPE_ADD_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
19807 {
19808 	USE_OPLINE
19809 
19810 	zend_string **rope;
19811 	zval *var;
19812 
19813 	/* op1 and result are the same */
19814 	rope = (zend_string**)EX_VAR(opline->op1.var);
19815 	if (IS_CV == IS_CONST) {
19816 		var = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
19817 		rope[opline->extended_value] = Z_STR_P(var);
19818 		if (UNEXPECTED(Z_REFCOUNTED_P(var))) {
19819 			Z_ADDREF_P(var);
19820 		}
19821 	} else {
19822 		var = EX_VAR(opline->op2.var);
19823 		if (EXPECTED(Z_TYPE_P(var) == IS_STRING)) {
19824 			if (IS_CV == IS_CV) {
19825 				rope[opline->extended_value] = zend_string_copy(Z_STR_P(var));
19826 			} else {
19827 				rope[opline->extended_value] = Z_STR_P(var);
19828 			}
19829 		} else {
19830 			SAVE_OPLINE();
19831 			if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(var) == IS_UNDEF)) {
19832 				GET_OP2_UNDEF_CV(var, BP_VAR_R);
19833 			}
19834 			rope[opline->extended_value] = zval_get_string_func(var);
19835 
19836 			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
19837 		}
19838 	}
19839 	ZEND_VM_NEXT_OPCODE();
19840 }
19841 
19842 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ROPE_END_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
19843 {
19844 	USE_OPLINE
19845 
19846 	zend_string **rope;
19847 	zval *var, *ret;
19848 	uint32_t i;
19849 	size_t len = 0;
19850 	char *target;
19851 
19852 	rope = (zend_string**)EX_VAR(opline->op1.var);
19853 	if (IS_CV == IS_CONST) {
19854 		var = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
19855 		rope[opline->extended_value] = Z_STR_P(var);
19856 		if (UNEXPECTED(Z_REFCOUNTED_P(var))) {
19857 			Z_ADDREF_P(var);
19858 		}
19859 	} else {
19860 		var = EX_VAR(opline->op2.var);
19861 		if (EXPECTED(Z_TYPE_P(var) == IS_STRING)) {
19862 			if (IS_CV == IS_CV) {
19863 				rope[opline->extended_value] = zend_string_copy(Z_STR_P(var));
19864 			} else {
19865 				rope[opline->extended_value] = Z_STR_P(var);
19866 			}
19867 		} else {
19868 			SAVE_OPLINE();
19869 			if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(var) == IS_UNDEF)) {
19870 				GET_OP2_UNDEF_CV(var, BP_VAR_R);
19871 			}
19872 			rope[opline->extended_value] = zval_get_string_func(var);
19873 
19874 			if (UNEXPECTED(EG(exception))) {
19875 				for (i = 0; i <= opline->extended_value; i++) {
19876 					zend_string_release_ex(rope[i], 0);
19877 				}
19878 				ZVAL_UNDEF(EX_VAR(opline->result.var));
19879 				HANDLE_EXCEPTION();
19880 			}
19881 		}
19882 	}
19883 	for (i = 0; i <= opline->extended_value; i++) {
19884 		len += ZSTR_LEN(rope[i]);
19885 	}
19886 	ret = EX_VAR(opline->result.var);
19887 	ZVAL_STR(ret, zend_string_alloc(len, 0));
19888 	target = Z_STRVAL_P(ret);
19889 	for (i = 0; i <= opline->extended_value; i++) {
19890 		memcpy(target, ZSTR_VAL(rope[i]), ZSTR_LEN(rope[i]));
19891 		target += ZSTR_LEN(rope[i]);
19892 		zend_string_release_ex(rope[i], 0);
19893 	}
19894 	*target = '\0';
19895 
19896 	ZEND_VM_NEXT_OPCODE();
19897 }
19898 
19899 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
19900 {
19901 	USE_OPLINE
19902 	zend_free_op free_op1;
19903 	zval *expr_ptr, new_expr;
19904 
19905 	SAVE_OPLINE();
19906 	if ((IS_TMP_VAR == IS_VAR || IS_TMP_VAR == IS_CV) &&
19907 	    UNEXPECTED(opline->extended_value & ZEND_ARRAY_ELEMENT_REF)) {
19908 		expr_ptr = NULL;
19909 		if (Z_ISREF_P(expr_ptr)) {
19910 			Z_ADDREF_P(expr_ptr);
19911 		} else {
19912 			ZVAL_MAKE_REF_EX(expr_ptr, 2);
19913 		}
19914 
19915 	} else {
19916 		expr_ptr = _get_zval_ptr_tmp(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
19917 		if (IS_TMP_VAR == IS_TMP_VAR) {
19918 			/* pass */
19919 		} else if (IS_TMP_VAR == IS_CONST) {
19920 			Z_TRY_ADDREF_P(expr_ptr);
19921 		} else if (IS_TMP_VAR == IS_CV) {
19922 			ZVAL_DEREF(expr_ptr);
19923 			Z_TRY_ADDREF_P(expr_ptr);
19924 		} else /* if (IS_TMP_VAR == IS_VAR) */ {
19925 			if (UNEXPECTED(Z_ISREF_P(expr_ptr))) {
19926 				zend_refcounted *ref = Z_COUNTED_P(expr_ptr);
19927 
19928 				expr_ptr = Z_REFVAL_P(expr_ptr);
19929 				if (UNEXPECTED(GC_DELREF(ref) == 0)) {
19930 					ZVAL_COPY_VALUE(&new_expr, expr_ptr);
19931 					expr_ptr = &new_expr;
19932 					efree_size(ref, sizeof(zend_reference));
19933 				} else if (Z_OPT_REFCOUNTED_P(expr_ptr)) {
19934 					Z_ADDREF_P(expr_ptr);
19935 				}
19936 			}
19937 		}
19938 	}
19939 
19940 	if (IS_CV != IS_UNUSED) {
19941 
19942 		zval *offset = EX_VAR(opline->op2.var);
19943 		zend_string *str;
19944 		zend_ulong hval;
19945 
19946 add_again:
19947 		if (EXPECTED(Z_TYPE_P(offset) == IS_STRING)) {
19948 			str = Z_STR_P(offset);
19949 			if (IS_CV != IS_CONST) {
19950 				if (ZEND_HANDLE_NUMERIC(str, hval)) {
19951 					goto num_index;
19952 				}
19953 			}
19954 str_index:
19955 			zend_hash_update(Z_ARRVAL_P(EX_VAR(opline->result.var)), str, expr_ptr);
19956 		} else if (EXPECTED(Z_TYPE_P(offset) == IS_LONG)) {
19957 			hval = Z_LVAL_P(offset);
19958 num_index:
19959 			zend_hash_index_update(Z_ARRVAL_P(EX_VAR(opline->result.var)), hval, expr_ptr);
19960 		} else if ((IS_CV & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
19961 			offset = Z_REFVAL_P(offset);
19962 			goto add_again;
19963 		} else if (Z_TYPE_P(offset) == IS_NULL) {
19964 			str = ZSTR_EMPTY_ALLOC();
19965 			goto str_index;
19966 		} else if (Z_TYPE_P(offset) == IS_DOUBLE) {
19967 			hval = zend_dval_to_lval(Z_DVAL_P(offset));
19968 			goto num_index;
19969 		} else if (Z_TYPE_P(offset) == IS_FALSE) {
19970 			hval = 0;
19971 			goto num_index;
19972 		} else if (Z_TYPE_P(offset) == IS_TRUE) {
19973 			hval = 1;
19974 			goto num_index;
19975 		} else if (IS_CV == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
19976 			GET_OP2_UNDEF_CV(offset, BP_VAR_R);
19977 			str = ZSTR_EMPTY_ALLOC();
19978 			goto str_index;
19979 		} else {
19980 			zend_illegal_offset();
19981 			zval_ptr_dtor_nogc(expr_ptr);
19982 		}
19983 
19984 	} else {
19985 		if (!zend_hash_next_index_insert(Z_ARRVAL_P(EX_VAR(opline->result.var)), expr_ptr)) {
19986 			zend_cannot_add_element();
19987 			zval_ptr_dtor_nogc(expr_ptr);
19988 		}
19989 	}
19990 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
19991 }
19992 
19993 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_ARRAY_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
19994 {
19995 	zval *array;
19996 	uint32_t size;
19997 	USE_OPLINE
19998 
19999 	array = EX_VAR(opline->result.var);
20000 	if (IS_TMP_VAR != IS_UNUSED) {
20001 		size = opline->extended_value >> ZEND_ARRAY_SIZE_SHIFT;
20002 		ZVAL_ARR(array, zend_new_array(size));
20003 		/* Explicitly initialize array as not-packed if flag is set */
20004 		if (opline->extended_value & ZEND_ARRAY_NOT_PACKED) {
20005 			zend_hash_real_init_mixed(Z_ARRVAL_P(array));
20006 		}
20007 		ZEND_VM_TAIL_CALL(ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
20008 	} else {
20009 		ZVAL_EMPTY_ARRAY(array);
20010 		ZEND_VM_NEXT_OPCODE();
20011 	}
20012 }
20013 
20014 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_YIELD_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
20015 {
20016 	USE_OPLINE
20017 
20018 	zend_generator *generator = zend_get_running_generator(EXECUTE_DATA_C);
20019 
20020 	SAVE_OPLINE();
20021 	if (UNEXPECTED(generator->flags & ZEND_GENERATOR_FORCED_CLOSE)) {
20022 		ZEND_VM_TAIL_CALL(zend_yield_in_closed_generator_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
20023 	}
20024 
20025 	/* Destroy the previously yielded value */
20026 	zval_ptr_dtor(&generator->value);
20027 
20028 	/* Destroy the previously yielded key */
20029 	zval_ptr_dtor(&generator->key);
20030 
20031 	/* Set the new yielded value */
20032 	if (IS_TMP_VAR != IS_UNUSED) {
20033 		zend_free_op free_op1;
20034 
20035 		if (UNEXPECTED(EX(func)->op_array.fn_flags & ZEND_ACC_RETURN_REFERENCE)) {
20036 			/* Constants and temporary variables aren't yieldable by reference,
20037 			 * but we still allow them with a notice. */
20038 			if (IS_TMP_VAR & (IS_CONST|IS_TMP_VAR)) {
20039 				zval *value;
20040 
20041 				zend_error(E_NOTICE, "Only variable references should be yielded by reference");
20042 
20043 				value = _get_zval_ptr_tmp(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
20044 				ZVAL_COPY_VALUE(&generator->value, value);
20045 				if (IS_TMP_VAR == IS_CONST) {
20046 					if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
20047 						Z_ADDREF(generator->value);
20048 					}
20049 				}
20050 			} else {
20051 				zval *value_ptr = NULL;
20052 
20053 				/* If a function call result is yielded and the function did
20054 				 * not return by reference we throw a notice. */
20055 				if (IS_TMP_VAR == IS_VAR &&
20056 				    (value_ptr == &EG(uninitialized_zval) ||
20057 				     (opline->extended_value == ZEND_RETURNS_FUNCTION &&
20058 				      !Z_ISREF_P(value_ptr)))) {
20059 					zend_error(E_NOTICE, "Only variable references should be yielded by reference");
20060 					ZVAL_COPY(&generator->value, value_ptr);
20061 				} else {
20062 					if (Z_ISREF_P(value_ptr)) {
20063 						Z_ADDREF_P(value_ptr);
20064 					} else {
20065 						ZVAL_MAKE_REF_EX(value_ptr, 2);
20066 					}
20067 					ZVAL_REF(&generator->value, Z_REF_P(value_ptr));
20068 				}
20069 
20070 			}
20071 		} else {
20072 			zval *value = _get_zval_ptr_tmp(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
20073 
20074 			/* Consts, temporary variables and references need copying */
20075 			if (IS_TMP_VAR == IS_CONST) {
20076 				ZVAL_COPY_VALUE(&generator->value, value);
20077 				if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
20078 					Z_ADDREF(generator->value);
20079 				}
20080 			} else if (IS_TMP_VAR == IS_TMP_VAR) {
20081 				ZVAL_COPY_VALUE(&generator->value, value);
20082             } else if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
20083 				ZVAL_COPY(&generator->value, Z_REFVAL_P(value));
20084 
20085 			} else {
20086 				ZVAL_COPY_VALUE(&generator->value, value);
20087 				if (IS_TMP_VAR == IS_CV) {
20088 					if (Z_OPT_REFCOUNTED_P(value)) Z_ADDREF_P(value);
20089 				}
20090 			}
20091 		}
20092 	} else {
20093 		/* If no value was specified yield null */
20094 		ZVAL_NULL(&generator->value);
20095 	}
20096 
20097 	/* Set the new yielded key */
20098 	if (IS_CV != IS_UNUSED) {
20099 
20100 		zval *key = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
20101 
20102 		/* Consts, temporary variables and references need copying */
20103 		if (IS_CV == IS_CONST) {
20104 			ZVAL_COPY_VALUE(&generator->key, key);
20105 			if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->key))) {
20106 				Z_ADDREF(generator->key);
20107 			}
20108 		} else if (IS_CV == IS_TMP_VAR) {
20109 			ZVAL_COPY_VALUE(&generator->key, key);
20110 		} else if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(key)) {
20111 			ZVAL_COPY(&generator->key, Z_REFVAL_P(key));
20112 
20113 		} else {
20114 			ZVAL_COPY_VALUE(&generator->key, key);
20115 			if (IS_CV == IS_CV) {
20116 				if (Z_OPT_REFCOUNTED_P(key)) Z_ADDREF_P(key);
20117 			}
20118 		}
20119 
20120 		if (Z_TYPE(generator->key) == IS_LONG
20121 		    && Z_LVAL(generator->key) > generator->largest_used_integer_key
20122 		) {
20123 			generator->largest_used_integer_key = Z_LVAL(generator->key);
20124 		}
20125 	} else {
20126 		/* If no key was specified we use auto-increment keys */
20127 		generator->largest_used_integer_key++;
20128 		ZVAL_LONG(&generator->key, generator->largest_used_integer_key);
20129 	}
20130 
20131 	if (RETURN_VALUE_USED(opline)) {
20132 		/* If the return value of yield is used set the send
20133 		 * target and initialize it to NULL */
20134 		generator->send_target = EX_VAR(opline->result.var);
20135 		ZVAL_NULL(generator->send_target);
20136 	} else {
20137 		generator->send_target = NULL;
20138 	}
20139 
20140 	/* We increment to the next op, so we are at the correct position when the
20141 	 * generator is resumed. */
20142 	ZEND_VM_INC_OPCODE();
20143 
20144 	/* The GOTO VM uses a local opline variable. We need to set the opline
20145 	 * variable in execute_data so we don't resume at an old position. */
20146 	SAVE_OPLINE();
20147 
20148 	ZEND_VM_RETURN();
20149 }
20150 
20151 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BIND_LEXICAL_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
20152 {
20153 	USE_OPLINE
20154 	zend_free_op free_op1;
20155 	zval *closure, *var;
20156 
20157 	closure = _get_zval_ptr_tmp(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
20158 	if (opline->extended_value & ZEND_BIND_REF) {
20159 		/* By-ref binding */
20160 		var = _get_zval_ptr_cv_BP_VAR_W(opline->op2.var EXECUTE_DATA_CC);
20161 		if (Z_ISREF_P(var)) {
20162 			Z_ADDREF_P(var);
20163 		} else {
20164 			ZVAL_MAKE_REF_EX(var, 2);
20165 		}
20166 	} else {
20167 		var = EX_VAR(opline->op2.var);
20168 		if (UNEXPECTED(Z_ISUNDEF_P(var))) {
20169 			SAVE_OPLINE();
20170 			var = GET_OP2_UNDEF_CV(var, BP_VAR_R);
20171 			if (UNEXPECTED(EG(exception))) {
20172 				HANDLE_EXCEPTION();
20173 			}
20174 		}
20175 		ZVAL_DEREF(var);
20176 		Z_TRY_ADDREF_P(var);
20177 	}
20178 
20179 	zend_closure_bind_var_ex(closure, (opline->extended_value & ~ZEND_BIND_REF), var);
20180 	ZEND_VM_NEXT_OPCODE();
20181 }
20182 
20183 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_INC_SPEC_VAR_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
20184 {
20185 	USE_OPLINE
20186 	zend_free_op free_op1;
20187 	zval *var_ptr;
20188 
20189 	var_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
20190 
20191 	if (EXPECTED(Z_TYPE_P(var_ptr) == IS_LONG)) {
20192 		fast_long_increment_function(var_ptr);
20193 		if (UNEXPECTED(0)) {
20194 			ZVAL_COPY_VALUE(EX_VAR(opline->result.var), var_ptr);
20195 		}
20196 		ZEND_VM_NEXT_OPCODE();
20197 	}
20198 
20199 	if (IS_VAR == IS_VAR && UNEXPECTED(Z_ISERROR_P(var_ptr))) {
20200 		if (UNEXPECTED(0)) {
20201 			ZVAL_NULL(EX_VAR(opline->result.var));
20202 		}
20203 		ZEND_VM_NEXT_OPCODE();
20204 	}
20205 
20206 	SAVE_OPLINE();
20207 	if (IS_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(var_ptr) == IS_UNDEF)) {
20208 		var_ptr = GET_OP1_UNDEF_CV(var_ptr, BP_VAR_RW);
20209 	}
20210 	ZVAL_DEREF(var_ptr);
20211 
20212 	increment_function(var_ptr);
20213 
20214 	if (UNEXPECTED(0)) {
20215 		ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
20216 	}
20217 
20218 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
20219 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
20220 }
20221 
20222 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_INC_SPEC_VAR_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
20223 {
20224 	USE_OPLINE
20225 	zend_free_op free_op1;
20226 	zval *var_ptr;
20227 
20228 	var_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
20229 
20230 	if (EXPECTED(Z_TYPE_P(var_ptr) == IS_LONG)) {
20231 		fast_long_increment_function(var_ptr);
20232 		if (UNEXPECTED(1)) {
20233 			ZVAL_COPY_VALUE(EX_VAR(opline->result.var), var_ptr);
20234 		}
20235 		ZEND_VM_NEXT_OPCODE();
20236 	}
20237 
20238 	if (IS_VAR == IS_VAR && UNEXPECTED(Z_ISERROR_P(var_ptr))) {
20239 		if (UNEXPECTED(1)) {
20240 			ZVAL_NULL(EX_VAR(opline->result.var));
20241 		}
20242 		ZEND_VM_NEXT_OPCODE();
20243 	}
20244 
20245 	SAVE_OPLINE();
20246 	if (IS_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(var_ptr) == IS_UNDEF)) {
20247 		var_ptr = GET_OP1_UNDEF_CV(var_ptr, BP_VAR_RW);
20248 	}
20249 	ZVAL_DEREF(var_ptr);
20250 
20251 	increment_function(var_ptr);
20252 
20253 	if (UNEXPECTED(1)) {
20254 		ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
20255 	}
20256 
20257 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
20258 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
20259 }
20260 
20261 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_DEC_SPEC_VAR_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
20262 {
20263 	USE_OPLINE
20264 	zend_free_op free_op1;
20265 	zval *var_ptr;
20266 
20267 	var_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
20268 
20269 	if (EXPECTED(Z_TYPE_P(var_ptr) == IS_LONG)) {
20270 		fast_long_decrement_function(var_ptr);
20271 		if (UNEXPECTED(0)) {
20272 			ZVAL_COPY_VALUE(EX_VAR(opline->result.var), var_ptr);
20273 		}
20274 		ZEND_VM_NEXT_OPCODE();
20275 	}
20276 
20277 	if (IS_VAR == IS_VAR && UNEXPECTED(Z_ISERROR_P(var_ptr))) {
20278 		if (UNEXPECTED(0)) {
20279 			ZVAL_NULL(EX_VAR(opline->result.var));
20280 		}
20281 		ZEND_VM_NEXT_OPCODE();
20282 	}
20283 
20284 	SAVE_OPLINE();
20285 	if (IS_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(var_ptr) == IS_UNDEF)) {
20286 		var_ptr = GET_OP1_UNDEF_CV(var_ptr, BP_VAR_RW);
20287 	}
20288 	ZVAL_DEREF(var_ptr);
20289 
20290 	decrement_function(var_ptr);
20291 
20292 	if (UNEXPECTED(0)) {
20293 		ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
20294 	}
20295 
20296 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
20297 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
20298 }
20299 
20300 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_DEC_SPEC_VAR_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
20301 {
20302 	USE_OPLINE
20303 	zend_free_op free_op1;
20304 	zval *var_ptr;
20305 
20306 	var_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
20307 
20308 	if (EXPECTED(Z_TYPE_P(var_ptr) == IS_LONG)) {
20309 		fast_long_decrement_function(var_ptr);
20310 		if (UNEXPECTED(1)) {
20311 			ZVAL_COPY_VALUE(EX_VAR(opline->result.var), var_ptr);
20312 		}
20313 		ZEND_VM_NEXT_OPCODE();
20314 	}
20315 
20316 	if (IS_VAR == IS_VAR && UNEXPECTED(Z_ISERROR_P(var_ptr))) {
20317 		if (UNEXPECTED(1)) {
20318 			ZVAL_NULL(EX_VAR(opline->result.var));
20319 		}
20320 		ZEND_VM_NEXT_OPCODE();
20321 	}
20322 
20323 	SAVE_OPLINE();
20324 	if (IS_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(var_ptr) == IS_UNDEF)) {
20325 		var_ptr = GET_OP1_UNDEF_CV(var_ptr, BP_VAR_RW);
20326 	}
20327 	ZVAL_DEREF(var_ptr);
20328 
20329 	decrement_function(var_ptr);
20330 
20331 	if (UNEXPECTED(1)) {
20332 		ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
20333 	}
20334 
20335 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
20336 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
20337 }
20338 
20339 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_POST_INC_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
20340 {
20341 	USE_OPLINE
20342 	zend_free_op free_op1;
20343 	zval *var_ptr;
20344 
20345 	var_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
20346 
20347 	if (EXPECTED(Z_TYPE_P(var_ptr) == IS_LONG)) {
20348 		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(var_ptr));
20349 		fast_long_increment_function(var_ptr);
20350 		ZEND_VM_NEXT_OPCODE();
20351 	}
20352 
20353 	if (IS_VAR == IS_VAR && UNEXPECTED(Z_ISERROR_P(var_ptr))) {
20354 		ZVAL_NULL(EX_VAR(opline->result.var));
20355 		ZEND_VM_NEXT_OPCODE();
20356 	}
20357 
20358 	SAVE_OPLINE();
20359 	if (IS_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(var_ptr) == IS_UNDEF)) {
20360 		var_ptr = GET_OP1_UNDEF_CV(var_ptr, BP_VAR_RW);
20361 	}
20362 	ZVAL_DEREF(var_ptr);
20363 	ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
20364 
20365 	increment_function(var_ptr);
20366 
20367 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
20368 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
20369 }
20370 
20371 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_POST_DEC_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
20372 {
20373 	USE_OPLINE
20374 	zend_free_op free_op1;
20375 	zval *var_ptr;
20376 
20377 	var_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
20378 
20379 	if (EXPECTED(Z_TYPE_P(var_ptr) == IS_LONG)) {
20380 		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(var_ptr));
20381 		fast_long_decrement_function(var_ptr);
20382 		ZEND_VM_NEXT_OPCODE();
20383 	}
20384 
20385 	if (IS_VAR == IS_VAR && UNEXPECTED(Z_ISERROR_P(var_ptr))) {
20386 		ZVAL_NULL(EX_VAR(opline->result.var));
20387 		ZEND_VM_NEXT_OPCODE();
20388 	}
20389 
20390 	SAVE_OPLINE();
20391 	if (IS_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(var_ptr) == IS_UNDEF)) {
20392 		var_ptr = GET_OP1_UNDEF_CV(var_ptr, BP_VAR_RW);
20393 	}
20394 	ZVAL_DEREF(var_ptr);
20395 	ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
20396 
20397 	decrement_function(var_ptr);
20398 
20399 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
20400 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
20401 }
20402 
20403 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_RETURN_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
20404 {
20405 	USE_OPLINE
20406 	zval *retval_ptr;
20407 	zval *return_value;
20408 	zend_free_op free_op1;
20409 
20410 	retval_ptr = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
20411 	return_value = EX(return_value);
20412 	if (IS_VAR == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(retval_ptr) == IS_UNDEF)) {
20413 		SAVE_OPLINE();
20414 		retval_ptr = GET_OP1_UNDEF_CV(retval_ptr, BP_VAR_R);
20415 		if (return_value) {
20416 			ZVAL_NULL(return_value);
20417 		}
20418 	} else if (!return_value) {
20419 		if (IS_VAR & (IS_VAR|IS_TMP_VAR)) {
20420 			if (Z_REFCOUNTED_P(free_op1) && !Z_DELREF_P(free_op1)) {
20421 				SAVE_OPLINE();
20422 				rc_dtor_func(Z_COUNTED_P(free_op1));
20423 			}
20424 		}
20425 	} else {
20426 		if ((IS_VAR & (IS_CONST|IS_TMP_VAR))) {
20427 			ZVAL_COPY_VALUE(return_value, retval_ptr);
20428 			if (IS_VAR == IS_CONST) {
20429 				if (UNEXPECTED(Z_OPT_REFCOUNTED_P(return_value))) {
20430 					Z_ADDREF_P(return_value);
20431 				}
20432 			}
20433 		} else if (IS_VAR == IS_CV) {
20434 			if (Z_OPT_REFCOUNTED_P(retval_ptr)) {
20435 				if (EXPECTED(!Z_OPT_ISREF_P(retval_ptr))) {
20436 					ZVAL_COPY_VALUE(return_value, retval_ptr);
20437 					if (EXPECTED(!(EX_CALL_INFO() & ZEND_CALL_CODE))) {
20438 						zend_refcounted *ref = Z_COUNTED_P(retval_ptr);
20439 						if (GC_MAY_LEAK(ref)) {
20440 							gc_possible_root(ref);
20441 						}
20442 						ZVAL_NULL(retval_ptr);
20443 					} else {
20444 						Z_ADDREF_P(return_value);
20445 					}
20446 				} else {
20447 					retval_ptr = Z_REFVAL_P(retval_ptr);
20448 					ZVAL_COPY(return_value, retval_ptr);
20449 				}
20450 			} else {
20451 				ZVAL_COPY_VALUE(return_value, retval_ptr);
20452 			}
20453 		} else /* if (IS_VAR == IS_VAR) */ {
20454 			if (UNEXPECTED(Z_ISREF_P(retval_ptr))) {
20455 				zend_refcounted *ref = Z_COUNTED_P(retval_ptr);
20456 
20457 				retval_ptr = Z_REFVAL_P(retval_ptr);
20458 				ZVAL_COPY_VALUE(return_value, retval_ptr);
20459 				if (UNEXPECTED(GC_DELREF(ref) == 0)) {
20460 					efree_size(ref, sizeof(zend_reference));
20461 				} else if (Z_OPT_REFCOUNTED_P(retval_ptr)) {
20462 					Z_ADDREF_P(retval_ptr);
20463 				}
20464 			} else {
20465 				ZVAL_COPY_VALUE(return_value, retval_ptr);
20466 			}
20467 		}
20468 	}
20469 	ZEND_VM_TAIL_CALL(zend_leave_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
20470 }
20471 
20472 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_RETURN_BY_REF_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
20473 {
20474 	USE_OPLINE
20475 	zval *retval_ptr;
20476 	zend_free_op free_op1;
20477 
20478 	SAVE_OPLINE();
20479 
20480 	do {
20481 		if ((IS_VAR & (IS_CONST|IS_TMP_VAR)) ||
20482 		    (IS_VAR == IS_VAR && opline->extended_value == ZEND_RETURNS_VALUE)) {
20483 			/* Not supposed to happen, but we'll allow it */
20484 			zend_error(E_NOTICE, "Only variable references should be returned by reference");
20485 
20486 			retval_ptr = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
20487 			if (!EX(return_value)) {
20488 				zval_ptr_dtor_nogc(free_op1);
20489 			} else {
20490 				if (IS_VAR == IS_VAR && UNEXPECTED(Z_ISREF_P(retval_ptr))) {
20491 					ZVAL_COPY_VALUE(EX(return_value), retval_ptr);
20492 					break;
20493 				}
20494 
20495 				ZVAL_NEW_REF(EX(return_value), retval_ptr);
20496 				if (IS_VAR == IS_CONST) {
20497 					Z_TRY_ADDREF_P(retval_ptr);
20498 				}
20499 			}
20500 			break;
20501 		}
20502 
20503 		retval_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
20504 
20505 		if (IS_VAR == IS_VAR) {
20506 			if (retval_ptr == &EG(uninitialized_zval) ||
20507 			    (opline->extended_value == ZEND_RETURNS_FUNCTION && !Z_ISREF_P(retval_ptr))) {
20508 				zend_error(E_NOTICE, "Only variable references should be returned by reference");
20509 				if (EX(return_value)) {
20510 					ZVAL_NEW_REF(EX(return_value), retval_ptr);
20511 				} else {
20512 					if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
20513 				}
20514 				break;
20515 			}
20516 		}
20517 
20518 		if (EX(return_value)) {
20519 			if (Z_ISREF_P(retval_ptr)) {
20520 				Z_ADDREF_P(retval_ptr);
20521 			} else {
20522 				ZVAL_MAKE_REF_EX(retval_ptr, 2);
20523 			}
20524 			ZVAL_REF(EX(return_value), Z_REF_P(retval_ptr));
20525 		}
20526 
20527 		if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
20528 	} while (0);
20529 
20530 	ZEND_VM_TAIL_CALL(zend_leave_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
20531 }
20532 
20533 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_GENERATOR_RETURN_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
20534 {
20535 	USE_OPLINE
20536 	zval *retval;
20537 	zend_free_op free_op1;
20538 
20539 	zend_generator *generator = zend_get_running_generator(EXECUTE_DATA_C);
20540 
20541 	SAVE_OPLINE();
20542 	retval = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
20543 
20544 	/* Copy return value into generator->retval */
20545 	if ((IS_VAR & (IS_CONST|IS_TMP_VAR))) {
20546 		ZVAL_COPY_VALUE(&generator->retval, retval);
20547 		if (IS_VAR == IS_CONST) {
20548 			if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->retval))) {
20549 				Z_ADDREF(generator->retval);
20550 			}
20551 		}
20552 	} else if (IS_VAR == IS_CV) {
20553 		ZVAL_COPY_DEREF(&generator->retval, retval);
20554 	} else /* if (IS_VAR == IS_VAR) */ {
20555 		if (UNEXPECTED(Z_ISREF_P(retval))) {
20556 			zend_refcounted *ref = Z_COUNTED_P(retval);
20557 
20558 			retval = Z_REFVAL_P(retval);
20559 			ZVAL_COPY_VALUE(&generator->retval, retval);
20560 			if (UNEXPECTED(GC_DELREF(ref) == 0)) {
20561 				efree_size(ref, sizeof(zend_reference));
20562 			} else if (Z_OPT_REFCOUNTED_P(retval)) {
20563 				Z_ADDREF_P(retval);
20564 			}
20565 		} else {
20566 			ZVAL_COPY_VALUE(&generator->retval, retval);
20567 		}
20568 	}
20569 
20570 	/* Close the generator to free up resources */
20571 	zend_generator_close(generator, 1);
20572 
20573 	/* Pass execution back to handling code */
20574 	ZEND_VM_RETURN();
20575 }
20576 
20577 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_THROW_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
20578 {
20579 	USE_OPLINE
20580 	zval *value;
20581 	zend_free_op free_op1;
20582 
20583 	SAVE_OPLINE();
20584 	value = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
20585 
20586 	do {
20587 		if (IS_VAR == IS_CONST || UNEXPECTED(Z_TYPE_P(value) != IS_OBJECT)) {
20588 			if ((IS_VAR & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
20589 				value = Z_REFVAL_P(value);
20590 				if (EXPECTED(Z_TYPE_P(value) == IS_OBJECT)) {
20591 					break;
20592 				}
20593 			}
20594 			if (IS_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
20595 				GET_OP1_UNDEF_CV(value, BP_VAR_R);
20596 				if (UNEXPECTED(EG(exception) != NULL)) {
20597 					HANDLE_EXCEPTION();
20598 				}
20599 			}
20600 			zend_throw_error(NULL, "Can only throw objects");
20601 			zval_ptr_dtor_nogc(free_op1);
20602 			HANDLE_EXCEPTION();
20603 		}
20604 	} while (0);
20605 
20606 	zend_exception_save();
20607 	if (IS_VAR != IS_TMP_VAR) {
20608 		Z_TRY_ADDREF_P(value);
20609 	}
20610 
20611 	zend_throw_exception_object(value);
20612 	zend_exception_restore();
20613 	zval_ptr_dtor_nogc(free_op1);
20614 	HANDLE_EXCEPTION();
20615 }
20616 
20617 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SEND_VAR_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
20618 {
20619 	USE_OPLINE
20620 	zval *varptr, *arg;
20621 	zend_free_op free_op1;
20622 
20623 	varptr = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
20624 	if (IS_VAR == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(varptr) == IS_UNDEF)) {
20625 		SAVE_OPLINE();
20626 		GET_OP1_UNDEF_CV(varptr, BP_VAR_R);
20627 		arg = ZEND_CALL_VAR(EX(call), opline->result.var);
20628 		ZVAL_NULL(arg);
20629 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
20630 	}
20631 
20632 	arg = ZEND_CALL_VAR(EX(call), opline->result.var);
20633 
20634 	if (IS_VAR == IS_CV) {
20635 		ZVAL_COPY_DEREF(arg, varptr);
20636 	} else /* if (IS_VAR == IS_VAR) */ {
20637 		if (UNEXPECTED(Z_ISREF_P(varptr))) {
20638 			zend_refcounted *ref = Z_COUNTED_P(varptr);
20639 
20640 			varptr = Z_REFVAL_P(varptr);
20641 			ZVAL_COPY_VALUE(arg, varptr);
20642 			if (UNEXPECTED(GC_DELREF(ref) == 0)) {
20643 				efree_size(ref, sizeof(zend_reference));
20644 			} else if (Z_OPT_REFCOUNTED_P(arg)) {
20645 				Z_ADDREF_P(arg);
20646 			}
20647 		} else {
20648 			ZVAL_COPY_VALUE(arg, varptr);
20649 		}
20650 	}
20651 
20652 	ZEND_VM_NEXT_OPCODE();
20653 }
20654 
20655 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SEND_VAR_NO_REF_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
20656 {
20657 	USE_OPLINE
20658 	zend_free_op free_op1;
20659 	zval *varptr, *arg;
20660 
20661 	varptr = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
20662 	arg = ZEND_CALL_VAR(EX(call), opline->result.var);
20663 	ZVAL_COPY_VALUE(arg, varptr);
20664 
20665 	if (EXPECTED(Z_ISREF_P(varptr))) {
20666 		ZEND_VM_NEXT_OPCODE();
20667 	}
20668 
20669 	SAVE_OPLINE();
20670 	zend_error(E_NOTICE, "Only variables should be passed by reference");
20671 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
20672 }
20673 
20674 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SEND_VAR_NO_REF_EX_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
20675 {
20676 	USE_OPLINE
20677 	zend_free_op free_op1;
20678 	zval *varptr, *arg;
20679 	uint32_t arg_num = opline->op2.num;
20680 
20681 	if (EXPECTED(0)) {
20682 		if (!QUICK_ARG_SHOULD_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
20683 			ZEND_VM_TAIL_CALL(ZEND_SEND_VAR_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
20684 		}
20685 
20686 		varptr = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
20687 		arg = ZEND_CALL_VAR(EX(call), opline->result.var);
20688 		ZVAL_COPY_VALUE(arg, varptr);
20689 
20690 		if (EXPECTED(Z_ISREF_P(varptr) ||
20691 		    QUICK_ARG_MAY_BE_SENT_BY_REF(EX(call)->func, arg_num))) {
20692 			ZEND_VM_NEXT_OPCODE();
20693 		}
20694 	} else {
20695 		if (!ARG_SHOULD_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
20696 			ZEND_VM_TAIL_CALL(ZEND_SEND_VAR_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
20697 		}
20698 
20699 		varptr = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
20700 		arg = ZEND_CALL_VAR(EX(call), opline->result.var);
20701 		ZVAL_COPY_VALUE(arg, varptr);
20702 
20703 		if (EXPECTED(Z_ISREF_P(varptr) ||
20704 		    ARG_MAY_BE_SENT_BY_REF(EX(call)->func, arg_num))) {
20705 			ZEND_VM_NEXT_OPCODE();
20706 		}
20707 	}
20708 
20709 	SAVE_OPLINE();
20710 	zend_error(E_NOTICE, "Only variables should be passed by reference");
20711 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
20712 }
20713 
20714 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SEND_VAR_NO_REF_EX_SPEC_VAR_QUICK_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
20715 {
20716 	USE_OPLINE
20717 	zend_free_op free_op1;
20718 	zval *varptr, *arg;
20719 	uint32_t arg_num = opline->op2.num;
20720 
20721 	if (EXPECTED(1)) {
20722 		if (!QUICK_ARG_SHOULD_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
20723 			ZEND_VM_TAIL_CALL(ZEND_SEND_VAR_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
20724 		}
20725 
20726 		varptr = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
20727 		arg = ZEND_CALL_VAR(EX(call), opline->result.var);
20728 		ZVAL_COPY_VALUE(arg, varptr);
20729 
20730 		if (EXPECTED(Z_ISREF_P(varptr) ||
20731 		    QUICK_ARG_MAY_BE_SENT_BY_REF(EX(call)->func, arg_num))) {
20732 			ZEND_VM_NEXT_OPCODE();
20733 		}
20734 	} else {
20735 		if (!ARG_SHOULD_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
20736 			ZEND_VM_TAIL_CALL(ZEND_SEND_VAR_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
20737 		}
20738 
20739 		varptr = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
20740 		arg = ZEND_CALL_VAR(EX(call), opline->result.var);
20741 		ZVAL_COPY_VALUE(arg, varptr);
20742 
20743 		if (EXPECTED(Z_ISREF_P(varptr) ||
20744 		    ARG_MAY_BE_SENT_BY_REF(EX(call)->func, arg_num))) {
20745 			ZEND_VM_NEXT_OPCODE();
20746 		}
20747 	}
20748 
20749 	SAVE_OPLINE();
20750 	zend_error(E_NOTICE, "Only variables should be passed by reference");
20751 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
20752 }
20753 
20754 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SEND_REF_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
20755 {
20756 	USE_OPLINE
20757 	zend_free_op free_op1;
20758 	zval *varptr, *arg;
20759 
20760 	SAVE_OPLINE();
20761 	varptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
20762 
20763 	arg = ZEND_CALL_VAR(EX(call), opline->result.var);
20764 	if (IS_VAR == IS_VAR && UNEXPECTED(Z_ISERROR_P(varptr))) {
20765 		ZVAL_NEW_EMPTY_REF(arg);
20766 		ZVAL_NULL(Z_REFVAL_P(arg));
20767 		ZEND_VM_NEXT_OPCODE();
20768 	}
20769 
20770 	if (Z_ISREF_P(varptr)) {
20771 		Z_ADDREF_P(varptr);
20772 	} else {
20773 		ZVAL_MAKE_REF_EX(varptr, 2);
20774 	}
20775 	ZVAL_REF(arg, Z_REF_P(varptr));
20776 
20777 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
20778 	ZEND_VM_NEXT_OPCODE();
20779 }
20780 
20781 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SEND_VAR_EX_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
20782 {
20783 	USE_OPLINE
20784 	zval *varptr, *arg;
20785 	zend_free_op free_op1;
20786 	uint32_t arg_num = opline->op2.num;
20787 
20788 	if (EXPECTED(0)) {
20789 		if (QUICK_ARG_SHOULD_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
20790 			goto send_var_by_ref;
20791 		}
20792 	} else if (ARG_SHOULD_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
20793 send_var_by_ref:
20794 		ZEND_VM_TAIL_CALL(ZEND_SEND_REF_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
20795 	}
20796 
20797 	varptr = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
20798 	if (IS_VAR == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(varptr) == IS_UNDEF)) {
20799 		SAVE_OPLINE();
20800 		GET_OP1_UNDEF_CV(varptr, BP_VAR_R);
20801 		arg = ZEND_CALL_VAR(EX(call), opline->result.var);
20802 		ZVAL_NULL(arg);
20803 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
20804 	}
20805 
20806 	arg = ZEND_CALL_VAR(EX(call), opline->result.var);
20807 
20808 	if (IS_VAR == IS_CV) {
20809 		ZVAL_COPY_DEREF(arg, varptr);
20810 	} else /* if (IS_VAR == IS_VAR) */ {
20811 		if (UNEXPECTED(Z_ISREF_P(varptr))) {
20812 			zend_refcounted *ref = Z_COUNTED_P(varptr);
20813 
20814 			varptr = Z_REFVAL_P(varptr);
20815 			ZVAL_COPY_VALUE(arg, varptr);
20816 			if (UNEXPECTED(GC_DELREF(ref) == 0)) {
20817 				efree_size(ref, sizeof(zend_reference));
20818 			} else if (Z_OPT_REFCOUNTED_P(arg)) {
20819 				Z_ADDREF_P(arg);
20820 			}
20821 		} else {
20822 			ZVAL_COPY_VALUE(arg, varptr);
20823 		}
20824 	}
20825 
20826 	ZEND_VM_NEXT_OPCODE();
20827 }
20828 
20829 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SEND_VAR_EX_SPEC_VAR_QUICK_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
20830 {
20831 	USE_OPLINE
20832 	zval *varptr, *arg;
20833 	zend_free_op free_op1;
20834 	uint32_t arg_num = opline->op2.num;
20835 
20836 	if (EXPECTED(1)) {
20837 		if (QUICK_ARG_SHOULD_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
20838 			goto send_var_by_ref;
20839 		}
20840 	} else if (ARG_SHOULD_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
20841 send_var_by_ref:
20842 		ZEND_VM_TAIL_CALL(ZEND_SEND_REF_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
20843 	}
20844 
20845 	varptr = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
20846 	if (IS_VAR == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(varptr) == IS_UNDEF)) {
20847 		SAVE_OPLINE();
20848 		GET_OP1_UNDEF_CV(varptr, BP_VAR_R);
20849 		arg = ZEND_CALL_VAR(EX(call), opline->result.var);
20850 		ZVAL_NULL(arg);
20851 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
20852 	}
20853 
20854 	arg = ZEND_CALL_VAR(EX(call), opline->result.var);
20855 
20856 	if (IS_VAR == IS_CV) {
20857 		ZVAL_COPY_DEREF(arg, varptr);
20858 	} else /* if (IS_VAR == IS_VAR) */ {
20859 		if (UNEXPECTED(Z_ISREF_P(varptr))) {
20860 			zend_refcounted *ref = Z_COUNTED_P(varptr);
20861 
20862 			varptr = Z_REFVAL_P(varptr);
20863 			ZVAL_COPY_VALUE(arg, varptr);
20864 			if (UNEXPECTED(GC_DELREF(ref) == 0)) {
20865 				efree_size(ref, sizeof(zend_reference));
20866 			} else if (Z_OPT_REFCOUNTED_P(arg)) {
20867 				Z_ADDREF_P(arg);
20868 			}
20869 		} else {
20870 			ZVAL_COPY_VALUE(arg, varptr);
20871 		}
20872 	}
20873 
20874 	ZEND_VM_NEXT_OPCODE();
20875 }
20876 
20877 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SEND_FUNC_ARG_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
20878 {
20879 	USE_OPLINE
20880 	zval *varptr, *arg;
20881 	zend_free_op free_op1;
20882 
20883 	if (UNEXPECTED(ZEND_CALL_INFO(EX(call)) & ZEND_CALL_SEND_ARG_BY_REF)) {
20884 		ZEND_VM_TAIL_CALL(ZEND_SEND_REF_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
20885 	}
20886 
20887 	varptr = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
20888 	arg = ZEND_CALL_VAR(EX(call), opline->result.var);
20889 
20890 	if (UNEXPECTED(Z_ISREF_P(varptr))) {
20891 		zend_refcounted *ref = Z_COUNTED_P(varptr);
20892 
20893 		varptr = Z_REFVAL_P(varptr);
20894 		ZVAL_COPY_VALUE(arg, varptr);
20895 		if (UNEXPECTED(GC_DELREF(ref) == 0)) {
20896 			efree_size(ref, sizeof(zend_reference));
20897 		} else if (Z_OPT_REFCOUNTED_P(arg)) {
20898 			Z_ADDREF_P(arg);
20899 		}
20900 	} else {
20901 		ZVAL_COPY_VALUE(arg, varptr);
20902 	}
20903 
20904 	ZEND_VM_NEXT_OPCODE();
20905 }
20906 
20907 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SEND_USER_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
20908 {
20909 	USE_OPLINE
20910 	zval *arg, *param;
20911 	zend_free_op free_op1;
20912 
20913 	SAVE_OPLINE();
20914 	arg = _get_zval_ptr_var_deref(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
20915 	param = ZEND_CALL_VAR(EX(call), opline->result.var);
20916 
20917 	if (UNEXPECTED(ARG_MUST_BE_SENT_BY_REF(EX(call)->func, opline->op2.num))) {
20918 		zend_param_must_be_ref(EX(call)->func, opline->op2.num);
20919 	}
20920 
20921 	ZVAL_COPY(param, arg);
20922 
20923 	zval_ptr_dtor_nogc(free_op1);
20924 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
20925 }
20926 
20927 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_CAST_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
20928 {
20929 	USE_OPLINE
20930 	zend_free_op free_op1;
20931 	zval *expr;
20932 	zval *result = EX_VAR(opline->result.var);
20933 	HashTable *ht;
20934 
20935 	SAVE_OPLINE();
20936 	expr = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
20937 
20938 	switch (opline->extended_value) {
20939 		case IS_NULL:
20940 			ZVAL_NULL(result);
20941 			break;
20942 		case _IS_BOOL:
20943 			ZVAL_BOOL(result, zend_is_true(expr));
20944 			break;
20945 		case IS_LONG:
20946 			ZVAL_LONG(result, zval_get_long(expr));
20947 			break;
20948 		case IS_DOUBLE:
20949 			ZVAL_DOUBLE(result, zval_get_double(expr));
20950 			break;
20951 		case IS_STRING:
20952 			ZVAL_STR(result, zval_get_string(expr));
20953 			break;
20954 		default:
20955 			if (IS_VAR & (IS_VAR|IS_CV)) {
20956 				ZVAL_DEREF(expr);
20957 			}
20958 			/* If value is already of correct type, return it directly */
20959 			if (Z_TYPE_P(expr) == opline->extended_value) {
20960 				ZVAL_COPY_VALUE(result, expr);
20961 				if (IS_VAR == IS_CONST) {
20962 					if (UNEXPECTED(Z_OPT_REFCOUNTED_P(result))) Z_ADDREF_P(result);
20963 				} else if (IS_VAR != IS_TMP_VAR) {
20964 					if (Z_OPT_REFCOUNTED_P(result)) Z_ADDREF_P(result);
20965 				}
20966 
20967 				zval_ptr_dtor_nogc(free_op1);
20968 				ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
20969 			}
20970 
20971 			if (opline->extended_value == IS_ARRAY) {
20972 				if (IS_VAR == IS_CONST || Z_TYPE_P(expr) != IS_OBJECT || Z_OBJCE_P(expr) == zend_ce_closure) {
20973 					if (Z_TYPE_P(expr) != IS_NULL) {
20974 						ZVAL_ARR(result, zend_new_array(1));
20975 						expr = zend_hash_index_add_new(Z_ARRVAL_P(result), 0, expr);
20976 						if (IS_VAR == IS_CONST) {
20977 							if (UNEXPECTED(Z_OPT_REFCOUNTED_P(expr))) Z_ADDREF_P(expr);
20978 						} else {
20979 							if (Z_OPT_REFCOUNTED_P(expr)) Z_ADDREF_P(expr);
20980 						}
20981 					} else {
20982 						ZVAL_EMPTY_ARRAY(result);
20983 					}
20984 				} else if (Z_OBJ_HT_P(expr)->get_properties) {
20985 					HashTable *obj_ht = Z_OBJ_HT_P(expr)->get_properties(expr);
20986 					if (obj_ht) {
20987 						/* fast copy */
20988 						obj_ht = zend_proptable_to_symtable(obj_ht,
20989 							(Z_OBJCE_P(expr)->default_properties_count ||
20990 							 Z_OBJ_P(expr)->handlers != &std_object_handlers ||
20991 							 GC_IS_RECURSIVE(obj_ht)));
20992 						ZVAL_ARR(result, obj_ht);
20993 					} else {
20994 						ZVAL_EMPTY_ARRAY(result);
20995 					}
20996 				} else {
20997 					ZVAL_COPY_VALUE(result, expr);
20998 					Z_ADDREF_P(result);
20999 					convert_to_array(result);
21000 				}
21001 			} else {
21002 				ZVAL_OBJ(result, zend_objects_new(zend_standard_class_def));
21003 				if (Z_TYPE_P(expr) == IS_ARRAY) {
21004 					ht = zend_symtable_to_proptable(Z_ARR_P(expr));
21005 					if (GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) {
21006 						/* TODO: try not to duplicate immutable arrays as well ??? */
21007 						ht = zend_array_dup(ht);
21008 					}
21009 					Z_OBJ_P(result)->properties = ht;
21010 				} else if (Z_TYPE_P(expr) != IS_NULL) {
21011 					Z_OBJ_P(result)->properties = ht = zend_new_array(1);
21012 					expr = zend_hash_add_new(ht, ZSTR_KNOWN(ZEND_STR_SCALAR), expr);
21013 					if (IS_VAR == IS_CONST) {
21014 						if (UNEXPECTED(Z_OPT_REFCOUNTED_P(expr))) Z_ADDREF_P(expr);
21015 					} else {
21016 						if (Z_OPT_REFCOUNTED_P(expr)) Z_ADDREF_P(expr);
21017 					}
21018 				}
21019 			}
21020 	}
21021 
21022 	zval_ptr_dtor_nogc(free_op1);
21023 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
21024 }
21025 
21026 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FE_RESET_R_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
21027 {
21028 	USE_OPLINE
21029 	zend_free_op free_op1;
21030 	zval *array_ptr, *result;
21031 
21032 	SAVE_OPLINE();
21033 
21034 	array_ptr = _get_zval_ptr_var_deref(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
21035 	if (EXPECTED(Z_TYPE_P(array_ptr) == IS_ARRAY)) {
21036 		result = EX_VAR(opline->result.var);
21037 		ZVAL_COPY_VALUE(result, array_ptr);
21038 		if (IS_VAR != IS_TMP_VAR && Z_OPT_REFCOUNTED_P(result)) {
21039 			Z_ADDREF_P(array_ptr);
21040 		}
21041 		Z_FE_POS_P(result) = 0;
21042 
21043 		zval_ptr_dtor_nogc(free_op1);
21044 		ZEND_VM_NEXT_OPCODE();
21045 	} else if (IS_VAR != IS_CONST && EXPECTED(Z_TYPE_P(array_ptr) == IS_OBJECT)) {
21046 		if (!Z_OBJCE_P(array_ptr)->get_iterator) {
21047 			result = EX_VAR(opline->result.var);
21048 			ZVAL_COPY_VALUE(result, array_ptr);
21049 			if (IS_VAR != IS_TMP_VAR) {
21050 				Z_ADDREF_P(array_ptr);
21051 			}
21052 			if (Z_OBJ_P(array_ptr)->properties
21053 			 && UNEXPECTED(GC_REFCOUNT(Z_OBJ_P(array_ptr)->properties) > 1)) {
21054 				if (EXPECTED(!(GC_FLAGS(Z_OBJ_P(array_ptr)->properties) & IS_ARRAY_IMMUTABLE))) {
21055 					GC_DELREF(Z_OBJ_P(array_ptr)->properties);
21056 				}
21057 				Z_OBJ_P(array_ptr)->properties = zend_array_dup(Z_OBJ_P(array_ptr)->properties);
21058 			}
21059 			Z_FE_ITER_P(EX_VAR(opline->result.var)) = zend_hash_iterator_add(Z_OBJPROP_P(array_ptr), 0);
21060 
21061 			zval_ptr_dtor_nogc(free_op1);
21062 			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
21063 		} else {
21064 			zend_bool is_empty = zend_fe_reset_iterator(array_ptr, 0 OPLINE_CC EXECUTE_DATA_CC);
21065 
21066 			zval_ptr_dtor_nogc(free_op1);
21067 			if (UNEXPECTED(EG(exception))) {
21068 				HANDLE_EXCEPTION();
21069 			} else if (is_empty) {
21070 				ZEND_VM_JMP_EX(OP_JMP_ADDR(opline, opline->op2), 0);
21071 			} else {
21072 				ZEND_VM_NEXT_OPCODE();
21073 			}
21074 		}
21075 	} else {
21076 		zend_error(E_WARNING, "Invalid argument supplied for foreach()");
21077 		ZVAL_UNDEF(EX_VAR(opline->result.var));
21078 		Z_FE_ITER_P(EX_VAR(opline->result.var)) = (uint32_t)-1;
21079 		zval_ptr_dtor_nogc(free_op1);
21080 		ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
21081 	}
21082 }
21083 
21084 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FE_RESET_RW_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
21085 {
21086 	USE_OPLINE
21087 	zend_free_op free_op1;
21088 	zval *array_ptr, *array_ref;
21089 
21090 	SAVE_OPLINE();
21091 
21092 	if (IS_VAR == IS_VAR || IS_VAR == IS_CV) {
21093 		array_ref = array_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
21094 		if (Z_ISREF_P(array_ref)) {
21095 			array_ptr = Z_REFVAL_P(array_ref);
21096 		}
21097 	} else {
21098 		array_ref = array_ptr = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
21099 	}
21100 
21101 	if (EXPECTED(Z_TYPE_P(array_ptr) == IS_ARRAY)) {
21102 		if (IS_VAR == IS_VAR || IS_VAR == IS_CV) {
21103 			if (array_ptr == array_ref) {
21104 				ZVAL_NEW_REF(array_ref, array_ref);
21105 				array_ptr = Z_REFVAL_P(array_ref);
21106 			}
21107 			Z_ADDREF_P(array_ref);
21108 			ZVAL_COPY_VALUE(EX_VAR(opline->result.var), array_ref);
21109 		} else {
21110 			array_ref = EX_VAR(opline->result.var);
21111 			ZVAL_NEW_REF(array_ref, array_ptr);
21112 			array_ptr = Z_REFVAL_P(array_ref);
21113 		}
21114 		if (IS_VAR == IS_CONST) {
21115 			ZVAL_ARR(array_ptr, zend_array_dup(Z_ARRVAL_P(array_ptr)));
21116 		} else {
21117 			SEPARATE_ARRAY(array_ptr);
21118 		}
21119 		Z_FE_ITER_P(EX_VAR(opline->result.var)) = zend_hash_iterator_add(Z_ARRVAL_P(array_ptr), 0);
21120 
21121 		if (IS_VAR == IS_VAR) {
21122 			if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
21123 		}
21124 		ZEND_VM_NEXT_OPCODE();
21125 	} else if (IS_VAR != IS_CONST && EXPECTED(Z_TYPE_P(array_ptr) == IS_OBJECT)) {
21126 		if (!Z_OBJCE_P(array_ptr)->get_iterator) {
21127 			if (IS_VAR == IS_VAR || IS_VAR == IS_CV) {
21128 				if (array_ptr == array_ref) {
21129 					ZVAL_NEW_REF(array_ref, array_ref);
21130 					array_ptr = Z_REFVAL_P(array_ref);
21131 				}
21132 				Z_ADDREF_P(array_ref);
21133 				ZVAL_COPY_VALUE(EX_VAR(opline->result.var), array_ref);
21134 			} else {
21135 				array_ptr = EX_VAR(opline->result.var);
21136 				ZVAL_COPY_VALUE(array_ptr, array_ref);
21137 			}
21138 			if (Z_OBJ_P(array_ptr)->properties
21139 			 && UNEXPECTED(GC_REFCOUNT(Z_OBJ_P(array_ptr)->properties) > 1)) {
21140 				if (EXPECTED(!(GC_FLAGS(Z_OBJ_P(array_ptr)->properties) & IS_ARRAY_IMMUTABLE))) {
21141 					GC_DELREF(Z_OBJ_P(array_ptr)->properties);
21142 				}
21143 				Z_OBJ_P(array_ptr)->properties = zend_array_dup(Z_OBJ_P(array_ptr)->properties);
21144 			}
21145 			Z_FE_ITER_P(EX_VAR(opline->result.var)) = zend_hash_iterator_add(Z_OBJPROP_P(array_ptr), 0);
21146 
21147 			if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
21148 			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
21149 		} else {
21150 			zend_bool is_empty = zend_fe_reset_iterator(array_ptr, 1 OPLINE_CC EXECUTE_DATA_CC);
21151 
21152 			if (IS_VAR == IS_VAR) {
21153 				if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
21154 			} else {
21155 				zval_ptr_dtor_nogc(free_op1);
21156 			}
21157 			if (UNEXPECTED(EG(exception))) {
21158 				HANDLE_EXCEPTION();
21159 			} else if (is_empty) {
21160 				ZEND_VM_JMP_EX(OP_JMP_ADDR(opline, opline->op2), 0);
21161 			} else {
21162 				ZEND_VM_NEXT_OPCODE();
21163 			}
21164 		}
21165 	} else {
21166 		zend_error(E_WARNING, "Invalid argument supplied for foreach()");
21167 		ZVAL_UNDEF(EX_VAR(opline->result.var));
21168 		Z_FE_ITER_P(EX_VAR(opline->result.var)) = (uint32_t)-1;
21169 		if (IS_VAR == IS_VAR) {
21170 			if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
21171 		} else {
21172 			zval_ptr_dtor_nogc(free_op1);
21173 		}
21174 		ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
21175 	}
21176 }
21177 
21178 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FE_FETCH_R_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
21179 {
21180 	USE_OPLINE
21181 	zval *array;
21182 	zval *value;
21183 	uint32_t value_type;
21184 	HashTable *fe_ht;
21185 	HashPosition pos;
21186 	Bucket *p;
21187 
21188 	array = EX_VAR(opline->op1.var);
21189 	SAVE_OPLINE();
21190 	if (EXPECTED(Z_TYPE_P(array) == IS_ARRAY)) {
21191 		fe_ht = Z_ARRVAL_P(array);
21192 		pos = Z_FE_POS_P(array);
21193 		p = fe_ht->arData + pos;
21194 		while (1) {
21195 			if (UNEXPECTED(pos >= fe_ht->nNumUsed)) {
21196 				/* reached end of iteration */
21197 fe_fetch_r_exit:
21198 				ZEND_VM_SET_RELATIVE_OPCODE(opline, opline->extended_value);
21199 				ZEND_VM_CONTINUE();
21200 			}
21201 			value = &p->val;
21202 			value_type = Z_TYPE_INFO_P(value);
21203 			if (EXPECTED(value_type != IS_UNDEF)) {
21204 				if (UNEXPECTED(value_type == IS_INDIRECT)) {
21205 					value = Z_INDIRECT_P(value);
21206 					value_type = Z_TYPE_INFO_P(value);
21207 					if (EXPECTED(value_type != IS_UNDEF)) {
21208 						break;
21209 					}
21210 				} else {
21211 					break;
21212 				}
21213 			}
21214 			pos++;
21215 			p++;
21216 		}
21217 		Z_FE_POS_P(array) = pos + 1;
21218 		if (RETURN_VALUE_USED(opline)) {
21219 			if (!p->key) {
21220 				ZVAL_LONG(EX_VAR(opline->result.var), p->h);
21221 			} else {
21222 				ZVAL_STR_COPY(EX_VAR(opline->result.var), p->key);
21223 			}
21224 		}
21225 	} else {
21226 		zend_object_iterator *iter;
21227 
21228 		ZEND_ASSERT(Z_TYPE_P(array) == IS_OBJECT);
21229 		if ((iter = zend_iterator_unwrap(array)) == NULL) {
21230 			/* plain object */
21231 
21232 			fe_ht = Z_OBJPROP_P(array);
21233 			pos = zend_hash_iterator_pos(Z_FE_ITER_P(array), fe_ht);
21234 			p = fe_ht->arData + pos;
21235 			while (1) {
21236 				if (UNEXPECTED(pos >= fe_ht->nNumUsed)) {
21237 					/* reached end of iteration */
21238 					goto fe_fetch_r_exit;
21239 				}
21240 
21241 				value = &p->val;
21242 				value_type = Z_TYPE_INFO_P(value);
21243 				if (EXPECTED(value_type != IS_UNDEF)) {
21244 					if (UNEXPECTED(value_type == IS_INDIRECT)) {
21245 						value = Z_INDIRECT_P(value);
21246 						value_type = Z_TYPE_INFO_P(value);
21247 						if (EXPECTED(value_type != IS_UNDEF)
21248 						 && EXPECTED(zend_check_property_access(Z_OBJ_P(array), p->key) == SUCCESS)) {
21249 							break;
21250 						}
21251 					} else {
21252 						break;
21253 					}
21254 				}
21255 				pos++;
21256 				p++;
21257 			}
21258 			if (RETURN_VALUE_USED(opline)) {
21259 				if (UNEXPECTED(!p->key)) {
21260 					ZVAL_LONG(EX_VAR(opline->result.var), p->h);
21261 				} else if (ZSTR_VAL(p->key)[0]) {
21262 					ZVAL_STR_COPY(EX_VAR(opline->result.var), p->key);
21263 				} else {
21264 					const char *class_name, *prop_name;
21265 					size_t prop_name_len;
21266 					zend_unmangle_property_name_ex(
21267 						p->key, &class_name, &prop_name, &prop_name_len);
21268 					ZVAL_STRINGL(EX_VAR(opline->result.var), prop_name, prop_name_len);
21269 				}
21270 			}
21271 			EG(ht_iterators)[Z_FE_ITER_P(array)].pos = pos + 1;
21272 		} else {
21273 			if (EXPECTED(++iter->index > 0)) {
21274 				/* This could cause an endless loop if index becomes zero again.
21275 				 * In case that ever happens we need an additional flag. */
21276 				iter->funcs->move_forward(iter);
21277 				if (UNEXPECTED(EG(exception) != NULL)) {
21278 					UNDEF_RESULT();
21279 					HANDLE_EXCEPTION();
21280 				}
21281 				if (UNEXPECTED(iter->funcs->valid(iter) == FAILURE)) {
21282 					/* reached end of iteration */
21283 					if (UNEXPECTED(EG(exception) != NULL)) {
21284 						UNDEF_RESULT();
21285 						HANDLE_EXCEPTION();
21286 					}
21287 					goto fe_fetch_r_exit;
21288 				}
21289 			}
21290 			value = iter->funcs->get_current_data(iter);
21291 			if (UNEXPECTED(EG(exception) != NULL)) {
21292 				UNDEF_RESULT();
21293 				HANDLE_EXCEPTION();
21294 			}
21295 			if (!value) {
21296 				/* failure in get_current_data */
21297 				goto fe_fetch_r_exit;
21298 			}
21299 			if (RETURN_VALUE_USED(opline)) {
21300 				if (iter->funcs->get_current_key) {
21301 					iter->funcs->get_current_key(iter, EX_VAR(opline->result.var));
21302 					if (UNEXPECTED(EG(exception) != NULL)) {
21303 						UNDEF_RESULT();
21304 						HANDLE_EXCEPTION();
21305 					}
21306 				} else {
21307 					ZVAL_LONG(EX_VAR(opline->result.var), iter->index);
21308 				}
21309 			}
21310 			value_type = Z_TYPE_INFO_P(value);
21311 		}
21312 	}
21313 
21314 	if (EXPECTED(opline->op2_type == IS_CV)) {
21315 		zval *variable_ptr = EX_VAR(opline->op2.var);
21316 		zend_assign_to_variable(variable_ptr, value, IS_CV);
21317 	} else {
21318 		zval *res = EX_VAR(opline->op2.var);
21319 		zend_refcounted *gc = Z_COUNTED_P(value);
21320 
21321 		ZVAL_COPY_VALUE_EX(res, value, gc, value_type);
21322 		if (Z_TYPE_INFO_REFCOUNTED(value_type)) {
21323 			GC_ADDREF(gc);
21324 		}
21325 	}
21326 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
21327 }
21328 
21329 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FE_FETCH_RW_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
21330 {
21331 	USE_OPLINE
21332 	zval *array;
21333 	zval *value;
21334 	uint32_t value_type;
21335 	HashTable *fe_ht;
21336 	HashPosition pos;
21337 	Bucket *p;
21338 
21339 	array = EX_VAR(opline->op1.var);
21340 	SAVE_OPLINE();
21341 
21342 	ZVAL_DEREF(array);
21343 	if (EXPECTED(Z_TYPE_P(array) == IS_ARRAY)) {
21344 		pos = zend_hash_iterator_pos_ex(Z_FE_ITER_P(EX_VAR(opline->op1.var)), array);
21345 		fe_ht = Z_ARRVAL_P(array);
21346 		p = fe_ht->arData + pos;
21347 		while (1) {
21348 			if (UNEXPECTED(pos >= fe_ht->nNumUsed)) {
21349 				/* reached end of iteration */
21350 				goto fe_fetch_w_exit;
21351 			}
21352 			value = &p->val;
21353 			value_type = Z_TYPE_INFO_P(value);
21354 			if (EXPECTED(value_type != IS_UNDEF)) {
21355 				if (UNEXPECTED(value_type == IS_INDIRECT)) {
21356 					value = Z_INDIRECT_P(value);
21357 					value_type = Z_TYPE_INFO_P(value);
21358 					if (EXPECTED(value_type != IS_UNDEF)) {
21359 						break;
21360 					}
21361 				} else {
21362 					break;
21363 				}
21364 			}
21365 			pos++;
21366 			p++;
21367 		}
21368 		if (RETURN_VALUE_USED(opline)) {
21369 			if (!p->key) {
21370 				ZVAL_LONG(EX_VAR(opline->result.var), p->h);
21371 			} else {
21372 				ZVAL_STR_COPY(EX_VAR(opline->result.var), p->key);
21373 			}
21374 		}
21375 		EG(ht_iterators)[Z_FE_ITER_P(EX_VAR(opline->op1.var))].pos = pos + 1;
21376 	} else if (EXPECTED(Z_TYPE_P(array) == IS_OBJECT)) {
21377 		zend_object_iterator *iter;
21378 
21379 		if ((iter = zend_iterator_unwrap(array)) == NULL) {
21380 			/* plain object */
21381 
21382 			fe_ht = Z_OBJPROP_P(array);
21383 			pos = zend_hash_iterator_pos(Z_FE_ITER_P(EX_VAR(opline->op1.var)), fe_ht);
21384 			p = fe_ht->arData + pos;
21385 			while (1) {
21386 				if (UNEXPECTED(pos >= fe_ht->nNumUsed)) {
21387 					/* reached end of iteration */
21388 					goto fe_fetch_w_exit;
21389 				}
21390 
21391 				value = &p->val;
21392 				value_type = Z_TYPE_INFO_P(value);
21393 				if (EXPECTED(value_type != IS_UNDEF)) {
21394 					if (UNEXPECTED(value_type == IS_INDIRECT)) {
21395 						value = Z_INDIRECT_P(value);
21396 						value_type = Z_TYPE_INFO_P(value);
21397 						if (EXPECTED(value_type != IS_UNDEF)
21398 						 && EXPECTED(zend_check_property_access(Z_OBJ_P(array), p->key) == SUCCESS)) {
21399 							break;
21400 						}
21401 					} else {
21402 						break;
21403 					}
21404 				}
21405 				pos++;
21406 				p++;
21407 			}
21408 			if (RETURN_VALUE_USED(opline)) {
21409 				if (UNEXPECTED(!p->key)) {
21410 					ZVAL_LONG(EX_VAR(opline->result.var), p->h);
21411 				} else if (ZSTR_VAL(p->key)[0]) {
21412 					ZVAL_STR_COPY(EX_VAR(opline->result.var), p->key);
21413 				} else {
21414 					const char *class_name, *prop_name;
21415 					size_t prop_name_len;
21416 					zend_unmangle_property_name_ex(
21417 						p->key, &class_name, &prop_name, &prop_name_len);
21418 					ZVAL_STRINGL(EX_VAR(opline->result.var), prop_name, prop_name_len);
21419 				}
21420 			}
21421 			EG(ht_iterators)[Z_FE_ITER_P(EX_VAR(opline->op1.var))].pos = pos + 1;
21422 		} else {
21423 			if (++iter->index > 0) {
21424 				/* This could cause an endless loop if index becomes zero again.
21425 				 * In case that ever happens we need an additional flag. */
21426 				iter->funcs->move_forward(iter);
21427 				if (UNEXPECTED(EG(exception) != NULL)) {
21428 					UNDEF_RESULT();
21429 					HANDLE_EXCEPTION();
21430 				}
21431 				if (UNEXPECTED(iter->funcs->valid(iter) == FAILURE)) {
21432 					/* reached end of iteration */
21433 					if (UNEXPECTED(EG(exception) != NULL)) {
21434 						UNDEF_RESULT();
21435 						HANDLE_EXCEPTION();
21436 					}
21437 					goto fe_fetch_w_exit;
21438 				}
21439 			}
21440 			value = iter->funcs->get_current_data(iter);
21441 			if (UNEXPECTED(EG(exception) != NULL)) {
21442 				UNDEF_RESULT();
21443 				HANDLE_EXCEPTION();
21444 			}
21445 			if (!value) {
21446 				/* failure in get_current_data */
21447 				goto fe_fetch_w_exit;
21448 			}
21449 			if (RETURN_VALUE_USED(opline)) {
21450 				if (iter->funcs->get_current_key) {
21451 					iter->funcs->get_current_key(iter, EX_VAR(opline->result.var));
21452 					if (UNEXPECTED(EG(exception) != NULL)) {
21453 						UNDEF_RESULT();
21454 						HANDLE_EXCEPTION();
21455 					}
21456 				} else {
21457 					ZVAL_LONG(EX_VAR(opline->result.var), iter->index);
21458 				}
21459 			}
21460 			value_type = Z_TYPE_INFO_P(value);
21461 		}
21462 	} else {
21463 		zend_error(E_WARNING, "Invalid argument supplied for foreach()");
21464 		if (UNEXPECTED(EG(exception))) {
21465 			UNDEF_RESULT();
21466 			HANDLE_EXCEPTION();
21467 		}
21468 fe_fetch_w_exit:
21469 		ZEND_VM_SET_RELATIVE_OPCODE(opline, opline->extended_value);
21470 		ZEND_VM_CONTINUE();
21471 	}
21472 
21473 	if (EXPECTED((value_type & Z_TYPE_MASK) != IS_REFERENCE)) {
21474 		zend_refcounted *gc = Z_COUNTED_P(value);
21475 		zval *ref;
21476 		ZVAL_NEW_EMPTY_REF(value);
21477 		ref = Z_REFVAL_P(value);
21478 		ZVAL_COPY_VALUE_EX(ref, value, gc, value_type);
21479 	}
21480 	if (EXPECTED(opline->op2_type == IS_CV)) {
21481 		zval *variable_ptr = EX_VAR(opline->op2.var);
21482 		if (EXPECTED(variable_ptr != value)) {
21483 			zend_reference *ref;
21484 
21485 			ref = Z_REF_P(value);
21486 			GC_ADDREF(ref);
21487 			zval_ptr_dtor(variable_ptr);
21488 			ZVAL_REF(variable_ptr, ref);
21489 		}
21490 	} else {
21491 		Z_ADDREF_P(value);
21492 		ZVAL_REF(EX_VAR(opline->op2.var), Z_REF_P(value));
21493 	}
21494 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
21495 }
21496 
21497 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_JMP_SET_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
21498 {
21499 	USE_OPLINE
21500 	zend_free_op free_op1;
21501 	zval *value;
21502 	zval *ref = NULL;
21503 	int ret;
21504 
21505 	SAVE_OPLINE();
21506 	value = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
21507 
21508 	if ((IS_VAR == IS_VAR || IS_VAR == IS_CV) && Z_ISREF_P(value)) {
21509 		if (IS_VAR == IS_VAR) {
21510 			ref = value;
21511 		}
21512 		value = Z_REFVAL_P(value);
21513 	}
21514 
21515 	ret = i_zend_is_true(value);
21516 
21517 	if (UNEXPECTED(EG(exception))) {
21518 		zval_ptr_dtor_nogc(free_op1);
21519 		ZVAL_UNDEF(EX_VAR(opline->result.var));
21520 		HANDLE_EXCEPTION();
21521 	}
21522 
21523 	if (ret) {
21524 		zval *result = EX_VAR(opline->result.var);
21525 
21526 		ZVAL_COPY_VALUE(result, value);
21527 		if (IS_VAR == IS_CONST) {
21528 			if (UNEXPECTED(Z_OPT_REFCOUNTED_P(result))) Z_ADDREF_P(result);
21529 		} else if (IS_VAR == IS_CV) {
21530 			if (Z_OPT_REFCOUNTED_P(result)) Z_ADDREF_P(result);
21531 		} else if (IS_VAR == IS_VAR && ref) {
21532 			zend_reference *r = Z_REF_P(ref);
21533 
21534 			if (UNEXPECTED(GC_DELREF(r) == 0)) {
21535 				efree_size(r, sizeof(zend_reference));
21536 			} else if (Z_OPT_REFCOUNTED_P(result)) {
21537 				Z_ADDREF_P(result);
21538 			}
21539 		}
21540 		ZEND_VM_JMP_EX(OP_JMP_ADDR(opline, opline->op2), 0);
21541 	}
21542 
21543 	zval_ptr_dtor_nogc(free_op1);
21544 	ZEND_VM_NEXT_OPCODE();
21545 }
21546 
21547 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_QM_ASSIGN_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
21548 {
21549 	USE_OPLINE
21550 	zend_free_op free_op1;
21551 	zval *value;
21552 	zval *result = EX_VAR(opline->result.var);
21553 
21554 	value = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
21555 	if (IS_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
21556 		SAVE_OPLINE();
21557 		GET_OP1_UNDEF_CV(value, BP_VAR_R);
21558 		ZVAL_NULL(result);
21559 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
21560 	}
21561 
21562 	if (IS_VAR == IS_CV) {
21563 		ZVAL_COPY_DEREF(result, value);
21564 	} else if (IS_VAR == IS_VAR) {
21565 		if (UNEXPECTED(Z_ISREF_P(value))) {
21566 			ZVAL_COPY_VALUE(result, Z_REFVAL_P(value));
21567 			if (UNEXPECTED(Z_DELREF_P(value) == 0)) {
21568 				efree_size(Z_REF_P(value), sizeof(zend_reference));
21569 			} else if (Z_OPT_REFCOUNTED_P(result)) {
21570 				Z_ADDREF_P(result);
21571 			}
21572 		} else {
21573 			ZVAL_COPY_VALUE(result, value);
21574 		}
21575 	} else {
21576 		ZVAL_COPY_VALUE(result, value);
21577 		if (IS_VAR == IS_CONST) {
21578 			if (UNEXPECTED(Z_OPT_REFCOUNTED_P(result))) {
21579 				Z_ADDREF_P(result);
21580 			}
21581 		}
21582 	}
21583 	ZEND_VM_NEXT_OPCODE();
21584 }
21585 
21586 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_YIELD_FROM_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
21587 {
21588 	USE_OPLINE
21589 
21590 	zend_generator *generator = zend_get_running_generator(EXECUTE_DATA_C);
21591 
21592 	zval *val;
21593 	zend_free_op free_op1;
21594 
21595 	SAVE_OPLINE();
21596 	val = _get_zval_ptr_var_deref(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
21597 
21598 	if (UNEXPECTED(generator->flags & ZEND_GENERATOR_FORCED_CLOSE)) {
21599 		zend_throw_error(NULL, "Cannot use \"yield from\" in a force-closed generator");
21600 		zval_ptr_dtor_nogc(free_op1);
21601 		UNDEF_RESULT();
21602 		HANDLE_EXCEPTION();
21603 	}
21604 
21605 	if (Z_TYPE_P(val) == IS_ARRAY) {
21606 		ZVAL_COPY_VALUE(&generator->values, val);
21607 		if (IS_VAR != IS_TMP_VAR && Z_OPT_REFCOUNTED_P(val)) {
21608 			Z_ADDREF_P(val);
21609 		}
21610 		Z_FE_POS(generator->values) = 0;
21611 
21612 		zval_ptr_dtor_nogc(free_op1);
21613 	} else if (IS_VAR != IS_CONST && Z_TYPE_P(val) == IS_OBJECT && Z_OBJCE_P(val)->get_iterator) {
21614 		zend_class_entry *ce = Z_OBJCE_P(val);
21615 		if (ce == zend_ce_generator) {
21616 			zend_generator *new_gen = (zend_generator *) Z_OBJ_P(val);
21617 
21618 			if (IS_VAR != IS_TMP_VAR) {
21619 				Z_ADDREF_P(val);
21620 			}
21621 			zval_ptr_dtor_nogc(free_op1);
21622 
21623 			if (Z_ISUNDEF(new_gen->retval)) {
21624 				if (UNEXPECTED(zend_generator_get_current(new_gen) == generator)) {
21625 					zend_throw_error(NULL, "Impossible to yield from the Generator being currently run");
21626 					zval_ptr_dtor(val);
21627 					UNDEF_RESULT();
21628 					HANDLE_EXCEPTION();
21629 				} else {
21630 					zend_generator_yield_from(generator, new_gen);
21631 				}
21632 			} else if (UNEXPECTED(new_gen->execute_data == NULL)) {
21633 				zend_throw_error(NULL, "Generator passed to yield from was aborted without proper return and is unable to continue");
21634 				zval_ptr_dtor(val);
21635 				UNDEF_RESULT();
21636 				HANDLE_EXCEPTION();
21637 			} else {
21638 				if (RETURN_VALUE_USED(opline)) {
21639 					ZVAL_COPY(EX_VAR(opline->result.var), &new_gen->retval);
21640 				}
21641 				ZEND_VM_NEXT_OPCODE();
21642 			}
21643 		} else {
21644 			zend_object_iterator *iter = ce->get_iterator(ce, val, 0);
21645 			zval_ptr_dtor_nogc(free_op1);
21646 
21647 			if (UNEXPECTED(!iter) || UNEXPECTED(EG(exception))) {
21648 				if (!EG(exception)) {
21649 					zend_throw_error(NULL, "Object of type %s did not create an Iterator", ZSTR_VAL(ce->name));
21650 				}
21651 				UNDEF_RESULT();
21652 				HANDLE_EXCEPTION();
21653 			}
21654 
21655 			iter->index = 0;
21656 			if (iter->funcs->rewind) {
21657 				iter->funcs->rewind(iter);
21658 				if (UNEXPECTED(EG(exception) != NULL)) {
21659 					OBJ_RELEASE(&iter->std);
21660 					UNDEF_RESULT();
21661 					HANDLE_EXCEPTION();
21662 				}
21663 			}
21664 
21665 			ZVAL_OBJ(&generator->values, &iter->std);
21666 		}
21667 	} else {
21668 		zend_throw_error(NULL, "Can use \"yield from\" only with arrays and Traversables");
21669 		zval_ptr_dtor_nogc(free_op1);
21670 		UNDEF_RESULT();
21671 		HANDLE_EXCEPTION();
21672 	}
21673 
21674 	/* This is the default return value
21675 	 * when the expression is a Generator, it will be overwritten in zend_generator_resume() */
21676 	if (RETURN_VALUE_USED(opline)) {
21677 		ZVAL_NULL(EX_VAR(opline->result.var));
21678 	}
21679 
21680 	/* This generator has no send target (though the generator we delegate to might have one) */
21681 	generator->send_target = NULL;
21682 
21683 	/* We increment to the next op, so we are at the correct position when the
21684 	 * generator is resumed. */
21685 	ZEND_VM_INC_OPCODE();
21686 
21687 	/* The GOTO VM uses a local opline variable. We need to set the opline
21688 	 * variable in execute_data so we don't resume at an old position. */
21689 	SAVE_OPLINE();
21690 
21691 	ZEND_VM_RETURN();
21692 }
21693 
21694 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SEND_VAR_SIMPLE_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
21695 {
21696 	USE_OPLINE
21697 	zval *varptr, *arg;
21698 	zend_free_op free_op1;
21699 
21700 	varptr = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
21701 	arg = ZEND_CALL_VAR(EX(call), opline->result.var);
21702 
21703 	if (IS_VAR == IS_CV) {
21704 		ZVAL_COPY(arg, varptr);
21705 	} else /* if (IS_VAR == IS_VAR) */ {
21706 		ZVAL_COPY_VALUE(arg, varptr);
21707 	}
21708 
21709 	ZEND_VM_NEXT_OPCODE();
21710 }
21711 
21712 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SEND_VAR_EX_SIMPLE_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
21713 {
21714 	USE_OPLINE
21715 	zval *varptr, *arg;
21716 	zend_free_op free_op1;
21717 	uint32_t arg_num = opline->op2.num;
21718 
21719 	if (QUICK_ARG_SHOULD_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
21720 		ZEND_VM_TAIL_CALL(ZEND_SEND_REF_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
21721 	}
21722 
21723 	varptr = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
21724 	arg = ZEND_CALL_VAR(EX(call), opline->result.var);
21725 
21726 	if (IS_VAR == IS_CV) {
21727 		ZVAL_COPY(arg, varptr);
21728 	} else /* if (IS_VAR == IS_VAR) */ {
21729 		ZVAL_COPY_VALUE(arg, varptr);
21730 	}
21731 
21732 	ZEND_VM_NEXT_OPCODE();
21733 }
21734 
21735 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_IDENTICAL_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
21736 {
21737 	USE_OPLINE
21738 	zend_free_op free_op1;
21739 	zval *op1, *op2;
21740 	int result;
21741 
21742 	SAVE_OPLINE();
21743 	op1 = _get_zval_ptr_var_deref(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
21744 	op2 = RT_CONSTANT(opline, opline->op2);
21745 	result = fast_is_identical_function(op1, op2);
21746 	zval_ptr_dtor_nogc(free_op1);
21747 
21748 	ZEND_VM_SMART_BRANCH(result, 1);
21749 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
21750 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
21751 }
21752 
21753 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_NOT_IDENTICAL_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
21754 {
21755 	USE_OPLINE
21756 	zend_free_op free_op1;
21757 	zval *op1, *op2;
21758 	int result;
21759 
21760 	SAVE_OPLINE();
21761 	op1 = _get_zval_ptr_var_deref(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
21762 	op2 = RT_CONSTANT(opline, opline->op2);
21763 	result = fast_is_not_identical_function(op1, op2);
21764 	zval_ptr_dtor_nogc(free_op1);
21765 
21766 	ZEND_VM_SMART_BRANCH(result, 1);
21767 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
21768 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
21769 }
21770 
21771 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_obj_helper_SPEC_VAR_CONST(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
21772 {
21773 	USE_OPLINE
21774 	zend_free_op free_op1, free_op_data1;
21775 	zval *object;
21776 	zval *property;
21777 	zval *value;
21778 	zval *zptr;
21779 
21780 	SAVE_OPLINE();
21781 	object = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
21782 
21783 	if (IS_VAR == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
21784 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
21785 	}
21786 
21787 	property = RT_CONSTANT(opline, opline->op2);
21788 
21789 	do {
21790 		value = get_op_data_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data1);
21791 
21792 		if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
21793 			if (Z_ISREF_P(object)) {
21794 				object = Z_REFVAL_P(object);
21795 				if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
21796 					goto assign_op_object;
21797 				}
21798 			}
21799 			if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
21800 				break;
21801 			}
21802 		}
21803 
21804 		/* here we are sure we are dealing with an object */
21805 assign_op_object:
21806 		if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
21807 			&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CONST == IS_CONST) ? CACHE_ADDR((opline+1)->extended_value) : NULL))) != NULL)) {
21808 			if (UNEXPECTED(Z_ISERROR_P(zptr))) {
21809 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
21810 					ZVAL_NULL(EX_VAR(opline->result.var));
21811 				}
21812 			} else {
21813 				ZVAL_DEREF(zptr);
21814 
21815 				binary_op(zptr, zptr, value);
21816 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
21817 					ZVAL_COPY(EX_VAR(opline->result.var), zptr);
21818 				}
21819 			}
21820 		} else {
21821 			zend_assign_op_overloaded_property(object, property, ((IS_CONST == IS_CONST) ? CACHE_ADDR((opline+1)->extended_value) : NULL), value, binary_op OPLINE_CC EXECUTE_DATA_CC);
21822 		}
21823 	} while (0);
21824 
21825 	FREE_OP(free_op_data1);
21826 
21827 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
21828 	/* assign_obj has two opcodes! */
21829 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
21830 }
21831 
21832 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_dim_helper_SPEC_VAR_CONST(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
21833 {
21834 	USE_OPLINE
21835 	zend_free_op free_op1, free_op_data1;
21836 	zval *var_ptr;
21837 	zval *value, *container, *dim;
21838 
21839 	SAVE_OPLINE();
21840 	container = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
21841 
21842 	if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
21843 assign_dim_op_array:
21844 		SEPARATE_ARRAY(container);
21845 assign_dim_op_new_array:
21846 		dim = RT_CONSTANT(opline, opline->op2);
21847 		if (IS_CONST == IS_UNUSED) {
21848 			var_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(container), &EG(uninitialized_zval));
21849 			if (UNEXPECTED(!var_ptr)) {
21850 				zend_cannot_add_element();
21851 				goto assign_dim_op_ret_null;
21852 			}
21853 		} else {
21854 			if (IS_CONST == IS_CONST) {
21855 				var_ptr = zend_fetch_dimension_address_inner_RW_CONST(Z_ARRVAL_P(container), dim EXECUTE_DATA_CC);
21856 			} else {
21857 				var_ptr = zend_fetch_dimension_address_inner_RW(Z_ARRVAL_P(container), dim EXECUTE_DATA_CC);
21858 			}
21859 			if (UNEXPECTED(!var_ptr)) {
21860 				goto assign_dim_op_ret_null;
21861 			}
21862 			ZVAL_DEREF(var_ptr);
21863 		}
21864 
21865 		value = get_op_data_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data1);
21866 
21867 		binary_op(var_ptr, var_ptr, value);
21868 
21869 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
21870 			ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
21871 		}
21872 	} else {
21873 		if (EXPECTED(Z_ISREF_P(container))) {
21874 			container = Z_REFVAL_P(container);
21875 			if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
21876 				goto assign_dim_op_array;
21877 			}
21878 		} else if (IS_VAR == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(container) == IS_UNDEF)) {
21879 			container = GET_OP1_UNDEF_CV(container, BP_VAR_RW);
21880 assign_dim_op_convert_to_array:
21881 			ZVAL_ARR(container, zend_new_array(8));
21882 			goto assign_dim_op_new_array;
21883 		}
21884 
21885 		dim = RT_CONSTANT(opline, opline->op2);
21886 
21887 		if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
21888 			value = get_op_data_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data1);
21889 			if (IS_CONST == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
21890 				dim++;
21891 			}
21892 			zend_binary_assign_op_obj_dim(container, dim, value, UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL, binary_op EXECUTE_DATA_CC);
21893 		} else {
21894 			if (UNEXPECTED(Z_TYPE_P(container) == IS_STRING)) {
21895 				if (IS_CONST == IS_UNUSED) {
21896 					zend_use_new_element_for_string();
21897 				} else {
21898 					zend_check_string_offset(dim, BP_VAR_RW EXECUTE_DATA_CC);
21899 					zend_wrong_string_offset(EXECUTE_DATA_C);
21900 				}
21901 				UNDEF_RESULT();
21902 			} else if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) {
21903 				goto assign_dim_op_convert_to_array;
21904 			} else {
21905 				if (UNEXPECTED(IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(container)))) {
21906 					zend_use_scalar_as_array();
21907 				}
21908 assign_dim_op_ret_null:
21909 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
21910 					ZVAL_NULL(EX_VAR(opline->result.var));
21911 				}
21912 			}
21913 			value = get_op_data_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data1);
21914 		}
21915 	}
21916 
21917 	FREE_OP(free_op_data1);
21918 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
21919 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
21920 }
21921 
21922 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_simple_helper_SPEC_VAR_CONST(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
21923 {
21924 	USE_OPLINE
21925 	zend_free_op free_op1;
21926 	zval *var_ptr;
21927 	zval *value;
21928 
21929 	SAVE_OPLINE();
21930 	value = RT_CONSTANT(opline, opline->op2);
21931 	var_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
21932 
21933 	if (IS_VAR == IS_VAR && UNEXPECTED(Z_ISERROR_P(var_ptr))) {
21934 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
21935 			ZVAL_NULL(EX_VAR(opline->result.var));
21936 		}
21937 	} else {
21938 		ZVAL_DEREF(var_ptr);
21939 
21940 		binary_op(var_ptr, var_ptr, value);
21941 
21942 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
21943 			ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
21944 		}
21945 	}
21946 
21947 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
21948 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
21949 }
21950 
21951 static zend_always_inline ZEND_OPCODE_HANDLER_RET zend_binary_assign_op_helper_SPEC_VAR_CONST(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
21952 {
21953 #if 1 && IS_CONST == IS_UNUSED
21954 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_VAR_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
21955 #else
21956 # if 0 || IS_VAR != IS_UNUSED
21957 #  if 0
21958 	/* opline->extended_value checks are specialized, don't need opline */
21959 	USE_OPLINE
21960 #  endif
21961 
21962 	if (EXPECTED(1)) {
21963 		ZEND_VM_TAIL_CALL(zend_binary_assign_op_simple_helper_SPEC_VAR_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
21964 	}
21965 	if (EXPECTED(0)) {
21966 		ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_VAR_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
21967 	}
21968 # endif
21969 
21970 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_obj_helper_SPEC_VAR_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
21971 #endif
21972 }
21973 
21974 static zend_always_inline ZEND_OPCODE_HANDLER_RET zend_binary_assign_op_helper_SPEC_VAR_CONST_DIM(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
21975 {
21976 #if 1 && IS_CONST == IS_UNUSED
21977 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_VAR_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
21978 #else
21979 # if 0 || IS_VAR != IS_UNUSED
21980 #  if 0
21981 	/* opline->extended_value checks are specialized, don't need opline */
21982 	USE_OPLINE
21983 #  endif
21984 
21985 	if (EXPECTED(0)) {
21986 		ZEND_VM_TAIL_CALL(zend_binary_assign_op_simple_helper_SPEC_VAR_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
21987 	}
21988 	if (EXPECTED(1)) {
21989 		ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_VAR_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
21990 	}
21991 # endif
21992 
21993 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_obj_helper_SPEC_VAR_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
21994 #endif
21995 }
21996 
21997 static zend_always_inline ZEND_OPCODE_HANDLER_RET zend_binary_assign_op_helper_SPEC_VAR_CONST_OBJ(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
21998 {
21999 #if 1 && IS_CONST == IS_UNUSED
22000 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_VAR_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22001 #else
22002 # if 0 || IS_VAR != IS_UNUSED
22003 #  if 0
22004 	/* opline->extended_value checks are specialized, don't need opline */
22005 	USE_OPLINE
22006 #  endif
22007 
22008 	if (EXPECTED(0)) {
22009 		ZEND_VM_TAIL_CALL(zend_binary_assign_op_simple_helper_SPEC_VAR_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22010 	}
22011 	if (EXPECTED(0)) {
22012 		ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_VAR_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22013 	}
22014 # endif
22015 
22016 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_obj_helper_SPEC_VAR_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22017 #endif
22018 }
22019 
22020 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_ADD_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22021 {
22022 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST(add_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22023 }
22024 
22025 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_ADD_SPEC_VAR_CONST_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22026 {
22027 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST_DIM(add_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22028 }
22029 
22030 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_ADD_SPEC_VAR_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22031 {
22032 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST_OBJ(add_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22033 }
22034 
22035 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SUB_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22036 {
22037 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST(sub_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22038 }
22039 
22040 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SUB_SPEC_VAR_CONST_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22041 {
22042 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST_DIM(sub_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22043 }
22044 
22045 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SUB_SPEC_VAR_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22046 {
22047 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST_OBJ(sub_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22048 }
22049 
22050 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MUL_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22051 {
22052 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST(mul_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22053 }
22054 
22055 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MUL_SPEC_VAR_CONST_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22056 {
22057 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST_DIM(mul_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22058 }
22059 
22060 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MUL_SPEC_VAR_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22061 {
22062 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST_OBJ(mul_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22063 }
22064 
22065 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIV_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22066 {
22067 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST(div_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22068 }
22069 
22070 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIV_SPEC_VAR_CONST_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22071 {
22072 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST_DIM(div_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22073 }
22074 
22075 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIV_SPEC_VAR_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22076 {
22077 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST_OBJ(div_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22078 }
22079 
22080 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MOD_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22081 {
22082 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST(mod_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22083 }
22084 
22085 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MOD_SPEC_VAR_CONST_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22086 {
22087 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST_DIM(mod_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22088 }
22089 
22090 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MOD_SPEC_VAR_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22091 {
22092 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST_OBJ(mod_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22093 }
22094 
22095 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SL_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22096 {
22097 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST(shift_left_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22098 }
22099 
22100 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SL_SPEC_VAR_CONST_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22101 {
22102 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST_DIM(shift_left_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22103 }
22104 
22105 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SL_SPEC_VAR_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22106 {
22107 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST_OBJ(shift_left_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22108 }
22109 
22110 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SR_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22111 {
22112 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST(shift_right_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22113 }
22114 
22115 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SR_SPEC_VAR_CONST_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22116 {
22117 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST_DIM(shift_right_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22118 }
22119 
22120 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SR_SPEC_VAR_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22121 {
22122 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST_OBJ(shift_right_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22123 }
22124 
22125 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_CONCAT_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22126 {
22127 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST(concat_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22128 }
22129 
22130 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_CONCAT_SPEC_VAR_CONST_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22131 {
22132 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST_DIM(concat_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22133 }
22134 
22135 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_CONCAT_SPEC_VAR_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22136 {
22137 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST_OBJ(concat_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22138 }
22139 
22140 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_OR_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22141 {
22142 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST(bitwise_or_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22143 }
22144 
22145 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_OR_SPEC_VAR_CONST_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22146 {
22147 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST_DIM(bitwise_or_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22148 }
22149 
22150 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_OR_SPEC_VAR_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22151 {
22152 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST_OBJ(bitwise_or_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22153 }
22154 
22155 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_AND_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22156 {
22157 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST(bitwise_and_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22158 }
22159 
22160 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_AND_SPEC_VAR_CONST_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22161 {
22162 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST_DIM(bitwise_and_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22163 }
22164 
22165 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_AND_SPEC_VAR_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22166 {
22167 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST_OBJ(bitwise_and_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22168 }
22169 
22170 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_XOR_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22171 {
22172 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST(bitwise_xor_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22173 }
22174 
22175 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_XOR_SPEC_VAR_CONST_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22176 {
22177 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST_DIM(bitwise_xor_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22178 }
22179 
22180 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_XOR_SPEC_VAR_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22181 {
22182 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST_OBJ(bitwise_xor_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22183 }
22184 
22185 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_POW_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22186 {
22187 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST(pow_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22188 }
22189 
22190 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_POW_SPEC_VAR_CONST_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22191 {
22192 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST_DIM(pow_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22193 }
22194 
22195 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_POW_SPEC_VAR_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22196 {
22197 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST_OBJ(pow_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22198 }
22199 
22200 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_pre_incdec_property_helper_SPEC_VAR_CONST(int inc ZEND_OPCODE_HANDLER_ARGS_DC)
22201 {
22202 	USE_OPLINE
22203 	zend_free_op free_op1;
22204 	zval *object;
22205 	zval *property;
22206 	zval *zptr;
22207 
22208 	SAVE_OPLINE();
22209 	object = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
22210 
22211 	if (IS_VAR == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
22212 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
22213 	}
22214 
22215 	property = RT_CONSTANT(opline, opline->op2);
22216 
22217 	do {
22218 		if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
22219 			if (Z_ISREF_P(object)) {
22220 				object = Z_REFVAL_P(object);
22221 				if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
22222 					goto pre_incdec_object;
22223 				}
22224 			}
22225 			if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
22226 				break;
22227 			}
22228 		}
22229 
22230 		/* here we are sure we are dealing with an object */
22231 pre_incdec_object:
22232 		if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
22233 			&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL))) != NULL)) {
22234 			if (UNEXPECTED(Z_ISERROR_P(zptr))) {
22235 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
22236 					ZVAL_NULL(EX_VAR(opline->result.var));
22237 				}
22238 			} else {
22239 				if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
22240 					if (inc) {
22241 						fast_long_increment_function(zptr);
22242 					} else {
22243 						fast_long_decrement_function(zptr);
22244 					}
22245 				} else {
22246 					ZVAL_DEREF(zptr);
22247 
22248 					if (inc) {
22249 						increment_function(zptr);
22250 					} else {
22251 						decrement_function(zptr);
22252 					}
22253 				}
22254 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
22255 					ZVAL_COPY(EX_VAR(opline->result.var), zptr);
22256 				}
22257 			}
22258 		} else {
22259 			zend_pre_incdec_overloaded_property(object, property, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), inc OPLINE_CC EXECUTE_DATA_CC);
22260 		}
22261 	} while (0);
22262 
22263 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
22264 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
22265 }
22266 
22267 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_INC_OBJ_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22268 {
22269 	ZEND_VM_TAIL_CALL(zend_pre_incdec_property_helper_SPEC_VAR_CONST(1 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22270 }
22271 
22272 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_DEC_OBJ_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22273 {
22274 	ZEND_VM_TAIL_CALL(zend_pre_incdec_property_helper_SPEC_VAR_CONST(0 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22275 }
22276 
22277 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_post_incdec_property_helper_SPEC_VAR_CONST(int inc ZEND_OPCODE_HANDLER_ARGS_DC)
22278 {
22279 	USE_OPLINE
22280 	zend_free_op free_op1;
22281 	zval *object;
22282 	zval *property;
22283 	zval *zptr;
22284 
22285 	SAVE_OPLINE();
22286 	object = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
22287 
22288 	if (IS_VAR == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
22289 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
22290 	}
22291 
22292 	property = RT_CONSTANT(opline, opline->op2);
22293 
22294 	do {
22295 		if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
22296 			if (Z_ISREF_P(object)) {
22297 				object = Z_REFVAL_P(object);
22298 				if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
22299 					goto post_incdec_object;
22300 				}
22301 			}
22302 			if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
22303 				break;
22304 			}
22305 		}
22306 
22307 		/* here we are sure we are dealing with an object */
22308 post_incdec_object:
22309 		if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
22310 			&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL))) != NULL)) {
22311 			if (UNEXPECTED(Z_ISERROR_P(zptr))) {
22312 				ZVAL_NULL(EX_VAR(opline->result.var));
22313 			} else {
22314 				if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
22315 					ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(zptr));
22316 					if (inc) {
22317 						fast_long_increment_function(zptr);
22318 					} else {
22319 						fast_long_decrement_function(zptr);
22320 					}
22321 				} else {
22322 					ZVAL_DEREF(zptr);
22323 					ZVAL_COPY(EX_VAR(opline->result.var), zptr);
22324 					if (inc) {
22325 						increment_function(zptr);
22326 					} else {
22327 						decrement_function(zptr);
22328 					}
22329 				}
22330 			}
22331 		} else {
22332 			zend_post_incdec_overloaded_property(object, property, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), inc OPLINE_CC EXECUTE_DATA_CC);
22333 		}
22334 	} while (0);
22335 
22336 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
22337 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
22338 }
22339 
22340 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_POST_INC_OBJ_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22341 {
22342 	ZEND_VM_TAIL_CALL(zend_post_incdec_property_helper_SPEC_VAR_CONST(1 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22343 }
22344 
22345 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_POST_DEC_OBJ_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22346 {
22347 	ZEND_VM_TAIL_CALL(zend_post_incdec_property_helper_SPEC_VAR_CONST(0 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22348 }
22349 
22350 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_W_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22351 {
22352 	USE_OPLINE
22353 	zend_free_op free_op1;
22354 	zval *container;
22355 
22356 	SAVE_OPLINE();
22357 	container = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
22358 	zend_fetch_dimension_address_W(container, RT_CONSTANT(opline, opline->op2), IS_CONST OPLINE_CC EXECUTE_DATA_CC);
22359 
22360 	if (IS_VAR == IS_VAR) {
22361 		zval *result = EX_VAR(opline->result.var);
22362 		FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(free_op1, result);
22363 	}
22364 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
22365 }
22366 
22367 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_RW_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22368 {
22369 	USE_OPLINE
22370 	zend_free_op free_op1;
22371 	zval *container;
22372 
22373 	SAVE_OPLINE();
22374 	container = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
22375 	zend_fetch_dimension_address_RW(container, RT_CONSTANT(opline, opline->op2), IS_CONST OPLINE_CC EXECUTE_DATA_CC);
22376 
22377 	if (IS_VAR == IS_VAR) {
22378 		zval *result = EX_VAR(opline->result.var);
22379 		FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(free_op1, result);
22380 	}
22381 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
22382 }
22383 
22384 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22385 {
22386 	if (UNEXPECTED(ZEND_CALL_INFO(EX(call)) & ZEND_CALL_SEND_ARG_BY_REF)) {
22387         if ((IS_VAR & (IS_CONST|IS_TMP_VAR))) {
22388 			ZEND_VM_TAIL_CALL(zend_use_tmp_in_write_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
22389         }
22390 		ZEND_VM_TAIL_CALL(ZEND_FETCH_DIM_W_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
22391 	} else {
22392 		if (IS_CONST == IS_UNUSED) {
22393 			ZEND_VM_TAIL_CALL(zend_use_undef_in_read_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
22394 		}
22395 		ZEND_VM_TAIL_CALL(ZEND_FETCH_DIM_R_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
22396 	}
22397 }
22398 
22399 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_UNSET_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22400 {
22401 	USE_OPLINE
22402 	zend_free_op free_op1;
22403 	zval *container;
22404 
22405 	SAVE_OPLINE();
22406 	container = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
22407 	zend_fetch_dimension_address_UNSET(container, RT_CONSTANT(opline, opline->op2), IS_CONST OPLINE_CC EXECUTE_DATA_CC);
22408 
22409 	if (IS_VAR == IS_VAR) {
22410 		zval *result = EX_VAR(opline->result.var);
22411 		FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(free_op1, result);
22412 	}
22413 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
22414 }
22415 
22416 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_W_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22417 {
22418 	USE_OPLINE
22419 	zend_free_op free_op1;
22420 	zval *property, *container, *result;
22421 
22422 	SAVE_OPLINE();
22423 
22424 	container = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
22425 	if (IS_VAR == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
22426 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
22427 	}
22428 
22429 	property = RT_CONSTANT(opline, opline->op2);
22430 	result = EX_VAR(opline->result.var);
22431 	zend_fetch_property_address(result, container, IS_VAR, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_W OPLINE_CC);
22432 
22433 	if (IS_VAR == IS_VAR) {
22434 		FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(free_op1, result);
22435 	}
22436 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
22437 }
22438 
22439 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_RW_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22440 {
22441 	USE_OPLINE
22442 	zend_free_op free_op1;
22443 	zval *property, *container, *result;
22444 
22445 	SAVE_OPLINE();
22446 	container = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
22447 
22448 	if (IS_VAR == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
22449 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
22450 	}
22451 	property = RT_CONSTANT(opline, opline->op2);
22452 	result = EX_VAR(opline->result.var);
22453 	zend_fetch_property_address(result, container, IS_VAR, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_RW OPLINE_CC);
22454 
22455 	if (IS_VAR == IS_VAR) {
22456 		FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(free_op1, result);
22457 	}
22458 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
22459 }
22460 
22461 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_FUNC_ARG_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22462 {
22463 	if (UNEXPECTED(ZEND_CALL_INFO(EX(call)) & ZEND_CALL_SEND_ARG_BY_REF)) {
22464 		/* Behave like FETCH_OBJ_W */
22465 		if ((IS_VAR & (IS_CONST|IS_TMP_VAR))) {
22466 			ZEND_VM_TAIL_CALL(zend_use_tmp_in_write_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
22467 		}
22468 
22469 		ZEND_VM_TAIL_CALL(ZEND_FETCH_OBJ_W_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
22470 	} else {
22471 		ZEND_VM_TAIL_CALL(ZEND_FETCH_OBJ_R_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
22472 	}
22473 }
22474 
22475 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_UNSET_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22476 {
22477 	USE_OPLINE
22478 	zend_free_op free_op1;
22479 	zval *container, *property, *result;
22480 
22481 	SAVE_OPLINE();
22482 	container = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
22483 
22484 	if (IS_VAR == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
22485 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
22486 	}
22487 
22488 	property = RT_CONSTANT(opline, opline->op2);
22489 	result = EX_VAR(opline->result.var);
22490 	zend_fetch_property_address(result, container, IS_VAR, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_UNSET OPLINE_CC);
22491 
22492 	if (IS_VAR == IS_VAR) {
22493 		FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(free_op1, result);
22494 	}
22495 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
22496 }
22497 
22498 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_LIST_W_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22499 {
22500 	USE_OPLINE
22501 	zend_free_op free_op1;
22502 	zval *container, *dim;
22503 
22504 	SAVE_OPLINE();
22505 	container = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
22506 	dim = RT_CONSTANT(opline, opline->op2);
22507 
22508 	if (IS_VAR == IS_VAR
22509 		&& Z_TYPE_P(EX_VAR(opline->op1.var)) != IS_INDIRECT
22510 		&& UNEXPECTED(!Z_ISREF_P(container))
22511 	) {
22512 		zend_error(E_NOTICE, "Attempting to set reference to non referenceable value");
22513 		zend_fetch_dimension_address_LIST_r(container, dim, IS_CONST OPLINE_CC EXECUTE_DATA_CC);
22514 	} else {
22515 		zend_fetch_dimension_address_W(container, dim, IS_CONST OPLINE_CC EXECUTE_DATA_CC);
22516 	}
22517 
22518 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
22519 }
22520 
22521 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_VAR_CONST_OP_DATA_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22522 {
22523 	USE_OPLINE
22524 	zend_free_op free_op1;
22525 	zval *object, *property, *value, tmp;
22526 
22527 	SAVE_OPLINE();
22528 	object = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
22529 
22530 	if (IS_VAR == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
22531 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
22532 	}
22533 
22534 	property = RT_CONSTANT(opline, opline->op2);
22535 	value = RT_CONSTANT((opline+1), (opline+1)->op1);
22536 
22537 	if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
22538 		if (Z_ISREF_P(object)) {
22539 			object = Z_REFVAL_P(object);
22540 			if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
22541 				goto assign_object;
22542 			}
22543 		}
22544 		if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
22545 
22546 			goto exit_assign_obj;
22547 		}
22548 	}
22549 
22550 assign_object:
22551 	if (IS_CONST == IS_CONST &&
22552 	    EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(opline->extended_value))) {
22553 		uintptr_t prop_offset = (uintptr_t)CACHED_PTR(opline->extended_value + sizeof(void*));
22554 		zend_object *zobj = Z_OBJ_P(object);
22555 		zval *property_val;
22556 
22557 		if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
22558 			property_val = OBJ_PROP(zobj, prop_offset);
22559 			if (Z_TYPE_P(property_val) != IS_UNDEF) {
22560 fast_assign_obj:
22561 				value = zend_assign_to_variable(property_val, value, IS_CONST);
22562 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
22563 					ZVAL_COPY(EX_VAR(opline->result.var), value);
22564 				}
22565 				goto exit_assign_obj;
22566 			}
22567 		} else {
22568 			if (EXPECTED(zobj->properties != NULL)) {
22569 				if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
22570 					if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
22571 						GC_DELREF(zobj->properties);
22572 					}
22573 					zobj->properties = zend_array_dup(zobj->properties);
22574 				}
22575 				property_val = zend_hash_find_ex(zobj->properties, Z_STR_P(property), 1);
22576 				if (property_val) {
22577 					goto fast_assign_obj;
22578 				}
22579 			}
22580 
22581 			if (!zobj->ce->__set) {
22582 
22583 				if (EXPECTED(zobj->properties == NULL)) {
22584 					rebuild_object_properties(zobj);
22585 				}
22586 				if (IS_CONST == IS_CONST) {
22587 					if (UNEXPECTED(Z_OPT_REFCOUNTED_P(value))) {
22588 						Z_ADDREF_P(value);
22589 					}
22590 				} else if (IS_CONST != IS_TMP_VAR) {
22591 					if (Z_ISREF_P(value)) {
22592 						if (IS_CONST == IS_VAR) {
22593 							zend_reference *ref = Z_REF_P(value);
22594 							if (GC_DELREF(ref) == 0) {
22595 								ZVAL_COPY_VALUE(&tmp, Z_REFVAL_P(value));
22596 								efree_size(ref, sizeof(zend_reference));
22597 								value = &tmp;
22598 							} else {
22599 								value = Z_REFVAL_P(value);
22600 								Z_TRY_ADDREF_P(value);
22601 							}
22602 						} else {
22603 							value = Z_REFVAL_P(value);
22604 							Z_TRY_ADDREF_P(value);
22605 						}
22606 					} else if (IS_CONST == IS_CV) {
22607 						Z_TRY_ADDREF_P(value);
22608 					}
22609 				}
22610 				zend_hash_add_new(zobj->properties, Z_STR_P(property), value);
22611 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
22612 					ZVAL_COPY(EX_VAR(opline->result.var), value);
22613 				}
22614 				goto exit_assign_obj;
22615 			}
22616 		}
22617 	}
22618 
22619 	if (!Z_OBJ_HT_P(object)->write_property) {
22620 		zend_wrong_property_assignment(property OPLINE_CC EXECUTE_DATA_CC);
22621 
22622 		goto exit_assign_obj;
22623 	}
22624 
22625 	if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
22626 		ZVAL_DEREF(value);
22627 	}
22628 
22629 	Z_OBJ_HT_P(object)->write_property(object, property, value, (IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
22630 
22631 	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
22632 		ZVAL_COPY(EX_VAR(opline->result.var), value);
22633 	}
22634 
22635 exit_assign_obj:
22636 
22637 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
22638 	/* assign_obj has two opcodes! */
22639 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
22640 }
22641 
22642 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_VAR_CONST_OP_DATA_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22643 {
22644 	USE_OPLINE
22645 	zend_free_op free_op1, free_op_data;
22646 	zval *object, *property, *value, tmp;
22647 
22648 	SAVE_OPLINE();
22649 	object = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
22650 
22651 	if (IS_VAR == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
22652 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
22653 	}
22654 
22655 	property = RT_CONSTANT(opline, opline->op2);
22656 	value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
22657 
22658 	if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
22659 		if (Z_ISREF_P(object)) {
22660 			object = Z_REFVAL_P(object);
22661 			if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
22662 				goto assign_object;
22663 			}
22664 		}
22665 		if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
22666 			zval_ptr_dtor_nogc(free_op_data);
22667 			goto exit_assign_obj;
22668 		}
22669 	}
22670 
22671 assign_object:
22672 	if (IS_CONST == IS_CONST &&
22673 	    EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(opline->extended_value))) {
22674 		uintptr_t prop_offset = (uintptr_t)CACHED_PTR(opline->extended_value + sizeof(void*));
22675 		zend_object *zobj = Z_OBJ_P(object);
22676 		zval *property_val;
22677 
22678 		if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
22679 			property_val = OBJ_PROP(zobj, prop_offset);
22680 			if (Z_TYPE_P(property_val) != IS_UNDEF) {
22681 fast_assign_obj:
22682 				value = zend_assign_to_variable(property_val, value, IS_TMP_VAR);
22683 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
22684 					ZVAL_COPY(EX_VAR(opline->result.var), value);
22685 				}
22686 				goto exit_assign_obj;
22687 			}
22688 		} else {
22689 			if (EXPECTED(zobj->properties != NULL)) {
22690 				if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
22691 					if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
22692 						GC_DELREF(zobj->properties);
22693 					}
22694 					zobj->properties = zend_array_dup(zobj->properties);
22695 				}
22696 				property_val = zend_hash_find_ex(zobj->properties, Z_STR_P(property), 1);
22697 				if (property_val) {
22698 					goto fast_assign_obj;
22699 				}
22700 			}
22701 
22702 			if (!zobj->ce->__set) {
22703 
22704 				if (EXPECTED(zobj->properties == NULL)) {
22705 					rebuild_object_properties(zobj);
22706 				}
22707 				if (IS_TMP_VAR == IS_CONST) {
22708 					if (UNEXPECTED(Z_OPT_REFCOUNTED_P(value))) {
22709 						Z_ADDREF_P(value);
22710 					}
22711 				} else if (IS_TMP_VAR != IS_TMP_VAR) {
22712 					if (Z_ISREF_P(value)) {
22713 						if (IS_TMP_VAR == IS_VAR) {
22714 							zend_reference *ref = Z_REF_P(value);
22715 							if (GC_DELREF(ref) == 0) {
22716 								ZVAL_COPY_VALUE(&tmp, Z_REFVAL_P(value));
22717 								efree_size(ref, sizeof(zend_reference));
22718 								value = &tmp;
22719 							} else {
22720 								value = Z_REFVAL_P(value);
22721 								Z_TRY_ADDREF_P(value);
22722 							}
22723 						} else {
22724 							value = Z_REFVAL_P(value);
22725 							Z_TRY_ADDREF_P(value);
22726 						}
22727 					} else if (IS_TMP_VAR == IS_CV) {
22728 						Z_TRY_ADDREF_P(value);
22729 					}
22730 				}
22731 				zend_hash_add_new(zobj->properties, Z_STR_P(property), value);
22732 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
22733 					ZVAL_COPY(EX_VAR(opline->result.var), value);
22734 				}
22735 				goto exit_assign_obj;
22736 			}
22737 		}
22738 	}
22739 
22740 	if (!Z_OBJ_HT_P(object)->write_property) {
22741 		zend_wrong_property_assignment(property OPLINE_CC EXECUTE_DATA_CC);
22742 		zval_ptr_dtor_nogc(free_op_data);
22743 		goto exit_assign_obj;
22744 	}
22745 
22746 	if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
22747 		ZVAL_DEREF(value);
22748 	}
22749 
22750 	Z_OBJ_HT_P(object)->write_property(object, property, value, (IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
22751 
22752 	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
22753 		ZVAL_COPY(EX_VAR(opline->result.var), value);
22754 	}
22755 	zval_ptr_dtor_nogc(free_op_data);
22756 exit_assign_obj:
22757 
22758 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
22759 	/* assign_obj has two opcodes! */
22760 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
22761 }
22762 
22763 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_VAR_CONST_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22764 {
22765 	USE_OPLINE
22766 	zend_free_op free_op1, free_op_data;
22767 	zval *object, *property, *value, tmp;
22768 
22769 	SAVE_OPLINE();
22770 	object = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
22771 
22772 	if (IS_VAR == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
22773 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
22774 	}
22775 
22776 	property = RT_CONSTANT(opline, opline->op2);
22777 	value = _get_zval_ptr_var((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
22778 
22779 	if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
22780 		if (Z_ISREF_P(object)) {
22781 			object = Z_REFVAL_P(object);
22782 			if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
22783 				goto assign_object;
22784 			}
22785 		}
22786 		if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
22787 			zval_ptr_dtor_nogc(free_op_data);
22788 			goto exit_assign_obj;
22789 		}
22790 	}
22791 
22792 assign_object:
22793 	if (IS_CONST == IS_CONST &&
22794 	    EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(opline->extended_value))) {
22795 		uintptr_t prop_offset = (uintptr_t)CACHED_PTR(opline->extended_value + sizeof(void*));
22796 		zend_object *zobj = Z_OBJ_P(object);
22797 		zval *property_val;
22798 
22799 		if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
22800 			property_val = OBJ_PROP(zobj, prop_offset);
22801 			if (Z_TYPE_P(property_val) != IS_UNDEF) {
22802 fast_assign_obj:
22803 				value = zend_assign_to_variable(property_val, value, IS_VAR);
22804 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
22805 					ZVAL_COPY(EX_VAR(opline->result.var), value);
22806 				}
22807 				goto exit_assign_obj;
22808 			}
22809 		} else {
22810 			if (EXPECTED(zobj->properties != NULL)) {
22811 				if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
22812 					if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
22813 						GC_DELREF(zobj->properties);
22814 					}
22815 					zobj->properties = zend_array_dup(zobj->properties);
22816 				}
22817 				property_val = zend_hash_find_ex(zobj->properties, Z_STR_P(property), 1);
22818 				if (property_val) {
22819 					goto fast_assign_obj;
22820 				}
22821 			}
22822 
22823 			if (!zobj->ce->__set) {
22824 
22825 				if (EXPECTED(zobj->properties == NULL)) {
22826 					rebuild_object_properties(zobj);
22827 				}
22828 				if (IS_VAR == IS_CONST) {
22829 					if (UNEXPECTED(Z_OPT_REFCOUNTED_P(value))) {
22830 						Z_ADDREF_P(value);
22831 					}
22832 				} else if (IS_VAR != IS_TMP_VAR) {
22833 					if (Z_ISREF_P(value)) {
22834 						if (IS_VAR == IS_VAR) {
22835 							zend_reference *ref = Z_REF_P(value);
22836 							if (GC_DELREF(ref) == 0) {
22837 								ZVAL_COPY_VALUE(&tmp, Z_REFVAL_P(value));
22838 								efree_size(ref, sizeof(zend_reference));
22839 								value = &tmp;
22840 							} else {
22841 								value = Z_REFVAL_P(value);
22842 								Z_TRY_ADDREF_P(value);
22843 							}
22844 						} else {
22845 							value = Z_REFVAL_P(value);
22846 							Z_TRY_ADDREF_P(value);
22847 						}
22848 					} else if (IS_VAR == IS_CV) {
22849 						Z_TRY_ADDREF_P(value);
22850 					}
22851 				}
22852 				zend_hash_add_new(zobj->properties, Z_STR_P(property), value);
22853 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
22854 					ZVAL_COPY(EX_VAR(opline->result.var), value);
22855 				}
22856 				goto exit_assign_obj;
22857 			}
22858 		}
22859 	}
22860 
22861 	if (!Z_OBJ_HT_P(object)->write_property) {
22862 		zend_wrong_property_assignment(property OPLINE_CC EXECUTE_DATA_CC);
22863 		zval_ptr_dtor_nogc(free_op_data);
22864 		goto exit_assign_obj;
22865 	}
22866 
22867 	if (IS_VAR == IS_CV || IS_VAR == IS_VAR) {
22868 		ZVAL_DEREF(value);
22869 	}
22870 
22871 	Z_OBJ_HT_P(object)->write_property(object, property, value, (IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
22872 
22873 	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
22874 		ZVAL_COPY(EX_VAR(opline->result.var), value);
22875 	}
22876 	zval_ptr_dtor_nogc(free_op_data);
22877 exit_assign_obj:
22878 
22879 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
22880 	/* assign_obj has two opcodes! */
22881 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
22882 }
22883 
22884 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_VAR_CONST_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22885 {
22886 	USE_OPLINE
22887 	zend_free_op free_op1;
22888 	zval *object, *property, *value, tmp;
22889 
22890 	SAVE_OPLINE();
22891 	object = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
22892 
22893 	if (IS_VAR == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
22894 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
22895 	}
22896 
22897 	property = RT_CONSTANT(opline, opline->op2);
22898 	value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
22899 
22900 	if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
22901 		if (Z_ISREF_P(object)) {
22902 			object = Z_REFVAL_P(object);
22903 			if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
22904 				goto assign_object;
22905 			}
22906 		}
22907 		if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
22908 
22909 			goto exit_assign_obj;
22910 		}
22911 	}
22912 
22913 assign_object:
22914 	if (IS_CONST == IS_CONST &&
22915 	    EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(opline->extended_value))) {
22916 		uintptr_t prop_offset = (uintptr_t)CACHED_PTR(opline->extended_value + sizeof(void*));
22917 		zend_object *zobj = Z_OBJ_P(object);
22918 		zval *property_val;
22919 
22920 		if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
22921 			property_val = OBJ_PROP(zobj, prop_offset);
22922 			if (Z_TYPE_P(property_val) != IS_UNDEF) {
22923 fast_assign_obj:
22924 				value = zend_assign_to_variable(property_val, value, IS_CV);
22925 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
22926 					ZVAL_COPY(EX_VAR(opline->result.var), value);
22927 				}
22928 				goto exit_assign_obj;
22929 			}
22930 		} else {
22931 			if (EXPECTED(zobj->properties != NULL)) {
22932 				if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
22933 					if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
22934 						GC_DELREF(zobj->properties);
22935 					}
22936 					zobj->properties = zend_array_dup(zobj->properties);
22937 				}
22938 				property_val = zend_hash_find_ex(zobj->properties, Z_STR_P(property), 1);
22939 				if (property_val) {
22940 					goto fast_assign_obj;
22941 				}
22942 			}
22943 
22944 			if (!zobj->ce->__set) {
22945 
22946 				if (EXPECTED(zobj->properties == NULL)) {
22947 					rebuild_object_properties(zobj);
22948 				}
22949 				if (IS_CV == IS_CONST) {
22950 					if (UNEXPECTED(Z_OPT_REFCOUNTED_P(value))) {
22951 						Z_ADDREF_P(value);
22952 					}
22953 				} else if (IS_CV != IS_TMP_VAR) {
22954 					if (Z_ISREF_P(value)) {
22955 						if (IS_CV == IS_VAR) {
22956 							zend_reference *ref = Z_REF_P(value);
22957 							if (GC_DELREF(ref) == 0) {
22958 								ZVAL_COPY_VALUE(&tmp, Z_REFVAL_P(value));
22959 								efree_size(ref, sizeof(zend_reference));
22960 								value = &tmp;
22961 							} else {
22962 								value = Z_REFVAL_P(value);
22963 								Z_TRY_ADDREF_P(value);
22964 							}
22965 						} else {
22966 							value = Z_REFVAL_P(value);
22967 							Z_TRY_ADDREF_P(value);
22968 						}
22969 					} else if (IS_CV == IS_CV) {
22970 						Z_TRY_ADDREF_P(value);
22971 					}
22972 				}
22973 				zend_hash_add_new(zobj->properties, Z_STR_P(property), value);
22974 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
22975 					ZVAL_COPY(EX_VAR(opline->result.var), value);
22976 				}
22977 				goto exit_assign_obj;
22978 			}
22979 		}
22980 	}
22981 
22982 	if (!Z_OBJ_HT_P(object)->write_property) {
22983 		zend_wrong_property_assignment(property OPLINE_CC EXECUTE_DATA_CC);
22984 
22985 		goto exit_assign_obj;
22986 	}
22987 
22988 	if (IS_CV == IS_CV || IS_CV == IS_VAR) {
22989 		ZVAL_DEREF(value);
22990 	}
22991 
22992 	Z_OBJ_HT_P(object)->write_property(object, property, value, (IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
22993 
22994 	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
22995 		ZVAL_COPY(EX_VAR(opline->result.var), value);
22996 	}
22997 
22998 exit_assign_obj:
22999 
23000 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
23001 	/* assign_obj has two opcodes! */
23002 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
23003 }
23004 
23005 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_VAR_CONST_OP_DATA_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
23006 {
23007 	USE_OPLINE
23008 	zend_free_op free_op1;
23009 	zval *object_ptr;
23010 	zend_free_op free_op_data;
23011 	zval *value;
23012 	zval *variable_ptr;
23013 	zval *dim;
23014 
23015 	SAVE_OPLINE();
23016 	object_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
23017 
23018 	if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
23019 try_assign_dim_array:
23020 		SEPARATE_ARRAY(object_ptr);
23021 		if (IS_CONST == IS_UNUSED) {
23022 			value = RT_CONSTANT((opline+1), (opline+1)->op1);
23023 			if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
23024 				ZVAL_DEREF(value);
23025 			}
23026 			variable_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), value);
23027 			if (UNEXPECTED(variable_ptr == NULL)) {
23028 
23029 				zend_cannot_add_element();
23030 				goto assign_dim_error;
23031 			} else if (IS_CONST == IS_CV) {
23032 				if (Z_REFCOUNTED_P(value)) {
23033 					Z_ADDREF_P(value);
23034 				}
23035 			} else if (IS_CONST == IS_VAR) {
23036 				if (value != free_op_data) {
23037 					if (Z_REFCOUNTED_P(value)) {
23038 						Z_ADDREF_P(value);
23039 					}
23040 
23041 				}
23042 			} else if (IS_CONST == IS_CONST) {
23043 				if (UNEXPECTED(Z_REFCOUNTED_P(value))) {
23044 					Z_ADDREF_P(value);
23045 				}
23046 			}
23047 		} else {
23048 			dim = RT_CONSTANT(opline, opline->op2);
23049 			if (IS_CONST == IS_CONST) {
23050 				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
23051 			} else {
23052 				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
23053 			}
23054 			if (UNEXPECTED(variable_ptr == NULL)) {
23055 				goto assign_dim_error;
23056 			}
23057 			value = RT_CONSTANT((opline+1), (opline+1)->op1);
23058 			value = zend_assign_to_variable(variable_ptr, value, IS_CONST);
23059 		}
23060 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
23061 			ZVAL_COPY(EX_VAR(opline->result.var), value);
23062 		}
23063 	} else {
23064 		if (EXPECTED(Z_ISREF_P(object_ptr))) {
23065 			object_ptr = Z_REFVAL_P(object_ptr);
23066 			if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
23067 				goto try_assign_dim_array;
23068 			}
23069 		}
23070 		if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) {
23071 			dim = RT_CONSTANT(opline, opline->op2);
23072 			value = RT_CONSTANT((opline+1), (opline+1)->op1);
23073 
23074 			if (IS_CONST == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
23075 				dim++;
23076 			}
23077 			zend_assign_to_object_dim(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
23078 
23079 		} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
23080 			if (IS_CONST == IS_UNUSED) {
23081 				zend_use_new_element_for_string();
23082 
23083 				if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
23084 				UNDEF_RESULT();
23085 				HANDLE_EXCEPTION();
23086 			} else {
23087 				dim = RT_CONSTANT(opline, opline->op2);
23088 				value = RT_CONSTANT((opline+1), (opline+1)->op1);
23089 				zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
23090 
23091 			}
23092 		} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
23093 			ZVAL_ARR(object_ptr, zend_new_array(8));
23094 			goto try_assign_dim_array;
23095 		} else {
23096 			if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) {
23097 				zend_use_scalar_as_array();
23098 			}
23099 			dim = RT_CONSTANT(opline, opline->op2);
23100 assign_dim_error:
23101 
23102 			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
23103 				ZVAL_NULL(EX_VAR(opline->result.var));
23104 			}
23105 		}
23106 	}
23107 	if (IS_CONST != IS_UNUSED) {
23108 
23109 	}
23110 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
23111 	/* assign_dim has two opcodes! */
23112 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
23113 }
23114 
23115 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_VAR_CONST_OP_DATA_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
23116 {
23117 	USE_OPLINE
23118 	zend_free_op free_op1;
23119 	zval *object_ptr;
23120 	zend_free_op free_op_data;
23121 	zval *value;
23122 	zval *variable_ptr;
23123 	zval *dim;
23124 
23125 	SAVE_OPLINE();
23126 	object_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
23127 
23128 	if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
23129 try_assign_dim_array:
23130 		SEPARATE_ARRAY(object_ptr);
23131 		if (IS_CONST == IS_UNUSED) {
23132 			value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
23133 			if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
23134 				ZVAL_DEREF(value);
23135 			}
23136 			variable_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), value);
23137 			if (UNEXPECTED(variable_ptr == NULL)) {
23138 				zval_ptr_dtor_nogc(free_op_data);
23139 				zend_cannot_add_element();
23140 				goto assign_dim_error;
23141 			} else if (IS_TMP_VAR == IS_CV) {
23142 				if (Z_REFCOUNTED_P(value)) {
23143 					Z_ADDREF_P(value);
23144 				}
23145 			} else if (IS_TMP_VAR == IS_VAR) {
23146 				if (value != free_op_data) {
23147 					if (Z_REFCOUNTED_P(value)) {
23148 						Z_ADDREF_P(value);
23149 					}
23150 					zval_ptr_dtor_nogc(free_op_data);
23151 				}
23152 			} else if (IS_TMP_VAR == IS_CONST) {
23153 				if (UNEXPECTED(Z_REFCOUNTED_P(value))) {
23154 					Z_ADDREF_P(value);
23155 				}
23156 			}
23157 		} else {
23158 			dim = RT_CONSTANT(opline, opline->op2);
23159 			if (IS_CONST == IS_CONST) {
23160 				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
23161 			} else {
23162 				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
23163 			}
23164 			if (UNEXPECTED(variable_ptr == NULL)) {
23165 				goto assign_dim_error;
23166 			}
23167 			value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
23168 			value = zend_assign_to_variable(variable_ptr, value, IS_TMP_VAR);
23169 		}
23170 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
23171 			ZVAL_COPY(EX_VAR(opline->result.var), value);
23172 		}
23173 	} else {
23174 		if (EXPECTED(Z_ISREF_P(object_ptr))) {
23175 			object_ptr = Z_REFVAL_P(object_ptr);
23176 			if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
23177 				goto try_assign_dim_array;
23178 			}
23179 		}
23180 		if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) {
23181 			dim = RT_CONSTANT(opline, opline->op2);
23182 			value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
23183 
23184 			if (IS_CONST == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
23185 				dim++;
23186 			}
23187 			zend_assign_to_object_dim(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
23188 
23189 			zval_ptr_dtor_nogc(free_op_data);
23190 		} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
23191 			if (IS_CONST == IS_UNUSED) {
23192 				zend_use_new_element_for_string();
23193 				zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
23194 				if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
23195 				UNDEF_RESULT();
23196 				HANDLE_EXCEPTION();
23197 			} else {
23198 				dim = RT_CONSTANT(opline, opline->op2);
23199 				value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
23200 				zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
23201 				zval_ptr_dtor_nogc(free_op_data);
23202 			}
23203 		} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
23204 			ZVAL_ARR(object_ptr, zend_new_array(8));
23205 			goto try_assign_dim_array;
23206 		} else {
23207 			if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) {
23208 				zend_use_scalar_as_array();
23209 			}
23210 			dim = RT_CONSTANT(opline, opline->op2);
23211 assign_dim_error:
23212 			zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
23213 			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
23214 				ZVAL_NULL(EX_VAR(opline->result.var));
23215 			}
23216 		}
23217 	}
23218 	if (IS_CONST != IS_UNUSED) {
23219 
23220 	}
23221 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
23222 	/* assign_dim has two opcodes! */
23223 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
23224 }
23225 
23226 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_VAR_CONST_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
23227 {
23228 	USE_OPLINE
23229 	zend_free_op free_op1;
23230 	zval *object_ptr;
23231 	zend_free_op free_op_data;
23232 	zval *value;
23233 	zval *variable_ptr;
23234 	zval *dim;
23235 
23236 	SAVE_OPLINE();
23237 	object_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
23238 
23239 	if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
23240 try_assign_dim_array:
23241 		SEPARATE_ARRAY(object_ptr);
23242 		if (IS_CONST == IS_UNUSED) {
23243 			value = _get_zval_ptr_var((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
23244 			if (IS_VAR == IS_CV || IS_VAR == IS_VAR) {
23245 				ZVAL_DEREF(value);
23246 			}
23247 			variable_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), value);
23248 			if (UNEXPECTED(variable_ptr == NULL)) {
23249 				zval_ptr_dtor_nogc(free_op_data);
23250 				zend_cannot_add_element();
23251 				goto assign_dim_error;
23252 			} else if (IS_VAR == IS_CV) {
23253 				if (Z_REFCOUNTED_P(value)) {
23254 					Z_ADDREF_P(value);
23255 				}
23256 			} else if (IS_VAR == IS_VAR) {
23257 				if (value != free_op_data) {
23258 					if (Z_REFCOUNTED_P(value)) {
23259 						Z_ADDREF_P(value);
23260 					}
23261 					zval_ptr_dtor_nogc(free_op_data);
23262 				}
23263 			} else if (IS_VAR == IS_CONST) {
23264 				if (UNEXPECTED(Z_REFCOUNTED_P(value))) {
23265 					Z_ADDREF_P(value);
23266 				}
23267 			}
23268 		} else {
23269 			dim = RT_CONSTANT(opline, opline->op2);
23270 			if (IS_CONST == IS_CONST) {
23271 				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
23272 			} else {
23273 				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
23274 			}
23275 			if (UNEXPECTED(variable_ptr == NULL)) {
23276 				goto assign_dim_error;
23277 			}
23278 			value = _get_zval_ptr_var((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
23279 			value = zend_assign_to_variable(variable_ptr, value, IS_VAR);
23280 		}
23281 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
23282 			ZVAL_COPY(EX_VAR(opline->result.var), value);
23283 		}
23284 	} else {
23285 		if (EXPECTED(Z_ISREF_P(object_ptr))) {
23286 			object_ptr = Z_REFVAL_P(object_ptr);
23287 			if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
23288 				goto try_assign_dim_array;
23289 			}
23290 		}
23291 		if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) {
23292 			dim = RT_CONSTANT(opline, opline->op2);
23293 			value = _get_zval_ptr_var_deref((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
23294 
23295 			if (IS_CONST == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
23296 				dim++;
23297 			}
23298 			zend_assign_to_object_dim(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
23299 
23300 			zval_ptr_dtor_nogc(free_op_data);
23301 		} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
23302 			if (IS_CONST == IS_UNUSED) {
23303 				zend_use_new_element_for_string();
23304 				zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
23305 				if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
23306 				UNDEF_RESULT();
23307 				HANDLE_EXCEPTION();
23308 			} else {
23309 				dim = RT_CONSTANT(opline, opline->op2);
23310 				value = _get_zval_ptr_var_deref((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
23311 				zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
23312 				zval_ptr_dtor_nogc(free_op_data);
23313 			}
23314 		} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
23315 			ZVAL_ARR(object_ptr, zend_new_array(8));
23316 			goto try_assign_dim_array;
23317 		} else {
23318 			if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) {
23319 				zend_use_scalar_as_array();
23320 			}
23321 			dim = RT_CONSTANT(opline, opline->op2);
23322 assign_dim_error:
23323 			zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
23324 			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
23325 				ZVAL_NULL(EX_VAR(opline->result.var));
23326 			}
23327 		}
23328 	}
23329 	if (IS_CONST != IS_UNUSED) {
23330 
23331 	}
23332 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
23333 	/* assign_dim has two opcodes! */
23334 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
23335 }
23336 
23337 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_VAR_CONST_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
23338 {
23339 	USE_OPLINE
23340 	zend_free_op free_op1;
23341 	zval *object_ptr;
23342 	zend_free_op free_op_data;
23343 	zval *value;
23344 	zval *variable_ptr;
23345 	zval *dim;
23346 
23347 	SAVE_OPLINE();
23348 	object_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
23349 
23350 	if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
23351 try_assign_dim_array:
23352 		SEPARATE_ARRAY(object_ptr);
23353 		if (IS_CONST == IS_UNUSED) {
23354 			value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
23355 			if (IS_CV == IS_CV || IS_CV == IS_VAR) {
23356 				ZVAL_DEREF(value);
23357 			}
23358 			variable_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), value);
23359 			if (UNEXPECTED(variable_ptr == NULL)) {
23360 
23361 				zend_cannot_add_element();
23362 				goto assign_dim_error;
23363 			} else if (IS_CV == IS_CV) {
23364 				if (Z_REFCOUNTED_P(value)) {
23365 					Z_ADDREF_P(value);
23366 				}
23367 			} else if (IS_CV == IS_VAR) {
23368 				if (value != free_op_data) {
23369 					if (Z_REFCOUNTED_P(value)) {
23370 						Z_ADDREF_P(value);
23371 					}
23372 
23373 				}
23374 			} else if (IS_CV == IS_CONST) {
23375 				if (UNEXPECTED(Z_REFCOUNTED_P(value))) {
23376 					Z_ADDREF_P(value);
23377 				}
23378 			}
23379 		} else {
23380 			dim = RT_CONSTANT(opline, opline->op2);
23381 			if (IS_CONST == IS_CONST) {
23382 				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
23383 			} else {
23384 				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
23385 			}
23386 			if (UNEXPECTED(variable_ptr == NULL)) {
23387 				goto assign_dim_error;
23388 			}
23389 			value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
23390 			value = zend_assign_to_variable(variable_ptr, value, IS_CV);
23391 		}
23392 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
23393 			ZVAL_COPY(EX_VAR(opline->result.var), value);
23394 		}
23395 	} else {
23396 		if (EXPECTED(Z_ISREF_P(object_ptr))) {
23397 			object_ptr = Z_REFVAL_P(object_ptr);
23398 			if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
23399 				goto try_assign_dim_array;
23400 			}
23401 		}
23402 		if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) {
23403 			dim = RT_CONSTANT(opline, opline->op2);
23404 			value = _get_zval_ptr_cv_deref_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
23405 
23406 			if (IS_CONST == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
23407 				dim++;
23408 			}
23409 			zend_assign_to_object_dim(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
23410 
23411 		} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
23412 			if (IS_CONST == IS_UNUSED) {
23413 				zend_use_new_element_for_string();
23414 
23415 				if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
23416 				UNDEF_RESULT();
23417 				HANDLE_EXCEPTION();
23418 			} else {
23419 				dim = RT_CONSTANT(opline, opline->op2);
23420 				value = _get_zval_ptr_cv_deref_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
23421 				zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
23422 
23423 			}
23424 		} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
23425 			ZVAL_ARR(object_ptr, zend_new_array(8));
23426 			goto try_assign_dim_array;
23427 		} else {
23428 			if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) {
23429 				zend_use_scalar_as_array();
23430 			}
23431 			dim = RT_CONSTANT(opline, opline->op2);
23432 assign_dim_error:
23433 
23434 			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
23435 				ZVAL_NULL(EX_VAR(opline->result.var));
23436 			}
23437 		}
23438 	}
23439 	if (IS_CONST != IS_UNUSED) {
23440 
23441 	}
23442 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
23443 	/* assign_dim has two opcodes! */
23444 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
23445 }
23446 
23447 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SPEC_VAR_CONST_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
23448 {
23449 	USE_OPLINE
23450 	zend_free_op free_op1;
23451 	zval *value;
23452 	zval *variable_ptr;
23453 
23454 	SAVE_OPLINE();
23455 	value = RT_CONSTANT(opline, opline->op2);
23456 	variable_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
23457 
23458 	if (IS_VAR == IS_VAR && UNEXPECTED(Z_ISERROR_P(variable_ptr))) {
23459 
23460 		if (UNEXPECTED(0)) {
23461 			ZVAL_NULL(EX_VAR(opline->result.var));
23462 		}
23463 	} else {
23464 		value = zend_assign_to_variable(variable_ptr, value, IS_CONST);
23465 		if (UNEXPECTED(0)) {
23466 			ZVAL_COPY(EX_VAR(opline->result.var), value);
23467 		}
23468 		if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
23469 		/* zend_assign_to_variable() always takes care of op2, never free it! */
23470 	}
23471 
23472 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
23473 }
23474 
23475 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SPEC_VAR_CONST_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
23476 {
23477 	USE_OPLINE
23478 	zend_free_op free_op1;
23479 	zval *value;
23480 	zval *variable_ptr;
23481 
23482 	SAVE_OPLINE();
23483 	value = RT_CONSTANT(opline, opline->op2);
23484 	variable_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
23485 
23486 	if (IS_VAR == IS_VAR && UNEXPECTED(Z_ISERROR_P(variable_ptr))) {
23487 
23488 		if (UNEXPECTED(1)) {
23489 			ZVAL_NULL(EX_VAR(opline->result.var));
23490 		}
23491 	} else {
23492 		value = zend_assign_to_variable(variable_ptr, value, IS_CONST);
23493 		if (UNEXPECTED(1)) {
23494 			ZVAL_COPY(EX_VAR(opline->result.var), value);
23495 		}
23496 		if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
23497 		/* zend_assign_to_variable() always takes care of op2, never free it! */
23498 	}
23499 
23500 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
23501 }
23502 
23503 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
23504 {
23505 	USE_OPLINE
23506 	zval *function_name;
23507 	zend_class_entry *ce;
23508 	zend_object *object;
23509 	zend_function *fbc;
23510 	zend_execute_data *call;
23511 
23512 	SAVE_OPLINE();
23513 
23514 	if (IS_VAR == IS_CONST) {
23515 		/* no function found. try a static method in class */
23516 		ce = CACHED_PTR(opline->result.num);
23517 		if (UNEXPECTED(ce == NULL)) {
23518 			ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), RT_CONSTANT(opline, opline->op1) + 1, ZEND_FETCH_CLASS_DEFAULT |  ZEND_FETCH_CLASS_EXCEPTION);
23519 			if (UNEXPECTED(ce == NULL)) {
23520 				ZEND_ASSERT(EG(exception));
23521 
23522 				HANDLE_EXCEPTION();
23523 			}
23524 			if (IS_CONST != IS_CONST) {
23525 				CACHE_PTR(opline->result.num, ce);
23526 			}
23527 		}
23528 	} else if (IS_VAR == IS_UNUSED) {
23529 		ce = zend_fetch_class(NULL, opline->op1.num);
23530 		if (UNEXPECTED(ce == NULL)) {
23531 			ZEND_ASSERT(EG(exception));
23532 
23533 			HANDLE_EXCEPTION();
23534 		}
23535 	} else {
23536 		ce = Z_CE_P(EX_VAR(opline->op1.var));
23537 	}
23538 
23539 	if (IS_VAR == IS_CONST &&
23540 	    IS_CONST == IS_CONST &&
23541 	    EXPECTED((fbc = CACHED_PTR(opline->result.num + sizeof(void*))) != NULL)) {
23542 		/* nothing to do */
23543 	} else if (IS_VAR != IS_CONST &&
23544 	           IS_CONST == IS_CONST &&
23545 	           EXPECTED(CACHED_PTR(opline->result.num) == ce)) {
23546 		fbc = CACHED_PTR(opline->result.num + sizeof(void*));
23547 	} else if (IS_CONST != IS_UNUSED) {
23548 
23549 
23550 		function_name = RT_CONSTANT(opline, opline->op2);
23551 		if (IS_CONST != IS_CONST) {
23552 			if (UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) {
23553 				do {
23554 					if (IS_CONST & (IS_VAR|IS_CV) && Z_ISREF_P(function_name)) {
23555 						function_name = Z_REFVAL_P(function_name);
23556 						if (EXPECTED(Z_TYPE_P(function_name) == IS_STRING)) {
23557 							break;
23558 						}
23559 					} else if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
23560 						GET_OP2_UNDEF_CV(function_name, BP_VAR_R);
23561 						if (UNEXPECTED(EG(exception) != NULL)) {
23562 							HANDLE_EXCEPTION();
23563 						}
23564 					}
23565 					zend_throw_error(NULL, "Function name must be a string");
23566 
23567 					HANDLE_EXCEPTION();
23568 				} while (0);
23569 			}
23570 		}
23571 
23572 		if (ce->get_static_method) {
23573 			fbc = ce->get_static_method(ce, Z_STR_P(function_name));
23574 		} else {
23575 			fbc = zend_std_get_static_method(ce, Z_STR_P(function_name), ((IS_CONST == IS_CONST) ? (RT_CONSTANT(opline, opline->op2) + 1) : NULL));
23576 		}
23577 		if (UNEXPECTED(fbc == NULL)) {
23578 			if (EXPECTED(!EG(exception))) {
23579 				zend_undefined_method(ce, Z_STR_P(function_name));
23580 			}
23581 
23582 			HANDLE_EXCEPTION();
23583 		}
23584 		if (IS_CONST == IS_CONST &&
23585 		    EXPECTED(fbc->type <= ZEND_USER_FUNCTION) &&
23586 		    EXPECTED(!(fbc->common.fn_flags & (ZEND_ACC_CALL_VIA_TRAMPOLINE|ZEND_ACC_NEVER_CACHE)))) {
23587 			CACHE_POLYMORPHIC_PTR(opline->result.num, ce, fbc);
23588 		}
23589 		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!fbc->op_array.run_time_cache)) {
23590 			init_func_run_time_cache(&fbc->op_array);
23591 		}
23592 		if (IS_CONST != IS_CONST) {
23593 
23594 		}
23595 	} else {
23596 		if (UNEXPECTED(ce->constructor == NULL)) {
23597 			zend_throw_error(NULL, "Cannot call constructor");
23598 			HANDLE_EXCEPTION();
23599 		}
23600 		if (Z_TYPE(EX(This)) == IS_OBJECT && Z_OBJ(EX(This))->ce != ce->constructor->common.scope && (ce->constructor->common.fn_flags & ZEND_ACC_PRIVATE)) {
23601 			zend_throw_error(NULL, "Cannot call private %s::__construct()", ZSTR_VAL(ce->name));
23602 			HANDLE_EXCEPTION();
23603 		}
23604 		fbc = ce->constructor;
23605 		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!fbc->op_array.run_time_cache)) {
23606 			init_func_run_time_cache(&fbc->op_array);
23607 		}
23608 	}
23609 
23610 	object = NULL;
23611 	if (!(fbc->common.fn_flags & ZEND_ACC_STATIC)) {
23612 		if (Z_TYPE(EX(This)) == IS_OBJECT && instanceof_function(Z_OBJCE(EX(This)), ce)) {
23613 			object = Z_OBJ(EX(This));
23614 			ce = object->ce;
23615 		} else {
23616 			zend_non_static_method_call(fbc);
23617 			if (UNEXPECTED(EG(exception) != NULL)) {
23618 				HANDLE_EXCEPTION();
23619 			}
23620 		}
23621 	}
23622 
23623 	if (IS_VAR == IS_UNUSED) {
23624 		/* previous opcode is ZEND_FETCH_CLASS */
23625 		if ((opline->op1.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_PARENT ||
23626 		    (opline->op1.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_SELF) {
23627 			if (Z_TYPE(EX(This)) == IS_OBJECT) {
23628 				ce = Z_OBJCE(EX(This));
23629 			} else {
23630 				ce = Z_CE(EX(This));
23631 			}
23632 		}
23633 	}
23634 
23635 	call = zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_FUNCTION,
23636 		fbc, opline->extended_value, ce, object);
23637 	call->prev_execute_data = EX(call);
23638 	EX(call) = call;
23639 
23640 	ZEND_VM_NEXT_OPCODE();
23641 }
23642 
23643 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_CLASS_CONSTANT_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
23644 {
23645 	zend_class_entry *ce, *scope;
23646 	zend_class_constant *c;
23647 	zval *value, *zv;
23648 	USE_OPLINE
23649 
23650 	SAVE_OPLINE();
23651 
23652 	do {
23653 		if (IS_VAR == IS_CONST) {
23654 			if (EXPECTED(CACHED_PTR(opline->extended_value + sizeof(void*)))) {
23655 				value = CACHED_PTR(opline->extended_value + sizeof(void*));
23656 				break;
23657 			} else if (EXPECTED(CACHED_PTR(opline->extended_value))) {
23658 				ce = CACHED_PTR(opline->extended_value);
23659 			} else {
23660 				ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), RT_CONSTANT(opline, opline->op1) + 1, ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
23661 				if (UNEXPECTED(ce == NULL)) {
23662 					ZEND_ASSERT(EG(exception));
23663 					ZVAL_UNDEF(EX_VAR(opline->result.var));
23664 					HANDLE_EXCEPTION();
23665 				}
23666 			}
23667 		} else {
23668 			if (IS_VAR == IS_UNUSED) {
23669 				ce = zend_fetch_class(NULL, opline->op1.num);
23670 				if (UNEXPECTED(ce == NULL)) {
23671 					ZEND_ASSERT(EG(exception));
23672 					ZVAL_UNDEF(EX_VAR(opline->result.var));
23673 					HANDLE_EXCEPTION();
23674 				}
23675 			} else {
23676 				ce = Z_CE_P(EX_VAR(opline->op1.var));
23677 			}
23678 			if (EXPECTED(CACHED_PTR(opline->extended_value) == ce)) {
23679 				value = CACHED_PTR(opline->extended_value + sizeof(void*));
23680 				break;
23681 			}
23682 		}
23683 
23684 		zv = zend_hash_find_ex(&ce->constants_table, Z_STR_P(RT_CONSTANT(opline, opline->op2)), 1);
23685 		if (EXPECTED(zv != NULL)) {
23686 			c = Z_PTR_P(zv);
23687 			scope = EX(func)->op_array.scope;
23688 			if (!zend_verify_const_access(c, scope)) {
23689 				zend_throw_error(NULL, "Cannot access %s const %s::%s", zend_visibility_string(Z_ACCESS_FLAGS(c->value)), ZSTR_VAL(ce->name), Z_STRVAL_P(RT_CONSTANT(opline, opline->op2)));
23690 				ZVAL_UNDEF(EX_VAR(opline->result.var));
23691 				HANDLE_EXCEPTION();
23692 			}
23693 			value = &c->value;
23694 			if (Z_TYPE_P(value) == IS_CONSTANT_AST) {
23695 				zval_update_constant_ex(value, c->ce);
23696 				if (UNEXPECTED(EG(exception) != NULL)) {
23697 					ZVAL_UNDEF(EX_VAR(opline->result.var));
23698 					HANDLE_EXCEPTION();
23699 				}
23700 			}
23701 			CACHE_POLYMORPHIC_PTR(opline->extended_value, ce, value);
23702 		} else {
23703 			zend_throw_error(NULL, "Undefined class constant '%s'", Z_STRVAL_P(RT_CONSTANT(opline, opline->op2)));
23704 			ZVAL_UNDEF(EX_VAR(opline->result.var));
23705 			HANDLE_EXCEPTION();
23706 		}
23707 	} while (0);
23708 
23709 	ZVAL_COPY_OR_DUP(EX_VAR(opline->result.var), value);
23710 
23711 	ZEND_VM_NEXT_OPCODE();
23712 }
23713 
23714 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
23715 {
23716 	USE_OPLINE
23717 	zend_free_op free_op1;
23718 	zval *expr_ptr, new_expr;
23719 
23720 	SAVE_OPLINE();
23721 	if ((IS_VAR == IS_VAR || IS_VAR == IS_CV) &&
23722 	    UNEXPECTED(opline->extended_value & ZEND_ARRAY_ELEMENT_REF)) {
23723 		expr_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
23724 		if (Z_ISREF_P(expr_ptr)) {
23725 			Z_ADDREF_P(expr_ptr);
23726 		} else {
23727 			ZVAL_MAKE_REF_EX(expr_ptr, 2);
23728 		}
23729 		if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
23730 	} else {
23731 		expr_ptr = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
23732 		if (IS_VAR == IS_TMP_VAR) {
23733 			/* pass */
23734 		} else if (IS_VAR == IS_CONST) {
23735 			Z_TRY_ADDREF_P(expr_ptr);
23736 		} else if (IS_VAR == IS_CV) {
23737 			ZVAL_DEREF(expr_ptr);
23738 			Z_TRY_ADDREF_P(expr_ptr);
23739 		} else /* if (IS_VAR == IS_VAR) */ {
23740 			if (UNEXPECTED(Z_ISREF_P(expr_ptr))) {
23741 				zend_refcounted *ref = Z_COUNTED_P(expr_ptr);
23742 
23743 				expr_ptr = Z_REFVAL_P(expr_ptr);
23744 				if (UNEXPECTED(GC_DELREF(ref) == 0)) {
23745 					ZVAL_COPY_VALUE(&new_expr, expr_ptr);
23746 					expr_ptr = &new_expr;
23747 					efree_size(ref, sizeof(zend_reference));
23748 				} else if (Z_OPT_REFCOUNTED_P(expr_ptr)) {
23749 					Z_ADDREF_P(expr_ptr);
23750 				}
23751 			}
23752 		}
23753 	}
23754 
23755 	if (IS_CONST != IS_UNUSED) {
23756 
23757 		zval *offset = RT_CONSTANT(opline, opline->op2);
23758 		zend_string *str;
23759 		zend_ulong hval;
23760 
23761 add_again:
23762 		if (EXPECTED(Z_TYPE_P(offset) == IS_STRING)) {
23763 			str = Z_STR_P(offset);
23764 			if (IS_CONST != IS_CONST) {
23765 				if (ZEND_HANDLE_NUMERIC(str, hval)) {
23766 					goto num_index;
23767 				}
23768 			}
23769 str_index:
23770 			zend_hash_update(Z_ARRVAL_P(EX_VAR(opline->result.var)), str, expr_ptr);
23771 		} else if (EXPECTED(Z_TYPE_P(offset) == IS_LONG)) {
23772 			hval = Z_LVAL_P(offset);
23773 num_index:
23774 			zend_hash_index_update(Z_ARRVAL_P(EX_VAR(opline->result.var)), hval, expr_ptr);
23775 		} else if ((IS_CONST & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
23776 			offset = Z_REFVAL_P(offset);
23777 			goto add_again;
23778 		} else if (Z_TYPE_P(offset) == IS_NULL) {
23779 			str = ZSTR_EMPTY_ALLOC();
23780 			goto str_index;
23781 		} else if (Z_TYPE_P(offset) == IS_DOUBLE) {
23782 			hval = zend_dval_to_lval(Z_DVAL_P(offset));
23783 			goto num_index;
23784 		} else if (Z_TYPE_P(offset) == IS_FALSE) {
23785 			hval = 0;
23786 			goto num_index;
23787 		} else if (Z_TYPE_P(offset) == IS_TRUE) {
23788 			hval = 1;
23789 			goto num_index;
23790 		} else if (IS_CONST == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
23791 			GET_OP2_UNDEF_CV(offset, BP_VAR_R);
23792 			str = ZSTR_EMPTY_ALLOC();
23793 			goto str_index;
23794 		} else {
23795 			zend_illegal_offset();
23796 			zval_ptr_dtor_nogc(expr_ptr);
23797 		}
23798 
23799 	} else {
23800 		if (!zend_hash_next_index_insert(Z_ARRVAL_P(EX_VAR(opline->result.var)), expr_ptr)) {
23801 			zend_cannot_add_element();
23802 			zval_ptr_dtor_nogc(expr_ptr);
23803 		}
23804 	}
23805 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
23806 }
23807 
23808 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_ARRAY_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
23809 {
23810 	zval *array;
23811 	uint32_t size;
23812 	USE_OPLINE
23813 
23814 	array = EX_VAR(opline->result.var);
23815 	if (IS_VAR != IS_UNUSED) {
23816 		size = opline->extended_value >> ZEND_ARRAY_SIZE_SHIFT;
23817 		ZVAL_ARR(array, zend_new_array(size));
23818 		/* Explicitly initialize array as not-packed if flag is set */
23819 		if (opline->extended_value & ZEND_ARRAY_NOT_PACKED) {
23820 			zend_hash_real_init_mixed(Z_ARRVAL_P(array));
23821 		}
23822 		ZEND_VM_TAIL_CALL(ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
23823 	} else {
23824 		ZVAL_EMPTY_ARRAY(array);
23825 		ZEND_VM_NEXT_OPCODE();
23826 	}
23827 }
23828 
23829 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_UNSET_DIM_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
23830 {
23831 	USE_OPLINE
23832 	zend_free_op free_op1;
23833 	zval *container;
23834 	zval *offset;
23835 	zend_ulong hval;
23836 	zend_string *key;
23837 
23838 	SAVE_OPLINE();
23839 	container = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
23840 	offset = RT_CONSTANT(opline, opline->op2);
23841 
23842 	do {
23843 		if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
23844 			HashTable *ht;
23845 
23846 unset_dim_array:
23847 			SEPARATE_ARRAY(container);
23848 			ht = Z_ARRVAL_P(container);
23849 offset_again:
23850 			if (EXPECTED(Z_TYPE_P(offset) == IS_STRING)) {
23851 				key = Z_STR_P(offset);
23852 				if (IS_CONST != IS_CONST) {
23853 					if (ZEND_HANDLE_NUMERIC(key, hval)) {
23854 						goto num_index_dim;
23855 					}
23856 				}
23857 str_index_dim:
23858 				if (ht == &EG(symbol_table)) {
23859 					zend_delete_global_variable(key);
23860 				} else {
23861 					zend_hash_del(ht, key);
23862 				}
23863 			} else if (EXPECTED(Z_TYPE_P(offset) == IS_LONG)) {
23864 				hval = Z_LVAL_P(offset);
23865 num_index_dim:
23866 				zend_hash_index_del(ht, hval);
23867 			} else if ((IS_CONST & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
23868 				offset = Z_REFVAL_P(offset);
23869 				goto offset_again;
23870 			} else if (Z_TYPE_P(offset) == IS_DOUBLE) {
23871 				hval = zend_dval_to_lval(Z_DVAL_P(offset));
23872 				goto num_index_dim;
23873 			} else if (Z_TYPE_P(offset) == IS_NULL) {
23874 				key = ZSTR_EMPTY_ALLOC();
23875 				goto str_index_dim;
23876 			} else if (Z_TYPE_P(offset) == IS_FALSE) {
23877 				hval = 0;
23878 				goto num_index_dim;
23879 			} else if (Z_TYPE_P(offset) == IS_TRUE) {
23880 				hval = 1;
23881 				goto num_index_dim;
23882 			} else if (Z_TYPE_P(offset) == IS_RESOURCE) {
23883 				hval = Z_RES_HANDLE_P(offset);
23884 				goto num_index_dim;
23885 			} else if (IS_CONST == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
23886 				GET_OP2_UNDEF_CV(offset, BP_VAR_R);
23887 				key = ZSTR_EMPTY_ALLOC();
23888 				goto str_index_dim;
23889 			} else {
23890 				zend_error(E_WARNING, "Illegal offset type in unset");
23891 			}
23892 			break;
23893 		} else if (Z_ISREF_P(container)) {
23894 			container = Z_REFVAL_P(container);
23895 			if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
23896 				goto unset_dim_array;
23897 			}
23898 		}
23899 		if (IS_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
23900 			container = GET_OP1_UNDEF_CV(container, BP_VAR_R);
23901 		}
23902 		if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(offset) == IS_UNDEF)) {
23903 			offset = GET_OP2_UNDEF_CV(offset, BP_VAR_R);
23904 		}
23905 		if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
23906 			if (UNEXPECTED(Z_OBJ_HT_P(container)->unset_dimension == NULL)) {
23907 				zend_use_object_as_array();
23908 			} else {
23909 				if (IS_CONST == IS_CONST && Z_EXTRA_P(offset) == ZEND_EXTRA_VALUE) {
23910 					offset++;
23911 				}
23912 				Z_OBJ_HT_P(container)->unset_dimension(container, offset);
23913 			}
23914 		} else if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_STRING)) {
23915 			zend_throw_error(NULL, "Cannot unset string offsets");
23916 		}
23917 	} while (0);
23918 
23919 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
23920 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
23921 }
23922 
23923 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_UNSET_OBJ_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
23924 {
23925 	USE_OPLINE
23926 	zend_free_op free_op1;
23927 	zval *container;
23928 	zval *offset;
23929 
23930 	SAVE_OPLINE();
23931 	container = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
23932 	if (IS_VAR == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
23933 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
23934 	}
23935 	offset = RT_CONSTANT(opline, opline->op2);
23936 
23937 	do {
23938 		if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) {
23939 			if (Z_ISREF_P(container)) {
23940 				container = Z_REFVAL_P(container);
23941 				if (Z_TYPE_P(container) != IS_OBJECT) {
23942 					break;
23943 				}
23944 			} else {
23945 				break;
23946 			}
23947 		}
23948 		if (Z_OBJ_HT_P(container)->unset_property) {
23949 			Z_OBJ_HT_P(container)->unset_property(container, offset, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL));
23950 		} else {
23951 			zend_wrong_property_unset(offset);
23952 		}
23953 	} while (0);
23954 
23955 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
23956 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
23957 }
23958 
23959 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_YIELD_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
23960 {
23961 	USE_OPLINE
23962 
23963 	zend_generator *generator = zend_get_running_generator(EXECUTE_DATA_C);
23964 
23965 	SAVE_OPLINE();
23966 	if (UNEXPECTED(generator->flags & ZEND_GENERATOR_FORCED_CLOSE)) {
23967 		ZEND_VM_TAIL_CALL(zend_yield_in_closed_generator_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
23968 	}
23969 
23970 	/* Destroy the previously yielded value */
23971 	zval_ptr_dtor(&generator->value);
23972 
23973 	/* Destroy the previously yielded key */
23974 	zval_ptr_dtor(&generator->key);
23975 
23976 	/* Set the new yielded value */
23977 	if (IS_VAR != IS_UNUSED) {
23978 		zend_free_op free_op1;
23979 
23980 		if (UNEXPECTED(EX(func)->op_array.fn_flags & ZEND_ACC_RETURN_REFERENCE)) {
23981 			/* Constants and temporary variables aren't yieldable by reference,
23982 			 * but we still allow them with a notice. */
23983 			if (IS_VAR & (IS_CONST|IS_TMP_VAR)) {
23984 				zval *value;
23985 
23986 				zend_error(E_NOTICE, "Only variable references should be yielded by reference");
23987 
23988 				value = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
23989 				ZVAL_COPY_VALUE(&generator->value, value);
23990 				if (IS_VAR == IS_CONST) {
23991 					if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
23992 						Z_ADDREF(generator->value);
23993 					}
23994 				}
23995 			} else {
23996 				zval *value_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
23997 
23998 				/* If a function call result is yielded and the function did
23999 				 * not return by reference we throw a notice. */
24000 				if (IS_VAR == IS_VAR &&
24001 				    (value_ptr == &EG(uninitialized_zval) ||
24002 				     (opline->extended_value == ZEND_RETURNS_FUNCTION &&
24003 				      !Z_ISREF_P(value_ptr)))) {
24004 					zend_error(E_NOTICE, "Only variable references should be yielded by reference");
24005 					ZVAL_COPY(&generator->value, value_ptr);
24006 				} else {
24007 					if (Z_ISREF_P(value_ptr)) {
24008 						Z_ADDREF_P(value_ptr);
24009 					} else {
24010 						ZVAL_MAKE_REF_EX(value_ptr, 2);
24011 					}
24012 					ZVAL_REF(&generator->value, Z_REF_P(value_ptr));
24013 				}
24014 
24015 				if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
24016 			}
24017 		} else {
24018 			zval *value = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
24019 
24020 			/* Consts, temporary variables and references need copying */
24021 			if (IS_VAR == IS_CONST) {
24022 				ZVAL_COPY_VALUE(&generator->value, value);
24023 				if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
24024 					Z_ADDREF(generator->value);
24025 				}
24026 			} else if (IS_VAR == IS_TMP_VAR) {
24027 				ZVAL_COPY_VALUE(&generator->value, value);
24028             } else if ((IS_VAR & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
24029 				ZVAL_COPY(&generator->value, Z_REFVAL_P(value));
24030 				zval_ptr_dtor_nogc(free_op1);
24031 			} else {
24032 				ZVAL_COPY_VALUE(&generator->value, value);
24033 				if (IS_VAR == IS_CV) {
24034 					if (Z_OPT_REFCOUNTED_P(value)) Z_ADDREF_P(value);
24035 				}
24036 			}
24037 		}
24038 	} else {
24039 		/* If no value was specified yield null */
24040 		ZVAL_NULL(&generator->value);
24041 	}
24042 
24043 	/* Set the new yielded key */
24044 	if (IS_CONST != IS_UNUSED) {
24045 
24046 		zval *key = RT_CONSTANT(opline, opline->op2);
24047 
24048 		/* Consts, temporary variables and references need copying */
24049 		if (IS_CONST == IS_CONST) {
24050 			ZVAL_COPY_VALUE(&generator->key, key);
24051 			if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->key))) {
24052 				Z_ADDREF(generator->key);
24053 			}
24054 		} else if (IS_CONST == IS_TMP_VAR) {
24055 			ZVAL_COPY_VALUE(&generator->key, key);
24056 		} else if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(key)) {
24057 			ZVAL_COPY(&generator->key, Z_REFVAL_P(key));
24058 
24059 		} else {
24060 			ZVAL_COPY_VALUE(&generator->key, key);
24061 			if (IS_CONST == IS_CV) {
24062 				if (Z_OPT_REFCOUNTED_P(key)) Z_ADDREF_P(key);
24063 			}
24064 		}
24065 
24066 		if (Z_TYPE(generator->key) == IS_LONG
24067 		    && Z_LVAL(generator->key) > generator->largest_used_integer_key
24068 		) {
24069 			generator->largest_used_integer_key = Z_LVAL(generator->key);
24070 		}
24071 	} else {
24072 		/* If no key was specified we use auto-increment keys */
24073 		generator->largest_used_integer_key++;
24074 		ZVAL_LONG(&generator->key, generator->largest_used_integer_key);
24075 	}
24076 
24077 	if (RETURN_VALUE_USED(opline)) {
24078 		/* If the return value of yield is used set the send
24079 		 * target and initialize it to NULL */
24080 		generator->send_target = EX_VAR(opline->result.var);
24081 		ZVAL_NULL(generator->send_target);
24082 	} else {
24083 		generator->send_target = NULL;
24084 	}
24085 
24086 	/* We increment to the next op, so we are at the correct position when the
24087 	 * generator is resumed. */
24088 	ZEND_VM_INC_OPCODE();
24089 
24090 	/* The GOTO VM uses a local opline variable. We need to set the opline
24091 	 * variable in execute_data so we don't resume at an old position. */
24092 	SAVE_OPLINE();
24093 
24094 	ZEND_VM_RETURN();
24095 }
24096 
24097 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IN_ARRAY_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
24098 {
24099 	USE_OPLINE
24100 	zend_free_op free_op1;
24101 	zval *op1;
24102 	HashTable *ht = Z_ARRVAL_P(RT_CONSTANT(opline, opline->op2));
24103 	int result;
24104 
24105 	SAVE_OPLINE();
24106 	op1 = _get_zval_ptr_var_deref(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
24107 	if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
24108 		result = zend_hash_exists(ht, Z_STR_P(op1));
24109 	} else if (opline->extended_value) {
24110 		if (EXPECTED(Z_TYPE_P(op1) == IS_LONG)) {
24111 			result = zend_hash_index_exists(ht, Z_LVAL_P(op1));
24112 		} else {
24113 			result = 0;
24114 		}
24115 	} else if (Z_TYPE_P(op1) <= IS_FALSE) {
24116 		result = zend_hash_exists(ht, ZSTR_EMPTY_ALLOC());
24117 	} else {
24118 		zend_string *key;
24119 		zval key_tmp, result_tmp;
24120 
24121 		result = 0;
24122 		ZEND_HASH_FOREACH_STR_KEY(ht, key) {
24123 			ZVAL_STR(&key_tmp, key);
24124 			compare_function(&result_tmp, op1, &key_tmp);
24125 			if (Z_LVAL(result_tmp) == 0) {
24126 				result = 1;
24127 				break;
24128 			}
24129 		} ZEND_HASH_FOREACH_END();
24130 	}
24131 	zval_ptr_dtor_nogc(free_op1);
24132 	ZEND_VM_SMART_BRANCH(result, 1);
24133 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
24134 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
24135 }
24136 
24137 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_obj_helper_SPEC_VAR_TMPVAR(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
24138 {
24139 	USE_OPLINE
24140 	zend_free_op free_op1, free_op2, free_op_data1;
24141 	zval *object;
24142 	zval *property;
24143 	zval *value;
24144 	zval *zptr;
24145 
24146 	SAVE_OPLINE();
24147 	object = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
24148 
24149 	if (IS_VAR == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
24150 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
24151 	}
24152 
24153 	property = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
24154 
24155 	do {
24156 		value = get_op_data_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data1);
24157 
24158 		if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
24159 			if (Z_ISREF_P(object)) {
24160 				object = Z_REFVAL_P(object);
24161 				if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
24162 					goto assign_op_object;
24163 				}
24164 			}
24165 			if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
24166 				break;
24167 			}
24168 		}
24169 
24170 		/* here we are sure we are dealing with an object */
24171 assign_op_object:
24172 		if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
24173 			&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR((opline+1)->extended_value) : NULL))) != NULL)) {
24174 			if (UNEXPECTED(Z_ISERROR_P(zptr))) {
24175 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
24176 					ZVAL_NULL(EX_VAR(opline->result.var));
24177 				}
24178 			} else {
24179 				ZVAL_DEREF(zptr);
24180 
24181 				binary_op(zptr, zptr, value);
24182 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
24183 					ZVAL_COPY(EX_VAR(opline->result.var), zptr);
24184 				}
24185 			}
24186 		} else {
24187 			zend_assign_op_overloaded_property(object, property, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR((opline+1)->extended_value) : NULL), value, binary_op OPLINE_CC EXECUTE_DATA_CC);
24188 		}
24189 	} while (0);
24190 
24191 	FREE_OP(free_op_data1);
24192 	zval_ptr_dtor_nogc(free_op2);
24193 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
24194 	/* assign_obj has two opcodes! */
24195 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
24196 }
24197 
24198 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_dim_helper_SPEC_VAR_TMPVAR(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
24199 {
24200 	USE_OPLINE
24201 	zend_free_op free_op1, free_op2, free_op_data1;
24202 	zval *var_ptr;
24203 	zval *value, *container, *dim;
24204 
24205 	SAVE_OPLINE();
24206 	container = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
24207 
24208 	if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
24209 assign_dim_op_array:
24210 		SEPARATE_ARRAY(container);
24211 assign_dim_op_new_array:
24212 		dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
24213 		if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) {
24214 			var_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(container), &EG(uninitialized_zval));
24215 			if (UNEXPECTED(!var_ptr)) {
24216 				zend_cannot_add_element();
24217 				goto assign_dim_op_ret_null;
24218 			}
24219 		} else {
24220 			if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
24221 				var_ptr = zend_fetch_dimension_address_inner_RW_CONST(Z_ARRVAL_P(container), dim EXECUTE_DATA_CC);
24222 			} else {
24223 				var_ptr = zend_fetch_dimension_address_inner_RW(Z_ARRVAL_P(container), dim EXECUTE_DATA_CC);
24224 			}
24225 			if (UNEXPECTED(!var_ptr)) {
24226 				goto assign_dim_op_ret_null;
24227 			}
24228 			ZVAL_DEREF(var_ptr);
24229 		}
24230 
24231 		value = get_op_data_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data1);
24232 
24233 		binary_op(var_ptr, var_ptr, value);
24234 
24235 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
24236 			ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
24237 		}
24238 	} else {
24239 		if (EXPECTED(Z_ISREF_P(container))) {
24240 			container = Z_REFVAL_P(container);
24241 			if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
24242 				goto assign_dim_op_array;
24243 			}
24244 		} else if (IS_VAR == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(container) == IS_UNDEF)) {
24245 			container = GET_OP1_UNDEF_CV(container, BP_VAR_RW);
24246 assign_dim_op_convert_to_array:
24247 			ZVAL_ARR(container, zend_new_array(8));
24248 			goto assign_dim_op_new_array;
24249 		}
24250 
24251 		dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
24252 
24253 		if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
24254 			value = get_op_data_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data1);
24255 			if ((IS_TMP_VAR|IS_VAR) == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
24256 				dim++;
24257 			}
24258 			zend_binary_assign_op_obj_dim(container, dim, value, UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL, binary_op EXECUTE_DATA_CC);
24259 		} else {
24260 			if (UNEXPECTED(Z_TYPE_P(container) == IS_STRING)) {
24261 				if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) {
24262 					zend_use_new_element_for_string();
24263 				} else {
24264 					zend_check_string_offset(dim, BP_VAR_RW EXECUTE_DATA_CC);
24265 					zend_wrong_string_offset(EXECUTE_DATA_C);
24266 				}
24267 				UNDEF_RESULT();
24268 			} else if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) {
24269 				goto assign_dim_op_convert_to_array;
24270 			} else {
24271 				if (UNEXPECTED(IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(container)))) {
24272 					zend_use_scalar_as_array();
24273 				}
24274 assign_dim_op_ret_null:
24275 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
24276 					ZVAL_NULL(EX_VAR(opline->result.var));
24277 				}
24278 			}
24279 			value = get_op_data_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data1);
24280 		}
24281 	}
24282 
24283 	zval_ptr_dtor_nogc(free_op2);
24284 	FREE_OP(free_op_data1);
24285 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
24286 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
24287 }
24288 
24289 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_simple_helper_SPEC_VAR_TMPVAR(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
24290 {
24291 	USE_OPLINE
24292 	zend_free_op free_op1, free_op2;
24293 	zval *var_ptr;
24294 	zval *value;
24295 
24296 	SAVE_OPLINE();
24297 	value = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
24298 	var_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
24299 
24300 	if (IS_VAR == IS_VAR && UNEXPECTED(Z_ISERROR_P(var_ptr))) {
24301 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
24302 			ZVAL_NULL(EX_VAR(opline->result.var));
24303 		}
24304 	} else {
24305 		ZVAL_DEREF(var_ptr);
24306 
24307 		binary_op(var_ptr, var_ptr, value);
24308 
24309 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
24310 			ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
24311 		}
24312 	}
24313 
24314 	zval_ptr_dtor_nogc(free_op2);
24315 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
24316 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
24317 }
24318 
24319 static zend_always_inline ZEND_OPCODE_HANDLER_RET zend_binary_assign_op_helper_SPEC_VAR_TMPVAR(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
24320 {
24321 #if 1 && (IS_TMP_VAR|IS_VAR) == IS_UNUSED
24322 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_VAR_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24323 #else
24324 # if 0 || IS_VAR != IS_UNUSED
24325 #  if 0
24326 	/* opline->extended_value checks are specialized, don't need opline */
24327 	USE_OPLINE
24328 #  endif
24329 
24330 	if (EXPECTED(1)) {
24331 		ZEND_VM_TAIL_CALL(zend_binary_assign_op_simple_helper_SPEC_VAR_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24332 	}
24333 	if (EXPECTED(0)) {
24334 		ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_VAR_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24335 	}
24336 # endif
24337 
24338 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_obj_helper_SPEC_VAR_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24339 #endif
24340 }
24341 
24342 static zend_always_inline ZEND_OPCODE_HANDLER_RET zend_binary_assign_op_helper_SPEC_VAR_TMPVAR_DIM(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
24343 {
24344 #if 1 && (IS_TMP_VAR|IS_VAR) == IS_UNUSED
24345 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_VAR_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24346 #else
24347 # if 0 || IS_VAR != IS_UNUSED
24348 #  if 0
24349 	/* opline->extended_value checks are specialized, don't need opline */
24350 	USE_OPLINE
24351 #  endif
24352 
24353 	if (EXPECTED(0)) {
24354 		ZEND_VM_TAIL_CALL(zend_binary_assign_op_simple_helper_SPEC_VAR_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24355 	}
24356 	if (EXPECTED(1)) {
24357 		ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_VAR_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24358 	}
24359 # endif
24360 
24361 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_obj_helper_SPEC_VAR_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24362 #endif
24363 }
24364 
24365 static zend_always_inline ZEND_OPCODE_HANDLER_RET zend_binary_assign_op_helper_SPEC_VAR_TMPVAR_OBJ(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
24366 {
24367 #if 1 && (IS_TMP_VAR|IS_VAR) == IS_UNUSED
24368 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_VAR_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24369 #else
24370 # if 0 || IS_VAR != IS_UNUSED
24371 #  if 0
24372 	/* opline->extended_value checks are specialized, don't need opline */
24373 	USE_OPLINE
24374 #  endif
24375 
24376 	if (EXPECTED(0)) {
24377 		ZEND_VM_TAIL_CALL(zend_binary_assign_op_simple_helper_SPEC_VAR_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24378 	}
24379 	if (EXPECTED(0)) {
24380 		ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_VAR_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24381 	}
24382 # endif
24383 
24384 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_obj_helper_SPEC_VAR_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24385 #endif
24386 }
24387 
24388 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_ADD_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
24389 {
24390 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR(add_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24391 }
24392 
24393 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_ADD_SPEC_VAR_TMPVAR_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
24394 {
24395 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR_DIM(add_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24396 }
24397 
24398 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_ADD_SPEC_VAR_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
24399 {
24400 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR_OBJ(add_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24401 }
24402 
24403 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SUB_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
24404 {
24405 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR(sub_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24406 }
24407 
24408 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SUB_SPEC_VAR_TMPVAR_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
24409 {
24410 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR_DIM(sub_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24411 }
24412 
24413 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SUB_SPEC_VAR_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
24414 {
24415 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR_OBJ(sub_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24416 }
24417 
24418 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MUL_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
24419 {
24420 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR(mul_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24421 }
24422 
24423 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MUL_SPEC_VAR_TMPVAR_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
24424 {
24425 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR_DIM(mul_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24426 }
24427 
24428 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MUL_SPEC_VAR_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
24429 {
24430 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR_OBJ(mul_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24431 }
24432 
24433 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIV_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
24434 {
24435 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR(div_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24436 }
24437 
24438 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIV_SPEC_VAR_TMPVAR_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
24439 {
24440 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR_DIM(div_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24441 }
24442 
24443 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIV_SPEC_VAR_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
24444 {
24445 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR_OBJ(div_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24446 }
24447 
24448 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MOD_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
24449 {
24450 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR(mod_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24451 }
24452 
24453 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MOD_SPEC_VAR_TMPVAR_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
24454 {
24455 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR_DIM(mod_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24456 }
24457 
24458 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MOD_SPEC_VAR_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
24459 {
24460 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR_OBJ(mod_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24461 }
24462 
24463 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SL_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
24464 {
24465 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR(shift_left_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24466 }
24467 
24468 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SL_SPEC_VAR_TMPVAR_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
24469 {
24470 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR_DIM(shift_left_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24471 }
24472 
24473 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SL_SPEC_VAR_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
24474 {
24475 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR_OBJ(shift_left_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24476 }
24477 
24478 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SR_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
24479 {
24480 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR(shift_right_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24481 }
24482 
24483 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SR_SPEC_VAR_TMPVAR_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
24484 {
24485 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR_DIM(shift_right_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24486 }
24487 
24488 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SR_SPEC_VAR_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
24489 {
24490 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR_OBJ(shift_right_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24491 }
24492 
24493 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_CONCAT_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
24494 {
24495 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR(concat_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24496 }
24497 
24498 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_CONCAT_SPEC_VAR_TMPVAR_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
24499 {
24500 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR_DIM(concat_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24501 }
24502 
24503 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_CONCAT_SPEC_VAR_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
24504 {
24505 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR_OBJ(concat_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24506 }
24507 
24508 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_OR_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
24509 {
24510 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR(bitwise_or_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24511 }
24512 
24513 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_OR_SPEC_VAR_TMPVAR_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
24514 {
24515 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR_DIM(bitwise_or_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24516 }
24517 
24518 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_OR_SPEC_VAR_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
24519 {
24520 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR_OBJ(bitwise_or_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24521 }
24522 
24523 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_AND_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
24524 {
24525 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR(bitwise_and_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24526 }
24527 
24528 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_AND_SPEC_VAR_TMPVAR_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
24529 {
24530 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR_DIM(bitwise_and_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24531 }
24532 
24533 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_AND_SPEC_VAR_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
24534 {
24535 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR_OBJ(bitwise_and_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24536 }
24537 
24538 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_XOR_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
24539 {
24540 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR(bitwise_xor_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24541 }
24542 
24543 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_XOR_SPEC_VAR_TMPVAR_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
24544 {
24545 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR_DIM(bitwise_xor_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24546 }
24547 
24548 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_XOR_SPEC_VAR_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
24549 {
24550 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR_OBJ(bitwise_xor_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24551 }
24552 
24553 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_POW_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
24554 {
24555 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR(pow_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24556 }
24557 
24558 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_POW_SPEC_VAR_TMPVAR_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
24559 {
24560 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR_DIM(pow_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24561 }
24562 
24563 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_POW_SPEC_VAR_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
24564 {
24565 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR_OBJ(pow_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24566 }
24567 
24568 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_pre_incdec_property_helper_SPEC_VAR_TMPVAR(int inc ZEND_OPCODE_HANDLER_ARGS_DC)
24569 {
24570 	USE_OPLINE
24571 	zend_free_op free_op1, free_op2;
24572 	zval *object;
24573 	zval *property;
24574 	zval *zptr;
24575 
24576 	SAVE_OPLINE();
24577 	object = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
24578 
24579 	if (IS_VAR == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
24580 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
24581 	}
24582 
24583 	property = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
24584 
24585 	do {
24586 		if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
24587 			if (Z_ISREF_P(object)) {
24588 				object = Z_REFVAL_P(object);
24589 				if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
24590 					goto pre_incdec_object;
24591 				}
24592 			}
24593 			if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
24594 				break;
24595 			}
24596 		}
24597 
24598 		/* here we are sure we are dealing with an object */
24599 pre_incdec_object:
24600 		if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
24601 			&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL))) != NULL)) {
24602 			if (UNEXPECTED(Z_ISERROR_P(zptr))) {
24603 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
24604 					ZVAL_NULL(EX_VAR(opline->result.var));
24605 				}
24606 			} else {
24607 				if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
24608 					if (inc) {
24609 						fast_long_increment_function(zptr);
24610 					} else {
24611 						fast_long_decrement_function(zptr);
24612 					}
24613 				} else {
24614 					ZVAL_DEREF(zptr);
24615 
24616 					if (inc) {
24617 						increment_function(zptr);
24618 					} else {
24619 						decrement_function(zptr);
24620 					}
24621 				}
24622 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
24623 					ZVAL_COPY(EX_VAR(opline->result.var), zptr);
24624 				}
24625 			}
24626 		} else {
24627 			zend_pre_incdec_overloaded_property(object, property, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), inc OPLINE_CC EXECUTE_DATA_CC);
24628 		}
24629 	} while (0);
24630 
24631 	zval_ptr_dtor_nogc(free_op2);
24632 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
24633 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
24634 }
24635 
24636 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_INC_OBJ_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
24637 {
24638 	ZEND_VM_TAIL_CALL(zend_pre_incdec_property_helper_SPEC_VAR_TMPVAR(1 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24639 }
24640 
24641 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_DEC_OBJ_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
24642 {
24643 	ZEND_VM_TAIL_CALL(zend_pre_incdec_property_helper_SPEC_VAR_TMPVAR(0 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24644 }
24645 
24646 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_post_incdec_property_helper_SPEC_VAR_TMPVAR(int inc ZEND_OPCODE_HANDLER_ARGS_DC)
24647 {
24648 	USE_OPLINE
24649 	zend_free_op free_op1, free_op2;
24650 	zval *object;
24651 	zval *property;
24652 	zval *zptr;
24653 
24654 	SAVE_OPLINE();
24655 	object = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
24656 
24657 	if (IS_VAR == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
24658 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
24659 	}
24660 
24661 	property = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
24662 
24663 	do {
24664 		if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
24665 			if (Z_ISREF_P(object)) {
24666 				object = Z_REFVAL_P(object);
24667 				if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
24668 					goto post_incdec_object;
24669 				}
24670 			}
24671 			if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
24672 				break;
24673 			}
24674 		}
24675 
24676 		/* here we are sure we are dealing with an object */
24677 post_incdec_object:
24678 		if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
24679 			&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL))) != NULL)) {
24680 			if (UNEXPECTED(Z_ISERROR_P(zptr))) {
24681 				ZVAL_NULL(EX_VAR(opline->result.var));
24682 			} else {
24683 				if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
24684 					ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(zptr));
24685 					if (inc) {
24686 						fast_long_increment_function(zptr);
24687 					} else {
24688 						fast_long_decrement_function(zptr);
24689 					}
24690 				} else {
24691 					ZVAL_DEREF(zptr);
24692 					ZVAL_COPY(EX_VAR(opline->result.var), zptr);
24693 					if (inc) {
24694 						increment_function(zptr);
24695 					} else {
24696 						decrement_function(zptr);
24697 					}
24698 				}
24699 			}
24700 		} else {
24701 			zend_post_incdec_overloaded_property(object, property, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), inc OPLINE_CC EXECUTE_DATA_CC);
24702 		}
24703 	} while (0);
24704 
24705 	zval_ptr_dtor_nogc(free_op2);
24706 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
24707 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
24708 }
24709 
24710 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_POST_INC_OBJ_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
24711 {
24712 	ZEND_VM_TAIL_CALL(zend_post_incdec_property_helper_SPEC_VAR_TMPVAR(1 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24713 }
24714 
24715 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_POST_DEC_OBJ_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
24716 {
24717 	ZEND_VM_TAIL_CALL(zend_post_incdec_property_helper_SPEC_VAR_TMPVAR(0 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24718 }
24719 
24720 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_W_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
24721 {
24722 	USE_OPLINE
24723 	zend_free_op free_op1, free_op2;
24724 	zval *container;
24725 
24726 	SAVE_OPLINE();
24727 	container = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
24728 	zend_fetch_dimension_address_W(container, _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC), (IS_TMP_VAR|IS_VAR) OPLINE_CC EXECUTE_DATA_CC);
24729 	zval_ptr_dtor_nogc(free_op2);
24730 	if (IS_VAR == IS_VAR) {
24731 		zval *result = EX_VAR(opline->result.var);
24732 		FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(free_op1, result);
24733 	}
24734 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
24735 }
24736 
24737 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_RW_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
24738 {
24739 	USE_OPLINE
24740 	zend_free_op free_op1, free_op2;
24741 	zval *container;
24742 
24743 	SAVE_OPLINE();
24744 	container = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
24745 	zend_fetch_dimension_address_RW(container, _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC), (IS_TMP_VAR|IS_VAR) OPLINE_CC EXECUTE_DATA_CC);
24746 	zval_ptr_dtor_nogc(free_op2);
24747 	if (IS_VAR == IS_VAR) {
24748 		zval *result = EX_VAR(opline->result.var);
24749 		FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(free_op1, result);
24750 	}
24751 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
24752 }
24753 
24754 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
24755 {
24756 	if (UNEXPECTED(ZEND_CALL_INFO(EX(call)) & ZEND_CALL_SEND_ARG_BY_REF)) {
24757         if ((IS_VAR & (IS_CONST|IS_TMP_VAR))) {
24758 			ZEND_VM_TAIL_CALL(zend_use_tmp_in_write_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
24759         }
24760 		ZEND_VM_TAIL_CALL(ZEND_FETCH_DIM_W_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
24761 	} else {
24762 		if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) {
24763 			ZEND_VM_TAIL_CALL(zend_use_undef_in_read_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
24764 		}
24765 		ZEND_VM_TAIL_CALL(ZEND_FETCH_DIM_R_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
24766 	}
24767 }
24768 
24769 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_UNSET_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
24770 {
24771 	USE_OPLINE
24772 	zend_free_op free_op1, free_op2;
24773 	zval *container;
24774 
24775 	SAVE_OPLINE();
24776 	container = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
24777 	zend_fetch_dimension_address_UNSET(container, _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC), (IS_TMP_VAR|IS_VAR) OPLINE_CC EXECUTE_DATA_CC);
24778 	zval_ptr_dtor_nogc(free_op2);
24779 	if (IS_VAR == IS_VAR) {
24780 		zval *result = EX_VAR(opline->result.var);
24781 		FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(free_op1, result);
24782 	}
24783 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
24784 }
24785 
24786 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_W_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
24787 {
24788 	USE_OPLINE
24789 	zend_free_op free_op1, free_op2;
24790 	zval *property, *container, *result;
24791 
24792 	SAVE_OPLINE();
24793 
24794 	container = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
24795 	if (IS_VAR == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
24796 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
24797 	}
24798 
24799 	property = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
24800 	result = EX_VAR(opline->result.var);
24801 	zend_fetch_property_address(result, container, IS_VAR, property, (IS_TMP_VAR|IS_VAR), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_W OPLINE_CC);
24802 	zval_ptr_dtor_nogc(free_op2);
24803 	if (IS_VAR == IS_VAR) {
24804 		FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(free_op1, result);
24805 	}
24806 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
24807 }
24808 
24809 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_RW_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
24810 {
24811 	USE_OPLINE
24812 	zend_free_op free_op1, free_op2;
24813 	zval *property, *container, *result;
24814 
24815 	SAVE_OPLINE();
24816 	container = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
24817 
24818 	if (IS_VAR == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
24819 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
24820 	}
24821 	property = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
24822 	result = EX_VAR(opline->result.var);
24823 	zend_fetch_property_address(result, container, IS_VAR, property, (IS_TMP_VAR|IS_VAR), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_RW OPLINE_CC);
24824 	zval_ptr_dtor_nogc(free_op2);
24825 	if (IS_VAR == IS_VAR) {
24826 		FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(free_op1, result);
24827 	}
24828 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
24829 }
24830 
24831 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_FUNC_ARG_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
24832 {
24833 	if (UNEXPECTED(ZEND_CALL_INFO(EX(call)) & ZEND_CALL_SEND_ARG_BY_REF)) {
24834 		/* Behave like FETCH_OBJ_W */
24835 		if ((IS_VAR & (IS_CONST|IS_TMP_VAR))) {
24836 			ZEND_VM_TAIL_CALL(zend_use_tmp_in_write_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
24837 		}
24838 
24839 		ZEND_VM_TAIL_CALL(ZEND_FETCH_OBJ_W_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
24840 	} else {
24841 		ZEND_VM_TAIL_CALL(ZEND_FETCH_OBJ_R_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
24842 	}
24843 }
24844 
24845 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_UNSET_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
24846 {
24847 	USE_OPLINE
24848 	zend_free_op free_op1, free_op2;
24849 	zval *container, *property, *result;
24850 
24851 	SAVE_OPLINE();
24852 	container = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
24853 
24854 	if (IS_VAR == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
24855 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
24856 	}
24857 
24858 	property = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
24859 	result = EX_VAR(opline->result.var);
24860 	zend_fetch_property_address(result, container, IS_VAR, property, (IS_TMP_VAR|IS_VAR), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_UNSET OPLINE_CC);
24861 	zval_ptr_dtor_nogc(free_op2);
24862 	if (IS_VAR == IS_VAR) {
24863 		FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(free_op1, result);
24864 	}
24865 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
24866 }
24867 
24868 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_LIST_W_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
24869 {
24870 	USE_OPLINE
24871 	zend_free_op free_op1, free_op2;
24872 	zval *container, *dim;
24873 
24874 	SAVE_OPLINE();
24875 	container = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
24876 	dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
24877 
24878 	if (IS_VAR == IS_VAR
24879 		&& Z_TYPE_P(EX_VAR(opline->op1.var)) != IS_INDIRECT
24880 		&& UNEXPECTED(!Z_ISREF_P(container))
24881 	) {
24882 		zend_error(E_NOTICE, "Attempting to set reference to non referenceable value");
24883 		zend_fetch_dimension_address_LIST_r(container, dim, (IS_TMP_VAR|IS_VAR) OPLINE_CC EXECUTE_DATA_CC);
24884 	} else {
24885 		zend_fetch_dimension_address_W(container, dim, (IS_TMP_VAR|IS_VAR) OPLINE_CC EXECUTE_DATA_CC);
24886 	}
24887 
24888 	zval_ptr_dtor_nogc(free_op2);
24889 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
24890 }
24891 
24892 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_VAR_TMPVAR_OP_DATA_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
24893 {
24894 	USE_OPLINE
24895 	zend_free_op free_op1, free_op2;
24896 	zval *object, *property, *value, tmp;
24897 
24898 	SAVE_OPLINE();
24899 	object = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
24900 
24901 	if (IS_VAR == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
24902 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
24903 	}
24904 
24905 	property = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
24906 	value = RT_CONSTANT((opline+1), (opline+1)->op1);
24907 
24908 	if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
24909 		if (Z_ISREF_P(object)) {
24910 			object = Z_REFVAL_P(object);
24911 			if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
24912 				goto assign_object;
24913 			}
24914 		}
24915 		if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
24916 
24917 			goto exit_assign_obj;
24918 		}
24919 	}
24920 
24921 assign_object:
24922 	if ((IS_TMP_VAR|IS_VAR) == IS_CONST &&
24923 	    EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(opline->extended_value))) {
24924 		uintptr_t prop_offset = (uintptr_t)CACHED_PTR(opline->extended_value + sizeof(void*));
24925 		zend_object *zobj = Z_OBJ_P(object);
24926 		zval *property_val;
24927 
24928 		if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
24929 			property_val = OBJ_PROP(zobj, prop_offset);
24930 			if (Z_TYPE_P(property_val) != IS_UNDEF) {
24931 fast_assign_obj:
24932 				value = zend_assign_to_variable(property_val, value, IS_CONST);
24933 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
24934 					ZVAL_COPY(EX_VAR(opline->result.var), value);
24935 				}
24936 				goto exit_assign_obj;
24937 			}
24938 		} else {
24939 			if (EXPECTED(zobj->properties != NULL)) {
24940 				if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
24941 					if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
24942 						GC_DELREF(zobj->properties);
24943 					}
24944 					zobj->properties = zend_array_dup(zobj->properties);
24945 				}
24946 				property_val = zend_hash_find_ex(zobj->properties, Z_STR_P(property), 1);
24947 				if (property_val) {
24948 					goto fast_assign_obj;
24949 				}
24950 			}
24951 
24952 			if (!zobj->ce->__set) {
24953 
24954 				if (EXPECTED(zobj->properties == NULL)) {
24955 					rebuild_object_properties(zobj);
24956 				}
24957 				if (IS_CONST == IS_CONST) {
24958 					if (UNEXPECTED(Z_OPT_REFCOUNTED_P(value))) {
24959 						Z_ADDREF_P(value);
24960 					}
24961 				} else if (IS_CONST != IS_TMP_VAR) {
24962 					if (Z_ISREF_P(value)) {
24963 						if (IS_CONST == IS_VAR) {
24964 							zend_reference *ref = Z_REF_P(value);
24965 							if (GC_DELREF(ref) == 0) {
24966 								ZVAL_COPY_VALUE(&tmp, Z_REFVAL_P(value));
24967 								efree_size(ref, sizeof(zend_reference));
24968 								value = &tmp;
24969 							} else {
24970 								value = Z_REFVAL_P(value);
24971 								Z_TRY_ADDREF_P(value);
24972 							}
24973 						} else {
24974 							value = Z_REFVAL_P(value);
24975 							Z_TRY_ADDREF_P(value);
24976 						}
24977 					} else if (IS_CONST == IS_CV) {
24978 						Z_TRY_ADDREF_P(value);
24979 					}
24980 				}
24981 				zend_hash_add_new(zobj->properties, Z_STR_P(property), value);
24982 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
24983 					ZVAL_COPY(EX_VAR(opline->result.var), value);
24984 				}
24985 				goto exit_assign_obj;
24986 			}
24987 		}
24988 	}
24989 
24990 	if (!Z_OBJ_HT_P(object)->write_property) {
24991 		zend_wrong_property_assignment(property OPLINE_CC EXECUTE_DATA_CC);
24992 
24993 		goto exit_assign_obj;
24994 	}
24995 
24996 	if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
24997 		ZVAL_DEREF(value);
24998 	}
24999 
25000 	Z_OBJ_HT_P(object)->write_property(object, property, value, ((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
25001 
25002 	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
25003 		ZVAL_COPY(EX_VAR(opline->result.var), value);
25004 	}
25005 
25006 exit_assign_obj:
25007 	zval_ptr_dtor_nogc(free_op2);
25008 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
25009 	/* assign_obj has two opcodes! */
25010 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
25011 }
25012 
25013 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_VAR_TMPVAR_OP_DATA_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
25014 {
25015 	USE_OPLINE
25016 	zend_free_op free_op1, free_op2, free_op_data;
25017 	zval *object, *property, *value, tmp;
25018 
25019 	SAVE_OPLINE();
25020 	object = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
25021 
25022 	if (IS_VAR == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
25023 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
25024 	}
25025 
25026 	property = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
25027 	value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
25028 
25029 	if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
25030 		if (Z_ISREF_P(object)) {
25031 			object = Z_REFVAL_P(object);
25032 			if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
25033 				goto assign_object;
25034 			}
25035 		}
25036 		if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
25037 			zval_ptr_dtor_nogc(free_op_data);
25038 			goto exit_assign_obj;
25039 		}
25040 	}
25041 
25042 assign_object:
25043 	if ((IS_TMP_VAR|IS_VAR) == IS_CONST &&
25044 	    EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(opline->extended_value))) {
25045 		uintptr_t prop_offset = (uintptr_t)CACHED_PTR(opline->extended_value + sizeof(void*));
25046 		zend_object *zobj = Z_OBJ_P(object);
25047 		zval *property_val;
25048 
25049 		if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
25050 			property_val = OBJ_PROP(zobj, prop_offset);
25051 			if (Z_TYPE_P(property_val) != IS_UNDEF) {
25052 fast_assign_obj:
25053 				value = zend_assign_to_variable(property_val, value, IS_TMP_VAR);
25054 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
25055 					ZVAL_COPY(EX_VAR(opline->result.var), value);
25056 				}
25057 				goto exit_assign_obj;
25058 			}
25059 		} else {
25060 			if (EXPECTED(zobj->properties != NULL)) {
25061 				if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
25062 					if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
25063 						GC_DELREF(zobj->properties);
25064 					}
25065 					zobj->properties = zend_array_dup(zobj->properties);
25066 				}
25067 				property_val = zend_hash_find_ex(zobj->properties, Z_STR_P(property), 1);
25068 				if (property_val) {
25069 					goto fast_assign_obj;
25070 				}
25071 			}
25072 
25073 			if (!zobj->ce->__set) {
25074 
25075 				if (EXPECTED(zobj->properties == NULL)) {
25076 					rebuild_object_properties(zobj);
25077 				}
25078 				if (IS_TMP_VAR == IS_CONST) {
25079 					if (UNEXPECTED(Z_OPT_REFCOUNTED_P(value))) {
25080 						Z_ADDREF_P(value);
25081 					}
25082 				} else if (IS_TMP_VAR != IS_TMP_VAR) {
25083 					if (Z_ISREF_P(value)) {
25084 						if (IS_TMP_VAR == IS_VAR) {
25085 							zend_reference *ref = Z_REF_P(value);
25086 							if (GC_DELREF(ref) == 0) {
25087 								ZVAL_COPY_VALUE(&tmp, Z_REFVAL_P(value));
25088 								efree_size(ref, sizeof(zend_reference));
25089 								value = &tmp;
25090 							} else {
25091 								value = Z_REFVAL_P(value);
25092 								Z_TRY_ADDREF_P(value);
25093 							}
25094 						} else {
25095 							value = Z_REFVAL_P(value);
25096 							Z_TRY_ADDREF_P(value);
25097 						}
25098 					} else if (IS_TMP_VAR == IS_CV) {
25099 						Z_TRY_ADDREF_P(value);
25100 					}
25101 				}
25102 				zend_hash_add_new(zobj->properties, Z_STR_P(property), value);
25103 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
25104 					ZVAL_COPY(EX_VAR(opline->result.var), value);
25105 				}
25106 				goto exit_assign_obj;
25107 			}
25108 		}
25109 	}
25110 
25111 	if (!Z_OBJ_HT_P(object)->write_property) {
25112 		zend_wrong_property_assignment(property OPLINE_CC EXECUTE_DATA_CC);
25113 		zval_ptr_dtor_nogc(free_op_data);
25114 		goto exit_assign_obj;
25115 	}
25116 
25117 	if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
25118 		ZVAL_DEREF(value);
25119 	}
25120 
25121 	Z_OBJ_HT_P(object)->write_property(object, property, value, ((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
25122 
25123 	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
25124 		ZVAL_COPY(EX_VAR(opline->result.var), value);
25125 	}
25126 	zval_ptr_dtor_nogc(free_op_data);
25127 exit_assign_obj:
25128 	zval_ptr_dtor_nogc(free_op2);
25129 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
25130 	/* assign_obj has two opcodes! */
25131 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
25132 }
25133 
25134 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_VAR_TMPVAR_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
25135 {
25136 	USE_OPLINE
25137 	zend_free_op free_op1, free_op2, free_op_data;
25138 	zval *object, *property, *value, tmp;
25139 
25140 	SAVE_OPLINE();
25141 	object = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
25142 
25143 	if (IS_VAR == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
25144 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
25145 	}
25146 
25147 	property = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
25148 	value = _get_zval_ptr_var((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
25149 
25150 	if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
25151 		if (Z_ISREF_P(object)) {
25152 			object = Z_REFVAL_P(object);
25153 			if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
25154 				goto assign_object;
25155 			}
25156 		}
25157 		if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
25158 			zval_ptr_dtor_nogc(free_op_data);
25159 			goto exit_assign_obj;
25160 		}
25161 	}
25162 
25163 assign_object:
25164 	if ((IS_TMP_VAR|IS_VAR) == IS_CONST &&
25165 	    EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(opline->extended_value))) {
25166 		uintptr_t prop_offset = (uintptr_t)CACHED_PTR(opline->extended_value + sizeof(void*));
25167 		zend_object *zobj = Z_OBJ_P(object);
25168 		zval *property_val;
25169 
25170 		if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
25171 			property_val = OBJ_PROP(zobj, prop_offset);
25172 			if (Z_TYPE_P(property_val) != IS_UNDEF) {
25173 fast_assign_obj:
25174 				value = zend_assign_to_variable(property_val, value, IS_VAR);
25175 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
25176 					ZVAL_COPY(EX_VAR(opline->result.var), value);
25177 				}
25178 				goto exit_assign_obj;
25179 			}
25180 		} else {
25181 			if (EXPECTED(zobj->properties != NULL)) {
25182 				if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
25183 					if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
25184 						GC_DELREF(zobj->properties);
25185 					}
25186 					zobj->properties = zend_array_dup(zobj->properties);
25187 				}
25188 				property_val = zend_hash_find_ex(zobj->properties, Z_STR_P(property), 1);
25189 				if (property_val) {
25190 					goto fast_assign_obj;
25191 				}
25192 			}
25193 
25194 			if (!zobj->ce->__set) {
25195 
25196 				if (EXPECTED(zobj->properties == NULL)) {
25197 					rebuild_object_properties(zobj);
25198 				}
25199 				if (IS_VAR == IS_CONST) {
25200 					if (UNEXPECTED(Z_OPT_REFCOUNTED_P(value))) {
25201 						Z_ADDREF_P(value);
25202 					}
25203 				} else if (IS_VAR != IS_TMP_VAR) {
25204 					if (Z_ISREF_P(value)) {
25205 						if (IS_VAR == IS_VAR) {
25206 							zend_reference *ref = Z_REF_P(value);
25207 							if (GC_DELREF(ref) == 0) {
25208 								ZVAL_COPY_VALUE(&tmp, Z_REFVAL_P(value));
25209 								efree_size(ref, sizeof(zend_reference));
25210 								value = &tmp;
25211 							} else {
25212 								value = Z_REFVAL_P(value);
25213 								Z_TRY_ADDREF_P(value);
25214 							}
25215 						} else {
25216 							value = Z_REFVAL_P(value);
25217 							Z_TRY_ADDREF_P(value);
25218 						}
25219 					} else if (IS_VAR == IS_CV) {
25220 						Z_TRY_ADDREF_P(value);
25221 					}
25222 				}
25223 				zend_hash_add_new(zobj->properties, Z_STR_P(property), value);
25224 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
25225 					ZVAL_COPY(EX_VAR(opline->result.var), value);
25226 				}
25227 				goto exit_assign_obj;
25228 			}
25229 		}
25230 	}
25231 
25232 	if (!Z_OBJ_HT_P(object)->write_property) {
25233 		zend_wrong_property_assignment(property OPLINE_CC EXECUTE_DATA_CC);
25234 		zval_ptr_dtor_nogc(free_op_data);
25235 		goto exit_assign_obj;
25236 	}
25237 
25238 	if (IS_VAR == IS_CV || IS_VAR == IS_VAR) {
25239 		ZVAL_DEREF(value);
25240 	}
25241 
25242 	Z_OBJ_HT_P(object)->write_property(object, property, value, ((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
25243 
25244 	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
25245 		ZVAL_COPY(EX_VAR(opline->result.var), value);
25246 	}
25247 	zval_ptr_dtor_nogc(free_op_data);
25248 exit_assign_obj:
25249 	zval_ptr_dtor_nogc(free_op2);
25250 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
25251 	/* assign_obj has two opcodes! */
25252 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
25253 }
25254 
25255 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_VAR_TMPVAR_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
25256 {
25257 	USE_OPLINE
25258 	zend_free_op free_op1, free_op2;
25259 	zval *object, *property, *value, tmp;
25260 
25261 	SAVE_OPLINE();
25262 	object = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
25263 
25264 	if (IS_VAR == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
25265 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
25266 	}
25267 
25268 	property = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
25269 	value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
25270 
25271 	if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
25272 		if (Z_ISREF_P(object)) {
25273 			object = Z_REFVAL_P(object);
25274 			if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
25275 				goto assign_object;
25276 			}
25277 		}
25278 		if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
25279 
25280 			goto exit_assign_obj;
25281 		}
25282 	}
25283 
25284 assign_object:
25285 	if ((IS_TMP_VAR|IS_VAR) == IS_CONST &&
25286 	    EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(opline->extended_value))) {
25287 		uintptr_t prop_offset = (uintptr_t)CACHED_PTR(opline->extended_value + sizeof(void*));
25288 		zend_object *zobj = Z_OBJ_P(object);
25289 		zval *property_val;
25290 
25291 		if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
25292 			property_val = OBJ_PROP(zobj, prop_offset);
25293 			if (Z_TYPE_P(property_val) != IS_UNDEF) {
25294 fast_assign_obj:
25295 				value = zend_assign_to_variable(property_val, value, IS_CV);
25296 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
25297 					ZVAL_COPY(EX_VAR(opline->result.var), value);
25298 				}
25299 				goto exit_assign_obj;
25300 			}
25301 		} else {
25302 			if (EXPECTED(zobj->properties != NULL)) {
25303 				if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
25304 					if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
25305 						GC_DELREF(zobj->properties);
25306 					}
25307 					zobj->properties = zend_array_dup(zobj->properties);
25308 				}
25309 				property_val = zend_hash_find_ex(zobj->properties, Z_STR_P(property), 1);
25310 				if (property_val) {
25311 					goto fast_assign_obj;
25312 				}
25313 			}
25314 
25315 			if (!zobj->ce->__set) {
25316 
25317 				if (EXPECTED(zobj->properties == NULL)) {
25318 					rebuild_object_properties(zobj);
25319 				}
25320 				if (IS_CV == IS_CONST) {
25321 					if (UNEXPECTED(Z_OPT_REFCOUNTED_P(value))) {
25322 						Z_ADDREF_P(value);
25323 					}
25324 				} else if (IS_CV != IS_TMP_VAR) {
25325 					if (Z_ISREF_P(value)) {
25326 						if (IS_CV == IS_VAR) {
25327 							zend_reference *ref = Z_REF_P(value);
25328 							if (GC_DELREF(ref) == 0) {
25329 								ZVAL_COPY_VALUE(&tmp, Z_REFVAL_P(value));
25330 								efree_size(ref, sizeof(zend_reference));
25331 								value = &tmp;
25332 							} else {
25333 								value = Z_REFVAL_P(value);
25334 								Z_TRY_ADDREF_P(value);
25335 							}
25336 						} else {
25337 							value = Z_REFVAL_P(value);
25338 							Z_TRY_ADDREF_P(value);
25339 						}
25340 					} else if (IS_CV == IS_CV) {
25341 						Z_TRY_ADDREF_P(value);
25342 					}
25343 				}
25344 				zend_hash_add_new(zobj->properties, Z_STR_P(property), value);
25345 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
25346 					ZVAL_COPY(EX_VAR(opline->result.var), value);
25347 				}
25348 				goto exit_assign_obj;
25349 			}
25350 		}
25351 	}
25352 
25353 	if (!Z_OBJ_HT_P(object)->write_property) {
25354 		zend_wrong_property_assignment(property OPLINE_CC EXECUTE_DATA_CC);
25355 
25356 		goto exit_assign_obj;
25357 	}
25358 
25359 	if (IS_CV == IS_CV || IS_CV == IS_VAR) {
25360 		ZVAL_DEREF(value);
25361 	}
25362 
25363 	Z_OBJ_HT_P(object)->write_property(object, property, value, ((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
25364 
25365 	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
25366 		ZVAL_COPY(EX_VAR(opline->result.var), value);
25367 	}
25368 
25369 exit_assign_obj:
25370 	zval_ptr_dtor_nogc(free_op2);
25371 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
25372 	/* assign_obj has two opcodes! */
25373 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
25374 }
25375 
25376 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_VAR_TMPVAR_OP_DATA_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
25377 {
25378 	USE_OPLINE
25379 	zend_free_op free_op1;
25380 	zval *object_ptr;
25381 	zend_free_op free_op2, free_op_data;
25382 	zval *value;
25383 	zval *variable_ptr;
25384 	zval *dim;
25385 
25386 	SAVE_OPLINE();
25387 	object_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
25388 
25389 	if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
25390 try_assign_dim_array:
25391 		SEPARATE_ARRAY(object_ptr);
25392 		if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) {
25393 			value = RT_CONSTANT((opline+1), (opline+1)->op1);
25394 			if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
25395 				ZVAL_DEREF(value);
25396 			}
25397 			variable_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), value);
25398 			if (UNEXPECTED(variable_ptr == NULL)) {
25399 
25400 				zend_cannot_add_element();
25401 				goto assign_dim_error;
25402 			} else if (IS_CONST == IS_CV) {
25403 				if (Z_REFCOUNTED_P(value)) {
25404 					Z_ADDREF_P(value);
25405 				}
25406 			} else if (IS_CONST == IS_VAR) {
25407 				if (value != free_op_data) {
25408 					if (Z_REFCOUNTED_P(value)) {
25409 						Z_ADDREF_P(value);
25410 					}
25411 
25412 				}
25413 			} else if (IS_CONST == IS_CONST) {
25414 				if (UNEXPECTED(Z_REFCOUNTED_P(value))) {
25415 					Z_ADDREF_P(value);
25416 				}
25417 			}
25418 		} else {
25419 			dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
25420 			if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
25421 				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
25422 			} else {
25423 				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
25424 			}
25425 			if (UNEXPECTED(variable_ptr == NULL)) {
25426 				goto assign_dim_error;
25427 			}
25428 			value = RT_CONSTANT((opline+1), (opline+1)->op1);
25429 			value = zend_assign_to_variable(variable_ptr, value, IS_CONST);
25430 		}
25431 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
25432 			ZVAL_COPY(EX_VAR(opline->result.var), value);
25433 		}
25434 	} else {
25435 		if (EXPECTED(Z_ISREF_P(object_ptr))) {
25436 			object_ptr = Z_REFVAL_P(object_ptr);
25437 			if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
25438 				goto try_assign_dim_array;
25439 			}
25440 		}
25441 		if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) {
25442 			dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
25443 			value = RT_CONSTANT((opline+1), (opline+1)->op1);
25444 
25445 			if ((IS_TMP_VAR|IS_VAR) == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
25446 				dim++;
25447 			}
25448 			zend_assign_to_object_dim(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
25449 
25450 		} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
25451 			if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) {
25452 				zend_use_new_element_for_string();
25453 
25454 				if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
25455 				UNDEF_RESULT();
25456 				HANDLE_EXCEPTION();
25457 			} else {
25458 				dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
25459 				value = RT_CONSTANT((opline+1), (opline+1)->op1);
25460 				zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
25461 
25462 			}
25463 		} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
25464 			ZVAL_ARR(object_ptr, zend_new_array(8));
25465 			goto try_assign_dim_array;
25466 		} else {
25467 			if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) {
25468 				zend_use_scalar_as_array();
25469 			}
25470 			dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
25471 assign_dim_error:
25472 
25473 			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
25474 				ZVAL_NULL(EX_VAR(opline->result.var));
25475 			}
25476 		}
25477 	}
25478 	if ((IS_TMP_VAR|IS_VAR) != IS_UNUSED) {
25479 		zval_ptr_dtor_nogc(free_op2);
25480 	}
25481 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
25482 	/* assign_dim has two opcodes! */
25483 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
25484 }
25485 
25486 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_VAR_TMPVAR_OP_DATA_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
25487 {
25488 	USE_OPLINE
25489 	zend_free_op free_op1;
25490 	zval *object_ptr;
25491 	zend_free_op free_op2, free_op_data;
25492 	zval *value;
25493 	zval *variable_ptr;
25494 	zval *dim;
25495 
25496 	SAVE_OPLINE();
25497 	object_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
25498 
25499 	if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
25500 try_assign_dim_array:
25501 		SEPARATE_ARRAY(object_ptr);
25502 		if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) {
25503 			value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
25504 			if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
25505 				ZVAL_DEREF(value);
25506 			}
25507 			variable_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), value);
25508 			if (UNEXPECTED(variable_ptr == NULL)) {
25509 				zval_ptr_dtor_nogc(free_op_data);
25510 				zend_cannot_add_element();
25511 				goto assign_dim_error;
25512 			} else if (IS_TMP_VAR == IS_CV) {
25513 				if (Z_REFCOUNTED_P(value)) {
25514 					Z_ADDREF_P(value);
25515 				}
25516 			} else if (IS_TMP_VAR == IS_VAR) {
25517 				if (value != free_op_data) {
25518 					if (Z_REFCOUNTED_P(value)) {
25519 						Z_ADDREF_P(value);
25520 					}
25521 					zval_ptr_dtor_nogc(free_op_data);
25522 				}
25523 			} else if (IS_TMP_VAR == IS_CONST) {
25524 				if (UNEXPECTED(Z_REFCOUNTED_P(value))) {
25525 					Z_ADDREF_P(value);
25526 				}
25527 			}
25528 		} else {
25529 			dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
25530 			if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
25531 				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
25532 			} else {
25533 				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
25534 			}
25535 			if (UNEXPECTED(variable_ptr == NULL)) {
25536 				goto assign_dim_error;
25537 			}
25538 			value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
25539 			value = zend_assign_to_variable(variable_ptr, value, IS_TMP_VAR);
25540 		}
25541 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
25542 			ZVAL_COPY(EX_VAR(opline->result.var), value);
25543 		}
25544 	} else {
25545 		if (EXPECTED(Z_ISREF_P(object_ptr))) {
25546 			object_ptr = Z_REFVAL_P(object_ptr);
25547 			if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
25548 				goto try_assign_dim_array;
25549 			}
25550 		}
25551 		if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) {
25552 			dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
25553 			value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
25554 
25555 			if ((IS_TMP_VAR|IS_VAR) == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
25556 				dim++;
25557 			}
25558 			zend_assign_to_object_dim(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
25559 
25560 			zval_ptr_dtor_nogc(free_op_data);
25561 		} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
25562 			if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) {
25563 				zend_use_new_element_for_string();
25564 				zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
25565 				if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
25566 				UNDEF_RESULT();
25567 				HANDLE_EXCEPTION();
25568 			} else {
25569 				dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
25570 				value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
25571 				zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
25572 				zval_ptr_dtor_nogc(free_op_data);
25573 			}
25574 		} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
25575 			ZVAL_ARR(object_ptr, zend_new_array(8));
25576 			goto try_assign_dim_array;
25577 		} else {
25578 			if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) {
25579 				zend_use_scalar_as_array();
25580 			}
25581 			dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
25582 assign_dim_error:
25583 			zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
25584 			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
25585 				ZVAL_NULL(EX_VAR(opline->result.var));
25586 			}
25587 		}
25588 	}
25589 	if ((IS_TMP_VAR|IS_VAR) != IS_UNUSED) {
25590 		zval_ptr_dtor_nogc(free_op2);
25591 	}
25592 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
25593 	/* assign_dim has two opcodes! */
25594 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
25595 }
25596 
25597 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_VAR_TMPVAR_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
25598 {
25599 	USE_OPLINE
25600 	zend_free_op free_op1;
25601 	zval *object_ptr;
25602 	zend_free_op free_op2, free_op_data;
25603 	zval *value;
25604 	zval *variable_ptr;
25605 	zval *dim;
25606 
25607 	SAVE_OPLINE();
25608 	object_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
25609 
25610 	if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
25611 try_assign_dim_array:
25612 		SEPARATE_ARRAY(object_ptr);
25613 		if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) {
25614 			value = _get_zval_ptr_var((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
25615 			if (IS_VAR == IS_CV || IS_VAR == IS_VAR) {
25616 				ZVAL_DEREF(value);
25617 			}
25618 			variable_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), value);
25619 			if (UNEXPECTED(variable_ptr == NULL)) {
25620 				zval_ptr_dtor_nogc(free_op_data);
25621 				zend_cannot_add_element();
25622 				goto assign_dim_error;
25623 			} else if (IS_VAR == IS_CV) {
25624 				if (Z_REFCOUNTED_P(value)) {
25625 					Z_ADDREF_P(value);
25626 				}
25627 			} else if (IS_VAR == IS_VAR) {
25628 				if (value != free_op_data) {
25629 					if (Z_REFCOUNTED_P(value)) {
25630 						Z_ADDREF_P(value);
25631 					}
25632 					zval_ptr_dtor_nogc(free_op_data);
25633 				}
25634 			} else if (IS_VAR == IS_CONST) {
25635 				if (UNEXPECTED(Z_REFCOUNTED_P(value))) {
25636 					Z_ADDREF_P(value);
25637 				}
25638 			}
25639 		} else {
25640 			dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
25641 			if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
25642 				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
25643 			} else {
25644 				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
25645 			}
25646 			if (UNEXPECTED(variable_ptr == NULL)) {
25647 				goto assign_dim_error;
25648 			}
25649 			value = _get_zval_ptr_var((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
25650 			value = zend_assign_to_variable(variable_ptr, value, IS_VAR);
25651 		}
25652 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
25653 			ZVAL_COPY(EX_VAR(opline->result.var), value);
25654 		}
25655 	} else {
25656 		if (EXPECTED(Z_ISREF_P(object_ptr))) {
25657 			object_ptr = Z_REFVAL_P(object_ptr);
25658 			if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
25659 				goto try_assign_dim_array;
25660 			}
25661 		}
25662 		if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) {
25663 			dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
25664 			value = _get_zval_ptr_var_deref((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
25665 
25666 			if ((IS_TMP_VAR|IS_VAR) == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
25667 				dim++;
25668 			}
25669 			zend_assign_to_object_dim(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
25670 
25671 			zval_ptr_dtor_nogc(free_op_data);
25672 		} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
25673 			if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) {
25674 				zend_use_new_element_for_string();
25675 				zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
25676 				if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
25677 				UNDEF_RESULT();
25678 				HANDLE_EXCEPTION();
25679 			} else {
25680 				dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
25681 				value = _get_zval_ptr_var_deref((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
25682 				zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
25683 				zval_ptr_dtor_nogc(free_op_data);
25684 			}
25685 		} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
25686 			ZVAL_ARR(object_ptr, zend_new_array(8));
25687 			goto try_assign_dim_array;
25688 		} else {
25689 			if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) {
25690 				zend_use_scalar_as_array();
25691 			}
25692 			dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
25693 assign_dim_error:
25694 			zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
25695 			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
25696 				ZVAL_NULL(EX_VAR(opline->result.var));
25697 			}
25698 		}
25699 	}
25700 	if ((IS_TMP_VAR|IS_VAR) != IS_UNUSED) {
25701 		zval_ptr_dtor_nogc(free_op2);
25702 	}
25703 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
25704 	/* assign_dim has two opcodes! */
25705 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
25706 }
25707 
25708 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_VAR_TMPVAR_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
25709 {
25710 	USE_OPLINE
25711 	zend_free_op free_op1;
25712 	zval *object_ptr;
25713 	zend_free_op free_op2, free_op_data;
25714 	zval *value;
25715 	zval *variable_ptr;
25716 	zval *dim;
25717 
25718 	SAVE_OPLINE();
25719 	object_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
25720 
25721 	if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
25722 try_assign_dim_array:
25723 		SEPARATE_ARRAY(object_ptr);
25724 		if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) {
25725 			value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
25726 			if (IS_CV == IS_CV || IS_CV == IS_VAR) {
25727 				ZVAL_DEREF(value);
25728 			}
25729 			variable_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), value);
25730 			if (UNEXPECTED(variable_ptr == NULL)) {
25731 
25732 				zend_cannot_add_element();
25733 				goto assign_dim_error;
25734 			} else if (IS_CV == IS_CV) {
25735 				if (Z_REFCOUNTED_P(value)) {
25736 					Z_ADDREF_P(value);
25737 				}
25738 			} else if (IS_CV == IS_VAR) {
25739 				if (value != free_op_data) {
25740 					if (Z_REFCOUNTED_P(value)) {
25741 						Z_ADDREF_P(value);
25742 					}
25743 
25744 				}
25745 			} else if (IS_CV == IS_CONST) {
25746 				if (UNEXPECTED(Z_REFCOUNTED_P(value))) {
25747 					Z_ADDREF_P(value);
25748 				}
25749 			}
25750 		} else {
25751 			dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
25752 			if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
25753 				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
25754 			} else {
25755 				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
25756 			}
25757 			if (UNEXPECTED(variable_ptr == NULL)) {
25758 				goto assign_dim_error;
25759 			}
25760 			value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
25761 			value = zend_assign_to_variable(variable_ptr, value, IS_CV);
25762 		}
25763 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
25764 			ZVAL_COPY(EX_VAR(opline->result.var), value);
25765 		}
25766 	} else {
25767 		if (EXPECTED(Z_ISREF_P(object_ptr))) {
25768 			object_ptr = Z_REFVAL_P(object_ptr);
25769 			if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
25770 				goto try_assign_dim_array;
25771 			}
25772 		}
25773 		if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) {
25774 			dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
25775 			value = _get_zval_ptr_cv_deref_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
25776 
25777 			if ((IS_TMP_VAR|IS_VAR) == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
25778 				dim++;
25779 			}
25780 			zend_assign_to_object_dim(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
25781 
25782 		} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
25783 			if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) {
25784 				zend_use_new_element_for_string();
25785 
25786 				if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
25787 				UNDEF_RESULT();
25788 				HANDLE_EXCEPTION();
25789 			} else {
25790 				dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
25791 				value = _get_zval_ptr_cv_deref_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
25792 				zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
25793 
25794 			}
25795 		} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
25796 			ZVAL_ARR(object_ptr, zend_new_array(8));
25797 			goto try_assign_dim_array;
25798 		} else {
25799 			if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) {
25800 				zend_use_scalar_as_array();
25801 			}
25802 			dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
25803 assign_dim_error:
25804 
25805 			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
25806 				ZVAL_NULL(EX_VAR(opline->result.var));
25807 			}
25808 		}
25809 	}
25810 	if ((IS_TMP_VAR|IS_VAR) != IS_UNUSED) {
25811 		zval_ptr_dtor_nogc(free_op2);
25812 	}
25813 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
25814 	/* assign_dim has two opcodes! */
25815 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
25816 }
25817 
25818 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
25819 {
25820 	USE_OPLINE
25821 	zval *function_name;
25822 	zend_class_entry *ce;
25823 	zend_object *object;
25824 	zend_function *fbc;
25825 	zend_execute_data *call;
25826 
25827 	SAVE_OPLINE();
25828 
25829 	if (IS_VAR == IS_CONST) {
25830 		/* no function found. try a static method in class */
25831 		ce = CACHED_PTR(opline->result.num);
25832 		if (UNEXPECTED(ce == NULL)) {
25833 			ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), RT_CONSTANT(opline, opline->op1) + 1, ZEND_FETCH_CLASS_DEFAULT |  ZEND_FETCH_CLASS_EXCEPTION);
25834 			if (UNEXPECTED(ce == NULL)) {
25835 				ZEND_ASSERT(EG(exception));
25836 				zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
25837 				HANDLE_EXCEPTION();
25838 			}
25839 			if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
25840 				CACHE_PTR(opline->result.num, ce);
25841 			}
25842 		}
25843 	} else if (IS_VAR == IS_UNUSED) {
25844 		ce = zend_fetch_class(NULL, opline->op1.num);
25845 		if (UNEXPECTED(ce == NULL)) {
25846 			ZEND_ASSERT(EG(exception));
25847 			zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
25848 			HANDLE_EXCEPTION();
25849 		}
25850 	} else {
25851 		ce = Z_CE_P(EX_VAR(opline->op1.var));
25852 	}
25853 
25854 	if (IS_VAR == IS_CONST &&
25855 	    (IS_TMP_VAR|IS_VAR) == IS_CONST &&
25856 	    EXPECTED((fbc = CACHED_PTR(opline->result.num + sizeof(void*))) != NULL)) {
25857 		/* nothing to do */
25858 	} else if (IS_VAR != IS_CONST &&
25859 	           (IS_TMP_VAR|IS_VAR) == IS_CONST &&
25860 	           EXPECTED(CACHED_PTR(opline->result.num) == ce)) {
25861 		fbc = CACHED_PTR(opline->result.num + sizeof(void*));
25862 	} else if ((IS_TMP_VAR|IS_VAR) != IS_UNUSED) {
25863 		zend_free_op free_op2;
25864 
25865 		function_name = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
25866 		if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
25867 			if (UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) {
25868 				do {
25869 					if ((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV) && Z_ISREF_P(function_name)) {
25870 						function_name = Z_REFVAL_P(function_name);
25871 						if (EXPECTED(Z_TYPE_P(function_name) == IS_STRING)) {
25872 							break;
25873 						}
25874 					} else if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
25875 						GET_OP2_UNDEF_CV(function_name, BP_VAR_R);
25876 						if (UNEXPECTED(EG(exception) != NULL)) {
25877 							HANDLE_EXCEPTION();
25878 						}
25879 					}
25880 					zend_throw_error(NULL, "Function name must be a string");
25881 					zval_ptr_dtor_nogc(free_op2);
25882 					HANDLE_EXCEPTION();
25883 				} while (0);
25884 			}
25885 		}
25886 
25887 		if (ce->get_static_method) {
25888 			fbc = ce->get_static_method(ce, Z_STR_P(function_name));
25889 		} else {
25890 			fbc = zend_std_get_static_method(ce, Z_STR_P(function_name), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (RT_CONSTANT(opline, opline->op2) + 1) : NULL));
25891 		}
25892 		if (UNEXPECTED(fbc == NULL)) {
25893 			if (EXPECTED(!EG(exception))) {
25894 				zend_undefined_method(ce, Z_STR_P(function_name));
25895 			}
25896 			zval_ptr_dtor_nogc(free_op2);
25897 			HANDLE_EXCEPTION();
25898 		}
25899 		if ((IS_TMP_VAR|IS_VAR) == IS_CONST &&
25900 		    EXPECTED(fbc->type <= ZEND_USER_FUNCTION) &&
25901 		    EXPECTED(!(fbc->common.fn_flags & (ZEND_ACC_CALL_VIA_TRAMPOLINE|ZEND_ACC_NEVER_CACHE)))) {
25902 			CACHE_POLYMORPHIC_PTR(opline->result.num, ce, fbc);
25903 		}
25904 		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!fbc->op_array.run_time_cache)) {
25905 			init_func_run_time_cache(&fbc->op_array);
25906 		}
25907 		if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
25908 			zval_ptr_dtor_nogc(free_op2);
25909 		}
25910 	} else {
25911 		if (UNEXPECTED(ce->constructor == NULL)) {
25912 			zend_throw_error(NULL, "Cannot call constructor");
25913 			HANDLE_EXCEPTION();
25914 		}
25915 		if (Z_TYPE(EX(This)) == IS_OBJECT && Z_OBJ(EX(This))->ce != ce->constructor->common.scope && (ce->constructor->common.fn_flags & ZEND_ACC_PRIVATE)) {
25916 			zend_throw_error(NULL, "Cannot call private %s::__construct()", ZSTR_VAL(ce->name));
25917 			HANDLE_EXCEPTION();
25918 		}
25919 		fbc = ce->constructor;
25920 		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!fbc->op_array.run_time_cache)) {
25921 			init_func_run_time_cache(&fbc->op_array);
25922 		}
25923 	}
25924 
25925 	object = NULL;
25926 	if (!(fbc->common.fn_flags & ZEND_ACC_STATIC)) {
25927 		if (Z_TYPE(EX(This)) == IS_OBJECT && instanceof_function(Z_OBJCE(EX(This)), ce)) {
25928 			object = Z_OBJ(EX(This));
25929 			ce = object->ce;
25930 		} else {
25931 			zend_non_static_method_call(fbc);
25932 			if (UNEXPECTED(EG(exception) != NULL)) {
25933 				HANDLE_EXCEPTION();
25934 			}
25935 		}
25936 	}
25937 
25938 	if (IS_VAR == IS_UNUSED) {
25939 		/* previous opcode is ZEND_FETCH_CLASS */
25940 		if ((opline->op1.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_PARENT ||
25941 		    (opline->op1.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_SELF) {
25942 			if (Z_TYPE(EX(This)) == IS_OBJECT) {
25943 				ce = Z_OBJCE(EX(This));
25944 			} else {
25945 				ce = Z_CE(EX(This));
25946 			}
25947 		}
25948 	}
25949 
25950 	call = zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_FUNCTION,
25951 		fbc, opline->extended_value, ce, object);
25952 	call->prev_execute_data = EX(call);
25953 	EX(call) = call;
25954 
25955 	ZEND_VM_NEXT_OPCODE();
25956 }
25957 
25958 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
25959 {
25960 	USE_OPLINE
25961 	zend_free_op free_op1;
25962 	zval *expr_ptr, new_expr;
25963 
25964 	SAVE_OPLINE();
25965 	if ((IS_VAR == IS_VAR || IS_VAR == IS_CV) &&
25966 	    UNEXPECTED(opline->extended_value & ZEND_ARRAY_ELEMENT_REF)) {
25967 		expr_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
25968 		if (Z_ISREF_P(expr_ptr)) {
25969 			Z_ADDREF_P(expr_ptr);
25970 		} else {
25971 			ZVAL_MAKE_REF_EX(expr_ptr, 2);
25972 		}
25973 		if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
25974 	} else {
25975 		expr_ptr = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
25976 		if (IS_VAR == IS_TMP_VAR) {
25977 			/* pass */
25978 		} else if (IS_VAR == IS_CONST) {
25979 			Z_TRY_ADDREF_P(expr_ptr);
25980 		} else if (IS_VAR == IS_CV) {
25981 			ZVAL_DEREF(expr_ptr);
25982 			Z_TRY_ADDREF_P(expr_ptr);
25983 		} else /* if (IS_VAR == IS_VAR) */ {
25984 			if (UNEXPECTED(Z_ISREF_P(expr_ptr))) {
25985 				zend_refcounted *ref = Z_COUNTED_P(expr_ptr);
25986 
25987 				expr_ptr = Z_REFVAL_P(expr_ptr);
25988 				if (UNEXPECTED(GC_DELREF(ref) == 0)) {
25989 					ZVAL_COPY_VALUE(&new_expr, expr_ptr);
25990 					expr_ptr = &new_expr;
25991 					efree_size(ref, sizeof(zend_reference));
25992 				} else if (Z_OPT_REFCOUNTED_P(expr_ptr)) {
25993 					Z_ADDREF_P(expr_ptr);
25994 				}
25995 			}
25996 		}
25997 	}
25998 
25999 	if ((IS_TMP_VAR|IS_VAR) != IS_UNUSED) {
26000 		zend_free_op free_op2;
26001 		zval *offset = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
26002 		zend_string *str;
26003 		zend_ulong hval;
26004 
26005 add_again:
26006 		if (EXPECTED(Z_TYPE_P(offset) == IS_STRING)) {
26007 			str = Z_STR_P(offset);
26008 			if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
26009 				if (ZEND_HANDLE_NUMERIC(str, hval)) {
26010 					goto num_index;
26011 				}
26012 			}
26013 str_index:
26014 			zend_hash_update(Z_ARRVAL_P(EX_VAR(opline->result.var)), str, expr_ptr);
26015 		} else if (EXPECTED(Z_TYPE_P(offset) == IS_LONG)) {
26016 			hval = Z_LVAL_P(offset);
26017 num_index:
26018 			zend_hash_index_update(Z_ARRVAL_P(EX_VAR(opline->result.var)), hval, expr_ptr);
26019 		} else if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
26020 			offset = Z_REFVAL_P(offset);
26021 			goto add_again;
26022 		} else if (Z_TYPE_P(offset) == IS_NULL) {
26023 			str = ZSTR_EMPTY_ALLOC();
26024 			goto str_index;
26025 		} else if (Z_TYPE_P(offset) == IS_DOUBLE) {
26026 			hval = zend_dval_to_lval(Z_DVAL_P(offset));
26027 			goto num_index;
26028 		} else if (Z_TYPE_P(offset) == IS_FALSE) {
26029 			hval = 0;
26030 			goto num_index;
26031 		} else if (Z_TYPE_P(offset) == IS_TRUE) {
26032 			hval = 1;
26033 			goto num_index;
26034 		} else if ((IS_TMP_VAR|IS_VAR) == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
26035 			GET_OP2_UNDEF_CV(offset, BP_VAR_R);
26036 			str = ZSTR_EMPTY_ALLOC();
26037 			goto str_index;
26038 		} else {
26039 			zend_illegal_offset();
26040 			zval_ptr_dtor_nogc(expr_ptr);
26041 		}
26042 		zval_ptr_dtor_nogc(free_op2);
26043 	} else {
26044 		if (!zend_hash_next_index_insert(Z_ARRVAL_P(EX_VAR(opline->result.var)), expr_ptr)) {
26045 			zend_cannot_add_element();
26046 			zval_ptr_dtor_nogc(expr_ptr);
26047 		}
26048 	}
26049 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
26050 }
26051 
26052 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_ARRAY_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
26053 {
26054 	zval *array;
26055 	uint32_t size;
26056 	USE_OPLINE
26057 
26058 	array = EX_VAR(opline->result.var);
26059 	if (IS_VAR != IS_UNUSED) {
26060 		size = opline->extended_value >> ZEND_ARRAY_SIZE_SHIFT;
26061 		ZVAL_ARR(array, zend_new_array(size));
26062 		/* Explicitly initialize array as not-packed if flag is set */
26063 		if (opline->extended_value & ZEND_ARRAY_NOT_PACKED) {
26064 			zend_hash_real_init_mixed(Z_ARRVAL_P(array));
26065 		}
26066 		ZEND_VM_TAIL_CALL(ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
26067 	} else {
26068 		ZVAL_EMPTY_ARRAY(array);
26069 		ZEND_VM_NEXT_OPCODE();
26070 	}
26071 }
26072 
26073 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_UNSET_DIM_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
26074 {
26075 	USE_OPLINE
26076 	zend_free_op free_op1, free_op2;
26077 	zval *container;
26078 	zval *offset;
26079 	zend_ulong hval;
26080 	zend_string *key;
26081 
26082 	SAVE_OPLINE();
26083 	container = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
26084 	offset = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
26085 
26086 	do {
26087 		if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
26088 			HashTable *ht;
26089 
26090 unset_dim_array:
26091 			SEPARATE_ARRAY(container);
26092 			ht = Z_ARRVAL_P(container);
26093 offset_again:
26094 			if (EXPECTED(Z_TYPE_P(offset) == IS_STRING)) {
26095 				key = Z_STR_P(offset);
26096 				if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
26097 					if (ZEND_HANDLE_NUMERIC(key, hval)) {
26098 						goto num_index_dim;
26099 					}
26100 				}
26101 str_index_dim:
26102 				if (ht == &EG(symbol_table)) {
26103 					zend_delete_global_variable(key);
26104 				} else {
26105 					zend_hash_del(ht, key);
26106 				}
26107 			} else if (EXPECTED(Z_TYPE_P(offset) == IS_LONG)) {
26108 				hval = Z_LVAL_P(offset);
26109 num_index_dim:
26110 				zend_hash_index_del(ht, hval);
26111 			} else if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
26112 				offset = Z_REFVAL_P(offset);
26113 				goto offset_again;
26114 			} else if (Z_TYPE_P(offset) == IS_DOUBLE) {
26115 				hval = zend_dval_to_lval(Z_DVAL_P(offset));
26116 				goto num_index_dim;
26117 			} else if (Z_TYPE_P(offset) == IS_NULL) {
26118 				key = ZSTR_EMPTY_ALLOC();
26119 				goto str_index_dim;
26120 			} else if (Z_TYPE_P(offset) == IS_FALSE) {
26121 				hval = 0;
26122 				goto num_index_dim;
26123 			} else if (Z_TYPE_P(offset) == IS_TRUE) {
26124 				hval = 1;
26125 				goto num_index_dim;
26126 			} else if (Z_TYPE_P(offset) == IS_RESOURCE) {
26127 				hval = Z_RES_HANDLE_P(offset);
26128 				goto num_index_dim;
26129 			} else if ((IS_TMP_VAR|IS_VAR) == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
26130 				GET_OP2_UNDEF_CV(offset, BP_VAR_R);
26131 				key = ZSTR_EMPTY_ALLOC();
26132 				goto str_index_dim;
26133 			} else {
26134 				zend_error(E_WARNING, "Illegal offset type in unset");
26135 			}
26136 			break;
26137 		} else if (Z_ISREF_P(container)) {
26138 			container = Z_REFVAL_P(container);
26139 			if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
26140 				goto unset_dim_array;
26141 			}
26142 		}
26143 		if (IS_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
26144 			container = GET_OP1_UNDEF_CV(container, BP_VAR_R);
26145 		}
26146 		if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(offset) == IS_UNDEF)) {
26147 			offset = GET_OP2_UNDEF_CV(offset, BP_VAR_R);
26148 		}
26149 		if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
26150 			if (UNEXPECTED(Z_OBJ_HT_P(container)->unset_dimension == NULL)) {
26151 				zend_use_object_as_array();
26152 			} else {
26153 				if ((IS_TMP_VAR|IS_VAR) == IS_CONST && Z_EXTRA_P(offset) == ZEND_EXTRA_VALUE) {
26154 					offset++;
26155 				}
26156 				Z_OBJ_HT_P(container)->unset_dimension(container, offset);
26157 			}
26158 		} else if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_STRING)) {
26159 			zend_throw_error(NULL, "Cannot unset string offsets");
26160 		}
26161 	} while (0);
26162 
26163 	zval_ptr_dtor_nogc(free_op2);
26164 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
26165 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
26166 }
26167 
26168 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_UNSET_OBJ_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
26169 {
26170 	USE_OPLINE
26171 	zend_free_op free_op1, free_op2;
26172 	zval *container;
26173 	zval *offset;
26174 
26175 	SAVE_OPLINE();
26176 	container = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
26177 	if (IS_VAR == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
26178 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
26179 	}
26180 	offset = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
26181 
26182 	do {
26183 		if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) {
26184 			if (Z_ISREF_P(container)) {
26185 				container = Z_REFVAL_P(container);
26186 				if (Z_TYPE_P(container) != IS_OBJECT) {
26187 					break;
26188 				}
26189 			} else {
26190 				break;
26191 			}
26192 		}
26193 		if (Z_OBJ_HT_P(container)->unset_property) {
26194 			Z_OBJ_HT_P(container)->unset_property(container, offset, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL));
26195 		} else {
26196 			zend_wrong_property_unset(offset);
26197 		}
26198 	} while (0);
26199 
26200 	zval_ptr_dtor_nogc(free_op2);
26201 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
26202 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
26203 }
26204 
26205 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_IDENTICAL_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
26206 {
26207 	USE_OPLINE
26208 	zend_free_op free_op1, free_op2;
26209 	zval *op1, *op2;
26210 	int result;
26211 
26212 	SAVE_OPLINE();
26213 	op1 = _get_zval_ptr_var_deref(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
26214 	op2 = _get_zval_ptr_tmp(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
26215 	result = fast_is_identical_function(op1, op2);
26216 	zval_ptr_dtor_nogc(free_op1);
26217 	zval_ptr_dtor_nogc(free_op2);
26218 	ZEND_VM_SMART_BRANCH(result, 1);
26219 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
26220 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
26221 }
26222 
26223 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_NOT_IDENTICAL_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
26224 {
26225 	USE_OPLINE
26226 	zend_free_op free_op1, free_op2;
26227 	zval *op1, *op2;
26228 	int result;
26229 
26230 	SAVE_OPLINE();
26231 	op1 = _get_zval_ptr_var_deref(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
26232 	op2 = _get_zval_ptr_tmp(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
26233 	result = fast_is_not_identical_function(op1, op2);
26234 	zval_ptr_dtor_nogc(free_op1);
26235 	zval_ptr_dtor_nogc(free_op2);
26236 	ZEND_VM_SMART_BRANCH(result, 1);
26237 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
26238 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
26239 }
26240 
26241 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SPEC_VAR_TMP_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
26242 {
26243 	USE_OPLINE
26244 	zend_free_op free_op1, free_op2;
26245 	zval *value;
26246 	zval *variable_ptr;
26247 
26248 	SAVE_OPLINE();
26249 	value = _get_zval_ptr_tmp(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
26250 	variable_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
26251 
26252 	if (IS_VAR == IS_VAR && UNEXPECTED(Z_ISERROR_P(variable_ptr))) {
26253 		zval_ptr_dtor_nogc(free_op2);
26254 		if (UNEXPECTED(0)) {
26255 			ZVAL_NULL(EX_VAR(opline->result.var));
26256 		}
26257 	} else {
26258 		value = zend_assign_to_variable(variable_ptr, value, IS_TMP_VAR);
26259 		if (UNEXPECTED(0)) {
26260 			ZVAL_COPY(EX_VAR(opline->result.var), value);
26261 		}
26262 		if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
26263 		/* zend_assign_to_variable() always takes care of op2, never free it! */
26264 	}
26265 
26266 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
26267 }
26268 
26269 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SPEC_VAR_TMP_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
26270 {
26271 	USE_OPLINE
26272 	zend_free_op free_op1, free_op2;
26273 	zval *value;
26274 	zval *variable_ptr;
26275 
26276 	SAVE_OPLINE();
26277 	value = _get_zval_ptr_tmp(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
26278 	variable_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
26279 
26280 	if (IS_VAR == IS_VAR && UNEXPECTED(Z_ISERROR_P(variable_ptr))) {
26281 		zval_ptr_dtor_nogc(free_op2);
26282 		if (UNEXPECTED(1)) {
26283 			ZVAL_NULL(EX_VAR(opline->result.var));
26284 		}
26285 	} else {
26286 		value = zend_assign_to_variable(variable_ptr, value, IS_TMP_VAR);
26287 		if (UNEXPECTED(1)) {
26288 			ZVAL_COPY(EX_VAR(opline->result.var), value);
26289 		}
26290 		if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
26291 		/* zend_assign_to_variable() always takes care of op2, never free it! */
26292 	}
26293 
26294 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
26295 }
26296 
26297 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_YIELD_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
26298 {
26299 	USE_OPLINE
26300 
26301 	zend_generator *generator = zend_get_running_generator(EXECUTE_DATA_C);
26302 
26303 	SAVE_OPLINE();
26304 	if (UNEXPECTED(generator->flags & ZEND_GENERATOR_FORCED_CLOSE)) {
26305 		ZEND_VM_TAIL_CALL(zend_yield_in_closed_generator_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
26306 	}
26307 
26308 	/* Destroy the previously yielded value */
26309 	zval_ptr_dtor(&generator->value);
26310 
26311 	/* Destroy the previously yielded key */
26312 	zval_ptr_dtor(&generator->key);
26313 
26314 	/* Set the new yielded value */
26315 	if (IS_VAR != IS_UNUSED) {
26316 		zend_free_op free_op1;
26317 
26318 		if (UNEXPECTED(EX(func)->op_array.fn_flags & ZEND_ACC_RETURN_REFERENCE)) {
26319 			/* Constants and temporary variables aren't yieldable by reference,
26320 			 * but we still allow them with a notice. */
26321 			if (IS_VAR & (IS_CONST|IS_TMP_VAR)) {
26322 				zval *value;
26323 
26324 				zend_error(E_NOTICE, "Only variable references should be yielded by reference");
26325 
26326 				value = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
26327 				ZVAL_COPY_VALUE(&generator->value, value);
26328 				if (IS_VAR == IS_CONST) {
26329 					if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
26330 						Z_ADDREF(generator->value);
26331 					}
26332 				}
26333 			} else {
26334 				zval *value_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
26335 
26336 				/* If a function call result is yielded and the function did
26337 				 * not return by reference we throw a notice. */
26338 				if (IS_VAR == IS_VAR &&
26339 				    (value_ptr == &EG(uninitialized_zval) ||
26340 				     (opline->extended_value == ZEND_RETURNS_FUNCTION &&
26341 				      !Z_ISREF_P(value_ptr)))) {
26342 					zend_error(E_NOTICE, "Only variable references should be yielded by reference");
26343 					ZVAL_COPY(&generator->value, value_ptr);
26344 				} else {
26345 					if (Z_ISREF_P(value_ptr)) {
26346 						Z_ADDREF_P(value_ptr);
26347 					} else {
26348 						ZVAL_MAKE_REF_EX(value_ptr, 2);
26349 					}
26350 					ZVAL_REF(&generator->value, Z_REF_P(value_ptr));
26351 				}
26352 
26353 				if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
26354 			}
26355 		} else {
26356 			zval *value = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
26357 
26358 			/* Consts, temporary variables and references need copying */
26359 			if (IS_VAR == IS_CONST) {
26360 				ZVAL_COPY_VALUE(&generator->value, value);
26361 				if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
26362 					Z_ADDREF(generator->value);
26363 				}
26364 			} else if (IS_VAR == IS_TMP_VAR) {
26365 				ZVAL_COPY_VALUE(&generator->value, value);
26366             } else if ((IS_VAR & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
26367 				ZVAL_COPY(&generator->value, Z_REFVAL_P(value));
26368 				zval_ptr_dtor_nogc(free_op1);
26369 			} else {
26370 				ZVAL_COPY_VALUE(&generator->value, value);
26371 				if (IS_VAR == IS_CV) {
26372 					if (Z_OPT_REFCOUNTED_P(value)) Z_ADDREF_P(value);
26373 				}
26374 			}
26375 		}
26376 	} else {
26377 		/* If no value was specified yield null */
26378 		ZVAL_NULL(&generator->value);
26379 	}
26380 
26381 	/* Set the new yielded key */
26382 	if (IS_TMP_VAR != IS_UNUSED) {
26383 		zend_free_op free_op2;
26384 		zval *key = _get_zval_ptr_tmp(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
26385 
26386 		/* Consts, temporary variables and references need copying */
26387 		if (IS_TMP_VAR == IS_CONST) {
26388 			ZVAL_COPY_VALUE(&generator->key, key);
26389 			if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->key))) {
26390 				Z_ADDREF(generator->key);
26391 			}
26392 		} else if (IS_TMP_VAR == IS_TMP_VAR) {
26393 			ZVAL_COPY_VALUE(&generator->key, key);
26394 		} else if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && Z_ISREF_P(key)) {
26395 			ZVAL_COPY(&generator->key, Z_REFVAL_P(key));
26396 
26397 		} else {
26398 			ZVAL_COPY_VALUE(&generator->key, key);
26399 			if (IS_TMP_VAR == IS_CV) {
26400 				if (Z_OPT_REFCOUNTED_P(key)) Z_ADDREF_P(key);
26401 			}
26402 		}
26403 
26404 		if (Z_TYPE(generator->key) == IS_LONG
26405 		    && Z_LVAL(generator->key) > generator->largest_used_integer_key
26406 		) {
26407 			generator->largest_used_integer_key = Z_LVAL(generator->key);
26408 		}
26409 	} else {
26410 		/* If no key was specified we use auto-increment keys */
26411 		generator->largest_used_integer_key++;
26412 		ZVAL_LONG(&generator->key, generator->largest_used_integer_key);
26413 	}
26414 
26415 	if (RETURN_VALUE_USED(opline)) {
26416 		/* If the return value of yield is used set the send
26417 		 * target and initialize it to NULL */
26418 		generator->send_target = EX_VAR(opline->result.var);
26419 		ZVAL_NULL(generator->send_target);
26420 	} else {
26421 		generator->send_target = NULL;
26422 	}
26423 
26424 	/* We increment to the next op, so we are at the correct position when the
26425 	 * generator is resumed. */
26426 	ZEND_VM_INC_OPCODE();
26427 
26428 	/* The GOTO VM uses a local opline variable. We need to set the opline
26429 	 * variable in execute_data so we don't resume at an old position. */
26430 	SAVE_OPLINE();
26431 
26432 	ZEND_VM_RETURN();
26433 }
26434 
26435 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_IDENTICAL_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
26436 {
26437 	USE_OPLINE
26438 	zend_free_op free_op1, free_op2;
26439 	zval *op1, *op2;
26440 	int result;
26441 
26442 	SAVE_OPLINE();
26443 	op1 = _get_zval_ptr_var_deref(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
26444 	op2 = _get_zval_ptr_var_deref(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
26445 	result = fast_is_identical_function(op1, op2);
26446 	zval_ptr_dtor_nogc(free_op1);
26447 	zval_ptr_dtor_nogc(free_op2);
26448 	ZEND_VM_SMART_BRANCH(result, 1);
26449 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
26450 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
26451 }
26452 
26453 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_NOT_IDENTICAL_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
26454 {
26455 	USE_OPLINE
26456 	zend_free_op free_op1, free_op2;
26457 	zval *op1, *op2;
26458 	int result;
26459 
26460 	SAVE_OPLINE();
26461 	op1 = _get_zval_ptr_var_deref(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
26462 	op2 = _get_zval_ptr_var_deref(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
26463 	result = fast_is_not_identical_function(op1, op2);
26464 	zval_ptr_dtor_nogc(free_op1);
26465 	zval_ptr_dtor_nogc(free_op2);
26466 	ZEND_VM_SMART_BRANCH(result, 1);
26467 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
26468 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
26469 }
26470 
26471 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SPEC_VAR_VAR_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
26472 {
26473 	USE_OPLINE
26474 	zend_free_op free_op1, free_op2;
26475 	zval *value;
26476 	zval *variable_ptr;
26477 
26478 	SAVE_OPLINE();
26479 	value = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
26480 	variable_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
26481 
26482 	if (IS_VAR == IS_VAR && UNEXPECTED(Z_ISERROR_P(variable_ptr))) {
26483 		zval_ptr_dtor_nogc(free_op2);
26484 		if (UNEXPECTED(0)) {
26485 			ZVAL_NULL(EX_VAR(opline->result.var));
26486 		}
26487 	} else {
26488 		value = zend_assign_to_variable(variable_ptr, value, IS_VAR);
26489 		if (UNEXPECTED(0)) {
26490 			ZVAL_COPY(EX_VAR(opline->result.var), value);
26491 		}
26492 		if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
26493 		/* zend_assign_to_variable() always takes care of op2, never free it! */
26494 	}
26495 
26496 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
26497 }
26498 
26499 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SPEC_VAR_VAR_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
26500 {
26501 	USE_OPLINE
26502 	zend_free_op free_op1, free_op2;
26503 	zval *value;
26504 	zval *variable_ptr;
26505 
26506 	SAVE_OPLINE();
26507 	value = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
26508 	variable_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
26509 
26510 	if (IS_VAR == IS_VAR && UNEXPECTED(Z_ISERROR_P(variable_ptr))) {
26511 		zval_ptr_dtor_nogc(free_op2);
26512 		if (UNEXPECTED(1)) {
26513 			ZVAL_NULL(EX_VAR(opline->result.var));
26514 		}
26515 	} else {
26516 		value = zend_assign_to_variable(variable_ptr, value, IS_VAR);
26517 		if (UNEXPECTED(1)) {
26518 			ZVAL_COPY(EX_VAR(opline->result.var), value);
26519 		}
26520 		if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
26521 		/* zend_assign_to_variable() always takes care of op2, never free it! */
26522 	}
26523 
26524 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
26525 }
26526 
26527 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_REF_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
26528 {
26529 	USE_OPLINE
26530 	zend_free_op free_op1, free_op2;
26531 	zval *variable_ptr;
26532 	zval *value_ptr;
26533 
26534 	SAVE_OPLINE();
26535 	value_ptr = _get_zval_ptr_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
26536 	variable_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
26537 
26538 	if (IS_VAR == IS_VAR && UNEXPECTED(Z_ISERROR_P(variable_ptr))) {
26539 		variable_ptr = &EG(uninitialized_zval);
26540 	} else if (IS_VAR == IS_VAR &&
26541 	           UNEXPECTED(Z_TYPE_P(EX_VAR(opline->op1.var)) != IS_INDIRECT)) {
26542 
26543 		zend_throw_error(NULL, "Cannot assign by reference to overloaded object");
26544 		if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
26545 		if (UNEXPECTED(free_op2)) {zval_ptr_dtor_nogc(free_op2);};
26546 		UNDEF_RESULT();
26547 		HANDLE_EXCEPTION();
26548 	} else if (IS_VAR == IS_VAR && UNEXPECTED(Z_ISERROR_P(value_ptr))) {
26549 		variable_ptr = &EG(uninitialized_zval);
26550 	} else if (IS_VAR == IS_VAR &&
26551 	           opline->extended_value == ZEND_RETURNS_FUNCTION &&
26552 			   UNEXPECTED(!Z_ISREF_P(value_ptr))) {
26553 
26554 		if (UNEXPECTED(!zend_wrong_assign_to_variable_reference(variable_ptr, value_ptr, IS_VAR OPLINE_CC EXECUTE_DATA_CC))) {
26555 			if (UNEXPECTED(free_op2)) {zval_ptr_dtor_nogc(free_op2);};
26556 			UNDEF_RESULT();
26557 			HANDLE_EXCEPTION();
26558 		}
26559 
26560 		/* op2 freed by assign_to_variable */
26561 		if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
26562 		ZEND_VM_NEXT_OPCODE();
26563 	} else {
26564 		zend_assign_to_variable_reference(variable_ptr, value_ptr);
26565 	}
26566 
26567 	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
26568 		ZVAL_COPY(EX_VAR(opline->result.var), variable_ptr);
26569 	}
26570 
26571 	if (UNEXPECTED(free_op2)) {zval_ptr_dtor_nogc(free_op2);};
26572 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
26573 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
26574 }
26575 
26576 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_YIELD_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
26577 {
26578 	USE_OPLINE
26579 
26580 	zend_generator *generator = zend_get_running_generator(EXECUTE_DATA_C);
26581 
26582 	SAVE_OPLINE();
26583 	if (UNEXPECTED(generator->flags & ZEND_GENERATOR_FORCED_CLOSE)) {
26584 		ZEND_VM_TAIL_CALL(zend_yield_in_closed_generator_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
26585 	}
26586 
26587 	/* Destroy the previously yielded value */
26588 	zval_ptr_dtor(&generator->value);
26589 
26590 	/* Destroy the previously yielded key */
26591 	zval_ptr_dtor(&generator->key);
26592 
26593 	/* Set the new yielded value */
26594 	if (IS_VAR != IS_UNUSED) {
26595 		zend_free_op free_op1;
26596 
26597 		if (UNEXPECTED(EX(func)->op_array.fn_flags & ZEND_ACC_RETURN_REFERENCE)) {
26598 			/* Constants and temporary variables aren't yieldable by reference,
26599 			 * but we still allow them with a notice. */
26600 			if (IS_VAR & (IS_CONST|IS_TMP_VAR)) {
26601 				zval *value;
26602 
26603 				zend_error(E_NOTICE, "Only variable references should be yielded by reference");
26604 
26605 				value = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
26606 				ZVAL_COPY_VALUE(&generator->value, value);
26607 				if (IS_VAR == IS_CONST) {
26608 					if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
26609 						Z_ADDREF(generator->value);
26610 					}
26611 				}
26612 			} else {
26613 				zval *value_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
26614 
26615 				/* If a function call result is yielded and the function did
26616 				 * not return by reference we throw a notice. */
26617 				if (IS_VAR == IS_VAR &&
26618 				    (value_ptr == &EG(uninitialized_zval) ||
26619 				     (opline->extended_value == ZEND_RETURNS_FUNCTION &&
26620 				      !Z_ISREF_P(value_ptr)))) {
26621 					zend_error(E_NOTICE, "Only variable references should be yielded by reference");
26622 					ZVAL_COPY(&generator->value, value_ptr);
26623 				} else {
26624 					if (Z_ISREF_P(value_ptr)) {
26625 						Z_ADDREF_P(value_ptr);
26626 					} else {
26627 						ZVAL_MAKE_REF_EX(value_ptr, 2);
26628 					}
26629 					ZVAL_REF(&generator->value, Z_REF_P(value_ptr));
26630 				}
26631 
26632 				if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
26633 			}
26634 		} else {
26635 			zval *value = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
26636 
26637 			/* Consts, temporary variables and references need copying */
26638 			if (IS_VAR == IS_CONST) {
26639 				ZVAL_COPY_VALUE(&generator->value, value);
26640 				if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
26641 					Z_ADDREF(generator->value);
26642 				}
26643 			} else if (IS_VAR == IS_TMP_VAR) {
26644 				ZVAL_COPY_VALUE(&generator->value, value);
26645             } else if ((IS_VAR & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
26646 				ZVAL_COPY(&generator->value, Z_REFVAL_P(value));
26647 				zval_ptr_dtor_nogc(free_op1);
26648 			} else {
26649 				ZVAL_COPY_VALUE(&generator->value, value);
26650 				if (IS_VAR == IS_CV) {
26651 					if (Z_OPT_REFCOUNTED_P(value)) Z_ADDREF_P(value);
26652 				}
26653 			}
26654 		}
26655 	} else {
26656 		/* If no value was specified yield null */
26657 		ZVAL_NULL(&generator->value);
26658 	}
26659 
26660 	/* Set the new yielded key */
26661 	if (IS_VAR != IS_UNUSED) {
26662 		zend_free_op free_op2;
26663 		zval *key = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
26664 
26665 		/* Consts, temporary variables and references need copying */
26666 		if (IS_VAR == IS_CONST) {
26667 			ZVAL_COPY_VALUE(&generator->key, key);
26668 			if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->key))) {
26669 				Z_ADDREF(generator->key);
26670 			}
26671 		} else if (IS_VAR == IS_TMP_VAR) {
26672 			ZVAL_COPY_VALUE(&generator->key, key);
26673 		} else if ((IS_VAR & (IS_VAR|IS_CV)) && Z_ISREF_P(key)) {
26674 			ZVAL_COPY(&generator->key, Z_REFVAL_P(key));
26675 			zval_ptr_dtor_nogc(free_op2);
26676 		} else {
26677 			ZVAL_COPY_VALUE(&generator->key, key);
26678 			if (IS_VAR == IS_CV) {
26679 				if (Z_OPT_REFCOUNTED_P(key)) Z_ADDREF_P(key);
26680 			}
26681 		}
26682 
26683 		if (Z_TYPE(generator->key) == IS_LONG
26684 		    && Z_LVAL(generator->key) > generator->largest_used_integer_key
26685 		) {
26686 			generator->largest_used_integer_key = Z_LVAL(generator->key);
26687 		}
26688 	} else {
26689 		/* If no key was specified we use auto-increment keys */
26690 		generator->largest_used_integer_key++;
26691 		ZVAL_LONG(&generator->key, generator->largest_used_integer_key);
26692 	}
26693 
26694 	if (RETURN_VALUE_USED(opline)) {
26695 		/* If the return value of yield is used set the send
26696 		 * target and initialize it to NULL */
26697 		generator->send_target = EX_VAR(opline->result.var);
26698 		ZVAL_NULL(generator->send_target);
26699 	} else {
26700 		generator->send_target = NULL;
26701 	}
26702 
26703 	/* We increment to the next op, so we are at the correct position when the
26704 	 * generator is resumed. */
26705 	ZEND_VM_INC_OPCODE();
26706 
26707 	/* The GOTO VM uses a local opline variable. We need to set the opline
26708 	 * variable in execute_data so we don't resume at an old position. */
26709 	SAVE_OPLINE();
26710 
26711 	ZEND_VM_RETURN();
26712 }
26713 
26714 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_dim_helper_SPEC_VAR_UNUSED(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
26715 {
26716 	USE_OPLINE
26717 	zend_free_op free_op1, free_op_data1;
26718 	zval *var_ptr;
26719 	zval *value, *container, *dim;
26720 
26721 	SAVE_OPLINE();
26722 	container = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
26723 
26724 	if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
26725 assign_dim_op_array:
26726 		SEPARATE_ARRAY(container);
26727 assign_dim_op_new_array:
26728 		dim = NULL;
26729 		if (IS_UNUSED == IS_UNUSED) {
26730 			var_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(container), &EG(uninitialized_zval));
26731 			if (UNEXPECTED(!var_ptr)) {
26732 				zend_cannot_add_element();
26733 				goto assign_dim_op_ret_null;
26734 			}
26735 		} else {
26736 			if (IS_UNUSED == IS_CONST) {
26737 				var_ptr = zend_fetch_dimension_address_inner_RW_CONST(Z_ARRVAL_P(container), dim EXECUTE_DATA_CC);
26738 			} else {
26739 				var_ptr = zend_fetch_dimension_address_inner_RW(Z_ARRVAL_P(container), dim EXECUTE_DATA_CC);
26740 			}
26741 			if (UNEXPECTED(!var_ptr)) {
26742 				goto assign_dim_op_ret_null;
26743 			}
26744 			ZVAL_DEREF(var_ptr);
26745 		}
26746 
26747 		value = get_op_data_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data1);
26748 
26749 		binary_op(var_ptr, var_ptr, value);
26750 
26751 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
26752 			ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
26753 		}
26754 	} else {
26755 		if (EXPECTED(Z_ISREF_P(container))) {
26756 			container = Z_REFVAL_P(container);
26757 			if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
26758 				goto assign_dim_op_array;
26759 			}
26760 		} else if (IS_VAR == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(container) == IS_UNDEF)) {
26761 			container = GET_OP1_UNDEF_CV(container, BP_VAR_RW);
26762 assign_dim_op_convert_to_array:
26763 			ZVAL_ARR(container, zend_new_array(8));
26764 			goto assign_dim_op_new_array;
26765 		}
26766 
26767 		dim = NULL;
26768 
26769 		if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
26770 			value = get_op_data_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data1);
26771 			if (IS_UNUSED == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
26772 				dim++;
26773 			}
26774 			zend_binary_assign_op_obj_dim(container, dim, value, UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL, binary_op EXECUTE_DATA_CC);
26775 		} else {
26776 			if (UNEXPECTED(Z_TYPE_P(container) == IS_STRING)) {
26777 				if (IS_UNUSED == IS_UNUSED) {
26778 					zend_use_new_element_for_string();
26779 				} else {
26780 					zend_check_string_offset(dim, BP_VAR_RW EXECUTE_DATA_CC);
26781 					zend_wrong_string_offset(EXECUTE_DATA_C);
26782 				}
26783 				UNDEF_RESULT();
26784 			} else if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) {
26785 				goto assign_dim_op_convert_to_array;
26786 			} else {
26787 				if (UNEXPECTED(IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(container)))) {
26788 					zend_use_scalar_as_array();
26789 				}
26790 assign_dim_op_ret_null:
26791 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
26792 					ZVAL_NULL(EX_VAR(opline->result.var));
26793 				}
26794 			}
26795 			value = get_op_data_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data1);
26796 		}
26797 	}
26798 
26799 	FREE_OP(free_op_data1);
26800 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
26801 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
26802 }
26803 
26804 static zend_always_inline ZEND_OPCODE_HANDLER_RET zend_binary_assign_op_helper_SPEC_VAR_UNUSED_DIM(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
26805 {
26806 #if 1 && IS_UNUSED == IS_UNUSED
26807 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_VAR_UNUSED(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
26808 #else
26809 # if 0 || IS_VAR != IS_UNUSED
26810 #  if 0
26811 	/* opline->extended_value checks are specialized, don't need opline */
26812 	USE_OPLINE
26813 #  endif
26814 
26815 	if (EXPECTED(0)) {
26816 		ZEND_VM_TAIL_CALL(zend_binary_assign_op_simple_helper_SPEC_VAR_UNUSED(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
26817 	}
26818 	if (EXPECTED(1)) {
26819 		ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_VAR_UNUSED(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
26820 	}
26821 # endif
26822 
26823 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_obj_helper_SPEC_VAR_UNUSED(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
26824 #endif
26825 }
26826 
26827 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_ADD_SPEC_VAR_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
26828 {
26829 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_UNUSED_DIM(add_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
26830 }
26831 
26832 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SUB_SPEC_VAR_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
26833 {
26834 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_UNUSED_DIM(sub_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
26835 }
26836 
26837 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MUL_SPEC_VAR_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
26838 {
26839 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_UNUSED_DIM(mul_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
26840 }
26841 
26842 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIV_SPEC_VAR_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
26843 {
26844 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_UNUSED_DIM(div_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
26845 }
26846 
26847 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MOD_SPEC_VAR_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
26848 {
26849 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_UNUSED_DIM(mod_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
26850 }
26851 
26852 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SL_SPEC_VAR_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
26853 {
26854 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_UNUSED_DIM(shift_left_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
26855 }
26856 
26857 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SR_SPEC_VAR_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
26858 {
26859 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_UNUSED_DIM(shift_right_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
26860 }
26861 
26862 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_CONCAT_SPEC_VAR_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
26863 {
26864 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_UNUSED_DIM(concat_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
26865 }
26866 
26867 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_OR_SPEC_VAR_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
26868 {
26869 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_UNUSED_DIM(bitwise_or_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
26870 }
26871 
26872 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_AND_SPEC_VAR_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
26873 {
26874 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_UNUSED_DIM(bitwise_and_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
26875 }
26876 
26877 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_XOR_SPEC_VAR_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
26878 {
26879 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_UNUSED_DIM(bitwise_xor_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
26880 }
26881 
26882 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_POW_SPEC_VAR_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
26883 {
26884 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_UNUSED_DIM(pow_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
26885 }
26886 
26887 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_W_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
26888 {
26889 	USE_OPLINE
26890 	zend_free_op free_op1;
26891 	zval *container;
26892 
26893 	SAVE_OPLINE();
26894 	container = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
26895 	zend_fetch_dimension_address_W(container, NULL, IS_UNUSED OPLINE_CC EXECUTE_DATA_CC);
26896 
26897 	if (IS_VAR == IS_VAR) {
26898 		zval *result = EX_VAR(opline->result.var);
26899 		FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(free_op1, result);
26900 	}
26901 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
26902 }
26903 
26904 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_RW_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
26905 {
26906 	USE_OPLINE
26907 	zend_free_op free_op1;
26908 	zval *container;
26909 
26910 	SAVE_OPLINE();
26911 	container = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
26912 	zend_fetch_dimension_address_RW(container, NULL, IS_UNUSED OPLINE_CC EXECUTE_DATA_CC);
26913 
26914 	if (IS_VAR == IS_VAR) {
26915 		zval *result = EX_VAR(opline->result.var);
26916 		FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(free_op1, result);
26917 	}
26918 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
26919 }
26920 
26921 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
26922 {
26923 	if (UNEXPECTED(ZEND_CALL_INFO(EX(call)) & ZEND_CALL_SEND_ARG_BY_REF)) {
26924         if ((IS_VAR & (IS_CONST|IS_TMP_VAR))) {
26925 			ZEND_VM_TAIL_CALL(zend_use_tmp_in_write_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
26926         }
26927 		ZEND_VM_TAIL_CALL(ZEND_FETCH_DIM_W_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
26928 	} else {
26929 		if (IS_UNUSED == IS_UNUSED) {
26930 			ZEND_VM_TAIL_CALL(zend_use_undef_in_read_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
26931 		}
26932 		ZEND_VM_TAIL_CALL(ZEND_NULL_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
26933 	}
26934 }
26935 
26936 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_VAR_UNUSED_OP_DATA_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
26937 {
26938 	USE_OPLINE
26939 	zend_free_op free_op1;
26940 	zval *object_ptr;
26941 	zend_free_op free_op_data;
26942 	zval *value;
26943 	zval *variable_ptr;
26944 	zval *dim;
26945 
26946 	SAVE_OPLINE();
26947 	object_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
26948 
26949 	if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
26950 try_assign_dim_array:
26951 		SEPARATE_ARRAY(object_ptr);
26952 		if (IS_UNUSED == IS_UNUSED) {
26953 			value = RT_CONSTANT((opline+1), (opline+1)->op1);
26954 			if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
26955 				ZVAL_DEREF(value);
26956 			}
26957 			variable_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), value);
26958 			if (UNEXPECTED(variable_ptr == NULL)) {
26959 
26960 				zend_cannot_add_element();
26961 				goto assign_dim_error;
26962 			} else if (IS_CONST == IS_CV) {
26963 				if (Z_REFCOUNTED_P(value)) {
26964 					Z_ADDREF_P(value);
26965 				}
26966 			} else if (IS_CONST == IS_VAR) {
26967 				if (value != free_op_data) {
26968 					if (Z_REFCOUNTED_P(value)) {
26969 						Z_ADDREF_P(value);
26970 					}
26971 
26972 				}
26973 			} else if (IS_CONST == IS_CONST) {
26974 				if (UNEXPECTED(Z_REFCOUNTED_P(value))) {
26975 					Z_ADDREF_P(value);
26976 				}
26977 			}
26978 		} else {
26979 			dim = NULL;
26980 			if (IS_UNUSED == IS_CONST) {
26981 				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
26982 			} else {
26983 				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
26984 			}
26985 			if (UNEXPECTED(variable_ptr == NULL)) {
26986 				goto assign_dim_error;
26987 			}
26988 			value = RT_CONSTANT((opline+1), (opline+1)->op1);
26989 			value = zend_assign_to_variable(variable_ptr, value, IS_CONST);
26990 		}
26991 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
26992 			ZVAL_COPY(EX_VAR(opline->result.var), value);
26993 		}
26994 	} else {
26995 		if (EXPECTED(Z_ISREF_P(object_ptr))) {
26996 			object_ptr = Z_REFVAL_P(object_ptr);
26997 			if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
26998 				goto try_assign_dim_array;
26999 			}
27000 		}
27001 		if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) {
27002 			dim = NULL;
27003 			value = RT_CONSTANT((opline+1), (opline+1)->op1);
27004 
27005 			if (IS_UNUSED == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
27006 				dim++;
27007 			}
27008 			zend_assign_to_object_dim(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
27009 
27010 		} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
27011 			if (IS_UNUSED == IS_UNUSED) {
27012 				zend_use_new_element_for_string();
27013 
27014 				if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
27015 				UNDEF_RESULT();
27016 				HANDLE_EXCEPTION();
27017 			} else {
27018 				dim = NULL;
27019 				value = RT_CONSTANT((opline+1), (opline+1)->op1);
27020 				zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
27021 
27022 			}
27023 		} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
27024 			ZVAL_ARR(object_ptr, zend_new_array(8));
27025 			goto try_assign_dim_array;
27026 		} else {
27027 			if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) {
27028 				zend_use_scalar_as_array();
27029 			}
27030 			dim = NULL;
27031 assign_dim_error:
27032 
27033 			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
27034 				ZVAL_NULL(EX_VAR(opline->result.var));
27035 			}
27036 		}
27037 	}
27038 	if (IS_UNUSED != IS_UNUSED) {
27039 
27040 	}
27041 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
27042 	/* assign_dim has two opcodes! */
27043 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
27044 }
27045 
27046 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_VAR_UNUSED_OP_DATA_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
27047 {
27048 	USE_OPLINE
27049 	zend_free_op free_op1;
27050 	zval *object_ptr;
27051 	zend_free_op free_op_data;
27052 	zval *value;
27053 	zval *variable_ptr;
27054 	zval *dim;
27055 
27056 	SAVE_OPLINE();
27057 	object_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
27058 
27059 	if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
27060 try_assign_dim_array:
27061 		SEPARATE_ARRAY(object_ptr);
27062 		if (IS_UNUSED == IS_UNUSED) {
27063 			value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
27064 			if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
27065 				ZVAL_DEREF(value);
27066 			}
27067 			variable_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), value);
27068 			if (UNEXPECTED(variable_ptr == NULL)) {
27069 				zval_ptr_dtor_nogc(free_op_data);
27070 				zend_cannot_add_element();
27071 				goto assign_dim_error;
27072 			} else if (IS_TMP_VAR == IS_CV) {
27073 				if (Z_REFCOUNTED_P(value)) {
27074 					Z_ADDREF_P(value);
27075 				}
27076 			} else if (IS_TMP_VAR == IS_VAR) {
27077 				if (value != free_op_data) {
27078 					if (Z_REFCOUNTED_P(value)) {
27079 						Z_ADDREF_P(value);
27080 					}
27081 					zval_ptr_dtor_nogc(free_op_data);
27082 				}
27083 			} else if (IS_TMP_VAR == IS_CONST) {
27084 				if (UNEXPECTED(Z_REFCOUNTED_P(value))) {
27085 					Z_ADDREF_P(value);
27086 				}
27087 			}
27088 		} else {
27089 			dim = NULL;
27090 			if (IS_UNUSED == IS_CONST) {
27091 				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
27092 			} else {
27093 				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
27094 			}
27095 			if (UNEXPECTED(variable_ptr == NULL)) {
27096 				goto assign_dim_error;
27097 			}
27098 			value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
27099 			value = zend_assign_to_variable(variable_ptr, value, IS_TMP_VAR);
27100 		}
27101 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
27102 			ZVAL_COPY(EX_VAR(opline->result.var), value);
27103 		}
27104 	} else {
27105 		if (EXPECTED(Z_ISREF_P(object_ptr))) {
27106 			object_ptr = Z_REFVAL_P(object_ptr);
27107 			if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
27108 				goto try_assign_dim_array;
27109 			}
27110 		}
27111 		if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) {
27112 			dim = NULL;
27113 			value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
27114 
27115 			if (IS_UNUSED == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
27116 				dim++;
27117 			}
27118 			zend_assign_to_object_dim(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
27119 
27120 			zval_ptr_dtor_nogc(free_op_data);
27121 		} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
27122 			if (IS_UNUSED == IS_UNUSED) {
27123 				zend_use_new_element_for_string();
27124 				zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
27125 				if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
27126 				UNDEF_RESULT();
27127 				HANDLE_EXCEPTION();
27128 			} else {
27129 				dim = NULL;
27130 				value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
27131 				zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
27132 				zval_ptr_dtor_nogc(free_op_data);
27133 			}
27134 		} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
27135 			ZVAL_ARR(object_ptr, zend_new_array(8));
27136 			goto try_assign_dim_array;
27137 		} else {
27138 			if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) {
27139 				zend_use_scalar_as_array();
27140 			}
27141 			dim = NULL;
27142 assign_dim_error:
27143 			zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
27144 			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
27145 				ZVAL_NULL(EX_VAR(opline->result.var));
27146 			}
27147 		}
27148 	}
27149 	if (IS_UNUSED != IS_UNUSED) {
27150 
27151 	}
27152 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
27153 	/* assign_dim has two opcodes! */
27154 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
27155 }
27156 
27157 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_VAR_UNUSED_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
27158 {
27159 	USE_OPLINE
27160 	zend_free_op free_op1;
27161 	zval *object_ptr;
27162 	zend_free_op free_op_data;
27163 	zval *value;
27164 	zval *variable_ptr;
27165 	zval *dim;
27166 
27167 	SAVE_OPLINE();
27168 	object_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
27169 
27170 	if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
27171 try_assign_dim_array:
27172 		SEPARATE_ARRAY(object_ptr);
27173 		if (IS_UNUSED == IS_UNUSED) {
27174 			value = _get_zval_ptr_var((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
27175 			if (IS_VAR == IS_CV || IS_VAR == IS_VAR) {
27176 				ZVAL_DEREF(value);
27177 			}
27178 			variable_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), value);
27179 			if (UNEXPECTED(variable_ptr == NULL)) {
27180 				zval_ptr_dtor_nogc(free_op_data);
27181 				zend_cannot_add_element();
27182 				goto assign_dim_error;
27183 			} else if (IS_VAR == IS_CV) {
27184 				if (Z_REFCOUNTED_P(value)) {
27185 					Z_ADDREF_P(value);
27186 				}
27187 			} else if (IS_VAR == IS_VAR) {
27188 				if (value != free_op_data) {
27189 					if (Z_REFCOUNTED_P(value)) {
27190 						Z_ADDREF_P(value);
27191 					}
27192 					zval_ptr_dtor_nogc(free_op_data);
27193 				}
27194 			} else if (IS_VAR == IS_CONST) {
27195 				if (UNEXPECTED(Z_REFCOUNTED_P(value))) {
27196 					Z_ADDREF_P(value);
27197 				}
27198 			}
27199 		} else {
27200 			dim = NULL;
27201 			if (IS_UNUSED == IS_CONST) {
27202 				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
27203 			} else {
27204 				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
27205 			}
27206 			if (UNEXPECTED(variable_ptr == NULL)) {
27207 				goto assign_dim_error;
27208 			}
27209 			value = _get_zval_ptr_var((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
27210 			value = zend_assign_to_variable(variable_ptr, value, IS_VAR);
27211 		}
27212 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
27213 			ZVAL_COPY(EX_VAR(opline->result.var), value);
27214 		}
27215 	} else {
27216 		if (EXPECTED(Z_ISREF_P(object_ptr))) {
27217 			object_ptr = Z_REFVAL_P(object_ptr);
27218 			if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
27219 				goto try_assign_dim_array;
27220 			}
27221 		}
27222 		if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) {
27223 			dim = NULL;
27224 			value = _get_zval_ptr_var_deref((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
27225 
27226 			if (IS_UNUSED == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
27227 				dim++;
27228 			}
27229 			zend_assign_to_object_dim(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
27230 
27231 			zval_ptr_dtor_nogc(free_op_data);
27232 		} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
27233 			if (IS_UNUSED == IS_UNUSED) {
27234 				zend_use_new_element_for_string();
27235 				zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
27236 				if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
27237 				UNDEF_RESULT();
27238 				HANDLE_EXCEPTION();
27239 			} else {
27240 				dim = NULL;
27241 				value = _get_zval_ptr_var_deref((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
27242 				zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
27243 				zval_ptr_dtor_nogc(free_op_data);
27244 			}
27245 		} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
27246 			ZVAL_ARR(object_ptr, zend_new_array(8));
27247 			goto try_assign_dim_array;
27248 		} else {
27249 			if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) {
27250 				zend_use_scalar_as_array();
27251 			}
27252 			dim = NULL;
27253 assign_dim_error:
27254 			zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
27255 			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
27256 				ZVAL_NULL(EX_VAR(opline->result.var));
27257 			}
27258 		}
27259 	}
27260 	if (IS_UNUSED != IS_UNUSED) {
27261 
27262 	}
27263 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
27264 	/* assign_dim has two opcodes! */
27265 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
27266 }
27267 
27268 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_VAR_UNUSED_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
27269 {
27270 	USE_OPLINE
27271 	zend_free_op free_op1;
27272 	zval *object_ptr;
27273 	zend_free_op free_op_data;
27274 	zval *value;
27275 	zval *variable_ptr;
27276 	zval *dim;
27277 
27278 	SAVE_OPLINE();
27279 	object_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
27280 
27281 	if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
27282 try_assign_dim_array:
27283 		SEPARATE_ARRAY(object_ptr);
27284 		if (IS_UNUSED == IS_UNUSED) {
27285 			value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
27286 			if (IS_CV == IS_CV || IS_CV == IS_VAR) {
27287 				ZVAL_DEREF(value);
27288 			}
27289 			variable_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), value);
27290 			if (UNEXPECTED(variable_ptr == NULL)) {
27291 
27292 				zend_cannot_add_element();
27293 				goto assign_dim_error;
27294 			} else if (IS_CV == IS_CV) {
27295 				if (Z_REFCOUNTED_P(value)) {
27296 					Z_ADDREF_P(value);
27297 				}
27298 			} else if (IS_CV == IS_VAR) {
27299 				if (value != free_op_data) {
27300 					if (Z_REFCOUNTED_P(value)) {
27301 						Z_ADDREF_P(value);
27302 					}
27303 
27304 				}
27305 			} else if (IS_CV == IS_CONST) {
27306 				if (UNEXPECTED(Z_REFCOUNTED_P(value))) {
27307 					Z_ADDREF_P(value);
27308 				}
27309 			}
27310 		} else {
27311 			dim = NULL;
27312 			if (IS_UNUSED == IS_CONST) {
27313 				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
27314 			} else {
27315 				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
27316 			}
27317 			if (UNEXPECTED(variable_ptr == NULL)) {
27318 				goto assign_dim_error;
27319 			}
27320 			value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
27321 			value = zend_assign_to_variable(variable_ptr, value, IS_CV);
27322 		}
27323 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
27324 			ZVAL_COPY(EX_VAR(opline->result.var), value);
27325 		}
27326 	} else {
27327 		if (EXPECTED(Z_ISREF_P(object_ptr))) {
27328 			object_ptr = Z_REFVAL_P(object_ptr);
27329 			if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
27330 				goto try_assign_dim_array;
27331 			}
27332 		}
27333 		if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) {
27334 			dim = NULL;
27335 			value = _get_zval_ptr_cv_deref_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
27336 
27337 			if (IS_UNUSED == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
27338 				dim++;
27339 			}
27340 			zend_assign_to_object_dim(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
27341 
27342 		} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
27343 			if (IS_UNUSED == IS_UNUSED) {
27344 				zend_use_new_element_for_string();
27345 
27346 				if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
27347 				UNDEF_RESULT();
27348 				HANDLE_EXCEPTION();
27349 			} else {
27350 				dim = NULL;
27351 				value = _get_zval_ptr_cv_deref_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
27352 				zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
27353 
27354 			}
27355 		} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
27356 			ZVAL_ARR(object_ptr, zend_new_array(8));
27357 			goto try_assign_dim_array;
27358 		} else {
27359 			if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) {
27360 				zend_use_scalar_as_array();
27361 			}
27362 			dim = NULL;
27363 assign_dim_error:
27364 
27365 			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
27366 				ZVAL_NULL(EX_VAR(opline->result.var));
27367 			}
27368 		}
27369 	}
27370 	if (IS_UNUSED != IS_UNUSED) {
27371 
27372 	}
27373 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
27374 	/* assign_dim has two opcodes! */
27375 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
27376 }
27377 
27378 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
27379 {
27380 	USE_OPLINE
27381 	zval *function_name;
27382 	zend_class_entry *ce;
27383 	zend_object *object;
27384 	zend_function *fbc;
27385 	zend_execute_data *call;
27386 
27387 	SAVE_OPLINE();
27388 
27389 	if (IS_VAR == IS_CONST) {
27390 		/* no function found. try a static method in class */
27391 		ce = CACHED_PTR(opline->result.num);
27392 		if (UNEXPECTED(ce == NULL)) {
27393 			ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), RT_CONSTANT(opline, opline->op1) + 1, ZEND_FETCH_CLASS_DEFAULT |  ZEND_FETCH_CLASS_EXCEPTION);
27394 			if (UNEXPECTED(ce == NULL)) {
27395 				ZEND_ASSERT(EG(exception));
27396 
27397 				HANDLE_EXCEPTION();
27398 			}
27399 			if (IS_UNUSED != IS_CONST) {
27400 				CACHE_PTR(opline->result.num, ce);
27401 			}
27402 		}
27403 	} else if (IS_VAR == IS_UNUSED) {
27404 		ce = zend_fetch_class(NULL, opline->op1.num);
27405 		if (UNEXPECTED(ce == NULL)) {
27406 			ZEND_ASSERT(EG(exception));
27407 
27408 			HANDLE_EXCEPTION();
27409 		}
27410 	} else {
27411 		ce = Z_CE_P(EX_VAR(opline->op1.var));
27412 	}
27413 
27414 	if (IS_VAR == IS_CONST &&
27415 	    IS_UNUSED == IS_CONST &&
27416 	    EXPECTED((fbc = CACHED_PTR(opline->result.num + sizeof(void*))) != NULL)) {
27417 		/* nothing to do */
27418 	} else if (IS_VAR != IS_CONST &&
27419 	           IS_UNUSED == IS_CONST &&
27420 	           EXPECTED(CACHED_PTR(opline->result.num) == ce)) {
27421 		fbc = CACHED_PTR(opline->result.num + sizeof(void*));
27422 	} else if (IS_UNUSED != IS_UNUSED) {
27423 
27424 
27425 		function_name = NULL;
27426 		if (IS_UNUSED != IS_CONST) {
27427 			if (UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) {
27428 				do {
27429 					if (IS_UNUSED & (IS_VAR|IS_CV) && Z_ISREF_P(function_name)) {
27430 						function_name = Z_REFVAL_P(function_name);
27431 						if (EXPECTED(Z_TYPE_P(function_name) == IS_STRING)) {
27432 							break;
27433 						}
27434 					} else if (IS_UNUSED == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
27435 						GET_OP2_UNDEF_CV(function_name, BP_VAR_R);
27436 						if (UNEXPECTED(EG(exception) != NULL)) {
27437 							HANDLE_EXCEPTION();
27438 						}
27439 					}
27440 					zend_throw_error(NULL, "Function name must be a string");
27441 
27442 					HANDLE_EXCEPTION();
27443 				} while (0);
27444 			}
27445 		}
27446 
27447 		if (ce->get_static_method) {
27448 			fbc = ce->get_static_method(ce, Z_STR_P(function_name));
27449 		} else {
27450 			fbc = zend_std_get_static_method(ce, Z_STR_P(function_name), ((IS_UNUSED == IS_CONST) ? (RT_CONSTANT(opline, opline->op2) + 1) : NULL));
27451 		}
27452 		if (UNEXPECTED(fbc == NULL)) {
27453 			if (EXPECTED(!EG(exception))) {
27454 				zend_undefined_method(ce, Z_STR_P(function_name));
27455 			}
27456 
27457 			HANDLE_EXCEPTION();
27458 		}
27459 		if (IS_UNUSED == IS_CONST &&
27460 		    EXPECTED(fbc->type <= ZEND_USER_FUNCTION) &&
27461 		    EXPECTED(!(fbc->common.fn_flags & (ZEND_ACC_CALL_VIA_TRAMPOLINE|ZEND_ACC_NEVER_CACHE)))) {
27462 			CACHE_POLYMORPHIC_PTR(opline->result.num, ce, fbc);
27463 		}
27464 		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!fbc->op_array.run_time_cache)) {
27465 			init_func_run_time_cache(&fbc->op_array);
27466 		}
27467 		if (IS_UNUSED != IS_CONST) {
27468 
27469 		}
27470 	} else {
27471 		if (UNEXPECTED(ce->constructor == NULL)) {
27472 			zend_throw_error(NULL, "Cannot call constructor");
27473 			HANDLE_EXCEPTION();
27474 		}
27475 		if (Z_TYPE(EX(This)) == IS_OBJECT && Z_OBJ(EX(This))->ce != ce->constructor->common.scope && (ce->constructor->common.fn_flags & ZEND_ACC_PRIVATE)) {
27476 			zend_throw_error(NULL, "Cannot call private %s::__construct()", ZSTR_VAL(ce->name));
27477 			HANDLE_EXCEPTION();
27478 		}
27479 		fbc = ce->constructor;
27480 		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!fbc->op_array.run_time_cache)) {
27481 			init_func_run_time_cache(&fbc->op_array);
27482 		}
27483 	}
27484 
27485 	object = NULL;
27486 	if (!(fbc->common.fn_flags & ZEND_ACC_STATIC)) {
27487 		if (Z_TYPE(EX(This)) == IS_OBJECT && instanceof_function(Z_OBJCE(EX(This)), ce)) {
27488 			object = Z_OBJ(EX(This));
27489 			ce = object->ce;
27490 		} else {
27491 			zend_non_static_method_call(fbc);
27492 			if (UNEXPECTED(EG(exception) != NULL)) {
27493 				HANDLE_EXCEPTION();
27494 			}
27495 		}
27496 	}
27497 
27498 	if (IS_VAR == IS_UNUSED) {
27499 		/* previous opcode is ZEND_FETCH_CLASS */
27500 		if ((opline->op1.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_PARENT ||
27501 		    (opline->op1.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_SELF) {
27502 			if (Z_TYPE(EX(This)) == IS_OBJECT) {
27503 				ce = Z_OBJCE(EX(This));
27504 			} else {
27505 				ce = Z_CE(EX(This));
27506 			}
27507 		}
27508 	}
27509 
27510 	call = zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_FUNCTION,
27511 		fbc, opline->extended_value, ce, object);
27512 	call->prev_execute_data = EX(call);
27513 	EX(call) = call;
27514 
27515 	ZEND_VM_NEXT_OPCODE();
27516 }
27517 
27518 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_VERIFY_RETURN_TYPE_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
27519 {
27520 	USE_OPLINE
27521 
27522 	SAVE_OPLINE();
27523 	if (IS_VAR == IS_UNUSED) {
27524 		zend_verify_missing_return_type(EX(func), CACHE_ADDR(opline->op2.num));
27525 	} else {
27526 /* prevents "undefined variable opline" errors */
27527 #if 0 || (IS_VAR != IS_UNUSED)
27528 		zval *retval_ref, *retval_ptr;
27529 		zend_free_op free_op1;
27530 		zend_arg_info *ret_info = EX(func)->common.arg_info - 1;
27531 
27532 		retval_ref = retval_ptr = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
27533 
27534 		if (IS_VAR == IS_CONST) {
27535 			ZVAL_COPY(EX_VAR(opline->result.var), retval_ptr);
27536 			retval_ref = retval_ptr = EX_VAR(opline->result.var);
27537 		} else if (IS_VAR == IS_VAR) {
27538 			if (UNEXPECTED(Z_TYPE_P(retval_ptr) == IS_INDIRECT)) {
27539 				retval_ptr = Z_INDIRECT_P(retval_ptr);
27540 			}
27541 			ZVAL_DEREF(retval_ptr);
27542 		} else if (IS_VAR == IS_CV) {
27543 			ZVAL_DEREF(retval_ptr);
27544 		}
27545 
27546 		if (UNEXPECTED(!ZEND_TYPE_IS_CLASS(ret_info->type)
27547 			&& ZEND_TYPE_CODE(ret_info->type) != IS_CALLABLE
27548 			&& ZEND_TYPE_CODE(ret_info->type) != IS_ITERABLE
27549 			&& !ZEND_SAME_FAKE_TYPE(ZEND_TYPE_CODE(ret_info->type), Z_TYPE_P(retval_ptr))
27550 			&& !(EX(func)->op_array.fn_flags & ZEND_ACC_RETURN_REFERENCE)
27551 			&& retval_ref != retval_ptr)
27552 		) {
27553 			/* A cast might happen - unwrap the reference if this is a by-value return */
27554 			if (Z_REFCOUNT_P(retval_ref) == 1) {
27555 				ZVAL_UNREF(retval_ref);
27556 			} else {
27557 				Z_DELREF_P(retval_ref);
27558 				ZVAL_COPY(retval_ref, retval_ptr);
27559 			}
27560 			retval_ptr = retval_ref;
27561 		}
27562 		zend_verify_return_type(EX(func), retval_ptr, CACHE_ADDR(opline->op2.num));
27563 #endif
27564 	}
27565 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
27566 }
27567 
27568 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_NEW_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
27569 {
27570 	USE_OPLINE
27571 	zval *result;
27572 	zend_function *constructor;
27573 	zend_class_entry *ce;
27574 	zend_execute_data *call;
27575 
27576 	SAVE_OPLINE();
27577 	if (IS_VAR == IS_CONST) {
27578 		ce = CACHED_PTR(opline->op2.num);
27579 		if (UNEXPECTED(ce == NULL)) {
27580 			ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), RT_CONSTANT(opline, opline->op1) + 1, ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
27581 			if (UNEXPECTED(ce == NULL)) {
27582 				ZEND_ASSERT(EG(exception));
27583 				ZVAL_UNDEF(EX_VAR(opline->result.var));
27584 				HANDLE_EXCEPTION();
27585 			}
27586 			CACHE_PTR(opline->op2.num, ce);
27587 		}
27588 	} else if (IS_VAR == IS_UNUSED) {
27589 		ce = zend_fetch_class(NULL, opline->op1.num);
27590 		if (UNEXPECTED(ce == NULL)) {
27591 			ZEND_ASSERT(EG(exception));
27592 			ZVAL_UNDEF(EX_VAR(opline->result.var));
27593 			HANDLE_EXCEPTION();
27594 		}
27595 	} else {
27596 		ce = Z_CE_P(EX_VAR(opline->op1.var));
27597 	}
27598 
27599 	result = EX_VAR(opline->result.var);
27600 	if (UNEXPECTED(object_init_ex(result, ce) != SUCCESS)) {
27601 		ZVAL_UNDEF(result);
27602 		HANDLE_EXCEPTION();
27603 	}
27604 
27605 	constructor = Z_OBJ_HT_P(result)->get_constructor(Z_OBJ_P(result));
27606 	if (constructor == NULL) {
27607 		if (UNEXPECTED(EG(exception))) {
27608 			HANDLE_EXCEPTION();
27609 		}
27610 
27611 		/* If there are no arguments, skip over the DO_FCALL opcode. We check if the next
27612 		 * opcode is DO_FCALL in case EXT instructions are used. */
27613 		if (EXPECTED(opline->extended_value == 0 && (opline+1)->opcode == ZEND_DO_FCALL)) {
27614 			ZEND_VM_NEXT_OPCODE_EX(1, 2);
27615 		}
27616 
27617 		/* Perform a dummy function call */
27618 		call = zend_vm_stack_push_call_frame(
27619 			ZEND_CALL_FUNCTION, (zend_function *) &zend_pass_function,
27620 			opline->extended_value, NULL, NULL);
27621 	} else {
27622 		if (EXPECTED(constructor->type == ZEND_USER_FUNCTION) && UNEXPECTED(!constructor->op_array.run_time_cache)) {
27623 			init_func_run_time_cache(&constructor->op_array);
27624 		}
27625 		/* We are not handling overloaded classes right now */
27626 		call = zend_vm_stack_push_call_frame(
27627 			ZEND_CALL_FUNCTION | ZEND_CALL_RELEASE_THIS | ZEND_CALL_CTOR,
27628 			constructor,
27629 			opline->extended_value,
27630 			ce,
27631 			Z_OBJ_P(result));
27632 		Z_ADDREF_P(result);
27633 	}
27634 
27635 	call->prev_execute_data = EX(call);
27636 	EX(call) = call;
27637 	ZEND_VM_NEXT_OPCODE();
27638 }
27639 
27640 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
27641 {
27642 	USE_OPLINE
27643 	zend_free_op free_op1;
27644 	zval *expr_ptr, new_expr;
27645 
27646 	SAVE_OPLINE();
27647 	if ((IS_VAR == IS_VAR || IS_VAR == IS_CV) &&
27648 	    UNEXPECTED(opline->extended_value & ZEND_ARRAY_ELEMENT_REF)) {
27649 		expr_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
27650 		if (Z_ISREF_P(expr_ptr)) {
27651 			Z_ADDREF_P(expr_ptr);
27652 		} else {
27653 			ZVAL_MAKE_REF_EX(expr_ptr, 2);
27654 		}
27655 		if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
27656 	} else {
27657 		expr_ptr = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
27658 		if (IS_VAR == IS_TMP_VAR) {
27659 			/* pass */
27660 		} else if (IS_VAR == IS_CONST) {
27661 			Z_TRY_ADDREF_P(expr_ptr);
27662 		} else if (IS_VAR == IS_CV) {
27663 			ZVAL_DEREF(expr_ptr);
27664 			Z_TRY_ADDREF_P(expr_ptr);
27665 		} else /* if (IS_VAR == IS_VAR) */ {
27666 			if (UNEXPECTED(Z_ISREF_P(expr_ptr))) {
27667 				zend_refcounted *ref = Z_COUNTED_P(expr_ptr);
27668 
27669 				expr_ptr = Z_REFVAL_P(expr_ptr);
27670 				if (UNEXPECTED(GC_DELREF(ref) == 0)) {
27671 					ZVAL_COPY_VALUE(&new_expr, expr_ptr);
27672 					expr_ptr = &new_expr;
27673 					efree_size(ref, sizeof(zend_reference));
27674 				} else if (Z_OPT_REFCOUNTED_P(expr_ptr)) {
27675 					Z_ADDREF_P(expr_ptr);
27676 				}
27677 			}
27678 		}
27679 	}
27680 
27681 	if (IS_UNUSED != IS_UNUSED) {
27682 
27683 		zval *offset = NULL;
27684 		zend_string *str;
27685 		zend_ulong hval;
27686 
27687 add_again:
27688 		if (EXPECTED(Z_TYPE_P(offset) == IS_STRING)) {
27689 			str = Z_STR_P(offset);
27690 			if (IS_UNUSED != IS_CONST) {
27691 				if (ZEND_HANDLE_NUMERIC(str, hval)) {
27692 					goto num_index;
27693 				}
27694 			}
27695 str_index:
27696 			zend_hash_update(Z_ARRVAL_P(EX_VAR(opline->result.var)), str, expr_ptr);
27697 		} else if (EXPECTED(Z_TYPE_P(offset) == IS_LONG)) {
27698 			hval = Z_LVAL_P(offset);
27699 num_index:
27700 			zend_hash_index_update(Z_ARRVAL_P(EX_VAR(opline->result.var)), hval, expr_ptr);
27701 		} else if ((IS_UNUSED & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
27702 			offset = Z_REFVAL_P(offset);
27703 			goto add_again;
27704 		} else if (Z_TYPE_P(offset) == IS_NULL) {
27705 			str = ZSTR_EMPTY_ALLOC();
27706 			goto str_index;
27707 		} else if (Z_TYPE_P(offset) == IS_DOUBLE) {
27708 			hval = zend_dval_to_lval(Z_DVAL_P(offset));
27709 			goto num_index;
27710 		} else if (Z_TYPE_P(offset) == IS_FALSE) {
27711 			hval = 0;
27712 			goto num_index;
27713 		} else if (Z_TYPE_P(offset) == IS_TRUE) {
27714 			hval = 1;
27715 			goto num_index;
27716 		} else if (IS_UNUSED == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
27717 			GET_OP2_UNDEF_CV(offset, BP_VAR_R);
27718 			str = ZSTR_EMPTY_ALLOC();
27719 			goto str_index;
27720 		} else {
27721 			zend_illegal_offset();
27722 			zval_ptr_dtor_nogc(expr_ptr);
27723 		}
27724 
27725 	} else {
27726 		if (!zend_hash_next_index_insert(Z_ARRVAL_P(EX_VAR(opline->result.var)), expr_ptr)) {
27727 			zend_cannot_add_element();
27728 			zval_ptr_dtor_nogc(expr_ptr);
27729 		}
27730 	}
27731 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
27732 }
27733 
27734 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_ARRAY_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
27735 {
27736 	zval *array;
27737 	uint32_t size;
27738 	USE_OPLINE
27739 
27740 	array = EX_VAR(opline->result.var);
27741 	if (IS_VAR != IS_UNUSED) {
27742 		size = opline->extended_value >> ZEND_ARRAY_SIZE_SHIFT;
27743 		ZVAL_ARR(array, zend_new_array(size));
27744 		/* Explicitly initialize array as not-packed if flag is set */
27745 		if (opline->extended_value & ZEND_ARRAY_NOT_PACKED) {
27746 			zend_hash_real_init_mixed(Z_ARRVAL_P(array));
27747 		}
27748 		ZEND_VM_TAIL_CALL(ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
27749 	} else {
27750 		ZVAL_EMPTY_ARRAY(array);
27751 		ZEND_VM_NEXT_OPCODE();
27752 	}
27753 }
27754 
27755 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SEPARATE_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
27756 {
27757 	USE_OPLINE
27758 	zval *var_ptr;
27759 
27760 	var_ptr = EX_VAR(opline->op1.var);
27761 	if (UNEXPECTED(Z_ISREF_P(var_ptr))) {
27762 		if (UNEXPECTED(Z_REFCOUNT_P(var_ptr) == 1)) {
27763 			ZVAL_UNREF(var_ptr);
27764 		}
27765 	}
27766 
27767 	ZEND_VM_NEXT_OPCODE();
27768 }
27769 
27770 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_YIELD_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
27771 {
27772 	USE_OPLINE
27773 
27774 	zend_generator *generator = zend_get_running_generator(EXECUTE_DATA_C);
27775 
27776 	SAVE_OPLINE();
27777 	if (UNEXPECTED(generator->flags & ZEND_GENERATOR_FORCED_CLOSE)) {
27778 		ZEND_VM_TAIL_CALL(zend_yield_in_closed_generator_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
27779 	}
27780 
27781 	/* Destroy the previously yielded value */
27782 	zval_ptr_dtor(&generator->value);
27783 
27784 	/* Destroy the previously yielded key */
27785 	zval_ptr_dtor(&generator->key);
27786 
27787 	/* Set the new yielded value */
27788 	if (IS_VAR != IS_UNUSED) {
27789 		zend_free_op free_op1;
27790 
27791 		if (UNEXPECTED(EX(func)->op_array.fn_flags & ZEND_ACC_RETURN_REFERENCE)) {
27792 			/* Constants and temporary variables aren't yieldable by reference,
27793 			 * but we still allow them with a notice. */
27794 			if (IS_VAR & (IS_CONST|IS_TMP_VAR)) {
27795 				zval *value;
27796 
27797 				zend_error(E_NOTICE, "Only variable references should be yielded by reference");
27798 
27799 				value = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
27800 				ZVAL_COPY_VALUE(&generator->value, value);
27801 				if (IS_VAR == IS_CONST) {
27802 					if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
27803 						Z_ADDREF(generator->value);
27804 					}
27805 				}
27806 			} else {
27807 				zval *value_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
27808 
27809 				/* If a function call result is yielded and the function did
27810 				 * not return by reference we throw a notice. */
27811 				if (IS_VAR == IS_VAR &&
27812 				    (value_ptr == &EG(uninitialized_zval) ||
27813 				     (opline->extended_value == ZEND_RETURNS_FUNCTION &&
27814 				      !Z_ISREF_P(value_ptr)))) {
27815 					zend_error(E_NOTICE, "Only variable references should be yielded by reference");
27816 					ZVAL_COPY(&generator->value, value_ptr);
27817 				} else {
27818 					if (Z_ISREF_P(value_ptr)) {
27819 						Z_ADDREF_P(value_ptr);
27820 					} else {
27821 						ZVAL_MAKE_REF_EX(value_ptr, 2);
27822 					}
27823 					ZVAL_REF(&generator->value, Z_REF_P(value_ptr));
27824 				}
27825 
27826 				if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
27827 			}
27828 		} else {
27829 			zval *value = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
27830 
27831 			/* Consts, temporary variables and references need copying */
27832 			if (IS_VAR == IS_CONST) {
27833 				ZVAL_COPY_VALUE(&generator->value, value);
27834 				if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
27835 					Z_ADDREF(generator->value);
27836 				}
27837 			} else if (IS_VAR == IS_TMP_VAR) {
27838 				ZVAL_COPY_VALUE(&generator->value, value);
27839             } else if ((IS_VAR & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
27840 				ZVAL_COPY(&generator->value, Z_REFVAL_P(value));
27841 				zval_ptr_dtor_nogc(free_op1);
27842 			} else {
27843 				ZVAL_COPY_VALUE(&generator->value, value);
27844 				if (IS_VAR == IS_CV) {
27845 					if (Z_OPT_REFCOUNTED_P(value)) Z_ADDREF_P(value);
27846 				}
27847 			}
27848 		}
27849 	} else {
27850 		/* If no value was specified yield null */
27851 		ZVAL_NULL(&generator->value);
27852 	}
27853 
27854 	/* Set the new yielded key */
27855 	if (IS_UNUSED != IS_UNUSED) {
27856 
27857 		zval *key = NULL;
27858 
27859 		/* Consts, temporary variables and references need copying */
27860 		if (IS_UNUSED == IS_CONST) {
27861 			ZVAL_COPY_VALUE(&generator->key, key);
27862 			if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->key))) {
27863 				Z_ADDREF(generator->key);
27864 			}
27865 		} else if (IS_UNUSED == IS_TMP_VAR) {
27866 			ZVAL_COPY_VALUE(&generator->key, key);
27867 		} else if ((IS_UNUSED & (IS_VAR|IS_CV)) && Z_ISREF_P(key)) {
27868 			ZVAL_COPY(&generator->key, Z_REFVAL_P(key));
27869 
27870 		} else {
27871 			ZVAL_COPY_VALUE(&generator->key, key);
27872 			if (IS_UNUSED == IS_CV) {
27873 				if (Z_OPT_REFCOUNTED_P(key)) Z_ADDREF_P(key);
27874 			}
27875 		}
27876 
27877 		if (Z_TYPE(generator->key) == IS_LONG
27878 		    && Z_LVAL(generator->key) > generator->largest_used_integer_key
27879 		) {
27880 			generator->largest_used_integer_key = Z_LVAL(generator->key);
27881 		}
27882 	} else {
27883 		/* If no key was specified we use auto-increment keys */
27884 		generator->largest_used_integer_key++;
27885 		ZVAL_LONG(&generator->key, generator->largest_used_integer_key);
27886 	}
27887 
27888 	if (RETURN_VALUE_USED(opline)) {
27889 		/* If the return value of yield is used set the send
27890 		 * target and initialize it to NULL */
27891 		generator->send_target = EX_VAR(opline->result.var);
27892 		ZVAL_NULL(generator->send_target);
27893 	} else {
27894 		generator->send_target = NULL;
27895 	}
27896 
27897 	/* We increment to the next op, so we are at the correct position when the
27898 	 * generator is resumed. */
27899 	ZEND_VM_INC_OPCODE();
27900 
27901 	/* The GOTO VM uses a local opline variable. We need to set the opline
27902 	 * variable in execute_data so we don't resume at an old position. */
27903 	SAVE_OPLINE();
27904 
27905 	ZEND_VM_RETURN();
27906 }
27907 
27908 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_MAKE_REF_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
27909 {
27910 	USE_OPLINE
27911 	zval *op1 = EX_VAR(opline->op1.var);
27912 
27913 	if (IS_VAR == IS_CV) {
27914 		if (UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
27915 			ZVAL_NEW_EMPTY_REF(op1);
27916 			Z_SET_REFCOUNT_P(op1, 2);
27917 			ZVAL_NULL(Z_REFVAL_P(op1));
27918 			ZVAL_REF(EX_VAR(opline->result.var), Z_REF_P(op1));
27919 		} else {
27920 			if (Z_ISREF_P(op1)) {
27921 				Z_ADDREF_P(op1);
27922 			} else {
27923 				ZVAL_MAKE_REF_EX(op1, 2);
27924 			}
27925 			ZVAL_REF(EX_VAR(opline->result.var), Z_REF_P(op1));
27926 		}
27927 	} else if (EXPECTED(Z_TYPE_P(op1) == IS_INDIRECT)) {
27928 		op1 = Z_INDIRECT_P(op1);
27929 		if (EXPECTED(!Z_ISREF_P(op1))) {
27930 			ZVAL_MAKE_REF_EX(op1, 2);
27931 		} else {
27932 			GC_ADDREF(Z_REF_P(op1));
27933 		}
27934 		ZVAL_REF(EX_VAR(opline->result.var), Z_REF_P(op1));
27935 	} else {
27936 		ZVAL_COPY_VALUE(EX_VAR(opline->result.var), op1);
27937 	}
27938 	ZEND_VM_NEXT_OPCODE();
27939 }
27940 
27941 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_COUNT_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
27942 {
27943 	USE_OPLINE
27944 	zend_free_op free_op1;
27945 	zval *op1;
27946 	zend_long count;
27947 
27948 	SAVE_OPLINE();
27949 	op1 = _get_zval_ptr_var_deref(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
27950 	do {
27951 		if (Z_TYPE_P(op1) == IS_ARRAY) {
27952 			count = zend_array_count(Z_ARRVAL_P(op1));
27953 			break;
27954 		} else if (Z_TYPE_P(op1) == IS_OBJECT) {
27955 			/* first, we check if the handler is defined */
27956 			if (Z_OBJ_HT_P(op1)->count_elements) {
27957 				if (SUCCESS == Z_OBJ_HT_P(op1)->count_elements(op1, &count)) {
27958 					break;
27959 				}
27960 			}
27961 
27962 			/* if not and the object implements Countable we call its count() method */
27963 			if (instanceof_function(Z_OBJCE_P(op1), zend_ce_countable)) {
27964 				zval retval;
27965 
27966 				zend_call_method_with_0_params(op1, NULL, NULL, "count", &retval);
27967 				count = zval_get_long(&retval);
27968 				zval_ptr_dtor(&retval);
27969 				break;
27970 			}
27971 
27972 			/* If There's no handler and it doesn't implement Countable then add a warning */
27973 			count = 1;
27974 		} else if (Z_TYPE_P(op1) == IS_NULL) {
27975 			count = 0;
27976 		} else {
27977 			count = 1;
27978 		}
27979 		zend_error(E_WARNING, "count(): Parameter must be an array or an object that implements Countable");
27980 	} while (0);
27981 
27982 	ZVAL_LONG(EX_VAR(opline->result.var), count);
27983 	zval_ptr_dtor_nogc(free_op1);
27984 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
27985 }
27986 
27987 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_GET_CLASS_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
27988 {
27989 	USE_OPLINE
27990 
27991 	if (IS_VAR == IS_UNUSED) {
27992 		if (UNEXPECTED(!EX(func)->common.scope)) {
27993 			SAVE_OPLINE();
27994 			zend_error(E_WARNING, "get_class() called without object from outside a class");
27995 			ZVAL_FALSE(EX_VAR(opline->result.var));
27996 			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
27997 		} else {
27998 			ZVAL_STR_COPY(EX_VAR(opline->result.var), EX(func)->common.scope->name);
27999 			ZEND_VM_NEXT_OPCODE();
28000 		}
28001 	} else {
28002 		zend_free_op free_op1;
28003 		zval *op1;
28004 
28005 		SAVE_OPLINE();
28006 		op1 = _get_zval_ptr_var_deref(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
28007 		if (Z_TYPE_P(op1) == IS_OBJECT) {
28008 			ZVAL_STR_COPY(EX_VAR(opline->result.var), Z_OBJCE_P(op1)->name);
28009 		} else {
28010 			zend_error(E_WARNING, "get_class() expects parameter 1 to be object, %s given", zend_get_type_by_const(Z_TYPE_P(op1)));
28011 			ZVAL_FALSE(EX_VAR(opline->result.var));
28012 		}
28013 		zval_ptr_dtor_nogc(free_op1);
28014 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
28015 	}
28016 }
28017 
28018 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_GET_TYPE_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
28019 {
28020 	USE_OPLINE
28021 	zend_free_op free_op1;
28022 	zval *op1;
28023 	zend_string *type;
28024 
28025 	SAVE_OPLINE();
28026 	op1 = _get_zval_ptr_var_deref(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
28027 	type = zend_zval_get_type(op1);
28028 	if (EXPECTED(type)) {
28029 		ZVAL_INTERNED_STR(EX_VAR(opline->result.var), type);
28030 	} else {
28031 		ZVAL_STRING(EX_VAR(opline->result.var), "unknown type");
28032 	}
28033 	zval_ptr_dtor_nogc(free_op1);
28034 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
28035 }
28036 
28037 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_obj_helper_SPEC_VAR_CV(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
28038 {
28039 	USE_OPLINE
28040 	zend_free_op free_op1, free_op_data1;
28041 	zval *object;
28042 	zval *property;
28043 	zval *value;
28044 	zval *zptr;
28045 
28046 	SAVE_OPLINE();
28047 	object = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
28048 
28049 	if (IS_VAR == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
28050 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
28051 	}
28052 
28053 	property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
28054 
28055 	do {
28056 		value = get_op_data_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data1);
28057 
28058 		if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
28059 			if (Z_ISREF_P(object)) {
28060 				object = Z_REFVAL_P(object);
28061 				if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
28062 					goto assign_op_object;
28063 				}
28064 			}
28065 			if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
28066 				break;
28067 			}
28068 		}
28069 
28070 		/* here we are sure we are dealing with an object */
28071 assign_op_object:
28072 		if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
28073 			&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CV == IS_CONST) ? CACHE_ADDR((opline+1)->extended_value) : NULL))) != NULL)) {
28074 			if (UNEXPECTED(Z_ISERROR_P(zptr))) {
28075 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
28076 					ZVAL_NULL(EX_VAR(opline->result.var));
28077 				}
28078 			} else {
28079 				ZVAL_DEREF(zptr);
28080 
28081 				binary_op(zptr, zptr, value);
28082 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
28083 					ZVAL_COPY(EX_VAR(opline->result.var), zptr);
28084 				}
28085 			}
28086 		} else {
28087 			zend_assign_op_overloaded_property(object, property, ((IS_CV == IS_CONST) ? CACHE_ADDR((opline+1)->extended_value) : NULL), value, binary_op OPLINE_CC EXECUTE_DATA_CC);
28088 		}
28089 	} while (0);
28090 
28091 	FREE_OP(free_op_data1);
28092 
28093 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
28094 	/* assign_obj has two opcodes! */
28095 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
28096 }
28097 
28098 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_dim_helper_SPEC_VAR_CV(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
28099 {
28100 	USE_OPLINE
28101 	zend_free_op free_op1, free_op_data1;
28102 	zval *var_ptr;
28103 	zval *value, *container, *dim;
28104 
28105 	SAVE_OPLINE();
28106 	container = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
28107 
28108 	if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
28109 assign_dim_op_array:
28110 		SEPARATE_ARRAY(container);
28111 assign_dim_op_new_array:
28112 		dim = EX_VAR(opline->op2.var);
28113 		if (IS_CV == IS_UNUSED) {
28114 			var_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(container), &EG(uninitialized_zval));
28115 			if (UNEXPECTED(!var_ptr)) {
28116 				zend_cannot_add_element();
28117 				goto assign_dim_op_ret_null;
28118 			}
28119 		} else {
28120 			if (IS_CV == IS_CONST) {
28121 				var_ptr = zend_fetch_dimension_address_inner_RW_CONST(Z_ARRVAL_P(container), dim EXECUTE_DATA_CC);
28122 			} else {
28123 				var_ptr = zend_fetch_dimension_address_inner_RW(Z_ARRVAL_P(container), dim EXECUTE_DATA_CC);
28124 			}
28125 			if (UNEXPECTED(!var_ptr)) {
28126 				goto assign_dim_op_ret_null;
28127 			}
28128 			ZVAL_DEREF(var_ptr);
28129 		}
28130 
28131 		value = get_op_data_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data1);
28132 
28133 		binary_op(var_ptr, var_ptr, value);
28134 
28135 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
28136 			ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
28137 		}
28138 	} else {
28139 		if (EXPECTED(Z_ISREF_P(container))) {
28140 			container = Z_REFVAL_P(container);
28141 			if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
28142 				goto assign_dim_op_array;
28143 			}
28144 		} else if (IS_VAR == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(container) == IS_UNDEF)) {
28145 			container = GET_OP1_UNDEF_CV(container, BP_VAR_RW);
28146 assign_dim_op_convert_to_array:
28147 			ZVAL_ARR(container, zend_new_array(8));
28148 			goto assign_dim_op_new_array;
28149 		}
28150 
28151 		dim = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
28152 
28153 		if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
28154 			value = get_op_data_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data1);
28155 			if (IS_CV == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
28156 				dim++;
28157 			}
28158 			zend_binary_assign_op_obj_dim(container, dim, value, UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL, binary_op EXECUTE_DATA_CC);
28159 		} else {
28160 			if (UNEXPECTED(Z_TYPE_P(container) == IS_STRING)) {
28161 				if (IS_CV == IS_UNUSED) {
28162 					zend_use_new_element_for_string();
28163 				} else {
28164 					zend_check_string_offset(dim, BP_VAR_RW EXECUTE_DATA_CC);
28165 					zend_wrong_string_offset(EXECUTE_DATA_C);
28166 				}
28167 				UNDEF_RESULT();
28168 			} else if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) {
28169 				goto assign_dim_op_convert_to_array;
28170 			} else {
28171 				if (UNEXPECTED(IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(container)))) {
28172 					zend_use_scalar_as_array();
28173 				}
28174 assign_dim_op_ret_null:
28175 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
28176 					ZVAL_NULL(EX_VAR(opline->result.var));
28177 				}
28178 			}
28179 			value = get_op_data_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data1);
28180 		}
28181 	}
28182 
28183 	FREE_OP(free_op_data1);
28184 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
28185 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
28186 }
28187 
28188 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_simple_helper_SPEC_VAR_CV(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
28189 {
28190 	USE_OPLINE
28191 	zend_free_op free_op1;
28192 	zval *var_ptr;
28193 	zval *value;
28194 
28195 	SAVE_OPLINE();
28196 	value = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
28197 	var_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
28198 
28199 	if (IS_VAR == IS_VAR && UNEXPECTED(Z_ISERROR_P(var_ptr))) {
28200 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
28201 			ZVAL_NULL(EX_VAR(opline->result.var));
28202 		}
28203 	} else {
28204 		ZVAL_DEREF(var_ptr);
28205 
28206 		binary_op(var_ptr, var_ptr, value);
28207 
28208 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
28209 			ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
28210 		}
28211 	}
28212 
28213 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
28214 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
28215 }
28216 
28217 static zend_always_inline ZEND_OPCODE_HANDLER_RET zend_binary_assign_op_helper_SPEC_VAR_CV(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
28218 {
28219 #if 1 && IS_CV == IS_UNUSED
28220 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_VAR_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
28221 #else
28222 # if 0 || IS_VAR != IS_UNUSED
28223 #  if 0
28224 	/* opline->extended_value checks are specialized, don't need opline */
28225 	USE_OPLINE
28226 #  endif
28227 
28228 	if (EXPECTED(1)) {
28229 		ZEND_VM_TAIL_CALL(zend_binary_assign_op_simple_helper_SPEC_VAR_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
28230 	}
28231 	if (EXPECTED(0)) {
28232 		ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_VAR_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
28233 	}
28234 # endif
28235 
28236 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_obj_helper_SPEC_VAR_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
28237 #endif
28238 }
28239 
28240 static zend_always_inline ZEND_OPCODE_HANDLER_RET zend_binary_assign_op_helper_SPEC_VAR_CV_DIM(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
28241 {
28242 #if 1 && IS_CV == IS_UNUSED
28243 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_VAR_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
28244 #else
28245 # if 0 || IS_VAR != IS_UNUSED
28246 #  if 0
28247 	/* opline->extended_value checks are specialized, don't need opline */
28248 	USE_OPLINE
28249 #  endif
28250 
28251 	if (EXPECTED(0)) {
28252 		ZEND_VM_TAIL_CALL(zend_binary_assign_op_simple_helper_SPEC_VAR_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
28253 	}
28254 	if (EXPECTED(1)) {
28255 		ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_VAR_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
28256 	}
28257 # endif
28258 
28259 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_obj_helper_SPEC_VAR_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
28260 #endif
28261 }
28262 
28263 static zend_always_inline ZEND_OPCODE_HANDLER_RET zend_binary_assign_op_helper_SPEC_VAR_CV_OBJ(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
28264 {
28265 #if 1 && IS_CV == IS_UNUSED
28266 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_VAR_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
28267 #else
28268 # if 0 || IS_VAR != IS_UNUSED
28269 #  if 0
28270 	/* opline->extended_value checks are specialized, don't need opline */
28271 	USE_OPLINE
28272 #  endif
28273 
28274 	if (EXPECTED(0)) {
28275 		ZEND_VM_TAIL_CALL(zend_binary_assign_op_simple_helper_SPEC_VAR_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
28276 	}
28277 	if (EXPECTED(0)) {
28278 		ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_VAR_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
28279 	}
28280 # endif
28281 
28282 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_obj_helper_SPEC_VAR_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
28283 #endif
28284 }
28285 
28286 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_ADD_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
28287 {
28288 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CV(add_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
28289 }
28290 
28291 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_ADD_SPEC_VAR_CV_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
28292 {
28293 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CV_DIM(add_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
28294 }
28295 
28296 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_ADD_SPEC_VAR_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
28297 {
28298 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CV_OBJ(add_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
28299 }
28300 
28301 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SUB_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
28302 {
28303 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CV(sub_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
28304 }
28305 
28306 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SUB_SPEC_VAR_CV_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
28307 {
28308 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CV_DIM(sub_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
28309 }
28310 
28311 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SUB_SPEC_VAR_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
28312 {
28313 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CV_OBJ(sub_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
28314 }
28315 
28316 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MUL_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
28317 {
28318 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CV(mul_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
28319 }
28320 
28321 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MUL_SPEC_VAR_CV_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
28322 {
28323 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CV_DIM(mul_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
28324 }
28325 
28326 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MUL_SPEC_VAR_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
28327 {
28328 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CV_OBJ(mul_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
28329 }
28330 
28331 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIV_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
28332 {
28333 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CV(div_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
28334 }
28335 
28336 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIV_SPEC_VAR_CV_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
28337 {
28338 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CV_DIM(div_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
28339 }
28340 
28341 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIV_SPEC_VAR_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
28342 {
28343 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CV_OBJ(div_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
28344 }
28345 
28346 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MOD_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
28347 {
28348 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CV(mod_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
28349 }
28350 
28351 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MOD_SPEC_VAR_CV_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
28352 {
28353 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CV_DIM(mod_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
28354 }
28355 
28356 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MOD_SPEC_VAR_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
28357 {
28358 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CV_OBJ(mod_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
28359 }
28360 
28361 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SL_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
28362 {
28363 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CV(shift_left_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
28364 }
28365 
28366 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SL_SPEC_VAR_CV_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
28367 {
28368 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CV_DIM(shift_left_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
28369 }
28370 
28371 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SL_SPEC_VAR_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
28372 {
28373 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CV_OBJ(shift_left_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
28374 }
28375 
28376 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SR_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
28377 {
28378 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CV(shift_right_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
28379 }
28380 
28381 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SR_SPEC_VAR_CV_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
28382 {
28383 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CV_DIM(shift_right_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
28384 }
28385 
28386 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SR_SPEC_VAR_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
28387 {
28388 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CV_OBJ(shift_right_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
28389 }
28390 
28391 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_CONCAT_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
28392 {
28393 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CV(concat_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
28394 }
28395 
28396 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_CONCAT_SPEC_VAR_CV_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
28397 {
28398 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CV_DIM(concat_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
28399 }
28400 
28401 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_CONCAT_SPEC_VAR_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
28402 {
28403 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CV_OBJ(concat_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
28404 }
28405 
28406 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_OR_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
28407 {
28408 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CV(bitwise_or_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
28409 }
28410 
28411 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_OR_SPEC_VAR_CV_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
28412 {
28413 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CV_DIM(bitwise_or_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
28414 }
28415 
28416 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_OR_SPEC_VAR_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
28417 {
28418 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CV_OBJ(bitwise_or_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
28419 }
28420 
28421 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_AND_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
28422 {
28423 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CV(bitwise_and_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
28424 }
28425 
28426 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_AND_SPEC_VAR_CV_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
28427 {
28428 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CV_DIM(bitwise_and_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
28429 }
28430 
28431 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_AND_SPEC_VAR_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
28432 {
28433 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CV_OBJ(bitwise_and_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
28434 }
28435 
28436 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_XOR_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
28437 {
28438 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CV(bitwise_xor_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
28439 }
28440 
28441 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_XOR_SPEC_VAR_CV_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
28442 {
28443 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CV_DIM(bitwise_xor_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
28444 }
28445 
28446 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_XOR_SPEC_VAR_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
28447 {
28448 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CV_OBJ(bitwise_xor_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
28449 }
28450 
28451 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_POW_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
28452 {
28453 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CV(pow_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
28454 }
28455 
28456 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_POW_SPEC_VAR_CV_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
28457 {
28458 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CV_DIM(pow_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
28459 }
28460 
28461 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_POW_SPEC_VAR_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
28462 {
28463 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CV_OBJ(pow_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
28464 }
28465 
28466 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_pre_incdec_property_helper_SPEC_VAR_CV(int inc ZEND_OPCODE_HANDLER_ARGS_DC)
28467 {
28468 	USE_OPLINE
28469 	zend_free_op free_op1;
28470 	zval *object;
28471 	zval *property;
28472 	zval *zptr;
28473 
28474 	SAVE_OPLINE();
28475 	object = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
28476 
28477 	if (IS_VAR == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
28478 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
28479 	}
28480 
28481 	property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
28482 
28483 	do {
28484 		if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
28485 			if (Z_ISREF_P(object)) {
28486 				object = Z_REFVAL_P(object);
28487 				if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
28488 					goto pre_incdec_object;
28489 				}
28490 			}
28491 			if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
28492 				break;
28493 			}
28494 		}
28495 
28496 		/* here we are sure we are dealing with an object */
28497 pre_incdec_object:
28498 		if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
28499 			&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL))) != NULL)) {
28500 			if (UNEXPECTED(Z_ISERROR_P(zptr))) {
28501 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
28502 					ZVAL_NULL(EX_VAR(opline->result.var));
28503 				}
28504 			} else {
28505 				if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
28506 					if (inc) {
28507 						fast_long_increment_function(zptr);
28508 					} else {
28509 						fast_long_decrement_function(zptr);
28510 					}
28511 				} else {
28512 					ZVAL_DEREF(zptr);
28513 
28514 					if (inc) {
28515 						increment_function(zptr);
28516 					} else {
28517 						decrement_function(zptr);
28518 					}
28519 				}
28520 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
28521 					ZVAL_COPY(EX_VAR(opline->result.var), zptr);
28522 				}
28523 			}
28524 		} else {
28525 			zend_pre_incdec_overloaded_property(object, property, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), inc OPLINE_CC EXECUTE_DATA_CC);
28526 		}
28527 	} while (0);
28528 
28529 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
28530 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
28531 }
28532 
28533 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_INC_OBJ_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
28534 {
28535 	ZEND_VM_TAIL_CALL(zend_pre_incdec_property_helper_SPEC_VAR_CV(1 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
28536 }
28537 
28538 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_DEC_OBJ_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
28539 {
28540 	ZEND_VM_TAIL_CALL(zend_pre_incdec_property_helper_SPEC_VAR_CV(0 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
28541 }
28542 
28543 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_post_incdec_property_helper_SPEC_VAR_CV(int inc ZEND_OPCODE_HANDLER_ARGS_DC)
28544 {
28545 	USE_OPLINE
28546 	zend_free_op free_op1;
28547 	zval *object;
28548 	zval *property;
28549 	zval *zptr;
28550 
28551 	SAVE_OPLINE();
28552 	object = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
28553 
28554 	if (IS_VAR == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
28555 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
28556 	}
28557 
28558 	property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
28559 
28560 	do {
28561 		if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
28562 			if (Z_ISREF_P(object)) {
28563 				object = Z_REFVAL_P(object);
28564 				if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
28565 					goto post_incdec_object;
28566 				}
28567 			}
28568 			if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
28569 				break;
28570 			}
28571 		}
28572 
28573 		/* here we are sure we are dealing with an object */
28574 post_incdec_object:
28575 		if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
28576 			&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL))) != NULL)) {
28577 			if (UNEXPECTED(Z_ISERROR_P(zptr))) {
28578 				ZVAL_NULL(EX_VAR(opline->result.var));
28579 			} else {
28580 				if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
28581 					ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(zptr));
28582 					if (inc) {
28583 						fast_long_increment_function(zptr);
28584 					} else {
28585 						fast_long_decrement_function(zptr);
28586 					}
28587 				} else {
28588 					ZVAL_DEREF(zptr);
28589 					ZVAL_COPY(EX_VAR(opline->result.var), zptr);
28590 					if (inc) {
28591 						increment_function(zptr);
28592 					} else {
28593 						decrement_function(zptr);
28594 					}
28595 				}
28596 			}
28597 		} else {
28598 			zend_post_incdec_overloaded_property(object, property, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), inc OPLINE_CC EXECUTE_DATA_CC);
28599 		}
28600 	} while (0);
28601 
28602 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
28603 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
28604 }
28605 
28606 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_POST_INC_OBJ_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
28607 {
28608 	ZEND_VM_TAIL_CALL(zend_post_incdec_property_helper_SPEC_VAR_CV(1 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
28609 }
28610 
28611 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_POST_DEC_OBJ_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
28612 {
28613 	ZEND_VM_TAIL_CALL(zend_post_incdec_property_helper_SPEC_VAR_CV(0 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
28614 }
28615 
28616 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_W_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
28617 {
28618 	USE_OPLINE
28619 	zend_free_op free_op1;
28620 	zval *container;
28621 
28622 	SAVE_OPLINE();
28623 	container = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
28624 	zend_fetch_dimension_address_W(container, EX_VAR(opline->op2.var), IS_CV OPLINE_CC EXECUTE_DATA_CC);
28625 
28626 	if (IS_VAR == IS_VAR) {
28627 		zval *result = EX_VAR(opline->result.var);
28628 		FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(free_op1, result);
28629 	}
28630 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
28631 }
28632 
28633 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_RW_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
28634 {
28635 	USE_OPLINE
28636 	zend_free_op free_op1;
28637 	zval *container;
28638 
28639 	SAVE_OPLINE();
28640 	container = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
28641 	zend_fetch_dimension_address_RW(container, EX_VAR(opline->op2.var), IS_CV OPLINE_CC EXECUTE_DATA_CC);
28642 
28643 	if (IS_VAR == IS_VAR) {
28644 		zval *result = EX_VAR(opline->result.var);
28645 		FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(free_op1, result);
28646 	}
28647 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
28648 }
28649 
28650 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
28651 {
28652 	if (UNEXPECTED(ZEND_CALL_INFO(EX(call)) & ZEND_CALL_SEND_ARG_BY_REF)) {
28653         if ((IS_VAR & (IS_CONST|IS_TMP_VAR))) {
28654 			ZEND_VM_TAIL_CALL(zend_use_tmp_in_write_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
28655         }
28656 		ZEND_VM_TAIL_CALL(ZEND_FETCH_DIM_W_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
28657 	} else {
28658 		if (IS_CV == IS_UNUSED) {
28659 			ZEND_VM_TAIL_CALL(zend_use_undef_in_read_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
28660 		}
28661 		ZEND_VM_TAIL_CALL(ZEND_FETCH_DIM_R_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
28662 	}
28663 }
28664 
28665 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_UNSET_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
28666 {
28667 	USE_OPLINE
28668 	zend_free_op free_op1;
28669 	zval *container;
28670 
28671 	SAVE_OPLINE();
28672 	container = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
28673 	zend_fetch_dimension_address_UNSET(container, EX_VAR(opline->op2.var), IS_CV OPLINE_CC EXECUTE_DATA_CC);
28674 
28675 	if (IS_VAR == IS_VAR) {
28676 		zval *result = EX_VAR(opline->result.var);
28677 		FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(free_op1, result);
28678 	}
28679 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
28680 }
28681 
28682 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_W_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
28683 {
28684 	USE_OPLINE
28685 	zend_free_op free_op1;
28686 	zval *property, *container, *result;
28687 
28688 	SAVE_OPLINE();
28689 
28690 	container = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
28691 	if (IS_VAR == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
28692 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
28693 	}
28694 
28695 	property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
28696 	result = EX_VAR(opline->result.var);
28697 	zend_fetch_property_address(result, container, IS_VAR, property, IS_CV, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_W OPLINE_CC);
28698 
28699 	if (IS_VAR == IS_VAR) {
28700 		FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(free_op1, result);
28701 	}
28702 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
28703 }
28704 
28705 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_RW_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
28706 {
28707 	USE_OPLINE
28708 	zend_free_op free_op1;
28709 	zval *property, *container, *result;
28710 
28711 	SAVE_OPLINE();
28712 	container = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
28713 
28714 	if (IS_VAR == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
28715 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
28716 	}
28717 	property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
28718 	result = EX_VAR(opline->result.var);
28719 	zend_fetch_property_address(result, container, IS_VAR, property, IS_CV, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_RW OPLINE_CC);
28720 
28721 	if (IS_VAR == IS_VAR) {
28722 		FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(free_op1, result);
28723 	}
28724 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
28725 }
28726 
28727 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_FUNC_ARG_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
28728 {
28729 	if (UNEXPECTED(ZEND_CALL_INFO(EX(call)) & ZEND_CALL_SEND_ARG_BY_REF)) {
28730 		/* Behave like FETCH_OBJ_W */
28731 		if ((IS_VAR & (IS_CONST|IS_TMP_VAR))) {
28732 			ZEND_VM_TAIL_CALL(zend_use_tmp_in_write_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
28733 		}
28734 
28735 		ZEND_VM_TAIL_CALL(ZEND_FETCH_OBJ_W_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
28736 	} else {
28737 		ZEND_VM_TAIL_CALL(ZEND_FETCH_OBJ_R_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
28738 	}
28739 }
28740 
28741 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_UNSET_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
28742 {
28743 	USE_OPLINE
28744 	zend_free_op free_op1;
28745 	zval *container, *property, *result;
28746 
28747 	SAVE_OPLINE();
28748 	container = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
28749 
28750 	if (IS_VAR == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
28751 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
28752 	}
28753 
28754 	property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
28755 	result = EX_VAR(opline->result.var);
28756 	zend_fetch_property_address(result, container, IS_VAR, property, IS_CV, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_UNSET OPLINE_CC);
28757 
28758 	if (IS_VAR == IS_VAR) {
28759 		FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(free_op1, result);
28760 	}
28761 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
28762 }
28763 
28764 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_LIST_W_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
28765 {
28766 	USE_OPLINE
28767 	zend_free_op free_op1;
28768 	zval *container, *dim;
28769 
28770 	SAVE_OPLINE();
28771 	container = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
28772 	dim = EX_VAR(opline->op2.var);
28773 
28774 	if (IS_VAR == IS_VAR
28775 		&& Z_TYPE_P(EX_VAR(opline->op1.var)) != IS_INDIRECT
28776 		&& UNEXPECTED(!Z_ISREF_P(container))
28777 	) {
28778 		zend_error(E_NOTICE, "Attempting to set reference to non referenceable value");
28779 		zend_fetch_dimension_address_LIST_r(container, dim, IS_CV OPLINE_CC EXECUTE_DATA_CC);
28780 	} else {
28781 		zend_fetch_dimension_address_W(container, dim, IS_CV OPLINE_CC EXECUTE_DATA_CC);
28782 	}
28783 
28784 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
28785 }
28786 
28787 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_VAR_CV_OP_DATA_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
28788 {
28789 	USE_OPLINE
28790 	zend_free_op free_op1;
28791 	zval *object, *property, *value, tmp;
28792 
28793 	SAVE_OPLINE();
28794 	object = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
28795 
28796 	if (IS_VAR == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
28797 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
28798 	}
28799 
28800 	property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
28801 	value = RT_CONSTANT((opline+1), (opline+1)->op1);
28802 
28803 	if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
28804 		if (Z_ISREF_P(object)) {
28805 			object = Z_REFVAL_P(object);
28806 			if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
28807 				goto assign_object;
28808 			}
28809 		}
28810 		if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
28811 
28812 			goto exit_assign_obj;
28813 		}
28814 	}
28815 
28816 assign_object:
28817 	if (IS_CV == IS_CONST &&
28818 	    EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(opline->extended_value))) {
28819 		uintptr_t prop_offset = (uintptr_t)CACHED_PTR(opline->extended_value + sizeof(void*));
28820 		zend_object *zobj = Z_OBJ_P(object);
28821 		zval *property_val;
28822 
28823 		if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
28824 			property_val = OBJ_PROP(zobj, prop_offset);
28825 			if (Z_TYPE_P(property_val) != IS_UNDEF) {
28826 fast_assign_obj:
28827 				value = zend_assign_to_variable(property_val, value, IS_CONST);
28828 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
28829 					ZVAL_COPY(EX_VAR(opline->result.var), value);
28830 				}
28831 				goto exit_assign_obj;
28832 			}
28833 		} else {
28834 			if (EXPECTED(zobj->properties != NULL)) {
28835 				if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
28836 					if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
28837 						GC_DELREF(zobj->properties);
28838 					}
28839 					zobj->properties = zend_array_dup(zobj->properties);
28840 				}
28841 				property_val = zend_hash_find_ex(zobj->properties, Z_STR_P(property), 1);
28842 				if (property_val) {
28843 					goto fast_assign_obj;
28844 				}
28845 			}
28846 
28847 			if (!zobj->ce->__set) {
28848 
28849 				if (EXPECTED(zobj->properties == NULL)) {
28850 					rebuild_object_properties(zobj);
28851 				}
28852 				if (IS_CONST == IS_CONST) {
28853 					if (UNEXPECTED(Z_OPT_REFCOUNTED_P(value))) {
28854 						Z_ADDREF_P(value);
28855 					}
28856 				} else if (IS_CONST != IS_TMP_VAR) {
28857 					if (Z_ISREF_P(value)) {
28858 						if (IS_CONST == IS_VAR) {
28859 							zend_reference *ref = Z_REF_P(value);
28860 							if (GC_DELREF(ref) == 0) {
28861 								ZVAL_COPY_VALUE(&tmp, Z_REFVAL_P(value));
28862 								efree_size(ref, sizeof(zend_reference));
28863 								value = &tmp;
28864 							} else {
28865 								value = Z_REFVAL_P(value);
28866 								Z_TRY_ADDREF_P(value);
28867 							}
28868 						} else {
28869 							value = Z_REFVAL_P(value);
28870 							Z_TRY_ADDREF_P(value);
28871 						}
28872 					} else if (IS_CONST == IS_CV) {
28873 						Z_TRY_ADDREF_P(value);
28874 					}
28875 				}
28876 				zend_hash_add_new(zobj->properties, Z_STR_P(property), value);
28877 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
28878 					ZVAL_COPY(EX_VAR(opline->result.var), value);
28879 				}
28880 				goto exit_assign_obj;
28881 			}
28882 		}
28883 	}
28884 
28885 	if (!Z_OBJ_HT_P(object)->write_property) {
28886 		zend_wrong_property_assignment(property OPLINE_CC EXECUTE_DATA_CC);
28887 
28888 		goto exit_assign_obj;
28889 	}
28890 
28891 	if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
28892 		ZVAL_DEREF(value);
28893 	}
28894 
28895 	Z_OBJ_HT_P(object)->write_property(object, property, value, (IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
28896 
28897 	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
28898 		ZVAL_COPY(EX_VAR(opline->result.var), value);
28899 	}
28900 
28901 exit_assign_obj:
28902 
28903 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
28904 	/* assign_obj has two opcodes! */
28905 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
28906 }
28907 
28908 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_VAR_CV_OP_DATA_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
28909 {
28910 	USE_OPLINE
28911 	zend_free_op free_op1, free_op_data;
28912 	zval *object, *property, *value, tmp;
28913 
28914 	SAVE_OPLINE();
28915 	object = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
28916 
28917 	if (IS_VAR == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
28918 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
28919 	}
28920 
28921 	property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
28922 	value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
28923 
28924 	if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
28925 		if (Z_ISREF_P(object)) {
28926 			object = Z_REFVAL_P(object);
28927 			if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
28928 				goto assign_object;
28929 			}
28930 		}
28931 		if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
28932 			zval_ptr_dtor_nogc(free_op_data);
28933 			goto exit_assign_obj;
28934 		}
28935 	}
28936 
28937 assign_object:
28938 	if (IS_CV == IS_CONST &&
28939 	    EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(opline->extended_value))) {
28940 		uintptr_t prop_offset = (uintptr_t)CACHED_PTR(opline->extended_value + sizeof(void*));
28941 		zend_object *zobj = Z_OBJ_P(object);
28942 		zval *property_val;
28943 
28944 		if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
28945 			property_val = OBJ_PROP(zobj, prop_offset);
28946 			if (Z_TYPE_P(property_val) != IS_UNDEF) {
28947 fast_assign_obj:
28948 				value = zend_assign_to_variable(property_val, value, IS_TMP_VAR);
28949 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
28950 					ZVAL_COPY(EX_VAR(opline->result.var), value);
28951 				}
28952 				goto exit_assign_obj;
28953 			}
28954 		} else {
28955 			if (EXPECTED(zobj->properties != NULL)) {
28956 				if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
28957 					if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
28958 						GC_DELREF(zobj->properties);
28959 					}
28960 					zobj->properties = zend_array_dup(zobj->properties);
28961 				}
28962 				property_val = zend_hash_find_ex(zobj->properties, Z_STR_P(property), 1);
28963 				if (property_val) {
28964 					goto fast_assign_obj;
28965 				}
28966 			}
28967 
28968 			if (!zobj->ce->__set) {
28969 
28970 				if (EXPECTED(zobj->properties == NULL)) {
28971 					rebuild_object_properties(zobj);
28972 				}
28973 				if (IS_TMP_VAR == IS_CONST) {
28974 					if (UNEXPECTED(Z_OPT_REFCOUNTED_P(value))) {
28975 						Z_ADDREF_P(value);
28976 					}
28977 				} else if (IS_TMP_VAR != IS_TMP_VAR) {
28978 					if (Z_ISREF_P(value)) {
28979 						if (IS_TMP_VAR == IS_VAR) {
28980 							zend_reference *ref = Z_REF_P(value);
28981 							if (GC_DELREF(ref) == 0) {
28982 								ZVAL_COPY_VALUE(&tmp, Z_REFVAL_P(value));
28983 								efree_size(ref, sizeof(zend_reference));
28984 								value = &tmp;
28985 							} else {
28986 								value = Z_REFVAL_P(value);
28987 								Z_TRY_ADDREF_P(value);
28988 							}
28989 						} else {
28990 							value = Z_REFVAL_P(value);
28991 							Z_TRY_ADDREF_P(value);
28992 						}
28993 					} else if (IS_TMP_VAR == IS_CV) {
28994 						Z_TRY_ADDREF_P(value);
28995 					}
28996 				}
28997 				zend_hash_add_new(zobj->properties, Z_STR_P(property), value);
28998 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
28999 					ZVAL_COPY(EX_VAR(opline->result.var), value);
29000 				}
29001 				goto exit_assign_obj;
29002 			}
29003 		}
29004 	}
29005 
29006 	if (!Z_OBJ_HT_P(object)->write_property) {
29007 		zend_wrong_property_assignment(property OPLINE_CC EXECUTE_DATA_CC);
29008 		zval_ptr_dtor_nogc(free_op_data);
29009 		goto exit_assign_obj;
29010 	}
29011 
29012 	if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
29013 		ZVAL_DEREF(value);
29014 	}
29015 
29016 	Z_OBJ_HT_P(object)->write_property(object, property, value, (IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
29017 
29018 	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
29019 		ZVAL_COPY(EX_VAR(opline->result.var), value);
29020 	}
29021 	zval_ptr_dtor_nogc(free_op_data);
29022 exit_assign_obj:
29023 
29024 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
29025 	/* assign_obj has two opcodes! */
29026 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
29027 }
29028 
29029 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_VAR_CV_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
29030 {
29031 	USE_OPLINE
29032 	zend_free_op free_op1, free_op_data;
29033 	zval *object, *property, *value, tmp;
29034 
29035 	SAVE_OPLINE();
29036 	object = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
29037 
29038 	if (IS_VAR == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
29039 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
29040 	}
29041 
29042 	property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
29043 	value = _get_zval_ptr_var((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
29044 
29045 	if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
29046 		if (Z_ISREF_P(object)) {
29047 			object = Z_REFVAL_P(object);
29048 			if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
29049 				goto assign_object;
29050 			}
29051 		}
29052 		if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
29053 			zval_ptr_dtor_nogc(free_op_data);
29054 			goto exit_assign_obj;
29055 		}
29056 	}
29057 
29058 assign_object:
29059 	if (IS_CV == IS_CONST &&
29060 	    EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(opline->extended_value))) {
29061 		uintptr_t prop_offset = (uintptr_t)CACHED_PTR(opline->extended_value + sizeof(void*));
29062 		zend_object *zobj = Z_OBJ_P(object);
29063 		zval *property_val;
29064 
29065 		if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
29066 			property_val = OBJ_PROP(zobj, prop_offset);
29067 			if (Z_TYPE_P(property_val) != IS_UNDEF) {
29068 fast_assign_obj:
29069 				value = zend_assign_to_variable(property_val, value, IS_VAR);
29070 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
29071 					ZVAL_COPY(EX_VAR(opline->result.var), value);
29072 				}
29073 				goto exit_assign_obj;
29074 			}
29075 		} else {
29076 			if (EXPECTED(zobj->properties != NULL)) {
29077 				if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
29078 					if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
29079 						GC_DELREF(zobj->properties);
29080 					}
29081 					zobj->properties = zend_array_dup(zobj->properties);
29082 				}
29083 				property_val = zend_hash_find_ex(zobj->properties, Z_STR_P(property), 1);
29084 				if (property_val) {
29085 					goto fast_assign_obj;
29086 				}
29087 			}
29088 
29089 			if (!zobj->ce->__set) {
29090 
29091 				if (EXPECTED(zobj->properties == NULL)) {
29092 					rebuild_object_properties(zobj);
29093 				}
29094 				if (IS_VAR == IS_CONST) {
29095 					if (UNEXPECTED(Z_OPT_REFCOUNTED_P(value))) {
29096 						Z_ADDREF_P(value);
29097 					}
29098 				} else if (IS_VAR != IS_TMP_VAR) {
29099 					if (Z_ISREF_P(value)) {
29100 						if (IS_VAR == IS_VAR) {
29101 							zend_reference *ref = Z_REF_P(value);
29102 							if (GC_DELREF(ref) == 0) {
29103 								ZVAL_COPY_VALUE(&tmp, Z_REFVAL_P(value));
29104 								efree_size(ref, sizeof(zend_reference));
29105 								value = &tmp;
29106 							} else {
29107 								value = Z_REFVAL_P(value);
29108 								Z_TRY_ADDREF_P(value);
29109 							}
29110 						} else {
29111 							value = Z_REFVAL_P(value);
29112 							Z_TRY_ADDREF_P(value);
29113 						}
29114 					} else if (IS_VAR == IS_CV) {
29115 						Z_TRY_ADDREF_P(value);
29116 					}
29117 				}
29118 				zend_hash_add_new(zobj->properties, Z_STR_P(property), value);
29119 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
29120 					ZVAL_COPY(EX_VAR(opline->result.var), value);
29121 				}
29122 				goto exit_assign_obj;
29123 			}
29124 		}
29125 	}
29126 
29127 	if (!Z_OBJ_HT_P(object)->write_property) {
29128 		zend_wrong_property_assignment(property OPLINE_CC EXECUTE_DATA_CC);
29129 		zval_ptr_dtor_nogc(free_op_data);
29130 		goto exit_assign_obj;
29131 	}
29132 
29133 	if (IS_VAR == IS_CV || IS_VAR == IS_VAR) {
29134 		ZVAL_DEREF(value);
29135 	}
29136 
29137 	Z_OBJ_HT_P(object)->write_property(object, property, value, (IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
29138 
29139 	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
29140 		ZVAL_COPY(EX_VAR(opline->result.var), value);
29141 	}
29142 	zval_ptr_dtor_nogc(free_op_data);
29143 exit_assign_obj:
29144 
29145 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
29146 	/* assign_obj has two opcodes! */
29147 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
29148 }
29149 
29150 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_VAR_CV_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
29151 {
29152 	USE_OPLINE
29153 	zend_free_op free_op1;
29154 	zval *object, *property, *value, tmp;
29155 
29156 	SAVE_OPLINE();
29157 	object = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
29158 
29159 	if (IS_VAR == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
29160 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
29161 	}
29162 
29163 	property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
29164 	value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
29165 
29166 	if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
29167 		if (Z_ISREF_P(object)) {
29168 			object = Z_REFVAL_P(object);
29169 			if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
29170 				goto assign_object;
29171 			}
29172 		}
29173 		if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
29174 
29175 			goto exit_assign_obj;
29176 		}
29177 	}
29178 
29179 assign_object:
29180 	if (IS_CV == IS_CONST &&
29181 	    EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(opline->extended_value))) {
29182 		uintptr_t prop_offset = (uintptr_t)CACHED_PTR(opline->extended_value + sizeof(void*));
29183 		zend_object *zobj = Z_OBJ_P(object);
29184 		zval *property_val;
29185 
29186 		if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
29187 			property_val = OBJ_PROP(zobj, prop_offset);
29188 			if (Z_TYPE_P(property_val) != IS_UNDEF) {
29189 fast_assign_obj:
29190 				value = zend_assign_to_variable(property_val, value, IS_CV);
29191 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
29192 					ZVAL_COPY(EX_VAR(opline->result.var), value);
29193 				}
29194 				goto exit_assign_obj;
29195 			}
29196 		} else {
29197 			if (EXPECTED(zobj->properties != NULL)) {
29198 				if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
29199 					if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
29200 						GC_DELREF(zobj->properties);
29201 					}
29202 					zobj->properties = zend_array_dup(zobj->properties);
29203 				}
29204 				property_val = zend_hash_find_ex(zobj->properties, Z_STR_P(property), 1);
29205 				if (property_val) {
29206 					goto fast_assign_obj;
29207 				}
29208 			}
29209 
29210 			if (!zobj->ce->__set) {
29211 
29212 				if (EXPECTED(zobj->properties == NULL)) {
29213 					rebuild_object_properties(zobj);
29214 				}
29215 				if (IS_CV == IS_CONST) {
29216 					if (UNEXPECTED(Z_OPT_REFCOUNTED_P(value))) {
29217 						Z_ADDREF_P(value);
29218 					}
29219 				} else if (IS_CV != IS_TMP_VAR) {
29220 					if (Z_ISREF_P(value)) {
29221 						if (IS_CV == IS_VAR) {
29222 							zend_reference *ref = Z_REF_P(value);
29223 							if (GC_DELREF(ref) == 0) {
29224 								ZVAL_COPY_VALUE(&tmp, Z_REFVAL_P(value));
29225 								efree_size(ref, sizeof(zend_reference));
29226 								value = &tmp;
29227 							} else {
29228 								value = Z_REFVAL_P(value);
29229 								Z_TRY_ADDREF_P(value);
29230 							}
29231 						} else {
29232 							value = Z_REFVAL_P(value);
29233 							Z_TRY_ADDREF_P(value);
29234 						}
29235 					} else if (IS_CV == IS_CV) {
29236 						Z_TRY_ADDREF_P(value);
29237 					}
29238 				}
29239 				zend_hash_add_new(zobj->properties, Z_STR_P(property), value);
29240 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
29241 					ZVAL_COPY(EX_VAR(opline->result.var), value);
29242 				}
29243 				goto exit_assign_obj;
29244 			}
29245 		}
29246 	}
29247 
29248 	if (!Z_OBJ_HT_P(object)->write_property) {
29249 		zend_wrong_property_assignment(property OPLINE_CC EXECUTE_DATA_CC);
29250 
29251 		goto exit_assign_obj;
29252 	}
29253 
29254 	if (IS_CV == IS_CV || IS_CV == IS_VAR) {
29255 		ZVAL_DEREF(value);
29256 	}
29257 
29258 	Z_OBJ_HT_P(object)->write_property(object, property, value, (IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
29259 
29260 	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
29261 		ZVAL_COPY(EX_VAR(opline->result.var), value);
29262 	}
29263 
29264 exit_assign_obj:
29265 
29266 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
29267 	/* assign_obj has two opcodes! */
29268 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
29269 }
29270 
29271 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_VAR_CV_OP_DATA_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
29272 {
29273 	USE_OPLINE
29274 	zend_free_op free_op1;
29275 	zval *object_ptr;
29276 	zend_free_op free_op_data;
29277 	zval *value;
29278 	zval *variable_ptr;
29279 	zval *dim;
29280 
29281 	SAVE_OPLINE();
29282 	object_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
29283 
29284 	if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
29285 try_assign_dim_array:
29286 		SEPARATE_ARRAY(object_ptr);
29287 		if (IS_CV == IS_UNUSED) {
29288 			value = RT_CONSTANT((opline+1), (opline+1)->op1);
29289 			if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
29290 				ZVAL_DEREF(value);
29291 			}
29292 			variable_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), value);
29293 			if (UNEXPECTED(variable_ptr == NULL)) {
29294 
29295 				zend_cannot_add_element();
29296 				goto assign_dim_error;
29297 			} else if (IS_CONST == IS_CV) {
29298 				if (Z_REFCOUNTED_P(value)) {
29299 					Z_ADDREF_P(value);
29300 				}
29301 			} else if (IS_CONST == IS_VAR) {
29302 				if (value != free_op_data) {
29303 					if (Z_REFCOUNTED_P(value)) {
29304 						Z_ADDREF_P(value);
29305 					}
29306 
29307 				}
29308 			} else if (IS_CONST == IS_CONST) {
29309 				if (UNEXPECTED(Z_REFCOUNTED_P(value))) {
29310 					Z_ADDREF_P(value);
29311 				}
29312 			}
29313 		} else {
29314 			dim = EX_VAR(opline->op2.var);
29315 			if (IS_CV == IS_CONST) {
29316 				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
29317 			} else {
29318 				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
29319 			}
29320 			if (UNEXPECTED(variable_ptr == NULL)) {
29321 				goto assign_dim_error;
29322 			}
29323 			value = RT_CONSTANT((opline+1), (opline+1)->op1);
29324 			value = zend_assign_to_variable(variable_ptr, value, IS_CONST);
29325 		}
29326 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
29327 			ZVAL_COPY(EX_VAR(opline->result.var), value);
29328 		}
29329 	} else {
29330 		if (EXPECTED(Z_ISREF_P(object_ptr))) {
29331 			object_ptr = Z_REFVAL_P(object_ptr);
29332 			if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
29333 				goto try_assign_dim_array;
29334 			}
29335 		}
29336 		if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) {
29337 			dim = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
29338 			value = RT_CONSTANT((opline+1), (opline+1)->op1);
29339 
29340 			if (IS_CV == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
29341 				dim++;
29342 			}
29343 			zend_assign_to_object_dim(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
29344 
29345 		} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
29346 			if (IS_CV == IS_UNUSED) {
29347 				zend_use_new_element_for_string();
29348 
29349 				if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
29350 				UNDEF_RESULT();
29351 				HANDLE_EXCEPTION();
29352 			} else {
29353 				dim = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
29354 				value = RT_CONSTANT((opline+1), (opline+1)->op1);
29355 				zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
29356 
29357 			}
29358 		} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
29359 			ZVAL_ARR(object_ptr, zend_new_array(8));
29360 			goto try_assign_dim_array;
29361 		} else {
29362 			if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) {
29363 				zend_use_scalar_as_array();
29364 			}
29365 			dim = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
29366 assign_dim_error:
29367 
29368 			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
29369 				ZVAL_NULL(EX_VAR(opline->result.var));
29370 			}
29371 		}
29372 	}
29373 	if (IS_CV != IS_UNUSED) {
29374 
29375 	}
29376 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
29377 	/* assign_dim has two opcodes! */
29378 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
29379 }
29380 
29381 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_VAR_CV_OP_DATA_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
29382 {
29383 	USE_OPLINE
29384 	zend_free_op free_op1;
29385 	zval *object_ptr;
29386 	zend_free_op free_op_data;
29387 	zval *value;
29388 	zval *variable_ptr;
29389 	zval *dim;
29390 
29391 	SAVE_OPLINE();
29392 	object_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
29393 
29394 	if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
29395 try_assign_dim_array:
29396 		SEPARATE_ARRAY(object_ptr);
29397 		if (IS_CV == IS_UNUSED) {
29398 			value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
29399 			if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
29400 				ZVAL_DEREF(value);
29401 			}
29402 			variable_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), value);
29403 			if (UNEXPECTED(variable_ptr == NULL)) {
29404 				zval_ptr_dtor_nogc(free_op_data);
29405 				zend_cannot_add_element();
29406 				goto assign_dim_error;
29407 			} else if (IS_TMP_VAR == IS_CV) {
29408 				if (Z_REFCOUNTED_P(value)) {
29409 					Z_ADDREF_P(value);
29410 				}
29411 			} else if (IS_TMP_VAR == IS_VAR) {
29412 				if (value != free_op_data) {
29413 					if (Z_REFCOUNTED_P(value)) {
29414 						Z_ADDREF_P(value);
29415 					}
29416 					zval_ptr_dtor_nogc(free_op_data);
29417 				}
29418 			} else if (IS_TMP_VAR == IS_CONST) {
29419 				if (UNEXPECTED(Z_REFCOUNTED_P(value))) {
29420 					Z_ADDREF_P(value);
29421 				}
29422 			}
29423 		} else {
29424 			dim = EX_VAR(opline->op2.var);
29425 			if (IS_CV == IS_CONST) {
29426 				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
29427 			} else {
29428 				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
29429 			}
29430 			if (UNEXPECTED(variable_ptr == NULL)) {
29431 				goto assign_dim_error;
29432 			}
29433 			value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
29434 			value = zend_assign_to_variable(variable_ptr, value, IS_TMP_VAR);
29435 		}
29436 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
29437 			ZVAL_COPY(EX_VAR(opline->result.var), value);
29438 		}
29439 	} else {
29440 		if (EXPECTED(Z_ISREF_P(object_ptr))) {
29441 			object_ptr = Z_REFVAL_P(object_ptr);
29442 			if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
29443 				goto try_assign_dim_array;
29444 			}
29445 		}
29446 		if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) {
29447 			dim = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
29448 			value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
29449 
29450 			if (IS_CV == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
29451 				dim++;
29452 			}
29453 			zend_assign_to_object_dim(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
29454 
29455 			zval_ptr_dtor_nogc(free_op_data);
29456 		} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
29457 			if (IS_CV == IS_UNUSED) {
29458 				zend_use_new_element_for_string();
29459 				zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
29460 				if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
29461 				UNDEF_RESULT();
29462 				HANDLE_EXCEPTION();
29463 			} else {
29464 				dim = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
29465 				value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
29466 				zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
29467 				zval_ptr_dtor_nogc(free_op_data);
29468 			}
29469 		} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
29470 			ZVAL_ARR(object_ptr, zend_new_array(8));
29471 			goto try_assign_dim_array;
29472 		} else {
29473 			if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) {
29474 				zend_use_scalar_as_array();
29475 			}
29476 			dim = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
29477 assign_dim_error:
29478 			zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
29479 			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
29480 				ZVAL_NULL(EX_VAR(opline->result.var));
29481 			}
29482 		}
29483 	}
29484 	if (IS_CV != IS_UNUSED) {
29485 
29486 	}
29487 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
29488 	/* assign_dim has two opcodes! */
29489 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
29490 }
29491 
29492 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_VAR_CV_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
29493 {
29494 	USE_OPLINE
29495 	zend_free_op free_op1;
29496 	zval *object_ptr;
29497 	zend_free_op free_op_data;
29498 	zval *value;
29499 	zval *variable_ptr;
29500 	zval *dim;
29501 
29502 	SAVE_OPLINE();
29503 	object_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
29504 
29505 	if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
29506 try_assign_dim_array:
29507 		SEPARATE_ARRAY(object_ptr);
29508 		if (IS_CV == IS_UNUSED) {
29509 			value = _get_zval_ptr_var((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
29510 			if (IS_VAR == IS_CV || IS_VAR == IS_VAR) {
29511 				ZVAL_DEREF(value);
29512 			}
29513 			variable_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), value);
29514 			if (UNEXPECTED(variable_ptr == NULL)) {
29515 				zval_ptr_dtor_nogc(free_op_data);
29516 				zend_cannot_add_element();
29517 				goto assign_dim_error;
29518 			} else if (IS_VAR == IS_CV) {
29519 				if (Z_REFCOUNTED_P(value)) {
29520 					Z_ADDREF_P(value);
29521 				}
29522 			} else if (IS_VAR == IS_VAR) {
29523 				if (value != free_op_data) {
29524 					if (Z_REFCOUNTED_P(value)) {
29525 						Z_ADDREF_P(value);
29526 					}
29527 					zval_ptr_dtor_nogc(free_op_data);
29528 				}
29529 			} else if (IS_VAR == IS_CONST) {
29530 				if (UNEXPECTED(Z_REFCOUNTED_P(value))) {
29531 					Z_ADDREF_P(value);
29532 				}
29533 			}
29534 		} else {
29535 			dim = EX_VAR(opline->op2.var);
29536 			if (IS_CV == IS_CONST) {
29537 				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
29538 			} else {
29539 				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
29540 			}
29541 			if (UNEXPECTED(variable_ptr == NULL)) {
29542 				goto assign_dim_error;
29543 			}
29544 			value = _get_zval_ptr_var((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
29545 			value = zend_assign_to_variable(variable_ptr, value, IS_VAR);
29546 		}
29547 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
29548 			ZVAL_COPY(EX_VAR(opline->result.var), value);
29549 		}
29550 	} else {
29551 		if (EXPECTED(Z_ISREF_P(object_ptr))) {
29552 			object_ptr = Z_REFVAL_P(object_ptr);
29553 			if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
29554 				goto try_assign_dim_array;
29555 			}
29556 		}
29557 		if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) {
29558 			dim = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
29559 			value = _get_zval_ptr_var_deref((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
29560 
29561 			if (IS_CV == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
29562 				dim++;
29563 			}
29564 			zend_assign_to_object_dim(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
29565 
29566 			zval_ptr_dtor_nogc(free_op_data);
29567 		} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
29568 			if (IS_CV == IS_UNUSED) {
29569 				zend_use_new_element_for_string();
29570 				zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
29571 				if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
29572 				UNDEF_RESULT();
29573 				HANDLE_EXCEPTION();
29574 			} else {
29575 				dim = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
29576 				value = _get_zval_ptr_var_deref((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
29577 				zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
29578 				zval_ptr_dtor_nogc(free_op_data);
29579 			}
29580 		} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
29581 			ZVAL_ARR(object_ptr, zend_new_array(8));
29582 			goto try_assign_dim_array;
29583 		} else {
29584 			if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) {
29585 				zend_use_scalar_as_array();
29586 			}
29587 			dim = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
29588 assign_dim_error:
29589 			zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
29590 			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
29591 				ZVAL_NULL(EX_VAR(opline->result.var));
29592 			}
29593 		}
29594 	}
29595 	if (IS_CV != IS_UNUSED) {
29596 
29597 	}
29598 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
29599 	/* assign_dim has two opcodes! */
29600 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
29601 }
29602 
29603 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_VAR_CV_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
29604 {
29605 	USE_OPLINE
29606 	zend_free_op free_op1;
29607 	zval *object_ptr;
29608 	zend_free_op free_op_data;
29609 	zval *value;
29610 	zval *variable_ptr;
29611 	zval *dim;
29612 
29613 	SAVE_OPLINE();
29614 	object_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
29615 
29616 	if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
29617 try_assign_dim_array:
29618 		SEPARATE_ARRAY(object_ptr);
29619 		if (IS_CV == IS_UNUSED) {
29620 			value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
29621 			if (IS_CV == IS_CV || IS_CV == IS_VAR) {
29622 				ZVAL_DEREF(value);
29623 			}
29624 			variable_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), value);
29625 			if (UNEXPECTED(variable_ptr == NULL)) {
29626 
29627 				zend_cannot_add_element();
29628 				goto assign_dim_error;
29629 			} else if (IS_CV == IS_CV) {
29630 				if (Z_REFCOUNTED_P(value)) {
29631 					Z_ADDREF_P(value);
29632 				}
29633 			} else if (IS_CV == IS_VAR) {
29634 				if (value != free_op_data) {
29635 					if (Z_REFCOUNTED_P(value)) {
29636 						Z_ADDREF_P(value);
29637 					}
29638 
29639 				}
29640 			} else if (IS_CV == IS_CONST) {
29641 				if (UNEXPECTED(Z_REFCOUNTED_P(value))) {
29642 					Z_ADDREF_P(value);
29643 				}
29644 			}
29645 		} else {
29646 			dim = EX_VAR(opline->op2.var);
29647 			if (IS_CV == IS_CONST) {
29648 				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
29649 			} else {
29650 				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
29651 			}
29652 			if (UNEXPECTED(variable_ptr == NULL)) {
29653 				goto assign_dim_error;
29654 			}
29655 			value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
29656 			value = zend_assign_to_variable(variable_ptr, value, IS_CV);
29657 		}
29658 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
29659 			ZVAL_COPY(EX_VAR(opline->result.var), value);
29660 		}
29661 	} else {
29662 		if (EXPECTED(Z_ISREF_P(object_ptr))) {
29663 			object_ptr = Z_REFVAL_P(object_ptr);
29664 			if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
29665 				goto try_assign_dim_array;
29666 			}
29667 		}
29668 		if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) {
29669 			dim = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
29670 			value = _get_zval_ptr_cv_deref_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
29671 
29672 			if (IS_CV == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
29673 				dim++;
29674 			}
29675 			zend_assign_to_object_dim(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
29676 
29677 		} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
29678 			if (IS_CV == IS_UNUSED) {
29679 				zend_use_new_element_for_string();
29680 
29681 				if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
29682 				UNDEF_RESULT();
29683 				HANDLE_EXCEPTION();
29684 			} else {
29685 				dim = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
29686 				value = _get_zval_ptr_cv_deref_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
29687 				zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
29688 
29689 			}
29690 		} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
29691 			ZVAL_ARR(object_ptr, zend_new_array(8));
29692 			goto try_assign_dim_array;
29693 		} else {
29694 			if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) {
29695 				zend_use_scalar_as_array();
29696 			}
29697 			dim = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
29698 assign_dim_error:
29699 
29700 			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
29701 				ZVAL_NULL(EX_VAR(opline->result.var));
29702 			}
29703 		}
29704 	}
29705 	if (IS_CV != IS_UNUSED) {
29706 
29707 	}
29708 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
29709 	/* assign_dim has two opcodes! */
29710 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
29711 }
29712 
29713 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SPEC_VAR_CV_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
29714 {
29715 	USE_OPLINE
29716 	zend_free_op free_op1;
29717 	zval *value;
29718 	zval *variable_ptr;
29719 
29720 	SAVE_OPLINE();
29721 	value = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
29722 	variable_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
29723 
29724 	if (IS_VAR == IS_VAR && UNEXPECTED(Z_ISERROR_P(variable_ptr))) {
29725 
29726 		if (UNEXPECTED(0)) {
29727 			ZVAL_NULL(EX_VAR(opline->result.var));
29728 		}
29729 	} else {
29730 		value = zend_assign_to_variable(variable_ptr, value, IS_CV);
29731 		if (UNEXPECTED(0)) {
29732 			ZVAL_COPY(EX_VAR(opline->result.var), value);
29733 		}
29734 		if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
29735 		/* zend_assign_to_variable() always takes care of op2, never free it! */
29736 	}
29737 
29738 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
29739 }
29740 
29741 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SPEC_VAR_CV_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
29742 {
29743 	USE_OPLINE
29744 	zend_free_op free_op1;
29745 	zval *value;
29746 	zval *variable_ptr;
29747 
29748 	SAVE_OPLINE();
29749 	value = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
29750 	variable_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
29751 
29752 	if (IS_VAR == IS_VAR && UNEXPECTED(Z_ISERROR_P(variable_ptr))) {
29753 
29754 		if (UNEXPECTED(1)) {
29755 			ZVAL_NULL(EX_VAR(opline->result.var));
29756 		}
29757 	} else {
29758 		value = zend_assign_to_variable(variable_ptr, value, IS_CV);
29759 		if (UNEXPECTED(1)) {
29760 			ZVAL_COPY(EX_VAR(opline->result.var), value);
29761 		}
29762 		if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
29763 		/* zend_assign_to_variable() always takes care of op2, never free it! */
29764 	}
29765 
29766 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
29767 }
29768 
29769 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_REF_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
29770 {
29771 	USE_OPLINE
29772 	zend_free_op free_op1;
29773 	zval *variable_ptr;
29774 	zval *value_ptr;
29775 
29776 	SAVE_OPLINE();
29777 	value_ptr = _get_zval_ptr_cv_BP_VAR_W(opline->op2.var EXECUTE_DATA_CC);
29778 	variable_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
29779 
29780 	if (IS_VAR == IS_VAR && UNEXPECTED(Z_ISERROR_P(variable_ptr))) {
29781 		variable_ptr = &EG(uninitialized_zval);
29782 	} else if (IS_VAR == IS_VAR &&
29783 	           UNEXPECTED(Z_TYPE_P(EX_VAR(opline->op1.var)) != IS_INDIRECT)) {
29784 
29785 		zend_throw_error(NULL, "Cannot assign by reference to overloaded object");
29786 		if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
29787 
29788 		UNDEF_RESULT();
29789 		HANDLE_EXCEPTION();
29790 	} else if (IS_CV == IS_VAR && UNEXPECTED(Z_ISERROR_P(value_ptr))) {
29791 		variable_ptr = &EG(uninitialized_zval);
29792 	} else if (IS_CV == IS_VAR &&
29793 	           opline->extended_value == ZEND_RETURNS_FUNCTION &&
29794 			   UNEXPECTED(!Z_ISREF_P(value_ptr))) {
29795 
29796 		if (UNEXPECTED(!zend_wrong_assign_to_variable_reference(variable_ptr, value_ptr, IS_CV OPLINE_CC EXECUTE_DATA_CC))) {
29797 
29798 			UNDEF_RESULT();
29799 			HANDLE_EXCEPTION();
29800 		}
29801 
29802 		/* op2 freed by assign_to_variable */
29803 		if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
29804 		ZEND_VM_NEXT_OPCODE();
29805 	} else {
29806 		zend_assign_to_variable_reference(variable_ptr, value_ptr);
29807 	}
29808 
29809 	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
29810 		ZVAL_COPY(EX_VAR(opline->result.var), variable_ptr);
29811 	}
29812 
29813 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
29814 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
29815 }
29816 
29817 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
29818 {
29819 	USE_OPLINE
29820 	zval *function_name;
29821 	zend_class_entry *ce;
29822 	zend_object *object;
29823 	zend_function *fbc;
29824 	zend_execute_data *call;
29825 
29826 	SAVE_OPLINE();
29827 
29828 	if (IS_VAR == IS_CONST) {
29829 		/* no function found. try a static method in class */
29830 		ce = CACHED_PTR(opline->result.num);
29831 		if (UNEXPECTED(ce == NULL)) {
29832 			ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), RT_CONSTANT(opline, opline->op1) + 1, ZEND_FETCH_CLASS_DEFAULT |  ZEND_FETCH_CLASS_EXCEPTION);
29833 			if (UNEXPECTED(ce == NULL)) {
29834 				ZEND_ASSERT(EG(exception));
29835 
29836 				HANDLE_EXCEPTION();
29837 			}
29838 			if (IS_CV != IS_CONST) {
29839 				CACHE_PTR(opline->result.num, ce);
29840 			}
29841 		}
29842 	} else if (IS_VAR == IS_UNUSED) {
29843 		ce = zend_fetch_class(NULL, opline->op1.num);
29844 		if (UNEXPECTED(ce == NULL)) {
29845 			ZEND_ASSERT(EG(exception));
29846 
29847 			HANDLE_EXCEPTION();
29848 		}
29849 	} else {
29850 		ce = Z_CE_P(EX_VAR(opline->op1.var));
29851 	}
29852 
29853 	if (IS_VAR == IS_CONST &&
29854 	    IS_CV == IS_CONST &&
29855 	    EXPECTED((fbc = CACHED_PTR(opline->result.num + sizeof(void*))) != NULL)) {
29856 		/* nothing to do */
29857 	} else if (IS_VAR != IS_CONST &&
29858 	           IS_CV == IS_CONST &&
29859 	           EXPECTED(CACHED_PTR(opline->result.num) == ce)) {
29860 		fbc = CACHED_PTR(opline->result.num + sizeof(void*));
29861 	} else if (IS_CV != IS_UNUSED) {
29862 
29863 
29864 		function_name = EX_VAR(opline->op2.var);
29865 		if (IS_CV != IS_CONST) {
29866 			if (UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) {
29867 				do {
29868 					if (IS_CV & (IS_VAR|IS_CV) && Z_ISREF_P(function_name)) {
29869 						function_name = Z_REFVAL_P(function_name);
29870 						if (EXPECTED(Z_TYPE_P(function_name) == IS_STRING)) {
29871 							break;
29872 						}
29873 					} else if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
29874 						GET_OP2_UNDEF_CV(function_name, BP_VAR_R);
29875 						if (UNEXPECTED(EG(exception) != NULL)) {
29876 							HANDLE_EXCEPTION();
29877 						}
29878 					}
29879 					zend_throw_error(NULL, "Function name must be a string");
29880 
29881 					HANDLE_EXCEPTION();
29882 				} while (0);
29883 			}
29884 		}
29885 
29886 		if (ce->get_static_method) {
29887 			fbc = ce->get_static_method(ce, Z_STR_P(function_name));
29888 		} else {
29889 			fbc = zend_std_get_static_method(ce, Z_STR_P(function_name), ((IS_CV == IS_CONST) ? (RT_CONSTANT(opline, opline->op2) + 1) : NULL));
29890 		}
29891 		if (UNEXPECTED(fbc == NULL)) {
29892 			if (EXPECTED(!EG(exception))) {
29893 				zend_undefined_method(ce, Z_STR_P(function_name));
29894 			}
29895 
29896 			HANDLE_EXCEPTION();
29897 		}
29898 		if (IS_CV == IS_CONST &&
29899 		    EXPECTED(fbc->type <= ZEND_USER_FUNCTION) &&
29900 		    EXPECTED(!(fbc->common.fn_flags & (ZEND_ACC_CALL_VIA_TRAMPOLINE|ZEND_ACC_NEVER_CACHE)))) {
29901 			CACHE_POLYMORPHIC_PTR(opline->result.num, ce, fbc);
29902 		}
29903 		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!fbc->op_array.run_time_cache)) {
29904 			init_func_run_time_cache(&fbc->op_array);
29905 		}
29906 		if (IS_CV != IS_CONST) {
29907 
29908 		}
29909 	} else {
29910 		if (UNEXPECTED(ce->constructor == NULL)) {
29911 			zend_throw_error(NULL, "Cannot call constructor");
29912 			HANDLE_EXCEPTION();
29913 		}
29914 		if (Z_TYPE(EX(This)) == IS_OBJECT && Z_OBJ(EX(This))->ce != ce->constructor->common.scope && (ce->constructor->common.fn_flags & ZEND_ACC_PRIVATE)) {
29915 			zend_throw_error(NULL, "Cannot call private %s::__construct()", ZSTR_VAL(ce->name));
29916 			HANDLE_EXCEPTION();
29917 		}
29918 		fbc = ce->constructor;
29919 		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!fbc->op_array.run_time_cache)) {
29920 			init_func_run_time_cache(&fbc->op_array);
29921 		}
29922 	}
29923 
29924 	object = NULL;
29925 	if (!(fbc->common.fn_flags & ZEND_ACC_STATIC)) {
29926 		if (Z_TYPE(EX(This)) == IS_OBJECT && instanceof_function(Z_OBJCE(EX(This)), ce)) {
29927 			object = Z_OBJ(EX(This));
29928 			ce = object->ce;
29929 		} else {
29930 			zend_non_static_method_call(fbc);
29931 			if (UNEXPECTED(EG(exception) != NULL)) {
29932 				HANDLE_EXCEPTION();
29933 			}
29934 		}
29935 	}
29936 
29937 	if (IS_VAR == IS_UNUSED) {
29938 		/* previous opcode is ZEND_FETCH_CLASS */
29939 		if ((opline->op1.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_PARENT ||
29940 		    (opline->op1.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_SELF) {
29941 			if (Z_TYPE(EX(This)) == IS_OBJECT) {
29942 				ce = Z_OBJCE(EX(This));
29943 			} else {
29944 				ce = Z_CE(EX(This));
29945 			}
29946 		}
29947 	}
29948 
29949 	call = zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_FUNCTION,
29950 		fbc, opline->extended_value, ce, object);
29951 	call->prev_execute_data = EX(call);
29952 	EX(call) = call;
29953 
29954 	ZEND_VM_NEXT_OPCODE();
29955 }
29956 
29957 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
29958 {
29959 	USE_OPLINE
29960 	zend_free_op free_op1;
29961 	zval *expr_ptr, new_expr;
29962 
29963 	SAVE_OPLINE();
29964 	if ((IS_VAR == IS_VAR || IS_VAR == IS_CV) &&
29965 	    UNEXPECTED(opline->extended_value & ZEND_ARRAY_ELEMENT_REF)) {
29966 		expr_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
29967 		if (Z_ISREF_P(expr_ptr)) {
29968 			Z_ADDREF_P(expr_ptr);
29969 		} else {
29970 			ZVAL_MAKE_REF_EX(expr_ptr, 2);
29971 		}
29972 		if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
29973 	} else {
29974 		expr_ptr = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
29975 		if (IS_VAR == IS_TMP_VAR) {
29976 			/* pass */
29977 		} else if (IS_VAR == IS_CONST) {
29978 			Z_TRY_ADDREF_P(expr_ptr);
29979 		} else if (IS_VAR == IS_CV) {
29980 			ZVAL_DEREF(expr_ptr);
29981 			Z_TRY_ADDREF_P(expr_ptr);
29982 		} else /* if (IS_VAR == IS_VAR) */ {
29983 			if (UNEXPECTED(Z_ISREF_P(expr_ptr))) {
29984 				zend_refcounted *ref = Z_COUNTED_P(expr_ptr);
29985 
29986 				expr_ptr = Z_REFVAL_P(expr_ptr);
29987 				if (UNEXPECTED(GC_DELREF(ref) == 0)) {
29988 					ZVAL_COPY_VALUE(&new_expr, expr_ptr);
29989 					expr_ptr = &new_expr;
29990 					efree_size(ref, sizeof(zend_reference));
29991 				} else if (Z_OPT_REFCOUNTED_P(expr_ptr)) {
29992 					Z_ADDREF_P(expr_ptr);
29993 				}
29994 			}
29995 		}
29996 	}
29997 
29998 	if (IS_CV != IS_UNUSED) {
29999 
30000 		zval *offset = EX_VAR(opline->op2.var);
30001 		zend_string *str;
30002 		zend_ulong hval;
30003 
30004 add_again:
30005 		if (EXPECTED(Z_TYPE_P(offset) == IS_STRING)) {
30006 			str = Z_STR_P(offset);
30007 			if (IS_CV != IS_CONST) {
30008 				if (ZEND_HANDLE_NUMERIC(str, hval)) {
30009 					goto num_index;
30010 				}
30011 			}
30012 str_index:
30013 			zend_hash_update(Z_ARRVAL_P(EX_VAR(opline->result.var)), str, expr_ptr);
30014 		} else if (EXPECTED(Z_TYPE_P(offset) == IS_LONG)) {
30015 			hval = Z_LVAL_P(offset);
30016 num_index:
30017 			zend_hash_index_update(Z_ARRVAL_P(EX_VAR(opline->result.var)), hval, expr_ptr);
30018 		} else if ((IS_CV & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
30019 			offset = Z_REFVAL_P(offset);
30020 			goto add_again;
30021 		} else if (Z_TYPE_P(offset) == IS_NULL) {
30022 			str = ZSTR_EMPTY_ALLOC();
30023 			goto str_index;
30024 		} else if (Z_TYPE_P(offset) == IS_DOUBLE) {
30025 			hval = zend_dval_to_lval(Z_DVAL_P(offset));
30026 			goto num_index;
30027 		} else if (Z_TYPE_P(offset) == IS_FALSE) {
30028 			hval = 0;
30029 			goto num_index;
30030 		} else if (Z_TYPE_P(offset) == IS_TRUE) {
30031 			hval = 1;
30032 			goto num_index;
30033 		} else if (IS_CV == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
30034 			GET_OP2_UNDEF_CV(offset, BP_VAR_R);
30035 			str = ZSTR_EMPTY_ALLOC();
30036 			goto str_index;
30037 		} else {
30038 			zend_illegal_offset();
30039 			zval_ptr_dtor_nogc(expr_ptr);
30040 		}
30041 
30042 	} else {
30043 		if (!zend_hash_next_index_insert(Z_ARRVAL_P(EX_VAR(opline->result.var)), expr_ptr)) {
30044 			zend_cannot_add_element();
30045 			zval_ptr_dtor_nogc(expr_ptr);
30046 		}
30047 	}
30048 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
30049 }
30050 
30051 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_ARRAY_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
30052 {
30053 	zval *array;
30054 	uint32_t size;
30055 	USE_OPLINE
30056 
30057 	array = EX_VAR(opline->result.var);
30058 	if (IS_VAR != IS_UNUSED) {
30059 		size = opline->extended_value >> ZEND_ARRAY_SIZE_SHIFT;
30060 		ZVAL_ARR(array, zend_new_array(size));
30061 		/* Explicitly initialize array as not-packed if flag is set */
30062 		if (opline->extended_value & ZEND_ARRAY_NOT_PACKED) {
30063 			zend_hash_real_init_mixed(Z_ARRVAL_P(array));
30064 		}
30065 		ZEND_VM_TAIL_CALL(ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
30066 	} else {
30067 		ZVAL_EMPTY_ARRAY(array);
30068 		ZEND_VM_NEXT_OPCODE();
30069 	}
30070 }
30071 
30072 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_UNSET_DIM_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
30073 {
30074 	USE_OPLINE
30075 	zend_free_op free_op1;
30076 	zval *container;
30077 	zval *offset;
30078 	zend_ulong hval;
30079 	zend_string *key;
30080 
30081 	SAVE_OPLINE();
30082 	container = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
30083 	offset = EX_VAR(opline->op2.var);
30084 
30085 	do {
30086 		if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
30087 			HashTable *ht;
30088 
30089 unset_dim_array:
30090 			SEPARATE_ARRAY(container);
30091 			ht = Z_ARRVAL_P(container);
30092 offset_again:
30093 			if (EXPECTED(Z_TYPE_P(offset) == IS_STRING)) {
30094 				key = Z_STR_P(offset);
30095 				if (IS_CV != IS_CONST) {
30096 					if (ZEND_HANDLE_NUMERIC(key, hval)) {
30097 						goto num_index_dim;
30098 					}
30099 				}
30100 str_index_dim:
30101 				if (ht == &EG(symbol_table)) {
30102 					zend_delete_global_variable(key);
30103 				} else {
30104 					zend_hash_del(ht, key);
30105 				}
30106 			} else if (EXPECTED(Z_TYPE_P(offset) == IS_LONG)) {
30107 				hval = Z_LVAL_P(offset);
30108 num_index_dim:
30109 				zend_hash_index_del(ht, hval);
30110 			} else if ((IS_CV & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
30111 				offset = Z_REFVAL_P(offset);
30112 				goto offset_again;
30113 			} else if (Z_TYPE_P(offset) == IS_DOUBLE) {
30114 				hval = zend_dval_to_lval(Z_DVAL_P(offset));
30115 				goto num_index_dim;
30116 			} else if (Z_TYPE_P(offset) == IS_NULL) {
30117 				key = ZSTR_EMPTY_ALLOC();
30118 				goto str_index_dim;
30119 			} else if (Z_TYPE_P(offset) == IS_FALSE) {
30120 				hval = 0;
30121 				goto num_index_dim;
30122 			} else if (Z_TYPE_P(offset) == IS_TRUE) {
30123 				hval = 1;
30124 				goto num_index_dim;
30125 			} else if (Z_TYPE_P(offset) == IS_RESOURCE) {
30126 				hval = Z_RES_HANDLE_P(offset);
30127 				goto num_index_dim;
30128 			} else if (IS_CV == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
30129 				GET_OP2_UNDEF_CV(offset, BP_VAR_R);
30130 				key = ZSTR_EMPTY_ALLOC();
30131 				goto str_index_dim;
30132 			} else {
30133 				zend_error(E_WARNING, "Illegal offset type in unset");
30134 			}
30135 			break;
30136 		} else if (Z_ISREF_P(container)) {
30137 			container = Z_REFVAL_P(container);
30138 			if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
30139 				goto unset_dim_array;
30140 			}
30141 		}
30142 		if (IS_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
30143 			container = GET_OP1_UNDEF_CV(container, BP_VAR_R);
30144 		}
30145 		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(offset) == IS_UNDEF)) {
30146 			offset = GET_OP2_UNDEF_CV(offset, BP_VAR_R);
30147 		}
30148 		if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
30149 			if (UNEXPECTED(Z_OBJ_HT_P(container)->unset_dimension == NULL)) {
30150 				zend_use_object_as_array();
30151 			} else {
30152 				if (IS_CV == IS_CONST && Z_EXTRA_P(offset) == ZEND_EXTRA_VALUE) {
30153 					offset++;
30154 				}
30155 				Z_OBJ_HT_P(container)->unset_dimension(container, offset);
30156 			}
30157 		} else if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_STRING)) {
30158 			zend_throw_error(NULL, "Cannot unset string offsets");
30159 		}
30160 	} while (0);
30161 
30162 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
30163 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
30164 }
30165 
30166 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_UNSET_OBJ_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
30167 {
30168 	USE_OPLINE
30169 	zend_free_op free_op1;
30170 	zval *container;
30171 	zval *offset;
30172 
30173 	SAVE_OPLINE();
30174 	container = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
30175 	if (IS_VAR == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
30176 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
30177 	}
30178 	offset = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
30179 
30180 	do {
30181 		if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) {
30182 			if (Z_ISREF_P(container)) {
30183 				container = Z_REFVAL_P(container);
30184 				if (Z_TYPE_P(container) != IS_OBJECT) {
30185 					break;
30186 				}
30187 			} else {
30188 				break;
30189 			}
30190 		}
30191 		if (Z_OBJ_HT_P(container)->unset_property) {
30192 			Z_OBJ_HT_P(container)->unset_property(container, offset, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL));
30193 		} else {
30194 			zend_wrong_property_unset(offset);
30195 		}
30196 	} while (0);
30197 
30198 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
30199 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
30200 }
30201 
30202 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_YIELD_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
30203 {
30204 	USE_OPLINE
30205 
30206 	zend_generator *generator = zend_get_running_generator(EXECUTE_DATA_C);
30207 
30208 	SAVE_OPLINE();
30209 	if (UNEXPECTED(generator->flags & ZEND_GENERATOR_FORCED_CLOSE)) {
30210 		ZEND_VM_TAIL_CALL(zend_yield_in_closed_generator_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
30211 	}
30212 
30213 	/* Destroy the previously yielded value */
30214 	zval_ptr_dtor(&generator->value);
30215 
30216 	/* Destroy the previously yielded key */
30217 	zval_ptr_dtor(&generator->key);
30218 
30219 	/* Set the new yielded value */
30220 	if (IS_VAR != IS_UNUSED) {
30221 		zend_free_op free_op1;
30222 
30223 		if (UNEXPECTED(EX(func)->op_array.fn_flags & ZEND_ACC_RETURN_REFERENCE)) {
30224 			/* Constants and temporary variables aren't yieldable by reference,
30225 			 * but we still allow them with a notice. */
30226 			if (IS_VAR & (IS_CONST|IS_TMP_VAR)) {
30227 				zval *value;
30228 
30229 				zend_error(E_NOTICE, "Only variable references should be yielded by reference");
30230 
30231 				value = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
30232 				ZVAL_COPY_VALUE(&generator->value, value);
30233 				if (IS_VAR == IS_CONST) {
30234 					if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
30235 						Z_ADDREF(generator->value);
30236 					}
30237 				}
30238 			} else {
30239 				zval *value_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
30240 
30241 				/* If a function call result is yielded and the function did
30242 				 * not return by reference we throw a notice. */
30243 				if (IS_VAR == IS_VAR &&
30244 				    (value_ptr == &EG(uninitialized_zval) ||
30245 				     (opline->extended_value == ZEND_RETURNS_FUNCTION &&
30246 				      !Z_ISREF_P(value_ptr)))) {
30247 					zend_error(E_NOTICE, "Only variable references should be yielded by reference");
30248 					ZVAL_COPY(&generator->value, value_ptr);
30249 				} else {
30250 					if (Z_ISREF_P(value_ptr)) {
30251 						Z_ADDREF_P(value_ptr);
30252 					} else {
30253 						ZVAL_MAKE_REF_EX(value_ptr, 2);
30254 					}
30255 					ZVAL_REF(&generator->value, Z_REF_P(value_ptr));
30256 				}
30257 
30258 				if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
30259 			}
30260 		} else {
30261 			zval *value = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
30262 
30263 			/* Consts, temporary variables and references need copying */
30264 			if (IS_VAR == IS_CONST) {
30265 				ZVAL_COPY_VALUE(&generator->value, value);
30266 				if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
30267 					Z_ADDREF(generator->value);
30268 				}
30269 			} else if (IS_VAR == IS_TMP_VAR) {
30270 				ZVAL_COPY_VALUE(&generator->value, value);
30271             } else if ((IS_VAR & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
30272 				ZVAL_COPY(&generator->value, Z_REFVAL_P(value));
30273 				zval_ptr_dtor_nogc(free_op1);
30274 			} else {
30275 				ZVAL_COPY_VALUE(&generator->value, value);
30276 				if (IS_VAR == IS_CV) {
30277 					if (Z_OPT_REFCOUNTED_P(value)) Z_ADDREF_P(value);
30278 				}
30279 			}
30280 		}
30281 	} else {
30282 		/* If no value was specified yield null */
30283 		ZVAL_NULL(&generator->value);
30284 	}
30285 
30286 	/* Set the new yielded key */
30287 	if (IS_CV != IS_UNUSED) {
30288 
30289 		zval *key = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
30290 
30291 		/* Consts, temporary variables and references need copying */
30292 		if (IS_CV == IS_CONST) {
30293 			ZVAL_COPY_VALUE(&generator->key, key);
30294 			if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->key))) {
30295 				Z_ADDREF(generator->key);
30296 			}
30297 		} else if (IS_CV == IS_TMP_VAR) {
30298 			ZVAL_COPY_VALUE(&generator->key, key);
30299 		} else if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(key)) {
30300 			ZVAL_COPY(&generator->key, Z_REFVAL_P(key));
30301 
30302 		} else {
30303 			ZVAL_COPY_VALUE(&generator->key, key);
30304 			if (IS_CV == IS_CV) {
30305 				if (Z_OPT_REFCOUNTED_P(key)) Z_ADDREF_P(key);
30306 			}
30307 		}
30308 
30309 		if (Z_TYPE(generator->key) == IS_LONG
30310 		    && Z_LVAL(generator->key) > generator->largest_used_integer_key
30311 		) {
30312 			generator->largest_used_integer_key = Z_LVAL(generator->key);
30313 		}
30314 	} else {
30315 		/* If no key was specified we use auto-increment keys */
30316 		generator->largest_used_integer_key++;
30317 		ZVAL_LONG(&generator->key, generator->largest_used_integer_key);
30318 	}
30319 
30320 	if (RETURN_VALUE_USED(opline)) {
30321 		/* If the return value of yield is used set the send
30322 		 * target and initialize it to NULL */
30323 		generator->send_target = EX_VAR(opline->result.var);
30324 		ZVAL_NULL(generator->send_target);
30325 	} else {
30326 		generator->send_target = NULL;
30327 	}
30328 
30329 	/* We increment to the next op, so we are at the correct position when the
30330 	 * generator is resumed. */
30331 	ZEND_VM_INC_OPCODE();
30332 
30333 	/* The GOTO VM uses a local opline variable. We need to set the opline
30334 	 * variable in execute_data so we don't resume at an old position. */
30335 	SAVE_OPLINE();
30336 
30337 	ZEND_VM_RETURN();
30338 }
30339 
30340 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FE_FETCH_R_SIMPLE_SPEC_VAR_CV_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
30341 {
30342 	USE_OPLINE
30343 	zval *array;
30344 	zval *value, *variable_ptr;
30345 	uint32_t value_type;
30346 	HashTable *fe_ht;
30347 	HashPosition pos;
30348 	Bucket *p;
30349 
30350 	array = EX_VAR(opline->op1.var);
30351 	SAVE_OPLINE();
30352 	fe_ht = Z_ARRVAL_P(array);
30353 	pos = Z_FE_POS_P(array);
30354 	p = fe_ht->arData + pos;
30355 	while (1) {
30356 		if (UNEXPECTED(pos >= fe_ht->nNumUsed)) {
30357 			/* reached end of iteration */
30358 			ZEND_VM_SET_RELATIVE_OPCODE(opline, opline->extended_value);
30359 			ZEND_VM_CONTINUE();
30360 		}
30361 		value = &p->val;
30362 		value_type = Z_TYPE_INFO_P(value);
30363 		if (EXPECTED(value_type != IS_UNDEF)) {
30364 			if (UNEXPECTED(value_type == IS_INDIRECT)) {
30365 				value = Z_INDIRECT_P(value);
30366 				value_type = Z_TYPE_INFO_P(value);
30367 				if (EXPECTED(value_type != IS_UNDEF)) {
30368 					break;
30369 				}
30370 			} else {
30371 				break;
30372 			}
30373 		}
30374 		pos++;
30375 		p++;
30376 	}
30377 	Z_FE_POS_P(array) = pos + 1;
30378 	if (0) {
30379 		if (!p->key) {
30380 			ZVAL_LONG(EX_VAR(opline->result.var), p->h);
30381 		} else {
30382 			ZVAL_STR_COPY(EX_VAR(opline->result.var), p->key);
30383 		}
30384 	}
30385 
30386 	variable_ptr = EX_VAR(opline->op2.var);
30387 	zend_assign_to_variable(variable_ptr, value, IS_CV);
30388 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
30389 }
30390 
30391 
30392 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FE_FETCH_R_SIMPLE_SPEC_VAR_CV_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
30393 {
30394 	USE_OPLINE
30395 	zval *array;
30396 	zval *value, *variable_ptr;
30397 	uint32_t value_type;
30398 	HashTable *fe_ht;
30399 	HashPosition pos;
30400 	Bucket *p;
30401 
30402 	array = EX_VAR(opline->op1.var);
30403 	SAVE_OPLINE();
30404 	fe_ht = Z_ARRVAL_P(array);
30405 	pos = Z_FE_POS_P(array);
30406 	p = fe_ht->arData + pos;
30407 	while (1) {
30408 		if (UNEXPECTED(pos >= fe_ht->nNumUsed)) {
30409 			/* reached end of iteration */
30410 			ZEND_VM_SET_RELATIVE_OPCODE(opline, opline->extended_value);
30411 			ZEND_VM_CONTINUE();
30412 		}
30413 		value = &p->val;
30414 		value_type = Z_TYPE_INFO_P(value);
30415 		if (EXPECTED(value_type != IS_UNDEF)) {
30416 			if (UNEXPECTED(value_type == IS_INDIRECT)) {
30417 				value = Z_INDIRECT_P(value);
30418 				value_type = Z_TYPE_INFO_P(value);
30419 				if (EXPECTED(value_type != IS_UNDEF)) {
30420 					break;
30421 				}
30422 			} else {
30423 				break;
30424 			}
30425 		}
30426 		pos++;
30427 		p++;
30428 	}
30429 	Z_FE_POS_P(array) = pos + 1;
30430 	if (1) {
30431 		if (!p->key) {
30432 			ZVAL_LONG(EX_VAR(opline->result.var), p->h);
30433 		} else {
30434 			ZVAL_STR_COPY(EX_VAR(opline->result.var), p->key);
30435 		}
30436 	}
30437 
30438 	variable_ptr = EX_VAR(opline->op2.var);
30439 	zend_assign_to_variable(variable_ptr, value, IS_CV);
30440 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
30441 }
30442 
30443 
30444 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_CHECK_FUNC_ARG_SPEC_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
30445 {
30446 	USE_OPLINE
30447 	uint32_t arg_num = opline->op2.num;
30448 
30449 	if (EXPECTED(0)) {
30450 		if (QUICK_ARG_SHOULD_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
30451 			ZEND_ADD_CALL_FLAG(EX(call), ZEND_CALL_SEND_ARG_BY_REF);
30452 		} else {
30453 			ZEND_DEL_CALL_FLAG(EX(call), ZEND_CALL_SEND_ARG_BY_REF);
30454 		}
30455 	} else if (ARG_SHOULD_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
30456 		ZEND_ADD_CALL_FLAG(EX(call), ZEND_CALL_SEND_ARG_BY_REF);
30457 	} else {
30458 		ZEND_DEL_CALL_FLAG(EX(call), ZEND_CALL_SEND_ARG_BY_REF);
30459 	}
30460 	ZEND_VM_NEXT_OPCODE();
30461 }
30462 
30463 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_CHECK_FUNC_ARG_SPEC_UNUSED_QUICK_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
30464 {
30465 	USE_OPLINE
30466 	uint32_t arg_num = opline->op2.num;
30467 
30468 	if (EXPECTED(1)) {
30469 		if (QUICK_ARG_SHOULD_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
30470 			ZEND_ADD_CALL_FLAG(EX(call), ZEND_CALL_SEND_ARG_BY_REF);
30471 		} else {
30472 			ZEND_DEL_CALL_FLAG(EX(call), ZEND_CALL_SEND_ARG_BY_REF);
30473 		}
30474 	} else if (ARG_SHOULD_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
30475 		ZEND_ADD_CALL_FLAG(EX(call), ZEND_CALL_SEND_ARG_BY_REF);
30476 	} else {
30477 		ZEND_DEL_CALL_FLAG(EX(call), ZEND_CALL_SEND_ARG_BY_REF);
30478 	}
30479 	ZEND_VM_NEXT_OPCODE();
30480 }
30481 
30482 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_CLONE_SPEC_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
30483 {
30484 	USE_OPLINE
30485 
30486 	zval *obj;
30487 	zend_class_entry *ce, *scope;
30488 	zend_function *clone;
30489 	zend_object_clone_obj_t clone_call;
30490 
30491 	SAVE_OPLINE();
30492 	obj = &EX(This);
30493 
30494 	if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(obj) == IS_UNDEF)) {
30495 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
30496 	}
30497 
30498 	do {
30499 		if (IS_UNUSED == IS_CONST ||
30500 		    (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(obj) != IS_OBJECT))) {
30501 		    if ((IS_UNUSED & (IS_VAR|IS_CV)) && Z_ISREF_P(obj)) {
30502 				obj = Z_REFVAL_P(obj);
30503 				if (EXPECTED(Z_TYPE_P(obj) == IS_OBJECT)) {
30504 					break;
30505 				}
30506 			}
30507 			ZVAL_UNDEF(EX_VAR(opline->result.var));
30508 			if (IS_UNUSED == IS_CV && UNEXPECTED(Z_TYPE_P(obj) == IS_UNDEF)) {
30509 				GET_OP1_UNDEF_CV(obj, BP_VAR_R);
30510 				if (UNEXPECTED(EG(exception) != NULL)) {
30511 					HANDLE_EXCEPTION();
30512 				}
30513 			}
30514 			zend_throw_error(NULL, "__clone method called on non-object");
30515 
30516 			HANDLE_EXCEPTION();
30517 		}
30518 	} while (0);
30519 
30520 	ce = Z_OBJCE_P(obj);
30521 	clone = ce->clone;
30522 	clone_call = Z_OBJ_HT_P(obj)->clone_obj;
30523 	if (UNEXPECTED(clone_call == NULL)) {
30524 		zend_throw_error(NULL, "Trying to clone an uncloneable object of class %s", ZSTR_VAL(ce->name));
30525 
30526 		ZVAL_UNDEF(EX_VAR(opline->result.var));
30527 		HANDLE_EXCEPTION();
30528 	}
30529 
30530 	if (clone) {
30531 		if (clone->op_array.fn_flags & ZEND_ACC_PRIVATE) {
30532 			/* Ensure that if we're calling a private function, we're allowed to do so.
30533 			 */
30534 			scope = EX(func)->op_array.scope;
30535 			if (!zend_check_private(clone, scope, clone->common.function_name)) {
30536 				zend_throw_error(NULL, "Call to private %s::__clone() from context '%s'", ZSTR_VAL(clone->common.scope->name), scope ? ZSTR_VAL(scope->name) : "");
30537 
30538 				ZVAL_UNDEF(EX_VAR(opline->result.var));
30539 				HANDLE_EXCEPTION();
30540 			}
30541 		} else if ((clone->common.fn_flags & ZEND_ACC_PROTECTED)) {
30542 			/* Ensure that if we're calling a protected function, we're allowed to do so.
30543 			 */
30544 			scope = EX(func)->op_array.scope;
30545 			if (UNEXPECTED(!zend_check_protected(zend_get_function_root_class(clone), scope))) {
30546 				zend_throw_error(NULL, "Call to protected %s::__clone() from context '%s'", ZSTR_VAL(clone->common.scope->name), scope ? ZSTR_VAL(scope->name) : "");
30547 
30548 				ZVAL_UNDEF(EX_VAR(opline->result.var));
30549 				HANDLE_EXCEPTION();
30550 			}
30551 		}
30552 	}
30553 
30554 	ZVAL_OBJ(EX_VAR(opline->result.var), clone_call(obj));
30555 
30556 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
30557 }
30558 
30559 static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_EXIT_SPEC_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
30560 {
30561 	USE_OPLINE
30562 
30563 	SAVE_OPLINE();
30564 	if (IS_UNUSED != IS_UNUSED) {
30565 
30566 		zval *ptr = NULL;
30567 
30568 		do {
30569 			if (Z_TYPE_P(ptr) == IS_LONG) {
30570 				EG(exit_status) = Z_LVAL_P(ptr);
30571 			} else {
30572 				if ((IS_UNUSED & (IS_VAR|IS_CV)) && Z_ISREF_P(ptr)) {
30573 					ptr = Z_REFVAL_P(ptr);
30574 					if (Z_TYPE_P(ptr) == IS_LONG) {
30575 						EG(exit_status) = Z_LVAL_P(ptr);
30576 						break;
30577 					}
30578 				}
30579 				zend_print_zval(ptr, 0);
30580 			}
30581 		} while (0);
30582 
30583 	}
30584 	zend_bailout();
30585 	ZEND_VM_NEXT_OPCODE(); /* Never reached */
30586 }
30587 
30588 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_CLASS_NAME_SPEC_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
30589 {
30590 	uint32_t fetch_type;
30591 	zend_class_entry *called_scope, *scope;
30592 	USE_OPLINE
30593 
30594 	fetch_type = opline->op1.num;
30595 
30596 	scope = EX(func)->op_array.scope;
30597 	if (UNEXPECTED(scope == NULL)) {
30598 		SAVE_OPLINE();
30599 		zend_throw_error(NULL, "Cannot use \"%s\" when no class scope is active",
30600 			fetch_type == ZEND_FETCH_CLASS_SELF ? "self" :
30601 			fetch_type == ZEND_FETCH_CLASS_PARENT ? "parent" : "static");
30602 		ZVAL_UNDEF(EX_VAR(opline->result.var));
30603 		HANDLE_EXCEPTION();
30604 	}
30605 
30606 	switch (fetch_type) {
30607 		case ZEND_FETCH_CLASS_SELF:
30608 			ZVAL_STR_COPY(EX_VAR(opline->result.var), scope->name);
30609 			break;
30610 		case ZEND_FETCH_CLASS_PARENT:
30611 			if (UNEXPECTED(scope->parent == NULL)) {
30612 				SAVE_OPLINE();
30613 				zend_throw_error(NULL,
30614 					"Cannot use \"parent\" when current class scope has no parent");
30615 				ZVAL_UNDEF(EX_VAR(opline->result.var));
30616 				HANDLE_EXCEPTION();
30617 			}
30618 			ZVAL_STR_COPY(EX_VAR(opline->result.var), scope->parent->name);
30619 			break;
30620 		case ZEND_FETCH_CLASS_STATIC:
30621 			if (Z_TYPE(EX(This)) == IS_OBJECT) {
30622 				called_scope = Z_OBJCE(EX(This));
30623 			} else {
30624 				called_scope = Z_CE(EX(This));
30625 			}
30626 			ZVAL_STR_COPY(EX_VAR(opline->result.var), called_scope->name);
30627 			break;
30628 		EMPTY_SWITCH_DEFAULT_CASE()
30629 	}
30630 	ZEND_VM_NEXT_OPCODE();
30631 }
30632 
30633 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_obj_helper_SPEC_UNUSED_CONST(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
30634 {
30635 	USE_OPLINE
30636 	zend_free_op free_op_data1;
30637 	zval *object;
30638 	zval *property;
30639 	zval *value;
30640 	zval *zptr;
30641 
30642 	SAVE_OPLINE();
30643 	object = &EX(This);
30644 
30645 	if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
30646 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
30647 	}
30648 
30649 	property = RT_CONSTANT(opline, opline->op2);
30650 
30651 	do {
30652 		value = get_op_data_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data1);
30653 
30654 		if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
30655 			if (Z_ISREF_P(object)) {
30656 				object = Z_REFVAL_P(object);
30657 				if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
30658 					goto assign_op_object;
30659 				}
30660 			}
30661 			if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
30662 				break;
30663 			}
30664 		}
30665 
30666 		/* here we are sure we are dealing with an object */
30667 assign_op_object:
30668 		if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
30669 			&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CONST == IS_CONST) ? CACHE_ADDR((opline+1)->extended_value) : NULL))) != NULL)) {
30670 			if (UNEXPECTED(Z_ISERROR_P(zptr))) {
30671 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
30672 					ZVAL_NULL(EX_VAR(opline->result.var));
30673 				}
30674 			} else {
30675 				ZVAL_DEREF(zptr);
30676 
30677 				binary_op(zptr, zptr, value);
30678 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
30679 					ZVAL_COPY(EX_VAR(opline->result.var), zptr);
30680 				}
30681 			}
30682 		} else {
30683 			zend_assign_op_overloaded_property(object, property, ((IS_CONST == IS_CONST) ? CACHE_ADDR((opline+1)->extended_value) : NULL), value, binary_op OPLINE_CC EXECUTE_DATA_CC);
30684 		}
30685 	} while (0);
30686 
30687 	FREE_OP(free_op_data1);
30688 
30689 
30690 	/* assign_obj has two opcodes! */
30691 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
30692 }
30693 
30694 static zend_always_inline ZEND_OPCODE_HANDLER_RET zend_binary_assign_op_helper_SPEC_UNUSED_CONST_OBJ(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
30695 {
30696 #if 1 && IS_CONST == IS_UNUSED
30697 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_UNUSED_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
30698 #else
30699 # if 0 || IS_UNUSED != IS_UNUSED
30700 #  if 0
30701 	/* opline->extended_value checks are specialized, don't need opline */
30702 	USE_OPLINE
30703 #  endif
30704 
30705 	if (EXPECTED(0)) {
30706 		ZEND_VM_TAIL_CALL(zend_binary_assign_op_simple_helper_SPEC_UNUSED_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
30707 	}
30708 	if (EXPECTED(0)) {
30709 		ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_UNUSED_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
30710 	}
30711 # endif
30712 
30713 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_obj_helper_SPEC_UNUSED_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
30714 #endif
30715 }
30716 
30717 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_ADD_SPEC_UNUSED_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
30718 {
30719 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_UNUSED_CONST_OBJ(add_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
30720 }
30721 
30722 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SUB_SPEC_UNUSED_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
30723 {
30724 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_UNUSED_CONST_OBJ(sub_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
30725 }
30726 
30727 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MUL_SPEC_UNUSED_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
30728 {
30729 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_UNUSED_CONST_OBJ(mul_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
30730 }
30731 
30732 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIV_SPEC_UNUSED_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
30733 {
30734 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_UNUSED_CONST_OBJ(div_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
30735 }
30736 
30737 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MOD_SPEC_UNUSED_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
30738 {
30739 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_UNUSED_CONST_OBJ(mod_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
30740 }
30741 
30742 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SL_SPEC_UNUSED_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
30743 {
30744 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_UNUSED_CONST_OBJ(shift_left_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
30745 }
30746 
30747 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SR_SPEC_UNUSED_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
30748 {
30749 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_UNUSED_CONST_OBJ(shift_right_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
30750 }
30751 
30752 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_CONCAT_SPEC_UNUSED_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
30753 {
30754 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_UNUSED_CONST_OBJ(concat_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
30755 }
30756 
30757 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_OR_SPEC_UNUSED_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
30758 {
30759 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_UNUSED_CONST_OBJ(bitwise_or_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
30760 }
30761 
30762 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_AND_SPEC_UNUSED_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
30763 {
30764 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_UNUSED_CONST_OBJ(bitwise_and_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
30765 }
30766 
30767 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_XOR_SPEC_UNUSED_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
30768 {
30769 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_UNUSED_CONST_OBJ(bitwise_xor_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
30770 }
30771 
30772 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_POW_SPEC_UNUSED_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
30773 {
30774 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_UNUSED_CONST_OBJ(pow_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
30775 }
30776 
30777 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_pre_incdec_property_helper_SPEC_UNUSED_CONST(int inc ZEND_OPCODE_HANDLER_ARGS_DC)
30778 {
30779 	USE_OPLINE
30780 
30781 	zval *object;
30782 	zval *property;
30783 	zval *zptr;
30784 
30785 	SAVE_OPLINE();
30786 	object = &EX(This);
30787 
30788 	if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
30789 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
30790 	}
30791 
30792 	property = RT_CONSTANT(opline, opline->op2);
30793 
30794 	do {
30795 		if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
30796 			if (Z_ISREF_P(object)) {
30797 				object = Z_REFVAL_P(object);
30798 				if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
30799 					goto pre_incdec_object;
30800 				}
30801 			}
30802 			if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
30803 				break;
30804 			}
30805 		}
30806 
30807 		/* here we are sure we are dealing with an object */
30808 pre_incdec_object:
30809 		if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
30810 			&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL))) != NULL)) {
30811 			if (UNEXPECTED(Z_ISERROR_P(zptr))) {
30812 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
30813 					ZVAL_NULL(EX_VAR(opline->result.var));
30814 				}
30815 			} else {
30816 				if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
30817 					if (inc) {
30818 						fast_long_increment_function(zptr);
30819 					} else {
30820 						fast_long_decrement_function(zptr);
30821 					}
30822 				} else {
30823 					ZVAL_DEREF(zptr);
30824 
30825 					if (inc) {
30826 						increment_function(zptr);
30827 					} else {
30828 						decrement_function(zptr);
30829 					}
30830 				}
30831 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
30832 					ZVAL_COPY(EX_VAR(opline->result.var), zptr);
30833 				}
30834 			}
30835 		} else {
30836 			zend_pre_incdec_overloaded_property(object, property, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), inc OPLINE_CC EXECUTE_DATA_CC);
30837 		}
30838 	} while (0);
30839 
30840 
30841 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
30842 }
30843 
30844 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_INC_OBJ_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
30845 {
30846 	ZEND_VM_TAIL_CALL(zend_pre_incdec_property_helper_SPEC_UNUSED_CONST(1 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
30847 }
30848 
30849 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_DEC_OBJ_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
30850 {
30851 	ZEND_VM_TAIL_CALL(zend_pre_incdec_property_helper_SPEC_UNUSED_CONST(0 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
30852 }
30853 
30854 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_post_incdec_property_helper_SPEC_UNUSED_CONST(int inc ZEND_OPCODE_HANDLER_ARGS_DC)
30855 {
30856 	USE_OPLINE
30857 
30858 	zval *object;
30859 	zval *property;
30860 	zval *zptr;
30861 
30862 	SAVE_OPLINE();
30863 	object = &EX(This);
30864 
30865 	if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
30866 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
30867 	}
30868 
30869 	property = RT_CONSTANT(opline, opline->op2);
30870 
30871 	do {
30872 		if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
30873 			if (Z_ISREF_P(object)) {
30874 				object = Z_REFVAL_P(object);
30875 				if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
30876 					goto post_incdec_object;
30877 				}
30878 			}
30879 			if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
30880 				break;
30881 			}
30882 		}
30883 
30884 		/* here we are sure we are dealing with an object */
30885 post_incdec_object:
30886 		if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
30887 			&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL))) != NULL)) {
30888 			if (UNEXPECTED(Z_ISERROR_P(zptr))) {
30889 				ZVAL_NULL(EX_VAR(opline->result.var));
30890 			} else {
30891 				if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
30892 					ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(zptr));
30893 					if (inc) {
30894 						fast_long_increment_function(zptr);
30895 					} else {
30896 						fast_long_decrement_function(zptr);
30897 					}
30898 				} else {
30899 					ZVAL_DEREF(zptr);
30900 					ZVAL_COPY(EX_VAR(opline->result.var), zptr);
30901 					if (inc) {
30902 						increment_function(zptr);
30903 					} else {
30904 						decrement_function(zptr);
30905 					}
30906 				}
30907 			}
30908 		} else {
30909 			zend_post_incdec_overloaded_property(object, property, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), inc OPLINE_CC EXECUTE_DATA_CC);
30910 		}
30911 	} while (0);
30912 
30913 
30914 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
30915 }
30916 
30917 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_POST_INC_OBJ_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
30918 {
30919 	ZEND_VM_TAIL_CALL(zend_post_incdec_property_helper_SPEC_UNUSED_CONST(1 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
30920 }
30921 
30922 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_POST_DEC_OBJ_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
30923 {
30924 	ZEND_VM_TAIL_CALL(zend_post_incdec_property_helper_SPEC_UNUSED_CONST(0 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
30925 }
30926 
30927 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_R_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
30928 {
30929 	USE_OPLINE
30930 
30931 	zval *container;
30932 
30933 	zval *offset;
30934 	void **cache_slot = NULL;
30935 
30936 	SAVE_OPLINE();
30937 	container = &EX(This);
30938 
30939 	if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
30940 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
30941 	}
30942 
30943 	offset = RT_CONSTANT(opline, opline->op2);
30944 
30945 	if (IS_UNUSED == IS_CONST ||
30946 	    (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
30947 	    do {
30948 			if ((IS_UNUSED & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
30949 				container = Z_REFVAL_P(container);
30950 				if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
30951 					break;
30952 				}
30953 			}
30954 			if (IS_UNUSED == IS_CV && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
30955 				GET_OP1_UNDEF_CV(container, BP_VAR_R);
30956 			}
30957 			if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(offset) == IS_UNDEF)) {
30958 				GET_OP2_UNDEF_CV(offset, BP_VAR_R);
30959 			}
30960 			goto fetch_obj_r_no_object;
30961 		} while (0);
30962 	}
30963 
30964 	/* here we are sure we are dealing with an object */
30965 	do {
30966 		zend_object *zobj = Z_OBJ_P(container);
30967 		zval *retval;
30968 
30969 		if (IS_CONST == IS_CONST) {
30970 			cache_slot = CACHE_ADDR(opline->extended_value);
30971 
30972 			if (EXPECTED(zobj->ce == CACHED_PTR_EX(cache_slot))) {
30973 				uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
30974 
30975 				if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
30976 					retval = OBJ_PROP(zobj, prop_offset);
30977 					if (EXPECTED(Z_TYPE_INFO_P(retval) != IS_UNDEF)) {
30978 						ZVAL_COPY_DEREF(EX_VAR(opline->result.var), retval);
30979 						break;
30980 					}
30981 				} else if (EXPECTED(zobj->properties != NULL)) {
30982 					if (!IS_UNKNOWN_DYNAMIC_PROPERTY_OFFSET(prop_offset)) {
30983 						uintptr_t idx = ZEND_DECODE_DYN_PROP_OFFSET(prop_offset);
30984 
30985 						if (EXPECTED(idx < zobj->properties->nNumUsed * sizeof(Bucket))) {
30986 							Bucket *p = (Bucket*)((char*)zobj->properties->arData + idx);
30987 
30988 							if (EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
30989 						        (EXPECTED(p->key == Z_STR_P(offset)) ||
30990 						         (EXPECTED(p->h == ZSTR_H(Z_STR_P(offset))) &&
30991 						          EXPECTED(p->key != NULL) &&
30992 						          EXPECTED(zend_string_equal_content(p->key, Z_STR_P(offset)))))) {
30993 								ZVAL_COPY_DEREF(EX_VAR(opline->result.var), &p->val);
30994 								break;
30995 							}
30996 						}
30997 						CACHE_PTR_EX(cache_slot + 1, (void*)ZEND_DYNAMIC_PROPERTY_OFFSET);
30998 					}
30999 					retval = zend_hash_find_ex(zobj->properties, Z_STR_P(offset), 1);
31000 					if (EXPECTED(retval)) {
31001 						uintptr_t idx = (char*)retval - (char*)zobj->properties->arData;
31002 						CACHE_PTR_EX(cache_slot + 1, (void*)ZEND_ENCODE_DYN_PROP_OFFSET(idx));
31003 						ZVAL_COPY_DEREF(EX_VAR(opline->result.var), retval);
31004 						break;
31005 					}
31006 				}
31007 			}
31008 		} else if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(offset) == IS_UNDEF)) {
31009 			GET_OP2_UNDEF_CV(offset, BP_VAR_R);
31010 		}
31011 
31012 		if (UNEXPECTED(zobj->handlers->read_property == NULL)) {
31013 fetch_obj_r_no_object:
31014 			zend_wrong_property_read(offset);
31015 			ZVAL_NULL(EX_VAR(opline->result.var));
31016 		} else {
31017 			retval = zobj->handlers->read_property(container, offset, BP_VAR_R, cache_slot, EX_VAR(opline->result.var));
31018 
31019 			if (retval != EX_VAR(opline->result.var)) {
31020 				ZVAL_COPY_DEREF(EX_VAR(opline->result.var), retval);
31021 			} else if (UNEXPECTED(Z_ISREF_P(retval))) {
31022 				zend_unwrap_reference(retval);
31023 			}
31024 		}
31025 	} while (0);
31026 
31027 
31028 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
31029 }
31030 
31031 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_W_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
31032 {
31033 	USE_OPLINE
31034 	zend_free_op free_op1;
31035 	zval *property, *container, *result;
31036 
31037 	SAVE_OPLINE();
31038 
31039 	container = &EX(This);
31040 	if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
31041 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
31042 	}
31043 
31044 	property = RT_CONSTANT(opline, opline->op2);
31045 	result = EX_VAR(opline->result.var);
31046 	zend_fetch_property_address(result, container, IS_UNUSED, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_W OPLINE_CC);
31047 
31048 	if (IS_UNUSED == IS_VAR) {
31049 		FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(free_op1, result);
31050 	}
31051 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
31052 }
31053 
31054 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_RW_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
31055 {
31056 	USE_OPLINE
31057 	zend_free_op free_op1;
31058 	zval *property, *container, *result;
31059 
31060 	SAVE_OPLINE();
31061 	container = &EX(This);
31062 
31063 	if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
31064 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
31065 	}
31066 	property = RT_CONSTANT(opline, opline->op2);
31067 	result = EX_VAR(opline->result.var);
31068 	zend_fetch_property_address(result, container, IS_UNUSED, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_RW OPLINE_CC);
31069 
31070 	if (IS_UNUSED == IS_VAR) {
31071 		FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(free_op1, result);
31072 	}
31073 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
31074 }
31075 
31076 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_IS_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
31077 {
31078 	USE_OPLINE
31079 
31080 	zval *container;
31081 
31082 	zval *offset;
31083 	void **cache_slot = NULL;
31084 
31085 	SAVE_OPLINE();
31086 	container = &EX(This);
31087 
31088 	if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
31089 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
31090 	}
31091 
31092 	offset = RT_CONSTANT(opline, opline->op2);
31093 
31094 	if (IS_UNUSED == IS_CONST ||
31095 	    (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
31096 		do {
31097 			if ((IS_UNUSED & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
31098 				container = Z_REFVAL_P(container);
31099 				if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
31100 					break;
31101 				}
31102 			}
31103 			goto fetch_obj_is_no_object;
31104 		} while (0);
31105 	}
31106 
31107 	/* here we are sure we are dealing with an object */
31108 	do {
31109 		zend_object *zobj = Z_OBJ_P(container);
31110 		zval *retval;
31111 
31112 		if (IS_CONST == IS_CONST) {
31113 			cache_slot = CACHE_ADDR(opline->extended_value);
31114 
31115 			if (EXPECTED(zobj->ce == CACHED_PTR_EX(cache_slot))) {
31116 				uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
31117 
31118 				if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
31119 					retval = OBJ_PROP(zobj, prop_offset);
31120 					if (EXPECTED(Z_TYPE_P(retval) != IS_UNDEF)) {
31121 						ZVAL_COPY(EX_VAR(opline->result.var), retval);
31122 						break;
31123 					}
31124 				} else if (EXPECTED(zobj->properties != NULL)) {
31125 					if (!IS_UNKNOWN_DYNAMIC_PROPERTY_OFFSET(prop_offset)) {
31126 						uintptr_t idx = ZEND_DECODE_DYN_PROP_OFFSET(prop_offset);
31127 
31128 						if (EXPECTED(idx < zobj->properties->nNumUsed * sizeof(Bucket))) {
31129 							Bucket *p = (Bucket*)((char*)zobj->properties->arData + idx);
31130 
31131 							if (EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
31132 						        (EXPECTED(p->key == Z_STR_P(offset)) ||
31133 						         (EXPECTED(p->h == ZSTR_H(Z_STR_P(offset))) &&
31134 						          EXPECTED(p->key != NULL) &&
31135 						          EXPECTED(zend_string_equal_content(p->key, Z_STR_P(offset)))))) {
31136 								ZVAL_COPY(EX_VAR(opline->result.var), &p->val);
31137 								break;
31138 							}
31139 						}
31140 						CACHE_PTR_EX(cache_slot + 1, (void*)ZEND_DYNAMIC_PROPERTY_OFFSET);
31141 					}
31142 					retval = zend_hash_find_ex(zobj->properties, Z_STR_P(offset), 1);
31143 					if (EXPECTED(retval)) {
31144 						uintptr_t idx = (char*)retval - (char*)zobj->properties->arData;
31145 						CACHE_PTR_EX(cache_slot + 1, (void*)ZEND_ENCODE_DYN_PROP_OFFSET(idx));
31146 						ZVAL_COPY(EX_VAR(opline->result.var), retval);
31147 						break;
31148 					}
31149 				}
31150 			}
31151 		}
31152 
31153 		if (UNEXPECTED(zobj->handlers->read_property == NULL)) {
31154 fetch_obj_is_no_object:
31155 			ZVAL_NULL(EX_VAR(opline->result.var));
31156 		} else {
31157 
31158 			retval = zobj->handlers->read_property(container, offset, BP_VAR_IS, cache_slot, EX_VAR(opline->result.var));
31159 
31160 			if (retval != EX_VAR(opline->result.var)) {
31161 				ZVAL_COPY(EX_VAR(opline->result.var), retval);
31162 			}
31163 		}
31164 	} while (0);
31165 
31166 
31167 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
31168 }
31169 
31170 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_FUNC_ARG_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
31171 {
31172 	if (UNEXPECTED(ZEND_CALL_INFO(EX(call)) & ZEND_CALL_SEND_ARG_BY_REF)) {
31173 		/* Behave like FETCH_OBJ_W */
31174 		if ((IS_UNUSED & (IS_CONST|IS_TMP_VAR))) {
31175 			ZEND_VM_TAIL_CALL(zend_use_tmp_in_write_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
31176 		}
31177 
31178 		ZEND_VM_TAIL_CALL(ZEND_FETCH_OBJ_W_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
31179 	} else {
31180 		ZEND_VM_TAIL_CALL(ZEND_FETCH_OBJ_R_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
31181 	}
31182 }
31183 
31184 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_UNSET_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
31185 {
31186 	USE_OPLINE
31187 	zend_free_op free_op1;
31188 	zval *container, *property, *result;
31189 
31190 	SAVE_OPLINE();
31191 	container = &EX(This);
31192 
31193 	if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
31194 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
31195 	}
31196 
31197 	property = RT_CONSTANT(opline, opline->op2);
31198 	result = EX_VAR(opline->result.var);
31199 	zend_fetch_property_address(result, container, IS_UNUSED, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_UNSET OPLINE_CC);
31200 
31201 	if (IS_UNUSED == IS_VAR) {
31202 		FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(free_op1, result);
31203 	}
31204 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
31205 }
31206 
31207 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_UNUSED_CONST_OP_DATA_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
31208 {
31209 	USE_OPLINE
31210 
31211 	zval *object, *property, *value, tmp;
31212 
31213 	SAVE_OPLINE();
31214 	object = &EX(This);
31215 
31216 	if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
31217 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
31218 	}
31219 
31220 	property = RT_CONSTANT(opline, opline->op2);
31221 	value = RT_CONSTANT((opline+1), (opline+1)->op1);
31222 
31223 	if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
31224 		if (Z_ISREF_P(object)) {
31225 			object = Z_REFVAL_P(object);
31226 			if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
31227 				goto assign_object;
31228 			}
31229 		}
31230 		if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
31231 
31232 			goto exit_assign_obj;
31233 		}
31234 	}
31235 
31236 assign_object:
31237 	if (IS_CONST == IS_CONST &&
31238 	    EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(opline->extended_value))) {
31239 		uintptr_t prop_offset = (uintptr_t)CACHED_PTR(opline->extended_value + sizeof(void*));
31240 		zend_object *zobj = Z_OBJ_P(object);
31241 		zval *property_val;
31242 
31243 		if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
31244 			property_val = OBJ_PROP(zobj, prop_offset);
31245 			if (Z_TYPE_P(property_val) != IS_UNDEF) {
31246 fast_assign_obj:
31247 				value = zend_assign_to_variable(property_val, value, IS_CONST);
31248 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
31249 					ZVAL_COPY(EX_VAR(opline->result.var), value);
31250 				}
31251 				goto exit_assign_obj;
31252 			}
31253 		} else {
31254 			if (EXPECTED(zobj->properties != NULL)) {
31255 				if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
31256 					if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
31257 						GC_DELREF(zobj->properties);
31258 					}
31259 					zobj->properties = zend_array_dup(zobj->properties);
31260 				}
31261 				property_val = zend_hash_find_ex(zobj->properties, Z_STR_P(property), 1);
31262 				if (property_val) {
31263 					goto fast_assign_obj;
31264 				}
31265 			}
31266 
31267 			if (!zobj->ce->__set) {
31268 
31269 				if (EXPECTED(zobj->properties == NULL)) {
31270 					rebuild_object_properties(zobj);
31271 				}
31272 				if (IS_CONST == IS_CONST) {
31273 					if (UNEXPECTED(Z_OPT_REFCOUNTED_P(value))) {
31274 						Z_ADDREF_P(value);
31275 					}
31276 				} else if (IS_CONST != IS_TMP_VAR) {
31277 					if (Z_ISREF_P(value)) {
31278 						if (IS_CONST == IS_VAR) {
31279 							zend_reference *ref = Z_REF_P(value);
31280 							if (GC_DELREF(ref) == 0) {
31281 								ZVAL_COPY_VALUE(&tmp, Z_REFVAL_P(value));
31282 								efree_size(ref, sizeof(zend_reference));
31283 								value = &tmp;
31284 							} else {
31285 								value = Z_REFVAL_P(value);
31286 								Z_TRY_ADDREF_P(value);
31287 							}
31288 						} else {
31289 							value = Z_REFVAL_P(value);
31290 							Z_TRY_ADDREF_P(value);
31291 						}
31292 					} else if (IS_CONST == IS_CV) {
31293 						Z_TRY_ADDREF_P(value);
31294 					}
31295 				}
31296 				zend_hash_add_new(zobj->properties, Z_STR_P(property), value);
31297 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
31298 					ZVAL_COPY(EX_VAR(opline->result.var), value);
31299 				}
31300 				goto exit_assign_obj;
31301 			}
31302 		}
31303 	}
31304 
31305 	if (!Z_OBJ_HT_P(object)->write_property) {
31306 		zend_wrong_property_assignment(property OPLINE_CC EXECUTE_DATA_CC);
31307 
31308 		goto exit_assign_obj;
31309 	}
31310 
31311 	if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
31312 		ZVAL_DEREF(value);
31313 	}
31314 
31315 	Z_OBJ_HT_P(object)->write_property(object, property, value, (IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
31316 
31317 	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
31318 		ZVAL_COPY(EX_VAR(opline->result.var), value);
31319 	}
31320 
31321 exit_assign_obj:
31322 
31323 
31324 	/* assign_obj has two opcodes! */
31325 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
31326 }
31327 
31328 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_UNUSED_CONST_OP_DATA_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
31329 {
31330 	USE_OPLINE
31331 	zend_free_op free_op_data;
31332 	zval *object, *property, *value, tmp;
31333 
31334 	SAVE_OPLINE();
31335 	object = &EX(This);
31336 
31337 	if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
31338 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
31339 	}
31340 
31341 	property = RT_CONSTANT(opline, opline->op2);
31342 	value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
31343 
31344 	if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
31345 		if (Z_ISREF_P(object)) {
31346 			object = Z_REFVAL_P(object);
31347 			if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
31348 				goto assign_object;
31349 			}
31350 		}
31351 		if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
31352 			zval_ptr_dtor_nogc(free_op_data);
31353 			goto exit_assign_obj;
31354 		}
31355 	}
31356 
31357 assign_object:
31358 	if (IS_CONST == IS_CONST &&
31359 	    EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(opline->extended_value))) {
31360 		uintptr_t prop_offset = (uintptr_t)CACHED_PTR(opline->extended_value + sizeof(void*));
31361 		zend_object *zobj = Z_OBJ_P(object);
31362 		zval *property_val;
31363 
31364 		if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
31365 			property_val = OBJ_PROP(zobj, prop_offset);
31366 			if (Z_TYPE_P(property_val) != IS_UNDEF) {
31367 fast_assign_obj:
31368 				value = zend_assign_to_variable(property_val, value, IS_TMP_VAR);
31369 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
31370 					ZVAL_COPY(EX_VAR(opline->result.var), value);
31371 				}
31372 				goto exit_assign_obj;
31373 			}
31374 		} else {
31375 			if (EXPECTED(zobj->properties != NULL)) {
31376 				if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
31377 					if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
31378 						GC_DELREF(zobj->properties);
31379 					}
31380 					zobj->properties = zend_array_dup(zobj->properties);
31381 				}
31382 				property_val = zend_hash_find_ex(zobj->properties, Z_STR_P(property), 1);
31383 				if (property_val) {
31384 					goto fast_assign_obj;
31385 				}
31386 			}
31387 
31388 			if (!zobj->ce->__set) {
31389 
31390 				if (EXPECTED(zobj->properties == NULL)) {
31391 					rebuild_object_properties(zobj);
31392 				}
31393 				if (IS_TMP_VAR == IS_CONST) {
31394 					if (UNEXPECTED(Z_OPT_REFCOUNTED_P(value))) {
31395 						Z_ADDREF_P(value);
31396 					}
31397 				} else if (IS_TMP_VAR != IS_TMP_VAR) {
31398 					if (Z_ISREF_P(value)) {
31399 						if (IS_TMP_VAR == IS_VAR) {
31400 							zend_reference *ref = Z_REF_P(value);
31401 							if (GC_DELREF(ref) == 0) {
31402 								ZVAL_COPY_VALUE(&tmp, Z_REFVAL_P(value));
31403 								efree_size(ref, sizeof(zend_reference));
31404 								value = &tmp;
31405 							} else {
31406 								value = Z_REFVAL_P(value);
31407 								Z_TRY_ADDREF_P(value);
31408 							}
31409 						} else {
31410 							value = Z_REFVAL_P(value);
31411 							Z_TRY_ADDREF_P(value);
31412 						}
31413 					} else if (IS_TMP_VAR == IS_CV) {
31414 						Z_TRY_ADDREF_P(value);
31415 					}
31416 				}
31417 				zend_hash_add_new(zobj->properties, Z_STR_P(property), value);
31418 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
31419 					ZVAL_COPY(EX_VAR(opline->result.var), value);
31420 				}
31421 				goto exit_assign_obj;
31422 			}
31423 		}
31424 	}
31425 
31426 	if (!Z_OBJ_HT_P(object)->write_property) {
31427 		zend_wrong_property_assignment(property OPLINE_CC EXECUTE_DATA_CC);
31428 		zval_ptr_dtor_nogc(free_op_data);
31429 		goto exit_assign_obj;
31430 	}
31431 
31432 	if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
31433 		ZVAL_DEREF(value);
31434 	}
31435 
31436 	Z_OBJ_HT_P(object)->write_property(object, property, value, (IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
31437 
31438 	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
31439 		ZVAL_COPY(EX_VAR(opline->result.var), value);
31440 	}
31441 	zval_ptr_dtor_nogc(free_op_data);
31442 exit_assign_obj:
31443 
31444 
31445 	/* assign_obj has two opcodes! */
31446 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
31447 }
31448 
31449 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_UNUSED_CONST_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
31450 {
31451 	USE_OPLINE
31452 	zend_free_op free_op_data;
31453 	zval *object, *property, *value, tmp;
31454 
31455 	SAVE_OPLINE();
31456 	object = &EX(This);
31457 
31458 	if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
31459 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
31460 	}
31461 
31462 	property = RT_CONSTANT(opline, opline->op2);
31463 	value = _get_zval_ptr_var((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
31464 
31465 	if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
31466 		if (Z_ISREF_P(object)) {
31467 			object = Z_REFVAL_P(object);
31468 			if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
31469 				goto assign_object;
31470 			}
31471 		}
31472 		if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
31473 			zval_ptr_dtor_nogc(free_op_data);
31474 			goto exit_assign_obj;
31475 		}
31476 	}
31477 
31478 assign_object:
31479 	if (IS_CONST == IS_CONST &&
31480 	    EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(opline->extended_value))) {
31481 		uintptr_t prop_offset = (uintptr_t)CACHED_PTR(opline->extended_value + sizeof(void*));
31482 		zend_object *zobj = Z_OBJ_P(object);
31483 		zval *property_val;
31484 
31485 		if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
31486 			property_val = OBJ_PROP(zobj, prop_offset);
31487 			if (Z_TYPE_P(property_val) != IS_UNDEF) {
31488 fast_assign_obj:
31489 				value = zend_assign_to_variable(property_val, value, IS_VAR);
31490 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
31491 					ZVAL_COPY(EX_VAR(opline->result.var), value);
31492 				}
31493 				goto exit_assign_obj;
31494 			}
31495 		} else {
31496 			if (EXPECTED(zobj->properties != NULL)) {
31497 				if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
31498 					if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
31499 						GC_DELREF(zobj->properties);
31500 					}
31501 					zobj->properties = zend_array_dup(zobj->properties);
31502 				}
31503 				property_val = zend_hash_find_ex(zobj->properties, Z_STR_P(property), 1);
31504 				if (property_val) {
31505 					goto fast_assign_obj;
31506 				}
31507 			}
31508 
31509 			if (!zobj->ce->__set) {
31510 
31511 				if (EXPECTED(zobj->properties == NULL)) {
31512 					rebuild_object_properties(zobj);
31513 				}
31514 				if (IS_VAR == IS_CONST) {
31515 					if (UNEXPECTED(Z_OPT_REFCOUNTED_P(value))) {
31516 						Z_ADDREF_P(value);
31517 					}
31518 				} else if (IS_VAR != IS_TMP_VAR) {
31519 					if (Z_ISREF_P(value)) {
31520 						if (IS_VAR == IS_VAR) {
31521 							zend_reference *ref = Z_REF_P(value);
31522 							if (GC_DELREF(ref) == 0) {
31523 								ZVAL_COPY_VALUE(&tmp, Z_REFVAL_P(value));
31524 								efree_size(ref, sizeof(zend_reference));
31525 								value = &tmp;
31526 							} else {
31527 								value = Z_REFVAL_P(value);
31528 								Z_TRY_ADDREF_P(value);
31529 							}
31530 						} else {
31531 							value = Z_REFVAL_P(value);
31532 							Z_TRY_ADDREF_P(value);
31533 						}
31534 					} else if (IS_VAR == IS_CV) {
31535 						Z_TRY_ADDREF_P(value);
31536 					}
31537 				}
31538 				zend_hash_add_new(zobj->properties, Z_STR_P(property), value);
31539 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
31540 					ZVAL_COPY(EX_VAR(opline->result.var), value);
31541 				}
31542 				goto exit_assign_obj;
31543 			}
31544 		}
31545 	}
31546 
31547 	if (!Z_OBJ_HT_P(object)->write_property) {
31548 		zend_wrong_property_assignment(property OPLINE_CC EXECUTE_DATA_CC);
31549 		zval_ptr_dtor_nogc(free_op_data);
31550 		goto exit_assign_obj;
31551 	}
31552 
31553 	if (IS_VAR == IS_CV || IS_VAR == IS_VAR) {
31554 		ZVAL_DEREF(value);
31555 	}
31556 
31557 	Z_OBJ_HT_P(object)->write_property(object, property, value, (IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
31558 
31559 	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
31560 		ZVAL_COPY(EX_VAR(opline->result.var), value);
31561 	}
31562 	zval_ptr_dtor_nogc(free_op_data);
31563 exit_assign_obj:
31564 
31565 
31566 	/* assign_obj has two opcodes! */
31567 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
31568 }
31569 
31570 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_UNUSED_CONST_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
31571 {
31572 	USE_OPLINE
31573 
31574 	zval *object, *property, *value, tmp;
31575 
31576 	SAVE_OPLINE();
31577 	object = &EX(This);
31578 
31579 	if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
31580 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
31581 	}
31582 
31583 	property = RT_CONSTANT(opline, opline->op2);
31584 	value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
31585 
31586 	if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
31587 		if (Z_ISREF_P(object)) {
31588 			object = Z_REFVAL_P(object);
31589 			if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
31590 				goto assign_object;
31591 			}
31592 		}
31593 		if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
31594 
31595 			goto exit_assign_obj;
31596 		}
31597 	}
31598 
31599 assign_object:
31600 	if (IS_CONST == IS_CONST &&
31601 	    EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(opline->extended_value))) {
31602 		uintptr_t prop_offset = (uintptr_t)CACHED_PTR(opline->extended_value + sizeof(void*));
31603 		zend_object *zobj = Z_OBJ_P(object);
31604 		zval *property_val;
31605 
31606 		if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
31607 			property_val = OBJ_PROP(zobj, prop_offset);
31608 			if (Z_TYPE_P(property_val) != IS_UNDEF) {
31609 fast_assign_obj:
31610 				value = zend_assign_to_variable(property_val, value, IS_CV);
31611 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
31612 					ZVAL_COPY(EX_VAR(opline->result.var), value);
31613 				}
31614 				goto exit_assign_obj;
31615 			}
31616 		} else {
31617 			if (EXPECTED(zobj->properties != NULL)) {
31618 				if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
31619 					if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
31620 						GC_DELREF(zobj->properties);
31621 					}
31622 					zobj->properties = zend_array_dup(zobj->properties);
31623 				}
31624 				property_val = zend_hash_find_ex(zobj->properties, Z_STR_P(property), 1);
31625 				if (property_val) {
31626 					goto fast_assign_obj;
31627 				}
31628 			}
31629 
31630 			if (!zobj->ce->__set) {
31631 
31632 				if (EXPECTED(zobj->properties == NULL)) {
31633 					rebuild_object_properties(zobj);
31634 				}
31635 				if (IS_CV == IS_CONST) {
31636 					if (UNEXPECTED(Z_OPT_REFCOUNTED_P(value))) {
31637 						Z_ADDREF_P(value);
31638 					}
31639 				} else if (IS_CV != IS_TMP_VAR) {
31640 					if (Z_ISREF_P(value)) {
31641 						if (IS_CV == IS_VAR) {
31642 							zend_reference *ref = Z_REF_P(value);
31643 							if (GC_DELREF(ref) == 0) {
31644 								ZVAL_COPY_VALUE(&tmp, Z_REFVAL_P(value));
31645 								efree_size(ref, sizeof(zend_reference));
31646 								value = &tmp;
31647 							} else {
31648 								value = Z_REFVAL_P(value);
31649 								Z_TRY_ADDREF_P(value);
31650 							}
31651 						} else {
31652 							value = Z_REFVAL_P(value);
31653 							Z_TRY_ADDREF_P(value);
31654 						}
31655 					} else if (IS_CV == IS_CV) {
31656 						Z_TRY_ADDREF_P(value);
31657 					}
31658 				}
31659 				zend_hash_add_new(zobj->properties, Z_STR_P(property), value);
31660 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
31661 					ZVAL_COPY(EX_VAR(opline->result.var), value);
31662 				}
31663 				goto exit_assign_obj;
31664 			}
31665 		}
31666 	}
31667 
31668 	if (!Z_OBJ_HT_P(object)->write_property) {
31669 		zend_wrong_property_assignment(property OPLINE_CC EXECUTE_DATA_CC);
31670 
31671 		goto exit_assign_obj;
31672 	}
31673 
31674 	if (IS_CV == IS_CV || IS_CV == IS_VAR) {
31675 		ZVAL_DEREF(value);
31676 	}
31677 
31678 	Z_OBJ_HT_P(object)->write_property(object, property, value, (IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
31679 
31680 	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
31681 		ZVAL_COPY(EX_VAR(opline->result.var), value);
31682 	}
31683 
31684 exit_assign_obj:
31685 
31686 
31687 	/* assign_obj has two opcodes! */
31688 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
31689 }
31690 
31691 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ROPE_INIT_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
31692 {
31693 	USE_OPLINE
31694 
31695 	zend_string **rope;
31696 	zval *var;
31697 
31698 	/* Compiler allocates the necessary number of zval slots to keep the rope */
31699 	rope = (zend_string**)EX_VAR(opline->result.var);
31700 	if (IS_CONST == IS_CONST) {
31701 		var = RT_CONSTANT(opline, opline->op2);
31702 		rope[0] = Z_STR_P(var);
31703 		if (UNEXPECTED(Z_REFCOUNTED_P(var))) {
31704 			Z_ADDREF_P(var);
31705 		}
31706 	} else {
31707 		var = RT_CONSTANT(opline, opline->op2);
31708 		if (EXPECTED(Z_TYPE_P(var) == IS_STRING)) {
31709 			if (IS_CONST == IS_CV) {
31710 				rope[0] = zend_string_copy(Z_STR_P(var));
31711 			} else {
31712 				rope[0] = Z_STR_P(var);
31713 			}
31714 		} else {
31715 			SAVE_OPLINE();
31716 			if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(var) == IS_UNDEF)) {
31717 				GET_OP2_UNDEF_CV(var, BP_VAR_R);
31718 			}
31719 			rope[0] = zval_get_string_func(var);
31720 
31721 			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
31722 		}
31723 	}
31724 	ZEND_VM_NEXT_OPCODE();
31725 }
31726 
31727 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_CLASS_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
31728 {
31729 
31730 	zval *class_name;
31731 	USE_OPLINE
31732 
31733 	SAVE_OPLINE();
31734 	if (IS_CONST == IS_UNUSED) {
31735 		Z_CE_P(EX_VAR(opline->result.var)) = zend_fetch_class(NULL, opline->op1.num);
31736 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
31737 	} else if (IS_CONST == IS_CONST) {
31738 		zend_class_entry *ce = CACHED_PTR(opline->extended_value);
31739 
31740 		if (UNEXPECTED(ce == NULL)) {
31741 			class_name = RT_CONSTANT(opline, opline->op2);
31742 			ce = zend_fetch_class_by_name(Z_STR_P(class_name), class_name + 1, opline->op1.num);
31743 			CACHE_PTR(opline->extended_value, ce);
31744 		}
31745 		Z_CE_P(EX_VAR(opline->result.var)) = ce;
31746 	} else {
31747 		class_name = RT_CONSTANT(opline, opline->op2);
31748 try_class_name:
31749 		if (Z_TYPE_P(class_name) == IS_OBJECT) {
31750 			Z_CE_P(EX_VAR(opline->result.var)) = Z_OBJCE_P(class_name);
31751 		} else if (Z_TYPE_P(class_name) == IS_STRING) {
31752 			Z_CE_P(EX_VAR(opline->result.var)) = zend_fetch_class(Z_STR_P(class_name), opline->op1.num);
31753 		} else if ((IS_CONST & (IS_VAR|IS_CV)) && Z_TYPE_P(class_name) == IS_REFERENCE) {
31754 			class_name = Z_REFVAL_P(class_name);
31755 			goto try_class_name;
31756 		} else {
31757 			if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(class_name) == IS_UNDEF)) {
31758 				GET_OP2_UNDEF_CV(class_name, BP_VAR_R);
31759 				if (UNEXPECTED(EG(exception) != NULL)) {
31760 					HANDLE_EXCEPTION();
31761 				}
31762 			}
31763 			zend_throw_error(NULL, "Class name must be a valid object or a string");
31764 		}
31765 	}
31766 
31767 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
31768 }
31769 
31770 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
31771 {
31772 	USE_OPLINE
31773 	zval *function_name;
31774 	zend_free_op free_op1;
31775 	zval *object;
31776 	zend_function *fbc;
31777 	zend_class_entry *called_scope;
31778 	zend_object *obj;
31779 	zend_execute_data *call;
31780 	uint32_t call_info;
31781 
31782 	SAVE_OPLINE();
31783 
31784 	object = &EX(This);
31785 
31786 	if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
31787 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
31788 	}
31789 
31790 	if (IS_CONST != IS_CONST) {
31791 		function_name = RT_CONSTANT(opline, opline->op2);
31792 	}
31793 
31794 	if (IS_CONST != IS_CONST &&
31795 	    UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) {
31796 		do {
31797 			if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(function_name)) {
31798 				function_name = Z_REFVAL_P(function_name);
31799 				if (EXPECTED(Z_TYPE_P(function_name) == IS_STRING)) {
31800 					break;
31801 				}
31802 			} else if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
31803 				GET_OP2_UNDEF_CV(function_name, BP_VAR_R);
31804 				if (UNEXPECTED(EG(exception) != NULL)) {
31805 
31806 					HANDLE_EXCEPTION();
31807 				}
31808 			}
31809 			zend_throw_error(NULL, "Method name must be a string");
31810 
31811 
31812 			HANDLE_EXCEPTION();
31813 		} while (0);
31814 	}
31815 
31816 	if (IS_UNUSED != IS_UNUSED) {
31817 		do {
31818 			if (IS_UNUSED == IS_CONST || UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
31819 				if ((IS_UNUSED & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(object))) {
31820 					object = Z_REFVAL_P(object);
31821 					if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
31822 						break;
31823 					}
31824 				}
31825 				if (IS_UNUSED == IS_CV && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
31826 					object = GET_OP1_UNDEF_CV(object, BP_VAR_R);
31827 					if (UNEXPECTED(EG(exception) != NULL)) {
31828 						if (IS_CONST != IS_CONST) {
31829 
31830 						}
31831 						HANDLE_EXCEPTION();
31832 					}
31833 				}
31834 				if (IS_CONST == IS_CONST) {
31835 					function_name = RT_CONSTANT(opline, opline->op2);
31836 				}
31837 				zend_invalid_method_call(object, function_name);
31838 
31839 
31840 				HANDLE_EXCEPTION();
31841 			}
31842 		} while (0);
31843 	}
31844 
31845 	obj = Z_OBJ_P(object);
31846 	called_scope = obj->ce;
31847 
31848 	if (IS_CONST == IS_CONST &&
31849 	    EXPECTED(CACHED_PTR(opline->result.num) == called_scope)) {
31850 	    fbc = CACHED_PTR(opline->result.num + sizeof(void*));
31851 	} else {
31852 	    zend_object *orig_obj = obj;
31853 
31854 		if (UNEXPECTED(obj->handlers->get_method == NULL)) {
31855 			zend_throw_error(NULL, "Object does not support method calls");
31856 
31857 
31858 			HANDLE_EXCEPTION();
31859 		}
31860 
31861 		if (IS_CONST == IS_CONST) {
31862 			function_name = RT_CONSTANT(opline, opline->op2);
31863 		}
31864 
31865 		/* First, locate the function. */
31866 		fbc = obj->handlers->get_method(&obj, Z_STR_P(function_name), ((IS_CONST == IS_CONST) ? (RT_CONSTANT(opline, opline->op2) + 1) : NULL));
31867 		if (UNEXPECTED(fbc == NULL)) {
31868 			if (EXPECTED(!EG(exception))) {
31869 				zend_undefined_method(obj->ce, Z_STR_P(function_name));
31870 			}
31871 
31872 
31873 			HANDLE_EXCEPTION();
31874 		}
31875 		if (IS_CONST == IS_CONST &&
31876 		    EXPECTED(fbc->type <= ZEND_USER_FUNCTION) &&
31877 		    EXPECTED(!(fbc->common.fn_flags & (ZEND_ACC_CALL_VIA_TRAMPOLINE|ZEND_ACC_NEVER_CACHE))) &&
31878 		    EXPECTED(obj == orig_obj)) {
31879 			CACHE_POLYMORPHIC_PTR(opline->result.num, called_scope, fbc);
31880 		}
31881 		if ((IS_UNUSED & (IS_VAR|IS_TMP_VAR)) && UNEXPECTED(obj != orig_obj)) {
31882 			/* Reset "object" to trigger reference counting */
31883 			object = NULL;
31884 		}
31885 		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!fbc->op_array.run_time_cache)) {
31886 			init_func_run_time_cache(&fbc->op_array);
31887 		}
31888 	}
31889 
31890 	if (IS_CONST != IS_CONST) {
31891 
31892 	}
31893 
31894 	call_info = ZEND_CALL_NESTED_FUNCTION;
31895 	if (UNEXPECTED((fbc->common.fn_flags & ZEND_ACC_STATIC) != 0)) {
31896 		obj = NULL;
31897 
31898 		if ((IS_UNUSED & (IS_VAR|IS_TMP_VAR)) && UNEXPECTED(EG(exception))) {
31899 			HANDLE_EXCEPTION();
31900 		}
31901 	} else if (IS_UNUSED & (IS_VAR|IS_TMP_VAR|IS_CV)) {
31902 		/* CV may be changed indirectly (e.g. when it's a reference) */
31903 		call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_RELEASE_THIS;
31904 		if (IS_UNUSED == IS_CV) {
31905 			GC_ADDREF(obj); /* For $this pointer */
31906 		} else if (free_op1 != object) {
31907 			GC_ADDREF(obj); /* For $this pointer */
31908 
31909 		}
31910 	}
31911 
31912 	call = zend_vm_stack_push_call_frame(call_info,
31913 		fbc, opline->extended_value, called_scope, obj);
31914 	call->prev_execute_data = EX(call);
31915 	EX(call) = call;
31916 
31917 	ZEND_VM_NEXT_OPCODE();
31918 }
31919 
31920 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
31921 {
31922 	USE_OPLINE
31923 	zval *function_name;
31924 	zend_class_entry *ce;
31925 	zend_object *object;
31926 	zend_function *fbc;
31927 	zend_execute_data *call;
31928 
31929 	SAVE_OPLINE();
31930 
31931 	if (IS_UNUSED == IS_CONST) {
31932 		/* no function found. try a static method in class */
31933 		ce = CACHED_PTR(opline->result.num);
31934 		if (UNEXPECTED(ce == NULL)) {
31935 			ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), RT_CONSTANT(opline, opline->op1) + 1, ZEND_FETCH_CLASS_DEFAULT |  ZEND_FETCH_CLASS_EXCEPTION);
31936 			if (UNEXPECTED(ce == NULL)) {
31937 				ZEND_ASSERT(EG(exception));
31938 
31939 				HANDLE_EXCEPTION();
31940 			}
31941 			if (IS_CONST != IS_CONST) {
31942 				CACHE_PTR(opline->result.num, ce);
31943 			}
31944 		}
31945 	} else if (IS_UNUSED == IS_UNUSED) {
31946 		ce = zend_fetch_class(NULL, opline->op1.num);
31947 		if (UNEXPECTED(ce == NULL)) {
31948 			ZEND_ASSERT(EG(exception));
31949 
31950 			HANDLE_EXCEPTION();
31951 		}
31952 	} else {
31953 		ce = Z_CE_P(EX_VAR(opline->op1.var));
31954 	}
31955 
31956 	if (IS_UNUSED == IS_CONST &&
31957 	    IS_CONST == IS_CONST &&
31958 	    EXPECTED((fbc = CACHED_PTR(opline->result.num + sizeof(void*))) != NULL)) {
31959 		/* nothing to do */
31960 	} else if (IS_UNUSED != IS_CONST &&
31961 	           IS_CONST == IS_CONST &&
31962 	           EXPECTED(CACHED_PTR(opline->result.num) == ce)) {
31963 		fbc = CACHED_PTR(opline->result.num + sizeof(void*));
31964 	} else if (IS_CONST != IS_UNUSED) {
31965 
31966 
31967 		function_name = RT_CONSTANT(opline, opline->op2);
31968 		if (IS_CONST != IS_CONST) {
31969 			if (UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) {
31970 				do {
31971 					if (IS_CONST & (IS_VAR|IS_CV) && Z_ISREF_P(function_name)) {
31972 						function_name = Z_REFVAL_P(function_name);
31973 						if (EXPECTED(Z_TYPE_P(function_name) == IS_STRING)) {
31974 							break;
31975 						}
31976 					} else if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
31977 						GET_OP2_UNDEF_CV(function_name, BP_VAR_R);
31978 						if (UNEXPECTED(EG(exception) != NULL)) {
31979 							HANDLE_EXCEPTION();
31980 						}
31981 					}
31982 					zend_throw_error(NULL, "Function name must be a string");
31983 
31984 					HANDLE_EXCEPTION();
31985 				} while (0);
31986 			}
31987 		}
31988 
31989 		if (ce->get_static_method) {
31990 			fbc = ce->get_static_method(ce, Z_STR_P(function_name));
31991 		} else {
31992 			fbc = zend_std_get_static_method(ce, Z_STR_P(function_name), ((IS_CONST == IS_CONST) ? (RT_CONSTANT(opline, opline->op2) + 1) : NULL));
31993 		}
31994 		if (UNEXPECTED(fbc == NULL)) {
31995 			if (EXPECTED(!EG(exception))) {
31996 				zend_undefined_method(ce, Z_STR_P(function_name));
31997 			}
31998 
31999 			HANDLE_EXCEPTION();
32000 		}
32001 		if (IS_CONST == IS_CONST &&
32002 		    EXPECTED(fbc->type <= ZEND_USER_FUNCTION) &&
32003 		    EXPECTED(!(fbc->common.fn_flags & (ZEND_ACC_CALL_VIA_TRAMPOLINE|ZEND_ACC_NEVER_CACHE)))) {
32004 			CACHE_POLYMORPHIC_PTR(opline->result.num, ce, fbc);
32005 		}
32006 		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!fbc->op_array.run_time_cache)) {
32007 			init_func_run_time_cache(&fbc->op_array);
32008 		}
32009 		if (IS_CONST != IS_CONST) {
32010 
32011 		}
32012 	} else {
32013 		if (UNEXPECTED(ce->constructor == NULL)) {
32014 			zend_throw_error(NULL, "Cannot call constructor");
32015 			HANDLE_EXCEPTION();
32016 		}
32017 		if (Z_TYPE(EX(This)) == IS_OBJECT && Z_OBJ(EX(This))->ce != ce->constructor->common.scope && (ce->constructor->common.fn_flags & ZEND_ACC_PRIVATE)) {
32018 			zend_throw_error(NULL, "Cannot call private %s::__construct()", ZSTR_VAL(ce->name));
32019 			HANDLE_EXCEPTION();
32020 		}
32021 		fbc = ce->constructor;
32022 		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!fbc->op_array.run_time_cache)) {
32023 			init_func_run_time_cache(&fbc->op_array);
32024 		}
32025 	}
32026 
32027 	object = NULL;
32028 	if (!(fbc->common.fn_flags & ZEND_ACC_STATIC)) {
32029 		if (Z_TYPE(EX(This)) == IS_OBJECT && instanceof_function(Z_OBJCE(EX(This)), ce)) {
32030 			object = Z_OBJ(EX(This));
32031 			ce = object->ce;
32032 		} else {
32033 			zend_non_static_method_call(fbc);
32034 			if (UNEXPECTED(EG(exception) != NULL)) {
32035 				HANDLE_EXCEPTION();
32036 			}
32037 		}
32038 	}
32039 
32040 	if (IS_UNUSED == IS_UNUSED) {
32041 		/* previous opcode is ZEND_FETCH_CLASS */
32042 		if ((opline->op1.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_PARENT ||
32043 		    (opline->op1.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_SELF) {
32044 			if (Z_TYPE(EX(This)) == IS_OBJECT) {
32045 				ce = Z_OBJCE(EX(This));
32046 			} else {
32047 				ce = Z_CE(EX(This));
32048 			}
32049 		}
32050 	}
32051 
32052 	call = zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_FUNCTION,
32053 		fbc, opline->extended_value, ce, object);
32054 	call->prev_execute_data = EX(call);
32055 	EX(call) = call;
32056 
32057 	ZEND_VM_NEXT_OPCODE();
32058 }
32059 
32060 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_CONSTANT_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
32061 {
32062 	USE_OPLINE
32063 	zend_constant *c;
32064 
32065 	c = CACHED_PTR(opline->extended_value);
32066 	if (EXPECTED(c != NULL) && EXPECTED(!IS_SPECIAL_CACHE_VAL(c))) {
32067 		ZVAL_COPY_OR_DUP(EX_VAR(opline->result.var), &c->value);
32068 		ZEND_VM_NEXT_OPCODE();
32069 	}
32070 
32071 	SAVE_OPLINE();
32072 	zend_quick_get_constant(RT_CONSTANT(opline, opline->op2) + 1, opline->op1.num OPLINE_CC EXECUTE_DATA_CC);
32073 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
32074 }
32075 
32076 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_CLASS_CONSTANT_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
32077 {
32078 	zend_class_entry *ce, *scope;
32079 	zend_class_constant *c;
32080 	zval *value, *zv;
32081 	USE_OPLINE
32082 
32083 	SAVE_OPLINE();
32084 
32085 	do {
32086 		if (IS_UNUSED == IS_CONST) {
32087 			if (EXPECTED(CACHED_PTR(opline->extended_value + sizeof(void*)))) {
32088 				value = CACHED_PTR(opline->extended_value + sizeof(void*));
32089 				break;
32090 			} else if (EXPECTED(CACHED_PTR(opline->extended_value))) {
32091 				ce = CACHED_PTR(opline->extended_value);
32092 			} else {
32093 				ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), RT_CONSTANT(opline, opline->op1) + 1, ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
32094 				if (UNEXPECTED(ce == NULL)) {
32095 					ZEND_ASSERT(EG(exception));
32096 					ZVAL_UNDEF(EX_VAR(opline->result.var));
32097 					HANDLE_EXCEPTION();
32098 				}
32099 			}
32100 		} else {
32101 			if (IS_UNUSED == IS_UNUSED) {
32102 				ce = zend_fetch_class(NULL, opline->op1.num);
32103 				if (UNEXPECTED(ce == NULL)) {
32104 					ZEND_ASSERT(EG(exception));
32105 					ZVAL_UNDEF(EX_VAR(opline->result.var));
32106 					HANDLE_EXCEPTION();
32107 				}
32108 			} else {
32109 				ce = Z_CE_P(EX_VAR(opline->op1.var));
32110 			}
32111 			if (EXPECTED(CACHED_PTR(opline->extended_value) == ce)) {
32112 				value = CACHED_PTR(opline->extended_value + sizeof(void*));
32113 				break;
32114 			}
32115 		}
32116 
32117 		zv = zend_hash_find_ex(&ce->constants_table, Z_STR_P(RT_CONSTANT(opline, opline->op2)), 1);
32118 		if (EXPECTED(zv != NULL)) {
32119 			c = Z_PTR_P(zv);
32120 			scope = EX(func)->op_array.scope;
32121 			if (!zend_verify_const_access(c, scope)) {
32122 				zend_throw_error(NULL, "Cannot access %s const %s::%s", zend_visibility_string(Z_ACCESS_FLAGS(c->value)), ZSTR_VAL(ce->name), Z_STRVAL_P(RT_CONSTANT(opline, opline->op2)));
32123 				ZVAL_UNDEF(EX_VAR(opline->result.var));
32124 				HANDLE_EXCEPTION();
32125 			}
32126 			value = &c->value;
32127 			if (Z_TYPE_P(value) == IS_CONSTANT_AST) {
32128 				zval_update_constant_ex(value, c->ce);
32129 				if (UNEXPECTED(EG(exception) != NULL)) {
32130 					ZVAL_UNDEF(EX_VAR(opline->result.var));
32131 					HANDLE_EXCEPTION();
32132 				}
32133 			}
32134 			CACHE_POLYMORPHIC_PTR(opline->extended_value, ce, value);
32135 		} else {
32136 			zend_throw_error(NULL, "Undefined class constant '%s'", Z_STRVAL_P(RT_CONSTANT(opline, opline->op2)));
32137 			ZVAL_UNDEF(EX_VAR(opline->result.var));
32138 			HANDLE_EXCEPTION();
32139 		}
32140 	} while (0);
32141 
32142 	ZVAL_COPY_OR_DUP(EX_VAR(opline->result.var), value);
32143 
32144 	ZEND_VM_NEXT_OPCODE();
32145 }
32146 
32147 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_UNSET_OBJ_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
32148 {
32149 	USE_OPLINE
32150 
32151 	zval *container;
32152 	zval *offset;
32153 
32154 	SAVE_OPLINE();
32155 	container = &EX(This);
32156 	if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
32157 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
32158 	}
32159 	offset = RT_CONSTANT(opline, opline->op2);
32160 
32161 	do {
32162 		if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) {
32163 			if (Z_ISREF_P(container)) {
32164 				container = Z_REFVAL_P(container);
32165 				if (Z_TYPE_P(container) != IS_OBJECT) {
32166 					break;
32167 				}
32168 			} else {
32169 				break;
32170 			}
32171 		}
32172 		if (Z_OBJ_HT_P(container)->unset_property) {
32173 			Z_OBJ_HT_P(container)->unset_property(container, offset, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL));
32174 		} else {
32175 			zend_wrong_property_unset(offset);
32176 		}
32177 	} while (0);
32178 
32179 
32180 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
32181 }
32182 
32183 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
32184 {
32185 	USE_OPLINE
32186 
32187 	zval *container;
32188 	int result;
32189 	zval *offset;
32190 
32191 	SAVE_OPLINE();
32192 	container = &EX(This);
32193 
32194 	if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
32195 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
32196 	}
32197 
32198 	offset = RT_CONSTANT(opline, opline->op2);
32199 
32200 	if (IS_UNUSED == IS_CONST ||
32201 	    (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
32202 		if ((IS_UNUSED & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
32203 			container = Z_REFVAL_P(container);
32204 			if (UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) {
32205 				goto isset_no_object;
32206 			}
32207 		} else {
32208 			goto isset_no_object;
32209 		}
32210 	}
32211 	if (UNEXPECTED(!Z_OBJ_HT_P(container)->has_property)) {
32212 		zend_wrong_property_check(offset);
32213 isset_no_object:
32214 		result = (opline->extended_value & ZEND_ISEMPTY);
32215 	} else {
32216 		result =
32217 			(opline->extended_value & ZEND_ISEMPTY) ^
32218 			Z_OBJ_HT_P(container)->has_property(container, offset, (opline->extended_value & ZEND_ISEMPTY), ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_ISEMPTY) : NULL));
32219 	}
32220 
32221 
32222 	ZEND_VM_SMART_BRANCH(result, 1);
32223 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
32224 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
32225 }
32226 
32227 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_YIELD_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
32228 {
32229 	USE_OPLINE
32230 
32231 	zend_generator *generator = zend_get_running_generator(EXECUTE_DATA_C);
32232 
32233 	SAVE_OPLINE();
32234 	if (UNEXPECTED(generator->flags & ZEND_GENERATOR_FORCED_CLOSE)) {
32235 		ZEND_VM_TAIL_CALL(zend_yield_in_closed_generator_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
32236 	}
32237 
32238 	/* Destroy the previously yielded value */
32239 	zval_ptr_dtor(&generator->value);
32240 
32241 	/* Destroy the previously yielded key */
32242 	zval_ptr_dtor(&generator->key);
32243 
32244 	/* Set the new yielded value */
32245 	if (IS_UNUSED != IS_UNUSED) {
32246 
32247 
32248 		if (UNEXPECTED(EX(func)->op_array.fn_flags & ZEND_ACC_RETURN_REFERENCE)) {
32249 			/* Constants and temporary variables aren't yieldable by reference,
32250 			 * but we still allow them with a notice. */
32251 			if (IS_UNUSED & (IS_CONST|IS_TMP_VAR)) {
32252 				zval *value;
32253 
32254 				zend_error(E_NOTICE, "Only variable references should be yielded by reference");
32255 
32256 				value = NULL;
32257 				ZVAL_COPY_VALUE(&generator->value, value);
32258 				if (IS_UNUSED == IS_CONST) {
32259 					if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
32260 						Z_ADDREF(generator->value);
32261 					}
32262 				}
32263 			} else {
32264 				zval *value_ptr = NULL;
32265 
32266 				/* If a function call result is yielded and the function did
32267 				 * not return by reference we throw a notice. */
32268 				if (IS_UNUSED == IS_VAR &&
32269 				    (value_ptr == &EG(uninitialized_zval) ||
32270 				     (opline->extended_value == ZEND_RETURNS_FUNCTION &&
32271 				      !Z_ISREF_P(value_ptr)))) {
32272 					zend_error(E_NOTICE, "Only variable references should be yielded by reference");
32273 					ZVAL_COPY(&generator->value, value_ptr);
32274 				} else {
32275 					if (Z_ISREF_P(value_ptr)) {
32276 						Z_ADDREF_P(value_ptr);
32277 					} else {
32278 						ZVAL_MAKE_REF_EX(value_ptr, 2);
32279 					}
32280 					ZVAL_REF(&generator->value, Z_REF_P(value_ptr));
32281 				}
32282 
32283 			}
32284 		} else {
32285 			zval *value = NULL;
32286 
32287 			/* Consts, temporary variables and references need copying */
32288 			if (IS_UNUSED == IS_CONST) {
32289 				ZVAL_COPY_VALUE(&generator->value, value);
32290 				if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
32291 					Z_ADDREF(generator->value);
32292 				}
32293 			} else if (IS_UNUSED == IS_TMP_VAR) {
32294 				ZVAL_COPY_VALUE(&generator->value, value);
32295             } else if ((IS_UNUSED & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
32296 				ZVAL_COPY(&generator->value, Z_REFVAL_P(value));
32297 
32298 			} else {
32299 				ZVAL_COPY_VALUE(&generator->value, value);
32300 				if (IS_UNUSED == IS_CV) {
32301 					if (Z_OPT_REFCOUNTED_P(value)) Z_ADDREF_P(value);
32302 				}
32303 			}
32304 		}
32305 	} else {
32306 		/* If no value was specified yield null */
32307 		ZVAL_NULL(&generator->value);
32308 	}
32309 
32310 	/* Set the new yielded key */
32311 	if (IS_CONST != IS_UNUSED) {
32312 
32313 		zval *key = RT_CONSTANT(opline, opline->op2);
32314 
32315 		/* Consts, temporary variables and references need copying */
32316 		if (IS_CONST == IS_CONST) {
32317 			ZVAL_COPY_VALUE(&generator->key, key);
32318 			if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->key))) {
32319 				Z_ADDREF(generator->key);
32320 			}
32321 		} else if (IS_CONST == IS_TMP_VAR) {
32322 			ZVAL_COPY_VALUE(&generator->key, key);
32323 		} else if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(key)) {
32324 			ZVAL_COPY(&generator->key, Z_REFVAL_P(key));
32325 
32326 		} else {
32327 			ZVAL_COPY_VALUE(&generator->key, key);
32328 			if (IS_CONST == IS_CV) {
32329 				if (Z_OPT_REFCOUNTED_P(key)) Z_ADDREF_P(key);
32330 			}
32331 		}
32332 
32333 		if (Z_TYPE(generator->key) == IS_LONG
32334 		    && Z_LVAL(generator->key) > generator->largest_used_integer_key
32335 		) {
32336 			generator->largest_used_integer_key = Z_LVAL(generator->key);
32337 		}
32338 	} else {
32339 		/* If no key was specified we use auto-increment keys */
32340 		generator->largest_used_integer_key++;
32341 		ZVAL_LONG(&generator->key, generator->largest_used_integer_key);
32342 	}
32343 
32344 	if (RETURN_VALUE_USED(opline)) {
32345 		/* If the return value of yield is used set the send
32346 		 * target and initialize it to NULL */
32347 		generator->send_target = EX_VAR(opline->result.var);
32348 		ZVAL_NULL(generator->send_target);
32349 	} else {
32350 		generator->send_target = NULL;
32351 	}
32352 
32353 	/* We increment to the next op, so we are at the correct position when the
32354 	 * generator is resumed. */
32355 	ZEND_VM_INC_OPCODE();
32356 
32357 	/* The GOTO VM uses a local opline variable. We need to set the opline
32358 	 * variable in execute_data so we don't resume at an old position. */
32359 	SAVE_OPLINE();
32360 
32361 	ZEND_VM_RETURN();
32362 }
32363 
32364 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_obj_helper_SPEC_UNUSED_TMPVAR(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
32365 {
32366 	USE_OPLINE
32367 	zend_free_op free_op2, free_op_data1;
32368 	zval *object;
32369 	zval *property;
32370 	zval *value;
32371 	zval *zptr;
32372 
32373 	SAVE_OPLINE();
32374 	object = &EX(This);
32375 
32376 	if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
32377 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
32378 	}
32379 
32380 	property = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
32381 
32382 	do {
32383 		value = get_op_data_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data1);
32384 
32385 		if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
32386 			if (Z_ISREF_P(object)) {
32387 				object = Z_REFVAL_P(object);
32388 				if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
32389 					goto assign_op_object;
32390 				}
32391 			}
32392 			if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
32393 				break;
32394 			}
32395 		}
32396 
32397 		/* here we are sure we are dealing with an object */
32398 assign_op_object:
32399 		if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
32400 			&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR((opline+1)->extended_value) : NULL))) != NULL)) {
32401 			if (UNEXPECTED(Z_ISERROR_P(zptr))) {
32402 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
32403 					ZVAL_NULL(EX_VAR(opline->result.var));
32404 				}
32405 			} else {
32406 				ZVAL_DEREF(zptr);
32407 
32408 				binary_op(zptr, zptr, value);
32409 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
32410 					ZVAL_COPY(EX_VAR(opline->result.var), zptr);
32411 				}
32412 			}
32413 		} else {
32414 			zend_assign_op_overloaded_property(object, property, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR((opline+1)->extended_value) : NULL), value, binary_op OPLINE_CC EXECUTE_DATA_CC);
32415 		}
32416 	} while (0);
32417 
32418 	FREE_OP(free_op_data1);
32419 	zval_ptr_dtor_nogc(free_op2);
32420 
32421 	/* assign_obj has two opcodes! */
32422 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
32423 }
32424 
32425 static zend_always_inline ZEND_OPCODE_HANDLER_RET zend_binary_assign_op_helper_SPEC_UNUSED_TMPVAR_OBJ(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
32426 {
32427 #if 1 && (IS_TMP_VAR|IS_VAR) == IS_UNUSED
32428 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_UNUSED_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
32429 #else
32430 # if 0 || IS_UNUSED != IS_UNUSED
32431 #  if 0
32432 	/* opline->extended_value checks are specialized, don't need opline */
32433 	USE_OPLINE
32434 #  endif
32435 
32436 	if (EXPECTED(0)) {
32437 		ZEND_VM_TAIL_CALL(zend_binary_assign_op_simple_helper_SPEC_UNUSED_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
32438 	}
32439 	if (EXPECTED(0)) {
32440 		ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_UNUSED_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
32441 	}
32442 # endif
32443 
32444 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_obj_helper_SPEC_UNUSED_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
32445 #endif
32446 }
32447 
32448 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_ADD_SPEC_UNUSED_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
32449 {
32450 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_UNUSED_TMPVAR_OBJ(add_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
32451 }
32452 
32453 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SUB_SPEC_UNUSED_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
32454 {
32455 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_UNUSED_TMPVAR_OBJ(sub_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
32456 }
32457 
32458 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MUL_SPEC_UNUSED_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
32459 {
32460 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_UNUSED_TMPVAR_OBJ(mul_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
32461 }
32462 
32463 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIV_SPEC_UNUSED_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
32464 {
32465 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_UNUSED_TMPVAR_OBJ(div_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
32466 }
32467 
32468 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MOD_SPEC_UNUSED_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
32469 {
32470 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_UNUSED_TMPVAR_OBJ(mod_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
32471 }
32472 
32473 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SL_SPEC_UNUSED_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
32474 {
32475 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_UNUSED_TMPVAR_OBJ(shift_left_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
32476 }
32477 
32478 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SR_SPEC_UNUSED_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
32479 {
32480 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_UNUSED_TMPVAR_OBJ(shift_right_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
32481 }
32482 
32483 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_CONCAT_SPEC_UNUSED_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
32484 {
32485 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_UNUSED_TMPVAR_OBJ(concat_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
32486 }
32487 
32488 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_OR_SPEC_UNUSED_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
32489 {
32490 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_UNUSED_TMPVAR_OBJ(bitwise_or_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
32491 }
32492 
32493 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_AND_SPEC_UNUSED_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
32494 {
32495 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_UNUSED_TMPVAR_OBJ(bitwise_and_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
32496 }
32497 
32498 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_XOR_SPEC_UNUSED_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
32499 {
32500 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_UNUSED_TMPVAR_OBJ(bitwise_xor_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
32501 }
32502 
32503 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_POW_SPEC_UNUSED_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
32504 {
32505 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_UNUSED_TMPVAR_OBJ(pow_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
32506 }
32507 
32508 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_pre_incdec_property_helper_SPEC_UNUSED_TMPVAR(int inc ZEND_OPCODE_HANDLER_ARGS_DC)
32509 {
32510 	USE_OPLINE
32511 	zend_free_op free_op2;
32512 	zval *object;
32513 	zval *property;
32514 	zval *zptr;
32515 
32516 	SAVE_OPLINE();
32517 	object = &EX(This);
32518 
32519 	if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
32520 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
32521 	}
32522 
32523 	property = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
32524 
32525 	do {
32526 		if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
32527 			if (Z_ISREF_P(object)) {
32528 				object = Z_REFVAL_P(object);
32529 				if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
32530 					goto pre_incdec_object;
32531 				}
32532 			}
32533 			if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
32534 				break;
32535 			}
32536 		}
32537 
32538 		/* here we are sure we are dealing with an object */
32539 pre_incdec_object:
32540 		if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
32541 			&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL))) != NULL)) {
32542 			if (UNEXPECTED(Z_ISERROR_P(zptr))) {
32543 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
32544 					ZVAL_NULL(EX_VAR(opline->result.var));
32545 				}
32546 			} else {
32547 				if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
32548 					if (inc) {
32549 						fast_long_increment_function(zptr);
32550 					} else {
32551 						fast_long_decrement_function(zptr);
32552 					}
32553 				} else {
32554 					ZVAL_DEREF(zptr);
32555 
32556 					if (inc) {
32557 						increment_function(zptr);
32558 					} else {
32559 						decrement_function(zptr);
32560 					}
32561 				}
32562 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
32563 					ZVAL_COPY(EX_VAR(opline->result.var), zptr);
32564 				}
32565 			}
32566 		} else {
32567 			zend_pre_incdec_overloaded_property(object, property, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), inc OPLINE_CC EXECUTE_DATA_CC);
32568 		}
32569 	} while (0);
32570 
32571 	zval_ptr_dtor_nogc(free_op2);
32572 
32573 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
32574 }
32575 
32576 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_INC_OBJ_SPEC_UNUSED_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
32577 {
32578 	ZEND_VM_TAIL_CALL(zend_pre_incdec_property_helper_SPEC_UNUSED_TMPVAR(1 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
32579 }
32580 
32581 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_DEC_OBJ_SPEC_UNUSED_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
32582 {
32583 	ZEND_VM_TAIL_CALL(zend_pre_incdec_property_helper_SPEC_UNUSED_TMPVAR(0 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
32584 }
32585 
32586 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_post_incdec_property_helper_SPEC_UNUSED_TMPVAR(int inc ZEND_OPCODE_HANDLER_ARGS_DC)
32587 {
32588 	USE_OPLINE
32589 	zend_free_op free_op2;
32590 	zval *object;
32591 	zval *property;
32592 	zval *zptr;
32593 
32594 	SAVE_OPLINE();
32595 	object = &EX(This);
32596 
32597 	if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
32598 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
32599 	}
32600 
32601 	property = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
32602 
32603 	do {
32604 		if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
32605 			if (Z_ISREF_P(object)) {
32606 				object = Z_REFVAL_P(object);
32607 				if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
32608 					goto post_incdec_object;
32609 				}
32610 			}
32611 			if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
32612 				break;
32613 			}
32614 		}
32615 
32616 		/* here we are sure we are dealing with an object */
32617 post_incdec_object:
32618 		if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
32619 			&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL))) != NULL)) {
32620 			if (UNEXPECTED(Z_ISERROR_P(zptr))) {
32621 				ZVAL_NULL(EX_VAR(opline->result.var));
32622 			} else {
32623 				if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
32624 					ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(zptr));
32625 					if (inc) {
32626 						fast_long_increment_function(zptr);
32627 					} else {
32628 						fast_long_decrement_function(zptr);
32629 					}
32630 				} else {
32631 					ZVAL_DEREF(zptr);
32632 					ZVAL_COPY(EX_VAR(opline->result.var), zptr);
32633 					if (inc) {
32634 						increment_function(zptr);
32635 					} else {
32636 						decrement_function(zptr);
32637 					}
32638 				}
32639 			}
32640 		} else {
32641 			zend_post_incdec_overloaded_property(object, property, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), inc OPLINE_CC EXECUTE_DATA_CC);
32642 		}
32643 	} while (0);
32644 
32645 	zval_ptr_dtor_nogc(free_op2);
32646 
32647 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
32648 }
32649 
32650 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_POST_INC_OBJ_SPEC_UNUSED_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
32651 {
32652 	ZEND_VM_TAIL_CALL(zend_post_incdec_property_helper_SPEC_UNUSED_TMPVAR(1 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
32653 }
32654 
32655 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_POST_DEC_OBJ_SPEC_UNUSED_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
32656 {
32657 	ZEND_VM_TAIL_CALL(zend_post_incdec_property_helper_SPEC_UNUSED_TMPVAR(0 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
32658 }
32659 
32660 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_R_SPEC_UNUSED_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
32661 {
32662 	USE_OPLINE
32663 
32664 	zval *container;
32665 	zend_free_op free_op2;
32666 	zval *offset;
32667 	void **cache_slot = NULL;
32668 
32669 	SAVE_OPLINE();
32670 	container = &EX(This);
32671 
32672 	if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
32673 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
32674 	}
32675 
32676 	offset = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
32677 
32678 	if (IS_UNUSED == IS_CONST ||
32679 	    (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
32680 	    do {
32681 			if ((IS_UNUSED & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
32682 				container = Z_REFVAL_P(container);
32683 				if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
32684 					break;
32685 				}
32686 			}
32687 			if (IS_UNUSED == IS_CV && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
32688 				GET_OP1_UNDEF_CV(container, BP_VAR_R);
32689 			}
32690 			if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(offset) == IS_UNDEF)) {
32691 				GET_OP2_UNDEF_CV(offset, BP_VAR_R);
32692 			}
32693 			goto fetch_obj_r_no_object;
32694 		} while (0);
32695 	}
32696 
32697 	/* here we are sure we are dealing with an object */
32698 	do {
32699 		zend_object *zobj = Z_OBJ_P(container);
32700 		zval *retval;
32701 
32702 		if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
32703 			cache_slot = CACHE_ADDR(opline->extended_value);
32704 
32705 			if (EXPECTED(zobj->ce == CACHED_PTR_EX(cache_slot))) {
32706 				uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
32707 
32708 				if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
32709 					retval = OBJ_PROP(zobj, prop_offset);
32710 					if (EXPECTED(Z_TYPE_INFO_P(retval) != IS_UNDEF)) {
32711 						ZVAL_COPY_DEREF(EX_VAR(opline->result.var), retval);
32712 						break;
32713 					}
32714 				} else if (EXPECTED(zobj->properties != NULL)) {
32715 					if (!IS_UNKNOWN_DYNAMIC_PROPERTY_OFFSET(prop_offset)) {
32716 						uintptr_t idx = ZEND_DECODE_DYN_PROP_OFFSET(prop_offset);
32717 
32718 						if (EXPECTED(idx < zobj->properties->nNumUsed * sizeof(Bucket))) {
32719 							Bucket *p = (Bucket*)((char*)zobj->properties->arData + idx);
32720 
32721 							if (EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
32722 						        (EXPECTED(p->key == Z_STR_P(offset)) ||
32723 						         (EXPECTED(p->h == ZSTR_H(Z_STR_P(offset))) &&
32724 						          EXPECTED(p->key != NULL) &&
32725 						          EXPECTED(zend_string_equal_content(p->key, Z_STR_P(offset)))))) {
32726 								ZVAL_COPY_DEREF(EX_VAR(opline->result.var), &p->val);
32727 								break;
32728 							}
32729 						}
32730 						CACHE_PTR_EX(cache_slot + 1, (void*)ZEND_DYNAMIC_PROPERTY_OFFSET);
32731 					}
32732 					retval = zend_hash_find_ex(zobj->properties, Z_STR_P(offset), 1);
32733 					if (EXPECTED(retval)) {
32734 						uintptr_t idx = (char*)retval - (char*)zobj->properties->arData;
32735 						CACHE_PTR_EX(cache_slot + 1, (void*)ZEND_ENCODE_DYN_PROP_OFFSET(idx));
32736 						ZVAL_COPY_DEREF(EX_VAR(opline->result.var), retval);
32737 						break;
32738 					}
32739 				}
32740 			}
32741 		} else if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(offset) == IS_UNDEF)) {
32742 			GET_OP2_UNDEF_CV(offset, BP_VAR_R);
32743 		}
32744 
32745 		if (UNEXPECTED(zobj->handlers->read_property == NULL)) {
32746 fetch_obj_r_no_object:
32747 			zend_wrong_property_read(offset);
32748 			ZVAL_NULL(EX_VAR(opline->result.var));
32749 		} else {
32750 			retval = zobj->handlers->read_property(container, offset, BP_VAR_R, cache_slot, EX_VAR(opline->result.var));
32751 
32752 			if (retval != EX_VAR(opline->result.var)) {
32753 				ZVAL_COPY_DEREF(EX_VAR(opline->result.var), retval);
32754 			} else if (UNEXPECTED(Z_ISREF_P(retval))) {
32755 				zend_unwrap_reference(retval);
32756 			}
32757 		}
32758 	} while (0);
32759 
32760 	zval_ptr_dtor_nogc(free_op2);
32761 
32762 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
32763 }
32764 
32765 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_W_SPEC_UNUSED_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
32766 {
32767 	USE_OPLINE
32768 	zend_free_op free_op1, free_op2;
32769 	zval *property, *container, *result;
32770 
32771 	SAVE_OPLINE();
32772 
32773 	container = &EX(This);
32774 	if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
32775 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
32776 	}
32777 
32778 	property = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
32779 	result = EX_VAR(opline->result.var);
32780 	zend_fetch_property_address(result, container, IS_UNUSED, property, (IS_TMP_VAR|IS_VAR), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_W OPLINE_CC);
32781 	zval_ptr_dtor_nogc(free_op2);
32782 	if (IS_UNUSED == IS_VAR) {
32783 		FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(free_op1, result);
32784 	}
32785 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
32786 }
32787 
32788 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_RW_SPEC_UNUSED_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
32789 {
32790 	USE_OPLINE
32791 	zend_free_op free_op1, free_op2;
32792 	zval *property, *container, *result;
32793 
32794 	SAVE_OPLINE();
32795 	container = &EX(This);
32796 
32797 	if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
32798 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
32799 	}
32800 	property = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
32801 	result = EX_VAR(opline->result.var);
32802 	zend_fetch_property_address(result, container, IS_UNUSED, property, (IS_TMP_VAR|IS_VAR), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_RW OPLINE_CC);
32803 	zval_ptr_dtor_nogc(free_op2);
32804 	if (IS_UNUSED == IS_VAR) {
32805 		FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(free_op1, result);
32806 	}
32807 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
32808 }
32809 
32810 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_IS_SPEC_UNUSED_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
32811 {
32812 	USE_OPLINE
32813 
32814 	zval *container;
32815 	zend_free_op free_op2;
32816 	zval *offset;
32817 	void **cache_slot = NULL;
32818 
32819 	SAVE_OPLINE();
32820 	container = &EX(This);
32821 
32822 	if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
32823 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
32824 	}
32825 
32826 	offset = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
32827 
32828 	if (IS_UNUSED == IS_CONST ||
32829 	    (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
32830 		do {
32831 			if ((IS_UNUSED & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
32832 				container = Z_REFVAL_P(container);
32833 				if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
32834 					break;
32835 				}
32836 			}
32837 			goto fetch_obj_is_no_object;
32838 		} while (0);
32839 	}
32840 
32841 	/* here we are sure we are dealing with an object */
32842 	do {
32843 		zend_object *zobj = Z_OBJ_P(container);
32844 		zval *retval;
32845 
32846 		if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
32847 			cache_slot = CACHE_ADDR(opline->extended_value);
32848 
32849 			if (EXPECTED(zobj->ce == CACHED_PTR_EX(cache_slot))) {
32850 				uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
32851 
32852 				if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
32853 					retval = OBJ_PROP(zobj, prop_offset);
32854 					if (EXPECTED(Z_TYPE_P(retval) != IS_UNDEF)) {
32855 						ZVAL_COPY(EX_VAR(opline->result.var), retval);
32856 						break;
32857 					}
32858 				} else if (EXPECTED(zobj->properties != NULL)) {
32859 					if (!IS_UNKNOWN_DYNAMIC_PROPERTY_OFFSET(prop_offset)) {
32860 						uintptr_t idx = ZEND_DECODE_DYN_PROP_OFFSET(prop_offset);
32861 
32862 						if (EXPECTED(idx < zobj->properties->nNumUsed * sizeof(Bucket))) {
32863 							Bucket *p = (Bucket*)((char*)zobj->properties->arData + idx);
32864 
32865 							if (EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
32866 						        (EXPECTED(p->key == Z_STR_P(offset)) ||
32867 						         (EXPECTED(p->h == ZSTR_H(Z_STR_P(offset))) &&
32868 						          EXPECTED(p->key != NULL) &&
32869 						          EXPECTED(zend_string_equal_content(p->key, Z_STR_P(offset)))))) {
32870 								ZVAL_COPY(EX_VAR(opline->result.var), &p->val);
32871 								break;
32872 							}
32873 						}
32874 						CACHE_PTR_EX(cache_slot + 1, (void*)ZEND_DYNAMIC_PROPERTY_OFFSET);
32875 					}
32876 					retval = zend_hash_find_ex(zobj->properties, Z_STR_P(offset), 1);
32877 					if (EXPECTED(retval)) {
32878 						uintptr_t idx = (char*)retval - (char*)zobj->properties->arData;
32879 						CACHE_PTR_EX(cache_slot + 1, (void*)ZEND_ENCODE_DYN_PROP_OFFSET(idx));
32880 						ZVAL_COPY(EX_VAR(opline->result.var), retval);
32881 						break;
32882 					}
32883 				}
32884 			}
32885 		}
32886 
32887 		if (UNEXPECTED(zobj->handlers->read_property == NULL)) {
32888 fetch_obj_is_no_object:
32889 			ZVAL_NULL(EX_VAR(opline->result.var));
32890 		} else {
32891 
32892 			retval = zobj->handlers->read_property(container, offset, BP_VAR_IS, cache_slot, EX_VAR(opline->result.var));
32893 
32894 			if (retval != EX_VAR(opline->result.var)) {
32895 				ZVAL_COPY(EX_VAR(opline->result.var), retval);
32896 			}
32897 		}
32898 	} while (0);
32899 
32900 	zval_ptr_dtor_nogc(free_op2);
32901 
32902 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
32903 }
32904 
32905 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_FUNC_ARG_SPEC_UNUSED_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
32906 {
32907 	if (UNEXPECTED(ZEND_CALL_INFO(EX(call)) & ZEND_CALL_SEND_ARG_BY_REF)) {
32908 		/* Behave like FETCH_OBJ_W */
32909 		if ((IS_UNUSED & (IS_CONST|IS_TMP_VAR))) {
32910 			ZEND_VM_TAIL_CALL(zend_use_tmp_in_write_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
32911 		}
32912 
32913 		ZEND_VM_TAIL_CALL(ZEND_FETCH_OBJ_W_SPEC_UNUSED_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
32914 	} else {
32915 		ZEND_VM_TAIL_CALL(ZEND_FETCH_OBJ_R_SPEC_UNUSED_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
32916 	}
32917 }
32918 
32919 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_UNSET_SPEC_UNUSED_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
32920 {
32921 	USE_OPLINE
32922 	zend_free_op free_op1, free_op2;
32923 	zval *container, *property, *result;
32924 
32925 	SAVE_OPLINE();
32926 	container = &EX(This);
32927 
32928 	if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
32929 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
32930 	}
32931 
32932 	property = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
32933 	result = EX_VAR(opline->result.var);
32934 	zend_fetch_property_address(result, container, IS_UNUSED, property, (IS_TMP_VAR|IS_VAR), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_UNSET OPLINE_CC);
32935 	zval_ptr_dtor_nogc(free_op2);
32936 	if (IS_UNUSED == IS_VAR) {
32937 		FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(free_op1, result);
32938 	}
32939 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
32940 }
32941 
32942 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMPVAR_OP_DATA_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
32943 {
32944 	USE_OPLINE
32945 	zend_free_op free_op2;
32946 	zval *object, *property, *value, tmp;
32947 
32948 	SAVE_OPLINE();
32949 	object = &EX(This);
32950 
32951 	if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
32952 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
32953 	}
32954 
32955 	property = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
32956 	value = RT_CONSTANT((opline+1), (opline+1)->op1);
32957 
32958 	if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
32959 		if (Z_ISREF_P(object)) {
32960 			object = Z_REFVAL_P(object);
32961 			if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
32962 				goto assign_object;
32963 			}
32964 		}
32965 		if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
32966 
32967 			goto exit_assign_obj;
32968 		}
32969 	}
32970 
32971 assign_object:
32972 	if ((IS_TMP_VAR|IS_VAR) == IS_CONST &&
32973 	    EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(opline->extended_value))) {
32974 		uintptr_t prop_offset = (uintptr_t)CACHED_PTR(opline->extended_value + sizeof(void*));
32975 		zend_object *zobj = Z_OBJ_P(object);
32976 		zval *property_val;
32977 
32978 		if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
32979 			property_val = OBJ_PROP(zobj, prop_offset);
32980 			if (Z_TYPE_P(property_val) != IS_UNDEF) {
32981 fast_assign_obj:
32982 				value = zend_assign_to_variable(property_val, value, IS_CONST);
32983 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
32984 					ZVAL_COPY(EX_VAR(opline->result.var), value);
32985 				}
32986 				goto exit_assign_obj;
32987 			}
32988 		} else {
32989 			if (EXPECTED(zobj->properties != NULL)) {
32990 				if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
32991 					if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
32992 						GC_DELREF(zobj->properties);
32993 					}
32994 					zobj->properties = zend_array_dup(zobj->properties);
32995 				}
32996 				property_val = zend_hash_find_ex(zobj->properties, Z_STR_P(property), 1);
32997 				if (property_val) {
32998 					goto fast_assign_obj;
32999 				}
33000 			}
33001 
33002 			if (!zobj->ce->__set) {
33003 
33004 				if (EXPECTED(zobj->properties == NULL)) {
33005 					rebuild_object_properties(zobj);
33006 				}
33007 				if (IS_CONST == IS_CONST) {
33008 					if (UNEXPECTED(Z_OPT_REFCOUNTED_P(value))) {
33009 						Z_ADDREF_P(value);
33010 					}
33011 				} else if (IS_CONST != IS_TMP_VAR) {
33012 					if (Z_ISREF_P(value)) {
33013 						if (IS_CONST == IS_VAR) {
33014 							zend_reference *ref = Z_REF_P(value);
33015 							if (GC_DELREF(ref) == 0) {
33016 								ZVAL_COPY_VALUE(&tmp, Z_REFVAL_P(value));
33017 								efree_size(ref, sizeof(zend_reference));
33018 								value = &tmp;
33019 							} else {
33020 								value = Z_REFVAL_P(value);
33021 								Z_TRY_ADDREF_P(value);
33022 							}
33023 						} else {
33024 							value = Z_REFVAL_P(value);
33025 							Z_TRY_ADDREF_P(value);
33026 						}
33027 					} else if (IS_CONST == IS_CV) {
33028 						Z_TRY_ADDREF_P(value);
33029 					}
33030 				}
33031 				zend_hash_add_new(zobj->properties, Z_STR_P(property), value);
33032 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
33033 					ZVAL_COPY(EX_VAR(opline->result.var), value);
33034 				}
33035 				goto exit_assign_obj;
33036 			}
33037 		}
33038 	}
33039 
33040 	if (!Z_OBJ_HT_P(object)->write_property) {
33041 		zend_wrong_property_assignment(property OPLINE_CC EXECUTE_DATA_CC);
33042 
33043 		goto exit_assign_obj;
33044 	}
33045 
33046 	if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
33047 		ZVAL_DEREF(value);
33048 	}
33049 
33050 	Z_OBJ_HT_P(object)->write_property(object, property, value, ((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
33051 
33052 	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
33053 		ZVAL_COPY(EX_VAR(opline->result.var), value);
33054 	}
33055 
33056 exit_assign_obj:
33057 	zval_ptr_dtor_nogc(free_op2);
33058 
33059 	/* assign_obj has two opcodes! */
33060 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
33061 }
33062 
33063 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMPVAR_OP_DATA_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
33064 {
33065 	USE_OPLINE
33066 	zend_free_op free_op2, free_op_data;
33067 	zval *object, *property, *value, tmp;
33068 
33069 	SAVE_OPLINE();
33070 	object = &EX(This);
33071 
33072 	if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
33073 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
33074 	}
33075 
33076 	property = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
33077 	value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
33078 
33079 	if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
33080 		if (Z_ISREF_P(object)) {
33081 			object = Z_REFVAL_P(object);
33082 			if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
33083 				goto assign_object;
33084 			}
33085 		}
33086 		if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
33087 			zval_ptr_dtor_nogc(free_op_data);
33088 			goto exit_assign_obj;
33089 		}
33090 	}
33091 
33092 assign_object:
33093 	if ((IS_TMP_VAR|IS_VAR) == IS_CONST &&
33094 	    EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(opline->extended_value))) {
33095 		uintptr_t prop_offset = (uintptr_t)CACHED_PTR(opline->extended_value + sizeof(void*));
33096 		zend_object *zobj = Z_OBJ_P(object);
33097 		zval *property_val;
33098 
33099 		if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
33100 			property_val = OBJ_PROP(zobj, prop_offset);
33101 			if (Z_TYPE_P(property_val) != IS_UNDEF) {
33102 fast_assign_obj:
33103 				value = zend_assign_to_variable(property_val, value, IS_TMP_VAR);
33104 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
33105 					ZVAL_COPY(EX_VAR(opline->result.var), value);
33106 				}
33107 				goto exit_assign_obj;
33108 			}
33109 		} else {
33110 			if (EXPECTED(zobj->properties != NULL)) {
33111 				if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
33112 					if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
33113 						GC_DELREF(zobj->properties);
33114 					}
33115 					zobj->properties = zend_array_dup(zobj->properties);
33116 				}
33117 				property_val = zend_hash_find_ex(zobj->properties, Z_STR_P(property), 1);
33118 				if (property_val) {
33119 					goto fast_assign_obj;
33120 				}
33121 			}
33122 
33123 			if (!zobj->ce->__set) {
33124 
33125 				if (EXPECTED(zobj->properties == NULL)) {
33126 					rebuild_object_properties(zobj);
33127 				}
33128 				if (IS_TMP_VAR == IS_CONST) {
33129 					if (UNEXPECTED(Z_OPT_REFCOUNTED_P(value))) {
33130 						Z_ADDREF_P(value);
33131 					}
33132 				} else if (IS_TMP_VAR != IS_TMP_VAR) {
33133 					if (Z_ISREF_P(value)) {
33134 						if (IS_TMP_VAR == IS_VAR) {
33135 							zend_reference *ref = Z_REF_P(value);
33136 							if (GC_DELREF(ref) == 0) {
33137 								ZVAL_COPY_VALUE(&tmp, Z_REFVAL_P(value));
33138 								efree_size(ref, sizeof(zend_reference));
33139 								value = &tmp;
33140 							} else {
33141 								value = Z_REFVAL_P(value);
33142 								Z_TRY_ADDREF_P(value);
33143 							}
33144 						} else {
33145 							value = Z_REFVAL_P(value);
33146 							Z_TRY_ADDREF_P(value);
33147 						}
33148 					} else if (IS_TMP_VAR == IS_CV) {
33149 						Z_TRY_ADDREF_P(value);
33150 					}
33151 				}
33152 				zend_hash_add_new(zobj->properties, Z_STR_P(property), value);
33153 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
33154 					ZVAL_COPY(EX_VAR(opline->result.var), value);
33155 				}
33156 				goto exit_assign_obj;
33157 			}
33158 		}
33159 	}
33160 
33161 	if (!Z_OBJ_HT_P(object)->write_property) {
33162 		zend_wrong_property_assignment(property OPLINE_CC EXECUTE_DATA_CC);
33163 		zval_ptr_dtor_nogc(free_op_data);
33164 		goto exit_assign_obj;
33165 	}
33166 
33167 	if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
33168 		ZVAL_DEREF(value);
33169 	}
33170 
33171 	Z_OBJ_HT_P(object)->write_property(object, property, value, ((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
33172 
33173 	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
33174 		ZVAL_COPY(EX_VAR(opline->result.var), value);
33175 	}
33176 	zval_ptr_dtor_nogc(free_op_data);
33177 exit_assign_obj:
33178 	zval_ptr_dtor_nogc(free_op2);
33179 
33180 	/* assign_obj has two opcodes! */
33181 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
33182 }
33183 
33184 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMPVAR_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
33185 {
33186 	USE_OPLINE
33187 	zend_free_op free_op2, free_op_data;
33188 	zval *object, *property, *value, tmp;
33189 
33190 	SAVE_OPLINE();
33191 	object = &EX(This);
33192 
33193 	if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
33194 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
33195 	}
33196 
33197 	property = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
33198 	value = _get_zval_ptr_var((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
33199 
33200 	if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
33201 		if (Z_ISREF_P(object)) {
33202 			object = Z_REFVAL_P(object);
33203 			if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
33204 				goto assign_object;
33205 			}
33206 		}
33207 		if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
33208 			zval_ptr_dtor_nogc(free_op_data);
33209 			goto exit_assign_obj;
33210 		}
33211 	}
33212 
33213 assign_object:
33214 	if ((IS_TMP_VAR|IS_VAR) == IS_CONST &&
33215 	    EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(opline->extended_value))) {
33216 		uintptr_t prop_offset = (uintptr_t)CACHED_PTR(opline->extended_value + sizeof(void*));
33217 		zend_object *zobj = Z_OBJ_P(object);
33218 		zval *property_val;
33219 
33220 		if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
33221 			property_val = OBJ_PROP(zobj, prop_offset);
33222 			if (Z_TYPE_P(property_val) != IS_UNDEF) {
33223 fast_assign_obj:
33224 				value = zend_assign_to_variable(property_val, value, IS_VAR);
33225 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
33226 					ZVAL_COPY(EX_VAR(opline->result.var), value);
33227 				}
33228 				goto exit_assign_obj;
33229 			}
33230 		} else {
33231 			if (EXPECTED(zobj->properties != NULL)) {
33232 				if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
33233 					if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
33234 						GC_DELREF(zobj->properties);
33235 					}
33236 					zobj->properties = zend_array_dup(zobj->properties);
33237 				}
33238 				property_val = zend_hash_find_ex(zobj->properties, Z_STR_P(property), 1);
33239 				if (property_val) {
33240 					goto fast_assign_obj;
33241 				}
33242 			}
33243 
33244 			if (!zobj->ce->__set) {
33245 
33246 				if (EXPECTED(zobj->properties == NULL)) {
33247 					rebuild_object_properties(zobj);
33248 				}
33249 				if (IS_VAR == IS_CONST) {
33250 					if (UNEXPECTED(Z_OPT_REFCOUNTED_P(value))) {
33251 						Z_ADDREF_P(value);
33252 					}
33253 				} else if (IS_VAR != IS_TMP_VAR) {
33254 					if (Z_ISREF_P(value)) {
33255 						if (IS_VAR == IS_VAR) {
33256 							zend_reference *ref = Z_REF_P(value);
33257 							if (GC_DELREF(ref) == 0) {
33258 								ZVAL_COPY_VALUE(&tmp, Z_REFVAL_P(value));
33259 								efree_size(ref, sizeof(zend_reference));
33260 								value = &tmp;
33261 							} else {
33262 								value = Z_REFVAL_P(value);
33263 								Z_TRY_ADDREF_P(value);
33264 							}
33265 						} else {
33266 							value = Z_REFVAL_P(value);
33267 							Z_TRY_ADDREF_P(value);
33268 						}
33269 					} else if (IS_VAR == IS_CV) {
33270 						Z_TRY_ADDREF_P(value);
33271 					}
33272 				}
33273 				zend_hash_add_new(zobj->properties, Z_STR_P(property), value);
33274 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
33275 					ZVAL_COPY(EX_VAR(opline->result.var), value);
33276 				}
33277 				goto exit_assign_obj;
33278 			}
33279 		}
33280 	}
33281 
33282 	if (!Z_OBJ_HT_P(object)->write_property) {
33283 		zend_wrong_property_assignment(property OPLINE_CC EXECUTE_DATA_CC);
33284 		zval_ptr_dtor_nogc(free_op_data);
33285 		goto exit_assign_obj;
33286 	}
33287 
33288 	if (IS_VAR == IS_CV || IS_VAR == IS_VAR) {
33289 		ZVAL_DEREF(value);
33290 	}
33291 
33292 	Z_OBJ_HT_P(object)->write_property(object, property, value, ((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
33293 
33294 	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
33295 		ZVAL_COPY(EX_VAR(opline->result.var), value);
33296 	}
33297 	zval_ptr_dtor_nogc(free_op_data);
33298 exit_assign_obj:
33299 	zval_ptr_dtor_nogc(free_op2);
33300 
33301 	/* assign_obj has two opcodes! */
33302 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
33303 }
33304 
33305 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMPVAR_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
33306 {
33307 	USE_OPLINE
33308 	zend_free_op free_op2;
33309 	zval *object, *property, *value, tmp;
33310 
33311 	SAVE_OPLINE();
33312 	object = &EX(This);
33313 
33314 	if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
33315 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
33316 	}
33317 
33318 	property = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
33319 	value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
33320 
33321 	if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
33322 		if (Z_ISREF_P(object)) {
33323 			object = Z_REFVAL_P(object);
33324 			if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
33325 				goto assign_object;
33326 			}
33327 		}
33328 		if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
33329 
33330 			goto exit_assign_obj;
33331 		}
33332 	}
33333 
33334 assign_object:
33335 	if ((IS_TMP_VAR|IS_VAR) == IS_CONST &&
33336 	    EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(opline->extended_value))) {
33337 		uintptr_t prop_offset = (uintptr_t)CACHED_PTR(opline->extended_value + sizeof(void*));
33338 		zend_object *zobj = Z_OBJ_P(object);
33339 		zval *property_val;
33340 
33341 		if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
33342 			property_val = OBJ_PROP(zobj, prop_offset);
33343 			if (Z_TYPE_P(property_val) != IS_UNDEF) {
33344 fast_assign_obj:
33345 				value = zend_assign_to_variable(property_val, value, IS_CV);
33346 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
33347 					ZVAL_COPY(EX_VAR(opline->result.var), value);
33348 				}
33349 				goto exit_assign_obj;
33350 			}
33351 		} else {
33352 			if (EXPECTED(zobj->properties != NULL)) {
33353 				if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
33354 					if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
33355 						GC_DELREF(zobj->properties);
33356 					}
33357 					zobj->properties = zend_array_dup(zobj->properties);
33358 				}
33359 				property_val = zend_hash_find_ex(zobj->properties, Z_STR_P(property), 1);
33360 				if (property_val) {
33361 					goto fast_assign_obj;
33362 				}
33363 			}
33364 
33365 			if (!zobj->ce->__set) {
33366 
33367 				if (EXPECTED(zobj->properties == NULL)) {
33368 					rebuild_object_properties(zobj);
33369 				}
33370 				if (IS_CV == IS_CONST) {
33371 					if (UNEXPECTED(Z_OPT_REFCOUNTED_P(value))) {
33372 						Z_ADDREF_P(value);
33373 					}
33374 				} else if (IS_CV != IS_TMP_VAR) {
33375 					if (Z_ISREF_P(value)) {
33376 						if (IS_CV == IS_VAR) {
33377 							zend_reference *ref = Z_REF_P(value);
33378 							if (GC_DELREF(ref) == 0) {
33379 								ZVAL_COPY_VALUE(&tmp, Z_REFVAL_P(value));
33380 								efree_size(ref, sizeof(zend_reference));
33381 								value = &tmp;
33382 							} else {
33383 								value = Z_REFVAL_P(value);
33384 								Z_TRY_ADDREF_P(value);
33385 							}
33386 						} else {
33387 							value = Z_REFVAL_P(value);
33388 							Z_TRY_ADDREF_P(value);
33389 						}
33390 					} else if (IS_CV == IS_CV) {
33391 						Z_TRY_ADDREF_P(value);
33392 					}
33393 				}
33394 				zend_hash_add_new(zobj->properties, Z_STR_P(property), value);
33395 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
33396 					ZVAL_COPY(EX_VAR(opline->result.var), value);
33397 				}
33398 				goto exit_assign_obj;
33399 			}
33400 		}
33401 	}
33402 
33403 	if (!Z_OBJ_HT_P(object)->write_property) {
33404 		zend_wrong_property_assignment(property OPLINE_CC EXECUTE_DATA_CC);
33405 
33406 		goto exit_assign_obj;
33407 	}
33408 
33409 	if (IS_CV == IS_CV || IS_CV == IS_VAR) {
33410 		ZVAL_DEREF(value);
33411 	}
33412 
33413 	Z_OBJ_HT_P(object)->write_property(object, property, value, ((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
33414 
33415 	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
33416 		ZVAL_COPY(EX_VAR(opline->result.var), value);
33417 	}
33418 
33419 exit_assign_obj:
33420 	zval_ptr_dtor_nogc(free_op2);
33421 
33422 	/* assign_obj has two opcodes! */
33423 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
33424 }
33425 
33426 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ROPE_INIT_SPEC_UNUSED_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
33427 {
33428 	USE_OPLINE
33429 	zend_free_op free_op2;
33430 	zend_string **rope;
33431 	zval *var;
33432 
33433 	/* Compiler allocates the necessary number of zval slots to keep the rope */
33434 	rope = (zend_string**)EX_VAR(opline->result.var);
33435 	if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
33436 		var = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
33437 		rope[0] = Z_STR_P(var);
33438 		if (UNEXPECTED(Z_REFCOUNTED_P(var))) {
33439 			Z_ADDREF_P(var);
33440 		}
33441 	} else {
33442 		var = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
33443 		if (EXPECTED(Z_TYPE_P(var) == IS_STRING)) {
33444 			if ((IS_TMP_VAR|IS_VAR) == IS_CV) {
33445 				rope[0] = zend_string_copy(Z_STR_P(var));
33446 			} else {
33447 				rope[0] = Z_STR_P(var);
33448 			}
33449 		} else {
33450 			SAVE_OPLINE();
33451 			if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(var) == IS_UNDEF)) {
33452 				GET_OP2_UNDEF_CV(var, BP_VAR_R);
33453 			}
33454 			rope[0] = zval_get_string_func(var);
33455 			zval_ptr_dtor_nogc(free_op2);
33456 			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
33457 		}
33458 	}
33459 	ZEND_VM_NEXT_OPCODE();
33460 }
33461 
33462 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_CLASS_SPEC_UNUSED_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
33463 {
33464 	zend_free_op free_op2;
33465 	zval *class_name;
33466 	USE_OPLINE
33467 
33468 	SAVE_OPLINE();
33469 	if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) {
33470 		Z_CE_P(EX_VAR(opline->result.var)) = zend_fetch_class(NULL, opline->op1.num);
33471 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
33472 	} else if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
33473 		zend_class_entry *ce = CACHED_PTR(opline->extended_value);
33474 
33475 		if (UNEXPECTED(ce == NULL)) {
33476 			class_name = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
33477 			ce = zend_fetch_class_by_name(Z_STR_P(class_name), class_name + 1, opline->op1.num);
33478 			CACHE_PTR(opline->extended_value, ce);
33479 		}
33480 		Z_CE_P(EX_VAR(opline->result.var)) = ce;
33481 	} else {
33482 		class_name = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
33483 try_class_name:
33484 		if (Z_TYPE_P(class_name) == IS_OBJECT) {
33485 			Z_CE_P(EX_VAR(opline->result.var)) = Z_OBJCE_P(class_name);
33486 		} else if (Z_TYPE_P(class_name) == IS_STRING) {
33487 			Z_CE_P(EX_VAR(opline->result.var)) = zend_fetch_class(Z_STR_P(class_name), opline->op1.num);
33488 		} else if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV)) && Z_TYPE_P(class_name) == IS_REFERENCE) {
33489 			class_name = Z_REFVAL_P(class_name);
33490 			goto try_class_name;
33491 		} else {
33492 			if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(class_name) == IS_UNDEF)) {
33493 				GET_OP2_UNDEF_CV(class_name, BP_VAR_R);
33494 				if (UNEXPECTED(EG(exception) != NULL)) {
33495 					HANDLE_EXCEPTION();
33496 				}
33497 			}
33498 			zend_throw_error(NULL, "Class name must be a valid object or a string");
33499 		}
33500 	}
33501 
33502 	zval_ptr_dtor_nogc(free_op2);
33503 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
33504 }
33505 
33506 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_UNUSED_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
33507 {
33508 	USE_OPLINE
33509 	zval *function_name;
33510 	zend_free_op free_op1, free_op2;
33511 	zval *object;
33512 	zend_function *fbc;
33513 	zend_class_entry *called_scope;
33514 	zend_object *obj;
33515 	zend_execute_data *call;
33516 	uint32_t call_info;
33517 
33518 	SAVE_OPLINE();
33519 
33520 	object = &EX(This);
33521 
33522 	if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
33523 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
33524 	}
33525 
33526 	if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
33527 		function_name = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
33528 	}
33529 
33530 	if ((IS_TMP_VAR|IS_VAR) != IS_CONST &&
33531 	    UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) {
33532 		do {
33533 			if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV)) && Z_ISREF_P(function_name)) {
33534 				function_name = Z_REFVAL_P(function_name);
33535 				if (EXPECTED(Z_TYPE_P(function_name) == IS_STRING)) {
33536 					break;
33537 				}
33538 			} else if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
33539 				GET_OP2_UNDEF_CV(function_name, BP_VAR_R);
33540 				if (UNEXPECTED(EG(exception) != NULL)) {
33541 
33542 					HANDLE_EXCEPTION();
33543 				}
33544 			}
33545 			zend_throw_error(NULL, "Method name must be a string");
33546 			zval_ptr_dtor_nogc(free_op2);
33547 
33548 			HANDLE_EXCEPTION();
33549 		} while (0);
33550 	}
33551 
33552 	if (IS_UNUSED != IS_UNUSED) {
33553 		do {
33554 			if (IS_UNUSED == IS_CONST || UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
33555 				if ((IS_UNUSED & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(object))) {
33556 					object = Z_REFVAL_P(object);
33557 					if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
33558 						break;
33559 					}
33560 				}
33561 				if (IS_UNUSED == IS_CV && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
33562 					object = GET_OP1_UNDEF_CV(object, BP_VAR_R);
33563 					if (UNEXPECTED(EG(exception) != NULL)) {
33564 						if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
33565 							zval_ptr_dtor_nogc(free_op2);
33566 						}
33567 						HANDLE_EXCEPTION();
33568 					}
33569 				}
33570 				if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
33571 					function_name = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
33572 				}
33573 				zend_invalid_method_call(object, function_name);
33574 				zval_ptr_dtor_nogc(free_op2);
33575 
33576 				HANDLE_EXCEPTION();
33577 			}
33578 		} while (0);
33579 	}
33580 
33581 	obj = Z_OBJ_P(object);
33582 	called_scope = obj->ce;
33583 
33584 	if ((IS_TMP_VAR|IS_VAR) == IS_CONST &&
33585 	    EXPECTED(CACHED_PTR(opline->result.num) == called_scope)) {
33586 	    fbc = CACHED_PTR(opline->result.num + sizeof(void*));
33587 	} else {
33588 	    zend_object *orig_obj = obj;
33589 
33590 		if (UNEXPECTED(obj->handlers->get_method == NULL)) {
33591 			zend_throw_error(NULL, "Object does not support method calls");
33592 			zval_ptr_dtor_nogc(free_op2);
33593 
33594 			HANDLE_EXCEPTION();
33595 		}
33596 
33597 		if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
33598 			function_name = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
33599 		}
33600 
33601 		/* First, locate the function. */
33602 		fbc = obj->handlers->get_method(&obj, Z_STR_P(function_name), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (RT_CONSTANT(opline, opline->op2) + 1) : NULL));
33603 		if (UNEXPECTED(fbc == NULL)) {
33604 			if (EXPECTED(!EG(exception))) {
33605 				zend_undefined_method(obj->ce, Z_STR_P(function_name));
33606 			}
33607 			zval_ptr_dtor_nogc(free_op2);
33608 
33609 			HANDLE_EXCEPTION();
33610 		}
33611 		if ((IS_TMP_VAR|IS_VAR) == IS_CONST &&
33612 		    EXPECTED(fbc->type <= ZEND_USER_FUNCTION) &&
33613 		    EXPECTED(!(fbc->common.fn_flags & (ZEND_ACC_CALL_VIA_TRAMPOLINE|ZEND_ACC_NEVER_CACHE))) &&
33614 		    EXPECTED(obj == orig_obj)) {
33615 			CACHE_POLYMORPHIC_PTR(opline->result.num, called_scope, fbc);
33616 		}
33617 		if ((IS_UNUSED & (IS_VAR|IS_TMP_VAR)) && UNEXPECTED(obj != orig_obj)) {
33618 			/* Reset "object" to trigger reference counting */
33619 			object = NULL;
33620 		}
33621 		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!fbc->op_array.run_time_cache)) {
33622 			init_func_run_time_cache(&fbc->op_array);
33623 		}
33624 	}
33625 
33626 	if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
33627 		zval_ptr_dtor_nogc(free_op2);
33628 	}
33629 
33630 	call_info = ZEND_CALL_NESTED_FUNCTION;
33631 	if (UNEXPECTED((fbc->common.fn_flags & ZEND_ACC_STATIC) != 0)) {
33632 		obj = NULL;
33633 
33634 		if ((IS_UNUSED & (IS_VAR|IS_TMP_VAR)) && UNEXPECTED(EG(exception))) {
33635 			HANDLE_EXCEPTION();
33636 		}
33637 	} else if (IS_UNUSED & (IS_VAR|IS_TMP_VAR|IS_CV)) {
33638 		/* CV may be changed indirectly (e.g. when it's a reference) */
33639 		call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_RELEASE_THIS;
33640 		if (IS_UNUSED == IS_CV) {
33641 			GC_ADDREF(obj); /* For $this pointer */
33642 		} else if (free_op1 != object) {
33643 			GC_ADDREF(obj); /* For $this pointer */
33644 
33645 		}
33646 	}
33647 
33648 	call = zend_vm_stack_push_call_frame(call_info,
33649 		fbc, opline->extended_value, called_scope, obj);
33650 	call->prev_execute_data = EX(call);
33651 	EX(call) = call;
33652 
33653 	ZEND_VM_NEXT_OPCODE();
33654 }
33655 
33656 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_UNUSED_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
33657 {
33658 	USE_OPLINE
33659 	zval *function_name;
33660 	zend_class_entry *ce;
33661 	zend_object *object;
33662 	zend_function *fbc;
33663 	zend_execute_data *call;
33664 
33665 	SAVE_OPLINE();
33666 
33667 	if (IS_UNUSED == IS_CONST) {
33668 		/* no function found. try a static method in class */
33669 		ce = CACHED_PTR(opline->result.num);
33670 		if (UNEXPECTED(ce == NULL)) {
33671 			ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), RT_CONSTANT(opline, opline->op1) + 1, ZEND_FETCH_CLASS_DEFAULT |  ZEND_FETCH_CLASS_EXCEPTION);
33672 			if (UNEXPECTED(ce == NULL)) {
33673 				ZEND_ASSERT(EG(exception));
33674 				zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
33675 				HANDLE_EXCEPTION();
33676 			}
33677 			if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
33678 				CACHE_PTR(opline->result.num, ce);
33679 			}
33680 		}
33681 	} else if (IS_UNUSED == IS_UNUSED) {
33682 		ce = zend_fetch_class(NULL, opline->op1.num);
33683 		if (UNEXPECTED(ce == NULL)) {
33684 			ZEND_ASSERT(EG(exception));
33685 			zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
33686 			HANDLE_EXCEPTION();
33687 		}
33688 	} else {
33689 		ce = Z_CE_P(EX_VAR(opline->op1.var));
33690 	}
33691 
33692 	if (IS_UNUSED == IS_CONST &&
33693 	    (IS_TMP_VAR|IS_VAR) == IS_CONST &&
33694 	    EXPECTED((fbc = CACHED_PTR(opline->result.num + sizeof(void*))) != NULL)) {
33695 		/* nothing to do */
33696 	} else if (IS_UNUSED != IS_CONST &&
33697 	           (IS_TMP_VAR|IS_VAR) == IS_CONST &&
33698 	           EXPECTED(CACHED_PTR(opline->result.num) == ce)) {
33699 		fbc = CACHED_PTR(opline->result.num + sizeof(void*));
33700 	} else if ((IS_TMP_VAR|IS_VAR) != IS_UNUSED) {
33701 		zend_free_op free_op2;
33702 
33703 		function_name = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
33704 		if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
33705 			if (UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) {
33706 				do {
33707 					if ((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV) && Z_ISREF_P(function_name)) {
33708 						function_name = Z_REFVAL_P(function_name);
33709 						if (EXPECTED(Z_TYPE_P(function_name) == IS_STRING)) {
33710 							break;
33711 						}
33712 					} else if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
33713 						GET_OP2_UNDEF_CV(function_name, BP_VAR_R);
33714 						if (UNEXPECTED(EG(exception) != NULL)) {
33715 							HANDLE_EXCEPTION();
33716 						}
33717 					}
33718 					zend_throw_error(NULL, "Function name must be a string");
33719 					zval_ptr_dtor_nogc(free_op2);
33720 					HANDLE_EXCEPTION();
33721 				} while (0);
33722 			}
33723 		}
33724 
33725 		if (ce->get_static_method) {
33726 			fbc = ce->get_static_method(ce, Z_STR_P(function_name));
33727 		} else {
33728 			fbc = zend_std_get_static_method(ce, Z_STR_P(function_name), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (RT_CONSTANT(opline, opline->op2) + 1) : NULL));
33729 		}
33730 		if (UNEXPECTED(fbc == NULL)) {
33731 			if (EXPECTED(!EG(exception))) {
33732 				zend_undefined_method(ce, Z_STR_P(function_name));
33733 			}
33734 			zval_ptr_dtor_nogc(free_op2);
33735 			HANDLE_EXCEPTION();
33736 		}
33737 		if ((IS_TMP_VAR|IS_VAR) == IS_CONST &&
33738 		    EXPECTED(fbc->type <= ZEND_USER_FUNCTION) &&
33739 		    EXPECTED(!(fbc->common.fn_flags & (ZEND_ACC_CALL_VIA_TRAMPOLINE|ZEND_ACC_NEVER_CACHE)))) {
33740 			CACHE_POLYMORPHIC_PTR(opline->result.num, ce, fbc);
33741 		}
33742 		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!fbc->op_array.run_time_cache)) {
33743 			init_func_run_time_cache(&fbc->op_array);
33744 		}
33745 		if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
33746 			zval_ptr_dtor_nogc(free_op2);
33747 		}
33748 	} else {
33749 		if (UNEXPECTED(ce->constructor == NULL)) {
33750 			zend_throw_error(NULL, "Cannot call constructor");
33751 			HANDLE_EXCEPTION();
33752 		}
33753 		if (Z_TYPE(EX(This)) == IS_OBJECT && Z_OBJ(EX(This))->ce != ce->constructor->common.scope && (ce->constructor->common.fn_flags & ZEND_ACC_PRIVATE)) {
33754 			zend_throw_error(NULL, "Cannot call private %s::__construct()", ZSTR_VAL(ce->name));
33755 			HANDLE_EXCEPTION();
33756 		}
33757 		fbc = ce->constructor;
33758 		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!fbc->op_array.run_time_cache)) {
33759 			init_func_run_time_cache(&fbc->op_array);
33760 		}
33761 	}
33762 
33763 	object = NULL;
33764 	if (!(fbc->common.fn_flags & ZEND_ACC_STATIC)) {
33765 		if (Z_TYPE(EX(This)) == IS_OBJECT && instanceof_function(Z_OBJCE(EX(This)), ce)) {
33766 			object = Z_OBJ(EX(This));
33767 			ce = object->ce;
33768 		} else {
33769 			zend_non_static_method_call(fbc);
33770 			if (UNEXPECTED(EG(exception) != NULL)) {
33771 				HANDLE_EXCEPTION();
33772 			}
33773 		}
33774 	}
33775 
33776 	if (IS_UNUSED == IS_UNUSED) {
33777 		/* previous opcode is ZEND_FETCH_CLASS */
33778 		if ((opline->op1.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_PARENT ||
33779 		    (opline->op1.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_SELF) {
33780 			if (Z_TYPE(EX(This)) == IS_OBJECT) {
33781 				ce = Z_OBJCE(EX(This));
33782 			} else {
33783 				ce = Z_CE(EX(This));
33784 			}
33785 		}
33786 	}
33787 
33788 	call = zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_FUNCTION,
33789 		fbc, opline->extended_value, ce, object);
33790 	call->prev_execute_data = EX(call);
33791 	EX(call) = call;
33792 
33793 	ZEND_VM_NEXT_OPCODE();
33794 }
33795 
33796 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_UNSET_OBJ_SPEC_UNUSED_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
33797 {
33798 	USE_OPLINE
33799 	zend_free_op free_op2;
33800 	zval *container;
33801 	zval *offset;
33802 
33803 	SAVE_OPLINE();
33804 	container = &EX(This);
33805 	if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
33806 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
33807 	}
33808 	offset = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
33809 
33810 	do {
33811 		if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) {
33812 			if (Z_ISREF_P(container)) {
33813 				container = Z_REFVAL_P(container);
33814 				if (Z_TYPE_P(container) != IS_OBJECT) {
33815 					break;
33816 				}
33817 			} else {
33818 				break;
33819 			}
33820 		}
33821 		if (Z_OBJ_HT_P(container)->unset_property) {
33822 			Z_OBJ_HT_P(container)->unset_property(container, offset, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL));
33823 		} else {
33824 			zend_wrong_property_unset(offset);
33825 		}
33826 	} while (0);
33827 
33828 	zval_ptr_dtor_nogc(free_op2);
33829 
33830 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
33831 }
33832 
33833 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_UNUSED_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
33834 {
33835 	USE_OPLINE
33836 	zend_free_op free_op2;
33837 	zval *container;
33838 	int result;
33839 	zval *offset;
33840 
33841 	SAVE_OPLINE();
33842 	container = &EX(This);
33843 
33844 	if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
33845 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
33846 	}
33847 
33848 	offset = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
33849 
33850 	if (IS_UNUSED == IS_CONST ||
33851 	    (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
33852 		if ((IS_UNUSED & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
33853 			container = Z_REFVAL_P(container);
33854 			if (UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) {
33855 				goto isset_no_object;
33856 			}
33857 		} else {
33858 			goto isset_no_object;
33859 		}
33860 	}
33861 	if (UNEXPECTED(!Z_OBJ_HT_P(container)->has_property)) {
33862 		zend_wrong_property_check(offset);
33863 isset_no_object:
33864 		result = (opline->extended_value & ZEND_ISEMPTY);
33865 	} else {
33866 		result =
33867 			(opline->extended_value & ZEND_ISEMPTY) ^
33868 			Z_OBJ_HT_P(container)->has_property(container, offset, (opline->extended_value & ZEND_ISEMPTY), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_ISEMPTY) : NULL));
33869 	}
33870 
33871 	zval_ptr_dtor_nogc(free_op2);
33872 
33873 	ZEND_VM_SMART_BRANCH(result, 1);
33874 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
33875 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
33876 }
33877 
33878 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_YIELD_SPEC_UNUSED_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
33879 {
33880 	USE_OPLINE
33881 
33882 	zend_generator *generator = zend_get_running_generator(EXECUTE_DATA_C);
33883 
33884 	SAVE_OPLINE();
33885 	if (UNEXPECTED(generator->flags & ZEND_GENERATOR_FORCED_CLOSE)) {
33886 		ZEND_VM_TAIL_CALL(zend_yield_in_closed_generator_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
33887 	}
33888 
33889 	/* Destroy the previously yielded value */
33890 	zval_ptr_dtor(&generator->value);
33891 
33892 	/* Destroy the previously yielded key */
33893 	zval_ptr_dtor(&generator->key);
33894 
33895 	/* Set the new yielded value */
33896 	if (IS_UNUSED != IS_UNUSED) {
33897 
33898 
33899 		if (UNEXPECTED(EX(func)->op_array.fn_flags & ZEND_ACC_RETURN_REFERENCE)) {
33900 			/* Constants and temporary variables aren't yieldable by reference,
33901 			 * but we still allow them with a notice. */
33902 			if (IS_UNUSED & (IS_CONST|IS_TMP_VAR)) {
33903 				zval *value;
33904 
33905 				zend_error(E_NOTICE, "Only variable references should be yielded by reference");
33906 
33907 				value = NULL;
33908 				ZVAL_COPY_VALUE(&generator->value, value);
33909 				if (IS_UNUSED == IS_CONST) {
33910 					if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
33911 						Z_ADDREF(generator->value);
33912 					}
33913 				}
33914 			} else {
33915 				zval *value_ptr = NULL;
33916 
33917 				/* If a function call result is yielded and the function did
33918 				 * not return by reference we throw a notice. */
33919 				if (IS_UNUSED == IS_VAR &&
33920 				    (value_ptr == &EG(uninitialized_zval) ||
33921 				     (opline->extended_value == ZEND_RETURNS_FUNCTION &&
33922 				      !Z_ISREF_P(value_ptr)))) {
33923 					zend_error(E_NOTICE, "Only variable references should be yielded by reference");
33924 					ZVAL_COPY(&generator->value, value_ptr);
33925 				} else {
33926 					if (Z_ISREF_P(value_ptr)) {
33927 						Z_ADDREF_P(value_ptr);
33928 					} else {
33929 						ZVAL_MAKE_REF_EX(value_ptr, 2);
33930 					}
33931 					ZVAL_REF(&generator->value, Z_REF_P(value_ptr));
33932 				}
33933 
33934 			}
33935 		} else {
33936 			zval *value = NULL;
33937 
33938 			/* Consts, temporary variables and references need copying */
33939 			if (IS_UNUSED == IS_CONST) {
33940 				ZVAL_COPY_VALUE(&generator->value, value);
33941 				if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
33942 					Z_ADDREF(generator->value);
33943 				}
33944 			} else if (IS_UNUSED == IS_TMP_VAR) {
33945 				ZVAL_COPY_VALUE(&generator->value, value);
33946             } else if ((IS_UNUSED & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
33947 				ZVAL_COPY(&generator->value, Z_REFVAL_P(value));
33948 
33949 			} else {
33950 				ZVAL_COPY_VALUE(&generator->value, value);
33951 				if (IS_UNUSED == IS_CV) {
33952 					if (Z_OPT_REFCOUNTED_P(value)) Z_ADDREF_P(value);
33953 				}
33954 			}
33955 		}
33956 	} else {
33957 		/* If no value was specified yield null */
33958 		ZVAL_NULL(&generator->value);
33959 	}
33960 
33961 	/* Set the new yielded key */
33962 	if (IS_TMP_VAR != IS_UNUSED) {
33963 		zend_free_op free_op2;
33964 		zval *key = _get_zval_ptr_tmp(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
33965 
33966 		/* Consts, temporary variables and references need copying */
33967 		if (IS_TMP_VAR == IS_CONST) {
33968 			ZVAL_COPY_VALUE(&generator->key, key);
33969 			if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->key))) {
33970 				Z_ADDREF(generator->key);
33971 			}
33972 		} else if (IS_TMP_VAR == IS_TMP_VAR) {
33973 			ZVAL_COPY_VALUE(&generator->key, key);
33974 		} else if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && Z_ISREF_P(key)) {
33975 			ZVAL_COPY(&generator->key, Z_REFVAL_P(key));
33976 
33977 		} else {
33978 			ZVAL_COPY_VALUE(&generator->key, key);
33979 			if (IS_TMP_VAR == IS_CV) {
33980 				if (Z_OPT_REFCOUNTED_P(key)) Z_ADDREF_P(key);
33981 			}
33982 		}
33983 
33984 		if (Z_TYPE(generator->key) == IS_LONG
33985 		    && Z_LVAL(generator->key) > generator->largest_used_integer_key
33986 		) {
33987 			generator->largest_used_integer_key = Z_LVAL(generator->key);
33988 		}
33989 	} else {
33990 		/* If no key was specified we use auto-increment keys */
33991 		generator->largest_used_integer_key++;
33992 		ZVAL_LONG(&generator->key, generator->largest_used_integer_key);
33993 	}
33994 
33995 	if (RETURN_VALUE_USED(opline)) {
33996 		/* If the return value of yield is used set the send
33997 		 * target and initialize it to NULL */
33998 		generator->send_target = EX_VAR(opline->result.var);
33999 		ZVAL_NULL(generator->send_target);
34000 	} else {
34001 		generator->send_target = NULL;
34002 	}
34003 
34004 	/* We increment to the next op, so we are at the correct position when the
34005 	 * generator is resumed. */
34006 	ZEND_VM_INC_OPCODE();
34007 
34008 	/* The GOTO VM uses a local opline variable. We need to set the opline
34009 	 * variable in execute_data so we don't resume at an old position. */
34010 	SAVE_OPLINE();
34011 
34012 	ZEND_VM_RETURN();
34013 }
34014 
34015 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_YIELD_SPEC_UNUSED_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
34016 {
34017 	USE_OPLINE
34018 
34019 	zend_generator *generator = zend_get_running_generator(EXECUTE_DATA_C);
34020 
34021 	SAVE_OPLINE();
34022 	if (UNEXPECTED(generator->flags & ZEND_GENERATOR_FORCED_CLOSE)) {
34023 		ZEND_VM_TAIL_CALL(zend_yield_in_closed_generator_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
34024 	}
34025 
34026 	/* Destroy the previously yielded value */
34027 	zval_ptr_dtor(&generator->value);
34028 
34029 	/* Destroy the previously yielded key */
34030 	zval_ptr_dtor(&generator->key);
34031 
34032 	/* Set the new yielded value */
34033 	if (IS_UNUSED != IS_UNUSED) {
34034 
34035 
34036 		if (UNEXPECTED(EX(func)->op_array.fn_flags & ZEND_ACC_RETURN_REFERENCE)) {
34037 			/* Constants and temporary variables aren't yieldable by reference,
34038 			 * but we still allow them with a notice. */
34039 			if (IS_UNUSED & (IS_CONST|IS_TMP_VAR)) {
34040 				zval *value;
34041 
34042 				zend_error(E_NOTICE, "Only variable references should be yielded by reference");
34043 
34044 				value = NULL;
34045 				ZVAL_COPY_VALUE(&generator->value, value);
34046 				if (IS_UNUSED == IS_CONST) {
34047 					if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
34048 						Z_ADDREF(generator->value);
34049 					}
34050 				}
34051 			} else {
34052 				zval *value_ptr = NULL;
34053 
34054 				/* If a function call result is yielded and the function did
34055 				 * not return by reference we throw a notice. */
34056 				if (IS_UNUSED == IS_VAR &&
34057 				    (value_ptr == &EG(uninitialized_zval) ||
34058 				     (opline->extended_value == ZEND_RETURNS_FUNCTION &&
34059 				      !Z_ISREF_P(value_ptr)))) {
34060 					zend_error(E_NOTICE, "Only variable references should be yielded by reference");
34061 					ZVAL_COPY(&generator->value, value_ptr);
34062 				} else {
34063 					if (Z_ISREF_P(value_ptr)) {
34064 						Z_ADDREF_P(value_ptr);
34065 					} else {
34066 						ZVAL_MAKE_REF_EX(value_ptr, 2);
34067 					}
34068 					ZVAL_REF(&generator->value, Z_REF_P(value_ptr));
34069 				}
34070 
34071 			}
34072 		} else {
34073 			zval *value = NULL;
34074 
34075 			/* Consts, temporary variables and references need copying */
34076 			if (IS_UNUSED == IS_CONST) {
34077 				ZVAL_COPY_VALUE(&generator->value, value);
34078 				if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
34079 					Z_ADDREF(generator->value);
34080 				}
34081 			} else if (IS_UNUSED == IS_TMP_VAR) {
34082 				ZVAL_COPY_VALUE(&generator->value, value);
34083             } else if ((IS_UNUSED & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
34084 				ZVAL_COPY(&generator->value, Z_REFVAL_P(value));
34085 
34086 			} else {
34087 				ZVAL_COPY_VALUE(&generator->value, value);
34088 				if (IS_UNUSED == IS_CV) {
34089 					if (Z_OPT_REFCOUNTED_P(value)) Z_ADDREF_P(value);
34090 				}
34091 			}
34092 		}
34093 	} else {
34094 		/* If no value was specified yield null */
34095 		ZVAL_NULL(&generator->value);
34096 	}
34097 
34098 	/* Set the new yielded key */
34099 	if (IS_VAR != IS_UNUSED) {
34100 		zend_free_op free_op2;
34101 		zval *key = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
34102 
34103 		/* Consts, temporary variables and references need copying */
34104 		if (IS_VAR == IS_CONST) {
34105 			ZVAL_COPY_VALUE(&generator->key, key);
34106 			if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->key))) {
34107 				Z_ADDREF(generator->key);
34108 			}
34109 		} else if (IS_VAR == IS_TMP_VAR) {
34110 			ZVAL_COPY_VALUE(&generator->key, key);
34111 		} else if ((IS_VAR & (IS_VAR|IS_CV)) && Z_ISREF_P(key)) {
34112 			ZVAL_COPY(&generator->key, Z_REFVAL_P(key));
34113 			zval_ptr_dtor_nogc(free_op2);
34114 		} else {
34115 			ZVAL_COPY_VALUE(&generator->key, key);
34116 			if (IS_VAR == IS_CV) {
34117 				if (Z_OPT_REFCOUNTED_P(key)) Z_ADDREF_P(key);
34118 			}
34119 		}
34120 
34121 		if (Z_TYPE(generator->key) == IS_LONG
34122 		    && Z_LVAL(generator->key) > generator->largest_used_integer_key
34123 		) {
34124 			generator->largest_used_integer_key = Z_LVAL(generator->key);
34125 		}
34126 	} else {
34127 		/* If no key was specified we use auto-increment keys */
34128 		generator->largest_used_integer_key++;
34129 		ZVAL_LONG(&generator->key, generator->largest_used_integer_key);
34130 	}
34131 
34132 	if (RETURN_VALUE_USED(opline)) {
34133 		/* If the return value of yield is used set the send
34134 		 * target and initialize it to NULL */
34135 		generator->send_target = EX_VAR(opline->result.var);
34136 		ZVAL_NULL(generator->send_target);
34137 	} else {
34138 		generator->send_target = NULL;
34139 	}
34140 
34141 	/* We increment to the next op, so we are at the correct position when the
34142 	 * generator is resumed. */
34143 	ZEND_VM_INC_OPCODE();
34144 
34145 	/* The GOTO VM uses a local opline variable. We need to set the opline
34146 	 * variable in execute_data so we don't resume at an old position. */
34147 	SAVE_OPLINE();
34148 
34149 	ZEND_VM_RETURN();
34150 }
34151 
34152 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_CLASS_SPEC_UNUSED_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
34153 {
34154 
34155 	zval *class_name;
34156 	USE_OPLINE
34157 
34158 	SAVE_OPLINE();
34159 	if (IS_UNUSED == IS_UNUSED) {
34160 		Z_CE_P(EX_VAR(opline->result.var)) = zend_fetch_class(NULL, opline->op1.num);
34161 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
34162 	} else if (IS_UNUSED == IS_CONST) {
34163 		zend_class_entry *ce = CACHED_PTR(opline->extended_value);
34164 
34165 		if (UNEXPECTED(ce == NULL)) {
34166 			class_name = NULL;
34167 			ce = zend_fetch_class_by_name(Z_STR_P(class_name), class_name + 1, opline->op1.num);
34168 			CACHE_PTR(opline->extended_value, ce);
34169 		}
34170 		Z_CE_P(EX_VAR(opline->result.var)) = ce;
34171 	} else {
34172 		class_name = NULL;
34173 try_class_name:
34174 		if (Z_TYPE_P(class_name) == IS_OBJECT) {
34175 			Z_CE_P(EX_VAR(opline->result.var)) = Z_OBJCE_P(class_name);
34176 		} else if (Z_TYPE_P(class_name) == IS_STRING) {
34177 			Z_CE_P(EX_VAR(opline->result.var)) = zend_fetch_class(Z_STR_P(class_name), opline->op1.num);
34178 		} else if ((IS_UNUSED & (IS_VAR|IS_CV)) && Z_TYPE_P(class_name) == IS_REFERENCE) {
34179 			class_name = Z_REFVAL_P(class_name);
34180 			goto try_class_name;
34181 		} else {
34182 			if (IS_UNUSED == IS_CV && UNEXPECTED(Z_TYPE_P(class_name) == IS_UNDEF)) {
34183 				GET_OP2_UNDEF_CV(class_name, BP_VAR_R);
34184 				if (UNEXPECTED(EG(exception) != NULL)) {
34185 					HANDLE_EXCEPTION();
34186 				}
34187 			}
34188 			zend_throw_error(NULL, "Class name must be a valid object or a string");
34189 		}
34190 	}
34191 
34192 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
34193 }
34194 
34195 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_UNUSED_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
34196 {
34197 	USE_OPLINE
34198 	zval *function_name;
34199 	zend_class_entry *ce;
34200 	zend_object *object;
34201 	zend_function *fbc;
34202 	zend_execute_data *call;
34203 
34204 	SAVE_OPLINE();
34205 
34206 	if (IS_UNUSED == IS_CONST) {
34207 		/* no function found. try a static method in class */
34208 		ce = CACHED_PTR(opline->result.num);
34209 		if (UNEXPECTED(ce == NULL)) {
34210 			ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), RT_CONSTANT(opline, opline->op1) + 1, ZEND_FETCH_CLASS_DEFAULT |  ZEND_FETCH_CLASS_EXCEPTION);
34211 			if (UNEXPECTED(ce == NULL)) {
34212 				ZEND_ASSERT(EG(exception));
34213 
34214 				HANDLE_EXCEPTION();
34215 			}
34216 			if (IS_UNUSED != IS_CONST) {
34217 				CACHE_PTR(opline->result.num, ce);
34218 			}
34219 		}
34220 	} else if (IS_UNUSED == IS_UNUSED) {
34221 		ce = zend_fetch_class(NULL, opline->op1.num);
34222 		if (UNEXPECTED(ce == NULL)) {
34223 			ZEND_ASSERT(EG(exception));
34224 
34225 			HANDLE_EXCEPTION();
34226 		}
34227 	} else {
34228 		ce = Z_CE_P(EX_VAR(opline->op1.var));
34229 	}
34230 
34231 	if (IS_UNUSED == IS_CONST &&
34232 	    IS_UNUSED == IS_CONST &&
34233 	    EXPECTED((fbc = CACHED_PTR(opline->result.num + sizeof(void*))) != NULL)) {
34234 		/* nothing to do */
34235 	} else if (IS_UNUSED != IS_CONST &&
34236 	           IS_UNUSED == IS_CONST &&
34237 	           EXPECTED(CACHED_PTR(opline->result.num) == ce)) {
34238 		fbc = CACHED_PTR(opline->result.num + sizeof(void*));
34239 	} else if (IS_UNUSED != IS_UNUSED) {
34240 
34241 
34242 		function_name = NULL;
34243 		if (IS_UNUSED != IS_CONST) {
34244 			if (UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) {
34245 				do {
34246 					if (IS_UNUSED & (IS_VAR|IS_CV) && Z_ISREF_P(function_name)) {
34247 						function_name = Z_REFVAL_P(function_name);
34248 						if (EXPECTED(Z_TYPE_P(function_name) == IS_STRING)) {
34249 							break;
34250 						}
34251 					} else if (IS_UNUSED == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
34252 						GET_OP2_UNDEF_CV(function_name, BP_VAR_R);
34253 						if (UNEXPECTED(EG(exception) != NULL)) {
34254 							HANDLE_EXCEPTION();
34255 						}
34256 					}
34257 					zend_throw_error(NULL, "Function name must be a string");
34258 
34259 					HANDLE_EXCEPTION();
34260 				} while (0);
34261 			}
34262 		}
34263 
34264 		if (ce->get_static_method) {
34265 			fbc = ce->get_static_method(ce, Z_STR_P(function_name));
34266 		} else {
34267 			fbc = zend_std_get_static_method(ce, Z_STR_P(function_name), ((IS_UNUSED == IS_CONST) ? (RT_CONSTANT(opline, opline->op2) + 1) : NULL));
34268 		}
34269 		if (UNEXPECTED(fbc == NULL)) {
34270 			if (EXPECTED(!EG(exception))) {
34271 				zend_undefined_method(ce, Z_STR_P(function_name));
34272 			}
34273 
34274 			HANDLE_EXCEPTION();
34275 		}
34276 		if (IS_UNUSED == IS_CONST &&
34277 		    EXPECTED(fbc->type <= ZEND_USER_FUNCTION) &&
34278 		    EXPECTED(!(fbc->common.fn_flags & (ZEND_ACC_CALL_VIA_TRAMPOLINE|ZEND_ACC_NEVER_CACHE)))) {
34279 			CACHE_POLYMORPHIC_PTR(opline->result.num, ce, fbc);
34280 		}
34281 		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!fbc->op_array.run_time_cache)) {
34282 			init_func_run_time_cache(&fbc->op_array);
34283 		}
34284 		if (IS_UNUSED != IS_CONST) {
34285 
34286 		}
34287 	} else {
34288 		if (UNEXPECTED(ce->constructor == NULL)) {
34289 			zend_throw_error(NULL, "Cannot call constructor");
34290 			HANDLE_EXCEPTION();
34291 		}
34292 		if (Z_TYPE(EX(This)) == IS_OBJECT && Z_OBJ(EX(This))->ce != ce->constructor->common.scope && (ce->constructor->common.fn_flags & ZEND_ACC_PRIVATE)) {
34293 			zend_throw_error(NULL, "Cannot call private %s::__construct()", ZSTR_VAL(ce->name));
34294 			HANDLE_EXCEPTION();
34295 		}
34296 		fbc = ce->constructor;
34297 		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!fbc->op_array.run_time_cache)) {
34298 			init_func_run_time_cache(&fbc->op_array);
34299 		}
34300 	}
34301 
34302 	object = NULL;
34303 	if (!(fbc->common.fn_flags & ZEND_ACC_STATIC)) {
34304 		if (Z_TYPE(EX(This)) == IS_OBJECT && instanceof_function(Z_OBJCE(EX(This)), ce)) {
34305 			object = Z_OBJ(EX(This));
34306 			ce = object->ce;
34307 		} else {
34308 			zend_non_static_method_call(fbc);
34309 			if (UNEXPECTED(EG(exception) != NULL)) {
34310 				HANDLE_EXCEPTION();
34311 			}
34312 		}
34313 	}
34314 
34315 	if (IS_UNUSED == IS_UNUSED) {
34316 		/* previous opcode is ZEND_FETCH_CLASS */
34317 		if ((opline->op1.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_PARENT ||
34318 		    (opline->op1.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_SELF) {
34319 			if (Z_TYPE(EX(This)) == IS_OBJECT) {
34320 				ce = Z_OBJCE(EX(This));
34321 			} else {
34322 				ce = Z_CE(EX(This));
34323 			}
34324 		}
34325 	}
34326 
34327 	call = zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_FUNCTION,
34328 		fbc, opline->extended_value, ce, object);
34329 	call->prev_execute_data = EX(call);
34330 	EX(call) = call;
34331 
34332 	ZEND_VM_NEXT_OPCODE();
34333 }
34334 
34335 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_VERIFY_RETURN_TYPE_SPEC_UNUSED_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
34336 {
34337 	USE_OPLINE
34338 
34339 	SAVE_OPLINE();
34340 	if (IS_UNUSED == IS_UNUSED) {
34341 		zend_verify_missing_return_type(EX(func), CACHE_ADDR(opline->op2.num));
34342 	} else {
34343 /* prevents "undefined variable opline" errors */
34344 #if 0 || (IS_UNUSED != IS_UNUSED)
34345 		zval *retval_ref, *retval_ptr;
34346 
34347 		zend_arg_info *ret_info = EX(func)->common.arg_info - 1;
34348 
34349 		retval_ref = retval_ptr = NULL;
34350 
34351 		if (IS_UNUSED == IS_CONST) {
34352 			ZVAL_COPY(EX_VAR(opline->result.var), retval_ptr);
34353 			retval_ref = retval_ptr = EX_VAR(opline->result.var);
34354 		} else if (IS_UNUSED == IS_VAR) {
34355 			if (UNEXPECTED(Z_TYPE_P(retval_ptr) == IS_INDIRECT)) {
34356 				retval_ptr = Z_INDIRECT_P(retval_ptr);
34357 			}
34358 			ZVAL_DEREF(retval_ptr);
34359 		} else if (IS_UNUSED == IS_CV) {
34360 			ZVAL_DEREF(retval_ptr);
34361 		}
34362 
34363 		if (UNEXPECTED(!ZEND_TYPE_IS_CLASS(ret_info->type)
34364 			&& ZEND_TYPE_CODE(ret_info->type) != IS_CALLABLE
34365 			&& ZEND_TYPE_CODE(ret_info->type) != IS_ITERABLE
34366 			&& !ZEND_SAME_FAKE_TYPE(ZEND_TYPE_CODE(ret_info->type), Z_TYPE_P(retval_ptr))
34367 			&& !(EX(func)->op_array.fn_flags & ZEND_ACC_RETURN_REFERENCE)
34368 			&& retval_ref != retval_ptr)
34369 		) {
34370 			/* A cast might happen - unwrap the reference if this is a by-value return */
34371 			if (Z_REFCOUNT_P(retval_ref) == 1) {
34372 				ZVAL_UNREF(retval_ref);
34373 			} else {
34374 				Z_DELREF_P(retval_ref);
34375 				ZVAL_COPY(retval_ref, retval_ptr);
34376 			}
34377 			retval_ptr = retval_ref;
34378 		}
34379 		zend_verify_return_type(EX(func), retval_ptr, CACHE_ADDR(opline->op2.num));
34380 #endif
34381 	}
34382 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
34383 }
34384 
34385 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_NEW_SPEC_UNUSED_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
34386 {
34387 	USE_OPLINE
34388 	zval *result;
34389 	zend_function *constructor;
34390 	zend_class_entry *ce;
34391 	zend_execute_data *call;
34392 
34393 	SAVE_OPLINE();
34394 	if (IS_UNUSED == IS_CONST) {
34395 		ce = CACHED_PTR(opline->op2.num);
34396 		if (UNEXPECTED(ce == NULL)) {
34397 			ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), RT_CONSTANT(opline, opline->op1) + 1, ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
34398 			if (UNEXPECTED(ce == NULL)) {
34399 				ZEND_ASSERT(EG(exception));
34400 				ZVAL_UNDEF(EX_VAR(opline->result.var));
34401 				HANDLE_EXCEPTION();
34402 			}
34403 			CACHE_PTR(opline->op2.num, ce);
34404 		}
34405 	} else if (IS_UNUSED == IS_UNUSED) {
34406 		ce = zend_fetch_class(NULL, opline->op1.num);
34407 		if (UNEXPECTED(ce == NULL)) {
34408 			ZEND_ASSERT(EG(exception));
34409 			ZVAL_UNDEF(EX_VAR(opline->result.var));
34410 			HANDLE_EXCEPTION();
34411 		}
34412 	} else {
34413 		ce = Z_CE_P(EX_VAR(opline->op1.var));
34414 	}
34415 
34416 	result = EX_VAR(opline->result.var);
34417 	if (UNEXPECTED(object_init_ex(result, ce) != SUCCESS)) {
34418 		ZVAL_UNDEF(result);
34419 		HANDLE_EXCEPTION();
34420 	}
34421 
34422 	constructor = Z_OBJ_HT_P(result)->get_constructor(Z_OBJ_P(result));
34423 	if (constructor == NULL) {
34424 		if (UNEXPECTED(EG(exception))) {
34425 			HANDLE_EXCEPTION();
34426 		}
34427 
34428 		/* If there are no arguments, skip over the DO_FCALL opcode. We check if the next
34429 		 * opcode is DO_FCALL in case EXT instructions are used. */
34430 		if (EXPECTED(opline->extended_value == 0 && (opline+1)->opcode == ZEND_DO_FCALL)) {
34431 			ZEND_VM_NEXT_OPCODE_EX(1, 2);
34432 		}
34433 
34434 		/* Perform a dummy function call */
34435 		call = zend_vm_stack_push_call_frame(
34436 			ZEND_CALL_FUNCTION, (zend_function *) &zend_pass_function,
34437 			opline->extended_value, NULL, NULL);
34438 	} else {
34439 		if (EXPECTED(constructor->type == ZEND_USER_FUNCTION) && UNEXPECTED(!constructor->op_array.run_time_cache)) {
34440 			init_func_run_time_cache(&constructor->op_array);
34441 		}
34442 		/* We are not handling overloaded classes right now */
34443 		call = zend_vm_stack_push_call_frame(
34444 			ZEND_CALL_FUNCTION | ZEND_CALL_RELEASE_THIS | ZEND_CALL_CTOR,
34445 			constructor,
34446 			opline->extended_value,
34447 			ce,
34448 			Z_OBJ_P(result));
34449 		Z_ADDREF_P(result);
34450 	}
34451 
34452 	call->prev_execute_data = EX(call);
34453 	EX(call) = call;
34454 	ZEND_VM_NEXT_OPCODE();
34455 }
34456 
34457 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_YIELD_SPEC_UNUSED_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
34458 {
34459 	USE_OPLINE
34460 
34461 	zend_generator *generator = zend_get_running_generator(EXECUTE_DATA_C);
34462 
34463 	SAVE_OPLINE();
34464 	if (UNEXPECTED(generator->flags & ZEND_GENERATOR_FORCED_CLOSE)) {
34465 		ZEND_VM_TAIL_CALL(zend_yield_in_closed_generator_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
34466 	}
34467 
34468 	/* Destroy the previously yielded value */
34469 	zval_ptr_dtor(&generator->value);
34470 
34471 	/* Destroy the previously yielded key */
34472 	zval_ptr_dtor(&generator->key);
34473 
34474 	/* Set the new yielded value */
34475 	if (IS_UNUSED != IS_UNUSED) {
34476 
34477 
34478 		if (UNEXPECTED(EX(func)->op_array.fn_flags & ZEND_ACC_RETURN_REFERENCE)) {
34479 			/* Constants and temporary variables aren't yieldable by reference,
34480 			 * but we still allow them with a notice. */
34481 			if (IS_UNUSED & (IS_CONST|IS_TMP_VAR)) {
34482 				zval *value;
34483 
34484 				zend_error(E_NOTICE, "Only variable references should be yielded by reference");
34485 
34486 				value = NULL;
34487 				ZVAL_COPY_VALUE(&generator->value, value);
34488 				if (IS_UNUSED == IS_CONST) {
34489 					if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
34490 						Z_ADDREF(generator->value);
34491 					}
34492 				}
34493 			} else {
34494 				zval *value_ptr = NULL;
34495 
34496 				/* If a function call result is yielded and the function did
34497 				 * not return by reference we throw a notice. */
34498 				if (IS_UNUSED == IS_VAR &&
34499 				    (value_ptr == &EG(uninitialized_zval) ||
34500 				     (opline->extended_value == ZEND_RETURNS_FUNCTION &&
34501 				      !Z_ISREF_P(value_ptr)))) {
34502 					zend_error(E_NOTICE, "Only variable references should be yielded by reference");
34503 					ZVAL_COPY(&generator->value, value_ptr);
34504 				} else {
34505 					if (Z_ISREF_P(value_ptr)) {
34506 						Z_ADDREF_P(value_ptr);
34507 					} else {
34508 						ZVAL_MAKE_REF_EX(value_ptr, 2);
34509 					}
34510 					ZVAL_REF(&generator->value, Z_REF_P(value_ptr));
34511 				}
34512 
34513 			}
34514 		} else {
34515 			zval *value = NULL;
34516 
34517 			/* Consts, temporary variables and references need copying */
34518 			if (IS_UNUSED == IS_CONST) {
34519 				ZVAL_COPY_VALUE(&generator->value, value);
34520 				if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
34521 					Z_ADDREF(generator->value);
34522 				}
34523 			} else if (IS_UNUSED == IS_TMP_VAR) {
34524 				ZVAL_COPY_VALUE(&generator->value, value);
34525             } else if ((IS_UNUSED & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
34526 				ZVAL_COPY(&generator->value, Z_REFVAL_P(value));
34527 
34528 			} else {
34529 				ZVAL_COPY_VALUE(&generator->value, value);
34530 				if (IS_UNUSED == IS_CV) {
34531 					if (Z_OPT_REFCOUNTED_P(value)) Z_ADDREF_P(value);
34532 				}
34533 			}
34534 		}
34535 	} else {
34536 		/* If no value was specified yield null */
34537 		ZVAL_NULL(&generator->value);
34538 	}
34539 
34540 	/* Set the new yielded key */
34541 	if (IS_UNUSED != IS_UNUSED) {
34542 
34543 		zval *key = NULL;
34544 
34545 		/* Consts, temporary variables and references need copying */
34546 		if (IS_UNUSED == IS_CONST) {
34547 			ZVAL_COPY_VALUE(&generator->key, key);
34548 			if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->key))) {
34549 				Z_ADDREF(generator->key);
34550 			}
34551 		} else if (IS_UNUSED == IS_TMP_VAR) {
34552 			ZVAL_COPY_VALUE(&generator->key, key);
34553 		} else if ((IS_UNUSED & (IS_VAR|IS_CV)) && Z_ISREF_P(key)) {
34554 			ZVAL_COPY(&generator->key, Z_REFVAL_P(key));
34555 
34556 		} else {
34557 			ZVAL_COPY_VALUE(&generator->key, key);
34558 			if (IS_UNUSED == IS_CV) {
34559 				if (Z_OPT_REFCOUNTED_P(key)) Z_ADDREF_P(key);
34560 			}
34561 		}
34562 
34563 		if (Z_TYPE(generator->key) == IS_LONG
34564 		    && Z_LVAL(generator->key) > generator->largest_used_integer_key
34565 		) {
34566 			generator->largest_used_integer_key = Z_LVAL(generator->key);
34567 		}
34568 	} else {
34569 		/* If no key was specified we use auto-increment keys */
34570 		generator->largest_used_integer_key++;
34571 		ZVAL_LONG(&generator->key, generator->largest_used_integer_key);
34572 	}
34573 
34574 	if (RETURN_VALUE_USED(opline)) {
34575 		/* If the return value of yield is used set the send
34576 		 * target and initialize it to NULL */
34577 		generator->send_target = EX_VAR(opline->result.var);
34578 		ZVAL_NULL(generator->send_target);
34579 	} else {
34580 		generator->send_target = NULL;
34581 	}
34582 
34583 	/* We increment to the next op, so we are at the correct position when the
34584 	 * generator is resumed. */
34585 	ZEND_VM_INC_OPCODE();
34586 
34587 	/* The GOTO VM uses a local opline variable. We need to set the opline
34588 	 * variable in execute_data so we don't resume at an old position. */
34589 	SAVE_OPLINE();
34590 
34591 	ZEND_VM_RETURN();
34592 }
34593 
34594 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_THIS_SPEC_UNUSED_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
34595 {
34596 	USE_OPLINE
34597 
34598 	if (EXPECTED(Z_TYPE(EX(This)) == IS_OBJECT)) {
34599 		zval *result = EX_VAR(opline->result.var);
34600 
34601 		ZVAL_OBJ(result, Z_OBJ(EX(This)));
34602 		Z_ADDREF_P(result);
34603 		ZEND_VM_NEXT_OPCODE();
34604 	} else {
34605 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
34606 	}
34607 }
34608 
34609 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ISSET_ISEMPTY_THIS_SPEC_UNUSED_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
34610 {
34611 	USE_OPLINE
34612 
34613 	ZVAL_BOOL(EX_VAR(opline->result.var),
34614 		(opline->extended_value & ZEND_ISEMPTY) ^
34615 		 (Z_TYPE(EX(This)) == IS_OBJECT));
34616 	ZEND_VM_NEXT_OPCODE();
34617 }
34618 
34619 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_GET_CLASS_SPEC_UNUSED_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
34620 {
34621 	USE_OPLINE
34622 
34623 	if (IS_UNUSED == IS_UNUSED) {
34624 		if (UNEXPECTED(!EX(func)->common.scope)) {
34625 			SAVE_OPLINE();
34626 			zend_error(E_WARNING, "get_class() called without object from outside a class");
34627 			ZVAL_FALSE(EX_VAR(opline->result.var));
34628 			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
34629 		} else {
34630 			ZVAL_STR_COPY(EX_VAR(opline->result.var), EX(func)->common.scope->name);
34631 			ZEND_VM_NEXT_OPCODE();
34632 		}
34633 	} else {
34634 
34635 		zval *op1;
34636 
34637 		SAVE_OPLINE();
34638 		op1 = NULL;
34639 		if (Z_TYPE_P(op1) == IS_OBJECT) {
34640 			ZVAL_STR_COPY(EX_VAR(opline->result.var), Z_OBJCE_P(op1)->name);
34641 		} else {
34642 			zend_error(E_WARNING, "get_class() expects parameter 1 to be object, %s given", zend_get_type_by_const(Z_TYPE_P(op1)));
34643 			ZVAL_FALSE(EX_VAR(opline->result.var));
34644 		}
34645 
34646 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
34647 	}
34648 }
34649 
34650 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_GET_CALLED_CLASS_SPEC_UNUSED_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
34651 {
34652 	USE_OPLINE
34653 
34654 	if (Z_TYPE(EX(This)) == IS_OBJECT) {
34655 		ZVAL_STR_COPY(EX_VAR(opline->result.var), Z_OBJCE(EX(This))->name);
34656 	} else if (Z_CE(EX(This))) {
34657 		ZVAL_STR_COPY(EX_VAR(opline->result.var), Z_CE(EX(This))->name);
34658 	} else {
34659 		ZVAL_FALSE(EX_VAR(opline->result.var));
34660 		if (UNEXPECTED(!EX(func)->common.scope)) {
34661 			SAVE_OPLINE();
34662 			zend_error(E_WARNING, "get_called_class() called from outside a class");
34663 			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
34664 		}
34665 	}
34666 	ZEND_VM_NEXT_OPCODE();
34667 }
34668 
34669 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FUNC_NUM_ARGS_SPEC_UNUSED_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
34670 {
34671 	USE_OPLINE
34672 
34673 	ZVAL_LONG(EX_VAR(opline->result.var), EX_NUM_ARGS());
34674 	ZEND_VM_NEXT_OPCODE();
34675 }
34676 
34677 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FUNC_GET_ARGS_SPEC_UNUSED_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
34678 {
34679 	USE_OPLINE
34680 	zend_array *ht;
34681 	uint32_t arg_count, result_size, skip;
34682 
34683 	arg_count = EX_NUM_ARGS();
34684 	if (IS_UNUSED == IS_CONST) {
34685 		skip = Z_LVAL_P(RT_CONSTANT(opline, opline->op1));
34686 		if (arg_count < skip) {
34687 			result_size = 0;
34688 		} else {
34689 			result_size = arg_count - skip;
34690 		}
34691 	} else {
34692 		skip = 0;
34693 		result_size = arg_count;
34694 	}
34695 
34696 	if (result_size) {
34697 		uint32_t first_extra_arg = EX(func)->op_array.num_args;
34698 
34699 		ht = zend_new_array(result_size);
34700 		ZVAL_ARR(EX_VAR(opline->result.var), ht);
34701 		zend_hash_real_init_packed(ht);
34702 		ZEND_HASH_FILL_PACKED(ht) {
34703 			zval *p, *q;
34704 			uint32_t i = skip;
34705 			p = EX_VAR_NUM(i);
34706 			if (arg_count > first_extra_arg) {
34707 				while (i < first_extra_arg) {
34708 					q = p;
34709 					if (EXPECTED(Z_TYPE_INFO_P(q) != IS_UNDEF)) {
34710 						ZVAL_DEREF(q);
34711 						if (Z_OPT_REFCOUNTED_P(q)) {
34712 							Z_ADDREF_P(q);
34713 						}
34714 					} else {
34715 						q = &EG(uninitialized_zval);
34716 					}
34717 					ZEND_HASH_FILL_ADD(q);
34718 					p++;
34719 					i++;
34720 				}
34721 				if (skip < first_extra_arg) {
34722 					skip = 0;
34723 				} else {
34724 					skip -= first_extra_arg;
34725 				}
34726 				p = EX_VAR_NUM(EX(func)->op_array.last_var + EX(func)->op_array.T + skip);
34727 			}
34728 			while (i < arg_count) {
34729 				q = p;
34730 				if (EXPECTED(Z_TYPE_INFO_P(q) != IS_UNDEF)) {
34731 					ZVAL_DEREF(q);
34732 					if (Z_OPT_REFCOUNTED_P(q)) {
34733 						Z_ADDREF_P(q);
34734 					}
34735 				} else {
34736 					q = &EG(uninitialized_zval);
34737 				}
34738 				ZEND_HASH_FILL_ADD(q);
34739 				p++;
34740 				i++;
34741 			}
34742 		} ZEND_HASH_FILL_END();
34743 		ht->nNumOfElements = result_size;
34744 	} else {
34745 		ZVAL_EMPTY_ARRAY(EX_VAR(opline->result.var));
34746 	}
34747 	ZEND_VM_NEXT_OPCODE();
34748 }
34749 
34750 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_obj_helper_SPEC_UNUSED_CV(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
34751 {
34752 	USE_OPLINE
34753 	zend_free_op free_op_data1;
34754 	zval *object;
34755 	zval *property;
34756 	zval *value;
34757 	zval *zptr;
34758 
34759 	SAVE_OPLINE();
34760 	object = &EX(This);
34761 
34762 	if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
34763 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
34764 	}
34765 
34766 	property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
34767 
34768 	do {
34769 		value = get_op_data_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data1);
34770 
34771 		if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
34772 			if (Z_ISREF_P(object)) {
34773 				object = Z_REFVAL_P(object);
34774 				if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
34775 					goto assign_op_object;
34776 				}
34777 			}
34778 			if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
34779 				break;
34780 			}
34781 		}
34782 
34783 		/* here we are sure we are dealing with an object */
34784 assign_op_object:
34785 		if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
34786 			&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CV == IS_CONST) ? CACHE_ADDR((opline+1)->extended_value) : NULL))) != NULL)) {
34787 			if (UNEXPECTED(Z_ISERROR_P(zptr))) {
34788 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
34789 					ZVAL_NULL(EX_VAR(opline->result.var));
34790 				}
34791 			} else {
34792 				ZVAL_DEREF(zptr);
34793 
34794 				binary_op(zptr, zptr, value);
34795 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
34796 					ZVAL_COPY(EX_VAR(opline->result.var), zptr);
34797 				}
34798 			}
34799 		} else {
34800 			zend_assign_op_overloaded_property(object, property, ((IS_CV == IS_CONST) ? CACHE_ADDR((opline+1)->extended_value) : NULL), value, binary_op OPLINE_CC EXECUTE_DATA_CC);
34801 		}
34802 	} while (0);
34803 
34804 	FREE_OP(free_op_data1);
34805 
34806 
34807 	/* assign_obj has two opcodes! */
34808 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
34809 }
34810 
34811 static zend_always_inline ZEND_OPCODE_HANDLER_RET zend_binary_assign_op_helper_SPEC_UNUSED_CV_OBJ(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
34812 {
34813 #if 1 && IS_CV == IS_UNUSED
34814 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_UNUSED_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
34815 #else
34816 # if 0 || IS_UNUSED != IS_UNUSED
34817 #  if 0
34818 	/* opline->extended_value checks are specialized, don't need opline */
34819 	USE_OPLINE
34820 #  endif
34821 
34822 	if (EXPECTED(0)) {
34823 		ZEND_VM_TAIL_CALL(zend_binary_assign_op_simple_helper_SPEC_UNUSED_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
34824 	}
34825 	if (EXPECTED(0)) {
34826 		ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_UNUSED_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
34827 	}
34828 # endif
34829 
34830 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_obj_helper_SPEC_UNUSED_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
34831 #endif
34832 }
34833 
34834 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_ADD_SPEC_UNUSED_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
34835 {
34836 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_UNUSED_CV_OBJ(add_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
34837 }
34838 
34839 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SUB_SPEC_UNUSED_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
34840 {
34841 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_UNUSED_CV_OBJ(sub_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
34842 }
34843 
34844 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MUL_SPEC_UNUSED_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
34845 {
34846 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_UNUSED_CV_OBJ(mul_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
34847 }
34848 
34849 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIV_SPEC_UNUSED_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
34850 {
34851 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_UNUSED_CV_OBJ(div_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
34852 }
34853 
34854 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MOD_SPEC_UNUSED_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
34855 {
34856 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_UNUSED_CV_OBJ(mod_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
34857 }
34858 
34859 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SL_SPEC_UNUSED_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
34860 {
34861 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_UNUSED_CV_OBJ(shift_left_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
34862 }
34863 
34864 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SR_SPEC_UNUSED_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
34865 {
34866 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_UNUSED_CV_OBJ(shift_right_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
34867 }
34868 
34869 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_CONCAT_SPEC_UNUSED_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
34870 {
34871 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_UNUSED_CV_OBJ(concat_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
34872 }
34873 
34874 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_OR_SPEC_UNUSED_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
34875 {
34876 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_UNUSED_CV_OBJ(bitwise_or_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
34877 }
34878 
34879 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_AND_SPEC_UNUSED_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
34880 {
34881 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_UNUSED_CV_OBJ(bitwise_and_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
34882 }
34883 
34884 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_XOR_SPEC_UNUSED_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
34885 {
34886 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_UNUSED_CV_OBJ(bitwise_xor_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
34887 }
34888 
34889 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_POW_SPEC_UNUSED_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
34890 {
34891 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_UNUSED_CV_OBJ(pow_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
34892 }
34893 
34894 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_pre_incdec_property_helper_SPEC_UNUSED_CV(int inc ZEND_OPCODE_HANDLER_ARGS_DC)
34895 {
34896 	USE_OPLINE
34897 
34898 	zval *object;
34899 	zval *property;
34900 	zval *zptr;
34901 
34902 	SAVE_OPLINE();
34903 	object = &EX(This);
34904 
34905 	if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
34906 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
34907 	}
34908 
34909 	property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
34910 
34911 	do {
34912 		if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
34913 			if (Z_ISREF_P(object)) {
34914 				object = Z_REFVAL_P(object);
34915 				if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
34916 					goto pre_incdec_object;
34917 				}
34918 			}
34919 			if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
34920 				break;
34921 			}
34922 		}
34923 
34924 		/* here we are sure we are dealing with an object */
34925 pre_incdec_object:
34926 		if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
34927 			&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL))) != NULL)) {
34928 			if (UNEXPECTED(Z_ISERROR_P(zptr))) {
34929 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
34930 					ZVAL_NULL(EX_VAR(opline->result.var));
34931 				}
34932 			} else {
34933 				if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
34934 					if (inc) {
34935 						fast_long_increment_function(zptr);
34936 					} else {
34937 						fast_long_decrement_function(zptr);
34938 					}
34939 				} else {
34940 					ZVAL_DEREF(zptr);
34941 
34942 					if (inc) {
34943 						increment_function(zptr);
34944 					} else {
34945 						decrement_function(zptr);
34946 					}
34947 				}
34948 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
34949 					ZVAL_COPY(EX_VAR(opline->result.var), zptr);
34950 				}
34951 			}
34952 		} else {
34953 			zend_pre_incdec_overloaded_property(object, property, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), inc OPLINE_CC EXECUTE_DATA_CC);
34954 		}
34955 	} while (0);
34956 
34957 
34958 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
34959 }
34960 
34961 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_INC_OBJ_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
34962 {
34963 	ZEND_VM_TAIL_CALL(zend_pre_incdec_property_helper_SPEC_UNUSED_CV(1 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
34964 }
34965 
34966 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_DEC_OBJ_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
34967 {
34968 	ZEND_VM_TAIL_CALL(zend_pre_incdec_property_helper_SPEC_UNUSED_CV(0 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
34969 }
34970 
34971 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_post_incdec_property_helper_SPEC_UNUSED_CV(int inc ZEND_OPCODE_HANDLER_ARGS_DC)
34972 {
34973 	USE_OPLINE
34974 
34975 	zval *object;
34976 	zval *property;
34977 	zval *zptr;
34978 
34979 	SAVE_OPLINE();
34980 	object = &EX(This);
34981 
34982 	if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
34983 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
34984 	}
34985 
34986 	property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
34987 
34988 	do {
34989 		if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
34990 			if (Z_ISREF_P(object)) {
34991 				object = Z_REFVAL_P(object);
34992 				if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
34993 					goto post_incdec_object;
34994 				}
34995 			}
34996 			if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
34997 				break;
34998 			}
34999 		}
35000 
35001 		/* here we are sure we are dealing with an object */
35002 post_incdec_object:
35003 		if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
35004 			&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL))) != NULL)) {
35005 			if (UNEXPECTED(Z_ISERROR_P(zptr))) {
35006 				ZVAL_NULL(EX_VAR(opline->result.var));
35007 			} else {
35008 				if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
35009 					ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(zptr));
35010 					if (inc) {
35011 						fast_long_increment_function(zptr);
35012 					} else {
35013 						fast_long_decrement_function(zptr);
35014 					}
35015 				} else {
35016 					ZVAL_DEREF(zptr);
35017 					ZVAL_COPY(EX_VAR(opline->result.var), zptr);
35018 					if (inc) {
35019 						increment_function(zptr);
35020 					} else {
35021 						decrement_function(zptr);
35022 					}
35023 				}
35024 			}
35025 		} else {
35026 			zend_post_incdec_overloaded_property(object, property, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), inc OPLINE_CC EXECUTE_DATA_CC);
35027 		}
35028 	} while (0);
35029 
35030 
35031 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
35032 }
35033 
35034 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_POST_INC_OBJ_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
35035 {
35036 	ZEND_VM_TAIL_CALL(zend_post_incdec_property_helper_SPEC_UNUSED_CV(1 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
35037 }
35038 
35039 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_POST_DEC_OBJ_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
35040 {
35041 	ZEND_VM_TAIL_CALL(zend_post_incdec_property_helper_SPEC_UNUSED_CV(0 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
35042 }
35043 
35044 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_R_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
35045 {
35046 	USE_OPLINE
35047 
35048 	zval *container;
35049 
35050 	zval *offset;
35051 	void **cache_slot = NULL;
35052 
35053 	SAVE_OPLINE();
35054 	container = &EX(This);
35055 
35056 	if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
35057 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
35058 	}
35059 
35060 	offset = EX_VAR(opline->op2.var);
35061 
35062 	if (IS_UNUSED == IS_CONST ||
35063 	    (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
35064 	    do {
35065 			if ((IS_UNUSED & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
35066 				container = Z_REFVAL_P(container);
35067 				if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
35068 					break;
35069 				}
35070 			}
35071 			if (IS_UNUSED == IS_CV && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
35072 				GET_OP1_UNDEF_CV(container, BP_VAR_R);
35073 			}
35074 			if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(offset) == IS_UNDEF)) {
35075 				GET_OP2_UNDEF_CV(offset, BP_VAR_R);
35076 			}
35077 			goto fetch_obj_r_no_object;
35078 		} while (0);
35079 	}
35080 
35081 	/* here we are sure we are dealing with an object */
35082 	do {
35083 		zend_object *zobj = Z_OBJ_P(container);
35084 		zval *retval;
35085 
35086 		if (IS_CV == IS_CONST) {
35087 			cache_slot = CACHE_ADDR(opline->extended_value);
35088 
35089 			if (EXPECTED(zobj->ce == CACHED_PTR_EX(cache_slot))) {
35090 				uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
35091 
35092 				if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
35093 					retval = OBJ_PROP(zobj, prop_offset);
35094 					if (EXPECTED(Z_TYPE_INFO_P(retval) != IS_UNDEF)) {
35095 						ZVAL_COPY_DEREF(EX_VAR(opline->result.var), retval);
35096 						break;
35097 					}
35098 				} else if (EXPECTED(zobj->properties != NULL)) {
35099 					if (!IS_UNKNOWN_DYNAMIC_PROPERTY_OFFSET(prop_offset)) {
35100 						uintptr_t idx = ZEND_DECODE_DYN_PROP_OFFSET(prop_offset);
35101 
35102 						if (EXPECTED(idx < zobj->properties->nNumUsed * sizeof(Bucket))) {
35103 							Bucket *p = (Bucket*)((char*)zobj->properties->arData + idx);
35104 
35105 							if (EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
35106 						        (EXPECTED(p->key == Z_STR_P(offset)) ||
35107 						         (EXPECTED(p->h == ZSTR_H(Z_STR_P(offset))) &&
35108 						          EXPECTED(p->key != NULL) &&
35109 						          EXPECTED(zend_string_equal_content(p->key, Z_STR_P(offset)))))) {
35110 								ZVAL_COPY_DEREF(EX_VAR(opline->result.var), &p->val);
35111 								break;
35112 							}
35113 						}
35114 						CACHE_PTR_EX(cache_slot + 1, (void*)ZEND_DYNAMIC_PROPERTY_OFFSET);
35115 					}
35116 					retval = zend_hash_find_ex(zobj->properties, Z_STR_P(offset), 1);
35117 					if (EXPECTED(retval)) {
35118 						uintptr_t idx = (char*)retval - (char*)zobj->properties->arData;
35119 						CACHE_PTR_EX(cache_slot + 1, (void*)ZEND_ENCODE_DYN_PROP_OFFSET(idx));
35120 						ZVAL_COPY_DEREF(EX_VAR(opline->result.var), retval);
35121 						break;
35122 					}
35123 				}
35124 			}
35125 		} else if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(offset) == IS_UNDEF)) {
35126 			GET_OP2_UNDEF_CV(offset, BP_VAR_R);
35127 		}
35128 
35129 		if (UNEXPECTED(zobj->handlers->read_property == NULL)) {
35130 fetch_obj_r_no_object:
35131 			zend_wrong_property_read(offset);
35132 			ZVAL_NULL(EX_VAR(opline->result.var));
35133 		} else {
35134 			retval = zobj->handlers->read_property(container, offset, BP_VAR_R, cache_slot, EX_VAR(opline->result.var));
35135 
35136 			if (retval != EX_VAR(opline->result.var)) {
35137 				ZVAL_COPY_DEREF(EX_VAR(opline->result.var), retval);
35138 			} else if (UNEXPECTED(Z_ISREF_P(retval))) {
35139 				zend_unwrap_reference(retval);
35140 			}
35141 		}
35142 	} while (0);
35143 
35144 
35145 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
35146 }
35147 
35148 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_W_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
35149 {
35150 	USE_OPLINE
35151 	zend_free_op free_op1;
35152 	zval *property, *container, *result;
35153 
35154 	SAVE_OPLINE();
35155 
35156 	container = &EX(This);
35157 	if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
35158 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
35159 	}
35160 
35161 	property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
35162 	result = EX_VAR(opline->result.var);
35163 	zend_fetch_property_address(result, container, IS_UNUSED, property, IS_CV, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_W OPLINE_CC);
35164 
35165 	if (IS_UNUSED == IS_VAR) {
35166 		FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(free_op1, result);
35167 	}
35168 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
35169 }
35170 
35171 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_RW_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
35172 {
35173 	USE_OPLINE
35174 	zend_free_op free_op1;
35175 	zval *property, *container, *result;
35176 
35177 	SAVE_OPLINE();
35178 	container = &EX(This);
35179 
35180 	if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
35181 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
35182 	}
35183 	property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
35184 	result = EX_VAR(opline->result.var);
35185 	zend_fetch_property_address(result, container, IS_UNUSED, property, IS_CV, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_RW OPLINE_CC);
35186 
35187 	if (IS_UNUSED == IS_VAR) {
35188 		FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(free_op1, result);
35189 	}
35190 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
35191 }
35192 
35193 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_IS_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
35194 {
35195 	USE_OPLINE
35196 
35197 	zval *container;
35198 
35199 	zval *offset;
35200 	void **cache_slot = NULL;
35201 
35202 	SAVE_OPLINE();
35203 	container = &EX(This);
35204 
35205 	if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
35206 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
35207 	}
35208 
35209 	offset = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
35210 
35211 	if (IS_UNUSED == IS_CONST ||
35212 	    (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
35213 		do {
35214 			if ((IS_UNUSED & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
35215 				container = Z_REFVAL_P(container);
35216 				if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
35217 					break;
35218 				}
35219 			}
35220 			goto fetch_obj_is_no_object;
35221 		} while (0);
35222 	}
35223 
35224 	/* here we are sure we are dealing with an object */
35225 	do {
35226 		zend_object *zobj = Z_OBJ_P(container);
35227 		zval *retval;
35228 
35229 		if (IS_CV == IS_CONST) {
35230 			cache_slot = CACHE_ADDR(opline->extended_value);
35231 
35232 			if (EXPECTED(zobj->ce == CACHED_PTR_EX(cache_slot))) {
35233 				uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
35234 
35235 				if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
35236 					retval = OBJ_PROP(zobj, prop_offset);
35237 					if (EXPECTED(Z_TYPE_P(retval) != IS_UNDEF)) {
35238 						ZVAL_COPY(EX_VAR(opline->result.var), retval);
35239 						break;
35240 					}
35241 				} else if (EXPECTED(zobj->properties != NULL)) {
35242 					if (!IS_UNKNOWN_DYNAMIC_PROPERTY_OFFSET(prop_offset)) {
35243 						uintptr_t idx = ZEND_DECODE_DYN_PROP_OFFSET(prop_offset);
35244 
35245 						if (EXPECTED(idx < zobj->properties->nNumUsed * sizeof(Bucket))) {
35246 							Bucket *p = (Bucket*)((char*)zobj->properties->arData + idx);
35247 
35248 							if (EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
35249 						        (EXPECTED(p->key == Z_STR_P(offset)) ||
35250 						         (EXPECTED(p->h == ZSTR_H(Z_STR_P(offset))) &&
35251 						          EXPECTED(p->key != NULL) &&
35252 						          EXPECTED(zend_string_equal_content(p->key, Z_STR_P(offset)))))) {
35253 								ZVAL_COPY(EX_VAR(opline->result.var), &p->val);
35254 								break;
35255 							}
35256 						}
35257 						CACHE_PTR_EX(cache_slot + 1, (void*)ZEND_DYNAMIC_PROPERTY_OFFSET);
35258 					}
35259 					retval = zend_hash_find_ex(zobj->properties, Z_STR_P(offset), 1);
35260 					if (EXPECTED(retval)) {
35261 						uintptr_t idx = (char*)retval - (char*)zobj->properties->arData;
35262 						CACHE_PTR_EX(cache_slot + 1, (void*)ZEND_ENCODE_DYN_PROP_OFFSET(idx));
35263 						ZVAL_COPY(EX_VAR(opline->result.var), retval);
35264 						break;
35265 					}
35266 				}
35267 			}
35268 		}
35269 
35270 		if (UNEXPECTED(zobj->handlers->read_property == NULL)) {
35271 fetch_obj_is_no_object:
35272 			ZVAL_NULL(EX_VAR(opline->result.var));
35273 		} else {
35274 
35275 			retval = zobj->handlers->read_property(container, offset, BP_VAR_IS, cache_slot, EX_VAR(opline->result.var));
35276 
35277 			if (retval != EX_VAR(opline->result.var)) {
35278 				ZVAL_COPY(EX_VAR(opline->result.var), retval);
35279 			}
35280 		}
35281 	} while (0);
35282 
35283 
35284 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
35285 }
35286 
35287 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_FUNC_ARG_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
35288 {
35289 	if (UNEXPECTED(ZEND_CALL_INFO(EX(call)) & ZEND_CALL_SEND_ARG_BY_REF)) {
35290 		/* Behave like FETCH_OBJ_W */
35291 		if ((IS_UNUSED & (IS_CONST|IS_TMP_VAR))) {
35292 			ZEND_VM_TAIL_CALL(zend_use_tmp_in_write_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
35293 		}
35294 
35295 		ZEND_VM_TAIL_CALL(ZEND_FETCH_OBJ_W_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
35296 	} else {
35297 		ZEND_VM_TAIL_CALL(ZEND_FETCH_OBJ_R_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
35298 	}
35299 }
35300 
35301 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_UNSET_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
35302 {
35303 	USE_OPLINE
35304 	zend_free_op free_op1;
35305 	zval *container, *property, *result;
35306 
35307 	SAVE_OPLINE();
35308 	container = &EX(This);
35309 
35310 	if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
35311 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
35312 	}
35313 
35314 	property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
35315 	result = EX_VAR(opline->result.var);
35316 	zend_fetch_property_address(result, container, IS_UNUSED, property, IS_CV, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_UNSET OPLINE_CC);
35317 
35318 	if (IS_UNUSED == IS_VAR) {
35319 		FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(free_op1, result);
35320 	}
35321 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
35322 }
35323 
35324 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_UNUSED_CV_OP_DATA_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
35325 {
35326 	USE_OPLINE
35327 
35328 	zval *object, *property, *value, tmp;
35329 
35330 	SAVE_OPLINE();
35331 	object = &EX(This);
35332 
35333 	if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
35334 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
35335 	}
35336 
35337 	property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
35338 	value = RT_CONSTANT((opline+1), (opline+1)->op1);
35339 
35340 	if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
35341 		if (Z_ISREF_P(object)) {
35342 			object = Z_REFVAL_P(object);
35343 			if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
35344 				goto assign_object;
35345 			}
35346 		}
35347 		if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
35348 
35349 			goto exit_assign_obj;
35350 		}
35351 	}
35352 
35353 assign_object:
35354 	if (IS_CV == IS_CONST &&
35355 	    EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(opline->extended_value))) {
35356 		uintptr_t prop_offset = (uintptr_t)CACHED_PTR(opline->extended_value + sizeof(void*));
35357 		zend_object *zobj = Z_OBJ_P(object);
35358 		zval *property_val;
35359 
35360 		if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
35361 			property_val = OBJ_PROP(zobj, prop_offset);
35362 			if (Z_TYPE_P(property_val) != IS_UNDEF) {
35363 fast_assign_obj:
35364 				value = zend_assign_to_variable(property_val, value, IS_CONST);
35365 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
35366 					ZVAL_COPY(EX_VAR(opline->result.var), value);
35367 				}
35368 				goto exit_assign_obj;
35369 			}
35370 		} else {
35371 			if (EXPECTED(zobj->properties != NULL)) {
35372 				if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
35373 					if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
35374 						GC_DELREF(zobj->properties);
35375 					}
35376 					zobj->properties = zend_array_dup(zobj->properties);
35377 				}
35378 				property_val = zend_hash_find_ex(zobj->properties, Z_STR_P(property), 1);
35379 				if (property_val) {
35380 					goto fast_assign_obj;
35381 				}
35382 			}
35383 
35384 			if (!zobj->ce->__set) {
35385 
35386 				if (EXPECTED(zobj->properties == NULL)) {
35387 					rebuild_object_properties(zobj);
35388 				}
35389 				if (IS_CONST == IS_CONST) {
35390 					if (UNEXPECTED(Z_OPT_REFCOUNTED_P(value))) {
35391 						Z_ADDREF_P(value);
35392 					}
35393 				} else if (IS_CONST != IS_TMP_VAR) {
35394 					if (Z_ISREF_P(value)) {
35395 						if (IS_CONST == IS_VAR) {
35396 							zend_reference *ref = Z_REF_P(value);
35397 							if (GC_DELREF(ref) == 0) {
35398 								ZVAL_COPY_VALUE(&tmp, Z_REFVAL_P(value));
35399 								efree_size(ref, sizeof(zend_reference));
35400 								value = &tmp;
35401 							} else {
35402 								value = Z_REFVAL_P(value);
35403 								Z_TRY_ADDREF_P(value);
35404 							}
35405 						} else {
35406 							value = Z_REFVAL_P(value);
35407 							Z_TRY_ADDREF_P(value);
35408 						}
35409 					} else if (IS_CONST == IS_CV) {
35410 						Z_TRY_ADDREF_P(value);
35411 					}
35412 				}
35413 				zend_hash_add_new(zobj->properties, Z_STR_P(property), value);
35414 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
35415 					ZVAL_COPY(EX_VAR(opline->result.var), value);
35416 				}
35417 				goto exit_assign_obj;
35418 			}
35419 		}
35420 	}
35421 
35422 	if (!Z_OBJ_HT_P(object)->write_property) {
35423 		zend_wrong_property_assignment(property OPLINE_CC EXECUTE_DATA_CC);
35424 
35425 		goto exit_assign_obj;
35426 	}
35427 
35428 	if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
35429 		ZVAL_DEREF(value);
35430 	}
35431 
35432 	Z_OBJ_HT_P(object)->write_property(object, property, value, (IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
35433 
35434 	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
35435 		ZVAL_COPY(EX_VAR(opline->result.var), value);
35436 	}
35437 
35438 exit_assign_obj:
35439 
35440 
35441 	/* assign_obj has two opcodes! */
35442 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
35443 }
35444 
35445 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_UNUSED_CV_OP_DATA_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
35446 {
35447 	USE_OPLINE
35448 	zend_free_op free_op_data;
35449 	zval *object, *property, *value, tmp;
35450 
35451 	SAVE_OPLINE();
35452 	object = &EX(This);
35453 
35454 	if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
35455 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
35456 	}
35457 
35458 	property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
35459 	value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
35460 
35461 	if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
35462 		if (Z_ISREF_P(object)) {
35463 			object = Z_REFVAL_P(object);
35464 			if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
35465 				goto assign_object;
35466 			}
35467 		}
35468 		if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
35469 			zval_ptr_dtor_nogc(free_op_data);
35470 			goto exit_assign_obj;
35471 		}
35472 	}
35473 
35474 assign_object:
35475 	if (IS_CV == IS_CONST &&
35476 	    EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(opline->extended_value))) {
35477 		uintptr_t prop_offset = (uintptr_t)CACHED_PTR(opline->extended_value + sizeof(void*));
35478 		zend_object *zobj = Z_OBJ_P(object);
35479 		zval *property_val;
35480 
35481 		if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
35482 			property_val = OBJ_PROP(zobj, prop_offset);
35483 			if (Z_TYPE_P(property_val) != IS_UNDEF) {
35484 fast_assign_obj:
35485 				value = zend_assign_to_variable(property_val, value, IS_TMP_VAR);
35486 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
35487 					ZVAL_COPY(EX_VAR(opline->result.var), value);
35488 				}
35489 				goto exit_assign_obj;
35490 			}
35491 		} else {
35492 			if (EXPECTED(zobj->properties != NULL)) {
35493 				if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
35494 					if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
35495 						GC_DELREF(zobj->properties);
35496 					}
35497 					zobj->properties = zend_array_dup(zobj->properties);
35498 				}
35499 				property_val = zend_hash_find_ex(zobj->properties, Z_STR_P(property), 1);
35500 				if (property_val) {
35501 					goto fast_assign_obj;
35502 				}
35503 			}
35504 
35505 			if (!zobj->ce->__set) {
35506 
35507 				if (EXPECTED(zobj->properties == NULL)) {
35508 					rebuild_object_properties(zobj);
35509 				}
35510 				if (IS_TMP_VAR == IS_CONST) {
35511 					if (UNEXPECTED(Z_OPT_REFCOUNTED_P(value))) {
35512 						Z_ADDREF_P(value);
35513 					}
35514 				} else if (IS_TMP_VAR != IS_TMP_VAR) {
35515 					if (Z_ISREF_P(value)) {
35516 						if (IS_TMP_VAR == IS_VAR) {
35517 							zend_reference *ref = Z_REF_P(value);
35518 							if (GC_DELREF(ref) == 0) {
35519 								ZVAL_COPY_VALUE(&tmp, Z_REFVAL_P(value));
35520 								efree_size(ref, sizeof(zend_reference));
35521 								value = &tmp;
35522 							} else {
35523 								value = Z_REFVAL_P(value);
35524 								Z_TRY_ADDREF_P(value);
35525 							}
35526 						} else {
35527 							value = Z_REFVAL_P(value);
35528 							Z_TRY_ADDREF_P(value);
35529 						}
35530 					} else if (IS_TMP_VAR == IS_CV) {
35531 						Z_TRY_ADDREF_P(value);
35532 					}
35533 				}
35534 				zend_hash_add_new(zobj->properties, Z_STR_P(property), value);
35535 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
35536 					ZVAL_COPY(EX_VAR(opline->result.var), value);
35537 				}
35538 				goto exit_assign_obj;
35539 			}
35540 		}
35541 	}
35542 
35543 	if (!Z_OBJ_HT_P(object)->write_property) {
35544 		zend_wrong_property_assignment(property OPLINE_CC EXECUTE_DATA_CC);
35545 		zval_ptr_dtor_nogc(free_op_data);
35546 		goto exit_assign_obj;
35547 	}
35548 
35549 	if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
35550 		ZVAL_DEREF(value);
35551 	}
35552 
35553 	Z_OBJ_HT_P(object)->write_property(object, property, value, (IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
35554 
35555 	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
35556 		ZVAL_COPY(EX_VAR(opline->result.var), value);
35557 	}
35558 	zval_ptr_dtor_nogc(free_op_data);
35559 exit_assign_obj:
35560 
35561 
35562 	/* assign_obj has two opcodes! */
35563 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
35564 }
35565 
35566 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_UNUSED_CV_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
35567 {
35568 	USE_OPLINE
35569 	zend_free_op free_op_data;
35570 	zval *object, *property, *value, tmp;
35571 
35572 	SAVE_OPLINE();
35573 	object = &EX(This);
35574 
35575 	if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
35576 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
35577 	}
35578 
35579 	property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
35580 	value = _get_zval_ptr_var((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
35581 
35582 	if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
35583 		if (Z_ISREF_P(object)) {
35584 			object = Z_REFVAL_P(object);
35585 			if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
35586 				goto assign_object;
35587 			}
35588 		}
35589 		if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
35590 			zval_ptr_dtor_nogc(free_op_data);
35591 			goto exit_assign_obj;
35592 		}
35593 	}
35594 
35595 assign_object:
35596 	if (IS_CV == IS_CONST &&
35597 	    EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(opline->extended_value))) {
35598 		uintptr_t prop_offset = (uintptr_t)CACHED_PTR(opline->extended_value + sizeof(void*));
35599 		zend_object *zobj = Z_OBJ_P(object);
35600 		zval *property_val;
35601 
35602 		if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
35603 			property_val = OBJ_PROP(zobj, prop_offset);
35604 			if (Z_TYPE_P(property_val) != IS_UNDEF) {
35605 fast_assign_obj:
35606 				value = zend_assign_to_variable(property_val, value, IS_VAR);
35607 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
35608 					ZVAL_COPY(EX_VAR(opline->result.var), value);
35609 				}
35610 				goto exit_assign_obj;
35611 			}
35612 		} else {
35613 			if (EXPECTED(zobj->properties != NULL)) {
35614 				if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
35615 					if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
35616 						GC_DELREF(zobj->properties);
35617 					}
35618 					zobj->properties = zend_array_dup(zobj->properties);
35619 				}
35620 				property_val = zend_hash_find_ex(zobj->properties, Z_STR_P(property), 1);
35621 				if (property_val) {
35622 					goto fast_assign_obj;
35623 				}
35624 			}
35625 
35626 			if (!zobj->ce->__set) {
35627 
35628 				if (EXPECTED(zobj->properties == NULL)) {
35629 					rebuild_object_properties(zobj);
35630 				}
35631 				if (IS_VAR == IS_CONST) {
35632 					if (UNEXPECTED(Z_OPT_REFCOUNTED_P(value))) {
35633 						Z_ADDREF_P(value);
35634 					}
35635 				} else if (IS_VAR != IS_TMP_VAR) {
35636 					if (Z_ISREF_P(value)) {
35637 						if (IS_VAR == IS_VAR) {
35638 							zend_reference *ref = Z_REF_P(value);
35639 							if (GC_DELREF(ref) == 0) {
35640 								ZVAL_COPY_VALUE(&tmp, Z_REFVAL_P(value));
35641 								efree_size(ref, sizeof(zend_reference));
35642 								value = &tmp;
35643 							} else {
35644 								value = Z_REFVAL_P(value);
35645 								Z_TRY_ADDREF_P(value);
35646 							}
35647 						} else {
35648 							value = Z_REFVAL_P(value);
35649 							Z_TRY_ADDREF_P(value);
35650 						}
35651 					} else if (IS_VAR == IS_CV) {
35652 						Z_TRY_ADDREF_P(value);
35653 					}
35654 				}
35655 				zend_hash_add_new(zobj->properties, Z_STR_P(property), value);
35656 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
35657 					ZVAL_COPY(EX_VAR(opline->result.var), value);
35658 				}
35659 				goto exit_assign_obj;
35660 			}
35661 		}
35662 	}
35663 
35664 	if (!Z_OBJ_HT_P(object)->write_property) {
35665 		zend_wrong_property_assignment(property OPLINE_CC EXECUTE_DATA_CC);
35666 		zval_ptr_dtor_nogc(free_op_data);
35667 		goto exit_assign_obj;
35668 	}
35669 
35670 	if (IS_VAR == IS_CV || IS_VAR == IS_VAR) {
35671 		ZVAL_DEREF(value);
35672 	}
35673 
35674 	Z_OBJ_HT_P(object)->write_property(object, property, value, (IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
35675 
35676 	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
35677 		ZVAL_COPY(EX_VAR(opline->result.var), value);
35678 	}
35679 	zval_ptr_dtor_nogc(free_op_data);
35680 exit_assign_obj:
35681 
35682 
35683 	/* assign_obj has two opcodes! */
35684 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
35685 }
35686 
35687 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_UNUSED_CV_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
35688 {
35689 	USE_OPLINE
35690 
35691 	zval *object, *property, *value, tmp;
35692 
35693 	SAVE_OPLINE();
35694 	object = &EX(This);
35695 
35696 	if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
35697 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
35698 	}
35699 
35700 	property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
35701 	value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
35702 
35703 	if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
35704 		if (Z_ISREF_P(object)) {
35705 			object = Z_REFVAL_P(object);
35706 			if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
35707 				goto assign_object;
35708 			}
35709 		}
35710 		if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
35711 
35712 			goto exit_assign_obj;
35713 		}
35714 	}
35715 
35716 assign_object:
35717 	if (IS_CV == IS_CONST &&
35718 	    EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(opline->extended_value))) {
35719 		uintptr_t prop_offset = (uintptr_t)CACHED_PTR(opline->extended_value + sizeof(void*));
35720 		zend_object *zobj = Z_OBJ_P(object);
35721 		zval *property_val;
35722 
35723 		if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
35724 			property_val = OBJ_PROP(zobj, prop_offset);
35725 			if (Z_TYPE_P(property_val) != IS_UNDEF) {
35726 fast_assign_obj:
35727 				value = zend_assign_to_variable(property_val, value, IS_CV);
35728 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
35729 					ZVAL_COPY(EX_VAR(opline->result.var), value);
35730 				}
35731 				goto exit_assign_obj;
35732 			}
35733 		} else {
35734 			if (EXPECTED(zobj->properties != NULL)) {
35735 				if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
35736 					if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
35737 						GC_DELREF(zobj->properties);
35738 					}
35739 					zobj->properties = zend_array_dup(zobj->properties);
35740 				}
35741 				property_val = zend_hash_find_ex(zobj->properties, Z_STR_P(property), 1);
35742 				if (property_val) {
35743 					goto fast_assign_obj;
35744 				}
35745 			}
35746 
35747 			if (!zobj->ce->__set) {
35748 
35749 				if (EXPECTED(zobj->properties == NULL)) {
35750 					rebuild_object_properties(zobj);
35751 				}
35752 				if (IS_CV == IS_CONST) {
35753 					if (UNEXPECTED(Z_OPT_REFCOUNTED_P(value))) {
35754 						Z_ADDREF_P(value);
35755 					}
35756 				} else if (IS_CV != IS_TMP_VAR) {
35757 					if (Z_ISREF_P(value)) {
35758 						if (IS_CV == IS_VAR) {
35759 							zend_reference *ref = Z_REF_P(value);
35760 							if (GC_DELREF(ref) == 0) {
35761 								ZVAL_COPY_VALUE(&tmp, Z_REFVAL_P(value));
35762 								efree_size(ref, sizeof(zend_reference));
35763 								value = &tmp;
35764 							} else {
35765 								value = Z_REFVAL_P(value);
35766 								Z_TRY_ADDREF_P(value);
35767 							}
35768 						} else {
35769 							value = Z_REFVAL_P(value);
35770 							Z_TRY_ADDREF_P(value);
35771 						}
35772 					} else if (IS_CV == IS_CV) {
35773 						Z_TRY_ADDREF_P(value);
35774 					}
35775 				}
35776 				zend_hash_add_new(zobj->properties, Z_STR_P(property), value);
35777 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
35778 					ZVAL_COPY(EX_VAR(opline->result.var), value);
35779 				}
35780 				goto exit_assign_obj;
35781 			}
35782 		}
35783 	}
35784 
35785 	if (!Z_OBJ_HT_P(object)->write_property) {
35786 		zend_wrong_property_assignment(property OPLINE_CC EXECUTE_DATA_CC);
35787 
35788 		goto exit_assign_obj;
35789 	}
35790 
35791 	if (IS_CV == IS_CV || IS_CV == IS_VAR) {
35792 		ZVAL_DEREF(value);
35793 	}
35794 
35795 	Z_OBJ_HT_P(object)->write_property(object, property, value, (IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
35796 
35797 	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
35798 		ZVAL_COPY(EX_VAR(opline->result.var), value);
35799 	}
35800 
35801 exit_assign_obj:
35802 
35803 
35804 	/* assign_obj has two opcodes! */
35805 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
35806 }
35807 
35808 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ROPE_INIT_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
35809 {
35810 	USE_OPLINE
35811 
35812 	zend_string **rope;
35813 	zval *var;
35814 
35815 	/* Compiler allocates the necessary number of zval slots to keep the rope */
35816 	rope = (zend_string**)EX_VAR(opline->result.var);
35817 	if (IS_CV == IS_CONST) {
35818 		var = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
35819 		rope[0] = Z_STR_P(var);
35820 		if (UNEXPECTED(Z_REFCOUNTED_P(var))) {
35821 			Z_ADDREF_P(var);
35822 		}
35823 	} else {
35824 		var = EX_VAR(opline->op2.var);
35825 		if (EXPECTED(Z_TYPE_P(var) == IS_STRING)) {
35826 			if (IS_CV == IS_CV) {
35827 				rope[0] = zend_string_copy(Z_STR_P(var));
35828 			} else {
35829 				rope[0] = Z_STR_P(var);
35830 			}
35831 		} else {
35832 			SAVE_OPLINE();
35833 			if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(var) == IS_UNDEF)) {
35834 				GET_OP2_UNDEF_CV(var, BP_VAR_R);
35835 			}
35836 			rope[0] = zval_get_string_func(var);
35837 
35838 			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
35839 		}
35840 	}
35841 	ZEND_VM_NEXT_OPCODE();
35842 }
35843 
35844 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_CLASS_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
35845 {
35846 
35847 	zval *class_name;
35848 	USE_OPLINE
35849 
35850 	SAVE_OPLINE();
35851 	if (IS_CV == IS_UNUSED) {
35852 		Z_CE_P(EX_VAR(opline->result.var)) = zend_fetch_class(NULL, opline->op1.num);
35853 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
35854 	} else if (IS_CV == IS_CONST) {
35855 		zend_class_entry *ce = CACHED_PTR(opline->extended_value);
35856 
35857 		if (UNEXPECTED(ce == NULL)) {
35858 			class_name = EX_VAR(opline->op2.var);
35859 			ce = zend_fetch_class_by_name(Z_STR_P(class_name), class_name + 1, opline->op1.num);
35860 			CACHE_PTR(opline->extended_value, ce);
35861 		}
35862 		Z_CE_P(EX_VAR(opline->result.var)) = ce;
35863 	} else {
35864 		class_name = EX_VAR(opline->op2.var);
35865 try_class_name:
35866 		if (Z_TYPE_P(class_name) == IS_OBJECT) {
35867 			Z_CE_P(EX_VAR(opline->result.var)) = Z_OBJCE_P(class_name);
35868 		} else if (Z_TYPE_P(class_name) == IS_STRING) {
35869 			Z_CE_P(EX_VAR(opline->result.var)) = zend_fetch_class(Z_STR_P(class_name), opline->op1.num);
35870 		} else if ((IS_CV & (IS_VAR|IS_CV)) && Z_TYPE_P(class_name) == IS_REFERENCE) {
35871 			class_name = Z_REFVAL_P(class_name);
35872 			goto try_class_name;
35873 		} else {
35874 			if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(class_name) == IS_UNDEF)) {
35875 				GET_OP2_UNDEF_CV(class_name, BP_VAR_R);
35876 				if (UNEXPECTED(EG(exception) != NULL)) {
35877 					HANDLE_EXCEPTION();
35878 				}
35879 			}
35880 			zend_throw_error(NULL, "Class name must be a valid object or a string");
35881 		}
35882 	}
35883 
35884 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
35885 }
35886 
35887 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
35888 {
35889 	USE_OPLINE
35890 	zval *function_name;
35891 	zend_free_op free_op1;
35892 	zval *object;
35893 	zend_function *fbc;
35894 	zend_class_entry *called_scope;
35895 	zend_object *obj;
35896 	zend_execute_data *call;
35897 	uint32_t call_info;
35898 
35899 	SAVE_OPLINE();
35900 
35901 	object = &EX(This);
35902 
35903 	if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
35904 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
35905 	}
35906 
35907 	if (IS_CV != IS_CONST) {
35908 		function_name = EX_VAR(opline->op2.var);
35909 	}
35910 
35911 	if (IS_CV != IS_CONST &&
35912 	    UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) {
35913 		do {
35914 			if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(function_name)) {
35915 				function_name = Z_REFVAL_P(function_name);
35916 				if (EXPECTED(Z_TYPE_P(function_name) == IS_STRING)) {
35917 					break;
35918 				}
35919 			} else if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
35920 				GET_OP2_UNDEF_CV(function_name, BP_VAR_R);
35921 				if (UNEXPECTED(EG(exception) != NULL)) {
35922 
35923 					HANDLE_EXCEPTION();
35924 				}
35925 			}
35926 			zend_throw_error(NULL, "Method name must be a string");
35927 
35928 
35929 			HANDLE_EXCEPTION();
35930 		} while (0);
35931 	}
35932 
35933 	if (IS_UNUSED != IS_UNUSED) {
35934 		do {
35935 			if (IS_UNUSED == IS_CONST || UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
35936 				if ((IS_UNUSED & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(object))) {
35937 					object = Z_REFVAL_P(object);
35938 					if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
35939 						break;
35940 					}
35941 				}
35942 				if (IS_UNUSED == IS_CV && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
35943 					object = GET_OP1_UNDEF_CV(object, BP_VAR_R);
35944 					if (UNEXPECTED(EG(exception) != NULL)) {
35945 						if (IS_CV != IS_CONST) {
35946 
35947 						}
35948 						HANDLE_EXCEPTION();
35949 					}
35950 				}
35951 				if (IS_CV == IS_CONST) {
35952 					function_name = EX_VAR(opline->op2.var);
35953 				}
35954 				zend_invalid_method_call(object, function_name);
35955 
35956 
35957 				HANDLE_EXCEPTION();
35958 			}
35959 		} while (0);
35960 	}
35961 
35962 	obj = Z_OBJ_P(object);
35963 	called_scope = obj->ce;
35964 
35965 	if (IS_CV == IS_CONST &&
35966 	    EXPECTED(CACHED_PTR(opline->result.num) == called_scope)) {
35967 	    fbc = CACHED_PTR(opline->result.num + sizeof(void*));
35968 	} else {
35969 	    zend_object *orig_obj = obj;
35970 
35971 		if (UNEXPECTED(obj->handlers->get_method == NULL)) {
35972 			zend_throw_error(NULL, "Object does not support method calls");
35973 
35974 
35975 			HANDLE_EXCEPTION();
35976 		}
35977 
35978 		if (IS_CV == IS_CONST) {
35979 			function_name = EX_VAR(opline->op2.var);
35980 		}
35981 
35982 		/* First, locate the function. */
35983 		fbc = obj->handlers->get_method(&obj, Z_STR_P(function_name), ((IS_CV == IS_CONST) ? (RT_CONSTANT(opline, opline->op2) + 1) : NULL));
35984 		if (UNEXPECTED(fbc == NULL)) {
35985 			if (EXPECTED(!EG(exception))) {
35986 				zend_undefined_method(obj->ce, Z_STR_P(function_name));
35987 			}
35988 
35989 
35990 			HANDLE_EXCEPTION();
35991 		}
35992 		if (IS_CV == IS_CONST &&
35993 		    EXPECTED(fbc->type <= ZEND_USER_FUNCTION) &&
35994 		    EXPECTED(!(fbc->common.fn_flags & (ZEND_ACC_CALL_VIA_TRAMPOLINE|ZEND_ACC_NEVER_CACHE))) &&
35995 		    EXPECTED(obj == orig_obj)) {
35996 			CACHE_POLYMORPHIC_PTR(opline->result.num, called_scope, fbc);
35997 		}
35998 		if ((IS_UNUSED & (IS_VAR|IS_TMP_VAR)) && UNEXPECTED(obj != orig_obj)) {
35999 			/* Reset "object" to trigger reference counting */
36000 			object = NULL;
36001 		}
36002 		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!fbc->op_array.run_time_cache)) {
36003 			init_func_run_time_cache(&fbc->op_array);
36004 		}
36005 	}
36006 
36007 	if (IS_CV != IS_CONST) {
36008 
36009 	}
36010 
36011 	call_info = ZEND_CALL_NESTED_FUNCTION;
36012 	if (UNEXPECTED((fbc->common.fn_flags & ZEND_ACC_STATIC) != 0)) {
36013 		obj = NULL;
36014 
36015 		if ((IS_UNUSED & (IS_VAR|IS_TMP_VAR)) && UNEXPECTED(EG(exception))) {
36016 			HANDLE_EXCEPTION();
36017 		}
36018 	} else if (IS_UNUSED & (IS_VAR|IS_TMP_VAR|IS_CV)) {
36019 		/* CV may be changed indirectly (e.g. when it's a reference) */
36020 		call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_RELEASE_THIS;
36021 		if (IS_UNUSED == IS_CV) {
36022 			GC_ADDREF(obj); /* For $this pointer */
36023 		} else if (free_op1 != object) {
36024 			GC_ADDREF(obj); /* For $this pointer */
36025 
36026 		}
36027 	}
36028 
36029 	call = zend_vm_stack_push_call_frame(call_info,
36030 		fbc, opline->extended_value, called_scope, obj);
36031 	call->prev_execute_data = EX(call);
36032 	EX(call) = call;
36033 
36034 	ZEND_VM_NEXT_OPCODE();
36035 }
36036 
36037 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
36038 {
36039 	USE_OPLINE
36040 	zval *function_name;
36041 	zend_class_entry *ce;
36042 	zend_object *object;
36043 	zend_function *fbc;
36044 	zend_execute_data *call;
36045 
36046 	SAVE_OPLINE();
36047 
36048 	if (IS_UNUSED == IS_CONST) {
36049 		/* no function found. try a static method in class */
36050 		ce = CACHED_PTR(opline->result.num);
36051 		if (UNEXPECTED(ce == NULL)) {
36052 			ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), RT_CONSTANT(opline, opline->op1) + 1, ZEND_FETCH_CLASS_DEFAULT |  ZEND_FETCH_CLASS_EXCEPTION);
36053 			if (UNEXPECTED(ce == NULL)) {
36054 				ZEND_ASSERT(EG(exception));
36055 
36056 				HANDLE_EXCEPTION();
36057 			}
36058 			if (IS_CV != IS_CONST) {
36059 				CACHE_PTR(opline->result.num, ce);
36060 			}
36061 		}
36062 	} else if (IS_UNUSED == IS_UNUSED) {
36063 		ce = zend_fetch_class(NULL, opline->op1.num);
36064 		if (UNEXPECTED(ce == NULL)) {
36065 			ZEND_ASSERT(EG(exception));
36066 
36067 			HANDLE_EXCEPTION();
36068 		}
36069 	} else {
36070 		ce = Z_CE_P(EX_VAR(opline->op1.var));
36071 	}
36072 
36073 	if (IS_UNUSED == IS_CONST &&
36074 	    IS_CV == IS_CONST &&
36075 	    EXPECTED((fbc = CACHED_PTR(opline->result.num + sizeof(void*))) != NULL)) {
36076 		/* nothing to do */
36077 	} else if (IS_UNUSED != IS_CONST &&
36078 	           IS_CV == IS_CONST &&
36079 	           EXPECTED(CACHED_PTR(opline->result.num) == ce)) {
36080 		fbc = CACHED_PTR(opline->result.num + sizeof(void*));
36081 	} else if (IS_CV != IS_UNUSED) {
36082 
36083 
36084 		function_name = EX_VAR(opline->op2.var);
36085 		if (IS_CV != IS_CONST) {
36086 			if (UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) {
36087 				do {
36088 					if (IS_CV & (IS_VAR|IS_CV) && Z_ISREF_P(function_name)) {
36089 						function_name = Z_REFVAL_P(function_name);
36090 						if (EXPECTED(Z_TYPE_P(function_name) == IS_STRING)) {
36091 							break;
36092 						}
36093 					} else if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
36094 						GET_OP2_UNDEF_CV(function_name, BP_VAR_R);
36095 						if (UNEXPECTED(EG(exception) != NULL)) {
36096 							HANDLE_EXCEPTION();
36097 						}
36098 					}
36099 					zend_throw_error(NULL, "Function name must be a string");
36100 
36101 					HANDLE_EXCEPTION();
36102 				} while (0);
36103 			}
36104 		}
36105 
36106 		if (ce->get_static_method) {
36107 			fbc = ce->get_static_method(ce, Z_STR_P(function_name));
36108 		} else {
36109 			fbc = zend_std_get_static_method(ce, Z_STR_P(function_name), ((IS_CV == IS_CONST) ? (RT_CONSTANT(opline, opline->op2) + 1) : NULL));
36110 		}
36111 		if (UNEXPECTED(fbc == NULL)) {
36112 			if (EXPECTED(!EG(exception))) {
36113 				zend_undefined_method(ce, Z_STR_P(function_name));
36114 			}
36115 
36116 			HANDLE_EXCEPTION();
36117 		}
36118 		if (IS_CV == IS_CONST &&
36119 		    EXPECTED(fbc->type <= ZEND_USER_FUNCTION) &&
36120 		    EXPECTED(!(fbc->common.fn_flags & (ZEND_ACC_CALL_VIA_TRAMPOLINE|ZEND_ACC_NEVER_CACHE)))) {
36121 			CACHE_POLYMORPHIC_PTR(opline->result.num, ce, fbc);
36122 		}
36123 		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!fbc->op_array.run_time_cache)) {
36124 			init_func_run_time_cache(&fbc->op_array);
36125 		}
36126 		if (IS_CV != IS_CONST) {
36127 
36128 		}
36129 	} else {
36130 		if (UNEXPECTED(ce->constructor == NULL)) {
36131 			zend_throw_error(NULL, "Cannot call constructor");
36132 			HANDLE_EXCEPTION();
36133 		}
36134 		if (Z_TYPE(EX(This)) == IS_OBJECT && Z_OBJ(EX(This))->ce != ce->constructor->common.scope && (ce->constructor->common.fn_flags & ZEND_ACC_PRIVATE)) {
36135 			zend_throw_error(NULL, "Cannot call private %s::__construct()", ZSTR_VAL(ce->name));
36136 			HANDLE_EXCEPTION();
36137 		}
36138 		fbc = ce->constructor;
36139 		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!fbc->op_array.run_time_cache)) {
36140 			init_func_run_time_cache(&fbc->op_array);
36141 		}
36142 	}
36143 
36144 	object = NULL;
36145 	if (!(fbc->common.fn_flags & ZEND_ACC_STATIC)) {
36146 		if (Z_TYPE(EX(This)) == IS_OBJECT && instanceof_function(Z_OBJCE(EX(This)), ce)) {
36147 			object = Z_OBJ(EX(This));
36148 			ce = object->ce;
36149 		} else {
36150 			zend_non_static_method_call(fbc);
36151 			if (UNEXPECTED(EG(exception) != NULL)) {
36152 				HANDLE_EXCEPTION();
36153 			}
36154 		}
36155 	}
36156 
36157 	if (IS_UNUSED == IS_UNUSED) {
36158 		/* previous opcode is ZEND_FETCH_CLASS */
36159 		if ((opline->op1.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_PARENT ||
36160 		    (opline->op1.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_SELF) {
36161 			if (Z_TYPE(EX(This)) == IS_OBJECT) {
36162 				ce = Z_OBJCE(EX(This));
36163 			} else {
36164 				ce = Z_CE(EX(This));
36165 			}
36166 		}
36167 	}
36168 
36169 	call = zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_FUNCTION,
36170 		fbc, opline->extended_value, ce, object);
36171 	call->prev_execute_data = EX(call);
36172 	EX(call) = call;
36173 
36174 	ZEND_VM_NEXT_OPCODE();
36175 }
36176 
36177 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_UNSET_OBJ_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
36178 {
36179 	USE_OPLINE
36180 
36181 	zval *container;
36182 	zval *offset;
36183 
36184 	SAVE_OPLINE();
36185 	container = &EX(This);
36186 	if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
36187 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
36188 	}
36189 	offset = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
36190 
36191 	do {
36192 		if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) {
36193 			if (Z_ISREF_P(container)) {
36194 				container = Z_REFVAL_P(container);
36195 				if (Z_TYPE_P(container) != IS_OBJECT) {
36196 					break;
36197 				}
36198 			} else {
36199 				break;
36200 			}
36201 		}
36202 		if (Z_OBJ_HT_P(container)->unset_property) {
36203 			Z_OBJ_HT_P(container)->unset_property(container, offset, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL));
36204 		} else {
36205 			zend_wrong_property_unset(offset);
36206 		}
36207 	} while (0);
36208 
36209 
36210 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
36211 }
36212 
36213 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
36214 {
36215 	USE_OPLINE
36216 
36217 	zval *container;
36218 	int result;
36219 	zval *offset;
36220 
36221 	SAVE_OPLINE();
36222 	container = &EX(This);
36223 
36224 	if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
36225 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
36226 	}
36227 
36228 	offset = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
36229 
36230 	if (IS_UNUSED == IS_CONST ||
36231 	    (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
36232 		if ((IS_UNUSED & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
36233 			container = Z_REFVAL_P(container);
36234 			if (UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) {
36235 				goto isset_no_object;
36236 			}
36237 		} else {
36238 			goto isset_no_object;
36239 		}
36240 	}
36241 	if (UNEXPECTED(!Z_OBJ_HT_P(container)->has_property)) {
36242 		zend_wrong_property_check(offset);
36243 isset_no_object:
36244 		result = (opline->extended_value & ZEND_ISEMPTY);
36245 	} else {
36246 		result =
36247 			(opline->extended_value & ZEND_ISEMPTY) ^
36248 			Z_OBJ_HT_P(container)->has_property(container, offset, (opline->extended_value & ZEND_ISEMPTY), ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_ISEMPTY) : NULL));
36249 	}
36250 
36251 
36252 	ZEND_VM_SMART_BRANCH(result, 1);
36253 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
36254 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
36255 }
36256 
36257 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_YIELD_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
36258 {
36259 	USE_OPLINE
36260 
36261 	zend_generator *generator = zend_get_running_generator(EXECUTE_DATA_C);
36262 
36263 	SAVE_OPLINE();
36264 	if (UNEXPECTED(generator->flags & ZEND_GENERATOR_FORCED_CLOSE)) {
36265 		ZEND_VM_TAIL_CALL(zend_yield_in_closed_generator_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
36266 	}
36267 
36268 	/* Destroy the previously yielded value */
36269 	zval_ptr_dtor(&generator->value);
36270 
36271 	/* Destroy the previously yielded key */
36272 	zval_ptr_dtor(&generator->key);
36273 
36274 	/* Set the new yielded value */
36275 	if (IS_UNUSED != IS_UNUSED) {
36276 
36277 
36278 		if (UNEXPECTED(EX(func)->op_array.fn_flags & ZEND_ACC_RETURN_REFERENCE)) {
36279 			/* Constants and temporary variables aren't yieldable by reference,
36280 			 * but we still allow them with a notice. */
36281 			if (IS_UNUSED & (IS_CONST|IS_TMP_VAR)) {
36282 				zval *value;
36283 
36284 				zend_error(E_NOTICE, "Only variable references should be yielded by reference");
36285 
36286 				value = NULL;
36287 				ZVAL_COPY_VALUE(&generator->value, value);
36288 				if (IS_UNUSED == IS_CONST) {
36289 					if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
36290 						Z_ADDREF(generator->value);
36291 					}
36292 				}
36293 			} else {
36294 				zval *value_ptr = NULL;
36295 
36296 				/* If a function call result is yielded and the function did
36297 				 * not return by reference we throw a notice. */
36298 				if (IS_UNUSED == IS_VAR &&
36299 				    (value_ptr == &EG(uninitialized_zval) ||
36300 				     (opline->extended_value == ZEND_RETURNS_FUNCTION &&
36301 				      !Z_ISREF_P(value_ptr)))) {
36302 					zend_error(E_NOTICE, "Only variable references should be yielded by reference");
36303 					ZVAL_COPY(&generator->value, value_ptr);
36304 				} else {
36305 					if (Z_ISREF_P(value_ptr)) {
36306 						Z_ADDREF_P(value_ptr);
36307 					} else {
36308 						ZVAL_MAKE_REF_EX(value_ptr, 2);
36309 					}
36310 					ZVAL_REF(&generator->value, Z_REF_P(value_ptr));
36311 				}
36312 
36313 			}
36314 		} else {
36315 			zval *value = NULL;
36316 
36317 			/* Consts, temporary variables and references need copying */
36318 			if (IS_UNUSED == IS_CONST) {
36319 				ZVAL_COPY_VALUE(&generator->value, value);
36320 				if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
36321 					Z_ADDREF(generator->value);
36322 				}
36323 			} else if (IS_UNUSED == IS_TMP_VAR) {
36324 				ZVAL_COPY_VALUE(&generator->value, value);
36325             } else if ((IS_UNUSED & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
36326 				ZVAL_COPY(&generator->value, Z_REFVAL_P(value));
36327 
36328 			} else {
36329 				ZVAL_COPY_VALUE(&generator->value, value);
36330 				if (IS_UNUSED == IS_CV) {
36331 					if (Z_OPT_REFCOUNTED_P(value)) Z_ADDREF_P(value);
36332 				}
36333 			}
36334 		}
36335 	} else {
36336 		/* If no value was specified yield null */
36337 		ZVAL_NULL(&generator->value);
36338 	}
36339 
36340 	/* Set the new yielded key */
36341 	if (IS_CV != IS_UNUSED) {
36342 
36343 		zval *key = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
36344 
36345 		/* Consts, temporary variables and references need copying */
36346 		if (IS_CV == IS_CONST) {
36347 			ZVAL_COPY_VALUE(&generator->key, key);
36348 			if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->key))) {
36349 				Z_ADDREF(generator->key);
36350 			}
36351 		} else if (IS_CV == IS_TMP_VAR) {
36352 			ZVAL_COPY_VALUE(&generator->key, key);
36353 		} else if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(key)) {
36354 			ZVAL_COPY(&generator->key, Z_REFVAL_P(key));
36355 
36356 		} else {
36357 			ZVAL_COPY_VALUE(&generator->key, key);
36358 			if (IS_CV == IS_CV) {
36359 				if (Z_OPT_REFCOUNTED_P(key)) Z_ADDREF_P(key);
36360 			}
36361 		}
36362 
36363 		if (Z_TYPE(generator->key) == IS_LONG
36364 		    && Z_LVAL(generator->key) > generator->largest_used_integer_key
36365 		) {
36366 			generator->largest_used_integer_key = Z_LVAL(generator->key);
36367 		}
36368 	} else {
36369 		/* If no key was specified we use auto-increment keys */
36370 		generator->largest_used_integer_key++;
36371 		ZVAL_LONG(&generator->key, generator->largest_used_integer_key);
36372 	}
36373 
36374 	if (RETURN_VALUE_USED(opline)) {
36375 		/* If the return value of yield is used set the send
36376 		 * target and initialize it to NULL */
36377 		generator->send_target = EX_VAR(opline->result.var);
36378 		ZVAL_NULL(generator->send_target);
36379 	} else {
36380 		generator->send_target = NULL;
36381 	}
36382 
36383 	/* We increment to the next op, so we are at the correct position when the
36384 	 * generator is resumed. */
36385 	ZEND_VM_INC_OPCODE();
36386 
36387 	/* The GOTO VM uses a local opline variable. We need to set the opline
36388 	 * variable in execute_data so we don't resume at an old position. */
36389 	SAVE_OPLINE();
36390 
36391 	ZEND_VM_RETURN();
36392 }
36393 
36394 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BW_NOT_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
36395 {
36396 	USE_OPLINE
36397 
36398 	zval *op1;
36399 
36400 	op1 = EX_VAR(opline->op1.var);
36401 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
36402 		ZVAL_LONG(EX_VAR(opline->result.var), ~Z_LVAL_P(op1));
36403 		ZEND_VM_NEXT_OPCODE();
36404 	}
36405 
36406 	SAVE_OPLINE();
36407 	bitwise_not_function(EX_VAR(opline->result.var),
36408 		_get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC));
36409 
36410 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
36411 }
36412 
36413 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BOOL_NOT_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
36414 {
36415 	USE_OPLINE
36416 	zval *val;
36417 
36418 
36419 	val = EX_VAR(opline->op1.var);
36420 	if (Z_TYPE_INFO_P(val) == IS_TRUE) {
36421 		ZVAL_FALSE(EX_VAR(opline->result.var));
36422 	} else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) {
36423 		/* The result and op1 can be the same cv zval */
36424 		const uint32_t orig_val_type = Z_TYPE_INFO_P(val);
36425 		ZVAL_TRUE(EX_VAR(opline->result.var));
36426 		if (IS_CV == IS_CV && UNEXPECTED(orig_val_type == IS_UNDEF)) {
36427 			SAVE_OPLINE();
36428 			GET_OP1_UNDEF_CV(val, BP_VAR_R);
36429 			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
36430 		}
36431 	} else {
36432 		SAVE_OPLINE();
36433 		ZVAL_BOOL(EX_VAR(opline->result.var), !i_zend_is_true(val));
36434 
36435 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
36436 	}
36437 	ZEND_VM_NEXT_OPCODE();
36438 }
36439 
36440 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_INC_SPEC_CV_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
36441 {
36442 	USE_OPLINE
36443 
36444 	zval *var_ptr;
36445 
36446 	var_ptr = EX_VAR(opline->op1.var);
36447 
36448 	if (EXPECTED(Z_TYPE_P(var_ptr) == IS_LONG)) {
36449 		fast_long_increment_function(var_ptr);
36450 		if (UNEXPECTED(0)) {
36451 			ZVAL_COPY_VALUE(EX_VAR(opline->result.var), var_ptr);
36452 		}
36453 		ZEND_VM_NEXT_OPCODE();
36454 	}
36455 
36456 	if (IS_CV == IS_VAR && UNEXPECTED(Z_ISERROR_P(var_ptr))) {
36457 		if (UNEXPECTED(0)) {
36458 			ZVAL_NULL(EX_VAR(opline->result.var));
36459 		}
36460 		ZEND_VM_NEXT_OPCODE();
36461 	}
36462 
36463 	SAVE_OPLINE();
36464 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(var_ptr) == IS_UNDEF)) {
36465 		var_ptr = GET_OP1_UNDEF_CV(var_ptr, BP_VAR_RW);
36466 	}
36467 	ZVAL_DEREF(var_ptr);
36468 
36469 	increment_function(var_ptr);
36470 
36471 	if (UNEXPECTED(0)) {
36472 		ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
36473 	}
36474 
36475 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
36476 }
36477 
36478 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_INC_SPEC_CV_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
36479 {
36480 	USE_OPLINE
36481 
36482 	zval *var_ptr;
36483 
36484 	var_ptr = EX_VAR(opline->op1.var);
36485 
36486 	if (EXPECTED(Z_TYPE_P(var_ptr) == IS_LONG)) {
36487 		fast_long_increment_function(var_ptr);
36488 		if (UNEXPECTED(1)) {
36489 			ZVAL_COPY_VALUE(EX_VAR(opline->result.var), var_ptr);
36490 		}
36491 		ZEND_VM_NEXT_OPCODE();
36492 	}
36493 
36494 	if (IS_CV == IS_VAR && UNEXPECTED(Z_ISERROR_P(var_ptr))) {
36495 		if (UNEXPECTED(1)) {
36496 			ZVAL_NULL(EX_VAR(opline->result.var));
36497 		}
36498 		ZEND_VM_NEXT_OPCODE();
36499 	}
36500 
36501 	SAVE_OPLINE();
36502 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(var_ptr) == IS_UNDEF)) {
36503 		var_ptr = GET_OP1_UNDEF_CV(var_ptr, BP_VAR_RW);
36504 	}
36505 	ZVAL_DEREF(var_ptr);
36506 
36507 	increment_function(var_ptr);
36508 
36509 	if (UNEXPECTED(1)) {
36510 		ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
36511 	}
36512 
36513 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
36514 }
36515 
36516 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_DEC_SPEC_CV_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
36517 {
36518 	USE_OPLINE
36519 
36520 	zval *var_ptr;
36521 
36522 	var_ptr = EX_VAR(opline->op1.var);
36523 
36524 	if (EXPECTED(Z_TYPE_P(var_ptr) == IS_LONG)) {
36525 		fast_long_decrement_function(var_ptr);
36526 		if (UNEXPECTED(0)) {
36527 			ZVAL_COPY_VALUE(EX_VAR(opline->result.var), var_ptr);
36528 		}
36529 		ZEND_VM_NEXT_OPCODE();
36530 	}
36531 
36532 	if (IS_CV == IS_VAR && UNEXPECTED(Z_ISERROR_P(var_ptr))) {
36533 		if (UNEXPECTED(0)) {
36534 			ZVAL_NULL(EX_VAR(opline->result.var));
36535 		}
36536 		ZEND_VM_NEXT_OPCODE();
36537 	}
36538 
36539 	SAVE_OPLINE();
36540 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(var_ptr) == IS_UNDEF)) {
36541 		var_ptr = GET_OP1_UNDEF_CV(var_ptr, BP_VAR_RW);
36542 	}
36543 	ZVAL_DEREF(var_ptr);
36544 
36545 	decrement_function(var_ptr);
36546 
36547 	if (UNEXPECTED(0)) {
36548 		ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
36549 	}
36550 
36551 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
36552 }
36553 
36554 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_DEC_SPEC_CV_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
36555 {
36556 	USE_OPLINE
36557 
36558 	zval *var_ptr;
36559 
36560 	var_ptr = EX_VAR(opline->op1.var);
36561 
36562 	if (EXPECTED(Z_TYPE_P(var_ptr) == IS_LONG)) {
36563 		fast_long_decrement_function(var_ptr);
36564 		if (UNEXPECTED(1)) {
36565 			ZVAL_COPY_VALUE(EX_VAR(opline->result.var), var_ptr);
36566 		}
36567 		ZEND_VM_NEXT_OPCODE();
36568 	}
36569 
36570 	if (IS_CV == IS_VAR && UNEXPECTED(Z_ISERROR_P(var_ptr))) {
36571 		if (UNEXPECTED(1)) {
36572 			ZVAL_NULL(EX_VAR(opline->result.var));
36573 		}
36574 		ZEND_VM_NEXT_OPCODE();
36575 	}
36576 
36577 	SAVE_OPLINE();
36578 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(var_ptr) == IS_UNDEF)) {
36579 		var_ptr = GET_OP1_UNDEF_CV(var_ptr, BP_VAR_RW);
36580 	}
36581 	ZVAL_DEREF(var_ptr);
36582 
36583 	decrement_function(var_ptr);
36584 
36585 	if (UNEXPECTED(1)) {
36586 		ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
36587 	}
36588 
36589 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
36590 }
36591 
36592 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_POST_INC_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
36593 {
36594 	USE_OPLINE
36595 
36596 	zval *var_ptr;
36597 
36598 	var_ptr = EX_VAR(opline->op1.var);
36599 
36600 	if (EXPECTED(Z_TYPE_P(var_ptr) == IS_LONG)) {
36601 		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(var_ptr));
36602 		fast_long_increment_function(var_ptr);
36603 		ZEND_VM_NEXT_OPCODE();
36604 	}
36605 
36606 	if (IS_CV == IS_VAR && UNEXPECTED(Z_ISERROR_P(var_ptr))) {
36607 		ZVAL_NULL(EX_VAR(opline->result.var));
36608 		ZEND_VM_NEXT_OPCODE();
36609 	}
36610 
36611 	SAVE_OPLINE();
36612 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(var_ptr) == IS_UNDEF)) {
36613 		var_ptr = GET_OP1_UNDEF_CV(var_ptr, BP_VAR_RW);
36614 	}
36615 	ZVAL_DEREF(var_ptr);
36616 	ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
36617 
36618 	increment_function(var_ptr);
36619 
36620 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
36621 }
36622 
36623 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_POST_DEC_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
36624 {
36625 	USE_OPLINE
36626 
36627 	zval *var_ptr;
36628 
36629 	var_ptr = EX_VAR(opline->op1.var);
36630 
36631 	if (EXPECTED(Z_TYPE_P(var_ptr) == IS_LONG)) {
36632 		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(var_ptr));
36633 		fast_long_decrement_function(var_ptr);
36634 		ZEND_VM_NEXT_OPCODE();
36635 	}
36636 
36637 	if (IS_CV == IS_VAR && UNEXPECTED(Z_ISERROR_P(var_ptr))) {
36638 		ZVAL_NULL(EX_VAR(opline->result.var));
36639 		ZEND_VM_NEXT_OPCODE();
36640 	}
36641 
36642 	SAVE_OPLINE();
36643 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(var_ptr) == IS_UNDEF)) {
36644 		var_ptr = GET_OP1_UNDEF_CV(var_ptr, BP_VAR_RW);
36645 	}
36646 	ZVAL_DEREF(var_ptr);
36647 	ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
36648 
36649 	decrement_function(var_ptr);
36650 
36651 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
36652 }
36653 
36654 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ECHO_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
36655 {
36656 	USE_OPLINE
36657 
36658 	zval *z;
36659 
36660 	SAVE_OPLINE();
36661 	z = EX_VAR(opline->op1.var);
36662 
36663 	if (Z_TYPE_P(z) == IS_STRING) {
36664 		zend_string *str = Z_STR_P(z);
36665 
36666 		if (ZSTR_LEN(str) != 0) {
36667 			zend_write(ZSTR_VAL(str), ZSTR_LEN(str));
36668 		}
36669 	} else {
36670 		zend_string *str = zval_get_string_func(z);
36671 
36672 		if (ZSTR_LEN(str) != 0) {
36673 			zend_write(ZSTR_VAL(str), ZSTR_LEN(str));
36674 		} else if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(z) == IS_UNDEF)) {
36675 			GET_OP1_UNDEF_CV(z, BP_VAR_R);
36676 		}
36677 		zend_string_release_ex(str, 0);
36678 	}
36679 
36680 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
36681 }
36682 
36683 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_JMPZ_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
36684 {
36685 	USE_OPLINE
36686 
36687 	zval *val;
36688 
36689 	val = EX_VAR(opline->op1.var);
36690 
36691 	if (Z_TYPE_INFO_P(val) == IS_TRUE) {
36692 		ZEND_VM_NEXT_OPCODE();
36693 	} else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) {
36694 		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) {
36695 			SAVE_OPLINE();
36696 			GET_OP1_UNDEF_CV(val, BP_VAR_R);
36697 			if (UNEXPECTED(EG(exception))) {
36698 				HANDLE_EXCEPTION();
36699 			}
36700 		}
36701 		ZEND_VM_JMP_EX(OP_JMP_ADDR(opline, opline->op2), 0);
36702 	}
36703 
36704 	SAVE_OPLINE();
36705 	if (i_zend_is_true(val)) {
36706 		opline++;
36707 	} else {
36708 		opline = OP_JMP_ADDR(opline, opline->op2);
36709 	}
36710 
36711 	ZEND_VM_JMP(opline);
36712 }
36713 
36714 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_JMPNZ_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
36715 {
36716 	USE_OPLINE
36717 
36718 	zval *val;
36719 
36720 	val = EX_VAR(opline->op1.var);
36721 
36722 	if (Z_TYPE_INFO_P(val) == IS_TRUE) {
36723 		ZEND_VM_JMP_EX(OP_JMP_ADDR(opline, opline->op2), 0);
36724 	} else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) {
36725 		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) {
36726 			SAVE_OPLINE();
36727 			GET_OP1_UNDEF_CV(val, BP_VAR_R);
36728 			if (UNEXPECTED(EG(exception))) {
36729 				HANDLE_EXCEPTION();
36730 			}
36731 		}
36732 		ZEND_VM_NEXT_OPCODE();
36733 	}
36734 
36735 	SAVE_OPLINE();
36736 	if (i_zend_is_true(val)) {
36737 		opline = OP_JMP_ADDR(opline, opline->op2);
36738 	} else {
36739 		opline++;
36740 	}
36741 
36742 	ZEND_VM_JMP(opline);
36743 }
36744 
36745 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_JMPZNZ_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
36746 {
36747 	USE_OPLINE
36748 
36749 	zval *val;
36750 
36751 	val = EX_VAR(opline->op1.var);
36752 
36753 	if (EXPECTED(Z_TYPE_INFO_P(val) == IS_TRUE)) {
36754 		ZEND_VM_SET_RELATIVE_OPCODE(opline, opline->extended_value);
36755 		ZEND_VM_CONTINUE();
36756 	} else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) {
36757 		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) {
36758 			SAVE_OPLINE();
36759 			GET_OP1_UNDEF_CV(val, BP_VAR_R);
36760 			if (UNEXPECTED(EG(exception))) {
36761 				HANDLE_EXCEPTION();
36762 			}
36763 		}
36764 		ZEND_VM_JMP_EX(OP_JMP_ADDR(opline, opline->op2), 0);
36765 	}
36766 
36767 	SAVE_OPLINE();
36768 	if (i_zend_is_true(val)) {
36769 		opline = ZEND_OFFSET_TO_OPLINE(opline, opline->extended_value);
36770 	} else {
36771 		opline = OP_JMP_ADDR(opline, opline->op2);
36772 	}
36773 
36774 	ZEND_VM_JMP(opline);
36775 }
36776 
36777 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_JMPZ_EX_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
36778 {
36779 	USE_OPLINE
36780 
36781 	zval *val;
36782 	int ret;
36783 
36784 	val = EX_VAR(opline->op1.var);
36785 
36786 	if (Z_TYPE_INFO_P(val) == IS_TRUE) {
36787 		ZVAL_TRUE(EX_VAR(opline->result.var));
36788 		ZEND_VM_NEXT_OPCODE();
36789 	} else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) {
36790 		ZVAL_FALSE(EX_VAR(opline->result.var));
36791 		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) {
36792 			SAVE_OPLINE();
36793 			GET_OP1_UNDEF_CV(val, BP_VAR_R);
36794 			if (UNEXPECTED(EG(exception))) {
36795 				HANDLE_EXCEPTION();
36796 			}
36797 		}
36798 		ZEND_VM_JMP_EX(OP_JMP_ADDR(opline, opline->op2), 0);
36799 	}
36800 
36801 	SAVE_OPLINE();
36802 	ret = i_zend_is_true(val);
36803 
36804 	if (ret) {
36805 		ZVAL_TRUE(EX_VAR(opline->result.var));
36806 		opline++;
36807 	} else {
36808 		ZVAL_FALSE(EX_VAR(opline->result.var));
36809 		opline = OP_JMP_ADDR(opline, opline->op2);
36810 	}
36811 	ZEND_VM_JMP(opline);
36812 }
36813 
36814 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_JMPNZ_EX_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
36815 {
36816 	USE_OPLINE
36817 
36818 	zval *val;
36819 	int ret;
36820 
36821 	val = EX_VAR(opline->op1.var);
36822 
36823 	if (Z_TYPE_INFO_P(val) == IS_TRUE) {
36824 		ZVAL_TRUE(EX_VAR(opline->result.var));
36825 		ZEND_VM_JMP_EX(OP_JMP_ADDR(opline, opline->op2), 0);
36826 	} else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) {
36827 		ZVAL_FALSE(EX_VAR(opline->result.var));
36828 		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) {
36829 			SAVE_OPLINE();
36830 			GET_OP1_UNDEF_CV(val, BP_VAR_R);
36831 			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
36832 		} else {
36833 			ZEND_VM_NEXT_OPCODE();
36834 		}
36835 	}
36836 
36837 	SAVE_OPLINE();
36838 	ret = i_zend_is_true(val);
36839 
36840 	if (ret) {
36841 		ZVAL_TRUE(EX_VAR(opline->result.var));
36842 		opline = OP_JMP_ADDR(opline, opline->op2);
36843 	} else {
36844 		ZVAL_FALSE(EX_VAR(opline->result.var));
36845 		opline++;
36846 	}
36847 	ZEND_VM_JMP(opline);
36848 }
36849 
36850 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_RETURN_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
36851 {
36852 	USE_OPLINE
36853 	zval *retval_ptr;
36854 	zval *return_value;
36855 	zend_free_op free_op1;
36856 
36857 	retval_ptr = EX_VAR(opline->op1.var);
36858 	return_value = EX(return_value);
36859 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(retval_ptr) == IS_UNDEF)) {
36860 		SAVE_OPLINE();
36861 		retval_ptr = GET_OP1_UNDEF_CV(retval_ptr, BP_VAR_R);
36862 		if (return_value) {
36863 			ZVAL_NULL(return_value);
36864 		}
36865 	} else if (!return_value) {
36866 		if (IS_CV & (IS_VAR|IS_TMP_VAR)) {
36867 			if (Z_REFCOUNTED_P(free_op1) && !Z_DELREF_P(free_op1)) {
36868 				SAVE_OPLINE();
36869 				rc_dtor_func(Z_COUNTED_P(free_op1));
36870 			}
36871 		}
36872 	} else {
36873 		if ((IS_CV & (IS_CONST|IS_TMP_VAR))) {
36874 			ZVAL_COPY_VALUE(return_value, retval_ptr);
36875 			if (IS_CV == IS_CONST) {
36876 				if (UNEXPECTED(Z_OPT_REFCOUNTED_P(return_value))) {
36877 					Z_ADDREF_P(return_value);
36878 				}
36879 			}
36880 		} else if (IS_CV == IS_CV) {
36881 			if (Z_OPT_REFCOUNTED_P(retval_ptr)) {
36882 				if (EXPECTED(!Z_OPT_ISREF_P(retval_ptr))) {
36883 					ZVAL_COPY_VALUE(return_value, retval_ptr);
36884 					if (EXPECTED(!(EX_CALL_INFO() & ZEND_CALL_CODE))) {
36885 						zend_refcounted *ref = Z_COUNTED_P(retval_ptr);
36886 						if (GC_MAY_LEAK(ref)) {
36887 							gc_possible_root(ref);
36888 						}
36889 						ZVAL_NULL(retval_ptr);
36890 					} else {
36891 						Z_ADDREF_P(return_value);
36892 					}
36893 				} else {
36894 					retval_ptr = Z_REFVAL_P(retval_ptr);
36895 					ZVAL_COPY(return_value, retval_ptr);
36896 				}
36897 			} else {
36898 				ZVAL_COPY_VALUE(return_value, retval_ptr);
36899 			}
36900 		} else /* if (IS_CV == IS_VAR) */ {
36901 			if (UNEXPECTED(Z_ISREF_P(retval_ptr))) {
36902 				zend_refcounted *ref = Z_COUNTED_P(retval_ptr);
36903 
36904 				retval_ptr = Z_REFVAL_P(retval_ptr);
36905 				ZVAL_COPY_VALUE(return_value, retval_ptr);
36906 				if (UNEXPECTED(GC_DELREF(ref) == 0)) {
36907 					efree_size(ref, sizeof(zend_reference));
36908 				} else if (Z_OPT_REFCOUNTED_P(retval_ptr)) {
36909 					Z_ADDREF_P(retval_ptr);
36910 				}
36911 			} else {
36912 				ZVAL_COPY_VALUE(return_value, retval_ptr);
36913 			}
36914 		}
36915 	}
36916 	ZEND_VM_TAIL_CALL(zend_leave_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
36917 }
36918 
36919 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_RETURN_BY_REF_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
36920 {
36921 	USE_OPLINE
36922 	zval *retval_ptr;
36923 
36924 
36925 	SAVE_OPLINE();
36926 
36927 	do {
36928 		if ((IS_CV & (IS_CONST|IS_TMP_VAR)) ||
36929 		    (IS_CV == IS_VAR && opline->extended_value == ZEND_RETURNS_VALUE)) {
36930 			/* Not supposed to happen, but we'll allow it */
36931 			zend_error(E_NOTICE, "Only variable references should be returned by reference");
36932 
36933 			retval_ptr = _get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
36934 			if (!EX(return_value)) {
36935 
36936 			} else {
36937 				if (IS_CV == IS_VAR && UNEXPECTED(Z_ISREF_P(retval_ptr))) {
36938 					ZVAL_COPY_VALUE(EX(return_value), retval_ptr);
36939 					break;
36940 				}
36941 
36942 				ZVAL_NEW_REF(EX(return_value), retval_ptr);
36943 				if (IS_CV == IS_CONST) {
36944 					Z_TRY_ADDREF_P(retval_ptr);
36945 				}
36946 			}
36947 			break;
36948 		}
36949 
36950 		retval_ptr = _get_zval_ptr_cv_BP_VAR_W(opline->op1.var EXECUTE_DATA_CC);
36951 
36952 		if (IS_CV == IS_VAR) {
36953 			if (retval_ptr == &EG(uninitialized_zval) ||
36954 			    (opline->extended_value == ZEND_RETURNS_FUNCTION && !Z_ISREF_P(retval_ptr))) {
36955 				zend_error(E_NOTICE, "Only variable references should be returned by reference");
36956 				if (EX(return_value)) {
36957 					ZVAL_NEW_REF(EX(return_value), retval_ptr);
36958 				} else {
36959 
36960 				}
36961 				break;
36962 			}
36963 		}
36964 
36965 		if (EX(return_value)) {
36966 			if (Z_ISREF_P(retval_ptr)) {
36967 				Z_ADDREF_P(retval_ptr);
36968 			} else {
36969 				ZVAL_MAKE_REF_EX(retval_ptr, 2);
36970 			}
36971 			ZVAL_REF(EX(return_value), Z_REF_P(retval_ptr));
36972 		}
36973 
36974 	} while (0);
36975 
36976 	ZEND_VM_TAIL_CALL(zend_leave_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
36977 }
36978 
36979 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_GENERATOR_RETURN_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
36980 {
36981 	USE_OPLINE
36982 	zval *retval;
36983 
36984 
36985 	zend_generator *generator = zend_get_running_generator(EXECUTE_DATA_C);
36986 
36987 	SAVE_OPLINE();
36988 	retval = _get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
36989 
36990 	/* Copy return value into generator->retval */
36991 	if ((IS_CV & (IS_CONST|IS_TMP_VAR))) {
36992 		ZVAL_COPY_VALUE(&generator->retval, retval);
36993 		if (IS_CV == IS_CONST) {
36994 			if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->retval))) {
36995 				Z_ADDREF(generator->retval);
36996 			}
36997 		}
36998 	} else if (IS_CV == IS_CV) {
36999 		ZVAL_COPY_DEREF(&generator->retval, retval);
37000 	} else /* if (IS_CV == IS_VAR) */ {
37001 		if (UNEXPECTED(Z_ISREF_P(retval))) {
37002 			zend_refcounted *ref = Z_COUNTED_P(retval);
37003 
37004 			retval = Z_REFVAL_P(retval);
37005 			ZVAL_COPY_VALUE(&generator->retval, retval);
37006 			if (UNEXPECTED(GC_DELREF(ref) == 0)) {
37007 				efree_size(ref, sizeof(zend_reference));
37008 			} else if (Z_OPT_REFCOUNTED_P(retval)) {
37009 				Z_ADDREF_P(retval);
37010 			}
37011 		} else {
37012 			ZVAL_COPY_VALUE(&generator->retval, retval);
37013 		}
37014 	}
37015 
37016 	/* Close the generator to free up resources */
37017 	zend_generator_close(generator, 1);
37018 
37019 	/* Pass execution back to handling code */
37020 	ZEND_VM_RETURN();
37021 }
37022 
37023 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_THROW_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
37024 {
37025 	USE_OPLINE
37026 	zval *value;
37027 
37028 
37029 	SAVE_OPLINE();
37030 	value = EX_VAR(opline->op1.var);
37031 
37032 	do {
37033 		if (IS_CV == IS_CONST || UNEXPECTED(Z_TYPE_P(value) != IS_OBJECT)) {
37034 			if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
37035 				value = Z_REFVAL_P(value);
37036 				if (EXPECTED(Z_TYPE_P(value) == IS_OBJECT)) {
37037 					break;
37038 				}
37039 			}
37040 			if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
37041 				GET_OP1_UNDEF_CV(value, BP_VAR_R);
37042 				if (UNEXPECTED(EG(exception) != NULL)) {
37043 					HANDLE_EXCEPTION();
37044 				}
37045 			}
37046 			zend_throw_error(NULL, "Can only throw objects");
37047 
37048 			HANDLE_EXCEPTION();
37049 		}
37050 	} while (0);
37051 
37052 	zend_exception_save();
37053 	if (IS_CV != IS_TMP_VAR) {
37054 		Z_TRY_ADDREF_P(value);
37055 	}
37056 
37057 	zend_throw_exception_object(value);
37058 	zend_exception_restore();
37059 
37060 	HANDLE_EXCEPTION();
37061 }
37062 
37063 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SEND_VAR_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
37064 {
37065 	USE_OPLINE
37066 	zval *varptr, *arg;
37067 
37068 
37069 	varptr = EX_VAR(opline->op1.var);
37070 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(varptr) == IS_UNDEF)) {
37071 		SAVE_OPLINE();
37072 		GET_OP1_UNDEF_CV(varptr, BP_VAR_R);
37073 		arg = ZEND_CALL_VAR(EX(call), opline->result.var);
37074 		ZVAL_NULL(arg);
37075 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
37076 	}
37077 
37078 	arg = ZEND_CALL_VAR(EX(call), opline->result.var);
37079 
37080 	if (IS_CV == IS_CV) {
37081 		ZVAL_COPY_DEREF(arg, varptr);
37082 	} else /* if (IS_CV == IS_VAR) */ {
37083 		if (UNEXPECTED(Z_ISREF_P(varptr))) {
37084 			zend_refcounted *ref = Z_COUNTED_P(varptr);
37085 
37086 			varptr = Z_REFVAL_P(varptr);
37087 			ZVAL_COPY_VALUE(arg, varptr);
37088 			if (UNEXPECTED(GC_DELREF(ref) == 0)) {
37089 				efree_size(ref, sizeof(zend_reference));
37090 			} else if (Z_OPT_REFCOUNTED_P(arg)) {
37091 				Z_ADDREF_P(arg);
37092 			}
37093 		} else {
37094 			ZVAL_COPY_VALUE(arg, varptr);
37095 		}
37096 	}
37097 
37098 	ZEND_VM_NEXT_OPCODE();
37099 }
37100 
37101 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SEND_REF_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
37102 {
37103 	USE_OPLINE
37104 
37105 	zval *varptr, *arg;
37106 
37107 	SAVE_OPLINE();
37108 	varptr = _get_zval_ptr_cv_BP_VAR_W(opline->op1.var EXECUTE_DATA_CC);
37109 
37110 	arg = ZEND_CALL_VAR(EX(call), opline->result.var);
37111 	if (IS_CV == IS_VAR && UNEXPECTED(Z_ISERROR_P(varptr))) {
37112 		ZVAL_NEW_EMPTY_REF(arg);
37113 		ZVAL_NULL(Z_REFVAL_P(arg));
37114 		ZEND_VM_NEXT_OPCODE();
37115 	}
37116 
37117 	if (Z_ISREF_P(varptr)) {
37118 		Z_ADDREF_P(varptr);
37119 	} else {
37120 		ZVAL_MAKE_REF_EX(varptr, 2);
37121 	}
37122 	ZVAL_REF(arg, Z_REF_P(varptr));
37123 
37124 	ZEND_VM_NEXT_OPCODE();
37125 }
37126 
37127 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SEND_VAR_EX_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
37128 {
37129 	USE_OPLINE
37130 	zval *varptr, *arg;
37131 
37132 	uint32_t arg_num = opline->op2.num;
37133 
37134 	if (EXPECTED(0)) {
37135 		if (QUICK_ARG_SHOULD_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
37136 			goto send_var_by_ref;
37137 		}
37138 	} else if (ARG_SHOULD_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
37139 send_var_by_ref:
37140 		ZEND_VM_TAIL_CALL(ZEND_SEND_REF_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
37141 	}
37142 
37143 	varptr = EX_VAR(opline->op1.var);
37144 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(varptr) == IS_UNDEF)) {
37145 		SAVE_OPLINE();
37146 		GET_OP1_UNDEF_CV(varptr, BP_VAR_R);
37147 		arg = ZEND_CALL_VAR(EX(call), opline->result.var);
37148 		ZVAL_NULL(arg);
37149 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
37150 	}
37151 
37152 	arg = ZEND_CALL_VAR(EX(call), opline->result.var);
37153 
37154 	if (IS_CV == IS_CV) {
37155 		ZVAL_COPY_DEREF(arg, varptr);
37156 	} else /* if (IS_CV == IS_VAR) */ {
37157 		if (UNEXPECTED(Z_ISREF_P(varptr))) {
37158 			zend_refcounted *ref = Z_COUNTED_P(varptr);
37159 
37160 			varptr = Z_REFVAL_P(varptr);
37161 			ZVAL_COPY_VALUE(arg, varptr);
37162 			if (UNEXPECTED(GC_DELREF(ref) == 0)) {
37163 				efree_size(ref, sizeof(zend_reference));
37164 			} else if (Z_OPT_REFCOUNTED_P(arg)) {
37165 				Z_ADDREF_P(arg);
37166 			}
37167 		} else {
37168 			ZVAL_COPY_VALUE(arg, varptr);
37169 		}
37170 	}
37171 
37172 	ZEND_VM_NEXT_OPCODE();
37173 }
37174 
37175 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SEND_VAR_EX_SPEC_CV_QUICK_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
37176 {
37177 	USE_OPLINE
37178 	zval *varptr, *arg;
37179 
37180 	uint32_t arg_num = opline->op2.num;
37181 
37182 	if (EXPECTED(1)) {
37183 		if (QUICK_ARG_SHOULD_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
37184 			goto send_var_by_ref;
37185 		}
37186 	} else if (ARG_SHOULD_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
37187 send_var_by_ref:
37188 		ZEND_VM_TAIL_CALL(ZEND_SEND_REF_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
37189 	}
37190 
37191 	varptr = EX_VAR(opline->op1.var);
37192 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(varptr) == IS_UNDEF)) {
37193 		SAVE_OPLINE();
37194 		GET_OP1_UNDEF_CV(varptr, BP_VAR_R);
37195 		arg = ZEND_CALL_VAR(EX(call), opline->result.var);
37196 		ZVAL_NULL(arg);
37197 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
37198 	}
37199 
37200 	arg = ZEND_CALL_VAR(EX(call), opline->result.var);
37201 
37202 	if (IS_CV == IS_CV) {
37203 		ZVAL_COPY_DEREF(arg, varptr);
37204 	} else /* if (IS_CV == IS_VAR) */ {
37205 		if (UNEXPECTED(Z_ISREF_P(varptr))) {
37206 			zend_refcounted *ref = Z_COUNTED_P(varptr);
37207 
37208 			varptr = Z_REFVAL_P(varptr);
37209 			ZVAL_COPY_VALUE(arg, varptr);
37210 			if (UNEXPECTED(GC_DELREF(ref) == 0)) {
37211 				efree_size(ref, sizeof(zend_reference));
37212 			} else if (Z_OPT_REFCOUNTED_P(arg)) {
37213 				Z_ADDREF_P(arg);
37214 			}
37215 		} else {
37216 			ZVAL_COPY_VALUE(arg, varptr);
37217 		}
37218 	}
37219 
37220 	ZEND_VM_NEXT_OPCODE();
37221 }
37222 
37223 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SEND_USER_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
37224 {
37225 	USE_OPLINE
37226 	zval *arg, *param;
37227 
37228 
37229 	SAVE_OPLINE();
37230 	arg = _get_zval_ptr_cv_deref_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
37231 	param = ZEND_CALL_VAR(EX(call), opline->result.var);
37232 
37233 	if (UNEXPECTED(ARG_MUST_BE_SENT_BY_REF(EX(call)->func, opline->op2.num))) {
37234 		zend_param_must_be_ref(EX(call)->func, opline->op2.num);
37235 	}
37236 
37237 	ZVAL_COPY(param, arg);
37238 
37239 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
37240 }
37241 
37242 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BOOL_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
37243 {
37244 	USE_OPLINE
37245 	zval *val;
37246 
37247 
37248 	val = EX_VAR(opline->op1.var);
37249 	if (Z_TYPE_INFO_P(val) == IS_TRUE) {
37250 		ZVAL_TRUE(EX_VAR(opline->result.var));
37251 	} else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) {
37252 		/* The result and op1 can be the same cv zval */
37253 		const uint32_t orig_val_type = Z_TYPE_INFO_P(val);
37254 		ZVAL_FALSE(EX_VAR(opline->result.var));
37255 		if (IS_CV == IS_CV && UNEXPECTED(orig_val_type == IS_UNDEF)) {
37256 			SAVE_OPLINE();
37257 			GET_OP1_UNDEF_CV(val, BP_VAR_R);
37258 			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
37259 		}
37260 	} else {
37261 		SAVE_OPLINE();
37262 		ZVAL_BOOL(EX_VAR(opline->result.var), i_zend_is_true(val));
37263 
37264 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
37265 	}
37266 	ZEND_VM_NEXT_OPCODE();
37267 }
37268 
37269 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_CLONE_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
37270 {
37271 	USE_OPLINE
37272 
37273 	zval *obj;
37274 	zend_class_entry *ce, *scope;
37275 	zend_function *clone;
37276 	zend_object_clone_obj_t clone_call;
37277 
37278 	SAVE_OPLINE();
37279 	obj = EX_VAR(opline->op1.var);
37280 
37281 	if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(obj) == IS_UNDEF)) {
37282 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
37283 	}
37284 
37285 	do {
37286 		if (IS_CV == IS_CONST ||
37287 		    (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(obj) != IS_OBJECT))) {
37288 		    if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(obj)) {
37289 				obj = Z_REFVAL_P(obj);
37290 				if (EXPECTED(Z_TYPE_P(obj) == IS_OBJECT)) {
37291 					break;
37292 				}
37293 			}
37294 			ZVAL_UNDEF(EX_VAR(opline->result.var));
37295 			if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(obj) == IS_UNDEF)) {
37296 				GET_OP1_UNDEF_CV(obj, BP_VAR_R);
37297 				if (UNEXPECTED(EG(exception) != NULL)) {
37298 					HANDLE_EXCEPTION();
37299 				}
37300 			}
37301 			zend_throw_error(NULL, "__clone method called on non-object");
37302 
37303 			HANDLE_EXCEPTION();
37304 		}
37305 	} while (0);
37306 
37307 	ce = Z_OBJCE_P(obj);
37308 	clone = ce->clone;
37309 	clone_call = Z_OBJ_HT_P(obj)->clone_obj;
37310 	if (UNEXPECTED(clone_call == NULL)) {
37311 		zend_throw_error(NULL, "Trying to clone an uncloneable object of class %s", ZSTR_VAL(ce->name));
37312 
37313 		ZVAL_UNDEF(EX_VAR(opline->result.var));
37314 		HANDLE_EXCEPTION();
37315 	}
37316 
37317 	if (clone) {
37318 		if (clone->op_array.fn_flags & ZEND_ACC_PRIVATE) {
37319 			/* Ensure that if we're calling a private function, we're allowed to do so.
37320 			 */
37321 			scope = EX(func)->op_array.scope;
37322 			if (!zend_check_private(clone, scope, clone->common.function_name)) {
37323 				zend_throw_error(NULL, "Call to private %s::__clone() from context '%s'", ZSTR_VAL(clone->common.scope->name), scope ? ZSTR_VAL(scope->name) : "");
37324 
37325 				ZVAL_UNDEF(EX_VAR(opline->result.var));
37326 				HANDLE_EXCEPTION();
37327 			}
37328 		} else if ((clone->common.fn_flags & ZEND_ACC_PROTECTED)) {
37329 			/* Ensure that if we're calling a protected function, we're allowed to do so.
37330 			 */
37331 			scope = EX(func)->op_array.scope;
37332 			if (UNEXPECTED(!zend_check_protected(zend_get_function_root_class(clone), scope))) {
37333 				zend_throw_error(NULL, "Call to protected %s::__clone() from context '%s'", ZSTR_VAL(clone->common.scope->name), scope ? ZSTR_VAL(scope->name) : "");
37334 
37335 				ZVAL_UNDEF(EX_VAR(opline->result.var));
37336 				HANDLE_EXCEPTION();
37337 			}
37338 		}
37339 	}
37340 
37341 	ZVAL_OBJ(EX_VAR(opline->result.var), clone_call(obj));
37342 
37343 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
37344 }
37345 
37346 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_CAST_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
37347 {
37348 	USE_OPLINE
37349 
37350 	zval *expr;
37351 	zval *result = EX_VAR(opline->result.var);
37352 	HashTable *ht;
37353 
37354 	SAVE_OPLINE();
37355 	expr = _get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
37356 
37357 	switch (opline->extended_value) {
37358 		case IS_NULL:
37359 			ZVAL_NULL(result);
37360 			break;
37361 		case _IS_BOOL:
37362 			ZVAL_BOOL(result, zend_is_true(expr));
37363 			break;
37364 		case IS_LONG:
37365 			ZVAL_LONG(result, zval_get_long(expr));
37366 			break;
37367 		case IS_DOUBLE:
37368 			ZVAL_DOUBLE(result, zval_get_double(expr));
37369 			break;
37370 		case IS_STRING:
37371 			ZVAL_STR(result, zval_get_string(expr));
37372 			break;
37373 		default:
37374 			if (IS_CV & (IS_VAR|IS_CV)) {
37375 				ZVAL_DEREF(expr);
37376 			}
37377 			/* If value is already of correct type, return it directly */
37378 			if (Z_TYPE_P(expr) == opline->extended_value) {
37379 				ZVAL_COPY_VALUE(result, expr);
37380 				if (IS_CV == IS_CONST) {
37381 					if (UNEXPECTED(Z_OPT_REFCOUNTED_P(result))) Z_ADDREF_P(result);
37382 				} else if (IS_CV != IS_TMP_VAR) {
37383 					if (Z_OPT_REFCOUNTED_P(result)) Z_ADDREF_P(result);
37384 				}
37385 
37386 				ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
37387 			}
37388 
37389 			if (opline->extended_value == IS_ARRAY) {
37390 				if (IS_CV == IS_CONST || Z_TYPE_P(expr) != IS_OBJECT || Z_OBJCE_P(expr) == zend_ce_closure) {
37391 					if (Z_TYPE_P(expr) != IS_NULL) {
37392 						ZVAL_ARR(result, zend_new_array(1));
37393 						expr = zend_hash_index_add_new(Z_ARRVAL_P(result), 0, expr);
37394 						if (IS_CV == IS_CONST) {
37395 							if (UNEXPECTED(Z_OPT_REFCOUNTED_P(expr))) Z_ADDREF_P(expr);
37396 						} else {
37397 							if (Z_OPT_REFCOUNTED_P(expr)) Z_ADDREF_P(expr);
37398 						}
37399 					} else {
37400 						ZVAL_EMPTY_ARRAY(result);
37401 					}
37402 				} else if (Z_OBJ_HT_P(expr)->get_properties) {
37403 					HashTable *obj_ht = Z_OBJ_HT_P(expr)->get_properties(expr);
37404 					if (obj_ht) {
37405 						/* fast copy */
37406 						obj_ht = zend_proptable_to_symtable(obj_ht,
37407 							(Z_OBJCE_P(expr)->default_properties_count ||
37408 							 Z_OBJ_P(expr)->handlers != &std_object_handlers ||
37409 							 GC_IS_RECURSIVE(obj_ht)));
37410 						ZVAL_ARR(result, obj_ht);
37411 					} else {
37412 						ZVAL_EMPTY_ARRAY(result);
37413 					}
37414 				} else {
37415 					ZVAL_COPY_VALUE(result, expr);
37416 					Z_ADDREF_P(result);
37417 					convert_to_array(result);
37418 				}
37419 			} else {
37420 				ZVAL_OBJ(result, zend_objects_new(zend_standard_class_def));
37421 				if (Z_TYPE_P(expr) == IS_ARRAY) {
37422 					ht = zend_symtable_to_proptable(Z_ARR_P(expr));
37423 					if (GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) {
37424 						/* TODO: try not to duplicate immutable arrays as well ??? */
37425 						ht = zend_array_dup(ht);
37426 					}
37427 					Z_OBJ_P(result)->properties = ht;
37428 				} else if (Z_TYPE_P(expr) != IS_NULL) {
37429 					Z_OBJ_P(result)->properties = ht = zend_new_array(1);
37430 					expr = zend_hash_add_new(ht, ZSTR_KNOWN(ZEND_STR_SCALAR), expr);
37431 					if (IS_CV == IS_CONST) {
37432 						if (UNEXPECTED(Z_OPT_REFCOUNTED_P(expr))) Z_ADDREF_P(expr);
37433 					} else {
37434 						if (Z_OPT_REFCOUNTED_P(expr)) Z_ADDREF_P(expr);
37435 					}
37436 				}
37437 			}
37438 	}
37439 
37440 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
37441 }
37442 
37443 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INCLUDE_OR_EVAL_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
37444 {
37445 	USE_OPLINE
37446 	zend_op_array *new_op_array;
37447 
37448 	zval *inc_filename;
37449 
37450 	SAVE_OPLINE();
37451 	inc_filename = _get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
37452 	new_op_array = zend_include_or_eval(inc_filename, opline->extended_value);
37453 
37454 	if (UNEXPECTED(EG(exception) != NULL)) {
37455 		if (new_op_array != ZEND_FAKE_OP_ARRAY && new_op_array != NULL) {
37456 			destroy_op_array(new_op_array);
37457 			efree_size(new_op_array, sizeof(zend_op_array));
37458 		}
37459 		UNDEF_RESULT();
37460 		HANDLE_EXCEPTION();
37461 	} else if (new_op_array == ZEND_FAKE_OP_ARRAY) {
37462 		if (RETURN_VALUE_USED(opline)) {
37463 			ZVAL_TRUE(EX_VAR(opline->result.var));
37464 		}
37465 	} else if (EXPECTED(new_op_array != NULL)) {
37466 		zval *return_value = NULL;
37467 		zend_execute_data *call;
37468 
37469 		if (RETURN_VALUE_USED(opline)) {
37470 			return_value = EX_VAR(opline->result.var);
37471 			ZVAL_NULL(return_value);
37472 		}
37473 
37474 		new_op_array->scope = EX(func)->op_array.scope;
37475 
37476 		call = zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_CODE | ZEND_CALL_HAS_SYMBOL_TABLE,
37477 			(zend_function*)new_op_array, 0,
37478 			Z_TYPE(EX(This)) != IS_OBJECT ? Z_CE(EX(This)) : NULL,
37479 			Z_TYPE(EX(This)) == IS_OBJECT ? Z_OBJ(EX(This)) : NULL);
37480 
37481 		if (EX_CALL_INFO() & ZEND_CALL_HAS_SYMBOL_TABLE) {
37482 			call->symbol_table = EX(symbol_table);
37483 		} else {
37484 			call->symbol_table = zend_rebuild_symbol_table();
37485 		}
37486 
37487 		call->prev_execute_data = execute_data;
37488 		i_init_code_execute_data(call, new_op_array, return_value);
37489 		if (EXPECTED(zend_execute_ex == execute_ex)) {
37490 			ZEND_VM_ENTER();
37491 		} else {
37492 			ZEND_ADD_CALL_FLAG(call, ZEND_CALL_TOP);
37493 			zend_execute_ex(call);
37494 			zend_vm_stack_free_call_frame(call);
37495 		}
37496 
37497 		destroy_op_array(new_op_array);
37498 		efree_size(new_op_array, sizeof(zend_op_array));
37499 		if (UNEXPECTED(EG(exception) != NULL)) {
37500 			zend_rethrow_exception(execute_data);
37501 			UNDEF_RESULT();
37502 			HANDLE_EXCEPTION();
37503 		}
37504 	} else if (RETURN_VALUE_USED(opline)) {
37505 		ZVAL_FALSE(EX_VAR(opline->result.var));
37506 	}
37507 	ZEND_VM_NEXT_OPCODE();
37508 }
37509 
37510 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FE_RESET_R_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
37511 {
37512 	USE_OPLINE
37513 
37514 	zval *array_ptr, *result;
37515 
37516 	SAVE_OPLINE();
37517 
37518 	array_ptr = _get_zval_ptr_cv_deref_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
37519 	if (EXPECTED(Z_TYPE_P(array_ptr) == IS_ARRAY)) {
37520 		result = EX_VAR(opline->result.var);
37521 		ZVAL_COPY_VALUE(result, array_ptr);
37522 		if (IS_CV != IS_TMP_VAR && Z_OPT_REFCOUNTED_P(result)) {
37523 			Z_ADDREF_P(array_ptr);
37524 		}
37525 		Z_FE_POS_P(result) = 0;
37526 
37527 		ZEND_VM_NEXT_OPCODE();
37528 	} else if (IS_CV != IS_CONST && EXPECTED(Z_TYPE_P(array_ptr) == IS_OBJECT)) {
37529 		if (!Z_OBJCE_P(array_ptr)->get_iterator) {
37530 			result = EX_VAR(opline->result.var);
37531 			ZVAL_COPY_VALUE(result, array_ptr);
37532 			if (IS_CV != IS_TMP_VAR) {
37533 				Z_ADDREF_P(array_ptr);
37534 			}
37535 			if (Z_OBJ_P(array_ptr)->properties
37536 			 && UNEXPECTED(GC_REFCOUNT(Z_OBJ_P(array_ptr)->properties) > 1)) {
37537 				if (EXPECTED(!(GC_FLAGS(Z_OBJ_P(array_ptr)->properties) & IS_ARRAY_IMMUTABLE))) {
37538 					GC_DELREF(Z_OBJ_P(array_ptr)->properties);
37539 				}
37540 				Z_OBJ_P(array_ptr)->properties = zend_array_dup(Z_OBJ_P(array_ptr)->properties);
37541 			}
37542 			Z_FE_ITER_P(EX_VAR(opline->result.var)) = zend_hash_iterator_add(Z_OBJPROP_P(array_ptr), 0);
37543 
37544 			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
37545 		} else {
37546 			zend_bool is_empty = zend_fe_reset_iterator(array_ptr, 0 OPLINE_CC EXECUTE_DATA_CC);
37547 
37548 			if (UNEXPECTED(EG(exception))) {
37549 				HANDLE_EXCEPTION();
37550 			} else if (is_empty) {
37551 				ZEND_VM_JMP_EX(OP_JMP_ADDR(opline, opline->op2), 0);
37552 			} else {
37553 				ZEND_VM_NEXT_OPCODE();
37554 			}
37555 		}
37556 	} else {
37557 		zend_error(E_WARNING, "Invalid argument supplied for foreach()");
37558 		ZVAL_UNDEF(EX_VAR(opline->result.var));
37559 		Z_FE_ITER_P(EX_VAR(opline->result.var)) = (uint32_t)-1;
37560 
37561 		ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
37562 	}
37563 }
37564 
37565 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FE_RESET_RW_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
37566 {
37567 	USE_OPLINE
37568 
37569 	zval *array_ptr, *array_ref;
37570 
37571 	SAVE_OPLINE();
37572 
37573 	if (IS_CV == IS_VAR || IS_CV == IS_CV) {
37574 		array_ref = array_ptr = _get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
37575 		if (Z_ISREF_P(array_ref)) {
37576 			array_ptr = Z_REFVAL_P(array_ref);
37577 		}
37578 	} else {
37579 		array_ref = array_ptr = _get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
37580 	}
37581 
37582 	if (EXPECTED(Z_TYPE_P(array_ptr) == IS_ARRAY)) {
37583 		if (IS_CV == IS_VAR || IS_CV == IS_CV) {
37584 			if (array_ptr == array_ref) {
37585 				ZVAL_NEW_REF(array_ref, array_ref);
37586 				array_ptr = Z_REFVAL_P(array_ref);
37587 			}
37588 			Z_ADDREF_P(array_ref);
37589 			ZVAL_COPY_VALUE(EX_VAR(opline->result.var), array_ref);
37590 		} else {
37591 			array_ref = EX_VAR(opline->result.var);
37592 			ZVAL_NEW_REF(array_ref, array_ptr);
37593 			array_ptr = Z_REFVAL_P(array_ref);
37594 		}
37595 		if (IS_CV == IS_CONST) {
37596 			ZVAL_ARR(array_ptr, zend_array_dup(Z_ARRVAL_P(array_ptr)));
37597 		} else {
37598 			SEPARATE_ARRAY(array_ptr);
37599 		}
37600 		Z_FE_ITER_P(EX_VAR(opline->result.var)) = zend_hash_iterator_add(Z_ARRVAL_P(array_ptr), 0);
37601 
37602 		if (IS_CV == IS_VAR) {
37603 
37604 		}
37605 		ZEND_VM_NEXT_OPCODE();
37606 	} else if (IS_CV != IS_CONST && EXPECTED(Z_TYPE_P(array_ptr) == IS_OBJECT)) {
37607 		if (!Z_OBJCE_P(array_ptr)->get_iterator) {
37608 			if (IS_CV == IS_VAR || IS_CV == IS_CV) {
37609 				if (array_ptr == array_ref) {
37610 					ZVAL_NEW_REF(array_ref, array_ref);
37611 					array_ptr = Z_REFVAL_P(array_ref);
37612 				}
37613 				Z_ADDREF_P(array_ref);
37614 				ZVAL_COPY_VALUE(EX_VAR(opline->result.var), array_ref);
37615 			} else {
37616 				array_ptr = EX_VAR(opline->result.var);
37617 				ZVAL_COPY_VALUE(array_ptr, array_ref);
37618 			}
37619 			if (Z_OBJ_P(array_ptr)->properties
37620 			 && UNEXPECTED(GC_REFCOUNT(Z_OBJ_P(array_ptr)->properties) > 1)) {
37621 				if (EXPECTED(!(GC_FLAGS(Z_OBJ_P(array_ptr)->properties) & IS_ARRAY_IMMUTABLE))) {
37622 					GC_DELREF(Z_OBJ_P(array_ptr)->properties);
37623 				}
37624 				Z_OBJ_P(array_ptr)->properties = zend_array_dup(Z_OBJ_P(array_ptr)->properties);
37625 			}
37626 			Z_FE_ITER_P(EX_VAR(opline->result.var)) = zend_hash_iterator_add(Z_OBJPROP_P(array_ptr), 0);
37627 
37628 			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
37629 		} else {
37630 			zend_bool is_empty = zend_fe_reset_iterator(array_ptr, 1 OPLINE_CC EXECUTE_DATA_CC);
37631 
37632 			if (IS_CV == IS_VAR) {
37633 
37634 			} else {
37635 
37636 			}
37637 			if (UNEXPECTED(EG(exception))) {
37638 				HANDLE_EXCEPTION();
37639 			} else if (is_empty) {
37640 				ZEND_VM_JMP_EX(OP_JMP_ADDR(opline, opline->op2), 0);
37641 			} else {
37642 				ZEND_VM_NEXT_OPCODE();
37643 			}
37644 		}
37645 	} else {
37646 		zend_error(E_WARNING, "Invalid argument supplied for foreach()");
37647 		ZVAL_UNDEF(EX_VAR(opline->result.var));
37648 		Z_FE_ITER_P(EX_VAR(opline->result.var)) = (uint32_t)-1;
37649 		if (IS_CV == IS_VAR) {
37650 
37651 		} else {
37652 
37653 		}
37654 		ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
37655 	}
37656 }
37657 
37658 static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_EXIT_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
37659 {
37660 	USE_OPLINE
37661 
37662 	SAVE_OPLINE();
37663 	if (IS_CV != IS_UNUSED) {
37664 
37665 		zval *ptr = _get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
37666 
37667 		do {
37668 			if (Z_TYPE_P(ptr) == IS_LONG) {
37669 				EG(exit_status) = Z_LVAL_P(ptr);
37670 			} else {
37671 				if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(ptr)) {
37672 					ptr = Z_REFVAL_P(ptr);
37673 					if (Z_TYPE_P(ptr) == IS_LONG) {
37674 						EG(exit_status) = Z_LVAL_P(ptr);
37675 						break;
37676 					}
37677 				}
37678 				zend_print_zval(ptr, 0);
37679 			}
37680 		} while (0);
37681 
37682 	}
37683 	zend_bailout();
37684 	ZEND_VM_NEXT_OPCODE(); /* Never reached */
37685 }
37686 
37687 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_JMP_SET_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
37688 {
37689 	USE_OPLINE
37690 
37691 	zval *value;
37692 	zval *ref = NULL;
37693 	int ret;
37694 
37695 	SAVE_OPLINE();
37696 	value = _get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
37697 
37698 	if ((IS_CV == IS_VAR || IS_CV == IS_CV) && Z_ISREF_P(value)) {
37699 		if (IS_CV == IS_VAR) {
37700 			ref = value;
37701 		}
37702 		value = Z_REFVAL_P(value);
37703 	}
37704 
37705 	ret = i_zend_is_true(value);
37706 
37707 	if (UNEXPECTED(EG(exception))) {
37708 
37709 		ZVAL_UNDEF(EX_VAR(opline->result.var));
37710 		HANDLE_EXCEPTION();
37711 	}
37712 
37713 	if (ret) {
37714 		zval *result = EX_VAR(opline->result.var);
37715 
37716 		ZVAL_COPY_VALUE(result, value);
37717 		if (IS_CV == IS_CONST) {
37718 			if (UNEXPECTED(Z_OPT_REFCOUNTED_P(result))) Z_ADDREF_P(result);
37719 		} else if (IS_CV == IS_CV) {
37720 			if (Z_OPT_REFCOUNTED_P(result)) Z_ADDREF_P(result);
37721 		} else if (IS_CV == IS_VAR && ref) {
37722 			zend_reference *r = Z_REF_P(ref);
37723 
37724 			if (UNEXPECTED(GC_DELREF(r) == 0)) {
37725 				efree_size(r, sizeof(zend_reference));
37726 			} else if (Z_OPT_REFCOUNTED_P(result)) {
37727 				Z_ADDREF_P(result);
37728 			}
37729 		}
37730 		ZEND_VM_JMP_EX(OP_JMP_ADDR(opline, opline->op2), 0);
37731 	}
37732 
37733 	ZEND_VM_NEXT_OPCODE();
37734 }
37735 
37736 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_COALESCE_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
37737 {
37738 	USE_OPLINE
37739 
37740 	zval *value;
37741 	zval *ref = NULL;
37742 
37743 	SAVE_OPLINE();
37744 	value = _get_zval_ptr_cv_BP_VAR_IS(opline->op1.var EXECUTE_DATA_CC);
37745 
37746 	if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
37747 		if (IS_CV & IS_VAR) {
37748 			ref = value;
37749 		}
37750 		value = Z_REFVAL_P(value);
37751 	}
37752 
37753 	if (Z_TYPE_P(value) > IS_NULL) {
37754 		zval *result = EX_VAR(opline->result.var);
37755 		ZVAL_COPY_VALUE(result, value);
37756 		if (IS_CV == IS_CONST) {
37757 			if (UNEXPECTED(Z_OPT_REFCOUNTED_P(result))) Z_ADDREF_P(result);
37758 		} else if (IS_CV == IS_CV) {
37759 			if (Z_OPT_REFCOUNTED_P(result)) Z_ADDREF_P(result);
37760 		} else if ((IS_CV & IS_VAR) && ref) {
37761 			zend_reference *r = Z_REF_P(ref);
37762 
37763 			if (UNEXPECTED(GC_DELREF(r) == 0)) {
37764 				efree_size(r, sizeof(zend_reference));
37765 			} else if (Z_OPT_REFCOUNTED_P(result)) {
37766 				Z_ADDREF_P(result);
37767 			}
37768 		}
37769 		ZEND_VM_JMP_EX(OP_JMP_ADDR(opline, opline->op2), 0);
37770 	}
37771 
37772 	ZEND_VM_NEXT_OPCODE();
37773 }
37774 
37775 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_QM_ASSIGN_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
37776 {
37777 	USE_OPLINE
37778 
37779 	zval *value;
37780 	zval *result = EX_VAR(opline->result.var);
37781 
37782 	value = EX_VAR(opline->op1.var);
37783 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
37784 		SAVE_OPLINE();
37785 		GET_OP1_UNDEF_CV(value, BP_VAR_R);
37786 		ZVAL_NULL(result);
37787 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
37788 	}
37789 
37790 	if (IS_CV == IS_CV) {
37791 		ZVAL_COPY_DEREF(result, value);
37792 	} else if (IS_CV == IS_VAR) {
37793 		if (UNEXPECTED(Z_ISREF_P(value))) {
37794 			ZVAL_COPY_VALUE(result, Z_REFVAL_P(value));
37795 			if (UNEXPECTED(Z_DELREF_P(value) == 0)) {
37796 				efree_size(Z_REF_P(value), sizeof(zend_reference));
37797 			} else if (Z_OPT_REFCOUNTED_P(result)) {
37798 				Z_ADDREF_P(result);
37799 			}
37800 		} else {
37801 			ZVAL_COPY_VALUE(result, value);
37802 		}
37803 	} else {
37804 		ZVAL_COPY_VALUE(result, value);
37805 		if (IS_CV == IS_CONST) {
37806 			if (UNEXPECTED(Z_OPT_REFCOUNTED_P(result))) {
37807 				Z_ADDREF_P(result);
37808 			}
37809 		}
37810 	}
37811 	ZEND_VM_NEXT_OPCODE();
37812 }
37813 
37814 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_YIELD_FROM_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
37815 {
37816 	USE_OPLINE
37817 
37818 	zend_generator *generator = zend_get_running_generator(EXECUTE_DATA_C);
37819 
37820 	zval *val;
37821 
37822 
37823 	SAVE_OPLINE();
37824 	val = _get_zval_ptr_cv_deref_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
37825 
37826 	if (UNEXPECTED(generator->flags & ZEND_GENERATOR_FORCED_CLOSE)) {
37827 		zend_throw_error(NULL, "Cannot use \"yield from\" in a force-closed generator");
37828 
37829 		UNDEF_RESULT();
37830 		HANDLE_EXCEPTION();
37831 	}
37832 
37833 	if (Z_TYPE_P(val) == IS_ARRAY) {
37834 		ZVAL_COPY_VALUE(&generator->values, val);
37835 		if (IS_CV != IS_TMP_VAR && Z_OPT_REFCOUNTED_P(val)) {
37836 			Z_ADDREF_P(val);
37837 		}
37838 		Z_FE_POS(generator->values) = 0;
37839 
37840 	} else if (IS_CV != IS_CONST && Z_TYPE_P(val) == IS_OBJECT && Z_OBJCE_P(val)->get_iterator) {
37841 		zend_class_entry *ce = Z_OBJCE_P(val);
37842 		if (ce == zend_ce_generator) {
37843 			zend_generator *new_gen = (zend_generator *) Z_OBJ_P(val);
37844 
37845 			if (IS_CV != IS_TMP_VAR) {
37846 				Z_ADDREF_P(val);
37847 			}
37848 
37849 			if (Z_ISUNDEF(new_gen->retval)) {
37850 				if (UNEXPECTED(zend_generator_get_current(new_gen) == generator)) {
37851 					zend_throw_error(NULL, "Impossible to yield from the Generator being currently run");
37852 					zval_ptr_dtor(val);
37853 					UNDEF_RESULT();
37854 					HANDLE_EXCEPTION();
37855 				} else {
37856 					zend_generator_yield_from(generator, new_gen);
37857 				}
37858 			} else if (UNEXPECTED(new_gen->execute_data == NULL)) {
37859 				zend_throw_error(NULL, "Generator passed to yield from was aborted without proper return and is unable to continue");
37860 				zval_ptr_dtor(val);
37861 				UNDEF_RESULT();
37862 				HANDLE_EXCEPTION();
37863 			} else {
37864 				if (RETURN_VALUE_USED(opline)) {
37865 					ZVAL_COPY(EX_VAR(opline->result.var), &new_gen->retval);
37866 				}
37867 				ZEND_VM_NEXT_OPCODE();
37868 			}
37869 		} else {
37870 			zend_object_iterator *iter = ce->get_iterator(ce, val, 0);
37871 
37872 			if (UNEXPECTED(!iter) || UNEXPECTED(EG(exception))) {
37873 				if (!EG(exception)) {
37874 					zend_throw_error(NULL, "Object of type %s did not create an Iterator", ZSTR_VAL(ce->name));
37875 				}
37876 				UNDEF_RESULT();
37877 				HANDLE_EXCEPTION();
37878 			}
37879 
37880 			iter->index = 0;
37881 			if (iter->funcs->rewind) {
37882 				iter->funcs->rewind(iter);
37883 				if (UNEXPECTED(EG(exception) != NULL)) {
37884 					OBJ_RELEASE(&iter->std);
37885 					UNDEF_RESULT();
37886 					HANDLE_EXCEPTION();
37887 				}
37888 			}
37889 
37890 			ZVAL_OBJ(&generator->values, &iter->std);
37891 		}
37892 	} else {
37893 		zend_throw_error(NULL, "Can use \"yield from\" only with arrays and Traversables");
37894 
37895 		UNDEF_RESULT();
37896 		HANDLE_EXCEPTION();
37897 	}
37898 
37899 	/* This is the default return value
37900 	 * when the expression is a Generator, it will be overwritten in zend_generator_resume() */
37901 	if (RETURN_VALUE_USED(opline)) {
37902 		ZVAL_NULL(EX_VAR(opline->result.var));
37903 	}
37904 
37905 	/* This generator has no send target (though the generator we delegate to might have one) */
37906 	generator->send_target = NULL;
37907 
37908 	/* We increment to the next op, so we are at the correct position when the
37909 	 * generator is resumed. */
37910 	ZEND_VM_INC_OPCODE();
37911 
37912 	/* The GOTO VM uses a local opline variable. We need to set the opline
37913 	 * variable in execute_data so we don't resume at an old position. */
37914 	SAVE_OPLINE();
37915 
37916 	ZEND_VM_RETURN();
37917 }
37918 
37919 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_STRLEN_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
37920 {
37921 	USE_OPLINE
37922 	zval *value;
37923 
37924 
37925 	value = EX_VAR(opline->op1.var);
37926 	if (EXPECTED(Z_TYPE_P(value) == IS_STRING)) {
37927 		ZVAL_LONG(EX_VAR(opline->result.var), Z_STRLEN_P(value));
37928 
37929 		ZEND_VM_NEXT_OPCODE();
37930 	} else {
37931 		zend_bool strict;
37932 
37933 		if ((IS_CV & (IS_VAR|IS_CV)) && Z_TYPE_P(value) == IS_REFERENCE) {
37934 			value = Z_REFVAL_P(value);
37935 			if (EXPECTED(Z_TYPE_P(value) == IS_STRING)) {
37936 				ZVAL_LONG(EX_VAR(opline->result.var), Z_STRLEN_P(value));
37937 
37938 				ZEND_VM_NEXT_OPCODE();
37939 			}
37940 		}
37941 
37942 		SAVE_OPLINE();
37943 		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
37944 			value = GET_OP1_UNDEF_CV(value, BP_VAR_R);
37945 		}
37946 		strict = EX_USES_STRICT_TYPES();
37947 		do {
37948 			if (EXPECTED(!strict)) {
37949 				zend_string *str;
37950 				zval tmp;
37951 
37952 				ZVAL_COPY(&tmp, value);
37953 				if (zend_parse_arg_str_weak(&tmp, &str)) {
37954 					ZVAL_LONG(EX_VAR(opline->result.var), ZSTR_LEN(str));
37955 					zval_ptr_dtor(&tmp);
37956 					break;
37957 				}
37958 				zval_ptr_dtor(&tmp);
37959 			}
37960 			zend_internal_type_error(strict, "strlen() expects parameter 1 to be string, %s given", zend_get_type_by_const(Z_TYPE_P(value)));
37961 			ZVAL_NULL(EX_VAR(opline->result.var));
37962 		} while (0);
37963 	}
37964 
37965 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
37966 }
37967 
37968 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_TYPE_CHECK_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
37969 {
37970 	USE_OPLINE
37971 	zval *value;
37972 	int result = 0;
37973 
37974 
37975 	value = EX_VAR(opline->op1.var);
37976 	if ((opline->extended_value >> (uint32_t)Z_TYPE_P(value)) & 1) {
37977 type_check_resource:
37978 		if (EXPECTED(Z_TYPE_P(value) != IS_RESOURCE)
37979 		 || EXPECTED(NULL != zend_rsrc_list_get_rsrc_type(Z_RES_P(value)))) {
37980 			result = 1;
37981 		}
37982 	} else if ((IS_CV & (IS_CV|IS_VAR)) && Z_ISREF_P(value)) {
37983 		value = Z_REFVAL_P(value);
37984 		if ((opline->extended_value >> (uint32_t)Z_TYPE_P(value)) & 1) {
37985 			goto type_check_resource;
37986 		}
37987 	} else if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
37988 		result = ((1 << IS_NULL) & opline->extended_value) != 0;
37989 		SAVE_OPLINE();
37990 		GET_OP1_UNDEF_CV(value, BP_VAR_R);
37991 		ZEND_VM_SMART_BRANCH(result, 1);
37992 		ZVAL_BOOL(EX_VAR(opline->result.var), result);
37993 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
37994 	}
37995 	if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
37996 		SAVE_OPLINE();
37997 
37998 		ZEND_VM_SMART_BRANCH(result, 1);
37999 		ZVAL_BOOL(EX_VAR(opline->result.var), result);
38000 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
38001 	} else {
38002 		ZEND_VM_SMART_BRANCH(result, 0);
38003 		ZVAL_BOOL(EX_VAR(opline->result.var), result);
38004 		ZEND_VM_NEXT_OPCODE();
38005 	}
38006 }
38007 
38008 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_INC_LONG_NO_OVERFLOW_SPEC_CV_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
38009 {
38010 	USE_OPLINE
38011 	zval *var_ptr;
38012 
38013 	var_ptr = EX_VAR(opline->op1.var);
38014 	Z_LVAL_P(var_ptr)++;
38015 	if (UNEXPECTED(0)) {
38016 		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(var_ptr));
38017 	}
38018 	ZEND_VM_NEXT_OPCODE();
38019 }
38020 
38021 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_INC_LONG_NO_OVERFLOW_SPEC_CV_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
38022 {
38023 	USE_OPLINE
38024 	zval *var_ptr;
38025 
38026 	var_ptr = EX_VAR(opline->op1.var);
38027 	Z_LVAL_P(var_ptr)++;
38028 	if (UNEXPECTED(1)) {
38029 		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(var_ptr));
38030 	}
38031 	ZEND_VM_NEXT_OPCODE();
38032 }
38033 
38034 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_INC_LONG_SPEC_CV_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
38035 {
38036 	USE_OPLINE
38037 	zval *var_ptr;
38038 
38039 	var_ptr = EX_VAR(opline->op1.var);
38040 	fast_long_increment_function(var_ptr);
38041 	if (UNEXPECTED(0)) {
38042 		ZVAL_COPY_VALUE(EX_VAR(opline->result.var), var_ptr);
38043 	}
38044 	ZEND_VM_NEXT_OPCODE();
38045 }
38046 
38047 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_INC_LONG_SPEC_CV_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
38048 {
38049 	USE_OPLINE
38050 	zval *var_ptr;
38051 
38052 	var_ptr = EX_VAR(opline->op1.var);
38053 	fast_long_increment_function(var_ptr);
38054 	if (UNEXPECTED(1)) {
38055 		ZVAL_COPY_VALUE(EX_VAR(opline->result.var), var_ptr);
38056 	}
38057 	ZEND_VM_NEXT_OPCODE();
38058 }
38059 
38060 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_INC_LONG_OR_DOUBLE_SPEC_CV_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
38061 {
38062 	USE_OPLINE
38063 	zval *var_ptr;
38064 
38065 	var_ptr = EX_VAR(opline->op1.var);
38066 	if (EXPECTED(Z_TYPE_P(var_ptr) == IS_LONG)) {
38067 		fast_long_increment_function(var_ptr);
38068 	} else {
38069 		Z_DVAL_P(var_ptr)++;
38070 	}
38071 	if (UNEXPECTED(0)) {
38072 		ZVAL_COPY_VALUE(EX_VAR(opline->result.var), var_ptr);
38073 	}
38074 	ZEND_VM_NEXT_OPCODE();
38075 }
38076 
38077 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_INC_LONG_OR_DOUBLE_SPEC_CV_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
38078 {
38079 	USE_OPLINE
38080 	zval *var_ptr;
38081 
38082 	var_ptr = EX_VAR(opline->op1.var);
38083 	if (EXPECTED(Z_TYPE_P(var_ptr) == IS_LONG)) {
38084 		fast_long_increment_function(var_ptr);
38085 	} else {
38086 		Z_DVAL_P(var_ptr)++;
38087 	}
38088 	if (UNEXPECTED(1)) {
38089 		ZVAL_COPY_VALUE(EX_VAR(opline->result.var), var_ptr);
38090 	}
38091 	ZEND_VM_NEXT_OPCODE();
38092 }
38093 
38094 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_DEC_LONG_NO_OVERFLOW_SPEC_CV_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
38095 {
38096 	USE_OPLINE
38097 	zval *var_ptr;
38098 
38099 	var_ptr = EX_VAR(opline->op1.var);
38100 	Z_LVAL_P(var_ptr)--;
38101 	if (UNEXPECTED(0)) {
38102 		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(var_ptr));
38103 	}
38104 	ZEND_VM_NEXT_OPCODE();
38105 }
38106 
38107 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_DEC_LONG_NO_OVERFLOW_SPEC_CV_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
38108 {
38109 	USE_OPLINE
38110 	zval *var_ptr;
38111 
38112 	var_ptr = EX_VAR(opline->op1.var);
38113 	Z_LVAL_P(var_ptr)--;
38114 	if (UNEXPECTED(1)) {
38115 		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(var_ptr));
38116 	}
38117 	ZEND_VM_NEXT_OPCODE();
38118 }
38119 
38120 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_DEC_LONG_SPEC_CV_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
38121 {
38122 	USE_OPLINE
38123 	zval *var_ptr;
38124 
38125 	var_ptr = EX_VAR(opline->op1.var);
38126 	fast_long_decrement_function(var_ptr);
38127 	if (UNEXPECTED(0)) {
38128 		ZVAL_COPY_VALUE(EX_VAR(opline->result.var), var_ptr);
38129 	}
38130 	ZEND_VM_NEXT_OPCODE();
38131 }
38132 
38133 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_DEC_LONG_SPEC_CV_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
38134 {
38135 	USE_OPLINE
38136 	zval *var_ptr;
38137 
38138 	var_ptr = EX_VAR(opline->op1.var);
38139 	fast_long_decrement_function(var_ptr);
38140 	if (UNEXPECTED(1)) {
38141 		ZVAL_COPY_VALUE(EX_VAR(opline->result.var), var_ptr);
38142 	}
38143 	ZEND_VM_NEXT_OPCODE();
38144 }
38145 
38146 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_DEC_LONG_OR_DOUBLE_SPEC_CV_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
38147 {
38148 	USE_OPLINE
38149 	zval *var_ptr;
38150 
38151 	var_ptr = EX_VAR(opline->op1.var);
38152 	if (EXPECTED(Z_TYPE_P(var_ptr) == IS_LONG)) {
38153 		fast_long_decrement_function(var_ptr);
38154 	} else {
38155 		Z_DVAL_P(var_ptr)--;
38156 	}
38157 	if (UNEXPECTED(0)) {
38158 		ZVAL_COPY_VALUE(EX_VAR(opline->result.var), var_ptr);
38159 	}
38160 	ZEND_VM_NEXT_OPCODE();
38161 }
38162 
38163 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_DEC_LONG_OR_DOUBLE_SPEC_CV_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
38164 {
38165 	USE_OPLINE
38166 	zval *var_ptr;
38167 
38168 	var_ptr = EX_VAR(opline->op1.var);
38169 	if (EXPECTED(Z_TYPE_P(var_ptr) == IS_LONG)) {
38170 		fast_long_decrement_function(var_ptr);
38171 	} else {
38172 		Z_DVAL_P(var_ptr)--;
38173 	}
38174 	if (UNEXPECTED(1)) {
38175 		ZVAL_COPY_VALUE(EX_VAR(opline->result.var), var_ptr);
38176 	}
38177 	ZEND_VM_NEXT_OPCODE();
38178 }
38179 
38180 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_POST_INC_LONG_NO_OVERFLOW_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
38181 {
38182 	USE_OPLINE
38183 	zval *var_ptr;
38184 
38185 	var_ptr = EX_VAR(opline->op1.var);
38186 	ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(var_ptr));
38187 	Z_LVAL_P(var_ptr)++;
38188 	ZEND_VM_NEXT_OPCODE();
38189 }
38190 
38191 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_POST_INC_LONG_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
38192 {
38193 	USE_OPLINE
38194 	zval *var_ptr;
38195 
38196 	var_ptr = EX_VAR(opline->op1.var);
38197 	ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(var_ptr));
38198 	fast_long_increment_function(var_ptr);
38199 	ZEND_VM_NEXT_OPCODE();
38200 }
38201 
38202 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_POST_INC_LONG_OR_DOUBLE_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
38203 {
38204 	USE_OPLINE
38205 	zval *var_ptr;
38206 
38207 	var_ptr = EX_VAR(opline->op1.var);
38208 	if (EXPECTED(Z_TYPE_P(var_ptr) == IS_LONG)) {
38209 		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(var_ptr));
38210 		fast_long_increment_function(var_ptr);
38211 	} else {
38212 		ZVAL_DOUBLE(EX_VAR(opline->result.var), Z_DVAL_P(var_ptr));
38213 		Z_DVAL_P(var_ptr)++;
38214 	}
38215 	ZEND_VM_NEXT_OPCODE();
38216 }
38217 
38218 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_POST_DEC_LONG_NO_OVERFLOW_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
38219 {
38220 	USE_OPLINE
38221 	zval *var_ptr;
38222 
38223 	var_ptr = EX_VAR(opline->op1.var);
38224 	ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(var_ptr));
38225 	Z_LVAL_P(var_ptr)--;
38226 	ZEND_VM_NEXT_OPCODE();
38227 }
38228 
38229 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_POST_DEC_LONG_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
38230 {
38231 	USE_OPLINE
38232 	zval *var_ptr;
38233 
38234 	var_ptr = EX_VAR(opline->op1.var);
38235 	ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(var_ptr));
38236 	fast_long_decrement_function(var_ptr);
38237 	ZEND_VM_NEXT_OPCODE();
38238 }
38239 
38240 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_POST_DEC_LONG_OR_DOUBLE_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
38241 {
38242 	USE_OPLINE
38243 	zval *var_ptr;
38244 
38245 	var_ptr = EX_VAR(opline->op1.var);
38246 	if (EXPECTED(Z_TYPE_P(var_ptr) == IS_LONG)) {
38247 		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(var_ptr));
38248 		fast_long_decrement_function(var_ptr);
38249 	} else {
38250 		ZVAL_DOUBLE(EX_VAR(opline->result.var), Z_DVAL_P(var_ptr));
38251 		Z_DVAL_P(var_ptr)--;
38252 	}
38253 	ZEND_VM_NEXT_OPCODE();
38254 }
38255 
38256 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SEND_VAR_SIMPLE_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
38257 {
38258 	USE_OPLINE
38259 	zval *varptr, *arg;
38260 
38261 
38262 	varptr = EX_VAR(opline->op1.var);
38263 	arg = ZEND_CALL_VAR(EX(call), opline->result.var);
38264 
38265 	if (IS_CV == IS_CV) {
38266 		ZVAL_COPY(arg, varptr);
38267 	} else /* if (IS_CV == IS_VAR) */ {
38268 		ZVAL_COPY_VALUE(arg, varptr);
38269 	}
38270 
38271 	ZEND_VM_NEXT_OPCODE();
38272 }
38273 
38274 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SEND_VAR_EX_SIMPLE_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
38275 {
38276 	USE_OPLINE
38277 	zval *varptr, *arg;
38278 
38279 	uint32_t arg_num = opline->op2.num;
38280 
38281 	if (QUICK_ARG_SHOULD_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
38282 		ZEND_VM_TAIL_CALL(ZEND_SEND_REF_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
38283 	}
38284 
38285 	varptr = EX_VAR(opline->op1.var);
38286 	arg = ZEND_CALL_VAR(EX(call), opline->result.var);
38287 
38288 	if (IS_CV == IS_CV) {
38289 		ZVAL_COPY(arg, varptr);
38290 	} else /* if (IS_CV == IS_VAR) */ {
38291 		ZVAL_COPY_VALUE(arg, varptr);
38292 	}
38293 
38294 	ZEND_VM_NEXT_OPCODE();
38295 }
38296 
38297 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ADD_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
38298 {
38299 	USE_OPLINE
38300 
38301 	zval *op1, *op2, *result;
38302 
38303 	op1 = EX_VAR(opline->op1.var);
38304 	op2 = RT_CONSTANT(opline, opline->op2);
38305 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
38306 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
38307 			result = EX_VAR(opline->result.var);
38308 			fast_long_add_function(result, op1, op2);
38309 			ZEND_VM_NEXT_OPCODE();
38310 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
38311 			result = EX_VAR(opline->result.var);
38312 			ZVAL_DOUBLE(result, ((double)Z_LVAL_P(op1)) + Z_DVAL_P(op2));
38313 			ZEND_VM_NEXT_OPCODE();
38314 		}
38315 	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
38316 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
38317 			result = EX_VAR(opline->result.var);
38318 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) + Z_DVAL_P(op2));
38319 			ZEND_VM_NEXT_OPCODE();
38320 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
38321 			result = EX_VAR(opline->result.var);
38322 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) + ((double)Z_LVAL_P(op2)));
38323 			ZEND_VM_NEXT_OPCODE();
38324 		}
38325 	}
38326 
38327 	SAVE_OPLINE();
38328 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
38329 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
38330 	}
38331 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
38332 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
38333 	}
38334 	add_function(EX_VAR(opline->result.var), op1, op2);
38335 
38336 
38337 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
38338 }
38339 
38340 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SUB_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
38341 {
38342 	USE_OPLINE
38343 
38344 	zval *op1, *op2, *result;
38345 
38346 	op1 = EX_VAR(opline->op1.var);
38347 	op2 = RT_CONSTANT(opline, opline->op2);
38348 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
38349 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
38350 			result = EX_VAR(opline->result.var);
38351 			fast_long_sub_function(result, op1, op2);
38352 			ZEND_VM_NEXT_OPCODE();
38353 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
38354 			result = EX_VAR(opline->result.var);
38355 			ZVAL_DOUBLE(result, ((double)Z_LVAL_P(op1)) - Z_DVAL_P(op2));
38356 			ZEND_VM_NEXT_OPCODE();
38357 		}
38358 	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
38359 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
38360 			result = EX_VAR(opline->result.var);
38361 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) - Z_DVAL_P(op2));
38362 			ZEND_VM_NEXT_OPCODE();
38363 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
38364 			result = EX_VAR(opline->result.var);
38365 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) - ((double)Z_LVAL_P(op2)));
38366 			ZEND_VM_NEXT_OPCODE();
38367 		}
38368 	}
38369 
38370 	SAVE_OPLINE();
38371 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
38372 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
38373 	}
38374 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
38375 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
38376 	}
38377 	sub_function(EX_VAR(opline->result.var), op1, op2);
38378 
38379 
38380 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
38381 }
38382 
38383 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_MUL_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
38384 {
38385 	USE_OPLINE
38386 
38387 	zval *op1, *op2, *result;
38388 
38389 	op1 = EX_VAR(opline->op1.var);
38390 	op2 = RT_CONSTANT(opline, opline->op2);
38391 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
38392 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
38393 			zend_long overflow;
38394 
38395 			result = EX_VAR(opline->result.var);
38396 			ZEND_SIGNED_MULTIPLY_LONG(Z_LVAL_P(op1), Z_LVAL_P(op2), Z_LVAL_P(result), Z_DVAL_P(result), overflow);
38397 			Z_TYPE_INFO_P(result) = overflow ? IS_DOUBLE : IS_LONG;
38398 			ZEND_VM_NEXT_OPCODE();
38399 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
38400 			result = EX_VAR(opline->result.var);
38401 			ZVAL_DOUBLE(result, ((double)Z_LVAL_P(op1)) * Z_DVAL_P(op2));
38402 			ZEND_VM_NEXT_OPCODE();
38403 		}
38404 	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
38405 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
38406 			result = EX_VAR(opline->result.var);
38407 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) * Z_DVAL_P(op2));
38408 			ZEND_VM_NEXT_OPCODE();
38409 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
38410 			result = EX_VAR(opline->result.var);
38411 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) * ((double)Z_LVAL_P(op2)));
38412 			ZEND_VM_NEXT_OPCODE();
38413 		}
38414 	}
38415 
38416 	SAVE_OPLINE();
38417 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
38418 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
38419 	}
38420 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
38421 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
38422 	}
38423 	mul_function(EX_VAR(opline->result.var), op1, op2);
38424 
38425 
38426 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
38427 }
38428 
38429 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_DIV_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
38430 {
38431 	USE_OPLINE
38432 
38433 	zval *op1, *op2;
38434 
38435 	SAVE_OPLINE();
38436 	op1 = _get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
38437 	op2 = RT_CONSTANT(opline, opline->op2);
38438 	fast_div_function(EX_VAR(opline->result.var), op1, op2);
38439 
38440 
38441 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
38442 }
38443 
38444 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_MOD_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
38445 {
38446 	USE_OPLINE
38447 
38448 	zval *op1, *op2, *result;
38449 
38450 	op1 = EX_VAR(opline->op1.var);
38451 	op2 = RT_CONSTANT(opline, opline->op2);
38452 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
38453 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
38454 			result = EX_VAR(opline->result.var);
38455 			if (UNEXPECTED(Z_LVAL_P(op2) == 0)) {
38456 				ZEND_VM_TAIL_CALL(zend_mod_by_zero_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
38457 			} else if (UNEXPECTED(Z_LVAL_P(op2) == -1)) {
38458 				/* Prevent overflow error/crash if op1==ZEND_LONG_MIN */
38459 				ZVAL_LONG(result, 0);
38460 			} else {
38461 				ZVAL_LONG(result, Z_LVAL_P(op1) % Z_LVAL_P(op2));
38462 			}
38463 			ZEND_VM_NEXT_OPCODE();
38464 		}
38465 	}
38466 
38467 	SAVE_OPLINE();
38468 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
38469 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
38470 	}
38471 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
38472 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
38473 	}
38474 	mod_function(EX_VAR(opline->result.var), op1, op2);
38475 
38476 
38477 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
38478 }
38479 
38480 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SL_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
38481 {
38482 	USE_OPLINE
38483 
38484 	zval *op1, *op2;
38485 
38486 	op1 = EX_VAR(opline->op1.var);
38487 	op2 = RT_CONSTANT(opline, opline->op2);
38488 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)
38489 			&& EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)
38490 			&& EXPECTED((zend_ulong)Z_LVAL_P(op2) < SIZEOF_ZEND_LONG * 8)) {
38491 		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(op1) << Z_LVAL_P(op2));
38492 		ZEND_VM_NEXT_OPCODE();
38493 	}
38494 
38495 	SAVE_OPLINE();
38496 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
38497 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
38498 	}
38499 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
38500 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
38501 	}
38502 	shift_left_function(EX_VAR(opline->result.var), op1, op2);
38503 
38504 
38505 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
38506 }
38507 
38508 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SR_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
38509 {
38510 	USE_OPLINE
38511 
38512 	zval *op1, *op2;
38513 
38514 	op1 = EX_VAR(opline->op1.var);
38515 	op2 = RT_CONSTANT(opline, opline->op2);
38516 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)
38517 			&& EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)
38518 			&& EXPECTED((zend_ulong)Z_LVAL_P(op2) < SIZEOF_ZEND_LONG * 8)) {
38519 		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(op1) >> Z_LVAL_P(op2));
38520 		ZEND_VM_NEXT_OPCODE();
38521 	}
38522 
38523 	SAVE_OPLINE();
38524 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
38525 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
38526 	}
38527 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
38528 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
38529 	}
38530 	shift_right_function(EX_VAR(opline->result.var), op1, op2);
38531 
38532 
38533 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
38534 }
38535 
38536 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_POW_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
38537 {
38538 	USE_OPLINE
38539 
38540 	zval *op1, *op2;
38541 
38542 	SAVE_OPLINE();
38543 	op1 = _get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
38544 	op2 = RT_CONSTANT(opline, opline->op2);
38545 	pow_function(EX_VAR(opline->result.var), op1, op2);
38546 
38547 
38548 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
38549 }
38550 
38551 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_CONCAT_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
38552 {
38553 	USE_OPLINE
38554 
38555 	zval *op1, *op2;
38556 
38557 	op1 = EX_VAR(opline->op1.var);
38558 	op2 = RT_CONSTANT(opline, opline->op2);
38559 
38560 	if ((IS_CV == IS_CONST || EXPECTED(Z_TYPE_P(op1) == IS_STRING)) &&
38561 	    (IS_CONST == IS_CONST || EXPECTED(Z_TYPE_P(op2) == IS_STRING))) {
38562 		zend_string *op1_str = Z_STR_P(op1);
38563 		zend_string *op2_str = Z_STR_P(op2);
38564 		zend_string *str;
38565 
38566 		if (IS_CV != IS_CONST && UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
38567 			if (IS_CONST == IS_CONST || IS_CONST == IS_CV) {
38568 				ZVAL_STR_COPY(EX_VAR(opline->result.var), op2_str);
38569 			} else {
38570 				ZVAL_STR(EX_VAR(opline->result.var), op2_str);
38571 			}
38572 
38573 		} else if (IS_CONST != IS_CONST && UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
38574 			if (IS_CV == IS_CONST || IS_CV == IS_CV) {
38575 				ZVAL_STR_COPY(EX_VAR(opline->result.var), op1_str);
38576 			} else {
38577 				ZVAL_STR(EX_VAR(opline->result.var), op1_str);
38578 			}
38579 
38580 		} else if (IS_CV != IS_CONST && IS_CV != IS_CV &&
38581 		    !ZSTR_IS_INTERNED(op1_str) && GC_REFCOUNT(op1_str) == 1) {
38582 		    size_t len = ZSTR_LEN(op1_str);
38583 
38584 			str = zend_string_extend(op1_str, len + ZSTR_LEN(op2_str), 0);
38585 			memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
38586 			ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
38587 
38588 		} else {
38589 			str = zend_string_alloc(ZSTR_LEN(op1_str) + ZSTR_LEN(op2_str), 0);
38590 			memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
38591 			memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
38592 			ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
38593 
38594 
38595 		}
38596 		ZEND_VM_NEXT_OPCODE();
38597 	} else {
38598 		SAVE_OPLINE();
38599 
38600 		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
38601 			op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
38602 		}
38603 		if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
38604 			op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
38605 		}
38606 		concat_function(EX_VAR(opline->result.var), op1, op2);
38607 
38608 
38609 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
38610 	}
38611 }
38612 
38613 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_IDENTICAL_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
38614 {
38615 	USE_OPLINE
38616 
38617 	zval *op1, *op2;
38618 	int result;
38619 
38620 	SAVE_OPLINE();
38621 	op1 = _get_zval_ptr_cv_deref_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
38622 	op2 = RT_CONSTANT(opline, opline->op2);
38623 	result = fast_is_identical_function(op1, op2);
38624 
38625 
38626 	ZEND_VM_SMART_BRANCH(result, 1);
38627 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
38628 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
38629 }
38630 
38631 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_NOT_IDENTICAL_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
38632 {
38633 	USE_OPLINE
38634 
38635 	zval *op1, *op2;
38636 	int result;
38637 
38638 	SAVE_OPLINE();
38639 	op1 = _get_zval_ptr_cv_deref_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
38640 	op2 = RT_CONSTANT(opline, opline->op2);
38641 	result = fast_is_not_identical_function(op1, op2);
38642 
38643 
38644 	ZEND_VM_SMART_BRANCH(result, 1);
38645 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
38646 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
38647 }
38648 
38649 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_EQUAL_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
38650 {
38651 	USE_OPLINE
38652 
38653 	zval *op1, *op2, *result;
38654 
38655 	op1 = EX_VAR(opline->op1.var);
38656 	op2 = RT_CONSTANT(opline, opline->op2);
38657 	do {
38658 		int result;
38659 
38660 		if (EXPECTED(Z_TYPE_P(op1) == IS_LONG)) {
38661 			if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
38662 				result = (Z_LVAL_P(op1) == Z_LVAL_P(op2));
38663 			} else if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
38664 				result = ((double)Z_LVAL_P(op1) == Z_DVAL_P(op2));
38665 			} else {
38666 				break;
38667 			}
38668 		} else if (EXPECTED(Z_TYPE_P(op1) == IS_DOUBLE)) {
38669 			if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
38670 				result = (Z_DVAL_P(op1) == Z_DVAL_P(op2));
38671 			} else if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
38672 				result = (Z_DVAL_P(op1) == ((double)Z_LVAL_P(op2)));
38673 			} else {
38674 				break;
38675 			}
38676 		} else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
38677 			if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
38678 				result = zend_fast_equal_strings(Z_STR_P(op1), Z_STR_P(op2));
38679 
38680 
38681 			} else {
38682 				break;
38683 			}
38684 		} else {
38685 			break;
38686 		}
38687 		ZEND_VM_SMART_BRANCH(result, 0);
38688 		ZVAL_BOOL(EX_VAR(opline->result.var), result);
38689 		ZEND_VM_NEXT_OPCODE();
38690 	} while (0);
38691 
38692 	SAVE_OPLINE();
38693 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
38694 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
38695 	}
38696 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
38697 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
38698 	}
38699 	result = EX_VAR(opline->result.var);
38700 	compare_function(result, op1, op2);
38701 	ZVAL_BOOL(result, Z_LVAL_P(result) == 0);
38702 
38703 
38704 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
38705 }
38706 
38707 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_NOT_EQUAL_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
38708 {
38709 	USE_OPLINE
38710 
38711 	zval *op1, *op2, *result;
38712 
38713 	op1 = EX_VAR(opline->op1.var);
38714 	op2 = RT_CONSTANT(opline, opline->op2);
38715 	do {
38716 		int result;
38717 
38718 		if (EXPECTED(Z_TYPE_P(op1) == IS_LONG)) {
38719 			if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
38720 				result = (Z_LVAL_P(op1) != Z_LVAL_P(op2));
38721 			} else if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
38722 				result = ((double)Z_LVAL_P(op1) != Z_DVAL_P(op2));
38723 			} else {
38724 				break;
38725 			}
38726 		} else if (EXPECTED(Z_TYPE_P(op1) == IS_DOUBLE)) {
38727 			if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
38728 				result = (Z_DVAL_P(op1) != Z_DVAL_P(op2));
38729 			} else if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
38730 				result = (Z_DVAL_P(op1) != ((double)Z_LVAL_P(op2)));
38731 			} else {
38732 				break;
38733 			}
38734 		} else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
38735 			if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
38736 				result = !zend_fast_equal_strings(Z_STR_P(op1), Z_STR_P(op2));
38737 
38738 
38739 			} else {
38740 				break;
38741 			}
38742 		} else {
38743 			break;
38744 		}
38745 		ZEND_VM_SMART_BRANCH(result, 0);
38746 		ZVAL_BOOL(EX_VAR(opline->result.var), result);
38747 		ZEND_VM_NEXT_OPCODE();
38748 	} while (0);
38749 
38750 	SAVE_OPLINE();
38751 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
38752 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
38753 	}
38754 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
38755 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
38756 	}
38757 	result = EX_VAR(opline->result.var);
38758 	compare_function(result, op1, op2);
38759 	ZVAL_BOOL(result, Z_LVAL_P(result) != 0);
38760 
38761 
38762 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
38763 }
38764 
38765 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
38766 {
38767 	USE_OPLINE
38768 
38769 	zval *op1, *op2, *result;
38770 
38771 	op1 = EX_VAR(opline->op1.var);
38772 	op2 = RT_CONSTANT(opline, opline->op2);
38773 	do {
38774 		int result;
38775 
38776 		if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
38777 			if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
38778 				result = (Z_LVAL_P(op1) < Z_LVAL_P(op2));
38779 			} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
38780 				result = ((double)Z_LVAL_P(op1) < Z_DVAL_P(op2));
38781 			} else {
38782 				break;
38783 			}
38784 		} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
38785 			if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
38786 				result = (Z_DVAL_P(op1) < Z_DVAL_P(op2));
38787 			} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
38788 				result = (Z_DVAL_P(op1) < ((double)Z_LVAL_P(op2)));
38789 			} else {
38790 				break;
38791 			}
38792 		} else {
38793 			break;
38794 		}
38795 		ZEND_VM_SMART_BRANCH(result, 0);
38796 		ZVAL_BOOL(EX_VAR(opline->result.var), result);
38797 		ZEND_VM_NEXT_OPCODE();
38798 	} while (0);
38799 
38800 	SAVE_OPLINE();
38801 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
38802 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
38803 	}
38804 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
38805 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
38806 	}
38807 	result = EX_VAR(opline->result.var);
38808 	compare_function(result, op1, op2);
38809 	ZVAL_BOOL(result, Z_LVAL_P(result) < 0);
38810 
38811 
38812 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
38813 }
38814 
38815 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_OR_EQUAL_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
38816 {
38817 	USE_OPLINE
38818 
38819 	zval *op1, *op2, *result;
38820 
38821 	op1 = EX_VAR(opline->op1.var);
38822 	op2 = RT_CONSTANT(opline, opline->op2);
38823 	do {
38824 		int result;
38825 
38826 		if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
38827 			if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
38828 				result = (Z_LVAL_P(op1) <= Z_LVAL_P(op2));
38829 			} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
38830 				result = ((double)Z_LVAL_P(op1) <= Z_DVAL_P(op2));
38831 			} else {
38832 				break;
38833 			}
38834 		} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
38835 			if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
38836 				result = (Z_DVAL_P(op1) <= Z_DVAL_P(op2));
38837 			} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
38838 				result = (Z_DVAL_P(op1) <= ((double)Z_LVAL_P(op2)));
38839 			} else {
38840 				break;
38841 			}
38842 		} else {
38843 			break;
38844 		}
38845 		ZEND_VM_SMART_BRANCH(result, 0);
38846 		ZVAL_BOOL(EX_VAR(opline->result.var), result);
38847 		ZEND_VM_NEXT_OPCODE();
38848 	} while (0);
38849 
38850 	SAVE_OPLINE();
38851 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
38852 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
38853 	}
38854 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
38855 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
38856 	}
38857 	result = EX_VAR(opline->result.var);
38858 	compare_function(result, op1, op2);
38859 	ZVAL_BOOL(result, Z_LVAL_P(result) <= 0);
38860 
38861 
38862 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
38863 }
38864 
38865 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SPACESHIP_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
38866 {
38867 	USE_OPLINE
38868 
38869 	zval *op1, *op2;
38870 
38871 	SAVE_OPLINE();
38872 	op1 = _get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
38873 	op2 = RT_CONSTANT(opline, opline->op2);
38874 	compare_function(EX_VAR(opline->result.var), op1, op2);
38875 
38876 
38877 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
38878 }
38879 
38880 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BW_OR_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
38881 {
38882 	USE_OPLINE
38883 
38884 	zval *op1, *op2;
38885 
38886 	op1 = EX_VAR(opline->op1.var);
38887 	op2 = RT_CONSTANT(opline, opline->op2);
38888 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)
38889 			&& EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
38890 		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(op1) | Z_LVAL_P(op2));
38891 		ZEND_VM_NEXT_OPCODE();
38892 	}
38893 
38894 	SAVE_OPLINE();
38895 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
38896 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
38897 	}
38898 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
38899 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
38900 	}
38901 	bitwise_or_function(EX_VAR(opline->result.var), op1, op2);
38902 
38903 
38904 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
38905 }
38906 
38907 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BW_AND_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
38908 {
38909 	USE_OPLINE
38910 
38911 	zval *op1, *op2;
38912 
38913 	op1 = EX_VAR(opline->op1.var);
38914 	op2 = RT_CONSTANT(opline, opline->op2);
38915 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)
38916 			&& EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
38917 		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(op1) & Z_LVAL_P(op2));
38918 		ZEND_VM_NEXT_OPCODE();
38919 	}
38920 
38921 	SAVE_OPLINE();
38922 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
38923 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
38924 	}
38925 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
38926 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
38927 	}
38928 	bitwise_and_function(EX_VAR(opline->result.var), op1, op2);
38929 
38930 
38931 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
38932 }
38933 
38934 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BW_XOR_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
38935 {
38936 	USE_OPLINE
38937 
38938 	zval *op1, *op2;
38939 
38940 	op1 = EX_VAR(opline->op1.var);
38941 	op2 = RT_CONSTANT(opline, opline->op2);
38942 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)
38943 			&& EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
38944 		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(op1) ^ Z_LVAL_P(op2));
38945 		ZEND_VM_NEXT_OPCODE();
38946 	}
38947 
38948 	SAVE_OPLINE();
38949 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
38950 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
38951 	}
38952 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
38953 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
38954 	}
38955 	bitwise_xor_function(EX_VAR(opline->result.var), op1, op2);
38956 
38957 
38958 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
38959 }
38960 
38961 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BOOL_XOR_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
38962 {
38963 	USE_OPLINE
38964 
38965 	zval *op1, *op2;
38966 
38967 	SAVE_OPLINE();
38968 	op1 = _get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
38969 	op2 = RT_CONSTANT(opline, opline->op2);
38970 	boolean_xor_function(EX_VAR(opline->result.var), op1, op2);
38971 
38972 
38973 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
38974 }
38975 
38976 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_obj_helper_SPEC_CV_CONST(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
38977 {
38978 	USE_OPLINE
38979 	zend_free_op free_op_data1;
38980 	zval *object;
38981 	zval *property;
38982 	zval *value;
38983 	zval *zptr;
38984 
38985 	SAVE_OPLINE();
38986 	object = _get_zval_ptr_cv_BP_VAR_RW(opline->op1.var EXECUTE_DATA_CC);
38987 
38988 	if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
38989 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
38990 	}
38991 
38992 	property = RT_CONSTANT(opline, opline->op2);
38993 
38994 	do {
38995 		value = get_op_data_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data1);
38996 
38997 		if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
38998 			if (Z_ISREF_P(object)) {
38999 				object = Z_REFVAL_P(object);
39000 				if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
39001 					goto assign_op_object;
39002 				}
39003 			}
39004 			if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
39005 				break;
39006 			}
39007 		}
39008 
39009 		/* here we are sure we are dealing with an object */
39010 assign_op_object:
39011 		if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
39012 			&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CONST == IS_CONST) ? CACHE_ADDR((opline+1)->extended_value) : NULL))) != NULL)) {
39013 			if (UNEXPECTED(Z_ISERROR_P(zptr))) {
39014 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
39015 					ZVAL_NULL(EX_VAR(opline->result.var));
39016 				}
39017 			} else {
39018 				ZVAL_DEREF(zptr);
39019 
39020 				binary_op(zptr, zptr, value);
39021 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
39022 					ZVAL_COPY(EX_VAR(opline->result.var), zptr);
39023 				}
39024 			}
39025 		} else {
39026 			zend_assign_op_overloaded_property(object, property, ((IS_CONST == IS_CONST) ? CACHE_ADDR((opline+1)->extended_value) : NULL), value, binary_op OPLINE_CC EXECUTE_DATA_CC);
39027 		}
39028 	} while (0);
39029 
39030 	FREE_OP(free_op_data1);
39031 
39032 
39033 	/* assign_obj has two opcodes! */
39034 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
39035 }
39036 
39037 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_dim_helper_SPEC_CV_CONST(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
39038 {
39039 	USE_OPLINE
39040 	zend_free_op free_op_data1;
39041 	zval *var_ptr;
39042 	zval *value, *container, *dim;
39043 
39044 	SAVE_OPLINE();
39045 	container = EX_VAR(opline->op1.var);
39046 
39047 	if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
39048 assign_dim_op_array:
39049 		SEPARATE_ARRAY(container);
39050 assign_dim_op_new_array:
39051 		dim = RT_CONSTANT(opline, opline->op2);
39052 		if (IS_CONST == IS_UNUSED) {
39053 			var_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(container), &EG(uninitialized_zval));
39054 			if (UNEXPECTED(!var_ptr)) {
39055 				zend_cannot_add_element();
39056 				goto assign_dim_op_ret_null;
39057 			}
39058 		} else {
39059 			if (IS_CONST == IS_CONST) {
39060 				var_ptr = zend_fetch_dimension_address_inner_RW_CONST(Z_ARRVAL_P(container), dim EXECUTE_DATA_CC);
39061 			} else {
39062 				var_ptr = zend_fetch_dimension_address_inner_RW(Z_ARRVAL_P(container), dim EXECUTE_DATA_CC);
39063 			}
39064 			if (UNEXPECTED(!var_ptr)) {
39065 				goto assign_dim_op_ret_null;
39066 			}
39067 			ZVAL_DEREF(var_ptr);
39068 		}
39069 
39070 		value = get_op_data_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data1);
39071 
39072 		binary_op(var_ptr, var_ptr, value);
39073 
39074 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
39075 			ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
39076 		}
39077 	} else {
39078 		if (EXPECTED(Z_ISREF_P(container))) {
39079 			container = Z_REFVAL_P(container);
39080 			if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
39081 				goto assign_dim_op_array;
39082 			}
39083 		} else if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(container) == IS_UNDEF)) {
39084 			container = GET_OP1_UNDEF_CV(container, BP_VAR_RW);
39085 assign_dim_op_convert_to_array:
39086 			ZVAL_ARR(container, zend_new_array(8));
39087 			goto assign_dim_op_new_array;
39088 		}
39089 
39090 		dim = RT_CONSTANT(opline, opline->op2);
39091 
39092 		if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
39093 			value = get_op_data_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data1);
39094 			if (IS_CONST == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
39095 				dim++;
39096 			}
39097 			zend_binary_assign_op_obj_dim(container, dim, value, UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL, binary_op EXECUTE_DATA_CC);
39098 		} else {
39099 			if (UNEXPECTED(Z_TYPE_P(container) == IS_STRING)) {
39100 				if (IS_CONST == IS_UNUSED) {
39101 					zend_use_new_element_for_string();
39102 				} else {
39103 					zend_check_string_offset(dim, BP_VAR_RW EXECUTE_DATA_CC);
39104 					zend_wrong_string_offset(EXECUTE_DATA_C);
39105 				}
39106 				UNDEF_RESULT();
39107 			} else if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) {
39108 				goto assign_dim_op_convert_to_array;
39109 			} else {
39110 				if (UNEXPECTED(IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(container)))) {
39111 					zend_use_scalar_as_array();
39112 				}
39113 assign_dim_op_ret_null:
39114 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
39115 					ZVAL_NULL(EX_VAR(opline->result.var));
39116 				}
39117 			}
39118 			value = get_op_data_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data1);
39119 		}
39120 	}
39121 
39122 	FREE_OP(free_op_data1);
39123 
39124 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
39125 }
39126 
39127 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_simple_helper_SPEC_CV_CONST(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
39128 {
39129 	USE_OPLINE
39130 
39131 	zval *var_ptr;
39132 	zval *value;
39133 
39134 	SAVE_OPLINE();
39135 	value = RT_CONSTANT(opline, opline->op2);
39136 	var_ptr = _get_zval_ptr_cv_BP_VAR_RW(opline->op1.var EXECUTE_DATA_CC);
39137 
39138 	if (IS_CV == IS_VAR && UNEXPECTED(Z_ISERROR_P(var_ptr))) {
39139 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
39140 			ZVAL_NULL(EX_VAR(opline->result.var));
39141 		}
39142 	} else {
39143 		ZVAL_DEREF(var_ptr);
39144 
39145 		binary_op(var_ptr, var_ptr, value);
39146 
39147 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
39148 			ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
39149 		}
39150 	}
39151 
39152 
39153 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
39154 }
39155 
39156 static zend_always_inline ZEND_OPCODE_HANDLER_RET zend_binary_assign_op_helper_SPEC_CV_CONST(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
39157 {
39158 #if 1 && IS_CONST == IS_UNUSED
39159 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_CV_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
39160 #else
39161 # if 0 || IS_CV != IS_UNUSED
39162 #  if 0
39163 	/* opline->extended_value checks are specialized, don't need opline */
39164 	USE_OPLINE
39165 #  endif
39166 
39167 	if (EXPECTED(1)) {
39168 		ZEND_VM_TAIL_CALL(zend_binary_assign_op_simple_helper_SPEC_CV_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
39169 	}
39170 	if (EXPECTED(0)) {
39171 		ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_CV_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
39172 	}
39173 # endif
39174 
39175 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_obj_helper_SPEC_CV_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
39176 #endif
39177 }
39178 
39179 static zend_always_inline ZEND_OPCODE_HANDLER_RET zend_binary_assign_op_helper_SPEC_CV_CONST_DIM(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
39180 {
39181 #if 1 && IS_CONST == IS_UNUSED
39182 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_CV_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
39183 #else
39184 # if 0 || IS_CV != IS_UNUSED
39185 #  if 0
39186 	/* opline->extended_value checks are specialized, don't need opline */
39187 	USE_OPLINE
39188 #  endif
39189 
39190 	if (EXPECTED(0)) {
39191 		ZEND_VM_TAIL_CALL(zend_binary_assign_op_simple_helper_SPEC_CV_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
39192 	}
39193 	if (EXPECTED(1)) {
39194 		ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_CV_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
39195 	}
39196 # endif
39197 
39198 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_obj_helper_SPEC_CV_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
39199 #endif
39200 }
39201 
39202 static zend_always_inline ZEND_OPCODE_HANDLER_RET zend_binary_assign_op_helper_SPEC_CV_CONST_OBJ(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
39203 {
39204 #if 1 && IS_CONST == IS_UNUSED
39205 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_CV_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
39206 #else
39207 # if 0 || IS_CV != IS_UNUSED
39208 #  if 0
39209 	/* opline->extended_value checks are specialized, don't need opline */
39210 	USE_OPLINE
39211 #  endif
39212 
39213 	if (EXPECTED(0)) {
39214 		ZEND_VM_TAIL_CALL(zend_binary_assign_op_simple_helper_SPEC_CV_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
39215 	}
39216 	if (EXPECTED(0)) {
39217 		ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_CV_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
39218 	}
39219 # endif
39220 
39221 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_obj_helper_SPEC_CV_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
39222 #endif
39223 }
39224 
39225 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_ADD_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
39226 {
39227 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST(add_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
39228 }
39229 
39230 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_ADD_SPEC_CV_CONST_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
39231 {
39232 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST_DIM(add_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
39233 }
39234 
39235 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_ADD_SPEC_CV_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
39236 {
39237 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST_OBJ(add_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
39238 }
39239 
39240 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SUB_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
39241 {
39242 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST(sub_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
39243 }
39244 
39245 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SUB_SPEC_CV_CONST_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
39246 {
39247 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST_DIM(sub_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
39248 }
39249 
39250 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SUB_SPEC_CV_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
39251 {
39252 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST_OBJ(sub_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
39253 }
39254 
39255 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MUL_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
39256 {
39257 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST(mul_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
39258 }
39259 
39260 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MUL_SPEC_CV_CONST_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
39261 {
39262 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST_DIM(mul_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
39263 }
39264 
39265 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MUL_SPEC_CV_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
39266 {
39267 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST_OBJ(mul_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
39268 }
39269 
39270 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIV_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
39271 {
39272 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST(div_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
39273 }
39274 
39275 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIV_SPEC_CV_CONST_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
39276 {
39277 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST_DIM(div_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
39278 }
39279 
39280 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIV_SPEC_CV_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
39281 {
39282 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST_OBJ(div_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
39283 }
39284 
39285 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MOD_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
39286 {
39287 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST(mod_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
39288 }
39289 
39290 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MOD_SPEC_CV_CONST_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
39291 {
39292 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST_DIM(mod_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
39293 }
39294 
39295 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MOD_SPEC_CV_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
39296 {
39297 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST_OBJ(mod_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
39298 }
39299 
39300 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SL_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
39301 {
39302 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST(shift_left_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
39303 }
39304 
39305 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SL_SPEC_CV_CONST_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
39306 {
39307 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST_DIM(shift_left_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
39308 }
39309 
39310 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SL_SPEC_CV_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
39311 {
39312 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST_OBJ(shift_left_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
39313 }
39314 
39315 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SR_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
39316 {
39317 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST(shift_right_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
39318 }
39319 
39320 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SR_SPEC_CV_CONST_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
39321 {
39322 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST_DIM(shift_right_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
39323 }
39324 
39325 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SR_SPEC_CV_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
39326 {
39327 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST_OBJ(shift_right_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
39328 }
39329 
39330 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_CONCAT_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
39331 {
39332 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST(concat_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
39333 }
39334 
39335 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_CONCAT_SPEC_CV_CONST_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
39336 {
39337 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST_DIM(concat_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
39338 }
39339 
39340 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_CONCAT_SPEC_CV_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
39341 {
39342 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST_OBJ(concat_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
39343 }
39344 
39345 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_OR_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
39346 {
39347 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST(bitwise_or_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
39348 }
39349 
39350 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_OR_SPEC_CV_CONST_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
39351 {
39352 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST_DIM(bitwise_or_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
39353 }
39354 
39355 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_OR_SPEC_CV_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
39356 {
39357 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST_OBJ(bitwise_or_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
39358 }
39359 
39360 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_AND_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
39361 {
39362 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST(bitwise_and_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
39363 }
39364 
39365 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_AND_SPEC_CV_CONST_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
39366 {
39367 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST_DIM(bitwise_and_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
39368 }
39369 
39370 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_AND_SPEC_CV_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
39371 {
39372 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST_OBJ(bitwise_and_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
39373 }
39374 
39375 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_XOR_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
39376 {
39377 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST(bitwise_xor_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
39378 }
39379 
39380 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_XOR_SPEC_CV_CONST_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
39381 {
39382 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST_DIM(bitwise_xor_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
39383 }
39384 
39385 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_XOR_SPEC_CV_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
39386 {
39387 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST_OBJ(bitwise_xor_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
39388 }
39389 
39390 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_POW_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
39391 {
39392 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST(pow_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
39393 }
39394 
39395 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_POW_SPEC_CV_CONST_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
39396 {
39397 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST_DIM(pow_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
39398 }
39399 
39400 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_POW_SPEC_CV_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
39401 {
39402 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST_OBJ(pow_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
39403 }
39404 
39405 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_pre_incdec_property_helper_SPEC_CV_CONST(int inc ZEND_OPCODE_HANDLER_ARGS_DC)
39406 {
39407 	USE_OPLINE
39408 
39409 	zval *object;
39410 	zval *property;
39411 	zval *zptr;
39412 
39413 	SAVE_OPLINE();
39414 	object = _get_zval_ptr_cv_BP_VAR_RW(opline->op1.var EXECUTE_DATA_CC);
39415 
39416 	if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
39417 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
39418 	}
39419 
39420 	property = RT_CONSTANT(opline, opline->op2);
39421 
39422 	do {
39423 		if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
39424 			if (Z_ISREF_P(object)) {
39425 				object = Z_REFVAL_P(object);
39426 				if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
39427 					goto pre_incdec_object;
39428 				}
39429 			}
39430 			if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
39431 				break;
39432 			}
39433 		}
39434 
39435 		/* here we are sure we are dealing with an object */
39436 pre_incdec_object:
39437 		if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
39438 			&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL))) != NULL)) {
39439 			if (UNEXPECTED(Z_ISERROR_P(zptr))) {
39440 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
39441 					ZVAL_NULL(EX_VAR(opline->result.var));
39442 				}
39443 			} else {
39444 				if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
39445 					if (inc) {
39446 						fast_long_increment_function(zptr);
39447 					} else {
39448 						fast_long_decrement_function(zptr);
39449 					}
39450 				} else {
39451 					ZVAL_DEREF(zptr);
39452 
39453 					if (inc) {
39454 						increment_function(zptr);
39455 					} else {
39456 						decrement_function(zptr);
39457 					}
39458 				}
39459 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
39460 					ZVAL_COPY(EX_VAR(opline->result.var), zptr);
39461 				}
39462 			}
39463 		} else {
39464 			zend_pre_incdec_overloaded_property(object, property, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), inc OPLINE_CC EXECUTE_DATA_CC);
39465 		}
39466 	} while (0);
39467 
39468 
39469 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
39470 }
39471 
39472 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_INC_OBJ_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
39473 {
39474 	ZEND_VM_TAIL_CALL(zend_pre_incdec_property_helper_SPEC_CV_CONST(1 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
39475 }
39476 
39477 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_DEC_OBJ_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
39478 {
39479 	ZEND_VM_TAIL_CALL(zend_pre_incdec_property_helper_SPEC_CV_CONST(0 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
39480 }
39481 
39482 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_post_incdec_property_helper_SPEC_CV_CONST(int inc ZEND_OPCODE_HANDLER_ARGS_DC)
39483 {
39484 	USE_OPLINE
39485 
39486 	zval *object;
39487 	zval *property;
39488 	zval *zptr;
39489 
39490 	SAVE_OPLINE();
39491 	object = _get_zval_ptr_cv_BP_VAR_RW(opline->op1.var EXECUTE_DATA_CC);
39492 
39493 	if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
39494 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
39495 	}
39496 
39497 	property = RT_CONSTANT(opline, opline->op2);
39498 
39499 	do {
39500 		if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
39501 			if (Z_ISREF_P(object)) {
39502 				object = Z_REFVAL_P(object);
39503 				if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
39504 					goto post_incdec_object;
39505 				}
39506 			}
39507 			if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
39508 				break;
39509 			}
39510 		}
39511 
39512 		/* here we are sure we are dealing with an object */
39513 post_incdec_object:
39514 		if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
39515 			&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL))) != NULL)) {
39516 			if (UNEXPECTED(Z_ISERROR_P(zptr))) {
39517 				ZVAL_NULL(EX_VAR(opline->result.var));
39518 			} else {
39519 				if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
39520 					ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(zptr));
39521 					if (inc) {
39522 						fast_long_increment_function(zptr);
39523 					} else {
39524 						fast_long_decrement_function(zptr);
39525 					}
39526 				} else {
39527 					ZVAL_DEREF(zptr);
39528 					ZVAL_COPY(EX_VAR(opline->result.var), zptr);
39529 					if (inc) {
39530 						increment_function(zptr);
39531 					} else {
39532 						decrement_function(zptr);
39533 					}
39534 				}
39535 			}
39536 		} else {
39537 			zend_post_incdec_overloaded_property(object, property, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), inc OPLINE_CC EXECUTE_DATA_CC);
39538 		}
39539 	} while (0);
39540 
39541 
39542 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
39543 }
39544 
39545 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_POST_INC_OBJ_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
39546 {
39547 	ZEND_VM_TAIL_CALL(zend_post_incdec_property_helper_SPEC_CV_CONST(1 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
39548 }
39549 
39550 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_POST_DEC_OBJ_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
39551 {
39552 	ZEND_VM_TAIL_CALL(zend_post_incdec_property_helper_SPEC_CV_CONST(0 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
39553 }
39554 
39555 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_fetch_static_prop_helper_SPEC_CV_CONST(int type ZEND_OPCODE_HANDLER_ARGS_DC)
39556 {
39557 	USE_OPLINE
39558 
39559 	zval *varname;
39560 	zval *retval;
39561 	zend_string *name, *tmp_name;
39562 	zend_class_entry *ce;
39563 
39564 	SAVE_OPLINE();
39565 
39566 	do {
39567 		if (IS_CONST == IS_CONST) {
39568 			if (IS_CV == IS_CONST && EXPECTED((ce = CACHED_PTR(opline->extended_value)) != NULL)) {
39569 				retval = CACHED_PTR(opline->extended_value + sizeof(void*));
39570 				break;
39571 			} else {
39572 				zval *class_name = RT_CONSTANT(opline, opline->op2);
39573 
39574 				if (UNEXPECTED((ce = CACHED_PTR(opline->extended_value)) == NULL)) {
39575 					ce = zend_fetch_class_by_name(Z_STR_P(class_name), class_name + 1, ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
39576 					if (UNEXPECTED(ce == NULL)) {
39577 
39578 						retval = NULL;
39579 						break;
39580 					}
39581 					if (IS_CV != IS_CONST) {
39582 						CACHE_PTR(opline->extended_value, ce);
39583 					}
39584 				}
39585 			}
39586 		} else {
39587 			if (IS_CONST == IS_UNUSED) {
39588 				ce = zend_fetch_class(NULL, opline->op2.num);
39589 				if (UNEXPECTED(ce == NULL)) {
39590 
39591 					retval = NULL;
39592 					break;
39593 				}
39594 			} else {
39595 				ce = Z_CE_P(EX_VAR(opline->op2.var));
39596 			}
39597 			if (IS_CV == IS_CONST &&
39598 			    EXPECTED(CACHED_PTR(opline->extended_value) == ce)) {
39599 				retval = CACHED_PTR(opline->extended_value + sizeof(void*));
39600 				break;
39601 			}
39602 		}
39603 
39604 		varname = EX_VAR(opline->op1.var);
39605 		if (IS_CV == IS_CONST) {
39606 			name = Z_STR_P(varname);
39607 		} else if (EXPECTED(Z_TYPE_P(varname) == IS_STRING)) {
39608 			name = Z_STR_P(varname);
39609 			tmp_name = NULL;
39610 		} else {
39611 			if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(varname) == IS_UNDEF)) {
39612 				zval_undefined_cv(EX(opline)->op1.var EXECUTE_DATA_CC);
39613 			}
39614 			name = zval_get_tmp_string(varname, &tmp_name);
39615 		}
39616 
39617 		retval = zend_std_get_static_property(ce, name, type == BP_VAR_IS);
39618 
39619 		if (IS_CV != IS_CONST) {
39620 			zend_tmp_string_release(tmp_name);
39621 		}
39622 
39623 		if (IS_CV == IS_CONST && EXPECTED(retval)) {
39624 			CACHE_POLYMORPHIC_PTR(opline->extended_value, ce, retval);
39625 		}
39626 
39627 	} while (0);
39628 
39629 	if (UNEXPECTED(retval == NULL)) {
39630 		if (EG(exception)) {
39631 			ZVAL_UNDEF(EX_VAR(opline->result.var));
39632 			HANDLE_EXCEPTION();
39633 		} else {
39634 			ZEND_ASSERT(type == BP_VAR_IS);
39635 			retval = &EG(uninitialized_zval);
39636 		}
39637 	}
39638 
39639 	if (type == BP_VAR_R || type == BP_VAR_IS) {
39640 		ZVAL_COPY_DEREF(EX_VAR(opline->result.var), retval);
39641 	} else {
39642 		ZVAL_INDIRECT(EX_VAR(opline->result.var), retval);
39643 	}
39644 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
39645 }
39646 
39647 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_R_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
39648 {
39649 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_CV_CONST(BP_VAR_R ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
39650 }
39651 
39652 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_W_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
39653 {
39654 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_CV_CONST(BP_VAR_W ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
39655 }
39656 
39657 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_RW_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
39658 {
39659 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_CV_CONST(BP_VAR_RW ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
39660 }
39661 
39662 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
39663 {
39664 	int fetch_type =
39665 		(UNEXPECTED(ZEND_CALL_INFO(EX(call)) & ZEND_CALL_SEND_ARG_BY_REF)) ?
39666 			BP_VAR_W : BP_VAR_R;
39667 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_CV_CONST(fetch_type ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
39668 }
39669 
39670 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_UNSET_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
39671 {
39672 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_CV_CONST(BP_VAR_UNSET ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
39673 }
39674 
39675 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_IS_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
39676 {
39677 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_CV_CONST(BP_VAR_IS ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
39678 }
39679 
39680 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_R_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
39681 {
39682 	USE_OPLINE
39683 
39684 	zval *container, *dim, *value, *result;
39685 
39686 	SAVE_OPLINE();
39687 	container = EX_VAR(opline->op1.var);
39688 	dim = RT_CONSTANT(opline, opline->op2);
39689 	if (IS_CV != IS_CONST) {
39690 		if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
39691 fetch_dim_r_array:
39692 			value = zend_fetch_dimension_address_inner(Z_ARRVAL_P(container), dim, IS_CONST, BP_VAR_R EXECUTE_DATA_CC);
39693 			result = EX_VAR(opline->result.var);
39694 			ZVAL_COPY_DEREF(result, value);
39695 		} else if (EXPECTED(Z_TYPE_P(container) == IS_REFERENCE)) {
39696 			container = Z_REFVAL_P(container);
39697 			if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
39698 				goto fetch_dim_r_array;
39699 			} else {
39700 				goto fetch_dim_r_slow;
39701 			}
39702 		} else {
39703 fetch_dim_r_slow:
39704 			if (IS_CONST == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
39705 				dim++;
39706 			}
39707 			zend_fetch_dimension_address_read_R_slow(container, dim OPLINE_CC EXECUTE_DATA_CC);
39708 		}
39709 	} else {
39710 		zend_fetch_dimension_address_read_R(container, dim, IS_CONST OPLINE_CC EXECUTE_DATA_CC);
39711 	}
39712 
39713 
39714 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
39715 }
39716 
39717 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_W_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
39718 {
39719 	USE_OPLINE
39720 	zend_free_op free_op1;
39721 	zval *container;
39722 
39723 	SAVE_OPLINE();
39724 	container = EX_VAR(opline->op1.var);
39725 	zend_fetch_dimension_address_W(container, RT_CONSTANT(opline, opline->op2), IS_CONST OPLINE_CC EXECUTE_DATA_CC);
39726 
39727 	if (IS_CV == IS_VAR) {
39728 		zval *result = EX_VAR(opline->result.var);
39729 		FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(free_op1, result);
39730 	}
39731 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
39732 }
39733 
39734 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_RW_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
39735 {
39736 	USE_OPLINE
39737 	zend_free_op free_op1;
39738 	zval *container;
39739 
39740 	SAVE_OPLINE();
39741 	container = EX_VAR(opline->op1.var);
39742 	zend_fetch_dimension_address_RW(container, RT_CONSTANT(opline, opline->op2), IS_CONST OPLINE_CC EXECUTE_DATA_CC);
39743 
39744 	if (IS_CV == IS_VAR) {
39745 		zval *result = EX_VAR(opline->result.var);
39746 		FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(free_op1, result);
39747 	}
39748 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
39749 }
39750 
39751 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_IS_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
39752 {
39753 	USE_OPLINE
39754 
39755 	zval *container;
39756 
39757 	SAVE_OPLINE();
39758 	container = EX_VAR(opline->op1.var);
39759 	zend_fetch_dimension_address_read_IS(container, RT_CONSTANT(opline, opline->op2), IS_CONST OPLINE_CC EXECUTE_DATA_CC);
39760 
39761 
39762 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
39763 }
39764 
39765 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
39766 {
39767 	if (UNEXPECTED(ZEND_CALL_INFO(EX(call)) & ZEND_CALL_SEND_ARG_BY_REF)) {
39768         if ((IS_CV & (IS_CONST|IS_TMP_VAR))) {
39769 			ZEND_VM_TAIL_CALL(zend_use_tmp_in_write_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
39770         }
39771 		ZEND_VM_TAIL_CALL(ZEND_FETCH_DIM_W_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
39772 	} else {
39773 		if (IS_CONST == IS_UNUSED) {
39774 			ZEND_VM_TAIL_CALL(zend_use_undef_in_read_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
39775 		}
39776 		ZEND_VM_TAIL_CALL(ZEND_FETCH_DIM_R_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
39777 	}
39778 }
39779 
39780 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_UNSET_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
39781 {
39782 	USE_OPLINE
39783 	zend_free_op free_op1;
39784 	zval *container;
39785 
39786 	SAVE_OPLINE();
39787 	container = EX_VAR(opline->op1.var);
39788 	zend_fetch_dimension_address_UNSET(container, RT_CONSTANT(opline, opline->op2), IS_CONST OPLINE_CC EXECUTE_DATA_CC);
39789 
39790 	if (IS_CV == IS_VAR) {
39791 		zval *result = EX_VAR(opline->result.var);
39792 		FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(free_op1, result);
39793 	}
39794 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
39795 }
39796 
39797 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_R_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
39798 {
39799 	USE_OPLINE
39800 
39801 	zval *container;
39802 
39803 	zval *offset;
39804 	void **cache_slot = NULL;
39805 
39806 	SAVE_OPLINE();
39807 	container = EX_VAR(opline->op1.var);
39808 
39809 	if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
39810 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
39811 	}
39812 
39813 	offset = RT_CONSTANT(opline, opline->op2);
39814 
39815 	if (IS_CV == IS_CONST ||
39816 	    (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
39817 	    do {
39818 			if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
39819 				container = Z_REFVAL_P(container);
39820 				if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
39821 					break;
39822 				}
39823 			}
39824 			if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
39825 				GET_OP1_UNDEF_CV(container, BP_VAR_R);
39826 			}
39827 			if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(offset) == IS_UNDEF)) {
39828 				GET_OP2_UNDEF_CV(offset, BP_VAR_R);
39829 			}
39830 			goto fetch_obj_r_no_object;
39831 		} while (0);
39832 	}
39833 
39834 	/* here we are sure we are dealing with an object */
39835 	do {
39836 		zend_object *zobj = Z_OBJ_P(container);
39837 		zval *retval;
39838 
39839 		if (IS_CONST == IS_CONST) {
39840 			cache_slot = CACHE_ADDR(opline->extended_value);
39841 
39842 			if (EXPECTED(zobj->ce == CACHED_PTR_EX(cache_slot))) {
39843 				uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
39844 
39845 				if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
39846 					retval = OBJ_PROP(zobj, prop_offset);
39847 					if (EXPECTED(Z_TYPE_INFO_P(retval) != IS_UNDEF)) {
39848 						ZVAL_COPY_DEREF(EX_VAR(opline->result.var), retval);
39849 						break;
39850 					}
39851 				} else if (EXPECTED(zobj->properties != NULL)) {
39852 					if (!IS_UNKNOWN_DYNAMIC_PROPERTY_OFFSET(prop_offset)) {
39853 						uintptr_t idx = ZEND_DECODE_DYN_PROP_OFFSET(prop_offset);
39854 
39855 						if (EXPECTED(idx < zobj->properties->nNumUsed * sizeof(Bucket))) {
39856 							Bucket *p = (Bucket*)((char*)zobj->properties->arData + idx);
39857 
39858 							if (EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
39859 						        (EXPECTED(p->key == Z_STR_P(offset)) ||
39860 						         (EXPECTED(p->h == ZSTR_H(Z_STR_P(offset))) &&
39861 						          EXPECTED(p->key != NULL) &&
39862 						          EXPECTED(zend_string_equal_content(p->key, Z_STR_P(offset)))))) {
39863 								ZVAL_COPY_DEREF(EX_VAR(opline->result.var), &p->val);
39864 								break;
39865 							}
39866 						}
39867 						CACHE_PTR_EX(cache_slot + 1, (void*)ZEND_DYNAMIC_PROPERTY_OFFSET);
39868 					}
39869 					retval = zend_hash_find_ex(zobj->properties, Z_STR_P(offset), 1);
39870 					if (EXPECTED(retval)) {
39871 						uintptr_t idx = (char*)retval - (char*)zobj->properties->arData;
39872 						CACHE_PTR_EX(cache_slot + 1, (void*)ZEND_ENCODE_DYN_PROP_OFFSET(idx));
39873 						ZVAL_COPY_DEREF(EX_VAR(opline->result.var), retval);
39874 						break;
39875 					}
39876 				}
39877 			}
39878 		} else if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(offset) == IS_UNDEF)) {
39879 			GET_OP2_UNDEF_CV(offset, BP_VAR_R);
39880 		}
39881 
39882 		if (UNEXPECTED(zobj->handlers->read_property == NULL)) {
39883 fetch_obj_r_no_object:
39884 			zend_wrong_property_read(offset);
39885 			ZVAL_NULL(EX_VAR(opline->result.var));
39886 		} else {
39887 			retval = zobj->handlers->read_property(container, offset, BP_VAR_R, cache_slot, EX_VAR(opline->result.var));
39888 
39889 			if (retval != EX_VAR(opline->result.var)) {
39890 				ZVAL_COPY_DEREF(EX_VAR(opline->result.var), retval);
39891 			} else if (UNEXPECTED(Z_ISREF_P(retval))) {
39892 				zend_unwrap_reference(retval);
39893 			}
39894 		}
39895 	} while (0);
39896 
39897 
39898 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
39899 }
39900 
39901 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_W_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
39902 {
39903 	USE_OPLINE
39904 	zend_free_op free_op1;
39905 	zval *property, *container, *result;
39906 
39907 	SAVE_OPLINE();
39908 
39909 	container = EX_VAR(opline->op1.var);
39910 	if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
39911 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
39912 	}
39913 
39914 	property = RT_CONSTANT(opline, opline->op2);
39915 	result = EX_VAR(opline->result.var);
39916 	zend_fetch_property_address(result, container, IS_CV, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_W OPLINE_CC);
39917 
39918 	if (IS_CV == IS_VAR) {
39919 		FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(free_op1, result);
39920 	}
39921 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
39922 }
39923 
39924 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_RW_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
39925 {
39926 	USE_OPLINE
39927 	zend_free_op free_op1;
39928 	zval *property, *container, *result;
39929 
39930 	SAVE_OPLINE();
39931 	container = _get_zval_ptr_cv_BP_VAR_RW(opline->op1.var EXECUTE_DATA_CC);
39932 
39933 	if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
39934 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
39935 	}
39936 	property = RT_CONSTANT(opline, opline->op2);
39937 	result = EX_VAR(opline->result.var);
39938 	zend_fetch_property_address(result, container, IS_CV, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_RW OPLINE_CC);
39939 
39940 	if (IS_CV == IS_VAR) {
39941 		FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(free_op1, result);
39942 	}
39943 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
39944 }
39945 
39946 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_IS_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
39947 {
39948 	USE_OPLINE
39949 
39950 	zval *container;
39951 
39952 	zval *offset;
39953 	void **cache_slot = NULL;
39954 
39955 	SAVE_OPLINE();
39956 	container = _get_zval_ptr_cv_BP_VAR_IS(opline->op1.var EXECUTE_DATA_CC);
39957 
39958 	if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
39959 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
39960 	}
39961 
39962 	offset = RT_CONSTANT(opline, opline->op2);
39963 
39964 	if (IS_CV == IS_CONST ||
39965 	    (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
39966 		do {
39967 			if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
39968 				container = Z_REFVAL_P(container);
39969 				if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
39970 					break;
39971 				}
39972 			}
39973 			goto fetch_obj_is_no_object;
39974 		} while (0);
39975 	}
39976 
39977 	/* here we are sure we are dealing with an object */
39978 	do {
39979 		zend_object *zobj = Z_OBJ_P(container);
39980 		zval *retval;
39981 
39982 		if (IS_CONST == IS_CONST) {
39983 			cache_slot = CACHE_ADDR(opline->extended_value);
39984 
39985 			if (EXPECTED(zobj->ce == CACHED_PTR_EX(cache_slot))) {
39986 				uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
39987 
39988 				if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
39989 					retval = OBJ_PROP(zobj, prop_offset);
39990 					if (EXPECTED(Z_TYPE_P(retval) != IS_UNDEF)) {
39991 						ZVAL_COPY(EX_VAR(opline->result.var), retval);
39992 						break;
39993 					}
39994 				} else if (EXPECTED(zobj->properties != NULL)) {
39995 					if (!IS_UNKNOWN_DYNAMIC_PROPERTY_OFFSET(prop_offset)) {
39996 						uintptr_t idx = ZEND_DECODE_DYN_PROP_OFFSET(prop_offset);
39997 
39998 						if (EXPECTED(idx < zobj->properties->nNumUsed * sizeof(Bucket))) {
39999 							Bucket *p = (Bucket*)((char*)zobj->properties->arData + idx);
40000 
40001 							if (EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
40002 						        (EXPECTED(p->key == Z_STR_P(offset)) ||
40003 						         (EXPECTED(p->h == ZSTR_H(Z_STR_P(offset))) &&
40004 						          EXPECTED(p->key != NULL) &&
40005 						          EXPECTED(zend_string_equal_content(p->key, Z_STR_P(offset)))))) {
40006 								ZVAL_COPY(EX_VAR(opline->result.var), &p->val);
40007 								break;
40008 							}
40009 						}
40010 						CACHE_PTR_EX(cache_slot + 1, (void*)ZEND_DYNAMIC_PROPERTY_OFFSET);
40011 					}
40012 					retval = zend_hash_find_ex(zobj->properties, Z_STR_P(offset), 1);
40013 					if (EXPECTED(retval)) {
40014 						uintptr_t idx = (char*)retval - (char*)zobj->properties->arData;
40015 						CACHE_PTR_EX(cache_slot + 1, (void*)ZEND_ENCODE_DYN_PROP_OFFSET(idx));
40016 						ZVAL_COPY(EX_VAR(opline->result.var), retval);
40017 						break;
40018 					}
40019 				}
40020 			}
40021 		}
40022 
40023 		if (UNEXPECTED(zobj->handlers->read_property == NULL)) {
40024 fetch_obj_is_no_object:
40025 			ZVAL_NULL(EX_VAR(opline->result.var));
40026 		} else {
40027 
40028 			retval = zobj->handlers->read_property(container, offset, BP_VAR_IS, cache_slot, EX_VAR(opline->result.var));
40029 
40030 			if (retval != EX_VAR(opline->result.var)) {
40031 				ZVAL_COPY(EX_VAR(opline->result.var), retval);
40032 			}
40033 		}
40034 	} while (0);
40035 
40036 
40037 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
40038 }
40039 
40040 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
40041 {
40042 	if (UNEXPECTED(ZEND_CALL_INFO(EX(call)) & ZEND_CALL_SEND_ARG_BY_REF)) {
40043 		/* Behave like FETCH_OBJ_W */
40044 		if ((IS_CV & (IS_CONST|IS_TMP_VAR))) {
40045 			ZEND_VM_TAIL_CALL(zend_use_tmp_in_write_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
40046 		}
40047 
40048 		ZEND_VM_TAIL_CALL(ZEND_FETCH_OBJ_W_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
40049 	} else {
40050 		ZEND_VM_TAIL_CALL(ZEND_FETCH_OBJ_R_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
40051 	}
40052 }
40053 
40054 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_UNSET_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
40055 {
40056 	USE_OPLINE
40057 	zend_free_op free_op1;
40058 	zval *container, *property, *result;
40059 
40060 	SAVE_OPLINE();
40061 	container = _get_zval_ptr_cv_BP_VAR_UNSET(opline->op1.var EXECUTE_DATA_CC);
40062 
40063 	if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
40064 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
40065 	}
40066 
40067 	property = RT_CONSTANT(opline, opline->op2);
40068 	result = EX_VAR(opline->result.var);
40069 	zend_fetch_property_address(result, container, IS_CV, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_UNSET OPLINE_CC);
40070 
40071 	if (IS_CV == IS_VAR) {
40072 		FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(free_op1, result);
40073 	}
40074 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
40075 }
40076 
40077 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_CV_CONST_OP_DATA_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
40078 {
40079 	USE_OPLINE
40080 
40081 	zval *object, *property, *value, tmp;
40082 
40083 	SAVE_OPLINE();
40084 	object = EX_VAR(opline->op1.var);
40085 
40086 	if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
40087 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
40088 	}
40089 
40090 	property = RT_CONSTANT(opline, opline->op2);
40091 	value = RT_CONSTANT((opline+1), (opline+1)->op1);
40092 
40093 	if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
40094 		if (Z_ISREF_P(object)) {
40095 			object = Z_REFVAL_P(object);
40096 			if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
40097 				goto assign_object;
40098 			}
40099 		}
40100 		if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
40101 
40102 			goto exit_assign_obj;
40103 		}
40104 	}
40105 
40106 assign_object:
40107 	if (IS_CONST == IS_CONST &&
40108 	    EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(opline->extended_value))) {
40109 		uintptr_t prop_offset = (uintptr_t)CACHED_PTR(opline->extended_value + sizeof(void*));
40110 		zend_object *zobj = Z_OBJ_P(object);
40111 		zval *property_val;
40112 
40113 		if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
40114 			property_val = OBJ_PROP(zobj, prop_offset);
40115 			if (Z_TYPE_P(property_val) != IS_UNDEF) {
40116 fast_assign_obj:
40117 				value = zend_assign_to_variable(property_val, value, IS_CONST);
40118 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
40119 					ZVAL_COPY(EX_VAR(opline->result.var), value);
40120 				}
40121 				goto exit_assign_obj;
40122 			}
40123 		} else {
40124 			if (EXPECTED(zobj->properties != NULL)) {
40125 				if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
40126 					if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
40127 						GC_DELREF(zobj->properties);
40128 					}
40129 					zobj->properties = zend_array_dup(zobj->properties);
40130 				}
40131 				property_val = zend_hash_find_ex(zobj->properties, Z_STR_P(property), 1);
40132 				if (property_val) {
40133 					goto fast_assign_obj;
40134 				}
40135 			}
40136 
40137 			if (!zobj->ce->__set) {
40138 
40139 				if (EXPECTED(zobj->properties == NULL)) {
40140 					rebuild_object_properties(zobj);
40141 				}
40142 				if (IS_CONST == IS_CONST) {
40143 					if (UNEXPECTED(Z_OPT_REFCOUNTED_P(value))) {
40144 						Z_ADDREF_P(value);
40145 					}
40146 				} else if (IS_CONST != IS_TMP_VAR) {
40147 					if (Z_ISREF_P(value)) {
40148 						if (IS_CONST == IS_VAR) {
40149 							zend_reference *ref = Z_REF_P(value);
40150 							if (GC_DELREF(ref) == 0) {
40151 								ZVAL_COPY_VALUE(&tmp, Z_REFVAL_P(value));
40152 								efree_size(ref, sizeof(zend_reference));
40153 								value = &tmp;
40154 							} else {
40155 								value = Z_REFVAL_P(value);
40156 								Z_TRY_ADDREF_P(value);
40157 							}
40158 						} else {
40159 							value = Z_REFVAL_P(value);
40160 							Z_TRY_ADDREF_P(value);
40161 						}
40162 					} else if (IS_CONST == IS_CV) {
40163 						Z_TRY_ADDREF_P(value);
40164 					}
40165 				}
40166 				zend_hash_add_new(zobj->properties, Z_STR_P(property), value);
40167 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
40168 					ZVAL_COPY(EX_VAR(opline->result.var), value);
40169 				}
40170 				goto exit_assign_obj;
40171 			}
40172 		}
40173 	}
40174 
40175 	if (!Z_OBJ_HT_P(object)->write_property) {
40176 		zend_wrong_property_assignment(property OPLINE_CC EXECUTE_DATA_CC);
40177 
40178 		goto exit_assign_obj;
40179 	}
40180 
40181 	if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
40182 		ZVAL_DEREF(value);
40183 	}
40184 
40185 	Z_OBJ_HT_P(object)->write_property(object, property, value, (IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
40186 
40187 	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
40188 		ZVAL_COPY(EX_VAR(opline->result.var), value);
40189 	}
40190 
40191 exit_assign_obj:
40192 
40193 
40194 	/* assign_obj has two opcodes! */
40195 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
40196 }
40197 
40198 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_CV_CONST_OP_DATA_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
40199 {
40200 	USE_OPLINE
40201 	zend_free_op free_op_data;
40202 	zval *object, *property, *value, tmp;
40203 
40204 	SAVE_OPLINE();
40205 	object = EX_VAR(opline->op1.var);
40206 
40207 	if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
40208 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
40209 	}
40210 
40211 	property = RT_CONSTANT(opline, opline->op2);
40212 	value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
40213 
40214 	if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
40215 		if (Z_ISREF_P(object)) {
40216 			object = Z_REFVAL_P(object);
40217 			if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
40218 				goto assign_object;
40219 			}
40220 		}
40221 		if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
40222 			zval_ptr_dtor_nogc(free_op_data);
40223 			goto exit_assign_obj;
40224 		}
40225 	}
40226 
40227 assign_object:
40228 	if (IS_CONST == IS_CONST &&
40229 	    EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(opline->extended_value))) {
40230 		uintptr_t prop_offset = (uintptr_t)CACHED_PTR(opline->extended_value + sizeof(void*));
40231 		zend_object *zobj = Z_OBJ_P(object);
40232 		zval *property_val;
40233 
40234 		if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
40235 			property_val = OBJ_PROP(zobj, prop_offset);
40236 			if (Z_TYPE_P(property_val) != IS_UNDEF) {
40237 fast_assign_obj:
40238 				value = zend_assign_to_variable(property_val, value, IS_TMP_VAR);
40239 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
40240 					ZVAL_COPY(EX_VAR(opline->result.var), value);
40241 				}
40242 				goto exit_assign_obj;
40243 			}
40244 		} else {
40245 			if (EXPECTED(zobj->properties != NULL)) {
40246 				if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
40247 					if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
40248 						GC_DELREF(zobj->properties);
40249 					}
40250 					zobj->properties = zend_array_dup(zobj->properties);
40251 				}
40252 				property_val = zend_hash_find_ex(zobj->properties, Z_STR_P(property), 1);
40253 				if (property_val) {
40254 					goto fast_assign_obj;
40255 				}
40256 			}
40257 
40258 			if (!zobj->ce->__set) {
40259 
40260 				if (EXPECTED(zobj->properties == NULL)) {
40261 					rebuild_object_properties(zobj);
40262 				}
40263 				if (IS_TMP_VAR == IS_CONST) {
40264 					if (UNEXPECTED(Z_OPT_REFCOUNTED_P(value))) {
40265 						Z_ADDREF_P(value);
40266 					}
40267 				} else if (IS_TMP_VAR != IS_TMP_VAR) {
40268 					if (Z_ISREF_P(value)) {
40269 						if (IS_TMP_VAR == IS_VAR) {
40270 							zend_reference *ref = Z_REF_P(value);
40271 							if (GC_DELREF(ref) == 0) {
40272 								ZVAL_COPY_VALUE(&tmp, Z_REFVAL_P(value));
40273 								efree_size(ref, sizeof(zend_reference));
40274 								value = &tmp;
40275 							} else {
40276 								value = Z_REFVAL_P(value);
40277 								Z_TRY_ADDREF_P(value);
40278 							}
40279 						} else {
40280 							value = Z_REFVAL_P(value);
40281 							Z_TRY_ADDREF_P(value);
40282 						}
40283 					} else if (IS_TMP_VAR == IS_CV) {
40284 						Z_TRY_ADDREF_P(value);
40285 					}
40286 				}
40287 				zend_hash_add_new(zobj->properties, Z_STR_P(property), value);
40288 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
40289 					ZVAL_COPY(EX_VAR(opline->result.var), value);
40290 				}
40291 				goto exit_assign_obj;
40292 			}
40293 		}
40294 	}
40295 
40296 	if (!Z_OBJ_HT_P(object)->write_property) {
40297 		zend_wrong_property_assignment(property OPLINE_CC EXECUTE_DATA_CC);
40298 		zval_ptr_dtor_nogc(free_op_data);
40299 		goto exit_assign_obj;
40300 	}
40301 
40302 	if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
40303 		ZVAL_DEREF(value);
40304 	}
40305 
40306 	Z_OBJ_HT_P(object)->write_property(object, property, value, (IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
40307 
40308 	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
40309 		ZVAL_COPY(EX_VAR(opline->result.var), value);
40310 	}
40311 	zval_ptr_dtor_nogc(free_op_data);
40312 exit_assign_obj:
40313 
40314 
40315 	/* assign_obj has two opcodes! */
40316 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
40317 }
40318 
40319 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_CV_CONST_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
40320 {
40321 	USE_OPLINE
40322 	zend_free_op free_op_data;
40323 	zval *object, *property, *value, tmp;
40324 
40325 	SAVE_OPLINE();
40326 	object = EX_VAR(opline->op1.var);
40327 
40328 	if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
40329 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
40330 	}
40331 
40332 	property = RT_CONSTANT(opline, opline->op2);
40333 	value = _get_zval_ptr_var((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
40334 
40335 	if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
40336 		if (Z_ISREF_P(object)) {
40337 			object = Z_REFVAL_P(object);
40338 			if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
40339 				goto assign_object;
40340 			}
40341 		}
40342 		if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
40343 			zval_ptr_dtor_nogc(free_op_data);
40344 			goto exit_assign_obj;
40345 		}
40346 	}
40347 
40348 assign_object:
40349 	if (IS_CONST == IS_CONST &&
40350 	    EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(opline->extended_value))) {
40351 		uintptr_t prop_offset = (uintptr_t)CACHED_PTR(opline->extended_value + sizeof(void*));
40352 		zend_object *zobj = Z_OBJ_P(object);
40353 		zval *property_val;
40354 
40355 		if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
40356 			property_val = OBJ_PROP(zobj, prop_offset);
40357 			if (Z_TYPE_P(property_val) != IS_UNDEF) {
40358 fast_assign_obj:
40359 				value = zend_assign_to_variable(property_val, value, IS_VAR);
40360 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
40361 					ZVAL_COPY(EX_VAR(opline->result.var), value);
40362 				}
40363 				goto exit_assign_obj;
40364 			}
40365 		} else {
40366 			if (EXPECTED(zobj->properties != NULL)) {
40367 				if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
40368 					if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
40369 						GC_DELREF(zobj->properties);
40370 					}
40371 					zobj->properties = zend_array_dup(zobj->properties);
40372 				}
40373 				property_val = zend_hash_find_ex(zobj->properties, Z_STR_P(property), 1);
40374 				if (property_val) {
40375 					goto fast_assign_obj;
40376 				}
40377 			}
40378 
40379 			if (!zobj->ce->__set) {
40380 
40381 				if (EXPECTED(zobj->properties == NULL)) {
40382 					rebuild_object_properties(zobj);
40383 				}
40384 				if (IS_VAR == IS_CONST) {
40385 					if (UNEXPECTED(Z_OPT_REFCOUNTED_P(value))) {
40386 						Z_ADDREF_P(value);
40387 					}
40388 				} else if (IS_VAR != IS_TMP_VAR) {
40389 					if (Z_ISREF_P(value)) {
40390 						if (IS_VAR == IS_VAR) {
40391 							zend_reference *ref = Z_REF_P(value);
40392 							if (GC_DELREF(ref) == 0) {
40393 								ZVAL_COPY_VALUE(&tmp, Z_REFVAL_P(value));
40394 								efree_size(ref, sizeof(zend_reference));
40395 								value = &tmp;
40396 							} else {
40397 								value = Z_REFVAL_P(value);
40398 								Z_TRY_ADDREF_P(value);
40399 							}
40400 						} else {
40401 							value = Z_REFVAL_P(value);
40402 							Z_TRY_ADDREF_P(value);
40403 						}
40404 					} else if (IS_VAR == IS_CV) {
40405 						Z_TRY_ADDREF_P(value);
40406 					}
40407 				}
40408 				zend_hash_add_new(zobj->properties, Z_STR_P(property), value);
40409 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
40410 					ZVAL_COPY(EX_VAR(opline->result.var), value);
40411 				}
40412 				goto exit_assign_obj;
40413 			}
40414 		}
40415 	}
40416 
40417 	if (!Z_OBJ_HT_P(object)->write_property) {
40418 		zend_wrong_property_assignment(property OPLINE_CC EXECUTE_DATA_CC);
40419 		zval_ptr_dtor_nogc(free_op_data);
40420 		goto exit_assign_obj;
40421 	}
40422 
40423 	if (IS_VAR == IS_CV || IS_VAR == IS_VAR) {
40424 		ZVAL_DEREF(value);
40425 	}
40426 
40427 	Z_OBJ_HT_P(object)->write_property(object, property, value, (IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
40428 
40429 	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
40430 		ZVAL_COPY(EX_VAR(opline->result.var), value);
40431 	}
40432 	zval_ptr_dtor_nogc(free_op_data);
40433 exit_assign_obj:
40434 
40435 
40436 	/* assign_obj has two opcodes! */
40437 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
40438 }
40439 
40440 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_CV_CONST_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
40441 {
40442 	USE_OPLINE
40443 
40444 	zval *object, *property, *value, tmp;
40445 
40446 	SAVE_OPLINE();
40447 	object = EX_VAR(opline->op1.var);
40448 
40449 	if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
40450 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
40451 	}
40452 
40453 	property = RT_CONSTANT(opline, opline->op2);
40454 	value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
40455 
40456 	if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
40457 		if (Z_ISREF_P(object)) {
40458 			object = Z_REFVAL_P(object);
40459 			if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
40460 				goto assign_object;
40461 			}
40462 		}
40463 		if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
40464 
40465 			goto exit_assign_obj;
40466 		}
40467 	}
40468 
40469 assign_object:
40470 	if (IS_CONST == IS_CONST &&
40471 	    EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(opline->extended_value))) {
40472 		uintptr_t prop_offset = (uintptr_t)CACHED_PTR(opline->extended_value + sizeof(void*));
40473 		zend_object *zobj = Z_OBJ_P(object);
40474 		zval *property_val;
40475 
40476 		if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
40477 			property_val = OBJ_PROP(zobj, prop_offset);
40478 			if (Z_TYPE_P(property_val) != IS_UNDEF) {
40479 fast_assign_obj:
40480 				value = zend_assign_to_variable(property_val, value, IS_CV);
40481 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
40482 					ZVAL_COPY(EX_VAR(opline->result.var), value);
40483 				}
40484 				goto exit_assign_obj;
40485 			}
40486 		} else {
40487 			if (EXPECTED(zobj->properties != NULL)) {
40488 				if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
40489 					if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
40490 						GC_DELREF(zobj->properties);
40491 					}
40492 					zobj->properties = zend_array_dup(zobj->properties);
40493 				}
40494 				property_val = zend_hash_find_ex(zobj->properties, Z_STR_P(property), 1);
40495 				if (property_val) {
40496 					goto fast_assign_obj;
40497 				}
40498 			}
40499 
40500 			if (!zobj->ce->__set) {
40501 
40502 				if (EXPECTED(zobj->properties == NULL)) {
40503 					rebuild_object_properties(zobj);
40504 				}
40505 				if (IS_CV == IS_CONST) {
40506 					if (UNEXPECTED(Z_OPT_REFCOUNTED_P(value))) {
40507 						Z_ADDREF_P(value);
40508 					}
40509 				} else if (IS_CV != IS_TMP_VAR) {
40510 					if (Z_ISREF_P(value)) {
40511 						if (IS_CV == IS_VAR) {
40512 							zend_reference *ref = Z_REF_P(value);
40513 							if (GC_DELREF(ref) == 0) {
40514 								ZVAL_COPY_VALUE(&tmp, Z_REFVAL_P(value));
40515 								efree_size(ref, sizeof(zend_reference));
40516 								value = &tmp;
40517 							} else {
40518 								value = Z_REFVAL_P(value);
40519 								Z_TRY_ADDREF_P(value);
40520 							}
40521 						} else {
40522 							value = Z_REFVAL_P(value);
40523 							Z_TRY_ADDREF_P(value);
40524 						}
40525 					} else if (IS_CV == IS_CV) {
40526 						Z_TRY_ADDREF_P(value);
40527 					}
40528 				}
40529 				zend_hash_add_new(zobj->properties, Z_STR_P(property), value);
40530 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
40531 					ZVAL_COPY(EX_VAR(opline->result.var), value);
40532 				}
40533 				goto exit_assign_obj;
40534 			}
40535 		}
40536 	}
40537 
40538 	if (!Z_OBJ_HT_P(object)->write_property) {
40539 		zend_wrong_property_assignment(property OPLINE_CC EXECUTE_DATA_CC);
40540 
40541 		goto exit_assign_obj;
40542 	}
40543 
40544 	if (IS_CV == IS_CV || IS_CV == IS_VAR) {
40545 		ZVAL_DEREF(value);
40546 	}
40547 
40548 	Z_OBJ_HT_P(object)->write_property(object, property, value, (IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
40549 
40550 	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
40551 		ZVAL_COPY(EX_VAR(opline->result.var), value);
40552 	}
40553 
40554 exit_assign_obj:
40555 
40556 
40557 	/* assign_obj has two opcodes! */
40558 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
40559 }
40560 
40561 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_CV_CONST_OP_DATA_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
40562 {
40563 	USE_OPLINE
40564 
40565 	zval *object_ptr;
40566 	zend_free_op free_op_data;
40567 	zval *value;
40568 	zval *variable_ptr;
40569 	zval *dim;
40570 
40571 	SAVE_OPLINE();
40572 	object_ptr = EX_VAR(opline->op1.var);
40573 
40574 	if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
40575 try_assign_dim_array:
40576 		SEPARATE_ARRAY(object_ptr);
40577 		if (IS_CONST == IS_UNUSED) {
40578 			value = RT_CONSTANT((opline+1), (opline+1)->op1);
40579 			if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
40580 				ZVAL_DEREF(value);
40581 			}
40582 			variable_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), value);
40583 			if (UNEXPECTED(variable_ptr == NULL)) {
40584 
40585 				zend_cannot_add_element();
40586 				goto assign_dim_error;
40587 			} else if (IS_CONST == IS_CV) {
40588 				if (Z_REFCOUNTED_P(value)) {
40589 					Z_ADDREF_P(value);
40590 				}
40591 			} else if (IS_CONST == IS_VAR) {
40592 				if (value != free_op_data) {
40593 					if (Z_REFCOUNTED_P(value)) {
40594 						Z_ADDREF_P(value);
40595 					}
40596 
40597 				}
40598 			} else if (IS_CONST == IS_CONST) {
40599 				if (UNEXPECTED(Z_REFCOUNTED_P(value))) {
40600 					Z_ADDREF_P(value);
40601 				}
40602 			}
40603 		} else {
40604 			dim = RT_CONSTANT(opline, opline->op2);
40605 			if (IS_CONST == IS_CONST) {
40606 				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
40607 			} else {
40608 				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
40609 			}
40610 			if (UNEXPECTED(variable_ptr == NULL)) {
40611 				goto assign_dim_error;
40612 			}
40613 			value = RT_CONSTANT((opline+1), (opline+1)->op1);
40614 			value = zend_assign_to_variable(variable_ptr, value, IS_CONST);
40615 		}
40616 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
40617 			ZVAL_COPY(EX_VAR(opline->result.var), value);
40618 		}
40619 	} else {
40620 		if (EXPECTED(Z_ISREF_P(object_ptr))) {
40621 			object_ptr = Z_REFVAL_P(object_ptr);
40622 			if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
40623 				goto try_assign_dim_array;
40624 			}
40625 		}
40626 		if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) {
40627 			dim = RT_CONSTANT(opline, opline->op2);
40628 			value = RT_CONSTANT((opline+1), (opline+1)->op1);
40629 
40630 			if (IS_CONST == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
40631 				dim++;
40632 			}
40633 			zend_assign_to_object_dim(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
40634 
40635 		} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
40636 			if (IS_CONST == IS_UNUSED) {
40637 				zend_use_new_element_for_string();
40638 
40639 
40640 				UNDEF_RESULT();
40641 				HANDLE_EXCEPTION();
40642 			} else {
40643 				dim = RT_CONSTANT(opline, opline->op2);
40644 				value = RT_CONSTANT((opline+1), (opline+1)->op1);
40645 				zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
40646 
40647 			}
40648 		} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
40649 			ZVAL_ARR(object_ptr, zend_new_array(8));
40650 			goto try_assign_dim_array;
40651 		} else {
40652 			if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) {
40653 				zend_use_scalar_as_array();
40654 			}
40655 			dim = RT_CONSTANT(opline, opline->op2);
40656 assign_dim_error:
40657 
40658 			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
40659 				ZVAL_NULL(EX_VAR(opline->result.var));
40660 			}
40661 		}
40662 	}
40663 	if (IS_CONST != IS_UNUSED) {
40664 
40665 	}
40666 
40667 	/* assign_dim has two opcodes! */
40668 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
40669 }
40670 
40671 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_CV_CONST_OP_DATA_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
40672 {
40673 	USE_OPLINE
40674 
40675 	zval *object_ptr;
40676 	zend_free_op free_op_data;
40677 	zval *value;
40678 	zval *variable_ptr;
40679 	zval *dim;
40680 
40681 	SAVE_OPLINE();
40682 	object_ptr = EX_VAR(opline->op1.var);
40683 
40684 	if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
40685 try_assign_dim_array:
40686 		SEPARATE_ARRAY(object_ptr);
40687 		if (IS_CONST == IS_UNUSED) {
40688 			value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
40689 			if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
40690 				ZVAL_DEREF(value);
40691 			}
40692 			variable_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), value);
40693 			if (UNEXPECTED(variable_ptr == NULL)) {
40694 				zval_ptr_dtor_nogc(free_op_data);
40695 				zend_cannot_add_element();
40696 				goto assign_dim_error;
40697 			} else if (IS_TMP_VAR == IS_CV) {
40698 				if (Z_REFCOUNTED_P(value)) {
40699 					Z_ADDREF_P(value);
40700 				}
40701 			} else if (IS_TMP_VAR == IS_VAR) {
40702 				if (value != free_op_data) {
40703 					if (Z_REFCOUNTED_P(value)) {
40704 						Z_ADDREF_P(value);
40705 					}
40706 					zval_ptr_dtor_nogc(free_op_data);
40707 				}
40708 			} else if (IS_TMP_VAR == IS_CONST) {
40709 				if (UNEXPECTED(Z_REFCOUNTED_P(value))) {
40710 					Z_ADDREF_P(value);
40711 				}
40712 			}
40713 		} else {
40714 			dim = RT_CONSTANT(opline, opline->op2);
40715 			if (IS_CONST == IS_CONST) {
40716 				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
40717 			} else {
40718 				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
40719 			}
40720 			if (UNEXPECTED(variable_ptr == NULL)) {
40721 				goto assign_dim_error;
40722 			}
40723 			value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
40724 			value = zend_assign_to_variable(variable_ptr, value, IS_TMP_VAR);
40725 		}
40726 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
40727 			ZVAL_COPY(EX_VAR(opline->result.var), value);
40728 		}
40729 	} else {
40730 		if (EXPECTED(Z_ISREF_P(object_ptr))) {
40731 			object_ptr = Z_REFVAL_P(object_ptr);
40732 			if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
40733 				goto try_assign_dim_array;
40734 			}
40735 		}
40736 		if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) {
40737 			dim = RT_CONSTANT(opline, opline->op2);
40738 			value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
40739 
40740 			if (IS_CONST == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
40741 				dim++;
40742 			}
40743 			zend_assign_to_object_dim(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
40744 
40745 			zval_ptr_dtor_nogc(free_op_data);
40746 		} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
40747 			if (IS_CONST == IS_UNUSED) {
40748 				zend_use_new_element_for_string();
40749 				zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
40750 
40751 				UNDEF_RESULT();
40752 				HANDLE_EXCEPTION();
40753 			} else {
40754 				dim = RT_CONSTANT(opline, opline->op2);
40755 				value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
40756 				zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
40757 				zval_ptr_dtor_nogc(free_op_data);
40758 			}
40759 		} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
40760 			ZVAL_ARR(object_ptr, zend_new_array(8));
40761 			goto try_assign_dim_array;
40762 		} else {
40763 			if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) {
40764 				zend_use_scalar_as_array();
40765 			}
40766 			dim = RT_CONSTANT(opline, opline->op2);
40767 assign_dim_error:
40768 			zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
40769 			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
40770 				ZVAL_NULL(EX_VAR(opline->result.var));
40771 			}
40772 		}
40773 	}
40774 	if (IS_CONST != IS_UNUSED) {
40775 
40776 	}
40777 
40778 	/* assign_dim has two opcodes! */
40779 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
40780 }
40781 
40782 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_CV_CONST_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
40783 {
40784 	USE_OPLINE
40785 
40786 	zval *object_ptr;
40787 	zend_free_op free_op_data;
40788 	zval *value;
40789 	zval *variable_ptr;
40790 	zval *dim;
40791 
40792 	SAVE_OPLINE();
40793 	object_ptr = EX_VAR(opline->op1.var);
40794 
40795 	if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
40796 try_assign_dim_array:
40797 		SEPARATE_ARRAY(object_ptr);
40798 		if (IS_CONST == IS_UNUSED) {
40799 			value = _get_zval_ptr_var((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
40800 			if (IS_VAR == IS_CV || IS_VAR == IS_VAR) {
40801 				ZVAL_DEREF(value);
40802 			}
40803 			variable_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), value);
40804 			if (UNEXPECTED(variable_ptr == NULL)) {
40805 				zval_ptr_dtor_nogc(free_op_data);
40806 				zend_cannot_add_element();
40807 				goto assign_dim_error;
40808 			} else if (IS_VAR == IS_CV) {
40809 				if (Z_REFCOUNTED_P(value)) {
40810 					Z_ADDREF_P(value);
40811 				}
40812 			} else if (IS_VAR == IS_VAR) {
40813 				if (value != free_op_data) {
40814 					if (Z_REFCOUNTED_P(value)) {
40815 						Z_ADDREF_P(value);
40816 					}
40817 					zval_ptr_dtor_nogc(free_op_data);
40818 				}
40819 			} else if (IS_VAR == IS_CONST) {
40820 				if (UNEXPECTED(Z_REFCOUNTED_P(value))) {
40821 					Z_ADDREF_P(value);
40822 				}
40823 			}
40824 		} else {
40825 			dim = RT_CONSTANT(opline, opline->op2);
40826 			if (IS_CONST == IS_CONST) {
40827 				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
40828 			} else {
40829 				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
40830 			}
40831 			if (UNEXPECTED(variable_ptr == NULL)) {
40832 				goto assign_dim_error;
40833 			}
40834 			value = _get_zval_ptr_var((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
40835 			value = zend_assign_to_variable(variable_ptr, value, IS_VAR);
40836 		}
40837 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
40838 			ZVAL_COPY(EX_VAR(opline->result.var), value);
40839 		}
40840 	} else {
40841 		if (EXPECTED(Z_ISREF_P(object_ptr))) {
40842 			object_ptr = Z_REFVAL_P(object_ptr);
40843 			if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
40844 				goto try_assign_dim_array;
40845 			}
40846 		}
40847 		if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) {
40848 			dim = RT_CONSTANT(opline, opline->op2);
40849 			value = _get_zval_ptr_var_deref((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
40850 
40851 			if (IS_CONST == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
40852 				dim++;
40853 			}
40854 			zend_assign_to_object_dim(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
40855 
40856 			zval_ptr_dtor_nogc(free_op_data);
40857 		} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
40858 			if (IS_CONST == IS_UNUSED) {
40859 				zend_use_new_element_for_string();
40860 				zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
40861 
40862 				UNDEF_RESULT();
40863 				HANDLE_EXCEPTION();
40864 			} else {
40865 				dim = RT_CONSTANT(opline, opline->op2);
40866 				value = _get_zval_ptr_var_deref((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
40867 				zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
40868 				zval_ptr_dtor_nogc(free_op_data);
40869 			}
40870 		} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
40871 			ZVAL_ARR(object_ptr, zend_new_array(8));
40872 			goto try_assign_dim_array;
40873 		} else {
40874 			if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) {
40875 				zend_use_scalar_as_array();
40876 			}
40877 			dim = RT_CONSTANT(opline, opline->op2);
40878 assign_dim_error:
40879 			zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
40880 			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
40881 				ZVAL_NULL(EX_VAR(opline->result.var));
40882 			}
40883 		}
40884 	}
40885 	if (IS_CONST != IS_UNUSED) {
40886 
40887 	}
40888 
40889 	/* assign_dim has two opcodes! */
40890 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
40891 }
40892 
40893 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_CV_CONST_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
40894 {
40895 	USE_OPLINE
40896 
40897 	zval *object_ptr;
40898 	zend_free_op free_op_data;
40899 	zval *value;
40900 	zval *variable_ptr;
40901 	zval *dim;
40902 
40903 	SAVE_OPLINE();
40904 	object_ptr = EX_VAR(opline->op1.var);
40905 
40906 	if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
40907 try_assign_dim_array:
40908 		SEPARATE_ARRAY(object_ptr);
40909 		if (IS_CONST == IS_UNUSED) {
40910 			value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
40911 			if (IS_CV == IS_CV || IS_CV == IS_VAR) {
40912 				ZVAL_DEREF(value);
40913 			}
40914 			variable_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), value);
40915 			if (UNEXPECTED(variable_ptr == NULL)) {
40916 
40917 				zend_cannot_add_element();
40918 				goto assign_dim_error;
40919 			} else if (IS_CV == IS_CV) {
40920 				if (Z_REFCOUNTED_P(value)) {
40921 					Z_ADDREF_P(value);
40922 				}
40923 			} else if (IS_CV == IS_VAR) {
40924 				if (value != free_op_data) {
40925 					if (Z_REFCOUNTED_P(value)) {
40926 						Z_ADDREF_P(value);
40927 					}
40928 
40929 				}
40930 			} else if (IS_CV == IS_CONST) {
40931 				if (UNEXPECTED(Z_REFCOUNTED_P(value))) {
40932 					Z_ADDREF_P(value);
40933 				}
40934 			}
40935 		} else {
40936 			dim = RT_CONSTANT(opline, opline->op2);
40937 			if (IS_CONST == IS_CONST) {
40938 				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
40939 			} else {
40940 				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
40941 			}
40942 			if (UNEXPECTED(variable_ptr == NULL)) {
40943 				goto assign_dim_error;
40944 			}
40945 			value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
40946 			value = zend_assign_to_variable(variable_ptr, value, IS_CV);
40947 		}
40948 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
40949 			ZVAL_COPY(EX_VAR(opline->result.var), value);
40950 		}
40951 	} else {
40952 		if (EXPECTED(Z_ISREF_P(object_ptr))) {
40953 			object_ptr = Z_REFVAL_P(object_ptr);
40954 			if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
40955 				goto try_assign_dim_array;
40956 			}
40957 		}
40958 		if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) {
40959 			dim = RT_CONSTANT(opline, opline->op2);
40960 			value = _get_zval_ptr_cv_deref_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
40961 
40962 			if (IS_CONST == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
40963 				dim++;
40964 			}
40965 			zend_assign_to_object_dim(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
40966 
40967 		} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
40968 			if (IS_CONST == IS_UNUSED) {
40969 				zend_use_new_element_for_string();
40970 
40971 
40972 				UNDEF_RESULT();
40973 				HANDLE_EXCEPTION();
40974 			} else {
40975 				dim = RT_CONSTANT(opline, opline->op2);
40976 				value = _get_zval_ptr_cv_deref_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
40977 				zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
40978 
40979 			}
40980 		} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
40981 			ZVAL_ARR(object_ptr, zend_new_array(8));
40982 			goto try_assign_dim_array;
40983 		} else {
40984 			if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) {
40985 				zend_use_scalar_as_array();
40986 			}
40987 			dim = RT_CONSTANT(opline, opline->op2);
40988 assign_dim_error:
40989 
40990 			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
40991 				ZVAL_NULL(EX_VAR(opline->result.var));
40992 			}
40993 		}
40994 	}
40995 	if (IS_CONST != IS_UNUSED) {
40996 
40997 	}
40998 
40999 	/* assign_dim has two opcodes! */
41000 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
41001 }
41002 
41003 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SPEC_CV_CONST_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
41004 {
41005 	USE_OPLINE
41006 
41007 	zval *value;
41008 	zval *variable_ptr;
41009 
41010 	SAVE_OPLINE();
41011 	value = RT_CONSTANT(opline, opline->op2);
41012 	variable_ptr = EX_VAR(opline->op1.var);
41013 
41014 	if (IS_CV == IS_VAR && UNEXPECTED(Z_ISERROR_P(variable_ptr))) {
41015 
41016 		if (UNEXPECTED(0)) {
41017 			ZVAL_NULL(EX_VAR(opline->result.var));
41018 		}
41019 	} else {
41020 		value = zend_assign_to_variable(variable_ptr, value, IS_CONST);
41021 		if (UNEXPECTED(0)) {
41022 			ZVAL_COPY(EX_VAR(opline->result.var), value);
41023 		}
41024 
41025 		/* zend_assign_to_variable() always takes care of op2, never free it! */
41026 	}
41027 
41028 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
41029 }
41030 
41031 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SPEC_CV_CONST_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
41032 {
41033 	USE_OPLINE
41034 
41035 	zval *value;
41036 	zval *variable_ptr;
41037 
41038 	SAVE_OPLINE();
41039 	value = RT_CONSTANT(opline, opline->op2);
41040 	variable_ptr = EX_VAR(opline->op1.var);
41041 
41042 	if (IS_CV == IS_VAR && UNEXPECTED(Z_ISERROR_P(variable_ptr))) {
41043 
41044 		if (UNEXPECTED(1)) {
41045 			ZVAL_NULL(EX_VAR(opline->result.var));
41046 		}
41047 	} else {
41048 		value = zend_assign_to_variable(variable_ptr, value, IS_CONST);
41049 		if (UNEXPECTED(1)) {
41050 			ZVAL_COPY(EX_VAR(opline->result.var), value);
41051 		}
41052 
41053 		/* zend_assign_to_variable() always takes care of op2, never free it! */
41054 	}
41055 
41056 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
41057 }
41058 
41059 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FAST_CONCAT_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
41060 {
41061 	USE_OPLINE
41062 
41063 	zval *op1, *op2;
41064 	zend_string *op1_str, *op2_str, *str;
41065 
41066 
41067 	op1 = EX_VAR(opline->op1.var);
41068 	op2 = RT_CONSTANT(opline, opline->op2);
41069 	if ((IS_CV == IS_CONST || EXPECTED(Z_TYPE_P(op1) == IS_STRING)) &&
41070 	    (IS_CONST == IS_CONST || EXPECTED(Z_TYPE_P(op2) == IS_STRING))) {
41071 		zend_string *op1_str = Z_STR_P(op1);
41072 		zend_string *op2_str = Z_STR_P(op2);
41073 		zend_string *str;
41074 
41075 		if (IS_CV != IS_CONST && UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
41076 			if (IS_CONST == IS_CONST || IS_CONST == IS_CV) {
41077 				ZVAL_STR_COPY(EX_VAR(opline->result.var), op2_str);
41078 			} else {
41079 				ZVAL_STR(EX_VAR(opline->result.var), op2_str);
41080 			}
41081 
41082 		} else if (IS_CONST != IS_CONST && UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
41083 			if (IS_CV == IS_CONST || IS_CV == IS_CV) {
41084 				ZVAL_STR_COPY(EX_VAR(opline->result.var), op1_str);
41085 			} else {
41086 				ZVAL_STR(EX_VAR(opline->result.var), op1_str);
41087 			}
41088 
41089 		} else if (IS_CV != IS_CONST && IS_CV != IS_CV &&
41090 		    !ZSTR_IS_INTERNED(op1_str) && GC_REFCOUNT(op1_str) == 1) {
41091 		    size_t len = ZSTR_LEN(op1_str);
41092 
41093 			str = zend_string_extend(op1_str, len + ZSTR_LEN(op2_str), 0);
41094 			memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
41095 			ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
41096 
41097 		} else {
41098 			str = zend_string_alloc(ZSTR_LEN(op1_str) + ZSTR_LEN(op2_str), 0);
41099 			memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
41100 			memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
41101 			ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
41102 
41103 
41104 		}
41105 		ZEND_VM_NEXT_OPCODE();
41106 	}
41107 
41108 	SAVE_OPLINE();
41109 	if (IS_CV == IS_CONST) {
41110 		op1_str = Z_STR_P(op1);
41111 	} else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
41112 		op1_str = zend_string_copy(Z_STR_P(op1));
41113 	} else {
41114 		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
41115 			GET_OP1_UNDEF_CV(op1, BP_VAR_R);
41116 		}
41117 		op1_str = zval_get_string_func(op1);
41118 	}
41119 	if (IS_CONST == IS_CONST) {
41120 		op2_str = Z_STR_P(op2);
41121 	} else if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
41122 		op2_str = zend_string_copy(Z_STR_P(op2));
41123 	} else {
41124 		if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
41125 			GET_OP2_UNDEF_CV(op2, BP_VAR_R);
41126 		}
41127 		op2_str = zval_get_string_func(op2);
41128 	}
41129 	do {
41130 		if (IS_CV != IS_CONST) {
41131 			if (UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
41132 				if (IS_CONST == IS_CONST) {
41133 					if (UNEXPECTED(Z_REFCOUNTED_P(op2))) {
41134 						GC_ADDREF(op2_str);
41135 					}
41136 				}
41137 				ZVAL_STR(EX_VAR(opline->result.var), op2_str);
41138 				zend_string_release_ex(op1_str, 0);
41139 				break;
41140 			}
41141 		}
41142 		if (IS_CONST != IS_CONST) {
41143 			if (UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
41144 				if (IS_CV == IS_CONST) {
41145 					if (UNEXPECTED(Z_REFCOUNTED_P(op1))) {
41146 						GC_ADDREF(op1_str);
41147 					}
41148 				}
41149 				ZVAL_STR(EX_VAR(opline->result.var), op1_str);
41150 				zend_string_release_ex(op2_str, 0);
41151 				break;
41152 			}
41153 		}
41154 		str = zend_string_alloc(ZSTR_LEN(op1_str) + ZSTR_LEN(op2_str), 0);
41155 		memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
41156 		memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
41157 		ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
41158 		if (IS_CV != IS_CONST) {
41159 			zend_string_release_ex(op1_str, 0);
41160 		}
41161 		if (IS_CONST != IS_CONST) {
41162 			zend_string_release_ex(op2_str, 0);
41163 		}
41164 	} while (0);
41165 
41166 
41167 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
41168 }
41169 
41170 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
41171 {
41172 	USE_OPLINE
41173 	zval *function_name;
41174 	zend_free_op free_op1;
41175 	zval *object;
41176 	zend_function *fbc;
41177 	zend_class_entry *called_scope;
41178 	zend_object *obj;
41179 	zend_execute_data *call;
41180 	uint32_t call_info;
41181 
41182 	SAVE_OPLINE();
41183 
41184 	object = EX_VAR(opline->op1.var);
41185 
41186 	if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
41187 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
41188 	}
41189 
41190 	if (IS_CONST != IS_CONST) {
41191 		function_name = RT_CONSTANT(opline, opline->op2);
41192 	}
41193 
41194 	if (IS_CONST != IS_CONST &&
41195 	    UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) {
41196 		do {
41197 			if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(function_name)) {
41198 				function_name = Z_REFVAL_P(function_name);
41199 				if (EXPECTED(Z_TYPE_P(function_name) == IS_STRING)) {
41200 					break;
41201 				}
41202 			} else if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
41203 				GET_OP2_UNDEF_CV(function_name, BP_VAR_R);
41204 				if (UNEXPECTED(EG(exception) != NULL)) {
41205 
41206 					HANDLE_EXCEPTION();
41207 				}
41208 			}
41209 			zend_throw_error(NULL, "Method name must be a string");
41210 
41211 
41212 			HANDLE_EXCEPTION();
41213 		} while (0);
41214 	}
41215 
41216 	if (IS_CV != IS_UNUSED) {
41217 		do {
41218 			if (IS_CV == IS_CONST || UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
41219 				if ((IS_CV & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(object))) {
41220 					object = Z_REFVAL_P(object);
41221 					if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
41222 						break;
41223 					}
41224 				}
41225 				if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
41226 					object = GET_OP1_UNDEF_CV(object, BP_VAR_R);
41227 					if (UNEXPECTED(EG(exception) != NULL)) {
41228 						if (IS_CONST != IS_CONST) {
41229 
41230 						}
41231 						HANDLE_EXCEPTION();
41232 					}
41233 				}
41234 				if (IS_CONST == IS_CONST) {
41235 					function_name = RT_CONSTANT(opline, opline->op2);
41236 				}
41237 				zend_invalid_method_call(object, function_name);
41238 
41239 
41240 				HANDLE_EXCEPTION();
41241 			}
41242 		} while (0);
41243 	}
41244 
41245 	obj = Z_OBJ_P(object);
41246 	called_scope = obj->ce;
41247 
41248 	if (IS_CONST == IS_CONST &&
41249 	    EXPECTED(CACHED_PTR(opline->result.num) == called_scope)) {
41250 	    fbc = CACHED_PTR(opline->result.num + sizeof(void*));
41251 	} else {
41252 	    zend_object *orig_obj = obj;
41253 
41254 		if (UNEXPECTED(obj->handlers->get_method == NULL)) {
41255 			zend_throw_error(NULL, "Object does not support method calls");
41256 
41257 
41258 			HANDLE_EXCEPTION();
41259 		}
41260 
41261 		if (IS_CONST == IS_CONST) {
41262 			function_name = RT_CONSTANT(opline, opline->op2);
41263 		}
41264 
41265 		/* First, locate the function. */
41266 		fbc = obj->handlers->get_method(&obj, Z_STR_P(function_name), ((IS_CONST == IS_CONST) ? (RT_CONSTANT(opline, opline->op2) + 1) : NULL));
41267 		if (UNEXPECTED(fbc == NULL)) {
41268 			if (EXPECTED(!EG(exception))) {
41269 				zend_undefined_method(obj->ce, Z_STR_P(function_name));
41270 			}
41271 
41272 
41273 			HANDLE_EXCEPTION();
41274 		}
41275 		if (IS_CONST == IS_CONST &&
41276 		    EXPECTED(fbc->type <= ZEND_USER_FUNCTION) &&
41277 		    EXPECTED(!(fbc->common.fn_flags & (ZEND_ACC_CALL_VIA_TRAMPOLINE|ZEND_ACC_NEVER_CACHE))) &&
41278 		    EXPECTED(obj == orig_obj)) {
41279 			CACHE_POLYMORPHIC_PTR(opline->result.num, called_scope, fbc);
41280 		}
41281 		if ((IS_CV & (IS_VAR|IS_TMP_VAR)) && UNEXPECTED(obj != orig_obj)) {
41282 			/* Reset "object" to trigger reference counting */
41283 			object = NULL;
41284 		}
41285 		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!fbc->op_array.run_time_cache)) {
41286 			init_func_run_time_cache(&fbc->op_array);
41287 		}
41288 	}
41289 
41290 	if (IS_CONST != IS_CONST) {
41291 
41292 	}
41293 
41294 	call_info = ZEND_CALL_NESTED_FUNCTION;
41295 	if (UNEXPECTED((fbc->common.fn_flags & ZEND_ACC_STATIC) != 0)) {
41296 		obj = NULL;
41297 
41298 		if ((IS_CV & (IS_VAR|IS_TMP_VAR)) && UNEXPECTED(EG(exception))) {
41299 			HANDLE_EXCEPTION();
41300 		}
41301 	} else if (IS_CV & (IS_VAR|IS_TMP_VAR|IS_CV)) {
41302 		/* CV may be changed indirectly (e.g. when it's a reference) */
41303 		call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_RELEASE_THIS;
41304 		if (IS_CV == IS_CV) {
41305 			GC_ADDREF(obj); /* For $this pointer */
41306 		} else if (free_op1 != object) {
41307 			GC_ADDREF(obj); /* For $this pointer */
41308 
41309 		}
41310 	}
41311 
41312 	call = zend_vm_stack_push_call_frame(call_info,
41313 		fbc, opline->extended_value, called_scope, obj);
41314 	call->prev_execute_data = EX(call);
41315 	EX(call) = call;
41316 
41317 	ZEND_VM_NEXT_OPCODE();
41318 }
41319 
41320 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
41321 {
41322 	USE_OPLINE
41323 
41324 	zval *expr_ptr, new_expr;
41325 
41326 	SAVE_OPLINE();
41327 	if ((IS_CV == IS_VAR || IS_CV == IS_CV) &&
41328 	    UNEXPECTED(opline->extended_value & ZEND_ARRAY_ELEMENT_REF)) {
41329 		expr_ptr = _get_zval_ptr_cv_BP_VAR_W(opline->op1.var EXECUTE_DATA_CC);
41330 		if (Z_ISREF_P(expr_ptr)) {
41331 			Z_ADDREF_P(expr_ptr);
41332 		} else {
41333 			ZVAL_MAKE_REF_EX(expr_ptr, 2);
41334 		}
41335 
41336 	} else {
41337 		expr_ptr = _get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
41338 		if (IS_CV == IS_TMP_VAR) {
41339 			/* pass */
41340 		} else if (IS_CV == IS_CONST) {
41341 			Z_TRY_ADDREF_P(expr_ptr);
41342 		} else if (IS_CV == IS_CV) {
41343 			ZVAL_DEREF(expr_ptr);
41344 			Z_TRY_ADDREF_P(expr_ptr);
41345 		} else /* if (IS_CV == IS_VAR) */ {
41346 			if (UNEXPECTED(Z_ISREF_P(expr_ptr))) {
41347 				zend_refcounted *ref = Z_COUNTED_P(expr_ptr);
41348 
41349 				expr_ptr = Z_REFVAL_P(expr_ptr);
41350 				if (UNEXPECTED(GC_DELREF(ref) == 0)) {
41351 					ZVAL_COPY_VALUE(&new_expr, expr_ptr);
41352 					expr_ptr = &new_expr;
41353 					efree_size(ref, sizeof(zend_reference));
41354 				} else if (Z_OPT_REFCOUNTED_P(expr_ptr)) {
41355 					Z_ADDREF_P(expr_ptr);
41356 				}
41357 			}
41358 		}
41359 	}
41360 
41361 	if (IS_CONST != IS_UNUSED) {
41362 
41363 		zval *offset = RT_CONSTANT(opline, opline->op2);
41364 		zend_string *str;
41365 		zend_ulong hval;
41366 
41367 add_again:
41368 		if (EXPECTED(Z_TYPE_P(offset) == IS_STRING)) {
41369 			str = Z_STR_P(offset);
41370 			if (IS_CONST != IS_CONST) {
41371 				if (ZEND_HANDLE_NUMERIC(str, hval)) {
41372 					goto num_index;
41373 				}
41374 			}
41375 str_index:
41376 			zend_hash_update(Z_ARRVAL_P(EX_VAR(opline->result.var)), str, expr_ptr);
41377 		} else if (EXPECTED(Z_TYPE_P(offset) == IS_LONG)) {
41378 			hval = Z_LVAL_P(offset);
41379 num_index:
41380 			zend_hash_index_update(Z_ARRVAL_P(EX_VAR(opline->result.var)), hval, expr_ptr);
41381 		} else if ((IS_CONST & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
41382 			offset = Z_REFVAL_P(offset);
41383 			goto add_again;
41384 		} else if (Z_TYPE_P(offset) == IS_NULL) {
41385 			str = ZSTR_EMPTY_ALLOC();
41386 			goto str_index;
41387 		} else if (Z_TYPE_P(offset) == IS_DOUBLE) {
41388 			hval = zend_dval_to_lval(Z_DVAL_P(offset));
41389 			goto num_index;
41390 		} else if (Z_TYPE_P(offset) == IS_FALSE) {
41391 			hval = 0;
41392 			goto num_index;
41393 		} else if (Z_TYPE_P(offset) == IS_TRUE) {
41394 			hval = 1;
41395 			goto num_index;
41396 		} else if (IS_CONST == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
41397 			GET_OP2_UNDEF_CV(offset, BP_VAR_R);
41398 			str = ZSTR_EMPTY_ALLOC();
41399 			goto str_index;
41400 		} else {
41401 			zend_illegal_offset();
41402 			zval_ptr_dtor_nogc(expr_ptr);
41403 		}
41404 
41405 	} else {
41406 		if (!zend_hash_next_index_insert(Z_ARRVAL_P(EX_VAR(opline->result.var)), expr_ptr)) {
41407 			zend_cannot_add_element();
41408 			zval_ptr_dtor_nogc(expr_ptr);
41409 		}
41410 	}
41411 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
41412 }
41413 
41414 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_ARRAY_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
41415 {
41416 	zval *array;
41417 	uint32_t size;
41418 	USE_OPLINE
41419 
41420 	array = EX_VAR(opline->result.var);
41421 	if (IS_CV != IS_UNUSED) {
41422 		size = opline->extended_value >> ZEND_ARRAY_SIZE_SHIFT;
41423 		ZVAL_ARR(array, zend_new_array(size));
41424 		/* Explicitly initialize array as not-packed if flag is set */
41425 		if (opline->extended_value & ZEND_ARRAY_NOT_PACKED) {
41426 			zend_hash_real_init_mixed(Z_ARRVAL_P(array));
41427 		}
41428 		ZEND_VM_TAIL_CALL(ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
41429 	} else {
41430 		ZVAL_EMPTY_ARRAY(array);
41431 		ZEND_VM_NEXT_OPCODE();
41432 	}
41433 }
41434 
41435 static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_UNSET_STATIC_PROP_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
41436 {
41437 	USE_OPLINE
41438 	zval *varname;
41439 	zend_string *name, *tmp_name;
41440 	zend_class_entry *ce;
41441 
41442 
41443 	SAVE_OPLINE();
41444 
41445 	if (IS_CONST == IS_CONST) {
41446 		ce = CACHED_PTR(opline->extended_value);
41447 		if (UNEXPECTED(ce == NULL)) {
41448 			ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op2)), RT_CONSTANT(opline, opline->op2) + 1, ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
41449 			if (UNEXPECTED(ce == NULL)) {
41450 				ZEND_ASSERT(EG(exception));
41451 
41452 				HANDLE_EXCEPTION();
41453 			}
41454 			/*CACHE_PTR(opline->extended_value, ce);*/
41455 		}
41456 	} else if (IS_CONST == IS_UNUSED) {
41457 		ce = zend_fetch_class(NULL, opline->op2.num);
41458 		if (UNEXPECTED(ce == NULL)) {
41459 			ZEND_ASSERT(EG(exception));
41460 
41461 			HANDLE_EXCEPTION();
41462 		}
41463 	} else {
41464 		ce = Z_CE_P(EX_VAR(opline->op2.var));
41465 	}
41466 
41467 	varname = EX_VAR(opline->op1.var);
41468 	if (IS_CV == IS_CONST) {
41469 		name = Z_STR_P(varname);
41470 	} else if (EXPECTED(Z_TYPE_P(varname) == IS_STRING)) {
41471 		name = Z_STR_P(varname);
41472 		tmp_name = NULL;
41473 	} else {
41474 		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(varname) == IS_UNDEF)) {
41475 			varname = GET_OP1_UNDEF_CV(varname, BP_VAR_R);
41476 		}
41477 		name = zval_get_tmp_string(varname, &tmp_name);
41478 	}
41479 
41480 	zend_std_unset_static_property(ce, name);
41481 
41482 	if (IS_CV != IS_CONST) {
41483 		zend_tmp_string_release(tmp_name);
41484 	}
41485 
41486 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
41487 }
41488 
41489 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_UNSET_DIM_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
41490 {
41491 	USE_OPLINE
41492 
41493 	zval *container;
41494 	zval *offset;
41495 	zend_ulong hval;
41496 	zend_string *key;
41497 
41498 	SAVE_OPLINE();
41499 	container = EX_VAR(opline->op1.var);
41500 	offset = RT_CONSTANT(opline, opline->op2);
41501 
41502 	do {
41503 		if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
41504 			HashTable *ht;
41505 
41506 unset_dim_array:
41507 			SEPARATE_ARRAY(container);
41508 			ht = Z_ARRVAL_P(container);
41509 offset_again:
41510 			if (EXPECTED(Z_TYPE_P(offset) == IS_STRING)) {
41511 				key = Z_STR_P(offset);
41512 				if (IS_CONST != IS_CONST) {
41513 					if (ZEND_HANDLE_NUMERIC(key, hval)) {
41514 						goto num_index_dim;
41515 					}
41516 				}
41517 str_index_dim:
41518 				if (ht == &EG(symbol_table)) {
41519 					zend_delete_global_variable(key);
41520 				} else {
41521 					zend_hash_del(ht, key);
41522 				}
41523 			} else if (EXPECTED(Z_TYPE_P(offset) == IS_LONG)) {
41524 				hval = Z_LVAL_P(offset);
41525 num_index_dim:
41526 				zend_hash_index_del(ht, hval);
41527 			} else if ((IS_CONST & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
41528 				offset = Z_REFVAL_P(offset);
41529 				goto offset_again;
41530 			} else if (Z_TYPE_P(offset) == IS_DOUBLE) {
41531 				hval = zend_dval_to_lval(Z_DVAL_P(offset));
41532 				goto num_index_dim;
41533 			} else if (Z_TYPE_P(offset) == IS_NULL) {
41534 				key = ZSTR_EMPTY_ALLOC();
41535 				goto str_index_dim;
41536 			} else if (Z_TYPE_P(offset) == IS_FALSE) {
41537 				hval = 0;
41538 				goto num_index_dim;
41539 			} else if (Z_TYPE_P(offset) == IS_TRUE) {
41540 				hval = 1;
41541 				goto num_index_dim;
41542 			} else if (Z_TYPE_P(offset) == IS_RESOURCE) {
41543 				hval = Z_RES_HANDLE_P(offset);
41544 				goto num_index_dim;
41545 			} else if (IS_CONST == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
41546 				GET_OP2_UNDEF_CV(offset, BP_VAR_R);
41547 				key = ZSTR_EMPTY_ALLOC();
41548 				goto str_index_dim;
41549 			} else {
41550 				zend_error(E_WARNING, "Illegal offset type in unset");
41551 			}
41552 			break;
41553 		} else if (Z_ISREF_P(container)) {
41554 			container = Z_REFVAL_P(container);
41555 			if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
41556 				goto unset_dim_array;
41557 			}
41558 		}
41559 		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
41560 			container = GET_OP1_UNDEF_CV(container, BP_VAR_R);
41561 		}
41562 		if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(offset) == IS_UNDEF)) {
41563 			offset = GET_OP2_UNDEF_CV(offset, BP_VAR_R);
41564 		}
41565 		if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
41566 			if (UNEXPECTED(Z_OBJ_HT_P(container)->unset_dimension == NULL)) {
41567 				zend_use_object_as_array();
41568 			} else {
41569 				if (IS_CONST == IS_CONST && Z_EXTRA_P(offset) == ZEND_EXTRA_VALUE) {
41570 					offset++;
41571 				}
41572 				Z_OBJ_HT_P(container)->unset_dimension(container, offset);
41573 			}
41574 		} else if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_STRING)) {
41575 			zend_throw_error(NULL, "Cannot unset string offsets");
41576 		}
41577 	} while (0);
41578 
41579 
41580 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
41581 }
41582 
41583 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_UNSET_OBJ_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
41584 {
41585 	USE_OPLINE
41586 
41587 	zval *container;
41588 	zval *offset;
41589 
41590 	SAVE_OPLINE();
41591 	container = _get_zval_ptr_cv_BP_VAR_UNSET(opline->op1.var EXECUTE_DATA_CC);
41592 	if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
41593 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
41594 	}
41595 	offset = RT_CONSTANT(opline, opline->op2);
41596 
41597 	do {
41598 		if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) {
41599 			if (Z_ISREF_P(container)) {
41600 				container = Z_REFVAL_P(container);
41601 				if (Z_TYPE_P(container) != IS_OBJECT) {
41602 					break;
41603 				}
41604 			} else {
41605 				break;
41606 			}
41607 		}
41608 		if (Z_OBJ_HT_P(container)->unset_property) {
41609 			Z_OBJ_HT_P(container)->unset_property(container, offset, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL));
41610 		} else {
41611 			zend_wrong_property_unset(offset);
41612 		}
41613 	} while (0);
41614 
41615 
41616 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
41617 }
41618 
41619 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
41620 {
41621 	USE_OPLINE
41622 	zval *value;
41623 	int result;
41624 
41625 	zval *varname;
41626 	zend_string *name, *tmp_name;
41627 	zend_class_entry *ce;
41628 
41629 	SAVE_OPLINE();
41630 	if (IS_CONST == IS_CONST) {
41631 		if (IS_CV == IS_CONST && EXPECTED((ce = CACHED_PTR(opline->extended_value & ~ZEND_ISEMPTY)) != NULL)) {
41632 			value = CACHED_PTR((opline->extended_value & ~ZEND_ISEMPTY) + sizeof(void*));
41633 			goto is_static_prop_return;
41634 		} else if (UNEXPECTED((ce = CACHED_PTR(opline->extended_value & ~ZEND_ISEMPTY)) == NULL)) {
41635 			ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op2)), RT_CONSTANT(opline, opline->op2) + 1, ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
41636 			if (UNEXPECTED(ce == NULL)) {
41637 				ZEND_ASSERT(EG(exception));
41638 				ZVAL_UNDEF(EX_VAR(opline->result.var));
41639 				HANDLE_EXCEPTION();
41640 			}
41641 			if (IS_CV != IS_CONST) {
41642 				CACHE_PTR(opline->extended_value & ~ZEND_ISEMPTY, ce);
41643 			}
41644 		}
41645 	} else {
41646 		if (IS_CONST == IS_UNUSED) {
41647 			ce = zend_fetch_class(NULL, opline->op2.num);
41648 			if (UNEXPECTED(ce == NULL)) {
41649 				ZEND_ASSERT(EG(exception));
41650 
41651 				ZVAL_UNDEF(EX_VAR(opline->result.var));
41652 				HANDLE_EXCEPTION();
41653 			}
41654 		} else {
41655 			ce = Z_CE_P(EX_VAR(opline->op2.var));
41656 		}
41657 		if (IS_CV == IS_CONST &&
41658 		    EXPECTED(CACHED_PTR(opline->extended_value & ~ZEND_ISEMPTY) == ce)) {
41659 
41660 			value = CACHED_PTR((opline->extended_value & ~ZEND_ISEMPTY) + sizeof(void*));
41661 			goto is_static_prop_return;
41662 		}
41663 	}
41664 
41665 	varname = _get_zval_ptr_cv_BP_VAR_IS(opline->op1.var EXECUTE_DATA_CC);
41666 	if (IS_CV == IS_CONST) {
41667 		name = Z_STR_P(varname);
41668 	} else {
41669 		name = zval_get_tmp_string(varname, &tmp_name);
41670 	}
41671 
41672 	value = zend_std_get_static_property(ce, name, 1);
41673 
41674 	if (IS_CV == IS_CONST && value) {
41675 		CACHE_POLYMORPHIC_PTR(opline->extended_value & ~ZEND_ISEMPTY, ce, value);
41676 	}
41677 
41678 	if (IS_CV != IS_CONST) {
41679 		zend_tmp_string_release(tmp_name);
41680 	}
41681 
41682 is_static_prop_return:
41683 	if (!(opline->extended_value & ZEND_ISEMPTY)) {
41684 		result = value && Z_TYPE_P(value) > IS_NULL &&
41685 		    (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL);
41686 	} else {
41687 		result = !value || !i_zend_is_true(value);
41688 	}
41689 
41690 	ZEND_VM_SMART_BRANCH(result, 1);
41691 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
41692 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
41693 }
41694 
41695 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
41696 {
41697 	USE_OPLINE
41698 
41699 	zval *container;
41700 	int result;
41701 	zend_ulong hval;
41702 	zval *offset;
41703 
41704 	SAVE_OPLINE();
41705 	container = EX_VAR(opline->op1.var);
41706 	offset = RT_CONSTANT(opline, opline->op2);
41707 
41708 	if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
41709 		HashTable *ht;
41710 		zval *value;
41711 		zend_string *str;
41712 
41713 isset_dim_obj_array:
41714 		ht = Z_ARRVAL_P(container);
41715 isset_again:
41716 		if (EXPECTED(Z_TYPE_P(offset) == IS_STRING)) {
41717 			str = Z_STR_P(offset);
41718 			if (IS_CONST != IS_CONST) {
41719 				if (ZEND_HANDLE_NUMERIC(str, hval)) {
41720 					goto num_index_prop;
41721 				}
41722 			}
41723 			value = zend_hash_find_ex_ind(ht, str, IS_CONST == IS_CONST);
41724 		} else if (EXPECTED(Z_TYPE_P(offset) == IS_LONG)) {
41725 			hval = Z_LVAL_P(offset);
41726 num_index_prop:
41727 			value = zend_hash_index_find(ht, hval);
41728 		} else if ((IS_CONST & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(offset))) {
41729 			offset = Z_REFVAL_P(offset);
41730 			goto isset_again;
41731 		} else {
41732 			value = zend_find_array_dim_slow(ht, offset EXECUTE_DATA_CC);
41733 		}
41734 
41735 		if (!(opline->extended_value & ZEND_ISEMPTY)) {
41736 			/* > IS_NULL means not IS_UNDEF and not IS_NULL */
41737 			result = value != NULL && Z_TYPE_P(value) > IS_NULL &&
41738 			    (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL);
41739 		} else {
41740 			result = (value == NULL || !i_zend_is_true(value));
41741 		}
41742 		goto isset_dim_obj_exit;
41743 	} else if ((IS_CV & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(container))) {
41744 		container = Z_REFVAL_P(container);
41745 		if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
41746 			goto isset_dim_obj_array;
41747 		}
41748 	}
41749 
41750 	if (IS_CONST == IS_CONST && Z_EXTRA_P(offset) == ZEND_EXTRA_VALUE) {
41751 		offset++;
41752 	}
41753 	if (!(opline->extended_value & ZEND_ISEMPTY)) {
41754 		result = zend_isset_dim_slow(container, offset EXECUTE_DATA_CC);
41755 	} else {
41756 		result = zend_isempty_dim_slow(container, offset EXECUTE_DATA_CC);
41757 	}
41758 
41759 isset_dim_obj_exit:
41760 
41761 
41762 	ZEND_VM_SMART_BRANCH(result, 1);
41763 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
41764 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
41765 }
41766 
41767 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
41768 {
41769 	USE_OPLINE
41770 
41771 	zval *container;
41772 	int result;
41773 	zval *offset;
41774 
41775 	SAVE_OPLINE();
41776 	container = _get_zval_ptr_cv_BP_VAR_IS(opline->op1.var EXECUTE_DATA_CC);
41777 
41778 	if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
41779 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
41780 	}
41781 
41782 	offset = RT_CONSTANT(opline, opline->op2);
41783 
41784 	if (IS_CV == IS_CONST ||
41785 	    (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
41786 		if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
41787 			container = Z_REFVAL_P(container);
41788 			if (UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) {
41789 				goto isset_no_object;
41790 			}
41791 		} else {
41792 			goto isset_no_object;
41793 		}
41794 	}
41795 	if (UNEXPECTED(!Z_OBJ_HT_P(container)->has_property)) {
41796 		zend_wrong_property_check(offset);
41797 isset_no_object:
41798 		result = (opline->extended_value & ZEND_ISEMPTY);
41799 	} else {
41800 		result =
41801 			(opline->extended_value & ZEND_ISEMPTY) ^
41802 			Z_OBJ_HT_P(container)->has_property(container, offset, (opline->extended_value & ZEND_ISEMPTY), ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_ISEMPTY) : NULL));
41803 	}
41804 
41805 
41806 	ZEND_VM_SMART_BRANCH(result, 1);
41807 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
41808 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
41809 }
41810 
41811 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INSTANCEOF_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
41812 {
41813 	USE_OPLINE
41814 
41815 	zval *expr;
41816 	zend_bool result;
41817 
41818 	SAVE_OPLINE();
41819 	expr = EX_VAR(opline->op1.var);
41820 
41821 try_instanceof:
41822 	if (Z_TYPE_P(expr) == IS_OBJECT) {
41823 		zend_class_entry *ce;
41824 
41825 		if (IS_CONST == IS_CONST) {
41826 			ce = CACHED_PTR(opline->extended_value);
41827 			if (UNEXPECTED(ce == NULL)) {
41828 				ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op2)), RT_CONSTANT(opline, opline->op2) + 1, ZEND_FETCH_CLASS_NO_AUTOLOAD);
41829 				if (EXPECTED(ce)) {
41830 					CACHE_PTR(opline->extended_value, ce);
41831 				}
41832 			}
41833 		} else if (IS_CONST == IS_UNUSED) {
41834 			ce = zend_fetch_class(NULL, opline->op2.num);
41835 			if (UNEXPECTED(ce == NULL)) {
41836 				ZEND_ASSERT(EG(exception));
41837 
41838 				ZVAL_UNDEF(EX_VAR(opline->result.var));
41839 				HANDLE_EXCEPTION();
41840 			}
41841 		} else {
41842 			ce = Z_CE_P(EX_VAR(opline->op2.var));
41843 		}
41844 		result = ce && instanceof_function(Z_OBJCE_P(expr), ce);
41845 	} else if ((IS_CV & (IS_VAR|IS_CV)) && Z_TYPE_P(expr) == IS_REFERENCE) {
41846 		expr = Z_REFVAL_P(expr);
41847 		goto try_instanceof;
41848 	} else {
41849 		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(expr) == IS_UNDEF)) {
41850 			GET_OP1_UNDEF_CV(expr, BP_VAR_R);
41851 		}
41852 		result = 0;
41853 	}
41854 
41855 	ZEND_VM_SMART_BRANCH(result, 1);
41856 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
41857 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
41858 }
41859 
41860 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_YIELD_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
41861 {
41862 	USE_OPLINE
41863 
41864 	zend_generator *generator = zend_get_running_generator(EXECUTE_DATA_C);
41865 
41866 	SAVE_OPLINE();
41867 	if (UNEXPECTED(generator->flags & ZEND_GENERATOR_FORCED_CLOSE)) {
41868 		ZEND_VM_TAIL_CALL(zend_yield_in_closed_generator_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
41869 	}
41870 
41871 	/* Destroy the previously yielded value */
41872 	zval_ptr_dtor(&generator->value);
41873 
41874 	/* Destroy the previously yielded key */
41875 	zval_ptr_dtor(&generator->key);
41876 
41877 	/* Set the new yielded value */
41878 	if (IS_CV != IS_UNUSED) {
41879 
41880 
41881 		if (UNEXPECTED(EX(func)->op_array.fn_flags & ZEND_ACC_RETURN_REFERENCE)) {
41882 			/* Constants and temporary variables aren't yieldable by reference,
41883 			 * but we still allow them with a notice. */
41884 			if (IS_CV & (IS_CONST|IS_TMP_VAR)) {
41885 				zval *value;
41886 
41887 				zend_error(E_NOTICE, "Only variable references should be yielded by reference");
41888 
41889 				value = _get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
41890 				ZVAL_COPY_VALUE(&generator->value, value);
41891 				if (IS_CV == IS_CONST) {
41892 					if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
41893 						Z_ADDREF(generator->value);
41894 					}
41895 				}
41896 			} else {
41897 				zval *value_ptr = _get_zval_ptr_cv_BP_VAR_W(opline->op1.var EXECUTE_DATA_CC);
41898 
41899 				/* If a function call result is yielded and the function did
41900 				 * not return by reference we throw a notice. */
41901 				if (IS_CV == IS_VAR &&
41902 				    (value_ptr == &EG(uninitialized_zval) ||
41903 				     (opline->extended_value == ZEND_RETURNS_FUNCTION &&
41904 				      !Z_ISREF_P(value_ptr)))) {
41905 					zend_error(E_NOTICE, "Only variable references should be yielded by reference");
41906 					ZVAL_COPY(&generator->value, value_ptr);
41907 				} else {
41908 					if (Z_ISREF_P(value_ptr)) {
41909 						Z_ADDREF_P(value_ptr);
41910 					} else {
41911 						ZVAL_MAKE_REF_EX(value_ptr, 2);
41912 					}
41913 					ZVAL_REF(&generator->value, Z_REF_P(value_ptr));
41914 				}
41915 
41916 			}
41917 		} else {
41918 			zval *value = _get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
41919 
41920 			/* Consts, temporary variables and references need copying */
41921 			if (IS_CV == IS_CONST) {
41922 				ZVAL_COPY_VALUE(&generator->value, value);
41923 				if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
41924 					Z_ADDREF(generator->value);
41925 				}
41926 			} else if (IS_CV == IS_TMP_VAR) {
41927 				ZVAL_COPY_VALUE(&generator->value, value);
41928             } else if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
41929 				ZVAL_COPY(&generator->value, Z_REFVAL_P(value));
41930 
41931 			} else {
41932 				ZVAL_COPY_VALUE(&generator->value, value);
41933 				if (IS_CV == IS_CV) {
41934 					if (Z_OPT_REFCOUNTED_P(value)) Z_ADDREF_P(value);
41935 				}
41936 			}
41937 		}
41938 	} else {
41939 		/* If no value was specified yield null */
41940 		ZVAL_NULL(&generator->value);
41941 	}
41942 
41943 	/* Set the new yielded key */
41944 	if (IS_CONST != IS_UNUSED) {
41945 
41946 		zval *key = RT_CONSTANT(opline, opline->op2);
41947 
41948 		/* Consts, temporary variables and references need copying */
41949 		if (IS_CONST == IS_CONST) {
41950 			ZVAL_COPY_VALUE(&generator->key, key);
41951 			if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->key))) {
41952 				Z_ADDREF(generator->key);
41953 			}
41954 		} else if (IS_CONST == IS_TMP_VAR) {
41955 			ZVAL_COPY_VALUE(&generator->key, key);
41956 		} else if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(key)) {
41957 			ZVAL_COPY(&generator->key, Z_REFVAL_P(key));
41958 
41959 		} else {
41960 			ZVAL_COPY_VALUE(&generator->key, key);
41961 			if (IS_CONST == IS_CV) {
41962 				if (Z_OPT_REFCOUNTED_P(key)) Z_ADDREF_P(key);
41963 			}
41964 		}
41965 
41966 		if (Z_TYPE(generator->key) == IS_LONG
41967 		    && Z_LVAL(generator->key) > generator->largest_used_integer_key
41968 		) {
41969 			generator->largest_used_integer_key = Z_LVAL(generator->key);
41970 		}
41971 	} else {
41972 		/* If no key was specified we use auto-increment keys */
41973 		generator->largest_used_integer_key++;
41974 		ZVAL_LONG(&generator->key, generator->largest_used_integer_key);
41975 	}
41976 
41977 	if (RETURN_VALUE_USED(opline)) {
41978 		/* If the return value of yield is used set the send
41979 		 * target and initialize it to NULL */
41980 		generator->send_target = EX_VAR(opline->result.var);
41981 		ZVAL_NULL(generator->send_target);
41982 	} else {
41983 		generator->send_target = NULL;
41984 	}
41985 
41986 	/* We increment to the next op, so we are at the correct position when the
41987 	 * generator is resumed. */
41988 	ZEND_VM_INC_OPCODE();
41989 
41990 	/* The GOTO VM uses a local opline variable. We need to set the opline
41991 	 * variable in execute_data so we don't resume at an old position. */
41992 	SAVE_OPLINE();
41993 
41994 	ZEND_VM_RETURN();
41995 }
41996 
41997 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BIND_GLOBAL_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
41998 {
41999 	USE_OPLINE
42000 
42001 	zval *varname;
42002 	zval *value;
42003 	zval *variable_ptr;
42004 	uintptr_t idx;
42005 	zend_reference *ref;
42006 
42007 	ZEND_VM_REPEATABLE_OPCODE
42008 
42009 	varname = RT_CONSTANT(opline, opline->op2);
42010 
42011 	/* We store "hash slot index" + 1 (NULL is a mark of uninitialized cache slot) */
42012 	idx = (uintptr_t)CACHED_PTR(opline->extended_value) - 1;
42013 	if (EXPECTED(idx < EG(symbol_table).nNumUsed * sizeof(Bucket))) {
42014 		Bucket *p = (Bucket*)((char*)EG(symbol_table).arData + idx);
42015 
42016 		if (EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
42017 	        (EXPECTED(p->key == Z_STR_P(varname)) ||
42018 	         (EXPECTED(p->h == ZSTR_H(Z_STR_P(varname))) &&
42019 	          EXPECTED(p->key != NULL) &&
42020 	          EXPECTED(zend_string_equal_content(p->key, Z_STR_P(varname)))))) {
42021 
42022 			value = (zval*)p; /* value = &p->val; */
42023 			goto check_indirect;
42024 		}
42025 	}
42026 
42027 	value = zend_hash_find_ex(&EG(symbol_table), Z_STR_P(varname), 1);
42028 	if (UNEXPECTED(value == NULL)) {
42029 		value = zend_hash_add_new(&EG(symbol_table), Z_STR_P(varname), &EG(uninitialized_zval));
42030 		idx = (char*)value - (char*)EG(symbol_table).arData;
42031 		/* Store "hash slot index" + 1 (NULL is a mark of uninitialized cache slot) */
42032 		CACHE_PTR(opline->extended_value, (void*)(idx + 1));
42033 	} else {
42034 		idx = (char*)value - (char*)EG(symbol_table).arData;
42035 		/* Store "hash slot index" + 1 (NULL is a mark of uninitialized cache slot) */
42036 		CACHE_PTR(opline->extended_value, (void*)(idx + 1));
42037 check_indirect:
42038 		/* GLOBAL variable may be an INDIRECT pointer to CV */
42039 		if (UNEXPECTED(Z_TYPE_P(value) == IS_INDIRECT)) {
42040 			value = Z_INDIRECT_P(value);
42041 			if (UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
42042 				ZVAL_NULL(value);
42043 			}
42044 		}
42045 	}
42046 
42047 	if (UNEXPECTED(!Z_ISREF_P(value))) {
42048 		ZVAL_MAKE_REF_EX(value, 2);
42049 		ref = Z_REF_P(value);
42050 	} else {
42051 		ref = Z_REF_P(value);
42052 		GC_ADDREF(ref);
42053 	}
42054 
42055 	variable_ptr = EX_VAR(opline->op1.var);
42056 
42057 	if (UNEXPECTED(Z_REFCOUNTED_P(variable_ptr))) {
42058 		zend_refcounted *ref = Z_COUNTED_P(variable_ptr);
42059 		uint32_t refcnt = GC_DELREF(ref);
42060 
42061 		if (EXPECTED(variable_ptr != value)) {
42062 			if (refcnt == 0) {
42063 				SAVE_OPLINE();
42064 				rc_dtor_func(ref);
42065 				if (UNEXPECTED(EG(exception))) {
42066 					ZVAL_NULL(variable_ptr);
42067 					HANDLE_EXCEPTION();
42068 				}
42069 			} else {
42070 				gc_check_possible_root(ref);
42071 			}
42072 		}
42073 	}
42074 	ZVAL_REF(variable_ptr, ref);
42075 
42076 	ZEND_VM_REPEAT_OPCODE(ZEND_BIND_GLOBAL);
42077 	ZEND_VM_NEXT_OPCODE();
42078 }
42079 
42080 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BIND_STATIC_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
42081 {
42082 	USE_OPLINE
42083 
42084 	HashTable *ht;
42085 	zval *value;
42086 	zval *variable_ptr;
42087 
42088 	variable_ptr = EX_VAR(opline->op1.var);
42089 	zval_ptr_dtor(variable_ptr);
42090 
42091 	ht = EX(func)->op_array.static_variables;
42092 	ZEND_ASSERT(ht != NULL);
42093 	if (GC_REFCOUNT(ht) > 1) {
42094 		if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) {
42095 			GC_DELREF(ht);
42096 		}
42097 		EX(func)->op_array.static_variables = ht = zend_array_dup(ht);
42098 	}
42099 
42100 	value = (zval*)((char*)ht->arData + (opline->extended_value & ~ZEND_BIND_REF));
42101 
42102 	if (opline->extended_value & ZEND_BIND_REF) {
42103 		if (Z_TYPE_P(value) == IS_CONSTANT_AST) {
42104 			SAVE_OPLINE();
42105 			if (UNEXPECTED(zval_update_constant_ex(value, EX(func)->op_array.scope) != SUCCESS)) {
42106 				ZVAL_NULL(variable_ptr);
42107 				HANDLE_EXCEPTION();
42108 			}
42109 		}
42110 		if (UNEXPECTED(!Z_ISREF_P(value))) {
42111 			zend_reference *ref = (zend_reference*)emalloc(sizeof(zend_reference));
42112 			GC_SET_REFCOUNT(ref, 2);
42113 			GC_TYPE_INFO(ref) = IS_REFERENCE;
42114 			ZVAL_COPY_VALUE(&ref->val, value);
42115 			Z_REF_P(value) = ref;
42116 			Z_TYPE_INFO_P(value) = IS_REFERENCE_EX;
42117 			ZVAL_REF(variable_ptr, ref);
42118 		} else {
42119 			Z_ADDREF_P(value);
42120 			ZVAL_REF(variable_ptr, Z_REF_P(value));
42121 		}
42122 	} else {
42123 		ZVAL_COPY(variable_ptr, value);
42124 	}
42125 
42126 	ZEND_VM_NEXT_OPCODE();
42127 }
42128 
42129 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IN_ARRAY_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
42130 {
42131 	USE_OPLINE
42132 
42133 	zval *op1;
42134 	HashTable *ht = Z_ARRVAL_P(RT_CONSTANT(opline, opline->op2));
42135 	int result;
42136 
42137 	SAVE_OPLINE();
42138 	op1 = _get_zval_ptr_cv_deref_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
42139 	if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
42140 		result = zend_hash_exists(ht, Z_STR_P(op1));
42141 	} else if (opline->extended_value) {
42142 		if (EXPECTED(Z_TYPE_P(op1) == IS_LONG)) {
42143 			result = zend_hash_index_exists(ht, Z_LVAL_P(op1));
42144 		} else {
42145 			result = 0;
42146 		}
42147 	} else if (Z_TYPE_P(op1) <= IS_FALSE) {
42148 		result = zend_hash_exists(ht, ZSTR_EMPTY_ALLOC());
42149 	} else {
42150 		zend_string *key;
42151 		zval key_tmp, result_tmp;
42152 
42153 		result = 0;
42154 		ZEND_HASH_FOREACH_STR_KEY(ht, key) {
42155 			ZVAL_STR(&key_tmp, key);
42156 			compare_function(&result_tmp, op1, &key_tmp);
42157 			if (Z_LVAL(result_tmp) == 0) {
42158 				result = 1;
42159 				break;
42160 			}
42161 		} ZEND_HASH_FOREACH_END();
42162 	}
42163 
42164 	ZEND_VM_SMART_BRANCH(result, 1);
42165 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
42166 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
42167 }
42168 
42169 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_R_INDEX_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
42170 {
42171 	USE_OPLINE
42172 
42173 	zval *container, *dim, *value;
42174 	zend_long offset;
42175 	HashTable *ht;
42176 
42177 	container = EX_VAR(opline->op1.var);
42178 	dim = RT_CONSTANT(opline, opline->op2);
42179 	if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
42180 fetch_dim_r_index_array:
42181 		if (EXPECTED(Z_TYPE_P(dim) == IS_LONG)) {
42182 			offset = Z_LVAL_P(dim);
42183 		} else {
42184 			offset = zval_get_long(dim);
42185 		}
42186 		ht = Z_ARRVAL_P(container);
42187 		ZEND_HASH_INDEX_FIND(ht, offset, value, fetch_dim_r_index_undef);
42188 		ZVAL_COPY_DEREF(EX_VAR(opline->result.var), value);
42189 		if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
42190 			SAVE_OPLINE();
42191 
42192 			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
42193 		} else {
42194 			ZEND_VM_NEXT_OPCODE();
42195 		}
42196 	} else if (IS_CV != IS_CONST && EXPECTED(Z_TYPE_P(container) == IS_REFERENCE)) {
42197 		container = Z_REFVAL_P(container);
42198 		if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
42199 			goto fetch_dim_r_index_array;
42200 		} else {
42201 			goto fetch_dim_r_index_slow;
42202 		}
42203 	} else {
42204 fetch_dim_r_index_slow:
42205 		SAVE_OPLINE();
42206 		if (IS_CONST == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
42207 			dim++;
42208 		}
42209 		zend_fetch_dimension_address_read_R_slow(container, dim OPLINE_CC EXECUTE_DATA_CC);
42210 
42211 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
42212 	}
42213 
42214 fetch_dim_r_index_undef:
42215 	ZVAL_NULL(EX_VAR(opline->result.var));
42216 	SAVE_OPLINE();
42217 	zend_undefined_offset(offset);
42218 
42219 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
42220 }
42221 
42222 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_R_INDEX_SPEC_CV_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
42223 {
42224 	USE_OPLINE
42225 
42226 	zval *container, *dim, *value;
42227 	zend_long offset;
42228 	HashTable *ht;
42229 
42230 	container = EX_VAR(opline->op1.var);
42231 	dim = EX_VAR(opline->op2.var);
42232 	if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
42233 fetch_dim_r_index_array:
42234 		if (EXPECTED(Z_TYPE_P(dim) == IS_LONG)) {
42235 			offset = Z_LVAL_P(dim);
42236 		} else {
42237 			offset = zval_get_long(dim);
42238 		}
42239 		ht = Z_ARRVAL_P(container);
42240 		ZEND_HASH_INDEX_FIND(ht, offset, value, fetch_dim_r_index_undef);
42241 		ZVAL_COPY_DEREF(EX_VAR(opline->result.var), value);
42242 		if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
42243 			SAVE_OPLINE();
42244 
42245 			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
42246 		} else {
42247 			ZEND_VM_NEXT_OPCODE();
42248 		}
42249 	} else if (IS_CV != IS_CONST && EXPECTED(Z_TYPE_P(container) == IS_REFERENCE)) {
42250 		container = Z_REFVAL_P(container);
42251 		if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
42252 			goto fetch_dim_r_index_array;
42253 		} else {
42254 			goto fetch_dim_r_index_slow;
42255 		}
42256 	} else {
42257 fetch_dim_r_index_slow:
42258 		SAVE_OPLINE();
42259 		if ((IS_TMP_VAR|IS_VAR|IS_CV) == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
42260 			dim++;
42261 		}
42262 		zend_fetch_dimension_address_read_R_slow(container, dim OPLINE_CC EXECUTE_DATA_CC);
42263 
42264 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
42265 	}
42266 
42267 fetch_dim_r_index_undef:
42268 	ZVAL_NULL(EX_VAR(opline->result.var));
42269 	SAVE_OPLINE();
42270 	zend_undefined_offset(offset);
42271 
42272 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
42273 }
42274 
42275 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ADD_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
42276 {
42277 	USE_OPLINE
42278 	zend_free_op free_op2;
42279 	zval *op1, *op2, *result;
42280 
42281 	op1 = EX_VAR(opline->op1.var);
42282 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
42283 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
42284 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
42285 			result = EX_VAR(opline->result.var);
42286 			fast_long_add_function(result, op1, op2);
42287 			ZEND_VM_NEXT_OPCODE();
42288 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
42289 			result = EX_VAR(opline->result.var);
42290 			ZVAL_DOUBLE(result, ((double)Z_LVAL_P(op1)) + Z_DVAL_P(op2));
42291 			ZEND_VM_NEXT_OPCODE();
42292 		}
42293 	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
42294 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
42295 			result = EX_VAR(opline->result.var);
42296 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) + Z_DVAL_P(op2));
42297 			ZEND_VM_NEXT_OPCODE();
42298 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
42299 			result = EX_VAR(opline->result.var);
42300 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) + ((double)Z_LVAL_P(op2)));
42301 			ZEND_VM_NEXT_OPCODE();
42302 		}
42303 	}
42304 
42305 	SAVE_OPLINE();
42306 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
42307 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
42308 	}
42309 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
42310 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
42311 	}
42312 	add_function(EX_VAR(opline->result.var), op1, op2);
42313 
42314 	zval_ptr_dtor_nogc(free_op2);
42315 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
42316 }
42317 
42318 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SUB_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
42319 {
42320 	USE_OPLINE
42321 	zend_free_op free_op2;
42322 	zval *op1, *op2, *result;
42323 
42324 	op1 = EX_VAR(opline->op1.var);
42325 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
42326 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
42327 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
42328 			result = EX_VAR(opline->result.var);
42329 			fast_long_sub_function(result, op1, op2);
42330 			ZEND_VM_NEXT_OPCODE();
42331 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
42332 			result = EX_VAR(opline->result.var);
42333 			ZVAL_DOUBLE(result, ((double)Z_LVAL_P(op1)) - Z_DVAL_P(op2));
42334 			ZEND_VM_NEXT_OPCODE();
42335 		}
42336 	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
42337 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
42338 			result = EX_VAR(opline->result.var);
42339 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) - Z_DVAL_P(op2));
42340 			ZEND_VM_NEXT_OPCODE();
42341 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
42342 			result = EX_VAR(opline->result.var);
42343 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) - ((double)Z_LVAL_P(op2)));
42344 			ZEND_VM_NEXT_OPCODE();
42345 		}
42346 	}
42347 
42348 	SAVE_OPLINE();
42349 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
42350 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
42351 	}
42352 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
42353 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
42354 	}
42355 	sub_function(EX_VAR(opline->result.var), op1, op2);
42356 
42357 	zval_ptr_dtor_nogc(free_op2);
42358 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
42359 }
42360 
42361 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_MUL_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
42362 {
42363 	USE_OPLINE
42364 	zend_free_op free_op2;
42365 	zval *op1, *op2, *result;
42366 
42367 	op1 = EX_VAR(opline->op1.var);
42368 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
42369 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
42370 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
42371 			zend_long overflow;
42372 
42373 			result = EX_VAR(opline->result.var);
42374 			ZEND_SIGNED_MULTIPLY_LONG(Z_LVAL_P(op1), Z_LVAL_P(op2), Z_LVAL_P(result), Z_DVAL_P(result), overflow);
42375 			Z_TYPE_INFO_P(result) = overflow ? IS_DOUBLE : IS_LONG;
42376 			ZEND_VM_NEXT_OPCODE();
42377 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
42378 			result = EX_VAR(opline->result.var);
42379 			ZVAL_DOUBLE(result, ((double)Z_LVAL_P(op1)) * Z_DVAL_P(op2));
42380 			ZEND_VM_NEXT_OPCODE();
42381 		}
42382 	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
42383 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
42384 			result = EX_VAR(opline->result.var);
42385 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) * Z_DVAL_P(op2));
42386 			ZEND_VM_NEXT_OPCODE();
42387 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
42388 			result = EX_VAR(opline->result.var);
42389 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) * ((double)Z_LVAL_P(op2)));
42390 			ZEND_VM_NEXT_OPCODE();
42391 		}
42392 	}
42393 
42394 	SAVE_OPLINE();
42395 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
42396 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
42397 	}
42398 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
42399 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
42400 	}
42401 	mul_function(EX_VAR(opline->result.var), op1, op2);
42402 
42403 	zval_ptr_dtor_nogc(free_op2);
42404 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
42405 }
42406 
42407 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_DIV_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
42408 {
42409 	USE_OPLINE
42410 	zend_free_op free_op2;
42411 	zval *op1, *op2;
42412 
42413 	SAVE_OPLINE();
42414 	op1 = _get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
42415 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
42416 	fast_div_function(EX_VAR(opline->result.var), op1, op2);
42417 
42418 	zval_ptr_dtor_nogc(free_op2);
42419 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
42420 }
42421 
42422 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_MOD_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
42423 {
42424 	USE_OPLINE
42425 	zend_free_op free_op2;
42426 	zval *op1, *op2, *result;
42427 
42428 	op1 = EX_VAR(opline->op1.var);
42429 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
42430 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
42431 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
42432 			result = EX_VAR(opline->result.var);
42433 			if (UNEXPECTED(Z_LVAL_P(op2) == 0)) {
42434 				ZEND_VM_TAIL_CALL(zend_mod_by_zero_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
42435 			} else if (UNEXPECTED(Z_LVAL_P(op2) == -1)) {
42436 				/* Prevent overflow error/crash if op1==ZEND_LONG_MIN */
42437 				ZVAL_LONG(result, 0);
42438 			} else {
42439 				ZVAL_LONG(result, Z_LVAL_P(op1) % Z_LVAL_P(op2));
42440 			}
42441 			ZEND_VM_NEXT_OPCODE();
42442 		}
42443 	}
42444 
42445 	SAVE_OPLINE();
42446 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
42447 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
42448 	}
42449 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
42450 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
42451 	}
42452 	mod_function(EX_VAR(opline->result.var), op1, op2);
42453 
42454 	zval_ptr_dtor_nogc(free_op2);
42455 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
42456 }
42457 
42458 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SL_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
42459 {
42460 	USE_OPLINE
42461 	zend_free_op free_op2;
42462 	zval *op1, *op2;
42463 
42464 	op1 = EX_VAR(opline->op1.var);
42465 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
42466 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)
42467 			&& EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)
42468 			&& EXPECTED((zend_ulong)Z_LVAL_P(op2) < SIZEOF_ZEND_LONG * 8)) {
42469 		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(op1) << Z_LVAL_P(op2));
42470 		ZEND_VM_NEXT_OPCODE();
42471 	}
42472 
42473 	SAVE_OPLINE();
42474 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
42475 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
42476 	}
42477 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
42478 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
42479 	}
42480 	shift_left_function(EX_VAR(opline->result.var), op1, op2);
42481 
42482 	zval_ptr_dtor_nogc(free_op2);
42483 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
42484 }
42485 
42486 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SR_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
42487 {
42488 	USE_OPLINE
42489 	zend_free_op free_op2;
42490 	zval *op1, *op2;
42491 
42492 	op1 = EX_VAR(opline->op1.var);
42493 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
42494 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)
42495 			&& EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)
42496 			&& EXPECTED((zend_ulong)Z_LVAL_P(op2) < SIZEOF_ZEND_LONG * 8)) {
42497 		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(op1) >> Z_LVAL_P(op2));
42498 		ZEND_VM_NEXT_OPCODE();
42499 	}
42500 
42501 	SAVE_OPLINE();
42502 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
42503 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
42504 	}
42505 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
42506 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
42507 	}
42508 	shift_right_function(EX_VAR(opline->result.var), op1, op2);
42509 
42510 	zval_ptr_dtor_nogc(free_op2);
42511 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
42512 }
42513 
42514 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_POW_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
42515 {
42516 	USE_OPLINE
42517 	zend_free_op free_op2;
42518 	zval *op1, *op2;
42519 
42520 	SAVE_OPLINE();
42521 	op1 = _get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
42522 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
42523 	pow_function(EX_VAR(opline->result.var), op1, op2);
42524 
42525 	zval_ptr_dtor_nogc(free_op2);
42526 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
42527 }
42528 
42529 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_CONCAT_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
42530 {
42531 	USE_OPLINE
42532 	zend_free_op free_op2;
42533 	zval *op1, *op2;
42534 
42535 	op1 = EX_VAR(opline->op1.var);
42536 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
42537 
42538 	if ((IS_CV == IS_CONST || EXPECTED(Z_TYPE_P(op1) == IS_STRING)) &&
42539 	    ((IS_TMP_VAR|IS_VAR) == IS_CONST || EXPECTED(Z_TYPE_P(op2) == IS_STRING))) {
42540 		zend_string *op1_str = Z_STR_P(op1);
42541 		zend_string *op2_str = Z_STR_P(op2);
42542 		zend_string *str;
42543 
42544 		if (IS_CV != IS_CONST && UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
42545 			if ((IS_TMP_VAR|IS_VAR) == IS_CONST || (IS_TMP_VAR|IS_VAR) == IS_CV) {
42546 				ZVAL_STR_COPY(EX_VAR(opline->result.var), op2_str);
42547 			} else {
42548 				ZVAL_STR(EX_VAR(opline->result.var), op2_str);
42549 			}
42550 
42551 		} else if ((IS_TMP_VAR|IS_VAR) != IS_CONST && UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
42552 			if (IS_CV == IS_CONST || IS_CV == IS_CV) {
42553 				ZVAL_STR_COPY(EX_VAR(opline->result.var), op1_str);
42554 			} else {
42555 				ZVAL_STR(EX_VAR(opline->result.var), op1_str);
42556 			}
42557 			zval_ptr_dtor_nogc(free_op2);
42558 		} else if (IS_CV != IS_CONST && IS_CV != IS_CV &&
42559 		    !ZSTR_IS_INTERNED(op1_str) && GC_REFCOUNT(op1_str) == 1) {
42560 		    size_t len = ZSTR_LEN(op1_str);
42561 
42562 			str = zend_string_extend(op1_str, len + ZSTR_LEN(op2_str), 0);
42563 			memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
42564 			ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
42565 			zval_ptr_dtor_nogc(free_op2);
42566 		} else {
42567 			str = zend_string_alloc(ZSTR_LEN(op1_str) + ZSTR_LEN(op2_str), 0);
42568 			memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
42569 			memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
42570 			ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
42571 
42572 			zval_ptr_dtor_nogc(free_op2);
42573 		}
42574 		ZEND_VM_NEXT_OPCODE();
42575 	} else {
42576 		SAVE_OPLINE();
42577 
42578 		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
42579 			op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
42580 		}
42581 		if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
42582 			op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
42583 		}
42584 		concat_function(EX_VAR(opline->result.var), op1, op2);
42585 
42586 		zval_ptr_dtor_nogc(free_op2);
42587 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
42588 	}
42589 }
42590 
42591 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_EQUAL_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
42592 {
42593 	USE_OPLINE
42594 	zend_free_op free_op2;
42595 	zval *op1, *op2, *result;
42596 
42597 	op1 = EX_VAR(opline->op1.var);
42598 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
42599 	do {
42600 		int result;
42601 
42602 		if (EXPECTED(Z_TYPE_P(op1) == IS_LONG)) {
42603 			if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
42604 				result = (Z_LVAL_P(op1) == Z_LVAL_P(op2));
42605 			} else if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
42606 				result = ((double)Z_LVAL_P(op1) == Z_DVAL_P(op2));
42607 			} else {
42608 				break;
42609 			}
42610 		} else if (EXPECTED(Z_TYPE_P(op1) == IS_DOUBLE)) {
42611 			if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
42612 				result = (Z_DVAL_P(op1) == Z_DVAL_P(op2));
42613 			} else if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
42614 				result = (Z_DVAL_P(op1) == ((double)Z_LVAL_P(op2)));
42615 			} else {
42616 				break;
42617 			}
42618 		} else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
42619 			if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
42620 				result = zend_fast_equal_strings(Z_STR_P(op1), Z_STR_P(op2));
42621 
42622 				zval_ptr_dtor_nogc(free_op2);
42623 			} else {
42624 				break;
42625 			}
42626 		} else {
42627 			break;
42628 		}
42629 		ZEND_VM_SMART_BRANCH(result, 0);
42630 		ZVAL_BOOL(EX_VAR(opline->result.var), result);
42631 		ZEND_VM_NEXT_OPCODE();
42632 	} while (0);
42633 
42634 	SAVE_OPLINE();
42635 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
42636 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
42637 	}
42638 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
42639 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
42640 	}
42641 	result = EX_VAR(opline->result.var);
42642 	compare_function(result, op1, op2);
42643 	ZVAL_BOOL(result, Z_LVAL_P(result) == 0);
42644 
42645 	zval_ptr_dtor_nogc(free_op2);
42646 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
42647 }
42648 
42649 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_NOT_EQUAL_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
42650 {
42651 	USE_OPLINE
42652 	zend_free_op free_op2;
42653 	zval *op1, *op2, *result;
42654 
42655 	op1 = EX_VAR(opline->op1.var);
42656 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
42657 	do {
42658 		int result;
42659 
42660 		if (EXPECTED(Z_TYPE_P(op1) == IS_LONG)) {
42661 			if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
42662 				result = (Z_LVAL_P(op1) != Z_LVAL_P(op2));
42663 			} else if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
42664 				result = ((double)Z_LVAL_P(op1) != Z_DVAL_P(op2));
42665 			} else {
42666 				break;
42667 			}
42668 		} else if (EXPECTED(Z_TYPE_P(op1) == IS_DOUBLE)) {
42669 			if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
42670 				result = (Z_DVAL_P(op1) != Z_DVAL_P(op2));
42671 			} else if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
42672 				result = (Z_DVAL_P(op1) != ((double)Z_LVAL_P(op2)));
42673 			} else {
42674 				break;
42675 			}
42676 		} else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
42677 			if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
42678 				result = !zend_fast_equal_strings(Z_STR_P(op1), Z_STR_P(op2));
42679 
42680 				zval_ptr_dtor_nogc(free_op2);
42681 			} else {
42682 				break;
42683 			}
42684 		} else {
42685 			break;
42686 		}
42687 		ZEND_VM_SMART_BRANCH(result, 0);
42688 		ZVAL_BOOL(EX_VAR(opline->result.var), result);
42689 		ZEND_VM_NEXT_OPCODE();
42690 	} while (0);
42691 
42692 	SAVE_OPLINE();
42693 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
42694 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
42695 	}
42696 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
42697 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
42698 	}
42699 	result = EX_VAR(opline->result.var);
42700 	compare_function(result, op1, op2);
42701 	ZVAL_BOOL(result, Z_LVAL_P(result) != 0);
42702 
42703 	zval_ptr_dtor_nogc(free_op2);
42704 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
42705 }
42706 
42707 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
42708 {
42709 	USE_OPLINE
42710 	zend_free_op free_op2;
42711 	zval *op1, *op2, *result;
42712 
42713 	op1 = EX_VAR(opline->op1.var);
42714 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
42715 	do {
42716 		int result;
42717 
42718 		if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
42719 			if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
42720 				result = (Z_LVAL_P(op1) < Z_LVAL_P(op2));
42721 			} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
42722 				result = ((double)Z_LVAL_P(op1) < Z_DVAL_P(op2));
42723 			} else {
42724 				break;
42725 			}
42726 		} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
42727 			if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
42728 				result = (Z_DVAL_P(op1) < Z_DVAL_P(op2));
42729 			} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
42730 				result = (Z_DVAL_P(op1) < ((double)Z_LVAL_P(op2)));
42731 			} else {
42732 				break;
42733 			}
42734 		} else {
42735 			break;
42736 		}
42737 		ZEND_VM_SMART_BRANCH(result, 0);
42738 		ZVAL_BOOL(EX_VAR(opline->result.var), result);
42739 		ZEND_VM_NEXT_OPCODE();
42740 	} while (0);
42741 
42742 	SAVE_OPLINE();
42743 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
42744 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
42745 	}
42746 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
42747 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
42748 	}
42749 	result = EX_VAR(opline->result.var);
42750 	compare_function(result, op1, op2);
42751 	ZVAL_BOOL(result, Z_LVAL_P(result) < 0);
42752 
42753 	zval_ptr_dtor_nogc(free_op2);
42754 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
42755 }
42756 
42757 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_OR_EQUAL_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
42758 {
42759 	USE_OPLINE
42760 	zend_free_op free_op2;
42761 	zval *op1, *op2, *result;
42762 
42763 	op1 = EX_VAR(opline->op1.var);
42764 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
42765 	do {
42766 		int result;
42767 
42768 		if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
42769 			if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
42770 				result = (Z_LVAL_P(op1) <= Z_LVAL_P(op2));
42771 			} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
42772 				result = ((double)Z_LVAL_P(op1) <= Z_DVAL_P(op2));
42773 			} else {
42774 				break;
42775 			}
42776 		} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
42777 			if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
42778 				result = (Z_DVAL_P(op1) <= Z_DVAL_P(op2));
42779 			} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
42780 				result = (Z_DVAL_P(op1) <= ((double)Z_LVAL_P(op2)));
42781 			} else {
42782 				break;
42783 			}
42784 		} else {
42785 			break;
42786 		}
42787 		ZEND_VM_SMART_BRANCH(result, 0);
42788 		ZVAL_BOOL(EX_VAR(opline->result.var), result);
42789 		ZEND_VM_NEXT_OPCODE();
42790 	} while (0);
42791 
42792 	SAVE_OPLINE();
42793 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
42794 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
42795 	}
42796 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
42797 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
42798 	}
42799 	result = EX_VAR(opline->result.var);
42800 	compare_function(result, op1, op2);
42801 	ZVAL_BOOL(result, Z_LVAL_P(result) <= 0);
42802 
42803 	zval_ptr_dtor_nogc(free_op2);
42804 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
42805 }
42806 
42807 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SPACESHIP_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
42808 {
42809 	USE_OPLINE
42810 	zend_free_op free_op2;
42811 	zval *op1, *op2;
42812 
42813 	SAVE_OPLINE();
42814 	op1 = _get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
42815 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
42816 	compare_function(EX_VAR(opline->result.var), op1, op2);
42817 
42818 	zval_ptr_dtor_nogc(free_op2);
42819 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
42820 }
42821 
42822 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BW_OR_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
42823 {
42824 	USE_OPLINE
42825 	zend_free_op free_op2;
42826 	zval *op1, *op2;
42827 
42828 	op1 = EX_VAR(opline->op1.var);
42829 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
42830 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)
42831 			&& EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
42832 		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(op1) | Z_LVAL_P(op2));
42833 		ZEND_VM_NEXT_OPCODE();
42834 	}
42835 
42836 	SAVE_OPLINE();
42837 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
42838 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
42839 	}
42840 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
42841 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
42842 	}
42843 	bitwise_or_function(EX_VAR(opline->result.var), op1, op2);
42844 
42845 	zval_ptr_dtor_nogc(free_op2);
42846 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
42847 }
42848 
42849 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BW_AND_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
42850 {
42851 	USE_OPLINE
42852 	zend_free_op free_op2;
42853 	zval *op1, *op2;
42854 
42855 	op1 = EX_VAR(opline->op1.var);
42856 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
42857 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)
42858 			&& EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
42859 		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(op1) & Z_LVAL_P(op2));
42860 		ZEND_VM_NEXT_OPCODE();
42861 	}
42862 
42863 	SAVE_OPLINE();
42864 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
42865 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
42866 	}
42867 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
42868 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
42869 	}
42870 	bitwise_and_function(EX_VAR(opline->result.var), op1, op2);
42871 
42872 	zval_ptr_dtor_nogc(free_op2);
42873 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
42874 }
42875 
42876 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BW_XOR_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
42877 {
42878 	USE_OPLINE
42879 	zend_free_op free_op2;
42880 	zval *op1, *op2;
42881 
42882 	op1 = EX_VAR(opline->op1.var);
42883 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
42884 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)
42885 			&& EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
42886 		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(op1) ^ Z_LVAL_P(op2));
42887 		ZEND_VM_NEXT_OPCODE();
42888 	}
42889 
42890 	SAVE_OPLINE();
42891 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
42892 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
42893 	}
42894 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
42895 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
42896 	}
42897 	bitwise_xor_function(EX_VAR(opline->result.var), op1, op2);
42898 
42899 	zval_ptr_dtor_nogc(free_op2);
42900 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
42901 }
42902 
42903 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BOOL_XOR_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
42904 {
42905 	USE_OPLINE
42906 	zend_free_op free_op2;
42907 	zval *op1, *op2;
42908 
42909 	SAVE_OPLINE();
42910 	op1 = _get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
42911 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
42912 	boolean_xor_function(EX_VAR(opline->result.var), op1, op2);
42913 
42914 	zval_ptr_dtor_nogc(free_op2);
42915 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
42916 }
42917 
42918 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_obj_helper_SPEC_CV_TMPVAR(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
42919 {
42920 	USE_OPLINE
42921 	zend_free_op free_op2, free_op_data1;
42922 	zval *object;
42923 	zval *property;
42924 	zval *value;
42925 	zval *zptr;
42926 
42927 	SAVE_OPLINE();
42928 	object = _get_zval_ptr_cv_BP_VAR_RW(opline->op1.var EXECUTE_DATA_CC);
42929 
42930 	if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
42931 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
42932 	}
42933 
42934 	property = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
42935 
42936 	do {
42937 		value = get_op_data_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data1);
42938 
42939 		if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
42940 			if (Z_ISREF_P(object)) {
42941 				object = Z_REFVAL_P(object);
42942 				if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
42943 					goto assign_op_object;
42944 				}
42945 			}
42946 			if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
42947 				break;
42948 			}
42949 		}
42950 
42951 		/* here we are sure we are dealing with an object */
42952 assign_op_object:
42953 		if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
42954 			&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR((opline+1)->extended_value) : NULL))) != NULL)) {
42955 			if (UNEXPECTED(Z_ISERROR_P(zptr))) {
42956 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
42957 					ZVAL_NULL(EX_VAR(opline->result.var));
42958 				}
42959 			} else {
42960 				ZVAL_DEREF(zptr);
42961 
42962 				binary_op(zptr, zptr, value);
42963 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
42964 					ZVAL_COPY(EX_VAR(opline->result.var), zptr);
42965 				}
42966 			}
42967 		} else {
42968 			zend_assign_op_overloaded_property(object, property, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR((opline+1)->extended_value) : NULL), value, binary_op OPLINE_CC EXECUTE_DATA_CC);
42969 		}
42970 	} while (0);
42971 
42972 	FREE_OP(free_op_data1);
42973 	zval_ptr_dtor_nogc(free_op2);
42974 
42975 	/* assign_obj has two opcodes! */
42976 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
42977 }
42978 
42979 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_dim_helper_SPEC_CV_TMPVAR(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
42980 {
42981 	USE_OPLINE
42982 	zend_free_op free_op2, free_op_data1;
42983 	zval *var_ptr;
42984 	zval *value, *container, *dim;
42985 
42986 	SAVE_OPLINE();
42987 	container = EX_VAR(opline->op1.var);
42988 
42989 	if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
42990 assign_dim_op_array:
42991 		SEPARATE_ARRAY(container);
42992 assign_dim_op_new_array:
42993 		dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
42994 		if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) {
42995 			var_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(container), &EG(uninitialized_zval));
42996 			if (UNEXPECTED(!var_ptr)) {
42997 				zend_cannot_add_element();
42998 				goto assign_dim_op_ret_null;
42999 			}
43000 		} else {
43001 			if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
43002 				var_ptr = zend_fetch_dimension_address_inner_RW_CONST(Z_ARRVAL_P(container), dim EXECUTE_DATA_CC);
43003 			} else {
43004 				var_ptr = zend_fetch_dimension_address_inner_RW(Z_ARRVAL_P(container), dim EXECUTE_DATA_CC);
43005 			}
43006 			if (UNEXPECTED(!var_ptr)) {
43007 				goto assign_dim_op_ret_null;
43008 			}
43009 			ZVAL_DEREF(var_ptr);
43010 		}
43011 
43012 		value = get_op_data_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data1);
43013 
43014 		binary_op(var_ptr, var_ptr, value);
43015 
43016 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
43017 			ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
43018 		}
43019 	} else {
43020 		if (EXPECTED(Z_ISREF_P(container))) {
43021 			container = Z_REFVAL_P(container);
43022 			if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
43023 				goto assign_dim_op_array;
43024 			}
43025 		} else if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(container) == IS_UNDEF)) {
43026 			container = GET_OP1_UNDEF_CV(container, BP_VAR_RW);
43027 assign_dim_op_convert_to_array:
43028 			ZVAL_ARR(container, zend_new_array(8));
43029 			goto assign_dim_op_new_array;
43030 		}
43031 
43032 		dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
43033 
43034 		if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
43035 			value = get_op_data_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data1);
43036 			if ((IS_TMP_VAR|IS_VAR) == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
43037 				dim++;
43038 			}
43039 			zend_binary_assign_op_obj_dim(container, dim, value, UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL, binary_op EXECUTE_DATA_CC);
43040 		} else {
43041 			if (UNEXPECTED(Z_TYPE_P(container) == IS_STRING)) {
43042 				if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) {
43043 					zend_use_new_element_for_string();
43044 				} else {
43045 					zend_check_string_offset(dim, BP_VAR_RW EXECUTE_DATA_CC);
43046 					zend_wrong_string_offset(EXECUTE_DATA_C);
43047 				}
43048 				UNDEF_RESULT();
43049 			} else if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) {
43050 				goto assign_dim_op_convert_to_array;
43051 			} else {
43052 				if (UNEXPECTED(IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(container)))) {
43053 					zend_use_scalar_as_array();
43054 				}
43055 assign_dim_op_ret_null:
43056 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
43057 					ZVAL_NULL(EX_VAR(opline->result.var));
43058 				}
43059 			}
43060 			value = get_op_data_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data1);
43061 		}
43062 	}
43063 
43064 	zval_ptr_dtor_nogc(free_op2);
43065 	FREE_OP(free_op_data1);
43066 
43067 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
43068 }
43069 
43070 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_simple_helper_SPEC_CV_TMPVAR(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
43071 {
43072 	USE_OPLINE
43073 	zend_free_op free_op2;
43074 	zval *var_ptr;
43075 	zval *value;
43076 
43077 	SAVE_OPLINE();
43078 	value = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
43079 	var_ptr = _get_zval_ptr_cv_BP_VAR_RW(opline->op1.var EXECUTE_DATA_CC);
43080 
43081 	if (IS_CV == IS_VAR && UNEXPECTED(Z_ISERROR_P(var_ptr))) {
43082 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
43083 			ZVAL_NULL(EX_VAR(opline->result.var));
43084 		}
43085 	} else {
43086 		ZVAL_DEREF(var_ptr);
43087 
43088 		binary_op(var_ptr, var_ptr, value);
43089 
43090 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
43091 			ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
43092 		}
43093 	}
43094 
43095 	zval_ptr_dtor_nogc(free_op2);
43096 
43097 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
43098 }
43099 
43100 static zend_always_inline ZEND_OPCODE_HANDLER_RET zend_binary_assign_op_helper_SPEC_CV_TMPVAR(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
43101 {
43102 #if 1 && (IS_TMP_VAR|IS_VAR) == IS_UNUSED
43103 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_CV_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
43104 #else
43105 # if 0 || IS_CV != IS_UNUSED
43106 #  if 0
43107 	/* opline->extended_value checks are specialized, don't need opline */
43108 	USE_OPLINE
43109 #  endif
43110 
43111 	if (EXPECTED(1)) {
43112 		ZEND_VM_TAIL_CALL(zend_binary_assign_op_simple_helper_SPEC_CV_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
43113 	}
43114 	if (EXPECTED(0)) {
43115 		ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_CV_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
43116 	}
43117 # endif
43118 
43119 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_obj_helper_SPEC_CV_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
43120 #endif
43121 }
43122 
43123 static zend_always_inline ZEND_OPCODE_HANDLER_RET zend_binary_assign_op_helper_SPEC_CV_TMPVAR_DIM(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
43124 {
43125 #if 1 && (IS_TMP_VAR|IS_VAR) == IS_UNUSED
43126 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_CV_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
43127 #else
43128 # if 0 || IS_CV != IS_UNUSED
43129 #  if 0
43130 	/* opline->extended_value checks are specialized, don't need opline */
43131 	USE_OPLINE
43132 #  endif
43133 
43134 	if (EXPECTED(0)) {
43135 		ZEND_VM_TAIL_CALL(zend_binary_assign_op_simple_helper_SPEC_CV_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
43136 	}
43137 	if (EXPECTED(1)) {
43138 		ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_CV_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
43139 	}
43140 # endif
43141 
43142 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_obj_helper_SPEC_CV_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
43143 #endif
43144 }
43145 
43146 static zend_always_inline ZEND_OPCODE_HANDLER_RET zend_binary_assign_op_helper_SPEC_CV_TMPVAR_OBJ(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
43147 {
43148 #if 1 && (IS_TMP_VAR|IS_VAR) == IS_UNUSED
43149 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_CV_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
43150 #else
43151 # if 0 || IS_CV != IS_UNUSED
43152 #  if 0
43153 	/* opline->extended_value checks are specialized, don't need opline */
43154 	USE_OPLINE
43155 #  endif
43156 
43157 	if (EXPECTED(0)) {
43158 		ZEND_VM_TAIL_CALL(zend_binary_assign_op_simple_helper_SPEC_CV_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
43159 	}
43160 	if (EXPECTED(0)) {
43161 		ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_CV_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
43162 	}
43163 # endif
43164 
43165 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_obj_helper_SPEC_CV_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
43166 #endif
43167 }
43168 
43169 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_ADD_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
43170 {
43171 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR(add_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
43172 }
43173 
43174 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_ADD_SPEC_CV_TMPVAR_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
43175 {
43176 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR_DIM(add_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
43177 }
43178 
43179 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_ADD_SPEC_CV_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
43180 {
43181 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR_OBJ(add_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
43182 }
43183 
43184 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SUB_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
43185 {
43186 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR(sub_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
43187 }
43188 
43189 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SUB_SPEC_CV_TMPVAR_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
43190 {
43191 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR_DIM(sub_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
43192 }
43193 
43194 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SUB_SPEC_CV_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
43195 {
43196 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR_OBJ(sub_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
43197 }
43198 
43199 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MUL_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
43200 {
43201 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR(mul_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
43202 }
43203 
43204 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MUL_SPEC_CV_TMPVAR_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
43205 {
43206 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR_DIM(mul_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
43207 }
43208 
43209 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MUL_SPEC_CV_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
43210 {
43211 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR_OBJ(mul_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
43212 }
43213 
43214 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIV_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
43215 {
43216 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR(div_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
43217 }
43218 
43219 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIV_SPEC_CV_TMPVAR_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
43220 {
43221 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR_DIM(div_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
43222 }
43223 
43224 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIV_SPEC_CV_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
43225 {
43226 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR_OBJ(div_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
43227 }
43228 
43229 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MOD_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
43230 {
43231 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR(mod_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
43232 }
43233 
43234 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MOD_SPEC_CV_TMPVAR_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
43235 {
43236 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR_DIM(mod_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
43237 }
43238 
43239 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MOD_SPEC_CV_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
43240 {
43241 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR_OBJ(mod_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
43242 }
43243 
43244 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SL_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
43245 {
43246 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR(shift_left_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
43247 }
43248 
43249 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SL_SPEC_CV_TMPVAR_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
43250 {
43251 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR_DIM(shift_left_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
43252 }
43253 
43254 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SL_SPEC_CV_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
43255 {
43256 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR_OBJ(shift_left_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
43257 }
43258 
43259 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SR_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
43260 {
43261 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR(shift_right_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
43262 }
43263 
43264 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SR_SPEC_CV_TMPVAR_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
43265 {
43266 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR_DIM(shift_right_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
43267 }
43268 
43269 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SR_SPEC_CV_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
43270 {
43271 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR_OBJ(shift_right_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
43272 }
43273 
43274 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_CONCAT_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
43275 {
43276 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR(concat_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
43277 }
43278 
43279 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_CONCAT_SPEC_CV_TMPVAR_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
43280 {
43281 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR_DIM(concat_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
43282 }
43283 
43284 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_CONCAT_SPEC_CV_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
43285 {
43286 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR_OBJ(concat_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
43287 }
43288 
43289 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_OR_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
43290 {
43291 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR(bitwise_or_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
43292 }
43293 
43294 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_OR_SPEC_CV_TMPVAR_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
43295 {
43296 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR_DIM(bitwise_or_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
43297 }
43298 
43299 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_OR_SPEC_CV_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
43300 {
43301 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR_OBJ(bitwise_or_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
43302 }
43303 
43304 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_AND_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
43305 {
43306 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR(bitwise_and_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
43307 }
43308 
43309 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_AND_SPEC_CV_TMPVAR_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
43310 {
43311 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR_DIM(bitwise_and_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
43312 }
43313 
43314 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_AND_SPEC_CV_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
43315 {
43316 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR_OBJ(bitwise_and_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
43317 }
43318 
43319 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_XOR_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
43320 {
43321 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR(bitwise_xor_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
43322 }
43323 
43324 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_XOR_SPEC_CV_TMPVAR_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
43325 {
43326 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR_DIM(bitwise_xor_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
43327 }
43328 
43329 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_XOR_SPEC_CV_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
43330 {
43331 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR_OBJ(bitwise_xor_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
43332 }
43333 
43334 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_POW_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
43335 {
43336 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR(pow_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
43337 }
43338 
43339 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_POW_SPEC_CV_TMPVAR_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
43340 {
43341 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR_DIM(pow_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
43342 }
43343 
43344 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_POW_SPEC_CV_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
43345 {
43346 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR_OBJ(pow_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
43347 }
43348 
43349 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_pre_incdec_property_helper_SPEC_CV_TMPVAR(int inc ZEND_OPCODE_HANDLER_ARGS_DC)
43350 {
43351 	USE_OPLINE
43352 	zend_free_op free_op2;
43353 	zval *object;
43354 	zval *property;
43355 	zval *zptr;
43356 
43357 	SAVE_OPLINE();
43358 	object = _get_zval_ptr_cv_BP_VAR_RW(opline->op1.var EXECUTE_DATA_CC);
43359 
43360 	if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
43361 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
43362 	}
43363 
43364 	property = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
43365 
43366 	do {
43367 		if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
43368 			if (Z_ISREF_P(object)) {
43369 				object = Z_REFVAL_P(object);
43370 				if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
43371 					goto pre_incdec_object;
43372 				}
43373 			}
43374 			if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
43375 				break;
43376 			}
43377 		}
43378 
43379 		/* here we are sure we are dealing with an object */
43380 pre_incdec_object:
43381 		if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
43382 			&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL))) != NULL)) {
43383 			if (UNEXPECTED(Z_ISERROR_P(zptr))) {
43384 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
43385 					ZVAL_NULL(EX_VAR(opline->result.var));
43386 				}
43387 			} else {
43388 				if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
43389 					if (inc) {
43390 						fast_long_increment_function(zptr);
43391 					} else {
43392 						fast_long_decrement_function(zptr);
43393 					}
43394 				} else {
43395 					ZVAL_DEREF(zptr);
43396 
43397 					if (inc) {
43398 						increment_function(zptr);
43399 					} else {
43400 						decrement_function(zptr);
43401 					}
43402 				}
43403 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
43404 					ZVAL_COPY(EX_VAR(opline->result.var), zptr);
43405 				}
43406 			}
43407 		} else {
43408 			zend_pre_incdec_overloaded_property(object, property, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), inc OPLINE_CC EXECUTE_DATA_CC);
43409 		}
43410 	} while (0);
43411 
43412 	zval_ptr_dtor_nogc(free_op2);
43413 
43414 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
43415 }
43416 
43417 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_INC_OBJ_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
43418 {
43419 	ZEND_VM_TAIL_CALL(zend_pre_incdec_property_helper_SPEC_CV_TMPVAR(1 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
43420 }
43421 
43422 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_DEC_OBJ_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
43423 {
43424 	ZEND_VM_TAIL_CALL(zend_pre_incdec_property_helper_SPEC_CV_TMPVAR(0 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
43425 }
43426 
43427 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_post_incdec_property_helper_SPEC_CV_TMPVAR(int inc ZEND_OPCODE_HANDLER_ARGS_DC)
43428 {
43429 	USE_OPLINE
43430 	zend_free_op free_op2;
43431 	zval *object;
43432 	zval *property;
43433 	zval *zptr;
43434 
43435 	SAVE_OPLINE();
43436 	object = _get_zval_ptr_cv_BP_VAR_RW(opline->op1.var EXECUTE_DATA_CC);
43437 
43438 	if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
43439 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
43440 	}
43441 
43442 	property = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
43443 
43444 	do {
43445 		if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
43446 			if (Z_ISREF_P(object)) {
43447 				object = Z_REFVAL_P(object);
43448 				if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
43449 					goto post_incdec_object;
43450 				}
43451 			}
43452 			if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
43453 				break;
43454 			}
43455 		}
43456 
43457 		/* here we are sure we are dealing with an object */
43458 post_incdec_object:
43459 		if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
43460 			&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL))) != NULL)) {
43461 			if (UNEXPECTED(Z_ISERROR_P(zptr))) {
43462 				ZVAL_NULL(EX_VAR(opline->result.var));
43463 			} else {
43464 				if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
43465 					ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(zptr));
43466 					if (inc) {
43467 						fast_long_increment_function(zptr);
43468 					} else {
43469 						fast_long_decrement_function(zptr);
43470 					}
43471 				} else {
43472 					ZVAL_DEREF(zptr);
43473 					ZVAL_COPY(EX_VAR(opline->result.var), zptr);
43474 					if (inc) {
43475 						increment_function(zptr);
43476 					} else {
43477 						decrement_function(zptr);
43478 					}
43479 				}
43480 			}
43481 		} else {
43482 			zend_post_incdec_overloaded_property(object, property, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), inc OPLINE_CC EXECUTE_DATA_CC);
43483 		}
43484 	} while (0);
43485 
43486 	zval_ptr_dtor_nogc(free_op2);
43487 
43488 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
43489 }
43490 
43491 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_POST_INC_OBJ_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
43492 {
43493 	ZEND_VM_TAIL_CALL(zend_post_incdec_property_helper_SPEC_CV_TMPVAR(1 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
43494 }
43495 
43496 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_POST_DEC_OBJ_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
43497 {
43498 	ZEND_VM_TAIL_CALL(zend_post_incdec_property_helper_SPEC_CV_TMPVAR(0 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
43499 }
43500 
43501 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_R_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
43502 {
43503 	USE_OPLINE
43504 	zend_free_op free_op2;
43505 	zval *container, *dim, *value, *result;
43506 
43507 	SAVE_OPLINE();
43508 	container = EX_VAR(opline->op1.var);
43509 	dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
43510 	if (IS_CV != IS_CONST) {
43511 		if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
43512 fetch_dim_r_array:
43513 			value = zend_fetch_dimension_address_inner(Z_ARRVAL_P(container), dim, (IS_TMP_VAR|IS_VAR), BP_VAR_R EXECUTE_DATA_CC);
43514 			result = EX_VAR(opline->result.var);
43515 			ZVAL_COPY_DEREF(result, value);
43516 		} else if (EXPECTED(Z_TYPE_P(container) == IS_REFERENCE)) {
43517 			container = Z_REFVAL_P(container);
43518 			if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
43519 				goto fetch_dim_r_array;
43520 			} else {
43521 				goto fetch_dim_r_slow;
43522 			}
43523 		} else {
43524 fetch_dim_r_slow:
43525 			if ((IS_TMP_VAR|IS_VAR) == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
43526 				dim++;
43527 			}
43528 			zend_fetch_dimension_address_read_R_slow(container, dim OPLINE_CC EXECUTE_DATA_CC);
43529 		}
43530 	} else {
43531 		zend_fetch_dimension_address_read_R(container, dim, (IS_TMP_VAR|IS_VAR) OPLINE_CC EXECUTE_DATA_CC);
43532 	}
43533 	zval_ptr_dtor_nogc(free_op2);
43534 
43535 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
43536 }
43537 
43538 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_W_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
43539 {
43540 	USE_OPLINE
43541 	zend_free_op free_op1, free_op2;
43542 	zval *container;
43543 
43544 	SAVE_OPLINE();
43545 	container = EX_VAR(opline->op1.var);
43546 	zend_fetch_dimension_address_W(container, _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC), (IS_TMP_VAR|IS_VAR) OPLINE_CC EXECUTE_DATA_CC);
43547 	zval_ptr_dtor_nogc(free_op2);
43548 	if (IS_CV == IS_VAR) {
43549 		zval *result = EX_VAR(opline->result.var);
43550 		FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(free_op1, result);
43551 	}
43552 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
43553 }
43554 
43555 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_RW_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
43556 {
43557 	USE_OPLINE
43558 	zend_free_op free_op1, free_op2;
43559 	zval *container;
43560 
43561 	SAVE_OPLINE();
43562 	container = EX_VAR(opline->op1.var);
43563 	zend_fetch_dimension_address_RW(container, _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC), (IS_TMP_VAR|IS_VAR) OPLINE_CC EXECUTE_DATA_CC);
43564 	zval_ptr_dtor_nogc(free_op2);
43565 	if (IS_CV == IS_VAR) {
43566 		zval *result = EX_VAR(opline->result.var);
43567 		FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(free_op1, result);
43568 	}
43569 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
43570 }
43571 
43572 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_IS_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
43573 {
43574 	USE_OPLINE
43575 	zend_free_op free_op2;
43576 	zval *container;
43577 
43578 	SAVE_OPLINE();
43579 	container = EX_VAR(opline->op1.var);
43580 	zend_fetch_dimension_address_read_IS(container, _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC), (IS_TMP_VAR|IS_VAR) OPLINE_CC EXECUTE_DATA_CC);
43581 	zval_ptr_dtor_nogc(free_op2);
43582 
43583 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
43584 }
43585 
43586 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
43587 {
43588 	if (UNEXPECTED(ZEND_CALL_INFO(EX(call)) & ZEND_CALL_SEND_ARG_BY_REF)) {
43589         if ((IS_CV & (IS_CONST|IS_TMP_VAR))) {
43590 			ZEND_VM_TAIL_CALL(zend_use_tmp_in_write_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
43591         }
43592 		ZEND_VM_TAIL_CALL(ZEND_FETCH_DIM_W_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
43593 	} else {
43594 		if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) {
43595 			ZEND_VM_TAIL_CALL(zend_use_undef_in_read_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
43596 		}
43597 		ZEND_VM_TAIL_CALL(ZEND_FETCH_DIM_R_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
43598 	}
43599 }
43600 
43601 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_UNSET_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
43602 {
43603 	USE_OPLINE
43604 	zend_free_op free_op1, free_op2;
43605 	zval *container;
43606 
43607 	SAVE_OPLINE();
43608 	container = EX_VAR(opline->op1.var);
43609 	zend_fetch_dimension_address_UNSET(container, _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC), (IS_TMP_VAR|IS_VAR) OPLINE_CC EXECUTE_DATA_CC);
43610 	zval_ptr_dtor_nogc(free_op2);
43611 	if (IS_CV == IS_VAR) {
43612 		zval *result = EX_VAR(opline->result.var);
43613 		FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(free_op1, result);
43614 	}
43615 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
43616 }
43617 
43618 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_R_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
43619 {
43620 	USE_OPLINE
43621 
43622 	zval *container;
43623 	zend_free_op free_op2;
43624 	zval *offset;
43625 	void **cache_slot = NULL;
43626 
43627 	SAVE_OPLINE();
43628 	container = EX_VAR(opline->op1.var);
43629 
43630 	if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
43631 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
43632 	}
43633 
43634 	offset = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
43635 
43636 	if (IS_CV == IS_CONST ||
43637 	    (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
43638 	    do {
43639 			if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
43640 				container = Z_REFVAL_P(container);
43641 				if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
43642 					break;
43643 				}
43644 			}
43645 			if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
43646 				GET_OP1_UNDEF_CV(container, BP_VAR_R);
43647 			}
43648 			if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(offset) == IS_UNDEF)) {
43649 				GET_OP2_UNDEF_CV(offset, BP_VAR_R);
43650 			}
43651 			goto fetch_obj_r_no_object;
43652 		} while (0);
43653 	}
43654 
43655 	/* here we are sure we are dealing with an object */
43656 	do {
43657 		zend_object *zobj = Z_OBJ_P(container);
43658 		zval *retval;
43659 
43660 		if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
43661 			cache_slot = CACHE_ADDR(opline->extended_value);
43662 
43663 			if (EXPECTED(zobj->ce == CACHED_PTR_EX(cache_slot))) {
43664 				uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
43665 
43666 				if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
43667 					retval = OBJ_PROP(zobj, prop_offset);
43668 					if (EXPECTED(Z_TYPE_INFO_P(retval) != IS_UNDEF)) {
43669 						ZVAL_COPY_DEREF(EX_VAR(opline->result.var), retval);
43670 						break;
43671 					}
43672 				} else if (EXPECTED(zobj->properties != NULL)) {
43673 					if (!IS_UNKNOWN_DYNAMIC_PROPERTY_OFFSET(prop_offset)) {
43674 						uintptr_t idx = ZEND_DECODE_DYN_PROP_OFFSET(prop_offset);
43675 
43676 						if (EXPECTED(idx < zobj->properties->nNumUsed * sizeof(Bucket))) {
43677 							Bucket *p = (Bucket*)((char*)zobj->properties->arData + idx);
43678 
43679 							if (EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
43680 						        (EXPECTED(p->key == Z_STR_P(offset)) ||
43681 						         (EXPECTED(p->h == ZSTR_H(Z_STR_P(offset))) &&
43682 						          EXPECTED(p->key != NULL) &&
43683 						          EXPECTED(zend_string_equal_content(p->key, Z_STR_P(offset)))))) {
43684 								ZVAL_COPY_DEREF(EX_VAR(opline->result.var), &p->val);
43685 								break;
43686 							}
43687 						}
43688 						CACHE_PTR_EX(cache_slot + 1, (void*)ZEND_DYNAMIC_PROPERTY_OFFSET);
43689 					}
43690 					retval = zend_hash_find_ex(zobj->properties, Z_STR_P(offset), 1);
43691 					if (EXPECTED(retval)) {
43692 						uintptr_t idx = (char*)retval - (char*)zobj->properties->arData;
43693 						CACHE_PTR_EX(cache_slot + 1, (void*)ZEND_ENCODE_DYN_PROP_OFFSET(idx));
43694 						ZVAL_COPY_DEREF(EX_VAR(opline->result.var), retval);
43695 						break;
43696 					}
43697 				}
43698 			}
43699 		} else if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(offset) == IS_UNDEF)) {
43700 			GET_OP2_UNDEF_CV(offset, BP_VAR_R);
43701 		}
43702 
43703 		if (UNEXPECTED(zobj->handlers->read_property == NULL)) {
43704 fetch_obj_r_no_object:
43705 			zend_wrong_property_read(offset);
43706 			ZVAL_NULL(EX_VAR(opline->result.var));
43707 		} else {
43708 			retval = zobj->handlers->read_property(container, offset, BP_VAR_R, cache_slot, EX_VAR(opline->result.var));
43709 
43710 			if (retval != EX_VAR(opline->result.var)) {
43711 				ZVAL_COPY_DEREF(EX_VAR(opline->result.var), retval);
43712 			} else if (UNEXPECTED(Z_ISREF_P(retval))) {
43713 				zend_unwrap_reference(retval);
43714 			}
43715 		}
43716 	} while (0);
43717 
43718 	zval_ptr_dtor_nogc(free_op2);
43719 
43720 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
43721 }
43722 
43723 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_W_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
43724 {
43725 	USE_OPLINE
43726 	zend_free_op free_op1, free_op2;
43727 	zval *property, *container, *result;
43728 
43729 	SAVE_OPLINE();
43730 
43731 	container = EX_VAR(opline->op1.var);
43732 	if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
43733 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
43734 	}
43735 
43736 	property = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
43737 	result = EX_VAR(opline->result.var);
43738 	zend_fetch_property_address(result, container, IS_CV, property, (IS_TMP_VAR|IS_VAR), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_W OPLINE_CC);
43739 	zval_ptr_dtor_nogc(free_op2);
43740 	if (IS_CV == IS_VAR) {
43741 		FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(free_op1, result);
43742 	}
43743 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
43744 }
43745 
43746 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_RW_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
43747 {
43748 	USE_OPLINE
43749 	zend_free_op free_op1, free_op2;
43750 	zval *property, *container, *result;
43751 
43752 	SAVE_OPLINE();
43753 	container = _get_zval_ptr_cv_BP_VAR_RW(opline->op1.var EXECUTE_DATA_CC);
43754 
43755 	if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
43756 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
43757 	}
43758 	property = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
43759 	result = EX_VAR(opline->result.var);
43760 	zend_fetch_property_address(result, container, IS_CV, property, (IS_TMP_VAR|IS_VAR), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_RW OPLINE_CC);
43761 	zval_ptr_dtor_nogc(free_op2);
43762 	if (IS_CV == IS_VAR) {
43763 		FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(free_op1, result);
43764 	}
43765 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
43766 }
43767 
43768 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_IS_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
43769 {
43770 	USE_OPLINE
43771 
43772 	zval *container;
43773 	zend_free_op free_op2;
43774 	zval *offset;
43775 	void **cache_slot = NULL;
43776 
43777 	SAVE_OPLINE();
43778 	container = _get_zval_ptr_cv_BP_VAR_IS(opline->op1.var EXECUTE_DATA_CC);
43779 
43780 	if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
43781 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
43782 	}
43783 
43784 	offset = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
43785 
43786 	if (IS_CV == IS_CONST ||
43787 	    (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
43788 		do {
43789 			if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
43790 				container = Z_REFVAL_P(container);
43791 				if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
43792 					break;
43793 				}
43794 			}
43795 			goto fetch_obj_is_no_object;
43796 		} while (0);
43797 	}
43798 
43799 	/* here we are sure we are dealing with an object */
43800 	do {
43801 		zend_object *zobj = Z_OBJ_P(container);
43802 		zval *retval;
43803 
43804 		if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
43805 			cache_slot = CACHE_ADDR(opline->extended_value);
43806 
43807 			if (EXPECTED(zobj->ce == CACHED_PTR_EX(cache_slot))) {
43808 				uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
43809 
43810 				if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
43811 					retval = OBJ_PROP(zobj, prop_offset);
43812 					if (EXPECTED(Z_TYPE_P(retval) != IS_UNDEF)) {
43813 						ZVAL_COPY(EX_VAR(opline->result.var), retval);
43814 						break;
43815 					}
43816 				} else if (EXPECTED(zobj->properties != NULL)) {
43817 					if (!IS_UNKNOWN_DYNAMIC_PROPERTY_OFFSET(prop_offset)) {
43818 						uintptr_t idx = ZEND_DECODE_DYN_PROP_OFFSET(prop_offset);
43819 
43820 						if (EXPECTED(idx < zobj->properties->nNumUsed * sizeof(Bucket))) {
43821 							Bucket *p = (Bucket*)((char*)zobj->properties->arData + idx);
43822 
43823 							if (EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
43824 						        (EXPECTED(p->key == Z_STR_P(offset)) ||
43825 						         (EXPECTED(p->h == ZSTR_H(Z_STR_P(offset))) &&
43826 						          EXPECTED(p->key != NULL) &&
43827 						          EXPECTED(zend_string_equal_content(p->key, Z_STR_P(offset)))))) {
43828 								ZVAL_COPY(EX_VAR(opline->result.var), &p->val);
43829 								break;
43830 							}
43831 						}
43832 						CACHE_PTR_EX(cache_slot + 1, (void*)ZEND_DYNAMIC_PROPERTY_OFFSET);
43833 					}
43834 					retval = zend_hash_find_ex(zobj->properties, Z_STR_P(offset), 1);
43835 					if (EXPECTED(retval)) {
43836 						uintptr_t idx = (char*)retval - (char*)zobj->properties->arData;
43837 						CACHE_PTR_EX(cache_slot + 1, (void*)ZEND_ENCODE_DYN_PROP_OFFSET(idx));
43838 						ZVAL_COPY(EX_VAR(opline->result.var), retval);
43839 						break;
43840 					}
43841 				}
43842 			}
43843 		}
43844 
43845 		if (UNEXPECTED(zobj->handlers->read_property == NULL)) {
43846 fetch_obj_is_no_object:
43847 			ZVAL_NULL(EX_VAR(opline->result.var));
43848 		} else {
43849 
43850 			retval = zobj->handlers->read_property(container, offset, BP_VAR_IS, cache_slot, EX_VAR(opline->result.var));
43851 
43852 			if (retval != EX_VAR(opline->result.var)) {
43853 				ZVAL_COPY(EX_VAR(opline->result.var), retval);
43854 			}
43855 		}
43856 	} while (0);
43857 
43858 	zval_ptr_dtor_nogc(free_op2);
43859 
43860 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
43861 }
43862 
43863 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
43864 {
43865 	if (UNEXPECTED(ZEND_CALL_INFO(EX(call)) & ZEND_CALL_SEND_ARG_BY_REF)) {
43866 		/* Behave like FETCH_OBJ_W */
43867 		if ((IS_CV & (IS_CONST|IS_TMP_VAR))) {
43868 			ZEND_VM_TAIL_CALL(zend_use_tmp_in_write_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
43869 		}
43870 
43871 		ZEND_VM_TAIL_CALL(ZEND_FETCH_OBJ_W_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
43872 	} else {
43873 		ZEND_VM_TAIL_CALL(ZEND_FETCH_OBJ_R_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
43874 	}
43875 }
43876 
43877 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_UNSET_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
43878 {
43879 	USE_OPLINE
43880 	zend_free_op free_op1, free_op2;
43881 	zval *container, *property, *result;
43882 
43883 	SAVE_OPLINE();
43884 	container = _get_zval_ptr_cv_BP_VAR_UNSET(opline->op1.var EXECUTE_DATA_CC);
43885 
43886 	if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
43887 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
43888 	}
43889 
43890 	property = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
43891 	result = EX_VAR(opline->result.var);
43892 	zend_fetch_property_address(result, container, IS_CV, property, (IS_TMP_VAR|IS_VAR), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_UNSET OPLINE_CC);
43893 	zval_ptr_dtor_nogc(free_op2);
43894 	if (IS_CV == IS_VAR) {
43895 		FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(free_op1, result);
43896 	}
43897 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
43898 }
43899 
43900 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_CV_TMPVAR_OP_DATA_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
43901 {
43902 	USE_OPLINE
43903 	zend_free_op free_op2;
43904 	zval *object, *property, *value, tmp;
43905 
43906 	SAVE_OPLINE();
43907 	object = EX_VAR(opline->op1.var);
43908 
43909 	if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
43910 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
43911 	}
43912 
43913 	property = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
43914 	value = RT_CONSTANT((opline+1), (opline+1)->op1);
43915 
43916 	if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
43917 		if (Z_ISREF_P(object)) {
43918 			object = Z_REFVAL_P(object);
43919 			if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
43920 				goto assign_object;
43921 			}
43922 		}
43923 		if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
43924 
43925 			goto exit_assign_obj;
43926 		}
43927 	}
43928 
43929 assign_object:
43930 	if ((IS_TMP_VAR|IS_VAR) == IS_CONST &&
43931 	    EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(opline->extended_value))) {
43932 		uintptr_t prop_offset = (uintptr_t)CACHED_PTR(opline->extended_value + sizeof(void*));
43933 		zend_object *zobj = Z_OBJ_P(object);
43934 		zval *property_val;
43935 
43936 		if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
43937 			property_val = OBJ_PROP(zobj, prop_offset);
43938 			if (Z_TYPE_P(property_val) != IS_UNDEF) {
43939 fast_assign_obj:
43940 				value = zend_assign_to_variable(property_val, value, IS_CONST);
43941 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
43942 					ZVAL_COPY(EX_VAR(opline->result.var), value);
43943 				}
43944 				goto exit_assign_obj;
43945 			}
43946 		} else {
43947 			if (EXPECTED(zobj->properties != NULL)) {
43948 				if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
43949 					if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
43950 						GC_DELREF(zobj->properties);
43951 					}
43952 					zobj->properties = zend_array_dup(zobj->properties);
43953 				}
43954 				property_val = zend_hash_find_ex(zobj->properties, Z_STR_P(property), 1);
43955 				if (property_val) {
43956 					goto fast_assign_obj;
43957 				}
43958 			}
43959 
43960 			if (!zobj->ce->__set) {
43961 
43962 				if (EXPECTED(zobj->properties == NULL)) {
43963 					rebuild_object_properties(zobj);
43964 				}
43965 				if (IS_CONST == IS_CONST) {
43966 					if (UNEXPECTED(Z_OPT_REFCOUNTED_P(value))) {
43967 						Z_ADDREF_P(value);
43968 					}
43969 				} else if (IS_CONST != IS_TMP_VAR) {
43970 					if (Z_ISREF_P(value)) {
43971 						if (IS_CONST == IS_VAR) {
43972 							zend_reference *ref = Z_REF_P(value);
43973 							if (GC_DELREF(ref) == 0) {
43974 								ZVAL_COPY_VALUE(&tmp, Z_REFVAL_P(value));
43975 								efree_size(ref, sizeof(zend_reference));
43976 								value = &tmp;
43977 							} else {
43978 								value = Z_REFVAL_P(value);
43979 								Z_TRY_ADDREF_P(value);
43980 							}
43981 						} else {
43982 							value = Z_REFVAL_P(value);
43983 							Z_TRY_ADDREF_P(value);
43984 						}
43985 					} else if (IS_CONST == IS_CV) {
43986 						Z_TRY_ADDREF_P(value);
43987 					}
43988 				}
43989 				zend_hash_add_new(zobj->properties, Z_STR_P(property), value);
43990 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
43991 					ZVAL_COPY(EX_VAR(opline->result.var), value);
43992 				}
43993 				goto exit_assign_obj;
43994 			}
43995 		}
43996 	}
43997 
43998 	if (!Z_OBJ_HT_P(object)->write_property) {
43999 		zend_wrong_property_assignment(property OPLINE_CC EXECUTE_DATA_CC);
44000 
44001 		goto exit_assign_obj;
44002 	}
44003 
44004 	if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
44005 		ZVAL_DEREF(value);
44006 	}
44007 
44008 	Z_OBJ_HT_P(object)->write_property(object, property, value, ((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
44009 
44010 	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
44011 		ZVAL_COPY(EX_VAR(opline->result.var), value);
44012 	}
44013 
44014 exit_assign_obj:
44015 	zval_ptr_dtor_nogc(free_op2);
44016 
44017 	/* assign_obj has two opcodes! */
44018 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
44019 }
44020 
44021 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_CV_TMPVAR_OP_DATA_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
44022 {
44023 	USE_OPLINE
44024 	zend_free_op free_op2, free_op_data;
44025 	zval *object, *property, *value, tmp;
44026 
44027 	SAVE_OPLINE();
44028 	object = EX_VAR(opline->op1.var);
44029 
44030 	if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
44031 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
44032 	}
44033 
44034 	property = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
44035 	value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
44036 
44037 	if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
44038 		if (Z_ISREF_P(object)) {
44039 			object = Z_REFVAL_P(object);
44040 			if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
44041 				goto assign_object;
44042 			}
44043 		}
44044 		if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
44045 			zval_ptr_dtor_nogc(free_op_data);
44046 			goto exit_assign_obj;
44047 		}
44048 	}
44049 
44050 assign_object:
44051 	if ((IS_TMP_VAR|IS_VAR) == IS_CONST &&
44052 	    EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(opline->extended_value))) {
44053 		uintptr_t prop_offset = (uintptr_t)CACHED_PTR(opline->extended_value + sizeof(void*));
44054 		zend_object *zobj = Z_OBJ_P(object);
44055 		zval *property_val;
44056 
44057 		if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
44058 			property_val = OBJ_PROP(zobj, prop_offset);
44059 			if (Z_TYPE_P(property_val) != IS_UNDEF) {
44060 fast_assign_obj:
44061 				value = zend_assign_to_variable(property_val, value, IS_TMP_VAR);
44062 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
44063 					ZVAL_COPY(EX_VAR(opline->result.var), value);
44064 				}
44065 				goto exit_assign_obj;
44066 			}
44067 		} else {
44068 			if (EXPECTED(zobj->properties != NULL)) {
44069 				if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
44070 					if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
44071 						GC_DELREF(zobj->properties);
44072 					}
44073 					zobj->properties = zend_array_dup(zobj->properties);
44074 				}
44075 				property_val = zend_hash_find_ex(zobj->properties, Z_STR_P(property), 1);
44076 				if (property_val) {
44077 					goto fast_assign_obj;
44078 				}
44079 			}
44080 
44081 			if (!zobj->ce->__set) {
44082 
44083 				if (EXPECTED(zobj->properties == NULL)) {
44084 					rebuild_object_properties(zobj);
44085 				}
44086 				if (IS_TMP_VAR == IS_CONST) {
44087 					if (UNEXPECTED(Z_OPT_REFCOUNTED_P(value))) {
44088 						Z_ADDREF_P(value);
44089 					}
44090 				} else if (IS_TMP_VAR != IS_TMP_VAR) {
44091 					if (Z_ISREF_P(value)) {
44092 						if (IS_TMP_VAR == IS_VAR) {
44093 							zend_reference *ref = Z_REF_P(value);
44094 							if (GC_DELREF(ref) == 0) {
44095 								ZVAL_COPY_VALUE(&tmp, Z_REFVAL_P(value));
44096 								efree_size(ref, sizeof(zend_reference));
44097 								value = &tmp;
44098 							} else {
44099 								value = Z_REFVAL_P(value);
44100 								Z_TRY_ADDREF_P(value);
44101 							}
44102 						} else {
44103 							value = Z_REFVAL_P(value);
44104 							Z_TRY_ADDREF_P(value);
44105 						}
44106 					} else if (IS_TMP_VAR == IS_CV) {
44107 						Z_TRY_ADDREF_P(value);
44108 					}
44109 				}
44110 				zend_hash_add_new(zobj->properties, Z_STR_P(property), value);
44111 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
44112 					ZVAL_COPY(EX_VAR(opline->result.var), value);
44113 				}
44114 				goto exit_assign_obj;
44115 			}
44116 		}
44117 	}
44118 
44119 	if (!Z_OBJ_HT_P(object)->write_property) {
44120 		zend_wrong_property_assignment(property OPLINE_CC EXECUTE_DATA_CC);
44121 		zval_ptr_dtor_nogc(free_op_data);
44122 		goto exit_assign_obj;
44123 	}
44124 
44125 	if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
44126 		ZVAL_DEREF(value);
44127 	}
44128 
44129 	Z_OBJ_HT_P(object)->write_property(object, property, value, ((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
44130 
44131 	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
44132 		ZVAL_COPY(EX_VAR(opline->result.var), value);
44133 	}
44134 	zval_ptr_dtor_nogc(free_op_data);
44135 exit_assign_obj:
44136 	zval_ptr_dtor_nogc(free_op2);
44137 
44138 	/* assign_obj has two opcodes! */
44139 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
44140 }
44141 
44142 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_CV_TMPVAR_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
44143 {
44144 	USE_OPLINE
44145 	zend_free_op free_op2, free_op_data;
44146 	zval *object, *property, *value, tmp;
44147 
44148 	SAVE_OPLINE();
44149 	object = EX_VAR(opline->op1.var);
44150 
44151 	if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
44152 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
44153 	}
44154 
44155 	property = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
44156 	value = _get_zval_ptr_var((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
44157 
44158 	if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
44159 		if (Z_ISREF_P(object)) {
44160 			object = Z_REFVAL_P(object);
44161 			if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
44162 				goto assign_object;
44163 			}
44164 		}
44165 		if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
44166 			zval_ptr_dtor_nogc(free_op_data);
44167 			goto exit_assign_obj;
44168 		}
44169 	}
44170 
44171 assign_object:
44172 	if ((IS_TMP_VAR|IS_VAR) == IS_CONST &&
44173 	    EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(opline->extended_value))) {
44174 		uintptr_t prop_offset = (uintptr_t)CACHED_PTR(opline->extended_value + sizeof(void*));
44175 		zend_object *zobj = Z_OBJ_P(object);
44176 		zval *property_val;
44177 
44178 		if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
44179 			property_val = OBJ_PROP(zobj, prop_offset);
44180 			if (Z_TYPE_P(property_val) != IS_UNDEF) {
44181 fast_assign_obj:
44182 				value = zend_assign_to_variable(property_val, value, IS_VAR);
44183 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
44184 					ZVAL_COPY(EX_VAR(opline->result.var), value);
44185 				}
44186 				goto exit_assign_obj;
44187 			}
44188 		} else {
44189 			if (EXPECTED(zobj->properties != NULL)) {
44190 				if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
44191 					if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
44192 						GC_DELREF(zobj->properties);
44193 					}
44194 					zobj->properties = zend_array_dup(zobj->properties);
44195 				}
44196 				property_val = zend_hash_find_ex(zobj->properties, Z_STR_P(property), 1);
44197 				if (property_val) {
44198 					goto fast_assign_obj;
44199 				}
44200 			}
44201 
44202 			if (!zobj->ce->__set) {
44203 
44204 				if (EXPECTED(zobj->properties == NULL)) {
44205 					rebuild_object_properties(zobj);
44206 				}
44207 				if (IS_VAR == IS_CONST) {
44208 					if (UNEXPECTED(Z_OPT_REFCOUNTED_P(value))) {
44209 						Z_ADDREF_P(value);
44210 					}
44211 				} else if (IS_VAR != IS_TMP_VAR) {
44212 					if (Z_ISREF_P(value)) {
44213 						if (IS_VAR == IS_VAR) {
44214 							zend_reference *ref = Z_REF_P(value);
44215 							if (GC_DELREF(ref) == 0) {
44216 								ZVAL_COPY_VALUE(&tmp, Z_REFVAL_P(value));
44217 								efree_size(ref, sizeof(zend_reference));
44218 								value = &tmp;
44219 							} else {
44220 								value = Z_REFVAL_P(value);
44221 								Z_TRY_ADDREF_P(value);
44222 							}
44223 						} else {
44224 							value = Z_REFVAL_P(value);
44225 							Z_TRY_ADDREF_P(value);
44226 						}
44227 					} else if (IS_VAR == IS_CV) {
44228 						Z_TRY_ADDREF_P(value);
44229 					}
44230 				}
44231 				zend_hash_add_new(zobj->properties, Z_STR_P(property), value);
44232 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
44233 					ZVAL_COPY(EX_VAR(opline->result.var), value);
44234 				}
44235 				goto exit_assign_obj;
44236 			}
44237 		}
44238 	}
44239 
44240 	if (!Z_OBJ_HT_P(object)->write_property) {
44241 		zend_wrong_property_assignment(property OPLINE_CC EXECUTE_DATA_CC);
44242 		zval_ptr_dtor_nogc(free_op_data);
44243 		goto exit_assign_obj;
44244 	}
44245 
44246 	if (IS_VAR == IS_CV || IS_VAR == IS_VAR) {
44247 		ZVAL_DEREF(value);
44248 	}
44249 
44250 	Z_OBJ_HT_P(object)->write_property(object, property, value, ((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
44251 
44252 	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
44253 		ZVAL_COPY(EX_VAR(opline->result.var), value);
44254 	}
44255 	zval_ptr_dtor_nogc(free_op_data);
44256 exit_assign_obj:
44257 	zval_ptr_dtor_nogc(free_op2);
44258 
44259 	/* assign_obj has two opcodes! */
44260 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
44261 }
44262 
44263 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_CV_TMPVAR_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
44264 {
44265 	USE_OPLINE
44266 	zend_free_op free_op2;
44267 	zval *object, *property, *value, tmp;
44268 
44269 	SAVE_OPLINE();
44270 	object = EX_VAR(opline->op1.var);
44271 
44272 	if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
44273 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
44274 	}
44275 
44276 	property = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
44277 	value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
44278 
44279 	if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
44280 		if (Z_ISREF_P(object)) {
44281 			object = Z_REFVAL_P(object);
44282 			if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
44283 				goto assign_object;
44284 			}
44285 		}
44286 		if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
44287 
44288 			goto exit_assign_obj;
44289 		}
44290 	}
44291 
44292 assign_object:
44293 	if ((IS_TMP_VAR|IS_VAR) == IS_CONST &&
44294 	    EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(opline->extended_value))) {
44295 		uintptr_t prop_offset = (uintptr_t)CACHED_PTR(opline->extended_value + sizeof(void*));
44296 		zend_object *zobj = Z_OBJ_P(object);
44297 		zval *property_val;
44298 
44299 		if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
44300 			property_val = OBJ_PROP(zobj, prop_offset);
44301 			if (Z_TYPE_P(property_val) != IS_UNDEF) {
44302 fast_assign_obj:
44303 				value = zend_assign_to_variable(property_val, value, IS_CV);
44304 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
44305 					ZVAL_COPY(EX_VAR(opline->result.var), value);
44306 				}
44307 				goto exit_assign_obj;
44308 			}
44309 		} else {
44310 			if (EXPECTED(zobj->properties != NULL)) {
44311 				if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
44312 					if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
44313 						GC_DELREF(zobj->properties);
44314 					}
44315 					zobj->properties = zend_array_dup(zobj->properties);
44316 				}
44317 				property_val = zend_hash_find_ex(zobj->properties, Z_STR_P(property), 1);
44318 				if (property_val) {
44319 					goto fast_assign_obj;
44320 				}
44321 			}
44322 
44323 			if (!zobj->ce->__set) {
44324 
44325 				if (EXPECTED(zobj->properties == NULL)) {
44326 					rebuild_object_properties(zobj);
44327 				}
44328 				if (IS_CV == IS_CONST) {
44329 					if (UNEXPECTED(Z_OPT_REFCOUNTED_P(value))) {
44330 						Z_ADDREF_P(value);
44331 					}
44332 				} else if (IS_CV != IS_TMP_VAR) {
44333 					if (Z_ISREF_P(value)) {
44334 						if (IS_CV == IS_VAR) {
44335 							zend_reference *ref = Z_REF_P(value);
44336 							if (GC_DELREF(ref) == 0) {
44337 								ZVAL_COPY_VALUE(&tmp, Z_REFVAL_P(value));
44338 								efree_size(ref, sizeof(zend_reference));
44339 								value = &tmp;
44340 							} else {
44341 								value = Z_REFVAL_P(value);
44342 								Z_TRY_ADDREF_P(value);
44343 							}
44344 						} else {
44345 							value = Z_REFVAL_P(value);
44346 							Z_TRY_ADDREF_P(value);
44347 						}
44348 					} else if (IS_CV == IS_CV) {
44349 						Z_TRY_ADDREF_P(value);
44350 					}
44351 				}
44352 				zend_hash_add_new(zobj->properties, Z_STR_P(property), value);
44353 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
44354 					ZVAL_COPY(EX_VAR(opline->result.var), value);
44355 				}
44356 				goto exit_assign_obj;
44357 			}
44358 		}
44359 	}
44360 
44361 	if (!Z_OBJ_HT_P(object)->write_property) {
44362 		zend_wrong_property_assignment(property OPLINE_CC EXECUTE_DATA_CC);
44363 
44364 		goto exit_assign_obj;
44365 	}
44366 
44367 	if (IS_CV == IS_CV || IS_CV == IS_VAR) {
44368 		ZVAL_DEREF(value);
44369 	}
44370 
44371 	Z_OBJ_HT_P(object)->write_property(object, property, value, ((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
44372 
44373 	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
44374 		ZVAL_COPY(EX_VAR(opline->result.var), value);
44375 	}
44376 
44377 exit_assign_obj:
44378 	zval_ptr_dtor_nogc(free_op2);
44379 
44380 	/* assign_obj has two opcodes! */
44381 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
44382 }
44383 
44384 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_CV_TMPVAR_OP_DATA_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
44385 {
44386 	USE_OPLINE
44387 
44388 	zval *object_ptr;
44389 	zend_free_op free_op2, free_op_data;
44390 	zval *value;
44391 	zval *variable_ptr;
44392 	zval *dim;
44393 
44394 	SAVE_OPLINE();
44395 	object_ptr = EX_VAR(opline->op1.var);
44396 
44397 	if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
44398 try_assign_dim_array:
44399 		SEPARATE_ARRAY(object_ptr);
44400 		if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) {
44401 			value = RT_CONSTANT((opline+1), (opline+1)->op1);
44402 			if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
44403 				ZVAL_DEREF(value);
44404 			}
44405 			variable_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), value);
44406 			if (UNEXPECTED(variable_ptr == NULL)) {
44407 
44408 				zend_cannot_add_element();
44409 				goto assign_dim_error;
44410 			} else if (IS_CONST == IS_CV) {
44411 				if (Z_REFCOUNTED_P(value)) {
44412 					Z_ADDREF_P(value);
44413 				}
44414 			} else if (IS_CONST == IS_VAR) {
44415 				if (value != free_op_data) {
44416 					if (Z_REFCOUNTED_P(value)) {
44417 						Z_ADDREF_P(value);
44418 					}
44419 
44420 				}
44421 			} else if (IS_CONST == IS_CONST) {
44422 				if (UNEXPECTED(Z_REFCOUNTED_P(value))) {
44423 					Z_ADDREF_P(value);
44424 				}
44425 			}
44426 		} else {
44427 			dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
44428 			if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
44429 				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
44430 			} else {
44431 				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
44432 			}
44433 			if (UNEXPECTED(variable_ptr == NULL)) {
44434 				goto assign_dim_error;
44435 			}
44436 			value = RT_CONSTANT((opline+1), (opline+1)->op1);
44437 			value = zend_assign_to_variable(variable_ptr, value, IS_CONST);
44438 		}
44439 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
44440 			ZVAL_COPY(EX_VAR(opline->result.var), value);
44441 		}
44442 	} else {
44443 		if (EXPECTED(Z_ISREF_P(object_ptr))) {
44444 			object_ptr = Z_REFVAL_P(object_ptr);
44445 			if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
44446 				goto try_assign_dim_array;
44447 			}
44448 		}
44449 		if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) {
44450 			dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
44451 			value = RT_CONSTANT((opline+1), (opline+1)->op1);
44452 
44453 			if ((IS_TMP_VAR|IS_VAR) == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
44454 				dim++;
44455 			}
44456 			zend_assign_to_object_dim(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
44457 
44458 		} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
44459 			if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) {
44460 				zend_use_new_element_for_string();
44461 
44462 
44463 				UNDEF_RESULT();
44464 				HANDLE_EXCEPTION();
44465 			} else {
44466 				dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
44467 				value = RT_CONSTANT((opline+1), (opline+1)->op1);
44468 				zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
44469 
44470 			}
44471 		} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
44472 			ZVAL_ARR(object_ptr, zend_new_array(8));
44473 			goto try_assign_dim_array;
44474 		} else {
44475 			if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) {
44476 				zend_use_scalar_as_array();
44477 			}
44478 			dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
44479 assign_dim_error:
44480 
44481 			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
44482 				ZVAL_NULL(EX_VAR(opline->result.var));
44483 			}
44484 		}
44485 	}
44486 	if ((IS_TMP_VAR|IS_VAR) != IS_UNUSED) {
44487 		zval_ptr_dtor_nogc(free_op2);
44488 	}
44489 
44490 	/* assign_dim has two opcodes! */
44491 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
44492 }
44493 
44494 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_CV_TMPVAR_OP_DATA_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
44495 {
44496 	USE_OPLINE
44497 
44498 	zval *object_ptr;
44499 	zend_free_op free_op2, free_op_data;
44500 	zval *value;
44501 	zval *variable_ptr;
44502 	zval *dim;
44503 
44504 	SAVE_OPLINE();
44505 	object_ptr = EX_VAR(opline->op1.var);
44506 
44507 	if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
44508 try_assign_dim_array:
44509 		SEPARATE_ARRAY(object_ptr);
44510 		if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) {
44511 			value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
44512 			if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
44513 				ZVAL_DEREF(value);
44514 			}
44515 			variable_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), value);
44516 			if (UNEXPECTED(variable_ptr == NULL)) {
44517 				zval_ptr_dtor_nogc(free_op_data);
44518 				zend_cannot_add_element();
44519 				goto assign_dim_error;
44520 			} else if (IS_TMP_VAR == IS_CV) {
44521 				if (Z_REFCOUNTED_P(value)) {
44522 					Z_ADDREF_P(value);
44523 				}
44524 			} else if (IS_TMP_VAR == IS_VAR) {
44525 				if (value != free_op_data) {
44526 					if (Z_REFCOUNTED_P(value)) {
44527 						Z_ADDREF_P(value);
44528 					}
44529 					zval_ptr_dtor_nogc(free_op_data);
44530 				}
44531 			} else if (IS_TMP_VAR == IS_CONST) {
44532 				if (UNEXPECTED(Z_REFCOUNTED_P(value))) {
44533 					Z_ADDREF_P(value);
44534 				}
44535 			}
44536 		} else {
44537 			dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
44538 			if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
44539 				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
44540 			} else {
44541 				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
44542 			}
44543 			if (UNEXPECTED(variable_ptr == NULL)) {
44544 				goto assign_dim_error;
44545 			}
44546 			value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
44547 			value = zend_assign_to_variable(variable_ptr, value, IS_TMP_VAR);
44548 		}
44549 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
44550 			ZVAL_COPY(EX_VAR(opline->result.var), value);
44551 		}
44552 	} else {
44553 		if (EXPECTED(Z_ISREF_P(object_ptr))) {
44554 			object_ptr = Z_REFVAL_P(object_ptr);
44555 			if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
44556 				goto try_assign_dim_array;
44557 			}
44558 		}
44559 		if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) {
44560 			dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
44561 			value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
44562 
44563 			if ((IS_TMP_VAR|IS_VAR) == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
44564 				dim++;
44565 			}
44566 			zend_assign_to_object_dim(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
44567 
44568 			zval_ptr_dtor_nogc(free_op_data);
44569 		} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
44570 			if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) {
44571 				zend_use_new_element_for_string();
44572 				zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
44573 
44574 				UNDEF_RESULT();
44575 				HANDLE_EXCEPTION();
44576 			} else {
44577 				dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
44578 				value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
44579 				zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
44580 				zval_ptr_dtor_nogc(free_op_data);
44581 			}
44582 		} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
44583 			ZVAL_ARR(object_ptr, zend_new_array(8));
44584 			goto try_assign_dim_array;
44585 		} else {
44586 			if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) {
44587 				zend_use_scalar_as_array();
44588 			}
44589 			dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
44590 assign_dim_error:
44591 			zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
44592 			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
44593 				ZVAL_NULL(EX_VAR(opline->result.var));
44594 			}
44595 		}
44596 	}
44597 	if ((IS_TMP_VAR|IS_VAR) != IS_UNUSED) {
44598 		zval_ptr_dtor_nogc(free_op2);
44599 	}
44600 
44601 	/* assign_dim has two opcodes! */
44602 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
44603 }
44604 
44605 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_CV_TMPVAR_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
44606 {
44607 	USE_OPLINE
44608 
44609 	zval *object_ptr;
44610 	zend_free_op free_op2, free_op_data;
44611 	zval *value;
44612 	zval *variable_ptr;
44613 	zval *dim;
44614 
44615 	SAVE_OPLINE();
44616 	object_ptr = EX_VAR(opline->op1.var);
44617 
44618 	if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
44619 try_assign_dim_array:
44620 		SEPARATE_ARRAY(object_ptr);
44621 		if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) {
44622 			value = _get_zval_ptr_var((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
44623 			if (IS_VAR == IS_CV || IS_VAR == IS_VAR) {
44624 				ZVAL_DEREF(value);
44625 			}
44626 			variable_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), value);
44627 			if (UNEXPECTED(variable_ptr == NULL)) {
44628 				zval_ptr_dtor_nogc(free_op_data);
44629 				zend_cannot_add_element();
44630 				goto assign_dim_error;
44631 			} else if (IS_VAR == IS_CV) {
44632 				if (Z_REFCOUNTED_P(value)) {
44633 					Z_ADDREF_P(value);
44634 				}
44635 			} else if (IS_VAR == IS_VAR) {
44636 				if (value != free_op_data) {
44637 					if (Z_REFCOUNTED_P(value)) {
44638 						Z_ADDREF_P(value);
44639 					}
44640 					zval_ptr_dtor_nogc(free_op_data);
44641 				}
44642 			} else if (IS_VAR == IS_CONST) {
44643 				if (UNEXPECTED(Z_REFCOUNTED_P(value))) {
44644 					Z_ADDREF_P(value);
44645 				}
44646 			}
44647 		} else {
44648 			dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
44649 			if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
44650 				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
44651 			} else {
44652 				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
44653 			}
44654 			if (UNEXPECTED(variable_ptr == NULL)) {
44655 				goto assign_dim_error;
44656 			}
44657 			value = _get_zval_ptr_var((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
44658 			value = zend_assign_to_variable(variable_ptr, value, IS_VAR);
44659 		}
44660 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
44661 			ZVAL_COPY(EX_VAR(opline->result.var), value);
44662 		}
44663 	} else {
44664 		if (EXPECTED(Z_ISREF_P(object_ptr))) {
44665 			object_ptr = Z_REFVAL_P(object_ptr);
44666 			if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
44667 				goto try_assign_dim_array;
44668 			}
44669 		}
44670 		if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) {
44671 			dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
44672 			value = _get_zval_ptr_var_deref((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
44673 
44674 			if ((IS_TMP_VAR|IS_VAR) == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
44675 				dim++;
44676 			}
44677 			zend_assign_to_object_dim(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
44678 
44679 			zval_ptr_dtor_nogc(free_op_data);
44680 		} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
44681 			if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) {
44682 				zend_use_new_element_for_string();
44683 				zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
44684 
44685 				UNDEF_RESULT();
44686 				HANDLE_EXCEPTION();
44687 			} else {
44688 				dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
44689 				value = _get_zval_ptr_var_deref((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
44690 				zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
44691 				zval_ptr_dtor_nogc(free_op_data);
44692 			}
44693 		} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
44694 			ZVAL_ARR(object_ptr, zend_new_array(8));
44695 			goto try_assign_dim_array;
44696 		} else {
44697 			if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) {
44698 				zend_use_scalar_as_array();
44699 			}
44700 			dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
44701 assign_dim_error:
44702 			zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
44703 			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
44704 				ZVAL_NULL(EX_VAR(opline->result.var));
44705 			}
44706 		}
44707 	}
44708 	if ((IS_TMP_VAR|IS_VAR) != IS_UNUSED) {
44709 		zval_ptr_dtor_nogc(free_op2);
44710 	}
44711 
44712 	/* assign_dim has two opcodes! */
44713 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
44714 }
44715 
44716 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_CV_TMPVAR_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
44717 {
44718 	USE_OPLINE
44719 
44720 	zval *object_ptr;
44721 	zend_free_op free_op2, free_op_data;
44722 	zval *value;
44723 	zval *variable_ptr;
44724 	zval *dim;
44725 
44726 	SAVE_OPLINE();
44727 	object_ptr = EX_VAR(opline->op1.var);
44728 
44729 	if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
44730 try_assign_dim_array:
44731 		SEPARATE_ARRAY(object_ptr);
44732 		if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) {
44733 			value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
44734 			if (IS_CV == IS_CV || IS_CV == IS_VAR) {
44735 				ZVAL_DEREF(value);
44736 			}
44737 			variable_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), value);
44738 			if (UNEXPECTED(variable_ptr == NULL)) {
44739 
44740 				zend_cannot_add_element();
44741 				goto assign_dim_error;
44742 			} else if (IS_CV == IS_CV) {
44743 				if (Z_REFCOUNTED_P(value)) {
44744 					Z_ADDREF_P(value);
44745 				}
44746 			} else if (IS_CV == IS_VAR) {
44747 				if (value != free_op_data) {
44748 					if (Z_REFCOUNTED_P(value)) {
44749 						Z_ADDREF_P(value);
44750 					}
44751 
44752 				}
44753 			} else if (IS_CV == IS_CONST) {
44754 				if (UNEXPECTED(Z_REFCOUNTED_P(value))) {
44755 					Z_ADDREF_P(value);
44756 				}
44757 			}
44758 		} else {
44759 			dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
44760 			if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
44761 				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
44762 			} else {
44763 				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
44764 			}
44765 			if (UNEXPECTED(variable_ptr == NULL)) {
44766 				goto assign_dim_error;
44767 			}
44768 			value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
44769 			value = zend_assign_to_variable(variable_ptr, value, IS_CV);
44770 		}
44771 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
44772 			ZVAL_COPY(EX_VAR(opline->result.var), value);
44773 		}
44774 	} else {
44775 		if (EXPECTED(Z_ISREF_P(object_ptr))) {
44776 			object_ptr = Z_REFVAL_P(object_ptr);
44777 			if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
44778 				goto try_assign_dim_array;
44779 			}
44780 		}
44781 		if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) {
44782 			dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
44783 			value = _get_zval_ptr_cv_deref_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
44784 
44785 			if ((IS_TMP_VAR|IS_VAR) == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
44786 				dim++;
44787 			}
44788 			zend_assign_to_object_dim(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
44789 
44790 		} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
44791 			if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) {
44792 				zend_use_new_element_for_string();
44793 
44794 
44795 				UNDEF_RESULT();
44796 				HANDLE_EXCEPTION();
44797 			} else {
44798 				dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
44799 				value = _get_zval_ptr_cv_deref_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
44800 				zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
44801 
44802 			}
44803 		} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
44804 			ZVAL_ARR(object_ptr, zend_new_array(8));
44805 			goto try_assign_dim_array;
44806 		} else {
44807 			if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) {
44808 				zend_use_scalar_as_array();
44809 			}
44810 			dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
44811 assign_dim_error:
44812 
44813 			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
44814 				ZVAL_NULL(EX_VAR(opline->result.var));
44815 			}
44816 		}
44817 	}
44818 	if ((IS_TMP_VAR|IS_VAR) != IS_UNUSED) {
44819 		zval_ptr_dtor_nogc(free_op2);
44820 	}
44821 
44822 	/* assign_dim has two opcodes! */
44823 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
44824 }
44825 
44826 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FAST_CONCAT_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
44827 {
44828 	USE_OPLINE
44829 	zend_free_op free_op2;
44830 	zval *op1, *op2;
44831 	zend_string *op1_str, *op2_str, *str;
44832 
44833 
44834 	op1 = EX_VAR(opline->op1.var);
44835 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
44836 	if ((IS_CV == IS_CONST || EXPECTED(Z_TYPE_P(op1) == IS_STRING)) &&
44837 	    ((IS_TMP_VAR|IS_VAR) == IS_CONST || EXPECTED(Z_TYPE_P(op2) == IS_STRING))) {
44838 		zend_string *op1_str = Z_STR_P(op1);
44839 		zend_string *op2_str = Z_STR_P(op2);
44840 		zend_string *str;
44841 
44842 		if (IS_CV != IS_CONST && UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
44843 			if ((IS_TMP_VAR|IS_VAR) == IS_CONST || (IS_TMP_VAR|IS_VAR) == IS_CV) {
44844 				ZVAL_STR_COPY(EX_VAR(opline->result.var), op2_str);
44845 			} else {
44846 				ZVAL_STR(EX_VAR(opline->result.var), op2_str);
44847 			}
44848 
44849 		} else if ((IS_TMP_VAR|IS_VAR) != IS_CONST && UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
44850 			if (IS_CV == IS_CONST || IS_CV == IS_CV) {
44851 				ZVAL_STR_COPY(EX_VAR(opline->result.var), op1_str);
44852 			} else {
44853 				ZVAL_STR(EX_VAR(opline->result.var), op1_str);
44854 			}
44855 			zval_ptr_dtor_nogc(free_op2);
44856 		} else if (IS_CV != IS_CONST && IS_CV != IS_CV &&
44857 		    !ZSTR_IS_INTERNED(op1_str) && GC_REFCOUNT(op1_str) == 1) {
44858 		    size_t len = ZSTR_LEN(op1_str);
44859 
44860 			str = zend_string_extend(op1_str, len + ZSTR_LEN(op2_str), 0);
44861 			memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
44862 			ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
44863 			zval_ptr_dtor_nogc(free_op2);
44864 		} else {
44865 			str = zend_string_alloc(ZSTR_LEN(op1_str) + ZSTR_LEN(op2_str), 0);
44866 			memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
44867 			memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
44868 			ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
44869 
44870 			zval_ptr_dtor_nogc(free_op2);
44871 		}
44872 		ZEND_VM_NEXT_OPCODE();
44873 	}
44874 
44875 	SAVE_OPLINE();
44876 	if (IS_CV == IS_CONST) {
44877 		op1_str = Z_STR_P(op1);
44878 	} else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
44879 		op1_str = zend_string_copy(Z_STR_P(op1));
44880 	} else {
44881 		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
44882 			GET_OP1_UNDEF_CV(op1, BP_VAR_R);
44883 		}
44884 		op1_str = zval_get_string_func(op1);
44885 	}
44886 	if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
44887 		op2_str = Z_STR_P(op2);
44888 	} else if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
44889 		op2_str = zend_string_copy(Z_STR_P(op2));
44890 	} else {
44891 		if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
44892 			GET_OP2_UNDEF_CV(op2, BP_VAR_R);
44893 		}
44894 		op2_str = zval_get_string_func(op2);
44895 	}
44896 	do {
44897 		if (IS_CV != IS_CONST) {
44898 			if (UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
44899 				if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
44900 					if (UNEXPECTED(Z_REFCOUNTED_P(op2))) {
44901 						GC_ADDREF(op2_str);
44902 					}
44903 				}
44904 				ZVAL_STR(EX_VAR(opline->result.var), op2_str);
44905 				zend_string_release_ex(op1_str, 0);
44906 				break;
44907 			}
44908 		}
44909 		if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
44910 			if (UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
44911 				if (IS_CV == IS_CONST) {
44912 					if (UNEXPECTED(Z_REFCOUNTED_P(op1))) {
44913 						GC_ADDREF(op1_str);
44914 					}
44915 				}
44916 				ZVAL_STR(EX_VAR(opline->result.var), op1_str);
44917 				zend_string_release_ex(op2_str, 0);
44918 				break;
44919 			}
44920 		}
44921 		str = zend_string_alloc(ZSTR_LEN(op1_str) + ZSTR_LEN(op2_str), 0);
44922 		memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
44923 		memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
44924 		ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
44925 		if (IS_CV != IS_CONST) {
44926 			zend_string_release_ex(op1_str, 0);
44927 		}
44928 		if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
44929 			zend_string_release_ex(op2_str, 0);
44930 		}
44931 	} while (0);
44932 
44933 	zval_ptr_dtor_nogc(free_op2);
44934 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
44935 }
44936 
44937 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
44938 {
44939 	USE_OPLINE
44940 	zval *function_name;
44941 	zend_free_op free_op1, free_op2;
44942 	zval *object;
44943 	zend_function *fbc;
44944 	zend_class_entry *called_scope;
44945 	zend_object *obj;
44946 	zend_execute_data *call;
44947 	uint32_t call_info;
44948 
44949 	SAVE_OPLINE();
44950 
44951 	object = EX_VAR(opline->op1.var);
44952 
44953 	if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
44954 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
44955 	}
44956 
44957 	if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
44958 		function_name = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
44959 	}
44960 
44961 	if ((IS_TMP_VAR|IS_VAR) != IS_CONST &&
44962 	    UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) {
44963 		do {
44964 			if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV)) && Z_ISREF_P(function_name)) {
44965 				function_name = Z_REFVAL_P(function_name);
44966 				if (EXPECTED(Z_TYPE_P(function_name) == IS_STRING)) {
44967 					break;
44968 				}
44969 			} else if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
44970 				GET_OP2_UNDEF_CV(function_name, BP_VAR_R);
44971 				if (UNEXPECTED(EG(exception) != NULL)) {
44972 
44973 					HANDLE_EXCEPTION();
44974 				}
44975 			}
44976 			zend_throw_error(NULL, "Method name must be a string");
44977 			zval_ptr_dtor_nogc(free_op2);
44978 
44979 			HANDLE_EXCEPTION();
44980 		} while (0);
44981 	}
44982 
44983 	if (IS_CV != IS_UNUSED) {
44984 		do {
44985 			if (IS_CV == IS_CONST || UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
44986 				if ((IS_CV & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(object))) {
44987 					object = Z_REFVAL_P(object);
44988 					if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
44989 						break;
44990 					}
44991 				}
44992 				if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
44993 					object = GET_OP1_UNDEF_CV(object, BP_VAR_R);
44994 					if (UNEXPECTED(EG(exception) != NULL)) {
44995 						if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
44996 							zval_ptr_dtor_nogc(free_op2);
44997 						}
44998 						HANDLE_EXCEPTION();
44999 					}
45000 				}
45001 				if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
45002 					function_name = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
45003 				}
45004 				zend_invalid_method_call(object, function_name);
45005 				zval_ptr_dtor_nogc(free_op2);
45006 
45007 				HANDLE_EXCEPTION();
45008 			}
45009 		} while (0);
45010 	}
45011 
45012 	obj = Z_OBJ_P(object);
45013 	called_scope = obj->ce;
45014 
45015 	if ((IS_TMP_VAR|IS_VAR) == IS_CONST &&
45016 	    EXPECTED(CACHED_PTR(opline->result.num) == called_scope)) {
45017 	    fbc = CACHED_PTR(opline->result.num + sizeof(void*));
45018 	} else {
45019 	    zend_object *orig_obj = obj;
45020 
45021 		if (UNEXPECTED(obj->handlers->get_method == NULL)) {
45022 			zend_throw_error(NULL, "Object does not support method calls");
45023 			zval_ptr_dtor_nogc(free_op2);
45024 
45025 			HANDLE_EXCEPTION();
45026 		}
45027 
45028 		if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
45029 			function_name = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
45030 		}
45031 
45032 		/* First, locate the function. */
45033 		fbc = obj->handlers->get_method(&obj, Z_STR_P(function_name), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (RT_CONSTANT(opline, opline->op2) + 1) : NULL));
45034 		if (UNEXPECTED(fbc == NULL)) {
45035 			if (EXPECTED(!EG(exception))) {
45036 				zend_undefined_method(obj->ce, Z_STR_P(function_name));
45037 			}
45038 			zval_ptr_dtor_nogc(free_op2);
45039 
45040 			HANDLE_EXCEPTION();
45041 		}
45042 		if ((IS_TMP_VAR|IS_VAR) == IS_CONST &&
45043 		    EXPECTED(fbc->type <= ZEND_USER_FUNCTION) &&
45044 		    EXPECTED(!(fbc->common.fn_flags & (ZEND_ACC_CALL_VIA_TRAMPOLINE|ZEND_ACC_NEVER_CACHE))) &&
45045 		    EXPECTED(obj == orig_obj)) {
45046 			CACHE_POLYMORPHIC_PTR(opline->result.num, called_scope, fbc);
45047 		}
45048 		if ((IS_CV & (IS_VAR|IS_TMP_VAR)) && UNEXPECTED(obj != orig_obj)) {
45049 			/* Reset "object" to trigger reference counting */
45050 			object = NULL;
45051 		}
45052 		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!fbc->op_array.run_time_cache)) {
45053 			init_func_run_time_cache(&fbc->op_array);
45054 		}
45055 	}
45056 
45057 	if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
45058 		zval_ptr_dtor_nogc(free_op2);
45059 	}
45060 
45061 	call_info = ZEND_CALL_NESTED_FUNCTION;
45062 	if (UNEXPECTED((fbc->common.fn_flags & ZEND_ACC_STATIC) != 0)) {
45063 		obj = NULL;
45064 
45065 		if ((IS_CV & (IS_VAR|IS_TMP_VAR)) && UNEXPECTED(EG(exception))) {
45066 			HANDLE_EXCEPTION();
45067 		}
45068 	} else if (IS_CV & (IS_VAR|IS_TMP_VAR|IS_CV)) {
45069 		/* CV may be changed indirectly (e.g. when it's a reference) */
45070 		call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_RELEASE_THIS;
45071 		if (IS_CV == IS_CV) {
45072 			GC_ADDREF(obj); /* For $this pointer */
45073 		} else if (free_op1 != object) {
45074 			GC_ADDREF(obj); /* For $this pointer */
45075 
45076 		}
45077 	}
45078 
45079 	call = zend_vm_stack_push_call_frame(call_info,
45080 		fbc, opline->extended_value, called_scope, obj);
45081 	call->prev_execute_data = EX(call);
45082 	EX(call) = call;
45083 
45084 	ZEND_VM_NEXT_OPCODE();
45085 }
45086 
45087 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
45088 {
45089 	USE_OPLINE
45090 
45091 	zval *expr_ptr, new_expr;
45092 
45093 	SAVE_OPLINE();
45094 	if ((IS_CV == IS_VAR || IS_CV == IS_CV) &&
45095 	    UNEXPECTED(opline->extended_value & ZEND_ARRAY_ELEMENT_REF)) {
45096 		expr_ptr = _get_zval_ptr_cv_BP_VAR_W(opline->op1.var EXECUTE_DATA_CC);
45097 		if (Z_ISREF_P(expr_ptr)) {
45098 			Z_ADDREF_P(expr_ptr);
45099 		} else {
45100 			ZVAL_MAKE_REF_EX(expr_ptr, 2);
45101 		}
45102 
45103 	} else {
45104 		expr_ptr = _get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
45105 		if (IS_CV == IS_TMP_VAR) {
45106 			/* pass */
45107 		} else if (IS_CV == IS_CONST) {
45108 			Z_TRY_ADDREF_P(expr_ptr);
45109 		} else if (IS_CV == IS_CV) {
45110 			ZVAL_DEREF(expr_ptr);
45111 			Z_TRY_ADDREF_P(expr_ptr);
45112 		} else /* if (IS_CV == IS_VAR) */ {
45113 			if (UNEXPECTED(Z_ISREF_P(expr_ptr))) {
45114 				zend_refcounted *ref = Z_COUNTED_P(expr_ptr);
45115 
45116 				expr_ptr = Z_REFVAL_P(expr_ptr);
45117 				if (UNEXPECTED(GC_DELREF(ref) == 0)) {
45118 					ZVAL_COPY_VALUE(&new_expr, expr_ptr);
45119 					expr_ptr = &new_expr;
45120 					efree_size(ref, sizeof(zend_reference));
45121 				} else if (Z_OPT_REFCOUNTED_P(expr_ptr)) {
45122 					Z_ADDREF_P(expr_ptr);
45123 				}
45124 			}
45125 		}
45126 	}
45127 
45128 	if ((IS_TMP_VAR|IS_VAR) != IS_UNUSED) {
45129 		zend_free_op free_op2;
45130 		zval *offset = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
45131 		zend_string *str;
45132 		zend_ulong hval;
45133 
45134 add_again:
45135 		if (EXPECTED(Z_TYPE_P(offset) == IS_STRING)) {
45136 			str = Z_STR_P(offset);
45137 			if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
45138 				if (ZEND_HANDLE_NUMERIC(str, hval)) {
45139 					goto num_index;
45140 				}
45141 			}
45142 str_index:
45143 			zend_hash_update(Z_ARRVAL_P(EX_VAR(opline->result.var)), str, expr_ptr);
45144 		} else if (EXPECTED(Z_TYPE_P(offset) == IS_LONG)) {
45145 			hval = Z_LVAL_P(offset);
45146 num_index:
45147 			zend_hash_index_update(Z_ARRVAL_P(EX_VAR(opline->result.var)), hval, expr_ptr);
45148 		} else if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
45149 			offset = Z_REFVAL_P(offset);
45150 			goto add_again;
45151 		} else if (Z_TYPE_P(offset) == IS_NULL) {
45152 			str = ZSTR_EMPTY_ALLOC();
45153 			goto str_index;
45154 		} else if (Z_TYPE_P(offset) == IS_DOUBLE) {
45155 			hval = zend_dval_to_lval(Z_DVAL_P(offset));
45156 			goto num_index;
45157 		} else if (Z_TYPE_P(offset) == IS_FALSE) {
45158 			hval = 0;
45159 			goto num_index;
45160 		} else if (Z_TYPE_P(offset) == IS_TRUE) {
45161 			hval = 1;
45162 			goto num_index;
45163 		} else if ((IS_TMP_VAR|IS_VAR) == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
45164 			GET_OP2_UNDEF_CV(offset, BP_VAR_R);
45165 			str = ZSTR_EMPTY_ALLOC();
45166 			goto str_index;
45167 		} else {
45168 			zend_illegal_offset();
45169 			zval_ptr_dtor_nogc(expr_ptr);
45170 		}
45171 		zval_ptr_dtor_nogc(free_op2);
45172 	} else {
45173 		if (!zend_hash_next_index_insert(Z_ARRVAL_P(EX_VAR(opline->result.var)), expr_ptr)) {
45174 			zend_cannot_add_element();
45175 			zval_ptr_dtor_nogc(expr_ptr);
45176 		}
45177 	}
45178 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
45179 }
45180 
45181 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_ARRAY_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
45182 {
45183 	zval *array;
45184 	uint32_t size;
45185 	USE_OPLINE
45186 
45187 	array = EX_VAR(opline->result.var);
45188 	if (IS_CV != IS_UNUSED) {
45189 		size = opline->extended_value >> ZEND_ARRAY_SIZE_SHIFT;
45190 		ZVAL_ARR(array, zend_new_array(size));
45191 		/* Explicitly initialize array as not-packed if flag is set */
45192 		if (opline->extended_value & ZEND_ARRAY_NOT_PACKED) {
45193 			zend_hash_real_init_mixed(Z_ARRVAL_P(array));
45194 		}
45195 		ZEND_VM_TAIL_CALL(ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
45196 	} else {
45197 		ZVAL_EMPTY_ARRAY(array);
45198 		ZEND_VM_NEXT_OPCODE();
45199 	}
45200 }
45201 
45202 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_UNSET_DIM_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
45203 {
45204 	USE_OPLINE
45205 	zend_free_op free_op2;
45206 	zval *container;
45207 	zval *offset;
45208 	zend_ulong hval;
45209 	zend_string *key;
45210 
45211 	SAVE_OPLINE();
45212 	container = EX_VAR(opline->op1.var);
45213 	offset = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
45214 
45215 	do {
45216 		if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
45217 			HashTable *ht;
45218 
45219 unset_dim_array:
45220 			SEPARATE_ARRAY(container);
45221 			ht = Z_ARRVAL_P(container);
45222 offset_again:
45223 			if (EXPECTED(Z_TYPE_P(offset) == IS_STRING)) {
45224 				key = Z_STR_P(offset);
45225 				if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
45226 					if (ZEND_HANDLE_NUMERIC(key, hval)) {
45227 						goto num_index_dim;
45228 					}
45229 				}
45230 str_index_dim:
45231 				if (ht == &EG(symbol_table)) {
45232 					zend_delete_global_variable(key);
45233 				} else {
45234 					zend_hash_del(ht, key);
45235 				}
45236 			} else if (EXPECTED(Z_TYPE_P(offset) == IS_LONG)) {
45237 				hval = Z_LVAL_P(offset);
45238 num_index_dim:
45239 				zend_hash_index_del(ht, hval);
45240 			} else if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
45241 				offset = Z_REFVAL_P(offset);
45242 				goto offset_again;
45243 			} else if (Z_TYPE_P(offset) == IS_DOUBLE) {
45244 				hval = zend_dval_to_lval(Z_DVAL_P(offset));
45245 				goto num_index_dim;
45246 			} else if (Z_TYPE_P(offset) == IS_NULL) {
45247 				key = ZSTR_EMPTY_ALLOC();
45248 				goto str_index_dim;
45249 			} else if (Z_TYPE_P(offset) == IS_FALSE) {
45250 				hval = 0;
45251 				goto num_index_dim;
45252 			} else if (Z_TYPE_P(offset) == IS_TRUE) {
45253 				hval = 1;
45254 				goto num_index_dim;
45255 			} else if (Z_TYPE_P(offset) == IS_RESOURCE) {
45256 				hval = Z_RES_HANDLE_P(offset);
45257 				goto num_index_dim;
45258 			} else if ((IS_TMP_VAR|IS_VAR) == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
45259 				GET_OP2_UNDEF_CV(offset, BP_VAR_R);
45260 				key = ZSTR_EMPTY_ALLOC();
45261 				goto str_index_dim;
45262 			} else {
45263 				zend_error(E_WARNING, "Illegal offset type in unset");
45264 			}
45265 			break;
45266 		} else if (Z_ISREF_P(container)) {
45267 			container = Z_REFVAL_P(container);
45268 			if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
45269 				goto unset_dim_array;
45270 			}
45271 		}
45272 		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
45273 			container = GET_OP1_UNDEF_CV(container, BP_VAR_R);
45274 		}
45275 		if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(offset) == IS_UNDEF)) {
45276 			offset = GET_OP2_UNDEF_CV(offset, BP_VAR_R);
45277 		}
45278 		if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
45279 			if (UNEXPECTED(Z_OBJ_HT_P(container)->unset_dimension == NULL)) {
45280 				zend_use_object_as_array();
45281 			} else {
45282 				if ((IS_TMP_VAR|IS_VAR) == IS_CONST && Z_EXTRA_P(offset) == ZEND_EXTRA_VALUE) {
45283 					offset++;
45284 				}
45285 				Z_OBJ_HT_P(container)->unset_dimension(container, offset);
45286 			}
45287 		} else if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_STRING)) {
45288 			zend_throw_error(NULL, "Cannot unset string offsets");
45289 		}
45290 	} while (0);
45291 
45292 	zval_ptr_dtor_nogc(free_op2);
45293 
45294 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
45295 }
45296 
45297 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_UNSET_OBJ_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
45298 {
45299 	USE_OPLINE
45300 	zend_free_op free_op2;
45301 	zval *container;
45302 	zval *offset;
45303 
45304 	SAVE_OPLINE();
45305 	container = _get_zval_ptr_cv_BP_VAR_UNSET(opline->op1.var EXECUTE_DATA_CC);
45306 	if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
45307 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
45308 	}
45309 	offset = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
45310 
45311 	do {
45312 		if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) {
45313 			if (Z_ISREF_P(container)) {
45314 				container = Z_REFVAL_P(container);
45315 				if (Z_TYPE_P(container) != IS_OBJECT) {
45316 					break;
45317 				}
45318 			} else {
45319 				break;
45320 			}
45321 		}
45322 		if (Z_OBJ_HT_P(container)->unset_property) {
45323 			Z_OBJ_HT_P(container)->unset_property(container, offset, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL));
45324 		} else {
45325 			zend_wrong_property_unset(offset);
45326 		}
45327 	} while (0);
45328 
45329 	zval_ptr_dtor_nogc(free_op2);
45330 
45331 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
45332 }
45333 
45334 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
45335 {
45336 	USE_OPLINE
45337 	zend_free_op free_op2;
45338 	zval *container;
45339 	int result;
45340 	zend_ulong hval;
45341 	zval *offset;
45342 
45343 	SAVE_OPLINE();
45344 	container = EX_VAR(opline->op1.var);
45345 	offset = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
45346 
45347 	if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
45348 		HashTable *ht;
45349 		zval *value;
45350 		zend_string *str;
45351 
45352 isset_dim_obj_array:
45353 		ht = Z_ARRVAL_P(container);
45354 isset_again:
45355 		if (EXPECTED(Z_TYPE_P(offset) == IS_STRING)) {
45356 			str = Z_STR_P(offset);
45357 			if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
45358 				if (ZEND_HANDLE_NUMERIC(str, hval)) {
45359 					goto num_index_prop;
45360 				}
45361 			}
45362 			value = zend_hash_find_ex_ind(ht, str, (IS_TMP_VAR|IS_VAR) == IS_CONST);
45363 		} else if (EXPECTED(Z_TYPE_P(offset) == IS_LONG)) {
45364 			hval = Z_LVAL_P(offset);
45365 num_index_prop:
45366 			value = zend_hash_index_find(ht, hval);
45367 		} else if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(offset))) {
45368 			offset = Z_REFVAL_P(offset);
45369 			goto isset_again;
45370 		} else {
45371 			value = zend_find_array_dim_slow(ht, offset EXECUTE_DATA_CC);
45372 		}
45373 
45374 		if (!(opline->extended_value & ZEND_ISEMPTY)) {
45375 			/* > IS_NULL means not IS_UNDEF and not IS_NULL */
45376 			result = value != NULL && Z_TYPE_P(value) > IS_NULL &&
45377 			    (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL);
45378 		} else {
45379 			result = (value == NULL || !i_zend_is_true(value));
45380 		}
45381 		goto isset_dim_obj_exit;
45382 	} else if ((IS_CV & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(container))) {
45383 		container = Z_REFVAL_P(container);
45384 		if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
45385 			goto isset_dim_obj_array;
45386 		}
45387 	}
45388 
45389 	if ((IS_TMP_VAR|IS_VAR) == IS_CONST && Z_EXTRA_P(offset) == ZEND_EXTRA_VALUE) {
45390 		offset++;
45391 	}
45392 	if (!(opline->extended_value & ZEND_ISEMPTY)) {
45393 		result = zend_isset_dim_slow(container, offset EXECUTE_DATA_CC);
45394 	} else {
45395 		result = zend_isempty_dim_slow(container, offset EXECUTE_DATA_CC);
45396 	}
45397 
45398 isset_dim_obj_exit:
45399 	zval_ptr_dtor_nogc(free_op2);
45400 
45401 	ZEND_VM_SMART_BRANCH(result, 1);
45402 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
45403 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
45404 }
45405 
45406 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
45407 {
45408 	USE_OPLINE
45409 	zend_free_op free_op2;
45410 	zval *container;
45411 	int result;
45412 	zval *offset;
45413 
45414 	SAVE_OPLINE();
45415 	container = _get_zval_ptr_cv_BP_VAR_IS(opline->op1.var EXECUTE_DATA_CC);
45416 
45417 	if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
45418 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
45419 	}
45420 
45421 	offset = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
45422 
45423 	if (IS_CV == IS_CONST ||
45424 	    (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
45425 		if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
45426 			container = Z_REFVAL_P(container);
45427 			if (UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) {
45428 				goto isset_no_object;
45429 			}
45430 		} else {
45431 			goto isset_no_object;
45432 		}
45433 	}
45434 	if (UNEXPECTED(!Z_OBJ_HT_P(container)->has_property)) {
45435 		zend_wrong_property_check(offset);
45436 isset_no_object:
45437 		result = (opline->extended_value & ZEND_ISEMPTY);
45438 	} else {
45439 		result =
45440 			(opline->extended_value & ZEND_ISEMPTY) ^
45441 			Z_OBJ_HT_P(container)->has_property(container, offset, (opline->extended_value & ZEND_ISEMPTY), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_ISEMPTY) : NULL));
45442 	}
45443 
45444 	zval_ptr_dtor_nogc(free_op2);
45445 
45446 	ZEND_VM_SMART_BRANCH(result, 1);
45447 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
45448 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
45449 }
45450 
45451 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_IDENTICAL_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
45452 {
45453 	USE_OPLINE
45454 	zend_free_op free_op2;
45455 	zval *op1, *op2;
45456 	int result;
45457 
45458 	SAVE_OPLINE();
45459 	op1 = _get_zval_ptr_cv_deref_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
45460 	op2 = _get_zval_ptr_tmp(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
45461 	result = fast_is_identical_function(op1, op2);
45462 
45463 	zval_ptr_dtor_nogc(free_op2);
45464 	ZEND_VM_SMART_BRANCH(result, 1);
45465 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
45466 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
45467 }
45468 
45469 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_NOT_IDENTICAL_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
45470 {
45471 	USE_OPLINE
45472 	zend_free_op free_op2;
45473 	zval *op1, *op2;
45474 	int result;
45475 
45476 	SAVE_OPLINE();
45477 	op1 = _get_zval_ptr_cv_deref_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
45478 	op2 = _get_zval_ptr_tmp(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
45479 	result = fast_is_not_identical_function(op1, op2);
45480 
45481 	zval_ptr_dtor_nogc(free_op2);
45482 	ZEND_VM_SMART_BRANCH(result, 1);
45483 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
45484 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
45485 }
45486 
45487 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SPEC_CV_TMP_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
45488 {
45489 	USE_OPLINE
45490 	zend_free_op free_op2;
45491 	zval *value;
45492 	zval *variable_ptr;
45493 
45494 	SAVE_OPLINE();
45495 	value = _get_zval_ptr_tmp(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
45496 	variable_ptr = EX_VAR(opline->op1.var);
45497 
45498 	if (IS_CV == IS_VAR && UNEXPECTED(Z_ISERROR_P(variable_ptr))) {
45499 		zval_ptr_dtor_nogc(free_op2);
45500 		if (UNEXPECTED(0)) {
45501 			ZVAL_NULL(EX_VAR(opline->result.var));
45502 		}
45503 	} else {
45504 		value = zend_assign_to_variable(variable_ptr, value, IS_TMP_VAR);
45505 		if (UNEXPECTED(0)) {
45506 			ZVAL_COPY(EX_VAR(opline->result.var), value);
45507 		}
45508 
45509 		/* zend_assign_to_variable() always takes care of op2, never free it! */
45510 	}
45511 
45512 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
45513 }
45514 
45515 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SPEC_CV_TMP_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
45516 {
45517 	USE_OPLINE
45518 	zend_free_op free_op2;
45519 	zval *value;
45520 	zval *variable_ptr;
45521 
45522 	SAVE_OPLINE();
45523 	value = _get_zval_ptr_tmp(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
45524 	variable_ptr = EX_VAR(opline->op1.var);
45525 
45526 	if (IS_CV == IS_VAR && UNEXPECTED(Z_ISERROR_P(variable_ptr))) {
45527 		zval_ptr_dtor_nogc(free_op2);
45528 		if (UNEXPECTED(1)) {
45529 			ZVAL_NULL(EX_VAR(opline->result.var));
45530 		}
45531 	} else {
45532 		value = zend_assign_to_variable(variable_ptr, value, IS_TMP_VAR);
45533 		if (UNEXPECTED(1)) {
45534 			ZVAL_COPY(EX_VAR(opline->result.var), value);
45535 		}
45536 
45537 		/* zend_assign_to_variable() always takes care of op2, never free it! */
45538 	}
45539 
45540 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
45541 }
45542 
45543 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_YIELD_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
45544 {
45545 	USE_OPLINE
45546 
45547 	zend_generator *generator = zend_get_running_generator(EXECUTE_DATA_C);
45548 
45549 	SAVE_OPLINE();
45550 	if (UNEXPECTED(generator->flags & ZEND_GENERATOR_FORCED_CLOSE)) {
45551 		ZEND_VM_TAIL_CALL(zend_yield_in_closed_generator_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
45552 	}
45553 
45554 	/* Destroy the previously yielded value */
45555 	zval_ptr_dtor(&generator->value);
45556 
45557 	/* Destroy the previously yielded key */
45558 	zval_ptr_dtor(&generator->key);
45559 
45560 	/* Set the new yielded value */
45561 	if (IS_CV != IS_UNUSED) {
45562 
45563 
45564 		if (UNEXPECTED(EX(func)->op_array.fn_flags & ZEND_ACC_RETURN_REFERENCE)) {
45565 			/* Constants and temporary variables aren't yieldable by reference,
45566 			 * but we still allow them with a notice. */
45567 			if (IS_CV & (IS_CONST|IS_TMP_VAR)) {
45568 				zval *value;
45569 
45570 				zend_error(E_NOTICE, "Only variable references should be yielded by reference");
45571 
45572 				value = _get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
45573 				ZVAL_COPY_VALUE(&generator->value, value);
45574 				if (IS_CV == IS_CONST) {
45575 					if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
45576 						Z_ADDREF(generator->value);
45577 					}
45578 				}
45579 			} else {
45580 				zval *value_ptr = _get_zval_ptr_cv_BP_VAR_W(opline->op1.var EXECUTE_DATA_CC);
45581 
45582 				/* If a function call result is yielded and the function did
45583 				 * not return by reference we throw a notice. */
45584 				if (IS_CV == IS_VAR &&
45585 				    (value_ptr == &EG(uninitialized_zval) ||
45586 				     (opline->extended_value == ZEND_RETURNS_FUNCTION &&
45587 				      !Z_ISREF_P(value_ptr)))) {
45588 					zend_error(E_NOTICE, "Only variable references should be yielded by reference");
45589 					ZVAL_COPY(&generator->value, value_ptr);
45590 				} else {
45591 					if (Z_ISREF_P(value_ptr)) {
45592 						Z_ADDREF_P(value_ptr);
45593 					} else {
45594 						ZVAL_MAKE_REF_EX(value_ptr, 2);
45595 					}
45596 					ZVAL_REF(&generator->value, Z_REF_P(value_ptr));
45597 				}
45598 
45599 			}
45600 		} else {
45601 			zval *value = _get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
45602 
45603 			/* Consts, temporary variables and references need copying */
45604 			if (IS_CV == IS_CONST) {
45605 				ZVAL_COPY_VALUE(&generator->value, value);
45606 				if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
45607 					Z_ADDREF(generator->value);
45608 				}
45609 			} else if (IS_CV == IS_TMP_VAR) {
45610 				ZVAL_COPY_VALUE(&generator->value, value);
45611             } else if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
45612 				ZVAL_COPY(&generator->value, Z_REFVAL_P(value));
45613 
45614 			} else {
45615 				ZVAL_COPY_VALUE(&generator->value, value);
45616 				if (IS_CV == IS_CV) {
45617 					if (Z_OPT_REFCOUNTED_P(value)) Z_ADDREF_P(value);
45618 				}
45619 			}
45620 		}
45621 	} else {
45622 		/* If no value was specified yield null */
45623 		ZVAL_NULL(&generator->value);
45624 	}
45625 
45626 	/* Set the new yielded key */
45627 	if (IS_TMP_VAR != IS_UNUSED) {
45628 		zend_free_op free_op2;
45629 		zval *key = _get_zval_ptr_tmp(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
45630 
45631 		/* Consts, temporary variables and references need copying */
45632 		if (IS_TMP_VAR == IS_CONST) {
45633 			ZVAL_COPY_VALUE(&generator->key, key);
45634 			if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->key))) {
45635 				Z_ADDREF(generator->key);
45636 			}
45637 		} else if (IS_TMP_VAR == IS_TMP_VAR) {
45638 			ZVAL_COPY_VALUE(&generator->key, key);
45639 		} else if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && Z_ISREF_P(key)) {
45640 			ZVAL_COPY(&generator->key, Z_REFVAL_P(key));
45641 
45642 		} else {
45643 			ZVAL_COPY_VALUE(&generator->key, key);
45644 			if (IS_TMP_VAR == IS_CV) {
45645 				if (Z_OPT_REFCOUNTED_P(key)) Z_ADDREF_P(key);
45646 			}
45647 		}
45648 
45649 		if (Z_TYPE(generator->key) == IS_LONG
45650 		    && Z_LVAL(generator->key) > generator->largest_used_integer_key
45651 		) {
45652 			generator->largest_used_integer_key = Z_LVAL(generator->key);
45653 		}
45654 	} else {
45655 		/* If no key was specified we use auto-increment keys */
45656 		generator->largest_used_integer_key++;
45657 		ZVAL_LONG(&generator->key, generator->largest_used_integer_key);
45658 	}
45659 
45660 	if (RETURN_VALUE_USED(opline)) {
45661 		/* If the return value of yield is used set the send
45662 		 * target and initialize it to NULL */
45663 		generator->send_target = EX_VAR(opline->result.var);
45664 		ZVAL_NULL(generator->send_target);
45665 	} else {
45666 		generator->send_target = NULL;
45667 	}
45668 
45669 	/* We increment to the next op, so we are at the correct position when the
45670 	 * generator is resumed. */
45671 	ZEND_VM_INC_OPCODE();
45672 
45673 	/* The GOTO VM uses a local opline variable. We need to set the opline
45674 	 * variable in execute_data so we don't resume at an old position. */
45675 	SAVE_OPLINE();
45676 
45677 	ZEND_VM_RETURN();
45678 }
45679 
45680 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_IDENTICAL_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
45681 {
45682 	USE_OPLINE
45683 	zend_free_op free_op2;
45684 	zval *op1, *op2;
45685 	int result;
45686 
45687 	SAVE_OPLINE();
45688 	op1 = _get_zval_ptr_cv_deref_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
45689 	op2 = _get_zval_ptr_var_deref(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
45690 	result = fast_is_identical_function(op1, op2);
45691 
45692 	zval_ptr_dtor_nogc(free_op2);
45693 	ZEND_VM_SMART_BRANCH(result, 1);
45694 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
45695 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
45696 }
45697 
45698 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_NOT_IDENTICAL_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
45699 {
45700 	USE_OPLINE
45701 	zend_free_op free_op2;
45702 	zval *op1, *op2;
45703 	int result;
45704 
45705 	SAVE_OPLINE();
45706 	op1 = _get_zval_ptr_cv_deref_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
45707 	op2 = _get_zval_ptr_var_deref(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
45708 	result = fast_is_not_identical_function(op1, op2);
45709 
45710 	zval_ptr_dtor_nogc(free_op2);
45711 	ZEND_VM_SMART_BRANCH(result, 1);
45712 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
45713 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
45714 }
45715 
45716 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_fetch_static_prop_helper_SPEC_CV_VAR(int type ZEND_OPCODE_HANDLER_ARGS_DC)
45717 {
45718 	USE_OPLINE
45719 
45720 	zval *varname;
45721 	zval *retval;
45722 	zend_string *name, *tmp_name;
45723 	zend_class_entry *ce;
45724 
45725 	SAVE_OPLINE();
45726 
45727 	do {
45728 		if (IS_VAR == IS_CONST) {
45729 			if (IS_CV == IS_CONST && EXPECTED((ce = CACHED_PTR(opline->extended_value)) != NULL)) {
45730 				retval = CACHED_PTR(opline->extended_value + sizeof(void*));
45731 				break;
45732 			} else {
45733 				zval *class_name = RT_CONSTANT(opline, opline->op2);
45734 
45735 				if (UNEXPECTED((ce = CACHED_PTR(opline->extended_value)) == NULL)) {
45736 					ce = zend_fetch_class_by_name(Z_STR_P(class_name), class_name + 1, ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
45737 					if (UNEXPECTED(ce == NULL)) {
45738 
45739 						retval = NULL;
45740 						break;
45741 					}
45742 					if (IS_CV != IS_CONST) {
45743 						CACHE_PTR(opline->extended_value, ce);
45744 					}
45745 				}
45746 			}
45747 		} else {
45748 			if (IS_VAR == IS_UNUSED) {
45749 				ce = zend_fetch_class(NULL, opline->op2.num);
45750 				if (UNEXPECTED(ce == NULL)) {
45751 
45752 					retval = NULL;
45753 					break;
45754 				}
45755 			} else {
45756 				ce = Z_CE_P(EX_VAR(opline->op2.var));
45757 			}
45758 			if (IS_CV == IS_CONST &&
45759 			    EXPECTED(CACHED_PTR(opline->extended_value) == ce)) {
45760 				retval = CACHED_PTR(opline->extended_value + sizeof(void*));
45761 				break;
45762 			}
45763 		}
45764 
45765 		varname = EX_VAR(opline->op1.var);
45766 		if (IS_CV == IS_CONST) {
45767 			name = Z_STR_P(varname);
45768 		} else if (EXPECTED(Z_TYPE_P(varname) == IS_STRING)) {
45769 			name = Z_STR_P(varname);
45770 			tmp_name = NULL;
45771 		} else {
45772 			if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(varname) == IS_UNDEF)) {
45773 				zval_undefined_cv(EX(opline)->op1.var EXECUTE_DATA_CC);
45774 			}
45775 			name = zval_get_tmp_string(varname, &tmp_name);
45776 		}
45777 
45778 		retval = zend_std_get_static_property(ce, name, type == BP_VAR_IS);
45779 
45780 		if (IS_CV != IS_CONST) {
45781 			zend_tmp_string_release(tmp_name);
45782 		}
45783 
45784 		if (IS_CV == IS_CONST && EXPECTED(retval)) {
45785 			CACHE_POLYMORPHIC_PTR(opline->extended_value, ce, retval);
45786 		}
45787 
45788 	} while (0);
45789 
45790 	if (UNEXPECTED(retval == NULL)) {
45791 		if (EG(exception)) {
45792 			ZVAL_UNDEF(EX_VAR(opline->result.var));
45793 			HANDLE_EXCEPTION();
45794 		} else {
45795 			ZEND_ASSERT(type == BP_VAR_IS);
45796 			retval = &EG(uninitialized_zval);
45797 		}
45798 	}
45799 
45800 	if (type == BP_VAR_R || type == BP_VAR_IS) {
45801 		ZVAL_COPY_DEREF(EX_VAR(opline->result.var), retval);
45802 	} else {
45803 		ZVAL_INDIRECT(EX_VAR(opline->result.var), retval);
45804 	}
45805 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
45806 }
45807 
45808 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_R_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
45809 {
45810 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_CV_VAR(BP_VAR_R ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
45811 }
45812 
45813 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_W_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
45814 {
45815 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_CV_VAR(BP_VAR_W ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
45816 }
45817 
45818 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_RW_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
45819 {
45820 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_CV_VAR(BP_VAR_RW ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
45821 }
45822 
45823 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
45824 {
45825 	int fetch_type =
45826 		(UNEXPECTED(ZEND_CALL_INFO(EX(call)) & ZEND_CALL_SEND_ARG_BY_REF)) ?
45827 			BP_VAR_W : BP_VAR_R;
45828 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_CV_VAR(fetch_type ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
45829 }
45830 
45831 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_UNSET_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
45832 {
45833 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_CV_VAR(BP_VAR_UNSET ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
45834 }
45835 
45836 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_IS_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
45837 {
45838 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_CV_VAR(BP_VAR_IS ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
45839 }
45840 
45841 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SPEC_CV_VAR_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
45842 {
45843 	USE_OPLINE
45844 	zend_free_op free_op2;
45845 	zval *value;
45846 	zval *variable_ptr;
45847 
45848 	SAVE_OPLINE();
45849 	value = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
45850 	variable_ptr = EX_VAR(opline->op1.var);
45851 
45852 	if (IS_CV == IS_VAR && UNEXPECTED(Z_ISERROR_P(variable_ptr))) {
45853 		zval_ptr_dtor_nogc(free_op2);
45854 		if (UNEXPECTED(0)) {
45855 			ZVAL_NULL(EX_VAR(opline->result.var));
45856 		}
45857 	} else {
45858 		value = zend_assign_to_variable(variable_ptr, value, IS_VAR);
45859 		if (UNEXPECTED(0)) {
45860 			ZVAL_COPY(EX_VAR(opline->result.var), value);
45861 		}
45862 
45863 		/* zend_assign_to_variable() always takes care of op2, never free it! */
45864 	}
45865 
45866 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
45867 }
45868 
45869 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SPEC_CV_VAR_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
45870 {
45871 	USE_OPLINE
45872 	zend_free_op free_op2;
45873 	zval *value;
45874 	zval *variable_ptr;
45875 
45876 	SAVE_OPLINE();
45877 	value = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
45878 	variable_ptr = EX_VAR(opline->op1.var);
45879 
45880 	if (IS_CV == IS_VAR && UNEXPECTED(Z_ISERROR_P(variable_ptr))) {
45881 		zval_ptr_dtor_nogc(free_op2);
45882 		if (UNEXPECTED(1)) {
45883 			ZVAL_NULL(EX_VAR(opline->result.var));
45884 		}
45885 	} else {
45886 		value = zend_assign_to_variable(variable_ptr, value, IS_VAR);
45887 		if (UNEXPECTED(1)) {
45888 			ZVAL_COPY(EX_VAR(opline->result.var), value);
45889 		}
45890 
45891 		/* zend_assign_to_variable() always takes care of op2, never free it! */
45892 	}
45893 
45894 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
45895 }
45896 
45897 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_REF_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
45898 {
45899 	USE_OPLINE
45900 	zend_free_op free_op2;
45901 	zval *variable_ptr;
45902 	zval *value_ptr;
45903 
45904 	SAVE_OPLINE();
45905 	value_ptr = _get_zval_ptr_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
45906 	variable_ptr = EX_VAR(opline->op1.var);
45907 
45908 	if (IS_CV == IS_VAR && UNEXPECTED(Z_ISERROR_P(variable_ptr))) {
45909 		variable_ptr = &EG(uninitialized_zval);
45910 	} else if (IS_CV == IS_VAR &&
45911 	           UNEXPECTED(Z_TYPE_P(EX_VAR(opline->op1.var)) != IS_INDIRECT)) {
45912 
45913 		zend_throw_error(NULL, "Cannot assign by reference to overloaded object");
45914 
45915 		if (UNEXPECTED(free_op2)) {zval_ptr_dtor_nogc(free_op2);};
45916 		UNDEF_RESULT();
45917 		HANDLE_EXCEPTION();
45918 	} else if (IS_VAR == IS_VAR && UNEXPECTED(Z_ISERROR_P(value_ptr))) {
45919 		variable_ptr = &EG(uninitialized_zval);
45920 	} else if (IS_VAR == IS_VAR &&
45921 	           opline->extended_value == ZEND_RETURNS_FUNCTION &&
45922 			   UNEXPECTED(!Z_ISREF_P(value_ptr))) {
45923 
45924 		if (UNEXPECTED(!zend_wrong_assign_to_variable_reference(variable_ptr, value_ptr, IS_VAR OPLINE_CC EXECUTE_DATA_CC))) {
45925 			if (UNEXPECTED(free_op2)) {zval_ptr_dtor_nogc(free_op2);};
45926 			UNDEF_RESULT();
45927 			HANDLE_EXCEPTION();
45928 		}
45929 
45930 		/* op2 freed by assign_to_variable */
45931 
45932 		ZEND_VM_NEXT_OPCODE();
45933 	} else {
45934 		zend_assign_to_variable_reference(variable_ptr, value_ptr);
45935 	}
45936 
45937 	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
45938 		ZVAL_COPY(EX_VAR(opline->result.var), variable_ptr);
45939 	}
45940 
45941 	if (UNEXPECTED(free_op2)) {zval_ptr_dtor_nogc(free_op2);};
45942 
45943 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
45944 }
45945 
45946 static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_UNSET_STATIC_PROP_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
45947 {
45948 	USE_OPLINE
45949 	zval *varname;
45950 	zend_string *name, *tmp_name;
45951 	zend_class_entry *ce;
45952 
45953 
45954 	SAVE_OPLINE();
45955 
45956 	if (IS_VAR == IS_CONST) {
45957 		ce = CACHED_PTR(opline->extended_value);
45958 		if (UNEXPECTED(ce == NULL)) {
45959 			ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op2)), RT_CONSTANT(opline, opline->op2) + 1, ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
45960 			if (UNEXPECTED(ce == NULL)) {
45961 				ZEND_ASSERT(EG(exception));
45962 
45963 				HANDLE_EXCEPTION();
45964 			}
45965 			/*CACHE_PTR(opline->extended_value, ce);*/
45966 		}
45967 	} else if (IS_VAR == IS_UNUSED) {
45968 		ce = zend_fetch_class(NULL, opline->op2.num);
45969 		if (UNEXPECTED(ce == NULL)) {
45970 			ZEND_ASSERT(EG(exception));
45971 
45972 			HANDLE_EXCEPTION();
45973 		}
45974 	} else {
45975 		ce = Z_CE_P(EX_VAR(opline->op2.var));
45976 	}
45977 
45978 	varname = EX_VAR(opline->op1.var);
45979 	if (IS_CV == IS_CONST) {
45980 		name = Z_STR_P(varname);
45981 	} else if (EXPECTED(Z_TYPE_P(varname) == IS_STRING)) {
45982 		name = Z_STR_P(varname);
45983 		tmp_name = NULL;
45984 	} else {
45985 		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(varname) == IS_UNDEF)) {
45986 			varname = GET_OP1_UNDEF_CV(varname, BP_VAR_R);
45987 		}
45988 		name = zval_get_tmp_string(varname, &tmp_name);
45989 	}
45990 
45991 	zend_std_unset_static_property(ce, name);
45992 
45993 	if (IS_CV != IS_CONST) {
45994 		zend_tmp_string_release(tmp_name);
45995 	}
45996 
45997 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
45998 }
45999 
46000 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
46001 {
46002 	USE_OPLINE
46003 	zval *value;
46004 	int result;
46005 
46006 	zval *varname;
46007 	zend_string *name, *tmp_name;
46008 	zend_class_entry *ce;
46009 
46010 	SAVE_OPLINE();
46011 	if (IS_VAR == IS_CONST) {
46012 		if (IS_CV == IS_CONST && EXPECTED((ce = CACHED_PTR(opline->extended_value & ~ZEND_ISEMPTY)) != NULL)) {
46013 			value = CACHED_PTR((opline->extended_value & ~ZEND_ISEMPTY) + sizeof(void*));
46014 			goto is_static_prop_return;
46015 		} else if (UNEXPECTED((ce = CACHED_PTR(opline->extended_value & ~ZEND_ISEMPTY)) == NULL)) {
46016 			ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op2)), RT_CONSTANT(opline, opline->op2) + 1, ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
46017 			if (UNEXPECTED(ce == NULL)) {
46018 				ZEND_ASSERT(EG(exception));
46019 				ZVAL_UNDEF(EX_VAR(opline->result.var));
46020 				HANDLE_EXCEPTION();
46021 			}
46022 			if (IS_CV != IS_CONST) {
46023 				CACHE_PTR(opline->extended_value & ~ZEND_ISEMPTY, ce);
46024 			}
46025 		}
46026 	} else {
46027 		if (IS_VAR == IS_UNUSED) {
46028 			ce = zend_fetch_class(NULL, opline->op2.num);
46029 			if (UNEXPECTED(ce == NULL)) {
46030 				ZEND_ASSERT(EG(exception));
46031 
46032 				ZVAL_UNDEF(EX_VAR(opline->result.var));
46033 				HANDLE_EXCEPTION();
46034 			}
46035 		} else {
46036 			ce = Z_CE_P(EX_VAR(opline->op2.var));
46037 		}
46038 		if (IS_CV == IS_CONST &&
46039 		    EXPECTED(CACHED_PTR(opline->extended_value & ~ZEND_ISEMPTY) == ce)) {
46040 
46041 			value = CACHED_PTR((opline->extended_value & ~ZEND_ISEMPTY) + sizeof(void*));
46042 			goto is_static_prop_return;
46043 		}
46044 	}
46045 
46046 	varname = _get_zval_ptr_cv_BP_VAR_IS(opline->op1.var EXECUTE_DATA_CC);
46047 	if (IS_CV == IS_CONST) {
46048 		name = Z_STR_P(varname);
46049 	} else {
46050 		name = zval_get_tmp_string(varname, &tmp_name);
46051 	}
46052 
46053 	value = zend_std_get_static_property(ce, name, 1);
46054 
46055 	if (IS_CV == IS_CONST && value) {
46056 		CACHE_POLYMORPHIC_PTR(opline->extended_value & ~ZEND_ISEMPTY, ce, value);
46057 	}
46058 
46059 	if (IS_CV != IS_CONST) {
46060 		zend_tmp_string_release(tmp_name);
46061 	}
46062 
46063 is_static_prop_return:
46064 	if (!(opline->extended_value & ZEND_ISEMPTY)) {
46065 		result = value && Z_TYPE_P(value) > IS_NULL &&
46066 		    (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL);
46067 	} else {
46068 		result = !value || !i_zend_is_true(value);
46069 	}
46070 
46071 	ZEND_VM_SMART_BRANCH(result, 1);
46072 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
46073 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
46074 }
46075 
46076 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INSTANCEOF_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
46077 {
46078 	USE_OPLINE
46079 
46080 	zval *expr;
46081 	zend_bool result;
46082 
46083 	SAVE_OPLINE();
46084 	expr = EX_VAR(opline->op1.var);
46085 
46086 try_instanceof:
46087 	if (Z_TYPE_P(expr) == IS_OBJECT) {
46088 		zend_class_entry *ce;
46089 
46090 		if (IS_VAR == IS_CONST) {
46091 			ce = CACHED_PTR(opline->extended_value);
46092 			if (UNEXPECTED(ce == NULL)) {
46093 				ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op2)), RT_CONSTANT(opline, opline->op2) + 1, ZEND_FETCH_CLASS_NO_AUTOLOAD);
46094 				if (EXPECTED(ce)) {
46095 					CACHE_PTR(opline->extended_value, ce);
46096 				}
46097 			}
46098 		} else if (IS_VAR == IS_UNUSED) {
46099 			ce = zend_fetch_class(NULL, opline->op2.num);
46100 			if (UNEXPECTED(ce == NULL)) {
46101 				ZEND_ASSERT(EG(exception));
46102 
46103 				ZVAL_UNDEF(EX_VAR(opline->result.var));
46104 				HANDLE_EXCEPTION();
46105 			}
46106 		} else {
46107 			ce = Z_CE_P(EX_VAR(opline->op2.var));
46108 		}
46109 		result = ce && instanceof_function(Z_OBJCE_P(expr), ce);
46110 	} else if ((IS_CV & (IS_VAR|IS_CV)) && Z_TYPE_P(expr) == IS_REFERENCE) {
46111 		expr = Z_REFVAL_P(expr);
46112 		goto try_instanceof;
46113 	} else {
46114 		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(expr) == IS_UNDEF)) {
46115 			GET_OP1_UNDEF_CV(expr, BP_VAR_R);
46116 		}
46117 		result = 0;
46118 	}
46119 
46120 	ZEND_VM_SMART_BRANCH(result, 1);
46121 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
46122 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
46123 }
46124 
46125 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_YIELD_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
46126 {
46127 	USE_OPLINE
46128 
46129 	zend_generator *generator = zend_get_running_generator(EXECUTE_DATA_C);
46130 
46131 	SAVE_OPLINE();
46132 	if (UNEXPECTED(generator->flags & ZEND_GENERATOR_FORCED_CLOSE)) {
46133 		ZEND_VM_TAIL_CALL(zend_yield_in_closed_generator_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
46134 	}
46135 
46136 	/* Destroy the previously yielded value */
46137 	zval_ptr_dtor(&generator->value);
46138 
46139 	/* Destroy the previously yielded key */
46140 	zval_ptr_dtor(&generator->key);
46141 
46142 	/* Set the new yielded value */
46143 	if (IS_CV != IS_UNUSED) {
46144 
46145 
46146 		if (UNEXPECTED(EX(func)->op_array.fn_flags & ZEND_ACC_RETURN_REFERENCE)) {
46147 			/* Constants and temporary variables aren't yieldable by reference,
46148 			 * but we still allow them with a notice. */
46149 			if (IS_CV & (IS_CONST|IS_TMP_VAR)) {
46150 				zval *value;
46151 
46152 				zend_error(E_NOTICE, "Only variable references should be yielded by reference");
46153 
46154 				value = _get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
46155 				ZVAL_COPY_VALUE(&generator->value, value);
46156 				if (IS_CV == IS_CONST) {
46157 					if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
46158 						Z_ADDREF(generator->value);
46159 					}
46160 				}
46161 			} else {
46162 				zval *value_ptr = _get_zval_ptr_cv_BP_VAR_W(opline->op1.var EXECUTE_DATA_CC);
46163 
46164 				/* If a function call result is yielded and the function did
46165 				 * not return by reference we throw a notice. */
46166 				if (IS_CV == IS_VAR &&
46167 				    (value_ptr == &EG(uninitialized_zval) ||
46168 				     (opline->extended_value == ZEND_RETURNS_FUNCTION &&
46169 				      !Z_ISREF_P(value_ptr)))) {
46170 					zend_error(E_NOTICE, "Only variable references should be yielded by reference");
46171 					ZVAL_COPY(&generator->value, value_ptr);
46172 				} else {
46173 					if (Z_ISREF_P(value_ptr)) {
46174 						Z_ADDREF_P(value_ptr);
46175 					} else {
46176 						ZVAL_MAKE_REF_EX(value_ptr, 2);
46177 					}
46178 					ZVAL_REF(&generator->value, Z_REF_P(value_ptr));
46179 				}
46180 
46181 			}
46182 		} else {
46183 			zval *value = _get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
46184 
46185 			/* Consts, temporary variables and references need copying */
46186 			if (IS_CV == IS_CONST) {
46187 				ZVAL_COPY_VALUE(&generator->value, value);
46188 				if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
46189 					Z_ADDREF(generator->value);
46190 				}
46191 			} else if (IS_CV == IS_TMP_VAR) {
46192 				ZVAL_COPY_VALUE(&generator->value, value);
46193             } else if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
46194 				ZVAL_COPY(&generator->value, Z_REFVAL_P(value));
46195 
46196 			} else {
46197 				ZVAL_COPY_VALUE(&generator->value, value);
46198 				if (IS_CV == IS_CV) {
46199 					if (Z_OPT_REFCOUNTED_P(value)) Z_ADDREF_P(value);
46200 				}
46201 			}
46202 		}
46203 	} else {
46204 		/* If no value was specified yield null */
46205 		ZVAL_NULL(&generator->value);
46206 	}
46207 
46208 	/* Set the new yielded key */
46209 	if (IS_VAR != IS_UNUSED) {
46210 		zend_free_op free_op2;
46211 		zval *key = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
46212 
46213 		/* Consts, temporary variables and references need copying */
46214 		if (IS_VAR == IS_CONST) {
46215 			ZVAL_COPY_VALUE(&generator->key, key);
46216 			if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->key))) {
46217 				Z_ADDREF(generator->key);
46218 			}
46219 		} else if (IS_VAR == IS_TMP_VAR) {
46220 			ZVAL_COPY_VALUE(&generator->key, key);
46221 		} else if ((IS_VAR & (IS_VAR|IS_CV)) && Z_ISREF_P(key)) {
46222 			ZVAL_COPY(&generator->key, Z_REFVAL_P(key));
46223 			zval_ptr_dtor_nogc(free_op2);
46224 		} else {
46225 			ZVAL_COPY_VALUE(&generator->key, key);
46226 			if (IS_VAR == IS_CV) {
46227 				if (Z_OPT_REFCOUNTED_P(key)) Z_ADDREF_P(key);
46228 			}
46229 		}
46230 
46231 		if (Z_TYPE(generator->key) == IS_LONG
46232 		    && Z_LVAL(generator->key) > generator->largest_used_integer_key
46233 		) {
46234 			generator->largest_used_integer_key = Z_LVAL(generator->key);
46235 		}
46236 	} else {
46237 		/* If no key was specified we use auto-increment keys */
46238 		generator->largest_used_integer_key++;
46239 		ZVAL_LONG(&generator->key, generator->largest_used_integer_key);
46240 	}
46241 
46242 	if (RETURN_VALUE_USED(opline)) {
46243 		/* If the return value of yield is used set the send
46244 		 * target and initialize it to NULL */
46245 		generator->send_target = EX_VAR(opline->result.var);
46246 		ZVAL_NULL(generator->send_target);
46247 	} else {
46248 		generator->send_target = NULL;
46249 	}
46250 
46251 	/* We increment to the next op, so we are at the correct position when the
46252 	 * generator is resumed. */
46253 	ZEND_VM_INC_OPCODE();
46254 
46255 	/* The GOTO VM uses a local opline variable. We need to set the opline
46256 	 * variable in execute_data so we don't resume at an old position. */
46257 	SAVE_OPLINE();
46258 
46259 	ZEND_VM_RETURN();
46260 }
46261 
46262 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_dim_helper_SPEC_CV_UNUSED(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
46263 {
46264 	USE_OPLINE
46265 	zend_free_op free_op_data1;
46266 	zval *var_ptr;
46267 	zval *value, *container, *dim;
46268 
46269 	SAVE_OPLINE();
46270 	container = EX_VAR(opline->op1.var);
46271 
46272 	if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
46273 assign_dim_op_array:
46274 		SEPARATE_ARRAY(container);
46275 assign_dim_op_new_array:
46276 		dim = NULL;
46277 		if (IS_UNUSED == IS_UNUSED) {
46278 			var_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(container), &EG(uninitialized_zval));
46279 			if (UNEXPECTED(!var_ptr)) {
46280 				zend_cannot_add_element();
46281 				goto assign_dim_op_ret_null;
46282 			}
46283 		} else {
46284 			if (IS_UNUSED == IS_CONST) {
46285 				var_ptr = zend_fetch_dimension_address_inner_RW_CONST(Z_ARRVAL_P(container), dim EXECUTE_DATA_CC);
46286 			} else {
46287 				var_ptr = zend_fetch_dimension_address_inner_RW(Z_ARRVAL_P(container), dim EXECUTE_DATA_CC);
46288 			}
46289 			if (UNEXPECTED(!var_ptr)) {
46290 				goto assign_dim_op_ret_null;
46291 			}
46292 			ZVAL_DEREF(var_ptr);
46293 		}
46294 
46295 		value = get_op_data_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data1);
46296 
46297 		binary_op(var_ptr, var_ptr, value);
46298 
46299 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
46300 			ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
46301 		}
46302 	} else {
46303 		if (EXPECTED(Z_ISREF_P(container))) {
46304 			container = Z_REFVAL_P(container);
46305 			if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
46306 				goto assign_dim_op_array;
46307 			}
46308 		} else if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(container) == IS_UNDEF)) {
46309 			container = GET_OP1_UNDEF_CV(container, BP_VAR_RW);
46310 assign_dim_op_convert_to_array:
46311 			ZVAL_ARR(container, zend_new_array(8));
46312 			goto assign_dim_op_new_array;
46313 		}
46314 
46315 		dim = NULL;
46316 
46317 		if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
46318 			value = get_op_data_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data1);
46319 			if (IS_UNUSED == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
46320 				dim++;
46321 			}
46322 			zend_binary_assign_op_obj_dim(container, dim, value, UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL, binary_op EXECUTE_DATA_CC);
46323 		} else {
46324 			if (UNEXPECTED(Z_TYPE_P(container) == IS_STRING)) {
46325 				if (IS_UNUSED == IS_UNUSED) {
46326 					zend_use_new_element_for_string();
46327 				} else {
46328 					zend_check_string_offset(dim, BP_VAR_RW EXECUTE_DATA_CC);
46329 					zend_wrong_string_offset(EXECUTE_DATA_C);
46330 				}
46331 				UNDEF_RESULT();
46332 			} else if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) {
46333 				goto assign_dim_op_convert_to_array;
46334 			} else {
46335 				if (UNEXPECTED(IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(container)))) {
46336 					zend_use_scalar_as_array();
46337 				}
46338 assign_dim_op_ret_null:
46339 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
46340 					ZVAL_NULL(EX_VAR(opline->result.var));
46341 				}
46342 			}
46343 			value = get_op_data_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data1);
46344 		}
46345 	}
46346 
46347 	FREE_OP(free_op_data1);
46348 
46349 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
46350 }
46351 
46352 static zend_always_inline ZEND_OPCODE_HANDLER_RET zend_binary_assign_op_helper_SPEC_CV_UNUSED_DIM(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
46353 {
46354 #if 1 && IS_UNUSED == IS_UNUSED
46355 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_CV_UNUSED(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
46356 #else
46357 # if 0 || IS_CV != IS_UNUSED
46358 #  if 0
46359 	/* opline->extended_value checks are specialized, don't need opline */
46360 	USE_OPLINE
46361 #  endif
46362 
46363 	if (EXPECTED(0)) {
46364 		ZEND_VM_TAIL_CALL(zend_binary_assign_op_simple_helper_SPEC_CV_UNUSED(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
46365 	}
46366 	if (EXPECTED(1)) {
46367 		ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_CV_UNUSED(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
46368 	}
46369 # endif
46370 
46371 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_obj_helper_SPEC_CV_UNUSED(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
46372 #endif
46373 }
46374 
46375 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_ADD_SPEC_CV_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
46376 {
46377 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_UNUSED_DIM(add_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
46378 }
46379 
46380 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SUB_SPEC_CV_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
46381 {
46382 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_UNUSED_DIM(sub_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
46383 }
46384 
46385 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MUL_SPEC_CV_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
46386 {
46387 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_UNUSED_DIM(mul_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
46388 }
46389 
46390 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIV_SPEC_CV_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
46391 {
46392 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_UNUSED_DIM(div_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
46393 }
46394 
46395 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MOD_SPEC_CV_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
46396 {
46397 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_UNUSED_DIM(mod_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
46398 }
46399 
46400 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SL_SPEC_CV_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
46401 {
46402 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_UNUSED_DIM(shift_left_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
46403 }
46404 
46405 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SR_SPEC_CV_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
46406 {
46407 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_UNUSED_DIM(shift_right_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
46408 }
46409 
46410 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_CONCAT_SPEC_CV_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
46411 {
46412 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_UNUSED_DIM(concat_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
46413 }
46414 
46415 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_OR_SPEC_CV_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
46416 {
46417 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_UNUSED_DIM(bitwise_or_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
46418 }
46419 
46420 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_AND_SPEC_CV_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
46421 {
46422 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_UNUSED_DIM(bitwise_and_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
46423 }
46424 
46425 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_XOR_SPEC_CV_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
46426 {
46427 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_UNUSED_DIM(bitwise_xor_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
46428 }
46429 
46430 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_POW_SPEC_CV_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
46431 {
46432 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_UNUSED_DIM(pow_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
46433 }
46434 
46435 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_CV_UNUSED(int type ZEND_OPCODE_HANDLER_ARGS_DC)
46436 {
46437 	USE_OPLINE
46438 
46439 	zval *varname;
46440 	zval *retval;
46441 	zend_string *name, *tmp_name;
46442 	HashTable *target_symbol_table;
46443 
46444 	SAVE_OPLINE();
46445 	varname = EX_VAR(opline->op1.var);
46446 
46447 	if (IS_CV == IS_CONST) {
46448 		name = Z_STR_P(varname);
46449 	} else if (EXPECTED(Z_TYPE_P(varname) == IS_STRING)) {
46450 		name = Z_STR_P(varname);
46451 		tmp_name = NULL;
46452 	} else {
46453 		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(varname) == IS_UNDEF)) {
46454 			GET_OP1_UNDEF_CV(varname, BP_VAR_R);
46455 		}
46456 		name = zval_get_tmp_string(varname, &tmp_name);
46457 	}
46458 
46459 	target_symbol_table = zend_get_target_symbol_table(opline->extended_value EXECUTE_DATA_CC);
46460 	retval = zend_hash_find_ex(target_symbol_table, name, IS_CV == IS_CONST);
46461 	if (retval == NULL) {
46462 		if (UNEXPECTED(zend_string_equals(name, ZSTR_KNOWN(ZEND_STR_THIS)))) {
46463 fetch_this:
46464 			zend_fetch_this_var(type OPLINE_CC EXECUTE_DATA_CC);
46465 			if (IS_CV != IS_CONST) {
46466 				zend_tmp_string_release(tmp_name);
46467 			}
46468 			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
46469 		}
46470 		if (type == BP_VAR_W) {
46471 			retval = zend_hash_add_new(target_symbol_table, name, &EG(uninitialized_zval));
46472 		} else if (type == BP_VAR_IS) {
46473 			retval = &EG(uninitialized_zval);
46474 		} else {
46475 			zend_error(E_NOTICE,"Undefined variable: %s", ZSTR_VAL(name));
46476 			if (type == BP_VAR_RW) {
46477 				retval = zend_hash_update(target_symbol_table, name, &EG(uninitialized_zval));
46478 			} else {
46479 				retval = &EG(uninitialized_zval);
46480 			}
46481 		}
46482 	/* GLOBAL or $$name variable may be an INDIRECT pointer to CV */
46483 	} else if (Z_TYPE_P(retval) == IS_INDIRECT) {
46484 		retval = Z_INDIRECT_P(retval);
46485 		if (Z_TYPE_P(retval) == IS_UNDEF) {
46486 			if (UNEXPECTED(zend_string_equals(name, ZSTR_KNOWN(ZEND_STR_THIS)))) {
46487 				goto fetch_this;
46488 			}
46489 			if (type == BP_VAR_W) {
46490 				ZVAL_NULL(retval);
46491 			} else if (type == BP_VAR_IS) {
46492 				retval = &EG(uninitialized_zval);
46493 			} else {
46494 				zend_error(E_NOTICE,"Undefined variable: %s", ZSTR_VAL(name));
46495 				if (type == BP_VAR_RW) {
46496 					ZVAL_NULL(retval);
46497 				} else {
46498 					retval = &EG(uninitialized_zval);
46499 				}
46500 			}
46501 		}
46502 	}
46503 
46504 	if (!(opline->extended_value & ZEND_FETCH_GLOBAL_LOCK)) {
46505 
46506 	}
46507 
46508 	if (IS_CV != IS_CONST) {
46509 		zend_tmp_string_release(tmp_name);
46510 	}
46511 
46512 	ZEND_ASSERT(retval != NULL);
46513 	if (type == BP_VAR_R || type == BP_VAR_IS) {
46514 		ZVAL_COPY_DEREF(EX_VAR(opline->result.var), retval);
46515 	} else {
46516 		ZVAL_INDIRECT(EX_VAR(opline->result.var), retval);
46517 	}
46518 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
46519 }
46520 
46521 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_R_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
46522 {
46523 	ZEND_VM_TAIL_CALL(zend_fetch_var_address_helper_SPEC_CV_UNUSED(BP_VAR_R ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
46524 }
46525 
46526 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_W_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
46527 {
46528 	ZEND_VM_TAIL_CALL(zend_fetch_var_address_helper_SPEC_CV_UNUSED(BP_VAR_W ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
46529 }
46530 
46531 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_RW_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
46532 {
46533 	ZEND_VM_TAIL_CALL(zend_fetch_var_address_helper_SPEC_CV_UNUSED(BP_VAR_RW ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
46534 }
46535 
46536 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_FUNC_ARG_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
46537 {
46538 	int fetch_type =
46539 		(UNEXPECTED(ZEND_CALL_INFO(EX(call)) & ZEND_CALL_SEND_ARG_BY_REF)) ?
46540 			BP_VAR_W : BP_VAR_R;
46541 	ZEND_VM_TAIL_CALL(zend_fetch_var_address_helper_SPEC_CV_UNUSED(fetch_type ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
46542 }
46543 
46544 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_UNSET_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
46545 {
46546 	ZEND_VM_TAIL_CALL(zend_fetch_var_address_helper_SPEC_CV_UNUSED(BP_VAR_UNSET ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
46547 }
46548 
46549 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_IS_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
46550 {
46551 	ZEND_VM_TAIL_CALL(zend_fetch_var_address_helper_SPEC_CV_UNUSED(BP_VAR_IS ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
46552 }
46553 
46554 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_fetch_static_prop_helper_SPEC_CV_UNUSED(int type ZEND_OPCODE_HANDLER_ARGS_DC)
46555 {
46556 	USE_OPLINE
46557 
46558 	zval *varname;
46559 	zval *retval;
46560 	zend_string *name, *tmp_name;
46561 	zend_class_entry *ce;
46562 
46563 	SAVE_OPLINE();
46564 
46565 	do {
46566 		if (IS_UNUSED == IS_CONST) {
46567 			if (IS_CV == IS_CONST && EXPECTED((ce = CACHED_PTR(opline->extended_value)) != NULL)) {
46568 				retval = CACHED_PTR(opline->extended_value + sizeof(void*));
46569 				break;
46570 			} else {
46571 				zval *class_name = RT_CONSTANT(opline, opline->op2);
46572 
46573 				if (UNEXPECTED((ce = CACHED_PTR(opline->extended_value)) == NULL)) {
46574 					ce = zend_fetch_class_by_name(Z_STR_P(class_name), class_name + 1, ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
46575 					if (UNEXPECTED(ce == NULL)) {
46576 
46577 						retval = NULL;
46578 						break;
46579 					}
46580 					if (IS_CV != IS_CONST) {
46581 						CACHE_PTR(opline->extended_value, ce);
46582 					}
46583 				}
46584 			}
46585 		} else {
46586 			if (IS_UNUSED == IS_UNUSED) {
46587 				ce = zend_fetch_class(NULL, opline->op2.num);
46588 				if (UNEXPECTED(ce == NULL)) {
46589 
46590 					retval = NULL;
46591 					break;
46592 				}
46593 			} else {
46594 				ce = Z_CE_P(EX_VAR(opline->op2.var));
46595 			}
46596 			if (IS_CV == IS_CONST &&
46597 			    EXPECTED(CACHED_PTR(opline->extended_value) == ce)) {
46598 				retval = CACHED_PTR(opline->extended_value + sizeof(void*));
46599 				break;
46600 			}
46601 		}
46602 
46603 		varname = EX_VAR(opline->op1.var);
46604 		if (IS_CV == IS_CONST) {
46605 			name = Z_STR_P(varname);
46606 		} else if (EXPECTED(Z_TYPE_P(varname) == IS_STRING)) {
46607 			name = Z_STR_P(varname);
46608 			tmp_name = NULL;
46609 		} else {
46610 			if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(varname) == IS_UNDEF)) {
46611 				zval_undefined_cv(EX(opline)->op1.var EXECUTE_DATA_CC);
46612 			}
46613 			name = zval_get_tmp_string(varname, &tmp_name);
46614 		}
46615 
46616 		retval = zend_std_get_static_property(ce, name, type == BP_VAR_IS);
46617 
46618 		if (IS_CV != IS_CONST) {
46619 			zend_tmp_string_release(tmp_name);
46620 		}
46621 
46622 		if (IS_CV == IS_CONST && EXPECTED(retval)) {
46623 			CACHE_POLYMORPHIC_PTR(opline->extended_value, ce, retval);
46624 		}
46625 
46626 	} while (0);
46627 
46628 	if (UNEXPECTED(retval == NULL)) {
46629 		if (EG(exception)) {
46630 			ZVAL_UNDEF(EX_VAR(opline->result.var));
46631 			HANDLE_EXCEPTION();
46632 		} else {
46633 			ZEND_ASSERT(type == BP_VAR_IS);
46634 			retval = &EG(uninitialized_zval);
46635 		}
46636 	}
46637 
46638 	if (type == BP_VAR_R || type == BP_VAR_IS) {
46639 		ZVAL_COPY_DEREF(EX_VAR(opline->result.var), retval);
46640 	} else {
46641 		ZVAL_INDIRECT(EX_VAR(opline->result.var), retval);
46642 	}
46643 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
46644 }
46645 
46646 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_R_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
46647 {
46648 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_CV_UNUSED(BP_VAR_R ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
46649 }
46650 
46651 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_W_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
46652 {
46653 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_CV_UNUSED(BP_VAR_W ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
46654 }
46655 
46656 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_RW_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
46657 {
46658 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_CV_UNUSED(BP_VAR_RW ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
46659 }
46660 
46661 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
46662 {
46663 	int fetch_type =
46664 		(UNEXPECTED(ZEND_CALL_INFO(EX(call)) & ZEND_CALL_SEND_ARG_BY_REF)) ?
46665 			BP_VAR_W : BP_VAR_R;
46666 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_CV_UNUSED(fetch_type ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
46667 }
46668 
46669 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_UNSET_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
46670 {
46671 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_CV_UNUSED(BP_VAR_UNSET ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
46672 }
46673 
46674 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_IS_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
46675 {
46676 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_CV_UNUSED(BP_VAR_IS ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
46677 }
46678 
46679 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_W_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
46680 {
46681 	USE_OPLINE
46682 	zend_free_op free_op1;
46683 	zval *container;
46684 
46685 	SAVE_OPLINE();
46686 	container = EX_VAR(opline->op1.var);
46687 	zend_fetch_dimension_address_W(container, NULL, IS_UNUSED OPLINE_CC EXECUTE_DATA_CC);
46688 
46689 	if (IS_CV == IS_VAR) {
46690 		zval *result = EX_VAR(opline->result.var);
46691 		FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(free_op1, result);
46692 	}
46693 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
46694 }
46695 
46696 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_RW_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
46697 {
46698 	USE_OPLINE
46699 	zend_free_op free_op1;
46700 	zval *container;
46701 
46702 	SAVE_OPLINE();
46703 	container = EX_VAR(opline->op1.var);
46704 	zend_fetch_dimension_address_RW(container, NULL, IS_UNUSED OPLINE_CC EXECUTE_DATA_CC);
46705 
46706 	if (IS_CV == IS_VAR) {
46707 		zval *result = EX_VAR(opline->result.var);
46708 		FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(free_op1, result);
46709 	}
46710 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
46711 }
46712 
46713 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
46714 {
46715 	if (UNEXPECTED(ZEND_CALL_INFO(EX(call)) & ZEND_CALL_SEND_ARG_BY_REF)) {
46716         if ((IS_CV & (IS_CONST|IS_TMP_VAR))) {
46717 			ZEND_VM_TAIL_CALL(zend_use_tmp_in_write_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
46718         }
46719 		ZEND_VM_TAIL_CALL(ZEND_FETCH_DIM_W_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
46720 	} else {
46721 		if (IS_UNUSED == IS_UNUSED) {
46722 			ZEND_VM_TAIL_CALL(zend_use_undef_in_read_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
46723 		}
46724 		ZEND_VM_TAIL_CALL(ZEND_NULL_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
46725 	}
46726 }
46727 
46728 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_CV_UNUSED_OP_DATA_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
46729 {
46730 	USE_OPLINE
46731 
46732 	zval *object_ptr;
46733 	zend_free_op free_op_data;
46734 	zval *value;
46735 	zval *variable_ptr;
46736 	zval *dim;
46737 
46738 	SAVE_OPLINE();
46739 	object_ptr = EX_VAR(opline->op1.var);
46740 
46741 	if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
46742 try_assign_dim_array:
46743 		SEPARATE_ARRAY(object_ptr);
46744 		if (IS_UNUSED == IS_UNUSED) {
46745 			value = RT_CONSTANT((opline+1), (opline+1)->op1);
46746 			if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
46747 				ZVAL_DEREF(value);
46748 			}
46749 			variable_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), value);
46750 			if (UNEXPECTED(variable_ptr == NULL)) {
46751 
46752 				zend_cannot_add_element();
46753 				goto assign_dim_error;
46754 			} else if (IS_CONST == IS_CV) {
46755 				if (Z_REFCOUNTED_P(value)) {
46756 					Z_ADDREF_P(value);
46757 				}
46758 			} else if (IS_CONST == IS_VAR) {
46759 				if (value != free_op_data) {
46760 					if (Z_REFCOUNTED_P(value)) {
46761 						Z_ADDREF_P(value);
46762 					}
46763 
46764 				}
46765 			} else if (IS_CONST == IS_CONST) {
46766 				if (UNEXPECTED(Z_REFCOUNTED_P(value))) {
46767 					Z_ADDREF_P(value);
46768 				}
46769 			}
46770 		} else {
46771 			dim = NULL;
46772 			if (IS_UNUSED == IS_CONST) {
46773 				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
46774 			} else {
46775 				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
46776 			}
46777 			if (UNEXPECTED(variable_ptr == NULL)) {
46778 				goto assign_dim_error;
46779 			}
46780 			value = RT_CONSTANT((opline+1), (opline+1)->op1);
46781 			value = zend_assign_to_variable(variable_ptr, value, IS_CONST);
46782 		}
46783 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
46784 			ZVAL_COPY(EX_VAR(opline->result.var), value);
46785 		}
46786 	} else {
46787 		if (EXPECTED(Z_ISREF_P(object_ptr))) {
46788 			object_ptr = Z_REFVAL_P(object_ptr);
46789 			if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
46790 				goto try_assign_dim_array;
46791 			}
46792 		}
46793 		if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) {
46794 			dim = NULL;
46795 			value = RT_CONSTANT((opline+1), (opline+1)->op1);
46796 
46797 			if (IS_UNUSED == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
46798 				dim++;
46799 			}
46800 			zend_assign_to_object_dim(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
46801 
46802 		} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
46803 			if (IS_UNUSED == IS_UNUSED) {
46804 				zend_use_new_element_for_string();
46805 
46806 
46807 				UNDEF_RESULT();
46808 				HANDLE_EXCEPTION();
46809 			} else {
46810 				dim = NULL;
46811 				value = RT_CONSTANT((opline+1), (opline+1)->op1);
46812 				zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
46813 
46814 			}
46815 		} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
46816 			ZVAL_ARR(object_ptr, zend_new_array(8));
46817 			goto try_assign_dim_array;
46818 		} else {
46819 			if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) {
46820 				zend_use_scalar_as_array();
46821 			}
46822 			dim = NULL;
46823 assign_dim_error:
46824 
46825 			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
46826 				ZVAL_NULL(EX_VAR(opline->result.var));
46827 			}
46828 		}
46829 	}
46830 	if (IS_UNUSED != IS_UNUSED) {
46831 
46832 	}
46833 
46834 	/* assign_dim has two opcodes! */
46835 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
46836 }
46837 
46838 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_CV_UNUSED_OP_DATA_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
46839 {
46840 	USE_OPLINE
46841 
46842 	zval *object_ptr;
46843 	zend_free_op free_op_data;
46844 	zval *value;
46845 	zval *variable_ptr;
46846 	zval *dim;
46847 
46848 	SAVE_OPLINE();
46849 	object_ptr = EX_VAR(opline->op1.var);
46850 
46851 	if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
46852 try_assign_dim_array:
46853 		SEPARATE_ARRAY(object_ptr);
46854 		if (IS_UNUSED == IS_UNUSED) {
46855 			value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
46856 			if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
46857 				ZVAL_DEREF(value);
46858 			}
46859 			variable_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), value);
46860 			if (UNEXPECTED(variable_ptr == NULL)) {
46861 				zval_ptr_dtor_nogc(free_op_data);
46862 				zend_cannot_add_element();
46863 				goto assign_dim_error;
46864 			} else if (IS_TMP_VAR == IS_CV) {
46865 				if (Z_REFCOUNTED_P(value)) {
46866 					Z_ADDREF_P(value);
46867 				}
46868 			} else if (IS_TMP_VAR == IS_VAR) {
46869 				if (value != free_op_data) {
46870 					if (Z_REFCOUNTED_P(value)) {
46871 						Z_ADDREF_P(value);
46872 					}
46873 					zval_ptr_dtor_nogc(free_op_data);
46874 				}
46875 			} else if (IS_TMP_VAR == IS_CONST) {
46876 				if (UNEXPECTED(Z_REFCOUNTED_P(value))) {
46877 					Z_ADDREF_P(value);
46878 				}
46879 			}
46880 		} else {
46881 			dim = NULL;
46882 			if (IS_UNUSED == IS_CONST) {
46883 				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
46884 			} else {
46885 				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
46886 			}
46887 			if (UNEXPECTED(variable_ptr == NULL)) {
46888 				goto assign_dim_error;
46889 			}
46890 			value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
46891 			value = zend_assign_to_variable(variable_ptr, value, IS_TMP_VAR);
46892 		}
46893 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
46894 			ZVAL_COPY(EX_VAR(opline->result.var), value);
46895 		}
46896 	} else {
46897 		if (EXPECTED(Z_ISREF_P(object_ptr))) {
46898 			object_ptr = Z_REFVAL_P(object_ptr);
46899 			if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
46900 				goto try_assign_dim_array;
46901 			}
46902 		}
46903 		if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) {
46904 			dim = NULL;
46905 			value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
46906 
46907 			if (IS_UNUSED == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
46908 				dim++;
46909 			}
46910 			zend_assign_to_object_dim(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
46911 
46912 			zval_ptr_dtor_nogc(free_op_data);
46913 		} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
46914 			if (IS_UNUSED == IS_UNUSED) {
46915 				zend_use_new_element_for_string();
46916 				zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
46917 
46918 				UNDEF_RESULT();
46919 				HANDLE_EXCEPTION();
46920 			} else {
46921 				dim = NULL;
46922 				value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
46923 				zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
46924 				zval_ptr_dtor_nogc(free_op_data);
46925 			}
46926 		} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
46927 			ZVAL_ARR(object_ptr, zend_new_array(8));
46928 			goto try_assign_dim_array;
46929 		} else {
46930 			if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) {
46931 				zend_use_scalar_as_array();
46932 			}
46933 			dim = NULL;
46934 assign_dim_error:
46935 			zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
46936 			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
46937 				ZVAL_NULL(EX_VAR(opline->result.var));
46938 			}
46939 		}
46940 	}
46941 	if (IS_UNUSED != IS_UNUSED) {
46942 
46943 	}
46944 
46945 	/* assign_dim has two opcodes! */
46946 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
46947 }
46948 
46949 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_CV_UNUSED_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
46950 {
46951 	USE_OPLINE
46952 
46953 	zval *object_ptr;
46954 	zend_free_op free_op_data;
46955 	zval *value;
46956 	zval *variable_ptr;
46957 	zval *dim;
46958 
46959 	SAVE_OPLINE();
46960 	object_ptr = EX_VAR(opline->op1.var);
46961 
46962 	if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
46963 try_assign_dim_array:
46964 		SEPARATE_ARRAY(object_ptr);
46965 		if (IS_UNUSED == IS_UNUSED) {
46966 			value = _get_zval_ptr_var((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
46967 			if (IS_VAR == IS_CV || IS_VAR == IS_VAR) {
46968 				ZVAL_DEREF(value);
46969 			}
46970 			variable_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), value);
46971 			if (UNEXPECTED(variable_ptr == NULL)) {
46972 				zval_ptr_dtor_nogc(free_op_data);
46973 				zend_cannot_add_element();
46974 				goto assign_dim_error;
46975 			} else if (IS_VAR == IS_CV) {
46976 				if (Z_REFCOUNTED_P(value)) {
46977 					Z_ADDREF_P(value);
46978 				}
46979 			} else if (IS_VAR == IS_VAR) {
46980 				if (value != free_op_data) {
46981 					if (Z_REFCOUNTED_P(value)) {
46982 						Z_ADDREF_P(value);
46983 					}
46984 					zval_ptr_dtor_nogc(free_op_data);
46985 				}
46986 			} else if (IS_VAR == IS_CONST) {
46987 				if (UNEXPECTED(Z_REFCOUNTED_P(value))) {
46988 					Z_ADDREF_P(value);
46989 				}
46990 			}
46991 		} else {
46992 			dim = NULL;
46993 			if (IS_UNUSED == IS_CONST) {
46994 				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
46995 			} else {
46996 				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
46997 			}
46998 			if (UNEXPECTED(variable_ptr == NULL)) {
46999 				goto assign_dim_error;
47000 			}
47001 			value = _get_zval_ptr_var((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
47002 			value = zend_assign_to_variable(variable_ptr, value, IS_VAR);
47003 		}
47004 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
47005 			ZVAL_COPY(EX_VAR(opline->result.var), value);
47006 		}
47007 	} else {
47008 		if (EXPECTED(Z_ISREF_P(object_ptr))) {
47009 			object_ptr = Z_REFVAL_P(object_ptr);
47010 			if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
47011 				goto try_assign_dim_array;
47012 			}
47013 		}
47014 		if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) {
47015 			dim = NULL;
47016 			value = _get_zval_ptr_var_deref((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
47017 
47018 			if (IS_UNUSED == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
47019 				dim++;
47020 			}
47021 			zend_assign_to_object_dim(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
47022 
47023 			zval_ptr_dtor_nogc(free_op_data);
47024 		} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
47025 			if (IS_UNUSED == IS_UNUSED) {
47026 				zend_use_new_element_for_string();
47027 				zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
47028 
47029 				UNDEF_RESULT();
47030 				HANDLE_EXCEPTION();
47031 			} else {
47032 				dim = NULL;
47033 				value = _get_zval_ptr_var_deref((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
47034 				zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
47035 				zval_ptr_dtor_nogc(free_op_data);
47036 			}
47037 		} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
47038 			ZVAL_ARR(object_ptr, zend_new_array(8));
47039 			goto try_assign_dim_array;
47040 		} else {
47041 			if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) {
47042 				zend_use_scalar_as_array();
47043 			}
47044 			dim = NULL;
47045 assign_dim_error:
47046 			zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
47047 			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
47048 				ZVAL_NULL(EX_VAR(opline->result.var));
47049 			}
47050 		}
47051 	}
47052 	if (IS_UNUSED != IS_UNUSED) {
47053 
47054 	}
47055 
47056 	/* assign_dim has two opcodes! */
47057 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
47058 }
47059 
47060 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_CV_UNUSED_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
47061 {
47062 	USE_OPLINE
47063 
47064 	zval *object_ptr;
47065 	zend_free_op free_op_data;
47066 	zval *value;
47067 	zval *variable_ptr;
47068 	zval *dim;
47069 
47070 	SAVE_OPLINE();
47071 	object_ptr = EX_VAR(opline->op1.var);
47072 
47073 	if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
47074 try_assign_dim_array:
47075 		SEPARATE_ARRAY(object_ptr);
47076 		if (IS_UNUSED == IS_UNUSED) {
47077 			value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
47078 			if (IS_CV == IS_CV || IS_CV == IS_VAR) {
47079 				ZVAL_DEREF(value);
47080 			}
47081 			variable_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), value);
47082 			if (UNEXPECTED(variable_ptr == NULL)) {
47083 
47084 				zend_cannot_add_element();
47085 				goto assign_dim_error;
47086 			} else if (IS_CV == IS_CV) {
47087 				if (Z_REFCOUNTED_P(value)) {
47088 					Z_ADDREF_P(value);
47089 				}
47090 			} else if (IS_CV == IS_VAR) {
47091 				if (value != free_op_data) {
47092 					if (Z_REFCOUNTED_P(value)) {
47093 						Z_ADDREF_P(value);
47094 					}
47095 
47096 				}
47097 			} else if (IS_CV == IS_CONST) {
47098 				if (UNEXPECTED(Z_REFCOUNTED_P(value))) {
47099 					Z_ADDREF_P(value);
47100 				}
47101 			}
47102 		} else {
47103 			dim = NULL;
47104 			if (IS_UNUSED == IS_CONST) {
47105 				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
47106 			} else {
47107 				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
47108 			}
47109 			if (UNEXPECTED(variable_ptr == NULL)) {
47110 				goto assign_dim_error;
47111 			}
47112 			value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
47113 			value = zend_assign_to_variable(variable_ptr, value, IS_CV);
47114 		}
47115 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
47116 			ZVAL_COPY(EX_VAR(opline->result.var), value);
47117 		}
47118 	} else {
47119 		if (EXPECTED(Z_ISREF_P(object_ptr))) {
47120 			object_ptr = Z_REFVAL_P(object_ptr);
47121 			if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
47122 				goto try_assign_dim_array;
47123 			}
47124 		}
47125 		if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) {
47126 			dim = NULL;
47127 			value = _get_zval_ptr_cv_deref_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
47128 
47129 			if (IS_UNUSED == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
47130 				dim++;
47131 			}
47132 			zend_assign_to_object_dim(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
47133 
47134 		} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
47135 			if (IS_UNUSED == IS_UNUSED) {
47136 				zend_use_new_element_for_string();
47137 
47138 
47139 				UNDEF_RESULT();
47140 				HANDLE_EXCEPTION();
47141 			} else {
47142 				dim = NULL;
47143 				value = _get_zval_ptr_cv_deref_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
47144 				zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
47145 
47146 			}
47147 		} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
47148 			ZVAL_ARR(object_ptr, zend_new_array(8));
47149 			goto try_assign_dim_array;
47150 		} else {
47151 			if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) {
47152 				zend_use_scalar_as_array();
47153 			}
47154 			dim = NULL;
47155 assign_dim_error:
47156 
47157 			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
47158 				ZVAL_NULL(EX_VAR(opline->result.var));
47159 			}
47160 		}
47161 	}
47162 	if (IS_UNUSED != IS_UNUSED) {
47163 
47164 	}
47165 
47166 	/* assign_dim has two opcodes! */
47167 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
47168 }
47169 
47170 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_VERIFY_RETURN_TYPE_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
47171 {
47172 	USE_OPLINE
47173 
47174 	SAVE_OPLINE();
47175 	if (IS_CV == IS_UNUSED) {
47176 		zend_verify_missing_return_type(EX(func), CACHE_ADDR(opline->op2.num));
47177 	} else {
47178 /* prevents "undefined variable opline" errors */
47179 #if 0 || (IS_CV != IS_UNUSED)
47180 		zval *retval_ref, *retval_ptr;
47181 
47182 		zend_arg_info *ret_info = EX(func)->common.arg_info - 1;
47183 
47184 		retval_ref = retval_ptr = _get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
47185 
47186 		if (IS_CV == IS_CONST) {
47187 			ZVAL_COPY(EX_VAR(opline->result.var), retval_ptr);
47188 			retval_ref = retval_ptr = EX_VAR(opline->result.var);
47189 		} else if (IS_CV == IS_VAR) {
47190 			if (UNEXPECTED(Z_TYPE_P(retval_ptr) == IS_INDIRECT)) {
47191 				retval_ptr = Z_INDIRECT_P(retval_ptr);
47192 			}
47193 			ZVAL_DEREF(retval_ptr);
47194 		} else if (IS_CV == IS_CV) {
47195 			ZVAL_DEREF(retval_ptr);
47196 		}
47197 
47198 		if (UNEXPECTED(!ZEND_TYPE_IS_CLASS(ret_info->type)
47199 			&& ZEND_TYPE_CODE(ret_info->type) != IS_CALLABLE
47200 			&& ZEND_TYPE_CODE(ret_info->type) != IS_ITERABLE
47201 			&& !ZEND_SAME_FAKE_TYPE(ZEND_TYPE_CODE(ret_info->type), Z_TYPE_P(retval_ptr))
47202 			&& !(EX(func)->op_array.fn_flags & ZEND_ACC_RETURN_REFERENCE)
47203 			&& retval_ref != retval_ptr)
47204 		) {
47205 			/* A cast might happen - unwrap the reference if this is a by-value return */
47206 			if (Z_REFCOUNT_P(retval_ref) == 1) {
47207 				ZVAL_UNREF(retval_ref);
47208 			} else {
47209 				Z_DELREF_P(retval_ref);
47210 				ZVAL_COPY(retval_ref, retval_ptr);
47211 			}
47212 			retval_ptr = retval_ref;
47213 		}
47214 		zend_verify_return_type(EX(func), retval_ptr, CACHE_ADDR(opline->op2.num));
47215 #endif
47216 	}
47217 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
47218 }
47219 
47220 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
47221 {
47222 	USE_OPLINE
47223 
47224 	zval *expr_ptr, new_expr;
47225 
47226 	SAVE_OPLINE();
47227 	if ((IS_CV == IS_VAR || IS_CV == IS_CV) &&
47228 	    UNEXPECTED(opline->extended_value & ZEND_ARRAY_ELEMENT_REF)) {
47229 		expr_ptr = _get_zval_ptr_cv_BP_VAR_W(opline->op1.var EXECUTE_DATA_CC);
47230 		if (Z_ISREF_P(expr_ptr)) {
47231 			Z_ADDREF_P(expr_ptr);
47232 		} else {
47233 			ZVAL_MAKE_REF_EX(expr_ptr, 2);
47234 		}
47235 
47236 	} else {
47237 		expr_ptr = _get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
47238 		if (IS_CV == IS_TMP_VAR) {
47239 			/* pass */
47240 		} else if (IS_CV == IS_CONST) {
47241 			Z_TRY_ADDREF_P(expr_ptr);
47242 		} else if (IS_CV == IS_CV) {
47243 			ZVAL_DEREF(expr_ptr);
47244 			Z_TRY_ADDREF_P(expr_ptr);
47245 		} else /* if (IS_CV == IS_VAR) */ {
47246 			if (UNEXPECTED(Z_ISREF_P(expr_ptr))) {
47247 				zend_refcounted *ref = Z_COUNTED_P(expr_ptr);
47248 
47249 				expr_ptr = Z_REFVAL_P(expr_ptr);
47250 				if (UNEXPECTED(GC_DELREF(ref) == 0)) {
47251 					ZVAL_COPY_VALUE(&new_expr, expr_ptr);
47252 					expr_ptr = &new_expr;
47253 					efree_size(ref, sizeof(zend_reference));
47254 				} else if (Z_OPT_REFCOUNTED_P(expr_ptr)) {
47255 					Z_ADDREF_P(expr_ptr);
47256 				}
47257 			}
47258 		}
47259 	}
47260 
47261 	if (IS_UNUSED != IS_UNUSED) {
47262 
47263 		zval *offset = NULL;
47264 		zend_string *str;
47265 		zend_ulong hval;
47266 
47267 add_again:
47268 		if (EXPECTED(Z_TYPE_P(offset) == IS_STRING)) {
47269 			str = Z_STR_P(offset);
47270 			if (IS_UNUSED != IS_CONST) {
47271 				if (ZEND_HANDLE_NUMERIC(str, hval)) {
47272 					goto num_index;
47273 				}
47274 			}
47275 str_index:
47276 			zend_hash_update(Z_ARRVAL_P(EX_VAR(opline->result.var)), str, expr_ptr);
47277 		} else if (EXPECTED(Z_TYPE_P(offset) == IS_LONG)) {
47278 			hval = Z_LVAL_P(offset);
47279 num_index:
47280 			zend_hash_index_update(Z_ARRVAL_P(EX_VAR(opline->result.var)), hval, expr_ptr);
47281 		} else if ((IS_UNUSED & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
47282 			offset = Z_REFVAL_P(offset);
47283 			goto add_again;
47284 		} else if (Z_TYPE_P(offset) == IS_NULL) {
47285 			str = ZSTR_EMPTY_ALLOC();
47286 			goto str_index;
47287 		} else if (Z_TYPE_P(offset) == IS_DOUBLE) {
47288 			hval = zend_dval_to_lval(Z_DVAL_P(offset));
47289 			goto num_index;
47290 		} else if (Z_TYPE_P(offset) == IS_FALSE) {
47291 			hval = 0;
47292 			goto num_index;
47293 		} else if (Z_TYPE_P(offset) == IS_TRUE) {
47294 			hval = 1;
47295 			goto num_index;
47296 		} else if (IS_UNUSED == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
47297 			GET_OP2_UNDEF_CV(offset, BP_VAR_R);
47298 			str = ZSTR_EMPTY_ALLOC();
47299 			goto str_index;
47300 		} else {
47301 			zend_illegal_offset();
47302 			zval_ptr_dtor_nogc(expr_ptr);
47303 		}
47304 
47305 	} else {
47306 		if (!zend_hash_next_index_insert(Z_ARRVAL_P(EX_VAR(opline->result.var)), expr_ptr)) {
47307 			zend_cannot_add_element();
47308 			zval_ptr_dtor_nogc(expr_ptr);
47309 		}
47310 	}
47311 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
47312 }
47313 
47314 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_ARRAY_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
47315 {
47316 	zval *array;
47317 	uint32_t size;
47318 	USE_OPLINE
47319 
47320 	array = EX_VAR(opline->result.var);
47321 	if (IS_CV != IS_UNUSED) {
47322 		size = opline->extended_value >> ZEND_ARRAY_SIZE_SHIFT;
47323 		ZVAL_ARR(array, zend_new_array(size));
47324 		/* Explicitly initialize array as not-packed if flag is set */
47325 		if (opline->extended_value & ZEND_ARRAY_NOT_PACKED) {
47326 			zend_hash_real_init_mixed(Z_ARRVAL_P(array));
47327 		}
47328 		ZEND_VM_TAIL_CALL(ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
47329 	} else {
47330 		ZVAL_EMPTY_ARRAY(array);
47331 		ZEND_VM_NEXT_OPCODE();
47332 	}
47333 }
47334 
47335 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_UNSET_CV_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
47336 {
47337 	USE_OPLINE
47338 	zval *var = EX_VAR(opline->op1.var);
47339 
47340 	if (Z_REFCOUNTED_P(var)) {
47341 		zend_refcounted *garbage = Z_COUNTED_P(var);
47342 
47343 		ZVAL_UNDEF(var);
47344 		SAVE_OPLINE();
47345 		if (!GC_DELREF(garbage)) {
47346 			rc_dtor_func(garbage);
47347 		} else {
47348 			gc_check_possible_root(garbage);
47349 		}
47350 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
47351 	} else {
47352 		ZVAL_UNDEF(var);
47353 	}
47354 	ZEND_VM_NEXT_OPCODE();
47355 }
47356 
47357 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_UNSET_VAR_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
47358 {
47359 	USE_OPLINE
47360 	zval *varname;
47361 	zend_string *name, *tmp_name;
47362 	HashTable *target_symbol_table;
47363 
47364 
47365 	SAVE_OPLINE();
47366 
47367 	varname = EX_VAR(opline->op1.var);
47368 
47369 	if (IS_CV == IS_CONST) {
47370 		name = Z_STR_P(varname);
47371 	} else if (EXPECTED(Z_TYPE_P(varname) == IS_STRING)) {
47372 		name = Z_STR_P(varname);
47373 		tmp_name = NULL;
47374 	} else {
47375 		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(varname) == IS_UNDEF)) {
47376 			varname = GET_OP1_UNDEF_CV(varname, BP_VAR_R);
47377 		}
47378 		name = zval_get_tmp_string(varname, &tmp_name);
47379 	}
47380 
47381 	target_symbol_table = zend_get_target_symbol_table(opline->extended_value EXECUTE_DATA_CC);
47382 	zend_hash_del_ind(target_symbol_table, name);
47383 
47384 	if (IS_CV != IS_CONST) {
47385 		zend_tmp_string_release(tmp_name);
47386 	}
47387 
47388 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
47389 }
47390 
47391 static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_UNSET_STATIC_PROP_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
47392 {
47393 	USE_OPLINE
47394 	zval *varname;
47395 	zend_string *name, *tmp_name;
47396 	zend_class_entry *ce;
47397 
47398 
47399 	SAVE_OPLINE();
47400 
47401 	if (IS_UNUSED == IS_CONST) {
47402 		ce = CACHED_PTR(opline->extended_value);
47403 		if (UNEXPECTED(ce == NULL)) {
47404 			ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op2)), RT_CONSTANT(opline, opline->op2) + 1, ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
47405 			if (UNEXPECTED(ce == NULL)) {
47406 				ZEND_ASSERT(EG(exception));
47407 
47408 				HANDLE_EXCEPTION();
47409 			}
47410 			/*CACHE_PTR(opline->extended_value, ce);*/
47411 		}
47412 	} else if (IS_UNUSED == IS_UNUSED) {
47413 		ce = zend_fetch_class(NULL, opline->op2.num);
47414 		if (UNEXPECTED(ce == NULL)) {
47415 			ZEND_ASSERT(EG(exception));
47416 
47417 			HANDLE_EXCEPTION();
47418 		}
47419 	} else {
47420 		ce = Z_CE_P(EX_VAR(opline->op2.var));
47421 	}
47422 
47423 	varname = EX_VAR(opline->op1.var);
47424 	if (IS_CV == IS_CONST) {
47425 		name = Z_STR_P(varname);
47426 	} else if (EXPECTED(Z_TYPE_P(varname) == IS_STRING)) {
47427 		name = Z_STR_P(varname);
47428 		tmp_name = NULL;
47429 	} else {
47430 		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(varname) == IS_UNDEF)) {
47431 			varname = GET_OP1_UNDEF_CV(varname, BP_VAR_R);
47432 		}
47433 		name = zval_get_tmp_string(varname, &tmp_name);
47434 	}
47435 
47436 	zend_std_unset_static_property(ce, name);
47437 
47438 	if (IS_CV != IS_CONST) {
47439 		zend_tmp_string_release(tmp_name);
47440 	}
47441 
47442 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
47443 }
47444 
47445 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ISSET_ISEMPTY_CV_SPEC_CV_UNUSED_SET_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
47446 {
47447 	USE_OPLINE
47448 	zval *value;
47449 	int result;
47450 
47451 	value = EX_VAR(opline->op1.var);
47452 	if (!(0)) {
47453 		result =
47454 			Z_TYPE_P(value) > IS_NULL &&
47455 		    (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL);
47456 	} else {
47457 		SAVE_OPLINE();
47458 		result = !i_zend_is_true(value);
47459 		if (UNEXPECTED(EG(exception))) {
47460 			ZVAL_UNDEF(EX_VAR(opline->result.var));
47461 			HANDLE_EXCEPTION();
47462 		}
47463 	}
47464 	ZEND_VM_SMART_BRANCH(result, 0);
47465 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
47466 	ZEND_VM_NEXT_OPCODE();
47467 }
47468 
47469 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ISSET_ISEMPTY_CV_SPEC_CV_UNUSED_EMPTY_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
47470 {
47471 	USE_OPLINE
47472 	zval *value;
47473 	int result;
47474 
47475 	value = EX_VAR(opline->op1.var);
47476 	if (!(1)) {
47477 		result =
47478 			Z_TYPE_P(value) > IS_NULL &&
47479 		    (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL);
47480 	} else {
47481 		SAVE_OPLINE();
47482 		result = !i_zend_is_true(value);
47483 		if (UNEXPECTED(EG(exception))) {
47484 			ZVAL_UNDEF(EX_VAR(opline->result.var));
47485 			HANDLE_EXCEPTION();
47486 		}
47487 	}
47488 	ZEND_VM_SMART_BRANCH(result, 0);
47489 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
47490 	ZEND_VM_NEXT_OPCODE();
47491 }
47492 
47493 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ISSET_ISEMPTY_VAR_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
47494 {
47495 	USE_OPLINE
47496 	zval *value;
47497 	int result;
47498 
47499 	zval *varname;
47500 	zend_string *name, *tmp_name;
47501 	HashTable *target_symbol_table;
47502 
47503 	SAVE_OPLINE();
47504 	varname = _get_zval_ptr_cv_BP_VAR_IS(opline->op1.var EXECUTE_DATA_CC);
47505 	if (IS_CV == IS_CONST) {
47506 		name = Z_STR_P(varname);
47507 	} else {
47508 		name = zval_get_tmp_string(varname, &tmp_name);
47509 	}
47510 
47511 	target_symbol_table = zend_get_target_symbol_table(opline->extended_value EXECUTE_DATA_CC);
47512 	value = zend_hash_find_ex(target_symbol_table, name, IS_CV == IS_CONST);
47513 
47514 	if (IS_CV != IS_CONST) {
47515 		zend_tmp_string_release(tmp_name);
47516 	}
47517 
47518 	if (!value) {
47519 		result = (opline->extended_value & ZEND_ISEMPTY);
47520 	} else {
47521 		if (Z_TYPE_P(value) == IS_INDIRECT) {
47522 			value = Z_INDIRECT_P(value);
47523 		}
47524 		if (!(opline->extended_value & ZEND_ISEMPTY)) {
47525 			if (Z_ISREF_P(value)) {
47526 				value = Z_REFVAL_P(value);
47527 			}
47528 			result = Z_TYPE_P(value) > IS_NULL;
47529 		} else {
47530 			result = !i_zend_is_true(value);
47531 		}
47532 	}
47533 
47534 	ZEND_VM_SMART_BRANCH(result, 1);
47535 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
47536 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
47537 }
47538 
47539 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
47540 {
47541 	USE_OPLINE
47542 	zval *value;
47543 	int result;
47544 
47545 	zval *varname;
47546 	zend_string *name, *tmp_name;
47547 	zend_class_entry *ce;
47548 
47549 	SAVE_OPLINE();
47550 	if (IS_UNUSED == IS_CONST) {
47551 		if (IS_CV == IS_CONST && EXPECTED((ce = CACHED_PTR(opline->extended_value & ~ZEND_ISEMPTY)) != NULL)) {
47552 			value = CACHED_PTR((opline->extended_value & ~ZEND_ISEMPTY) + sizeof(void*));
47553 			goto is_static_prop_return;
47554 		} else if (UNEXPECTED((ce = CACHED_PTR(opline->extended_value & ~ZEND_ISEMPTY)) == NULL)) {
47555 			ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op2)), RT_CONSTANT(opline, opline->op2) + 1, ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
47556 			if (UNEXPECTED(ce == NULL)) {
47557 				ZEND_ASSERT(EG(exception));
47558 				ZVAL_UNDEF(EX_VAR(opline->result.var));
47559 				HANDLE_EXCEPTION();
47560 			}
47561 			if (IS_CV != IS_CONST) {
47562 				CACHE_PTR(opline->extended_value & ~ZEND_ISEMPTY, ce);
47563 			}
47564 		}
47565 	} else {
47566 		if (IS_UNUSED == IS_UNUSED) {
47567 			ce = zend_fetch_class(NULL, opline->op2.num);
47568 			if (UNEXPECTED(ce == NULL)) {
47569 				ZEND_ASSERT(EG(exception));
47570 
47571 				ZVAL_UNDEF(EX_VAR(opline->result.var));
47572 				HANDLE_EXCEPTION();
47573 			}
47574 		} else {
47575 			ce = Z_CE_P(EX_VAR(opline->op2.var));
47576 		}
47577 		if (IS_CV == IS_CONST &&
47578 		    EXPECTED(CACHED_PTR(opline->extended_value & ~ZEND_ISEMPTY) == ce)) {
47579 
47580 			value = CACHED_PTR((opline->extended_value & ~ZEND_ISEMPTY) + sizeof(void*));
47581 			goto is_static_prop_return;
47582 		}
47583 	}
47584 
47585 	varname = _get_zval_ptr_cv_BP_VAR_IS(opline->op1.var EXECUTE_DATA_CC);
47586 	if (IS_CV == IS_CONST) {
47587 		name = Z_STR_P(varname);
47588 	} else {
47589 		name = zval_get_tmp_string(varname, &tmp_name);
47590 	}
47591 
47592 	value = zend_std_get_static_property(ce, name, 1);
47593 
47594 	if (IS_CV == IS_CONST && value) {
47595 		CACHE_POLYMORPHIC_PTR(opline->extended_value & ~ZEND_ISEMPTY, ce, value);
47596 	}
47597 
47598 	if (IS_CV != IS_CONST) {
47599 		zend_tmp_string_release(tmp_name);
47600 	}
47601 
47602 is_static_prop_return:
47603 	if (!(opline->extended_value & ZEND_ISEMPTY)) {
47604 		result = value && Z_TYPE_P(value) > IS_NULL &&
47605 		    (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL);
47606 	} else {
47607 		result = !value || !i_zend_is_true(value);
47608 	}
47609 
47610 	ZEND_VM_SMART_BRANCH(result, 1);
47611 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
47612 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
47613 }
47614 
47615 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INSTANCEOF_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
47616 {
47617 	USE_OPLINE
47618 
47619 	zval *expr;
47620 	zend_bool result;
47621 
47622 	SAVE_OPLINE();
47623 	expr = EX_VAR(opline->op1.var);
47624 
47625 try_instanceof:
47626 	if (Z_TYPE_P(expr) == IS_OBJECT) {
47627 		zend_class_entry *ce;
47628 
47629 		if (IS_UNUSED == IS_CONST) {
47630 			ce = CACHED_PTR(opline->extended_value);
47631 			if (UNEXPECTED(ce == NULL)) {
47632 				ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op2)), RT_CONSTANT(opline, opline->op2) + 1, ZEND_FETCH_CLASS_NO_AUTOLOAD);
47633 				if (EXPECTED(ce)) {
47634 					CACHE_PTR(opline->extended_value, ce);
47635 				}
47636 			}
47637 		} else if (IS_UNUSED == IS_UNUSED) {
47638 			ce = zend_fetch_class(NULL, opline->op2.num);
47639 			if (UNEXPECTED(ce == NULL)) {
47640 				ZEND_ASSERT(EG(exception));
47641 
47642 				ZVAL_UNDEF(EX_VAR(opline->result.var));
47643 				HANDLE_EXCEPTION();
47644 			}
47645 		} else {
47646 			ce = Z_CE_P(EX_VAR(opline->op2.var));
47647 		}
47648 		result = ce && instanceof_function(Z_OBJCE_P(expr), ce);
47649 	} else if ((IS_CV & (IS_VAR|IS_CV)) && Z_TYPE_P(expr) == IS_REFERENCE) {
47650 		expr = Z_REFVAL_P(expr);
47651 		goto try_instanceof;
47652 	} else {
47653 		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(expr) == IS_UNDEF)) {
47654 			GET_OP1_UNDEF_CV(expr, BP_VAR_R);
47655 		}
47656 		result = 0;
47657 	}
47658 
47659 	ZEND_VM_SMART_BRANCH(result, 1);
47660 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
47661 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
47662 }
47663 
47664 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_YIELD_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
47665 {
47666 	USE_OPLINE
47667 
47668 	zend_generator *generator = zend_get_running_generator(EXECUTE_DATA_C);
47669 
47670 	SAVE_OPLINE();
47671 	if (UNEXPECTED(generator->flags & ZEND_GENERATOR_FORCED_CLOSE)) {
47672 		ZEND_VM_TAIL_CALL(zend_yield_in_closed_generator_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
47673 	}
47674 
47675 	/* Destroy the previously yielded value */
47676 	zval_ptr_dtor(&generator->value);
47677 
47678 	/* Destroy the previously yielded key */
47679 	zval_ptr_dtor(&generator->key);
47680 
47681 	/* Set the new yielded value */
47682 	if (IS_CV != IS_UNUSED) {
47683 
47684 
47685 		if (UNEXPECTED(EX(func)->op_array.fn_flags & ZEND_ACC_RETURN_REFERENCE)) {
47686 			/* Constants and temporary variables aren't yieldable by reference,
47687 			 * but we still allow them with a notice. */
47688 			if (IS_CV & (IS_CONST|IS_TMP_VAR)) {
47689 				zval *value;
47690 
47691 				zend_error(E_NOTICE, "Only variable references should be yielded by reference");
47692 
47693 				value = _get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
47694 				ZVAL_COPY_VALUE(&generator->value, value);
47695 				if (IS_CV == IS_CONST) {
47696 					if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
47697 						Z_ADDREF(generator->value);
47698 					}
47699 				}
47700 			} else {
47701 				zval *value_ptr = _get_zval_ptr_cv_BP_VAR_W(opline->op1.var EXECUTE_DATA_CC);
47702 
47703 				/* If a function call result is yielded and the function did
47704 				 * not return by reference we throw a notice. */
47705 				if (IS_CV == IS_VAR &&
47706 				    (value_ptr == &EG(uninitialized_zval) ||
47707 				     (opline->extended_value == ZEND_RETURNS_FUNCTION &&
47708 				      !Z_ISREF_P(value_ptr)))) {
47709 					zend_error(E_NOTICE, "Only variable references should be yielded by reference");
47710 					ZVAL_COPY(&generator->value, value_ptr);
47711 				} else {
47712 					if (Z_ISREF_P(value_ptr)) {
47713 						Z_ADDREF_P(value_ptr);
47714 					} else {
47715 						ZVAL_MAKE_REF_EX(value_ptr, 2);
47716 					}
47717 					ZVAL_REF(&generator->value, Z_REF_P(value_ptr));
47718 				}
47719 
47720 			}
47721 		} else {
47722 			zval *value = _get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
47723 
47724 			/* Consts, temporary variables and references need copying */
47725 			if (IS_CV == IS_CONST) {
47726 				ZVAL_COPY_VALUE(&generator->value, value);
47727 				if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
47728 					Z_ADDREF(generator->value);
47729 				}
47730 			} else if (IS_CV == IS_TMP_VAR) {
47731 				ZVAL_COPY_VALUE(&generator->value, value);
47732             } else if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
47733 				ZVAL_COPY(&generator->value, Z_REFVAL_P(value));
47734 
47735 			} else {
47736 				ZVAL_COPY_VALUE(&generator->value, value);
47737 				if (IS_CV == IS_CV) {
47738 					if (Z_OPT_REFCOUNTED_P(value)) Z_ADDREF_P(value);
47739 				}
47740 			}
47741 		}
47742 	} else {
47743 		/* If no value was specified yield null */
47744 		ZVAL_NULL(&generator->value);
47745 	}
47746 
47747 	/* Set the new yielded key */
47748 	if (IS_UNUSED != IS_UNUSED) {
47749 
47750 		zval *key = NULL;
47751 
47752 		/* Consts, temporary variables and references need copying */
47753 		if (IS_UNUSED == IS_CONST) {
47754 			ZVAL_COPY_VALUE(&generator->key, key);
47755 			if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->key))) {
47756 				Z_ADDREF(generator->key);
47757 			}
47758 		} else if (IS_UNUSED == IS_TMP_VAR) {
47759 			ZVAL_COPY_VALUE(&generator->key, key);
47760 		} else if ((IS_UNUSED & (IS_VAR|IS_CV)) && Z_ISREF_P(key)) {
47761 			ZVAL_COPY(&generator->key, Z_REFVAL_P(key));
47762 
47763 		} else {
47764 			ZVAL_COPY_VALUE(&generator->key, key);
47765 			if (IS_UNUSED == IS_CV) {
47766 				if (Z_OPT_REFCOUNTED_P(key)) Z_ADDREF_P(key);
47767 			}
47768 		}
47769 
47770 		if (Z_TYPE(generator->key) == IS_LONG
47771 		    && Z_LVAL(generator->key) > generator->largest_used_integer_key
47772 		) {
47773 			generator->largest_used_integer_key = Z_LVAL(generator->key);
47774 		}
47775 	} else {
47776 		/* If no key was specified we use auto-increment keys */
47777 		generator->largest_used_integer_key++;
47778 		ZVAL_LONG(&generator->key, generator->largest_used_integer_key);
47779 	}
47780 
47781 	if (RETURN_VALUE_USED(opline)) {
47782 		/* If the return value of yield is used set the send
47783 		 * target and initialize it to NULL */
47784 		generator->send_target = EX_VAR(opline->result.var);
47785 		ZVAL_NULL(generator->send_target);
47786 	} else {
47787 		generator->send_target = NULL;
47788 	}
47789 
47790 	/* We increment to the next op, so we are at the correct position when the
47791 	 * generator is resumed. */
47792 	ZEND_VM_INC_OPCODE();
47793 
47794 	/* The GOTO VM uses a local opline variable. We need to set the opline
47795 	 * variable in execute_data so we don't resume at an old position. */
47796 	SAVE_OPLINE();
47797 
47798 	ZEND_VM_RETURN();
47799 }
47800 
47801 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_CHECK_VAR_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
47802 {
47803 	USE_OPLINE
47804 	zval *op1 = EX_VAR(opline->op1.var);
47805 
47806 	if (UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
47807 		SAVE_OPLINE();
47808 		GET_OP1_UNDEF_CV(op1, BP_VAR_R);
47809 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
47810 	}
47811 	ZEND_VM_NEXT_OPCODE();
47812 }
47813 
47814 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_MAKE_REF_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
47815 {
47816 	USE_OPLINE
47817 	zval *op1 = EX_VAR(opline->op1.var);
47818 
47819 	if (IS_CV == IS_CV) {
47820 		if (UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
47821 			ZVAL_NEW_EMPTY_REF(op1);
47822 			Z_SET_REFCOUNT_P(op1, 2);
47823 			ZVAL_NULL(Z_REFVAL_P(op1));
47824 			ZVAL_REF(EX_VAR(opline->result.var), Z_REF_P(op1));
47825 		} else {
47826 			if (Z_ISREF_P(op1)) {
47827 				Z_ADDREF_P(op1);
47828 			} else {
47829 				ZVAL_MAKE_REF_EX(op1, 2);
47830 			}
47831 			ZVAL_REF(EX_VAR(opline->result.var), Z_REF_P(op1));
47832 		}
47833 	} else if (EXPECTED(Z_TYPE_P(op1) == IS_INDIRECT)) {
47834 		op1 = Z_INDIRECT_P(op1);
47835 		if (EXPECTED(!Z_ISREF_P(op1))) {
47836 			ZVAL_MAKE_REF_EX(op1, 2);
47837 		} else {
47838 			GC_ADDREF(Z_REF_P(op1));
47839 		}
47840 		ZVAL_REF(EX_VAR(opline->result.var), Z_REF_P(op1));
47841 	} else {
47842 		ZVAL_COPY_VALUE(EX_VAR(opline->result.var), op1);
47843 	}
47844 	ZEND_VM_NEXT_OPCODE();
47845 }
47846 
47847 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_COUNT_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
47848 {
47849 	USE_OPLINE
47850 
47851 	zval *op1;
47852 	zend_long count;
47853 
47854 	SAVE_OPLINE();
47855 	op1 = _get_zval_ptr_cv_deref_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
47856 	do {
47857 		if (Z_TYPE_P(op1) == IS_ARRAY) {
47858 			count = zend_array_count(Z_ARRVAL_P(op1));
47859 			break;
47860 		} else if (Z_TYPE_P(op1) == IS_OBJECT) {
47861 			/* first, we check if the handler is defined */
47862 			if (Z_OBJ_HT_P(op1)->count_elements) {
47863 				if (SUCCESS == Z_OBJ_HT_P(op1)->count_elements(op1, &count)) {
47864 					break;
47865 				}
47866 			}
47867 
47868 			/* if not and the object implements Countable we call its count() method */
47869 			if (instanceof_function(Z_OBJCE_P(op1), zend_ce_countable)) {
47870 				zval retval;
47871 
47872 				zend_call_method_with_0_params(op1, NULL, NULL, "count", &retval);
47873 				count = zval_get_long(&retval);
47874 				zval_ptr_dtor(&retval);
47875 				break;
47876 			}
47877 
47878 			/* If There's no handler and it doesn't implement Countable then add a warning */
47879 			count = 1;
47880 		} else if (Z_TYPE_P(op1) == IS_NULL) {
47881 			count = 0;
47882 		} else {
47883 			count = 1;
47884 		}
47885 		zend_error(E_WARNING, "count(): Parameter must be an array or an object that implements Countable");
47886 	} while (0);
47887 
47888 	ZVAL_LONG(EX_VAR(opline->result.var), count);
47889 
47890 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
47891 }
47892 
47893 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_GET_CLASS_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
47894 {
47895 	USE_OPLINE
47896 
47897 	if (IS_CV == IS_UNUSED) {
47898 		if (UNEXPECTED(!EX(func)->common.scope)) {
47899 			SAVE_OPLINE();
47900 			zend_error(E_WARNING, "get_class() called without object from outside a class");
47901 			ZVAL_FALSE(EX_VAR(opline->result.var));
47902 			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
47903 		} else {
47904 			ZVAL_STR_COPY(EX_VAR(opline->result.var), EX(func)->common.scope->name);
47905 			ZEND_VM_NEXT_OPCODE();
47906 		}
47907 	} else {
47908 
47909 		zval *op1;
47910 
47911 		SAVE_OPLINE();
47912 		op1 = _get_zval_ptr_cv_deref_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
47913 		if (Z_TYPE_P(op1) == IS_OBJECT) {
47914 			ZVAL_STR_COPY(EX_VAR(opline->result.var), Z_OBJCE_P(op1)->name);
47915 		} else {
47916 			zend_error(E_WARNING, "get_class() expects parameter 1 to be object, %s given", zend_get_type_by_const(Z_TYPE_P(op1)));
47917 			ZVAL_FALSE(EX_VAR(opline->result.var));
47918 		}
47919 
47920 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
47921 	}
47922 }
47923 
47924 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_GET_TYPE_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
47925 {
47926 	USE_OPLINE
47927 
47928 	zval *op1;
47929 	zend_string *type;
47930 
47931 	SAVE_OPLINE();
47932 	op1 = _get_zval_ptr_cv_deref_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
47933 	type = zend_zval_get_type(op1);
47934 	if (EXPECTED(type)) {
47935 		ZVAL_INTERNED_STR(EX_VAR(opline->result.var), type);
47936 	} else {
47937 		ZVAL_STRING(EX_VAR(opline->result.var), "unknown type");
47938 	}
47939 
47940 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
47941 }
47942 
47943 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ADD_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
47944 {
47945 	USE_OPLINE
47946 
47947 	zval *op1, *op2, *result;
47948 
47949 	op1 = EX_VAR(opline->op1.var);
47950 	op2 = EX_VAR(opline->op2.var);
47951 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
47952 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
47953 			result = EX_VAR(opline->result.var);
47954 			fast_long_add_function(result, op1, op2);
47955 			ZEND_VM_NEXT_OPCODE();
47956 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
47957 			result = EX_VAR(opline->result.var);
47958 			ZVAL_DOUBLE(result, ((double)Z_LVAL_P(op1)) + Z_DVAL_P(op2));
47959 			ZEND_VM_NEXT_OPCODE();
47960 		}
47961 	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
47962 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
47963 			result = EX_VAR(opline->result.var);
47964 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) + Z_DVAL_P(op2));
47965 			ZEND_VM_NEXT_OPCODE();
47966 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
47967 			result = EX_VAR(opline->result.var);
47968 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) + ((double)Z_LVAL_P(op2)));
47969 			ZEND_VM_NEXT_OPCODE();
47970 		}
47971 	}
47972 
47973 	SAVE_OPLINE();
47974 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
47975 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
47976 	}
47977 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
47978 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
47979 	}
47980 	add_function(EX_VAR(opline->result.var), op1, op2);
47981 
47982 
47983 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
47984 }
47985 
47986 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SUB_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
47987 {
47988 	USE_OPLINE
47989 
47990 	zval *op1, *op2, *result;
47991 
47992 	op1 = EX_VAR(opline->op1.var);
47993 	op2 = EX_VAR(opline->op2.var);
47994 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
47995 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
47996 			result = EX_VAR(opline->result.var);
47997 			fast_long_sub_function(result, op1, op2);
47998 			ZEND_VM_NEXT_OPCODE();
47999 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
48000 			result = EX_VAR(opline->result.var);
48001 			ZVAL_DOUBLE(result, ((double)Z_LVAL_P(op1)) - Z_DVAL_P(op2));
48002 			ZEND_VM_NEXT_OPCODE();
48003 		}
48004 	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
48005 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
48006 			result = EX_VAR(opline->result.var);
48007 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) - Z_DVAL_P(op2));
48008 			ZEND_VM_NEXT_OPCODE();
48009 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
48010 			result = EX_VAR(opline->result.var);
48011 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) - ((double)Z_LVAL_P(op2)));
48012 			ZEND_VM_NEXT_OPCODE();
48013 		}
48014 	}
48015 
48016 	SAVE_OPLINE();
48017 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
48018 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
48019 	}
48020 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
48021 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
48022 	}
48023 	sub_function(EX_VAR(opline->result.var), op1, op2);
48024 
48025 
48026 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
48027 }
48028 
48029 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_MUL_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
48030 {
48031 	USE_OPLINE
48032 
48033 	zval *op1, *op2, *result;
48034 
48035 	op1 = EX_VAR(opline->op1.var);
48036 	op2 = EX_VAR(opline->op2.var);
48037 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
48038 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
48039 			zend_long overflow;
48040 
48041 			result = EX_VAR(opline->result.var);
48042 			ZEND_SIGNED_MULTIPLY_LONG(Z_LVAL_P(op1), Z_LVAL_P(op2), Z_LVAL_P(result), Z_DVAL_P(result), overflow);
48043 			Z_TYPE_INFO_P(result) = overflow ? IS_DOUBLE : IS_LONG;
48044 			ZEND_VM_NEXT_OPCODE();
48045 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
48046 			result = EX_VAR(opline->result.var);
48047 			ZVAL_DOUBLE(result, ((double)Z_LVAL_P(op1)) * Z_DVAL_P(op2));
48048 			ZEND_VM_NEXT_OPCODE();
48049 		}
48050 	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
48051 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
48052 			result = EX_VAR(opline->result.var);
48053 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) * Z_DVAL_P(op2));
48054 			ZEND_VM_NEXT_OPCODE();
48055 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
48056 			result = EX_VAR(opline->result.var);
48057 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) * ((double)Z_LVAL_P(op2)));
48058 			ZEND_VM_NEXT_OPCODE();
48059 		}
48060 	}
48061 
48062 	SAVE_OPLINE();
48063 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
48064 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
48065 	}
48066 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
48067 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
48068 	}
48069 	mul_function(EX_VAR(opline->result.var), op1, op2);
48070 
48071 
48072 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
48073 }
48074 
48075 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_DIV_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
48076 {
48077 	USE_OPLINE
48078 
48079 	zval *op1, *op2;
48080 
48081 	SAVE_OPLINE();
48082 	op1 = _get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
48083 	op2 = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
48084 	fast_div_function(EX_VAR(opline->result.var), op1, op2);
48085 
48086 
48087 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
48088 }
48089 
48090 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_MOD_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
48091 {
48092 	USE_OPLINE
48093 
48094 	zval *op1, *op2, *result;
48095 
48096 	op1 = EX_VAR(opline->op1.var);
48097 	op2 = EX_VAR(opline->op2.var);
48098 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
48099 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
48100 			result = EX_VAR(opline->result.var);
48101 			if (UNEXPECTED(Z_LVAL_P(op2) == 0)) {
48102 				ZEND_VM_TAIL_CALL(zend_mod_by_zero_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
48103 			} else if (UNEXPECTED(Z_LVAL_P(op2) == -1)) {
48104 				/* Prevent overflow error/crash if op1==ZEND_LONG_MIN */
48105 				ZVAL_LONG(result, 0);
48106 			} else {
48107 				ZVAL_LONG(result, Z_LVAL_P(op1) % Z_LVAL_P(op2));
48108 			}
48109 			ZEND_VM_NEXT_OPCODE();
48110 		}
48111 	}
48112 
48113 	SAVE_OPLINE();
48114 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
48115 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
48116 	}
48117 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
48118 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
48119 	}
48120 	mod_function(EX_VAR(opline->result.var), op1, op2);
48121 
48122 
48123 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
48124 }
48125 
48126 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SL_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
48127 {
48128 	USE_OPLINE
48129 
48130 	zval *op1, *op2;
48131 
48132 	op1 = EX_VAR(opline->op1.var);
48133 	op2 = EX_VAR(opline->op2.var);
48134 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)
48135 			&& EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)
48136 			&& EXPECTED((zend_ulong)Z_LVAL_P(op2) < SIZEOF_ZEND_LONG * 8)) {
48137 		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(op1) << Z_LVAL_P(op2));
48138 		ZEND_VM_NEXT_OPCODE();
48139 	}
48140 
48141 	SAVE_OPLINE();
48142 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
48143 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
48144 	}
48145 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
48146 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
48147 	}
48148 	shift_left_function(EX_VAR(opline->result.var), op1, op2);
48149 
48150 
48151 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
48152 }
48153 
48154 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SR_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
48155 {
48156 	USE_OPLINE
48157 
48158 	zval *op1, *op2;
48159 
48160 	op1 = EX_VAR(opline->op1.var);
48161 	op2 = EX_VAR(opline->op2.var);
48162 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)
48163 			&& EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)
48164 			&& EXPECTED((zend_ulong)Z_LVAL_P(op2) < SIZEOF_ZEND_LONG * 8)) {
48165 		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(op1) >> Z_LVAL_P(op2));
48166 		ZEND_VM_NEXT_OPCODE();
48167 	}
48168 
48169 	SAVE_OPLINE();
48170 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
48171 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
48172 	}
48173 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
48174 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
48175 	}
48176 	shift_right_function(EX_VAR(opline->result.var), op1, op2);
48177 
48178 
48179 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
48180 }
48181 
48182 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_POW_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
48183 {
48184 	USE_OPLINE
48185 
48186 	zval *op1, *op2;
48187 
48188 	SAVE_OPLINE();
48189 	op1 = _get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
48190 	op2 = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
48191 	pow_function(EX_VAR(opline->result.var), op1, op2);
48192 
48193 
48194 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
48195 }
48196 
48197 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_CONCAT_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
48198 {
48199 	USE_OPLINE
48200 
48201 	zval *op1, *op2;
48202 
48203 	op1 = EX_VAR(opline->op1.var);
48204 	op2 = EX_VAR(opline->op2.var);
48205 
48206 	if ((IS_CV == IS_CONST || EXPECTED(Z_TYPE_P(op1) == IS_STRING)) &&
48207 	    (IS_CV == IS_CONST || EXPECTED(Z_TYPE_P(op2) == IS_STRING))) {
48208 		zend_string *op1_str = Z_STR_P(op1);
48209 		zend_string *op2_str = Z_STR_P(op2);
48210 		zend_string *str;
48211 
48212 		if (IS_CV != IS_CONST && UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
48213 			if (IS_CV == IS_CONST || IS_CV == IS_CV) {
48214 				ZVAL_STR_COPY(EX_VAR(opline->result.var), op2_str);
48215 			} else {
48216 				ZVAL_STR(EX_VAR(opline->result.var), op2_str);
48217 			}
48218 
48219 		} else if (IS_CV != IS_CONST && UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
48220 			if (IS_CV == IS_CONST || IS_CV == IS_CV) {
48221 				ZVAL_STR_COPY(EX_VAR(opline->result.var), op1_str);
48222 			} else {
48223 				ZVAL_STR(EX_VAR(opline->result.var), op1_str);
48224 			}
48225 
48226 		} else if (IS_CV != IS_CONST && IS_CV != IS_CV &&
48227 		    !ZSTR_IS_INTERNED(op1_str) && GC_REFCOUNT(op1_str) == 1) {
48228 		    size_t len = ZSTR_LEN(op1_str);
48229 
48230 			str = zend_string_extend(op1_str, len + ZSTR_LEN(op2_str), 0);
48231 			memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
48232 			ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
48233 
48234 		} else {
48235 			str = zend_string_alloc(ZSTR_LEN(op1_str) + ZSTR_LEN(op2_str), 0);
48236 			memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
48237 			memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
48238 			ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
48239 
48240 
48241 		}
48242 		ZEND_VM_NEXT_OPCODE();
48243 	} else {
48244 		SAVE_OPLINE();
48245 
48246 		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
48247 			op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
48248 		}
48249 		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
48250 			op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
48251 		}
48252 		concat_function(EX_VAR(opline->result.var), op1, op2);
48253 
48254 
48255 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
48256 	}
48257 }
48258 
48259 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_IDENTICAL_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
48260 {
48261 	USE_OPLINE
48262 
48263 	zval *op1, *op2;
48264 	int result;
48265 
48266 	SAVE_OPLINE();
48267 	op1 = _get_zval_ptr_cv_deref_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
48268 	op2 = _get_zval_ptr_cv_deref_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
48269 	result = fast_is_identical_function(op1, op2);
48270 
48271 
48272 	ZEND_VM_SMART_BRANCH(result, 1);
48273 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
48274 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
48275 }
48276 
48277 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_NOT_IDENTICAL_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
48278 {
48279 	USE_OPLINE
48280 
48281 	zval *op1, *op2;
48282 	int result;
48283 
48284 	SAVE_OPLINE();
48285 	op1 = _get_zval_ptr_cv_deref_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
48286 	op2 = _get_zval_ptr_cv_deref_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
48287 	result = fast_is_not_identical_function(op1, op2);
48288 
48289 
48290 	ZEND_VM_SMART_BRANCH(result, 1);
48291 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
48292 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
48293 }
48294 
48295 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_EQUAL_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
48296 {
48297 	USE_OPLINE
48298 
48299 	zval *op1, *op2, *result;
48300 
48301 	op1 = EX_VAR(opline->op1.var);
48302 	op2 = EX_VAR(opline->op2.var);
48303 	do {
48304 		int result;
48305 
48306 		if (EXPECTED(Z_TYPE_P(op1) == IS_LONG)) {
48307 			if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
48308 				result = (Z_LVAL_P(op1) == Z_LVAL_P(op2));
48309 			} else if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
48310 				result = ((double)Z_LVAL_P(op1) == Z_DVAL_P(op2));
48311 			} else {
48312 				break;
48313 			}
48314 		} else if (EXPECTED(Z_TYPE_P(op1) == IS_DOUBLE)) {
48315 			if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
48316 				result = (Z_DVAL_P(op1) == Z_DVAL_P(op2));
48317 			} else if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
48318 				result = (Z_DVAL_P(op1) == ((double)Z_LVAL_P(op2)));
48319 			} else {
48320 				break;
48321 			}
48322 		} else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
48323 			if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
48324 				result = zend_fast_equal_strings(Z_STR_P(op1), Z_STR_P(op2));
48325 
48326 
48327 			} else {
48328 				break;
48329 			}
48330 		} else {
48331 			break;
48332 		}
48333 		ZEND_VM_SMART_BRANCH(result, 0);
48334 		ZVAL_BOOL(EX_VAR(opline->result.var), result);
48335 		ZEND_VM_NEXT_OPCODE();
48336 	} while (0);
48337 
48338 	SAVE_OPLINE();
48339 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
48340 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
48341 	}
48342 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
48343 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
48344 	}
48345 	result = EX_VAR(opline->result.var);
48346 	compare_function(result, op1, op2);
48347 	ZVAL_BOOL(result, Z_LVAL_P(result) == 0);
48348 
48349 
48350 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
48351 }
48352 
48353 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_NOT_EQUAL_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
48354 {
48355 	USE_OPLINE
48356 
48357 	zval *op1, *op2, *result;
48358 
48359 	op1 = EX_VAR(opline->op1.var);
48360 	op2 = EX_VAR(opline->op2.var);
48361 	do {
48362 		int result;
48363 
48364 		if (EXPECTED(Z_TYPE_P(op1) == IS_LONG)) {
48365 			if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
48366 				result = (Z_LVAL_P(op1) != Z_LVAL_P(op2));
48367 			} else if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
48368 				result = ((double)Z_LVAL_P(op1) != Z_DVAL_P(op2));
48369 			} else {
48370 				break;
48371 			}
48372 		} else if (EXPECTED(Z_TYPE_P(op1) == IS_DOUBLE)) {
48373 			if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
48374 				result = (Z_DVAL_P(op1) != Z_DVAL_P(op2));
48375 			} else if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
48376 				result = (Z_DVAL_P(op1) != ((double)Z_LVAL_P(op2)));
48377 			} else {
48378 				break;
48379 			}
48380 		} else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
48381 			if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
48382 				result = !zend_fast_equal_strings(Z_STR_P(op1), Z_STR_P(op2));
48383 
48384 
48385 			} else {
48386 				break;
48387 			}
48388 		} else {
48389 			break;
48390 		}
48391 		ZEND_VM_SMART_BRANCH(result, 0);
48392 		ZVAL_BOOL(EX_VAR(opline->result.var), result);
48393 		ZEND_VM_NEXT_OPCODE();
48394 	} while (0);
48395 
48396 	SAVE_OPLINE();
48397 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
48398 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
48399 	}
48400 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
48401 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
48402 	}
48403 	result = EX_VAR(opline->result.var);
48404 	compare_function(result, op1, op2);
48405 	ZVAL_BOOL(result, Z_LVAL_P(result) != 0);
48406 
48407 
48408 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
48409 }
48410 
48411 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
48412 {
48413 	USE_OPLINE
48414 
48415 	zval *op1, *op2, *result;
48416 
48417 	op1 = EX_VAR(opline->op1.var);
48418 	op2 = EX_VAR(opline->op2.var);
48419 	do {
48420 		int result;
48421 
48422 		if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
48423 			if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
48424 				result = (Z_LVAL_P(op1) < Z_LVAL_P(op2));
48425 			} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
48426 				result = ((double)Z_LVAL_P(op1) < Z_DVAL_P(op2));
48427 			} else {
48428 				break;
48429 			}
48430 		} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
48431 			if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
48432 				result = (Z_DVAL_P(op1) < Z_DVAL_P(op2));
48433 			} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
48434 				result = (Z_DVAL_P(op1) < ((double)Z_LVAL_P(op2)));
48435 			} else {
48436 				break;
48437 			}
48438 		} else {
48439 			break;
48440 		}
48441 		ZEND_VM_SMART_BRANCH(result, 0);
48442 		ZVAL_BOOL(EX_VAR(opline->result.var), result);
48443 		ZEND_VM_NEXT_OPCODE();
48444 	} while (0);
48445 
48446 	SAVE_OPLINE();
48447 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
48448 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
48449 	}
48450 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
48451 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
48452 	}
48453 	result = EX_VAR(opline->result.var);
48454 	compare_function(result, op1, op2);
48455 	ZVAL_BOOL(result, Z_LVAL_P(result) < 0);
48456 
48457 
48458 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
48459 }
48460 
48461 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_OR_EQUAL_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
48462 {
48463 	USE_OPLINE
48464 
48465 	zval *op1, *op2, *result;
48466 
48467 	op1 = EX_VAR(opline->op1.var);
48468 	op2 = EX_VAR(opline->op2.var);
48469 	do {
48470 		int result;
48471 
48472 		if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
48473 			if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
48474 				result = (Z_LVAL_P(op1) <= Z_LVAL_P(op2));
48475 			} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
48476 				result = ((double)Z_LVAL_P(op1) <= Z_DVAL_P(op2));
48477 			} else {
48478 				break;
48479 			}
48480 		} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
48481 			if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
48482 				result = (Z_DVAL_P(op1) <= Z_DVAL_P(op2));
48483 			} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
48484 				result = (Z_DVAL_P(op1) <= ((double)Z_LVAL_P(op2)));
48485 			} else {
48486 				break;
48487 			}
48488 		} else {
48489 			break;
48490 		}
48491 		ZEND_VM_SMART_BRANCH(result, 0);
48492 		ZVAL_BOOL(EX_VAR(opline->result.var), result);
48493 		ZEND_VM_NEXT_OPCODE();
48494 	} while (0);
48495 
48496 	SAVE_OPLINE();
48497 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
48498 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
48499 	}
48500 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
48501 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
48502 	}
48503 	result = EX_VAR(opline->result.var);
48504 	compare_function(result, op1, op2);
48505 	ZVAL_BOOL(result, Z_LVAL_P(result) <= 0);
48506 
48507 
48508 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
48509 }
48510 
48511 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SPACESHIP_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
48512 {
48513 	USE_OPLINE
48514 
48515 	zval *op1, *op2;
48516 
48517 	SAVE_OPLINE();
48518 	op1 = _get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
48519 	op2 = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
48520 	compare_function(EX_VAR(opline->result.var), op1, op2);
48521 
48522 
48523 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
48524 }
48525 
48526 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BW_OR_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
48527 {
48528 	USE_OPLINE
48529 
48530 	zval *op1, *op2;
48531 
48532 	op1 = EX_VAR(opline->op1.var);
48533 	op2 = EX_VAR(opline->op2.var);
48534 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)
48535 			&& EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
48536 		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(op1) | Z_LVAL_P(op2));
48537 		ZEND_VM_NEXT_OPCODE();
48538 	}
48539 
48540 	SAVE_OPLINE();
48541 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
48542 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
48543 	}
48544 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
48545 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
48546 	}
48547 	bitwise_or_function(EX_VAR(opline->result.var), op1, op2);
48548 
48549 
48550 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
48551 }
48552 
48553 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BW_AND_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
48554 {
48555 	USE_OPLINE
48556 
48557 	zval *op1, *op2;
48558 
48559 	op1 = EX_VAR(opline->op1.var);
48560 	op2 = EX_VAR(opline->op2.var);
48561 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)
48562 			&& EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
48563 		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(op1) & Z_LVAL_P(op2));
48564 		ZEND_VM_NEXT_OPCODE();
48565 	}
48566 
48567 	SAVE_OPLINE();
48568 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
48569 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
48570 	}
48571 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
48572 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
48573 	}
48574 	bitwise_and_function(EX_VAR(opline->result.var), op1, op2);
48575 
48576 
48577 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
48578 }
48579 
48580 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BW_XOR_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
48581 {
48582 	USE_OPLINE
48583 
48584 	zval *op1, *op2;
48585 
48586 	op1 = EX_VAR(opline->op1.var);
48587 	op2 = EX_VAR(opline->op2.var);
48588 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)
48589 			&& EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
48590 		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(op1) ^ Z_LVAL_P(op2));
48591 		ZEND_VM_NEXT_OPCODE();
48592 	}
48593 
48594 	SAVE_OPLINE();
48595 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
48596 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
48597 	}
48598 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
48599 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
48600 	}
48601 	bitwise_xor_function(EX_VAR(opline->result.var), op1, op2);
48602 
48603 
48604 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
48605 }
48606 
48607 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BOOL_XOR_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
48608 {
48609 	USE_OPLINE
48610 
48611 	zval *op1, *op2;
48612 
48613 	SAVE_OPLINE();
48614 	op1 = _get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
48615 	op2 = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
48616 	boolean_xor_function(EX_VAR(opline->result.var), op1, op2);
48617 
48618 
48619 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
48620 }
48621 
48622 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_obj_helper_SPEC_CV_CV(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
48623 {
48624 	USE_OPLINE
48625 	zend_free_op free_op_data1;
48626 	zval *object;
48627 	zval *property;
48628 	zval *value;
48629 	zval *zptr;
48630 
48631 	SAVE_OPLINE();
48632 	object = _get_zval_ptr_cv_BP_VAR_RW(opline->op1.var EXECUTE_DATA_CC);
48633 
48634 	if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
48635 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
48636 	}
48637 
48638 	property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
48639 
48640 	do {
48641 		value = get_op_data_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data1);
48642 
48643 		if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
48644 			if (Z_ISREF_P(object)) {
48645 				object = Z_REFVAL_P(object);
48646 				if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
48647 					goto assign_op_object;
48648 				}
48649 			}
48650 			if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
48651 				break;
48652 			}
48653 		}
48654 
48655 		/* here we are sure we are dealing with an object */
48656 assign_op_object:
48657 		if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
48658 			&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CV == IS_CONST) ? CACHE_ADDR((opline+1)->extended_value) : NULL))) != NULL)) {
48659 			if (UNEXPECTED(Z_ISERROR_P(zptr))) {
48660 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
48661 					ZVAL_NULL(EX_VAR(opline->result.var));
48662 				}
48663 			} else {
48664 				ZVAL_DEREF(zptr);
48665 
48666 				binary_op(zptr, zptr, value);
48667 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
48668 					ZVAL_COPY(EX_VAR(opline->result.var), zptr);
48669 				}
48670 			}
48671 		} else {
48672 			zend_assign_op_overloaded_property(object, property, ((IS_CV == IS_CONST) ? CACHE_ADDR((opline+1)->extended_value) : NULL), value, binary_op OPLINE_CC EXECUTE_DATA_CC);
48673 		}
48674 	} while (0);
48675 
48676 	FREE_OP(free_op_data1);
48677 
48678 
48679 	/* assign_obj has two opcodes! */
48680 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
48681 }
48682 
48683 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_dim_helper_SPEC_CV_CV(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
48684 {
48685 	USE_OPLINE
48686 	zend_free_op free_op_data1;
48687 	zval *var_ptr;
48688 	zval *value, *container, *dim;
48689 
48690 	SAVE_OPLINE();
48691 	container = EX_VAR(opline->op1.var);
48692 
48693 	if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
48694 assign_dim_op_array:
48695 		SEPARATE_ARRAY(container);
48696 assign_dim_op_new_array:
48697 		dim = EX_VAR(opline->op2.var);
48698 		if (IS_CV == IS_UNUSED) {
48699 			var_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(container), &EG(uninitialized_zval));
48700 			if (UNEXPECTED(!var_ptr)) {
48701 				zend_cannot_add_element();
48702 				goto assign_dim_op_ret_null;
48703 			}
48704 		} else {
48705 			if (IS_CV == IS_CONST) {
48706 				var_ptr = zend_fetch_dimension_address_inner_RW_CONST(Z_ARRVAL_P(container), dim EXECUTE_DATA_CC);
48707 			} else {
48708 				var_ptr = zend_fetch_dimension_address_inner_RW(Z_ARRVAL_P(container), dim EXECUTE_DATA_CC);
48709 			}
48710 			if (UNEXPECTED(!var_ptr)) {
48711 				goto assign_dim_op_ret_null;
48712 			}
48713 			ZVAL_DEREF(var_ptr);
48714 		}
48715 
48716 		value = get_op_data_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data1);
48717 
48718 		binary_op(var_ptr, var_ptr, value);
48719 
48720 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
48721 			ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
48722 		}
48723 	} else {
48724 		if (EXPECTED(Z_ISREF_P(container))) {
48725 			container = Z_REFVAL_P(container);
48726 			if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
48727 				goto assign_dim_op_array;
48728 			}
48729 		} else if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(container) == IS_UNDEF)) {
48730 			container = GET_OP1_UNDEF_CV(container, BP_VAR_RW);
48731 assign_dim_op_convert_to_array:
48732 			ZVAL_ARR(container, zend_new_array(8));
48733 			goto assign_dim_op_new_array;
48734 		}
48735 
48736 		dim = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
48737 
48738 		if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
48739 			value = get_op_data_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data1);
48740 			if (IS_CV == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
48741 				dim++;
48742 			}
48743 			zend_binary_assign_op_obj_dim(container, dim, value, UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL, binary_op EXECUTE_DATA_CC);
48744 		} else {
48745 			if (UNEXPECTED(Z_TYPE_P(container) == IS_STRING)) {
48746 				if (IS_CV == IS_UNUSED) {
48747 					zend_use_new_element_for_string();
48748 				} else {
48749 					zend_check_string_offset(dim, BP_VAR_RW EXECUTE_DATA_CC);
48750 					zend_wrong_string_offset(EXECUTE_DATA_C);
48751 				}
48752 				UNDEF_RESULT();
48753 			} else if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) {
48754 				goto assign_dim_op_convert_to_array;
48755 			} else {
48756 				if (UNEXPECTED(IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(container)))) {
48757 					zend_use_scalar_as_array();
48758 				}
48759 assign_dim_op_ret_null:
48760 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
48761 					ZVAL_NULL(EX_VAR(opline->result.var));
48762 				}
48763 			}
48764 			value = get_op_data_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data1);
48765 		}
48766 	}
48767 
48768 	FREE_OP(free_op_data1);
48769 
48770 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
48771 }
48772 
48773 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_simple_helper_SPEC_CV_CV(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
48774 {
48775 	USE_OPLINE
48776 
48777 	zval *var_ptr;
48778 	zval *value;
48779 
48780 	SAVE_OPLINE();
48781 	value = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
48782 	var_ptr = _get_zval_ptr_cv_BP_VAR_RW(opline->op1.var EXECUTE_DATA_CC);
48783 
48784 	if (IS_CV == IS_VAR && UNEXPECTED(Z_ISERROR_P(var_ptr))) {
48785 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
48786 			ZVAL_NULL(EX_VAR(opline->result.var));
48787 		}
48788 	} else {
48789 		ZVAL_DEREF(var_ptr);
48790 
48791 		binary_op(var_ptr, var_ptr, value);
48792 
48793 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
48794 			ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
48795 		}
48796 	}
48797 
48798 
48799 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
48800 }
48801 
48802 static zend_always_inline ZEND_OPCODE_HANDLER_RET zend_binary_assign_op_helper_SPEC_CV_CV(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
48803 {
48804 #if 1 && IS_CV == IS_UNUSED
48805 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_CV_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
48806 #else
48807 # if 0 || IS_CV != IS_UNUSED
48808 #  if 0
48809 	/* opline->extended_value checks are specialized, don't need opline */
48810 	USE_OPLINE
48811 #  endif
48812 
48813 	if (EXPECTED(1)) {
48814 		ZEND_VM_TAIL_CALL(zend_binary_assign_op_simple_helper_SPEC_CV_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
48815 	}
48816 	if (EXPECTED(0)) {
48817 		ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_CV_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
48818 	}
48819 # endif
48820 
48821 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_obj_helper_SPEC_CV_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
48822 #endif
48823 }
48824 
48825 static zend_always_inline ZEND_OPCODE_HANDLER_RET zend_binary_assign_op_helper_SPEC_CV_CV_DIM(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
48826 {
48827 #if 1 && IS_CV == IS_UNUSED
48828 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_CV_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
48829 #else
48830 # if 0 || IS_CV != IS_UNUSED
48831 #  if 0
48832 	/* opline->extended_value checks are specialized, don't need opline */
48833 	USE_OPLINE
48834 #  endif
48835 
48836 	if (EXPECTED(0)) {
48837 		ZEND_VM_TAIL_CALL(zend_binary_assign_op_simple_helper_SPEC_CV_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
48838 	}
48839 	if (EXPECTED(1)) {
48840 		ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_CV_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
48841 	}
48842 # endif
48843 
48844 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_obj_helper_SPEC_CV_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
48845 #endif
48846 }
48847 
48848 static zend_always_inline ZEND_OPCODE_HANDLER_RET zend_binary_assign_op_helper_SPEC_CV_CV_OBJ(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
48849 {
48850 #if 1 && IS_CV == IS_UNUSED
48851 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_CV_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
48852 #else
48853 # if 0 || IS_CV != IS_UNUSED
48854 #  if 0
48855 	/* opline->extended_value checks are specialized, don't need opline */
48856 	USE_OPLINE
48857 #  endif
48858 
48859 	if (EXPECTED(0)) {
48860 		ZEND_VM_TAIL_CALL(zend_binary_assign_op_simple_helper_SPEC_CV_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
48861 	}
48862 	if (EXPECTED(0)) {
48863 		ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_CV_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
48864 	}
48865 # endif
48866 
48867 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_obj_helper_SPEC_CV_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
48868 #endif
48869 }
48870 
48871 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_ADD_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
48872 {
48873 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CV(add_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
48874 }
48875 
48876 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_ADD_SPEC_CV_CV_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
48877 {
48878 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CV_DIM(add_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
48879 }
48880 
48881 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_ADD_SPEC_CV_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
48882 {
48883 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CV_OBJ(add_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
48884 }
48885 
48886 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SUB_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
48887 {
48888 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CV(sub_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
48889 }
48890 
48891 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SUB_SPEC_CV_CV_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
48892 {
48893 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CV_DIM(sub_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
48894 }
48895 
48896 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SUB_SPEC_CV_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
48897 {
48898 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CV_OBJ(sub_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
48899 }
48900 
48901 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MUL_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
48902 {
48903 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CV(mul_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
48904 }
48905 
48906 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MUL_SPEC_CV_CV_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
48907 {
48908 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CV_DIM(mul_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
48909 }
48910 
48911 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MUL_SPEC_CV_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
48912 {
48913 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CV_OBJ(mul_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
48914 }
48915 
48916 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIV_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
48917 {
48918 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CV(div_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
48919 }
48920 
48921 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIV_SPEC_CV_CV_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
48922 {
48923 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CV_DIM(div_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
48924 }
48925 
48926 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIV_SPEC_CV_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
48927 {
48928 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CV_OBJ(div_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
48929 }
48930 
48931 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MOD_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
48932 {
48933 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CV(mod_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
48934 }
48935 
48936 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MOD_SPEC_CV_CV_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
48937 {
48938 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CV_DIM(mod_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
48939 }
48940 
48941 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MOD_SPEC_CV_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
48942 {
48943 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CV_OBJ(mod_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
48944 }
48945 
48946 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SL_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
48947 {
48948 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CV(shift_left_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
48949 }
48950 
48951 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SL_SPEC_CV_CV_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
48952 {
48953 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CV_DIM(shift_left_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
48954 }
48955 
48956 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SL_SPEC_CV_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
48957 {
48958 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CV_OBJ(shift_left_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
48959 }
48960 
48961 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SR_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
48962 {
48963 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CV(shift_right_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
48964 }
48965 
48966 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SR_SPEC_CV_CV_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
48967 {
48968 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CV_DIM(shift_right_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
48969 }
48970 
48971 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SR_SPEC_CV_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
48972 {
48973 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CV_OBJ(shift_right_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
48974 }
48975 
48976 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_CONCAT_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
48977 {
48978 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CV(concat_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
48979 }
48980 
48981 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_CONCAT_SPEC_CV_CV_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
48982 {
48983 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CV_DIM(concat_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
48984 }
48985 
48986 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_CONCAT_SPEC_CV_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
48987 {
48988 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CV_OBJ(concat_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
48989 }
48990 
48991 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_OR_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
48992 {
48993 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CV(bitwise_or_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
48994 }
48995 
48996 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_OR_SPEC_CV_CV_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
48997 {
48998 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CV_DIM(bitwise_or_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
48999 }
49000 
49001 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_OR_SPEC_CV_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
49002 {
49003 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CV_OBJ(bitwise_or_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
49004 }
49005 
49006 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_AND_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
49007 {
49008 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CV(bitwise_and_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
49009 }
49010 
49011 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_AND_SPEC_CV_CV_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
49012 {
49013 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CV_DIM(bitwise_and_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
49014 }
49015 
49016 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_AND_SPEC_CV_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
49017 {
49018 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CV_OBJ(bitwise_and_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
49019 }
49020 
49021 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_XOR_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
49022 {
49023 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CV(bitwise_xor_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
49024 }
49025 
49026 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_XOR_SPEC_CV_CV_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
49027 {
49028 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CV_DIM(bitwise_xor_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
49029 }
49030 
49031 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_XOR_SPEC_CV_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
49032 {
49033 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CV_OBJ(bitwise_xor_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
49034 }
49035 
49036 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_POW_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
49037 {
49038 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CV(pow_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
49039 }
49040 
49041 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_POW_SPEC_CV_CV_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
49042 {
49043 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CV_DIM(pow_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
49044 }
49045 
49046 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_POW_SPEC_CV_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
49047 {
49048 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CV_OBJ(pow_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
49049 }
49050 
49051 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_pre_incdec_property_helper_SPEC_CV_CV(int inc ZEND_OPCODE_HANDLER_ARGS_DC)
49052 {
49053 	USE_OPLINE
49054 
49055 	zval *object;
49056 	zval *property;
49057 	zval *zptr;
49058 
49059 	SAVE_OPLINE();
49060 	object = _get_zval_ptr_cv_BP_VAR_RW(opline->op1.var EXECUTE_DATA_CC);
49061 
49062 	if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
49063 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
49064 	}
49065 
49066 	property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
49067 
49068 	do {
49069 		if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
49070 			if (Z_ISREF_P(object)) {
49071 				object = Z_REFVAL_P(object);
49072 				if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
49073 					goto pre_incdec_object;
49074 				}
49075 			}
49076 			if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
49077 				break;
49078 			}
49079 		}
49080 
49081 		/* here we are sure we are dealing with an object */
49082 pre_incdec_object:
49083 		if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
49084 			&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL))) != NULL)) {
49085 			if (UNEXPECTED(Z_ISERROR_P(zptr))) {
49086 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
49087 					ZVAL_NULL(EX_VAR(opline->result.var));
49088 				}
49089 			} else {
49090 				if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
49091 					if (inc) {
49092 						fast_long_increment_function(zptr);
49093 					} else {
49094 						fast_long_decrement_function(zptr);
49095 					}
49096 				} else {
49097 					ZVAL_DEREF(zptr);
49098 
49099 					if (inc) {
49100 						increment_function(zptr);
49101 					} else {
49102 						decrement_function(zptr);
49103 					}
49104 				}
49105 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
49106 					ZVAL_COPY(EX_VAR(opline->result.var), zptr);
49107 				}
49108 			}
49109 		} else {
49110 			zend_pre_incdec_overloaded_property(object, property, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), inc OPLINE_CC EXECUTE_DATA_CC);
49111 		}
49112 	} while (0);
49113 
49114 
49115 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
49116 }
49117 
49118 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_INC_OBJ_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
49119 {
49120 	ZEND_VM_TAIL_CALL(zend_pre_incdec_property_helper_SPEC_CV_CV(1 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
49121 }
49122 
49123 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_DEC_OBJ_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
49124 {
49125 	ZEND_VM_TAIL_CALL(zend_pre_incdec_property_helper_SPEC_CV_CV(0 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
49126 }
49127 
49128 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_post_incdec_property_helper_SPEC_CV_CV(int inc ZEND_OPCODE_HANDLER_ARGS_DC)
49129 {
49130 	USE_OPLINE
49131 
49132 	zval *object;
49133 	zval *property;
49134 	zval *zptr;
49135 
49136 	SAVE_OPLINE();
49137 	object = _get_zval_ptr_cv_BP_VAR_RW(opline->op1.var EXECUTE_DATA_CC);
49138 
49139 	if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
49140 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
49141 	}
49142 
49143 	property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
49144 
49145 	do {
49146 		if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
49147 			if (Z_ISREF_P(object)) {
49148 				object = Z_REFVAL_P(object);
49149 				if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
49150 					goto post_incdec_object;
49151 				}
49152 			}
49153 			if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
49154 				break;
49155 			}
49156 		}
49157 
49158 		/* here we are sure we are dealing with an object */
49159 post_incdec_object:
49160 		if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
49161 			&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL))) != NULL)) {
49162 			if (UNEXPECTED(Z_ISERROR_P(zptr))) {
49163 				ZVAL_NULL(EX_VAR(opline->result.var));
49164 			} else {
49165 				if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
49166 					ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(zptr));
49167 					if (inc) {
49168 						fast_long_increment_function(zptr);
49169 					} else {
49170 						fast_long_decrement_function(zptr);
49171 					}
49172 				} else {
49173 					ZVAL_DEREF(zptr);
49174 					ZVAL_COPY(EX_VAR(opline->result.var), zptr);
49175 					if (inc) {
49176 						increment_function(zptr);
49177 					} else {
49178 						decrement_function(zptr);
49179 					}
49180 				}
49181 			}
49182 		} else {
49183 			zend_post_incdec_overloaded_property(object, property, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), inc OPLINE_CC EXECUTE_DATA_CC);
49184 		}
49185 	} while (0);
49186 
49187 
49188 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
49189 }
49190 
49191 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_POST_INC_OBJ_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
49192 {
49193 	ZEND_VM_TAIL_CALL(zend_post_incdec_property_helper_SPEC_CV_CV(1 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
49194 }
49195 
49196 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_POST_DEC_OBJ_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
49197 {
49198 	ZEND_VM_TAIL_CALL(zend_post_incdec_property_helper_SPEC_CV_CV(0 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
49199 }
49200 
49201 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_R_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
49202 {
49203 	USE_OPLINE
49204 
49205 	zval *container, *dim, *value, *result;
49206 
49207 	SAVE_OPLINE();
49208 	container = EX_VAR(opline->op1.var);
49209 	dim = EX_VAR(opline->op2.var);
49210 	if (IS_CV != IS_CONST) {
49211 		if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
49212 fetch_dim_r_array:
49213 			value = zend_fetch_dimension_address_inner(Z_ARRVAL_P(container), dim, IS_CV, BP_VAR_R EXECUTE_DATA_CC);
49214 			result = EX_VAR(opline->result.var);
49215 			ZVAL_COPY_DEREF(result, value);
49216 		} else if (EXPECTED(Z_TYPE_P(container) == IS_REFERENCE)) {
49217 			container = Z_REFVAL_P(container);
49218 			if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
49219 				goto fetch_dim_r_array;
49220 			} else {
49221 				goto fetch_dim_r_slow;
49222 			}
49223 		} else {
49224 fetch_dim_r_slow:
49225 			if (IS_CV == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
49226 				dim++;
49227 			}
49228 			zend_fetch_dimension_address_read_R_slow(container, dim OPLINE_CC EXECUTE_DATA_CC);
49229 		}
49230 	} else {
49231 		zend_fetch_dimension_address_read_R(container, dim, IS_CV OPLINE_CC EXECUTE_DATA_CC);
49232 	}
49233 
49234 
49235 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
49236 }
49237 
49238 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_W_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
49239 {
49240 	USE_OPLINE
49241 	zend_free_op free_op1;
49242 	zval *container;
49243 
49244 	SAVE_OPLINE();
49245 	container = EX_VAR(opline->op1.var);
49246 	zend_fetch_dimension_address_W(container, EX_VAR(opline->op2.var), IS_CV OPLINE_CC EXECUTE_DATA_CC);
49247 
49248 	if (IS_CV == IS_VAR) {
49249 		zval *result = EX_VAR(opline->result.var);
49250 		FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(free_op1, result);
49251 	}
49252 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
49253 }
49254 
49255 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_RW_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
49256 {
49257 	USE_OPLINE
49258 	zend_free_op free_op1;
49259 	zval *container;
49260 
49261 	SAVE_OPLINE();
49262 	container = EX_VAR(opline->op1.var);
49263 	zend_fetch_dimension_address_RW(container, EX_VAR(opline->op2.var), IS_CV OPLINE_CC EXECUTE_DATA_CC);
49264 
49265 	if (IS_CV == IS_VAR) {
49266 		zval *result = EX_VAR(opline->result.var);
49267 		FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(free_op1, result);
49268 	}
49269 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
49270 }
49271 
49272 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_IS_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
49273 {
49274 	USE_OPLINE
49275 
49276 	zval *container;
49277 
49278 	SAVE_OPLINE();
49279 	container = EX_VAR(opline->op1.var);
49280 	zend_fetch_dimension_address_read_IS(container, EX_VAR(opline->op2.var), IS_CV OPLINE_CC EXECUTE_DATA_CC);
49281 
49282 
49283 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
49284 }
49285 
49286 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
49287 {
49288 	if (UNEXPECTED(ZEND_CALL_INFO(EX(call)) & ZEND_CALL_SEND_ARG_BY_REF)) {
49289         if ((IS_CV & (IS_CONST|IS_TMP_VAR))) {
49290 			ZEND_VM_TAIL_CALL(zend_use_tmp_in_write_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
49291         }
49292 		ZEND_VM_TAIL_CALL(ZEND_FETCH_DIM_W_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
49293 	} else {
49294 		if (IS_CV == IS_UNUSED) {
49295 			ZEND_VM_TAIL_CALL(zend_use_undef_in_read_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
49296 		}
49297 		ZEND_VM_TAIL_CALL(ZEND_FETCH_DIM_R_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
49298 	}
49299 }
49300 
49301 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_UNSET_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
49302 {
49303 	USE_OPLINE
49304 	zend_free_op free_op1;
49305 	zval *container;
49306 
49307 	SAVE_OPLINE();
49308 	container = EX_VAR(opline->op1.var);
49309 	zend_fetch_dimension_address_UNSET(container, EX_VAR(opline->op2.var), IS_CV OPLINE_CC EXECUTE_DATA_CC);
49310 
49311 	if (IS_CV == IS_VAR) {
49312 		zval *result = EX_VAR(opline->result.var);
49313 		FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(free_op1, result);
49314 	}
49315 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
49316 }
49317 
49318 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_R_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
49319 {
49320 	USE_OPLINE
49321 
49322 	zval *container;
49323 
49324 	zval *offset;
49325 	void **cache_slot = NULL;
49326 
49327 	SAVE_OPLINE();
49328 	container = EX_VAR(opline->op1.var);
49329 
49330 	if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
49331 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
49332 	}
49333 
49334 	offset = EX_VAR(opline->op2.var);
49335 
49336 	if (IS_CV == IS_CONST ||
49337 	    (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
49338 	    do {
49339 			if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
49340 				container = Z_REFVAL_P(container);
49341 				if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
49342 					break;
49343 				}
49344 			}
49345 			if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
49346 				GET_OP1_UNDEF_CV(container, BP_VAR_R);
49347 			}
49348 			if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(offset) == IS_UNDEF)) {
49349 				GET_OP2_UNDEF_CV(offset, BP_VAR_R);
49350 			}
49351 			goto fetch_obj_r_no_object;
49352 		} while (0);
49353 	}
49354 
49355 	/* here we are sure we are dealing with an object */
49356 	do {
49357 		zend_object *zobj = Z_OBJ_P(container);
49358 		zval *retval;
49359 
49360 		if (IS_CV == IS_CONST) {
49361 			cache_slot = CACHE_ADDR(opline->extended_value);
49362 
49363 			if (EXPECTED(zobj->ce == CACHED_PTR_EX(cache_slot))) {
49364 				uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
49365 
49366 				if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
49367 					retval = OBJ_PROP(zobj, prop_offset);
49368 					if (EXPECTED(Z_TYPE_INFO_P(retval) != IS_UNDEF)) {
49369 						ZVAL_COPY_DEREF(EX_VAR(opline->result.var), retval);
49370 						break;
49371 					}
49372 				} else if (EXPECTED(zobj->properties != NULL)) {
49373 					if (!IS_UNKNOWN_DYNAMIC_PROPERTY_OFFSET(prop_offset)) {
49374 						uintptr_t idx = ZEND_DECODE_DYN_PROP_OFFSET(prop_offset);
49375 
49376 						if (EXPECTED(idx < zobj->properties->nNumUsed * sizeof(Bucket))) {
49377 							Bucket *p = (Bucket*)((char*)zobj->properties->arData + idx);
49378 
49379 							if (EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
49380 						        (EXPECTED(p->key == Z_STR_P(offset)) ||
49381 						         (EXPECTED(p->h == ZSTR_H(Z_STR_P(offset))) &&
49382 						          EXPECTED(p->key != NULL) &&
49383 						          EXPECTED(zend_string_equal_content(p->key, Z_STR_P(offset)))))) {
49384 								ZVAL_COPY_DEREF(EX_VAR(opline->result.var), &p->val);
49385 								break;
49386 							}
49387 						}
49388 						CACHE_PTR_EX(cache_slot + 1, (void*)ZEND_DYNAMIC_PROPERTY_OFFSET);
49389 					}
49390 					retval = zend_hash_find_ex(zobj->properties, Z_STR_P(offset), 1);
49391 					if (EXPECTED(retval)) {
49392 						uintptr_t idx = (char*)retval - (char*)zobj->properties->arData;
49393 						CACHE_PTR_EX(cache_slot + 1, (void*)ZEND_ENCODE_DYN_PROP_OFFSET(idx));
49394 						ZVAL_COPY_DEREF(EX_VAR(opline->result.var), retval);
49395 						break;
49396 					}
49397 				}
49398 			}
49399 		} else if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(offset) == IS_UNDEF)) {
49400 			GET_OP2_UNDEF_CV(offset, BP_VAR_R);
49401 		}
49402 
49403 		if (UNEXPECTED(zobj->handlers->read_property == NULL)) {
49404 fetch_obj_r_no_object:
49405 			zend_wrong_property_read(offset);
49406 			ZVAL_NULL(EX_VAR(opline->result.var));
49407 		} else {
49408 			retval = zobj->handlers->read_property(container, offset, BP_VAR_R, cache_slot, EX_VAR(opline->result.var));
49409 
49410 			if (retval != EX_VAR(opline->result.var)) {
49411 				ZVAL_COPY_DEREF(EX_VAR(opline->result.var), retval);
49412 			} else if (UNEXPECTED(Z_ISREF_P(retval))) {
49413 				zend_unwrap_reference(retval);
49414 			}
49415 		}
49416 	} while (0);
49417 
49418 
49419 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
49420 }
49421 
49422 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_W_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
49423 {
49424 	USE_OPLINE
49425 	zend_free_op free_op1;
49426 	zval *property, *container, *result;
49427 
49428 	SAVE_OPLINE();
49429 
49430 	container = EX_VAR(opline->op1.var);
49431 	if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
49432 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
49433 	}
49434 
49435 	property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
49436 	result = EX_VAR(opline->result.var);
49437 	zend_fetch_property_address(result, container, IS_CV, property, IS_CV, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_W OPLINE_CC);
49438 
49439 	if (IS_CV == IS_VAR) {
49440 		FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(free_op1, result);
49441 	}
49442 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
49443 }
49444 
49445 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_RW_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
49446 {
49447 	USE_OPLINE
49448 	zend_free_op free_op1;
49449 	zval *property, *container, *result;
49450 
49451 	SAVE_OPLINE();
49452 	container = _get_zval_ptr_cv_BP_VAR_RW(opline->op1.var EXECUTE_DATA_CC);
49453 
49454 	if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
49455 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
49456 	}
49457 	property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
49458 	result = EX_VAR(opline->result.var);
49459 	zend_fetch_property_address(result, container, IS_CV, property, IS_CV, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_RW OPLINE_CC);
49460 
49461 	if (IS_CV == IS_VAR) {
49462 		FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(free_op1, result);
49463 	}
49464 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
49465 }
49466 
49467 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_IS_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
49468 {
49469 	USE_OPLINE
49470 
49471 	zval *container;
49472 
49473 	zval *offset;
49474 	void **cache_slot = NULL;
49475 
49476 	SAVE_OPLINE();
49477 	container = _get_zval_ptr_cv_BP_VAR_IS(opline->op1.var EXECUTE_DATA_CC);
49478 
49479 	if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
49480 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
49481 	}
49482 
49483 	offset = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
49484 
49485 	if (IS_CV == IS_CONST ||
49486 	    (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
49487 		do {
49488 			if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
49489 				container = Z_REFVAL_P(container);
49490 				if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
49491 					break;
49492 				}
49493 			}
49494 			goto fetch_obj_is_no_object;
49495 		} while (0);
49496 	}
49497 
49498 	/* here we are sure we are dealing with an object */
49499 	do {
49500 		zend_object *zobj = Z_OBJ_P(container);
49501 		zval *retval;
49502 
49503 		if (IS_CV == IS_CONST) {
49504 			cache_slot = CACHE_ADDR(opline->extended_value);
49505 
49506 			if (EXPECTED(zobj->ce == CACHED_PTR_EX(cache_slot))) {
49507 				uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
49508 
49509 				if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
49510 					retval = OBJ_PROP(zobj, prop_offset);
49511 					if (EXPECTED(Z_TYPE_P(retval) != IS_UNDEF)) {
49512 						ZVAL_COPY(EX_VAR(opline->result.var), retval);
49513 						break;
49514 					}
49515 				} else if (EXPECTED(zobj->properties != NULL)) {
49516 					if (!IS_UNKNOWN_DYNAMIC_PROPERTY_OFFSET(prop_offset)) {
49517 						uintptr_t idx = ZEND_DECODE_DYN_PROP_OFFSET(prop_offset);
49518 
49519 						if (EXPECTED(idx < zobj->properties->nNumUsed * sizeof(Bucket))) {
49520 							Bucket *p = (Bucket*)((char*)zobj->properties->arData + idx);
49521 
49522 							if (EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
49523 						        (EXPECTED(p->key == Z_STR_P(offset)) ||
49524 						         (EXPECTED(p->h == ZSTR_H(Z_STR_P(offset))) &&
49525 						          EXPECTED(p->key != NULL) &&
49526 						          EXPECTED(zend_string_equal_content(p->key, Z_STR_P(offset)))))) {
49527 								ZVAL_COPY(EX_VAR(opline->result.var), &p->val);
49528 								break;
49529 							}
49530 						}
49531 						CACHE_PTR_EX(cache_slot + 1, (void*)ZEND_DYNAMIC_PROPERTY_OFFSET);
49532 					}
49533 					retval = zend_hash_find_ex(zobj->properties, Z_STR_P(offset), 1);
49534 					if (EXPECTED(retval)) {
49535 						uintptr_t idx = (char*)retval - (char*)zobj->properties->arData;
49536 						CACHE_PTR_EX(cache_slot + 1, (void*)ZEND_ENCODE_DYN_PROP_OFFSET(idx));
49537 						ZVAL_COPY(EX_VAR(opline->result.var), retval);
49538 						break;
49539 					}
49540 				}
49541 			}
49542 		}
49543 
49544 		if (UNEXPECTED(zobj->handlers->read_property == NULL)) {
49545 fetch_obj_is_no_object:
49546 			ZVAL_NULL(EX_VAR(opline->result.var));
49547 		} else {
49548 
49549 			retval = zobj->handlers->read_property(container, offset, BP_VAR_IS, cache_slot, EX_VAR(opline->result.var));
49550 
49551 			if (retval != EX_VAR(opline->result.var)) {
49552 				ZVAL_COPY(EX_VAR(opline->result.var), retval);
49553 			}
49554 		}
49555 	} while (0);
49556 
49557 
49558 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
49559 }
49560 
49561 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
49562 {
49563 	if (UNEXPECTED(ZEND_CALL_INFO(EX(call)) & ZEND_CALL_SEND_ARG_BY_REF)) {
49564 		/* Behave like FETCH_OBJ_W */
49565 		if ((IS_CV & (IS_CONST|IS_TMP_VAR))) {
49566 			ZEND_VM_TAIL_CALL(zend_use_tmp_in_write_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
49567 		}
49568 
49569 		ZEND_VM_TAIL_CALL(ZEND_FETCH_OBJ_W_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
49570 	} else {
49571 		ZEND_VM_TAIL_CALL(ZEND_FETCH_OBJ_R_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
49572 	}
49573 }
49574 
49575 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_UNSET_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
49576 {
49577 	USE_OPLINE
49578 	zend_free_op free_op1;
49579 	zval *container, *property, *result;
49580 
49581 	SAVE_OPLINE();
49582 	container = _get_zval_ptr_cv_BP_VAR_UNSET(opline->op1.var EXECUTE_DATA_CC);
49583 
49584 	if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
49585 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
49586 	}
49587 
49588 	property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
49589 	result = EX_VAR(opline->result.var);
49590 	zend_fetch_property_address(result, container, IS_CV, property, IS_CV, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_UNSET OPLINE_CC);
49591 
49592 	if (IS_CV == IS_VAR) {
49593 		FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(free_op1, result);
49594 	}
49595 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
49596 }
49597 
49598 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_CV_CV_OP_DATA_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
49599 {
49600 	USE_OPLINE
49601 
49602 	zval *object, *property, *value, tmp;
49603 
49604 	SAVE_OPLINE();
49605 	object = EX_VAR(opline->op1.var);
49606 
49607 	if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
49608 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
49609 	}
49610 
49611 	property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
49612 	value = RT_CONSTANT((opline+1), (opline+1)->op1);
49613 
49614 	if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
49615 		if (Z_ISREF_P(object)) {
49616 			object = Z_REFVAL_P(object);
49617 			if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
49618 				goto assign_object;
49619 			}
49620 		}
49621 		if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
49622 
49623 			goto exit_assign_obj;
49624 		}
49625 	}
49626 
49627 assign_object:
49628 	if (IS_CV == IS_CONST &&
49629 	    EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(opline->extended_value))) {
49630 		uintptr_t prop_offset = (uintptr_t)CACHED_PTR(opline->extended_value + sizeof(void*));
49631 		zend_object *zobj = Z_OBJ_P(object);
49632 		zval *property_val;
49633 
49634 		if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
49635 			property_val = OBJ_PROP(zobj, prop_offset);
49636 			if (Z_TYPE_P(property_val) != IS_UNDEF) {
49637 fast_assign_obj:
49638 				value = zend_assign_to_variable(property_val, value, IS_CONST);
49639 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
49640 					ZVAL_COPY(EX_VAR(opline->result.var), value);
49641 				}
49642 				goto exit_assign_obj;
49643 			}
49644 		} else {
49645 			if (EXPECTED(zobj->properties != NULL)) {
49646 				if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
49647 					if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
49648 						GC_DELREF(zobj->properties);
49649 					}
49650 					zobj->properties = zend_array_dup(zobj->properties);
49651 				}
49652 				property_val = zend_hash_find_ex(zobj->properties, Z_STR_P(property), 1);
49653 				if (property_val) {
49654 					goto fast_assign_obj;
49655 				}
49656 			}
49657 
49658 			if (!zobj->ce->__set) {
49659 
49660 				if (EXPECTED(zobj->properties == NULL)) {
49661 					rebuild_object_properties(zobj);
49662 				}
49663 				if (IS_CONST == IS_CONST) {
49664 					if (UNEXPECTED(Z_OPT_REFCOUNTED_P(value))) {
49665 						Z_ADDREF_P(value);
49666 					}
49667 				} else if (IS_CONST != IS_TMP_VAR) {
49668 					if (Z_ISREF_P(value)) {
49669 						if (IS_CONST == IS_VAR) {
49670 							zend_reference *ref = Z_REF_P(value);
49671 							if (GC_DELREF(ref) == 0) {
49672 								ZVAL_COPY_VALUE(&tmp, Z_REFVAL_P(value));
49673 								efree_size(ref, sizeof(zend_reference));
49674 								value = &tmp;
49675 							} else {
49676 								value = Z_REFVAL_P(value);
49677 								Z_TRY_ADDREF_P(value);
49678 							}
49679 						} else {
49680 							value = Z_REFVAL_P(value);
49681 							Z_TRY_ADDREF_P(value);
49682 						}
49683 					} else if (IS_CONST == IS_CV) {
49684 						Z_TRY_ADDREF_P(value);
49685 					}
49686 				}
49687 				zend_hash_add_new(zobj->properties, Z_STR_P(property), value);
49688 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
49689 					ZVAL_COPY(EX_VAR(opline->result.var), value);
49690 				}
49691 				goto exit_assign_obj;
49692 			}
49693 		}
49694 	}
49695 
49696 	if (!Z_OBJ_HT_P(object)->write_property) {
49697 		zend_wrong_property_assignment(property OPLINE_CC EXECUTE_DATA_CC);
49698 
49699 		goto exit_assign_obj;
49700 	}
49701 
49702 	if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
49703 		ZVAL_DEREF(value);
49704 	}
49705 
49706 	Z_OBJ_HT_P(object)->write_property(object, property, value, (IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
49707 
49708 	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
49709 		ZVAL_COPY(EX_VAR(opline->result.var), value);
49710 	}
49711 
49712 exit_assign_obj:
49713 
49714 
49715 	/* assign_obj has two opcodes! */
49716 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
49717 }
49718 
49719 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_CV_CV_OP_DATA_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
49720 {
49721 	USE_OPLINE
49722 	zend_free_op free_op_data;
49723 	zval *object, *property, *value, tmp;
49724 
49725 	SAVE_OPLINE();
49726 	object = EX_VAR(opline->op1.var);
49727 
49728 	if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
49729 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
49730 	}
49731 
49732 	property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
49733 	value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
49734 
49735 	if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
49736 		if (Z_ISREF_P(object)) {
49737 			object = Z_REFVAL_P(object);
49738 			if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
49739 				goto assign_object;
49740 			}
49741 		}
49742 		if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
49743 			zval_ptr_dtor_nogc(free_op_data);
49744 			goto exit_assign_obj;
49745 		}
49746 	}
49747 
49748 assign_object:
49749 	if (IS_CV == IS_CONST &&
49750 	    EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(opline->extended_value))) {
49751 		uintptr_t prop_offset = (uintptr_t)CACHED_PTR(opline->extended_value + sizeof(void*));
49752 		zend_object *zobj = Z_OBJ_P(object);
49753 		zval *property_val;
49754 
49755 		if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
49756 			property_val = OBJ_PROP(zobj, prop_offset);
49757 			if (Z_TYPE_P(property_val) != IS_UNDEF) {
49758 fast_assign_obj:
49759 				value = zend_assign_to_variable(property_val, value, IS_TMP_VAR);
49760 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
49761 					ZVAL_COPY(EX_VAR(opline->result.var), value);
49762 				}
49763 				goto exit_assign_obj;
49764 			}
49765 		} else {
49766 			if (EXPECTED(zobj->properties != NULL)) {
49767 				if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
49768 					if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
49769 						GC_DELREF(zobj->properties);
49770 					}
49771 					zobj->properties = zend_array_dup(zobj->properties);
49772 				}
49773 				property_val = zend_hash_find_ex(zobj->properties, Z_STR_P(property), 1);
49774 				if (property_val) {
49775 					goto fast_assign_obj;
49776 				}
49777 			}
49778 
49779 			if (!zobj->ce->__set) {
49780 
49781 				if (EXPECTED(zobj->properties == NULL)) {
49782 					rebuild_object_properties(zobj);
49783 				}
49784 				if (IS_TMP_VAR == IS_CONST) {
49785 					if (UNEXPECTED(Z_OPT_REFCOUNTED_P(value))) {
49786 						Z_ADDREF_P(value);
49787 					}
49788 				} else if (IS_TMP_VAR != IS_TMP_VAR) {
49789 					if (Z_ISREF_P(value)) {
49790 						if (IS_TMP_VAR == IS_VAR) {
49791 							zend_reference *ref = Z_REF_P(value);
49792 							if (GC_DELREF(ref) == 0) {
49793 								ZVAL_COPY_VALUE(&tmp, Z_REFVAL_P(value));
49794 								efree_size(ref, sizeof(zend_reference));
49795 								value = &tmp;
49796 							} else {
49797 								value = Z_REFVAL_P(value);
49798 								Z_TRY_ADDREF_P(value);
49799 							}
49800 						} else {
49801 							value = Z_REFVAL_P(value);
49802 							Z_TRY_ADDREF_P(value);
49803 						}
49804 					} else if (IS_TMP_VAR == IS_CV) {
49805 						Z_TRY_ADDREF_P(value);
49806 					}
49807 				}
49808 				zend_hash_add_new(zobj->properties, Z_STR_P(property), value);
49809 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
49810 					ZVAL_COPY(EX_VAR(opline->result.var), value);
49811 				}
49812 				goto exit_assign_obj;
49813 			}
49814 		}
49815 	}
49816 
49817 	if (!Z_OBJ_HT_P(object)->write_property) {
49818 		zend_wrong_property_assignment(property OPLINE_CC EXECUTE_DATA_CC);
49819 		zval_ptr_dtor_nogc(free_op_data);
49820 		goto exit_assign_obj;
49821 	}
49822 
49823 	if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
49824 		ZVAL_DEREF(value);
49825 	}
49826 
49827 	Z_OBJ_HT_P(object)->write_property(object, property, value, (IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
49828 
49829 	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
49830 		ZVAL_COPY(EX_VAR(opline->result.var), value);
49831 	}
49832 	zval_ptr_dtor_nogc(free_op_data);
49833 exit_assign_obj:
49834 
49835 
49836 	/* assign_obj has two opcodes! */
49837 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
49838 }
49839 
49840 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_CV_CV_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
49841 {
49842 	USE_OPLINE
49843 	zend_free_op free_op_data;
49844 	zval *object, *property, *value, tmp;
49845 
49846 	SAVE_OPLINE();
49847 	object = EX_VAR(opline->op1.var);
49848 
49849 	if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
49850 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
49851 	}
49852 
49853 	property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
49854 	value = _get_zval_ptr_var((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
49855 
49856 	if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
49857 		if (Z_ISREF_P(object)) {
49858 			object = Z_REFVAL_P(object);
49859 			if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
49860 				goto assign_object;
49861 			}
49862 		}
49863 		if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
49864 			zval_ptr_dtor_nogc(free_op_data);
49865 			goto exit_assign_obj;
49866 		}
49867 	}
49868 
49869 assign_object:
49870 	if (IS_CV == IS_CONST &&
49871 	    EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(opline->extended_value))) {
49872 		uintptr_t prop_offset = (uintptr_t)CACHED_PTR(opline->extended_value + sizeof(void*));
49873 		zend_object *zobj = Z_OBJ_P(object);
49874 		zval *property_val;
49875 
49876 		if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
49877 			property_val = OBJ_PROP(zobj, prop_offset);
49878 			if (Z_TYPE_P(property_val) != IS_UNDEF) {
49879 fast_assign_obj:
49880 				value = zend_assign_to_variable(property_val, value, IS_VAR);
49881 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
49882 					ZVAL_COPY(EX_VAR(opline->result.var), value);
49883 				}
49884 				goto exit_assign_obj;
49885 			}
49886 		} else {
49887 			if (EXPECTED(zobj->properties != NULL)) {
49888 				if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
49889 					if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
49890 						GC_DELREF(zobj->properties);
49891 					}
49892 					zobj->properties = zend_array_dup(zobj->properties);
49893 				}
49894 				property_val = zend_hash_find_ex(zobj->properties, Z_STR_P(property), 1);
49895 				if (property_val) {
49896 					goto fast_assign_obj;
49897 				}
49898 			}
49899 
49900 			if (!zobj->ce->__set) {
49901 
49902 				if (EXPECTED(zobj->properties == NULL)) {
49903 					rebuild_object_properties(zobj);
49904 				}
49905 				if (IS_VAR == IS_CONST) {
49906 					if (UNEXPECTED(Z_OPT_REFCOUNTED_P(value))) {
49907 						Z_ADDREF_P(value);
49908 					}
49909 				} else if (IS_VAR != IS_TMP_VAR) {
49910 					if (Z_ISREF_P(value)) {
49911 						if (IS_VAR == IS_VAR) {
49912 							zend_reference *ref = Z_REF_P(value);
49913 							if (GC_DELREF(ref) == 0) {
49914 								ZVAL_COPY_VALUE(&tmp, Z_REFVAL_P(value));
49915 								efree_size(ref, sizeof(zend_reference));
49916 								value = &tmp;
49917 							} else {
49918 								value = Z_REFVAL_P(value);
49919 								Z_TRY_ADDREF_P(value);
49920 							}
49921 						} else {
49922 							value = Z_REFVAL_P(value);
49923 							Z_TRY_ADDREF_P(value);
49924 						}
49925 					} else if (IS_VAR == IS_CV) {
49926 						Z_TRY_ADDREF_P(value);
49927 					}
49928 				}
49929 				zend_hash_add_new(zobj->properties, Z_STR_P(property), value);
49930 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
49931 					ZVAL_COPY(EX_VAR(opline->result.var), value);
49932 				}
49933 				goto exit_assign_obj;
49934 			}
49935 		}
49936 	}
49937 
49938 	if (!Z_OBJ_HT_P(object)->write_property) {
49939 		zend_wrong_property_assignment(property OPLINE_CC EXECUTE_DATA_CC);
49940 		zval_ptr_dtor_nogc(free_op_data);
49941 		goto exit_assign_obj;
49942 	}
49943 
49944 	if (IS_VAR == IS_CV || IS_VAR == IS_VAR) {
49945 		ZVAL_DEREF(value);
49946 	}
49947 
49948 	Z_OBJ_HT_P(object)->write_property(object, property, value, (IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
49949 
49950 	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
49951 		ZVAL_COPY(EX_VAR(opline->result.var), value);
49952 	}
49953 	zval_ptr_dtor_nogc(free_op_data);
49954 exit_assign_obj:
49955 
49956 
49957 	/* assign_obj has two opcodes! */
49958 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
49959 }
49960 
49961 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_CV_CV_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
49962 {
49963 	USE_OPLINE
49964 
49965 	zval *object, *property, *value, tmp;
49966 
49967 	SAVE_OPLINE();
49968 	object = EX_VAR(opline->op1.var);
49969 
49970 	if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
49971 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
49972 	}
49973 
49974 	property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
49975 	value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
49976 
49977 	if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
49978 		if (Z_ISREF_P(object)) {
49979 			object = Z_REFVAL_P(object);
49980 			if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
49981 				goto assign_object;
49982 			}
49983 		}
49984 		if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
49985 
49986 			goto exit_assign_obj;
49987 		}
49988 	}
49989 
49990 assign_object:
49991 	if (IS_CV == IS_CONST &&
49992 	    EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(opline->extended_value))) {
49993 		uintptr_t prop_offset = (uintptr_t)CACHED_PTR(opline->extended_value + sizeof(void*));
49994 		zend_object *zobj = Z_OBJ_P(object);
49995 		zval *property_val;
49996 
49997 		if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
49998 			property_val = OBJ_PROP(zobj, prop_offset);
49999 			if (Z_TYPE_P(property_val) != IS_UNDEF) {
50000 fast_assign_obj:
50001 				value = zend_assign_to_variable(property_val, value, IS_CV);
50002 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
50003 					ZVAL_COPY(EX_VAR(opline->result.var), value);
50004 				}
50005 				goto exit_assign_obj;
50006 			}
50007 		} else {
50008 			if (EXPECTED(zobj->properties != NULL)) {
50009 				if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
50010 					if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
50011 						GC_DELREF(zobj->properties);
50012 					}
50013 					zobj->properties = zend_array_dup(zobj->properties);
50014 				}
50015 				property_val = zend_hash_find_ex(zobj->properties, Z_STR_P(property), 1);
50016 				if (property_val) {
50017 					goto fast_assign_obj;
50018 				}
50019 			}
50020 
50021 			if (!zobj->ce->__set) {
50022 
50023 				if (EXPECTED(zobj->properties == NULL)) {
50024 					rebuild_object_properties(zobj);
50025 				}
50026 				if (IS_CV == IS_CONST) {
50027 					if (UNEXPECTED(Z_OPT_REFCOUNTED_P(value))) {
50028 						Z_ADDREF_P(value);
50029 					}
50030 				} else if (IS_CV != IS_TMP_VAR) {
50031 					if (Z_ISREF_P(value)) {
50032 						if (IS_CV == IS_VAR) {
50033 							zend_reference *ref = Z_REF_P(value);
50034 							if (GC_DELREF(ref) == 0) {
50035 								ZVAL_COPY_VALUE(&tmp, Z_REFVAL_P(value));
50036 								efree_size(ref, sizeof(zend_reference));
50037 								value = &tmp;
50038 							} else {
50039 								value = Z_REFVAL_P(value);
50040 								Z_TRY_ADDREF_P(value);
50041 							}
50042 						} else {
50043 							value = Z_REFVAL_P(value);
50044 							Z_TRY_ADDREF_P(value);
50045 						}
50046 					} else if (IS_CV == IS_CV) {
50047 						Z_TRY_ADDREF_P(value);
50048 					}
50049 				}
50050 				zend_hash_add_new(zobj->properties, Z_STR_P(property), value);
50051 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
50052 					ZVAL_COPY(EX_VAR(opline->result.var), value);
50053 				}
50054 				goto exit_assign_obj;
50055 			}
50056 		}
50057 	}
50058 
50059 	if (!Z_OBJ_HT_P(object)->write_property) {
50060 		zend_wrong_property_assignment(property OPLINE_CC EXECUTE_DATA_CC);
50061 
50062 		goto exit_assign_obj;
50063 	}
50064 
50065 	if (IS_CV == IS_CV || IS_CV == IS_VAR) {
50066 		ZVAL_DEREF(value);
50067 	}
50068 
50069 	Z_OBJ_HT_P(object)->write_property(object, property, value, (IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
50070 
50071 	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
50072 		ZVAL_COPY(EX_VAR(opline->result.var), value);
50073 	}
50074 
50075 exit_assign_obj:
50076 
50077 
50078 	/* assign_obj has two opcodes! */
50079 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
50080 }
50081 
50082 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_CV_CV_OP_DATA_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
50083 {
50084 	USE_OPLINE
50085 
50086 	zval *object_ptr;
50087 	zend_free_op free_op_data;
50088 	zval *value;
50089 	zval *variable_ptr;
50090 	zval *dim;
50091 
50092 	SAVE_OPLINE();
50093 	object_ptr = EX_VAR(opline->op1.var);
50094 
50095 	if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
50096 try_assign_dim_array:
50097 		SEPARATE_ARRAY(object_ptr);
50098 		if (IS_CV == IS_UNUSED) {
50099 			value = RT_CONSTANT((opline+1), (opline+1)->op1);
50100 			if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
50101 				ZVAL_DEREF(value);
50102 			}
50103 			variable_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), value);
50104 			if (UNEXPECTED(variable_ptr == NULL)) {
50105 
50106 				zend_cannot_add_element();
50107 				goto assign_dim_error;
50108 			} else if (IS_CONST == IS_CV) {
50109 				if (Z_REFCOUNTED_P(value)) {
50110 					Z_ADDREF_P(value);
50111 				}
50112 			} else if (IS_CONST == IS_VAR) {
50113 				if (value != free_op_data) {
50114 					if (Z_REFCOUNTED_P(value)) {
50115 						Z_ADDREF_P(value);
50116 					}
50117 
50118 				}
50119 			} else if (IS_CONST == IS_CONST) {
50120 				if (UNEXPECTED(Z_REFCOUNTED_P(value))) {
50121 					Z_ADDREF_P(value);
50122 				}
50123 			}
50124 		} else {
50125 			dim = EX_VAR(opline->op2.var);
50126 			if (IS_CV == IS_CONST) {
50127 				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
50128 			} else {
50129 				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
50130 			}
50131 			if (UNEXPECTED(variable_ptr == NULL)) {
50132 				goto assign_dim_error;
50133 			}
50134 			value = RT_CONSTANT((opline+1), (opline+1)->op1);
50135 			value = zend_assign_to_variable(variable_ptr, value, IS_CONST);
50136 		}
50137 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
50138 			ZVAL_COPY(EX_VAR(opline->result.var), value);
50139 		}
50140 	} else {
50141 		if (EXPECTED(Z_ISREF_P(object_ptr))) {
50142 			object_ptr = Z_REFVAL_P(object_ptr);
50143 			if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
50144 				goto try_assign_dim_array;
50145 			}
50146 		}
50147 		if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) {
50148 			dim = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
50149 			value = RT_CONSTANT((opline+1), (opline+1)->op1);
50150 
50151 			if (IS_CV == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
50152 				dim++;
50153 			}
50154 			zend_assign_to_object_dim(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
50155 
50156 		} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
50157 			if (IS_CV == IS_UNUSED) {
50158 				zend_use_new_element_for_string();
50159 
50160 
50161 				UNDEF_RESULT();
50162 				HANDLE_EXCEPTION();
50163 			} else {
50164 				dim = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
50165 				value = RT_CONSTANT((opline+1), (opline+1)->op1);
50166 				zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
50167 
50168 			}
50169 		} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
50170 			ZVAL_ARR(object_ptr, zend_new_array(8));
50171 			goto try_assign_dim_array;
50172 		} else {
50173 			if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) {
50174 				zend_use_scalar_as_array();
50175 			}
50176 			dim = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
50177 assign_dim_error:
50178 
50179 			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
50180 				ZVAL_NULL(EX_VAR(opline->result.var));
50181 			}
50182 		}
50183 	}
50184 	if (IS_CV != IS_UNUSED) {
50185 
50186 	}
50187 
50188 	/* assign_dim has two opcodes! */
50189 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
50190 }
50191 
50192 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_CV_CV_OP_DATA_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
50193 {
50194 	USE_OPLINE
50195 
50196 	zval *object_ptr;
50197 	zend_free_op free_op_data;
50198 	zval *value;
50199 	zval *variable_ptr;
50200 	zval *dim;
50201 
50202 	SAVE_OPLINE();
50203 	object_ptr = EX_VAR(opline->op1.var);
50204 
50205 	if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
50206 try_assign_dim_array:
50207 		SEPARATE_ARRAY(object_ptr);
50208 		if (IS_CV == IS_UNUSED) {
50209 			value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
50210 			if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
50211 				ZVAL_DEREF(value);
50212 			}
50213 			variable_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), value);
50214 			if (UNEXPECTED(variable_ptr == NULL)) {
50215 				zval_ptr_dtor_nogc(free_op_data);
50216 				zend_cannot_add_element();
50217 				goto assign_dim_error;
50218 			} else if (IS_TMP_VAR == IS_CV) {
50219 				if (Z_REFCOUNTED_P(value)) {
50220 					Z_ADDREF_P(value);
50221 				}
50222 			} else if (IS_TMP_VAR == IS_VAR) {
50223 				if (value != free_op_data) {
50224 					if (Z_REFCOUNTED_P(value)) {
50225 						Z_ADDREF_P(value);
50226 					}
50227 					zval_ptr_dtor_nogc(free_op_data);
50228 				}
50229 			} else if (IS_TMP_VAR == IS_CONST) {
50230 				if (UNEXPECTED(Z_REFCOUNTED_P(value))) {
50231 					Z_ADDREF_P(value);
50232 				}
50233 			}
50234 		} else {
50235 			dim = EX_VAR(opline->op2.var);
50236 			if (IS_CV == IS_CONST) {
50237 				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
50238 			} else {
50239 				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
50240 			}
50241 			if (UNEXPECTED(variable_ptr == NULL)) {
50242 				goto assign_dim_error;
50243 			}
50244 			value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
50245 			value = zend_assign_to_variable(variable_ptr, value, IS_TMP_VAR);
50246 		}
50247 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
50248 			ZVAL_COPY(EX_VAR(opline->result.var), value);
50249 		}
50250 	} else {
50251 		if (EXPECTED(Z_ISREF_P(object_ptr))) {
50252 			object_ptr = Z_REFVAL_P(object_ptr);
50253 			if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
50254 				goto try_assign_dim_array;
50255 			}
50256 		}
50257 		if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) {
50258 			dim = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
50259 			value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
50260 
50261 			if (IS_CV == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
50262 				dim++;
50263 			}
50264 			zend_assign_to_object_dim(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
50265 
50266 			zval_ptr_dtor_nogc(free_op_data);
50267 		} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
50268 			if (IS_CV == IS_UNUSED) {
50269 				zend_use_new_element_for_string();
50270 				zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
50271 
50272 				UNDEF_RESULT();
50273 				HANDLE_EXCEPTION();
50274 			} else {
50275 				dim = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
50276 				value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
50277 				zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
50278 				zval_ptr_dtor_nogc(free_op_data);
50279 			}
50280 		} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
50281 			ZVAL_ARR(object_ptr, zend_new_array(8));
50282 			goto try_assign_dim_array;
50283 		} else {
50284 			if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) {
50285 				zend_use_scalar_as_array();
50286 			}
50287 			dim = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
50288 assign_dim_error:
50289 			zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
50290 			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
50291 				ZVAL_NULL(EX_VAR(opline->result.var));
50292 			}
50293 		}
50294 	}
50295 	if (IS_CV != IS_UNUSED) {
50296 
50297 	}
50298 
50299 	/* assign_dim has two opcodes! */
50300 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
50301 }
50302 
50303 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_CV_CV_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
50304 {
50305 	USE_OPLINE
50306 
50307 	zval *object_ptr;
50308 	zend_free_op free_op_data;
50309 	zval *value;
50310 	zval *variable_ptr;
50311 	zval *dim;
50312 
50313 	SAVE_OPLINE();
50314 	object_ptr = EX_VAR(opline->op1.var);
50315 
50316 	if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
50317 try_assign_dim_array:
50318 		SEPARATE_ARRAY(object_ptr);
50319 		if (IS_CV == IS_UNUSED) {
50320 			value = _get_zval_ptr_var((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
50321 			if (IS_VAR == IS_CV || IS_VAR == IS_VAR) {
50322 				ZVAL_DEREF(value);
50323 			}
50324 			variable_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), value);
50325 			if (UNEXPECTED(variable_ptr == NULL)) {
50326 				zval_ptr_dtor_nogc(free_op_data);
50327 				zend_cannot_add_element();
50328 				goto assign_dim_error;
50329 			} else if (IS_VAR == IS_CV) {
50330 				if (Z_REFCOUNTED_P(value)) {
50331 					Z_ADDREF_P(value);
50332 				}
50333 			} else if (IS_VAR == IS_VAR) {
50334 				if (value != free_op_data) {
50335 					if (Z_REFCOUNTED_P(value)) {
50336 						Z_ADDREF_P(value);
50337 					}
50338 					zval_ptr_dtor_nogc(free_op_data);
50339 				}
50340 			} else if (IS_VAR == IS_CONST) {
50341 				if (UNEXPECTED(Z_REFCOUNTED_P(value))) {
50342 					Z_ADDREF_P(value);
50343 				}
50344 			}
50345 		} else {
50346 			dim = EX_VAR(opline->op2.var);
50347 			if (IS_CV == IS_CONST) {
50348 				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
50349 			} else {
50350 				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
50351 			}
50352 			if (UNEXPECTED(variable_ptr == NULL)) {
50353 				goto assign_dim_error;
50354 			}
50355 			value = _get_zval_ptr_var((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
50356 			value = zend_assign_to_variable(variable_ptr, value, IS_VAR);
50357 		}
50358 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
50359 			ZVAL_COPY(EX_VAR(opline->result.var), value);
50360 		}
50361 	} else {
50362 		if (EXPECTED(Z_ISREF_P(object_ptr))) {
50363 			object_ptr = Z_REFVAL_P(object_ptr);
50364 			if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
50365 				goto try_assign_dim_array;
50366 			}
50367 		}
50368 		if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) {
50369 			dim = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
50370 			value = _get_zval_ptr_var_deref((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
50371 
50372 			if (IS_CV == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
50373 				dim++;
50374 			}
50375 			zend_assign_to_object_dim(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
50376 
50377 			zval_ptr_dtor_nogc(free_op_data);
50378 		} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
50379 			if (IS_CV == IS_UNUSED) {
50380 				zend_use_new_element_for_string();
50381 				zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
50382 
50383 				UNDEF_RESULT();
50384 				HANDLE_EXCEPTION();
50385 			} else {
50386 				dim = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
50387 				value = _get_zval_ptr_var_deref((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
50388 				zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
50389 				zval_ptr_dtor_nogc(free_op_data);
50390 			}
50391 		} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
50392 			ZVAL_ARR(object_ptr, zend_new_array(8));
50393 			goto try_assign_dim_array;
50394 		} else {
50395 			if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) {
50396 				zend_use_scalar_as_array();
50397 			}
50398 			dim = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
50399 assign_dim_error:
50400 			zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
50401 			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
50402 				ZVAL_NULL(EX_VAR(opline->result.var));
50403 			}
50404 		}
50405 	}
50406 	if (IS_CV != IS_UNUSED) {
50407 
50408 	}
50409 
50410 	/* assign_dim has two opcodes! */
50411 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
50412 }
50413 
50414 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_CV_CV_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
50415 {
50416 	USE_OPLINE
50417 
50418 	zval *object_ptr;
50419 	zend_free_op free_op_data;
50420 	zval *value;
50421 	zval *variable_ptr;
50422 	zval *dim;
50423 
50424 	SAVE_OPLINE();
50425 	object_ptr = EX_VAR(opline->op1.var);
50426 
50427 	if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
50428 try_assign_dim_array:
50429 		SEPARATE_ARRAY(object_ptr);
50430 		if (IS_CV == IS_UNUSED) {
50431 			value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
50432 			if (IS_CV == IS_CV || IS_CV == IS_VAR) {
50433 				ZVAL_DEREF(value);
50434 			}
50435 			variable_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), value);
50436 			if (UNEXPECTED(variable_ptr == NULL)) {
50437 
50438 				zend_cannot_add_element();
50439 				goto assign_dim_error;
50440 			} else if (IS_CV == IS_CV) {
50441 				if (Z_REFCOUNTED_P(value)) {
50442 					Z_ADDREF_P(value);
50443 				}
50444 			} else if (IS_CV == IS_VAR) {
50445 				if (value != free_op_data) {
50446 					if (Z_REFCOUNTED_P(value)) {
50447 						Z_ADDREF_P(value);
50448 					}
50449 
50450 				}
50451 			} else if (IS_CV == IS_CONST) {
50452 				if (UNEXPECTED(Z_REFCOUNTED_P(value))) {
50453 					Z_ADDREF_P(value);
50454 				}
50455 			}
50456 		} else {
50457 			dim = EX_VAR(opline->op2.var);
50458 			if (IS_CV == IS_CONST) {
50459 				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
50460 			} else {
50461 				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
50462 			}
50463 			if (UNEXPECTED(variable_ptr == NULL)) {
50464 				goto assign_dim_error;
50465 			}
50466 			value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
50467 			value = zend_assign_to_variable(variable_ptr, value, IS_CV);
50468 		}
50469 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
50470 			ZVAL_COPY(EX_VAR(opline->result.var), value);
50471 		}
50472 	} else {
50473 		if (EXPECTED(Z_ISREF_P(object_ptr))) {
50474 			object_ptr = Z_REFVAL_P(object_ptr);
50475 			if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
50476 				goto try_assign_dim_array;
50477 			}
50478 		}
50479 		if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) {
50480 			dim = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
50481 			value = _get_zval_ptr_cv_deref_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
50482 
50483 			if (IS_CV == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
50484 				dim++;
50485 			}
50486 			zend_assign_to_object_dim(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
50487 
50488 		} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
50489 			if (IS_CV == IS_UNUSED) {
50490 				zend_use_new_element_for_string();
50491 
50492 
50493 				UNDEF_RESULT();
50494 				HANDLE_EXCEPTION();
50495 			} else {
50496 				dim = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
50497 				value = _get_zval_ptr_cv_deref_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
50498 				zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
50499 
50500 			}
50501 		} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
50502 			ZVAL_ARR(object_ptr, zend_new_array(8));
50503 			goto try_assign_dim_array;
50504 		} else {
50505 			if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) {
50506 				zend_use_scalar_as_array();
50507 			}
50508 			dim = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
50509 assign_dim_error:
50510 
50511 			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
50512 				ZVAL_NULL(EX_VAR(opline->result.var));
50513 			}
50514 		}
50515 	}
50516 	if (IS_CV != IS_UNUSED) {
50517 
50518 	}
50519 
50520 	/* assign_dim has two opcodes! */
50521 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
50522 }
50523 
50524 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SPEC_CV_CV_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
50525 {
50526 	USE_OPLINE
50527 
50528 	zval *value;
50529 	zval *variable_ptr;
50530 
50531 	SAVE_OPLINE();
50532 	value = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
50533 	variable_ptr = EX_VAR(opline->op1.var);
50534 
50535 	if (IS_CV == IS_VAR && UNEXPECTED(Z_ISERROR_P(variable_ptr))) {
50536 
50537 		if (UNEXPECTED(0)) {
50538 			ZVAL_NULL(EX_VAR(opline->result.var));
50539 		}
50540 	} else {
50541 		value = zend_assign_to_variable(variable_ptr, value, IS_CV);
50542 		if (UNEXPECTED(0)) {
50543 			ZVAL_COPY(EX_VAR(opline->result.var), value);
50544 		}
50545 
50546 		/* zend_assign_to_variable() always takes care of op2, never free it! */
50547 	}
50548 
50549 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
50550 }
50551 
50552 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SPEC_CV_CV_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
50553 {
50554 	USE_OPLINE
50555 
50556 	zval *value;
50557 	zval *variable_ptr;
50558 
50559 	SAVE_OPLINE();
50560 	value = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
50561 	variable_ptr = EX_VAR(opline->op1.var);
50562 
50563 	if (IS_CV == IS_VAR && UNEXPECTED(Z_ISERROR_P(variable_ptr))) {
50564 
50565 		if (UNEXPECTED(1)) {
50566 			ZVAL_NULL(EX_VAR(opline->result.var));
50567 		}
50568 	} else {
50569 		value = zend_assign_to_variable(variable_ptr, value, IS_CV);
50570 		if (UNEXPECTED(1)) {
50571 			ZVAL_COPY(EX_VAR(opline->result.var), value);
50572 		}
50573 
50574 		/* zend_assign_to_variable() always takes care of op2, never free it! */
50575 	}
50576 
50577 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
50578 }
50579 
50580 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_REF_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
50581 {
50582 	USE_OPLINE
50583 
50584 	zval *variable_ptr;
50585 	zval *value_ptr;
50586 
50587 	SAVE_OPLINE();
50588 	value_ptr = _get_zval_ptr_cv_BP_VAR_W(opline->op2.var EXECUTE_DATA_CC);
50589 	variable_ptr = EX_VAR(opline->op1.var);
50590 
50591 	if (IS_CV == IS_VAR && UNEXPECTED(Z_ISERROR_P(variable_ptr))) {
50592 		variable_ptr = &EG(uninitialized_zval);
50593 	} else if (IS_CV == IS_VAR &&
50594 	           UNEXPECTED(Z_TYPE_P(EX_VAR(opline->op1.var)) != IS_INDIRECT)) {
50595 
50596 		zend_throw_error(NULL, "Cannot assign by reference to overloaded object");
50597 
50598 
50599 		UNDEF_RESULT();
50600 		HANDLE_EXCEPTION();
50601 	} else if (IS_CV == IS_VAR && UNEXPECTED(Z_ISERROR_P(value_ptr))) {
50602 		variable_ptr = &EG(uninitialized_zval);
50603 	} else if (IS_CV == IS_VAR &&
50604 	           opline->extended_value == ZEND_RETURNS_FUNCTION &&
50605 			   UNEXPECTED(!Z_ISREF_P(value_ptr))) {
50606 
50607 		if (UNEXPECTED(!zend_wrong_assign_to_variable_reference(variable_ptr, value_ptr, IS_CV OPLINE_CC EXECUTE_DATA_CC))) {
50608 
50609 			UNDEF_RESULT();
50610 			HANDLE_EXCEPTION();
50611 		}
50612 
50613 		/* op2 freed by assign_to_variable */
50614 
50615 		ZEND_VM_NEXT_OPCODE();
50616 	} else {
50617 		zend_assign_to_variable_reference(variable_ptr, value_ptr);
50618 	}
50619 
50620 	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
50621 		ZVAL_COPY(EX_VAR(opline->result.var), variable_ptr);
50622 	}
50623 
50624 
50625 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
50626 }
50627 
50628 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FAST_CONCAT_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
50629 {
50630 	USE_OPLINE
50631 
50632 	zval *op1, *op2;
50633 	zend_string *op1_str, *op2_str, *str;
50634 
50635 
50636 	op1 = EX_VAR(opline->op1.var);
50637 	op2 = EX_VAR(opline->op2.var);
50638 	if ((IS_CV == IS_CONST || EXPECTED(Z_TYPE_P(op1) == IS_STRING)) &&
50639 	    (IS_CV == IS_CONST || EXPECTED(Z_TYPE_P(op2) == IS_STRING))) {
50640 		zend_string *op1_str = Z_STR_P(op1);
50641 		zend_string *op2_str = Z_STR_P(op2);
50642 		zend_string *str;
50643 
50644 		if (IS_CV != IS_CONST && UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
50645 			if (IS_CV == IS_CONST || IS_CV == IS_CV) {
50646 				ZVAL_STR_COPY(EX_VAR(opline->result.var), op2_str);
50647 			} else {
50648 				ZVAL_STR(EX_VAR(opline->result.var), op2_str);
50649 			}
50650 
50651 		} else if (IS_CV != IS_CONST && UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
50652 			if (IS_CV == IS_CONST || IS_CV == IS_CV) {
50653 				ZVAL_STR_COPY(EX_VAR(opline->result.var), op1_str);
50654 			} else {
50655 				ZVAL_STR(EX_VAR(opline->result.var), op1_str);
50656 			}
50657 
50658 		} else if (IS_CV != IS_CONST && IS_CV != IS_CV &&
50659 		    !ZSTR_IS_INTERNED(op1_str) && GC_REFCOUNT(op1_str) == 1) {
50660 		    size_t len = ZSTR_LEN(op1_str);
50661 
50662 			str = zend_string_extend(op1_str, len + ZSTR_LEN(op2_str), 0);
50663 			memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
50664 			ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
50665 
50666 		} else {
50667 			str = zend_string_alloc(ZSTR_LEN(op1_str) + ZSTR_LEN(op2_str), 0);
50668 			memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
50669 			memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
50670 			ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
50671 
50672 
50673 		}
50674 		ZEND_VM_NEXT_OPCODE();
50675 	}
50676 
50677 	SAVE_OPLINE();
50678 	if (IS_CV == IS_CONST) {
50679 		op1_str = Z_STR_P(op1);
50680 	} else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
50681 		op1_str = zend_string_copy(Z_STR_P(op1));
50682 	} else {
50683 		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
50684 			GET_OP1_UNDEF_CV(op1, BP_VAR_R);
50685 		}
50686 		op1_str = zval_get_string_func(op1);
50687 	}
50688 	if (IS_CV == IS_CONST) {
50689 		op2_str = Z_STR_P(op2);
50690 	} else if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
50691 		op2_str = zend_string_copy(Z_STR_P(op2));
50692 	} else {
50693 		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
50694 			GET_OP2_UNDEF_CV(op2, BP_VAR_R);
50695 		}
50696 		op2_str = zval_get_string_func(op2);
50697 	}
50698 	do {
50699 		if (IS_CV != IS_CONST) {
50700 			if (UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
50701 				if (IS_CV == IS_CONST) {
50702 					if (UNEXPECTED(Z_REFCOUNTED_P(op2))) {
50703 						GC_ADDREF(op2_str);
50704 					}
50705 				}
50706 				ZVAL_STR(EX_VAR(opline->result.var), op2_str);
50707 				zend_string_release_ex(op1_str, 0);
50708 				break;
50709 			}
50710 		}
50711 		if (IS_CV != IS_CONST) {
50712 			if (UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
50713 				if (IS_CV == IS_CONST) {
50714 					if (UNEXPECTED(Z_REFCOUNTED_P(op1))) {
50715 						GC_ADDREF(op1_str);
50716 					}
50717 				}
50718 				ZVAL_STR(EX_VAR(opline->result.var), op1_str);
50719 				zend_string_release_ex(op2_str, 0);
50720 				break;
50721 			}
50722 		}
50723 		str = zend_string_alloc(ZSTR_LEN(op1_str) + ZSTR_LEN(op2_str), 0);
50724 		memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
50725 		memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
50726 		ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
50727 		if (IS_CV != IS_CONST) {
50728 			zend_string_release_ex(op1_str, 0);
50729 		}
50730 		if (IS_CV != IS_CONST) {
50731 			zend_string_release_ex(op2_str, 0);
50732 		}
50733 	} while (0);
50734 
50735 
50736 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
50737 }
50738 
50739 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
50740 {
50741 	USE_OPLINE
50742 	zval *function_name;
50743 	zend_free_op free_op1;
50744 	zval *object;
50745 	zend_function *fbc;
50746 	zend_class_entry *called_scope;
50747 	zend_object *obj;
50748 	zend_execute_data *call;
50749 	uint32_t call_info;
50750 
50751 	SAVE_OPLINE();
50752 
50753 	object = EX_VAR(opline->op1.var);
50754 
50755 	if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
50756 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
50757 	}
50758 
50759 	if (IS_CV != IS_CONST) {
50760 		function_name = EX_VAR(opline->op2.var);
50761 	}
50762 
50763 	if (IS_CV != IS_CONST &&
50764 	    UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) {
50765 		do {
50766 			if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(function_name)) {
50767 				function_name = Z_REFVAL_P(function_name);
50768 				if (EXPECTED(Z_TYPE_P(function_name) == IS_STRING)) {
50769 					break;
50770 				}
50771 			} else if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
50772 				GET_OP2_UNDEF_CV(function_name, BP_VAR_R);
50773 				if (UNEXPECTED(EG(exception) != NULL)) {
50774 
50775 					HANDLE_EXCEPTION();
50776 				}
50777 			}
50778 			zend_throw_error(NULL, "Method name must be a string");
50779 
50780 
50781 			HANDLE_EXCEPTION();
50782 		} while (0);
50783 	}
50784 
50785 	if (IS_CV != IS_UNUSED) {
50786 		do {
50787 			if (IS_CV == IS_CONST || UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
50788 				if ((IS_CV & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(object))) {
50789 					object = Z_REFVAL_P(object);
50790 					if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
50791 						break;
50792 					}
50793 				}
50794 				if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
50795 					object = GET_OP1_UNDEF_CV(object, BP_VAR_R);
50796 					if (UNEXPECTED(EG(exception) != NULL)) {
50797 						if (IS_CV != IS_CONST) {
50798 
50799 						}
50800 						HANDLE_EXCEPTION();
50801 					}
50802 				}
50803 				if (IS_CV == IS_CONST) {
50804 					function_name = EX_VAR(opline->op2.var);
50805 				}
50806 				zend_invalid_method_call(object, function_name);
50807 
50808 
50809 				HANDLE_EXCEPTION();
50810 			}
50811 		} while (0);
50812 	}
50813 
50814 	obj = Z_OBJ_P(object);
50815 	called_scope = obj->ce;
50816 
50817 	if (IS_CV == IS_CONST &&
50818 	    EXPECTED(CACHED_PTR(opline->result.num) == called_scope)) {
50819 	    fbc = CACHED_PTR(opline->result.num + sizeof(void*));
50820 	} else {
50821 	    zend_object *orig_obj = obj;
50822 
50823 		if (UNEXPECTED(obj->handlers->get_method == NULL)) {
50824 			zend_throw_error(NULL, "Object does not support method calls");
50825 
50826 
50827 			HANDLE_EXCEPTION();
50828 		}
50829 
50830 		if (IS_CV == IS_CONST) {
50831 			function_name = EX_VAR(opline->op2.var);
50832 		}
50833 
50834 		/* First, locate the function. */
50835 		fbc = obj->handlers->get_method(&obj, Z_STR_P(function_name), ((IS_CV == IS_CONST) ? (RT_CONSTANT(opline, opline->op2) + 1) : NULL));
50836 		if (UNEXPECTED(fbc == NULL)) {
50837 			if (EXPECTED(!EG(exception))) {
50838 				zend_undefined_method(obj->ce, Z_STR_P(function_name));
50839 			}
50840 
50841 
50842 			HANDLE_EXCEPTION();
50843 		}
50844 		if (IS_CV == IS_CONST &&
50845 		    EXPECTED(fbc->type <= ZEND_USER_FUNCTION) &&
50846 		    EXPECTED(!(fbc->common.fn_flags & (ZEND_ACC_CALL_VIA_TRAMPOLINE|ZEND_ACC_NEVER_CACHE))) &&
50847 		    EXPECTED(obj == orig_obj)) {
50848 			CACHE_POLYMORPHIC_PTR(opline->result.num, called_scope, fbc);
50849 		}
50850 		if ((IS_CV & (IS_VAR|IS_TMP_VAR)) && UNEXPECTED(obj != orig_obj)) {
50851 			/* Reset "object" to trigger reference counting */
50852 			object = NULL;
50853 		}
50854 		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!fbc->op_array.run_time_cache)) {
50855 			init_func_run_time_cache(&fbc->op_array);
50856 		}
50857 	}
50858 
50859 	if (IS_CV != IS_CONST) {
50860 
50861 	}
50862 
50863 	call_info = ZEND_CALL_NESTED_FUNCTION;
50864 	if (UNEXPECTED((fbc->common.fn_flags & ZEND_ACC_STATIC) != 0)) {
50865 		obj = NULL;
50866 
50867 		if ((IS_CV & (IS_VAR|IS_TMP_VAR)) && UNEXPECTED(EG(exception))) {
50868 			HANDLE_EXCEPTION();
50869 		}
50870 	} else if (IS_CV & (IS_VAR|IS_TMP_VAR|IS_CV)) {
50871 		/* CV may be changed indirectly (e.g. when it's a reference) */
50872 		call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_RELEASE_THIS;
50873 		if (IS_CV == IS_CV) {
50874 			GC_ADDREF(obj); /* For $this pointer */
50875 		} else if (free_op1 != object) {
50876 			GC_ADDREF(obj); /* For $this pointer */
50877 
50878 		}
50879 	}
50880 
50881 	call = zend_vm_stack_push_call_frame(call_info,
50882 		fbc, opline->extended_value, called_scope, obj);
50883 	call->prev_execute_data = EX(call);
50884 	EX(call) = call;
50885 
50886 	ZEND_VM_NEXT_OPCODE();
50887 }
50888 
50889 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
50890 {
50891 	USE_OPLINE
50892 
50893 	zval *expr_ptr, new_expr;
50894 
50895 	SAVE_OPLINE();
50896 	if ((IS_CV == IS_VAR || IS_CV == IS_CV) &&
50897 	    UNEXPECTED(opline->extended_value & ZEND_ARRAY_ELEMENT_REF)) {
50898 		expr_ptr = _get_zval_ptr_cv_BP_VAR_W(opline->op1.var EXECUTE_DATA_CC);
50899 		if (Z_ISREF_P(expr_ptr)) {
50900 			Z_ADDREF_P(expr_ptr);
50901 		} else {
50902 			ZVAL_MAKE_REF_EX(expr_ptr, 2);
50903 		}
50904 
50905 	} else {
50906 		expr_ptr = _get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
50907 		if (IS_CV == IS_TMP_VAR) {
50908 			/* pass */
50909 		} else if (IS_CV == IS_CONST) {
50910 			Z_TRY_ADDREF_P(expr_ptr);
50911 		} else if (IS_CV == IS_CV) {
50912 			ZVAL_DEREF(expr_ptr);
50913 			Z_TRY_ADDREF_P(expr_ptr);
50914 		} else /* if (IS_CV == IS_VAR) */ {
50915 			if (UNEXPECTED(Z_ISREF_P(expr_ptr))) {
50916 				zend_refcounted *ref = Z_COUNTED_P(expr_ptr);
50917 
50918 				expr_ptr = Z_REFVAL_P(expr_ptr);
50919 				if (UNEXPECTED(GC_DELREF(ref) == 0)) {
50920 					ZVAL_COPY_VALUE(&new_expr, expr_ptr);
50921 					expr_ptr = &new_expr;
50922 					efree_size(ref, sizeof(zend_reference));
50923 				} else if (Z_OPT_REFCOUNTED_P(expr_ptr)) {
50924 					Z_ADDREF_P(expr_ptr);
50925 				}
50926 			}
50927 		}
50928 	}
50929 
50930 	if (IS_CV != IS_UNUSED) {
50931 
50932 		zval *offset = EX_VAR(opline->op2.var);
50933 		zend_string *str;
50934 		zend_ulong hval;
50935 
50936 add_again:
50937 		if (EXPECTED(Z_TYPE_P(offset) == IS_STRING)) {
50938 			str = Z_STR_P(offset);
50939 			if (IS_CV != IS_CONST) {
50940 				if (ZEND_HANDLE_NUMERIC(str, hval)) {
50941 					goto num_index;
50942 				}
50943 			}
50944 str_index:
50945 			zend_hash_update(Z_ARRVAL_P(EX_VAR(opline->result.var)), str, expr_ptr);
50946 		} else if (EXPECTED(Z_TYPE_P(offset) == IS_LONG)) {
50947 			hval = Z_LVAL_P(offset);
50948 num_index:
50949 			zend_hash_index_update(Z_ARRVAL_P(EX_VAR(opline->result.var)), hval, expr_ptr);
50950 		} else if ((IS_CV & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
50951 			offset = Z_REFVAL_P(offset);
50952 			goto add_again;
50953 		} else if (Z_TYPE_P(offset) == IS_NULL) {
50954 			str = ZSTR_EMPTY_ALLOC();
50955 			goto str_index;
50956 		} else if (Z_TYPE_P(offset) == IS_DOUBLE) {
50957 			hval = zend_dval_to_lval(Z_DVAL_P(offset));
50958 			goto num_index;
50959 		} else if (Z_TYPE_P(offset) == IS_FALSE) {
50960 			hval = 0;
50961 			goto num_index;
50962 		} else if (Z_TYPE_P(offset) == IS_TRUE) {
50963 			hval = 1;
50964 			goto num_index;
50965 		} else if (IS_CV == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
50966 			GET_OP2_UNDEF_CV(offset, BP_VAR_R);
50967 			str = ZSTR_EMPTY_ALLOC();
50968 			goto str_index;
50969 		} else {
50970 			zend_illegal_offset();
50971 			zval_ptr_dtor_nogc(expr_ptr);
50972 		}
50973 
50974 	} else {
50975 		if (!zend_hash_next_index_insert(Z_ARRVAL_P(EX_VAR(opline->result.var)), expr_ptr)) {
50976 			zend_cannot_add_element();
50977 			zval_ptr_dtor_nogc(expr_ptr);
50978 		}
50979 	}
50980 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
50981 }
50982 
50983 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_ARRAY_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
50984 {
50985 	zval *array;
50986 	uint32_t size;
50987 	USE_OPLINE
50988 
50989 	array = EX_VAR(opline->result.var);
50990 	if (IS_CV != IS_UNUSED) {
50991 		size = opline->extended_value >> ZEND_ARRAY_SIZE_SHIFT;
50992 		ZVAL_ARR(array, zend_new_array(size));
50993 		/* Explicitly initialize array as not-packed if flag is set */
50994 		if (opline->extended_value & ZEND_ARRAY_NOT_PACKED) {
50995 			zend_hash_real_init_mixed(Z_ARRVAL_P(array));
50996 		}
50997 		ZEND_VM_TAIL_CALL(ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
50998 	} else {
50999 		ZVAL_EMPTY_ARRAY(array);
51000 		ZEND_VM_NEXT_OPCODE();
51001 	}
51002 }
51003 
51004 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_UNSET_DIM_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
51005 {
51006 	USE_OPLINE
51007 
51008 	zval *container;
51009 	zval *offset;
51010 	zend_ulong hval;
51011 	zend_string *key;
51012 
51013 	SAVE_OPLINE();
51014 	container = EX_VAR(opline->op1.var);
51015 	offset = EX_VAR(opline->op2.var);
51016 
51017 	do {
51018 		if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
51019 			HashTable *ht;
51020 
51021 unset_dim_array:
51022 			SEPARATE_ARRAY(container);
51023 			ht = Z_ARRVAL_P(container);
51024 offset_again:
51025 			if (EXPECTED(Z_TYPE_P(offset) == IS_STRING)) {
51026 				key = Z_STR_P(offset);
51027 				if (IS_CV != IS_CONST) {
51028 					if (ZEND_HANDLE_NUMERIC(key, hval)) {
51029 						goto num_index_dim;
51030 					}
51031 				}
51032 str_index_dim:
51033 				if (ht == &EG(symbol_table)) {
51034 					zend_delete_global_variable(key);
51035 				} else {
51036 					zend_hash_del(ht, key);
51037 				}
51038 			} else if (EXPECTED(Z_TYPE_P(offset) == IS_LONG)) {
51039 				hval = Z_LVAL_P(offset);
51040 num_index_dim:
51041 				zend_hash_index_del(ht, hval);
51042 			} else if ((IS_CV & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
51043 				offset = Z_REFVAL_P(offset);
51044 				goto offset_again;
51045 			} else if (Z_TYPE_P(offset) == IS_DOUBLE) {
51046 				hval = zend_dval_to_lval(Z_DVAL_P(offset));
51047 				goto num_index_dim;
51048 			} else if (Z_TYPE_P(offset) == IS_NULL) {
51049 				key = ZSTR_EMPTY_ALLOC();
51050 				goto str_index_dim;
51051 			} else if (Z_TYPE_P(offset) == IS_FALSE) {
51052 				hval = 0;
51053 				goto num_index_dim;
51054 			} else if (Z_TYPE_P(offset) == IS_TRUE) {
51055 				hval = 1;
51056 				goto num_index_dim;
51057 			} else if (Z_TYPE_P(offset) == IS_RESOURCE) {
51058 				hval = Z_RES_HANDLE_P(offset);
51059 				goto num_index_dim;
51060 			} else if (IS_CV == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
51061 				GET_OP2_UNDEF_CV(offset, BP_VAR_R);
51062 				key = ZSTR_EMPTY_ALLOC();
51063 				goto str_index_dim;
51064 			} else {
51065 				zend_error(E_WARNING, "Illegal offset type in unset");
51066 			}
51067 			break;
51068 		} else if (Z_ISREF_P(container)) {
51069 			container = Z_REFVAL_P(container);
51070 			if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
51071 				goto unset_dim_array;
51072 			}
51073 		}
51074 		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
51075 			container = GET_OP1_UNDEF_CV(container, BP_VAR_R);
51076 		}
51077 		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(offset) == IS_UNDEF)) {
51078 			offset = GET_OP2_UNDEF_CV(offset, BP_VAR_R);
51079 		}
51080 		if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
51081 			if (UNEXPECTED(Z_OBJ_HT_P(container)->unset_dimension == NULL)) {
51082 				zend_use_object_as_array();
51083 			} else {
51084 				if (IS_CV == IS_CONST && Z_EXTRA_P(offset) == ZEND_EXTRA_VALUE) {
51085 					offset++;
51086 				}
51087 				Z_OBJ_HT_P(container)->unset_dimension(container, offset);
51088 			}
51089 		} else if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_STRING)) {
51090 			zend_throw_error(NULL, "Cannot unset string offsets");
51091 		}
51092 	} while (0);
51093 
51094 
51095 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
51096 }
51097 
51098 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_UNSET_OBJ_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
51099 {
51100 	USE_OPLINE
51101 
51102 	zval *container;
51103 	zval *offset;
51104 
51105 	SAVE_OPLINE();
51106 	container = _get_zval_ptr_cv_BP_VAR_UNSET(opline->op1.var EXECUTE_DATA_CC);
51107 	if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
51108 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
51109 	}
51110 	offset = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
51111 
51112 	do {
51113 		if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) {
51114 			if (Z_ISREF_P(container)) {
51115 				container = Z_REFVAL_P(container);
51116 				if (Z_TYPE_P(container) != IS_OBJECT) {
51117 					break;
51118 				}
51119 			} else {
51120 				break;
51121 			}
51122 		}
51123 		if (Z_OBJ_HT_P(container)->unset_property) {
51124 			Z_OBJ_HT_P(container)->unset_property(container, offset, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL));
51125 		} else {
51126 			zend_wrong_property_unset(offset);
51127 		}
51128 	} while (0);
51129 
51130 
51131 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
51132 }
51133 
51134 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
51135 {
51136 	USE_OPLINE
51137 
51138 	zval *container;
51139 	int result;
51140 	zend_ulong hval;
51141 	zval *offset;
51142 
51143 	SAVE_OPLINE();
51144 	container = EX_VAR(opline->op1.var);
51145 	offset = EX_VAR(opline->op2.var);
51146 
51147 	if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
51148 		HashTable *ht;
51149 		zval *value;
51150 		zend_string *str;
51151 
51152 isset_dim_obj_array:
51153 		ht = Z_ARRVAL_P(container);
51154 isset_again:
51155 		if (EXPECTED(Z_TYPE_P(offset) == IS_STRING)) {
51156 			str = Z_STR_P(offset);
51157 			if (IS_CV != IS_CONST) {
51158 				if (ZEND_HANDLE_NUMERIC(str, hval)) {
51159 					goto num_index_prop;
51160 				}
51161 			}
51162 			value = zend_hash_find_ex_ind(ht, str, IS_CV == IS_CONST);
51163 		} else if (EXPECTED(Z_TYPE_P(offset) == IS_LONG)) {
51164 			hval = Z_LVAL_P(offset);
51165 num_index_prop:
51166 			value = zend_hash_index_find(ht, hval);
51167 		} else if ((IS_CV & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(offset))) {
51168 			offset = Z_REFVAL_P(offset);
51169 			goto isset_again;
51170 		} else {
51171 			value = zend_find_array_dim_slow(ht, offset EXECUTE_DATA_CC);
51172 		}
51173 
51174 		if (!(opline->extended_value & ZEND_ISEMPTY)) {
51175 			/* > IS_NULL means not IS_UNDEF and not IS_NULL */
51176 			result = value != NULL && Z_TYPE_P(value) > IS_NULL &&
51177 			    (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL);
51178 		} else {
51179 			result = (value == NULL || !i_zend_is_true(value));
51180 		}
51181 		goto isset_dim_obj_exit;
51182 	} else if ((IS_CV & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(container))) {
51183 		container = Z_REFVAL_P(container);
51184 		if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
51185 			goto isset_dim_obj_array;
51186 		}
51187 	}
51188 
51189 	if (IS_CV == IS_CONST && Z_EXTRA_P(offset) == ZEND_EXTRA_VALUE) {
51190 		offset++;
51191 	}
51192 	if (!(opline->extended_value & ZEND_ISEMPTY)) {
51193 		result = zend_isset_dim_slow(container, offset EXECUTE_DATA_CC);
51194 	} else {
51195 		result = zend_isempty_dim_slow(container, offset EXECUTE_DATA_CC);
51196 	}
51197 
51198 isset_dim_obj_exit:
51199 
51200 
51201 	ZEND_VM_SMART_BRANCH(result, 1);
51202 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
51203 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
51204 }
51205 
51206 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
51207 {
51208 	USE_OPLINE
51209 
51210 	zval *container;
51211 	int result;
51212 	zval *offset;
51213 
51214 	SAVE_OPLINE();
51215 	container = _get_zval_ptr_cv_BP_VAR_IS(opline->op1.var EXECUTE_DATA_CC);
51216 
51217 	if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
51218 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
51219 	}
51220 
51221 	offset = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
51222 
51223 	if (IS_CV == IS_CONST ||
51224 	    (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
51225 		if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
51226 			container = Z_REFVAL_P(container);
51227 			if (UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) {
51228 				goto isset_no_object;
51229 			}
51230 		} else {
51231 			goto isset_no_object;
51232 		}
51233 	}
51234 	if (UNEXPECTED(!Z_OBJ_HT_P(container)->has_property)) {
51235 		zend_wrong_property_check(offset);
51236 isset_no_object:
51237 		result = (opline->extended_value & ZEND_ISEMPTY);
51238 	} else {
51239 		result =
51240 			(opline->extended_value & ZEND_ISEMPTY) ^
51241 			Z_OBJ_HT_P(container)->has_property(container, offset, (opline->extended_value & ZEND_ISEMPTY), ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_ISEMPTY) : NULL));
51242 	}
51243 
51244 
51245 	ZEND_VM_SMART_BRANCH(result, 1);
51246 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
51247 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
51248 }
51249 
51250 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_YIELD_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
51251 {
51252 	USE_OPLINE
51253 
51254 	zend_generator *generator = zend_get_running_generator(EXECUTE_DATA_C);
51255 
51256 	SAVE_OPLINE();
51257 	if (UNEXPECTED(generator->flags & ZEND_GENERATOR_FORCED_CLOSE)) {
51258 		ZEND_VM_TAIL_CALL(zend_yield_in_closed_generator_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
51259 	}
51260 
51261 	/* Destroy the previously yielded value */
51262 	zval_ptr_dtor(&generator->value);
51263 
51264 	/* Destroy the previously yielded key */
51265 	zval_ptr_dtor(&generator->key);
51266 
51267 	/* Set the new yielded value */
51268 	if (IS_CV != IS_UNUSED) {
51269 
51270 
51271 		if (UNEXPECTED(EX(func)->op_array.fn_flags & ZEND_ACC_RETURN_REFERENCE)) {
51272 			/* Constants and temporary variables aren't yieldable by reference,
51273 			 * but we still allow them with a notice. */
51274 			if (IS_CV & (IS_CONST|IS_TMP_VAR)) {
51275 				zval *value;
51276 
51277 				zend_error(E_NOTICE, "Only variable references should be yielded by reference");
51278 
51279 				value = _get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
51280 				ZVAL_COPY_VALUE(&generator->value, value);
51281 				if (IS_CV == IS_CONST) {
51282 					if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
51283 						Z_ADDREF(generator->value);
51284 					}
51285 				}
51286 			} else {
51287 				zval *value_ptr = _get_zval_ptr_cv_BP_VAR_W(opline->op1.var EXECUTE_DATA_CC);
51288 
51289 				/* If a function call result is yielded and the function did
51290 				 * not return by reference we throw a notice. */
51291 				if (IS_CV == IS_VAR &&
51292 				    (value_ptr == &EG(uninitialized_zval) ||
51293 				     (opline->extended_value == ZEND_RETURNS_FUNCTION &&
51294 				      !Z_ISREF_P(value_ptr)))) {
51295 					zend_error(E_NOTICE, "Only variable references should be yielded by reference");
51296 					ZVAL_COPY(&generator->value, value_ptr);
51297 				} else {
51298 					if (Z_ISREF_P(value_ptr)) {
51299 						Z_ADDREF_P(value_ptr);
51300 					} else {
51301 						ZVAL_MAKE_REF_EX(value_ptr, 2);
51302 					}
51303 					ZVAL_REF(&generator->value, Z_REF_P(value_ptr));
51304 				}
51305 
51306 			}
51307 		} else {
51308 			zval *value = _get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
51309 
51310 			/* Consts, temporary variables and references need copying */
51311 			if (IS_CV == IS_CONST) {
51312 				ZVAL_COPY_VALUE(&generator->value, value);
51313 				if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
51314 					Z_ADDREF(generator->value);
51315 				}
51316 			} else if (IS_CV == IS_TMP_VAR) {
51317 				ZVAL_COPY_VALUE(&generator->value, value);
51318             } else if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
51319 				ZVAL_COPY(&generator->value, Z_REFVAL_P(value));
51320 
51321 			} else {
51322 				ZVAL_COPY_VALUE(&generator->value, value);
51323 				if (IS_CV == IS_CV) {
51324 					if (Z_OPT_REFCOUNTED_P(value)) Z_ADDREF_P(value);
51325 				}
51326 			}
51327 		}
51328 	} else {
51329 		/* If no value was specified yield null */
51330 		ZVAL_NULL(&generator->value);
51331 	}
51332 
51333 	/* Set the new yielded key */
51334 	if (IS_CV != IS_UNUSED) {
51335 
51336 		zval *key = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
51337 
51338 		/* Consts, temporary variables and references need copying */
51339 		if (IS_CV == IS_CONST) {
51340 			ZVAL_COPY_VALUE(&generator->key, key);
51341 			if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->key))) {
51342 				Z_ADDREF(generator->key);
51343 			}
51344 		} else if (IS_CV == IS_TMP_VAR) {
51345 			ZVAL_COPY_VALUE(&generator->key, key);
51346 		} else if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(key)) {
51347 			ZVAL_COPY(&generator->key, Z_REFVAL_P(key));
51348 
51349 		} else {
51350 			ZVAL_COPY_VALUE(&generator->key, key);
51351 			if (IS_CV == IS_CV) {
51352 				if (Z_OPT_REFCOUNTED_P(key)) Z_ADDREF_P(key);
51353 			}
51354 		}
51355 
51356 		if (Z_TYPE(generator->key) == IS_LONG
51357 		    && Z_LVAL(generator->key) > generator->largest_used_integer_key
51358 		) {
51359 			generator->largest_used_integer_key = Z_LVAL(generator->key);
51360 		}
51361 	} else {
51362 		/* If no key was specified we use auto-increment keys */
51363 		generator->largest_used_integer_key++;
51364 		ZVAL_LONG(&generator->key, generator->largest_used_integer_key);
51365 	}
51366 
51367 	if (RETURN_VALUE_USED(opline)) {
51368 		/* If the return value of yield is used set the send
51369 		 * target and initialize it to NULL */
51370 		generator->send_target = EX_VAR(opline->result.var);
51371 		ZVAL_NULL(generator->send_target);
51372 	} else {
51373 		generator->send_target = NULL;
51374 	}
51375 
51376 	/* We increment to the next op, so we are at the correct position when the
51377 	 * generator is resumed. */
51378 	ZEND_VM_INC_OPCODE();
51379 
51380 	/* The GOTO VM uses a local opline variable. We need to set the opline
51381 	 * variable in execute_data so we don't resume at an old position. */
51382 	SAVE_OPLINE();
51383 
51384 	ZEND_VM_RETURN();
51385 }
51386 
51387 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_NULL_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
51388 {
51389 	USE_OPLINE
51390 
51391 	zend_error_noreturn(E_ERROR, "Invalid opcode %d/%d/%d.", OPLINE->opcode, OPLINE->op1_type, OPLINE->op2_type);
51392 	ZEND_VM_NEXT_OPCODE(); /* Never reached */
51393 }
51394 
51395 
51396 #if (ZEND_VM_KIND == ZEND_VM_KIND_HYBRID)
51397 # undef ZEND_VM_TAIL_CALL
51398 # undef ZEND_VM_CONTINUE
51399 # undef ZEND_VM_RETURN
51400 
51401 # define ZEND_VM_TAIL_CALL(call) call; ZEND_VM_CONTINUE()
51402 # define ZEND_VM_CONTINUE()      HYBRID_NEXT()
51403 # define ZEND_VM_RETURN()        goto HYBRID_HALT_LABEL
51404 #endif
51405 
51406 
51407 ZEND_API void execute_ex(zend_execute_data *ex)
51408 {
51409 	DCL_OPLINE
51410 
51411 #ifdef ZEND_VM_IP_GLOBAL_REG
51412 	const zend_op *orig_opline = opline;
51413 #endif
51414 #ifdef ZEND_VM_FP_GLOBAL_REG
51415 	zend_execute_data *orig_execute_data = execute_data;
51416 	execute_data = ex;
51417 #else
51418 	zend_execute_data *execute_data = ex;
51419 #endif
51420 
51421 #if (ZEND_VM_KIND == ZEND_VM_KIND_HYBRID)
51422 	if (UNEXPECTED(execute_data == NULL)) {
51423 		static const void * const labels[] = {
51424 			(void*)&&ZEND_NOP_SPEC_LABEL,
51425 			(void*)&&ZEND_ADD_SPEC_CONST_CONST_LABEL,
51426 			(void*)&&ZEND_ADD_SPEC_CONST_TMPVAR_LABEL,
51427 			(void*)&&ZEND_ADD_SPEC_CONST_TMPVAR_LABEL,
51428 			(void*)&&ZEND_NULL_LABEL,
51429 			(void*)&&ZEND_ADD_SPEC_CONST_CV_LABEL,
51430 			(void*)&&ZEND_ADD_SPEC_TMPVAR_CONST_LABEL,
51431 			(void*)&&ZEND_ADD_SPEC_TMPVAR_TMPVAR_LABEL,
51432 			(void*)&&ZEND_ADD_SPEC_TMPVAR_TMPVAR_LABEL,
51433 			(void*)&&ZEND_NULL_LABEL,
51434 			(void*)&&ZEND_ADD_SPEC_TMPVAR_CV_LABEL,
51435 			(void*)&&ZEND_ADD_SPEC_TMPVAR_CONST_LABEL,
51436 			(void*)&&ZEND_ADD_SPEC_TMPVAR_TMPVAR_LABEL,
51437 			(void*)&&ZEND_ADD_SPEC_TMPVAR_TMPVAR_LABEL,
51438 			(void*)&&ZEND_NULL_LABEL,
51439 			(void*)&&ZEND_ADD_SPEC_TMPVAR_CV_LABEL,
51440 			(void*)&&ZEND_NULL_LABEL,
51441 			(void*)&&ZEND_NULL_LABEL,
51442 			(void*)&&ZEND_NULL_LABEL,
51443 			(void*)&&ZEND_NULL_LABEL,
51444 			(void*)&&ZEND_NULL_LABEL,
51445 			(void*)&&ZEND_ADD_SPEC_CV_CONST_LABEL,
51446 			(void*)&&ZEND_ADD_SPEC_CV_TMPVAR_LABEL,
51447 			(void*)&&ZEND_ADD_SPEC_CV_TMPVAR_LABEL,
51448 			(void*)&&ZEND_NULL_LABEL,
51449 			(void*)&&ZEND_ADD_SPEC_CV_CV_LABEL,
51450 			(void*)&&ZEND_SUB_SPEC_CONST_CONST_LABEL,
51451 			(void*)&&ZEND_SUB_SPEC_CONST_TMPVAR_LABEL,
51452 			(void*)&&ZEND_SUB_SPEC_CONST_TMPVAR_LABEL,
51453 			(void*)&&ZEND_NULL_LABEL,
51454 			(void*)&&ZEND_SUB_SPEC_CONST_CV_LABEL,
51455 			(void*)&&ZEND_SUB_SPEC_TMPVAR_CONST_LABEL,
51456 			(void*)&&ZEND_SUB_SPEC_TMPVAR_TMPVAR_LABEL,
51457 			(void*)&&ZEND_SUB_SPEC_TMPVAR_TMPVAR_LABEL,
51458 			(void*)&&ZEND_NULL_LABEL,
51459 			(void*)&&ZEND_SUB_SPEC_TMPVAR_CV_LABEL,
51460 			(void*)&&ZEND_SUB_SPEC_TMPVAR_CONST_LABEL,
51461 			(void*)&&ZEND_SUB_SPEC_TMPVAR_TMPVAR_LABEL,
51462 			(void*)&&ZEND_SUB_SPEC_TMPVAR_TMPVAR_LABEL,
51463 			(void*)&&ZEND_NULL_LABEL,
51464 			(void*)&&ZEND_SUB_SPEC_TMPVAR_CV_LABEL,
51465 			(void*)&&ZEND_NULL_LABEL,
51466 			(void*)&&ZEND_NULL_LABEL,
51467 			(void*)&&ZEND_NULL_LABEL,
51468 			(void*)&&ZEND_NULL_LABEL,
51469 			(void*)&&ZEND_NULL_LABEL,
51470 			(void*)&&ZEND_SUB_SPEC_CV_CONST_LABEL,
51471 			(void*)&&ZEND_SUB_SPEC_CV_TMPVAR_LABEL,
51472 			(void*)&&ZEND_SUB_SPEC_CV_TMPVAR_LABEL,
51473 			(void*)&&ZEND_NULL_LABEL,
51474 			(void*)&&ZEND_SUB_SPEC_CV_CV_LABEL,
51475 			(void*)&&ZEND_MUL_SPEC_CONST_CONST_LABEL,
51476 			(void*)&&ZEND_NULL_LABEL,
51477 			(void*)&&ZEND_NULL_LABEL,
51478 			(void*)&&ZEND_NULL_LABEL,
51479 			(void*)&&ZEND_NULL_LABEL,
51480 			(void*)&&ZEND_MUL_SPEC_TMPVAR_CONST_LABEL,
51481 			(void*)&&ZEND_MUL_SPEC_TMPVAR_TMPVAR_LABEL,
51482 			(void*)&&ZEND_MUL_SPEC_TMPVAR_TMPVAR_LABEL,
51483 			(void*)&&ZEND_NULL_LABEL,
51484 			(void*)&&ZEND_NULL_LABEL,
51485 			(void*)&&ZEND_MUL_SPEC_TMPVAR_CONST_LABEL,
51486 			(void*)&&ZEND_MUL_SPEC_TMPVAR_TMPVAR_LABEL,
51487 			(void*)&&ZEND_MUL_SPEC_TMPVAR_TMPVAR_LABEL,
51488 			(void*)&&ZEND_NULL_LABEL,
51489 			(void*)&&ZEND_NULL_LABEL,
51490 			(void*)&&ZEND_NULL_LABEL,
51491 			(void*)&&ZEND_NULL_LABEL,
51492 			(void*)&&ZEND_NULL_LABEL,
51493 			(void*)&&ZEND_NULL_LABEL,
51494 			(void*)&&ZEND_NULL_LABEL,
51495 			(void*)&&ZEND_MUL_SPEC_CV_CONST_LABEL,
51496 			(void*)&&ZEND_MUL_SPEC_CV_TMPVAR_LABEL,
51497 			(void*)&&ZEND_MUL_SPEC_CV_TMPVAR_LABEL,
51498 			(void*)&&ZEND_NULL_LABEL,
51499 			(void*)&&ZEND_MUL_SPEC_CV_CV_LABEL,
51500 			(void*)&&ZEND_DIV_SPEC_CONST_CONST_LABEL,
51501 			(void*)&&ZEND_DIV_SPEC_CONST_TMPVAR_LABEL,
51502 			(void*)&&ZEND_DIV_SPEC_CONST_TMPVAR_LABEL,
51503 			(void*)&&ZEND_NULL_LABEL,
51504 			(void*)&&ZEND_DIV_SPEC_CONST_CV_LABEL,
51505 			(void*)&&ZEND_DIV_SPEC_TMPVAR_CONST_LABEL,
51506 			(void*)&&ZEND_DIV_SPEC_TMPVAR_TMPVAR_LABEL,
51507 			(void*)&&ZEND_DIV_SPEC_TMPVAR_TMPVAR_LABEL,
51508 			(void*)&&ZEND_NULL_LABEL,
51509 			(void*)&&ZEND_DIV_SPEC_TMPVAR_CV_LABEL,
51510 			(void*)&&ZEND_DIV_SPEC_TMPVAR_CONST_LABEL,
51511 			(void*)&&ZEND_DIV_SPEC_TMPVAR_TMPVAR_LABEL,
51512 			(void*)&&ZEND_DIV_SPEC_TMPVAR_TMPVAR_LABEL,
51513 			(void*)&&ZEND_NULL_LABEL,
51514 			(void*)&&ZEND_DIV_SPEC_TMPVAR_CV_LABEL,
51515 			(void*)&&ZEND_NULL_LABEL,
51516 			(void*)&&ZEND_NULL_LABEL,
51517 			(void*)&&ZEND_NULL_LABEL,
51518 			(void*)&&ZEND_NULL_LABEL,
51519 			(void*)&&ZEND_NULL_LABEL,
51520 			(void*)&&ZEND_DIV_SPEC_CV_CONST_LABEL,
51521 			(void*)&&ZEND_DIV_SPEC_CV_TMPVAR_LABEL,
51522 			(void*)&&ZEND_DIV_SPEC_CV_TMPVAR_LABEL,
51523 			(void*)&&ZEND_NULL_LABEL,
51524 			(void*)&&ZEND_DIV_SPEC_CV_CV_LABEL,
51525 			(void*)&&ZEND_MOD_SPEC_CONST_CONST_LABEL,
51526 			(void*)&&ZEND_MOD_SPEC_CONST_TMPVAR_LABEL,
51527 			(void*)&&ZEND_MOD_SPEC_CONST_TMPVAR_LABEL,
51528 			(void*)&&ZEND_NULL_LABEL,
51529 			(void*)&&ZEND_MOD_SPEC_CONST_CV_LABEL,
51530 			(void*)&&ZEND_MOD_SPEC_TMPVAR_CONST_LABEL,
51531 			(void*)&&ZEND_MOD_SPEC_TMPVAR_TMPVAR_LABEL,
51532 			(void*)&&ZEND_MOD_SPEC_TMPVAR_TMPVAR_LABEL,
51533 			(void*)&&ZEND_NULL_LABEL,
51534 			(void*)&&ZEND_MOD_SPEC_TMPVAR_CV_LABEL,
51535 			(void*)&&ZEND_MOD_SPEC_TMPVAR_CONST_LABEL,
51536 			(void*)&&ZEND_MOD_SPEC_TMPVAR_TMPVAR_LABEL,
51537 			(void*)&&ZEND_MOD_SPEC_TMPVAR_TMPVAR_LABEL,
51538 			(void*)&&ZEND_NULL_LABEL,
51539 			(void*)&&ZEND_MOD_SPEC_TMPVAR_CV_LABEL,
51540 			(void*)&&ZEND_NULL_LABEL,
51541 			(void*)&&ZEND_NULL_LABEL,
51542 			(void*)&&ZEND_NULL_LABEL,
51543 			(void*)&&ZEND_NULL_LABEL,
51544 			(void*)&&ZEND_NULL_LABEL,
51545 			(void*)&&ZEND_MOD_SPEC_CV_CONST_LABEL,
51546 			(void*)&&ZEND_MOD_SPEC_CV_TMPVAR_LABEL,
51547 			(void*)&&ZEND_MOD_SPEC_CV_TMPVAR_LABEL,
51548 			(void*)&&ZEND_NULL_LABEL,
51549 			(void*)&&ZEND_MOD_SPEC_CV_CV_LABEL,
51550 			(void*)&&ZEND_SL_SPEC_CONST_CONST_LABEL,
51551 			(void*)&&ZEND_SL_SPEC_CONST_TMPVAR_LABEL,
51552 			(void*)&&ZEND_SL_SPEC_CONST_TMPVAR_LABEL,
51553 			(void*)&&ZEND_NULL_LABEL,
51554 			(void*)&&ZEND_SL_SPEC_CONST_CV_LABEL,
51555 			(void*)&&ZEND_SL_SPEC_TMPVAR_CONST_LABEL,
51556 			(void*)&&ZEND_SL_SPEC_TMPVAR_TMPVAR_LABEL,
51557 			(void*)&&ZEND_SL_SPEC_TMPVAR_TMPVAR_LABEL,
51558 			(void*)&&ZEND_NULL_LABEL,
51559 			(void*)&&ZEND_SL_SPEC_TMPVAR_CV_LABEL,
51560 			(void*)&&ZEND_SL_SPEC_TMPVAR_CONST_LABEL,
51561 			(void*)&&ZEND_SL_SPEC_TMPVAR_TMPVAR_LABEL,
51562 			(void*)&&ZEND_SL_SPEC_TMPVAR_TMPVAR_LABEL,
51563 			(void*)&&ZEND_NULL_LABEL,
51564 			(void*)&&ZEND_SL_SPEC_TMPVAR_CV_LABEL,
51565 			(void*)&&ZEND_NULL_LABEL,
51566 			(void*)&&ZEND_NULL_LABEL,
51567 			(void*)&&ZEND_NULL_LABEL,
51568 			(void*)&&ZEND_NULL_LABEL,
51569 			(void*)&&ZEND_NULL_LABEL,
51570 			(void*)&&ZEND_SL_SPEC_CV_CONST_LABEL,
51571 			(void*)&&ZEND_SL_SPEC_CV_TMPVAR_LABEL,
51572 			(void*)&&ZEND_SL_SPEC_CV_TMPVAR_LABEL,
51573 			(void*)&&ZEND_NULL_LABEL,
51574 			(void*)&&ZEND_SL_SPEC_CV_CV_LABEL,
51575 			(void*)&&ZEND_SR_SPEC_CONST_CONST_LABEL,
51576 			(void*)&&ZEND_SR_SPEC_CONST_TMPVAR_LABEL,
51577 			(void*)&&ZEND_SR_SPEC_CONST_TMPVAR_LABEL,
51578 			(void*)&&ZEND_NULL_LABEL,
51579 			(void*)&&ZEND_SR_SPEC_CONST_CV_LABEL,
51580 			(void*)&&ZEND_SR_SPEC_TMPVAR_CONST_LABEL,
51581 			(void*)&&ZEND_SR_SPEC_TMPVAR_TMPVAR_LABEL,
51582 			(void*)&&ZEND_SR_SPEC_TMPVAR_TMPVAR_LABEL,
51583 			(void*)&&ZEND_NULL_LABEL,
51584 			(void*)&&ZEND_SR_SPEC_TMPVAR_CV_LABEL,
51585 			(void*)&&ZEND_SR_SPEC_TMPVAR_CONST_LABEL,
51586 			(void*)&&ZEND_SR_SPEC_TMPVAR_TMPVAR_LABEL,
51587 			(void*)&&ZEND_SR_SPEC_TMPVAR_TMPVAR_LABEL,
51588 			(void*)&&ZEND_NULL_LABEL,
51589 			(void*)&&ZEND_SR_SPEC_TMPVAR_CV_LABEL,
51590 			(void*)&&ZEND_NULL_LABEL,
51591 			(void*)&&ZEND_NULL_LABEL,
51592 			(void*)&&ZEND_NULL_LABEL,
51593 			(void*)&&ZEND_NULL_LABEL,
51594 			(void*)&&ZEND_NULL_LABEL,
51595 			(void*)&&ZEND_SR_SPEC_CV_CONST_LABEL,
51596 			(void*)&&ZEND_SR_SPEC_CV_TMPVAR_LABEL,
51597 			(void*)&&ZEND_SR_SPEC_CV_TMPVAR_LABEL,
51598 			(void*)&&ZEND_NULL_LABEL,
51599 			(void*)&&ZEND_SR_SPEC_CV_CV_LABEL,
51600 			(void*)&&ZEND_NULL_LABEL,
51601 			(void*)&&ZEND_CONCAT_SPEC_CONST_TMPVAR_LABEL,
51602 			(void*)&&ZEND_CONCAT_SPEC_CONST_TMPVAR_LABEL,
51603 			(void*)&&ZEND_NULL_LABEL,
51604 			(void*)&&ZEND_CONCAT_SPEC_CONST_CV_LABEL,
51605 			(void*)&&ZEND_CONCAT_SPEC_TMPVAR_CONST_LABEL,
51606 			(void*)&&ZEND_CONCAT_SPEC_TMPVAR_TMPVAR_LABEL,
51607 			(void*)&&ZEND_CONCAT_SPEC_TMPVAR_TMPVAR_LABEL,
51608 			(void*)&&ZEND_NULL_LABEL,
51609 			(void*)&&ZEND_CONCAT_SPEC_TMPVAR_CV_LABEL,
51610 			(void*)&&ZEND_CONCAT_SPEC_TMPVAR_CONST_LABEL,
51611 			(void*)&&ZEND_CONCAT_SPEC_TMPVAR_TMPVAR_LABEL,
51612 			(void*)&&ZEND_CONCAT_SPEC_TMPVAR_TMPVAR_LABEL,
51613 			(void*)&&ZEND_NULL_LABEL,
51614 			(void*)&&ZEND_CONCAT_SPEC_TMPVAR_CV_LABEL,
51615 			(void*)&&ZEND_NULL_LABEL,
51616 			(void*)&&ZEND_NULL_LABEL,
51617 			(void*)&&ZEND_NULL_LABEL,
51618 			(void*)&&ZEND_NULL_LABEL,
51619 			(void*)&&ZEND_NULL_LABEL,
51620 			(void*)&&ZEND_CONCAT_SPEC_CV_CONST_LABEL,
51621 			(void*)&&ZEND_CONCAT_SPEC_CV_TMPVAR_LABEL,
51622 			(void*)&&ZEND_CONCAT_SPEC_CV_TMPVAR_LABEL,
51623 			(void*)&&ZEND_NULL_LABEL,
51624 			(void*)&&ZEND_CONCAT_SPEC_CV_CV_LABEL,
51625 			(void*)&&ZEND_BW_OR_SPEC_CONST_CONST_LABEL,
51626 			(void*)&&ZEND_NULL_LABEL,
51627 			(void*)&&ZEND_NULL_LABEL,
51628 			(void*)&&ZEND_NULL_LABEL,
51629 			(void*)&&ZEND_NULL_LABEL,
51630 			(void*)&&ZEND_BW_OR_SPEC_TMPVAR_CONST_LABEL,
51631 			(void*)&&ZEND_BW_OR_SPEC_TMPVAR_TMPVAR_LABEL,
51632 			(void*)&&ZEND_BW_OR_SPEC_TMPVAR_TMPVAR_LABEL,
51633 			(void*)&&ZEND_NULL_LABEL,
51634 			(void*)&&ZEND_NULL_LABEL,
51635 			(void*)&&ZEND_BW_OR_SPEC_TMPVAR_CONST_LABEL,
51636 			(void*)&&ZEND_BW_OR_SPEC_TMPVAR_TMPVAR_LABEL,
51637 			(void*)&&ZEND_BW_OR_SPEC_TMPVAR_TMPVAR_LABEL,
51638 			(void*)&&ZEND_NULL_LABEL,
51639 			(void*)&&ZEND_NULL_LABEL,
51640 			(void*)&&ZEND_NULL_LABEL,
51641 			(void*)&&ZEND_NULL_LABEL,
51642 			(void*)&&ZEND_NULL_LABEL,
51643 			(void*)&&ZEND_NULL_LABEL,
51644 			(void*)&&ZEND_NULL_LABEL,
51645 			(void*)&&ZEND_BW_OR_SPEC_CV_CONST_LABEL,
51646 			(void*)&&ZEND_BW_OR_SPEC_CV_TMPVAR_LABEL,
51647 			(void*)&&ZEND_BW_OR_SPEC_CV_TMPVAR_LABEL,
51648 			(void*)&&ZEND_NULL_LABEL,
51649 			(void*)&&ZEND_BW_OR_SPEC_CV_CV_LABEL,
51650 			(void*)&&ZEND_BW_AND_SPEC_CONST_CONST_LABEL,
51651 			(void*)&&ZEND_NULL_LABEL,
51652 			(void*)&&ZEND_NULL_LABEL,
51653 			(void*)&&ZEND_NULL_LABEL,
51654 			(void*)&&ZEND_NULL_LABEL,
51655 			(void*)&&ZEND_BW_AND_SPEC_TMPVAR_CONST_LABEL,
51656 			(void*)&&ZEND_BW_AND_SPEC_TMPVAR_TMPVAR_LABEL,
51657 			(void*)&&ZEND_BW_AND_SPEC_TMPVAR_TMPVAR_LABEL,
51658 			(void*)&&ZEND_NULL_LABEL,
51659 			(void*)&&ZEND_NULL_LABEL,
51660 			(void*)&&ZEND_BW_AND_SPEC_TMPVAR_CONST_LABEL,
51661 			(void*)&&ZEND_BW_AND_SPEC_TMPVAR_TMPVAR_LABEL,
51662 			(void*)&&ZEND_BW_AND_SPEC_TMPVAR_TMPVAR_LABEL,
51663 			(void*)&&ZEND_NULL_LABEL,
51664 			(void*)&&ZEND_NULL_LABEL,
51665 			(void*)&&ZEND_NULL_LABEL,
51666 			(void*)&&ZEND_NULL_LABEL,
51667 			(void*)&&ZEND_NULL_LABEL,
51668 			(void*)&&ZEND_NULL_LABEL,
51669 			(void*)&&ZEND_NULL_LABEL,
51670 			(void*)&&ZEND_BW_AND_SPEC_CV_CONST_LABEL,
51671 			(void*)&&ZEND_BW_AND_SPEC_CV_TMPVAR_LABEL,
51672 			(void*)&&ZEND_BW_AND_SPEC_CV_TMPVAR_LABEL,
51673 			(void*)&&ZEND_NULL_LABEL,
51674 			(void*)&&ZEND_BW_AND_SPEC_CV_CV_LABEL,
51675 			(void*)&&ZEND_BW_XOR_SPEC_CONST_CONST_LABEL,
51676 			(void*)&&ZEND_NULL_LABEL,
51677 			(void*)&&ZEND_NULL_LABEL,
51678 			(void*)&&ZEND_NULL_LABEL,
51679 			(void*)&&ZEND_NULL_LABEL,
51680 			(void*)&&ZEND_BW_XOR_SPEC_TMPVAR_CONST_LABEL,
51681 			(void*)&&ZEND_BW_XOR_SPEC_TMPVAR_TMPVAR_LABEL,
51682 			(void*)&&ZEND_BW_XOR_SPEC_TMPVAR_TMPVAR_LABEL,
51683 			(void*)&&ZEND_NULL_LABEL,
51684 			(void*)&&ZEND_NULL_LABEL,
51685 			(void*)&&ZEND_BW_XOR_SPEC_TMPVAR_CONST_LABEL,
51686 			(void*)&&ZEND_BW_XOR_SPEC_TMPVAR_TMPVAR_LABEL,
51687 			(void*)&&ZEND_BW_XOR_SPEC_TMPVAR_TMPVAR_LABEL,
51688 			(void*)&&ZEND_NULL_LABEL,
51689 			(void*)&&ZEND_NULL_LABEL,
51690 			(void*)&&ZEND_NULL_LABEL,
51691 			(void*)&&ZEND_NULL_LABEL,
51692 			(void*)&&ZEND_NULL_LABEL,
51693 			(void*)&&ZEND_NULL_LABEL,
51694 			(void*)&&ZEND_NULL_LABEL,
51695 			(void*)&&ZEND_BW_XOR_SPEC_CV_CONST_LABEL,
51696 			(void*)&&ZEND_BW_XOR_SPEC_CV_TMPVAR_LABEL,
51697 			(void*)&&ZEND_BW_XOR_SPEC_CV_TMPVAR_LABEL,
51698 			(void*)&&ZEND_NULL_LABEL,
51699 			(void*)&&ZEND_BW_XOR_SPEC_CV_CV_LABEL,
51700 			(void*)&&ZEND_BW_NOT_SPEC_CONST_LABEL,
51701 			(void*)&&ZEND_BW_NOT_SPEC_TMPVAR_LABEL,
51702 			(void*)&&ZEND_BW_NOT_SPEC_TMPVAR_LABEL,
51703 			(void*)&&ZEND_NULL_LABEL,
51704 			(void*)&&ZEND_BW_NOT_SPEC_CV_LABEL,
51705 			(void*)&&ZEND_BOOL_NOT_SPEC_CONST_LABEL,
51706 			(void*)&&ZEND_BOOL_NOT_SPEC_TMPVAR_LABEL,
51707 			(void*)&&ZEND_BOOL_NOT_SPEC_TMPVAR_LABEL,
51708 			(void*)&&ZEND_NULL_LABEL,
51709 			(void*)&&ZEND_BOOL_NOT_SPEC_CV_LABEL,
51710 			(void*)&&ZEND_BOOL_XOR_SPEC_CONST_CONST_LABEL,
51711 			(void*)&&ZEND_NULL_LABEL,
51712 			(void*)&&ZEND_NULL_LABEL,
51713 			(void*)&&ZEND_NULL_LABEL,
51714 			(void*)&&ZEND_NULL_LABEL,
51715 			(void*)&&ZEND_BOOL_XOR_SPEC_TMPVAR_CONST_LABEL,
51716 			(void*)&&ZEND_BOOL_XOR_SPEC_TMPVAR_TMPVAR_LABEL,
51717 			(void*)&&ZEND_BOOL_XOR_SPEC_TMPVAR_TMPVAR_LABEL,
51718 			(void*)&&ZEND_NULL_LABEL,
51719 			(void*)&&ZEND_NULL_LABEL,
51720 			(void*)&&ZEND_BOOL_XOR_SPEC_TMPVAR_CONST_LABEL,
51721 			(void*)&&ZEND_BOOL_XOR_SPEC_TMPVAR_TMPVAR_LABEL,
51722 			(void*)&&ZEND_BOOL_XOR_SPEC_TMPVAR_TMPVAR_LABEL,
51723 			(void*)&&ZEND_NULL_LABEL,
51724 			(void*)&&ZEND_NULL_LABEL,
51725 			(void*)&&ZEND_NULL_LABEL,
51726 			(void*)&&ZEND_NULL_LABEL,
51727 			(void*)&&ZEND_NULL_LABEL,
51728 			(void*)&&ZEND_NULL_LABEL,
51729 			(void*)&&ZEND_NULL_LABEL,
51730 			(void*)&&ZEND_BOOL_XOR_SPEC_CV_CONST_LABEL,
51731 			(void*)&&ZEND_BOOL_XOR_SPEC_CV_TMPVAR_LABEL,
51732 			(void*)&&ZEND_BOOL_XOR_SPEC_CV_TMPVAR_LABEL,
51733 			(void*)&&ZEND_NULL_LABEL,
51734 			(void*)&&ZEND_BOOL_XOR_SPEC_CV_CV_LABEL,
51735 			(void*)&&ZEND_IS_IDENTICAL_SPEC_CONST_CONST_LABEL,
51736 			(void*)&&ZEND_NULL_LABEL,
51737 			(void*)&&ZEND_NULL_LABEL,
51738 			(void*)&&ZEND_NULL_LABEL,
51739 			(void*)&&ZEND_NULL_LABEL,
51740 			(void*)&&ZEND_IS_IDENTICAL_SPEC_TMP_CONST_LABEL,
51741 			(void*)&&ZEND_IS_IDENTICAL_SPEC_TMP_TMP_LABEL,
51742 			(void*)&&ZEND_NULL_LABEL,
51743 			(void*)&&ZEND_NULL_LABEL,
51744 			(void*)&&ZEND_NULL_LABEL,
51745 			(void*)&&ZEND_IS_IDENTICAL_SPEC_VAR_CONST_LABEL,
51746 			(void*)&&ZEND_IS_IDENTICAL_SPEC_VAR_TMP_LABEL,
51747 			(void*)&&ZEND_IS_IDENTICAL_SPEC_VAR_VAR_LABEL,
51748 			(void*)&&ZEND_NULL_LABEL,
51749 			(void*)&&ZEND_NULL_LABEL,
51750 			(void*)&&ZEND_NULL_LABEL,
51751 			(void*)&&ZEND_NULL_LABEL,
51752 			(void*)&&ZEND_NULL_LABEL,
51753 			(void*)&&ZEND_NULL_LABEL,
51754 			(void*)&&ZEND_NULL_LABEL,
51755 			(void*)&&ZEND_IS_IDENTICAL_SPEC_CV_CONST_LABEL,
51756 			(void*)&&ZEND_IS_IDENTICAL_SPEC_CV_TMP_LABEL,
51757 			(void*)&&ZEND_IS_IDENTICAL_SPEC_CV_VAR_LABEL,
51758 			(void*)&&ZEND_NULL_LABEL,
51759 			(void*)&&ZEND_IS_IDENTICAL_SPEC_CV_CV_LABEL,
51760 			(void*)&&ZEND_IS_NOT_IDENTICAL_SPEC_CONST_CONST_LABEL,
51761 			(void*)&&ZEND_NULL_LABEL,
51762 			(void*)&&ZEND_NULL_LABEL,
51763 			(void*)&&ZEND_NULL_LABEL,
51764 			(void*)&&ZEND_NULL_LABEL,
51765 			(void*)&&ZEND_IS_NOT_IDENTICAL_SPEC_TMP_CONST_LABEL,
51766 			(void*)&&ZEND_IS_NOT_IDENTICAL_SPEC_TMP_TMP_LABEL,
51767 			(void*)&&ZEND_NULL_LABEL,
51768 			(void*)&&ZEND_NULL_LABEL,
51769 			(void*)&&ZEND_NULL_LABEL,
51770 			(void*)&&ZEND_IS_NOT_IDENTICAL_SPEC_VAR_CONST_LABEL,
51771 			(void*)&&ZEND_IS_NOT_IDENTICAL_SPEC_VAR_TMP_LABEL,
51772 			(void*)&&ZEND_IS_NOT_IDENTICAL_SPEC_VAR_VAR_LABEL,
51773 			(void*)&&ZEND_NULL_LABEL,
51774 			(void*)&&ZEND_NULL_LABEL,
51775 			(void*)&&ZEND_NULL_LABEL,
51776 			(void*)&&ZEND_NULL_LABEL,
51777 			(void*)&&ZEND_NULL_LABEL,
51778 			(void*)&&ZEND_NULL_LABEL,
51779 			(void*)&&ZEND_NULL_LABEL,
51780 			(void*)&&ZEND_IS_NOT_IDENTICAL_SPEC_CV_CONST_LABEL,
51781 			(void*)&&ZEND_IS_NOT_IDENTICAL_SPEC_CV_TMP_LABEL,
51782 			(void*)&&ZEND_IS_NOT_IDENTICAL_SPEC_CV_VAR_LABEL,
51783 			(void*)&&ZEND_NULL_LABEL,
51784 			(void*)&&ZEND_IS_NOT_IDENTICAL_SPEC_CV_CV_LABEL,
51785 			(void*)&&ZEND_IS_EQUAL_SPEC_CONST_CONST_LABEL,
51786 			(void*)&&ZEND_NULL_LABEL,
51787 			(void*)&&ZEND_NULL_LABEL,
51788 			(void*)&&ZEND_NULL_LABEL,
51789 			(void*)&&ZEND_NULL_LABEL,
51790 			(void*)&&ZEND_IS_EQUAL_SPEC_TMPVAR_CONST_LABEL,
51791 			(void*)&&ZEND_IS_EQUAL_SPEC_TMPVAR_TMPVAR_LABEL,
51792 			(void*)&&ZEND_IS_EQUAL_SPEC_TMPVAR_TMPVAR_LABEL,
51793 			(void*)&&ZEND_NULL_LABEL,
51794 			(void*)&&ZEND_NULL_LABEL,
51795 			(void*)&&ZEND_IS_EQUAL_SPEC_TMPVAR_CONST_LABEL,
51796 			(void*)&&ZEND_IS_EQUAL_SPEC_TMPVAR_TMPVAR_LABEL,
51797 			(void*)&&ZEND_IS_EQUAL_SPEC_TMPVAR_TMPVAR_LABEL,
51798 			(void*)&&ZEND_NULL_LABEL,
51799 			(void*)&&ZEND_NULL_LABEL,
51800 			(void*)&&ZEND_NULL_LABEL,
51801 			(void*)&&ZEND_NULL_LABEL,
51802 			(void*)&&ZEND_NULL_LABEL,
51803 			(void*)&&ZEND_NULL_LABEL,
51804 			(void*)&&ZEND_NULL_LABEL,
51805 			(void*)&&ZEND_IS_EQUAL_SPEC_CV_CONST_LABEL,
51806 			(void*)&&ZEND_IS_EQUAL_SPEC_CV_TMPVAR_LABEL,
51807 			(void*)&&ZEND_IS_EQUAL_SPEC_CV_TMPVAR_LABEL,
51808 			(void*)&&ZEND_NULL_LABEL,
51809 			(void*)&&ZEND_IS_EQUAL_SPEC_CV_CV_LABEL,
51810 			(void*)&&ZEND_IS_NOT_EQUAL_SPEC_CONST_CONST_LABEL,
51811 			(void*)&&ZEND_NULL_LABEL,
51812 			(void*)&&ZEND_NULL_LABEL,
51813 			(void*)&&ZEND_NULL_LABEL,
51814 			(void*)&&ZEND_NULL_LABEL,
51815 			(void*)&&ZEND_IS_NOT_EQUAL_SPEC_TMPVAR_CONST_LABEL,
51816 			(void*)&&ZEND_IS_NOT_EQUAL_SPEC_TMPVAR_TMPVAR_LABEL,
51817 			(void*)&&ZEND_IS_NOT_EQUAL_SPEC_TMPVAR_TMPVAR_LABEL,
51818 			(void*)&&ZEND_NULL_LABEL,
51819 			(void*)&&ZEND_NULL_LABEL,
51820 			(void*)&&ZEND_IS_NOT_EQUAL_SPEC_TMPVAR_CONST_LABEL,
51821 			(void*)&&ZEND_IS_NOT_EQUAL_SPEC_TMPVAR_TMPVAR_LABEL,
51822 			(void*)&&ZEND_IS_NOT_EQUAL_SPEC_TMPVAR_TMPVAR_LABEL,
51823 			(void*)&&ZEND_NULL_LABEL,
51824 			(void*)&&ZEND_NULL_LABEL,
51825 			(void*)&&ZEND_NULL_LABEL,
51826 			(void*)&&ZEND_NULL_LABEL,
51827 			(void*)&&ZEND_NULL_LABEL,
51828 			(void*)&&ZEND_NULL_LABEL,
51829 			(void*)&&ZEND_NULL_LABEL,
51830 			(void*)&&ZEND_IS_NOT_EQUAL_SPEC_CV_CONST_LABEL,
51831 			(void*)&&ZEND_IS_NOT_EQUAL_SPEC_CV_TMPVAR_LABEL,
51832 			(void*)&&ZEND_IS_NOT_EQUAL_SPEC_CV_TMPVAR_LABEL,
51833 			(void*)&&ZEND_NULL_LABEL,
51834 			(void*)&&ZEND_IS_NOT_EQUAL_SPEC_CV_CV_LABEL,
51835 			(void*)&&ZEND_IS_SMALLER_SPEC_CONST_CONST_LABEL,
51836 			(void*)&&ZEND_IS_SMALLER_SPEC_CONST_TMPVAR_LABEL,
51837 			(void*)&&ZEND_IS_SMALLER_SPEC_CONST_TMPVAR_LABEL,
51838 			(void*)&&ZEND_NULL_LABEL,
51839 			(void*)&&ZEND_IS_SMALLER_SPEC_CONST_CV_LABEL,
51840 			(void*)&&ZEND_IS_SMALLER_SPEC_TMPVAR_CONST_LABEL,
51841 			(void*)&&ZEND_IS_SMALLER_SPEC_TMPVAR_TMPVAR_LABEL,
51842 			(void*)&&ZEND_IS_SMALLER_SPEC_TMPVAR_TMPVAR_LABEL,
51843 			(void*)&&ZEND_NULL_LABEL,
51844 			(void*)&&ZEND_IS_SMALLER_SPEC_TMPVAR_CV_LABEL,
51845 			(void*)&&ZEND_IS_SMALLER_SPEC_TMPVAR_CONST_LABEL,
51846 			(void*)&&ZEND_IS_SMALLER_SPEC_TMPVAR_TMPVAR_LABEL,
51847 			(void*)&&ZEND_IS_SMALLER_SPEC_TMPVAR_TMPVAR_LABEL,
51848 			(void*)&&ZEND_NULL_LABEL,
51849 			(void*)&&ZEND_IS_SMALLER_SPEC_TMPVAR_CV_LABEL,
51850 			(void*)&&ZEND_NULL_LABEL,
51851 			(void*)&&ZEND_NULL_LABEL,
51852 			(void*)&&ZEND_NULL_LABEL,
51853 			(void*)&&ZEND_NULL_LABEL,
51854 			(void*)&&ZEND_NULL_LABEL,
51855 			(void*)&&ZEND_IS_SMALLER_SPEC_CV_CONST_LABEL,
51856 			(void*)&&ZEND_IS_SMALLER_SPEC_CV_TMPVAR_LABEL,
51857 			(void*)&&ZEND_IS_SMALLER_SPEC_CV_TMPVAR_LABEL,
51858 			(void*)&&ZEND_NULL_LABEL,
51859 			(void*)&&ZEND_IS_SMALLER_SPEC_CV_CV_LABEL,
51860 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_SPEC_CONST_CONST_LABEL,
51861 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_SPEC_CONST_TMPVAR_LABEL,
51862 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_SPEC_CONST_TMPVAR_LABEL,
51863 			(void*)&&ZEND_NULL_LABEL,
51864 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_SPEC_CONST_CV_LABEL,
51865 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVAR_CONST_LABEL,
51866 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVAR_TMPVAR_LABEL,
51867 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVAR_TMPVAR_LABEL,
51868 			(void*)&&ZEND_NULL_LABEL,
51869 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVAR_CV_LABEL,
51870 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVAR_CONST_LABEL,
51871 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVAR_TMPVAR_LABEL,
51872 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVAR_TMPVAR_LABEL,
51873 			(void*)&&ZEND_NULL_LABEL,
51874 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVAR_CV_LABEL,
51875 			(void*)&&ZEND_NULL_LABEL,
51876 			(void*)&&ZEND_NULL_LABEL,
51877 			(void*)&&ZEND_NULL_LABEL,
51878 			(void*)&&ZEND_NULL_LABEL,
51879 			(void*)&&ZEND_NULL_LABEL,
51880 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_SPEC_CV_CONST_LABEL,
51881 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_SPEC_CV_TMPVAR_LABEL,
51882 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_SPEC_CV_TMPVAR_LABEL,
51883 			(void*)&&ZEND_NULL_LABEL,
51884 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_SPEC_CV_CV_LABEL,
51885 			(void*)&&ZEND_CAST_SPEC_CONST_LABEL,
51886 			(void*)&&ZEND_CAST_SPEC_TMP_LABEL,
51887 			(void*)&&ZEND_CAST_SPEC_VAR_LABEL,
51888 			(void*)&&ZEND_NULL_LABEL,
51889 			(void*)&&ZEND_CAST_SPEC_CV_LABEL,
51890 			(void*)&&ZEND_QM_ASSIGN_SPEC_CONST_LABEL,
51891 			(void*)&&ZEND_QM_ASSIGN_SPEC_TMP_LABEL,
51892 			(void*)&&ZEND_QM_ASSIGN_SPEC_VAR_LABEL,
51893 			(void*)&&ZEND_NULL_LABEL,
51894 			(void*)&&ZEND_QM_ASSIGN_SPEC_CV_LABEL,
51895 			(void*)&&ZEND_NULL_LABEL,
51896 			(void*)&&ZEND_NULL_LABEL,
51897 			(void*)&&ZEND_NULL_LABEL,
51898 			(void*)&&ZEND_NULL_LABEL,
51899 			(void*)&&ZEND_NULL_LABEL,
51900 			(void*)&&ZEND_NULL_LABEL,
51901 			(void*)&&ZEND_NULL_LABEL,
51902 			(void*)&&ZEND_NULL_LABEL,
51903 			(void*)&&ZEND_NULL_LABEL,
51904 			(void*)&&ZEND_NULL_LABEL,
51905 			(void*)&&ZEND_NULL_LABEL,
51906 			(void*)&&ZEND_NULL_LABEL,
51907 			(void*)&&ZEND_NULL_LABEL,
51908 			(void*)&&ZEND_NULL_LABEL,
51909 			(void*)&&ZEND_NULL_LABEL,
51910 			(void*)&&ZEND_NULL_LABEL,
51911 			(void*)&&ZEND_NULL_LABEL,
51912 			(void*)&&ZEND_NULL_LABEL,
51913 			(void*)&&ZEND_NULL_LABEL,
51914 			(void*)&&ZEND_NULL_LABEL,
51915 			(void*)&&ZEND_NULL_LABEL,
51916 			(void*)&&ZEND_NULL_LABEL,
51917 			(void*)&&ZEND_NULL_LABEL,
51918 			(void*)&&ZEND_NULL_LABEL,
51919 			(void*)&&ZEND_NULL_LABEL,
51920 			(void*)&&ZEND_NULL_LABEL,
51921 			(void*)&&ZEND_NULL_LABEL,
51922 			(void*)&&ZEND_NULL_LABEL,
51923 			(void*)&&ZEND_NULL_LABEL,
51924 			(void*)&&ZEND_NULL_LABEL,
51925 			(void*)&&ZEND_ASSIGN_ADD_SPEC_VAR_CONST_LABEL,
51926 			(void*)&&ZEND_ASSIGN_ADD_SPEC_VAR_CONST_DIM_LABEL,
51927 			(void*)&&ZEND_ASSIGN_ADD_SPEC_VAR_CONST_OBJ_LABEL,
51928 			(void*)&&ZEND_ASSIGN_ADD_SPEC_VAR_TMPVAR_LABEL,
51929 			(void*)&&ZEND_ASSIGN_ADD_SPEC_VAR_TMPVAR_DIM_LABEL,
51930 			(void*)&&ZEND_ASSIGN_ADD_SPEC_VAR_TMPVAR_OBJ_LABEL,
51931 			(void*)&&ZEND_ASSIGN_ADD_SPEC_VAR_TMPVAR_LABEL,
51932 			(void*)&&ZEND_ASSIGN_ADD_SPEC_VAR_TMPVAR_DIM_LABEL,
51933 			(void*)&&ZEND_ASSIGN_ADD_SPEC_VAR_TMPVAR_OBJ_LABEL,
51934 			(void*)&&ZEND_NULL_LABEL,
51935 			(void*)&&ZEND_ASSIGN_ADD_SPEC_VAR_UNUSED_DIM_LABEL,
51936 			(void*)&&ZEND_NULL_LABEL,
51937 			(void*)&&ZEND_ASSIGN_ADD_SPEC_VAR_CV_LABEL,
51938 			(void*)&&ZEND_ASSIGN_ADD_SPEC_VAR_CV_DIM_LABEL,
51939 			(void*)&&ZEND_ASSIGN_ADD_SPEC_VAR_CV_OBJ_LABEL,
51940 			(void*)&&ZEND_NULL_LABEL,
51941 			(void*)&&ZEND_NULL_LABEL,
51942 			(void*)&&ZEND_ASSIGN_ADD_SPEC_UNUSED_CONST_OBJ_LABEL,
51943 			(void*)&&ZEND_NULL_LABEL,
51944 			(void*)&&ZEND_NULL_LABEL,
51945 			(void*)&&ZEND_ASSIGN_ADD_SPEC_UNUSED_TMPVAR_OBJ_LABEL,
51946 			(void*)&&ZEND_NULL_LABEL,
51947 			(void*)&&ZEND_NULL_LABEL,
51948 			(void*)&&ZEND_ASSIGN_ADD_SPEC_UNUSED_TMPVAR_OBJ_LABEL,
51949 			(void*)&&ZEND_NULL_LABEL,
51950 			(void*)&&ZEND_NULL_LABEL,
51951 			(void*)&&ZEND_NULL_LABEL,
51952 			(void*)&&ZEND_NULL_LABEL,
51953 			(void*)&&ZEND_NULL_LABEL,
51954 			(void*)&&ZEND_ASSIGN_ADD_SPEC_UNUSED_CV_OBJ_LABEL,
51955 			(void*)&&ZEND_ASSIGN_ADD_SPEC_CV_CONST_LABEL,
51956 			(void*)&&ZEND_ASSIGN_ADD_SPEC_CV_CONST_DIM_LABEL,
51957 			(void*)&&ZEND_ASSIGN_ADD_SPEC_CV_CONST_OBJ_LABEL,
51958 			(void*)&&ZEND_ASSIGN_ADD_SPEC_CV_TMPVAR_LABEL,
51959 			(void*)&&ZEND_ASSIGN_ADD_SPEC_CV_TMPVAR_DIM_LABEL,
51960 			(void*)&&ZEND_ASSIGN_ADD_SPEC_CV_TMPVAR_OBJ_LABEL,
51961 			(void*)&&ZEND_ASSIGN_ADD_SPEC_CV_TMPVAR_LABEL,
51962 			(void*)&&ZEND_ASSIGN_ADD_SPEC_CV_TMPVAR_DIM_LABEL,
51963 			(void*)&&ZEND_ASSIGN_ADD_SPEC_CV_TMPVAR_OBJ_LABEL,
51964 			(void*)&&ZEND_NULL_LABEL,
51965 			(void*)&&ZEND_ASSIGN_ADD_SPEC_CV_UNUSED_DIM_LABEL,
51966 			(void*)&&ZEND_NULL_LABEL,
51967 			(void*)&&ZEND_ASSIGN_ADD_SPEC_CV_CV_LABEL,
51968 			(void*)&&ZEND_ASSIGN_ADD_SPEC_CV_CV_DIM_LABEL,
51969 			(void*)&&ZEND_ASSIGN_ADD_SPEC_CV_CV_OBJ_LABEL,
51970 			(void*)&&ZEND_NULL_LABEL,
51971 			(void*)&&ZEND_NULL_LABEL,
51972 			(void*)&&ZEND_NULL_LABEL,
51973 			(void*)&&ZEND_NULL_LABEL,
51974 			(void*)&&ZEND_NULL_LABEL,
51975 			(void*)&&ZEND_NULL_LABEL,
51976 			(void*)&&ZEND_NULL_LABEL,
51977 			(void*)&&ZEND_NULL_LABEL,
51978 			(void*)&&ZEND_NULL_LABEL,
51979 			(void*)&&ZEND_NULL_LABEL,
51980 			(void*)&&ZEND_NULL_LABEL,
51981 			(void*)&&ZEND_NULL_LABEL,
51982 			(void*)&&ZEND_NULL_LABEL,
51983 			(void*)&&ZEND_NULL_LABEL,
51984 			(void*)&&ZEND_NULL_LABEL,
51985 			(void*)&&ZEND_NULL_LABEL,
51986 			(void*)&&ZEND_NULL_LABEL,
51987 			(void*)&&ZEND_NULL_LABEL,
51988 			(void*)&&ZEND_NULL_LABEL,
51989 			(void*)&&ZEND_NULL_LABEL,
51990 			(void*)&&ZEND_NULL_LABEL,
51991 			(void*)&&ZEND_NULL_LABEL,
51992 			(void*)&&ZEND_NULL_LABEL,
51993 			(void*)&&ZEND_NULL_LABEL,
51994 			(void*)&&ZEND_NULL_LABEL,
51995 			(void*)&&ZEND_NULL_LABEL,
51996 			(void*)&&ZEND_NULL_LABEL,
51997 			(void*)&&ZEND_NULL_LABEL,
51998 			(void*)&&ZEND_NULL_LABEL,
51999 			(void*)&&ZEND_NULL_LABEL,
52000 			(void*)&&ZEND_ASSIGN_SUB_SPEC_VAR_CONST_LABEL,
52001 			(void*)&&ZEND_ASSIGN_SUB_SPEC_VAR_CONST_DIM_LABEL,
52002 			(void*)&&ZEND_ASSIGN_SUB_SPEC_VAR_CONST_OBJ_LABEL,
52003 			(void*)&&ZEND_ASSIGN_SUB_SPEC_VAR_TMPVAR_LABEL,
52004 			(void*)&&ZEND_ASSIGN_SUB_SPEC_VAR_TMPVAR_DIM_LABEL,
52005 			(void*)&&ZEND_ASSIGN_SUB_SPEC_VAR_TMPVAR_OBJ_LABEL,
52006 			(void*)&&ZEND_ASSIGN_SUB_SPEC_VAR_TMPVAR_LABEL,
52007 			(void*)&&ZEND_ASSIGN_SUB_SPEC_VAR_TMPVAR_DIM_LABEL,
52008 			(void*)&&ZEND_ASSIGN_SUB_SPEC_VAR_TMPVAR_OBJ_LABEL,
52009 			(void*)&&ZEND_NULL_LABEL,
52010 			(void*)&&ZEND_ASSIGN_SUB_SPEC_VAR_UNUSED_DIM_LABEL,
52011 			(void*)&&ZEND_NULL_LABEL,
52012 			(void*)&&ZEND_ASSIGN_SUB_SPEC_VAR_CV_LABEL,
52013 			(void*)&&ZEND_ASSIGN_SUB_SPEC_VAR_CV_DIM_LABEL,
52014 			(void*)&&ZEND_ASSIGN_SUB_SPEC_VAR_CV_OBJ_LABEL,
52015 			(void*)&&ZEND_NULL_LABEL,
52016 			(void*)&&ZEND_NULL_LABEL,
52017 			(void*)&&ZEND_ASSIGN_SUB_SPEC_UNUSED_CONST_OBJ_LABEL,
52018 			(void*)&&ZEND_NULL_LABEL,
52019 			(void*)&&ZEND_NULL_LABEL,
52020 			(void*)&&ZEND_ASSIGN_SUB_SPEC_UNUSED_TMPVAR_OBJ_LABEL,
52021 			(void*)&&ZEND_NULL_LABEL,
52022 			(void*)&&ZEND_NULL_LABEL,
52023 			(void*)&&ZEND_ASSIGN_SUB_SPEC_UNUSED_TMPVAR_OBJ_LABEL,
52024 			(void*)&&ZEND_NULL_LABEL,
52025 			(void*)&&ZEND_NULL_LABEL,
52026 			(void*)&&ZEND_NULL_LABEL,
52027 			(void*)&&ZEND_NULL_LABEL,
52028 			(void*)&&ZEND_NULL_LABEL,
52029 			(void*)&&ZEND_ASSIGN_SUB_SPEC_UNUSED_CV_OBJ_LABEL,
52030 			(void*)&&ZEND_ASSIGN_SUB_SPEC_CV_CONST_LABEL,
52031 			(void*)&&ZEND_ASSIGN_SUB_SPEC_CV_CONST_DIM_LABEL,
52032 			(void*)&&ZEND_ASSIGN_SUB_SPEC_CV_CONST_OBJ_LABEL,
52033 			(void*)&&ZEND_ASSIGN_SUB_SPEC_CV_TMPVAR_LABEL,
52034 			(void*)&&ZEND_ASSIGN_SUB_SPEC_CV_TMPVAR_DIM_LABEL,
52035 			(void*)&&ZEND_ASSIGN_SUB_SPEC_CV_TMPVAR_OBJ_LABEL,
52036 			(void*)&&ZEND_ASSIGN_SUB_SPEC_CV_TMPVAR_LABEL,
52037 			(void*)&&ZEND_ASSIGN_SUB_SPEC_CV_TMPVAR_DIM_LABEL,
52038 			(void*)&&ZEND_ASSIGN_SUB_SPEC_CV_TMPVAR_OBJ_LABEL,
52039 			(void*)&&ZEND_NULL_LABEL,
52040 			(void*)&&ZEND_ASSIGN_SUB_SPEC_CV_UNUSED_DIM_LABEL,
52041 			(void*)&&ZEND_NULL_LABEL,
52042 			(void*)&&ZEND_ASSIGN_SUB_SPEC_CV_CV_LABEL,
52043 			(void*)&&ZEND_ASSIGN_SUB_SPEC_CV_CV_DIM_LABEL,
52044 			(void*)&&ZEND_ASSIGN_SUB_SPEC_CV_CV_OBJ_LABEL,
52045 			(void*)&&ZEND_NULL_LABEL,
52046 			(void*)&&ZEND_NULL_LABEL,
52047 			(void*)&&ZEND_NULL_LABEL,
52048 			(void*)&&ZEND_NULL_LABEL,
52049 			(void*)&&ZEND_NULL_LABEL,
52050 			(void*)&&ZEND_NULL_LABEL,
52051 			(void*)&&ZEND_NULL_LABEL,
52052 			(void*)&&ZEND_NULL_LABEL,
52053 			(void*)&&ZEND_NULL_LABEL,
52054 			(void*)&&ZEND_NULL_LABEL,
52055 			(void*)&&ZEND_NULL_LABEL,
52056 			(void*)&&ZEND_NULL_LABEL,
52057 			(void*)&&ZEND_NULL_LABEL,
52058 			(void*)&&ZEND_NULL_LABEL,
52059 			(void*)&&ZEND_NULL_LABEL,
52060 			(void*)&&ZEND_NULL_LABEL,
52061 			(void*)&&ZEND_NULL_LABEL,
52062 			(void*)&&ZEND_NULL_LABEL,
52063 			(void*)&&ZEND_NULL_LABEL,
52064 			(void*)&&ZEND_NULL_LABEL,
52065 			(void*)&&ZEND_NULL_LABEL,
52066 			(void*)&&ZEND_NULL_LABEL,
52067 			(void*)&&ZEND_NULL_LABEL,
52068 			(void*)&&ZEND_NULL_LABEL,
52069 			(void*)&&ZEND_NULL_LABEL,
52070 			(void*)&&ZEND_NULL_LABEL,
52071 			(void*)&&ZEND_NULL_LABEL,
52072 			(void*)&&ZEND_NULL_LABEL,
52073 			(void*)&&ZEND_NULL_LABEL,
52074 			(void*)&&ZEND_NULL_LABEL,
52075 			(void*)&&ZEND_ASSIGN_MUL_SPEC_VAR_CONST_LABEL,
52076 			(void*)&&ZEND_ASSIGN_MUL_SPEC_VAR_CONST_DIM_LABEL,
52077 			(void*)&&ZEND_ASSIGN_MUL_SPEC_VAR_CONST_OBJ_LABEL,
52078 			(void*)&&ZEND_ASSIGN_MUL_SPEC_VAR_TMPVAR_LABEL,
52079 			(void*)&&ZEND_ASSIGN_MUL_SPEC_VAR_TMPVAR_DIM_LABEL,
52080 			(void*)&&ZEND_ASSIGN_MUL_SPEC_VAR_TMPVAR_OBJ_LABEL,
52081 			(void*)&&ZEND_ASSIGN_MUL_SPEC_VAR_TMPVAR_LABEL,
52082 			(void*)&&ZEND_ASSIGN_MUL_SPEC_VAR_TMPVAR_DIM_LABEL,
52083 			(void*)&&ZEND_ASSIGN_MUL_SPEC_VAR_TMPVAR_OBJ_LABEL,
52084 			(void*)&&ZEND_NULL_LABEL,
52085 			(void*)&&ZEND_ASSIGN_MUL_SPEC_VAR_UNUSED_DIM_LABEL,
52086 			(void*)&&ZEND_NULL_LABEL,
52087 			(void*)&&ZEND_ASSIGN_MUL_SPEC_VAR_CV_LABEL,
52088 			(void*)&&ZEND_ASSIGN_MUL_SPEC_VAR_CV_DIM_LABEL,
52089 			(void*)&&ZEND_ASSIGN_MUL_SPEC_VAR_CV_OBJ_LABEL,
52090 			(void*)&&ZEND_NULL_LABEL,
52091 			(void*)&&ZEND_NULL_LABEL,
52092 			(void*)&&ZEND_ASSIGN_MUL_SPEC_UNUSED_CONST_OBJ_LABEL,
52093 			(void*)&&ZEND_NULL_LABEL,
52094 			(void*)&&ZEND_NULL_LABEL,
52095 			(void*)&&ZEND_ASSIGN_MUL_SPEC_UNUSED_TMPVAR_OBJ_LABEL,
52096 			(void*)&&ZEND_NULL_LABEL,
52097 			(void*)&&ZEND_NULL_LABEL,
52098 			(void*)&&ZEND_ASSIGN_MUL_SPEC_UNUSED_TMPVAR_OBJ_LABEL,
52099 			(void*)&&ZEND_NULL_LABEL,
52100 			(void*)&&ZEND_NULL_LABEL,
52101 			(void*)&&ZEND_NULL_LABEL,
52102 			(void*)&&ZEND_NULL_LABEL,
52103 			(void*)&&ZEND_NULL_LABEL,
52104 			(void*)&&ZEND_ASSIGN_MUL_SPEC_UNUSED_CV_OBJ_LABEL,
52105 			(void*)&&ZEND_ASSIGN_MUL_SPEC_CV_CONST_LABEL,
52106 			(void*)&&ZEND_ASSIGN_MUL_SPEC_CV_CONST_DIM_LABEL,
52107 			(void*)&&ZEND_ASSIGN_MUL_SPEC_CV_CONST_OBJ_LABEL,
52108 			(void*)&&ZEND_ASSIGN_MUL_SPEC_CV_TMPVAR_LABEL,
52109 			(void*)&&ZEND_ASSIGN_MUL_SPEC_CV_TMPVAR_DIM_LABEL,
52110 			(void*)&&ZEND_ASSIGN_MUL_SPEC_CV_TMPVAR_OBJ_LABEL,
52111 			(void*)&&ZEND_ASSIGN_MUL_SPEC_CV_TMPVAR_LABEL,
52112 			(void*)&&ZEND_ASSIGN_MUL_SPEC_CV_TMPVAR_DIM_LABEL,
52113 			(void*)&&ZEND_ASSIGN_MUL_SPEC_CV_TMPVAR_OBJ_LABEL,
52114 			(void*)&&ZEND_NULL_LABEL,
52115 			(void*)&&ZEND_ASSIGN_MUL_SPEC_CV_UNUSED_DIM_LABEL,
52116 			(void*)&&ZEND_NULL_LABEL,
52117 			(void*)&&ZEND_ASSIGN_MUL_SPEC_CV_CV_LABEL,
52118 			(void*)&&ZEND_ASSIGN_MUL_SPEC_CV_CV_DIM_LABEL,
52119 			(void*)&&ZEND_ASSIGN_MUL_SPEC_CV_CV_OBJ_LABEL,
52120 			(void*)&&ZEND_NULL_LABEL,
52121 			(void*)&&ZEND_NULL_LABEL,
52122 			(void*)&&ZEND_NULL_LABEL,
52123 			(void*)&&ZEND_NULL_LABEL,
52124 			(void*)&&ZEND_NULL_LABEL,
52125 			(void*)&&ZEND_NULL_LABEL,
52126 			(void*)&&ZEND_NULL_LABEL,
52127 			(void*)&&ZEND_NULL_LABEL,
52128 			(void*)&&ZEND_NULL_LABEL,
52129 			(void*)&&ZEND_NULL_LABEL,
52130 			(void*)&&ZEND_NULL_LABEL,
52131 			(void*)&&ZEND_NULL_LABEL,
52132 			(void*)&&ZEND_NULL_LABEL,
52133 			(void*)&&ZEND_NULL_LABEL,
52134 			(void*)&&ZEND_NULL_LABEL,
52135 			(void*)&&ZEND_NULL_LABEL,
52136 			(void*)&&ZEND_NULL_LABEL,
52137 			(void*)&&ZEND_NULL_LABEL,
52138 			(void*)&&ZEND_NULL_LABEL,
52139 			(void*)&&ZEND_NULL_LABEL,
52140 			(void*)&&ZEND_NULL_LABEL,
52141 			(void*)&&ZEND_NULL_LABEL,
52142 			(void*)&&ZEND_NULL_LABEL,
52143 			(void*)&&ZEND_NULL_LABEL,
52144 			(void*)&&ZEND_NULL_LABEL,
52145 			(void*)&&ZEND_NULL_LABEL,
52146 			(void*)&&ZEND_NULL_LABEL,
52147 			(void*)&&ZEND_NULL_LABEL,
52148 			(void*)&&ZEND_NULL_LABEL,
52149 			(void*)&&ZEND_NULL_LABEL,
52150 			(void*)&&ZEND_ASSIGN_DIV_SPEC_VAR_CONST_LABEL,
52151 			(void*)&&ZEND_ASSIGN_DIV_SPEC_VAR_CONST_DIM_LABEL,
52152 			(void*)&&ZEND_ASSIGN_DIV_SPEC_VAR_CONST_OBJ_LABEL,
52153 			(void*)&&ZEND_ASSIGN_DIV_SPEC_VAR_TMPVAR_LABEL,
52154 			(void*)&&ZEND_ASSIGN_DIV_SPEC_VAR_TMPVAR_DIM_LABEL,
52155 			(void*)&&ZEND_ASSIGN_DIV_SPEC_VAR_TMPVAR_OBJ_LABEL,
52156 			(void*)&&ZEND_ASSIGN_DIV_SPEC_VAR_TMPVAR_LABEL,
52157 			(void*)&&ZEND_ASSIGN_DIV_SPEC_VAR_TMPVAR_DIM_LABEL,
52158 			(void*)&&ZEND_ASSIGN_DIV_SPEC_VAR_TMPVAR_OBJ_LABEL,
52159 			(void*)&&ZEND_NULL_LABEL,
52160 			(void*)&&ZEND_ASSIGN_DIV_SPEC_VAR_UNUSED_DIM_LABEL,
52161 			(void*)&&ZEND_NULL_LABEL,
52162 			(void*)&&ZEND_ASSIGN_DIV_SPEC_VAR_CV_LABEL,
52163 			(void*)&&ZEND_ASSIGN_DIV_SPEC_VAR_CV_DIM_LABEL,
52164 			(void*)&&ZEND_ASSIGN_DIV_SPEC_VAR_CV_OBJ_LABEL,
52165 			(void*)&&ZEND_NULL_LABEL,
52166 			(void*)&&ZEND_NULL_LABEL,
52167 			(void*)&&ZEND_ASSIGN_DIV_SPEC_UNUSED_CONST_OBJ_LABEL,
52168 			(void*)&&ZEND_NULL_LABEL,
52169 			(void*)&&ZEND_NULL_LABEL,
52170 			(void*)&&ZEND_ASSIGN_DIV_SPEC_UNUSED_TMPVAR_OBJ_LABEL,
52171 			(void*)&&ZEND_NULL_LABEL,
52172 			(void*)&&ZEND_NULL_LABEL,
52173 			(void*)&&ZEND_ASSIGN_DIV_SPEC_UNUSED_TMPVAR_OBJ_LABEL,
52174 			(void*)&&ZEND_NULL_LABEL,
52175 			(void*)&&ZEND_NULL_LABEL,
52176 			(void*)&&ZEND_NULL_LABEL,
52177 			(void*)&&ZEND_NULL_LABEL,
52178 			(void*)&&ZEND_NULL_LABEL,
52179 			(void*)&&ZEND_ASSIGN_DIV_SPEC_UNUSED_CV_OBJ_LABEL,
52180 			(void*)&&ZEND_ASSIGN_DIV_SPEC_CV_CONST_LABEL,
52181 			(void*)&&ZEND_ASSIGN_DIV_SPEC_CV_CONST_DIM_LABEL,
52182 			(void*)&&ZEND_ASSIGN_DIV_SPEC_CV_CONST_OBJ_LABEL,
52183 			(void*)&&ZEND_ASSIGN_DIV_SPEC_CV_TMPVAR_LABEL,
52184 			(void*)&&ZEND_ASSIGN_DIV_SPEC_CV_TMPVAR_DIM_LABEL,
52185 			(void*)&&ZEND_ASSIGN_DIV_SPEC_CV_TMPVAR_OBJ_LABEL,
52186 			(void*)&&ZEND_ASSIGN_DIV_SPEC_CV_TMPVAR_LABEL,
52187 			(void*)&&ZEND_ASSIGN_DIV_SPEC_CV_TMPVAR_DIM_LABEL,
52188 			(void*)&&ZEND_ASSIGN_DIV_SPEC_CV_TMPVAR_OBJ_LABEL,
52189 			(void*)&&ZEND_NULL_LABEL,
52190 			(void*)&&ZEND_ASSIGN_DIV_SPEC_CV_UNUSED_DIM_LABEL,
52191 			(void*)&&ZEND_NULL_LABEL,
52192 			(void*)&&ZEND_ASSIGN_DIV_SPEC_CV_CV_LABEL,
52193 			(void*)&&ZEND_ASSIGN_DIV_SPEC_CV_CV_DIM_LABEL,
52194 			(void*)&&ZEND_ASSIGN_DIV_SPEC_CV_CV_OBJ_LABEL,
52195 			(void*)&&ZEND_NULL_LABEL,
52196 			(void*)&&ZEND_NULL_LABEL,
52197 			(void*)&&ZEND_NULL_LABEL,
52198 			(void*)&&ZEND_NULL_LABEL,
52199 			(void*)&&ZEND_NULL_LABEL,
52200 			(void*)&&ZEND_NULL_LABEL,
52201 			(void*)&&ZEND_NULL_LABEL,
52202 			(void*)&&ZEND_NULL_LABEL,
52203 			(void*)&&ZEND_NULL_LABEL,
52204 			(void*)&&ZEND_NULL_LABEL,
52205 			(void*)&&ZEND_NULL_LABEL,
52206 			(void*)&&ZEND_NULL_LABEL,
52207 			(void*)&&ZEND_NULL_LABEL,
52208 			(void*)&&ZEND_NULL_LABEL,
52209 			(void*)&&ZEND_NULL_LABEL,
52210 			(void*)&&ZEND_NULL_LABEL,
52211 			(void*)&&ZEND_NULL_LABEL,
52212 			(void*)&&ZEND_NULL_LABEL,
52213 			(void*)&&ZEND_NULL_LABEL,
52214 			(void*)&&ZEND_NULL_LABEL,
52215 			(void*)&&ZEND_NULL_LABEL,
52216 			(void*)&&ZEND_NULL_LABEL,
52217 			(void*)&&ZEND_NULL_LABEL,
52218 			(void*)&&ZEND_NULL_LABEL,
52219 			(void*)&&ZEND_NULL_LABEL,
52220 			(void*)&&ZEND_NULL_LABEL,
52221 			(void*)&&ZEND_NULL_LABEL,
52222 			(void*)&&ZEND_NULL_LABEL,
52223 			(void*)&&ZEND_NULL_LABEL,
52224 			(void*)&&ZEND_NULL_LABEL,
52225 			(void*)&&ZEND_ASSIGN_MOD_SPEC_VAR_CONST_LABEL,
52226 			(void*)&&ZEND_ASSIGN_MOD_SPEC_VAR_CONST_DIM_LABEL,
52227 			(void*)&&ZEND_ASSIGN_MOD_SPEC_VAR_CONST_OBJ_LABEL,
52228 			(void*)&&ZEND_ASSIGN_MOD_SPEC_VAR_TMPVAR_LABEL,
52229 			(void*)&&ZEND_ASSIGN_MOD_SPEC_VAR_TMPVAR_DIM_LABEL,
52230 			(void*)&&ZEND_ASSIGN_MOD_SPEC_VAR_TMPVAR_OBJ_LABEL,
52231 			(void*)&&ZEND_ASSIGN_MOD_SPEC_VAR_TMPVAR_LABEL,
52232 			(void*)&&ZEND_ASSIGN_MOD_SPEC_VAR_TMPVAR_DIM_LABEL,
52233 			(void*)&&ZEND_ASSIGN_MOD_SPEC_VAR_TMPVAR_OBJ_LABEL,
52234 			(void*)&&ZEND_NULL_LABEL,
52235 			(void*)&&ZEND_ASSIGN_MOD_SPEC_VAR_UNUSED_DIM_LABEL,
52236 			(void*)&&ZEND_NULL_LABEL,
52237 			(void*)&&ZEND_ASSIGN_MOD_SPEC_VAR_CV_LABEL,
52238 			(void*)&&ZEND_ASSIGN_MOD_SPEC_VAR_CV_DIM_LABEL,
52239 			(void*)&&ZEND_ASSIGN_MOD_SPEC_VAR_CV_OBJ_LABEL,
52240 			(void*)&&ZEND_NULL_LABEL,
52241 			(void*)&&ZEND_NULL_LABEL,
52242 			(void*)&&ZEND_ASSIGN_MOD_SPEC_UNUSED_CONST_OBJ_LABEL,
52243 			(void*)&&ZEND_NULL_LABEL,
52244 			(void*)&&ZEND_NULL_LABEL,
52245 			(void*)&&ZEND_ASSIGN_MOD_SPEC_UNUSED_TMPVAR_OBJ_LABEL,
52246 			(void*)&&ZEND_NULL_LABEL,
52247 			(void*)&&ZEND_NULL_LABEL,
52248 			(void*)&&ZEND_ASSIGN_MOD_SPEC_UNUSED_TMPVAR_OBJ_LABEL,
52249 			(void*)&&ZEND_NULL_LABEL,
52250 			(void*)&&ZEND_NULL_LABEL,
52251 			(void*)&&ZEND_NULL_LABEL,
52252 			(void*)&&ZEND_NULL_LABEL,
52253 			(void*)&&ZEND_NULL_LABEL,
52254 			(void*)&&ZEND_ASSIGN_MOD_SPEC_UNUSED_CV_OBJ_LABEL,
52255 			(void*)&&ZEND_ASSIGN_MOD_SPEC_CV_CONST_LABEL,
52256 			(void*)&&ZEND_ASSIGN_MOD_SPEC_CV_CONST_DIM_LABEL,
52257 			(void*)&&ZEND_ASSIGN_MOD_SPEC_CV_CONST_OBJ_LABEL,
52258 			(void*)&&ZEND_ASSIGN_MOD_SPEC_CV_TMPVAR_LABEL,
52259 			(void*)&&ZEND_ASSIGN_MOD_SPEC_CV_TMPVAR_DIM_LABEL,
52260 			(void*)&&ZEND_ASSIGN_MOD_SPEC_CV_TMPVAR_OBJ_LABEL,
52261 			(void*)&&ZEND_ASSIGN_MOD_SPEC_CV_TMPVAR_LABEL,
52262 			(void*)&&ZEND_ASSIGN_MOD_SPEC_CV_TMPVAR_DIM_LABEL,
52263 			(void*)&&ZEND_ASSIGN_MOD_SPEC_CV_TMPVAR_OBJ_LABEL,
52264 			(void*)&&ZEND_NULL_LABEL,
52265 			(void*)&&ZEND_ASSIGN_MOD_SPEC_CV_UNUSED_DIM_LABEL,
52266 			(void*)&&ZEND_NULL_LABEL,
52267 			(void*)&&ZEND_ASSIGN_MOD_SPEC_CV_CV_LABEL,
52268 			(void*)&&ZEND_ASSIGN_MOD_SPEC_CV_CV_DIM_LABEL,
52269 			(void*)&&ZEND_ASSIGN_MOD_SPEC_CV_CV_OBJ_LABEL,
52270 			(void*)&&ZEND_NULL_LABEL,
52271 			(void*)&&ZEND_NULL_LABEL,
52272 			(void*)&&ZEND_NULL_LABEL,
52273 			(void*)&&ZEND_NULL_LABEL,
52274 			(void*)&&ZEND_NULL_LABEL,
52275 			(void*)&&ZEND_NULL_LABEL,
52276 			(void*)&&ZEND_NULL_LABEL,
52277 			(void*)&&ZEND_NULL_LABEL,
52278 			(void*)&&ZEND_NULL_LABEL,
52279 			(void*)&&ZEND_NULL_LABEL,
52280 			(void*)&&ZEND_NULL_LABEL,
52281 			(void*)&&ZEND_NULL_LABEL,
52282 			(void*)&&ZEND_NULL_LABEL,
52283 			(void*)&&ZEND_NULL_LABEL,
52284 			(void*)&&ZEND_NULL_LABEL,
52285 			(void*)&&ZEND_NULL_LABEL,
52286 			(void*)&&ZEND_NULL_LABEL,
52287 			(void*)&&ZEND_NULL_LABEL,
52288 			(void*)&&ZEND_NULL_LABEL,
52289 			(void*)&&ZEND_NULL_LABEL,
52290 			(void*)&&ZEND_NULL_LABEL,
52291 			(void*)&&ZEND_NULL_LABEL,
52292 			(void*)&&ZEND_NULL_LABEL,
52293 			(void*)&&ZEND_NULL_LABEL,
52294 			(void*)&&ZEND_NULL_LABEL,
52295 			(void*)&&ZEND_NULL_LABEL,
52296 			(void*)&&ZEND_NULL_LABEL,
52297 			(void*)&&ZEND_NULL_LABEL,
52298 			(void*)&&ZEND_NULL_LABEL,
52299 			(void*)&&ZEND_NULL_LABEL,
52300 			(void*)&&ZEND_ASSIGN_SL_SPEC_VAR_CONST_LABEL,
52301 			(void*)&&ZEND_ASSIGN_SL_SPEC_VAR_CONST_DIM_LABEL,
52302 			(void*)&&ZEND_ASSIGN_SL_SPEC_VAR_CONST_OBJ_LABEL,
52303 			(void*)&&ZEND_ASSIGN_SL_SPEC_VAR_TMPVAR_LABEL,
52304 			(void*)&&ZEND_ASSIGN_SL_SPEC_VAR_TMPVAR_DIM_LABEL,
52305 			(void*)&&ZEND_ASSIGN_SL_SPEC_VAR_TMPVAR_OBJ_LABEL,
52306 			(void*)&&ZEND_ASSIGN_SL_SPEC_VAR_TMPVAR_LABEL,
52307 			(void*)&&ZEND_ASSIGN_SL_SPEC_VAR_TMPVAR_DIM_LABEL,
52308 			(void*)&&ZEND_ASSIGN_SL_SPEC_VAR_TMPVAR_OBJ_LABEL,
52309 			(void*)&&ZEND_NULL_LABEL,
52310 			(void*)&&ZEND_ASSIGN_SL_SPEC_VAR_UNUSED_DIM_LABEL,
52311 			(void*)&&ZEND_NULL_LABEL,
52312 			(void*)&&ZEND_ASSIGN_SL_SPEC_VAR_CV_LABEL,
52313 			(void*)&&ZEND_ASSIGN_SL_SPEC_VAR_CV_DIM_LABEL,
52314 			(void*)&&ZEND_ASSIGN_SL_SPEC_VAR_CV_OBJ_LABEL,
52315 			(void*)&&ZEND_NULL_LABEL,
52316 			(void*)&&ZEND_NULL_LABEL,
52317 			(void*)&&ZEND_ASSIGN_SL_SPEC_UNUSED_CONST_OBJ_LABEL,
52318 			(void*)&&ZEND_NULL_LABEL,
52319 			(void*)&&ZEND_NULL_LABEL,
52320 			(void*)&&ZEND_ASSIGN_SL_SPEC_UNUSED_TMPVAR_OBJ_LABEL,
52321 			(void*)&&ZEND_NULL_LABEL,
52322 			(void*)&&ZEND_NULL_LABEL,
52323 			(void*)&&ZEND_ASSIGN_SL_SPEC_UNUSED_TMPVAR_OBJ_LABEL,
52324 			(void*)&&ZEND_NULL_LABEL,
52325 			(void*)&&ZEND_NULL_LABEL,
52326 			(void*)&&ZEND_NULL_LABEL,
52327 			(void*)&&ZEND_NULL_LABEL,
52328 			(void*)&&ZEND_NULL_LABEL,
52329 			(void*)&&ZEND_ASSIGN_SL_SPEC_UNUSED_CV_OBJ_LABEL,
52330 			(void*)&&ZEND_ASSIGN_SL_SPEC_CV_CONST_LABEL,
52331 			(void*)&&ZEND_ASSIGN_SL_SPEC_CV_CONST_DIM_LABEL,
52332 			(void*)&&ZEND_ASSIGN_SL_SPEC_CV_CONST_OBJ_LABEL,
52333 			(void*)&&ZEND_ASSIGN_SL_SPEC_CV_TMPVAR_LABEL,
52334 			(void*)&&ZEND_ASSIGN_SL_SPEC_CV_TMPVAR_DIM_LABEL,
52335 			(void*)&&ZEND_ASSIGN_SL_SPEC_CV_TMPVAR_OBJ_LABEL,
52336 			(void*)&&ZEND_ASSIGN_SL_SPEC_CV_TMPVAR_LABEL,
52337 			(void*)&&ZEND_ASSIGN_SL_SPEC_CV_TMPVAR_DIM_LABEL,
52338 			(void*)&&ZEND_ASSIGN_SL_SPEC_CV_TMPVAR_OBJ_LABEL,
52339 			(void*)&&ZEND_NULL_LABEL,
52340 			(void*)&&ZEND_ASSIGN_SL_SPEC_CV_UNUSED_DIM_LABEL,
52341 			(void*)&&ZEND_NULL_LABEL,
52342 			(void*)&&ZEND_ASSIGN_SL_SPEC_CV_CV_LABEL,
52343 			(void*)&&ZEND_ASSIGN_SL_SPEC_CV_CV_DIM_LABEL,
52344 			(void*)&&ZEND_ASSIGN_SL_SPEC_CV_CV_OBJ_LABEL,
52345 			(void*)&&ZEND_NULL_LABEL,
52346 			(void*)&&ZEND_NULL_LABEL,
52347 			(void*)&&ZEND_NULL_LABEL,
52348 			(void*)&&ZEND_NULL_LABEL,
52349 			(void*)&&ZEND_NULL_LABEL,
52350 			(void*)&&ZEND_NULL_LABEL,
52351 			(void*)&&ZEND_NULL_LABEL,
52352 			(void*)&&ZEND_NULL_LABEL,
52353 			(void*)&&ZEND_NULL_LABEL,
52354 			(void*)&&ZEND_NULL_LABEL,
52355 			(void*)&&ZEND_NULL_LABEL,
52356 			(void*)&&ZEND_NULL_LABEL,
52357 			(void*)&&ZEND_NULL_LABEL,
52358 			(void*)&&ZEND_NULL_LABEL,
52359 			(void*)&&ZEND_NULL_LABEL,
52360 			(void*)&&ZEND_NULL_LABEL,
52361 			(void*)&&ZEND_NULL_LABEL,
52362 			(void*)&&ZEND_NULL_LABEL,
52363 			(void*)&&ZEND_NULL_LABEL,
52364 			(void*)&&ZEND_NULL_LABEL,
52365 			(void*)&&ZEND_NULL_LABEL,
52366 			(void*)&&ZEND_NULL_LABEL,
52367 			(void*)&&ZEND_NULL_LABEL,
52368 			(void*)&&ZEND_NULL_LABEL,
52369 			(void*)&&ZEND_NULL_LABEL,
52370 			(void*)&&ZEND_NULL_LABEL,
52371 			(void*)&&ZEND_NULL_LABEL,
52372 			(void*)&&ZEND_NULL_LABEL,
52373 			(void*)&&ZEND_NULL_LABEL,
52374 			(void*)&&ZEND_NULL_LABEL,
52375 			(void*)&&ZEND_ASSIGN_SR_SPEC_VAR_CONST_LABEL,
52376 			(void*)&&ZEND_ASSIGN_SR_SPEC_VAR_CONST_DIM_LABEL,
52377 			(void*)&&ZEND_ASSIGN_SR_SPEC_VAR_CONST_OBJ_LABEL,
52378 			(void*)&&ZEND_ASSIGN_SR_SPEC_VAR_TMPVAR_LABEL,
52379 			(void*)&&ZEND_ASSIGN_SR_SPEC_VAR_TMPVAR_DIM_LABEL,
52380 			(void*)&&ZEND_ASSIGN_SR_SPEC_VAR_TMPVAR_OBJ_LABEL,
52381 			(void*)&&ZEND_ASSIGN_SR_SPEC_VAR_TMPVAR_LABEL,
52382 			(void*)&&ZEND_ASSIGN_SR_SPEC_VAR_TMPVAR_DIM_LABEL,
52383 			(void*)&&ZEND_ASSIGN_SR_SPEC_VAR_TMPVAR_OBJ_LABEL,
52384 			(void*)&&ZEND_NULL_LABEL,
52385 			(void*)&&ZEND_ASSIGN_SR_SPEC_VAR_UNUSED_DIM_LABEL,
52386 			(void*)&&ZEND_NULL_LABEL,
52387 			(void*)&&ZEND_ASSIGN_SR_SPEC_VAR_CV_LABEL,
52388 			(void*)&&ZEND_ASSIGN_SR_SPEC_VAR_CV_DIM_LABEL,
52389 			(void*)&&ZEND_ASSIGN_SR_SPEC_VAR_CV_OBJ_LABEL,
52390 			(void*)&&ZEND_NULL_LABEL,
52391 			(void*)&&ZEND_NULL_LABEL,
52392 			(void*)&&ZEND_ASSIGN_SR_SPEC_UNUSED_CONST_OBJ_LABEL,
52393 			(void*)&&ZEND_NULL_LABEL,
52394 			(void*)&&ZEND_NULL_LABEL,
52395 			(void*)&&ZEND_ASSIGN_SR_SPEC_UNUSED_TMPVAR_OBJ_LABEL,
52396 			(void*)&&ZEND_NULL_LABEL,
52397 			(void*)&&ZEND_NULL_LABEL,
52398 			(void*)&&ZEND_ASSIGN_SR_SPEC_UNUSED_TMPVAR_OBJ_LABEL,
52399 			(void*)&&ZEND_NULL_LABEL,
52400 			(void*)&&ZEND_NULL_LABEL,
52401 			(void*)&&ZEND_NULL_LABEL,
52402 			(void*)&&ZEND_NULL_LABEL,
52403 			(void*)&&ZEND_NULL_LABEL,
52404 			(void*)&&ZEND_ASSIGN_SR_SPEC_UNUSED_CV_OBJ_LABEL,
52405 			(void*)&&ZEND_ASSIGN_SR_SPEC_CV_CONST_LABEL,
52406 			(void*)&&ZEND_ASSIGN_SR_SPEC_CV_CONST_DIM_LABEL,
52407 			(void*)&&ZEND_ASSIGN_SR_SPEC_CV_CONST_OBJ_LABEL,
52408 			(void*)&&ZEND_ASSIGN_SR_SPEC_CV_TMPVAR_LABEL,
52409 			(void*)&&ZEND_ASSIGN_SR_SPEC_CV_TMPVAR_DIM_LABEL,
52410 			(void*)&&ZEND_ASSIGN_SR_SPEC_CV_TMPVAR_OBJ_LABEL,
52411 			(void*)&&ZEND_ASSIGN_SR_SPEC_CV_TMPVAR_LABEL,
52412 			(void*)&&ZEND_ASSIGN_SR_SPEC_CV_TMPVAR_DIM_LABEL,
52413 			(void*)&&ZEND_ASSIGN_SR_SPEC_CV_TMPVAR_OBJ_LABEL,
52414 			(void*)&&ZEND_NULL_LABEL,
52415 			(void*)&&ZEND_ASSIGN_SR_SPEC_CV_UNUSED_DIM_LABEL,
52416 			(void*)&&ZEND_NULL_LABEL,
52417 			(void*)&&ZEND_ASSIGN_SR_SPEC_CV_CV_LABEL,
52418 			(void*)&&ZEND_ASSIGN_SR_SPEC_CV_CV_DIM_LABEL,
52419 			(void*)&&ZEND_ASSIGN_SR_SPEC_CV_CV_OBJ_LABEL,
52420 			(void*)&&ZEND_NULL_LABEL,
52421 			(void*)&&ZEND_NULL_LABEL,
52422 			(void*)&&ZEND_NULL_LABEL,
52423 			(void*)&&ZEND_NULL_LABEL,
52424 			(void*)&&ZEND_NULL_LABEL,
52425 			(void*)&&ZEND_NULL_LABEL,
52426 			(void*)&&ZEND_NULL_LABEL,
52427 			(void*)&&ZEND_NULL_LABEL,
52428 			(void*)&&ZEND_NULL_LABEL,
52429 			(void*)&&ZEND_NULL_LABEL,
52430 			(void*)&&ZEND_NULL_LABEL,
52431 			(void*)&&ZEND_NULL_LABEL,
52432 			(void*)&&ZEND_NULL_LABEL,
52433 			(void*)&&ZEND_NULL_LABEL,
52434 			(void*)&&ZEND_NULL_LABEL,
52435 			(void*)&&ZEND_NULL_LABEL,
52436 			(void*)&&ZEND_NULL_LABEL,
52437 			(void*)&&ZEND_NULL_LABEL,
52438 			(void*)&&ZEND_NULL_LABEL,
52439 			(void*)&&ZEND_NULL_LABEL,
52440 			(void*)&&ZEND_NULL_LABEL,
52441 			(void*)&&ZEND_NULL_LABEL,
52442 			(void*)&&ZEND_NULL_LABEL,
52443 			(void*)&&ZEND_NULL_LABEL,
52444 			(void*)&&ZEND_NULL_LABEL,
52445 			(void*)&&ZEND_NULL_LABEL,
52446 			(void*)&&ZEND_NULL_LABEL,
52447 			(void*)&&ZEND_NULL_LABEL,
52448 			(void*)&&ZEND_NULL_LABEL,
52449 			(void*)&&ZEND_NULL_LABEL,
52450 			(void*)&&ZEND_ASSIGN_CONCAT_SPEC_VAR_CONST_LABEL,
52451 			(void*)&&ZEND_ASSIGN_CONCAT_SPEC_VAR_CONST_DIM_LABEL,
52452 			(void*)&&ZEND_ASSIGN_CONCAT_SPEC_VAR_CONST_OBJ_LABEL,
52453 			(void*)&&ZEND_ASSIGN_CONCAT_SPEC_VAR_TMPVAR_LABEL,
52454 			(void*)&&ZEND_ASSIGN_CONCAT_SPEC_VAR_TMPVAR_DIM_LABEL,
52455 			(void*)&&ZEND_ASSIGN_CONCAT_SPEC_VAR_TMPVAR_OBJ_LABEL,
52456 			(void*)&&ZEND_ASSIGN_CONCAT_SPEC_VAR_TMPVAR_LABEL,
52457 			(void*)&&ZEND_ASSIGN_CONCAT_SPEC_VAR_TMPVAR_DIM_LABEL,
52458 			(void*)&&ZEND_ASSIGN_CONCAT_SPEC_VAR_TMPVAR_OBJ_LABEL,
52459 			(void*)&&ZEND_NULL_LABEL,
52460 			(void*)&&ZEND_ASSIGN_CONCAT_SPEC_VAR_UNUSED_DIM_LABEL,
52461 			(void*)&&ZEND_NULL_LABEL,
52462 			(void*)&&ZEND_ASSIGN_CONCAT_SPEC_VAR_CV_LABEL,
52463 			(void*)&&ZEND_ASSIGN_CONCAT_SPEC_VAR_CV_DIM_LABEL,
52464 			(void*)&&ZEND_ASSIGN_CONCAT_SPEC_VAR_CV_OBJ_LABEL,
52465 			(void*)&&ZEND_NULL_LABEL,
52466 			(void*)&&ZEND_NULL_LABEL,
52467 			(void*)&&ZEND_ASSIGN_CONCAT_SPEC_UNUSED_CONST_OBJ_LABEL,
52468 			(void*)&&ZEND_NULL_LABEL,
52469 			(void*)&&ZEND_NULL_LABEL,
52470 			(void*)&&ZEND_ASSIGN_CONCAT_SPEC_UNUSED_TMPVAR_OBJ_LABEL,
52471 			(void*)&&ZEND_NULL_LABEL,
52472 			(void*)&&ZEND_NULL_LABEL,
52473 			(void*)&&ZEND_ASSIGN_CONCAT_SPEC_UNUSED_TMPVAR_OBJ_LABEL,
52474 			(void*)&&ZEND_NULL_LABEL,
52475 			(void*)&&ZEND_NULL_LABEL,
52476 			(void*)&&ZEND_NULL_LABEL,
52477 			(void*)&&ZEND_NULL_LABEL,
52478 			(void*)&&ZEND_NULL_LABEL,
52479 			(void*)&&ZEND_ASSIGN_CONCAT_SPEC_UNUSED_CV_OBJ_LABEL,
52480 			(void*)&&ZEND_ASSIGN_CONCAT_SPEC_CV_CONST_LABEL,
52481 			(void*)&&ZEND_ASSIGN_CONCAT_SPEC_CV_CONST_DIM_LABEL,
52482 			(void*)&&ZEND_ASSIGN_CONCAT_SPEC_CV_CONST_OBJ_LABEL,
52483 			(void*)&&ZEND_ASSIGN_CONCAT_SPEC_CV_TMPVAR_LABEL,
52484 			(void*)&&ZEND_ASSIGN_CONCAT_SPEC_CV_TMPVAR_DIM_LABEL,
52485 			(void*)&&ZEND_ASSIGN_CONCAT_SPEC_CV_TMPVAR_OBJ_LABEL,
52486 			(void*)&&ZEND_ASSIGN_CONCAT_SPEC_CV_TMPVAR_LABEL,
52487 			(void*)&&ZEND_ASSIGN_CONCAT_SPEC_CV_TMPVAR_DIM_LABEL,
52488 			(void*)&&ZEND_ASSIGN_CONCAT_SPEC_CV_TMPVAR_OBJ_LABEL,
52489 			(void*)&&ZEND_NULL_LABEL,
52490 			(void*)&&ZEND_ASSIGN_CONCAT_SPEC_CV_UNUSED_DIM_LABEL,
52491 			(void*)&&ZEND_NULL_LABEL,
52492 			(void*)&&ZEND_ASSIGN_CONCAT_SPEC_CV_CV_LABEL,
52493 			(void*)&&ZEND_ASSIGN_CONCAT_SPEC_CV_CV_DIM_LABEL,
52494 			(void*)&&ZEND_ASSIGN_CONCAT_SPEC_CV_CV_OBJ_LABEL,
52495 			(void*)&&ZEND_NULL_LABEL,
52496 			(void*)&&ZEND_NULL_LABEL,
52497 			(void*)&&ZEND_NULL_LABEL,
52498 			(void*)&&ZEND_NULL_LABEL,
52499 			(void*)&&ZEND_NULL_LABEL,
52500 			(void*)&&ZEND_NULL_LABEL,
52501 			(void*)&&ZEND_NULL_LABEL,
52502 			(void*)&&ZEND_NULL_LABEL,
52503 			(void*)&&ZEND_NULL_LABEL,
52504 			(void*)&&ZEND_NULL_LABEL,
52505 			(void*)&&ZEND_NULL_LABEL,
52506 			(void*)&&ZEND_NULL_LABEL,
52507 			(void*)&&ZEND_NULL_LABEL,
52508 			(void*)&&ZEND_NULL_LABEL,
52509 			(void*)&&ZEND_NULL_LABEL,
52510 			(void*)&&ZEND_NULL_LABEL,
52511 			(void*)&&ZEND_NULL_LABEL,
52512 			(void*)&&ZEND_NULL_LABEL,
52513 			(void*)&&ZEND_NULL_LABEL,
52514 			(void*)&&ZEND_NULL_LABEL,
52515 			(void*)&&ZEND_NULL_LABEL,
52516 			(void*)&&ZEND_NULL_LABEL,
52517 			(void*)&&ZEND_NULL_LABEL,
52518 			(void*)&&ZEND_NULL_LABEL,
52519 			(void*)&&ZEND_NULL_LABEL,
52520 			(void*)&&ZEND_NULL_LABEL,
52521 			(void*)&&ZEND_NULL_LABEL,
52522 			(void*)&&ZEND_NULL_LABEL,
52523 			(void*)&&ZEND_NULL_LABEL,
52524 			(void*)&&ZEND_NULL_LABEL,
52525 			(void*)&&ZEND_ASSIGN_BW_OR_SPEC_VAR_CONST_LABEL,
52526 			(void*)&&ZEND_ASSIGN_BW_OR_SPEC_VAR_CONST_DIM_LABEL,
52527 			(void*)&&ZEND_ASSIGN_BW_OR_SPEC_VAR_CONST_OBJ_LABEL,
52528 			(void*)&&ZEND_ASSIGN_BW_OR_SPEC_VAR_TMPVAR_LABEL,
52529 			(void*)&&ZEND_ASSIGN_BW_OR_SPEC_VAR_TMPVAR_DIM_LABEL,
52530 			(void*)&&ZEND_ASSIGN_BW_OR_SPEC_VAR_TMPVAR_OBJ_LABEL,
52531 			(void*)&&ZEND_ASSIGN_BW_OR_SPEC_VAR_TMPVAR_LABEL,
52532 			(void*)&&ZEND_ASSIGN_BW_OR_SPEC_VAR_TMPVAR_DIM_LABEL,
52533 			(void*)&&ZEND_ASSIGN_BW_OR_SPEC_VAR_TMPVAR_OBJ_LABEL,
52534 			(void*)&&ZEND_NULL_LABEL,
52535 			(void*)&&ZEND_ASSIGN_BW_OR_SPEC_VAR_UNUSED_DIM_LABEL,
52536 			(void*)&&ZEND_NULL_LABEL,
52537 			(void*)&&ZEND_ASSIGN_BW_OR_SPEC_VAR_CV_LABEL,
52538 			(void*)&&ZEND_ASSIGN_BW_OR_SPEC_VAR_CV_DIM_LABEL,
52539 			(void*)&&ZEND_ASSIGN_BW_OR_SPEC_VAR_CV_OBJ_LABEL,
52540 			(void*)&&ZEND_NULL_LABEL,
52541 			(void*)&&ZEND_NULL_LABEL,
52542 			(void*)&&ZEND_ASSIGN_BW_OR_SPEC_UNUSED_CONST_OBJ_LABEL,
52543 			(void*)&&ZEND_NULL_LABEL,
52544 			(void*)&&ZEND_NULL_LABEL,
52545 			(void*)&&ZEND_ASSIGN_BW_OR_SPEC_UNUSED_TMPVAR_OBJ_LABEL,
52546 			(void*)&&ZEND_NULL_LABEL,
52547 			(void*)&&ZEND_NULL_LABEL,
52548 			(void*)&&ZEND_ASSIGN_BW_OR_SPEC_UNUSED_TMPVAR_OBJ_LABEL,
52549 			(void*)&&ZEND_NULL_LABEL,
52550 			(void*)&&ZEND_NULL_LABEL,
52551 			(void*)&&ZEND_NULL_LABEL,
52552 			(void*)&&ZEND_NULL_LABEL,
52553 			(void*)&&ZEND_NULL_LABEL,
52554 			(void*)&&ZEND_ASSIGN_BW_OR_SPEC_UNUSED_CV_OBJ_LABEL,
52555 			(void*)&&ZEND_ASSIGN_BW_OR_SPEC_CV_CONST_LABEL,
52556 			(void*)&&ZEND_ASSIGN_BW_OR_SPEC_CV_CONST_DIM_LABEL,
52557 			(void*)&&ZEND_ASSIGN_BW_OR_SPEC_CV_CONST_OBJ_LABEL,
52558 			(void*)&&ZEND_ASSIGN_BW_OR_SPEC_CV_TMPVAR_LABEL,
52559 			(void*)&&ZEND_ASSIGN_BW_OR_SPEC_CV_TMPVAR_DIM_LABEL,
52560 			(void*)&&ZEND_ASSIGN_BW_OR_SPEC_CV_TMPVAR_OBJ_LABEL,
52561 			(void*)&&ZEND_ASSIGN_BW_OR_SPEC_CV_TMPVAR_LABEL,
52562 			(void*)&&ZEND_ASSIGN_BW_OR_SPEC_CV_TMPVAR_DIM_LABEL,
52563 			(void*)&&ZEND_ASSIGN_BW_OR_SPEC_CV_TMPVAR_OBJ_LABEL,
52564 			(void*)&&ZEND_NULL_LABEL,
52565 			(void*)&&ZEND_ASSIGN_BW_OR_SPEC_CV_UNUSED_DIM_LABEL,
52566 			(void*)&&ZEND_NULL_LABEL,
52567 			(void*)&&ZEND_ASSIGN_BW_OR_SPEC_CV_CV_LABEL,
52568 			(void*)&&ZEND_ASSIGN_BW_OR_SPEC_CV_CV_DIM_LABEL,
52569 			(void*)&&ZEND_ASSIGN_BW_OR_SPEC_CV_CV_OBJ_LABEL,
52570 			(void*)&&ZEND_NULL_LABEL,
52571 			(void*)&&ZEND_NULL_LABEL,
52572 			(void*)&&ZEND_NULL_LABEL,
52573 			(void*)&&ZEND_NULL_LABEL,
52574 			(void*)&&ZEND_NULL_LABEL,
52575 			(void*)&&ZEND_NULL_LABEL,
52576 			(void*)&&ZEND_NULL_LABEL,
52577 			(void*)&&ZEND_NULL_LABEL,
52578 			(void*)&&ZEND_NULL_LABEL,
52579 			(void*)&&ZEND_NULL_LABEL,
52580 			(void*)&&ZEND_NULL_LABEL,
52581 			(void*)&&ZEND_NULL_LABEL,
52582 			(void*)&&ZEND_NULL_LABEL,
52583 			(void*)&&ZEND_NULL_LABEL,
52584 			(void*)&&ZEND_NULL_LABEL,
52585 			(void*)&&ZEND_NULL_LABEL,
52586 			(void*)&&ZEND_NULL_LABEL,
52587 			(void*)&&ZEND_NULL_LABEL,
52588 			(void*)&&ZEND_NULL_LABEL,
52589 			(void*)&&ZEND_NULL_LABEL,
52590 			(void*)&&ZEND_NULL_LABEL,
52591 			(void*)&&ZEND_NULL_LABEL,
52592 			(void*)&&ZEND_NULL_LABEL,
52593 			(void*)&&ZEND_NULL_LABEL,
52594 			(void*)&&ZEND_NULL_LABEL,
52595 			(void*)&&ZEND_NULL_LABEL,
52596 			(void*)&&ZEND_NULL_LABEL,
52597 			(void*)&&ZEND_NULL_LABEL,
52598 			(void*)&&ZEND_NULL_LABEL,
52599 			(void*)&&ZEND_NULL_LABEL,
52600 			(void*)&&ZEND_ASSIGN_BW_AND_SPEC_VAR_CONST_LABEL,
52601 			(void*)&&ZEND_ASSIGN_BW_AND_SPEC_VAR_CONST_DIM_LABEL,
52602 			(void*)&&ZEND_ASSIGN_BW_AND_SPEC_VAR_CONST_OBJ_LABEL,
52603 			(void*)&&ZEND_ASSIGN_BW_AND_SPEC_VAR_TMPVAR_LABEL,
52604 			(void*)&&ZEND_ASSIGN_BW_AND_SPEC_VAR_TMPVAR_DIM_LABEL,
52605 			(void*)&&ZEND_ASSIGN_BW_AND_SPEC_VAR_TMPVAR_OBJ_LABEL,
52606 			(void*)&&ZEND_ASSIGN_BW_AND_SPEC_VAR_TMPVAR_LABEL,
52607 			(void*)&&ZEND_ASSIGN_BW_AND_SPEC_VAR_TMPVAR_DIM_LABEL,
52608 			(void*)&&ZEND_ASSIGN_BW_AND_SPEC_VAR_TMPVAR_OBJ_LABEL,
52609 			(void*)&&ZEND_NULL_LABEL,
52610 			(void*)&&ZEND_ASSIGN_BW_AND_SPEC_VAR_UNUSED_DIM_LABEL,
52611 			(void*)&&ZEND_NULL_LABEL,
52612 			(void*)&&ZEND_ASSIGN_BW_AND_SPEC_VAR_CV_LABEL,
52613 			(void*)&&ZEND_ASSIGN_BW_AND_SPEC_VAR_CV_DIM_LABEL,
52614 			(void*)&&ZEND_ASSIGN_BW_AND_SPEC_VAR_CV_OBJ_LABEL,
52615 			(void*)&&ZEND_NULL_LABEL,
52616 			(void*)&&ZEND_NULL_LABEL,
52617 			(void*)&&ZEND_ASSIGN_BW_AND_SPEC_UNUSED_CONST_OBJ_LABEL,
52618 			(void*)&&ZEND_NULL_LABEL,
52619 			(void*)&&ZEND_NULL_LABEL,
52620 			(void*)&&ZEND_ASSIGN_BW_AND_SPEC_UNUSED_TMPVAR_OBJ_LABEL,
52621 			(void*)&&ZEND_NULL_LABEL,
52622 			(void*)&&ZEND_NULL_LABEL,
52623 			(void*)&&ZEND_ASSIGN_BW_AND_SPEC_UNUSED_TMPVAR_OBJ_LABEL,
52624 			(void*)&&ZEND_NULL_LABEL,
52625 			(void*)&&ZEND_NULL_LABEL,
52626 			(void*)&&ZEND_NULL_LABEL,
52627 			(void*)&&ZEND_NULL_LABEL,
52628 			(void*)&&ZEND_NULL_LABEL,
52629 			(void*)&&ZEND_ASSIGN_BW_AND_SPEC_UNUSED_CV_OBJ_LABEL,
52630 			(void*)&&ZEND_ASSIGN_BW_AND_SPEC_CV_CONST_LABEL,
52631 			(void*)&&ZEND_ASSIGN_BW_AND_SPEC_CV_CONST_DIM_LABEL,
52632 			(void*)&&ZEND_ASSIGN_BW_AND_SPEC_CV_CONST_OBJ_LABEL,
52633 			(void*)&&ZEND_ASSIGN_BW_AND_SPEC_CV_TMPVAR_LABEL,
52634 			(void*)&&ZEND_ASSIGN_BW_AND_SPEC_CV_TMPVAR_DIM_LABEL,
52635 			(void*)&&ZEND_ASSIGN_BW_AND_SPEC_CV_TMPVAR_OBJ_LABEL,
52636 			(void*)&&ZEND_ASSIGN_BW_AND_SPEC_CV_TMPVAR_LABEL,
52637 			(void*)&&ZEND_ASSIGN_BW_AND_SPEC_CV_TMPVAR_DIM_LABEL,
52638 			(void*)&&ZEND_ASSIGN_BW_AND_SPEC_CV_TMPVAR_OBJ_LABEL,
52639 			(void*)&&ZEND_NULL_LABEL,
52640 			(void*)&&ZEND_ASSIGN_BW_AND_SPEC_CV_UNUSED_DIM_LABEL,
52641 			(void*)&&ZEND_NULL_LABEL,
52642 			(void*)&&ZEND_ASSIGN_BW_AND_SPEC_CV_CV_LABEL,
52643 			(void*)&&ZEND_ASSIGN_BW_AND_SPEC_CV_CV_DIM_LABEL,
52644 			(void*)&&ZEND_ASSIGN_BW_AND_SPEC_CV_CV_OBJ_LABEL,
52645 			(void*)&&ZEND_NULL_LABEL,
52646 			(void*)&&ZEND_NULL_LABEL,
52647 			(void*)&&ZEND_NULL_LABEL,
52648 			(void*)&&ZEND_NULL_LABEL,
52649 			(void*)&&ZEND_NULL_LABEL,
52650 			(void*)&&ZEND_NULL_LABEL,
52651 			(void*)&&ZEND_NULL_LABEL,
52652 			(void*)&&ZEND_NULL_LABEL,
52653 			(void*)&&ZEND_NULL_LABEL,
52654 			(void*)&&ZEND_NULL_LABEL,
52655 			(void*)&&ZEND_NULL_LABEL,
52656 			(void*)&&ZEND_NULL_LABEL,
52657 			(void*)&&ZEND_NULL_LABEL,
52658 			(void*)&&ZEND_NULL_LABEL,
52659 			(void*)&&ZEND_NULL_LABEL,
52660 			(void*)&&ZEND_NULL_LABEL,
52661 			(void*)&&ZEND_NULL_LABEL,
52662 			(void*)&&ZEND_NULL_LABEL,
52663 			(void*)&&ZEND_NULL_LABEL,
52664 			(void*)&&ZEND_NULL_LABEL,
52665 			(void*)&&ZEND_NULL_LABEL,
52666 			(void*)&&ZEND_NULL_LABEL,
52667 			(void*)&&ZEND_NULL_LABEL,
52668 			(void*)&&ZEND_NULL_LABEL,
52669 			(void*)&&ZEND_NULL_LABEL,
52670 			(void*)&&ZEND_NULL_LABEL,
52671 			(void*)&&ZEND_NULL_LABEL,
52672 			(void*)&&ZEND_NULL_LABEL,
52673 			(void*)&&ZEND_NULL_LABEL,
52674 			(void*)&&ZEND_NULL_LABEL,
52675 			(void*)&&ZEND_ASSIGN_BW_XOR_SPEC_VAR_CONST_LABEL,
52676 			(void*)&&ZEND_ASSIGN_BW_XOR_SPEC_VAR_CONST_DIM_LABEL,
52677 			(void*)&&ZEND_ASSIGN_BW_XOR_SPEC_VAR_CONST_OBJ_LABEL,
52678 			(void*)&&ZEND_ASSIGN_BW_XOR_SPEC_VAR_TMPVAR_LABEL,
52679 			(void*)&&ZEND_ASSIGN_BW_XOR_SPEC_VAR_TMPVAR_DIM_LABEL,
52680 			(void*)&&ZEND_ASSIGN_BW_XOR_SPEC_VAR_TMPVAR_OBJ_LABEL,
52681 			(void*)&&ZEND_ASSIGN_BW_XOR_SPEC_VAR_TMPVAR_LABEL,
52682 			(void*)&&ZEND_ASSIGN_BW_XOR_SPEC_VAR_TMPVAR_DIM_LABEL,
52683 			(void*)&&ZEND_ASSIGN_BW_XOR_SPEC_VAR_TMPVAR_OBJ_LABEL,
52684 			(void*)&&ZEND_NULL_LABEL,
52685 			(void*)&&ZEND_ASSIGN_BW_XOR_SPEC_VAR_UNUSED_DIM_LABEL,
52686 			(void*)&&ZEND_NULL_LABEL,
52687 			(void*)&&ZEND_ASSIGN_BW_XOR_SPEC_VAR_CV_LABEL,
52688 			(void*)&&ZEND_ASSIGN_BW_XOR_SPEC_VAR_CV_DIM_LABEL,
52689 			(void*)&&ZEND_ASSIGN_BW_XOR_SPEC_VAR_CV_OBJ_LABEL,
52690 			(void*)&&ZEND_NULL_LABEL,
52691 			(void*)&&ZEND_NULL_LABEL,
52692 			(void*)&&ZEND_ASSIGN_BW_XOR_SPEC_UNUSED_CONST_OBJ_LABEL,
52693 			(void*)&&ZEND_NULL_LABEL,
52694 			(void*)&&ZEND_NULL_LABEL,
52695 			(void*)&&ZEND_ASSIGN_BW_XOR_SPEC_UNUSED_TMPVAR_OBJ_LABEL,
52696 			(void*)&&ZEND_NULL_LABEL,
52697 			(void*)&&ZEND_NULL_LABEL,
52698 			(void*)&&ZEND_ASSIGN_BW_XOR_SPEC_UNUSED_TMPVAR_OBJ_LABEL,
52699 			(void*)&&ZEND_NULL_LABEL,
52700 			(void*)&&ZEND_NULL_LABEL,
52701 			(void*)&&ZEND_NULL_LABEL,
52702 			(void*)&&ZEND_NULL_LABEL,
52703 			(void*)&&ZEND_NULL_LABEL,
52704 			(void*)&&ZEND_ASSIGN_BW_XOR_SPEC_UNUSED_CV_OBJ_LABEL,
52705 			(void*)&&ZEND_ASSIGN_BW_XOR_SPEC_CV_CONST_LABEL,
52706 			(void*)&&ZEND_ASSIGN_BW_XOR_SPEC_CV_CONST_DIM_LABEL,
52707 			(void*)&&ZEND_ASSIGN_BW_XOR_SPEC_CV_CONST_OBJ_LABEL,
52708 			(void*)&&ZEND_ASSIGN_BW_XOR_SPEC_CV_TMPVAR_LABEL,
52709 			(void*)&&ZEND_ASSIGN_BW_XOR_SPEC_CV_TMPVAR_DIM_LABEL,
52710 			(void*)&&ZEND_ASSIGN_BW_XOR_SPEC_CV_TMPVAR_OBJ_LABEL,
52711 			(void*)&&ZEND_ASSIGN_BW_XOR_SPEC_CV_TMPVAR_LABEL,
52712 			(void*)&&ZEND_ASSIGN_BW_XOR_SPEC_CV_TMPVAR_DIM_LABEL,
52713 			(void*)&&ZEND_ASSIGN_BW_XOR_SPEC_CV_TMPVAR_OBJ_LABEL,
52714 			(void*)&&ZEND_NULL_LABEL,
52715 			(void*)&&ZEND_ASSIGN_BW_XOR_SPEC_CV_UNUSED_DIM_LABEL,
52716 			(void*)&&ZEND_NULL_LABEL,
52717 			(void*)&&ZEND_ASSIGN_BW_XOR_SPEC_CV_CV_LABEL,
52718 			(void*)&&ZEND_ASSIGN_BW_XOR_SPEC_CV_CV_DIM_LABEL,
52719 			(void*)&&ZEND_ASSIGN_BW_XOR_SPEC_CV_CV_OBJ_LABEL,
52720 			(void*)&&ZEND_NULL_LABEL,
52721 			(void*)&&ZEND_NULL_LABEL,
52722 			(void*)&&ZEND_NULL_LABEL,
52723 			(void*)&&ZEND_NULL_LABEL,
52724 			(void*)&&ZEND_PRE_INC_SPEC_VAR_RETVAL_UNUSED_LABEL,
52725 			(void*)&&ZEND_PRE_INC_SPEC_VAR_RETVAL_USED_LABEL,
52726 			(void*)&&ZEND_NULL_LABEL,
52727 			(void*)&&ZEND_NULL_LABEL,
52728 			(void*)&&ZEND_PRE_INC_SPEC_CV_RETVAL_UNUSED_LABEL,
52729 			(void*)&&ZEND_PRE_INC_SPEC_CV_RETVAL_USED_LABEL,
52730 			(void*)&&ZEND_NULL_LABEL,
52731 			(void*)&&ZEND_NULL_LABEL,
52732 			(void*)&&ZEND_NULL_LABEL,
52733 			(void*)&&ZEND_NULL_LABEL,
52734 			(void*)&&ZEND_PRE_DEC_SPEC_VAR_RETVAL_UNUSED_LABEL,
52735 			(void*)&&ZEND_PRE_DEC_SPEC_VAR_RETVAL_USED_LABEL,
52736 			(void*)&&ZEND_NULL_LABEL,
52737 			(void*)&&ZEND_NULL_LABEL,
52738 			(void*)&&ZEND_PRE_DEC_SPEC_CV_RETVAL_UNUSED_LABEL,
52739 			(void*)&&ZEND_PRE_DEC_SPEC_CV_RETVAL_USED_LABEL,
52740 			(void*)&&ZEND_NULL_LABEL,
52741 			(void*)&&ZEND_NULL_LABEL,
52742 			(void*)&&ZEND_POST_INC_SPEC_VAR_LABEL,
52743 			(void*)&&ZEND_NULL_LABEL,
52744 			(void*)&&ZEND_POST_INC_SPEC_CV_LABEL,
52745 			(void*)&&ZEND_NULL_LABEL,
52746 			(void*)&&ZEND_NULL_LABEL,
52747 			(void*)&&ZEND_POST_DEC_SPEC_VAR_LABEL,
52748 			(void*)&&ZEND_NULL_LABEL,
52749 			(void*)&&ZEND_POST_DEC_SPEC_CV_LABEL,
52750 			(void*)&&ZEND_NULL_LABEL,
52751 			(void*)&&ZEND_NULL_LABEL,
52752 			(void*)&&ZEND_NULL_LABEL,
52753 			(void*)&&ZEND_NULL_LABEL,
52754 			(void*)&&ZEND_NULL_LABEL,
52755 			(void*)&&ZEND_NULL_LABEL,
52756 			(void*)&&ZEND_NULL_LABEL,
52757 			(void*)&&ZEND_NULL_LABEL,
52758 			(void*)&&ZEND_NULL_LABEL,
52759 			(void*)&&ZEND_NULL_LABEL,
52760 			(void*)&&ZEND_NULL_LABEL,
52761 			(void*)&&ZEND_NULL_LABEL,
52762 			(void*)&&ZEND_NULL_LABEL,
52763 			(void*)&&ZEND_NULL_LABEL,
52764 			(void*)&&ZEND_NULL_LABEL,
52765 			(void*)&&ZEND_NULL_LABEL,
52766 			(void*)&&ZEND_NULL_LABEL,
52767 			(void*)&&ZEND_NULL_LABEL,
52768 			(void*)&&ZEND_NULL_LABEL,
52769 			(void*)&&ZEND_NULL_LABEL,
52770 			(void*)&&ZEND_ASSIGN_SPEC_VAR_CONST_RETVAL_UNUSED_LABEL,
52771 			(void*)&&ZEND_ASSIGN_SPEC_VAR_CONST_RETVAL_USED_LABEL,
52772 			(void*)&&ZEND_ASSIGN_SPEC_VAR_TMP_RETVAL_UNUSED_LABEL,
52773 			(void*)&&ZEND_ASSIGN_SPEC_VAR_TMP_RETVAL_USED_LABEL,
52774 			(void*)&&ZEND_ASSIGN_SPEC_VAR_VAR_RETVAL_UNUSED_LABEL,
52775 			(void*)&&ZEND_ASSIGN_SPEC_VAR_VAR_RETVAL_USED_LABEL,
52776 			(void*)&&ZEND_NULL_LABEL,
52777 			(void*)&&ZEND_NULL_LABEL,
52778 			(void*)&&ZEND_ASSIGN_SPEC_VAR_CV_RETVAL_UNUSED_LABEL,
52779 			(void*)&&ZEND_ASSIGN_SPEC_VAR_CV_RETVAL_USED_LABEL,
52780 			(void*)&&ZEND_NULL_LABEL,
52781 			(void*)&&ZEND_NULL_LABEL,
52782 			(void*)&&ZEND_NULL_LABEL,
52783 			(void*)&&ZEND_NULL_LABEL,
52784 			(void*)&&ZEND_NULL_LABEL,
52785 			(void*)&&ZEND_NULL_LABEL,
52786 			(void*)&&ZEND_NULL_LABEL,
52787 			(void*)&&ZEND_NULL_LABEL,
52788 			(void*)&&ZEND_NULL_LABEL,
52789 			(void*)&&ZEND_NULL_LABEL,
52790 			(void*)&&ZEND_ASSIGN_SPEC_CV_CONST_RETVAL_UNUSED_LABEL,
52791 			(void*)&&ZEND_ASSIGN_SPEC_CV_CONST_RETVAL_USED_LABEL,
52792 			(void*)&&ZEND_ASSIGN_SPEC_CV_TMP_RETVAL_UNUSED_LABEL,
52793 			(void*)&&ZEND_ASSIGN_SPEC_CV_TMP_RETVAL_USED_LABEL,
52794 			(void*)&&ZEND_ASSIGN_SPEC_CV_VAR_RETVAL_UNUSED_LABEL,
52795 			(void*)&&ZEND_ASSIGN_SPEC_CV_VAR_RETVAL_USED_LABEL,
52796 			(void*)&&ZEND_NULL_LABEL,
52797 			(void*)&&ZEND_NULL_LABEL,
52798 			(void*)&&ZEND_ASSIGN_SPEC_CV_CV_RETVAL_UNUSED_LABEL,
52799 			(void*)&&ZEND_ASSIGN_SPEC_CV_CV_RETVAL_USED_LABEL,
52800 			(void*)&&ZEND_NULL_LABEL,
52801 			(void*)&&ZEND_NULL_LABEL,
52802 			(void*)&&ZEND_NULL_LABEL,
52803 			(void*)&&ZEND_NULL_LABEL,
52804 			(void*)&&ZEND_NULL_LABEL,
52805 			(void*)&&ZEND_NULL_LABEL,
52806 			(void*)&&ZEND_NULL_LABEL,
52807 			(void*)&&ZEND_NULL_LABEL,
52808 			(void*)&&ZEND_NULL_LABEL,
52809 			(void*)&&ZEND_NULL_LABEL,
52810 			(void*)&&ZEND_NULL_LABEL,
52811 			(void*)&&ZEND_NULL_LABEL,
52812 			(void*)&&ZEND_ASSIGN_REF_SPEC_VAR_VAR_LABEL,
52813 			(void*)&&ZEND_NULL_LABEL,
52814 			(void*)&&ZEND_ASSIGN_REF_SPEC_VAR_CV_LABEL,
52815 			(void*)&&ZEND_NULL_LABEL,
52816 			(void*)&&ZEND_NULL_LABEL,
52817 			(void*)&&ZEND_NULL_LABEL,
52818 			(void*)&&ZEND_NULL_LABEL,
52819 			(void*)&&ZEND_NULL_LABEL,
52820 			(void*)&&ZEND_NULL_LABEL,
52821 			(void*)&&ZEND_NULL_LABEL,
52822 			(void*)&&ZEND_ASSIGN_REF_SPEC_CV_VAR_LABEL,
52823 			(void*)&&ZEND_NULL_LABEL,
52824 			(void*)&&ZEND_ASSIGN_REF_SPEC_CV_CV_LABEL,
52825 			(void*)&&ZEND_ECHO_SPEC_CONST_LABEL,
52826 			(void*)&&ZEND_ECHO_SPEC_TMPVAR_LABEL,
52827 			(void*)&&ZEND_ECHO_SPEC_TMPVAR_LABEL,
52828 			(void*)&&ZEND_NULL_LABEL,
52829 			(void*)&&ZEND_ECHO_SPEC_CV_LABEL,
52830 			(void*)&&ZEND_GENERATOR_CREATE_SPEC_LABEL,
52831 			(void*)&&ZEND_JMP_SPEC_LABEL,
52832 			(void*)&&ZEND_JMPZ_SPEC_CONST_LABEL,
52833 			(void*)&&ZEND_JMPZ_SPEC_TMPVAR_LABEL,
52834 			(void*)&&ZEND_JMPZ_SPEC_TMPVAR_LABEL,
52835 			(void*)&&ZEND_NULL_LABEL,
52836 			(void*)&&ZEND_JMPZ_SPEC_CV_LABEL,
52837 			(void*)&&ZEND_JMPNZ_SPEC_CONST_LABEL,
52838 			(void*)&&ZEND_JMPNZ_SPEC_TMPVAR_LABEL,
52839 			(void*)&&ZEND_JMPNZ_SPEC_TMPVAR_LABEL,
52840 			(void*)&&ZEND_NULL_LABEL,
52841 			(void*)&&ZEND_JMPNZ_SPEC_CV_LABEL,
52842 			(void*)&&ZEND_JMPZNZ_SPEC_CONST_LABEL,
52843 			(void*)&&ZEND_JMPZNZ_SPEC_TMPVAR_LABEL,
52844 			(void*)&&ZEND_JMPZNZ_SPEC_TMPVAR_LABEL,
52845 			(void*)&&ZEND_NULL_LABEL,
52846 			(void*)&&ZEND_JMPZNZ_SPEC_CV_LABEL,
52847 			(void*)&&ZEND_JMPZ_EX_SPEC_CONST_LABEL,
52848 			(void*)&&ZEND_JMPZ_EX_SPEC_TMPVAR_LABEL,
52849 			(void*)&&ZEND_JMPZ_EX_SPEC_TMPVAR_LABEL,
52850 			(void*)&&ZEND_NULL_LABEL,
52851 			(void*)&&ZEND_JMPZ_EX_SPEC_CV_LABEL,
52852 			(void*)&&ZEND_JMPNZ_EX_SPEC_CONST_LABEL,
52853 			(void*)&&ZEND_JMPNZ_EX_SPEC_TMPVAR_LABEL,
52854 			(void*)&&ZEND_JMPNZ_EX_SPEC_TMPVAR_LABEL,
52855 			(void*)&&ZEND_NULL_LABEL,
52856 			(void*)&&ZEND_JMPNZ_EX_SPEC_CV_LABEL,
52857 			(void*)&&ZEND_CASE_SPEC_TMPVAR_CONST_LABEL,
52858 			(void*)&&ZEND_CASE_SPEC_TMPVAR_TMPVAR_LABEL,
52859 			(void*)&&ZEND_CASE_SPEC_TMPVAR_TMPVAR_LABEL,
52860 			(void*)&&ZEND_NULL_LABEL,
52861 			(void*)&&ZEND_CASE_SPEC_TMPVAR_CV_LABEL,
52862 			(void*)&&ZEND_CHECK_VAR_SPEC_CV_UNUSED_LABEL,
52863 			(void*)&&ZEND_SEND_VAR_NO_REF_EX_SPEC_VAR_LABEL,
52864 			(void*)&&ZEND_SEND_VAR_NO_REF_EX_SPEC_VAR_QUICK_LABEL,
52865 			(void*)&&ZEND_NULL_LABEL,
52866 			(void*)&&ZEND_NULL_LABEL,
52867 			(void*)&&ZEND_MAKE_REF_SPEC_VAR_UNUSED_LABEL,
52868 			(void*)&&ZEND_NULL_LABEL,
52869 			(void*)&&ZEND_MAKE_REF_SPEC_CV_UNUSED_LABEL,
52870 			(void*)&&ZEND_BOOL_SPEC_CONST_LABEL,
52871 			(void*)&&ZEND_BOOL_SPEC_TMPVAR_LABEL,
52872 			(void*)&&ZEND_BOOL_SPEC_TMPVAR_LABEL,
52873 			(void*)&&ZEND_NULL_LABEL,
52874 			(void*)&&ZEND_BOOL_SPEC_CV_LABEL,
52875 			(void*)&&ZEND_FAST_CONCAT_SPEC_CONST_CONST_LABEL,
52876 			(void*)&&ZEND_FAST_CONCAT_SPEC_CONST_TMPVAR_LABEL,
52877 			(void*)&&ZEND_FAST_CONCAT_SPEC_CONST_TMPVAR_LABEL,
52878 			(void*)&&ZEND_NULL_LABEL,
52879 			(void*)&&ZEND_FAST_CONCAT_SPEC_CONST_CV_LABEL,
52880 			(void*)&&ZEND_FAST_CONCAT_SPEC_TMPVAR_CONST_LABEL,
52881 			(void*)&&ZEND_FAST_CONCAT_SPEC_TMPVAR_TMPVAR_LABEL,
52882 			(void*)&&ZEND_FAST_CONCAT_SPEC_TMPVAR_TMPVAR_LABEL,
52883 			(void*)&&ZEND_NULL_LABEL,
52884 			(void*)&&ZEND_FAST_CONCAT_SPEC_TMPVAR_CV_LABEL,
52885 			(void*)&&ZEND_FAST_CONCAT_SPEC_TMPVAR_CONST_LABEL,
52886 			(void*)&&ZEND_FAST_CONCAT_SPEC_TMPVAR_TMPVAR_LABEL,
52887 			(void*)&&ZEND_FAST_CONCAT_SPEC_TMPVAR_TMPVAR_LABEL,
52888 			(void*)&&ZEND_NULL_LABEL,
52889 			(void*)&&ZEND_FAST_CONCAT_SPEC_TMPVAR_CV_LABEL,
52890 			(void*)&&ZEND_NULL_LABEL,
52891 			(void*)&&ZEND_NULL_LABEL,
52892 			(void*)&&ZEND_NULL_LABEL,
52893 			(void*)&&ZEND_NULL_LABEL,
52894 			(void*)&&ZEND_NULL_LABEL,
52895 			(void*)&&ZEND_FAST_CONCAT_SPEC_CV_CONST_LABEL,
52896 			(void*)&&ZEND_FAST_CONCAT_SPEC_CV_TMPVAR_LABEL,
52897 			(void*)&&ZEND_FAST_CONCAT_SPEC_CV_TMPVAR_LABEL,
52898 			(void*)&&ZEND_NULL_LABEL,
52899 			(void*)&&ZEND_FAST_CONCAT_SPEC_CV_CV_LABEL,
52900 			(void*)&&ZEND_ROPE_INIT_SPEC_UNUSED_CONST_LABEL,
52901 			(void*)&&ZEND_ROPE_INIT_SPEC_UNUSED_TMPVAR_LABEL,
52902 			(void*)&&ZEND_ROPE_INIT_SPEC_UNUSED_TMPVAR_LABEL,
52903 			(void*)&&ZEND_NULL_LABEL,
52904 			(void*)&&ZEND_ROPE_INIT_SPEC_UNUSED_CV_LABEL,
52905 			(void*)&&ZEND_ROPE_ADD_SPEC_TMP_CONST_LABEL,
52906 			(void*)&&ZEND_ROPE_ADD_SPEC_TMP_TMPVAR_LABEL,
52907 			(void*)&&ZEND_ROPE_ADD_SPEC_TMP_TMPVAR_LABEL,
52908 			(void*)&&ZEND_NULL_LABEL,
52909 			(void*)&&ZEND_ROPE_ADD_SPEC_TMP_CV_LABEL,
52910 			(void*)&&ZEND_ROPE_END_SPEC_TMP_CONST_LABEL,
52911 			(void*)&&ZEND_ROPE_END_SPEC_TMP_TMPVAR_LABEL,
52912 			(void*)&&ZEND_ROPE_END_SPEC_TMP_TMPVAR_LABEL,
52913 			(void*)&&ZEND_NULL_LABEL,
52914 			(void*)&&ZEND_ROPE_END_SPEC_TMP_CV_LABEL,
52915 			(void*)&&ZEND_BEGIN_SILENCE_SPEC_LABEL,
52916 			(void*)&&ZEND_END_SILENCE_SPEC_TMP_LABEL,
52917 			(void*)&&ZEND_INIT_FCALL_BY_NAME_SPEC_CONST_LABEL,
52918 			(void*)&&ZEND_DO_FCALL_SPEC_RETVAL_UNUSED_LABEL,
52919 			(void*)&&ZEND_DO_FCALL_SPEC_RETVAL_USED_LABEL,
52920 			(void*)&&ZEND_INIT_FCALL_SPEC_CONST_LABEL,
52921 			(void*)&&ZEND_RETURN_SPEC_CONST_LABEL,
52922 			(void*)&&ZEND_RETURN_SPEC_TMP_LABEL,
52923 			(void*)&&ZEND_RETURN_SPEC_VAR_LABEL,
52924 			(void*)&&ZEND_NULL_LABEL,
52925 			(void*)&&ZEND_RETURN_SPEC_CV_LABEL,
52926 			(void*)&&ZEND_RECV_SPEC_UNUSED_LABEL,
52927 			(void*)&&ZEND_RECV_INIT_SPEC_CONST_LABEL,
52928 			(void*)&&ZEND_SEND_VAL_SPEC_CONST_LABEL,
52929 			(void*)&&ZEND_SEND_VAL_SPEC_TMPVAR_LABEL,
52930 			(void*)&&ZEND_SEND_VAL_SPEC_TMPVAR_LABEL,
52931 			(void*)&&ZEND_NULL_LABEL,
52932 			(void*)&&ZEND_NULL_LABEL,
52933 			(void*)&&ZEND_NULL_LABEL,
52934 			(void*)&&ZEND_NULL_LABEL,
52935 			(void*)&&ZEND_NULL_LABEL,
52936 			(void*)&&ZEND_NULL_LABEL,
52937 			(void*)&&ZEND_SEND_VAR_EX_SPEC_VAR_LABEL,
52938 			(void*)&&ZEND_SEND_VAR_EX_SPEC_VAR_QUICK_LABEL,
52939 			(void*)&&ZEND_NULL_LABEL,
52940 			(void*)&&ZEND_NULL_LABEL,
52941 			(void*)&&ZEND_SEND_VAR_EX_SPEC_CV_LABEL,
52942 			(void*)&&ZEND_SEND_VAR_EX_SPEC_CV_QUICK_LABEL,
52943 			(void*)&&ZEND_NULL_LABEL,
52944 			(void*)&&ZEND_NULL_LABEL,
52945 			(void*)&&ZEND_SEND_REF_SPEC_VAR_LABEL,
52946 			(void*)&&ZEND_NULL_LABEL,
52947 			(void*)&&ZEND_SEND_REF_SPEC_CV_LABEL,
52948 			(void*)&&ZEND_NEW_SPEC_CONST_UNUSED_LABEL,
52949 			(void*)&&ZEND_NULL_LABEL,
52950 			(void*)&&ZEND_NEW_SPEC_VAR_UNUSED_LABEL,
52951 			(void*)&&ZEND_NEW_SPEC_UNUSED_UNUSED_LABEL,
52952 			(void*)&&ZEND_NULL_LABEL,
52953 			(void*)&&ZEND_INIT_NS_FCALL_BY_NAME_SPEC_CONST_LABEL,
52954 			(void*)&&ZEND_FREE_SPEC_TMPVAR_LABEL,
52955 			(void*)&&ZEND_INIT_ARRAY_SPEC_CONST_CONST_LABEL,
52956 			(void*)&&ZEND_INIT_ARRAY_SPEC_CONST_TMPVAR_LABEL,
52957 			(void*)&&ZEND_INIT_ARRAY_SPEC_CONST_TMPVAR_LABEL,
52958 			(void*)&&ZEND_INIT_ARRAY_SPEC_CONST_UNUSED_LABEL,
52959 			(void*)&&ZEND_INIT_ARRAY_SPEC_CONST_CV_LABEL,
52960 			(void*)&&ZEND_INIT_ARRAY_SPEC_TMP_CONST_LABEL,
52961 			(void*)&&ZEND_INIT_ARRAY_SPEC_TMP_TMPVAR_LABEL,
52962 			(void*)&&ZEND_INIT_ARRAY_SPEC_TMP_TMPVAR_LABEL,
52963 			(void*)&&ZEND_INIT_ARRAY_SPEC_TMP_UNUSED_LABEL,
52964 			(void*)&&ZEND_INIT_ARRAY_SPEC_TMP_CV_LABEL,
52965 			(void*)&&ZEND_INIT_ARRAY_SPEC_VAR_CONST_LABEL,
52966 			(void*)&&ZEND_INIT_ARRAY_SPEC_VAR_TMPVAR_LABEL,
52967 			(void*)&&ZEND_INIT_ARRAY_SPEC_VAR_TMPVAR_LABEL,
52968 			(void*)&&ZEND_INIT_ARRAY_SPEC_VAR_UNUSED_LABEL,
52969 			(void*)&&ZEND_INIT_ARRAY_SPEC_VAR_CV_LABEL,
52970 			(void*)&&ZEND_NULL_LABEL,
52971 			(void*)&&ZEND_NULL_LABEL,
52972 			(void*)&&ZEND_NULL_LABEL,
52973 			(void*)&&ZEND_NULL_LABEL,
52974 			(void*)&&ZEND_NULL_LABEL,
52975 			(void*)&&ZEND_INIT_ARRAY_SPEC_CV_CONST_LABEL,
52976 			(void*)&&ZEND_INIT_ARRAY_SPEC_CV_TMPVAR_LABEL,
52977 			(void*)&&ZEND_INIT_ARRAY_SPEC_CV_TMPVAR_LABEL,
52978 			(void*)&&ZEND_INIT_ARRAY_SPEC_CV_UNUSED_LABEL,
52979 			(void*)&&ZEND_INIT_ARRAY_SPEC_CV_CV_LABEL,
52980 			(void*)&&ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_CONST_LABEL,
52981 			(void*)&&ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_TMPVAR_LABEL,
52982 			(void*)&&ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_TMPVAR_LABEL,
52983 			(void*)&&ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_UNUSED_LABEL,
52984 			(void*)&&ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_CV_LABEL,
52985 			(void*)&&ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_CONST_LABEL,
52986 			(void*)&&ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_TMPVAR_LABEL,
52987 			(void*)&&ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_TMPVAR_LABEL,
52988 			(void*)&&ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_UNUSED_LABEL,
52989 			(void*)&&ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_CV_LABEL,
52990 			(void*)&&ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_CONST_LABEL,
52991 			(void*)&&ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_TMPVAR_LABEL,
52992 			(void*)&&ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_TMPVAR_LABEL,
52993 			(void*)&&ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_UNUSED_LABEL,
52994 			(void*)&&ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_CV_LABEL,
52995 			(void*)&&ZEND_NULL_LABEL,
52996 			(void*)&&ZEND_NULL_LABEL,
52997 			(void*)&&ZEND_NULL_LABEL,
52998 			(void*)&&ZEND_NULL_LABEL,
52999 			(void*)&&ZEND_NULL_LABEL,
53000 			(void*)&&ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_CONST_LABEL,
53001 			(void*)&&ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_TMPVAR_LABEL,
53002 			(void*)&&ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_TMPVAR_LABEL,
53003 			(void*)&&ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_UNUSED_LABEL,
53004 			(void*)&&ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_CV_LABEL,
53005 			(void*)&&ZEND_INCLUDE_OR_EVAL_SPEC_CONST_LABEL,
53006 			(void*)&&ZEND_INCLUDE_OR_EVAL_SPEC_TMPVAR_LABEL,
53007 			(void*)&&ZEND_INCLUDE_OR_EVAL_SPEC_TMPVAR_LABEL,
53008 			(void*)&&ZEND_NULL_LABEL,
53009 			(void*)&&ZEND_INCLUDE_OR_EVAL_SPEC_CV_LABEL,
53010 			(void*)&&ZEND_UNSET_VAR_SPEC_CONST_UNUSED_LABEL,
53011 			(void*)&&ZEND_UNSET_VAR_SPEC_TMPVAR_UNUSED_LABEL,
53012 			(void*)&&ZEND_UNSET_VAR_SPEC_TMPVAR_UNUSED_LABEL,
53013 			(void*)&&ZEND_NULL_LABEL,
53014 			(void*)&&ZEND_UNSET_VAR_SPEC_CV_UNUSED_LABEL,
53015 			(void*)&&ZEND_NULL_LABEL,
53016 			(void*)&&ZEND_NULL_LABEL,
53017 			(void*)&&ZEND_NULL_LABEL,
53018 			(void*)&&ZEND_NULL_LABEL,
53019 			(void*)&&ZEND_NULL_LABEL,
53020 			(void*)&&ZEND_NULL_LABEL,
53021 			(void*)&&ZEND_NULL_LABEL,
53022 			(void*)&&ZEND_NULL_LABEL,
53023 			(void*)&&ZEND_NULL_LABEL,
53024 			(void*)&&ZEND_NULL_LABEL,
53025 			(void*)&&ZEND_UNSET_DIM_SPEC_VAR_CONST_LABEL,
53026 			(void*)&&ZEND_UNSET_DIM_SPEC_VAR_TMPVAR_LABEL,
53027 			(void*)&&ZEND_UNSET_DIM_SPEC_VAR_TMPVAR_LABEL,
53028 			(void*)&&ZEND_NULL_LABEL,
53029 			(void*)&&ZEND_UNSET_DIM_SPEC_VAR_CV_LABEL,
53030 			(void*)&&ZEND_NULL_LABEL,
53031 			(void*)&&ZEND_NULL_LABEL,
53032 			(void*)&&ZEND_NULL_LABEL,
53033 			(void*)&&ZEND_NULL_LABEL,
53034 			(void*)&&ZEND_NULL_LABEL,
53035 			(void*)&&ZEND_UNSET_DIM_SPEC_CV_CONST_LABEL,
53036 			(void*)&&ZEND_UNSET_DIM_SPEC_CV_TMPVAR_LABEL,
53037 			(void*)&&ZEND_UNSET_DIM_SPEC_CV_TMPVAR_LABEL,
53038 			(void*)&&ZEND_NULL_LABEL,
53039 			(void*)&&ZEND_UNSET_DIM_SPEC_CV_CV_LABEL,
53040 			(void*)&&ZEND_NULL_LABEL,
53041 			(void*)&&ZEND_NULL_LABEL,
53042 			(void*)&&ZEND_NULL_LABEL,
53043 			(void*)&&ZEND_NULL_LABEL,
53044 			(void*)&&ZEND_NULL_LABEL,
53045 			(void*)&&ZEND_NULL_LABEL,
53046 			(void*)&&ZEND_NULL_LABEL,
53047 			(void*)&&ZEND_NULL_LABEL,
53048 			(void*)&&ZEND_NULL_LABEL,
53049 			(void*)&&ZEND_NULL_LABEL,
53050 			(void*)&&ZEND_UNSET_OBJ_SPEC_VAR_CONST_LABEL,
53051 			(void*)&&ZEND_UNSET_OBJ_SPEC_VAR_TMPVAR_LABEL,
53052 			(void*)&&ZEND_UNSET_OBJ_SPEC_VAR_TMPVAR_LABEL,
53053 			(void*)&&ZEND_NULL_LABEL,
53054 			(void*)&&ZEND_UNSET_OBJ_SPEC_VAR_CV_LABEL,
53055 			(void*)&&ZEND_UNSET_OBJ_SPEC_UNUSED_CONST_LABEL,
53056 			(void*)&&ZEND_UNSET_OBJ_SPEC_UNUSED_TMPVAR_LABEL,
53057 			(void*)&&ZEND_UNSET_OBJ_SPEC_UNUSED_TMPVAR_LABEL,
53058 			(void*)&&ZEND_NULL_LABEL,
53059 			(void*)&&ZEND_UNSET_OBJ_SPEC_UNUSED_CV_LABEL,
53060 			(void*)&&ZEND_UNSET_OBJ_SPEC_CV_CONST_LABEL,
53061 			(void*)&&ZEND_UNSET_OBJ_SPEC_CV_TMPVAR_LABEL,
53062 			(void*)&&ZEND_UNSET_OBJ_SPEC_CV_TMPVAR_LABEL,
53063 			(void*)&&ZEND_NULL_LABEL,
53064 			(void*)&&ZEND_UNSET_OBJ_SPEC_CV_CV_LABEL,
53065 			(void*)&&ZEND_FE_RESET_R_SPEC_CONST_LABEL,
53066 			(void*)&&ZEND_FE_RESET_R_SPEC_TMP_LABEL,
53067 			(void*)&&ZEND_FE_RESET_R_SPEC_VAR_LABEL,
53068 			(void*)&&ZEND_NULL_LABEL,
53069 			(void*)&&ZEND_FE_RESET_R_SPEC_CV_LABEL,
53070 			(void*)&&ZEND_FE_FETCH_R_SPEC_VAR_LABEL,
53071 			(void*)&&ZEND_EXIT_SPEC_CONST_LABEL,
53072 			(void*)&&ZEND_EXIT_SPEC_TMPVAR_LABEL,
53073 			(void*)&&ZEND_EXIT_SPEC_TMPVAR_LABEL,
53074 			(void*)&&ZEND_EXIT_SPEC_UNUSED_LABEL,
53075 			(void*)&&ZEND_EXIT_SPEC_CV_LABEL,
53076 			(void*)&&ZEND_FETCH_R_SPEC_CONST_UNUSED_LABEL,
53077 			(void*)&&ZEND_FETCH_R_SPEC_TMPVAR_UNUSED_LABEL,
53078 			(void*)&&ZEND_FETCH_R_SPEC_TMPVAR_UNUSED_LABEL,
53079 			(void*)&&ZEND_NULL_LABEL,
53080 			(void*)&&ZEND_FETCH_R_SPEC_CV_UNUSED_LABEL,
53081 			(void*)&&ZEND_FETCH_DIM_R_SPEC_CONST_CONST_LABEL,
53082 			(void*)&&ZEND_FETCH_DIM_R_SPEC_CONST_TMPVAR_LABEL,
53083 			(void*)&&ZEND_FETCH_DIM_R_SPEC_CONST_TMPVAR_LABEL,
53084 			(void*)&&ZEND_NULL_LABEL,
53085 			(void*)&&ZEND_FETCH_DIM_R_SPEC_CONST_CV_LABEL,
53086 			(void*)&&ZEND_FETCH_DIM_R_SPEC_TMPVAR_CONST_LABEL,
53087 			(void*)&&ZEND_FETCH_DIM_R_SPEC_TMPVAR_TMPVAR_LABEL,
53088 			(void*)&&ZEND_FETCH_DIM_R_SPEC_TMPVAR_TMPVAR_LABEL,
53089 			(void*)&&ZEND_NULL_LABEL,
53090 			(void*)&&ZEND_FETCH_DIM_R_SPEC_TMPVAR_CV_LABEL,
53091 			(void*)&&ZEND_FETCH_DIM_R_SPEC_TMPVAR_CONST_LABEL,
53092 			(void*)&&ZEND_FETCH_DIM_R_SPEC_TMPVAR_TMPVAR_LABEL,
53093 			(void*)&&ZEND_FETCH_DIM_R_SPEC_TMPVAR_TMPVAR_LABEL,
53094 			(void*)&&ZEND_NULL_LABEL,
53095 			(void*)&&ZEND_FETCH_DIM_R_SPEC_TMPVAR_CV_LABEL,
53096 			(void*)&&ZEND_NULL_LABEL,
53097 			(void*)&&ZEND_NULL_LABEL,
53098 			(void*)&&ZEND_NULL_LABEL,
53099 			(void*)&&ZEND_NULL_LABEL,
53100 			(void*)&&ZEND_NULL_LABEL,
53101 			(void*)&&ZEND_FETCH_DIM_R_SPEC_CV_CONST_LABEL,
53102 			(void*)&&ZEND_FETCH_DIM_R_SPEC_CV_TMPVAR_LABEL,
53103 			(void*)&&ZEND_FETCH_DIM_R_SPEC_CV_TMPVAR_LABEL,
53104 			(void*)&&ZEND_NULL_LABEL,
53105 			(void*)&&ZEND_FETCH_DIM_R_SPEC_CV_CV_LABEL,
53106 			(void*)&&ZEND_FETCH_OBJ_R_SPEC_CONST_CONST_LABEL,
53107 			(void*)&&ZEND_FETCH_OBJ_R_SPEC_CONST_TMPVAR_LABEL,
53108 			(void*)&&ZEND_FETCH_OBJ_R_SPEC_CONST_TMPVAR_LABEL,
53109 			(void*)&&ZEND_NULL_LABEL,
53110 			(void*)&&ZEND_FETCH_OBJ_R_SPEC_CONST_CV_LABEL,
53111 			(void*)&&ZEND_FETCH_OBJ_R_SPEC_TMPVAR_CONST_LABEL,
53112 			(void*)&&ZEND_FETCH_OBJ_R_SPEC_TMPVAR_TMPVAR_LABEL,
53113 			(void*)&&ZEND_FETCH_OBJ_R_SPEC_TMPVAR_TMPVAR_LABEL,
53114 			(void*)&&ZEND_NULL_LABEL,
53115 			(void*)&&ZEND_FETCH_OBJ_R_SPEC_TMPVAR_CV_LABEL,
53116 			(void*)&&ZEND_FETCH_OBJ_R_SPEC_TMPVAR_CONST_LABEL,
53117 			(void*)&&ZEND_FETCH_OBJ_R_SPEC_TMPVAR_TMPVAR_LABEL,
53118 			(void*)&&ZEND_FETCH_OBJ_R_SPEC_TMPVAR_TMPVAR_LABEL,
53119 			(void*)&&ZEND_NULL_LABEL,
53120 			(void*)&&ZEND_FETCH_OBJ_R_SPEC_TMPVAR_CV_LABEL,
53121 			(void*)&&ZEND_FETCH_OBJ_R_SPEC_UNUSED_CONST_LABEL,
53122 			(void*)&&ZEND_FETCH_OBJ_R_SPEC_UNUSED_TMPVAR_LABEL,
53123 			(void*)&&ZEND_FETCH_OBJ_R_SPEC_UNUSED_TMPVAR_LABEL,
53124 			(void*)&&ZEND_NULL_LABEL,
53125 			(void*)&&ZEND_FETCH_OBJ_R_SPEC_UNUSED_CV_LABEL,
53126 			(void*)&&ZEND_FETCH_OBJ_R_SPEC_CV_CONST_LABEL,
53127 			(void*)&&ZEND_FETCH_OBJ_R_SPEC_CV_TMPVAR_LABEL,
53128 			(void*)&&ZEND_FETCH_OBJ_R_SPEC_CV_TMPVAR_LABEL,
53129 			(void*)&&ZEND_NULL_LABEL,
53130 			(void*)&&ZEND_FETCH_OBJ_R_SPEC_CV_CV_LABEL,
53131 			(void*)&&ZEND_FETCH_W_SPEC_CONST_UNUSED_LABEL,
53132 			(void*)&&ZEND_FETCH_W_SPEC_TMPVAR_UNUSED_LABEL,
53133 			(void*)&&ZEND_FETCH_W_SPEC_TMPVAR_UNUSED_LABEL,
53134 			(void*)&&ZEND_NULL_LABEL,
53135 			(void*)&&ZEND_FETCH_W_SPEC_CV_UNUSED_LABEL,
53136 			(void*)&&ZEND_NULL_LABEL,
53137 			(void*)&&ZEND_NULL_LABEL,
53138 			(void*)&&ZEND_NULL_LABEL,
53139 			(void*)&&ZEND_NULL_LABEL,
53140 			(void*)&&ZEND_NULL_LABEL,
53141 			(void*)&&ZEND_NULL_LABEL,
53142 			(void*)&&ZEND_NULL_LABEL,
53143 			(void*)&&ZEND_NULL_LABEL,
53144 			(void*)&&ZEND_NULL_LABEL,
53145 			(void*)&&ZEND_NULL_LABEL,
53146 			(void*)&&ZEND_FETCH_DIM_W_SPEC_VAR_CONST_LABEL,
53147 			(void*)&&ZEND_FETCH_DIM_W_SPEC_VAR_TMPVAR_LABEL,
53148 			(void*)&&ZEND_FETCH_DIM_W_SPEC_VAR_TMPVAR_LABEL,
53149 			(void*)&&ZEND_FETCH_DIM_W_SPEC_VAR_UNUSED_LABEL,
53150 			(void*)&&ZEND_FETCH_DIM_W_SPEC_VAR_CV_LABEL,
53151 			(void*)&&ZEND_NULL_LABEL,
53152 			(void*)&&ZEND_NULL_LABEL,
53153 			(void*)&&ZEND_NULL_LABEL,
53154 			(void*)&&ZEND_NULL_LABEL,
53155 			(void*)&&ZEND_NULL_LABEL,
53156 			(void*)&&ZEND_FETCH_DIM_W_SPEC_CV_CONST_LABEL,
53157 			(void*)&&ZEND_FETCH_DIM_W_SPEC_CV_TMPVAR_LABEL,
53158 			(void*)&&ZEND_FETCH_DIM_W_SPEC_CV_TMPVAR_LABEL,
53159 			(void*)&&ZEND_FETCH_DIM_W_SPEC_CV_UNUSED_LABEL,
53160 			(void*)&&ZEND_FETCH_DIM_W_SPEC_CV_CV_LABEL,
53161 			(void*)&&ZEND_NULL_LABEL,
53162 			(void*)&&ZEND_NULL_LABEL,
53163 			(void*)&&ZEND_NULL_LABEL,
53164 			(void*)&&ZEND_NULL_LABEL,
53165 			(void*)&&ZEND_NULL_LABEL,
53166 			(void*)&&ZEND_NULL_LABEL,
53167 			(void*)&&ZEND_NULL_LABEL,
53168 			(void*)&&ZEND_NULL_LABEL,
53169 			(void*)&&ZEND_NULL_LABEL,
53170 			(void*)&&ZEND_NULL_LABEL,
53171 			(void*)&&ZEND_FETCH_OBJ_W_SPEC_VAR_CONST_LABEL,
53172 			(void*)&&ZEND_FETCH_OBJ_W_SPEC_VAR_TMPVAR_LABEL,
53173 			(void*)&&ZEND_FETCH_OBJ_W_SPEC_VAR_TMPVAR_LABEL,
53174 			(void*)&&ZEND_NULL_LABEL,
53175 			(void*)&&ZEND_FETCH_OBJ_W_SPEC_VAR_CV_LABEL,
53176 			(void*)&&ZEND_FETCH_OBJ_W_SPEC_UNUSED_CONST_LABEL,
53177 			(void*)&&ZEND_FETCH_OBJ_W_SPEC_UNUSED_TMPVAR_LABEL,
53178 			(void*)&&ZEND_FETCH_OBJ_W_SPEC_UNUSED_TMPVAR_LABEL,
53179 			(void*)&&ZEND_NULL_LABEL,
53180 			(void*)&&ZEND_FETCH_OBJ_W_SPEC_UNUSED_CV_LABEL,
53181 			(void*)&&ZEND_FETCH_OBJ_W_SPEC_CV_CONST_LABEL,
53182 			(void*)&&ZEND_FETCH_OBJ_W_SPEC_CV_TMPVAR_LABEL,
53183 			(void*)&&ZEND_FETCH_OBJ_W_SPEC_CV_TMPVAR_LABEL,
53184 			(void*)&&ZEND_NULL_LABEL,
53185 			(void*)&&ZEND_FETCH_OBJ_W_SPEC_CV_CV_LABEL,
53186 			(void*)&&ZEND_FETCH_RW_SPEC_CONST_UNUSED_LABEL,
53187 			(void*)&&ZEND_FETCH_RW_SPEC_TMPVAR_UNUSED_LABEL,
53188 			(void*)&&ZEND_FETCH_RW_SPEC_TMPVAR_UNUSED_LABEL,
53189 			(void*)&&ZEND_NULL_LABEL,
53190 			(void*)&&ZEND_FETCH_RW_SPEC_CV_UNUSED_LABEL,
53191 			(void*)&&ZEND_NULL_LABEL,
53192 			(void*)&&ZEND_NULL_LABEL,
53193 			(void*)&&ZEND_NULL_LABEL,
53194 			(void*)&&ZEND_NULL_LABEL,
53195 			(void*)&&ZEND_NULL_LABEL,
53196 			(void*)&&ZEND_NULL_LABEL,
53197 			(void*)&&ZEND_NULL_LABEL,
53198 			(void*)&&ZEND_NULL_LABEL,
53199 			(void*)&&ZEND_NULL_LABEL,
53200 			(void*)&&ZEND_NULL_LABEL,
53201 			(void*)&&ZEND_FETCH_DIM_RW_SPEC_VAR_CONST_LABEL,
53202 			(void*)&&ZEND_FETCH_DIM_RW_SPEC_VAR_TMPVAR_LABEL,
53203 			(void*)&&ZEND_FETCH_DIM_RW_SPEC_VAR_TMPVAR_LABEL,
53204 			(void*)&&ZEND_FETCH_DIM_RW_SPEC_VAR_UNUSED_LABEL,
53205 			(void*)&&ZEND_FETCH_DIM_RW_SPEC_VAR_CV_LABEL,
53206 			(void*)&&ZEND_NULL_LABEL,
53207 			(void*)&&ZEND_NULL_LABEL,
53208 			(void*)&&ZEND_NULL_LABEL,
53209 			(void*)&&ZEND_NULL_LABEL,
53210 			(void*)&&ZEND_NULL_LABEL,
53211 			(void*)&&ZEND_FETCH_DIM_RW_SPEC_CV_CONST_LABEL,
53212 			(void*)&&ZEND_FETCH_DIM_RW_SPEC_CV_TMPVAR_LABEL,
53213 			(void*)&&ZEND_FETCH_DIM_RW_SPEC_CV_TMPVAR_LABEL,
53214 			(void*)&&ZEND_FETCH_DIM_RW_SPEC_CV_UNUSED_LABEL,
53215 			(void*)&&ZEND_FETCH_DIM_RW_SPEC_CV_CV_LABEL,
53216 			(void*)&&ZEND_NULL_LABEL,
53217 			(void*)&&ZEND_NULL_LABEL,
53218 			(void*)&&ZEND_NULL_LABEL,
53219 			(void*)&&ZEND_NULL_LABEL,
53220 			(void*)&&ZEND_NULL_LABEL,
53221 			(void*)&&ZEND_NULL_LABEL,
53222 			(void*)&&ZEND_NULL_LABEL,
53223 			(void*)&&ZEND_NULL_LABEL,
53224 			(void*)&&ZEND_NULL_LABEL,
53225 			(void*)&&ZEND_NULL_LABEL,
53226 			(void*)&&ZEND_FETCH_OBJ_RW_SPEC_VAR_CONST_LABEL,
53227 			(void*)&&ZEND_FETCH_OBJ_RW_SPEC_VAR_TMPVAR_LABEL,
53228 			(void*)&&ZEND_FETCH_OBJ_RW_SPEC_VAR_TMPVAR_LABEL,
53229 			(void*)&&ZEND_NULL_LABEL,
53230 			(void*)&&ZEND_FETCH_OBJ_RW_SPEC_VAR_CV_LABEL,
53231 			(void*)&&ZEND_FETCH_OBJ_RW_SPEC_UNUSED_CONST_LABEL,
53232 			(void*)&&ZEND_FETCH_OBJ_RW_SPEC_UNUSED_TMPVAR_LABEL,
53233 			(void*)&&ZEND_FETCH_OBJ_RW_SPEC_UNUSED_TMPVAR_LABEL,
53234 			(void*)&&ZEND_NULL_LABEL,
53235 			(void*)&&ZEND_FETCH_OBJ_RW_SPEC_UNUSED_CV_LABEL,
53236 			(void*)&&ZEND_FETCH_OBJ_RW_SPEC_CV_CONST_LABEL,
53237 			(void*)&&ZEND_FETCH_OBJ_RW_SPEC_CV_TMPVAR_LABEL,
53238 			(void*)&&ZEND_FETCH_OBJ_RW_SPEC_CV_TMPVAR_LABEL,
53239 			(void*)&&ZEND_NULL_LABEL,
53240 			(void*)&&ZEND_FETCH_OBJ_RW_SPEC_CV_CV_LABEL,
53241 			(void*)&&ZEND_FETCH_IS_SPEC_CONST_UNUSED_LABEL,
53242 			(void*)&&ZEND_FETCH_IS_SPEC_TMPVAR_UNUSED_LABEL,
53243 			(void*)&&ZEND_FETCH_IS_SPEC_TMPVAR_UNUSED_LABEL,
53244 			(void*)&&ZEND_NULL_LABEL,
53245 			(void*)&&ZEND_FETCH_IS_SPEC_CV_UNUSED_LABEL,
53246 			(void*)&&ZEND_FETCH_DIM_IS_SPEC_CONST_CONST_LABEL,
53247 			(void*)&&ZEND_FETCH_DIM_IS_SPEC_CONST_TMPVAR_LABEL,
53248 			(void*)&&ZEND_FETCH_DIM_IS_SPEC_CONST_TMPVAR_LABEL,
53249 			(void*)&&ZEND_NULL_LABEL,
53250 			(void*)&&ZEND_FETCH_DIM_IS_SPEC_CONST_CV_LABEL,
53251 			(void*)&&ZEND_FETCH_DIM_IS_SPEC_TMPVAR_CONST_LABEL,
53252 			(void*)&&ZEND_FETCH_DIM_IS_SPEC_TMPVAR_TMPVAR_LABEL,
53253 			(void*)&&ZEND_FETCH_DIM_IS_SPEC_TMPVAR_TMPVAR_LABEL,
53254 			(void*)&&ZEND_NULL_LABEL,
53255 			(void*)&&ZEND_FETCH_DIM_IS_SPEC_TMPVAR_CV_LABEL,
53256 			(void*)&&ZEND_FETCH_DIM_IS_SPEC_TMPVAR_CONST_LABEL,
53257 			(void*)&&ZEND_FETCH_DIM_IS_SPEC_TMPVAR_TMPVAR_LABEL,
53258 			(void*)&&ZEND_FETCH_DIM_IS_SPEC_TMPVAR_TMPVAR_LABEL,
53259 			(void*)&&ZEND_NULL_LABEL,
53260 			(void*)&&ZEND_FETCH_DIM_IS_SPEC_TMPVAR_CV_LABEL,
53261 			(void*)&&ZEND_NULL_LABEL,
53262 			(void*)&&ZEND_NULL_LABEL,
53263 			(void*)&&ZEND_NULL_LABEL,
53264 			(void*)&&ZEND_NULL_LABEL,
53265 			(void*)&&ZEND_NULL_LABEL,
53266 			(void*)&&ZEND_FETCH_DIM_IS_SPEC_CV_CONST_LABEL,
53267 			(void*)&&ZEND_FETCH_DIM_IS_SPEC_CV_TMPVAR_LABEL,
53268 			(void*)&&ZEND_FETCH_DIM_IS_SPEC_CV_TMPVAR_LABEL,
53269 			(void*)&&ZEND_NULL_LABEL,
53270 			(void*)&&ZEND_FETCH_DIM_IS_SPEC_CV_CV_LABEL,
53271 			(void*)&&ZEND_FETCH_OBJ_IS_SPEC_CONST_CONST_LABEL,
53272 			(void*)&&ZEND_FETCH_OBJ_IS_SPEC_CONST_TMPVAR_LABEL,
53273 			(void*)&&ZEND_FETCH_OBJ_IS_SPEC_CONST_TMPVAR_LABEL,
53274 			(void*)&&ZEND_NULL_LABEL,
53275 			(void*)&&ZEND_FETCH_OBJ_IS_SPEC_CONST_CV_LABEL,
53276 			(void*)&&ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_CONST_LABEL,
53277 			(void*)&&ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_TMPVAR_LABEL,
53278 			(void*)&&ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_TMPVAR_LABEL,
53279 			(void*)&&ZEND_NULL_LABEL,
53280 			(void*)&&ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_CV_LABEL,
53281 			(void*)&&ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_CONST_LABEL,
53282 			(void*)&&ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_TMPVAR_LABEL,
53283 			(void*)&&ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_TMPVAR_LABEL,
53284 			(void*)&&ZEND_NULL_LABEL,
53285 			(void*)&&ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_CV_LABEL,
53286 			(void*)&&ZEND_FETCH_OBJ_IS_SPEC_UNUSED_CONST_LABEL,
53287 			(void*)&&ZEND_FETCH_OBJ_IS_SPEC_UNUSED_TMPVAR_LABEL,
53288 			(void*)&&ZEND_FETCH_OBJ_IS_SPEC_UNUSED_TMPVAR_LABEL,
53289 			(void*)&&ZEND_NULL_LABEL,
53290 			(void*)&&ZEND_FETCH_OBJ_IS_SPEC_UNUSED_CV_LABEL,
53291 			(void*)&&ZEND_FETCH_OBJ_IS_SPEC_CV_CONST_LABEL,
53292 			(void*)&&ZEND_FETCH_OBJ_IS_SPEC_CV_TMPVAR_LABEL,
53293 			(void*)&&ZEND_FETCH_OBJ_IS_SPEC_CV_TMPVAR_LABEL,
53294 			(void*)&&ZEND_NULL_LABEL,
53295 			(void*)&&ZEND_FETCH_OBJ_IS_SPEC_CV_CV_LABEL,
53296 			(void*)&&ZEND_FETCH_FUNC_ARG_SPEC_CONST_UNUSED_LABEL,
53297 			(void*)&&ZEND_FETCH_FUNC_ARG_SPEC_TMPVAR_UNUSED_LABEL,
53298 			(void*)&&ZEND_FETCH_FUNC_ARG_SPEC_TMPVAR_UNUSED_LABEL,
53299 			(void*)&&ZEND_NULL_LABEL,
53300 			(void*)&&ZEND_FETCH_FUNC_ARG_SPEC_CV_UNUSED_LABEL,
53301 			(void*)&&ZEND_FETCH_DIM_FUNC_ARG_SPEC_CONST_CONST_LABEL,
53302 			(void*)&&ZEND_FETCH_DIM_FUNC_ARG_SPEC_CONST_TMPVAR_LABEL,
53303 			(void*)&&ZEND_FETCH_DIM_FUNC_ARG_SPEC_CONST_TMPVAR_LABEL,
53304 			(void*)&&ZEND_FETCH_DIM_FUNC_ARG_SPEC_CONST_UNUSED_LABEL,
53305 			(void*)&&ZEND_FETCH_DIM_FUNC_ARG_SPEC_CONST_CV_LABEL,
53306 			(void*)&&ZEND_FETCH_DIM_FUNC_ARG_SPEC_TMP_CONST_LABEL,
53307 			(void*)&&ZEND_FETCH_DIM_FUNC_ARG_SPEC_TMP_TMPVAR_LABEL,
53308 			(void*)&&ZEND_FETCH_DIM_FUNC_ARG_SPEC_TMP_TMPVAR_LABEL,
53309 			(void*)&&ZEND_FETCH_DIM_FUNC_ARG_SPEC_TMP_UNUSED_LABEL,
53310 			(void*)&&ZEND_FETCH_DIM_FUNC_ARG_SPEC_TMP_CV_LABEL,
53311 			(void*)&&ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_CONST_LABEL,
53312 			(void*)&&ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_TMPVAR_LABEL,
53313 			(void*)&&ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_TMPVAR_LABEL,
53314 			(void*)&&ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_UNUSED_LABEL,
53315 			(void*)&&ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_CV_LABEL,
53316 			(void*)&&ZEND_NULL_LABEL,
53317 			(void*)&&ZEND_NULL_LABEL,
53318 			(void*)&&ZEND_NULL_LABEL,
53319 			(void*)&&ZEND_NULL_LABEL,
53320 			(void*)&&ZEND_NULL_LABEL,
53321 			(void*)&&ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_CONST_LABEL,
53322 			(void*)&&ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_TMPVAR_LABEL,
53323 			(void*)&&ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_TMPVAR_LABEL,
53324 			(void*)&&ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_UNUSED_LABEL,
53325 			(void*)&&ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_CV_LABEL,
53326 			(void*)&&ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CONST_CONST_LABEL,
53327 			(void*)&&ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CONST_TMPVAR_LABEL,
53328 			(void*)&&ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CONST_TMPVAR_LABEL,
53329 			(void*)&&ZEND_NULL_LABEL,
53330 			(void*)&&ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CONST_CV_LABEL,
53331 			(void*)&&ZEND_FETCH_OBJ_FUNC_ARG_SPEC_TMP_CONST_LABEL,
53332 			(void*)&&ZEND_FETCH_OBJ_FUNC_ARG_SPEC_TMP_TMPVAR_LABEL,
53333 			(void*)&&ZEND_FETCH_OBJ_FUNC_ARG_SPEC_TMP_TMPVAR_LABEL,
53334 			(void*)&&ZEND_NULL_LABEL,
53335 			(void*)&&ZEND_FETCH_OBJ_FUNC_ARG_SPEC_TMP_CV_LABEL,
53336 			(void*)&&ZEND_FETCH_OBJ_FUNC_ARG_SPEC_VAR_CONST_LABEL,
53337 			(void*)&&ZEND_FETCH_OBJ_FUNC_ARG_SPEC_VAR_TMPVAR_LABEL,
53338 			(void*)&&ZEND_FETCH_OBJ_FUNC_ARG_SPEC_VAR_TMPVAR_LABEL,
53339 			(void*)&&ZEND_NULL_LABEL,
53340 			(void*)&&ZEND_FETCH_OBJ_FUNC_ARG_SPEC_VAR_CV_LABEL,
53341 			(void*)&&ZEND_FETCH_OBJ_FUNC_ARG_SPEC_UNUSED_CONST_LABEL,
53342 			(void*)&&ZEND_FETCH_OBJ_FUNC_ARG_SPEC_UNUSED_TMPVAR_LABEL,
53343 			(void*)&&ZEND_FETCH_OBJ_FUNC_ARG_SPEC_UNUSED_TMPVAR_LABEL,
53344 			(void*)&&ZEND_NULL_LABEL,
53345 			(void*)&&ZEND_FETCH_OBJ_FUNC_ARG_SPEC_UNUSED_CV_LABEL,
53346 			(void*)&&ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CV_CONST_LABEL,
53347 			(void*)&&ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CV_TMPVAR_LABEL,
53348 			(void*)&&ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CV_TMPVAR_LABEL,
53349 			(void*)&&ZEND_NULL_LABEL,
53350 			(void*)&&ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CV_CV_LABEL,
53351 			(void*)&&ZEND_FETCH_UNSET_SPEC_CONST_UNUSED_LABEL,
53352 			(void*)&&ZEND_FETCH_UNSET_SPEC_TMPVAR_UNUSED_LABEL,
53353 			(void*)&&ZEND_FETCH_UNSET_SPEC_TMPVAR_UNUSED_LABEL,
53354 			(void*)&&ZEND_NULL_LABEL,
53355 			(void*)&&ZEND_FETCH_UNSET_SPEC_CV_UNUSED_LABEL,
53356 			(void*)&&ZEND_NULL_LABEL,
53357 			(void*)&&ZEND_NULL_LABEL,
53358 			(void*)&&ZEND_NULL_LABEL,
53359 			(void*)&&ZEND_NULL_LABEL,
53360 			(void*)&&ZEND_NULL_LABEL,
53361 			(void*)&&ZEND_NULL_LABEL,
53362 			(void*)&&ZEND_NULL_LABEL,
53363 			(void*)&&ZEND_NULL_LABEL,
53364 			(void*)&&ZEND_NULL_LABEL,
53365 			(void*)&&ZEND_NULL_LABEL,
53366 			(void*)&&ZEND_FETCH_DIM_UNSET_SPEC_VAR_CONST_LABEL,
53367 			(void*)&&ZEND_FETCH_DIM_UNSET_SPEC_VAR_TMPVAR_LABEL,
53368 			(void*)&&ZEND_FETCH_DIM_UNSET_SPEC_VAR_TMPVAR_LABEL,
53369 			(void*)&&ZEND_NULL_LABEL,
53370 			(void*)&&ZEND_FETCH_DIM_UNSET_SPEC_VAR_CV_LABEL,
53371 			(void*)&&ZEND_NULL_LABEL,
53372 			(void*)&&ZEND_NULL_LABEL,
53373 			(void*)&&ZEND_NULL_LABEL,
53374 			(void*)&&ZEND_NULL_LABEL,
53375 			(void*)&&ZEND_NULL_LABEL,
53376 			(void*)&&ZEND_FETCH_DIM_UNSET_SPEC_CV_CONST_LABEL,
53377 			(void*)&&ZEND_FETCH_DIM_UNSET_SPEC_CV_TMPVAR_LABEL,
53378 			(void*)&&ZEND_FETCH_DIM_UNSET_SPEC_CV_TMPVAR_LABEL,
53379 			(void*)&&ZEND_NULL_LABEL,
53380 			(void*)&&ZEND_FETCH_DIM_UNSET_SPEC_CV_CV_LABEL,
53381 			(void*)&&ZEND_NULL_LABEL,
53382 			(void*)&&ZEND_NULL_LABEL,
53383 			(void*)&&ZEND_NULL_LABEL,
53384 			(void*)&&ZEND_NULL_LABEL,
53385 			(void*)&&ZEND_NULL_LABEL,
53386 			(void*)&&ZEND_NULL_LABEL,
53387 			(void*)&&ZEND_NULL_LABEL,
53388 			(void*)&&ZEND_NULL_LABEL,
53389 			(void*)&&ZEND_NULL_LABEL,
53390 			(void*)&&ZEND_NULL_LABEL,
53391 			(void*)&&ZEND_FETCH_OBJ_UNSET_SPEC_VAR_CONST_LABEL,
53392 			(void*)&&ZEND_FETCH_OBJ_UNSET_SPEC_VAR_TMPVAR_LABEL,
53393 			(void*)&&ZEND_FETCH_OBJ_UNSET_SPEC_VAR_TMPVAR_LABEL,
53394 			(void*)&&ZEND_NULL_LABEL,
53395 			(void*)&&ZEND_FETCH_OBJ_UNSET_SPEC_VAR_CV_LABEL,
53396 			(void*)&&ZEND_FETCH_OBJ_UNSET_SPEC_UNUSED_CONST_LABEL,
53397 			(void*)&&ZEND_FETCH_OBJ_UNSET_SPEC_UNUSED_TMPVAR_LABEL,
53398 			(void*)&&ZEND_FETCH_OBJ_UNSET_SPEC_UNUSED_TMPVAR_LABEL,
53399 			(void*)&&ZEND_NULL_LABEL,
53400 			(void*)&&ZEND_FETCH_OBJ_UNSET_SPEC_UNUSED_CV_LABEL,
53401 			(void*)&&ZEND_FETCH_OBJ_UNSET_SPEC_CV_CONST_LABEL,
53402 			(void*)&&ZEND_FETCH_OBJ_UNSET_SPEC_CV_TMPVAR_LABEL,
53403 			(void*)&&ZEND_FETCH_OBJ_UNSET_SPEC_CV_TMPVAR_LABEL,
53404 			(void*)&&ZEND_NULL_LABEL,
53405 			(void*)&&ZEND_FETCH_OBJ_UNSET_SPEC_CV_CV_LABEL,
53406 			(void*)&&ZEND_FETCH_LIST_R_SPEC_CONST_CONST_LABEL,
53407 			(void*)&&ZEND_FETCH_LIST_R_SPEC_CONST_TMPVAR_LABEL,
53408 			(void*)&&ZEND_FETCH_LIST_R_SPEC_CONST_TMPVAR_LABEL,
53409 			(void*)&&ZEND_NULL_LABEL,
53410 			(void*)&&ZEND_FETCH_LIST_R_SPEC_CONST_CV_LABEL,
53411 			(void*)&&ZEND_FETCH_LIST_R_SPEC_TMPVARCV_CONST_LABEL,
53412 			(void*)&&ZEND_FETCH_LIST_R_SPEC_TMPVARCV_TMPVAR_LABEL,
53413 			(void*)&&ZEND_FETCH_LIST_R_SPEC_TMPVARCV_TMPVAR_LABEL,
53414 			(void*)&&ZEND_NULL_LABEL,
53415 			(void*)&&ZEND_FETCH_LIST_R_SPEC_TMPVARCV_CV_LABEL,
53416 			(void*)&&ZEND_FETCH_LIST_R_SPEC_TMPVARCV_CONST_LABEL,
53417 			(void*)&&ZEND_FETCH_LIST_R_SPEC_TMPVARCV_TMPVAR_LABEL,
53418 			(void*)&&ZEND_FETCH_LIST_R_SPEC_TMPVARCV_TMPVAR_LABEL,
53419 			(void*)&&ZEND_NULL_LABEL,
53420 			(void*)&&ZEND_FETCH_LIST_R_SPEC_TMPVARCV_CV_LABEL,
53421 			(void*)&&ZEND_NULL_LABEL,
53422 			(void*)&&ZEND_NULL_LABEL,
53423 			(void*)&&ZEND_NULL_LABEL,
53424 			(void*)&&ZEND_NULL_LABEL,
53425 			(void*)&&ZEND_NULL_LABEL,
53426 			(void*)&&ZEND_FETCH_LIST_R_SPEC_TMPVARCV_CONST_LABEL,
53427 			(void*)&&ZEND_FETCH_LIST_R_SPEC_TMPVARCV_TMPVAR_LABEL,
53428 			(void*)&&ZEND_FETCH_LIST_R_SPEC_TMPVARCV_TMPVAR_LABEL,
53429 			(void*)&&ZEND_NULL_LABEL,
53430 			(void*)&&ZEND_FETCH_LIST_R_SPEC_TMPVARCV_CV_LABEL,
53431 			(void*)&&ZEND_FETCH_CONSTANT_SPEC_UNUSED_CONST_LABEL,
53432 			(void*)&&ZEND_CHECK_FUNC_ARG_SPEC_UNUSED_LABEL,
53433 			(void*)&&ZEND_CHECK_FUNC_ARG_SPEC_UNUSED_QUICK_LABEL,
53434 			(void*)&&ZEND_EXT_STMT_SPEC_LABEL,
53435 			(void*)&&ZEND_EXT_FCALL_BEGIN_SPEC_LABEL,
53436 			(void*)&&ZEND_EXT_FCALL_END_SPEC_LABEL,
53437 			(void*)&&ZEND_EXT_NOP_SPEC_LABEL,
53438 			(void*)&&ZEND_TICKS_SPEC_LABEL,
53439 			(void*)&&ZEND_SEND_VAR_NO_REF_SPEC_VAR_LABEL,
53440 			(void*)&&ZEND_CATCH_SPEC_CONST_LABEL,
53441 			(void*)&&ZEND_THROW_SPEC_CONST_LABEL,
53442 			(void*)&&ZEND_THROW_SPEC_TMP_LABEL,
53443 			(void*)&&ZEND_THROW_SPEC_VAR_LABEL,
53444 			(void*)&&ZEND_NULL_LABEL,
53445 			(void*)&&ZEND_THROW_SPEC_CV_LABEL,
53446 			(void*)&&ZEND_FETCH_CLASS_SPEC_UNUSED_CONST_LABEL,
53447 			(void*)&&ZEND_FETCH_CLASS_SPEC_UNUSED_TMPVAR_LABEL,
53448 			(void*)&&ZEND_FETCH_CLASS_SPEC_UNUSED_TMPVAR_LABEL,
53449 			(void*)&&ZEND_FETCH_CLASS_SPEC_UNUSED_UNUSED_LABEL,
53450 			(void*)&&ZEND_FETCH_CLASS_SPEC_UNUSED_CV_LABEL,
53451 			(void*)&&ZEND_CLONE_SPEC_CONST_LABEL,
53452 			(void*)&&ZEND_CLONE_SPEC_TMPVAR_LABEL,
53453 			(void*)&&ZEND_CLONE_SPEC_TMPVAR_LABEL,
53454 			(void*)&&ZEND_CLONE_SPEC_UNUSED_LABEL,
53455 			(void*)&&ZEND_CLONE_SPEC_CV_LABEL,
53456 			(void*)&&ZEND_RETURN_BY_REF_SPEC_CONST_LABEL,
53457 			(void*)&&ZEND_RETURN_BY_REF_SPEC_TMP_LABEL,
53458 			(void*)&&ZEND_RETURN_BY_REF_SPEC_VAR_LABEL,
53459 			(void*)&&ZEND_NULL_LABEL,
53460 			(void*)&&ZEND_RETURN_BY_REF_SPEC_CV_LABEL,
53461 			(void*)&&ZEND_INIT_METHOD_CALL_SPEC_CONST_CONST_LABEL,
53462 			(void*)&&ZEND_INIT_METHOD_CALL_SPEC_CONST_TMPVAR_LABEL,
53463 			(void*)&&ZEND_INIT_METHOD_CALL_SPEC_CONST_TMPVAR_LABEL,
53464 			(void*)&&ZEND_NULL_LABEL,
53465 			(void*)&&ZEND_INIT_METHOD_CALL_SPEC_CONST_CV_LABEL,
53466 			(void*)&&ZEND_INIT_METHOD_CALL_SPEC_TMPVAR_CONST_LABEL,
53467 			(void*)&&ZEND_INIT_METHOD_CALL_SPEC_TMPVAR_TMPVAR_LABEL,
53468 			(void*)&&ZEND_INIT_METHOD_CALL_SPEC_TMPVAR_TMPVAR_LABEL,
53469 			(void*)&&ZEND_NULL_LABEL,
53470 			(void*)&&ZEND_INIT_METHOD_CALL_SPEC_TMPVAR_CV_LABEL,
53471 			(void*)&&ZEND_INIT_METHOD_CALL_SPEC_TMPVAR_CONST_LABEL,
53472 			(void*)&&ZEND_INIT_METHOD_CALL_SPEC_TMPVAR_TMPVAR_LABEL,
53473 			(void*)&&ZEND_INIT_METHOD_CALL_SPEC_TMPVAR_TMPVAR_LABEL,
53474 			(void*)&&ZEND_NULL_LABEL,
53475 			(void*)&&ZEND_INIT_METHOD_CALL_SPEC_TMPVAR_CV_LABEL,
53476 			(void*)&&ZEND_INIT_METHOD_CALL_SPEC_UNUSED_CONST_LABEL,
53477 			(void*)&&ZEND_INIT_METHOD_CALL_SPEC_UNUSED_TMPVAR_LABEL,
53478 			(void*)&&ZEND_INIT_METHOD_CALL_SPEC_UNUSED_TMPVAR_LABEL,
53479 			(void*)&&ZEND_NULL_LABEL,
53480 			(void*)&&ZEND_INIT_METHOD_CALL_SPEC_UNUSED_CV_LABEL,
53481 			(void*)&&ZEND_INIT_METHOD_CALL_SPEC_CV_CONST_LABEL,
53482 			(void*)&&ZEND_INIT_METHOD_CALL_SPEC_CV_TMPVAR_LABEL,
53483 			(void*)&&ZEND_INIT_METHOD_CALL_SPEC_CV_TMPVAR_LABEL,
53484 			(void*)&&ZEND_NULL_LABEL,
53485 			(void*)&&ZEND_INIT_METHOD_CALL_SPEC_CV_CV_LABEL,
53486 			(void*)&&ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_CONST_LABEL,
53487 			(void*)&&ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_TMPVAR_LABEL,
53488 			(void*)&&ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_TMPVAR_LABEL,
53489 			(void*)&&ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_UNUSED_LABEL,
53490 			(void*)&&ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_CV_LABEL,
53491 			(void*)&&ZEND_NULL_LABEL,
53492 			(void*)&&ZEND_NULL_LABEL,
53493 			(void*)&&ZEND_NULL_LABEL,
53494 			(void*)&&ZEND_NULL_LABEL,
53495 			(void*)&&ZEND_NULL_LABEL,
53496 			(void*)&&ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_CONST_LABEL,
53497 			(void*)&&ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_TMPVAR_LABEL,
53498 			(void*)&&ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_TMPVAR_LABEL,
53499 			(void*)&&ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_UNUSED_LABEL,
53500 			(void*)&&ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_CV_LABEL,
53501 			(void*)&&ZEND_INIT_STATIC_METHOD_CALL_SPEC_UNUSED_CONST_LABEL,
53502 			(void*)&&ZEND_INIT_STATIC_METHOD_CALL_SPEC_UNUSED_TMPVAR_LABEL,
53503 			(void*)&&ZEND_INIT_STATIC_METHOD_CALL_SPEC_UNUSED_TMPVAR_LABEL,
53504 			(void*)&&ZEND_INIT_STATIC_METHOD_CALL_SPEC_UNUSED_UNUSED_LABEL,
53505 			(void*)&&ZEND_INIT_STATIC_METHOD_CALL_SPEC_UNUSED_CV_LABEL,
53506 			(void*)&&ZEND_NULL_LABEL,
53507 			(void*)&&ZEND_NULL_LABEL,
53508 			(void*)&&ZEND_NULL_LABEL,
53509 			(void*)&&ZEND_NULL_LABEL,
53510 			(void*)&&ZEND_NULL_LABEL,
53511 			(void*)&&ZEND_ISSET_ISEMPTY_VAR_SPEC_CONST_UNUSED_LABEL,
53512 			(void*)&&ZEND_ISSET_ISEMPTY_VAR_SPEC_TMPVAR_UNUSED_LABEL,
53513 			(void*)&&ZEND_ISSET_ISEMPTY_VAR_SPEC_TMPVAR_UNUSED_LABEL,
53514 			(void*)&&ZEND_NULL_LABEL,
53515 			(void*)&&ZEND_ISSET_ISEMPTY_VAR_SPEC_CV_UNUSED_LABEL,
53516 			(void*)&&ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CONST_CONST_LABEL,
53517 			(void*)&&ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CONST_TMPVAR_LABEL,
53518 			(void*)&&ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CONST_TMPVAR_LABEL,
53519 			(void*)&&ZEND_NULL_LABEL,
53520 			(void*)&&ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CONST_CV_LABEL,
53521 			(void*)&&ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_TMPVAR_CONST_LABEL,
53522 			(void*)&&ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_TMPVAR_TMPVAR_LABEL,
53523 			(void*)&&ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_TMPVAR_TMPVAR_LABEL,
53524 			(void*)&&ZEND_NULL_LABEL,
53525 			(void*)&&ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_TMPVAR_CV_LABEL,
53526 			(void*)&&ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_TMPVAR_CONST_LABEL,
53527 			(void*)&&ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_TMPVAR_TMPVAR_LABEL,
53528 			(void*)&&ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_TMPVAR_TMPVAR_LABEL,
53529 			(void*)&&ZEND_NULL_LABEL,
53530 			(void*)&&ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_TMPVAR_CV_LABEL,
53531 			(void*)&&ZEND_NULL_LABEL,
53532 			(void*)&&ZEND_NULL_LABEL,
53533 			(void*)&&ZEND_NULL_LABEL,
53534 			(void*)&&ZEND_NULL_LABEL,
53535 			(void*)&&ZEND_NULL_LABEL,
53536 			(void*)&&ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CV_CONST_LABEL,
53537 			(void*)&&ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CV_TMPVAR_LABEL,
53538 			(void*)&&ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CV_TMPVAR_LABEL,
53539 			(void*)&&ZEND_NULL_LABEL,
53540 			(void*)&&ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CV_CV_LABEL,
53541 			(void*)&&ZEND_SEND_VAL_EX_SPEC_CONST_LABEL,
53542 			(void*)&&ZEND_SEND_VAL_EX_SPEC_CONST_QUICK_LABEL,
53543 			(void*)&&ZEND_SEND_VAL_EX_SPEC_TMP_LABEL,
53544 			(void*)&&ZEND_SEND_VAL_EX_SPEC_TMP_QUICK_LABEL,
53545 			(void*)&&ZEND_NULL_LABEL,
53546 			(void*)&&ZEND_NULL_LABEL,
53547 			(void*)&&ZEND_NULL_LABEL,
53548 			(void*)&&ZEND_NULL_LABEL,
53549 			(void*)&&ZEND_NULL_LABEL,
53550 			(void*)&&ZEND_NULL_LABEL,
53551 			(void*)&&ZEND_NULL_LABEL,
53552 			(void*)&&ZEND_NULL_LABEL,
53553 			(void*)&&ZEND_SEND_VAR_SPEC_VAR_LABEL,
53554 			(void*)&&ZEND_NULL_LABEL,
53555 			(void*)&&ZEND_SEND_VAR_SPEC_CV_LABEL,
53556 			(void*)&&ZEND_INIT_USER_CALL_SPEC_CONST_CONST_LABEL,
53557 			(void*)&&ZEND_INIT_USER_CALL_SPEC_CONST_TMPVAR_LABEL,
53558 			(void*)&&ZEND_INIT_USER_CALL_SPEC_CONST_TMPVAR_LABEL,
53559 			(void*)&&ZEND_NULL_LABEL,
53560 			(void*)&&ZEND_INIT_USER_CALL_SPEC_CONST_CV_LABEL,
53561 			(void*)&&ZEND_SEND_ARRAY_SPEC_LABEL,
53562 			(void*)&&ZEND_SEND_USER_SPEC_CONST_LABEL,
53563 			(void*)&&ZEND_SEND_USER_SPEC_TMP_LABEL,
53564 			(void*)&&ZEND_SEND_USER_SPEC_VAR_LABEL,
53565 			(void*)&&ZEND_NULL_LABEL,
53566 			(void*)&&ZEND_SEND_USER_SPEC_CV_LABEL,
53567 			(void*)&&ZEND_STRLEN_SPEC_CONST_LABEL,
53568 			(void*)&&ZEND_STRLEN_SPEC_TMPVAR_LABEL,
53569 			(void*)&&ZEND_STRLEN_SPEC_TMPVAR_LABEL,
53570 			(void*)&&ZEND_NULL_LABEL,
53571 			(void*)&&ZEND_STRLEN_SPEC_CV_LABEL,
53572 			(void*)&&ZEND_DEFINED_SPEC_CONST_LABEL,
53573 			(void*)&&ZEND_TYPE_CHECK_SPEC_CONST_LABEL,
53574 			(void*)&&ZEND_TYPE_CHECK_SPEC_TMPVAR_LABEL,
53575 			(void*)&&ZEND_TYPE_CHECK_SPEC_TMPVAR_LABEL,
53576 			(void*)&&ZEND_NULL_LABEL,
53577 			(void*)&&ZEND_TYPE_CHECK_SPEC_CV_LABEL,
53578 			(void*)&&ZEND_VERIFY_RETURN_TYPE_SPEC_CONST_UNUSED_LABEL,
53579 			(void*)&&ZEND_VERIFY_RETURN_TYPE_SPEC_TMP_UNUSED_LABEL,
53580 			(void*)&&ZEND_VERIFY_RETURN_TYPE_SPEC_VAR_UNUSED_LABEL,
53581 			(void*)&&ZEND_VERIFY_RETURN_TYPE_SPEC_UNUSED_UNUSED_LABEL,
53582 			(void*)&&ZEND_VERIFY_RETURN_TYPE_SPEC_CV_UNUSED_LABEL,
53583 			(void*)&&ZEND_FE_RESET_RW_SPEC_CONST_LABEL,
53584 			(void*)&&ZEND_FE_RESET_RW_SPEC_TMP_LABEL,
53585 			(void*)&&ZEND_FE_RESET_RW_SPEC_VAR_LABEL,
53586 			(void*)&&ZEND_NULL_LABEL,
53587 			(void*)&&ZEND_FE_RESET_RW_SPEC_CV_LABEL,
53588 			(void*)&&ZEND_FE_FETCH_RW_SPEC_VAR_LABEL,
53589 			(void*)&&ZEND_FE_FREE_SPEC_TMPVAR_LABEL,
53590 			(void*)&&ZEND_INIT_DYNAMIC_CALL_SPEC_CONST_LABEL,
53591 			(void*)&&ZEND_INIT_DYNAMIC_CALL_SPEC_TMPVAR_LABEL,
53592 			(void*)&&ZEND_INIT_DYNAMIC_CALL_SPEC_TMPVAR_LABEL,
53593 			(void*)&&ZEND_NULL_LABEL,
53594 			(void*)&&ZEND_INIT_DYNAMIC_CALL_SPEC_CV_LABEL,
53595 			(void*)&&ZEND_DO_ICALL_SPEC_RETVAL_UNUSED_LABEL,
53596 			(void*)&&ZEND_DO_ICALL_SPEC_RETVAL_USED_LABEL,
53597 			(void*)&&ZEND_DO_UCALL_SPEC_RETVAL_UNUSED_LABEL,
53598 			(void*)&&ZEND_DO_UCALL_SPEC_RETVAL_USED_LABEL,
53599 			(void*)&&ZEND_DO_FCALL_BY_NAME_SPEC_RETVAL_UNUSED_LABEL,
53600 			(void*)&&ZEND_DO_FCALL_BY_NAME_SPEC_RETVAL_USED_LABEL,
53601 			(void*)&&ZEND_NULL_LABEL,
53602 			(void*)&&ZEND_NULL_LABEL,
53603 			(void*)&&ZEND_NULL_LABEL,
53604 			(void*)&&ZEND_NULL_LABEL,
53605 			(void*)&&ZEND_NULL_LABEL,
53606 			(void*)&&ZEND_NULL_LABEL,
53607 			(void*)&&ZEND_NULL_LABEL,
53608 			(void*)&&ZEND_NULL_LABEL,
53609 			(void*)&&ZEND_NULL_LABEL,
53610 			(void*)&&ZEND_NULL_LABEL,
53611 			(void*)&&ZEND_PRE_INC_OBJ_SPEC_VAR_CONST_LABEL,
53612 			(void*)&&ZEND_PRE_INC_OBJ_SPEC_VAR_TMPVAR_LABEL,
53613 			(void*)&&ZEND_PRE_INC_OBJ_SPEC_VAR_TMPVAR_LABEL,
53614 			(void*)&&ZEND_NULL_LABEL,
53615 			(void*)&&ZEND_PRE_INC_OBJ_SPEC_VAR_CV_LABEL,
53616 			(void*)&&ZEND_PRE_INC_OBJ_SPEC_UNUSED_CONST_LABEL,
53617 			(void*)&&ZEND_PRE_INC_OBJ_SPEC_UNUSED_TMPVAR_LABEL,
53618 			(void*)&&ZEND_PRE_INC_OBJ_SPEC_UNUSED_TMPVAR_LABEL,
53619 			(void*)&&ZEND_NULL_LABEL,
53620 			(void*)&&ZEND_PRE_INC_OBJ_SPEC_UNUSED_CV_LABEL,
53621 			(void*)&&ZEND_PRE_INC_OBJ_SPEC_CV_CONST_LABEL,
53622 			(void*)&&ZEND_PRE_INC_OBJ_SPEC_CV_TMPVAR_LABEL,
53623 			(void*)&&ZEND_PRE_INC_OBJ_SPEC_CV_TMPVAR_LABEL,
53624 			(void*)&&ZEND_NULL_LABEL,
53625 			(void*)&&ZEND_PRE_INC_OBJ_SPEC_CV_CV_LABEL,
53626 			(void*)&&ZEND_NULL_LABEL,
53627 			(void*)&&ZEND_NULL_LABEL,
53628 			(void*)&&ZEND_NULL_LABEL,
53629 			(void*)&&ZEND_NULL_LABEL,
53630 			(void*)&&ZEND_NULL_LABEL,
53631 			(void*)&&ZEND_NULL_LABEL,
53632 			(void*)&&ZEND_NULL_LABEL,
53633 			(void*)&&ZEND_NULL_LABEL,
53634 			(void*)&&ZEND_NULL_LABEL,
53635 			(void*)&&ZEND_NULL_LABEL,
53636 			(void*)&&ZEND_PRE_DEC_OBJ_SPEC_VAR_CONST_LABEL,
53637 			(void*)&&ZEND_PRE_DEC_OBJ_SPEC_VAR_TMPVAR_LABEL,
53638 			(void*)&&ZEND_PRE_DEC_OBJ_SPEC_VAR_TMPVAR_LABEL,
53639 			(void*)&&ZEND_NULL_LABEL,
53640 			(void*)&&ZEND_PRE_DEC_OBJ_SPEC_VAR_CV_LABEL,
53641 			(void*)&&ZEND_PRE_DEC_OBJ_SPEC_UNUSED_CONST_LABEL,
53642 			(void*)&&ZEND_PRE_DEC_OBJ_SPEC_UNUSED_TMPVAR_LABEL,
53643 			(void*)&&ZEND_PRE_DEC_OBJ_SPEC_UNUSED_TMPVAR_LABEL,
53644 			(void*)&&ZEND_NULL_LABEL,
53645 			(void*)&&ZEND_PRE_DEC_OBJ_SPEC_UNUSED_CV_LABEL,
53646 			(void*)&&ZEND_PRE_DEC_OBJ_SPEC_CV_CONST_LABEL,
53647 			(void*)&&ZEND_PRE_DEC_OBJ_SPEC_CV_TMPVAR_LABEL,
53648 			(void*)&&ZEND_PRE_DEC_OBJ_SPEC_CV_TMPVAR_LABEL,
53649 			(void*)&&ZEND_NULL_LABEL,
53650 			(void*)&&ZEND_PRE_DEC_OBJ_SPEC_CV_CV_LABEL,
53651 			(void*)&&ZEND_NULL_LABEL,
53652 			(void*)&&ZEND_NULL_LABEL,
53653 			(void*)&&ZEND_NULL_LABEL,
53654 			(void*)&&ZEND_NULL_LABEL,
53655 			(void*)&&ZEND_NULL_LABEL,
53656 			(void*)&&ZEND_NULL_LABEL,
53657 			(void*)&&ZEND_NULL_LABEL,
53658 			(void*)&&ZEND_NULL_LABEL,
53659 			(void*)&&ZEND_NULL_LABEL,
53660 			(void*)&&ZEND_NULL_LABEL,
53661 			(void*)&&ZEND_POST_INC_OBJ_SPEC_VAR_CONST_LABEL,
53662 			(void*)&&ZEND_POST_INC_OBJ_SPEC_VAR_TMPVAR_LABEL,
53663 			(void*)&&ZEND_POST_INC_OBJ_SPEC_VAR_TMPVAR_LABEL,
53664 			(void*)&&ZEND_NULL_LABEL,
53665 			(void*)&&ZEND_POST_INC_OBJ_SPEC_VAR_CV_LABEL,
53666 			(void*)&&ZEND_POST_INC_OBJ_SPEC_UNUSED_CONST_LABEL,
53667 			(void*)&&ZEND_POST_INC_OBJ_SPEC_UNUSED_TMPVAR_LABEL,
53668 			(void*)&&ZEND_POST_INC_OBJ_SPEC_UNUSED_TMPVAR_LABEL,
53669 			(void*)&&ZEND_NULL_LABEL,
53670 			(void*)&&ZEND_POST_INC_OBJ_SPEC_UNUSED_CV_LABEL,
53671 			(void*)&&ZEND_POST_INC_OBJ_SPEC_CV_CONST_LABEL,
53672 			(void*)&&ZEND_POST_INC_OBJ_SPEC_CV_TMPVAR_LABEL,
53673 			(void*)&&ZEND_POST_INC_OBJ_SPEC_CV_TMPVAR_LABEL,
53674 			(void*)&&ZEND_NULL_LABEL,
53675 			(void*)&&ZEND_POST_INC_OBJ_SPEC_CV_CV_LABEL,
53676 			(void*)&&ZEND_NULL_LABEL,
53677 			(void*)&&ZEND_NULL_LABEL,
53678 			(void*)&&ZEND_NULL_LABEL,
53679 			(void*)&&ZEND_NULL_LABEL,
53680 			(void*)&&ZEND_NULL_LABEL,
53681 			(void*)&&ZEND_NULL_LABEL,
53682 			(void*)&&ZEND_NULL_LABEL,
53683 			(void*)&&ZEND_NULL_LABEL,
53684 			(void*)&&ZEND_NULL_LABEL,
53685 			(void*)&&ZEND_NULL_LABEL,
53686 			(void*)&&ZEND_POST_DEC_OBJ_SPEC_VAR_CONST_LABEL,
53687 			(void*)&&ZEND_POST_DEC_OBJ_SPEC_VAR_TMPVAR_LABEL,
53688 			(void*)&&ZEND_POST_DEC_OBJ_SPEC_VAR_TMPVAR_LABEL,
53689 			(void*)&&ZEND_NULL_LABEL,
53690 			(void*)&&ZEND_POST_DEC_OBJ_SPEC_VAR_CV_LABEL,
53691 			(void*)&&ZEND_POST_DEC_OBJ_SPEC_UNUSED_CONST_LABEL,
53692 			(void*)&&ZEND_POST_DEC_OBJ_SPEC_UNUSED_TMPVAR_LABEL,
53693 			(void*)&&ZEND_POST_DEC_OBJ_SPEC_UNUSED_TMPVAR_LABEL,
53694 			(void*)&&ZEND_NULL_LABEL,
53695 			(void*)&&ZEND_POST_DEC_OBJ_SPEC_UNUSED_CV_LABEL,
53696 			(void*)&&ZEND_POST_DEC_OBJ_SPEC_CV_CONST_LABEL,
53697 			(void*)&&ZEND_POST_DEC_OBJ_SPEC_CV_TMPVAR_LABEL,
53698 			(void*)&&ZEND_POST_DEC_OBJ_SPEC_CV_TMPVAR_LABEL,
53699 			(void*)&&ZEND_NULL_LABEL,
53700 			(void*)&&ZEND_POST_DEC_OBJ_SPEC_CV_CV_LABEL,
53701 			(void*)&&ZEND_NULL_LABEL,
53702 			(void*)&&ZEND_NULL_LABEL,
53703 			(void*)&&ZEND_NULL_LABEL,
53704 			(void*)&&ZEND_NULL_LABEL,
53705 			(void*)&&ZEND_NULL_LABEL,
53706 			(void*)&&ZEND_NULL_LABEL,
53707 			(void*)&&ZEND_NULL_LABEL,
53708 			(void*)&&ZEND_NULL_LABEL,
53709 			(void*)&&ZEND_NULL_LABEL,
53710 			(void*)&&ZEND_NULL_LABEL,
53711 			(void*)&&ZEND_NULL_LABEL,
53712 			(void*)&&ZEND_NULL_LABEL,
53713 			(void*)&&ZEND_NULL_LABEL,
53714 			(void*)&&ZEND_NULL_LABEL,
53715 			(void*)&&ZEND_NULL_LABEL,
53716 			(void*)&&ZEND_NULL_LABEL,
53717 			(void*)&&ZEND_NULL_LABEL,
53718 			(void*)&&ZEND_NULL_LABEL,
53719 			(void*)&&ZEND_NULL_LABEL,
53720 			(void*)&&ZEND_NULL_LABEL,
53721 			(void*)&&ZEND_NULL_LABEL,
53722 			(void*)&&ZEND_NULL_LABEL,
53723 			(void*)&&ZEND_NULL_LABEL,
53724 			(void*)&&ZEND_NULL_LABEL,
53725 			(void*)&&ZEND_NULL_LABEL,
53726 			(void*)&&ZEND_NULL_LABEL,
53727 			(void*)&&ZEND_NULL_LABEL,
53728 			(void*)&&ZEND_NULL_LABEL,
53729 			(void*)&&ZEND_NULL_LABEL,
53730 			(void*)&&ZEND_NULL_LABEL,
53731 			(void*)&&ZEND_NULL_LABEL,
53732 			(void*)&&ZEND_NULL_LABEL,
53733 			(void*)&&ZEND_NULL_LABEL,
53734 			(void*)&&ZEND_NULL_LABEL,
53735 			(void*)&&ZEND_NULL_LABEL,
53736 			(void*)&&ZEND_NULL_LABEL,
53737 			(void*)&&ZEND_NULL_LABEL,
53738 			(void*)&&ZEND_NULL_LABEL,
53739 			(void*)&&ZEND_NULL_LABEL,
53740 			(void*)&&ZEND_NULL_LABEL,
53741 			(void*)&&ZEND_NULL_LABEL,
53742 			(void*)&&ZEND_NULL_LABEL,
53743 			(void*)&&ZEND_NULL_LABEL,
53744 			(void*)&&ZEND_NULL_LABEL,
53745 			(void*)&&ZEND_NULL_LABEL,
53746 			(void*)&&ZEND_NULL_LABEL,
53747 			(void*)&&ZEND_NULL_LABEL,
53748 			(void*)&&ZEND_NULL_LABEL,
53749 			(void*)&&ZEND_NULL_LABEL,
53750 			(void*)&&ZEND_NULL_LABEL,
53751 			(void*)&&ZEND_ASSIGN_OBJ_SPEC_VAR_CONST_OP_DATA_CONST_LABEL,
53752 			(void*)&&ZEND_ASSIGN_OBJ_SPEC_VAR_CONST_OP_DATA_TMP_LABEL,
53753 			(void*)&&ZEND_ASSIGN_OBJ_SPEC_VAR_CONST_OP_DATA_VAR_LABEL,
53754 			(void*)&&ZEND_NULL_LABEL,
53755 			(void*)&&ZEND_ASSIGN_OBJ_SPEC_VAR_CONST_OP_DATA_CV_LABEL,
53756 			(void*)&&ZEND_ASSIGN_OBJ_SPEC_VAR_TMPVAR_OP_DATA_CONST_LABEL,
53757 			(void*)&&ZEND_ASSIGN_OBJ_SPEC_VAR_TMPVAR_OP_DATA_TMP_LABEL,
53758 			(void*)&&ZEND_ASSIGN_OBJ_SPEC_VAR_TMPVAR_OP_DATA_VAR_LABEL,
53759 			(void*)&&ZEND_NULL_LABEL,
53760 			(void*)&&ZEND_ASSIGN_OBJ_SPEC_VAR_TMPVAR_OP_DATA_CV_LABEL,
53761 			(void*)&&ZEND_ASSIGN_OBJ_SPEC_VAR_TMPVAR_OP_DATA_CONST_LABEL,
53762 			(void*)&&ZEND_ASSIGN_OBJ_SPEC_VAR_TMPVAR_OP_DATA_TMP_LABEL,
53763 			(void*)&&ZEND_ASSIGN_OBJ_SPEC_VAR_TMPVAR_OP_DATA_VAR_LABEL,
53764 			(void*)&&ZEND_NULL_LABEL,
53765 			(void*)&&ZEND_ASSIGN_OBJ_SPEC_VAR_TMPVAR_OP_DATA_CV_LABEL,
53766 			(void*)&&ZEND_NULL_LABEL,
53767 			(void*)&&ZEND_NULL_LABEL,
53768 			(void*)&&ZEND_NULL_LABEL,
53769 			(void*)&&ZEND_NULL_LABEL,
53770 			(void*)&&ZEND_NULL_LABEL,
53771 			(void*)&&ZEND_ASSIGN_OBJ_SPEC_VAR_CV_OP_DATA_CONST_LABEL,
53772 			(void*)&&ZEND_ASSIGN_OBJ_SPEC_VAR_CV_OP_DATA_TMP_LABEL,
53773 			(void*)&&ZEND_ASSIGN_OBJ_SPEC_VAR_CV_OP_DATA_VAR_LABEL,
53774 			(void*)&&ZEND_NULL_LABEL,
53775 			(void*)&&ZEND_ASSIGN_OBJ_SPEC_VAR_CV_OP_DATA_CV_LABEL,
53776 			(void*)&&ZEND_ASSIGN_OBJ_SPEC_UNUSED_CONST_OP_DATA_CONST_LABEL,
53777 			(void*)&&ZEND_ASSIGN_OBJ_SPEC_UNUSED_CONST_OP_DATA_TMP_LABEL,
53778 			(void*)&&ZEND_ASSIGN_OBJ_SPEC_UNUSED_CONST_OP_DATA_VAR_LABEL,
53779 			(void*)&&ZEND_NULL_LABEL,
53780 			(void*)&&ZEND_ASSIGN_OBJ_SPEC_UNUSED_CONST_OP_DATA_CV_LABEL,
53781 			(void*)&&ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMPVAR_OP_DATA_CONST_LABEL,
53782 			(void*)&&ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMPVAR_OP_DATA_TMP_LABEL,
53783 			(void*)&&ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMPVAR_OP_DATA_VAR_LABEL,
53784 			(void*)&&ZEND_NULL_LABEL,
53785 			(void*)&&ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMPVAR_OP_DATA_CV_LABEL,
53786 			(void*)&&ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMPVAR_OP_DATA_CONST_LABEL,
53787 			(void*)&&ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMPVAR_OP_DATA_TMP_LABEL,
53788 			(void*)&&ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMPVAR_OP_DATA_VAR_LABEL,
53789 			(void*)&&ZEND_NULL_LABEL,
53790 			(void*)&&ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMPVAR_OP_DATA_CV_LABEL,
53791 			(void*)&&ZEND_NULL_LABEL,
53792 			(void*)&&ZEND_NULL_LABEL,
53793 			(void*)&&ZEND_NULL_LABEL,
53794 			(void*)&&ZEND_NULL_LABEL,
53795 			(void*)&&ZEND_NULL_LABEL,
53796 			(void*)&&ZEND_ASSIGN_OBJ_SPEC_UNUSED_CV_OP_DATA_CONST_LABEL,
53797 			(void*)&&ZEND_ASSIGN_OBJ_SPEC_UNUSED_CV_OP_DATA_TMP_LABEL,
53798 			(void*)&&ZEND_ASSIGN_OBJ_SPEC_UNUSED_CV_OP_DATA_VAR_LABEL,
53799 			(void*)&&ZEND_NULL_LABEL,
53800 			(void*)&&ZEND_ASSIGN_OBJ_SPEC_UNUSED_CV_OP_DATA_CV_LABEL,
53801 			(void*)&&ZEND_ASSIGN_OBJ_SPEC_CV_CONST_OP_DATA_CONST_LABEL,
53802 			(void*)&&ZEND_ASSIGN_OBJ_SPEC_CV_CONST_OP_DATA_TMP_LABEL,
53803 			(void*)&&ZEND_ASSIGN_OBJ_SPEC_CV_CONST_OP_DATA_VAR_LABEL,
53804 			(void*)&&ZEND_NULL_LABEL,
53805 			(void*)&&ZEND_ASSIGN_OBJ_SPEC_CV_CONST_OP_DATA_CV_LABEL,
53806 			(void*)&&ZEND_ASSIGN_OBJ_SPEC_CV_TMPVAR_OP_DATA_CONST_LABEL,
53807 			(void*)&&ZEND_ASSIGN_OBJ_SPEC_CV_TMPVAR_OP_DATA_TMP_LABEL,
53808 			(void*)&&ZEND_ASSIGN_OBJ_SPEC_CV_TMPVAR_OP_DATA_VAR_LABEL,
53809 			(void*)&&ZEND_NULL_LABEL,
53810 			(void*)&&ZEND_ASSIGN_OBJ_SPEC_CV_TMPVAR_OP_DATA_CV_LABEL,
53811 			(void*)&&ZEND_ASSIGN_OBJ_SPEC_CV_TMPVAR_OP_DATA_CONST_LABEL,
53812 			(void*)&&ZEND_ASSIGN_OBJ_SPEC_CV_TMPVAR_OP_DATA_TMP_LABEL,
53813 			(void*)&&ZEND_ASSIGN_OBJ_SPEC_CV_TMPVAR_OP_DATA_VAR_LABEL,
53814 			(void*)&&ZEND_NULL_LABEL,
53815 			(void*)&&ZEND_ASSIGN_OBJ_SPEC_CV_TMPVAR_OP_DATA_CV_LABEL,
53816 			(void*)&&ZEND_NULL_LABEL,
53817 			(void*)&&ZEND_NULL_LABEL,
53818 			(void*)&&ZEND_NULL_LABEL,
53819 			(void*)&&ZEND_NULL_LABEL,
53820 			(void*)&&ZEND_NULL_LABEL,
53821 			(void*)&&ZEND_ASSIGN_OBJ_SPEC_CV_CV_OP_DATA_CONST_LABEL,
53822 			(void*)&&ZEND_ASSIGN_OBJ_SPEC_CV_CV_OP_DATA_TMP_LABEL,
53823 			(void*)&&ZEND_ASSIGN_OBJ_SPEC_CV_CV_OP_DATA_VAR_LABEL,
53824 			(void*)&&ZEND_NULL_LABEL,
53825 			(void*)&&ZEND_ASSIGN_OBJ_SPEC_CV_CV_OP_DATA_CV_LABEL,
53826 			(void*)&&ZEND_NULL_LABEL,
53827 			(void*)&&ZEND_NULL_LABEL,
53828 			(void*)&&ZEND_NULL_LABEL,
53829 			(void*)&&ZEND_NULL_LABEL,
53830 			(void*)&&ZEND_NULL_LABEL,
53831 			(void*)&&ZEND_NULL_LABEL,
53832 			(void*)&&ZEND_INSTANCEOF_SPEC_TMPVAR_CONST_LABEL,
53833 			(void*)&&ZEND_NULL_LABEL,
53834 			(void*)&&ZEND_INSTANCEOF_SPEC_TMPVAR_VAR_LABEL,
53835 			(void*)&&ZEND_INSTANCEOF_SPEC_TMPVAR_UNUSED_LABEL,
53836 			(void*)&&ZEND_NULL_LABEL,
53837 			(void*)&&ZEND_INSTANCEOF_SPEC_TMPVAR_CONST_LABEL,
53838 			(void*)&&ZEND_NULL_LABEL,
53839 			(void*)&&ZEND_INSTANCEOF_SPEC_TMPVAR_VAR_LABEL,
53840 			(void*)&&ZEND_INSTANCEOF_SPEC_TMPVAR_UNUSED_LABEL,
53841 			(void*)&&ZEND_NULL_LABEL,
53842 			(void*)&&ZEND_NULL_LABEL,
53843 			(void*)&&ZEND_NULL_LABEL,
53844 			(void*)&&ZEND_NULL_LABEL,
53845 			(void*)&&ZEND_NULL_LABEL,
53846 			(void*)&&ZEND_NULL_LABEL,
53847 			(void*)&&ZEND_INSTANCEOF_SPEC_CV_CONST_LABEL,
53848 			(void*)&&ZEND_NULL_LABEL,
53849 			(void*)&&ZEND_INSTANCEOF_SPEC_CV_VAR_LABEL,
53850 			(void*)&&ZEND_INSTANCEOF_SPEC_CV_UNUSED_LABEL,
53851 			(void*)&&ZEND_NULL_LABEL,
53852 			(void*)&&ZEND_DECLARE_CLASS_SPEC_CONST_LABEL,
53853 			(void*)&&ZEND_DECLARE_INHERITED_CLASS_SPEC_CONST_CONST_LABEL,
53854 			(void*)&&ZEND_DECLARE_FUNCTION_SPEC_LABEL,
53855 			(void*)&&ZEND_YIELD_FROM_SPEC_CONST_LABEL,
53856 			(void*)&&ZEND_YIELD_FROM_SPEC_TMP_LABEL,
53857 			(void*)&&ZEND_YIELD_FROM_SPEC_VAR_LABEL,
53858 			(void*)&&ZEND_NULL_LABEL,
53859 			(void*)&&ZEND_YIELD_FROM_SPEC_CV_LABEL,
53860 			(void*)&&ZEND_DECLARE_CONST_SPEC_CONST_CONST_LABEL,
53861 			(void*)&&ZEND_ADD_INTERFACE_SPEC_CONST_LABEL,
53862 			(void*)&&ZEND_DECLARE_INHERITED_CLASS_DELAYED_SPEC_CONST_CONST_LABEL,
53863 			(void*)&&ZEND_VERIFY_ABSTRACT_CLASS_SPEC_LABEL,
53864 			(void*)&&ZEND_NULL_LABEL,
53865 			(void*)&&ZEND_NULL_LABEL,
53866 			(void*)&&ZEND_NULL_LABEL,
53867 			(void*)&&ZEND_NULL_LABEL,
53868 			(void*)&&ZEND_NULL_LABEL,
53869 			(void*)&&ZEND_NULL_LABEL,
53870 			(void*)&&ZEND_NULL_LABEL,
53871 			(void*)&&ZEND_NULL_LABEL,
53872 			(void*)&&ZEND_NULL_LABEL,
53873 			(void*)&&ZEND_NULL_LABEL,
53874 			(void*)&&ZEND_NULL_LABEL,
53875 			(void*)&&ZEND_NULL_LABEL,
53876 			(void*)&&ZEND_NULL_LABEL,
53877 			(void*)&&ZEND_NULL_LABEL,
53878 			(void*)&&ZEND_NULL_LABEL,
53879 			(void*)&&ZEND_NULL_LABEL,
53880 			(void*)&&ZEND_NULL_LABEL,
53881 			(void*)&&ZEND_NULL_LABEL,
53882 			(void*)&&ZEND_NULL_LABEL,
53883 			(void*)&&ZEND_NULL_LABEL,
53884 			(void*)&&ZEND_NULL_LABEL,
53885 			(void*)&&ZEND_NULL_LABEL,
53886 			(void*)&&ZEND_NULL_LABEL,
53887 			(void*)&&ZEND_NULL_LABEL,
53888 			(void*)&&ZEND_NULL_LABEL,
53889 			(void*)&&ZEND_NULL_LABEL,
53890 			(void*)&&ZEND_NULL_LABEL,
53891 			(void*)&&ZEND_NULL_LABEL,
53892 			(void*)&&ZEND_NULL_LABEL,
53893 			(void*)&&ZEND_NULL_LABEL,
53894 			(void*)&&ZEND_NULL_LABEL,
53895 			(void*)&&ZEND_NULL_LABEL,
53896 			(void*)&&ZEND_NULL_LABEL,
53897 			(void*)&&ZEND_NULL_LABEL,
53898 			(void*)&&ZEND_NULL_LABEL,
53899 			(void*)&&ZEND_NULL_LABEL,
53900 			(void*)&&ZEND_NULL_LABEL,
53901 			(void*)&&ZEND_NULL_LABEL,
53902 			(void*)&&ZEND_NULL_LABEL,
53903 			(void*)&&ZEND_NULL_LABEL,
53904 			(void*)&&ZEND_NULL_LABEL,
53905 			(void*)&&ZEND_NULL_LABEL,
53906 			(void*)&&ZEND_NULL_LABEL,
53907 			(void*)&&ZEND_NULL_LABEL,
53908 			(void*)&&ZEND_NULL_LABEL,
53909 			(void*)&&ZEND_NULL_LABEL,
53910 			(void*)&&ZEND_NULL_LABEL,
53911 			(void*)&&ZEND_NULL_LABEL,
53912 			(void*)&&ZEND_NULL_LABEL,
53913 			(void*)&&ZEND_NULL_LABEL,
53914 			(void*)&&ZEND_ASSIGN_DIM_SPEC_VAR_CONST_OP_DATA_CONST_LABEL,
53915 			(void*)&&ZEND_ASSIGN_DIM_SPEC_VAR_CONST_OP_DATA_TMP_LABEL,
53916 			(void*)&&ZEND_ASSIGN_DIM_SPEC_VAR_CONST_OP_DATA_VAR_LABEL,
53917 			(void*)&&ZEND_NULL_LABEL,
53918 			(void*)&&ZEND_ASSIGN_DIM_SPEC_VAR_CONST_OP_DATA_CV_LABEL,
53919 			(void*)&&ZEND_ASSIGN_DIM_SPEC_VAR_TMPVAR_OP_DATA_CONST_LABEL,
53920 			(void*)&&ZEND_ASSIGN_DIM_SPEC_VAR_TMPVAR_OP_DATA_TMP_LABEL,
53921 			(void*)&&ZEND_ASSIGN_DIM_SPEC_VAR_TMPVAR_OP_DATA_VAR_LABEL,
53922 			(void*)&&ZEND_NULL_LABEL,
53923 			(void*)&&ZEND_ASSIGN_DIM_SPEC_VAR_TMPVAR_OP_DATA_CV_LABEL,
53924 			(void*)&&ZEND_ASSIGN_DIM_SPEC_VAR_TMPVAR_OP_DATA_CONST_LABEL,
53925 			(void*)&&ZEND_ASSIGN_DIM_SPEC_VAR_TMPVAR_OP_DATA_TMP_LABEL,
53926 			(void*)&&ZEND_ASSIGN_DIM_SPEC_VAR_TMPVAR_OP_DATA_VAR_LABEL,
53927 			(void*)&&ZEND_NULL_LABEL,
53928 			(void*)&&ZEND_ASSIGN_DIM_SPEC_VAR_TMPVAR_OP_DATA_CV_LABEL,
53929 			(void*)&&ZEND_ASSIGN_DIM_SPEC_VAR_UNUSED_OP_DATA_CONST_LABEL,
53930 			(void*)&&ZEND_ASSIGN_DIM_SPEC_VAR_UNUSED_OP_DATA_TMP_LABEL,
53931 			(void*)&&ZEND_ASSIGN_DIM_SPEC_VAR_UNUSED_OP_DATA_VAR_LABEL,
53932 			(void*)&&ZEND_NULL_LABEL,
53933 			(void*)&&ZEND_ASSIGN_DIM_SPEC_VAR_UNUSED_OP_DATA_CV_LABEL,
53934 			(void*)&&ZEND_ASSIGN_DIM_SPEC_VAR_CV_OP_DATA_CONST_LABEL,
53935 			(void*)&&ZEND_ASSIGN_DIM_SPEC_VAR_CV_OP_DATA_TMP_LABEL,
53936 			(void*)&&ZEND_ASSIGN_DIM_SPEC_VAR_CV_OP_DATA_VAR_LABEL,
53937 			(void*)&&ZEND_NULL_LABEL,
53938 			(void*)&&ZEND_ASSIGN_DIM_SPEC_VAR_CV_OP_DATA_CV_LABEL,
53939 			(void*)&&ZEND_NULL_LABEL,
53940 			(void*)&&ZEND_NULL_LABEL,
53941 			(void*)&&ZEND_NULL_LABEL,
53942 			(void*)&&ZEND_NULL_LABEL,
53943 			(void*)&&ZEND_NULL_LABEL,
53944 			(void*)&&ZEND_NULL_LABEL,
53945 			(void*)&&ZEND_NULL_LABEL,
53946 			(void*)&&ZEND_NULL_LABEL,
53947 			(void*)&&ZEND_NULL_LABEL,
53948 			(void*)&&ZEND_NULL_LABEL,
53949 			(void*)&&ZEND_NULL_LABEL,
53950 			(void*)&&ZEND_NULL_LABEL,
53951 			(void*)&&ZEND_NULL_LABEL,
53952 			(void*)&&ZEND_NULL_LABEL,
53953 			(void*)&&ZEND_NULL_LABEL,
53954 			(void*)&&ZEND_NULL_LABEL,
53955 			(void*)&&ZEND_NULL_LABEL,
53956 			(void*)&&ZEND_NULL_LABEL,
53957 			(void*)&&ZEND_NULL_LABEL,
53958 			(void*)&&ZEND_NULL_LABEL,
53959 			(void*)&&ZEND_NULL_LABEL,
53960 			(void*)&&ZEND_NULL_LABEL,
53961 			(void*)&&ZEND_NULL_LABEL,
53962 			(void*)&&ZEND_NULL_LABEL,
53963 			(void*)&&ZEND_NULL_LABEL,
53964 			(void*)&&ZEND_ASSIGN_DIM_SPEC_CV_CONST_OP_DATA_CONST_LABEL,
53965 			(void*)&&ZEND_ASSIGN_DIM_SPEC_CV_CONST_OP_DATA_TMP_LABEL,
53966 			(void*)&&ZEND_ASSIGN_DIM_SPEC_CV_CONST_OP_DATA_VAR_LABEL,
53967 			(void*)&&ZEND_NULL_LABEL,
53968 			(void*)&&ZEND_ASSIGN_DIM_SPEC_CV_CONST_OP_DATA_CV_LABEL,
53969 			(void*)&&ZEND_ASSIGN_DIM_SPEC_CV_TMPVAR_OP_DATA_CONST_LABEL,
53970 			(void*)&&ZEND_ASSIGN_DIM_SPEC_CV_TMPVAR_OP_DATA_TMP_LABEL,
53971 			(void*)&&ZEND_ASSIGN_DIM_SPEC_CV_TMPVAR_OP_DATA_VAR_LABEL,
53972 			(void*)&&ZEND_NULL_LABEL,
53973 			(void*)&&ZEND_ASSIGN_DIM_SPEC_CV_TMPVAR_OP_DATA_CV_LABEL,
53974 			(void*)&&ZEND_ASSIGN_DIM_SPEC_CV_TMPVAR_OP_DATA_CONST_LABEL,
53975 			(void*)&&ZEND_ASSIGN_DIM_SPEC_CV_TMPVAR_OP_DATA_TMP_LABEL,
53976 			(void*)&&ZEND_ASSIGN_DIM_SPEC_CV_TMPVAR_OP_DATA_VAR_LABEL,
53977 			(void*)&&ZEND_NULL_LABEL,
53978 			(void*)&&ZEND_ASSIGN_DIM_SPEC_CV_TMPVAR_OP_DATA_CV_LABEL,
53979 			(void*)&&ZEND_ASSIGN_DIM_SPEC_CV_UNUSED_OP_DATA_CONST_LABEL,
53980 			(void*)&&ZEND_ASSIGN_DIM_SPEC_CV_UNUSED_OP_DATA_TMP_LABEL,
53981 			(void*)&&ZEND_ASSIGN_DIM_SPEC_CV_UNUSED_OP_DATA_VAR_LABEL,
53982 			(void*)&&ZEND_NULL_LABEL,
53983 			(void*)&&ZEND_ASSIGN_DIM_SPEC_CV_UNUSED_OP_DATA_CV_LABEL,
53984 			(void*)&&ZEND_ASSIGN_DIM_SPEC_CV_CV_OP_DATA_CONST_LABEL,
53985 			(void*)&&ZEND_ASSIGN_DIM_SPEC_CV_CV_OP_DATA_TMP_LABEL,
53986 			(void*)&&ZEND_ASSIGN_DIM_SPEC_CV_CV_OP_DATA_VAR_LABEL,
53987 			(void*)&&ZEND_NULL_LABEL,
53988 			(void*)&&ZEND_ASSIGN_DIM_SPEC_CV_CV_OP_DATA_CV_LABEL,
53989 			(void*)&&ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CONST_CONST_LABEL,
53990 			(void*)&&ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CONST_TMPVAR_LABEL,
53991 			(void*)&&ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CONST_TMPVAR_LABEL,
53992 			(void*)&&ZEND_NULL_LABEL,
53993 			(void*)&&ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CONST_CV_LABEL,
53994 			(void*)&&ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMPVAR_CONST_LABEL,
53995 			(void*)&&ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMPVAR_TMPVAR_LABEL,
53996 			(void*)&&ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMPVAR_TMPVAR_LABEL,
53997 			(void*)&&ZEND_NULL_LABEL,
53998 			(void*)&&ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMPVAR_CV_LABEL,
53999 			(void*)&&ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMPVAR_CONST_LABEL,
54000 			(void*)&&ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMPVAR_TMPVAR_LABEL,
54001 			(void*)&&ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMPVAR_TMPVAR_LABEL,
54002 			(void*)&&ZEND_NULL_LABEL,
54003 			(void*)&&ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMPVAR_CV_LABEL,
54004 			(void*)&&ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_UNUSED_CONST_LABEL,
54005 			(void*)&&ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_UNUSED_TMPVAR_LABEL,
54006 			(void*)&&ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_UNUSED_TMPVAR_LABEL,
54007 			(void*)&&ZEND_NULL_LABEL,
54008 			(void*)&&ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_UNUSED_CV_LABEL,
54009 			(void*)&&ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CV_CONST_LABEL,
54010 			(void*)&&ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CV_TMPVAR_LABEL,
54011 			(void*)&&ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CV_TMPVAR_LABEL,
54012 			(void*)&&ZEND_NULL_LABEL,
54013 			(void*)&&ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CV_CV_LABEL,
54014 			(void*)&&ZEND_HANDLE_EXCEPTION_SPEC_LABEL,
54015 			(void*)&&ZEND_USER_OPCODE_SPEC_LABEL,
54016 			(void*)&&ZEND_ASSERT_CHECK_SPEC_LABEL,
54017 			(void*)&&ZEND_JMP_SET_SPEC_CONST_LABEL,
54018 			(void*)&&ZEND_JMP_SET_SPEC_TMP_LABEL,
54019 			(void*)&&ZEND_JMP_SET_SPEC_VAR_LABEL,
54020 			(void*)&&ZEND_NULL_LABEL,
54021 			(void*)&&ZEND_JMP_SET_SPEC_CV_LABEL,
54022 			(void*)&&ZEND_DECLARE_LAMBDA_FUNCTION_SPEC_CONST_UNUSED_LABEL,
54023 			(void*)&&ZEND_ADD_TRAIT_SPEC_LABEL,
54024 			(void*)&&ZEND_BIND_TRAITS_SPEC_LABEL,
54025 			(void*)&&ZEND_SEPARATE_SPEC_VAR_UNUSED_LABEL,
54026 			(void*)&&ZEND_FETCH_CLASS_NAME_SPEC_UNUSED_LABEL,
54027 			(void*)&&ZEND_CALL_TRAMPOLINE_SPEC_LABEL,
54028 			(void*)&&ZEND_DISCARD_EXCEPTION_SPEC_LABEL,
54029 			(void*)&&ZEND_YIELD_SPEC_CONST_CONST_LABEL,
54030 			(void*)&&ZEND_YIELD_SPEC_CONST_TMP_LABEL,
54031 			(void*)&&ZEND_YIELD_SPEC_CONST_VAR_LABEL,
54032 			(void*)&&ZEND_YIELD_SPEC_CONST_UNUSED_LABEL,
54033 			(void*)&&ZEND_YIELD_SPEC_CONST_CV_LABEL,
54034 			(void*)&&ZEND_YIELD_SPEC_TMP_CONST_LABEL,
54035 			(void*)&&ZEND_YIELD_SPEC_TMP_TMP_LABEL,
54036 			(void*)&&ZEND_YIELD_SPEC_TMP_VAR_LABEL,
54037 			(void*)&&ZEND_YIELD_SPEC_TMP_UNUSED_LABEL,
54038 			(void*)&&ZEND_YIELD_SPEC_TMP_CV_LABEL,
54039 			(void*)&&ZEND_YIELD_SPEC_VAR_CONST_LABEL,
54040 			(void*)&&ZEND_YIELD_SPEC_VAR_TMP_LABEL,
54041 			(void*)&&ZEND_YIELD_SPEC_VAR_VAR_LABEL,
54042 			(void*)&&ZEND_YIELD_SPEC_VAR_UNUSED_LABEL,
54043 			(void*)&&ZEND_YIELD_SPEC_VAR_CV_LABEL,
54044 			(void*)&&ZEND_YIELD_SPEC_UNUSED_CONST_LABEL,
54045 			(void*)&&ZEND_YIELD_SPEC_UNUSED_TMP_LABEL,
54046 			(void*)&&ZEND_YIELD_SPEC_UNUSED_VAR_LABEL,
54047 			(void*)&&ZEND_YIELD_SPEC_UNUSED_UNUSED_LABEL,
54048 			(void*)&&ZEND_YIELD_SPEC_UNUSED_CV_LABEL,
54049 			(void*)&&ZEND_YIELD_SPEC_CV_CONST_LABEL,
54050 			(void*)&&ZEND_YIELD_SPEC_CV_TMP_LABEL,
54051 			(void*)&&ZEND_YIELD_SPEC_CV_VAR_LABEL,
54052 			(void*)&&ZEND_YIELD_SPEC_CV_UNUSED_LABEL,
54053 			(void*)&&ZEND_YIELD_SPEC_CV_CV_LABEL,
54054 			(void*)&&ZEND_GENERATOR_RETURN_SPEC_CONST_LABEL,
54055 			(void*)&&ZEND_GENERATOR_RETURN_SPEC_TMP_LABEL,
54056 			(void*)&&ZEND_GENERATOR_RETURN_SPEC_VAR_LABEL,
54057 			(void*)&&ZEND_NULL_LABEL,
54058 			(void*)&&ZEND_GENERATOR_RETURN_SPEC_CV_LABEL,
54059 			(void*)&&ZEND_FAST_CALL_SPEC_LABEL,
54060 			(void*)&&ZEND_FAST_RET_SPEC_LABEL,
54061 			(void*)&&ZEND_RECV_VARIADIC_SPEC_UNUSED_LABEL,
54062 			(void*)&&ZEND_SEND_UNPACK_SPEC_LABEL,
54063 			(void*)&&ZEND_POW_SPEC_CONST_CONST_LABEL,
54064 			(void*)&&ZEND_POW_SPEC_CONST_TMPVAR_LABEL,
54065 			(void*)&&ZEND_POW_SPEC_CONST_TMPVAR_LABEL,
54066 			(void*)&&ZEND_NULL_LABEL,
54067 			(void*)&&ZEND_POW_SPEC_CONST_CV_LABEL,
54068 			(void*)&&ZEND_POW_SPEC_TMPVAR_CONST_LABEL,
54069 			(void*)&&ZEND_POW_SPEC_TMPVAR_TMPVAR_LABEL,
54070 			(void*)&&ZEND_POW_SPEC_TMPVAR_TMPVAR_LABEL,
54071 			(void*)&&ZEND_NULL_LABEL,
54072 			(void*)&&ZEND_POW_SPEC_TMPVAR_CV_LABEL,
54073 			(void*)&&ZEND_POW_SPEC_TMPVAR_CONST_LABEL,
54074 			(void*)&&ZEND_POW_SPEC_TMPVAR_TMPVAR_LABEL,
54075 			(void*)&&ZEND_POW_SPEC_TMPVAR_TMPVAR_LABEL,
54076 			(void*)&&ZEND_NULL_LABEL,
54077 			(void*)&&ZEND_POW_SPEC_TMPVAR_CV_LABEL,
54078 			(void*)&&ZEND_NULL_LABEL,
54079 			(void*)&&ZEND_NULL_LABEL,
54080 			(void*)&&ZEND_NULL_LABEL,
54081 			(void*)&&ZEND_NULL_LABEL,
54082 			(void*)&&ZEND_NULL_LABEL,
54083 			(void*)&&ZEND_POW_SPEC_CV_CONST_LABEL,
54084 			(void*)&&ZEND_POW_SPEC_CV_TMPVAR_LABEL,
54085 			(void*)&&ZEND_POW_SPEC_CV_TMPVAR_LABEL,
54086 			(void*)&&ZEND_NULL_LABEL,
54087 			(void*)&&ZEND_POW_SPEC_CV_CV_LABEL,
54088 			(void*)&&ZEND_NULL_LABEL,
54089 			(void*)&&ZEND_NULL_LABEL,
54090 			(void*)&&ZEND_NULL_LABEL,
54091 			(void*)&&ZEND_NULL_LABEL,
54092 			(void*)&&ZEND_NULL_LABEL,
54093 			(void*)&&ZEND_NULL_LABEL,
54094 			(void*)&&ZEND_NULL_LABEL,
54095 			(void*)&&ZEND_NULL_LABEL,
54096 			(void*)&&ZEND_NULL_LABEL,
54097 			(void*)&&ZEND_NULL_LABEL,
54098 			(void*)&&ZEND_NULL_LABEL,
54099 			(void*)&&ZEND_NULL_LABEL,
54100 			(void*)&&ZEND_NULL_LABEL,
54101 			(void*)&&ZEND_NULL_LABEL,
54102 			(void*)&&ZEND_NULL_LABEL,
54103 			(void*)&&ZEND_NULL_LABEL,
54104 			(void*)&&ZEND_NULL_LABEL,
54105 			(void*)&&ZEND_NULL_LABEL,
54106 			(void*)&&ZEND_NULL_LABEL,
54107 			(void*)&&ZEND_NULL_LABEL,
54108 			(void*)&&ZEND_NULL_LABEL,
54109 			(void*)&&ZEND_NULL_LABEL,
54110 			(void*)&&ZEND_NULL_LABEL,
54111 			(void*)&&ZEND_NULL_LABEL,
54112 			(void*)&&ZEND_NULL_LABEL,
54113 			(void*)&&ZEND_NULL_LABEL,
54114 			(void*)&&ZEND_NULL_LABEL,
54115 			(void*)&&ZEND_NULL_LABEL,
54116 			(void*)&&ZEND_NULL_LABEL,
54117 			(void*)&&ZEND_NULL_LABEL,
54118 			(void*)&&ZEND_ASSIGN_POW_SPEC_VAR_CONST_LABEL,
54119 			(void*)&&ZEND_ASSIGN_POW_SPEC_VAR_CONST_DIM_LABEL,
54120 			(void*)&&ZEND_ASSIGN_POW_SPEC_VAR_CONST_OBJ_LABEL,
54121 			(void*)&&ZEND_ASSIGN_POW_SPEC_VAR_TMPVAR_LABEL,
54122 			(void*)&&ZEND_ASSIGN_POW_SPEC_VAR_TMPVAR_DIM_LABEL,
54123 			(void*)&&ZEND_ASSIGN_POW_SPEC_VAR_TMPVAR_OBJ_LABEL,
54124 			(void*)&&ZEND_ASSIGN_POW_SPEC_VAR_TMPVAR_LABEL,
54125 			(void*)&&ZEND_ASSIGN_POW_SPEC_VAR_TMPVAR_DIM_LABEL,
54126 			(void*)&&ZEND_ASSIGN_POW_SPEC_VAR_TMPVAR_OBJ_LABEL,
54127 			(void*)&&ZEND_NULL_LABEL,
54128 			(void*)&&ZEND_ASSIGN_POW_SPEC_VAR_UNUSED_DIM_LABEL,
54129 			(void*)&&ZEND_NULL_LABEL,
54130 			(void*)&&ZEND_ASSIGN_POW_SPEC_VAR_CV_LABEL,
54131 			(void*)&&ZEND_ASSIGN_POW_SPEC_VAR_CV_DIM_LABEL,
54132 			(void*)&&ZEND_ASSIGN_POW_SPEC_VAR_CV_OBJ_LABEL,
54133 			(void*)&&ZEND_NULL_LABEL,
54134 			(void*)&&ZEND_NULL_LABEL,
54135 			(void*)&&ZEND_ASSIGN_POW_SPEC_UNUSED_CONST_OBJ_LABEL,
54136 			(void*)&&ZEND_NULL_LABEL,
54137 			(void*)&&ZEND_NULL_LABEL,
54138 			(void*)&&ZEND_ASSIGN_POW_SPEC_UNUSED_TMPVAR_OBJ_LABEL,
54139 			(void*)&&ZEND_NULL_LABEL,
54140 			(void*)&&ZEND_NULL_LABEL,
54141 			(void*)&&ZEND_ASSIGN_POW_SPEC_UNUSED_TMPVAR_OBJ_LABEL,
54142 			(void*)&&ZEND_NULL_LABEL,
54143 			(void*)&&ZEND_NULL_LABEL,
54144 			(void*)&&ZEND_NULL_LABEL,
54145 			(void*)&&ZEND_NULL_LABEL,
54146 			(void*)&&ZEND_NULL_LABEL,
54147 			(void*)&&ZEND_ASSIGN_POW_SPEC_UNUSED_CV_OBJ_LABEL,
54148 			(void*)&&ZEND_ASSIGN_POW_SPEC_CV_CONST_LABEL,
54149 			(void*)&&ZEND_ASSIGN_POW_SPEC_CV_CONST_DIM_LABEL,
54150 			(void*)&&ZEND_ASSIGN_POW_SPEC_CV_CONST_OBJ_LABEL,
54151 			(void*)&&ZEND_ASSIGN_POW_SPEC_CV_TMPVAR_LABEL,
54152 			(void*)&&ZEND_ASSIGN_POW_SPEC_CV_TMPVAR_DIM_LABEL,
54153 			(void*)&&ZEND_ASSIGN_POW_SPEC_CV_TMPVAR_OBJ_LABEL,
54154 			(void*)&&ZEND_ASSIGN_POW_SPEC_CV_TMPVAR_LABEL,
54155 			(void*)&&ZEND_ASSIGN_POW_SPEC_CV_TMPVAR_DIM_LABEL,
54156 			(void*)&&ZEND_ASSIGN_POW_SPEC_CV_TMPVAR_OBJ_LABEL,
54157 			(void*)&&ZEND_NULL_LABEL,
54158 			(void*)&&ZEND_ASSIGN_POW_SPEC_CV_UNUSED_DIM_LABEL,
54159 			(void*)&&ZEND_NULL_LABEL,
54160 			(void*)&&ZEND_ASSIGN_POW_SPEC_CV_CV_LABEL,
54161 			(void*)&&ZEND_ASSIGN_POW_SPEC_CV_CV_DIM_LABEL,
54162 			(void*)&&ZEND_ASSIGN_POW_SPEC_CV_CV_OBJ_LABEL,
54163 			(void*)&&ZEND_BIND_GLOBAL_SPEC_CV_CONST_LABEL,
54164 			(void*)&&ZEND_COALESCE_SPEC_CONST_LABEL,
54165 			(void*)&&ZEND_COALESCE_SPEC_TMPVAR_LABEL,
54166 			(void*)&&ZEND_COALESCE_SPEC_TMPVAR_LABEL,
54167 			(void*)&&ZEND_NULL_LABEL,
54168 			(void*)&&ZEND_COALESCE_SPEC_CV_LABEL,
54169 			(void*)&&ZEND_SPACESHIP_SPEC_CONST_CONST_LABEL,
54170 			(void*)&&ZEND_SPACESHIP_SPEC_CONST_TMPVAR_LABEL,
54171 			(void*)&&ZEND_SPACESHIP_SPEC_CONST_TMPVAR_LABEL,
54172 			(void*)&&ZEND_NULL_LABEL,
54173 			(void*)&&ZEND_SPACESHIP_SPEC_CONST_CV_LABEL,
54174 			(void*)&&ZEND_SPACESHIP_SPEC_TMPVAR_CONST_LABEL,
54175 			(void*)&&ZEND_SPACESHIP_SPEC_TMPVAR_TMPVAR_LABEL,
54176 			(void*)&&ZEND_SPACESHIP_SPEC_TMPVAR_TMPVAR_LABEL,
54177 			(void*)&&ZEND_NULL_LABEL,
54178 			(void*)&&ZEND_SPACESHIP_SPEC_TMPVAR_CV_LABEL,
54179 			(void*)&&ZEND_SPACESHIP_SPEC_TMPVAR_CONST_LABEL,
54180 			(void*)&&ZEND_SPACESHIP_SPEC_TMPVAR_TMPVAR_LABEL,
54181 			(void*)&&ZEND_SPACESHIP_SPEC_TMPVAR_TMPVAR_LABEL,
54182 			(void*)&&ZEND_NULL_LABEL,
54183 			(void*)&&ZEND_SPACESHIP_SPEC_TMPVAR_CV_LABEL,
54184 			(void*)&&ZEND_NULL_LABEL,
54185 			(void*)&&ZEND_NULL_LABEL,
54186 			(void*)&&ZEND_NULL_LABEL,
54187 			(void*)&&ZEND_NULL_LABEL,
54188 			(void*)&&ZEND_NULL_LABEL,
54189 			(void*)&&ZEND_SPACESHIP_SPEC_CV_CONST_LABEL,
54190 			(void*)&&ZEND_SPACESHIP_SPEC_CV_TMPVAR_LABEL,
54191 			(void*)&&ZEND_SPACESHIP_SPEC_CV_TMPVAR_LABEL,
54192 			(void*)&&ZEND_NULL_LABEL,
54193 			(void*)&&ZEND_SPACESHIP_SPEC_CV_CV_LABEL,
54194 			(void*)&&ZEND_DECLARE_ANON_CLASS_SPEC_LABEL,
54195 			(void*)&&ZEND_DECLARE_ANON_INHERITED_CLASS_SPEC_CONST_CONST_LABEL,
54196 			(void*)&&ZEND_FETCH_STATIC_PROP_R_SPEC_CONST_CONST_LABEL,
54197 			(void*)&&ZEND_NULL_LABEL,
54198 			(void*)&&ZEND_FETCH_STATIC_PROP_R_SPEC_CONST_VAR_LABEL,
54199 			(void*)&&ZEND_FETCH_STATIC_PROP_R_SPEC_CONST_UNUSED_LABEL,
54200 			(void*)&&ZEND_NULL_LABEL,
54201 			(void*)&&ZEND_FETCH_STATIC_PROP_R_SPEC_TMPVAR_CONST_LABEL,
54202 			(void*)&&ZEND_NULL_LABEL,
54203 			(void*)&&ZEND_FETCH_STATIC_PROP_R_SPEC_TMPVAR_VAR_LABEL,
54204 			(void*)&&ZEND_FETCH_STATIC_PROP_R_SPEC_TMPVAR_UNUSED_LABEL,
54205 			(void*)&&ZEND_NULL_LABEL,
54206 			(void*)&&ZEND_FETCH_STATIC_PROP_R_SPEC_TMPVAR_CONST_LABEL,
54207 			(void*)&&ZEND_NULL_LABEL,
54208 			(void*)&&ZEND_FETCH_STATIC_PROP_R_SPEC_TMPVAR_VAR_LABEL,
54209 			(void*)&&ZEND_FETCH_STATIC_PROP_R_SPEC_TMPVAR_UNUSED_LABEL,
54210 			(void*)&&ZEND_NULL_LABEL,
54211 			(void*)&&ZEND_NULL_LABEL,
54212 			(void*)&&ZEND_NULL_LABEL,
54213 			(void*)&&ZEND_NULL_LABEL,
54214 			(void*)&&ZEND_NULL_LABEL,
54215 			(void*)&&ZEND_NULL_LABEL,
54216 			(void*)&&ZEND_FETCH_STATIC_PROP_R_SPEC_CV_CONST_LABEL,
54217 			(void*)&&ZEND_NULL_LABEL,
54218 			(void*)&&ZEND_FETCH_STATIC_PROP_R_SPEC_CV_VAR_LABEL,
54219 			(void*)&&ZEND_FETCH_STATIC_PROP_R_SPEC_CV_UNUSED_LABEL,
54220 			(void*)&&ZEND_NULL_LABEL,
54221 			(void*)&&ZEND_FETCH_STATIC_PROP_W_SPEC_CONST_CONST_LABEL,
54222 			(void*)&&ZEND_NULL_LABEL,
54223 			(void*)&&ZEND_FETCH_STATIC_PROP_W_SPEC_CONST_VAR_LABEL,
54224 			(void*)&&ZEND_FETCH_STATIC_PROP_W_SPEC_CONST_UNUSED_LABEL,
54225 			(void*)&&ZEND_NULL_LABEL,
54226 			(void*)&&ZEND_FETCH_STATIC_PROP_W_SPEC_TMPVAR_CONST_LABEL,
54227 			(void*)&&ZEND_NULL_LABEL,
54228 			(void*)&&ZEND_FETCH_STATIC_PROP_W_SPEC_TMPVAR_VAR_LABEL,
54229 			(void*)&&ZEND_FETCH_STATIC_PROP_W_SPEC_TMPVAR_UNUSED_LABEL,
54230 			(void*)&&ZEND_NULL_LABEL,
54231 			(void*)&&ZEND_FETCH_STATIC_PROP_W_SPEC_TMPVAR_CONST_LABEL,
54232 			(void*)&&ZEND_NULL_LABEL,
54233 			(void*)&&ZEND_FETCH_STATIC_PROP_W_SPEC_TMPVAR_VAR_LABEL,
54234 			(void*)&&ZEND_FETCH_STATIC_PROP_W_SPEC_TMPVAR_UNUSED_LABEL,
54235 			(void*)&&ZEND_NULL_LABEL,
54236 			(void*)&&ZEND_NULL_LABEL,
54237 			(void*)&&ZEND_NULL_LABEL,
54238 			(void*)&&ZEND_NULL_LABEL,
54239 			(void*)&&ZEND_NULL_LABEL,
54240 			(void*)&&ZEND_NULL_LABEL,
54241 			(void*)&&ZEND_FETCH_STATIC_PROP_W_SPEC_CV_CONST_LABEL,
54242 			(void*)&&ZEND_NULL_LABEL,
54243 			(void*)&&ZEND_FETCH_STATIC_PROP_W_SPEC_CV_VAR_LABEL,
54244 			(void*)&&ZEND_FETCH_STATIC_PROP_W_SPEC_CV_UNUSED_LABEL,
54245 			(void*)&&ZEND_NULL_LABEL,
54246 			(void*)&&ZEND_FETCH_STATIC_PROP_RW_SPEC_CONST_CONST_LABEL,
54247 			(void*)&&ZEND_NULL_LABEL,
54248 			(void*)&&ZEND_FETCH_STATIC_PROP_RW_SPEC_CONST_VAR_LABEL,
54249 			(void*)&&ZEND_FETCH_STATIC_PROP_RW_SPEC_CONST_UNUSED_LABEL,
54250 			(void*)&&ZEND_NULL_LABEL,
54251 			(void*)&&ZEND_FETCH_STATIC_PROP_RW_SPEC_TMPVAR_CONST_LABEL,
54252 			(void*)&&ZEND_NULL_LABEL,
54253 			(void*)&&ZEND_FETCH_STATIC_PROP_RW_SPEC_TMPVAR_VAR_LABEL,
54254 			(void*)&&ZEND_FETCH_STATIC_PROP_RW_SPEC_TMPVAR_UNUSED_LABEL,
54255 			(void*)&&ZEND_NULL_LABEL,
54256 			(void*)&&ZEND_FETCH_STATIC_PROP_RW_SPEC_TMPVAR_CONST_LABEL,
54257 			(void*)&&ZEND_NULL_LABEL,
54258 			(void*)&&ZEND_FETCH_STATIC_PROP_RW_SPEC_TMPVAR_VAR_LABEL,
54259 			(void*)&&ZEND_FETCH_STATIC_PROP_RW_SPEC_TMPVAR_UNUSED_LABEL,
54260 			(void*)&&ZEND_NULL_LABEL,
54261 			(void*)&&ZEND_NULL_LABEL,
54262 			(void*)&&ZEND_NULL_LABEL,
54263 			(void*)&&ZEND_NULL_LABEL,
54264 			(void*)&&ZEND_NULL_LABEL,
54265 			(void*)&&ZEND_NULL_LABEL,
54266 			(void*)&&ZEND_FETCH_STATIC_PROP_RW_SPEC_CV_CONST_LABEL,
54267 			(void*)&&ZEND_NULL_LABEL,
54268 			(void*)&&ZEND_FETCH_STATIC_PROP_RW_SPEC_CV_VAR_LABEL,
54269 			(void*)&&ZEND_FETCH_STATIC_PROP_RW_SPEC_CV_UNUSED_LABEL,
54270 			(void*)&&ZEND_NULL_LABEL,
54271 			(void*)&&ZEND_FETCH_STATIC_PROP_IS_SPEC_CONST_CONST_LABEL,
54272 			(void*)&&ZEND_NULL_LABEL,
54273 			(void*)&&ZEND_FETCH_STATIC_PROP_IS_SPEC_CONST_VAR_LABEL,
54274 			(void*)&&ZEND_FETCH_STATIC_PROP_IS_SPEC_CONST_UNUSED_LABEL,
54275 			(void*)&&ZEND_NULL_LABEL,
54276 			(void*)&&ZEND_FETCH_STATIC_PROP_IS_SPEC_TMPVAR_CONST_LABEL,
54277 			(void*)&&ZEND_NULL_LABEL,
54278 			(void*)&&ZEND_FETCH_STATIC_PROP_IS_SPEC_TMPVAR_VAR_LABEL,
54279 			(void*)&&ZEND_FETCH_STATIC_PROP_IS_SPEC_TMPVAR_UNUSED_LABEL,
54280 			(void*)&&ZEND_NULL_LABEL,
54281 			(void*)&&ZEND_FETCH_STATIC_PROP_IS_SPEC_TMPVAR_CONST_LABEL,
54282 			(void*)&&ZEND_NULL_LABEL,
54283 			(void*)&&ZEND_FETCH_STATIC_PROP_IS_SPEC_TMPVAR_VAR_LABEL,
54284 			(void*)&&ZEND_FETCH_STATIC_PROP_IS_SPEC_TMPVAR_UNUSED_LABEL,
54285 			(void*)&&ZEND_NULL_LABEL,
54286 			(void*)&&ZEND_NULL_LABEL,
54287 			(void*)&&ZEND_NULL_LABEL,
54288 			(void*)&&ZEND_NULL_LABEL,
54289 			(void*)&&ZEND_NULL_LABEL,
54290 			(void*)&&ZEND_NULL_LABEL,
54291 			(void*)&&ZEND_FETCH_STATIC_PROP_IS_SPEC_CV_CONST_LABEL,
54292 			(void*)&&ZEND_NULL_LABEL,
54293 			(void*)&&ZEND_FETCH_STATIC_PROP_IS_SPEC_CV_VAR_LABEL,
54294 			(void*)&&ZEND_FETCH_STATIC_PROP_IS_SPEC_CV_UNUSED_LABEL,
54295 			(void*)&&ZEND_NULL_LABEL,
54296 			(void*)&&ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_CONST_CONST_LABEL,
54297 			(void*)&&ZEND_NULL_LABEL,
54298 			(void*)&&ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_CONST_VAR_LABEL,
54299 			(void*)&&ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_CONST_UNUSED_LABEL,
54300 			(void*)&&ZEND_NULL_LABEL,
54301 			(void*)&&ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_TMPVAR_CONST_LABEL,
54302 			(void*)&&ZEND_NULL_LABEL,
54303 			(void*)&&ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_TMPVAR_VAR_LABEL,
54304 			(void*)&&ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_TMPVAR_UNUSED_LABEL,
54305 			(void*)&&ZEND_NULL_LABEL,
54306 			(void*)&&ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_TMPVAR_CONST_LABEL,
54307 			(void*)&&ZEND_NULL_LABEL,
54308 			(void*)&&ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_TMPVAR_VAR_LABEL,
54309 			(void*)&&ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_TMPVAR_UNUSED_LABEL,
54310 			(void*)&&ZEND_NULL_LABEL,
54311 			(void*)&&ZEND_NULL_LABEL,
54312 			(void*)&&ZEND_NULL_LABEL,
54313 			(void*)&&ZEND_NULL_LABEL,
54314 			(void*)&&ZEND_NULL_LABEL,
54315 			(void*)&&ZEND_NULL_LABEL,
54316 			(void*)&&ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_CV_CONST_LABEL,
54317 			(void*)&&ZEND_NULL_LABEL,
54318 			(void*)&&ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_CV_VAR_LABEL,
54319 			(void*)&&ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_CV_UNUSED_LABEL,
54320 			(void*)&&ZEND_NULL_LABEL,
54321 			(void*)&&ZEND_FETCH_STATIC_PROP_UNSET_SPEC_CONST_CONST_LABEL,
54322 			(void*)&&ZEND_NULL_LABEL,
54323 			(void*)&&ZEND_FETCH_STATIC_PROP_UNSET_SPEC_CONST_VAR_LABEL,
54324 			(void*)&&ZEND_FETCH_STATIC_PROP_UNSET_SPEC_CONST_UNUSED_LABEL,
54325 			(void*)&&ZEND_NULL_LABEL,
54326 			(void*)&&ZEND_FETCH_STATIC_PROP_UNSET_SPEC_TMPVAR_CONST_LABEL,
54327 			(void*)&&ZEND_NULL_LABEL,
54328 			(void*)&&ZEND_FETCH_STATIC_PROP_UNSET_SPEC_TMPVAR_VAR_LABEL,
54329 			(void*)&&ZEND_FETCH_STATIC_PROP_UNSET_SPEC_TMPVAR_UNUSED_LABEL,
54330 			(void*)&&ZEND_NULL_LABEL,
54331 			(void*)&&ZEND_FETCH_STATIC_PROP_UNSET_SPEC_TMPVAR_CONST_LABEL,
54332 			(void*)&&ZEND_NULL_LABEL,
54333 			(void*)&&ZEND_FETCH_STATIC_PROP_UNSET_SPEC_TMPVAR_VAR_LABEL,
54334 			(void*)&&ZEND_FETCH_STATIC_PROP_UNSET_SPEC_TMPVAR_UNUSED_LABEL,
54335 			(void*)&&ZEND_NULL_LABEL,
54336 			(void*)&&ZEND_NULL_LABEL,
54337 			(void*)&&ZEND_NULL_LABEL,
54338 			(void*)&&ZEND_NULL_LABEL,
54339 			(void*)&&ZEND_NULL_LABEL,
54340 			(void*)&&ZEND_NULL_LABEL,
54341 			(void*)&&ZEND_FETCH_STATIC_PROP_UNSET_SPEC_CV_CONST_LABEL,
54342 			(void*)&&ZEND_NULL_LABEL,
54343 			(void*)&&ZEND_FETCH_STATIC_PROP_UNSET_SPEC_CV_VAR_LABEL,
54344 			(void*)&&ZEND_FETCH_STATIC_PROP_UNSET_SPEC_CV_UNUSED_LABEL,
54345 			(void*)&&ZEND_NULL_LABEL,
54346 			(void*)&&ZEND_UNSET_STATIC_PROP_SPEC_CONST_CONST_LABEL,
54347 			(void*)&&ZEND_NULL_LABEL,
54348 			(void*)&&ZEND_UNSET_STATIC_PROP_SPEC_CONST_VAR_LABEL,
54349 			(void*)&&ZEND_UNSET_STATIC_PROP_SPEC_CONST_UNUSED_LABEL,
54350 			(void*)&&ZEND_NULL_LABEL,
54351 			(void*)&&ZEND_UNSET_STATIC_PROP_SPEC_TMPVAR_CONST_LABEL,
54352 			(void*)&&ZEND_NULL_LABEL,
54353 			(void*)&&ZEND_UNSET_STATIC_PROP_SPEC_TMPVAR_VAR_LABEL,
54354 			(void*)&&ZEND_UNSET_STATIC_PROP_SPEC_TMPVAR_UNUSED_LABEL,
54355 			(void*)&&ZEND_NULL_LABEL,
54356 			(void*)&&ZEND_UNSET_STATIC_PROP_SPEC_TMPVAR_CONST_LABEL,
54357 			(void*)&&ZEND_NULL_LABEL,
54358 			(void*)&&ZEND_UNSET_STATIC_PROP_SPEC_TMPVAR_VAR_LABEL,
54359 			(void*)&&ZEND_UNSET_STATIC_PROP_SPEC_TMPVAR_UNUSED_LABEL,
54360 			(void*)&&ZEND_NULL_LABEL,
54361 			(void*)&&ZEND_NULL_LABEL,
54362 			(void*)&&ZEND_NULL_LABEL,
54363 			(void*)&&ZEND_NULL_LABEL,
54364 			(void*)&&ZEND_NULL_LABEL,
54365 			(void*)&&ZEND_NULL_LABEL,
54366 			(void*)&&ZEND_UNSET_STATIC_PROP_SPEC_CV_CONST_LABEL,
54367 			(void*)&&ZEND_NULL_LABEL,
54368 			(void*)&&ZEND_UNSET_STATIC_PROP_SPEC_CV_VAR_LABEL,
54369 			(void*)&&ZEND_UNSET_STATIC_PROP_SPEC_CV_UNUSED_LABEL,
54370 			(void*)&&ZEND_NULL_LABEL,
54371 			(void*)&&ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_CONST_CONST_LABEL,
54372 			(void*)&&ZEND_NULL_LABEL,
54373 			(void*)&&ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_CONST_VAR_LABEL,
54374 			(void*)&&ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_CONST_UNUSED_LABEL,
54375 			(void*)&&ZEND_NULL_LABEL,
54376 			(void*)&&ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_TMPVAR_CONST_LABEL,
54377 			(void*)&&ZEND_NULL_LABEL,
54378 			(void*)&&ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_TMPVAR_VAR_LABEL,
54379 			(void*)&&ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_TMPVAR_UNUSED_LABEL,
54380 			(void*)&&ZEND_NULL_LABEL,
54381 			(void*)&&ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_TMPVAR_CONST_LABEL,
54382 			(void*)&&ZEND_NULL_LABEL,
54383 			(void*)&&ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_TMPVAR_VAR_LABEL,
54384 			(void*)&&ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_TMPVAR_UNUSED_LABEL,
54385 			(void*)&&ZEND_NULL_LABEL,
54386 			(void*)&&ZEND_NULL_LABEL,
54387 			(void*)&&ZEND_NULL_LABEL,
54388 			(void*)&&ZEND_NULL_LABEL,
54389 			(void*)&&ZEND_NULL_LABEL,
54390 			(void*)&&ZEND_NULL_LABEL,
54391 			(void*)&&ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_CV_CONST_LABEL,
54392 			(void*)&&ZEND_NULL_LABEL,
54393 			(void*)&&ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_CV_VAR_LABEL,
54394 			(void*)&&ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_CV_UNUSED_LABEL,
54395 			(void*)&&ZEND_NULL_LABEL,
54396 			(void*)&&ZEND_FETCH_CLASS_CONSTANT_SPEC_CONST_CONST_LABEL,
54397 			(void*)&&ZEND_NULL_LABEL,
54398 			(void*)&&ZEND_FETCH_CLASS_CONSTANT_SPEC_VAR_CONST_LABEL,
54399 			(void*)&&ZEND_FETCH_CLASS_CONSTANT_SPEC_UNUSED_CONST_LABEL,
54400 			(void*)&&ZEND_NULL_LABEL,
54401 			(void*)&&ZEND_BIND_LEXICAL_SPEC_TMP_CV_LABEL,
54402 			(void*)&&ZEND_BIND_STATIC_SPEC_CV_CONST_LABEL,
54403 			(void*)&&ZEND_FETCH_THIS_SPEC_UNUSED_UNUSED_LABEL,
54404 			(void*)&&ZEND_SEND_FUNC_ARG_SPEC_VAR_LABEL,
54405 			(void*)&&ZEND_ISSET_ISEMPTY_THIS_SPEC_UNUSED_UNUSED_LABEL,
54406 			(void*)&&ZEND_SWITCH_LONG_SPEC_CONST_CONST_LABEL,
54407 			(void*)&&ZEND_SWITCH_LONG_SPEC_TMPVARCV_CONST_LABEL,
54408 			(void*)&&ZEND_SWITCH_LONG_SPEC_TMPVARCV_CONST_LABEL,
54409 			(void*)&&ZEND_NULL_LABEL,
54410 			(void*)&&ZEND_SWITCH_LONG_SPEC_TMPVARCV_CONST_LABEL,
54411 			(void*)&&ZEND_SWITCH_STRING_SPEC_CONST_CONST_LABEL,
54412 			(void*)&&ZEND_SWITCH_STRING_SPEC_TMPVARCV_CONST_LABEL,
54413 			(void*)&&ZEND_SWITCH_STRING_SPEC_TMPVARCV_CONST_LABEL,
54414 			(void*)&&ZEND_NULL_LABEL,
54415 			(void*)&&ZEND_SWITCH_STRING_SPEC_TMPVARCV_CONST_LABEL,
54416 			(void*)&&ZEND_IN_ARRAY_SPEC_CONST_CONST_LABEL,
54417 			(void*)&&ZEND_IN_ARRAY_SPEC_TMP_CONST_LABEL,
54418 			(void*)&&ZEND_IN_ARRAY_SPEC_VAR_CONST_LABEL,
54419 			(void*)&&ZEND_NULL_LABEL,
54420 			(void*)&&ZEND_IN_ARRAY_SPEC_CV_CONST_LABEL,
54421 			(void*)&&ZEND_COUNT_SPEC_CONST_UNUSED_LABEL,
54422 			(void*)&&ZEND_COUNT_SPEC_TMP_UNUSED_LABEL,
54423 			(void*)&&ZEND_COUNT_SPEC_VAR_UNUSED_LABEL,
54424 			(void*)&&ZEND_NULL_LABEL,
54425 			(void*)&&ZEND_COUNT_SPEC_CV_UNUSED_LABEL,
54426 			(void*)&&ZEND_GET_CLASS_SPEC_CONST_UNUSED_LABEL,
54427 			(void*)&&ZEND_GET_CLASS_SPEC_TMP_UNUSED_LABEL,
54428 			(void*)&&ZEND_GET_CLASS_SPEC_VAR_UNUSED_LABEL,
54429 			(void*)&&ZEND_GET_CLASS_SPEC_UNUSED_UNUSED_LABEL,
54430 			(void*)&&ZEND_GET_CLASS_SPEC_CV_UNUSED_LABEL,
54431 			(void*)&&ZEND_GET_CALLED_CLASS_SPEC_UNUSED_UNUSED_LABEL,
54432 			(void*)&&ZEND_GET_TYPE_SPEC_CONST_UNUSED_LABEL,
54433 			(void*)&&ZEND_GET_TYPE_SPEC_TMP_UNUSED_LABEL,
54434 			(void*)&&ZEND_GET_TYPE_SPEC_VAR_UNUSED_LABEL,
54435 			(void*)&&ZEND_NULL_LABEL,
54436 			(void*)&&ZEND_GET_TYPE_SPEC_CV_UNUSED_LABEL,
54437 			(void*)&&ZEND_FUNC_NUM_ARGS_SPEC_UNUSED_UNUSED_LABEL,
54438 			(void*)&&ZEND_FUNC_GET_ARGS_SPEC_CONST_UNUSED_LABEL,
54439 			(void*)&&ZEND_NULL_LABEL,
54440 			(void*)&&ZEND_NULL_LABEL,
54441 			(void*)&&ZEND_FUNC_GET_ARGS_SPEC_UNUSED_UNUSED_LABEL,
54442 			(void*)&&ZEND_NULL_LABEL,
54443 			(void*)&&ZEND_UNSET_CV_SPEC_CV_UNUSED_LABEL,
54444 			(void*)&&ZEND_ISSET_ISEMPTY_CV_SPEC_CV_UNUSED_SET_LABEL,
54445 			(void*)&&ZEND_ISSET_ISEMPTY_CV_SPEC_CV_UNUSED_EMPTY_LABEL,
54446 			(void*)&&ZEND_FETCH_LIST_W_SPEC_VAR_CONST_LABEL,
54447 			(void*)&&ZEND_FETCH_LIST_W_SPEC_VAR_TMPVAR_LABEL,
54448 			(void*)&&ZEND_FETCH_LIST_W_SPEC_VAR_TMPVAR_LABEL,
54449 			(void*)&&ZEND_NULL_LABEL,
54450 			(void*)&&ZEND_FETCH_LIST_W_SPEC_VAR_CV_LABEL,
54451 			(void*)&&ZEND_JMP_FORWARD_SPEC_LABEL,
54452 			(void*)&&ZEND_NULL_LABEL,
54453 			(void*)&&ZEND_NULL_LABEL,
54454 			(void*)&&ZEND_NULL_LABEL,
54455 			(void*)&&ZEND_NULL_LABEL,
54456 			(void*)&&ZEND_NULL_LABEL,
54457 			(void*)&&ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST_LABEL,
54458 			(void*)&&ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_LABEL,
54459 			(void*)&&ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_LABEL,
54460 			(void*)&&ZEND_NULL_LABEL,
54461 			(void*)&&ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_LABEL,
54462 			(void*)&&ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST_LABEL,
54463 			(void*)&&ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_LABEL,
54464 			(void*)&&ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_LABEL,
54465 			(void*)&&ZEND_NULL_LABEL,
54466 			(void*)&&ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_LABEL,
54467 			(void*)&&ZEND_NULL_LABEL,
54468 			(void*)&&ZEND_NULL_LABEL,
54469 			(void*)&&ZEND_NULL_LABEL,
54470 			(void*)&&ZEND_NULL_LABEL,
54471 			(void*)&&ZEND_NULL_LABEL,
54472 			(void*)&&ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST_LABEL,
54473 			(void*)&&ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_LABEL,
54474 			(void*)&&ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_LABEL,
54475 			(void*)&&ZEND_NULL_LABEL,
54476 			(void*)&&ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_LABEL,
54477 			(void*)&&ZEND_NULL_LABEL,
54478 			(void*)&&ZEND_NULL_LABEL,
54479 			(void*)&&ZEND_NULL_LABEL,
54480 			(void*)&&ZEND_NULL_LABEL,
54481 			(void*)&&ZEND_NULL_LABEL,
54482 			(void*)&&ZEND_ADD_LONG_SPEC_TMPVARCV_CONST_LABEL,
54483 			(void*)&&ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
54484 			(void*)&&ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
54485 			(void*)&&ZEND_NULL_LABEL,
54486 			(void*)&&ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
54487 			(void*)&&ZEND_ADD_LONG_SPEC_TMPVARCV_CONST_LABEL,
54488 			(void*)&&ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
54489 			(void*)&&ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
54490 			(void*)&&ZEND_NULL_LABEL,
54491 			(void*)&&ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
54492 			(void*)&&ZEND_NULL_LABEL,
54493 			(void*)&&ZEND_NULL_LABEL,
54494 			(void*)&&ZEND_NULL_LABEL,
54495 			(void*)&&ZEND_NULL_LABEL,
54496 			(void*)&&ZEND_NULL_LABEL,
54497 			(void*)&&ZEND_ADD_LONG_SPEC_TMPVARCV_CONST_LABEL,
54498 			(void*)&&ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
54499 			(void*)&&ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
54500 			(void*)&&ZEND_NULL_LABEL,
54501 			(void*)&&ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
54502 			(void*)&&ZEND_NULL_LABEL,
54503 			(void*)&&ZEND_NULL_LABEL,
54504 			(void*)&&ZEND_NULL_LABEL,
54505 			(void*)&&ZEND_NULL_LABEL,
54506 			(void*)&&ZEND_NULL_LABEL,
54507 			(void*)&&ZEND_ADD_DOUBLE_SPEC_TMPVARCV_CONST_LABEL,
54508 			(void*)&&ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
54509 			(void*)&&ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
54510 			(void*)&&ZEND_NULL_LABEL,
54511 			(void*)&&ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
54512 			(void*)&&ZEND_ADD_DOUBLE_SPEC_TMPVARCV_CONST_LABEL,
54513 			(void*)&&ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
54514 			(void*)&&ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
54515 			(void*)&&ZEND_NULL_LABEL,
54516 			(void*)&&ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
54517 			(void*)&&ZEND_NULL_LABEL,
54518 			(void*)&&ZEND_NULL_LABEL,
54519 			(void*)&&ZEND_NULL_LABEL,
54520 			(void*)&&ZEND_NULL_LABEL,
54521 			(void*)&&ZEND_NULL_LABEL,
54522 			(void*)&&ZEND_ADD_DOUBLE_SPEC_TMPVARCV_CONST_LABEL,
54523 			(void*)&&ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
54524 			(void*)&&ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
54525 			(void*)&&ZEND_NULL_LABEL,
54526 			(void*)&&ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
54527 			(void*)&&ZEND_NULL_LABEL,
54528 			(void*)&&ZEND_SUB_LONG_NO_OVERFLOW_SPEC_CONST_TMPVARCV_LABEL,
54529 			(void*)&&ZEND_SUB_LONG_NO_OVERFLOW_SPEC_CONST_TMPVARCV_LABEL,
54530 			(void*)&&ZEND_NULL_LABEL,
54531 			(void*)&&ZEND_SUB_LONG_NO_OVERFLOW_SPEC_CONST_TMPVARCV_LABEL,
54532 			(void*)&&ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST_LABEL,
54533 			(void*)&&ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_LABEL,
54534 			(void*)&&ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_LABEL,
54535 			(void*)&&ZEND_NULL_LABEL,
54536 			(void*)&&ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_LABEL,
54537 			(void*)&&ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST_LABEL,
54538 			(void*)&&ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_LABEL,
54539 			(void*)&&ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_LABEL,
54540 			(void*)&&ZEND_NULL_LABEL,
54541 			(void*)&&ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_LABEL,
54542 			(void*)&&ZEND_NULL_LABEL,
54543 			(void*)&&ZEND_NULL_LABEL,
54544 			(void*)&&ZEND_NULL_LABEL,
54545 			(void*)&&ZEND_NULL_LABEL,
54546 			(void*)&&ZEND_NULL_LABEL,
54547 			(void*)&&ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST_LABEL,
54548 			(void*)&&ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_LABEL,
54549 			(void*)&&ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_LABEL,
54550 			(void*)&&ZEND_NULL_LABEL,
54551 			(void*)&&ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_LABEL,
54552 			(void*)&&ZEND_NULL_LABEL,
54553 			(void*)&&ZEND_SUB_LONG_SPEC_CONST_TMPVARCV_LABEL,
54554 			(void*)&&ZEND_SUB_LONG_SPEC_CONST_TMPVARCV_LABEL,
54555 			(void*)&&ZEND_NULL_LABEL,
54556 			(void*)&&ZEND_SUB_LONG_SPEC_CONST_TMPVARCV_LABEL,
54557 			(void*)&&ZEND_SUB_LONG_SPEC_TMPVARCV_CONST_LABEL,
54558 			(void*)&&ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
54559 			(void*)&&ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
54560 			(void*)&&ZEND_NULL_LABEL,
54561 			(void*)&&ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
54562 			(void*)&&ZEND_SUB_LONG_SPEC_TMPVARCV_CONST_LABEL,
54563 			(void*)&&ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
54564 			(void*)&&ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
54565 			(void*)&&ZEND_NULL_LABEL,
54566 			(void*)&&ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
54567 			(void*)&&ZEND_NULL_LABEL,
54568 			(void*)&&ZEND_NULL_LABEL,
54569 			(void*)&&ZEND_NULL_LABEL,
54570 			(void*)&&ZEND_NULL_LABEL,
54571 			(void*)&&ZEND_NULL_LABEL,
54572 			(void*)&&ZEND_SUB_LONG_SPEC_TMPVARCV_CONST_LABEL,
54573 			(void*)&&ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
54574 			(void*)&&ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
54575 			(void*)&&ZEND_NULL_LABEL,
54576 			(void*)&&ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
54577 			(void*)&&ZEND_NULL_LABEL,
54578 			(void*)&&ZEND_SUB_DOUBLE_SPEC_CONST_TMPVARCV_LABEL,
54579 			(void*)&&ZEND_SUB_DOUBLE_SPEC_CONST_TMPVARCV_LABEL,
54580 			(void*)&&ZEND_NULL_LABEL,
54581 			(void*)&&ZEND_SUB_DOUBLE_SPEC_CONST_TMPVARCV_LABEL,
54582 			(void*)&&ZEND_SUB_DOUBLE_SPEC_TMPVARCV_CONST_LABEL,
54583 			(void*)&&ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
54584 			(void*)&&ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
54585 			(void*)&&ZEND_NULL_LABEL,
54586 			(void*)&&ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
54587 			(void*)&&ZEND_SUB_DOUBLE_SPEC_TMPVARCV_CONST_LABEL,
54588 			(void*)&&ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
54589 			(void*)&&ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
54590 			(void*)&&ZEND_NULL_LABEL,
54591 			(void*)&&ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
54592 			(void*)&&ZEND_NULL_LABEL,
54593 			(void*)&&ZEND_NULL_LABEL,
54594 			(void*)&&ZEND_NULL_LABEL,
54595 			(void*)&&ZEND_NULL_LABEL,
54596 			(void*)&&ZEND_NULL_LABEL,
54597 			(void*)&&ZEND_SUB_DOUBLE_SPEC_TMPVARCV_CONST_LABEL,
54598 			(void*)&&ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
54599 			(void*)&&ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
54600 			(void*)&&ZEND_NULL_LABEL,
54601 			(void*)&&ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
54602 			(void*)&&ZEND_NULL_LABEL,
54603 			(void*)&&ZEND_NULL_LABEL,
54604 			(void*)&&ZEND_NULL_LABEL,
54605 			(void*)&&ZEND_NULL_LABEL,
54606 			(void*)&&ZEND_NULL_LABEL,
54607 			(void*)&&ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST_LABEL,
54608 			(void*)&&ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_LABEL,
54609 			(void*)&&ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_LABEL,
54610 			(void*)&&ZEND_NULL_LABEL,
54611 			(void*)&&ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_LABEL,
54612 			(void*)&&ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST_LABEL,
54613 			(void*)&&ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_LABEL,
54614 			(void*)&&ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_LABEL,
54615 			(void*)&&ZEND_NULL_LABEL,
54616 			(void*)&&ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_LABEL,
54617 			(void*)&&ZEND_NULL_LABEL,
54618 			(void*)&&ZEND_NULL_LABEL,
54619 			(void*)&&ZEND_NULL_LABEL,
54620 			(void*)&&ZEND_NULL_LABEL,
54621 			(void*)&&ZEND_NULL_LABEL,
54622 			(void*)&&ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST_LABEL,
54623 			(void*)&&ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_LABEL,
54624 			(void*)&&ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_LABEL,
54625 			(void*)&&ZEND_NULL_LABEL,
54626 			(void*)&&ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_LABEL,
54627 			(void*)&&ZEND_NULL_LABEL,
54628 			(void*)&&ZEND_NULL_LABEL,
54629 			(void*)&&ZEND_NULL_LABEL,
54630 			(void*)&&ZEND_NULL_LABEL,
54631 			(void*)&&ZEND_NULL_LABEL,
54632 			(void*)&&ZEND_MUL_LONG_SPEC_TMPVARCV_CONST_LABEL,
54633 			(void*)&&ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
54634 			(void*)&&ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
54635 			(void*)&&ZEND_NULL_LABEL,
54636 			(void*)&&ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
54637 			(void*)&&ZEND_MUL_LONG_SPEC_TMPVARCV_CONST_LABEL,
54638 			(void*)&&ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
54639 			(void*)&&ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
54640 			(void*)&&ZEND_NULL_LABEL,
54641 			(void*)&&ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
54642 			(void*)&&ZEND_NULL_LABEL,
54643 			(void*)&&ZEND_NULL_LABEL,
54644 			(void*)&&ZEND_NULL_LABEL,
54645 			(void*)&&ZEND_NULL_LABEL,
54646 			(void*)&&ZEND_NULL_LABEL,
54647 			(void*)&&ZEND_MUL_LONG_SPEC_TMPVARCV_CONST_LABEL,
54648 			(void*)&&ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
54649 			(void*)&&ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
54650 			(void*)&&ZEND_NULL_LABEL,
54651 			(void*)&&ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
54652 			(void*)&&ZEND_NULL_LABEL,
54653 			(void*)&&ZEND_NULL_LABEL,
54654 			(void*)&&ZEND_NULL_LABEL,
54655 			(void*)&&ZEND_NULL_LABEL,
54656 			(void*)&&ZEND_NULL_LABEL,
54657 			(void*)&&ZEND_MUL_DOUBLE_SPEC_TMPVARCV_CONST_LABEL,
54658 			(void*)&&ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
54659 			(void*)&&ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
54660 			(void*)&&ZEND_NULL_LABEL,
54661 			(void*)&&ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
54662 			(void*)&&ZEND_MUL_DOUBLE_SPEC_TMPVARCV_CONST_LABEL,
54663 			(void*)&&ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
54664 			(void*)&&ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
54665 			(void*)&&ZEND_NULL_LABEL,
54666 			(void*)&&ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
54667 			(void*)&&ZEND_NULL_LABEL,
54668 			(void*)&&ZEND_NULL_LABEL,
54669 			(void*)&&ZEND_NULL_LABEL,
54670 			(void*)&&ZEND_NULL_LABEL,
54671 			(void*)&&ZEND_NULL_LABEL,
54672 			(void*)&&ZEND_MUL_DOUBLE_SPEC_TMPVARCV_CONST_LABEL,
54673 			(void*)&&ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
54674 			(void*)&&ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
54675 			(void*)&&ZEND_NULL_LABEL,
54676 			(void*)&&ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
54677 			(void*)&&ZEND_NULL_LABEL,
54678 			(void*)&&ZEND_NULL_LABEL,
54679 			(void*)&&ZEND_NULL_LABEL,
54680 			(void*)&&ZEND_NULL_LABEL,
54681 			(void*)&&ZEND_NULL_LABEL,
54682 			(void*)&&ZEND_NULL_LABEL,
54683 			(void*)&&ZEND_NULL_LABEL,
54684 			(void*)&&ZEND_NULL_LABEL,
54685 			(void*)&&ZEND_NULL_LABEL,
54686 			(void*)&&ZEND_NULL_LABEL,
54687 			(void*)&&ZEND_NULL_LABEL,
54688 			(void*)&&ZEND_NULL_LABEL,
54689 			(void*)&&ZEND_NULL_LABEL,
54690 			(void*)&&ZEND_NULL_LABEL,
54691 			(void*)&&ZEND_NULL_LABEL,
54692 			(void*)&&ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_LABEL,
54693 			(void*)&&ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ_LABEL,
54694 			(void*)&&ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ_LABEL,
54695 			(void*)&&ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
54696 			(void*)&&ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
54697 			(void*)&&ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
54698 			(void*)&&ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
54699 			(void*)&&ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
54700 			(void*)&&ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
54701 			(void*)&&ZEND_NULL_LABEL,
54702 			(void*)&&ZEND_NULL_LABEL,
54703 			(void*)&&ZEND_NULL_LABEL,
54704 			(void*)&&ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
54705 			(void*)&&ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
54706 			(void*)&&ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
54707 			(void*)&&ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_LABEL,
54708 			(void*)&&ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ_LABEL,
54709 			(void*)&&ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ_LABEL,
54710 			(void*)&&ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
54711 			(void*)&&ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
54712 			(void*)&&ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
54713 			(void*)&&ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
54714 			(void*)&&ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
54715 			(void*)&&ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
54716 			(void*)&&ZEND_NULL_LABEL,
54717 			(void*)&&ZEND_NULL_LABEL,
54718 			(void*)&&ZEND_NULL_LABEL,
54719 			(void*)&&ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
54720 			(void*)&&ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
54721 			(void*)&&ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
54722 			(void*)&&ZEND_NULL_LABEL,
54723 			(void*)&&ZEND_NULL_LABEL,
54724 			(void*)&&ZEND_NULL_LABEL,
54725 			(void*)&&ZEND_NULL_LABEL,
54726 			(void*)&&ZEND_NULL_LABEL,
54727 			(void*)&&ZEND_NULL_LABEL,
54728 			(void*)&&ZEND_NULL_LABEL,
54729 			(void*)&&ZEND_NULL_LABEL,
54730 			(void*)&&ZEND_NULL_LABEL,
54731 			(void*)&&ZEND_NULL_LABEL,
54732 			(void*)&&ZEND_NULL_LABEL,
54733 			(void*)&&ZEND_NULL_LABEL,
54734 			(void*)&&ZEND_NULL_LABEL,
54735 			(void*)&&ZEND_NULL_LABEL,
54736 			(void*)&&ZEND_NULL_LABEL,
54737 			(void*)&&ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_LABEL,
54738 			(void*)&&ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ_LABEL,
54739 			(void*)&&ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ_LABEL,
54740 			(void*)&&ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
54741 			(void*)&&ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
54742 			(void*)&&ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
54743 			(void*)&&ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
54744 			(void*)&&ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
54745 			(void*)&&ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
54746 			(void*)&&ZEND_NULL_LABEL,
54747 			(void*)&&ZEND_NULL_LABEL,
54748 			(void*)&&ZEND_NULL_LABEL,
54749 			(void*)&&ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
54750 			(void*)&&ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
54751 			(void*)&&ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
54752 			(void*)&&ZEND_NULL_LABEL,
54753 			(void*)&&ZEND_NULL_LABEL,
54754 			(void*)&&ZEND_NULL_LABEL,
54755 			(void*)&&ZEND_NULL_LABEL,
54756 			(void*)&&ZEND_NULL_LABEL,
54757 			(void*)&&ZEND_NULL_LABEL,
54758 			(void*)&&ZEND_NULL_LABEL,
54759 			(void*)&&ZEND_NULL_LABEL,
54760 			(void*)&&ZEND_NULL_LABEL,
54761 			(void*)&&ZEND_NULL_LABEL,
54762 			(void*)&&ZEND_NULL_LABEL,
54763 			(void*)&&ZEND_NULL_LABEL,
54764 			(void*)&&ZEND_NULL_LABEL,
54765 			(void*)&&ZEND_NULL_LABEL,
54766 			(void*)&&ZEND_NULL_LABEL,
54767 			(void*)&&ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_LABEL,
54768 			(void*)&&ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ_LABEL,
54769 			(void*)&&ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ_LABEL,
54770 			(void*)&&ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
54771 			(void*)&&ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
54772 			(void*)&&ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
54773 			(void*)&&ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
54774 			(void*)&&ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
54775 			(void*)&&ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
54776 			(void*)&&ZEND_NULL_LABEL,
54777 			(void*)&&ZEND_NULL_LABEL,
54778 			(void*)&&ZEND_NULL_LABEL,
54779 			(void*)&&ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
54780 			(void*)&&ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
54781 			(void*)&&ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
54782 			(void*)&&ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_LABEL,
54783 			(void*)&&ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ_LABEL,
54784 			(void*)&&ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ_LABEL,
54785 			(void*)&&ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
54786 			(void*)&&ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
54787 			(void*)&&ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
54788 			(void*)&&ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
54789 			(void*)&&ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
54790 			(void*)&&ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
54791 			(void*)&&ZEND_NULL_LABEL,
54792 			(void*)&&ZEND_NULL_LABEL,
54793 			(void*)&&ZEND_NULL_LABEL,
54794 			(void*)&&ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
54795 			(void*)&&ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
54796 			(void*)&&ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
54797 			(void*)&&ZEND_NULL_LABEL,
54798 			(void*)&&ZEND_NULL_LABEL,
54799 			(void*)&&ZEND_NULL_LABEL,
54800 			(void*)&&ZEND_NULL_LABEL,
54801 			(void*)&&ZEND_NULL_LABEL,
54802 			(void*)&&ZEND_NULL_LABEL,
54803 			(void*)&&ZEND_NULL_LABEL,
54804 			(void*)&&ZEND_NULL_LABEL,
54805 			(void*)&&ZEND_NULL_LABEL,
54806 			(void*)&&ZEND_NULL_LABEL,
54807 			(void*)&&ZEND_NULL_LABEL,
54808 			(void*)&&ZEND_NULL_LABEL,
54809 			(void*)&&ZEND_NULL_LABEL,
54810 			(void*)&&ZEND_NULL_LABEL,
54811 			(void*)&&ZEND_NULL_LABEL,
54812 			(void*)&&ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_LABEL,
54813 			(void*)&&ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ_LABEL,
54814 			(void*)&&ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ_LABEL,
54815 			(void*)&&ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
54816 			(void*)&&ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
54817 			(void*)&&ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
54818 			(void*)&&ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
54819 			(void*)&&ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
54820 			(void*)&&ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
54821 			(void*)&&ZEND_NULL_LABEL,
54822 			(void*)&&ZEND_NULL_LABEL,
54823 			(void*)&&ZEND_NULL_LABEL,
54824 			(void*)&&ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
54825 			(void*)&&ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
54826 			(void*)&&ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
54827 			(void*)&&ZEND_NULL_LABEL,
54828 			(void*)&&ZEND_NULL_LABEL,
54829 			(void*)&&ZEND_NULL_LABEL,
54830 			(void*)&&ZEND_NULL_LABEL,
54831 			(void*)&&ZEND_NULL_LABEL,
54832 			(void*)&&ZEND_NULL_LABEL,
54833 			(void*)&&ZEND_NULL_LABEL,
54834 			(void*)&&ZEND_NULL_LABEL,
54835 			(void*)&&ZEND_NULL_LABEL,
54836 			(void*)&&ZEND_NULL_LABEL,
54837 			(void*)&&ZEND_NULL_LABEL,
54838 			(void*)&&ZEND_NULL_LABEL,
54839 			(void*)&&ZEND_NULL_LABEL,
54840 			(void*)&&ZEND_NULL_LABEL,
54841 			(void*)&&ZEND_NULL_LABEL,
54842 			(void*)&&ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_LABEL,
54843 			(void*)&&ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ_LABEL,
54844 			(void*)&&ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ_LABEL,
54845 			(void*)&&ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
54846 			(void*)&&ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
54847 			(void*)&&ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
54848 			(void*)&&ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
54849 			(void*)&&ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
54850 			(void*)&&ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
54851 			(void*)&&ZEND_NULL_LABEL,
54852 			(void*)&&ZEND_NULL_LABEL,
54853 			(void*)&&ZEND_NULL_LABEL,
54854 			(void*)&&ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
54855 			(void*)&&ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
54856 			(void*)&&ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
54857 			(void*)&&ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_LABEL,
54858 			(void*)&&ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ_LABEL,
54859 			(void*)&&ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ_LABEL,
54860 			(void*)&&ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
54861 			(void*)&&ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
54862 			(void*)&&ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
54863 			(void*)&&ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
54864 			(void*)&&ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
54865 			(void*)&&ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
54866 			(void*)&&ZEND_NULL_LABEL,
54867 			(void*)&&ZEND_NULL_LABEL,
54868 			(void*)&&ZEND_NULL_LABEL,
54869 			(void*)&&ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
54870 			(void*)&&ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
54871 			(void*)&&ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
54872 			(void*)&&ZEND_NULL_LABEL,
54873 			(void*)&&ZEND_NULL_LABEL,
54874 			(void*)&&ZEND_NULL_LABEL,
54875 			(void*)&&ZEND_NULL_LABEL,
54876 			(void*)&&ZEND_NULL_LABEL,
54877 			(void*)&&ZEND_NULL_LABEL,
54878 			(void*)&&ZEND_NULL_LABEL,
54879 			(void*)&&ZEND_NULL_LABEL,
54880 			(void*)&&ZEND_NULL_LABEL,
54881 			(void*)&&ZEND_NULL_LABEL,
54882 			(void*)&&ZEND_NULL_LABEL,
54883 			(void*)&&ZEND_NULL_LABEL,
54884 			(void*)&&ZEND_NULL_LABEL,
54885 			(void*)&&ZEND_NULL_LABEL,
54886 			(void*)&&ZEND_NULL_LABEL,
54887 			(void*)&&ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_LABEL,
54888 			(void*)&&ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ_LABEL,
54889 			(void*)&&ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ_LABEL,
54890 			(void*)&&ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
54891 			(void*)&&ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
54892 			(void*)&&ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
54893 			(void*)&&ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
54894 			(void*)&&ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
54895 			(void*)&&ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
54896 			(void*)&&ZEND_NULL_LABEL,
54897 			(void*)&&ZEND_NULL_LABEL,
54898 			(void*)&&ZEND_NULL_LABEL,
54899 			(void*)&&ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
54900 			(void*)&&ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
54901 			(void*)&&ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
54902 			(void*)&&ZEND_NULL_LABEL,
54903 			(void*)&&ZEND_NULL_LABEL,
54904 			(void*)&&ZEND_NULL_LABEL,
54905 			(void*)&&ZEND_NULL_LABEL,
54906 			(void*)&&ZEND_NULL_LABEL,
54907 			(void*)&&ZEND_NULL_LABEL,
54908 			(void*)&&ZEND_NULL_LABEL,
54909 			(void*)&&ZEND_NULL_LABEL,
54910 			(void*)&&ZEND_NULL_LABEL,
54911 			(void*)&&ZEND_NULL_LABEL,
54912 			(void*)&&ZEND_NULL_LABEL,
54913 			(void*)&&ZEND_NULL_LABEL,
54914 			(void*)&&ZEND_NULL_LABEL,
54915 			(void*)&&ZEND_NULL_LABEL,
54916 			(void*)&&ZEND_NULL_LABEL,
54917 			(void*)&&ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_LABEL,
54918 			(void*)&&ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ_LABEL,
54919 			(void*)&&ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ_LABEL,
54920 			(void*)&&ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
54921 			(void*)&&ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
54922 			(void*)&&ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
54923 			(void*)&&ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
54924 			(void*)&&ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
54925 			(void*)&&ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
54926 			(void*)&&ZEND_NULL_LABEL,
54927 			(void*)&&ZEND_NULL_LABEL,
54928 			(void*)&&ZEND_NULL_LABEL,
54929 			(void*)&&ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
54930 			(void*)&&ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
54931 			(void*)&&ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
54932 			(void*)&&ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_LABEL,
54933 			(void*)&&ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ_LABEL,
54934 			(void*)&&ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ_LABEL,
54935 			(void*)&&ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
54936 			(void*)&&ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
54937 			(void*)&&ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
54938 			(void*)&&ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
54939 			(void*)&&ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
54940 			(void*)&&ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
54941 			(void*)&&ZEND_NULL_LABEL,
54942 			(void*)&&ZEND_NULL_LABEL,
54943 			(void*)&&ZEND_NULL_LABEL,
54944 			(void*)&&ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
54945 			(void*)&&ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
54946 			(void*)&&ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
54947 			(void*)&&ZEND_NULL_LABEL,
54948 			(void*)&&ZEND_NULL_LABEL,
54949 			(void*)&&ZEND_NULL_LABEL,
54950 			(void*)&&ZEND_NULL_LABEL,
54951 			(void*)&&ZEND_NULL_LABEL,
54952 			(void*)&&ZEND_NULL_LABEL,
54953 			(void*)&&ZEND_NULL_LABEL,
54954 			(void*)&&ZEND_NULL_LABEL,
54955 			(void*)&&ZEND_NULL_LABEL,
54956 			(void*)&&ZEND_NULL_LABEL,
54957 			(void*)&&ZEND_NULL_LABEL,
54958 			(void*)&&ZEND_NULL_LABEL,
54959 			(void*)&&ZEND_NULL_LABEL,
54960 			(void*)&&ZEND_NULL_LABEL,
54961 			(void*)&&ZEND_NULL_LABEL,
54962 			(void*)&&ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_LABEL,
54963 			(void*)&&ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ_LABEL,
54964 			(void*)&&ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ_LABEL,
54965 			(void*)&&ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
54966 			(void*)&&ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
54967 			(void*)&&ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
54968 			(void*)&&ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
54969 			(void*)&&ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
54970 			(void*)&&ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
54971 			(void*)&&ZEND_NULL_LABEL,
54972 			(void*)&&ZEND_NULL_LABEL,
54973 			(void*)&&ZEND_NULL_LABEL,
54974 			(void*)&&ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
54975 			(void*)&&ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
54976 			(void*)&&ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
54977 			(void*)&&ZEND_NULL_LABEL,
54978 			(void*)&&ZEND_NULL_LABEL,
54979 			(void*)&&ZEND_NULL_LABEL,
54980 			(void*)&&ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_LABEL,
54981 			(void*)&&ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPZ_LABEL,
54982 			(void*)&&ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPNZ_LABEL,
54983 			(void*)&&ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_LABEL,
54984 			(void*)&&ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPZ_LABEL,
54985 			(void*)&&ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPNZ_LABEL,
54986 			(void*)&&ZEND_NULL_LABEL,
54987 			(void*)&&ZEND_NULL_LABEL,
54988 			(void*)&&ZEND_NULL_LABEL,
54989 			(void*)&&ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_LABEL,
54990 			(void*)&&ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPZ_LABEL,
54991 			(void*)&&ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPNZ_LABEL,
54992 			(void*)&&ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_LABEL,
54993 			(void*)&&ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPZ_LABEL,
54994 			(void*)&&ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPNZ_LABEL,
54995 			(void*)&&ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
54996 			(void*)&&ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
54997 			(void*)&&ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
54998 			(void*)&&ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
54999 			(void*)&&ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
55000 			(void*)&&ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
55001 			(void*)&&ZEND_NULL_LABEL,
55002 			(void*)&&ZEND_NULL_LABEL,
55003 			(void*)&&ZEND_NULL_LABEL,
55004 			(void*)&&ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
55005 			(void*)&&ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
55006 			(void*)&&ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
55007 			(void*)&&ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_LABEL,
55008 			(void*)&&ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPZ_LABEL,
55009 			(void*)&&ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPNZ_LABEL,
55010 			(void*)&&ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
55011 			(void*)&&ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
55012 			(void*)&&ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
55013 			(void*)&&ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
55014 			(void*)&&ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
55015 			(void*)&&ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
55016 			(void*)&&ZEND_NULL_LABEL,
55017 			(void*)&&ZEND_NULL_LABEL,
55018 			(void*)&&ZEND_NULL_LABEL,
55019 			(void*)&&ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
55020 			(void*)&&ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
55021 			(void*)&&ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
55022 			(void*)&&ZEND_NULL_LABEL,
55023 			(void*)&&ZEND_NULL_LABEL,
55024 			(void*)&&ZEND_NULL_LABEL,
55025 			(void*)&&ZEND_NULL_LABEL,
55026 			(void*)&&ZEND_NULL_LABEL,
55027 			(void*)&&ZEND_NULL_LABEL,
55028 			(void*)&&ZEND_NULL_LABEL,
55029 			(void*)&&ZEND_NULL_LABEL,
55030 			(void*)&&ZEND_NULL_LABEL,
55031 			(void*)&&ZEND_NULL_LABEL,
55032 			(void*)&&ZEND_NULL_LABEL,
55033 			(void*)&&ZEND_NULL_LABEL,
55034 			(void*)&&ZEND_NULL_LABEL,
55035 			(void*)&&ZEND_NULL_LABEL,
55036 			(void*)&&ZEND_NULL_LABEL,
55037 			(void*)&&ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_LABEL,
55038 			(void*)&&ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPZ_LABEL,
55039 			(void*)&&ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPNZ_LABEL,
55040 			(void*)&&ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
55041 			(void*)&&ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
55042 			(void*)&&ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
55043 			(void*)&&ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
55044 			(void*)&&ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
55045 			(void*)&&ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
55046 			(void*)&&ZEND_NULL_LABEL,
55047 			(void*)&&ZEND_NULL_LABEL,
55048 			(void*)&&ZEND_NULL_LABEL,
55049 			(void*)&&ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
55050 			(void*)&&ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
55051 			(void*)&&ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
55052 			(void*)&&ZEND_NULL_LABEL,
55053 			(void*)&&ZEND_NULL_LABEL,
55054 			(void*)&&ZEND_NULL_LABEL,
55055 			(void*)&&ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_LABEL,
55056 			(void*)&&ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ_LABEL,
55057 			(void*)&&ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ_LABEL,
55058 			(void*)&&ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_LABEL,
55059 			(void*)&&ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ_LABEL,
55060 			(void*)&&ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ_LABEL,
55061 			(void*)&&ZEND_NULL_LABEL,
55062 			(void*)&&ZEND_NULL_LABEL,
55063 			(void*)&&ZEND_NULL_LABEL,
55064 			(void*)&&ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_LABEL,
55065 			(void*)&&ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ_LABEL,
55066 			(void*)&&ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ_LABEL,
55067 			(void*)&&ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_LABEL,
55068 			(void*)&&ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ_LABEL,
55069 			(void*)&&ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ_LABEL,
55070 			(void*)&&ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
55071 			(void*)&&ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
55072 			(void*)&&ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
55073 			(void*)&&ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
55074 			(void*)&&ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
55075 			(void*)&&ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
55076 			(void*)&&ZEND_NULL_LABEL,
55077 			(void*)&&ZEND_NULL_LABEL,
55078 			(void*)&&ZEND_NULL_LABEL,
55079 			(void*)&&ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
55080 			(void*)&&ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
55081 			(void*)&&ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
55082 			(void*)&&ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_LABEL,
55083 			(void*)&&ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ_LABEL,
55084 			(void*)&&ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ_LABEL,
55085 			(void*)&&ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
55086 			(void*)&&ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
55087 			(void*)&&ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
55088 			(void*)&&ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
55089 			(void*)&&ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
55090 			(void*)&&ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
55091 			(void*)&&ZEND_NULL_LABEL,
55092 			(void*)&&ZEND_NULL_LABEL,
55093 			(void*)&&ZEND_NULL_LABEL,
55094 			(void*)&&ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
55095 			(void*)&&ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
55096 			(void*)&&ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
55097 			(void*)&&ZEND_NULL_LABEL,
55098 			(void*)&&ZEND_NULL_LABEL,
55099 			(void*)&&ZEND_NULL_LABEL,
55100 			(void*)&&ZEND_NULL_LABEL,
55101 			(void*)&&ZEND_NULL_LABEL,
55102 			(void*)&&ZEND_NULL_LABEL,
55103 			(void*)&&ZEND_NULL_LABEL,
55104 			(void*)&&ZEND_NULL_LABEL,
55105 			(void*)&&ZEND_NULL_LABEL,
55106 			(void*)&&ZEND_NULL_LABEL,
55107 			(void*)&&ZEND_NULL_LABEL,
55108 			(void*)&&ZEND_NULL_LABEL,
55109 			(void*)&&ZEND_NULL_LABEL,
55110 			(void*)&&ZEND_NULL_LABEL,
55111 			(void*)&&ZEND_NULL_LABEL,
55112 			(void*)&&ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_LABEL,
55113 			(void*)&&ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ_LABEL,
55114 			(void*)&&ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ_LABEL,
55115 			(void*)&&ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
55116 			(void*)&&ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
55117 			(void*)&&ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
55118 			(void*)&&ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
55119 			(void*)&&ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
55120 			(void*)&&ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
55121 			(void*)&&ZEND_NULL_LABEL,
55122 			(void*)&&ZEND_NULL_LABEL,
55123 			(void*)&&ZEND_NULL_LABEL,
55124 			(void*)&&ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
55125 			(void*)&&ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
55126 			(void*)&&ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
55127 			(void*)&&ZEND_NULL_LABEL,
55128 			(void*)&&ZEND_NULL_LABEL,
55129 			(void*)&&ZEND_NULL_LABEL,
55130 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_LABEL,
55131 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPZ_LABEL,
55132 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPNZ_LABEL,
55133 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_LABEL,
55134 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPZ_LABEL,
55135 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPNZ_LABEL,
55136 			(void*)&&ZEND_NULL_LABEL,
55137 			(void*)&&ZEND_NULL_LABEL,
55138 			(void*)&&ZEND_NULL_LABEL,
55139 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_LABEL,
55140 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPZ_LABEL,
55141 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPNZ_LABEL,
55142 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_LABEL,
55143 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ_LABEL,
55144 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ_LABEL,
55145 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
55146 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
55147 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
55148 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
55149 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
55150 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
55151 			(void*)&&ZEND_NULL_LABEL,
55152 			(void*)&&ZEND_NULL_LABEL,
55153 			(void*)&&ZEND_NULL_LABEL,
55154 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
55155 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
55156 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
55157 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_LABEL,
55158 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ_LABEL,
55159 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ_LABEL,
55160 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
55161 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
55162 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
55163 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
55164 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
55165 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
55166 			(void*)&&ZEND_NULL_LABEL,
55167 			(void*)&&ZEND_NULL_LABEL,
55168 			(void*)&&ZEND_NULL_LABEL,
55169 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
55170 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
55171 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
55172 			(void*)&&ZEND_NULL_LABEL,
55173 			(void*)&&ZEND_NULL_LABEL,
55174 			(void*)&&ZEND_NULL_LABEL,
55175 			(void*)&&ZEND_NULL_LABEL,
55176 			(void*)&&ZEND_NULL_LABEL,
55177 			(void*)&&ZEND_NULL_LABEL,
55178 			(void*)&&ZEND_NULL_LABEL,
55179 			(void*)&&ZEND_NULL_LABEL,
55180 			(void*)&&ZEND_NULL_LABEL,
55181 			(void*)&&ZEND_NULL_LABEL,
55182 			(void*)&&ZEND_NULL_LABEL,
55183 			(void*)&&ZEND_NULL_LABEL,
55184 			(void*)&&ZEND_NULL_LABEL,
55185 			(void*)&&ZEND_NULL_LABEL,
55186 			(void*)&&ZEND_NULL_LABEL,
55187 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_LABEL,
55188 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ_LABEL,
55189 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ_LABEL,
55190 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
55191 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
55192 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
55193 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
55194 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
55195 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
55196 			(void*)&&ZEND_NULL_LABEL,
55197 			(void*)&&ZEND_NULL_LABEL,
55198 			(void*)&&ZEND_NULL_LABEL,
55199 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
55200 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
55201 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
55202 			(void*)&&ZEND_NULL_LABEL,
55203 			(void*)&&ZEND_NULL_LABEL,
55204 			(void*)&&ZEND_NULL_LABEL,
55205 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_LABEL,
55206 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ_LABEL,
55207 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ_LABEL,
55208 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_LABEL,
55209 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ_LABEL,
55210 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ_LABEL,
55211 			(void*)&&ZEND_NULL_LABEL,
55212 			(void*)&&ZEND_NULL_LABEL,
55213 			(void*)&&ZEND_NULL_LABEL,
55214 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_LABEL,
55215 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ_LABEL,
55216 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ_LABEL,
55217 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_LABEL,
55218 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ_LABEL,
55219 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ_LABEL,
55220 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
55221 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
55222 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
55223 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
55224 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
55225 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
55226 			(void*)&&ZEND_NULL_LABEL,
55227 			(void*)&&ZEND_NULL_LABEL,
55228 			(void*)&&ZEND_NULL_LABEL,
55229 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
55230 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
55231 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
55232 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_LABEL,
55233 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ_LABEL,
55234 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ_LABEL,
55235 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
55236 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
55237 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
55238 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
55239 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
55240 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
55241 			(void*)&&ZEND_NULL_LABEL,
55242 			(void*)&&ZEND_NULL_LABEL,
55243 			(void*)&&ZEND_NULL_LABEL,
55244 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
55245 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
55246 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
55247 			(void*)&&ZEND_NULL_LABEL,
55248 			(void*)&&ZEND_NULL_LABEL,
55249 			(void*)&&ZEND_NULL_LABEL,
55250 			(void*)&&ZEND_NULL_LABEL,
55251 			(void*)&&ZEND_NULL_LABEL,
55252 			(void*)&&ZEND_NULL_LABEL,
55253 			(void*)&&ZEND_NULL_LABEL,
55254 			(void*)&&ZEND_NULL_LABEL,
55255 			(void*)&&ZEND_NULL_LABEL,
55256 			(void*)&&ZEND_NULL_LABEL,
55257 			(void*)&&ZEND_NULL_LABEL,
55258 			(void*)&&ZEND_NULL_LABEL,
55259 			(void*)&&ZEND_NULL_LABEL,
55260 			(void*)&&ZEND_NULL_LABEL,
55261 			(void*)&&ZEND_NULL_LABEL,
55262 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_LABEL,
55263 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ_LABEL,
55264 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ_LABEL,
55265 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
55266 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
55267 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
55268 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
55269 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
55270 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
55271 			(void*)&&ZEND_NULL_LABEL,
55272 			(void*)&&ZEND_NULL_LABEL,
55273 			(void*)&&ZEND_NULL_LABEL,
55274 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
55275 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
55276 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
55277 			(void*)&&ZEND_PRE_INC_LONG_NO_OVERFLOW_SPEC_CV_RETVAL_UNUSED_LABEL,
55278 			(void*)&&ZEND_PRE_INC_LONG_NO_OVERFLOW_SPEC_CV_RETVAL_USED_LABEL,
55279 			(void*)&&ZEND_PRE_INC_LONG_SPEC_CV_RETVAL_UNUSED_LABEL,
55280 			(void*)&&ZEND_PRE_INC_LONG_SPEC_CV_RETVAL_USED_LABEL,
55281 			(void*)&&ZEND_PRE_INC_LONG_OR_DOUBLE_SPEC_CV_RETVAL_UNUSED_LABEL,
55282 			(void*)&&ZEND_PRE_INC_LONG_OR_DOUBLE_SPEC_CV_RETVAL_USED_LABEL,
55283 			(void*)&&ZEND_PRE_DEC_LONG_NO_OVERFLOW_SPEC_CV_RETVAL_UNUSED_LABEL,
55284 			(void*)&&ZEND_PRE_DEC_LONG_NO_OVERFLOW_SPEC_CV_RETVAL_USED_LABEL,
55285 			(void*)&&ZEND_PRE_DEC_LONG_SPEC_CV_RETVAL_UNUSED_LABEL,
55286 			(void*)&&ZEND_PRE_DEC_LONG_SPEC_CV_RETVAL_USED_LABEL,
55287 			(void*)&&ZEND_PRE_DEC_LONG_OR_DOUBLE_SPEC_CV_RETVAL_UNUSED_LABEL,
55288 			(void*)&&ZEND_PRE_DEC_LONG_OR_DOUBLE_SPEC_CV_RETVAL_USED_LABEL,
55289 			(void*)&&ZEND_POST_INC_LONG_NO_OVERFLOW_SPEC_CV_LABEL,
55290 			(void*)&&ZEND_POST_INC_LONG_SPEC_CV_LABEL,
55291 			(void*)&&ZEND_POST_INC_LONG_OR_DOUBLE_SPEC_CV_LABEL,
55292 			(void*)&&ZEND_POST_DEC_LONG_NO_OVERFLOW_SPEC_CV_LABEL,
55293 			(void*)&&ZEND_POST_DEC_LONG_SPEC_CV_LABEL,
55294 			(void*)&&ZEND_POST_DEC_LONG_OR_DOUBLE_SPEC_CV_LABEL,
55295 			(void*)&&ZEND_QM_ASSIGN_DOUBLE_SPEC_CONST_LABEL,
55296 			(void*)&&ZEND_QM_ASSIGN_DOUBLE_SPEC_TMPVARCV_LABEL,
55297 			(void*)&&ZEND_QM_ASSIGN_DOUBLE_SPEC_TMPVARCV_LABEL,
55298 			(void*)&&ZEND_NULL_LABEL,
55299 			(void*)&&ZEND_QM_ASSIGN_DOUBLE_SPEC_TMPVARCV_LABEL,
55300 			(void*)&&ZEND_QM_ASSIGN_NOREF_SPEC_CONST_LABEL,
55301 			(void*)&&ZEND_QM_ASSIGN_NOREF_SPEC_TMPVARCV_LABEL,
55302 			(void*)&&ZEND_QM_ASSIGN_NOREF_SPEC_TMPVARCV_LABEL,
55303 			(void*)&&ZEND_NULL_LABEL,
55304 			(void*)&&ZEND_QM_ASSIGN_NOREF_SPEC_TMPVARCV_LABEL,
55305 			(void*)&&ZEND_NULL_LABEL,
55306 			(void*)&&ZEND_FETCH_DIM_R_INDEX_SPEC_CONST_TMPVARCV_LABEL,
55307 			(void*)&&ZEND_FETCH_DIM_R_INDEX_SPEC_CONST_TMPVARCV_LABEL,
55308 			(void*)&&ZEND_NULL_LABEL,
55309 			(void*)&&ZEND_FETCH_DIM_R_INDEX_SPEC_CONST_TMPVARCV_LABEL,
55310 			(void*)&&ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_CONST_LABEL,
55311 			(void*)&&ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_TMPVARCV_LABEL,
55312 			(void*)&&ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_TMPVARCV_LABEL,
55313 			(void*)&&ZEND_NULL_LABEL,
55314 			(void*)&&ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_TMPVARCV_LABEL,
55315 			(void*)&&ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_CONST_LABEL,
55316 			(void*)&&ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_TMPVARCV_LABEL,
55317 			(void*)&&ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_TMPVARCV_LABEL,
55318 			(void*)&&ZEND_NULL_LABEL,
55319 			(void*)&&ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_TMPVARCV_LABEL,
55320 			(void*)&&ZEND_NULL_LABEL,
55321 			(void*)&&ZEND_NULL_LABEL,
55322 			(void*)&&ZEND_NULL_LABEL,
55323 			(void*)&&ZEND_NULL_LABEL,
55324 			(void*)&&ZEND_NULL_LABEL,
55325 			(void*)&&ZEND_FETCH_DIM_R_INDEX_SPEC_CV_CONST_LABEL,
55326 			(void*)&&ZEND_FETCH_DIM_R_INDEX_SPEC_CV_TMPVARCV_LABEL,
55327 			(void*)&&ZEND_FETCH_DIM_R_INDEX_SPEC_CV_TMPVARCV_LABEL,
55328 			(void*)&&ZEND_NULL_LABEL,
55329 			(void*)&&ZEND_FETCH_DIM_R_INDEX_SPEC_CV_TMPVARCV_LABEL,
55330 			(void*)&&ZEND_NULL_LABEL,
55331 			(void*)&&ZEND_NULL_LABEL,
55332 			(void*)&&ZEND_SEND_VAR_SIMPLE_SPEC_VAR_LABEL,
55333 			(void*)&&ZEND_NULL_LABEL,
55334 			(void*)&&ZEND_SEND_VAR_SIMPLE_SPEC_CV_LABEL,
55335 			(void*)&&ZEND_NULL_LABEL,
55336 			(void*)&&ZEND_NULL_LABEL,
55337 			(void*)&&ZEND_SEND_VAR_EX_SIMPLE_SPEC_VAR_LABEL,
55338 			(void*)&&ZEND_NULL_LABEL,
55339 			(void*)&&ZEND_SEND_VAR_EX_SIMPLE_SPEC_CV_LABEL,
55340 			(void*)&&ZEND_SEND_VAL_SIMPLE_SPEC_CONST_LABEL,
55341 			(void*)&&ZEND_SEND_VAL_EX_SIMPLE_SPEC_CONST_LABEL,
55342 			(void*)&&ZEND_FE_FETCH_R_SIMPLE_SPEC_VAR_CV_RETVAL_UNUSED_LABEL,
55343 			(void*)&&ZEND_FE_FETCH_R_SIMPLE_SPEC_VAR_CV_RETVAL_USED_LABEL,
55344 			(void*)&&ZEND_NULL_LABEL
55345 		};
55346 		zend_opcode_handlers = (const void **) labels;
55347 		zend_handlers_count = sizeof(labels) / sizeof(void*);
55348 		memset(&hybrid_halt_op, 0, sizeof(hybrid_halt_op));
55349 		hybrid_halt_op.handler = (void*)&&HYBRID_HALT_LABEL;
55350 		goto HYBRID_HALT_LABEL;
55351 	}
55352 #endif
55353 
55354 	LOAD_OPLINE();
55355 	ZEND_VM_LOOP_INTERRUPT_CHECK();
55356 
55357 	while (1) {
55358 #if !defined(ZEND_VM_FP_GLOBAL_REG) || !defined(ZEND_VM_IP_GLOBAL_REG)
55359 			int ret;
55360 #endif
55361 #if (ZEND_VM_KIND == ZEND_VM_KIND_HYBRID)
55362 		HYBRID_SWITCH() {
55363 #else
55364 #if defined(ZEND_VM_FP_GLOBAL_REG) && defined(ZEND_VM_IP_GLOBAL_REG)
55365 		((opcode_handler_t)OPLINE->handler)(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55366 		if (UNEXPECTED(!OPLINE)) {
55367 #else
55368 		if (UNEXPECTED((ret = ((opcode_handler_t)OPLINE->handler)(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU)) != 0)) {
55369 #endif
55370 #endif
55371 #if (ZEND_VM_KIND == ZEND_VM_KIND_HYBRID)
55372 zend_leave_helper_SPEC_LABEL:
55373 {
55374 	zend_execute_data *old_execute_data;
55375 	uint32_t call_info = EX_CALL_INFO();
55376 
55377 	if (EXPECTED((call_info & (ZEND_CALL_CODE|ZEND_CALL_TOP|ZEND_CALL_HAS_SYMBOL_TABLE|ZEND_CALL_FREE_EXTRA_ARGS|ZEND_CALL_ALLOCATED)) == 0)) {
55378 		EG(current_execute_data) = EX(prev_execute_data);
55379 		i_free_compiled_variables(execute_data);
55380 
55381 		if (UNEXPECTED(call_info & ZEND_CALL_RELEASE_THIS)) {
55382 			zend_object *object = Z_OBJ(execute_data->This);
55383 #if 0
55384 			if (UNEXPECTED(EG(exception) != NULL) && (EX(opline)->op1.num & ZEND_CALL_CTOR)) {
55385 #else
55386 			if (UNEXPECTED(EG(exception) != NULL) && (call_info & ZEND_CALL_CTOR)) {
55387 #endif
55388 				GC_DELREF(object);
55389 				zend_object_store_ctor_failed(object);
55390 			}
55391 			OBJ_RELEASE(object);
55392 		} else if (UNEXPECTED(call_info & ZEND_CALL_CLOSURE)) {
55393 			OBJ_RELEASE(ZEND_CLOSURE_OBJECT(EX(func)));
55394 		}
55395 		EG(vm_stack_top) = (zval*)execute_data;
55396 		execute_data = EX(prev_execute_data);
55397 
55398 		if (UNEXPECTED(EG(exception) != NULL)) {
55399 			zend_rethrow_exception(execute_data);
55400 			HANDLE_EXCEPTION_LEAVE();
55401 		}
55402 
55403 		LOAD_NEXT_OPLINE();
55404 		ZEND_VM_LEAVE();
55405 	} else if (EXPECTED((call_info & (ZEND_CALL_CODE|ZEND_CALL_TOP)) == 0)) {
55406 		EG(current_execute_data) = EX(prev_execute_data);
55407 		i_free_compiled_variables(execute_data);
55408 
55409 		if (UNEXPECTED(call_info & ZEND_CALL_HAS_SYMBOL_TABLE)) {
55410 			zend_clean_and_cache_symbol_table(EX(symbol_table));
55411 		}
55412 
55413 		/* Free extra args before releasing the closure,
55414 		 * as that may free the op_array. */
55415 		zend_vm_stack_free_extra_args_ex(call_info, execute_data);
55416 
55417 		if (UNEXPECTED(call_info & ZEND_CALL_RELEASE_THIS)) {
55418 			zend_object *object = Z_OBJ(execute_data->This);
55419 #if 0
55420 			if (UNEXPECTED(EG(exception) != NULL) && (EX(opline)->op1.num & ZEND_CALL_CTOR)) {
55421 #else
55422 			if (UNEXPECTED(EG(exception) != NULL) && (call_info & ZEND_CALL_CTOR)) {
55423 #endif
55424 				GC_DELREF(object);
55425 				zend_object_store_ctor_failed(object);
55426 			}
55427 			OBJ_RELEASE(object);
55428 		} else if (UNEXPECTED(call_info & ZEND_CALL_CLOSURE)) {
55429 			OBJ_RELEASE(ZEND_CLOSURE_OBJECT(EX(func)));
55430 		}
55431 
55432 		old_execute_data = execute_data;
55433 		execute_data = EX(prev_execute_data);
55434 		zend_vm_stack_free_call_frame_ex(call_info, old_execute_data);
55435 
55436 		if (UNEXPECTED(EG(exception) != NULL)) {
55437 			zend_rethrow_exception(execute_data);
55438 			HANDLE_EXCEPTION_LEAVE();
55439 		}
55440 
55441 		LOAD_NEXT_OPLINE();
55442 		ZEND_VM_LEAVE();
55443 	} else if (EXPECTED((call_info & ZEND_CALL_TOP) == 0)) {
55444 		zend_detach_symbol_table(execute_data);
55445 		destroy_op_array(&EX(func)->op_array);
55446 		efree_size(EX(func), sizeof(zend_op_array));
55447 		old_execute_data = execute_data;
55448 		execute_data = EG(current_execute_data) = EX(prev_execute_data);
55449 		zend_vm_stack_free_call_frame_ex(call_info, old_execute_data);
55450 
55451 		zend_attach_symbol_table(execute_data);
55452 		if (UNEXPECTED(EG(exception) != NULL)) {
55453 			zend_rethrow_exception(execute_data);
55454 			HANDLE_EXCEPTION_LEAVE();
55455 		}
55456 
55457 		LOAD_NEXT_OPLINE();
55458 		ZEND_VM_LEAVE();
55459 	} else {
55460 		if (EXPECTED((call_info & ZEND_CALL_CODE) == 0)) {
55461 			EG(current_execute_data) = EX(prev_execute_data);
55462 			i_free_compiled_variables(execute_data);
55463 			if (UNEXPECTED(call_info & (ZEND_CALL_HAS_SYMBOL_TABLE|ZEND_CALL_FREE_EXTRA_ARGS))) {
55464 				if (UNEXPECTED(call_info & ZEND_CALL_HAS_SYMBOL_TABLE)) {
55465 					zend_clean_and_cache_symbol_table(EX(symbol_table));
55466 				}
55467 				zend_vm_stack_free_extra_args_ex(call_info, execute_data);
55468 			}
55469 			if (UNEXPECTED(call_info & ZEND_CALL_CLOSURE)) {
55470 				OBJ_RELEASE(ZEND_CLOSURE_OBJECT(EX(func)));
55471 			}
55472 			ZEND_VM_RETURN();
55473 		} else /* if (call_kind == ZEND_CALL_TOP_CODE) */ {
55474 			zend_array *symbol_table = EX(symbol_table);
55475 
55476 			zend_detach_symbol_table(execute_data);
55477 			old_execute_data = EX(prev_execute_data);
55478 			while (old_execute_data) {
55479 				if (old_execute_data->func && (ZEND_CALL_INFO(old_execute_data) & ZEND_CALL_HAS_SYMBOL_TABLE)) {
55480 					if (old_execute_data->symbol_table == symbol_table) {
55481 						zend_attach_symbol_table(old_execute_data);
55482 					}
55483 					break;
55484 				}
55485 				old_execute_data = old_execute_data->prev_execute_data;
55486 			}
55487 			EG(current_execute_data) = EX(prev_execute_data);
55488 			ZEND_VM_RETURN();
55489 		}
55490 	}
55491 }
55492 
55493 			HYBRID_CASE(ZEND_JMP_SPEC):
55494 				VM_TRACE(ZEND_JMP_SPEC)
55495 				ZEND_JMP_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55496 				HYBRID_BREAK();
55497 			HYBRID_CASE(ZEND_DO_ICALL_SPEC_RETVAL_UNUSED):
55498 				VM_TRACE(ZEND_DO_ICALL_SPEC_RETVAL_UNUSED)
55499 				ZEND_DO_ICALL_SPEC_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55500 				HYBRID_BREAK();
55501 			HYBRID_CASE(ZEND_DO_ICALL_SPEC_RETVAL_USED):
55502 				VM_TRACE(ZEND_DO_ICALL_SPEC_RETVAL_USED)
55503 				ZEND_DO_ICALL_SPEC_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55504 				HYBRID_BREAK();
55505 			HYBRID_CASE(ZEND_DO_UCALL_SPEC_RETVAL_UNUSED):
55506 				VM_TRACE(ZEND_DO_UCALL_SPEC_RETVAL_UNUSED)
55507 				ZEND_DO_UCALL_SPEC_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55508 				HYBRID_BREAK();
55509 			HYBRID_CASE(ZEND_DO_UCALL_SPEC_RETVAL_USED):
55510 				VM_TRACE(ZEND_DO_UCALL_SPEC_RETVAL_USED)
55511 				ZEND_DO_UCALL_SPEC_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55512 				HYBRID_BREAK();
55513 			HYBRID_CASE(ZEND_DO_FCALL_BY_NAME_SPEC_RETVAL_UNUSED):
55514 				VM_TRACE(ZEND_DO_FCALL_BY_NAME_SPEC_RETVAL_UNUSED)
55515 				ZEND_DO_FCALL_BY_NAME_SPEC_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55516 				HYBRID_BREAK();
55517 			HYBRID_CASE(ZEND_DO_FCALL_BY_NAME_SPEC_RETVAL_USED):
55518 				VM_TRACE(ZEND_DO_FCALL_BY_NAME_SPEC_RETVAL_USED)
55519 				ZEND_DO_FCALL_BY_NAME_SPEC_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55520 				HYBRID_BREAK();
55521 			HYBRID_CASE(ZEND_DO_FCALL_SPEC_RETVAL_UNUSED):
55522 				VM_TRACE(ZEND_DO_FCALL_SPEC_RETVAL_UNUSED)
55523 				ZEND_DO_FCALL_SPEC_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55524 				HYBRID_BREAK();
55525 			HYBRID_CASE(ZEND_DO_FCALL_SPEC_RETVAL_USED):
55526 				VM_TRACE(ZEND_DO_FCALL_SPEC_RETVAL_USED)
55527 				ZEND_DO_FCALL_SPEC_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55528 				HYBRID_BREAK();
55529 			HYBRID_CASE(ZEND_GENERATOR_CREATE_SPEC):
55530 				VM_TRACE(ZEND_GENERATOR_CREATE_SPEC)
55531 				ZEND_GENERATOR_CREATE_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55532 				HYBRID_BREAK();
55533 			HYBRID_CASE(ZEND_SEND_UNPACK_SPEC):
55534 				VM_TRACE(ZEND_SEND_UNPACK_SPEC)
55535 				ZEND_SEND_UNPACK_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55536 				HYBRID_BREAK();
55537 			HYBRID_CASE(ZEND_SEND_ARRAY_SPEC):
55538 				VM_TRACE(ZEND_SEND_ARRAY_SPEC)
55539 				ZEND_SEND_ARRAY_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55540 				HYBRID_BREAK();
55541 			HYBRID_CASE(ZEND_BEGIN_SILENCE_SPEC):
55542 				VM_TRACE(ZEND_BEGIN_SILENCE_SPEC)
55543 				ZEND_BEGIN_SILENCE_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55544 				HYBRID_BREAK();
55545 			HYBRID_CASE(ZEND_EXT_STMT_SPEC):
55546 				VM_TRACE(ZEND_EXT_STMT_SPEC)
55547 				ZEND_EXT_STMT_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55548 				HYBRID_BREAK();
55549 			HYBRID_CASE(ZEND_EXT_FCALL_BEGIN_SPEC):
55550 				VM_TRACE(ZEND_EXT_FCALL_BEGIN_SPEC)
55551 				ZEND_EXT_FCALL_BEGIN_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55552 				HYBRID_BREAK();
55553 			HYBRID_CASE(ZEND_EXT_FCALL_END_SPEC):
55554 				VM_TRACE(ZEND_EXT_FCALL_END_SPEC)
55555 				ZEND_EXT_FCALL_END_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55556 				HYBRID_BREAK();
55557 			HYBRID_CASE(ZEND_DECLARE_ANON_CLASS_SPEC):
55558 				VM_TRACE(ZEND_DECLARE_ANON_CLASS_SPEC)
55559 				ZEND_DECLARE_ANON_CLASS_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55560 				HYBRID_BREAK();
55561 			HYBRID_CASE(ZEND_DECLARE_FUNCTION_SPEC):
55562 				VM_TRACE(ZEND_DECLARE_FUNCTION_SPEC)
55563 				ZEND_DECLARE_FUNCTION_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55564 				HYBRID_BREAK();
55565 			HYBRID_CASE(ZEND_TICKS_SPEC):
55566 				VM_TRACE(ZEND_TICKS_SPEC)
55567 				ZEND_TICKS_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55568 				HYBRID_BREAK();
55569 			HYBRID_CASE(ZEND_EXT_NOP_SPEC):
55570 				VM_TRACE(ZEND_EXT_NOP_SPEC)
55571 				ZEND_EXT_NOP_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55572 				HYBRID_BREAK();
55573 			HYBRID_CASE(ZEND_NOP_SPEC):
55574 				VM_TRACE(ZEND_NOP_SPEC)
55575 				ZEND_NOP_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55576 				HYBRID_BREAK();
55577 			HYBRID_CASE(ZEND_ADD_TRAIT_SPEC):
55578 				VM_TRACE(ZEND_ADD_TRAIT_SPEC)
55579 				ZEND_ADD_TRAIT_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55580 				HYBRID_BREAK();
55581 			HYBRID_CASE(ZEND_BIND_TRAITS_SPEC):
55582 				VM_TRACE(ZEND_BIND_TRAITS_SPEC)
55583 				ZEND_BIND_TRAITS_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55584 				HYBRID_BREAK();
55585 			HYBRID_CASE(ZEND_HANDLE_EXCEPTION_SPEC):
55586 				VM_TRACE(ZEND_HANDLE_EXCEPTION_SPEC)
55587 				ZEND_HANDLE_EXCEPTION_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55588 				HYBRID_BREAK();
55589 			HYBRID_CASE(ZEND_VERIFY_ABSTRACT_CLASS_SPEC):
55590 				VM_TRACE(ZEND_VERIFY_ABSTRACT_CLASS_SPEC)
55591 				ZEND_VERIFY_ABSTRACT_CLASS_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55592 				HYBRID_BREAK();
55593 			HYBRID_CASE(ZEND_USER_OPCODE_SPEC):
55594 				VM_TRACE(ZEND_USER_OPCODE_SPEC)
55595 				ZEND_USER_OPCODE_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55596 				HYBRID_BREAK();
55597 			HYBRID_CASE(ZEND_DISCARD_EXCEPTION_SPEC):
55598 				VM_TRACE(ZEND_DISCARD_EXCEPTION_SPEC)
55599 				ZEND_DISCARD_EXCEPTION_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55600 				HYBRID_BREAK();
55601 			HYBRID_CASE(ZEND_FAST_CALL_SPEC):
55602 				VM_TRACE(ZEND_FAST_CALL_SPEC)
55603 				ZEND_FAST_CALL_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55604 				HYBRID_BREAK();
55605 			HYBRID_CASE(ZEND_FAST_RET_SPEC):
55606 				VM_TRACE(ZEND_FAST_RET_SPEC)
55607 				ZEND_FAST_RET_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55608 				HYBRID_BREAK();
55609 			HYBRID_CASE(ZEND_ASSERT_CHECK_SPEC):
55610 				VM_TRACE(ZEND_ASSERT_CHECK_SPEC)
55611 				ZEND_ASSERT_CHECK_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55612 				HYBRID_BREAK();
55613 			HYBRID_CASE(ZEND_CALL_TRAMPOLINE_SPEC):
55614 				VM_TRACE(ZEND_CALL_TRAMPOLINE_SPEC)
55615 				ZEND_CALL_TRAMPOLINE_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55616 				HYBRID_BREAK();
55617 			HYBRID_CASE(ZEND_JMP_FORWARD_SPEC):
55618 				VM_TRACE(ZEND_JMP_FORWARD_SPEC)
55619 				ZEND_JMP_FORWARD_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55620 				HYBRID_BREAK();
55621 			HYBRID_CASE(ZEND_INIT_FCALL_BY_NAME_SPEC_CONST):
55622 				VM_TRACE(ZEND_INIT_FCALL_BY_NAME_SPEC_CONST)
55623 				ZEND_INIT_FCALL_BY_NAME_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55624 				HYBRID_BREAK();
55625 			HYBRID_CASE(ZEND_INIT_DYNAMIC_CALL_SPEC_CONST):
55626 				VM_TRACE(ZEND_INIT_DYNAMIC_CALL_SPEC_CONST)
55627 				ZEND_INIT_DYNAMIC_CALL_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55628 				HYBRID_BREAK();
55629 			HYBRID_CASE(ZEND_INIT_NS_FCALL_BY_NAME_SPEC_CONST):
55630 				VM_TRACE(ZEND_INIT_NS_FCALL_BY_NAME_SPEC_CONST)
55631 				ZEND_INIT_NS_FCALL_BY_NAME_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55632 				HYBRID_BREAK();
55633 			HYBRID_CASE(ZEND_INIT_FCALL_SPEC_CONST):
55634 				VM_TRACE(ZEND_INIT_FCALL_SPEC_CONST)
55635 				ZEND_INIT_FCALL_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55636 				HYBRID_BREAK();
55637 			HYBRID_CASE(ZEND_RECV_INIT_SPEC_CONST):
55638 				VM_TRACE(ZEND_RECV_INIT_SPEC_CONST)
55639 				ZEND_RECV_INIT_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55640 				HYBRID_BREAK();
55641 			HYBRID_CASE(ZEND_ADD_INTERFACE_SPEC_CONST):
55642 				VM_TRACE(ZEND_ADD_INTERFACE_SPEC_CONST)
55643 				ZEND_ADD_INTERFACE_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55644 				HYBRID_BREAK();
55645 			HYBRID_CASE(ZEND_INIT_DYNAMIC_CALL_SPEC_TMPVAR):
55646 				VM_TRACE(ZEND_INIT_DYNAMIC_CALL_SPEC_TMPVAR)
55647 				ZEND_INIT_DYNAMIC_CALL_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55648 				HYBRID_BREAK();
55649 			HYBRID_CASE(ZEND_RECV_SPEC_UNUSED):
55650 				VM_TRACE(ZEND_RECV_SPEC_UNUSED)
55651 				ZEND_RECV_SPEC_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55652 				HYBRID_BREAK();
55653 			HYBRID_CASE(ZEND_RECV_VARIADIC_SPEC_UNUSED):
55654 				VM_TRACE(ZEND_RECV_VARIADIC_SPEC_UNUSED)
55655 				ZEND_RECV_VARIADIC_SPEC_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55656 				HYBRID_BREAK();
55657 			HYBRID_CASE(ZEND_INIT_DYNAMIC_CALL_SPEC_CV):
55658 				VM_TRACE(ZEND_INIT_DYNAMIC_CALL_SPEC_CV)
55659 				ZEND_INIT_DYNAMIC_CALL_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55660 				HYBRID_BREAK();
55661 			HYBRID_CASE(ZEND_BW_NOT_SPEC_CONST):
55662 				VM_TRACE(ZEND_BW_NOT_SPEC_CONST)
55663 				ZEND_BW_NOT_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55664 				HYBRID_BREAK();
55665 			HYBRID_CASE(ZEND_BOOL_NOT_SPEC_CONST):
55666 				VM_TRACE(ZEND_BOOL_NOT_SPEC_CONST)
55667 				ZEND_BOOL_NOT_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55668 				HYBRID_BREAK();
55669 			HYBRID_CASE(ZEND_ECHO_SPEC_CONST):
55670 				VM_TRACE(ZEND_ECHO_SPEC_CONST)
55671 				ZEND_ECHO_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55672 				HYBRID_BREAK();
55673 			HYBRID_CASE(ZEND_JMPZ_SPEC_CONST):
55674 				VM_TRACE(ZEND_JMPZ_SPEC_CONST)
55675 				ZEND_JMPZ_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55676 				HYBRID_BREAK();
55677 			HYBRID_CASE(ZEND_JMPNZ_SPEC_CONST):
55678 				VM_TRACE(ZEND_JMPNZ_SPEC_CONST)
55679 				ZEND_JMPNZ_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55680 				HYBRID_BREAK();
55681 			HYBRID_CASE(ZEND_JMPZNZ_SPEC_CONST):
55682 				VM_TRACE(ZEND_JMPZNZ_SPEC_CONST)
55683 				ZEND_JMPZNZ_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55684 				HYBRID_BREAK();
55685 			HYBRID_CASE(ZEND_JMPZ_EX_SPEC_CONST):
55686 				VM_TRACE(ZEND_JMPZ_EX_SPEC_CONST)
55687 				ZEND_JMPZ_EX_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55688 				HYBRID_BREAK();
55689 			HYBRID_CASE(ZEND_JMPNZ_EX_SPEC_CONST):
55690 				VM_TRACE(ZEND_JMPNZ_EX_SPEC_CONST)
55691 				ZEND_JMPNZ_EX_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55692 				HYBRID_BREAK();
55693 			HYBRID_CASE(ZEND_RETURN_SPEC_CONST):
55694 				VM_TRACE(ZEND_RETURN_SPEC_CONST)
55695 {
55696 	USE_OPLINE
55697 	zval *retval_ptr;
55698 	zval *return_value;
55699 	zend_free_op free_op1;
55700 
55701 	retval_ptr = RT_CONSTANT(opline, opline->op1);
55702 	return_value = EX(return_value);
55703 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(retval_ptr) == IS_UNDEF)) {
55704 		SAVE_OPLINE();
55705 		retval_ptr = GET_OP1_UNDEF_CV(retval_ptr, BP_VAR_R);
55706 		if (return_value) {
55707 			ZVAL_NULL(return_value);
55708 		}
55709 	} else if (!return_value) {
55710 		if (IS_CONST & (IS_VAR|IS_TMP_VAR)) {
55711 			if (Z_REFCOUNTED_P(free_op1) && !Z_DELREF_P(free_op1)) {
55712 				SAVE_OPLINE();
55713 				rc_dtor_func(Z_COUNTED_P(free_op1));
55714 			}
55715 		}
55716 	} else {
55717 		if ((IS_CONST & (IS_CONST|IS_TMP_VAR))) {
55718 			ZVAL_COPY_VALUE(return_value, retval_ptr);
55719 			if (IS_CONST == IS_CONST) {
55720 				if (UNEXPECTED(Z_OPT_REFCOUNTED_P(return_value))) {
55721 					Z_ADDREF_P(return_value);
55722 				}
55723 			}
55724 		} else if (IS_CONST == IS_CV) {
55725 			if (Z_OPT_REFCOUNTED_P(retval_ptr)) {
55726 				if (EXPECTED(!Z_OPT_ISREF_P(retval_ptr))) {
55727 					ZVAL_COPY_VALUE(return_value, retval_ptr);
55728 					if (EXPECTED(!(EX_CALL_INFO() & ZEND_CALL_CODE))) {
55729 						zend_refcounted *ref = Z_COUNTED_P(retval_ptr);
55730 						if (GC_MAY_LEAK(ref)) {
55731 							gc_possible_root(ref);
55732 						}
55733 						ZVAL_NULL(retval_ptr);
55734 					} else {
55735 						Z_ADDREF_P(return_value);
55736 					}
55737 				} else {
55738 					retval_ptr = Z_REFVAL_P(retval_ptr);
55739 					ZVAL_COPY(return_value, retval_ptr);
55740 				}
55741 			} else {
55742 				ZVAL_COPY_VALUE(return_value, retval_ptr);
55743 			}
55744 		} else /* if (IS_CONST == IS_VAR) */ {
55745 			if (UNEXPECTED(Z_ISREF_P(retval_ptr))) {
55746 				zend_refcounted *ref = Z_COUNTED_P(retval_ptr);
55747 
55748 				retval_ptr = Z_REFVAL_P(retval_ptr);
55749 				ZVAL_COPY_VALUE(return_value, retval_ptr);
55750 				if (UNEXPECTED(GC_DELREF(ref) == 0)) {
55751 					efree_size(ref, sizeof(zend_reference));
55752 				} else if (Z_OPT_REFCOUNTED_P(retval_ptr)) {
55753 					Z_ADDREF_P(retval_ptr);
55754 				}
55755 			} else {
55756 				ZVAL_COPY_VALUE(return_value, retval_ptr);
55757 			}
55758 		}
55759 	}
55760 	goto zend_leave_helper_SPEC_LABEL;
55761 }
55762 
55763 			HYBRID_CASE(ZEND_RETURN_BY_REF_SPEC_CONST):
55764 				VM_TRACE(ZEND_RETURN_BY_REF_SPEC_CONST)
55765 				ZEND_RETURN_BY_REF_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55766 				HYBRID_BREAK();
55767 			HYBRID_CASE(ZEND_GENERATOR_RETURN_SPEC_CONST):
55768 				VM_TRACE(ZEND_GENERATOR_RETURN_SPEC_CONST)
55769 				ZEND_GENERATOR_RETURN_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55770 				HYBRID_BREAK();
55771 			HYBRID_CASE(ZEND_THROW_SPEC_CONST):
55772 				VM_TRACE(ZEND_THROW_SPEC_CONST)
55773 				ZEND_THROW_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55774 				HYBRID_BREAK();
55775 			HYBRID_CASE(ZEND_CATCH_SPEC_CONST):
55776 				VM_TRACE(ZEND_CATCH_SPEC_CONST)
55777 				ZEND_CATCH_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55778 				HYBRID_BREAK();
55779 			HYBRID_CASE(ZEND_SEND_VAL_SPEC_CONST):
55780 				VM_TRACE(ZEND_SEND_VAL_SPEC_CONST)
55781 				ZEND_SEND_VAL_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55782 				HYBRID_BREAK();
55783 			HYBRID_CASE(ZEND_SEND_VAL_EX_SPEC_CONST):
55784 				VM_TRACE(ZEND_SEND_VAL_EX_SPEC_CONST)
55785 				ZEND_SEND_VAL_EX_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55786 				HYBRID_BREAK();
55787 			HYBRID_CASE(ZEND_SEND_VAL_EX_SPEC_CONST_QUICK):
55788 				VM_TRACE(ZEND_SEND_VAL_EX_SPEC_CONST_QUICK)
55789 				ZEND_SEND_VAL_EX_SPEC_CONST_QUICK_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55790 				HYBRID_BREAK();
55791 			HYBRID_CASE(ZEND_SEND_USER_SPEC_CONST):
55792 				VM_TRACE(ZEND_SEND_USER_SPEC_CONST)
55793 				ZEND_SEND_USER_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55794 				HYBRID_BREAK();
55795 			HYBRID_CASE(ZEND_BOOL_SPEC_CONST):
55796 				VM_TRACE(ZEND_BOOL_SPEC_CONST)
55797 				ZEND_BOOL_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55798 				HYBRID_BREAK();
55799 			HYBRID_CASE(ZEND_CLONE_SPEC_CONST):
55800 				VM_TRACE(ZEND_CLONE_SPEC_CONST)
55801 				ZEND_CLONE_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55802 				HYBRID_BREAK();
55803 			HYBRID_CASE(ZEND_CAST_SPEC_CONST):
55804 				VM_TRACE(ZEND_CAST_SPEC_CONST)
55805 				ZEND_CAST_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55806 				HYBRID_BREAK();
55807 			HYBRID_CASE(ZEND_INCLUDE_OR_EVAL_SPEC_CONST):
55808 				VM_TRACE(ZEND_INCLUDE_OR_EVAL_SPEC_CONST)
55809 				ZEND_INCLUDE_OR_EVAL_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55810 				HYBRID_BREAK();
55811 			HYBRID_CASE(ZEND_FE_RESET_R_SPEC_CONST):
55812 				VM_TRACE(ZEND_FE_RESET_R_SPEC_CONST)
55813 				ZEND_FE_RESET_R_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55814 				HYBRID_BREAK();
55815 			HYBRID_CASE(ZEND_FE_RESET_RW_SPEC_CONST):
55816 				VM_TRACE(ZEND_FE_RESET_RW_SPEC_CONST)
55817 				ZEND_FE_RESET_RW_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55818 				HYBRID_BREAK();
55819 			HYBRID_CASE(ZEND_EXIT_SPEC_CONST):
55820 				VM_TRACE(ZEND_EXIT_SPEC_CONST)
55821 				ZEND_EXIT_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55822 				HYBRID_BREAK();
55823 			HYBRID_CASE(ZEND_JMP_SET_SPEC_CONST):
55824 				VM_TRACE(ZEND_JMP_SET_SPEC_CONST)
55825 				ZEND_JMP_SET_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55826 				HYBRID_BREAK();
55827 			HYBRID_CASE(ZEND_COALESCE_SPEC_CONST):
55828 				VM_TRACE(ZEND_COALESCE_SPEC_CONST)
55829 				ZEND_COALESCE_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55830 				HYBRID_BREAK();
55831 			HYBRID_CASE(ZEND_QM_ASSIGN_SPEC_CONST):
55832 				VM_TRACE(ZEND_QM_ASSIGN_SPEC_CONST)
55833 				ZEND_QM_ASSIGN_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55834 				HYBRID_BREAK();
55835 			HYBRID_CASE(ZEND_DECLARE_CLASS_SPEC_CONST):
55836 				VM_TRACE(ZEND_DECLARE_CLASS_SPEC_CONST)
55837 				ZEND_DECLARE_CLASS_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55838 				HYBRID_BREAK();
55839 			HYBRID_CASE(ZEND_YIELD_FROM_SPEC_CONST):
55840 				VM_TRACE(ZEND_YIELD_FROM_SPEC_CONST)
55841 				ZEND_YIELD_FROM_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55842 				HYBRID_BREAK();
55843 			HYBRID_CASE(ZEND_STRLEN_SPEC_CONST):
55844 				VM_TRACE(ZEND_STRLEN_SPEC_CONST)
55845 				ZEND_STRLEN_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55846 				HYBRID_BREAK();
55847 			HYBRID_CASE(ZEND_TYPE_CHECK_SPEC_CONST):
55848 				VM_TRACE(ZEND_TYPE_CHECK_SPEC_CONST)
55849 				ZEND_TYPE_CHECK_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55850 				HYBRID_BREAK();
55851 			HYBRID_CASE(ZEND_DEFINED_SPEC_CONST):
55852 				VM_TRACE(ZEND_DEFINED_SPEC_CONST)
55853 				ZEND_DEFINED_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55854 				HYBRID_BREAK();
55855 			HYBRID_CASE(ZEND_QM_ASSIGN_DOUBLE_SPEC_CONST):
55856 				VM_TRACE(ZEND_QM_ASSIGN_DOUBLE_SPEC_CONST)
55857 				ZEND_QM_ASSIGN_DOUBLE_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55858 				HYBRID_BREAK();
55859 			HYBRID_CASE(ZEND_QM_ASSIGN_NOREF_SPEC_CONST):
55860 				VM_TRACE(ZEND_QM_ASSIGN_NOREF_SPEC_CONST)
55861 				ZEND_QM_ASSIGN_NOREF_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55862 				HYBRID_BREAK();
55863 			HYBRID_CASE(ZEND_SEND_VAL_SIMPLE_SPEC_CONST):
55864 				VM_TRACE(ZEND_SEND_VAL_SIMPLE_SPEC_CONST)
55865 				ZEND_SEND_VAL_SIMPLE_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55866 				HYBRID_BREAK();
55867 			HYBRID_CASE(ZEND_SEND_VAL_EX_SIMPLE_SPEC_CONST):
55868 				VM_TRACE(ZEND_SEND_VAL_EX_SIMPLE_SPEC_CONST)
55869 				ZEND_SEND_VAL_EX_SIMPLE_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55870 				HYBRID_BREAK();
55871 			HYBRID_CASE(ZEND_ADD_SPEC_CONST_CONST):
55872 				VM_TRACE(ZEND_ADD_SPEC_CONST_CONST)
55873 				ZEND_ADD_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55874 				HYBRID_BREAK();
55875 			HYBRID_CASE(ZEND_SUB_SPEC_CONST_CONST):
55876 				VM_TRACE(ZEND_SUB_SPEC_CONST_CONST)
55877 				ZEND_SUB_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55878 				HYBRID_BREAK();
55879 			HYBRID_CASE(ZEND_MUL_SPEC_CONST_CONST):
55880 				VM_TRACE(ZEND_MUL_SPEC_CONST_CONST)
55881 				ZEND_MUL_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55882 				HYBRID_BREAK();
55883 			HYBRID_CASE(ZEND_DIV_SPEC_CONST_CONST):
55884 				VM_TRACE(ZEND_DIV_SPEC_CONST_CONST)
55885 				ZEND_DIV_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55886 				HYBRID_BREAK();
55887 			HYBRID_CASE(ZEND_MOD_SPEC_CONST_CONST):
55888 				VM_TRACE(ZEND_MOD_SPEC_CONST_CONST)
55889 				ZEND_MOD_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55890 				HYBRID_BREAK();
55891 			HYBRID_CASE(ZEND_SL_SPEC_CONST_CONST):
55892 				VM_TRACE(ZEND_SL_SPEC_CONST_CONST)
55893 				ZEND_SL_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55894 				HYBRID_BREAK();
55895 			HYBRID_CASE(ZEND_SR_SPEC_CONST_CONST):
55896 				VM_TRACE(ZEND_SR_SPEC_CONST_CONST)
55897 				ZEND_SR_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55898 				HYBRID_BREAK();
55899 			HYBRID_CASE(ZEND_POW_SPEC_CONST_CONST):
55900 				VM_TRACE(ZEND_POW_SPEC_CONST_CONST)
55901 				ZEND_POW_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55902 				HYBRID_BREAK();
55903 			HYBRID_CASE(ZEND_IS_IDENTICAL_SPEC_CONST_CONST):
55904 				VM_TRACE(ZEND_IS_IDENTICAL_SPEC_CONST_CONST)
55905 				ZEND_IS_IDENTICAL_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55906 				HYBRID_BREAK();
55907 			HYBRID_CASE(ZEND_IS_NOT_IDENTICAL_SPEC_CONST_CONST):
55908 				VM_TRACE(ZEND_IS_NOT_IDENTICAL_SPEC_CONST_CONST)
55909 				ZEND_IS_NOT_IDENTICAL_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55910 				HYBRID_BREAK();
55911 			HYBRID_CASE(ZEND_IS_EQUAL_SPEC_CONST_CONST):
55912 				VM_TRACE(ZEND_IS_EQUAL_SPEC_CONST_CONST)
55913 				ZEND_IS_EQUAL_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55914 				HYBRID_BREAK();
55915 			HYBRID_CASE(ZEND_IS_NOT_EQUAL_SPEC_CONST_CONST):
55916 				VM_TRACE(ZEND_IS_NOT_EQUAL_SPEC_CONST_CONST)
55917 				ZEND_IS_NOT_EQUAL_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55918 				HYBRID_BREAK();
55919 			HYBRID_CASE(ZEND_IS_SMALLER_SPEC_CONST_CONST):
55920 				VM_TRACE(ZEND_IS_SMALLER_SPEC_CONST_CONST)
55921 				ZEND_IS_SMALLER_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55922 				HYBRID_BREAK();
55923 			HYBRID_CASE(ZEND_IS_SMALLER_OR_EQUAL_SPEC_CONST_CONST):
55924 				VM_TRACE(ZEND_IS_SMALLER_OR_EQUAL_SPEC_CONST_CONST)
55925 				ZEND_IS_SMALLER_OR_EQUAL_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55926 				HYBRID_BREAK();
55927 			HYBRID_CASE(ZEND_SPACESHIP_SPEC_CONST_CONST):
55928 				VM_TRACE(ZEND_SPACESHIP_SPEC_CONST_CONST)
55929 				ZEND_SPACESHIP_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55930 				HYBRID_BREAK();
55931 			HYBRID_CASE(ZEND_BW_OR_SPEC_CONST_CONST):
55932 				VM_TRACE(ZEND_BW_OR_SPEC_CONST_CONST)
55933 				ZEND_BW_OR_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55934 				HYBRID_BREAK();
55935 			HYBRID_CASE(ZEND_BW_AND_SPEC_CONST_CONST):
55936 				VM_TRACE(ZEND_BW_AND_SPEC_CONST_CONST)
55937 				ZEND_BW_AND_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55938 				HYBRID_BREAK();
55939 			HYBRID_CASE(ZEND_BW_XOR_SPEC_CONST_CONST):
55940 				VM_TRACE(ZEND_BW_XOR_SPEC_CONST_CONST)
55941 				ZEND_BW_XOR_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55942 				HYBRID_BREAK();
55943 			HYBRID_CASE(ZEND_BOOL_XOR_SPEC_CONST_CONST):
55944 				VM_TRACE(ZEND_BOOL_XOR_SPEC_CONST_CONST)
55945 				ZEND_BOOL_XOR_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55946 				HYBRID_BREAK();
55947 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_R_SPEC_CONST_CONST):
55948 				VM_TRACE(ZEND_FETCH_STATIC_PROP_R_SPEC_CONST_CONST)
55949 				ZEND_FETCH_STATIC_PROP_R_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55950 				HYBRID_BREAK();
55951 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_W_SPEC_CONST_CONST):
55952 				VM_TRACE(ZEND_FETCH_STATIC_PROP_W_SPEC_CONST_CONST)
55953 				ZEND_FETCH_STATIC_PROP_W_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55954 				HYBRID_BREAK();
55955 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_RW_SPEC_CONST_CONST):
55956 				VM_TRACE(ZEND_FETCH_STATIC_PROP_RW_SPEC_CONST_CONST)
55957 				ZEND_FETCH_STATIC_PROP_RW_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55958 				HYBRID_BREAK();
55959 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_CONST_CONST):
55960 				VM_TRACE(ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_CONST_CONST)
55961 				ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55962 				HYBRID_BREAK();
55963 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_UNSET_SPEC_CONST_CONST):
55964 				VM_TRACE(ZEND_FETCH_STATIC_PROP_UNSET_SPEC_CONST_CONST)
55965 				ZEND_FETCH_STATIC_PROP_UNSET_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55966 				HYBRID_BREAK();
55967 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_IS_SPEC_CONST_CONST):
55968 				VM_TRACE(ZEND_FETCH_STATIC_PROP_IS_SPEC_CONST_CONST)
55969 				ZEND_FETCH_STATIC_PROP_IS_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55970 				HYBRID_BREAK();
55971 			HYBRID_CASE(ZEND_FETCH_DIM_R_SPEC_CONST_CONST):
55972 				VM_TRACE(ZEND_FETCH_DIM_R_SPEC_CONST_CONST)
55973 				ZEND_FETCH_DIM_R_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55974 				HYBRID_BREAK();
55975 			HYBRID_CASE(ZEND_FETCH_DIM_IS_SPEC_CONST_CONST):
55976 				VM_TRACE(ZEND_FETCH_DIM_IS_SPEC_CONST_CONST)
55977 				ZEND_FETCH_DIM_IS_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55978 				HYBRID_BREAK();
55979 			HYBRID_CASE(ZEND_FETCH_DIM_FUNC_ARG_SPEC_CONST_CONST):
55980 				VM_TRACE(ZEND_FETCH_DIM_FUNC_ARG_SPEC_CONST_CONST)
55981 				ZEND_FETCH_DIM_FUNC_ARG_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55982 				HYBRID_BREAK();
55983 			HYBRID_CASE(ZEND_FETCH_OBJ_R_SPEC_CONST_CONST):
55984 				VM_TRACE(ZEND_FETCH_OBJ_R_SPEC_CONST_CONST)
55985 				ZEND_FETCH_OBJ_R_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55986 				HYBRID_BREAK();
55987 			HYBRID_CASE(ZEND_FETCH_OBJ_IS_SPEC_CONST_CONST):
55988 				VM_TRACE(ZEND_FETCH_OBJ_IS_SPEC_CONST_CONST)
55989 				ZEND_FETCH_OBJ_IS_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55990 				HYBRID_BREAK();
55991 			HYBRID_CASE(ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CONST_CONST):
55992 				VM_TRACE(ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CONST_CONST)
55993 				ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55994 				HYBRID_BREAK();
55995 			HYBRID_CASE(ZEND_FETCH_LIST_R_SPEC_CONST_CONST):
55996 				VM_TRACE(ZEND_FETCH_LIST_R_SPEC_CONST_CONST)
55997 				ZEND_FETCH_LIST_R_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
55998 				HYBRID_BREAK();
55999 			HYBRID_CASE(ZEND_FAST_CONCAT_SPEC_CONST_CONST):
56000 				VM_TRACE(ZEND_FAST_CONCAT_SPEC_CONST_CONST)
56001 				ZEND_FAST_CONCAT_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56002 				HYBRID_BREAK();
56003 			HYBRID_CASE(ZEND_INIT_METHOD_CALL_SPEC_CONST_CONST):
56004 				VM_TRACE(ZEND_INIT_METHOD_CALL_SPEC_CONST_CONST)
56005 				ZEND_INIT_METHOD_CALL_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56006 				HYBRID_BREAK();
56007 			HYBRID_CASE(ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_CONST):
56008 				VM_TRACE(ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_CONST)
56009 				ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56010 				HYBRID_BREAK();
56011 			HYBRID_CASE(ZEND_INIT_USER_CALL_SPEC_CONST_CONST):
56012 				VM_TRACE(ZEND_INIT_USER_CALL_SPEC_CONST_CONST)
56013 				ZEND_INIT_USER_CALL_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56014 				HYBRID_BREAK();
56015 			HYBRID_CASE(ZEND_FETCH_CLASS_CONSTANT_SPEC_CONST_CONST):
56016 				VM_TRACE(ZEND_FETCH_CLASS_CONSTANT_SPEC_CONST_CONST)
56017 				ZEND_FETCH_CLASS_CONSTANT_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56018 				HYBRID_BREAK();
56019 			HYBRID_CASE(ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_CONST):
56020 				VM_TRACE(ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_CONST)
56021 				ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56022 				HYBRID_BREAK();
56023 			HYBRID_CASE(ZEND_INIT_ARRAY_SPEC_CONST_CONST):
56024 				VM_TRACE(ZEND_INIT_ARRAY_SPEC_CONST_CONST)
56025 				ZEND_INIT_ARRAY_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56026 				HYBRID_BREAK();
56027 			HYBRID_CASE(ZEND_UNSET_STATIC_PROP_SPEC_CONST_CONST):
56028 				VM_TRACE(ZEND_UNSET_STATIC_PROP_SPEC_CONST_CONST)
56029 				ZEND_UNSET_STATIC_PROP_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56030 				HYBRID_BREAK();
56031 			HYBRID_CASE(ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_CONST_CONST):
56032 				VM_TRACE(ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_CONST_CONST)
56033 				ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56034 				HYBRID_BREAK();
56035 			HYBRID_CASE(ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CONST_CONST):
56036 				VM_TRACE(ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CONST_CONST)
56037 				ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56038 				HYBRID_BREAK();
56039 			HYBRID_CASE(ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CONST_CONST):
56040 				VM_TRACE(ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CONST_CONST)
56041 				ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56042 				HYBRID_BREAK();
56043 			HYBRID_CASE(ZEND_DECLARE_INHERITED_CLASS_SPEC_CONST_CONST):
56044 				VM_TRACE(ZEND_DECLARE_INHERITED_CLASS_SPEC_CONST_CONST)
56045 				ZEND_DECLARE_INHERITED_CLASS_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56046 				HYBRID_BREAK();
56047 			HYBRID_CASE(ZEND_DECLARE_INHERITED_CLASS_DELAYED_SPEC_CONST_CONST):
56048 				VM_TRACE(ZEND_DECLARE_INHERITED_CLASS_DELAYED_SPEC_CONST_CONST)
56049 				ZEND_DECLARE_INHERITED_CLASS_DELAYED_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56050 				HYBRID_BREAK();
56051 			HYBRID_CASE(ZEND_DECLARE_ANON_INHERITED_CLASS_SPEC_CONST_CONST):
56052 				VM_TRACE(ZEND_DECLARE_ANON_INHERITED_CLASS_SPEC_CONST_CONST)
56053 				ZEND_DECLARE_ANON_INHERITED_CLASS_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56054 				HYBRID_BREAK();
56055 			HYBRID_CASE(ZEND_DECLARE_CONST_SPEC_CONST_CONST):
56056 				VM_TRACE(ZEND_DECLARE_CONST_SPEC_CONST_CONST)
56057 				ZEND_DECLARE_CONST_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56058 				HYBRID_BREAK();
56059 			HYBRID_CASE(ZEND_YIELD_SPEC_CONST_CONST):
56060 				VM_TRACE(ZEND_YIELD_SPEC_CONST_CONST)
56061 				ZEND_YIELD_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56062 				HYBRID_BREAK();
56063 			HYBRID_CASE(ZEND_SWITCH_LONG_SPEC_CONST_CONST):
56064 				VM_TRACE(ZEND_SWITCH_LONG_SPEC_CONST_CONST)
56065 				ZEND_SWITCH_LONG_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56066 				HYBRID_BREAK();
56067 			HYBRID_CASE(ZEND_SWITCH_STRING_SPEC_CONST_CONST):
56068 				VM_TRACE(ZEND_SWITCH_STRING_SPEC_CONST_CONST)
56069 				ZEND_SWITCH_STRING_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56070 				HYBRID_BREAK();
56071 			HYBRID_CASE(ZEND_IN_ARRAY_SPEC_CONST_CONST):
56072 				VM_TRACE(ZEND_IN_ARRAY_SPEC_CONST_CONST)
56073 				ZEND_IN_ARRAY_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56074 				HYBRID_BREAK();
56075 			HYBRID_CASE(ZEND_SUB_LONG_NO_OVERFLOW_SPEC_CONST_TMPVARCV):
56076 				VM_TRACE(ZEND_SUB_LONG_NO_OVERFLOW_SPEC_CONST_TMPVARCV)
56077 				ZEND_SUB_LONG_NO_OVERFLOW_SPEC_CONST_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56078 				HYBRID_BREAK();
56079 			HYBRID_CASE(ZEND_SUB_LONG_SPEC_CONST_TMPVARCV):
56080 				VM_TRACE(ZEND_SUB_LONG_SPEC_CONST_TMPVARCV)
56081 				ZEND_SUB_LONG_SPEC_CONST_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56082 				HYBRID_BREAK();
56083 			HYBRID_CASE(ZEND_SUB_DOUBLE_SPEC_CONST_TMPVARCV):
56084 				VM_TRACE(ZEND_SUB_DOUBLE_SPEC_CONST_TMPVARCV)
56085 				ZEND_SUB_DOUBLE_SPEC_CONST_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56086 				HYBRID_BREAK();
56087 			HYBRID_CASE(ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV):
56088 				VM_TRACE(ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV)
56089 				ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56090 				HYBRID_BREAK();
56091 			HYBRID_CASE(ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPZ):
56092 				VM_TRACE(ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPZ)
56093 				ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56094 				HYBRID_BREAK();
56095 			HYBRID_CASE(ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPNZ):
56096 				VM_TRACE(ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPNZ)
56097 				ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPNZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56098 				HYBRID_BREAK();
56099 			HYBRID_CASE(ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV):
56100 				VM_TRACE(ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV)
56101 				ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56102 				HYBRID_BREAK();
56103 			HYBRID_CASE(ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ):
56104 				VM_TRACE(ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ)
56105 				ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56106 				HYBRID_BREAK();
56107 			HYBRID_CASE(ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ):
56108 				VM_TRACE(ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ)
56109 				ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56110 				HYBRID_BREAK();
56111 			HYBRID_CASE(ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV):
56112 				VM_TRACE(ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV)
56113 				ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56114 				HYBRID_BREAK();
56115 			HYBRID_CASE(ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPZ):
56116 				VM_TRACE(ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPZ)
56117 				ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56118 				HYBRID_BREAK();
56119 			HYBRID_CASE(ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPNZ):
56120 				VM_TRACE(ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPNZ)
56121 				ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPNZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56122 				HYBRID_BREAK();
56123 			HYBRID_CASE(ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV):
56124 				VM_TRACE(ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV)
56125 				ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56126 				HYBRID_BREAK();
56127 			HYBRID_CASE(ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ):
56128 				VM_TRACE(ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ)
56129 				ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56130 				HYBRID_BREAK();
56131 			HYBRID_CASE(ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ):
56132 				VM_TRACE(ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ)
56133 				ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56134 				HYBRID_BREAK();
56135 			HYBRID_CASE(ZEND_FETCH_DIM_R_INDEX_SPEC_CONST_TMPVARCV):
56136 				VM_TRACE(ZEND_FETCH_DIM_R_INDEX_SPEC_CONST_TMPVARCV)
56137 				ZEND_FETCH_DIM_R_INDEX_SPEC_CONST_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56138 				HYBRID_BREAK();
56139 			HYBRID_CASE(ZEND_ADD_SPEC_CONST_TMPVAR):
56140 				VM_TRACE(ZEND_ADD_SPEC_CONST_TMPVAR)
56141 				ZEND_ADD_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56142 				HYBRID_BREAK();
56143 			HYBRID_CASE(ZEND_SUB_SPEC_CONST_TMPVAR):
56144 				VM_TRACE(ZEND_SUB_SPEC_CONST_TMPVAR)
56145 				ZEND_SUB_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56146 				HYBRID_BREAK();
56147 			HYBRID_CASE(ZEND_DIV_SPEC_CONST_TMPVAR):
56148 				VM_TRACE(ZEND_DIV_SPEC_CONST_TMPVAR)
56149 				ZEND_DIV_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56150 				HYBRID_BREAK();
56151 			HYBRID_CASE(ZEND_MOD_SPEC_CONST_TMPVAR):
56152 				VM_TRACE(ZEND_MOD_SPEC_CONST_TMPVAR)
56153 				ZEND_MOD_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56154 				HYBRID_BREAK();
56155 			HYBRID_CASE(ZEND_SL_SPEC_CONST_TMPVAR):
56156 				VM_TRACE(ZEND_SL_SPEC_CONST_TMPVAR)
56157 				ZEND_SL_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56158 				HYBRID_BREAK();
56159 			HYBRID_CASE(ZEND_SR_SPEC_CONST_TMPVAR):
56160 				VM_TRACE(ZEND_SR_SPEC_CONST_TMPVAR)
56161 				ZEND_SR_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56162 				HYBRID_BREAK();
56163 			HYBRID_CASE(ZEND_POW_SPEC_CONST_TMPVAR):
56164 				VM_TRACE(ZEND_POW_SPEC_CONST_TMPVAR)
56165 				ZEND_POW_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56166 				HYBRID_BREAK();
56167 			HYBRID_CASE(ZEND_CONCAT_SPEC_CONST_TMPVAR):
56168 				VM_TRACE(ZEND_CONCAT_SPEC_CONST_TMPVAR)
56169 				ZEND_CONCAT_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56170 				HYBRID_BREAK();
56171 			HYBRID_CASE(ZEND_IS_SMALLER_SPEC_CONST_TMPVAR):
56172 				VM_TRACE(ZEND_IS_SMALLER_SPEC_CONST_TMPVAR)
56173 				ZEND_IS_SMALLER_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56174 				HYBRID_BREAK();
56175 			HYBRID_CASE(ZEND_IS_SMALLER_OR_EQUAL_SPEC_CONST_TMPVAR):
56176 				VM_TRACE(ZEND_IS_SMALLER_OR_EQUAL_SPEC_CONST_TMPVAR)
56177 				ZEND_IS_SMALLER_OR_EQUAL_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56178 				HYBRID_BREAK();
56179 			HYBRID_CASE(ZEND_SPACESHIP_SPEC_CONST_TMPVAR):
56180 				VM_TRACE(ZEND_SPACESHIP_SPEC_CONST_TMPVAR)
56181 				ZEND_SPACESHIP_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56182 				HYBRID_BREAK();
56183 			HYBRID_CASE(ZEND_FETCH_DIM_R_SPEC_CONST_TMPVAR):
56184 				VM_TRACE(ZEND_FETCH_DIM_R_SPEC_CONST_TMPVAR)
56185 				ZEND_FETCH_DIM_R_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56186 				HYBRID_BREAK();
56187 			HYBRID_CASE(ZEND_FETCH_DIM_IS_SPEC_CONST_TMPVAR):
56188 				VM_TRACE(ZEND_FETCH_DIM_IS_SPEC_CONST_TMPVAR)
56189 				ZEND_FETCH_DIM_IS_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56190 				HYBRID_BREAK();
56191 			HYBRID_CASE(ZEND_FETCH_DIM_FUNC_ARG_SPEC_CONST_TMPVAR):
56192 				VM_TRACE(ZEND_FETCH_DIM_FUNC_ARG_SPEC_CONST_TMPVAR)
56193 				ZEND_FETCH_DIM_FUNC_ARG_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56194 				HYBRID_BREAK();
56195 			HYBRID_CASE(ZEND_FETCH_OBJ_R_SPEC_CONST_TMPVAR):
56196 				VM_TRACE(ZEND_FETCH_OBJ_R_SPEC_CONST_TMPVAR)
56197 				ZEND_FETCH_OBJ_R_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56198 				HYBRID_BREAK();
56199 			HYBRID_CASE(ZEND_FETCH_OBJ_IS_SPEC_CONST_TMPVAR):
56200 				VM_TRACE(ZEND_FETCH_OBJ_IS_SPEC_CONST_TMPVAR)
56201 				ZEND_FETCH_OBJ_IS_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56202 				HYBRID_BREAK();
56203 			HYBRID_CASE(ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CONST_TMPVAR):
56204 				VM_TRACE(ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CONST_TMPVAR)
56205 				ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56206 				HYBRID_BREAK();
56207 			HYBRID_CASE(ZEND_FETCH_LIST_R_SPEC_CONST_TMPVAR):
56208 				VM_TRACE(ZEND_FETCH_LIST_R_SPEC_CONST_TMPVAR)
56209 				ZEND_FETCH_LIST_R_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56210 				HYBRID_BREAK();
56211 			HYBRID_CASE(ZEND_FAST_CONCAT_SPEC_CONST_TMPVAR):
56212 				VM_TRACE(ZEND_FAST_CONCAT_SPEC_CONST_TMPVAR)
56213 				ZEND_FAST_CONCAT_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56214 				HYBRID_BREAK();
56215 			HYBRID_CASE(ZEND_INIT_METHOD_CALL_SPEC_CONST_TMPVAR):
56216 				VM_TRACE(ZEND_INIT_METHOD_CALL_SPEC_CONST_TMPVAR)
56217 				ZEND_INIT_METHOD_CALL_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56218 				HYBRID_BREAK();
56219 			HYBRID_CASE(ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_TMPVAR):
56220 				VM_TRACE(ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_TMPVAR)
56221 				ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56222 				HYBRID_BREAK();
56223 			HYBRID_CASE(ZEND_INIT_USER_CALL_SPEC_CONST_TMPVAR):
56224 				VM_TRACE(ZEND_INIT_USER_CALL_SPEC_CONST_TMPVAR)
56225 				ZEND_INIT_USER_CALL_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56226 				HYBRID_BREAK();
56227 			HYBRID_CASE(ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_TMPVAR):
56228 				VM_TRACE(ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_TMPVAR)
56229 				ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56230 				HYBRID_BREAK();
56231 			HYBRID_CASE(ZEND_INIT_ARRAY_SPEC_CONST_TMPVAR):
56232 				VM_TRACE(ZEND_INIT_ARRAY_SPEC_CONST_TMPVAR)
56233 				ZEND_INIT_ARRAY_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56234 				HYBRID_BREAK();
56235 			HYBRID_CASE(ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CONST_TMPVAR):
56236 				VM_TRACE(ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CONST_TMPVAR)
56237 				ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56238 				HYBRID_BREAK();
56239 			HYBRID_CASE(ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CONST_TMPVAR):
56240 				VM_TRACE(ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CONST_TMPVAR)
56241 				ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56242 				HYBRID_BREAK();
56243 			HYBRID_CASE(ZEND_YIELD_SPEC_CONST_TMP):
56244 				VM_TRACE(ZEND_YIELD_SPEC_CONST_TMP)
56245 				ZEND_YIELD_SPEC_CONST_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56246 				HYBRID_BREAK();
56247 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_R_SPEC_CONST_VAR):
56248 				VM_TRACE(ZEND_FETCH_STATIC_PROP_R_SPEC_CONST_VAR)
56249 				ZEND_FETCH_STATIC_PROP_R_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56250 				HYBRID_BREAK();
56251 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_W_SPEC_CONST_VAR):
56252 				VM_TRACE(ZEND_FETCH_STATIC_PROP_W_SPEC_CONST_VAR)
56253 				ZEND_FETCH_STATIC_PROP_W_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56254 				HYBRID_BREAK();
56255 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_RW_SPEC_CONST_VAR):
56256 				VM_TRACE(ZEND_FETCH_STATIC_PROP_RW_SPEC_CONST_VAR)
56257 				ZEND_FETCH_STATIC_PROP_RW_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56258 				HYBRID_BREAK();
56259 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_CONST_VAR):
56260 				VM_TRACE(ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_CONST_VAR)
56261 				ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56262 				HYBRID_BREAK();
56263 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_UNSET_SPEC_CONST_VAR):
56264 				VM_TRACE(ZEND_FETCH_STATIC_PROP_UNSET_SPEC_CONST_VAR)
56265 				ZEND_FETCH_STATIC_PROP_UNSET_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56266 				HYBRID_BREAK();
56267 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_IS_SPEC_CONST_VAR):
56268 				VM_TRACE(ZEND_FETCH_STATIC_PROP_IS_SPEC_CONST_VAR)
56269 				ZEND_FETCH_STATIC_PROP_IS_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56270 				HYBRID_BREAK();
56271 			HYBRID_CASE(ZEND_UNSET_STATIC_PROP_SPEC_CONST_VAR):
56272 				VM_TRACE(ZEND_UNSET_STATIC_PROP_SPEC_CONST_VAR)
56273 				ZEND_UNSET_STATIC_PROP_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56274 				HYBRID_BREAK();
56275 			HYBRID_CASE(ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_CONST_VAR):
56276 				VM_TRACE(ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_CONST_VAR)
56277 				ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56278 				HYBRID_BREAK();
56279 			HYBRID_CASE(ZEND_YIELD_SPEC_CONST_VAR):
56280 				VM_TRACE(ZEND_YIELD_SPEC_CONST_VAR)
56281 				ZEND_YIELD_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56282 				HYBRID_BREAK();
56283 			HYBRID_CASE(ZEND_FETCH_R_SPEC_CONST_UNUSED):
56284 				VM_TRACE(ZEND_FETCH_R_SPEC_CONST_UNUSED)
56285 				ZEND_FETCH_R_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56286 				HYBRID_BREAK();
56287 			HYBRID_CASE(ZEND_FETCH_W_SPEC_CONST_UNUSED):
56288 				VM_TRACE(ZEND_FETCH_W_SPEC_CONST_UNUSED)
56289 				ZEND_FETCH_W_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56290 				HYBRID_BREAK();
56291 			HYBRID_CASE(ZEND_FETCH_RW_SPEC_CONST_UNUSED):
56292 				VM_TRACE(ZEND_FETCH_RW_SPEC_CONST_UNUSED)
56293 				ZEND_FETCH_RW_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56294 				HYBRID_BREAK();
56295 			HYBRID_CASE(ZEND_FETCH_FUNC_ARG_SPEC_CONST_UNUSED):
56296 				VM_TRACE(ZEND_FETCH_FUNC_ARG_SPEC_CONST_UNUSED)
56297 				ZEND_FETCH_FUNC_ARG_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56298 				HYBRID_BREAK();
56299 			HYBRID_CASE(ZEND_FETCH_UNSET_SPEC_CONST_UNUSED):
56300 				VM_TRACE(ZEND_FETCH_UNSET_SPEC_CONST_UNUSED)
56301 				ZEND_FETCH_UNSET_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56302 				HYBRID_BREAK();
56303 			HYBRID_CASE(ZEND_FETCH_IS_SPEC_CONST_UNUSED):
56304 				VM_TRACE(ZEND_FETCH_IS_SPEC_CONST_UNUSED)
56305 				ZEND_FETCH_IS_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56306 				HYBRID_BREAK();
56307 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_R_SPEC_CONST_UNUSED):
56308 				VM_TRACE(ZEND_FETCH_STATIC_PROP_R_SPEC_CONST_UNUSED)
56309 				ZEND_FETCH_STATIC_PROP_R_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56310 				HYBRID_BREAK();
56311 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_W_SPEC_CONST_UNUSED):
56312 				VM_TRACE(ZEND_FETCH_STATIC_PROP_W_SPEC_CONST_UNUSED)
56313 				ZEND_FETCH_STATIC_PROP_W_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56314 				HYBRID_BREAK();
56315 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_RW_SPEC_CONST_UNUSED):
56316 				VM_TRACE(ZEND_FETCH_STATIC_PROP_RW_SPEC_CONST_UNUSED)
56317 				ZEND_FETCH_STATIC_PROP_RW_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56318 				HYBRID_BREAK();
56319 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_CONST_UNUSED):
56320 				VM_TRACE(ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_CONST_UNUSED)
56321 				ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56322 				HYBRID_BREAK();
56323 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_UNSET_SPEC_CONST_UNUSED):
56324 				VM_TRACE(ZEND_FETCH_STATIC_PROP_UNSET_SPEC_CONST_UNUSED)
56325 				ZEND_FETCH_STATIC_PROP_UNSET_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56326 				HYBRID_BREAK();
56327 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_IS_SPEC_CONST_UNUSED):
56328 				VM_TRACE(ZEND_FETCH_STATIC_PROP_IS_SPEC_CONST_UNUSED)
56329 				ZEND_FETCH_STATIC_PROP_IS_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56330 				HYBRID_BREAK();
56331 			HYBRID_CASE(ZEND_FETCH_DIM_FUNC_ARG_SPEC_CONST_UNUSED):
56332 				VM_TRACE(ZEND_FETCH_DIM_FUNC_ARG_SPEC_CONST_UNUSED)
56333 				ZEND_FETCH_DIM_FUNC_ARG_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56334 				HYBRID_BREAK();
56335 			HYBRID_CASE(ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_UNUSED):
56336 				VM_TRACE(ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_UNUSED)
56337 				ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56338 				HYBRID_BREAK();
56339 			HYBRID_CASE(ZEND_VERIFY_RETURN_TYPE_SPEC_CONST_UNUSED):
56340 				VM_TRACE(ZEND_VERIFY_RETURN_TYPE_SPEC_CONST_UNUSED)
56341 				ZEND_VERIFY_RETURN_TYPE_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56342 				HYBRID_BREAK();
56343 			HYBRID_CASE(ZEND_NEW_SPEC_CONST_UNUSED):
56344 				VM_TRACE(ZEND_NEW_SPEC_CONST_UNUSED)
56345 				ZEND_NEW_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56346 				HYBRID_BREAK();
56347 			HYBRID_CASE(ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_UNUSED):
56348 				VM_TRACE(ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_UNUSED)
56349 				ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56350 				HYBRID_BREAK();
56351 			HYBRID_CASE(ZEND_INIT_ARRAY_SPEC_CONST_UNUSED):
56352 				VM_TRACE(ZEND_INIT_ARRAY_SPEC_CONST_UNUSED)
56353 				ZEND_INIT_ARRAY_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56354 				HYBRID_BREAK();
56355 			HYBRID_CASE(ZEND_UNSET_VAR_SPEC_CONST_UNUSED):
56356 				VM_TRACE(ZEND_UNSET_VAR_SPEC_CONST_UNUSED)
56357 				ZEND_UNSET_VAR_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56358 				HYBRID_BREAK();
56359 			HYBRID_CASE(ZEND_UNSET_STATIC_PROP_SPEC_CONST_UNUSED):
56360 				VM_TRACE(ZEND_UNSET_STATIC_PROP_SPEC_CONST_UNUSED)
56361 				ZEND_UNSET_STATIC_PROP_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56362 				HYBRID_BREAK();
56363 			HYBRID_CASE(ZEND_ISSET_ISEMPTY_VAR_SPEC_CONST_UNUSED):
56364 				VM_TRACE(ZEND_ISSET_ISEMPTY_VAR_SPEC_CONST_UNUSED)
56365 				ZEND_ISSET_ISEMPTY_VAR_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56366 				HYBRID_BREAK();
56367 			HYBRID_CASE(ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_CONST_UNUSED):
56368 				VM_TRACE(ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_CONST_UNUSED)
56369 				ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56370 				HYBRID_BREAK();
56371 			HYBRID_CASE(ZEND_DECLARE_LAMBDA_FUNCTION_SPEC_CONST_UNUSED):
56372 				VM_TRACE(ZEND_DECLARE_LAMBDA_FUNCTION_SPEC_CONST_UNUSED)
56373 				ZEND_DECLARE_LAMBDA_FUNCTION_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56374 				HYBRID_BREAK();
56375 			HYBRID_CASE(ZEND_YIELD_SPEC_CONST_UNUSED):
56376 				VM_TRACE(ZEND_YIELD_SPEC_CONST_UNUSED)
56377 				ZEND_YIELD_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56378 				HYBRID_BREAK();
56379 			HYBRID_CASE(ZEND_COUNT_SPEC_CONST_UNUSED):
56380 				VM_TRACE(ZEND_COUNT_SPEC_CONST_UNUSED)
56381 				ZEND_COUNT_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56382 				HYBRID_BREAK();
56383 			HYBRID_CASE(ZEND_GET_CLASS_SPEC_CONST_UNUSED):
56384 				VM_TRACE(ZEND_GET_CLASS_SPEC_CONST_UNUSED)
56385 				ZEND_GET_CLASS_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56386 				HYBRID_BREAK();
56387 			HYBRID_CASE(ZEND_GET_TYPE_SPEC_CONST_UNUSED):
56388 				VM_TRACE(ZEND_GET_TYPE_SPEC_CONST_UNUSED)
56389 				ZEND_GET_TYPE_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56390 				HYBRID_BREAK();
56391 			HYBRID_CASE(ZEND_FUNC_GET_ARGS_SPEC_CONST_UNUSED):
56392 				VM_TRACE(ZEND_FUNC_GET_ARGS_SPEC_CONST_UNUSED)
56393 				ZEND_FUNC_GET_ARGS_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56394 				HYBRID_BREAK();
56395 			HYBRID_CASE(ZEND_ADD_SPEC_CONST_CV):
56396 				VM_TRACE(ZEND_ADD_SPEC_CONST_CV)
56397 				ZEND_ADD_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56398 				HYBRID_BREAK();
56399 			HYBRID_CASE(ZEND_SUB_SPEC_CONST_CV):
56400 				VM_TRACE(ZEND_SUB_SPEC_CONST_CV)
56401 				ZEND_SUB_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56402 				HYBRID_BREAK();
56403 			HYBRID_CASE(ZEND_DIV_SPEC_CONST_CV):
56404 				VM_TRACE(ZEND_DIV_SPEC_CONST_CV)
56405 				ZEND_DIV_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56406 				HYBRID_BREAK();
56407 			HYBRID_CASE(ZEND_MOD_SPEC_CONST_CV):
56408 				VM_TRACE(ZEND_MOD_SPEC_CONST_CV)
56409 				ZEND_MOD_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56410 				HYBRID_BREAK();
56411 			HYBRID_CASE(ZEND_SL_SPEC_CONST_CV):
56412 				VM_TRACE(ZEND_SL_SPEC_CONST_CV)
56413 				ZEND_SL_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56414 				HYBRID_BREAK();
56415 			HYBRID_CASE(ZEND_SR_SPEC_CONST_CV):
56416 				VM_TRACE(ZEND_SR_SPEC_CONST_CV)
56417 				ZEND_SR_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56418 				HYBRID_BREAK();
56419 			HYBRID_CASE(ZEND_POW_SPEC_CONST_CV):
56420 				VM_TRACE(ZEND_POW_SPEC_CONST_CV)
56421 				ZEND_POW_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56422 				HYBRID_BREAK();
56423 			HYBRID_CASE(ZEND_CONCAT_SPEC_CONST_CV):
56424 				VM_TRACE(ZEND_CONCAT_SPEC_CONST_CV)
56425 				ZEND_CONCAT_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56426 				HYBRID_BREAK();
56427 			HYBRID_CASE(ZEND_IS_SMALLER_SPEC_CONST_CV):
56428 				VM_TRACE(ZEND_IS_SMALLER_SPEC_CONST_CV)
56429 				ZEND_IS_SMALLER_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56430 				HYBRID_BREAK();
56431 			HYBRID_CASE(ZEND_IS_SMALLER_OR_EQUAL_SPEC_CONST_CV):
56432 				VM_TRACE(ZEND_IS_SMALLER_OR_EQUAL_SPEC_CONST_CV)
56433 				ZEND_IS_SMALLER_OR_EQUAL_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56434 				HYBRID_BREAK();
56435 			HYBRID_CASE(ZEND_SPACESHIP_SPEC_CONST_CV):
56436 				VM_TRACE(ZEND_SPACESHIP_SPEC_CONST_CV)
56437 				ZEND_SPACESHIP_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56438 				HYBRID_BREAK();
56439 			HYBRID_CASE(ZEND_FETCH_DIM_R_SPEC_CONST_CV):
56440 				VM_TRACE(ZEND_FETCH_DIM_R_SPEC_CONST_CV)
56441 				ZEND_FETCH_DIM_R_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56442 				HYBRID_BREAK();
56443 			HYBRID_CASE(ZEND_FETCH_DIM_IS_SPEC_CONST_CV):
56444 				VM_TRACE(ZEND_FETCH_DIM_IS_SPEC_CONST_CV)
56445 				ZEND_FETCH_DIM_IS_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56446 				HYBRID_BREAK();
56447 			HYBRID_CASE(ZEND_FETCH_DIM_FUNC_ARG_SPEC_CONST_CV):
56448 				VM_TRACE(ZEND_FETCH_DIM_FUNC_ARG_SPEC_CONST_CV)
56449 				ZEND_FETCH_DIM_FUNC_ARG_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56450 				HYBRID_BREAK();
56451 			HYBRID_CASE(ZEND_FETCH_OBJ_R_SPEC_CONST_CV):
56452 				VM_TRACE(ZEND_FETCH_OBJ_R_SPEC_CONST_CV)
56453 				ZEND_FETCH_OBJ_R_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56454 				HYBRID_BREAK();
56455 			HYBRID_CASE(ZEND_FETCH_OBJ_IS_SPEC_CONST_CV):
56456 				VM_TRACE(ZEND_FETCH_OBJ_IS_SPEC_CONST_CV)
56457 				ZEND_FETCH_OBJ_IS_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56458 				HYBRID_BREAK();
56459 			HYBRID_CASE(ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CONST_CV):
56460 				VM_TRACE(ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CONST_CV)
56461 				ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56462 				HYBRID_BREAK();
56463 			HYBRID_CASE(ZEND_FETCH_LIST_R_SPEC_CONST_CV):
56464 				VM_TRACE(ZEND_FETCH_LIST_R_SPEC_CONST_CV)
56465 				ZEND_FETCH_LIST_R_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56466 				HYBRID_BREAK();
56467 			HYBRID_CASE(ZEND_FAST_CONCAT_SPEC_CONST_CV):
56468 				VM_TRACE(ZEND_FAST_CONCAT_SPEC_CONST_CV)
56469 				ZEND_FAST_CONCAT_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56470 				HYBRID_BREAK();
56471 			HYBRID_CASE(ZEND_INIT_METHOD_CALL_SPEC_CONST_CV):
56472 				VM_TRACE(ZEND_INIT_METHOD_CALL_SPEC_CONST_CV)
56473 				ZEND_INIT_METHOD_CALL_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56474 				HYBRID_BREAK();
56475 			HYBRID_CASE(ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_CV):
56476 				VM_TRACE(ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_CV)
56477 				ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56478 				HYBRID_BREAK();
56479 			HYBRID_CASE(ZEND_INIT_USER_CALL_SPEC_CONST_CV):
56480 				VM_TRACE(ZEND_INIT_USER_CALL_SPEC_CONST_CV)
56481 				ZEND_INIT_USER_CALL_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56482 				HYBRID_BREAK();
56483 			HYBRID_CASE(ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_CV):
56484 				VM_TRACE(ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_CV)
56485 				ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56486 				HYBRID_BREAK();
56487 			HYBRID_CASE(ZEND_INIT_ARRAY_SPEC_CONST_CV):
56488 				VM_TRACE(ZEND_INIT_ARRAY_SPEC_CONST_CV)
56489 				ZEND_INIT_ARRAY_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56490 				HYBRID_BREAK();
56491 			HYBRID_CASE(ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CONST_CV):
56492 				VM_TRACE(ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CONST_CV)
56493 				ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56494 				HYBRID_BREAK();
56495 			HYBRID_CASE(ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CONST_CV):
56496 				VM_TRACE(ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CONST_CV)
56497 				ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56498 				HYBRID_BREAK();
56499 			HYBRID_CASE(ZEND_YIELD_SPEC_CONST_CV):
56500 				VM_TRACE(ZEND_YIELD_SPEC_CONST_CV)
56501 				ZEND_YIELD_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56502 				HYBRID_BREAK();
56503 			HYBRID_CASE(ZEND_QM_ASSIGN_DOUBLE_SPEC_TMPVARCV):
56504 				VM_TRACE(ZEND_QM_ASSIGN_DOUBLE_SPEC_TMPVARCV)
56505 				ZEND_QM_ASSIGN_DOUBLE_SPEC_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56506 				HYBRID_BREAK();
56507 			HYBRID_CASE(ZEND_QM_ASSIGN_NOREF_SPEC_TMPVARCV):
56508 				VM_TRACE(ZEND_QM_ASSIGN_NOREF_SPEC_TMPVARCV)
56509 				ZEND_QM_ASSIGN_NOREF_SPEC_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56510 				HYBRID_BREAK();
56511 			HYBRID_CASE(ZEND_FETCH_LIST_R_SPEC_TMPVARCV_CONST):
56512 				VM_TRACE(ZEND_FETCH_LIST_R_SPEC_TMPVARCV_CONST)
56513 				ZEND_FETCH_LIST_R_SPEC_TMPVARCV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56514 				HYBRID_BREAK();
56515 			HYBRID_CASE(ZEND_SWITCH_LONG_SPEC_TMPVARCV_CONST):
56516 				VM_TRACE(ZEND_SWITCH_LONG_SPEC_TMPVARCV_CONST)
56517 				ZEND_SWITCH_LONG_SPEC_TMPVARCV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56518 				HYBRID_BREAK();
56519 			HYBRID_CASE(ZEND_SWITCH_STRING_SPEC_TMPVARCV_CONST):
56520 				VM_TRACE(ZEND_SWITCH_STRING_SPEC_TMPVARCV_CONST)
56521 				ZEND_SWITCH_STRING_SPEC_TMPVARCV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56522 				HYBRID_BREAK();
56523 			HYBRID_CASE(ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST):
56524 				VM_TRACE(ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST)
56525 				ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56526 				HYBRID_BREAK();
56527 			HYBRID_CASE(ZEND_ADD_LONG_SPEC_TMPVARCV_CONST):
56528 				VM_TRACE(ZEND_ADD_LONG_SPEC_TMPVARCV_CONST)
56529 				ZEND_ADD_LONG_SPEC_TMPVARCV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56530 				HYBRID_BREAK();
56531 			HYBRID_CASE(ZEND_ADD_DOUBLE_SPEC_TMPVARCV_CONST):
56532 				VM_TRACE(ZEND_ADD_DOUBLE_SPEC_TMPVARCV_CONST)
56533 				ZEND_ADD_DOUBLE_SPEC_TMPVARCV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56534 				HYBRID_BREAK();
56535 			HYBRID_CASE(ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST):
56536 				VM_TRACE(ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST)
56537 				ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56538 				HYBRID_BREAK();
56539 			HYBRID_CASE(ZEND_SUB_LONG_SPEC_TMPVARCV_CONST):
56540 				VM_TRACE(ZEND_SUB_LONG_SPEC_TMPVARCV_CONST)
56541 				ZEND_SUB_LONG_SPEC_TMPVARCV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56542 				HYBRID_BREAK();
56543 			HYBRID_CASE(ZEND_SUB_DOUBLE_SPEC_TMPVARCV_CONST):
56544 				VM_TRACE(ZEND_SUB_DOUBLE_SPEC_TMPVARCV_CONST)
56545 				ZEND_SUB_DOUBLE_SPEC_TMPVARCV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56546 				HYBRID_BREAK();
56547 			HYBRID_CASE(ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST):
56548 				VM_TRACE(ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST)
56549 				ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56550 				HYBRID_BREAK();
56551 			HYBRID_CASE(ZEND_MUL_LONG_SPEC_TMPVARCV_CONST):
56552 				VM_TRACE(ZEND_MUL_LONG_SPEC_TMPVARCV_CONST)
56553 				ZEND_MUL_LONG_SPEC_TMPVARCV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56554 				HYBRID_BREAK();
56555 			HYBRID_CASE(ZEND_MUL_DOUBLE_SPEC_TMPVARCV_CONST):
56556 				VM_TRACE(ZEND_MUL_DOUBLE_SPEC_TMPVARCV_CONST)
56557 				ZEND_MUL_DOUBLE_SPEC_TMPVARCV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56558 				HYBRID_BREAK();
56559 			HYBRID_CASE(ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST):
56560 				VM_TRACE(ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST)
56561 				ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56562 				HYBRID_BREAK();
56563 			HYBRID_CASE(ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ):
56564 				VM_TRACE(ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ)
56565 				ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56566 				HYBRID_BREAK();
56567 			HYBRID_CASE(ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ):
56568 				VM_TRACE(ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ)
56569 				ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56570 				HYBRID_BREAK();
56571 			HYBRID_CASE(ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST):
56572 				VM_TRACE(ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST)
56573 				ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56574 				HYBRID_BREAK();
56575 			HYBRID_CASE(ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ):
56576 				VM_TRACE(ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ)
56577 				ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56578 				HYBRID_BREAK();
56579 			HYBRID_CASE(ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ):
56580 				VM_TRACE(ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ)
56581 				ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56582 				HYBRID_BREAK();
56583 			HYBRID_CASE(ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST):
56584 				VM_TRACE(ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST)
56585 				ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56586 				HYBRID_BREAK();
56587 			HYBRID_CASE(ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ):
56588 				VM_TRACE(ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ)
56589 				ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56590 				HYBRID_BREAK();
56591 			HYBRID_CASE(ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ):
56592 				VM_TRACE(ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ)
56593 				ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56594 				HYBRID_BREAK();
56595 			HYBRID_CASE(ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST):
56596 				VM_TRACE(ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST)
56597 				ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56598 				HYBRID_BREAK();
56599 			HYBRID_CASE(ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ):
56600 				VM_TRACE(ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ)
56601 				ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56602 				HYBRID_BREAK();
56603 			HYBRID_CASE(ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ):
56604 				VM_TRACE(ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ)
56605 				ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56606 				HYBRID_BREAK();
56607 			HYBRID_CASE(ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST):
56608 				VM_TRACE(ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST)
56609 				ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56610 				HYBRID_BREAK();
56611 			HYBRID_CASE(ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPZ):
56612 				VM_TRACE(ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPZ)
56613 				ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56614 				HYBRID_BREAK();
56615 			HYBRID_CASE(ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPNZ):
56616 				VM_TRACE(ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPNZ)
56617 				ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPNZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56618 				HYBRID_BREAK();
56619 			HYBRID_CASE(ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST):
56620 				VM_TRACE(ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST)
56621 				ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56622 				HYBRID_BREAK();
56623 			HYBRID_CASE(ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ):
56624 				VM_TRACE(ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ)
56625 				ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56626 				HYBRID_BREAK();
56627 			HYBRID_CASE(ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ):
56628 				VM_TRACE(ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ)
56629 				ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56630 				HYBRID_BREAK();
56631 			HYBRID_CASE(ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST):
56632 				VM_TRACE(ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST)
56633 				ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56634 				HYBRID_BREAK();
56635 			HYBRID_CASE(ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ):
56636 				VM_TRACE(ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ)
56637 				ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56638 				HYBRID_BREAK();
56639 			HYBRID_CASE(ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ):
56640 				VM_TRACE(ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ)
56641 				ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56642 				HYBRID_BREAK();
56643 			HYBRID_CASE(ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST):
56644 				VM_TRACE(ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST)
56645 				ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56646 				HYBRID_BREAK();
56647 			HYBRID_CASE(ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ):
56648 				VM_TRACE(ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ)
56649 				ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56650 				HYBRID_BREAK();
56651 			HYBRID_CASE(ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ):
56652 				VM_TRACE(ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ)
56653 				ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56654 				HYBRID_BREAK();
56655 			HYBRID_CASE(ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV):
56656 				VM_TRACE(ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV)
56657 				ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56658 				HYBRID_BREAK();
56659 			HYBRID_CASE(ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV):
56660 				VM_TRACE(ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV)
56661 				ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56662 				HYBRID_BREAK();
56663 			HYBRID_CASE(ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV):
56664 				VM_TRACE(ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV)
56665 				ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56666 				HYBRID_BREAK();
56667 			HYBRID_CASE(ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV):
56668 				VM_TRACE(ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV)
56669 				ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56670 				HYBRID_BREAK();
56671 			HYBRID_CASE(ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV):
56672 				VM_TRACE(ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV)
56673 				ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56674 				HYBRID_BREAK();
56675 			HYBRID_CASE(ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV):
56676 				VM_TRACE(ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV)
56677 				ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56678 				HYBRID_BREAK();
56679 			HYBRID_CASE(ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV):
56680 				VM_TRACE(ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV)
56681 				ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56682 				HYBRID_BREAK();
56683 			HYBRID_CASE(ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV):
56684 				VM_TRACE(ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV)
56685 				ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56686 				HYBRID_BREAK();
56687 			HYBRID_CASE(ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV):
56688 				VM_TRACE(ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV)
56689 				ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56690 				HYBRID_BREAK();
56691 			HYBRID_CASE(ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV):
56692 				VM_TRACE(ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV)
56693 				ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56694 				HYBRID_BREAK();
56695 			HYBRID_CASE(ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ):
56696 				VM_TRACE(ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ)
56697 				ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56698 				HYBRID_BREAK();
56699 			HYBRID_CASE(ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ):
56700 				VM_TRACE(ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ)
56701 				ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56702 				HYBRID_BREAK();
56703 			HYBRID_CASE(ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV):
56704 				VM_TRACE(ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV)
56705 				ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56706 				HYBRID_BREAK();
56707 			HYBRID_CASE(ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ):
56708 				VM_TRACE(ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ)
56709 				ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56710 				HYBRID_BREAK();
56711 			HYBRID_CASE(ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ):
56712 				VM_TRACE(ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ)
56713 				ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56714 				HYBRID_BREAK();
56715 			HYBRID_CASE(ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV):
56716 				VM_TRACE(ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV)
56717 				ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56718 				HYBRID_BREAK();
56719 			HYBRID_CASE(ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ):
56720 				VM_TRACE(ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ)
56721 				ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56722 				HYBRID_BREAK();
56723 			HYBRID_CASE(ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ):
56724 				VM_TRACE(ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ)
56725 				ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56726 				HYBRID_BREAK();
56727 			HYBRID_CASE(ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV):
56728 				VM_TRACE(ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV)
56729 				ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56730 				HYBRID_BREAK();
56731 			HYBRID_CASE(ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ):
56732 				VM_TRACE(ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ)
56733 				ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56734 				HYBRID_BREAK();
56735 			HYBRID_CASE(ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ):
56736 				VM_TRACE(ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ)
56737 				ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56738 				HYBRID_BREAK();
56739 			HYBRID_CASE(ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV):
56740 				VM_TRACE(ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV)
56741 				ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56742 				HYBRID_BREAK();
56743 			HYBRID_CASE(ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ):
56744 				VM_TRACE(ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ)
56745 				ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56746 				HYBRID_BREAK();
56747 			HYBRID_CASE(ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ):
56748 				VM_TRACE(ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ)
56749 				ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56750 				HYBRID_BREAK();
56751 			HYBRID_CASE(ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV):
56752 				VM_TRACE(ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV)
56753 				ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56754 				HYBRID_BREAK();
56755 			HYBRID_CASE(ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ):
56756 				VM_TRACE(ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ)
56757 				ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56758 				HYBRID_BREAK();
56759 			HYBRID_CASE(ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ):
56760 				VM_TRACE(ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ)
56761 				ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56762 				HYBRID_BREAK();
56763 			HYBRID_CASE(ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV):
56764 				VM_TRACE(ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV)
56765 				ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56766 				HYBRID_BREAK();
56767 			HYBRID_CASE(ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ):
56768 				VM_TRACE(ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ)
56769 				ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56770 				HYBRID_BREAK();
56771 			HYBRID_CASE(ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ):
56772 				VM_TRACE(ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ)
56773 				ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56774 				HYBRID_BREAK();
56775 			HYBRID_CASE(ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV):
56776 				VM_TRACE(ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV)
56777 				ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56778 				HYBRID_BREAK();
56779 			HYBRID_CASE(ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ):
56780 				VM_TRACE(ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ)
56781 				ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56782 				HYBRID_BREAK();
56783 			HYBRID_CASE(ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ):
56784 				VM_TRACE(ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ)
56785 				ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56786 				HYBRID_BREAK();
56787 			HYBRID_CASE(ZEND_FETCH_LIST_R_SPEC_TMPVARCV_TMPVAR):
56788 				VM_TRACE(ZEND_FETCH_LIST_R_SPEC_TMPVARCV_TMPVAR)
56789 				ZEND_FETCH_LIST_R_SPEC_TMPVARCV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56790 				HYBRID_BREAK();
56791 			HYBRID_CASE(ZEND_FETCH_LIST_R_SPEC_TMPVARCV_CV):
56792 				VM_TRACE(ZEND_FETCH_LIST_R_SPEC_TMPVARCV_CV)
56793 				ZEND_FETCH_LIST_R_SPEC_TMPVARCV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56794 				HYBRID_BREAK();
56795 			HYBRID_CASE(ZEND_BW_NOT_SPEC_TMPVAR):
56796 				VM_TRACE(ZEND_BW_NOT_SPEC_TMPVAR)
56797 				ZEND_BW_NOT_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56798 				HYBRID_BREAK();
56799 			HYBRID_CASE(ZEND_BOOL_NOT_SPEC_TMPVAR):
56800 				VM_TRACE(ZEND_BOOL_NOT_SPEC_TMPVAR)
56801 				ZEND_BOOL_NOT_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56802 				HYBRID_BREAK();
56803 			HYBRID_CASE(ZEND_ECHO_SPEC_TMPVAR):
56804 				VM_TRACE(ZEND_ECHO_SPEC_TMPVAR)
56805 				ZEND_ECHO_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56806 				HYBRID_BREAK();
56807 			HYBRID_CASE(ZEND_JMPZ_SPEC_TMPVAR):
56808 				VM_TRACE(ZEND_JMPZ_SPEC_TMPVAR)
56809 				ZEND_JMPZ_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56810 				HYBRID_BREAK();
56811 			HYBRID_CASE(ZEND_JMPNZ_SPEC_TMPVAR):
56812 				VM_TRACE(ZEND_JMPNZ_SPEC_TMPVAR)
56813 				ZEND_JMPNZ_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56814 				HYBRID_BREAK();
56815 			HYBRID_CASE(ZEND_JMPZNZ_SPEC_TMPVAR):
56816 				VM_TRACE(ZEND_JMPZNZ_SPEC_TMPVAR)
56817 				ZEND_JMPZNZ_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56818 				HYBRID_BREAK();
56819 			HYBRID_CASE(ZEND_JMPZ_EX_SPEC_TMPVAR):
56820 				VM_TRACE(ZEND_JMPZ_EX_SPEC_TMPVAR)
56821 				ZEND_JMPZ_EX_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56822 				HYBRID_BREAK();
56823 			HYBRID_CASE(ZEND_JMPNZ_EX_SPEC_TMPVAR):
56824 				VM_TRACE(ZEND_JMPNZ_EX_SPEC_TMPVAR)
56825 				ZEND_JMPNZ_EX_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56826 				HYBRID_BREAK();
56827 			HYBRID_CASE(ZEND_FREE_SPEC_TMPVAR):
56828 				VM_TRACE(ZEND_FREE_SPEC_TMPVAR)
56829 				ZEND_FREE_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56830 				HYBRID_BREAK();
56831 			HYBRID_CASE(ZEND_FE_FREE_SPEC_TMPVAR):
56832 				VM_TRACE(ZEND_FE_FREE_SPEC_TMPVAR)
56833 				ZEND_FE_FREE_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56834 				HYBRID_BREAK();
56835 			HYBRID_CASE(ZEND_SEND_VAL_SPEC_TMPVAR):
56836 				VM_TRACE(ZEND_SEND_VAL_SPEC_TMPVAR)
56837 				ZEND_SEND_VAL_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56838 				HYBRID_BREAK();
56839 			HYBRID_CASE(ZEND_BOOL_SPEC_TMPVAR):
56840 				VM_TRACE(ZEND_BOOL_SPEC_TMPVAR)
56841 				ZEND_BOOL_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56842 				HYBRID_BREAK();
56843 			HYBRID_CASE(ZEND_CLONE_SPEC_TMPVAR):
56844 				VM_TRACE(ZEND_CLONE_SPEC_TMPVAR)
56845 				ZEND_CLONE_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56846 				HYBRID_BREAK();
56847 			HYBRID_CASE(ZEND_INCLUDE_OR_EVAL_SPEC_TMPVAR):
56848 				VM_TRACE(ZEND_INCLUDE_OR_EVAL_SPEC_TMPVAR)
56849 				ZEND_INCLUDE_OR_EVAL_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56850 				HYBRID_BREAK();
56851 			HYBRID_CASE(ZEND_EXIT_SPEC_TMPVAR):
56852 				VM_TRACE(ZEND_EXIT_SPEC_TMPVAR)
56853 				ZEND_EXIT_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56854 				HYBRID_BREAK();
56855 			HYBRID_CASE(ZEND_COALESCE_SPEC_TMPVAR):
56856 				VM_TRACE(ZEND_COALESCE_SPEC_TMPVAR)
56857 				ZEND_COALESCE_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56858 				HYBRID_BREAK();
56859 			HYBRID_CASE(ZEND_STRLEN_SPEC_TMPVAR):
56860 				VM_TRACE(ZEND_STRLEN_SPEC_TMPVAR)
56861 				ZEND_STRLEN_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56862 				HYBRID_BREAK();
56863 			HYBRID_CASE(ZEND_TYPE_CHECK_SPEC_TMPVAR):
56864 				VM_TRACE(ZEND_TYPE_CHECK_SPEC_TMPVAR)
56865 				ZEND_TYPE_CHECK_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56866 				HYBRID_BREAK();
56867 			HYBRID_CASE(ZEND_ADD_SPEC_TMPVAR_CONST):
56868 				VM_TRACE(ZEND_ADD_SPEC_TMPVAR_CONST)
56869 				ZEND_ADD_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56870 				HYBRID_BREAK();
56871 			HYBRID_CASE(ZEND_SUB_SPEC_TMPVAR_CONST):
56872 				VM_TRACE(ZEND_SUB_SPEC_TMPVAR_CONST)
56873 				ZEND_SUB_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56874 				HYBRID_BREAK();
56875 			HYBRID_CASE(ZEND_MUL_SPEC_TMPVAR_CONST):
56876 				VM_TRACE(ZEND_MUL_SPEC_TMPVAR_CONST)
56877 				ZEND_MUL_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56878 				HYBRID_BREAK();
56879 			HYBRID_CASE(ZEND_DIV_SPEC_TMPVAR_CONST):
56880 				VM_TRACE(ZEND_DIV_SPEC_TMPVAR_CONST)
56881 				ZEND_DIV_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56882 				HYBRID_BREAK();
56883 			HYBRID_CASE(ZEND_MOD_SPEC_TMPVAR_CONST):
56884 				VM_TRACE(ZEND_MOD_SPEC_TMPVAR_CONST)
56885 				ZEND_MOD_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56886 				HYBRID_BREAK();
56887 			HYBRID_CASE(ZEND_SL_SPEC_TMPVAR_CONST):
56888 				VM_TRACE(ZEND_SL_SPEC_TMPVAR_CONST)
56889 				ZEND_SL_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56890 				HYBRID_BREAK();
56891 			HYBRID_CASE(ZEND_SR_SPEC_TMPVAR_CONST):
56892 				VM_TRACE(ZEND_SR_SPEC_TMPVAR_CONST)
56893 				ZEND_SR_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56894 				HYBRID_BREAK();
56895 			HYBRID_CASE(ZEND_POW_SPEC_TMPVAR_CONST):
56896 				VM_TRACE(ZEND_POW_SPEC_TMPVAR_CONST)
56897 				ZEND_POW_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56898 				HYBRID_BREAK();
56899 			HYBRID_CASE(ZEND_CONCAT_SPEC_TMPVAR_CONST):
56900 				VM_TRACE(ZEND_CONCAT_SPEC_TMPVAR_CONST)
56901 				ZEND_CONCAT_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56902 				HYBRID_BREAK();
56903 			HYBRID_CASE(ZEND_IS_EQUAL_SPEC_TMPVAR_CONST):
56904 				VM_TRACE(ZEND_IS_EQUAL_SPEC_TMPVAR_CONST)
56905 				ZEND_IS_EQUAL_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56906 				HYBRID_BREAK();
56907 			HYBRID_CASE(ZEND_IS_NOT_EQUAL_SPEC_TMPVAR_CONST):
56908 				VM_TRACE(ZEND_IS_NOT_EQUAL_SPEC_TMPVAR_CONST)
56909 				ZEND_IS_NOT_EQUAL_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56910 				HYBRID_BREAK();
56911 			HYBRID_CASE(ZEND_IS_SMALLER_SPEC_TMPVAR_CONST):
56912 				VM_TRACE(ZEND_IS_SMALLER_SPEC_TMPVAR_CONST)
56913 				ZEND_IS_SMALLER_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56914 				HYBRID_BREAK();
56915 			HYBRID_CASE(ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVAR_CONST):
56916 				VM_TRACE(ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVAR_CONST)
56917 				ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56918 				HYBRID_BREAK();
56919 			HYBRID_CASE(ZEND_SPACESHIP_SPEC_TMPVAR_CONST):
56920 				VM_TRACE(ZEND_SPACESHIP_SPEC_TMPVAR_CONST)
56921 				ZEND_SPACESHIP_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56922 				HYBRID_BREAK();
56923 			HYBRID_CASE(ZEND_BW_OR_SPEC_TMPVAR_CONST):
56924 				VM_TRACE(ZEND_BW_OR_SPEC_TMPVAR_CONST)
56925 				ZEND_BW_OR_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56926 				HYBRID_BREAK();
56927 			HYBRID_CASE(ZEND_BW_AND_SPEC_TMPVAR_CONST):
56928 				VM_TRACE(ZEND_BW_AND_SPEC_TMPVAR_CONST)
56929 				ZEND_BW_AND_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56930 				HYBRID_BREAK();
56931 			HYBRID_CASE(ZEND_BW_XOR_SPEC_TMPVAR_CONST):
56932 				VM_TRACE(ZEND_BW_XOR_SPEC_TMPVAR_CONST)
56933 				ZEND_BW_XOR_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56934 				HYBRID_BREAK();
56935 			HYBRID_CASE(ZEND_BOOL_XOR_SPEC_TMPVAR_CONST):
56936 				VM_TRACE(ZEND_BOOL_XOR_SPEC_TMPVAR_CONST)
56937 				ZEND_BOOL_XOR_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56938 				HYBRID_BREAK();
56939 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_R_SPEC_TMPVAR_CONST):
56940 				VM_TRACE(ZEND_FETCH_STATIC_PROP_R_SPEC_TMPVAR_CONST)
56941 				ZEND_FETCH_STATIC_PROP_R_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56942 				HYBRID_BREAK();
56943 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_W_SPEC_TMPVAR_CONST):
56944 				VM_TRACE(ZEND_FETCH_STATIC_PROP_W_SPEC_TMPVAR_CONST)
56945 				ZEND_FETCH_STATIC_PROP_W_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56946 				HYBRID_BREAK();
56947 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_RW_SPEC_TMPVAR_CONST):
56948 				VM_TRACE(ZEND_FETCH_STATIC_PROP_RW_SPEC_TMPVAR_CONST)
56949 				ZEND_FETCH_STATIC_PROP_RW_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56950 				HYBRID_BREAK();
56951 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_TMPVAR_CONST):
56952 				VM_TRACE(ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_TMPVAR_CONST)
56953 				ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56954 				HYBRID_BREAK();
56955 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_UNSET_SPEC_TMPVAR_CONST):
56956 				VM_TRACE(ZEND_FETCH_STATIC_PROP_UNSET_SPEC_TMPVAR_CONST)
56957 				ZEND_FETCH_STATIC_PROP_UNSET_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56958 				HYBRID_BREAK();
56959 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_IS_SPEC_TMPVAR_CONST):
56960 				VM_TRACE(ZEND_FETCH_STATIC_PROP_IS_SPEC_TMPVAR_CONST)
56961 				ZEND_FETCH_STATIC_PROP_IS_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56962 				HYBRID_BREAK();
56963 			HYBRID_CASE(ZEND_FETCH_DIM_R_SPEC_TMPVAR_CONST):
56964 				VM_TRACE(ZEND_FETCH_DIM_R_SPEC_TMPVAR_CONST)
56965 				ZEND_FETCH_DIM_R_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56966 				HYBRID_BREAK();
56967 			HYBRID_CASE(ZEND_FETCH_DIM_IS_SPEC_TMPVAR_CONST):
56968 				VM_TRACE(ZEND_FETCH_DIM_IS_SPEC_TMPVAR_CONST)
56969 				ZEND_FETCH_DIM_IS_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56970 				HYBRID_BREAK();
56971 			HYBRID_CASE(ZEND_FETCH_OBJ_R_SPEC_TMPVAR_CONST):
56972 				VM_TRACE(ZEND_FETCH_OBJ_R_SPEC_TMPVAR_CONST)
56973 				ZEND_FETCH_OBJ_R_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56974 				HYBRID_BREAK();
56975 			HYBRID_CASE(ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_CONST):
56976 				VM_TRACE(ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_CONST)
56977 				ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56978 				HYBRID_BREAK();
56979 			HYBRID_CASE(ZEND_FAST_CONCAT_SPEC_TMPVAR_CONST):
56980 				VM_TRACE(ZEND_FAST_CONCAT_SPEC_TMPVAR_CONST)
56981 				ZEND_FAST_CONCAT_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56982 				HYBRID_BREAK();
56983 			HYBRID_CASE(ZEND_INIT_METHOD_CALL_SPEC_TMPVAR_CONST):
56984 				VM_TRACE(ZEND_INIT_METHOD_CALL_SPEC_TMPVAR_CONST)
56985 				ZEND_INIT_METHOD_CALL_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56986 				HYBRID_BREAK();
56987 			HYBRID_CASE(ZEND_CASE_SPEC_TMPVAR_CONST):
56988 				VM_TRACE(ZEND_CASE_SPEC_TMPVAR_CONST)
56989 				ZEND_CASE_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56990 				HYBRID_BREAK();
56991 			HYBRID_CASE(ZEND_UNSET_STATIC_PROP_SPEC_TMPVAR_CONST):
56992 				VM_TRACE(ZEND_UNSET_STATIC_PROP_SPEC_TMPVAR_CONST)
56993 				ZEND_UNSET_STATIC_PROP_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56994 				HYBRID_BREAK();
56995 			HYBRID_CASE(ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_TMPVAR_CONST):
56996 				VM_TRACE(ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_TMPVAR_CONST)
56997 				ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
56998 				HYBRID_BREAK();
56999 			HYBRID_CASE(ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_TMPVAR_CONST):
57000 				VM_TRACE(ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_TMPVAR_CONST)
57001 				ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57002 				HYBRID_BREAK();
57003 			HYBRID_CASE(ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMPVAR_CONST):
57004 				VM_TRACE(ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMPVAR_CONST)
57005 				ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57006 				HYBRID_BREAK();
57007 			HYBRID_CASE(ZEND_INSTANCEOF_SPEC_TMPVAR_CONST):
57008 				VM_TRACE(ZEND_INSTANCEOF_SPEC_TMPVAR_CONST)
57009 				ZEND_INSTANCEOF_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57010 				HYBRID_BREAK();
57011 			HYBRID_CASE(ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_CONST):
57012 				VM_TRACE(ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_CONST)
57013 				ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57014 				HYBRID_BREAK();
57015 			HYBRID_CASE(ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_TMPVARCV):
57016 				VM_TRACE(ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_TMPVARCV)
57017 				ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57018 				HYBRID_BREAK();
57019 			HYBRID_CASE(ZEND_ADD_SPEC_TMPVAR_TMPVAR):
57020 				VM_TRACE(ZEND_ADD_SPEC_TMPVAR_TMPVAR)
57021 				ZEND_ADD_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57022 				HYBRID_BREAK();
57023 			HYBRID_CASE(ZEND_SUB_SPEC_TMPVAR_TMPVAR):
57024 				VM_TRACE(ZEND_SUB_SPEC_TMPVAR_TMPVAR)
57025 				ZEND_SUB_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57026 				HYBRID_BREAK();
57027 			HYBRID_CASE(ZEND_MUL_SPEC_TMPVAR_TMPVAR):
57028 				VM_TRACE(ZEND_MUL_SPEC_TMPVAR_TMPVAR)
57029 				ZEND_MUL_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57030 				HYBRID_BREAK();
57031 			HYBRID_CASE(ZEND_DIV_SPEC_TMPVAR_TMPVAR):
57032 				VM_TRACE(ZEND_DIV_SPEC_TMPVAR_TMPVAR)
57033 				ZEND_DIV_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57034 				HYBRID_BREAK();
57035 			HYBRID_CASE(ZEND_MOD_SPEC_TMPVAR_TMPVAR):
57036 				VM_TRACE(ZEND_MOD_SPEC_TMPVAR_TMPVAR)
57037 				ZEND_MOD_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57038 				HYBRID_BREAK();
57039 			HYBRID_CASE(ZEND_SL_SPEC_TMPVAR_TMPVAR):
57040 				VM_TRACE(ZEND_SL_SPEC_TMPVAR_TMPVAR)
57041 				ZEND_SL_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57042 				HYBRID_BREAK();
57043 			HYBRID_CASE(ZEND_SR_SPEC_TMPVAR_TMPVAR):
57044 				VM_TRACE(ZEND_SR_SPEC_TMPVAR_TMPVAR)
57045 				ZEND_SR_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57046 				HYBRID_BREAK();
57047 			HYBRID_CASE(ZEND_POW_SPEC_TMPVAR_TMPVAR):
57048 				VM_TRACE(ZEND_POW_SPEC_TMPVAR_TMPVAR)
57049 				ZEND_POW_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57050 				HYBRID_BREAK();
57051 			HYBRID_CASE(ZEND_CONCAT_SPEC_TMPVAR_TMPVAR):
57052 				VM_TRACE(ZEND_CONCAT_SPEC_TMPVAR_TMPVAR)
57053 				ZEND_CONCAT_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57054 				HYBRID_BREAK();
57055 			HYBRID_CASE(ZEND_IS_EQUAL_SPEC_TMPVAR_TMPVAR):
57056 				VM_TRACE(ZEND_IS_EQUAL_SPEC_TMPVAR_TMPVAR)
57057 				ZEND_IS_EQUAL_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57058 				HYBRID_BREAK();
57059 			HYBRID_CASE(ZEND_IS_NOT_EQUAL_SPEC_TMPVAR_TMPVAR):
57060 				VM_TRACE(ZEND_IS_NOT_EQUAL_SPEC_TMPVAR_TMPVAR)
57061 				ZEND_IS_NOT_EQUAL_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57062 				HYBRID_BREAK();
57063 			HYBRID_CASE(ZEND_IS_SMALLER_SPEC_TMPVAR_TMPVAR):
57064 				VM_TRACE(ZEND_IS_SMALLER_SPEC_TMPVAR_TMPVAR)
57065 				ZEND_IS_SMALLER_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57066 				HYBRID_BREAK();
57067 			HYBRID_CASE(ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVAR_TMPVAR):
57068 				VM_TRACE(ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVAR_TMPVAR)
57069 				ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57070 				HYBRID_BREAK();
57071 			HYBRID_CASE(ZEND_SPACESHIP_SPEC_TMPVAR_TMPVAR):
57072 				VM_TRACE(ZEND_SPACESHIP_SPEC_TMPVAR_TMPVAR)
57073 				ZEND_SPACESHIP_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57074 				HYBRID_BREAK();
57075 			HYBRID_CASE(ZEND_BW_OR_SPEC_TMPVAR_TMPVAR):
57076 				VM_TRACE(ZEND_BW_OR_SPEC_TMPVAR_TMPVAR)
57077 				ZEND_BW_OR_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57078 				HYBRID_BREAK();
57079 			HYBRID_CASE(ZEND_BW_AND_SPEC_TMPVAR_TMPVAR):
57080 				VM_TRACE(ZEND_BW_AND_SPEC_TMPVAR_TMPVAR)
57081 				ZEND_BW_AND_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57082 				HYBRID_BREAK();
57083 			HYBRID_CASE(ZEND_BW_XOR_SPEC_TMPVAR_TMPVAR):
57084 				VM_TRACE(ZEND_BW_XOR_SPEC_TMPVAR_TMPVAR)
57085 				ZEND_BW_XOR_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57086 				HYBRID_BREAK();
57087 			HYBRID_CASE(ZEND_BOOL_XOR_SPEC_TMPVAR_TMPVAR):
57088 				VM_TRACE(ZEND_BOOL_XOR_SPEC_TMPVAR_TMPVAR)
57089 				ZEND_BOOL_XOR_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57090 				HYBRID_BREAK();
57091 			HYBRID_CASE(ZEND_FETCH_DIM_R_SPEC_TMPVAR_TMPVAR):
57092 				VM_TRACE(ZEND_FETCH_DIM_R_SPEC_TMPVAR_TMPVAR)
57093 				ZEND_FETCH_DIM_R_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57094 				HYBRID_BREAK();
57095 			HYBRID_CASE(ZEND_FETCH_DIM_IS_SPEC_TMPVAR_TMPVAR):
57096 				VM_TRACE(ZEND_FETCH_DIM_IS_SPEC_TMPVAR_TMPVAR)
57097 				ZEND_FETCH_DIM_IS_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57098 				HYBRID_BREAK();
57099 			HYBRID_CASE(ZEND_FETCH_OBJ_R_SPEC_TMPVAR_TMPVAR):
57100 				VM_TRACE(ZEND_FETCH_OBJ_R_SPEC_TMPVAR_TMPVAR)
57101 				ZEND_FETCH_OBJ_R_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57102 				HYBRID_BREAK();
57103 			HYBRID_CASE(ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_TMPVAR):
57104 				VM_TRACE(ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_TMPVAR)
57105 				ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57106 				HYBRID_BREAK();
57107 			HYBRID_CASE(ZEND_FAST_CONCAT_SPEC_TMPVAR_TMPVAR):
57108 				VM_TRACE(ZEND_FAST_CONCAT_SPEC_TMPVAR_TMPVAR)
57109 				ZEND_FAST_CONCAT_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57110 				HYBRID_BREAK();
57111 			HYBRID_CASE(ZEND_INIT_METHOD_CALL_SPEC_TMPVAR_TMPVAR):
57112 				VM_TRACE(ZEND_INIT_METHOD_CALL_SPEC_TMPVAR_TMPVAR)
57113 				ZEND_INIT_METHOD_CALL_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57114 				HYBRID_BREAK();
57115 			HYBRID_CASE(ZEND_CASE_SPEC_TMPVAR_TMPVAR):
57116 				VM_TRACE(ZEND_CASE_SPEC_TMPVAR_TMPVAR)
57117 				ZEND_CASE_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57118 				HYBRID_BREAK();
57119 			HYBRID_CASE(ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_TMPVAR_TMPVAR):
57120 				VM_TRACE(ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_TMPVAR_TMPVAR)
57121 				ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57122 				HYBRID_BREAK();
57123 			HYBRID_CASE(ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMPVAR_TMPVAR):
57124 				VM_TRACE(ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMPVAR_TMPVAR)
57125 				ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57126 				HYBRID_BREAK();
57127 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_R_SPEC_TMPVAR_VAR):
57128 				VM_TRACE(ZEND_FETCH_STATIC_PROP_R_SPEC_TMPVAR_VAR)
57129 				ZEND_FETCH_STATIC_PROP_R_SPEC_TMPVAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57130 				HYBRID_BREAK();
57131 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_W_SPEC_TMPVAR_VAR):
57132 				VM_TRACE(ZEND_FETCH_STATIC_PROP_W_SPEC_TMPVAR_VAR)
57133 				ZEND_FETCH_STATIC_PROP_W_SPEC_TMPVAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57134 				HYBRID_BREAK();
57135 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_RW_SPEC_TMPVAR_VAR):
57136 				VM_TRACE(ZEND_FETCH_STATIC_PROP_RW_SPEC_TMPVAR_VAR)
57137 				ZEND_FETCH_STATIC_PROP_RW_SPEC_TMPVAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57138 				HYBRID_BREAK();
57139 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_TMPVAR_VAR):
57140 				VM_TRACE(ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_TMPVAR_VAR)
57141 				ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_TMPVAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57142 				HYBRID_BREAK();
57143 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_UNSET_SPEC_TMPVAR_VAR):
57144 				VM_TRACE(ZEND_FETCH_STATIC_PROP_UNSET_SPEC_TMPVAR_VAR)
57145 				ZEND_FETCH_STATIC_PROP_UNSET_SPEC_TMPVAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57146 				HYBRID_BREAK();
57147 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_IS_SPEC_TMPVAR_VAR):
57148 				VM_TRACE(ZEND_FETCH_STATIC_PROP_IS_SPEC_TMPVAR_VAR)
57149 				ZEND_FETCH_STATIC_PROP_IS_SPEC_TMPVAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57150 				HYBRID_BREAK();
57151 			HYBRID_CASE(ZEND_UNSET_STATIC_PROP_SPEC_TMPVAR_VAR):
57152 				VM_TRACE(ZEND_UNSET_STATIC_PROP_SPEC_TMPVAR_VAR)
57153 				ZEND_UNSET_STATIC_PROP_SPEC_TMPVAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57154 				HYBRID_BREAK();
57155 			HYBRID_CASE(ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_TMPVAR_VAR):
57156 				VM_TRACE(ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_TMPVAR_VAR)
57157 				ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_TMPVAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57158 				HYBRID_BREAK();
57159 			HYBRID_CASE(ZEND_INSTANCEOF_SPEC_TMPVAR_VAR):
57160 				VM_TRACE(ZEND_INSTANCEOF_SPEC_TMPVAR_VAR)
57161 				ZEND_INSTANCEOF_SPEC_TMPVAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57162 				HYBRID_BREAK();
57163 			HYBRID_CASE(ZEND_FETCH_R_SPEC_TMPVAR_UNUSED):
57164 				VM_TRACE(ZEND_FETCH_R_SPEC_TMPVAR_UNUSED)
57165 				ZEND_FETCH_R_SPEC_TMPVAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57166 				HYBRID_BREAK();
57167 			HYBRID_CASE(ZEND_FETCH_W_SPEC_TMPVAR_UNUSED):
57168 				VM_TRACE(ZEND_FETCH_W_SPEC_TMPVAR_UNUSED)
57169 				ZEND_FETCH_W_SPEC_TMPVAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57170 				HYBRID_BREAK();
57171 			HYBRID_CASE(ZEND_FETCH_RW_SPEC_TMPVAR_UNUSED):
57172 				VM_TRACE(ZEND_FETCH_RW_SPEC_TMPVAR_UNUSED)
57173 				ZEND_FETCH_RW_SPEC_TMPVAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57174 				HYBRID_BREAK();
57175 			HYBRID_CASE(ZEND_FETCH_FUNC_ARG_SPEC_TMPVAR_UNUSED):
57176 				VM_TRACE(ZEND_FETCH_FUNC_ARG_SPEC_TMPVAR_UNUSED)
57177 				ZEND_FETCH_FUNC_ARG_SPEC_TMPVAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57178 				HYBRID_BREAK();
57179 			HYBRID_CASE(ZEND_FETCH_UNSET_SPEC_TMPVAR_UNUSED):
57180 				VM_TRACE(ZEND_FETCH_UNSET_SPEC_TMPVAR_UNUSED)
57181 				ZEND_FETCH_UNSET_SPEC_TMPVAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57182 				HYBRID_BREAK();
57183 			HYBRID_CASE(ZEND_FETCH_IS_SPEC_TMPVAR_UNUSED):
57184 				VM_TRACE(ZEND_FETCH_IS_SPEC_TMPVAR_UNUSED)
57185 				ZEND_FETCH_IS_SPEC_TMPVAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57186 				HYBRID_BREAK();
57187 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_R_SPEC_TMPVAR_UNUSED):
57188 				VM_TRACE(ZEND_FETCH_STATIC_PROP_R_SPEC_TMPVAR_UNUSED)
57189 				ZEND_FETCH_STATIC_PROP_R_SPEC_TMPVAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57190 				HYBRID_BREAK();
57191 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_W_SPEC_TMPVAR_UNUSED):
57192 				VM_TRACE(ZEND_FETCH_STATIC_PROP_W_SPEC_TMPVAR_UNUSED)
57193 				ZEND_FETCH_STATIC_PROP_W_SPEC_TMPVAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57194 				HYBRID_BREAK();
57195 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_RW_SPEC_TMPVAR_UNUSED):
57196 				VM_TRACE(ZEND_FETCH_STATIC_PROP_RW_SPEC_TMPVAR_UNUSED)
57197 				ZEND_FETCH_STATIC_PROP_RW_SPEC_TMPVAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57198 				HYBRID_BREAK();
57199 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_TMPVAR_UNUSED):
57200 				VM_TRACE(ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_TMPVAR_UNUSED)
57201 				ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_TMPVAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57202 				HYBRID_BREAK();
57203 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_UNSET_SPEC_TMPVAR_UNUSED):
57204 				VM_TRACE(ZEND_FETCH_STATIC_PROP_UNSET_SPEC_TMPVAR_UNUSED)
57205 				ZEND_FETCH_STATIC_PROP_UNSET_SPEC_TMPVAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57206 				HYBRID_BREAK();
57207 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_IS_SPEC_TMPVAR_UNUSED):
57208 				VM_TRACE(ZEND_FETCH_STATIC_PROP_IS_SPEC_TMPVAR_UNUSED)
57209 				ZEND_FETCH_STATIC_PROP_IS_SPEC_TMPVAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57210 				HYBRID_BREAK();
57211 			HYBRID_CASE(ZEND_UNSET_VAR_SPEC_TMPVAR_UNUSED):
57212 				VM_TRACE(ZEND_UNSET_VAR_SPEC_TMPVAR_UNUSED)
57213 				ZEND_UNSET_VAR_SPEC_TMPVAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57214 				HYBRID_BREAK();
57215 			HYBRID_CASE(ZEND_UNSET_STATIC_PROP_SPEC_TMPVAR_UNUSED):
57216 				VM_TRACE(ZEND_UNSET_STATIC_PROP_SPEC_TMPVAR_UNUSED)
57217 				ZEND_UNSET_STATIC_PROP_SPEC_TMPVAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57218 				HYBRID_BREAK();
57219 			HYBRID_CASE(ZEND_ISSET_ISEMPTY_VAR_SPEC_TMPVAR_UNUSED):
57220 				VM_TRACE(ZEND_ISSET_ISEMPTY_VAR_SPEC_TMPVAR_UNUSED)
57221 				ZEND_ISSET_ISEMPTY_VAR_SPEC_TMPVAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57222 				HYBRID_BREAK();
57223 			HYBRID_CASE(ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_TMPVAR_UNUSED):
57224 				VM_TRACE(ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_TMPVAR_UNUSED)
57225 				ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_TMPVAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57226 				HYBRID_BREAK();
57227 			HYBRID_CASE(ZEND_INSTANCEOF_SPEC_TMPVAR_UNUSED):
57228 				VM_TRACE(ZEND_INSTANCEOF_SPEC_TMPVAR_UNUSED)
57229 				ZEND_INSTANCEOF_SPEC_TMPVAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57230 				HYBRID_BREAK();
57231 			HYBRID_CASE(ZEND_ADD_SPEC_TMPVAR_CV):
57232 				VM_TRACE(ZEND_ADD_SPEC_TMPVAR_CV)
57233 				ZEND_ADD_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57234 				HYBRID_BREAK();
57235 			HYBRID_CASE(ZEND_SUB_SPEC_TMPVAR_CV):
57236 				VM_TRACE(ZEND_SUB_SPEC_TMPVAR_CV)
57237 				ZEND_SUB_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57238 				HYBRID_BREAK();
57239 			HYBRID_CASE(ZEND_DIV_SPEC_TMPVAR_CV):
57240 				VM_TRACE(ZEND_DIV_SPEC_TMPVAR_CV)
57241 				ZEND_DIV_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57242 				HYBRID_BREAK();
57243 			HYBRID_CASE(ZEND_MOD_SPEC_TMPVAR_CV):
57244 				VM_TRACE(ZEND_MOD_SPEC_TMPVAR_CV)
57245 				ZEND_MOD_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57246 				HYBRID_BREAK();
57247 			HYBRID_CASE(ZEND_SL_SPEC_TMPVAR_CV):
57248 				VM_TRACE(ZEND_SL_SPEC_TMPVAR_CV)
57249 				ZEND_SL_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57250 				HYBRID_BREAK();
57251 			HYBRID_CASE(ZEND_SR_SPEC_TMPVAR_CV):
57252 				VM_TRACE(ZEND_SR_SPEC_TMPVAR_CV)
57253 				ZEND_SR_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57254 				HYBRID_BREAK();
57255 			HYBRID_CASE(ZEND_POW_SPEC_TMPVAR_CV):
57256 				VM_TRACE(ZEND_POW_SPEC_TMPVAR_CV)
57257 				ZEND_POW_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57258 				HYBRID_BREAK();
57259 			HYBRID_CASE(ZEND_CONCAT_SPEC_TMPVAR_CV):
57260 				VM_TRACE(ZEND_CONCAT_SPEC_TMPVAR_CV)
57261 				ZEND_CONCAT_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57262 				HYBRID_BREAK();
57263 			HYBRID_CASE(ZEND_IS_SMALLER_SPEC_TMPVAR_CV):
57264 				VM_TRACE(ZEND_IS_SMALLER_SPEC_TMPVAR_CV)
57265 				ZEND_IS_SMALLER_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57266 				HYBRID_BREAK();
57267 			HYBRID_CASE(ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVAR_CV):
57268 				VM_TRACE(ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVAR_CV)
57269 				ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57270 				HYBRID_BREAK();
57271 			HYBRID_CASE(ZEND_SPACESHIP_SPEC_TMPVAR_CV):
57272 				VM_TRACE(ZEND_SPACESHIP_SPEC_TMPVAR_CV)
57273 				ZEND_SPACESHIP_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57274 				HYBRID_BREAK();
57275 			HYBRID_CASE(ZEND_FETCH_DIM_R_SPEC_TMPVAR_CV):
57276 				VM_TRACE(ZEND_FETCH_DIM_R_SPEC_TMPVAR_CV)
57277 				ZEND_FETCH_DIM_R_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57278 				HYBRID_BREAK();
57279 			HYBRID_CASE(ZEND_FETCH_DIM_IS_SPEC_TMPVAR_CV):
57280 				VM_TRACE(ZEND_FETCH_DIM_IS_SPEC_TMPVAR_CV)
57281 				ZEND_FETCH_DIM_IS_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57282 				HYBRID_BREAK();
57283 			HYBRID_CASE(ZEND_FETCH_OBJ_R_SPEC_TMPVAR_CV):
57284 				VM_TRACE(ZEND_FETCH_OBJ_R_SPEC_TMPVAR_CV)
57285 				ZEND_FETCH_OBJ_R_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57286 				HYBRID_BREAK();
57287 			HYBRID_CASE(ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_CV):
57288 				VM_TRACE(ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_CV)
57289 				ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57290 				HYBRID_BREAK();
57291 			HYBRID_CASE(ZEND_FAST_CONCAT_SPEC_TMPVAR_CV):
57292 				VM_TRACE(ZEND_FAST_CONCAT_SPEC_TMPVAR_CV)
57293 				ZEND_FAST_CONCAT_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57294 				HYBRID_BREAK();
57295 			HYBRID_CASE(ZEND_INIT_METHOD_CALL_SPEC_TMPVAR_CV):
57296 				VM_TRACE(ZEND_INIT_METHOD_CALL_SPEC_TMPVAR_CV)
57297 				ZEND_INIT_METHOD_CALL_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57298 				HYBRID_BREAK();
57299 			HYBRID_CASE(ZEND_CASE_SPEC_TMPVAR_CV):
57300 				VM_TRACE(ZEND_CASE_SPEC_TMPVAR_CV)
57301 				ZEND_CASE_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57302 				HYBRID_BREAK();
57303 			HYBRID_CASE(ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_TMPVAR_CV):
57304 				VM_TRACE(ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_TMPVAR_CV)
57305 				ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57306 				HYBRID_BREAK();
57307 			HYBRID_CASE(ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMPVAR_CV):
57308 				VM_TRACE(ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMPVAR_CV)
57309 				ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57310 				HYBRID_BREAK();
57311 			HYBRID_CASE(ZEND_RETURN_SPEC_TMP):
57312 				VM_TRACE(ZEND_RETURN_SPEC_TMP)
57313 {
57314 	USE_OPLINE
57315 	zval *retval_ptr;
57316 	zval *return_value;
57317 	zend_free_op free_op1;
57318 
57319 	retval_ptr = _get_zval_ptr_tmp(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
57320 	return_value = EX(return_value);
57321 	if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(retval_ptr) == IS_UNDEF)) {
57322 		SAVE_OPLINE();
57323 		retval_ptr = GET_OP1_UNDEF_CV(retval_ptr, BP_VAR_R);
57324 		if (return_value) {
57325 			ZVAL_NULL(return_value);
57326 		}
57327 	} else if (!return_value) {
57328 		if (IS_TMP_VAR & (IS_VAR|IS_TMP_VAR)) {
57329 			if (Z_REFCOUNTED_P(free_op1) && !Z_DELREF_P(free_op1)) {
57330 				SAVE_OPLINE();
57331 				rc_dtor_func(Z_COUNTED_P(free_op1));
57332 			}
57333 		}
57334 	} else {
57335 		if ((IS_TMP_VAR & (IS_CONST|IS_TMP_VAR))) {
57336 			ZVAL_COPY_VALUE(return_value, retval_ptr);
57337 			if (IS_TMP_VAR == IS_CONST) {
57338 				if (UNEXPECTED(Z_OPT_REFCOUNTED_P(return_value))) {
57339 					Z_ADDREF_P(return_value);
57340 				}
57341 			}
57342 		} else if (IS_TMP_VAR == IS_CV) {
57343 			if (Z_OPT_REFCOUNTED_P(retval_ptr)) {
57344 				if (EXPECTED(!Z_OPT_ISREF_P(retval_ptr))) {
57345 					ZVAL_COPY_VALUE(return_value, retval_ptr);
57346 					if (EXPECTED(!(EX_CALL_INFO() & ZEND_CALL_CODE))) {
57347 						zend_refcounted *ref = Z_COUNTED_P(retval_ptr);
57348 						if (GC_MAY_LEAK(ref)) {
57349 							gc_possible_root(ref);
57350 						}
57351 						ZVAL_NULL(retval_ptr);
57352 					} else {
57353 						Z_ADDREF_P(return_value);
57354 					}
57355 				} else {
57356 					retval_ptr = Z_REFVAL_P(retval_ptr);
57357 					ZVAL_COPY(return_value, retval_ptr);
57358 				}
57359 			} else {
57360 				ZVAL_COPY_VALUE(return_value, retval_ptr);
57361 			}
57362 		} else /* if (IS_TMP_VAR == IS_VAR) */ {
57363 			if (UNEXPECTED(Z_ISREF_P(retval_ptr))) {
57364 				zend_refcounted *ref = Z_COUNTED_P(retval_ptr);
57365 
57366 				retval_ptr = Z_REFVAL_P(retval_ptr);
57367 				ZVAL_COPY_VALUE(return_value, retval_ptr);
57368 				if (UNEXPECTED(GC_DELREF(ref) == 0)) {
57369 					efree_size(ref, sizeof(zend_reference));
57370 				} else if (Z_OPT_REFCOUNTED_P(retval_ptr)) {
57371 					Z_ADDREF_P(retval_ptr);
57372 				}
57373 			} else {
57374 				ZVAL_COPY_VALUE(return_value, retval_ptr);
57375 			}
57376 		}
57377 	}
57378 	goto zend_leave_helper_SPEC_LABEL;
57379 }
57380 
57381 			HYBRID_CASE(ZEND_RETURN_BY_REF_SPEC_TMP):
57382 				VM_TRACE(ZEND_RETURN_BY_REF_SPEC_TMP)
57383 				ZEND_RETURN_BY_REF_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57384 				HYBRID_BREAK();
57385 			HYBRID_CASE(ZEND_GENERATOR_RETURN_SPEC_TMP):
57386 				VM_TRACE(ZEND_GENERATOR_RETURN_SPEC_TMP)
57387 				ZEND_GENERATOR_RETURN_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57388 				HYBRID_BREAK();
57389 			HYBRID_CASE(ZEND_THROW_SPEC_TMP):
57390 				VM_TRACE(ZEND_THROW_SPEC_TMP)
57391 				ZEND_THROW_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57392 				HYBRID_BREAK();
57393 			HYBRID_CASE(ZEND_SEND_VAL_EX_SPEC_TMP):
57394 				VM_TRACE(ZEND_SEND_VAL_EX_SPEC_TMP)
57395 				ZEND_SEND_VAL_EX_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57396 				HYBRID_BREAK();
57397 			HYBRID_CASE(ZEND_SEND_VAL_EX_SPEC_TMP_QUICK):
57398 				VM_TRACE(ZEND_SEND_VAL_EX_SPEC_TMP_QUICK)
57399 				ZEND_SEND_VAL_EX_SPEC_TMP_QUICK_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57400 				HYBRID_BREAK();
57401 			HYBRID_CASE(ZEND_SEND_USER_SPEC_TMP):
57402 				VM_TRACE(ZEND_SEND_USER_SPEC_TMP)
57403 				ZEND_SEND_USER_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57404 				HYBRID_BREAK();
57405 			HYBRID_CASE(ZEND_CAST_SPEC_TMP):
57406 				VM_TRACE(ZEND_CAST_SPEC_TMP)
57407 				ZEND_CAST_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57408 				HYBRID_BREAK();
57409 			HYBRID_CASE(ZEND_FE_RESET_R_SPEC_TMP):
57410 				VM_TRACE(ZEND_FE_RESET_R_SPEC_TMP)
57411 				ZEND_FE_RESET_R_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57412 				HYBRID_BREAK();
57413 			HYBRID_CASE(ZEND_FE_RESET_RW_SPEC_TMP):
57414 				VM_TRACE(ZEND_FE_RESET_RW_SPEC_TMP)
57415 				ZEND_FE_RESET_RW_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57416 				HYBRID_BREAK();
57417 			HYBRID_CASE(ZEND_END_SILENCE_SPEC_TMP):
57418 				VM_TRACE(ZEND_END_SILENCE_SPEC_TMP)
57419 				ZEND_END_SILENCE_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57420 				HYBRID_BREAK();
57421 			HYBRID_CASE(ZEND_JMP_SET_SPEC_TMP):
57422 				VM_TRACE(ZEND_JMP_SET_SPEC_TMP)
57423 				ZEND_JMP_SET_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57424 				HYBRID_BREAK();
57425 			HYBRID_CASE(ZEND_QM_ASSIGN_SPEC_TMP):
57426 				VM_TRACE(ZEND_QM_ASSIGN_SPEC_TMP)
57427 				ZEND_QM_ASSIGN_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57428 				HYBRID_BREAK();
57429 			HYBRID_CASE(ZEND_YIELD_FROM_SPEC_TMP):
57430 				VM_TRACE(ZEND_YIELD_FROM_SPEC_TMP)
57431 				ZEND_YIELD_FROM_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57432 				HYBRID_BREAK();
57433 			HYBRID_CASE(ZEND_IS_IDENTICAL_SPEC_TMP_CONST):
57434 				VM_TRACE(ZEND_IS_IDENTICAL_SPEC_TMP_CONST)
57435 				ZEND_IS_IDENTICAL_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57436 				HYBRID_BREAK();
57437 			HYBRID_CASE(ZEND_IS_NOT_IDENTICAL_SPEC_TMP_CONST):
57438 				VM_TRACE(ZEND_IS_NOT_IDENTICAL_SPEC_TMP_CONST)
57439 				ZEND_IS_NOT_IDENTICAL_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57440 				HYBRID_BREAK();
57441 			HYBRID_CASE(ZEND_FETCH_DIM_FUNC_ARG_SPEC_TMP_CONST):
57442 				VM_TRACE(ZEND_FETCH_DIM_FUNC_ARG_SPEC_TMP_CONST)
57443 				ZEND_FETCH_DIM_FUNC_ARG_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57444 				HYBRID_BREAK();
57445 			HYBRID_CASE(ZEND_FETCH_OBJ_FUNC_ARG_SPEC_TMP_CONST):
57446 				VM_TRACE(ZEND_FETCH_OBJ_FUNC_ARG_SPEC_TMP_CONST)
57447 				ZEND_FETCH_OBJ_FUNC_ARG_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57448 				HYBRID_BREAK();
57449 			HYBRID_CASE(ZEND_ROPE_ADD_SPEC_TMP_CONST):
57450 				VM_TRACE(ZEND_ROPE_ADD_SPEC_TMP_CONST)
57451 				ZEND_ROPE_ADD_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57452 				HYBRID_BREAK();
57453 			HYBRID_CASE(ZEND_ROPE_END_SPEC_TMP_CONST):
57454 				VM_TRACE(ZEND_ROPE_END_SPEC_TMP_CONST)
57455 				ZEND_ROPE_END_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57456 				HYBRID_BREAK();
57457 			HYBRID_CASE(ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_CONST):
57458 				VM_TRACE(ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_CONST)
57459 				ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57460 				HYBRID_BREAK();
57461 			HYBRID_CASE(ZEND_INIT_ARRAY_SPEC_TMP_CONST):
57462 				VM_TRACE(ZEND_INIT_ARRAY_SPEC_TMP_CONST)
57463 				ZEND_INIT_ARRAY_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57464 				HYBRID_BREAK();
57465 			HYBRID_CASE(ZEND_YIELD_SPEC_TMP_CONST):
57466 				VM_TRACE(ZEND_YIELD_SPEC_TMP_CONST)
57467 				ZEND_YIELD_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57468 				HYBRID_BREAK();
57469 			HYBRID_CASE(ZEND_IN_ARRAY_SPEC_TMP_CONST):
57470 				VM_TRACE(ZEND_IN_ARRAY_SPEC_TMP_CONST)
57471 				ZEND_IN_ARRAY_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57472 				HYBRID_BREAK();
57473 			HYBRID_CASE(ZEND_FETCH_DIM_FUNC_ARG_SPEC_TMP_TMPVAR):
57474 				VM_TRACE(ZEND_FETCH_DIM_FUNC_ARG_SPEC_TMP_TMPVAR)
57475 				ZEND_FETCH_DIM_FUNC_ARG_SPEC_TMP_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57476 				HYBRID_BREAK();
57477 			HYBRID_CASE(ZEND_FETCH_OBJ_FUNC_ARG_SPEC_TMP_TMPVAR):
57478 				VM_TRACE(ZEND_FETCH_OBJ_FUNC_ARG_SPEC_TMP_TMPVAR)
57479 				ZEND_FETCH_OBJ_FUNC_ARG_SPEC_TMP_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57480 				HYBRID_BREAK();
57481 			HYBRID_CASE(ZEND_ROPE_ADD_SPEC_TMP_TMPVAR):
57482 				VM_TRACE(ZEND_ROPE_ADD_SPEC_TMP_TMPVAR)
57483 				ZEND_ROPE_ADD_SPEC_TMP_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57484 				HYBRID_BREAK();
57485 			HYBRID_CASE(ZEND_ROPE_END_SPEC_TMP_TMPVAR):
57486 				VM_TRACE(ZEND_ROPE_END_SPEC_TMP_TMPVAR)
57487 				ZEND_ROPE_END_SPEC_TMP_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57488 				HYBRID_BREAK();
57489 			HYBRID_CASE(ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_TMPVAR):
57490 				VM_TRACE(ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_TMPVAR)
57491 				ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57492 				HYBRID_BREAK();
57493 			HYBRID_CASE(ZEND_INIT_ARRAY_SPEC_TMP_TMPVAR):
57494 				VM_TRACE(ZEND_INIT_ARRAY_SPEC_TMP_TMPVAR)
57495 				ZEND_INIT_ARRAY_SPEC_TMP_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57496 				HYBRID_BREAK();
57497 			HYBRID_CASE(ZEND_IS_IDENTICAL_SPEC_TMP_TMP):
57498 				VM_TRACE(ZEND_IS_IDENTICAL_SPEC_TMP_TMP)
57499 				ZEND_IS_IDENTICAL_SPEC_TMP_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57500 				HYBRID_BREAK();
57501 			HYBRID_CASE(ZEND_IS_NOT_IDENTICAL_SPEC_TMP_TMP):
57502 				VM_TRACE(ZEND_IS_NOT_IDENTICAL_SPEC_TMP_TMP)
57503 				ZEND_IS_NOT_IDENTICAL_SPEC_TMP_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57504 				HYBRID_BREAK();
57505 			HYBRID_CASE(ZEND_YIELD_SPEC_TMP_TMP):
57506 				VM_TRACE(ZEND_YIELD_SPEC_TMP_TMP)
57507 				ZEND_YIELD_SPEC_TMP_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57508 				HYBRID_BREAK();
57509 			HYBRID_CASE(ZEND_YIELD_SPEC_TMP_VAR):
57510 				VM_TRACE(ZEND_YIELD_SPEC_TMP_VAR)
57511 				ZEND_YIELD_SPEC_TMP_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57512 				HYBRID_BREAK();
57513 			HYBRID_CASE(ZEND_FETCH_DIM_FUNC_ARG_SPEC_TMP_UNUSED):
57514 				VM_TRACE(ZEND_FETCH_DIM_FUNC_ARG_SPEC_TMP_UNUSED)
57515 				ZEND_FETCH_DIM_FUNC_ARG_SPEC_TMP_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57516 				HYBRID_BREAK();
57517 			HYBRID_CASE(ZEND_VERIFY_RETURN_TYPE_SPEC_TMP_UNUSED):
57518 				VM_TRACE(ZEND_VERIFY_RETURN_TYPE_SPEC_TMP_UNUSED)
57519 				ZEND_VERIFY_RETURN_TYPE_SPEC_TMP_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57520 				HYBRID_BREAK();
57521 			HYBRID_CASE(ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_UNUSED):
57522 				VM_TRACE(ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_UNUSED)
57523 				ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57524 				HYBRID_BREAK();
57525 			HYBRID_CASE(ZEND_INIT_ARRAY_SPEC_TMP_UNUSED):
57526 				VM_TRACE(ZEND_INIT_ARRAY_SPEC_TMP_UNUSED)
57527 				ZEND_INIT_ARRAY_SPEC_TMP_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57528 				HYBRID_BREAK();
57529 			HYBRID_CASE(ZEND_YIELD_SPEC_TMP_UNUSED):
57530 				VM_TRACE(ZEND_YIELD_SPEC_TMP_UNUSED)
57531 				ZEND_YIELD_SPEC_TMP_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57532 				HYBRID_BREAK();
57533 			HYBRID_CASE(ZEND_COUNT_SPEC_TMP_UNUSED):
57534 				VM_TRACE(ZEND_COUNT_SPEC_TMP_UNUSED)
57535 				ZEND_COUNT_SPEC_TMP_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57536 				HYBRID_BREAK();
57537 			HYBRID_CASE(ZEND_GET_CLASS_SPEC_TMP_UNUSED):
57538 				VM_TRACE(ZEND_GET_CLASS_SPEC_TMP_UNUSED)
57539 				ZEND_GET_CLASS_SPEC_TMP_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57540 				HYBRID_BREAK();
57541 			HYBRID_CASE(ZEND_GET_TYPE_SPEC_TMP_UNUSED):
57542 				VM_TRACE(ZEND_GET_TYPE_SPEC_TMP_UNUSED)
57543 				ZEND_GET_TYPE_SPEC_TMP_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57544 				HYBRID_BREAK();
57545 			HYBRID_CASE(ZEND_FETCH_DIM_FUNC_ARG_SPEC_TMP_CV):
57546 				VM_TRACE(ZEND_FETCH_DIM_FUNC_ARG_SPEC_TMP_CV)
57547 				ZEND_FETCH_DIM_FUNC_ARG_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57548 				HYBRID_BREAK();
57549 			HYBRID_CASE(ZEND_FETCH_OBJ_FUNC_ARG_SPEC_TMP_CV):
57550 				VM_TRACE(ZEND_FETCH_OBJ_FUNC_ARG_SPEC_TMP_CV)
57551 				ZEND_FETCH_OBJ_FUNC_ARG_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57552 				HYBRID_BREAK();
57553 			HYBRID_CASE(ZEND_ROPE_ADD_SPEC_TMP_CV):
57554 				VM_TRACE(ZEND_ROPE_ADD_SPEC_TMP_CV)
57555 				ZEND_ROPE_ADD_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57556 				HYBRID_BREAK();
57557 			HYBRID_CASE(ZEND_ROPE_END_SPEC_TMP_CV):
57558 				VM_TRACE(ZEND_ROPE_END_SPEC_TMP_CV)
57559 				ZEND_ROPE_END_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57560 				HYBRID_BREAK();
57561 			HYBRID_CASE(ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_CV):
57562 				VM_TRACE(ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_CV)
57563 				ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57564 				HYBRID_BREAK();
57565 			HYBRID_CASE(ZEND_INIT_ARRAY_SPEC_TMP_CV):
57566 				VM_TRACE(ZEND_INIT_ARRAY_SPEC_TMP_CV)
57567 				ZEND_INIT_ARRAY_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57568 				HYBRID_BREAK();
57569 			HYBRID_CASE(ZEND_YIELD_SPEC_TMP_CV):
57570 				VM_TRACE(ZEND_YIELD_SPEC_TMP_CV)
57571 				ZEND_YIELD_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57572 				HYBRID_BREAK();
57573 			HYBRID_CASE(ZEND_BIND_LEXICAL_SPEC_TMP_CV):
57574 				VM_TRACE(ZEND_BIND_LEXICAL_SPEC_TMP_CV)
57575 				ZEND_BIND_LEXICAL_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57576 				HYBRID_BREAK();
57577 			HYBRID_CASE(ZEND_PRE_INC_SPEC_VAR_RETVAL_UNUSED):
57578 				VM_TRACE(ZEND_PRE_INC_SPEC_VAR_RETVAL_UNUSED)
57579 				ZEND_PRE_INC_SPEC_VAR_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57580 				HYBRID_BREAK();
57581 			HYBRID_CASE(ZEND_PRE_INC_SPEC_VAR_RETVAL_USED):
57582 				VM_TRACE(ZEND_PRE_INC_SPEC_VAR_RETVAL_USED)
57583 				ZEND_PRE_INC_SPEC_VAR_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57584 				HYBRID_BREAK();
57585 			HYBRID_CASE(ZEND_PRE_DEC_SPEC_VAR_RETVAL_UNUSED):
57586 				VM_TRACE(ZEND_PRE_DEC_SPEC_VAR_RETVAL_UNUSED)
57587 				ZEND_PRE_DEC_SPEC_VAR_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57588 				HYBRID_BREAK();
57589 			HYBRID_CASE(ZEND_PRE_DEC_SPEC_VAR_RETVAL_USED):
57590 				VM_TRACE(ZEND_PRE_DEC_SPEC_VAR_RETVAL_USED)
57591 				ZEND_PRE_DEC_SPEC_VAR_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57592 				HYBRID_BREAK();
57593 			HYBRID_CASE(ZEND_POST_INC_SPEC_VAR):
57594 				VM_TRACE(ZEND_POST_INC_SPEC_VAR)
57595 				ZEND_POST_INC_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57596 				HYBRID_BREAK();
57597 			HYBRID_CASE(ZEND_POST_DEC_SPEC_VAR):
57598 				VM_TRACE(ZEND_POST_DEC_SPEC_VAR)
57599 				ZEND_POST_DEC_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57600 				HYBRID_BREAK();
57601 			HYBRID_CASE(ZEND_RETURN_SPEC_VAR):
57602 				VM_TRACE(ZEND_RETURN_SPEC_VAR)
57603 {
57604 	USE_OPLINE
57605 	zval *retval_ptr;
57606 	zval *return_value;
57607 	zend_free_op free_op1;
57608 
57609 	retval_ptr = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
57610 	return_value = EX(return_value);
57611 	if (IS_VAR == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(retval_ptr) == IS_UNDEF)) {
57612 		SAVE_OPLINE();
57613 		retval_ptr = GET_OP1_UNDEF_CV(retval_ptr, BP_VAR_R);
57614 		if (return_value) {
57615 			ZVAL_NULL(return_value);
57616 		}
57617 	} else if (!return_value) {
57618 		if (IS_VAR & (IS_VAR|IS_TMP_VAR)) {
57619 			if (Z_REFCOUNTED_P(free_op1) && !Z_DELREF_P(free_op1)) {
57620 				SAVE_OPLINE();
57621 				rc_dtor_func(Z_COUNTED_P(free_op1));
57622 			}
57623 		}
57624 	} else {
57625 		if ((IS_VAR & (IS_CONST|IS_TMP_VAR))) {
57626 			ZVAL_COPY_VALUE(return_value, retval_ptr);
57627 			if (IS_VAR == IS_CONST) {
57628 				if (UNEXPECTED(Z_OPT_REFCOUNTED_P(return_value))) {
57629 					Z_ADDREF_P(return_value);
57630 				}
57631 			}
57632 		} else if (IS_VAR == IS_CV) {
57633 			if (Z_OPT_REFCOUNTED_P(retval_ptr)) {
57634 				if (EXPECTED(!Z_OPT_ISREF_P(retval_ptr))) {
57635 					ZVAL_COPY_VALUE(return_value, retval_ptr);
57636 					if (EXPECTED(!(EX_CALL_INFO() & ZEND_CALL_CODE))) {
57637 						zend_refcounted *ref = Z_COUNTED_P(retval_ptr);
57638 						if (GC_MAY_LEAK(ref)) {
57639 							gc_possible_root(ref);
57640 						}
57641 						ZVAL_NULL(retval_ptr);
57642 					} else {
57643 						Z_ADDREF_P(return_value);
57644 					}
57645 				} else {
57646 					retval_ptr = Z_REFVAL_P(retval_ptr);
57647 					ZVAL_COPY(return_value, retval_ptr);
57648 				}
57649 			} else {
57650 				ZVAL_COPY_VALUE(return_value, retval_ptr);
57651 			}
57652 		} else /* if (IS_VAR == IS_VAR) */ {
57653 			if (UNEXPECTED(Z_ISREF_P(retval_ptr))) {
57654 				zend_refcounted *ref = Z_COUNTED_P(retval_ptr);
57655 
57656 				retval_ptr = Z_REFVAL_P(retval_ptr);
57657 				ZVAL_COPY_VALUE(return_value, retval_ptr);
57658 				if (UNEXPECTED(GC_DELREF(ref) == 0)) {
57659 					efree_size(ref, sizeof(zend_reference));
57660 				} else if (Z_OPT_REFCOUNTED_P(retval_ptr)) {
57661 					Z_ADDREF_P(retval_ptr);
57662 				}
57663 			} else {
57664 				ZVAL_COPY_VALUE(return_value, retval_ptr);
57665 			}
57666 		}
57667 	}
57668 	goto zend_leave_helper_SPEC_LABEL;
57669 }
57670 
57671 			HYBRID_CASE(ZEND_RETURN_BY_REF_SPEC_VAR):
57672 				VM_TRACE(ZEND_RETURN_BY_REF_SPEC_VAR)
57673 				ZEND_RETURN_BY_REF_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57674 				HYBRID_BREAK();
57675 			HYBRID_CASE(ZEND_GENERATOR_RETURN_SPEC_VAR):
57676 				VM_TRACE(ZEND_GENERATOR_RETURN_SPEC_VAR)
57677 				ZEND_GENERATOR_RETURN_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57678 				HYBRID_BREAK();
57679 			HYBRID_CASE(ZEND_THROW_SPEC_VAR):
57680 				VM_TRACE(ZEND_THROW_SPEC_VAR)
57681 				ZEND_THROW_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57682 				HYBRID_BREAK();
57683 			HYBRID_CASE(ZEND_SEND_VAR_SPEC_VAR):
57684 				VM_TRACE(ZEND_SEND_VAR_SPEC_VAR)
57685 				ZEND_SEND_VAR_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57686 				HYBRID_BREAK();
57687 			HYBRID_CASE(ZEND_SEND_VAR_NO_REF_SPEC_VAR):
57688 				VM_TRACE(ZEND_SEND_VAR_NO_REF_SPEC_VAR)
57689 				ZEND_SEND_VAR_NO_REF_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57690 				HYBRID_BREAK();
57691 			HYBRID_CASE(ZEND_SEND_VAR_NO_REF_EX_SPEC_VAR):
57692 				VM_TRACE(ZEND_SEND_VAR_NO_REF_EX_SPEC_VAR)
57693 				ZEND_SEND_VAR_NO_REF_EX_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57694 				HYBRID_BREAK();
57695 			HYBRID_CASE(ZEND_SEND_VAR_NO_REF_EX_SPEC_VAR_QUICK):
57696 				VM_TRACE(ZEND_SEND_VAR_NO_REF_EX_SPEC_VAR_QUICK)
57697 				ZEND_SEND_VAR_NO_REF_EX_SPEC_VAR_QUICK_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57698 				HYBRID_BREAK();
57699 			HYBRID_CASE(ZEND_SEND_REF_SPEC_VAR):
57700 				VM_TRACE(ZEND_SEND_REF_SPEC_VAR)
57701 				ZEND_SEND_REF_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57702 				HYBRID_BREAK();
57703 			HYBRID_CASE(ZEND_SEND_VAR_EX_SPEC_VAR):
57704 				VM_TRACE(ZEND_SEND_VAR_EX_SPEC_VAR)
57705 				ZEND_SEND_VAR_EX_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57706 				HYBRID_BREAK();
57707 			HYBRID_CASE(ZEND_SEND_VAR_EX_SPEC_VAR_QUICK):
57708 				VM_TRACE(ZEND_SEND_VAR_EX_SPEC_VAR_QUICK)
57709 				ZEND_SEND_VAR_EX_SPEC_VAR_QUICK_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57710 				HYBRID_BREAK();
57711 			HYBRID_CASE(ZEND_SEND_FUNC_ARG_SPEC_VAR):
57712 				VM_TRACE(ZEND_SEND_FUNC_ARG_SPEC_VAR)
57713 				ZEND_SEND_FUNC_ARG_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57714 				HYBRID_BREAK();
57715 			HYBRID_CASE(ZEND_SEND_USER_SPEC_VAR):
57716 				VM_TRACE(ZEND_SEND_USER_SPEC_VAR)
57717 				ZEND_SEND_USER_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57718 				HYBRID_BREAK();
57719 			HYBRID_CASE(ZEND_CAST_SPEC_VAR):
57720 				VM_TRACE(ZEND_CAST_SPEC_VAR)
57721 				ZEND_CAST_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57722 				HYBRID_BREAK();
57723 			HYBRID_CASE(ZEND_FE_RESET_R_SPEC_VAR):
57724 				VM_TRACE(ZEND_FE_RESET_R_SPEC_VAR)
57725 				ZEND_FE_RESET_R_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57726 				HYBRID_BREAK();
57727 			HYBRID_CASE(ZEND_FE_RESET_RW_SPEC_VAR):
57728 				VM_TRACE(ZEND_FE_RESET_RW_SPEC_VAR)
57729 				ZEND_FE_RESET_RW_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57730 				HYBRID_BREAK();
57731 			HYBRID_CASE(ZEND_FE_FETCH_R_SPEC_VAR):
57732 				VM_TRACE(ZEND_FE_FETCH_R_SPEC_VAR)
57733 				ZEND_FE_FETCH_R_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57734 				HYBRID_BREAK();
57735 			HYBRID_CASE(ZEND_FE_FETCH_RW_SPEC_VAR):
57736 				VM_TRACE(ZEND_FE_FETCH_RW_SPEC_VAR)
57737 				ZEND_FE_FETCH_RW_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57738 				HYBRID_BREAK();
57739 			HYBRID_CASE(ZEND_JMP_SET_SPEC_VAR):
57740 				VM_TRACE(ZEND_JMP_SET_SPEC_VAR)
57741 				ZEND_JMP_SET_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57742 				HYBRID_BREAK();
57743 			HYBRID_CASE(ZEND_QM_ASSIGN_SPEC_VAR):
57744 				VM_TRACE(ZEND_QM_ASSIGN_SPEC_VAR)
57745 				ZEND_QM_ASSIGN_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57746 				HYBRID_BREAK();
57747 			HYBRID_CASE(ZEND_YIELD_FROM_SPEC_VAR):
57748 				VM_TRACE(ZEND_YIELD_FROM_SPEC_VAR)
57749 				ZEND_YIELD_FROM_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57750 				HYBRID_BREAK();
57751 			HYBRID_CASE(ZEND_SEND_VAR_SIMPLE_SPEC_VAR):
57752 				VM_TRACE(ZEND_SEND_VAR_SIMPLE_SPEC_VAR)
57753 				ZEND_SEND_VAR_SIMPLE_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57754 				HYBRID_BREAK();
57755 			HYBRID_CASE(ZEND_SEND_VAR_EX_SIMPLE_SPEC_VAR):
57756 				VM_TRACE(ZEND_SEND_VAR_EX_SIMPLE_SPEC_VAR)
57757 				ZEND_SEND_VAR_EX_SIMPLE_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57758 				HYBRID_BREAK();
57759 			HYBRID_CASE(ZEND_IS_IDENTICAL_SPEC_VAR_CONST):
57760 				VM_TRACE(ZEND_IS_IDENTICAL_SPEC_VAR_CONST)
57761 				ZEND_IS_IDENTICAL_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57762 				HYBRID_BREAK();
57763 			HYBRID_CASE(ZEND_IS_NOT_IDENTICAL_SPEC_VAR_CONST):
57764 				VM_TRACE(ZEND_IS_NOT_IDENTICAL_SPEC_VAR_CONST)
57765 				ZEND_IS_NOT_IDENTICAL_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57766 				HYBRID_BREAK();
57767 			HYBRID_CASE(ZEND_ASSIGN_ADD_SPEC_VAR_CONST):
57768 				VM_TRACE(ZEND_ASSIGN_ADD_SPEC_VAR_CONST)
57769 				ZEND_ASSIGN_ADD_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57770 				HYBRID_BREAK();
57771 			HYBRID_CASE(ZEND_ASSIGN_ADD_SPEC_VAR_CONST_DIM):
57772 				VM_TRACE(ZEND_ASSIGN_ADD_SPEC_VAR_CONST_DIM)
57773 				ZEND_ASSIGN_ADD_SPEC_VAR_CONST_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57774 				HYBRID_BREAK();
57775 			HYBRID_CASE(ZEND_ASSIGN_ADD_SPEC_VAR_CONST_OBJ):
57776 				VM_TRACE(ZEND_ASSIGN_ADD_SPEC_VAR_CONST_OBJ)
57777 				ZEND_ASSIGN_ADD_SPEC_VAR_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57778 				HYBRID_BREAK();
57779 			HYBRID_CASE(ZEND_ASSIGN_SUB_SPEC_VAR_CONST):
57780 				VM_TRACE(ZEND_ASSIGN_SUB_SPEC_VAR_CONST)
57781 				ZEND_ASSIGN_SUB_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57782 				HYBRID_BREAK();
57783 			HYBRID_CASE(ZEND_ASSIGN_SUB_SPEC_VAR_CONST_DIM):
57784 				VM_TRACE(ZEND_ASSIGN_SUB_SPEC_VAR_CONST_DIM)
57785 				ZEND_ASSIGN_SUB_SPEC_VAR_CONST_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57786 				HYBRID_BREAK();
57787 			HYBRID_CASE(ZEND_ASSIGN_SUB_SPEC_VAR_CONST_OBJ):
57788 				VM_TRACE(ZEND_ASSIGN_SUB_SPEC_VAR_CONST_OBJ)
57789 				ZEND_ASSIGN_SUB_SPEC_VAR_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57790 				HYBRID_BREAK();
57791 			HYBRID_CASE(ZEND_ASSIGN_MUL_SPEC_VAR_CONST):
57792 				VM_TRACE(ZEND_ASSIGN_MUL_SPEC_VAR_CONST)
57793 				ZEND_ASSIGN_MUL_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57794 				HYBRID_BREAK();
57795 			HYBRID_CASE(ZEND_ASSIGN_MUL_SPEC_VAR_CONST_DIM):
57796 				VM_TRACE(ZEND_ASSIGN_MUL_SPEC_VAR_CONST_DIM)
57797 				ZEND_ASSIGN_MUL_SPEC_VAR_CONST_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57798 				HYBRID_BREAK();
57799 			HYBRID_CASE(ZEND_ASSIGN_MUL_SPEC_VAR_CONST_OBJ):
57800 				VM_TRACE(ZEND_ASSIGN_MUL_SPEC_VAR_CONST_OBJ)
57801 				ZEND_ASSIGN_MUL_SPEC_VAR_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57802 				HYBRID_BREAK();
57803 			HYBRID_CASE(ZEND_ASSIGN_DIV_SPEC_VAR_CONST):
57804 				VM_TRACE(ZEND_ASSIGN_DIV_SPEC_VAR_CONST)
57805 				ZEND_ASSIGN_DIV_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57806 				HYBRID_BREAK();
57807 			HYBRID_CASE(ZEND_ASSIGN_DIV_SPEC_VAR_CONST_DIM):
57808 				VM_TRACE(ZEND_ASSIGN_DIV_SPEC_VAR_CONST_DIM)
57809 				ZEND_ASSIGN_DIV_SPEC_VAR_CONST_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57810 				HYBRID_BREAK();
57811 			HYBRID_CASE(ZEND_ASSIGN_DIV_SPEC_VAR_CONST_OBJ):
57812 				VM_TRACE(ZEND_ASSIGN_DIV_SPEC_VAR_CONST_OBJ)
57813 				ZEND_ASSIGN_DIV_SPEC_VAR_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57814 				HYBRID_BREAK();
57815 			HYBRID_CASE(ZEND_ASSIGN_MOD_SPEC_VAR_CONST):
57816 				VM_TRACE(ZEND_ASSIGN_MOD_SPEC_VAR_CONST)
57817 				ZEND_ASSIGN_MOD_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57818 				HYBRID_BREAK();
57819 			HYBRID_CASE(ZEND_ASSIGN_MOD_SPEC_VAR_CONST_DIM):
57820 				VM_TRACE(ZEND_ASSIGN_MOD_SPEC_VAR_CONST_DIM)
57821 				ZEND_ASSIGN_MOD_SPEC_VAR_CONST_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57822 				HYBRID_BREAK();
57823 			HYBRID_CASE(ZEND_ASSIGN_MOD_SPEC_VAR_CONST_OBJ):
57824 				VM_TRACE(ZEND_ASSIGN_MOD_SPEC_VAR_CONST_OBJ)
57825 				ZEND_ASSIGN_MOD_SPEC_VAR_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57826 				HYBRID_BREAK();
57827 			HYBRID_CASE(ZEND_ASSIGN_SL_SPEC_VAR_CONST):
57828 				VM_TRACE(ZEND_ASSIGN_SL_SPEC_VAR_CONST)
57829 				ZEND_ASSIGN_SL_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57830 				HYBRID_BREAK();
57831 			HYBRID_CASE(ZEND_ASSIGN_SL_SPEC_VAR_CONST_DIM):
57832 				VM_TRACE(ZEND_ASSIGN_SL_SPEC_VAR_CONST_DIM)
57833 				ZEND_ASSIGN_SL_SPEC_VAR_CONST_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57834 				HYBRID_BREAK();
57835 			HYBRID_CASE(ZEND_ASSIGN_SL_SPEC_VAR_CONST_OBJ):
57836 				VM_TRACE(ZEND_ASSIGN_SL_SPEC_VAR_CONST_OBJ)
57837 				ZEND_ASSIGN_SL_SPEC_VAR_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57838 				HYBRID_BREAK();
57839 			HYBRID_CASE(ZEND_ASSIGN_SR_SPEC_VAR_CONST):
57840 				VM_TRACE(ZEND_ASSIGN_SR_SPEC_VAR_CONST)
57841 				ZEND_ASSIGN_SR_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57842 				HYBRID_BREAK();
57843 			HYBRID_CASE(ZEND_ASSIGN_SR_SPEC_VAR_CONST_DIM):
57844 				VM_TRACE(ZEND_ASSIGN_SR_SPEC_VAR_CONST_DIM)
57845 				ZEND_ASSIGN_SR_SPEC_VAR_CONST_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57846 				HYBRID_BREAK();
57847 			HYBRID_CASE(ZEND_ASSIGN_SR_SPEC_VAR_CONST_OBJ):
57848 				VM_TRACE(ZEND_ASSIGN_SR_SPEC_VAR_CONST_OBJ)
57849 				ZEND_ASSIGN_SR_SPEC_VAR_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57850 				HYBRID_BREAK();
57851 			HYBRID_CASE(ZEND_ASSIGN_CONCAT_SPEC_VAR_CONST):
57852 				VM_TRACE(ZEND_ASSIGN_CONCAT_SPEC_VAR_CONST)
57853 				ZEND_ASSIGN_CONCAT_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57854 				HYBRID_BREAK();
57855 			HYBRID_CASE(ZEND_ASSIGN_CONCAT_SPEC_VAR_CONST_DIM):
57856 				VM_TRACE(ZEND_ASSIGN_CONCAT_SPEC_VAR_CONST_DIM)
57857 				ZEND_ASSIGN_CONCAT_SPEC_VAR_CONST_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57858 				HYBRID_BREAK();
57859 			HYBRID_CASE(ZEND_ASSIGN_CONCAT_SPEC_VAR_CONST_OBJ):
57860 				VM_TRACE(ZEND_ASSIGN_CONCAT_SPEC_VAR_CONST_OBJ)
57861 				ZEND_ASSIGN_CONCAT_SPEC_VAR_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57862 				HYBRID_BREAK();
57863 			HYBRID_CASE(ZEND_ASSIGN_BW_OR_SPEC_VAR_CONST):
57864 				VM_TRACE(ZEND_ASSIGN_BW_OR_SPEC_VAR_CONST)
57865 				ZEND_ASSIGN_BW_OR_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57866 				HYBRID_BREAK();
57867 			HYBRID_CASE(ZEND_ASSIGN_BW_OR_SPEC_VAR_CONST_DIM):
57868 				VM_TRACE(ZEND_ASSIGN_BW_OR_SPEC_VAR_CONST_DIM)
57869 				ZEND_ASSIGN_BW_OR_SPEC_VAR_CONST_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57870 				HYBRID_BREAK();
57871 			HYBRID_CASE(ZEND_ASSIGN_BW_OR_SPEC_VAR_CONST_OBJ):
57872 				VM_TRACE(ZEND_ASSIGN_BW_OR_SPEC_VAR_CONST_OBJ)
57873 				ZEND_ASSIGN_BW_OR_SPEC_VAR_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57874 				HYBRID_BREAK();
57875 			HYBRID_CASE(ZEND_ASSIGN_BW_AND_SPEC_VAR_CONST):
57876 				VM_TRACE(ZEND_ASSIGN_BW_AND_SPEC_VAR_CONST)
57877 				ZEND_ASSIGN_BW_AND_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57878 				HYBRID_BREAK();
57879 			HYBRID_CASE(ZEND_ASSIGN_BW_AND_SPEC_VAR_CONST_DIM):
57880 				VM_TRACE(ZEND_ASSIGN_BW_AND_SPEC_VAR_CONST_DIM)
57881 				ZEND_ASSIGN_BW_AND_SPEC_VAR_CONST_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57882 				HYBRID_BREAK();
57883 			HYBRID_CASE(ZEND_ASSIGN_BW_AND_SPEC_VAR_CONST_OBJ):
57884 				VM_TRACE(ZEND_ASSIGN_BW_AND_SPEC_VAR_CONST_OBJ)
57885 				ZEND_ASSIGN_BW_AND_SPEC_VAR_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57886 				HYBRID_BREAK();
57887 			HYBRID_CASE(ZEND_ASSIGN_BW_XOR_SPEC_VAR_CONST):
57888 				VM_TRACE(ZEND_ASSIGN_BW_XOR_SPEC_VAR_CONST)
57889 				ZEND_ASSIGN_BW_XOR_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57890 				HYBRID_BREAK();
57891 			HYBRID_CASE(ZEND_ASSIGN_BW_XOR_SPEC_VAR_CONST_DIM):
57892 				VM_TRACE(ZEND_ASSIGN_BW_XOR_SPEC_VAR_CONST_DIM)
57893 				ZEND_ASSIGN_BW_XOR_SPEC_VAR_CONST_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57894 				HYBRID_BREAK();
57895 			HYBRID_CASE(ZEND_ASSIGN_BW_XOR_SPEC_VAR_CONST_OBJ):
57896 				VM_TRACE(ZEND_ASSIGN_BW_XOR_SPEC_VAR_CONST_OBJ)
57897 				ZEND_ASSIGN_BW_XOR_SPEC_VAR_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57898 				HYBRID_BREAK();
57899 			HYBRID_CASE(ZEND_ASSIGN_POW_SPEC_VAR_CONST):
57900 				VM_TRACE(ZEND_ASSIGN_POW_SPEC_VAR_CONST)
57901 				ZEND_ASSIGN_POW_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57902 				HYBRID_BREAK();
57903 			HYBRID_CASE(ZEND_ASSIGN_POW_SPEC_VAR_CONST_DIM):
57904 				VM_TRACE(ZEND_ASSIGN_POW_SPEC_VAR_CONST_DIM)
57905 				ZEND_ASSIGN_POW_SPEC_VAR_CONST_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57906 				HYBRID_BREAK();
57907 			HYBRID_CASE(ZEND_ASSIGN_POW_SPEC_VAR_CONST_OBJ):
57908 				VM_TRACE(ZEND_ASSIGN_POW_SPEC_VAR_CONST_OBJ)
57909 				ZEND_ASSIGN_POW_SPEC_VAR_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57910 				HYBRID_BREAK();
57911 			HYBRID_CASE(ZEND_PRE_INC_OBJ_SPEC_VAR_CONST):
57912 				VM_TRACE(ZEND_PRE_INC_OBJ_SPEC_VAR_CONST)
57913 				ZEND_PRE_INC_OBJ_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57914 				HYBRID_BREAK();
57915 			HYBRID_CASE(ZEND_PRE_DEC_OBJ_SPEC_VAR_CONST):
57916 				VM_TRACE(ZEND_PRE_DEC_OBJ_SPEC_VAR_CONST)
57917 				ZEND_PRE_DEC_OBJ_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57918 				HYBRID_BREAK();
57919 			HYBRID_CASE(ZEND_POST_INC_OBJ_SPEC_VAR_CONST):
57920 				VM_TRACE(ZEND_POST_INC_OBJ_SPEC_VAR_CONST)
57921 				ZEND_POST_INC_OBJ_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57922 				HYBRID_BREAK();
57923 			HYBRID_CASE(ZEND_POST_DEC_OBJ_SPEC_VAR_CONST):
57924 				VM_TRACE(ZEND_POST_DEC_OBJ_SPEC_VAR_CONST)
57925 				ZEND_POST_DEC_OBJ_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57926 				HYBRID_BREAK();
57927 			HYBRID_CASE(ZEND_FETCH_DIM_W_SPEC_VAR_CONST):
57928 				VM_TRACE(ZEND_FETCH_DIM_W_SPEC_VAR_CONST)
57929 				ZEND_FETCH_DIM_W_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57930 				HYBRID_BREAK();
57931 			HYBRID_CASE(ZEND_FETCH_DIM_RW_SPEC_VAR_CONST):
57932 				VM_TRACE(ZEND_FETCH_DIM_RW_SPEC_VAR_CONST)
57933 				ZEND_FETCH_DIM_RW_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57934 				HYBRID_BREAK();
57935 			HYBRID_CASE(ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_CONST):
57936 				VM_TRACE(ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_CONST)
57937 				ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57938 				HYBRID_BREAK();
57939 			HYBRID_CASE(ZEND_FETCH_DIM_UNSET_SPEC_VAR_CONST):
57940 				VM_TRACE(ZEND_FETCH_DIM_UNSET_SPEC_VAR_CONST)
57941 				ZEND_FETCH_DIM_UNSET_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57942 				HYBRID_BREAK();
57943 			HYBRID_CASE(ZEND_FETCH_OBJ_W_SPEC_VAR_CONST):
57944 				VM_TRACE(ZEND_FETCH_OBJ_W_SPEC_VAR_CONST)
57945 				ZEND_FETCH_OBJ_W_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57946 				HYBRID_BREAK();
57947 			HYBRID_CASE(ZEND_FETCH_OBJ_RW_SPEC_VAR_CONST):
57948 				VM_TRACE(ZEND_FETCH_OBJ_RW_SPEC_VAR_CONST)
57949 				ZEND_FETCH_OBJ_RW_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57950 				HYBRID_BREAK();
57951 			HYBRID_CASE(ZEND_FETCH_OBJ_FUNC_ARG_SPEC_VAR_CONST):
57952 				VM_TRACE(ZEND_FETCH_OBJ_FUNC_ARG_SPEC_VAR_CONST)
57953 				ZEND_FETCH_OBJ_FUNC_ARG_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57954 				HYBRID_BREAK();
57955 			HYBRID_CASE(ZEND_FETCH_OBJ_UNSET_SPEC_VAR_CONST):
57956 				VM_TRACE(ZEND_FETCH_OBJ_UNSET_SPEC_VAR_CONST)
57957 				ZEND_FETCH_OBJ_UNSET_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57958 				HYBRID_BREAK();
57959 			HYBRID_CASE(ZEND_FETCH_LIST_W_SPEC_VAR_CONST):
57960 				VM_TRACE(ZEND_FETCH_LIST_W_SPEC_VAR_CONST)
57961 				ZEND_FETCH_LIST_W_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57962 				HYBRID_BREAK();
57963 			HYBRID_CASE(ZEND_ASSIGN_OBJ_SPEC_VAR_CONST_OP_DATA_CONST):
57964 				VM_TRACE(ZEND_ASSIGN_OBJ_SPEC_VAR_CONST_OP_DATA_CONST)
57965 				ZEND_ASSIGN_OBJ_SPEC_VAR_CONST_OP_DATA_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57966 				HYBRID_BREAK();
57967 			HYBRID_CASE(ZEND_ASSIGN_OBJ_SPEC_VAR_CONST_OP_DATA_TMP):
57968 				VM_TRACE(ZEND_ASSIGN_OBJ_SPEC_VAR_CONST_OP_DATA_TMP)
57969 				ZEND_ASSIGN_OBJ_SPEC_VAR_CONST_OP_DATA_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57970 				HYBRID_BREAK();
57971 			HYBRID_CASE(ZEND_ASSIGN_OBJ_SPEC_VAR_CONST_OP_DATA_VAR):
57972 				VM_TRACE(ZEND_ASSIGN_OBJ_SPEC_VAR_CONST_OP_DATA_VAR)
57973 				ZEND_ASSIGN_OBJ_SPEC_VAR_CONST_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57974 				HYBRID_BREAK();
57975 			HYBRID_CASE(ZEND_ASSIGN_OBJ_SPEC_VAR_CONST_OP_DATA_CV):
57976 				VM_TRACE(ZEND_ASSIGN_OBJ_SPEC_VAR_CONST_OP_DATA_CV)
57977 				ZEND_ASSIGN_OBJ_SPEC_VAR_CONST_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57978 				HYBRID_BREAK();
57979 			HYBRID_CASE(ZEND_ASSIGN_DIM_SPEC_VAR_CONST_OP_DATA_CONST):
57980 				VM_TRACE(ZEND_ASSIGN_DIM_SPEC_VAR_CONST_OP_DATA_CONST)
57981 				ZEND_ASSIGN_DIM_SPEC_VAR_CONST_OP_DATA_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57982 				HYBRID_BREAK();
57983 			HYBRID_CASE(ZEND_ASSIGN_DIM_SPEC_VAR_CONST_OP_DATA_TMP):
57984 				VM_TRACE(ZEND_ASSIGN_DIM_SPEC_VAR_CONST_OP_DATA_TMP)
57985 				ZEND_ASSIGN_DIM_SPEC_VAR_CONST_OP_DATA_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57986 				HYBRID_BREAK();
57987 			HYBRID_CASE(ZEND_ASSIGN_DIM_SPEC_VAR_CONST_OP_DATA_VAR):
57988 				VM_TRACE(ZEND_ASSIGN_DIM_SPEC_VAR_CONST_OP_DATA_VAR)
57989 				ZEND_ASSIGN_DIM_SPEC_VAR_CONST_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57990 				HYBRID_BREAK();
57991 			HYBRID_CASE(ZEND_ASSIGN_DIM_SPEC_VAR_CONST_OP_DATA_CV):
57992 				VM_TRACE(ZEND_ASSIGN_DIM_SPEC_VAR_CONST_OP_DATA_CV)
57993 				ZEND_ASSIGN_DIM_SPEC_VAR_CONST_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57994 				HYBRID_BREAK();
57995 			HYBRID_CASE(ZEND_ASSIGN_SPEC_VAR_CONST_RETVAL_UNUSED):
57996 				VM_TRACE(ZEND_ASSIGN_SPEC_VAR_CONST_RETVAL_UNUSED)
57997 				ZEND_ASSIGN_SPEC_VAR_CONST_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
57998 				HYBRID_BREAK();
57999 			HYBRID_CASE(ZEND_ASSIGN_SPEC_VAR_CONST_RETVAL_USED):
58000 				VM_TRACE(ZEND_ASSIGN_SPEC_VAR_CONST_RETVAL_USED)
58001 				ZEND_ASSIGN_SPEC_VAR_CONST_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58002 				HYBRID_BREAK();
58003 			HYBRID_CASE(ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_CONST):
58004 				VM_TRACE(ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_CONST)
58005 				ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58006 				HYBRID_BREAK();
58007 			HYBRID_CASE(ZEND_FETCH_CLASS_CONSTANT_SPEC_VAR_CONST):
58008 				VM_TRACE(ZEND_FETCH_CLASS_CONSTANT_SPEC_VAR_CONST)
58009 				ZEND_FETCH_CLASS_CONSTANT_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58010 				HYBRID_BREAK();
58011 			HYBRID_CASE(ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_CONST):
58012 				VM_TRACE(ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_CONST)
58013 				ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58014 				HYBRID_BREAK();
58015 			HYBRID_CASE(ZEND_INIT_ARRAY_SPEC_VAR_CONST):
58016 				VM_TRACE(ZEND_INIT_ARRAY_SPEC_VAR_CONST)
58017 				ZEND_INIT_ARRAY_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58018 				HYBRID_BREAK();
58019 			HYBRID_CASE(ZEND_UNSET_DIM_SPEC_VAR_CONST):
58020 				VM_TRACE(ZEND_UNSET_DIM_SPEC_VAR_CONST)
58021 				ZEND_UNSET_DIM_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58022 				HYBRID_BREAK();
58023 			HYBRID_CASE(ZEND_UNSET_OBJ_SPEC_VAR_CONST):
58024 				VM_TRACE(ZEND_UNSET_OBJ_SPEC_VAR_CONST)
58025 				ZEND_UNSET_OBJ_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58026 				HYBRID_BREAK();
58027 			HYBRID_CASE(ZEND_YIELD_SPEC_VAR_CONST):
58028 				VM_TRACE(ZEND_YIELD_SPEC_VAR_CONST)
58029 				ZEND_YIELD_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58030 				HYBRID_BREAK();
58031 			HYBRID_CASE(ZEND_IN_ARRAY_SPEC_VAR_CONST):
58032 				VM_TRACE(ZEND_IN_ARRAY_SPEC_VAR_CONST)
58033 				ZEND_IN_ARRAY_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58034 				HYBRID_BREAK();
58035 			HYBRID_CASE(ZEND_ASSIGN_ADD_SPEC_VAR_TMPVAR):
58036 				VM_TRACE(ZEND_ASSIGN_ADD_SPEC_VAR_TMPVAR)
58037 				ZEND_ASSIGN_ADD_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58038 				HYBRID_BREAK();
58039 			HYBRID_CASE(ZEND_ASSIGN_ADD_SPEC_VAR_TMPVAR_DIM):
58040 				VM_TRACE(ZEND_ASSIGN_ADD_SPEC_VAR_TMPVAR_DIM)
58041 				ZEND_ASSIGN_ADD_SPEC_VAR_TMPVAR_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58042 				HYBRID_BREAK();
58043 			HYBRID_CASE(ZEND_ASSIGN_ADD_SPEC_VAR_TMPVAR_OBJ):
58044 				VM_TRACE(ZEND_ASSIGN_ADD_SPEC_VAR_TMPVAR_OBJ)
58045 				ZEND_ASSIGN_ADD_SPEC_VAR_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58046 				HYBRID_BREAK();
58047 			HYBRID_CASE(ZEND_ASSIGN_SUB_SPEC_VAR_TMPVAR):
58048 				VM_TRACE(ZEND_ASSIGN_SUB_SPEC_VAR_TMPVAR)
58049 				ZEND_ASSIGN_SUB_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58050 				HYBRID_BREAK();
58051 			HYBRID_CASE(ZEND_ASSIGN_SUB_SPEC_VAR_TMPVAR_DIM):
58052 				VM_TRACE(ZEND_ASSIGN_SUB_SPEC_VAR_TMPVAR_DIM)
58053 				ZEND_ASSIGN_SUB_SPEC_VAR_TMPVAR_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58054 				HYBRID_BREAK();
58055 			HYBRID_CASE(ZEND_ASSIGN_SUB_SPEC_VAR_TMPVAR_OBJ):
58056 				VM_TRACE(ZEND_ASSIGN_SUB_SPEC_VAR_TMPVAR_OBJ)
58057 				ZEND_ASSIGN_SUB_SPEC_VAR_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58058 				HYBRID_BREAK();
58059 			HYBRID_CASE(ZEND_ASSIGN_MUL_SPEC_VAR_TMPVAR):
58060 				VM_TRACE(ZEND_ASSIGN_MUL_SPEC_VAR_TMPVAR)
58061 				ZEND_ASSIGN_MUL_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58062 				HYBRID_BREAK();
58063 			HYBRID_CASE(ZEND_ASSIGN_MUL_SPEC_VAR_TMPVAR_DIM):
58064 				VM_TRACE(ZEND_ASSIGN_MUL_SPEC_VAR_TMPVAR_DIM)
58065 				ZEND_ASSIGN_MUL_SPEC_VAR_TMPVAR_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58066 				HYBRID_BREAK();
58067 			HYBRID_CASE(ZEND_ASSIGN_MUL_SPEC_VAR_TMPVAR_OBJ):
58068 				VM_TRACE(ZEND_ASSIGN_MUL_SPEC_VAR_TMPVAR_OBJ)
58069 				ZEND_ASSIGN_MUL_SPEC_VAR_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58070 				HYBRID_BREAK();
58071 			HYBRID_CASE(ZEND_ASSIGN_DIV_SPEC_VAR_TMPVAR):
58072 				VM_TRACE(ZEND_ASSIGN_DIV_SPEC_VAR_TMPVAR)
58073 				ZEND_ASSIGN_DIV_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58074 				HYBRID_BREAK();
58075 			HYBRID_CASE(ZEND_ASSIGN_DIV_SPEC_VAR_TMPVAR_DIM):
58076 				VM_TRACE(ZEND_ASSIGN_DIV_SPEC_VAR_TMPVAR_DIM)
58077 				ZEND_ASSIGN_DIV_SPEC_VAR_TMPVAR_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58078 				HYBRID_BREAK();
58079 			HYBRID_CASE(ZEND_ASSIGN_DIV_SPEC_VAR_TMPVAR_OBJ):
58080 				VM_TRACE(ZEND_ASSIGN_DIV_SPEC_VAR_TMPVAR_OBJ)
58081 				ZEND_ASSIGN_DIV_SPEC_VAR_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58082 				HYBRID_BREAK();
58083 			HYBRID_CASE(ZEND_ASSIGN_MOD_SPEC_VAR_TMPVAR):
58084 				VM_TRACE(ZEND_ASSIGN_MOD_SPEC_VAR_TMPVAR)
58085 				ZEND_ASSIGN_MOD_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58086 				HYBRID_BREAK();
58087 			HYBRID_CASE(ZEND_ASSIGN_MOD_SPEC_VAR_TMPVAR_DIM):
58088 				VM_TRACE(ZEND_ASSIGN_MOD_SPEC_VAR_TMPVAR_DIM)
58089 				ZEND_ASSIGN_MOD_SPEC_VAR_TMPVAR_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58090 				HYBRID_BREAK();
58091 			HYBRID_CASE(ZEND_ASSIGN_MOD_SPEC_VAR_TMPVAR_OBJ):
58092 				VM_TRACE(ZEND_ASSIGN_MOD_SPEC_VAR_TMPVAR_OBJ)
58093 				ZEND_ASSIGN_MOD_SPEC_VAR_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58094 				HYBRID_BREAK();
58095 			HYBRID_CASE(ZEND_ASSIGN_SL_SPEC_VAR_TMPVAR):
58096 				VM_TRACE(ZEND_ASSIGN_SL_SPEC_VAR_TMPVAR)
58097 				ZEND_ASSIGN_SL_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58098 				HYBRID_BREAK();
58099 			HYBRID_CASE(ZEND_ASSIGN_SL_SPEC_VAR_TMPVAR_DIM):
58100 				VM_TRACE(ZEND_ASSIGN_SL_SPEC_VAR_TMPVAR_DIM)
58101 				ZEND_ASSIGN_SL_SPEC_VAR_TMPVAR_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58102 				HYBRID_BREAK();
58103 			HYBRID_CASE(ZEND_ASSIGN_SL_SPEC_VAR_TMPVAR_OBJ):
58104 				VM_TRACE(ZEND_ASSIGN_SL_SPEC_VAR_TMPVAR_OBJ)
58105 				ZEND_ASSIGN_SL_SPEC_VAR_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58106 				HYBRID_BREAK();
58107 			HYBRID_CASE(ZEND_ASSIGN_SR_SPEC_VAR_TMPVAR):
58108 				VM_TRACE(ZEND_ASSIGN_SR_SPEC_VAR_TMPVAR)
58109 				ZEND_ASSIGN_SR_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58110 				HYBRID_BREAK();
58111 			HYBRID_CASE(ZEND_ASSIGN_SR_SPEC_VAR_TMPVAR_DIM):
58112 				VM_TRACE(ZEND_ASSIGN_SR_SPEC_VAR_TMPVAR_DIM)
58113 				ZEND_ASSIGN_SR_SPEC_VAR_TMPVAR_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58114 				HYBRID_BREAK();
58115 			HYBRID_CASE(ZEND_ASSIGN_SR_SPEC_VAR_TMPVAR_OBJ):
58116 				VM_TRACE(ZEND_ASSIGN_SR_SPEC_VAR_TMPVAR_OBJ)
58117 				ZEND_ASSIGN_SR_SPEC_VAR_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58118 				HYBRID_BREAK();
58119 			HYBRID_CASE(ZEND_ASSIGN_CONCAT_SPEC_VAR_TMPVAR):
58120 				VM_TRACE(ZEND_ASSIGN_CONCAT_SPEC_VAR_TMPVAR)
58121 				ZEND_ASSIGN_CONCAT_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58122 				HYBRID_BREAK();
58123 			HYBRID_CASE(ZEND_ASSIGN_CONCAT_SPEC_VAR_TMPVAR_DIM):
58124 				VM_TRACE(ZEND_ASSIGN_CONCAT_SPEC_VAR_TMPVAR_DIM)
58125 				ZEND_ASSIGN_CONCAT_SPEC_VAR_TMPVAR_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58126 				HYBRID_BREAK();
58127 			HYBRID_CASE(ZEND_ASSIGN_CONCAT_SPEC_VAR_TMPVAR_OBJ):
58128 				VM_TRACE(ZEND_ASSIGN_CONCAT_SPEC_VAR_TMPVAR_OBJ)
58129 				ZEND_ASSIGN_CONCAT_SPEC_VAR_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58130 				HYBRID_BREAK();
58131 			HYBRID_CASE(ZEND_ASSIGN_BW_OR_SPEC_VAR_TMPVAR):
58132 				VM_TRACE(ZEND_ASSIGN_BW_OR_SPEC_VAR_TMPVAR)
58133 				ZEND_ASSIGN_BW_OR_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58134 				HYBRID_BREAK();
58135 			HYBRID_CASE(ZEND_ASSIGN_BW_OR_SPEC_VAR_TMPVAR_DIM):
58136 				VM_TRACE(ZEND_ASSIGN_BW_OR_SPEC_VAR_TMPVAR_DIM)
58137 				ZEND_ASSIGN_BW_OR_SPEC_VAR_TMPVAR_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58138 				HYBRID_BREAK();
58139 			HYBRID_CASE(ZEND_ASSIGN_BW_OR_SPEC_VAR_TMPVAR_OBJ):
58140 				VM_TRACE(ZEND_ASSIGN_BW_OR_SPEC_VAR_TMPVAR_OBJ)
58141 				ZEND_ASSIGN_BW_OR_SPEC_VAR_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58142 				HYBRID_BREAK();
58143 			HYBRID_CASE(ZEND_ASSIGN_BW_AND_SPEC_VAR_TMPVAR):
58144 				VM_TRACE(ZEND_ASSIGN_BW_AND_SPEC_VAR_TMPVAR)
58145 				ZEND_ASSIGN_BW_AND_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58146 				HYBRID_BREAK();
58147 			HYBRID_CASE(ZEND_ASSIGN_BW_AND_SPEC_VAR_TMPVAR_DIM):
58148 				VM_TRACE(ZEND_ASSIGN_BW_AND_SPEC_VAR_TMPVAR_DIM)
58149 				ZEND_ASSIGN_BW_AND_SPEC_VAR_TMPVAR_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58150 				HYBRID_BREAK();
58151 			HYBRID_CASE(ZEND_ASSIGN_BW_AND_SPEC_VAR_TMPVAR_OBJ):
58152 				VM_TRACE(ZEND_ASSIGN_BW_AND_SPEC_VAR_TMPVAR_OBJ)
58153 				ZEND_ASSIGN_BW_AND_SPEC_VAR_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58154 				HYBRID_BREAK();
58155 			HYBRID_CASE(ZEND_ASSIGN_BW_XOR_SPEC_VAR_TMPVAR):
58156 				VM_TRACE(ZEND_ASSIGN_BW_XOR_SPEC_VAR_TMPVAR)
58157 				ZEND_ASSIGN_BW_XOR_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58158 				HYBRID_BREAK();
58159 			HYBRID_CASE(ZEND_ASSIGN_BW_XOR_SPEC_VAR_TMPVAR_DIM):
58160 				VM_TRACE(ZEND_ASSIGN_BW_XOR_SPEC_VAR_TMPVAR_DIM)
58161 				ZEND_ASSIGN_BW_XOR_SPEC_VAR_TMPVAR_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58162 				HYBRID_BREAK();
58163 			HYBRID_CASE(ZEND_ASSIGN_BW_XOR_SPEC_VAR_TMPVAR_OBJ):
58164 				VM_TRACE(ZEND_ASSIGN_BW_XOR_SPEC_VAR_TMPVAR_OBJ)
58165 				ZEND_ASSIGN_BW_XOR_SPEC_VAR_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58166 				HYBRID_BREAK();
58167 			HYBRID_CASE(ZEND_ASSIGN_POW_SPEC_VAR_TMPVAR):
58168 				VM_TRACE(ZEND_ASSIGN_POW_SPEC_VAR_TMPVAR)
58169 				ZEND_ASSIGN_POW_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58170 				HYBRID_BREAK();
58171 			HYBRID_CASE(ZEND_ASSIGN_POW_SPEC_VAR_TMPVAR_DIM):
58172 				VM_TRACE(ZEND_ASSIGN_POW_SPEC_VAR_TMPVAR_DIM)
58173 				ZEND_ASSIGN_POW_SPEC_VAR_TMPVAR_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58174 				HYBRID_BREAK();
58175 			HYBRID_CASE(ZEND_ASSIGN_POW_SPEC_VAR_TMPVAR_OBJ):
58176 				VM_TRACE(ZEND_ASSIGN_POW_SPEC_VAR_TMPVAR_OBJ)
58177 				ZEND_ASSIGN_POW_SPEC_VAR_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58178 				HYBRID_BREAK();
58179 			HYBRID_CASE(ZEND_PRE_INC_OBJ_SPEC_VAR_TMPVAR):
58180 				VM_TRACE(ZEND_PRE_INC_OBJ_SPEC_VAR_TMPVAR)
58181 				ZEND_PRE_INC_OBJ_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58182 				HYBRID_BREAK();
58183 			HYBRID_CASE(ZEND_PRE_DEC_OBJ_SPEC_VAR_TMPVAR):
58184 				VM_TRACE(ZEND_PRE_DEC_OBJ_SPEC_VAR_TMPVAR)
58185 				ZEND_PRE_DEC_OBJ_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58186 				HYBRID_BREAK();
58187 			HYBRID_CASE(ZEND_POST_INC_OBJ_SPEC_VAR_TMPVAR):
58188 				VM_TRACE(ZEND_POST_INC_OBJ_SPEC_VAR_TMPVAR)
58189 				ZEND_POST_INC_OBJ_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58190 				HYBRID_BREAK();
58191 			HYBRID_CASE(ZEND_POST_DEC_OBJ_SPEC_VAR_TMPVAR):
58192 				VM_TRACE(ZEND_POST_DEC_OBJ_SPEC_VAR_TMPVAR)
58193 				ZEND_POST_DEC_OBJ_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58194 				HYBRID_BREAK();
58195 			HYBRID_CASE(ZEND_FETCH_DIM_W_SPEC_VAR_TMPVAR):
58196 				VM_TRACE(ZEND_FETCH_DIM_W_SPEC_VAR_TMPVAR)
58197 				ZEND_FETCH_DIM_W_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58198 				HYBRID_BREAK();
58199 			HYBRID_CASE(ZEND_FETCH_DIM_RW_SPEC_VAR_TMPVAR):
58200 				VM_TRACE(ZEND_FETCH_DIM_RW_SPEC_VAR_TMPVAR)
58201 				ZEND_FETCH_DIM_RW_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58202 				HYBRID_BREAK();
58203 			HYBRID_CASE(ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_TMPVAR):
58204 				VM_TRACE(ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_TMPVAR)
58205 				ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58206 				HYBRID_BREAK();
58207 			HYBRID_CASE(ZEND_FETCH_DIM_UNSET_SPEC_VAR_TMPVAR):
58208 				VM_TRACE(ZEND_FETCH_DIM_UNSET_SPEC_VAR_TMPVAR)
58209 				ZEND_FETCH_DIM_UNSET_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58210 				HYBRID_BREAK();
58211 			HYBRID_CASE(ZEND_FETCH_OBJ_W_SPEC_VAR_TMPVAR):
58212 				VM_TRACE(ZEND_FETCH_OBJ_W_SPEC_VAR_TMPVAR)
58213 				ZEND_FETCH_OBJ_W_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58214 				HYBRID_BREAK();
58215 			HYBRID_CASE(ZEND_FETCH_OBJ_RW_SPEC_VAR_TMPVAR):
58216 				VM_TRACE(ZEND_FETCH_OBJ_RW_SPEC_VAR_TMPVAR)
58217 				ZEND_FETCH_OBJ_RW_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58218 				HYBRID_BREAK();
58219 			HYBRID_CASE(ZEND_FETCH_OBJ_FUNC_ARG_SPEC_VAR_TMPVAR):
58220 				VM_TRACE(ZEND_FETCH_OBJ_FUNC_ARG_SPEC_VAR_TMPVAR)
58221 				ZEND_FETCH_OBJ_FUNC_ARG_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58222 				HYBRID_BREAK();
58223 			HYBRID_CASE(ZEND_FETCH_OBJ_UNSET_SPEC_VAR_TMPVAR):
58224 				VM_TRACE(ZEND_FETCH_OBJ_UNSET_SPEC_VAR_TMPVAR)
58225 				ZEND_FETCH_OBJ_UNSET_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58226 				HYBRID_BREAK();
58227 			HYBRID_CASE(ZEND_FETCH_LIST_W_SPEC_VAR_TMPVAR):
58228 				VM_TRACE(ZEND_FETCH_LIST_W_SPEC_VAR_TMPVAR)
58229 				ZEND_FETCH_LIST_W_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58230 				HYBRID_BREAK();
58231 			HYBRID_CASE(ZEND_ASSIGN_OBJ_SPEC_VAR_TMPVAR_OP_DATA_CONST):
58232 				VM_TRACE(ZEND_ASSIGN_OBJ_SPEC_VAR_TMPVAR_OP_DATA_CONST)
58233 				ZEND_ASSIGN_OBJ_SPEC_VAR_TMPVAR_OP_DATA_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58234 				HYBRID_BREAK();
58235 			HYBRID_CASE(ZEND_ASSIGN_OBJ_SPEC_VAR_TMPVAR_OP_DATA_TMP):
58236 				VM_TRACE(ZEND_ASSIGN_OBJ_SPEC_VAR_TMPVAR_OP_DATA_TMP)
58237 				ZEND_ASSIGN_OBJ_SPEC_VAR_TMPVAR_OP_DATA_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58238 				HYBRID_BREAK();
58239 			HYBRID_CASE(ZEND_ASSIGN_OBJ_SPEC_VAR_TMPVAR_OP_DATA_VAR):
58240 				VM_TRACE(ZEND_ASSIGN_OBJ_SPEC_VAR_TMPVAR_OP_DATA_VAR)
58241 				ZEND_ASSIGN_OBJ_SPEC_VAR_TMPVAR_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58242 				HYBRID_BREAK();
58243 			HYBRID_CASE(ZEND_ASSIGN_OBJ_SPEC_VAR_TMPVAR_OP_DATA_CV):
58244 				VM_TRACE(ZEND_ASSIGN_OBJ_SPEC_VAR_TMPVAR_OP_DATA_CV)
58245 				ZEND_ASSIGN_OBJ_SPEC_VAR_TMPVAR_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58246 				HYBRID_BREAK();
58247 			HYBRID_CASE(ZEND_ASSIGN_DIM_SPEC_VAR_TMPVAR_OP_DATA_CONST):
58248 				VM_TRACE(ZEND_ASSIGN_DIM_SPEC_VAR_TMPVAR_OP_DATA_CONST)
58249 				ZEND_ASSIGN_DIM_SPEC_VAR_TMPVAR_OP_DATA_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58250 				HYBRID_BREAK();
58251 			HYBRID_CASE(ZEND_ASSIGN_DIM_SPEC_VAR_TMPVAR_OP_DATA_TMP):
58252 				VM_TRACE(ZEND_ASSIGN_DIM_SPEC_VAR_TMPVAR_OP_DATA_TMP)
58253 				ZEND_ASSIGN_DIM_SPEC_VAR_TMPVAR_OP_DATA_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58254 				HYBRID_BREAK();
58255 			HYBRID_CASE(ZEND_ASSIGN_DIM_SPEC_VAR_TMPVAR_OP_DATA_VAR):
58256 				VM_TRACE(ZEND_ASSIGN_DIM_SPEC_VAR_TMPVAR_OP_DATA_VAR)
58257 				ZEND_ASSIGN_DIM_SPEC_VAR_TMPVAR_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58258 				HYBRID_BREAK();
58259 			HYBRID_CASE(ZEND_ASSIGN_DIM_SPEC_VAR_TMPVAR_OP_DATA_CV):
58260 				VM_TRACE(ZEND_ASSIGN_DIM_SPEC_VAR_TMPVAR_OP_DATA_CV)
58261 				ZEND_ASSIGN_DIM_SPEC_VAR_TMPVAR_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58262 				HYBRID_BREAK();
58263 			HYBRID_CASE(ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_TMPVAR):
58264 				VM_TRACE(ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_TMPVAR)
58265 				ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58266 				HYBRID_BREAK();
58267 			HYBRID_CASE(ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_TMPVAR):
58268 				VM_TRACE(ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_TMPVAR)
58269 				ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58270 				HYBRID_BREAK();
58271 			HYBRID_CASE(ZEND_INIT_ARRAY_SPEC_VAR_TMPVAR):
58272 				VM_TRACE(ZEND_INIT_ARRAY_SPEC_VAR_TMPVAR)
58273 				ZEND_INIT_ARRAY_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58274 				HYBRID_BREAK();
58275 			HYBRID_CASE(ZEND_UNSET_DIM_SPEC_VAR_TMPVAR):
58276 				VM_TRACE(ZEND_UNSET_DIM_SPEC_VAR_TMPVAR)
58277 				ZEND_UNSET_DIM_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58278 				HYBRID_BREAK();
58279 			HYBRID_CASE(ZEND_UNSET_OBJ_SPEC_VAR_TMPVAR):
58280 				VM_TRACE(ZEND_UNSET_OBJ_SPEC_VAR_TMPVAR)
58281 				ZEND_UNSET_OBJ_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58282 				HYBRID_BREAK();
58283 			HYBRID_CASE(ZEND_IS_IDENTICAL_SPEC_VAR_TMP):
58284 				VM_TRACE(ZEND_IS_IDENTICAL_SPEC_VAR_TMP)
58285 				ZEND_IS_IDENTICAL_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58286 				HYBRID_BREAK();
58287 			HYBRID_CASE(ZEND_IS_NOT_IDENTICAL_SPEC_VAR_TMP):
58288 				VM_TRACE(ZEND_IS_NOT_IDENTICAL_SPEC_VAR_TMP)
58289 				ZEND_IS_NOT_IDENTICAL_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58290 				HYBRID_BREAK();
58291 			HYBRID_CASE(ZEND_ASSIGN_SPEC_VAR_TMP_RETVAL_UNUSED):
58292 				VM_TRACE(ZEND_ASSIGN_SPEC_VAR_TMP_RETVAL_UNUSED)
58293 				ZEND_ASSIGN_SPEC_VAR_TMP_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58294 				HYBRID_BREAK();
58295 			HYBRID_CASE(ZEND_ASSIGN_SPEC_VAR_TMP_RETVAL_USED):
58296 				VM_TRACE(ZEND_ASSIGN_SPEC_VAR_TMP_RETVAL_USED)
58297 				ZEND_ASSIGN_SPEC_VAR_TMP_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58298 				HYBRID_BREAK();
58299 			HYBRID_CASE(ZEND_YIELD_SPEC_VAR_TMP):
58300 				VM_TRACE(ZEND_YIELD_SPEC_VAR_TMP)
58301 				ZEND_YIELD_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58302 				HYBRID_BREAK();
58303 			HYBRID_CASE(ZEND_IS_IDENTICAL_SPEC_VAR_VAR):
58304 				VM_TRACE(ZEND_IS_IDENTICAL_SPEC_VAR_VAR)
58305 				ZEND_IS_IDENTICAL_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58306 				HYBRID_BREAK();
58307 			HYBRID_CASE(ZEND_IS_NOT_IDENTICAL_SPEC_VAR_VAR):
58308 				VM_TRACE(ZEND_IS_NOT_IDENTICAL_SPEC_VAR_VAR)
58309 				ZEND_IS_NOT_IDENTICAL_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58310 				HYBRID_BREAK();
58311 			HYBRID_CASE(ZEND_ASSIGN_SPEC_VAR_VAR_RETVAL_UNUSED):
58312 				VM_TRACE(ZEND_ASSIGN_SPEC_VAR_VAR_RETVAL_UNUSED)
58313 				ZEND_ASSIGN_SPEC_VAR_VAR_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58314 				HYBRID_BREAK();
58315 			HYBRID_CASE(ZEND_ASSIGN_SPEC_VAR_VAR_RETVAL_USED):
58316 				VM_TRACE(ZEND_ASSIGN_SPEC_VAR_VAR_RETVAL_USED)
58317 				ZEND_ASSIGN_SPEC_VAR_VAR_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58318 				HYBRID_BREAK();
58319 			HYBRID_CASE(ZEND_ASSIGN_REF_SPEC_VAR_VAR):
58320 				VM_TRACE(ZEND_ASSIGN_REF_SPEC_VAR_VAR)
58321 				ZEND_ASSIGN_REF_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58322 				HYBRID_BREAK();
58323 			HYBRID_CASE(ZEND_YIELD_SPEC_VAR_VAR):
58324 				VM_TRACE(ZEND_YIELD_SPEC_VAR_VAR)
58325 				ZEND_YIELD_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58326 				HYBRID_BREAK();
58327 			HYBRID_CASE(ZEND_ASSIGN_ADD_SPEC_VAR_UNUSED_DIM):
58328 				VM_TRACE(ZEND_ASSIGN_ADD_SPEC_VAR_UNUSED_DIM)
58329 				ZEND_ASSIGN_ADD_SPEC_VAR_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58330 				HYBRID_BREAK();
58331 			HYBRID_CASE(ZEND_ASSIGN_SUB_SPEC_VAR_UNUSED_DIM):
58332 				VM_TRACE(ZEND_ASSIGN_SUB_SPEC_VAR_UNUSED_DIM)
58333 				ZEND_ASSIGN_SUB_SPEC_VAR_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58334 				HYBRID_BREAK();
58335 			HYBRID_CASE(ZEND_ASSIGN_MUL_SPEC_VAR_UNUSED_DIM):
58336 				VM_TRACE(ZEND_ASSIGN_MUL_SPEC_VAR_UNUSED_DIM)
58337 				ZEND_ASSIGN_MUL_SPEC_VAR_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58338 				HYBRID_BREAK();
58339 			HYBRID_CASE(ZEND_ASSIGN_DIV_SPEC_VAR_UNUSED_DIM):
58340 				VM_TRACE(ZEND_ASSIGN_DIV_SPEC_VAR_UNUSED_DIM)
58341 				ZEND_ASSIGN_DIV_SPEC_VAR_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58342 				HYBRID_BREAK();
58343 			HYBRID_CASE(ZEND_ASSIGN_MOD_SPEC_VAR_UNUSED_DIM):
58344 				VM_TRACE(ZEND_ASSIGN_MOD_SPEC_VAR_UNUSED_DIM)
58345 				ZEND_ASSIGN_MOD_SPEC_VAR_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58346 				HYBRID_BREAK();
58347 			HYBRID_CASE(ZEND_ASSIGN_SL_SPEC_VAR_UNUSED_DIM):
58348 				VM_TRACE(ZEND_ASSIGN_SL_SPEC_VAR_UNUSED_DIM)
58349 				ZEND_ASSIGN_SL_SPEC_VAR_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58350 				HYBRID_BREAK();
58351 			HYBRID_CASE(ZEND_ASSIGN_SR_SPEC_VAR_UNUSED_DIM):
58352 				VM_TRACE(ZEND_ASSIGN_SR_SPEC_VAR_UNUSED_DIM)
58353 				ZEND_ASSIGN_SR_SPEC_VAR_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58354 				HYBRID_BREAK();
58355 			HYBRID_CASE(ZEND_ASSIGN_CONCAT_SPEC_VAR_UNUSED_DIM):
58356 				VM_TRACE(ZEND_ASSIGN_CONCAT_SPEC_VAR_UNUSED_DIM)
58357 				ZEND_ASSIGN_CONCAT_SPEC_VAR_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58358 				HYBRID_BREAK();
58359 			HYBRID_CASE(ZEND_ASSIGN_BW_OR_SPEC_VAR_UNUSED_DIM):
58360 				VM_TRACE(ZEND_ASSIGN_BW_OR_SPEC_VAR_UNUSED_DIM)
58361 				ZEND_ASSIGN_BW_OR_SPEC_VAR_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58362 				HYBRID_BREAK();
58363 			HYBRID_CASE(ZEND_ASSIGN_BW_AND_SPEC_VAR_UNUSED_DIM):
58364 				VM_TRACE(ZEND_ASSIGN_BW_AND_SPEC_VAR_UNUSED_DIM)
58365 				ZEND_ASSIGN_BW_AND_SPEC_VAR_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58366 				HYBRID_BREAK();
58367 			HYBRID_CASE(ZEND_ASSIGN_BW_XOR_SPEC_VAR_UNUSED_DIM):
58368 				VM_TRACE(ZEND_ASSIGN_BW_XOR_SPEC_VAR_UNUSED_DIM)
58369 				ZEND_ASSIGN_BW_XOR_SPEC_VAR_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58370 				HYBRID_BREAK();
58371 			HYBRID_CASE(ZEND_ASSIGN_POW_SPEC_VAR_UNUSED_DIM):
58372 				VM_TRACE(ZEND_ASSIGN_POW_SPEC_VAR_UNUSED_DIM)
58373 				ZEND_ASSIGN_POW_SPEC_VAR_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58374 				HYBRID_BREAK();
58375 			HYBRID_CASE(ZEND_FETCH_DIM_W_SPEC_VAR_UNUSED):
58376 				VM_TRACE(ZEND_FETCH_DIM_W_SPEC_VAR_UNUSED)
58377 				ZEND_FETCH_DIM_W_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58378 				HYBRID_BREAK();
58379 			HYBRID_CASE(ZEND_FETCH_DIM_RW_SPEC_VAR_UNUSED):
58380 				VM_TRACE(ZEND_FETCH_DIM_RW_SPEC_VAR_UNUSED)
58381 				ZEND_FETCH_DIM_RW_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58382 				HYBRID_BREAK();
58383 			HYBRID_CASE(ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_UNUSED):
58384 				VM_TRACE(ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_UNUSED)
58385 				ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58386 				HYBRID_BREAK();
58387 			HYBRID_CASE(ZEND_ASSIGN_DIM_SPEC_VAR_UNUSED_OP_DATA_CONST):
58388 				VM_TRACE(ZEND_ASSIGN_DIM_SPEC_VAR_UNUSED_OP_DATA_CONST)
58389 				ZEND_ASSIGN_DIM_SPEC_VAR_UNUSED_OP_DATA_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58390 				HYBRID_BREAK();
58391 			HYBRID_CASE(ZEND_ASSIGN_DIM_SPEC_VAR_UNUSED_OP_DATA_TMP):
58392 				VM_TRACE(ZEND_ASSIGN_DIM_SPEC_VAR_UNUSED_OP_DATA_TMP)
58393 				ZEND_ASSIGN_DIM_SPEC_VAR_UNUSED_OP_DATA_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58394 				HYBRID_BREAK();
58395 			HYBRID_CASE(ZEND_ASSIGN_DIM_SPEC_VAR_UNUSED_OP_DATA_VAR):
58396 				VM_TRACE(ZEND_ASSIGN_DIM_SPEC_VAR_UNUSED_OP_DATA_VAR)
58397 				ZEND_ASSIGN_DIM_SPEC_VAR_UNUSED_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58398 				HYBRID_BREAK();
58399 			HYBRID_CASE(ZEND_ASSIGN_DIM_SPEC_VAR_UNUSED_OP_DATA_CV):
58400 				VM_TRACE(ZEND_ASSIGN_DIM_SPEC_VAR_UNUSED_OP_DATA_CV)
58401 				ZEND_ASSIGN_DIM_SPEC_VAR_UNUSED_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58402 				HYBRID_BREAK();
58403 			HYBRID_CASE(ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_UNUSED):
58404 				VM_TRACE(ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_UNUSED)
58405 				ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58406 				HYBRID_BREAK();
58407 			HYBRID_CASE(ZEND_VERIFY_RETURN_TYPE_SPEC_VAR_UNUSED):
58408 				VM_TRACE(ZEND_VERIFY_RETURN_TYPE_SPEC_VAR_UNUSED)
58409 				ZEND_VERIFY_RETURN_TYPE_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58410 				HYBRID_BREAK();
58411 			HYBRID_CASE(ZEND_NEW_SPEC_VAR_UNUSED):
58412 				VM_TRACE(ZEND_NEW_SPEC_VAR_UNUSED)
58413 				ZEND_NEW_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58414 				HYBRID_BREAK();
58415 			HYBRID_CASE(ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_UNUSED):
58416 				VM_TRACE(ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_UNUSED)
58417 				ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58418 				HYBRID_BREAK();
58419 			HYBRID_CASE(ZEND_INIT_ARRAY_SPEC_VAR_UNUSED):
58420 				VM_TRACE(ZEND_INIT_ARRAY_SPEC_VAR_UNUSED)
58421 				ZEND_INIT_ARRAY_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58422 				HYBRID_BREAK();
58423 			HYBRID_CASE(ZEND_SEPARATE_SPEC_VAR_UNUSED):
58424 				VM_TRACE(ZEND_SEPARATE_SPEC_VAR_UNUSED)
58425 				ZEND_SEPARATE_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58426 				HYBRID_BREAK();
58427 			HYBRID_CASE(ZEND_YIELD_SPEC_VAR_UNUSED):
58428 				VM_TRACE(ZEND_YIELD_SPEC_VAR_UNUSED)
58429 				ZEND_YIELD_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58430 				HYBRID_BREAK();
58431 			HYBRID_CASE(ZEND_MAKE_REF_SPEC_VAR_UNUSED):
58432 				VM_TRACE(ZEND_MAKE_REF_SPEC_VAR_UNUSED)
58433 				ZEND_MAKE_REF_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58434 				HYBRID_BREAK();
58435 			HYBRID_CASE(ZEND_COUNT_SPEC_VAR_UNUSED):
58436 				VM_TRACE(ZEND_COUNT_SPEC_VAR_UNUSED)
58437 				ZEND_COUNT_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58438 				HYBRID_BREAK();
58439 			HYBRID_CASE(ZEND_GET_CLASS_SPEC_VAR_UNUSED):
58440 				VM_TRACE(ZEND_GET_CLASS_SPEC_VAR_UNUSED)
58441 				ZEND_GET_CLASS_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58442 				HYBRID_BREAK();
58443 			HYBRID_CASE(ZEND_GET_TYPE_SPEC_VAR_UNUSED):
58444 				VM_TRACE(ZEND_GET_TYPE_SPEC_VAR_UNUSED)
58445 				ZEND_GET_TYPE_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58446 				HYBRID_BREAK();
58447 			HYBRID_CASE(ZEND_ASSIGN_ADD_SPEC_VAR_CV):
58448 				VM_TRACE(ZEND_ASSIGN_ADD_SPEC_VAR_CV)
58449 				ZEND_ASSIGN_ADD_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58450 				HYBRID_BREAK();
58451 			HYBRID_CASE(ZEND_ASSIGN_ADD_SPEC_VAR_CV_DIM):
58452 				VM_TRACE(ZEND_ASSIGN_ADD_SPEC_VAR_CV_DIM)
58453 				ZEND_ASSIGN_ADD_SPEC_VAR_CV_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58454 				HYBRID_BREAK();
58455 			HYBRID_CASE(ZEND_ASSIGN_ADD_SPEC_VAR_CV_OBJ):
58456 				VM_TRACE(ZEND_ASSIGN_ADD_SPEC_VAR_CV_OBJ)
58457 				ZEND_ASSIGN_ADD_SPEC_VAR_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58458 				HYBRID_BREAK();
58459 			HYBRID_CASE(ZEND_ASSIGN_SUB_SPEC_VAR_CV):
58460 				VM_TRACE(ZEND_ASSIGN_SUB_SPEC_VAR_CV)
58461 				ZEND_ASSIGN_SUB_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58462 				HYBRID_BREAK();
58463 			HYBRID_CASE(ZEND_ASSIGN_SUB_SPEC_VAR_CV_DIM):
58464 				VM_TRACE(ZEND_ASSIGN_SUB_SPEC_VAR_CV_DIM)
58465 				ZEND_ASSIGN_SUB_SPEC_VAR_CV_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58466 				HYBRID_BREAK();
58467 			HYBRID_CASE(ZEND_ASSIGN_SUB_SPEC_VAR_CV_OBJ):
58468 				VM_TRACE(ZEND_ASSIGN_SUB_SPEC_VAR_CV_OBJ)
58469 				ZEND_ASSIGN_SUB_SPEC_VAR_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58470 				HYBRID_BREAK();
58471 			HYBRID_CASE(ZEND_ASSIGN_MUL_SPEC_VAR_CV):
58472 				VM_TRACE(ZEND_ASSIGN_MUL_SPEC_VAR_CV)
58473 				ZEND_ASSIGN_MUL_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58474 				HYBRID_BREAK();
58475 			HYBRID_CASE(ZEND_ASSIGN_MUL_SPEC_VAR_CV_DIM):
58476 				VM_TRACE(ZEND_ASSIGN_MUL_SPEC_VAR_CV_DIM)
58477 				ZEND_ASSIGN_MUL_SPEC_VAR_CV_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58478 				HYBRID_BREAK();
58479 			HYBRID_CASE(ZEND_ASSIGN_MUL_SPEC_VAR_CV_OBJ):
58480 				VM_TRACE(ZEND_ASSIGN_MUL_SPEC_VAR_CV_OBJ)
58481 				ZEND_ASSIGN_MUL_SPEC_VAR_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58482 				HYBRID_BREAK();
58483 			HYBRID_CASE(ZEND_ASSIGN_DIV_SPEC_VAR_CV):
58484 				VM_TRACE(ZEND_ASSIGN_DIV_SPEC_VAR_CV)
58485 				ZEND_ASSIGN_DIV_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58486 				HYBRID_BREAK();
58487 			HYBRID_CASE(ZEND_ASSIGN_DIV_SPEC_VAR_CV_DIM):
58488 				VM_TRACE(ZEND_ASSIGN_DIV_SPEC_VAR_CV_DIM)
58489 				ZEND_ASSIGN_DIV_SPEC_VAR_CV_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58490 				HYBRID_BREAK();
58491 			HYBRID_CASE(ZEND_ASSIGN_DIV_SPEC_VAR_CV_OBJ):
58492 				VM_TRACE(ZEND_ASSIGN_DIV_SPEC_VAR_CV_OBJ)
58493 				ZEND_ASSIGN_DIV_SPEC_VAR_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58494 				HYBRID_BREAK();
58495 			HYBRID_CASE(ZEND_ASSIGN_MOD_SPEC_VAR_CV):
58496 				VM_TRACE(ZEND_ASSIGN_MOD_SPEC_VAR_CV)
58497 				ZEND_ASSIGN_MOD_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58498 				HYBRID_BREAK();
58499 			HYBRID_CASE(ZEND_ASSIGN_MOD_SPEC_VAR_CV_DIM):
58500 				VM_TRACE(ZEND_ASSIGN_MOD_SPEC_VAR_CV_DIM)
58501 				ZEND_ASSIGN_MOD_SPEC_VAR_CV_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58502 				HYBRID_BREAK();
58503 			HYBRID_CASE(ZEND_ASSIGN_MOD_SPEC_VAR_CV_OBJ):
58504 				VM_TRACE(ZEND_ASSIGN_MOD_SPEC_VAR_CV_OBJ)
58505 				ZEND_ASSIGN_MOD_SPEC_VAR_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58506 				HYBRID_BREAK();
58507 			HYBRID_CASE(ZEND_ASSIGN_SL_SPEC_VAR_CV):
58508 				VM_TRACE(ZEND_ASSIGN_SL_SPEC_VAR_CV)
58509 				ZEND_ASSIGN_SL_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58510 				HYBRID_BREAK();
58511 			HYBRID_CASE(ZEND_ASSIGN_SL_SPEC_VAR_CV_DIM):
58512 				VM_TRACE(ZEND_ASSIGN_SL_SPEC_VAR_CV_DIM)
58513 				ZEND_ASSIGN_SL_SPEC_VAR_CV_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58514 				HYBRID_BREAK();
58515 			HYBRID_CASE(ZEND_ASSIGN_SL_SPEC_VAR_CV_OBJ):
58516 				VM_TRACE(ZEND_ASSIGN_SL_SPEC_VAR_CV_OBJ)
58517 				ZEND_ASSIGN_SL_SPEC_VAR_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58518 				HYBRID_BREAK();
58519 			HYBRID_CASE(ZEND_ASSIGN_SR_SPEC_VAR_CV):
58520 				VM_TRACE(ZEND_ASSIGN_SR_SPEC_VAR_CV)
58521 				ZEND_ASSIGN_SR_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58522 				HYBRID_BREAK();
58523 			HYBRID_CASE(ZEND_ASSIGN_SR_SPEC_VAR_CV_DIM):
58524 				VM_TRACE(ZEND_ASSIGN_SR_SPEC_VAR_CV_DIM)
58525 				ZEND_ASSIGN_SR_SPEC_VAR_CV_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58526 				HYBRID_BREAK();
58527 			HYBRID_CASE(ZEND_ASSIGN_SR_SPEC_VAR_CV_OBJ):
58528 				VM_TRACE(ZEND_ASSIGN_SR_SPEC_VAR_CV_OBJ)
58529 				ZEND_ASSIGN_SR_SPEC_VAR_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58530 				HYBRID_BREAK();
58531 			HYBRID_CASE(ZEND_ASSIGN_CONCAT_SPEC_VAR_CV):
58532 				VM_TRACE(ZEND_ASSIGN_CONCAT_SPEC_VAR_CV)
58533 				ZEND_ASSIGN_CONCAT_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58534 				HYBRID_BREAK();
58535 			HYBRID_CASE(ZEND_ASSIGN_CONCAT_SPEC_VAR_CV_DIM):
58536 				VM_TRACE(ZEND_ASSIGN_CONCAT_SPEC_VAR_CV_DIM)
58537 				ZEND_ASSIGN_CONCAT_SPEC_VAR_CV_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58538 				HYBRID_BREAK();
58539 			HYBRID_CASE(ZEND_ASSIGN_CONCAT_SPEC_VAR_CV_OBJ):
58540 				VM_TRACE(ZEND_ASSIGN_CONCAT_SPEC_VAR_CV_OBJ)
58541 				ZEND_ASSIGN_CONCAT_SPEC_VAR_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58542 				HYBRID_BREAK();
58543 			HYBRID_CASE(ZEND_ASSIGN_BW_OR_SPEC_VAR_CV):
58544 				VM_TRACE(ZEND_ASSIGN_BW_OR_SPEC_VAR_CV)
58545 				ZEND_ASSIGN_BW_OR_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58546 				HYBRID_BREAK();
58547 			HYBRID_CASE(ZEND_ASSIGN_BW_OR_SPEC_VAR_CV_DIM):
58548 				VM_TRACE(ZEND_ASSIGN_BW_OR_SPEC_VAR_CV_DIM)
58549 				ZEND_ASSIGN_BW_OR_SPEC_VAR_CV_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58550 				HYBRID_BREAK();
58551 			HYBRID_CASE(ZEND_ASSIGN_BW_OR_SPEC_VAR_CV_OBJ):
58552 				VM_TRACE(ZEND_ASSIGN_BW_OR_SPEC_VAR_CV_OBJ)
58553 				ZEND_ASSIGN_BW_OR_SPEC_VAR_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58554 				HYBRID_BREAK();
58555 			HYBRID_CASE(ZEND_ASSIGN_BW_AND_SPEC_VAR_CV):
58556 				VM_TRACE(ZEND_ASSIGN_BW_AND_SPEC_VAR_CV)
58557 				ZEND_ASSIGN_BW_AND_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58558 				HYBRID_BREAK();
58559 			HYBRID_CASE(ZEND_ASSIGN_BW_AND_SPEC_VAR_CV_DIM):
58560 				VM_TRACE(ZEND_ASSIGN_BW_AND_SPEC_VAR_CV_DIM)
58561 				ZEND_ASSIGN_BW_AND_SPEC_VAR_CV_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58562 				HYBRID_BREAK();
58563 			HYBRID_CASE(ZEND_ASSIGN_BW_AND_SPEC_VAR_CV_OBJ):
58564 				VM_TRACE(ZEND_ASSIGN_BW_AND_SPEC_VAR_CV_OBJ)
58565 				ZEND_ASSIGN_BW_AND_SPEC_VAR_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58566 				HYBRID_BREAK();
58567 			HYBRID_CASE(ZEND_ASSIGN_BW_XOR_SPEC_VAR_CV):
58568 				VM_TRACE(ZEND_ASSIGN_BW_XOR_SPEC_VAR_CV)
58569 				ZEND_ASSIGN_BW_XOR_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58570 				HYBRID_BREAK();
58571 			HYBRID_CASE(ZEND_ASSIGN_BW_XOR_SPEC_VAR_CV_DIM):
58572 				VM_TRACE(ZEND_ASSIGN_BW_XOR_SPEC_VAR_CV_DIM)
58573 				ZEND_ASSIGN_BW_XOR_SPEC_VAR_CV_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58574 				HYBRID_BREAK();
58575 			HYBRID_CASE(ZEND_ASSIGN_BW_XOR_SPEC_VAR_CV_OBJ):
58576 				VM_TRACE(ZEND_ASSIGN_BW_XOR_SPEC_VAR_CV_OBJ)
58577 				ZEND_ASSIGN_BW_XOR_SPEC_VAR_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58578 				HYBRID_BREAK();
58579 			HYBRID_CASE(ZEND_ASSIGN_POW_SPEC_VAR_CV):
58580 				VM_TRACE(ZEND_ASSIGN_POW_SPEC_VAR_CV)
58581 				ZEND_ASSIGN_POW_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58582 				HYBRID_BREAK();
58583 			HYBRID_CASE(ZEND_ASSIGN_POW_SPEC_VAR_CV_DIM):
58584 				VM_TRACE(ZEND_ASSIGN_POW_SPEC_VAR_CV_DIM)
58585 				ZEND_ASSIGN_POW_SPEC_VAR_CV_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58586 				HYBRID_BREAK();
58587 			HYBRID_CASE(ZEND_ASSIGN_POW_SPEC_VAR_CV_OBJ):
58588 				VM_TRACE(ZEND_ASSIGN_POW_SPEC_VAR_CV_OBJ)
58589 				ZEND_ASSIGN_POW_SPEC_VAR_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58590 				HYBRID_BREAK();
58591 			HYBRID_CASE(ZEND_PRE_INC_OBJ_SPEC_VAR_CV):
58592 				VM_TRACE(ZEND_PRE_INC_OBJ_SPEC_VAR_CV)
58593 				ZEND_PRE_INC_OBJ_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58594 				HYBRID_BREAK();
58595 			HYBRID_CASE(ZEND_PRE_DEC_OBJ_SPEC_VAR_CV):
58596 				VM_TRACE(ZEND_PRE_DEC_OBJ_SPEC_VAR_CV)
58597 				ZEND_PRE_DEC_OBJ_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58598 				HYBRID_BREAK();
58599 			HYBRID_CASE(ZEND_POST_INC_OBJ_SPEC_VAR_CV):
58600 				VM_TRACE(ZEND_POST_INC_OBJ_SPEC_VAR_CV)
58601 				ZEND_POST_INC_OBJ_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58602 				HYBRID_BREAK();
58603 			HYBRID_CASE(ZEND_POST_DEC_OBJ_SPEC_VAR_CV):
58604 				VM_TRACE(ZEND_POST_DEC_OBJ_SPEC_VAR_CV)
58605 				ZEND_POST_DEC_OBJ_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58606 				HYBRID_BREAK();
58607 			HYBRID_CASE(ZEND_FETCH_DIM_W_SPEC_VAR_CV):
58608 				VM_TRACE(ZEND_FETCH_DIM_W_SPEC_VAR_CV)
58609 				ZEND_FETCH_DIM_W_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58610 				HYBRID_BREAK();
58611 			HYBRID_CASE(ZEND_FETCH_DIM_RW_SPEC_VAR_CV):
58612 				VM_TRACE(ZEND_FETCH_DIM_RW_SPEC_VAR_CV)
58613 				ZEND_FETCH_DIM_RW_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58614 				HYBRID_BREAK();
58615 			HYBRID_CASE(ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_CV):
58616 				VM_TRACE(ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_CV)
58617 				ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58618 				HYBRID_BREAK();
58619 			HYBRID_CASE(ZEND_FETCH_DIM_UNSET_SPEC_VAR_CV):
58620 				VM_TRACE(ZEND_FETCH_DIM_UNSET_SPEC_VAR_CV)
58621 				ZEND_FETCH_DIM_UNSET_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58622 				HYBRID_BREAK();
58623 			HYBRID_CASE(ZEND_FETCH_OBJ_W_SPEC_VAR_CV):
58624 				VM_TRACE(ZEND_FETCH_OBJ_W_SPEC_VAR_CV)
58625 				ZEND_FETCH_OBJ_W_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58626 				HYBRID_BREAK();
58627 			HYBRID_CASE(ZEND_FETCH_OBJ_RW_SPEC_VAR_CV):
58628 				VM_TRACE(ZEND_FETCH_OBJ_RW_SPEC_VAR_CV)
58629 				ZEND_FETCH_OBJ_RW_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58630 				HYBRID_BREAK();
58631 			HYBRID_CASE(ZEND_FETCH_OBJ_FUNC_ARG_SPEC_VAR_CV):
58632 				VM_TRACE(ZEND_FETCH_OBJ_FUNC_ARG_SPEC_VAR_CV)
58633 				ZEND_FETCH_OBJ_FUNC_ARG_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58634 				HYBRID_BREAK();
58635 			HYBRID_CASE(ZEND_FETCH_OBJ_UNSET_SPEC_VAR_CV):
58636 				VM_TRACE(ZEND_FETCH_OBJ_UNSET_SPEC_VAR_CV)
58637 				ZEND_FETCH_OBJ_UNSET_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58638 				HYBRID_BREAK();
58639 			HYBRID_CASE(ZEND_FETCH_LIST_W_SPEC_VAR_CV):
58640 				VM_TRACE(ZEND_FETCH_LIST_W_SPEC_VAR_CV)
58641 				ZEND_FETCH_LIST_W_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58642 				HYBRID_BREAK();
58643 			HYBRID_CASE(ZEND_ASSIGN_OBJ_SPEC_VAR_CV_OP_DATA_CONST):
58644 				VM_TRACE(ZEND_ASSIGN_OBJ_SPEC_VAR_CV_OP_DATA_CONST)
58645 				ZEND_ASSIGN_OBJ_SPEC_VAR_CV_OP_DATA_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58646 				HYBRID_BREAK();
58647 			HYBRID_CASE(ZEND_ASSIGN_OBJ_SPEC_VAR_CV_OP_DATA_TMP):
58648 				VM_TRACE(ZEND_ASSIGN_OBJ_SPEC_VAR_CV_OP_DATA_TMP)
58649 				ZEND_ASSIGN_OBJ_SPEC_VAR_CV_OP_DATA_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58650 				HYBRID_BREAK();
58651 			HYBRID_CASE(ZEND_ASSIGN_OBJ_SPEC_VAR_CV_OP_DATA_VAR):
58652 				VM_TRACE(ZEND_ASSIGN_OBJ_SPEC_VAR_CV_OP_DATA_VAR)
58653 				ZEND_ASSIGN_OBJ_SPEC_VAR_CV_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58654 				HYBRID_BREAK();
58655 			HYBRID_CASE(ZEND_ASSIGN_OBJ_SPEC_VAR_CV_OP_DATA_CV):
58656 				VM_TRACE(ZEND_ASSIGN_OBJ_SPEC_VAR_CV_OP_DATA_CV)
58657 				ZEND_ASSIGN_OBJ_SPEC_VAR_CV_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58658 				HYBRID_BREAK();
58659 			HYBRID_CASE(ZEND_ASSIGN_DIM_SPEC_VAR_CV_OP_DATA_CONST):
58660 				VM_TRACE(ZEND_ASSIGN_DIM_SPEC_VAR_CV_OP_DATA_CONST)
58661 				ZEND_ASSIGN_DIM_SPEC_VAR_CV_OP_DATA_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58662 				HYBRID_BREAK();
58663 			HYBRID_CASE(ZEND_ASSIGN_DIM_SPEC_VAR_CV_OP_DATA_TMP):
58664 				VM_TRACE(ZEND_ASSIGN_DIM_SPEC_VAR_CV_OP_DATA_TMP)
58665 				ZEND_ASSIGN_DIM_SPEC_VAR_CV_OP_DATA_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58666 				HYBRID_BREAK();
58667 			HYBRID_CASE(ZEND_ASSIGN_DIM_SPEC_VAR_CV_OP_DATA_VAR):
58668 				VM_TRACE(ZEND_ASSIGN_DIM_SPEC_VAR_CV_OP_DATA_VAR)
58669 				ZEND_ASSIGN_DIM_SPEC_VAR_CV_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58670 				HYBRID_BREAK();
58671 			HYBRID_CASE(ZEND_ASSIGN_DIM_SPEC_VAR_CV_OP_DATA_CV):
58672 				VM_TRACE(ZEND_ASSIGN_DIM_SPEC_VAR_CV_OP_DATA_CV)
58673 				ZEND_ASSIGN_DIM_SPEC_VAR_CV_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58674 				HYBRID_BREAK();
58675 			HYBRID_CASE(ZEND_ASSIGN_SPEC_VAR_CV_RETVAL_UNUSED):
58676 				VM_TRACE(ZEND_ASSIGN_SPEC_VAR_CV_RETVAL_UNUSED)
58677 				ZEND_ASSIGN_SPEC_VAR_CV_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58678 				HYBRID_BREAK();
58679 			HYBRID_CASE(ZEND_ASSIGN_SPEC_VAR_CV_RETVAL_USED):
58680 				VM_TRACE(ZEND_ASSIGN_SPEC_VAR_CV_RETVAL_USED)
58681 				ZEND_ASSIGN_SPEC_VAR_CV_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58682 				HYBRID_BREAK();
58683 			HYBRID_CASE(ZEND_ASSIGN_REF_SPEC_VAR_CV):
58684 				VM_TRACE(ZEND_ASSIGN_REF_SPEC_VAR_CV)
58685 				ZEND_ASSIGN_REF_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58686 				HYBRID_BREAK();
58687 			HYBRID_CASE(ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_CV):
58688 				VM_TRACE(ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_CV)
58689 				ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58690 				HYBRID_BREAK();
58691 			HYBRID_CASE(ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_CV):
58692 				VM_TRACE(ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_CV)
58693 				ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58694 				HYBRID_BREAK();
58695 			HYBRID_CASE(ZEND_INIT_ARRAY_SPEC_VAR_CV):
58696 				VM_TRACE(ZEND_INIT_ARRAY_SPEC_VAR_CV)
58697 				ZEND_INIT_ARRAY_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58698 				HYBRID_BREAK();
58699 			HYBRID_CASE(ZEND_UNSET_DIM_SPEC_VAR_CV):
58700 				VM_TRACE(ZEND_UNSET_DIM_SPEC_VAR_CV)
58701 				ZEND_UNSET_DIM_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58702 				HYBRID_BREAK();
58703 			HYBRID_CASE(ZEND_UNSET_OBJ_SPEC_VAR_CV):
58704 				VM_TRACE(ZEND_UNSET_OBJ_SPEC_VAR_CV)
58705 				ZEND_UNSET_OBJ_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58706 				HYBRID_BREAK();
58707 			HYBRID_CASE(ZEND_YIELD_SPEC_VAR_CV):
58708 				VM_TRACE(ZEND_YIELD_SPEC_VAR_CV)
58709 				ZEND_YIELD_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58710 				HYBRID_BREAK();
58711 			HYBRID_CASE(ZEND_FE_FETCH_R_SIMPLE_SPEC_VAR_CV_RETVAL_UNUSED):
58712 				VM_TRACE(ZEND_FE_FETCH_R_SIMPLE_SPEC_VAR_CV_RETVAL_UNUSED)
58713 				ZEND_FE_FETCH_R_SIMPLE_SPEC_VAR_CV_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58714 				HYBRID_BREAK();
58715 			HYBRID_CASE(ZEND_FE_FETCH_R_SIMPLE_SPEC_VAR_CV_RETVAL_USED):
58716 				VM_TRACE(ZEND_FE_FETCH_R_SIMPLE_SPEC_VAR_CV_RETVAL_USED)
58717 				ZEND_FE_FETCH_R_SIMPLE_SPEC_VAR_CV_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58718 				HYBRID_BREAK();
58719 			HYBRID_CASE(ZEND_CHECK_FUNC_ARG_SPEC_UNUSED):
58720 				VM_TRACE(ZEND_CHECK_FUNC_ARG_SPEC_UNUSED)
58721 				ZEND_CHECK_FUNC_ARG_SPEC_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58722 				HYBRID_BREAK();
58723 			HYBRID_CASE(ZEND_CHECK_FUNC_ARG_SPEC_UNUSED_QUICK):
58724 				VM_TRACE(ZEND_CHECK_FUNC_ARG_SPEC_UNUSED_QUICK)
58725 				ZEND_CHECK_FUNC_ARG_SPEC_UNUSED_QUICK_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58726 				HYBRID_BREAK();
58727 			HYBRID_CASE(ZEND_CLONE_SPEC_UNUSED):
58728 				VM_TRACE(ZEND_CLONE_SPEC_UNUSED)
58729 				ZEND_CLONE_SPEC_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58730 				HYBRID_BREAK();
58731 			HYBRID_CASE(ZEND_EXIT_SPEC_UNUSED):
58732 				VM_TRACE(ZEND_EXIT_SPEC_UNUSED)
58733 				ZEND_EXIT_SPEC_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58734 				HYBRID_BREAK();
58735 			HYBRID_CASE(ZEND_FETCH_CLASS_NAME_SPEC_UNUSED):
58736 				VM_TRACE(ZEND_FETCH_CLASS_NAME_SPEC_UNUSED)
58737 				ZEND_FETCH_CLASS_NAME_SPEC_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58738 				HYBRID_BREAK();
58739 			HYBRID_CASE(ZEND_ASSIGN_ADD_SPEC_UNUSED_CONST_OBJ):
58740 				VM_TRACE(ZEND_ASSIGN_ADD_SPEC_UNUSED_CONST_OBJ)
58741 				ZEND_ASSIGN_ADD_SPEC_UNUSED_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58742 				HYBRID_BREAK();
58743 			HYBRID_CASE(ZEND_ASSIGN_SUB_SPEC_UNUSED_CONST_OBJ):
58744 				VM_TRACE(ZEND_ASSIGN_SUB_SPEC_UNUSED_CONST_OBJ)
58745 				ZEND_ASSIGN_SUB_SPEC_UNUSED_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58746 				HYBRID_BREAK();
58747 			HYBRID_CASE(ZEND_ASSIGN_MUL_SPEC_UNUSED_CONST_OBJ):
58748 				VM_TRACE(ZEND_ASSIGN_MUL_SPEC_UNUSED_CONST_OBJ)
58749 				ZEND_ASSIGN_MUL_SPEC_UNUSED_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58750 				HYBRID_BREAK();
58751 			HYBRID_CASE(ZEND_ASSIGN_DIV_SPEC_UNUSED_CONST_OBJ):
58752 				VM_TRACE(ZEND_ASSIGN_DIV_SPEC_UNUSED_CONST_OBJ)
58753 				ZEND_ASSIGN_DIV_SPEC_UNUSED_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58754 				HYBRID_BREAK();
58755 			HYBRID_CASE(ZEND_ASSIGN_MOD_SPEC_UNUSED_CONST_OBJ):
58756 				VM_TRACE(ZEND_ASSIGN_MOD_SPEC_UNUSED_CONST_OBJ)
58757 				ZEND_ASSIGN_MOD_SPEC_UNUSED_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58758 				HYBRID_BREAK();
58759 			HYBRID_CASE(ZEND_ASSIGN_SL_SPEC_UNUSED_CONST_OBJ):
58760 				VM_TRACE(ZEND_ASSIGN_SL_SPEC_UNUSED_CONST_OBJ)
58761 				ZEND_ASSIGN_SL_SPEC_UNUSED_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58762 				HYBRID_BREAK();
58763 			HYBRID_CASE(ZEND_ASSIGN_SR_SPEC_UNUSED_CONST_OBJ):
58764 				VM_TRACE(ZEND_ASSIGN_SR_SPEC_UNUSED_CONST_OBJ)
58765 				ZEND_ASSIGN_SR_SPEC_UNUSED_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58766 				HYBRID_BREAK();
58767 			HYBRID_CASE(ZEND_ASSIGN_CONCAT_SPEC_UNUSED_CONST_OBJ):
58768 				VM_TRACE(ZEND_ASSIGN_CONCAT_SPEC_UNUSED_CONST_OBJ)
58769 				ZEND_ASSIGN_CONCAT_SPEC_UNUSED_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58770 				HYBRID_BREAK();
58771 			HYBRID_CASE(ZEND_ASSIGN_BW_OR_SPEC_UNUSED_CONST_OBJ):
58772 				VM_TRACE(ZEND_ASSIGN_BW_OR_SPEC_UNUSED_CONST_OBJ)
58773 				ZEND_ASSIGN_BW_OR_SPEC_UNUSED_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58774 				HYBRID_BREAK();
58775 			HYBRID_CASE(ZEND_ASSIGN_BW_AND_SPEC_UNUSED_CONST_OBJ):
58776 				VM_TRACE(ZEND_ASSIGN_BW_AND_SPEC_UNUSED_CONST_OBJ)
58777 				ZEND_ASSIGN_BW_AND_SPEC_UNUSED_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58778 				HYBRID_BREAK();
58779 			HYBRID_CASE(ZEND_ASSIGN_BW_XOR_SPEC_UNUSED_CONST_OBJ):
58780 				VM_TRACE(ZEND_ASSIGN_BW_XOR_SPEC_UNUSED_CONST_OBJ)
58781 				ZEND_ASSIGN_BW_XOR_SPEC_UNUSED_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58782 				HYBRID_BREAK();
58783 			HYBRID_CASE(ZEND_ASSIGN_POW_SPEC_UNUSED_CONST_OBJ):
58784 				VM_TRACE(ZEND_ASSIGN_POW_SPEC_UNUSED_CONST_OBJ)
58785 				ZEND_ASSIGN_POW_SPEC_UNUSED_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58786 				HYBRID_BREAK();
58787 			HYBRID_CASE(ZEND_PRE_INC_OBJ_SPEC_UNUSED_CONST):
58788 				VM_TRACE(ZEND_PRE_INC_OBJ_SPEC_UNUSED_CONST)
58789 				ZEND_PRE_INC_OBJ_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58790 				HYBRID_BREAK();
58791 			HYBRID_CASE(ZEND_PRE_DEC_OBJ_SPEC_UNUSED_CONST):
58792 				VM_TRACE(ZEND_PRE_DEC_OBJ_SPEC_UNUSED_CONST)
58793 				ZEND_PRE_DEC_OBJ_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58794 				HYBRID_BREAK();
58795 			HYBRID_CASE(ZEND_POST_INC_OBJ_SPEC_UNUSED_CONST):
58796 				VM_TRACE(ZEND_POST_INC_OBJ_SPEC_UNUSED_CONST)
58797 				ZEND_POST_INC_OBJ_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58798 				HYBRID_BREAK();
58799 			HYBRID_CASE(ZEND_POST_DEC_OBJ_SPEC_UNUSED_CONST):
58800 				VM_TRACE(ZEND_POST_DEC_OBJ_SPEC_UNUSED_CONST)
58801 				ZEND_POST_DEC_OBJ_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58802 				HYBRID_BREAK();
58803 			HYBRID_CASE(ZEND_FETCH_OBJ_R_SPEC_UNUSED_CONST):
58804 				VM_TRACE(ZEND_FETCH_OBJ_R_SPEC_UNUSED_CONST)
58805 				ZEND_FETCH_OBJ_R_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58806 				HYBRID_BREAK();
58807 			HYBRID_CASE(ZEND_FETCH_OBJ_W_SPEC_UNUSED_CONST):
58808 				VM_TRACE(ZEND_FETCH_OBJ_W_SPEC_UNUSED_CONST)
58809 				ZEND_FETCH_OBJ_W_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58810 				HYBRID_BREAK();
58811 			HYBRID_CASE(ZEND_FETCH_OBJ_RW_SPEC_UNUSED_CONST):
58812 				VM_TRACE(ZEND_FETCH_OBJ_RW_SPEC_UNUSED_CONST)
58813 				ZEND_FETCH_OBJ_RW_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58814 				HYBRID_BREAK();
58815 			HYBRID_CASE(ZEND_FETCH_OBJ_IS_SPEC_UNUSED_CONST):
58816 				VM_TRACE(ZEND_FETCH_OBJ_IS_SPEC_UNUSED_CONST)
58817 				ZEND_FETCH_OBJ_IS_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58818 				HYBRID_BREAK();
58819 			HYBRID_CASE(ZEND_FETCH_OBJ_FUNC_ARG_SPEC_UNUSED_CONST):
58820 				VM_TRACE(ZEND_FETCH_OBJ_FUNC_ARG_SPEC_UNUSED_CONST)
58821 				ZEND_FETCH_OBJ_FUNC_ARG_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58822 				HYBRID_BREAK();
58823 			HYBRID_CASE(ZEND_FETCH_OBJ_UNSET_SPEC_UNUSED_CONST):
58824 				VM_TRACE(ZEND_FETCH_OBJ_UNSET_SPEC_UNUSED_CONST)
58825 				ZEND_FETCH_OBJ_UNSET_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58826 				HYBRID_BREAK();
58827 			HYBRID_CASE(ZEND_ASSIGN_OBJ_SPEC_UNUSED_CONST_OP_DATA_CONST):
58828 				VM_TRACE(ZEND_ASSIGN_OBJ_SPEC_UNUSED_CONST_OP_DATA_CONST)
58829 				ZEND_ASSIGN_OBJ_SPEC_UNUSED_CONST_OP_DATA_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58830 				HYBRID_BREAK();
58831 			HYBRID_CASE(ZEND_ASSIGN_OBJ_SPEC_UNUSED_CONST_OP_DATA_TMP):
58832 				VM_TRACE(ZEND_ASSIGN_OBJ_SPEC_UNUSED_CONST_OP_DATA_TMP)
58833 				ZEND_ASSIGN_OBJ_SPEC_UNUSED_CONST_OP_DATA_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58834 				HYBRID_BREAK();
58835 			HYBRID_CASE(ZEND_ASSIGN_OBJ_SPEC_UNUSED_CONST_OP_DATA_VAR):
58836 				VM_TRACE(ZEND_ASSIGN_OBJ_SPEC_UNUSED_CONST_OP_DATA_VAR)
58837 				ZEND_ASSIGN_OBJ_SPEC_UNUSED_CONST_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58838 				HYBRID_BREAK();
58839 			HYBRID_CASE(ZEND_ASSIGN_OBJ_SPEC_UNUSED_CONST_OP_DATA_CV):
58840 				VM_TRACE(ZEND_ASSIGN_OBJ_SPEC_UNUSED_CONST_OP_DATA_CV)
58841 				ZEND_ASSIGN_OBJ_SPEC_UNUSED_CONST_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58842 				HYBRID_BREAK();
58843 			HYBRID_CASE(ZEND_ROPE_INIT_SPEC_UNUSED_CONST):
58844 				VM_TRACE(ZEND_ROPE_INIT_SPEC_UNUSED_CONST)
58845 				ZEND_ROPE_INIT_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58846 				HYBRID_BREAK();
58847 			HYBRID_CASE(ZEND_FETCH_CLASS_SPEC_UNUSED_CONST):
58848 				VM_TRACE(ZEND_FETCH_CLASS_SPEC_UNUSED_CONST)
58849 				ZEND_FETCH_CLASS_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58850 				HYBRID_BREAK();
58851 			HYBRID_CASE(ZEND_INIT_METHOD_CALL_SPEC_UNUSED_CONST):
58852 				VM_TRACE(ZEND_INIT_METHOD_CALL_SPEC_UNUSED_CONST)
58853 				ZEND_INIT_METHOD_CALL_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58854 				HYBRID_BREAK();
58855 			HYBRID_CASE(ZEND_INIT_STATIC_METHOD_CALL_SPEC_UNUSED_CONST):
58856 				VM_TRACE(ZEND_INIT_STATIC_METHOD_CALL_SPEC_UNUSED_CONST)
58857 				ZEND_INIT_STATIC_METHOD_CALL_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58858 				HYBRID_BREAK();
58859 			HYBRID_CASE(ZEND_FETCH_CONSTANT_SPEC_UNUSED_CONST):
58860 				VM_TRACE(ZEND_FETCH_CONSTANT_SPEC_UNUSED_CONST)
58861 				ZEND_FETCH_CONSTANT_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58862 				HYBRID_BREAK();
58863 			HYBRID_CASE(ZEND_FETCH_CLASS_CONSTANT_SPEC_UNUSED_CONST):
58864 				VM_TRACE(ZEND_FETCH_CLASS_CONSTANT_SPEC_UNUSED_CONST)
58865 				ZEND_FETCH_CLASS_CONSTANT_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58866 				HYBRID_BREAK();
58867 			HYBRID_CASE(ZEND_UNSET_OBJ_SPEC_UNUSED_CONST):
58868 				VM_TRACE(ZEND_UNSET_OBJ_SPEC_UNUSED_CONST)
58869 				ZEND_UNSET_OBJ_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58870 				HYBRID_BREAK();
58871 			HYBRID_CASE(ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_UNUSED_CONST):
58872 				VM_TRACE(ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_UNUSED_CONST)
58873 				ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58874 				HYBRID_BREAK();
58875 			HYBRID_CASE(ZEND_YIELD_SPEC_UNUSED_CONST):
58876 				VM_TRACE(ZEND_YIELD_SPEC_UNUSED_CONST)
58877 				ZEND_YIELD_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58878 				HYBRID_BREAK();
58879 			HYBRID_CASE(ZEND_ASSIGN_ADD_SPEC_UNUSED_TMPVAR_OBJ):
58880 				VM_TRACE(ZEND_ASSIGN_ADD_SPEC_UNUSED_TMPVAR_OBJ)
58881 				ZEND_ASSIGN_ADD_SPEC_UNUSED_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58882 				HYBRID_BREAK();
58883 			HYBRID_CASE(ZEND_ASSIGN_SUB_SPEC_UNUSED_TMPVAR_OBJ):
58884 				VM_TRACE(ZEND_ASSIGN_SUB_SPEC_UNUSED_TMPVAR_OBJ)
58885 				ZEND_ASSIGN_SUB_SPEC_UNUSED_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58886 				HYBRID_BREAK();
58887 			HYBRID_CASE(ZEND_ASSIGN_MUL_SPEC_UNUSED_TMPVAR_OBJ):
58888 				VM_TRACE(ZEND_ASSIGN_MUL_SPEC_UNUSED_TMPVAR_OBJ)
58889 				ZEND_ASSIGN_MUL_SPEC_UNUSED_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58890 				HYBRID_BREAK();
58891 			HYBRID_CASE(ZEND_ASSIGN_DIV_SPEC_UNUSED_TMPVAR_OBJ):
58892 				VM_TRACE(ZEND_ASSIGN_DIV_SPEC_UNUSED_TMPVAR_OBJ)
58893 				ZEND_ASSIGN_DIV_SPEC_UNUSED_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58894 				HYBRID_BREAK();
58895 			HYBRID_CASE(ZEND_ASSIGN_MOD_SPEC_UNUSED_TMPVAR_OBJ):
58896 				VM_TRACE(ZEND_ASSIGN_MOD_SPEC_UNUSED_TMPVAR_OBJ)
58897 				ZEND_ASSIGN_MOD_SPEC_UNUSED_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58898 				HYBRID_BREAK();
58899 			HYBRID_CASE(ZEND_ASSIGN_SL_SPEC_UNUSED_TMPVAR_OBJ):
58900 				VM_TRACE(ZEND_ASSIGN_SL_SPEC_UNUSED_TMPVAR_OBJ)
58901 				ZEND_ASSIGN_SL_SPEC_UNUSED_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58902 				HYBRID_BREAK();
58903 			HYBRID_CASE(ZEND_ASSIGN_SR_SPEC_UNUSED_TMPVAR_OBJ):
58904 				VM_TRACE(ZEND_ASSIGN_SR_SPEC_UNUSED_TMPVAR_OBJ)
58905 				ZEND_ASSIGN_SR_SPEC_UNUSED_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58906 				HYBRID_BREAK();
58907 			HYBRID_CASE(ZEND_ASSIGN_CONCAT_SPEC_UNUSED_TMPVAR_OBJ):
58908 				VM_TRACE(ZEND_ASSIGN_CONCAT_SPEC_UNUSED_TMPVAR_OBJ)
58909 				ZEND_ASSIGN_CONCAT_SPEC_UNUSED_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58910 				HYBRID_BREAK();
58911 			HYBRID_CASE(ZEND_ASSIGN_BW_OR_SPEC_UNUSED_TMPVAR_OBJ):
58912 				VM_TRACE(ZEND_ASSIGN_BW_OR_SPEC_UNUSED_TMPVAR_OBJ)
58913 				ZEND_ASSIGN_BW_OR_SPEC_UNUSED_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58914 				HYBRID_BREAK();
58915 			HYBRID_CASE(ZEND_ASSIGN_BW_AND_SPEC_UNUSED_TMPVAR_OBJ):
58916 				VM_TRACE(ZEND_ASSIGN_BW_AND_SPEC_UNUSED_TMPVAR_OBJ)
58917 				ZEND_ASSIGN_BW_AND_SPEC_UNUSED_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58918 				HYBRID_BREAK();
58919 			HYBRID_CASE(ZEND_ASSIGN_BW_XOR_SPEC_UNUSED_TMPVAR_OBJ):
58920 				VM_TRACE(ZEND_ASSIGN_BW_XOR_SPEC_UNUSED_TMPVAR_OBJ)
58921 				ZEND_ASSIGN_BW_XOR_SPEC_UNUSED_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58922 				HYBRID_BREAK();
58923 			HYBRID_CASE(ZEND_ASSIGN_POW_SPEC_UNUSED_TMPVAR_OBJ):
58924 				VM_TRACE(ZEND_ASSIGN_POW_SPEC_UNUSED_TMPVAR_OBJ)
58925 				ZEND_ASSIGN_POW_SPEC_UNUSED_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58926 				HYBRID_BREAK();
58927 			HYBRID_CASE(ZEND_PRE_INC_OBJ_SPEC_UNUSED_TMPVAR):
58928 				VM_TRACE(ZEND_PRE_INC_OBJ_SPEC_UNUSED_TMPVAR)
58929 				ZEND_PRE_INC_OBJ_SPEC_UNUSED_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58930 				HYBRID_BREAK();
58931 			HYBRID_CASE(ZEND_PRE_DEC_OBJ_SPEC_UNUSED_TMPVAR):
58932 				VM_TRACE(ZEND_PRE_DEC_OBJ_SPEC_UNUSED_TMPVAR)
58933 				ZEND_PRE_DEC_OBJ_SPEC_UNUSED_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58934 				HYBRID_BREAK();
58935 			HYBRID_CASE(ZEND_POST_INC_OBJ_SPEC_UNUSED_TMPVAR):
58936 				VM_TRACE(ZEND_POST_INC_OBJ_SPEC_UNUSED_TMPVAR)
58937 				ZEND_POST_INC_OBJ_SPEC_UNUSED_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58938 				HYBRID_BREAK();
58939 			HYBRID_CASE(ZEND_POST_DEC_OBJ_SPEC_UNUSED_TMPVAR):
58940 				VM_TRACE(ZEND_POST_DEC_OBJ_SPEC_UNUSED_TMPVAR)
58941 				ZEND_POST_DEC_OBJ_SPEC_UNUSED_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58942 				HYBRID_BREAK();
58943 			HYBRID_CASE(ZEND_FETCH_OBJ_R_SPEC_UNUSED_TMPVAR):
58944 				VM_TRACE(ZEND_FETCH_OBJ_R_SPEC_UNUSED_TMPVAR)
58945 				ZEND_FETCH_OBJ_R_SPEC_UNUSED_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58946 				HYBRID_BREAK();
58947 			HYBRID_CASE(ZEND_FETCH_OBJ_W_SPEC_UNUSED_TMPVAR):
58948 				VM_TRACE(ZEND_FETCH_OBJ_W_SPEC_UNUSED_TMPVAR)
58949 				ZEND_FETCH_OBJ_W_SPEC_UNUSED_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58950 				HYBRID_BREAK();
58951 			HYBRID_CASE(ZEND_FETCH_OBJ_RW_SPEC_UNUSED_TMPVAR):
58952 				VM_TRACE(ZEND_FETCH_OBJ_RW_SPEC_UNUSED_TMPVAR)
58953 				ZEND_FETCH_OBJ_RW_SPEC_UNUSED_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58954 				HYBRID_BREAK();
58955 			HYBRID_CASE(ZEND_FETCH_OBJ_IS_SPEC_UNUSED_TMPVAR):
58956 				VM_TRACE(ZEND_FETCH_OBJ_IS_SPEC_UNUSED_TMPVAR)
58957 				ZEND_FETCH_OBJ_IS_SPEC_UNUSED_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58958 				HYBRID_BREAK();
58959 			HYBRID_CASE(ZEND_FETCH_OBJ_FUNC_ARG_SPEC_UNUSED_TMPVAR):
58960 				VM_TRACE(ZEND_FETCH_OBJ_FUNC_ARG_SPEC_UNUSED_TMPVAR)
58961 				ZEND_FETCH_OBJ_FUNC_ARG_SPEC_UNUSED_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58962 				HYBRID_BREAK();
58963 			HYBRID_CASE(ZEND_FETCH_OBJ_UNSET_SPEC_UNUSED_TMPVAR):
58964 				VM_TRACE(ZEND_FETCH_OBJ_UNSET_SPEC_UNUSED_TMPVAR)
58965 				ZEND_FETCH_OBJ_UNSET_SPEC_UNUSED_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58966 				HYBRID_BREAK();
58967 			HYBRID_CASE(ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMPVAR_OP_DATA_CONST):
58968 				VM_TRACE(ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMPVAR_OP_DATA_CONST)
58969 				ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMPVAR_OP_DATA_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58970 				HYBRID_BREAK();
58971 			HYBRID_CASE(ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMPVAR_OP_DATA_TMP):
58972 				VM_TRACE(ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMPVAR_OP_DATA_TMP)
58973 				ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMPVAR_OP_DATA_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58974 				HYBRID_BREAK();
58975 			HYBRID_CASE(ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMPVAR_OP_DATA_VAR):
58976 				VM_TRACE(ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMPVAR_OP_DATA_VAR)
58977 				ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMPVAR_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58978 				HYBRID_BREAK();
58979 			HYBRID_CASE(ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMPVAR_OP_DATA_CV):
58980 				VM_TRACE(ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMPVAR_OP_DATA_CV)
58981 				ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMPVAR_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58982 				HYBRID_BREAK();
58983 			HYBRID_CASE(ZEND_ROPE_INIT_SPEC_UNUSED_TMPVAR):
58984 				VM_TRACE(ZEND_ROPE_INIT_SPEC_UNUSED_TMPVAR)
58985 				ZEND_ROPE_INIT_SPEC_UNUSED_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58986 				HYBRID_BREAK();
58987 			HYBRID_CASE(ZEND_FETCH_CLASS_SPEC_UNUSED_TMPVAR):
58988 				VM_TRACE(ZEND_FETCH_CLASS_SPEC_UNUSED_TMPVAR)
58989 				ZEND_FETCH_CLASS_SPEC_UNUSED_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58990 				HYBRID_BREAK();
58991 			HYBRID_CASE(ZEND_INIT_METHOD_CALL_SPEC_UNUSED_TMPVAR):
58992 				VM_TRACE(ZEND_INIT_METHOD_CALL_SPEC_UNUSED_TMPVAR)
58993 				ZEND_INIT_METHOD_CALL_SPEC_UNUSED_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58994 				HYBRID_BREAK();
58995 			HYBRID_CASE(ZEND_INIT_STATIC_METHOD_CALL_SPEC_UNUSED_TMPVAR):
58996 				VM_TRACE(ZEND_INIT_STATIC_METHOD_CALL_SPEC_UNUSED_TMPVAR)
58997 				ZEND_INIT_STATIC_METHOD_CALL_SPEC_UNUSED_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
58998 				HYBRID_BREAK();
58999 			HYBRID_CASE(ZEND_UNSET_OBJ_SPEC_UNUSED_TMPVAR):
59000 				VM_TRACE(ZEND_UNSET_OBJ_SPEC_UNUSED_TMPVAR)
59001 				ZEND_UNSET_OBJ_SPEC_UNUSED_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59002 				HYBRID_BREAK();
59003 			HYBRID_CASE(ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_UNUSED_TMPVAR):
59004 				VM_TRACE(ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_UNUSED_TMPVAR)
59005 				ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_UNUSED_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59006 				HYBRID_BREAK();
59007 			HYBRID_CASE(ZEND_YIELD_SPEC_UNUSED_TMP):
59008 				VM_TRACE(ZEND_YIELD_SPEC_UNUSED_TMP)
59009 				ZEND_YIELD_SPEC_UNUSED_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59010 				HYBRID_BREAK();
59011 			HYBRID_CASE(ZEND_YIELD_SPEC_UNUSED_VAR):
59012 				VM_TRACE(ZEND_YIELD_SPEC_UNUSED_VAR)
59013 				ZEND_YIELD_SPEC_UNUSED_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59014 				HYBRID_BREAK();
59015 			HYBRID_CASE(ZEND_FETCH_CLASS_SPEC_UNUSED_UNUSED):
59016 				VM_TRACE(ZEND_FETCH_CLASS_SPEC_UNUSED_UNUSED)
59017 				ZEND_FETCH_CLASS_SPEC_UNUSED_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59018 				HYBRID_BREAK();
59019 			HYBRID_CASE(ZEND_INIT_STATIC_METHOD_CALL_SPEC_UNUSED_UNUSED):
59020 				VM_TRACE(ZEND_INIT_STATIC_METHOD_CALL_SPEC_UNUSED_UNUSED)
59021 				ZEND_INIT_STATIC_METHOD_CALL_SPEC_UNUSED_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59022 				HYBRID_BREAK();
59023 			HYBRID_CASE(ZEND_VERIFY_RETURN_TYPE_SPEC_UNUSED_UNUSED):
59024 				VM_TRACE(ZEND_VERIFY_RETURN_TYPE_SPEC_UNUSED_UNUSED)
59025 				ZEND_VERIFY_RETURN_TYPE_SPEC_UNUSED_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59026 				HYBRID_BREAK();
59027 			HYBRID_CASE(ZEND_NEW_SPEC_UNUSED_UNUSED):
59028 				VM_TRACE(ZEND_NEW_SPEC_UNUSED_UNUSED)
59029 				ZEND_NEW_SPEC_UNUSED_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59030 				HYBRID_BREAK();
59031 			HYBRID_CASE(ZEND_YIELD_SPEC_UNUSED_UNUSED):
59032 				VM_TRACE(ZEND_YIELD_SPEC_UNUSED_UNUSED)
59033 				ZEND_YIELD_SPEC_UNUSED_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59034 				HYBRID_BREAK();
59035 			HYBRID_CASE(ZEND_FETCH_THIS_SPEC_UNUSED_UNUSED):
59036 				VM_TRACE(ZEND_FETCH_THIS_SPEC_UNUSED_UNUSED)
59037 				ZEND_FETCH_THIS_SPEC_UNUSED_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59038 				HYBRID_BREAK();
59039 			HYBRID_CASE(ZEND_ISSET_ISEMPTY_THIS_SPEC_UNUSED_UNUSED):
59040 				VM_TRACE(ZEND_ISSET_ISEMPTY_THIS_SPEC_UNUSED_UNUSED)
59041 				ZEND_ISSET_ISEMPTY_THIS_SPEC_UNUSED_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59042 				HYBRID_BREAK();
59043 			HYBRID_CASE(ZEND_GET_CLASS_SPEC_UNUSED_UNUSED):
59044 				VM_TRACE(ZEND_GET_CLASS_SPEC_UNUSED_UNUSED)
59045 				ZEND_GET_CLASS_SPEC_UNUSED_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59046 				HYBRID_BREAK();
59047 			HYBRID_CASE(ZEND_GET_CALLED_CLASS_SPEC_UNUSED_UNUSED):
59048 				VM_TRACE(ZEND_GET_CALLED_CLASS_SPEC_UNUSED_UNUSED)
59049 				ZEND_GET_CALLED_CLASS_SPEC_UNUSED_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59050 				HYBRID_BREAK();
59051 			HYBRID_CASE(ZEND_FUNC_NUM_ARGS_SPEC_UNUSED_UNUSED):
59052 				VM_TRACE(ZEND_FUNC_NUM_ARGS_SPEC_UNUSED_UNUSED)
59053 				ZEND_FUNC_NUM_ARGS_SPEC_UNUSED_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59054 				HYBRID_BREAK();
59055 			HYBRID_CASE(ZEND_FUNC_GET_ARGS_SPEC_UNUSED_UNUSED):
59056 				VM_TRACE(ZEND_FUNC_GET_ARGS_SPEC_UNUSED_UNUSED)
59057 				ZEND_FUNC_GET_ARGS_SPEC_UNUSED_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59058 				HYBRID_BREAK();
59059 			HYBRID_CASE(ZEND_ASSIGN_ADD_SPEC_UNUSED_CV_OBJ):
59060 				VM_TRACE(ZEND_ASSIGN_ADD_SPEC_UNUSED_CV_OBJ)
59061 				ZEND_ASSIGN_ADD_SPEC_UNUSED_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59062 				HYBRID_BREAK();
59063 			HYBRID_CASE(ZEND_ASSIGN_SUB_SPEC_UNUSED_CV_OBJ):
59064 				VM_TRACE(ZEND_ASSIGN_SUB_SPEC_UNUSED_CV_OBJ)
59065 				ZEND_ASSIGN_SUB_SPEC_UNUSED_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59066 				HYBRID_BREAK();
59067 			HYBRID_CASE(ZEND_ASSIGN_MUL_SPEC_UNUSED_CV_OBJ):
59068 				VM_TRACE(ZEND_ASSIGN_MUL_SPEC_UNUSED_CV_OBJ)
59069 				ZEND_ASSIGN_MUL_SPEC_UNUSED_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59070 				HYBRID_BREAK();
59071 			HYBRID_CASE(ZEND_ASSIGN_DIV_SPEC_UNUSED_CV_OBJ):
59072 				VM_TRACE(ZEND_ASSIGN_DIV_SPEC_UNUSED_CV_OBJ)
59073 				ZEND_ASSIGN_DIV_SPEC_UNUSED_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59074 				HYBRID_BREAK();
59075 			HYBRID_CASE(ZEND_ASSIGN_MOD_SPEC_UNUSED_CV_OBJ):
59076 				VM_TRACE(ZEND_ASSIGN_MOD_SPEC_UNUSED_CV_OBJ)
59077 				ZEND_ASSIGN_MOD_SPEC_UNUSED_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59078 				HYBRID_BREAK();
59079 			HYBRID_CASE(ZEND_ASSIGN_SL_SPEC_UNUSED_CV_OBJ):
59080 				VM_TRACE(ZEND_ASSIGN_SL_SPEC_UNUSED_CV_OBJ)
59081 				ZEND_ASSIGN_SL_SPEC_UNUSED_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59082 				HYBRID_BREAK();
59083 			HYBRID_CASE(ZEND_ASSIGN_SR_SPEC_UNUSED_CV_OBJ):
59084 				VM_TRACE(ZEND_ASSIGN_SR_SPEC_UNUSED_CV_OBJ)
59085 				ZEND_ASSIGN_SR_SPEC_UNUSED_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59086 				HYBRID_BREAK();
59087 			HYBRID_CASE(ZEND_ASSIGN_CONCAT_SPEC_UNUSED_CV_OBJ):
59088 				VM_TRACE(ZEND_ASSIGN_CONCAT_SPEC_UNUSED_CV_OBJ)
59089 				ZEND_ASSIGN_CONCAT_SPEC_UNUSED_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59090 				HYBRID_BREAK();
59091 			HYBRID_CASE(ZEND_ASSIGN_BW_OR_SPEC_UNUSED_CV_OBJ):
59092 				VM_TRACE(ZEND_ASSIGN_BW_OR_SPEC_UNUSED_CV_OBJ)
59093 				ZEND_ASSIGN_BW_OR_SPEC_UNUSED_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59094 				HYBRID_BREAK();
59095 			HYBRID_CASE(ZEND_ASSIGN_BW_AND_SPEC_UNUSED_CV_OBJ):
59096 				VM_TRACE(ZEND_ASSIGN_BW_AND_SPEC_UNUSED_CV_OBJ)
59097 				ZEND_ASSIGN_BW_AND_SPEC_UNUSED_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59098 				HYBRID_BREAK();
59099 			HYBRID_CASE(ZEND_ASSIGN_BW_XOR_SPEC_UNUSED_CV_OBJ):
59100 				VM_TRACE(ZEND_ASSIGN_BW_XOR_SPEC_UNUSED_CV_OBJ)
59101 				ZEND_ASSIGN_BW_XOR_SPEC_UNUSED_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59102 				HYBRID_BREAK();
59103 			HYBRID_CASE(ZEND_ASSIGN_POW_SPEC_UNUSED_CV_OBJ):
59104 				VM_TRACE(ZEND_ASSIGN_POW_SPEC_UNUSED_CV_OBJ)
59105 				ZEND_ASSIGN_POW_SPEC_UNUSED_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59106 				HYBRID_BREAK();
59107 			HYBRID_CASE(ZEND_PRE_INC_OBJ_SPEC_UNUSED_CV):
59108 				VM_TRACE(ZEND_PRE_INC_OBJ_SPEC_UNUSED_CV)
59109 				ZEND_PRE_INC_OBJ_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59110 				HYBRID_BREAK();
59111 			HYBRID_CASE(ZEND_PRE_DEC_OBJ_SPEC_UNUSED_CV):
59112 				VM_TRACE(ZEND_PRE_DEC_OBJ_SPEC_UNUSED_CV)
59113 				ZEND_PRE_DEC_OBJ_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59114 				HYBRID_BREAK();
59115 			HYBRID_CASE(ZEND_POST_INC_OBJ_SPEC_UNUSED_CV):
59116 				VM_TRACE(ZEND_POST_INC_OBJ_SPEC_UNUSED_CV)
59117 				ZEND_POST_INC_OBJ_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59118 				HYBRID_BREAK();
59119 			HYBRID_CASE(ZEND_POST_DEC_OBJ_SPEC_UNUSED_CV):
59120 				VM_TRACE(ZEND_POST_DEC_OBJ_SPEC_UNUSED_CV)
59121 				ZEND_POST_DEC_OBJ_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59122 				HYBRID_BREAK();
59123 			HYBRID_CASE(ZEND_FETCH_OBJ_R_SPEC_UNUSED_CV):
59124 				VM_TRACE(ZEND_FETCH_OBJ_R_SPEC_UNUSED_CV)
59125 				ZEND_FETCH_OBJ_R_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59126 				HYBRID_BREAK();
59127 			HYBRID_CASE(ZEND_FETCH_OBJ_W_SPEC_UNUSED_CV):
59128 				VM_TRACE(ZEND_FETCH_OBJ_W_SPEC_UNUSED_CV)
59129 				ZEND_FETCH_OBJ_W_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59130 				HYBRID_BREAK();
59131 			HYBRID_CASE(ZEND_FETCH_OBJ_RW_SPEC_UNUSED_CV):
59132 				VM_TRACE(ZEND_FETCH_OBJ_RW_SPEC_UNUSED_CV)
59133 				ZEND_FETCH_OBJ_RW_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59134 				HYBRID_BREAK();
59135 			HYBRID_CASE(ZEND_FETCH_OBJ_IS_SPEC_UNUSED_CV):
59136 				VM_TRACE(ZEND_FETCH_OBJ_IS_SPEC_UNUSED_CV)
59137 				ZEND_FETCH_OBJ_IS_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59138 				HYBRID_BREAK();
59139 			HYBRID_CASE(ZEND_FETCH_OBJ_FUNC_ARG_SPEC_UNUSED_CV):
59140 				VM_TRACE(ZEND_FETCH_OBJ_FUNC_ARG_SPEC_UNUSED_CV)
59141 				ZEND_FETCH_OBJ_FUNC_ARG_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59142 				HYBRID_BREAK();
59143 			HYBRID_CASE(ZEND_FETCH_OBJ_UNSET_SPEC_UNUSED_CV):
59144 				VM_TRACE(ZEND_FETCH_OBJ_UNSET_SPEC_UNUSED_CV)
59145 				ZEND_FETCH_OBJ_UNSET_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59146 				HYBRID_BREAK();
59147 			HYBRID_CASE(ZEND_ASSIGN_OBJ_SPEC_UNUSED_CV_OP_DATA_CONST):
59148 				VM_TRACE(ZEND_ASSIGN_OBJ_SPEC_UNUSED_CV_OP_DATA_CONST)
59149 				ZEND_ASSIGN_OBJ_SPEC_UNUSED_CV_OP_DATA_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59150 				HYBRID_BREAK();
59151 			HYBRID_CASE(ZEND_ASSIGN_OBJ_SPEC_UNUSED_CV_OP_DATA_TMP):
59152 				VM_TRACE(ZEND_ASSIGN_OBJ_SPEC_UNUSED_CV_OP_DATA_TMP)
59153 				ZEND_ASSIGN_OBJ_SPEC_UNUSED_CV_OP_DATA_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59154 				HYBRID_BREAK();
59155 			HYBRID_CASE(ZEND_ASSIGN_OBJ_SPEC_UNUSED_CV_OP_DATA_VAR):
59156 				VM_TRACE(ZEND_ASSIGN_OBJ_SPEC_UNUSED_CV_OP_DATA_VAR)
59157 				ZEND_ASSIGN_OBJ_SPEC_UNUSED_CV_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59158 				HYBRID_BREAK();
59159 			HYBRID_CASE(ZEND_ASSIGN_OBJ_SPEC_UNUSED_CV_OP_DATA_CV):
59160 				VM_TRACE(ZEND_ASSIGN_OBJ_SPEC_UNUSED_CV_OP_DATA_CV)
59161 				ZEND_ASSIGN_OBJ_SPEC_UNUSED_CV_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59162 				HYBRID_BREAK();
59163 			HYBRID_CASE(ZEND_ROPE_INIT_SPEC_UNUSED_CV):
59164 				VM_TRACE(ZEND_ROPE_INIT_SPEC_UNUSED_CV)
59165 				ZEND_ROPE_INIT_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59166 				HYBRID_BREAK();
59167 			HYBRID_CASE(ZEND_FETCH_CLASS_SPEC_UNUSED_CV):
59168 				VM_TRACE(ZEND_FETCH_CLASS_SPEC_UNUSED_CV)
59169 				ZEND_FETCH_CLASS_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59170 				HYBRID_BREAK();
59171 			HYBRID_CASE(ZEND_INIT_METHOD_CALL_SPEC_UNUSED_CV):
59172 				VM_TRACE(ZEND_INIT_METHOD_CALL_SPEC_UNUSED_CV)
59173 				ZEND_INIT_METHOD_CALL_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59174 				HYBRID_BREAK();
59175 			HYBRID_CASE(ZEND_INIT_STATIC_METHOD_CALL_SPEC_UNUSED_CV):
59176 				VM_TRACE(ZEND_INIT_STATIC_METHOD_CALL_SPEC_UNUSED_CV)
59177 				ZEND_INIT_STATIC_METHOD_CALL_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59178 				HYBRID_BREAK();
59179 			HYBRID_CASE(ZEND_UNSET_OBJ_SPEC_UNUSED_CV):
59180 				VM_TRACE(ZEND_UNSET_OBJ_SPEC_UNUSED_CV)
59181 				ZEND_UNSET_OBJ_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59182 				HYBRID_BREAK();
59183 			HYBRID_CASE(ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_UNUSED_CV):
59184 				VM_TRACE(ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_UNUSED_CV)
59185 				ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59186 				HYBRID_BREAK();
59187 			HYBRID_CASE(ZEND_YIELD_SPEC_UNUSED_CV):
59188 				VM_TRACE(ZEND_YIELD_SPEC_UNUSED_CV)
59189 				ZEND_YIELD_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59190 				HYBRID_BREAK();
59191 			HYBRID_CASE(ZEND_BW_NOT_SPEC_CV):
59192 				VM_TRACE(ZEND_BW_NOT_SPEC_CV)
59193 				ZEND_BW_NOT_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59194 				HYBRID_BREAK();
59195 			HYBRID_CASE(ZEND_BOOL_NOT_SPEC_CV):
59196 				VM_TRACE(ZEND_BOOL_NOT_SPEC_CV)
59197 				ZEND_BOOL_NOT_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59198 				HYBRID_BREAK();
59199 			HYBRID_CASE(ZEND_PRE_INC_SPEC_CV_RETVAL_UNUSED):
59200 				VM_TRACE(ZEND_PRE_INC_SPEC_CV_RETVAL_UNUSED)
59201 				ZEND_PRE_INC_SPEC_CV_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59202 				HYBRID_BREAK();
59203 			HYBRID_CASE(ZEND_PRE_INC_SPEC_CV_RETVAL_USED):
59204 				VM_TRACE(ZEND_PRE_INC_SPEC_CV_RETVAL_USED)
59205 				ZEND_PRE_INC_SPEC_CV_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59206 				HYBRID_BREAK();
59207 			HYBRID_CASE(ZEND_PRE_DEC_SPEC_CV_RETVAL_UNUSED):
59208 				VM_TRACE(ZEND_PRE_DEC_SPEC_CV_RETVAL_UNUSED)
59209 				ZEND_PRE_DEC_SPEC_CV_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59210 				HYBRID_BREAK();
59211 			HYBRID_CASE(ZEND_PRE_DEC_SPEC_CV_RETVAL_USED):
59212 				VM_TRACE(ZEND_PRE_DEC_SPEC_CV_RETVAL_USED)
59213 				ZEND_PRE_DEC_SPEC_CV_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59214 				HYBRID_BREAK();
59215 			HYBRID_CASE(ZEND_POST_INC_SPEC_CV):
59216 				VM_TRACE(ZEND_POST_INC_SPEC_CV)
59217 				ZEND_POST_INC_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59218 				HYBRID_BREAK();
59219 			HYBRID_CASE(ZEND_POST_DEC_SPEC_CV):
59220 				VM_TRACE(ZEND_POST_DEC_SPEC_CV)
59221 				ZEND_POST_DEC_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59222 				HYBRID_BREAK();
59223 			HYBRID_CASE(ZEND_ECHO_SPEC_CV):
59224 				VM_TRACE(ZEND_ECHO_SPEC_CV)
59225 				ZEND_ECHO_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59226 				HYBRID_BREAK();
59227 			HYBRID_CASE(ZEND_JMPZ_SPEC_CV):
59228 				VM_TRACE(ZEND_JMPZ_SPEC_CV)
59229 				ZEND_JMPZ_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59230 				HYBRID_BREAK();
59231 			HYBRID_CASE(ZEND_JMPNZ_SPEC_CV):
59232 				VM_TRACE(ZEND_JMPNZ_SPEC_CV)
59233 				ZEND_JMPNZ_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59234 				HYBRID_BREAK();
59235 			HYBRID_CASE(ZEND_JMPZNZ_SPEC_CV):
59236 				VM_TRACE(ZEND_JMPZNZ_SPEC_CV)
59237 				ZEND_JMPZNZ_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59238 				HYBRID_BREAK();
59239 			HYBRID_CASE(ZEND_JMPZ_EX_SPEC_CV):
59240 				VM_TRACE(ZEND_JMPZ_EX_SPEC_CV)
59241 				ZEND_JMPZ_EX_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59242 				HYBRID_BREAK();
59243 			HYBRID_CASE(ZEND_JMPNZ_EX_SPEC_CV):
59244 				VM_TRACE(ZEND_JMPNZ_EX_SPEC_CV)
59245 				ZEND_JMPNZ_EX_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59246 				HYBRID_BREAK();
59247 			HYBRID_CASE(ZEND_RETURN_SPEC_CV):
59248 				VM_TRACE(ZEND_RETURN_SPEC_CV)
59249 {
59250 	USE_OPLINE
59251 	zval *retval_ptr;
59252 	zval *return_value;
59253 	zend_free_op free_op1;
59254 
59255 	retval_ptr = EX_VAR(opline->op1.var);
59256 	return_value = EX(return_value);
59257 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(retval_ptr) == IS_UNDEF)) {
59258 		SAVE_OPLINE();
59259 		retval_ptr = GET_OP1_UNDEF_CV(retval_ptr, BP_VAR_R);
59260 		if (return_value) {
59261 			ZVAL_NULL(return_value);
59262 		}
59263 	} else if (!return_value) {
59264 		if (IS_CV & (IS_VAR|IS_TMP_VAR)) {
59265 			if (Z_REFCOUNTED_P(free_op1) && !Z_DELREF_P(free_op1)) {
59266 				SAVE_OPLINE();
59267 				rc_dtor_func(Z_COUNTED_P(free_op1));
59268 			}
59269 		}
59270 	} else {
59271 		if ((IS_CV & (IS_CONST|IS_TMP_VAR))) {
59272 			ZVAL_COPY_VALUE(return_value, retval_ptr);
59273 			if (IS_CV == IS_CONST) {
59274 				if (UNEXPECTED(Z_OPT_REFCOUNTED_P(return_value))) {
59275 					Z_ADDREF_P(return_value);
59276 				}
59277 			}
59278 		} else if (IS_CV == IS_CV) {
59279 			if (Z_OPT_REFCOUNTED_P(retval_ptr)) {
59280 				if (EXPECTED(!Z_OPT_ISREF_P(retval_ptr))) {
59281 					ZVAL_COPY_VALUE(return_value, retval_ptr);
59282 					if (EXPECTED(!(EX_CALL_INFO() & ZEND_CALL_CODE))) {
59283 						zend_refcounted *ref = Z_COUNTED_P(retval_ptr);
59284 						if (GC_MAY_LEAK(ref)) {
59285 							gc_possible_root(ref);
59286 						}
59287 						ZVAL_NULL(retval_ptr);
59288 					} else {
59289 						Z_ADDREF_P(return_value);
59290 					}
59291 				} else {
59292 					retval_ptr = Z_REFVAL_P(retval_ptr);
59293 					ZVAL_COPY(return_value, retval_ptr);
59294 				}
59295 			} else {
59296 				ZVAL_COPY_VALUE(return_value, retval_ptr);
59297 			}
59298 		} else /* if (IS_CV == IS_VAR) */ {
59299 			if (UNEXPECTED(Z_ISREF_P(retval_ptr))) {
59300 				zend_refcounted *ref = Z_COUNTED_P(retval_ptr);
59301 
59302 				retval_ptr = Z_REFVAL_P(retval_ptr);
59303 				ZVAL_COPY_VALUE(return_value, retval_ptr);
59304 				if (UNEXPECTED(GC_DELREF(ref) == 0)) {
59305 					efree_size(ref, sizeof(zend_reference));
59306 				} else if (Z_OPT_REFCOUNTED_P(retval_ptr)) {
59307 					Z_ADDREF_P(retval_ptr);
59308 				}
59309 			} else {
59310 				ZVAL_COPY_VALUE(return_value, retval_ptr);
59311 			}
59312 		}
59313 	}
59314 	goto zend_leave_helper_SPEC_LABEL;
59315 }
59316 
59317 			HYBRID_CASE(ZEND_RETURN_BY_REF_SPEC_CV):
59318 				VM_TRACE(ZEND_RETURN_BY_REF_SPEC_CV)
59319 				ZEND_RETURN_BY_REF_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59320 				HYBRID_BREAK();
59321 			HYBRID_CASE(ZEND_GENERATOR_RETURN_SPEC_CV):
59322 				VM_TRACE(ZEND_GENERATOR_RETURN_SPEC_CV)
59323 				ZEND_GENERATOR_RETURN_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59324 				HYBRID_BREAK();
59325 			HYBRID_CASE(ZEND_THROW_SPEC_CV):
59326 				VM_TRACE(ZEND_THROW_SPEC_CV)
59327 				ZEND_THROW_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59328 				HYBRID_BREAK();
59329 			HYBRID_CASE(ZEND_SEND_VAR_SPEC_CV):
59330 				VM_TRACE(ZEND_SEND_VAR_SPEC_CV)
59331 				ZEND_SEND_VAR_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59332 				HYBRID_BREAK();
59333 			HYBRID_CASE(ZEND_SEND_REF_SPEC_CV):
59334 				VM_TRACE(ZEND_SEND_REF_SPEC_CV)
59335 				ZEND_SEND_REF_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59336 				HYBRID_BREAK();
59337 			HYBRID_CASE(ZEND_SEND_VAR_EX_SPEC_CV):
59338 				VM_TRACE(ZEND_SEND_VAR_EX_SPEC_CV)
59339 				ZEND_SEND_VAR_EX_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59340 				HYBRID_BREAK();
59341 			HYBRID_CASE(ZEND_SEND_VAR_EX_SPEC_CV_QUICK):
59342 				VM_TRACE(ZEND_SEND_VAR_EX_SPEC_CV_QUICK)
59343 				ZEND_SEND_VAR_EX_SPEC_CV_QUICK_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59344 				HYBRID_BREAK();
59345 			HYBRID_CASE(ZEND_SEND_USER_SPEC_CV):
59346 				VM_TRACE(ZEND_SEND_USER_SPEC_CV)
59347 				ZEND_SEND_USER_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59348 				HYBRID_BREAK();
59349 			HYBRID_CASE(ZEND_BOOL_SPEC_CV):
59350 				VM_TRACE(ZEND_BOOL_SPEC_CV)
59351 				ZEND_BOOL_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59352 				HYBRID_BREAK();
59353 			HYBRID_CASE(ZEND_CLONE_SPEC_CV):
59354 				VM_TRACE(ZEND_CLONE_SPEC_CV)
59355 				ZEND_CLONE_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59356 				HYBRID_BREAK();
59357 			HYBRID_CASE(ZEND_CAST_SPEC_CV):
59358 				VM_TRACE(ZEND_CAST_SPEC_CV)
59359 				ZEND_CAST_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59360 				HYBRID_BREAK();
59361 			HYBRID_CASE(ZEND_INCLUDE_OR_EVAL_SPEC_CV):
59362 				VM_TRACE(ZEND_INCLUDE_OR_EVAL_SPEC_CV)
59363 				ZEND_INCLUDE_OR_EVAL_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59364 				HYBRID_BREAK();
59365 			HYBRID_CASE(ZEND_FE_RESET_R_SPEC_CV):
59366 				VM_TRACE(ZEND_FE_RESET_R_SPEC_CV)
59367 				ZEND_FE_RESET_R_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59368 				HYBRID_BREAK();
59369 			HYBRID_CASE(ZEND_FE_RESET_RW_SPEC_CV):
59370 				VM_TRACE(ZEND_FE_RESET_RW_SPEC_CV)
59371 				ZEND_FE_RESET_RW_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59372 				HYBRID_BREAK();
59373 			HYBRID_CASE(ZEND_EXIT_SPEC_CV):
59374 				VM_TRACE(ZEND_EXIT_SPEC_CV)
59375 				ZEND_EXIT_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59376 				HYBRID_BREAK();
59377 			HYBRID_CASE(ZEND_JMP_SET_SPEC_CV):
59378 				VM_TRACE(ZEND_JMP_SET_SPEC_CV)
59379 				ZEND_JMP_SET_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59380 				HYBRID_BREAK();
59381 			HYBRID_CASE(ZEND_COALESCE_SPEC_CV):
59382 				VM_TRACE(ZEND_COALESCE_SPEC_CV)
59383 				ZEND_COALESCE_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59384 				HYBRID_BREAK();
59385 			HYBRID_CASE(ZEND_QM_ASSIGN_SPEC_CV):
59386 				VM_TRACE(ZEND_QM_ASSIGN_SPEC_CV)
59387 				ZEND_QM_ASSIGN_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59388 				HYBRID_BREAK();
59389 			HYBRID_CASE(ZEND_YIELD_FROM_SPEC_CV):
59390 				VM_TRACE(ZEND_YIELD_FROM_SPEC_CV)
59391 				ZEND_YIELD_FROM_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59392 				HYBRID_BREAK();
59393 			HYBRID_CASE(ZEND_STRLEN_SPEC_CV):
59394 				VM_TRACE(ZEND_STRLEN_SPEC_CV)
59395 				ZEND_STRLEN_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59396 				HYBRID_BREAK();
59397 			HYBRID_CASE(ZEND_TYPE_CHECK_SPEC_CV):
59398 				VM_TRACE(ZEND_TYPE_CHECK_SPEC_CV)
59399 				ZEND_TYPE_CHECK_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59400 				HYBRID_BREAK();
59401 			HYBRID_CASE(ZEND_PRE_INC_LONG_NO_OVERFLOW_SPEC_CV_RETVAL_UNUSED):
59402 				VM_TRACE(ZEND_PRE_INC_LONG_NO_OVERFLOW_SPEC_CV_RETVAL_UNUSED)
59403 				ZEND_PRE_INC_LONG_NO_OVERFLOW_SPEC_CV_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59404 				HYBRID_BREAK();
59405 			HYBRID_CASE(ZEND_PRE_INC_LONG_NO_OVERFLOW_SPEC_CV_RETVAL_USED):
59406 				VM_TRACE(ZEND_PRE_INC_LONG_NO_OVERFLOW_SPEC_CV_RETVAL_USED)
59407 				ZEND_PRE_INC_LONG_NO_OVERFLOW_SPEC_CV_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59408 				HYBRID_BREAK();
59409 			HYBRID_CASE(ZEND_PRE_INC_LONG_SPEC_CV_RETVAL_UNUSED):
59410 				VM_TRACE(ZEND_PRE_INC_LONG_SPEC_CV_RETVAL_UNUSED)
59411 				ZEND_PRE_INC_LONG_SPEC_CV_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59412 				HYBRID_BREAK();
59413 			HYBRID_CASE(ZEND_PRE_INC_LONG_SPEC_CV_RETVAL_USED):
59414 				VM_TRACE(ZEND_PRE_INC_LONG_SPEC_CV_RETVAL_USED)
59415 				ZEND_PRE_INC_LONG_SPEC_CV_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59416 				HYBRID_BREAK();
59417 			HYBRID_CASE(ZEND_PRE_INC_LONG_OR_DOUBLE_SPEC_CV_RETVAL_UNUSED):
59418 				VM_TRACE(ZEND_PRE_INC_LONG_OR_DOUBLE_SPEC_CV_RETVAL_UNUSED)
59419 				ZEND_PRE_INC_LONG_OR_DOUBLE_SPEC_CV_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59420 				HYBRID_BREAK();
59421 			HYBRID_CASE(ZEND_PRE_INC_LONG_OR_DOUBLE_SPEC_CV_RETVAL_USED):
59422 				VM_TRACE(ZEND_PRE_INC_LONG_OR_DOUBLE_SPEC_CV_RETVAL_USED)
59423 				ZEND_PRE_INC_LONG_OR_DOUBLE_SPEC_CV_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59424 				HYBRID_BREAK();
59425 			HYBRID_CASE(ZEND_PRE_DEC_LONG_NO_OVERFLOW_SPEC_CV_RETVAL_UNUSED):
59426 				VM_TRACE(ZEND_PRE_DEC_LONG_NO_OVERFLOW_SPEC_CV_RETVAL_UNUSED)
59427 				ZEND_PRE_DEC_LONG_NO_OVERFLOW_SPEC_CV_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59428 				HYBRID_BREAK();
59429 			HYBRID_CASE(ZEND_PRE_DEC_LONG_NO_OVERFLOW_SPEC_CV_RETVAL_USED):
59430 				VM_TRACE(ZEND_PRE_DEC_LONG_NO_OVERFLOW_SPEC_CV_RETVAL_USED)
59431 				ZEND_PRE_DEC_LONG_NO_OVERFLOW_SPEC_CV_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59432 				HYBRID_BREAK();
59433 			HYBRID_CASE(ZEND_PRE_DEC_LONG_SPEC_CV_RETVAL_UNUSED):
59434 				VM_TRACE(ZEND_PRE_DEC_LONG_SPEC_CV_RETVAL_UNUSED)
59435 				ZEND_PRE_DEC_LONG_SPEC_CV_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59436 				HYBRID_BREAK();
59437 			HYBRID_CASE(ZEND_PRE_DEC_LONG_SPEC_CV_RETVAL_USED):
59438 				VM_TRACE(ZEND_PRE_DEC_LONG_SPEC_CV_RETVAL_USED)
59439 				ZEND_PRE_DEC_LONG_SPEC_CV_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59440 				HYBRID_BREAK();
59441 			HYBRID_CASE(ZEND_PRE_DEC_LONG_OR_DOUBLE_SPEC_CV_RETVAL_UNUSED):
59442 				VM_TRACE(ZEND_PRE_DEC_LONG_OR_DOUBLE_SPEC_CV_RETVAL_UNUSED)
59443 				ZEND_PRE_DEC_LONG_OR_DOUBLE_SPEC_CV_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59444 				HYBRID_BREAK();
59445 			HYBRID_CASE(ZEND_PRE_DEC_LONG_OR_DOUBLE_SPEC_CV_RETVAL_USED):
59446 				VM_TRACE(ZEND_PRE_DEC_LONG_OR_DOUBLE_SPEC_CV_RETVAL_USED)
59447 				ZEND_PRE_DEC_LONG_OR_DOUBLE_SPEC_CV_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59448 				HYBRID_BREAK();
59449 			HYBRID_CASE(ZEND_POST_INC_LONG_NO_OVERFLOW_SPEC_CV):
59450 				VM_TRACE(ZEND_POST_INC_LONG_NO_OVERFLOW_SPEC_CV)
59451 				ZEND_POST_INC_LONG_NO_OVERFLOW_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59452 				HYBRID_BREAK();
59453 			HYBRID_CASE(ZEND_POST_INC_LONG_SPEC_CV):
59454 				VM_TRACE(ZEND_POST_INC_LONG_SPEC_CV)
59455 				ZEND_POST_INC_LONG_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59456 				HYBRID_BREAK();
59457 			HYBRID_CASE(ZEND_POST_INC_LONG_OR_DOUBLE_SPEC_CV):
59458 				VM_TRACE(ZEND_POST_INC_LONG_OR_DOUBLE_SPEC_CV)
59459 				ZEND_POST_INC_LONG_OR_DOUBLE_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59460 				HYBRID_BREAK();
59461 			HYBRID_CASE(ZEND_POST_DEC_LONG_NO_OVERFLOW_SPEC_CV):
59462 				VM_TRACE(ZEND_POST_DEC_LONG_NO_OVERFLOW_SPEC_CV)
59463 				ZEND_POST_DEC_LONG_NO_OVERFLOW_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59464 				HYBRID_BREAK();
59465 			HYBRID_CASE(ZEND_POST_DEC_LONG_SPEC_CV):
59466 				VM_TRACE(ZEND_POST_DEC_LONG_SPEC_CV)
59467 				ZEND_POST_DEC_LONG_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59468 				HYBRID_BREAK();
59469 			HYBRID_CASE(ZEND_POST_DEC_LONG_OR_DOUBLE_SPEC_CV):
59470 				VM_TRACE(ZEND_POST_DEC_LONG_OR_DOUBLE_SPEC_CV)
59471 				ZEND_POST_DEC_LONG_OR_DOUBLE_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59472 				HYBRID_BREAK();
59473 			HYBRID_CASE(ZEND_SEND_VAR_SIMPLE_SPEC_CV):
59474 				VM_TRACE(ZEND_SEND_VAR_SIMPLE_SPEC_CV)
59475 				ZEND_SEND_VAR_SIMPLE_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59476 				HYBRID_BREAK();
59477 			HYBRID_CASE(ZEND_SEND_VAR_EX_SIMPLE_SPEC_CV):
59478 				VM_TRACE(ZEND_SEND_VAR_EX_SIMPLE_SPEC_CV)
59479 				ZEND_SEND_VAR_EX_SIMPLE_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59480 				HYBRID_BREAK();
59481 			HYBRID_CASE(ZEND_ADD_SPEC_CV_CONST):
59482 				VM_TRACE(ZEND_ADD_SPEC_CV_CONST)
59483 				ZEND_ADD_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59484 				HYBRID_BREAK();
59485 			HYBRID_CASE(ZEND_SUB_SPEC_CV_CONST):
59486 				VM_TRACE(ZEND_SUB_SPEC_CV_CONST)
59487 				ZEND_SUB_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59488 				HYBRID_BREAK();
59489 			HYBRID_CASE(ZEND_MUL_SPEC_CV_CONST):
59490 				VM_TRACE(ZEND_MUL_SPEC_CV_CONST)
59491 				ZEND_MUL_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59492 				HYBRID_BREAK();
59493 			HYBRID_CASE(ZEND_DIV_SPEC_CV_CONST):
59494 				VM_TRACE(ZEND_DIV_SPEC_CV_CONST)
59495 				ZEND_DIV_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59496 				HYBRID_BREAK();
59497 			HYBRID_CASE(ZEND_MOD_SPEC_CV_CONST):
59498 				VM_TRACE(ZEND_MOD_SPEC_CV_CONST)
59499 				ZEND_MOD_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59500 				HYBRID_BREAK();
59501 			HYBRID_CASE(ZEND_SL_SPEC_CV_CONST):
59502 				VM_TRACE(ZEND_SL_SPEC_CV_CONST)
59503 				ZEND_SL_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59504 				HYBRID_BREAK();
59505 			HYBRID_CASE(ZEND_SR_SPEC_CV_CONST):
59506 				VM_TRACE(ZEND_SR_SPEC_CV_CONST)
59507 				ZEND_SR_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59508 				HYBRID_BREAK();
59509 			HYBRID_CASE(ZEND_POW_SPEC_CV_CONST):
59510 				VM_TRACE(ZEND_POW_SPEC_CV_CONST)
59511 				ZEND_POW_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59512 				HYBRID_BREAK();
59513 			HYBRID_CASE(ZEND_CONCAT_SPEC_CV_CONST):
59514 				VM_TRACE(ZEND_CONCAT_SPEC_CV_CONST)
59515 				ZEND_CONCAT_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59516 				HYBRID_BREAK();
59517 			HYBRID_CASE(ZEND_IS_IDENTICAL_SPEC_CV_CONST):
59518 				VM_TRACE(ZEND_IS_IDENTICAL_SPEC_CV_CONST)
59519 				ZEND_IS_IDENTICAL_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59520 				HYBRID_BREAK();
59521 			HYBRID_CASE(ZEND_IS_NOT_IDENTICAL_SPEC_CV_CONST):
59522 				VM_TRACE(ZEND_IS_NOT_IDENTICAL_SPEC_CV_CONST)
59523 				ZEND_IS_NOT_IDENTICAL_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59524 				HYBRID_BREAK();
59525 			HYBRID_CASE(ZEND_IS_EQUAL_SPEC_CV_CONST):
59526 				VM_TRACE(ZEND_IS_EQUAL_SPEC_CV_CONST)
59527 				ZEND_IS_EQUAL_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59528 				HYBRID_BREAK();
59529 			HYBRID_CASE(ZEND_IS_NOT_EQUAL_SPEC_CV_CONST):
59530 				VM_TRACE(ZEND_IS_NOT_EQUAL_SPEC_CV_CONST)
59531 				ZEND_IS_NOT_EQUAL_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59532 				HYBRID_BREAK();
59533 			HYBRID_CASE(ZEND_IS_SMALLER_SPEC_CV_CONST):
59534 				VM_TRACE(ZEND_IS_SMALLER_SPEC_CV_CONST)
59535 				ZEND_IS_SMALLER_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59536 				HYBRID_BREAK();
59537 			HYBRID_CASE(ZEND_IS_SMALLER_OR_EQUAL_SPEC_CV_CONST):
59538 				VM_TRACE(ZEND_IS_SMALLER_OR_EQUAL_SPEC_CV_CONST)
59539 				ZEND_IS_SMALLER_OR_EQUAL_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59540 				HYBRID_BREAK();
59541 			HYBRID_CASE(ZEND_SPACESHIP_SPEC_CV_CONST):
59542 				VM_TRACE(ZEND_SPACESHIP_SPEC_CV_CONST)
59543 				ZEND_SPACESHIP_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59544 				HYBRID_BREAK();
59545 			HYBRID_CASE(ZEND_BW_OR_SPEC_CV_CONST):
59546 				VM_TRACE(ZEND_BW_OR_SPEC_CV_CONST)
59547 				ZEND_BW_OR_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59548 				HYBRID_BREAK();
59549 			HYBRID_CASE(ZEND_BW_AND_SPEC_CV_CONST):
59550 				VM_TRACE(ZEND_BW_AND_SPEC_CV_CONST)
59551 				ZEND_BW_AND_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59552 				HYBRID_BREAK();
59553 			HYBRID_CASE(ZEND_BW_XOR_SPEC_CV_CONST):
59554 				VM_TRACE(ZEND_BW_XOR_SPEC_CV_CONST)
59555 				ZEND_BW_XOR_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59556 				HYBRID_BREAK();
59557 			HYBRID_CASE(ZEND_BOOL_XOR_SPEC_CV_CONST):
59558 				VM_TRACE(ZEND_BOOL_XOR_SPEC_CV_CONST)
59559 				ZEND_BOOL_XOR_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59560 				HYBRID_BREAK();
59561 			HYBRID_CASE(ZEND_ASSIGN_ADD_SPEC_CV_CONST):
59562 				VM_TRACE(ZEND_ASSIGN_ADD_SPEC_CV_CONST)
59563 				ZEND_ASSIGN_ADD_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59564 				HYBRID_BREAK();
59565 			HYBRID_CASE(ZEND_ASSIGN_ADD_SPEC_CV_CONST_DIM):
59566 				VM_TRACE(ZEND_ASSIGN_ADD_SPEC_CV_CONST_DIM)
59567 				ZEND_ASSIGN_ADD_SPEC_CV_CONST_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59568 				HYBRID_BREAK();
59569 			HYBRID_CASE(ZEND_ASSIGN_ADD_SPEC_CV_CONST_OBJ):
59570 				VM_TRACE(ZEND_ASSIGN_ADD_SPEC_CV_CONST_OBJ)
59571 				ZEND_ASSIGN_ADD_SPEC_CV_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59572 				HYBRID_BREAK();
59573 			HYBRID_CASE(ZEND_ASSIGN_SUB_SPEC_CV_CONST):
59574 				VM_TRACE(ZEND_ASSIGN_SUB_SPEC_CV_CONST)
59575 				ZEND_ASSIGN_SUB_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59576 				HYBRID_BREAK();
59577 			HYBRID_CASE(ZEND_ASSIGN_SUB_SPEC_CV_CONST_DIM):
59578 				VM_TRACE(ZEND_ASSIGN_SUB_SPEC_CV_CONST_DIM)
59579 				ZEND_ASSIGN_SUB_SPEC_CV_CONST_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59580 				HYBRID_BREAK();
59581 			HYBRID_CASE(ZEND_ASSIGN_SUB_SPEC_CV_CONST_OBJ):
59582 				VM_TRACE(ZEND_ASSIGN_SUB_SPEC_CV_CONST_OBJ)
59583 				ZEND_ASSIGN_SUB_SPEC_CV_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59584 				HYBRID_BREAK();
59585 			HYBRID_CASE(ZEND_ASSIGN_MUL_SPEC_CV_CONST):
59586 				VM_TRACE(ZEND_ASSIGN_MUL_SPEC_CV_CONST)
59587 				ZEND_ASSIGN_MUL_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59588 				HYBRID_BREAK();
59589 			HYBRID_CASE(ZEND_ASSIGN_MUL_SPEC_CV_CONST_DIM):
59590 				VM_TRACE(ZEND_ASSIGN_MUL_SPEC_CV_CONST_DIM)
59591 				ZEND_ASSIGN_MUL_SPEC_CV_CONST_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59592 				HYBRID_BREAK();
59593 			HYBRID_CASE(ZEND_ASSIGN_MUL_SPEC_CV_CONST_OBJ):
59594 				VM_TRACE(ZEND_ASSIGN_MUL_SPEC_CV_CONST_OBJ)
59595 				ZEND_ASSIGN_MUL_SPEC_CV_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59596 				HYBRID_BREAK();
59597 			HYBRID_CASE(ZEND_ASSIGN_DIV_SPEC_CV_CONST):
59598 				VM_TRACE(ZEND_ASSIGN_DIV_SPEC_CV_CONST)
59599 				ZEND_ASSIGN_DIV_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59600 				HYBRID_BREAK();
59601 			HYBRID_CASE(ZEND_ASSIGN_DIV_SPEC_CV_CONST_DIM):
59602 				VM_TRACE(ZEND_ASSIGN_DIV_SPEC_CV_CONST_DIM)
59603 				ZEND_ASSIGN_DIV_SPEC_CV_CONST_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59604 				HYBRID_BREAK();
59605 			HYBRID_CASE(ZEND_ASSIGN_DIV_SPEC_CV_CONST_OBJ):
59606 				VM_TRACE(ZEND_ASSIGN_DIV_SPEC_CV_CONST_OBJ)
59607 				ZEND_ASSIGN_DIV_SPEC_CV_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59608 				HYBRID_BREAK();
59609 			HYBRID_CASE(ZEND_ASSIGN_MOD_SPEC_CV_CONST):
59610 				VM_TRACE(ZEND_ASSIGN_MOD_SPEC_CV_CONST)
59611 				ZEND_ASSIGN_MOD_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59612 				HYBRID_BREAK();
59613 			HYBRID_CASE(ZEND_ASSIGN_MOD_SPEC_CV_CONST_DIM):
59614 				VM_TRACE(ZEND_ASSIGN_MOD_SPEC_CV_CONST_DIM)
59615 				ZEND_ASSIGN_MOD_SPEC_CV_CONST_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59616 				HYBRID_BREAK();
59617 			HYBRID_CASE(ZEND_ASSIGN_MOD_SPEC_CV_CONST_OBJ):
59618 				VM_TRACE(ZEND_ASSIGN_MOD_SPEC_CV_CONST_OBJ)
59619 				ZEND_ASSIGN_MOD_SPEC_CV_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59620 				HYBRID_BREAK();
59621 			HYBRID_CASE(ZEND_ASSIGN_SL_SPEC_CV_CONST):
59622 				VM_TRACE(ZEND_ASSIGN_SL_SPEC_CV_CONST)
59623 				ZEND_ASSIGN_SL_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59624 				HYBRID_BREAK();
59625 			HYBRID_CASE(ZEND_ASSIGN_SL_SPEC_CV_CONST_DIM):
59626 				VM_TRACE(ZEND_ASSIGN_SL_SPEC_CV_CONST_DIM)
59627 				ZEND_ASSIGN_SL_SPEC_CV_CONST_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59628 				HYBRID_BREAK();
59629 			HYBRID_CASE(ZEND_ASSIGN_SL_SPEC_CV_CONST_OBJ):
59630 				VM_TRACE(ZEND_ASSIGN_SL_SPEC_CV_CONST_OBJ)
59631 				ZEND_ASSIGN_SL_SPEC_CV_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59632 				HYBRID_BREAK();
59633 			HYBRID_CASE(ZEND_ASSIGN_SR_SPEC_CV_CONST):
59634 				VM_TRACE(ZEND_ASSIGN_SR_SPEC_CV_CONST)
59635 				ZEND_ASSIGN_SR_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59636 				HYBRID_BREAK();
59637 			HYBRID_CASE(ZEND_ASSIGN_SR_SPEC_CV_CONST_DIM):
59638 				VM_TRACE(ZEND_ASSIGN_SR_SPEC_CV_CONST_DIM)
59639 				ZEND_ASSIGN_SR_SPEC_CV_CONST_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59640 				HYBRID_BREAK();
59641 			HYBRID_CASE(ZEND_ASSIGN_SR_SPEC_CV_CONST_OBJ):
59642 				VM_TRACE(ZEND_ASSIGN_SR_SPEC_CV_CONST_OBJ)
59643 				ZEND_ASSIGN_SR_SPEC_CV_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59644 				HYBRID_BREAK();
59645 			HYBRID_CASE(ZEND_ASSIGN_CONCAT_SPEC_CV_CONST):
59646 				VM_TRACE(ZEND_ASSIGN_CONCAT_SPEC_CV_CONST)
59647 				ZEND_ASSIGN_CONCAT_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59648 				HYBRID_BREAK();
59649 			HYBRID_CASE(ZEND_ASSIGN_CONCAT_SPEC_CV_CONST_DIM):
59650 				VM_TRACE(ZEND_ASSIGN_CONCAT_SPEC_CV_CONST_DIM)
59651 				ZEND_ASSIGN_CONCAT_SPEC_CV_CONST_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59652 				HYBRID_BREAK();
59653 			HYBRID_CASE(ZEND_ASSIGN_CONCAT_SPEC_CV_CONST_OBJ):
59654 				VM_TRACE(ZEND_ASSIGN_CONCAT_SPEC_CV_CONST_OBJ)
59655 				ZEND_ASSIGN_CONCAT_SPEC_CV_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59656 				HYBRID_BREAK();
59657 			HYBRID_CASE(ZEND_ASSIGN_BW_OR_SPEC_CV_CONST):
59658 				VM_TRACE(ZEND_ASSIGN_BW_OR_SPEC_CV_CONST)
59659 				ZEND_ASSIGN_BW_OR_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59660 				HYBRID_BREAK();
59661 			HYBRID_CASE(ZEND_ASSIGN_BW_OR_SPEC_CV_CONST_DIM):
59662 				VM_TRACE(ZEND_ASSIGN_BW_OR_SPEC_CV_CONST_DIM)
59663 				ZEND_ASSIGN_BW_OR_SPEC_CV_CONST_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59664 				HYBRID_BREAK();
59665 			HYBRID_CASE(ZEND_ASSIGN_BW_OR_SPEC_CV_CONST_OBJ):
59666 				VM_TRACE(ZEND_ASSIGN_BW_OR_SPEC_CV_CONST_OBJ)
59667 				ZEND_ASSIGN_BW_OR_SPEC_CV_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59668 				HYBRID_BREAK();
59669 			HYBRID_CASE(ZEND_ASSIGN_BW_AND_SPEC_CV_CONST):
59670 				VM_TRACE(ZEND_ASSIGN_BW_AND_SPEC_CV_CONST)
59671 				ZEND_ASSIGN_BW_AND_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59672 				HYBRID_BREAK();
59673 			HYBRID_CASE(ZEND_ASSIGN_BW_AND_SPEC_CV_CONST_DIM):
59674 				VM_TRACE(ZEND_ASSIGN_BW_AND_SPEC_CV_CONST_DIM)
59675 				ZEND_ASSIGN_BW_AND_SPEC_CV_CONST_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59676 				HYBRID_BREAK();
59677 			HYBRID_CASE(ZEND_ASSIGN_BW_AND_SPEC_CV_CONST_OBJ):
59678 				VM_TRACE(ZEND_ASSIGN_BW_AND_SPEC_CV_CONST_OBJ)
59679 				ZEND_ASSIGN_BW_AND_SPEC_CV_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59680 				HYBRID_BREAK();
59681 			HYBRID_CASE(ZEND_ASSIGN_BW_XOR_SPEC_CV_CONST):
59682 				VM_TRACE(ZEND_ASSIGN_BW_XOR_SPEC_CV_CONST)
59683 				ZEND_ASSIGN_BW_XOR_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59684 				HYBRID_BREAK();
59685 			HYBRID_CASE(ZEND_ASSIGN_BW_XOR_SPEC_CV_CONST_DIM):
59686 				VM_TRACE(ZEND_ASSIGN_BW_XOR_SPEC_CV_CONST_DIM)
59687 				ZEND_ASSIGN_BW_XOR_SPEC_CV_CONST_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59688 				HYBRID_BREAK();
59689 			HYBRID_CASE(ZEND_ASSIGN_BW_XOR_SPEC_CV_CONST_OBJ):
59690 				VM_TRACE(ZEND_ASSIGN_BW_XOR_SPEC_CV_CONST_OBJ)
59691 				ZEND_ASSIGN_BW_XOR_SPEC_CV_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59692 				HYBRID_BREAK();
59693 			HYBRID_CASE(ZEND_ASSIGN_POW_SPEC_CV_CONST):
59694 				VM_TRACE(ZEND_ASSIGN_POW_SPEC_CV_CONST)
59695 				ZEND_ASSIGN_POW_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59696 				HYBRID_BREAK();
59697 			HYBRID_CASE(ZEND_ASSIGN_POW_SPEC_CV_CONST_DIM):
59698 				VM_TRACE(ZEND_ASSIGN_POW_SPEC_CV_CONST_DIM)
59699 				ZEND_ASSIGN_POW_SPEC_CV_CONST_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59700 				HYBRID_BREAK();
59701 			HYBRID_CASE(ZEND_ASSIGN_POW_SPEC_CV_CONST_OBJ):
59702 				VM_TRACE(ZEND_ASSIGN_POW_SPEC_CV_CONST_OBJ)
59703 				ZEND_ASSIGN_POW_SPEC_CV_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59704 				HYBRID_BREAK();
59705 			HYBRID_CASE(ZEND_PRE_INC_OBJ_SPEC_CV_CONST):
59706 				VM_TRACE(ZEND_PRE_INC_OBJ_SPEC_CV_CONST)
59707 				ZEND_PRE_INC_OBJ_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59708 				HYBRID_BREAK();
59709 			HYBRID_CASE(ZEND_PRE_DEC_OBJ_SPEC_CV_CONST):
59710 				VM_TRACE(ZEND_PRE_DEC_OBJ_SPEC_CV_CONST)
59711 				ZEND_PRE_DEC_OBJ_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59712 				HYBRID_BREAK();
59713 			HYBRID_CASE(ZEND_POST_INC_OBJ_SPEC_CV_CONST):
59714 				VM_TRACE(ZEND_POST_INC_OBJ_SPEC_CV_CONST)
59715 				ZEND_POST_INC_OBJ_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59716 				HYBRID_BREAK();
59717 			HYBRID_CASE(ZEND_POST_DEC_OBJ_SPEC_CV_CONST):
59718 				VM_TRACE(ZEND_POST_DEC_OBJ_SPEC_CV_CONST)
59719 				ZEND_POST_DEC_OBJ_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59720 				HYBRID_BREAK();
59721 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_R_SPEC_CV_CONST):
59722 				VM_TRACE(ZEND_FETCH_STATIC_PROP_R_SPEC_CV_CONST)
59723 				ZEND_FETCH_STATIC_PROP_R_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59724 				HYBRID_BREAK();
59725 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_W_SPEC_CV_CONST):
59726 				VM_TRACE(ZEND_FETCH_STATIC_PROP_W_SPEC_CV_CONST)
59727 				ZEND_FETCH_STATIC_PROP_W_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59728 				HYBRID_BREAK();
59729 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_RW_SPEC_CV_CONST):
59730 				VM_TRACE(ZEND_FETCH_STATIC_PROP_RW_SPEC_CV_CONST)
59731 				ZEND_FETCH_STATIC_PROP_RW_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59732 				HYBRID_BREAK();
59733 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_CV_CONST):
59734 				VM_TRACE(ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_CV_CONST)
59735 				ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59736 				HYBRID_BREAK();
59737 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_UNSET_SPEC_CV_CONST):
59738 				VM_TRACE(ZEND_FETCH_STATIC_PROP_UNSET_SPEC_CV_CONST)
59739 				ZEND_FETCH_STATIC_PROP_UNSET_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59740 				HYBRID_BREAK();
59741 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_IS_SPEC_CV_CONST):
59742 				VM_TRACE(ZEND_FETCH_STATIC_PROP_IS_SPEC_CV_CONST)
59743 				ZEND_FETCH_STATIC_PROP_IS_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59744 				HYBRID_BREAK();
59745 			HYBRID_CASE(ZEND_FETCH_DIM_R_SPEC_CV_CONST):
59746 				VM_TRACE(ZEND_FETCH_DIM_R_SPEC_CV_CONST)
59747 				ZEND_FETCH_DIM_R_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59748 				HYBRID_BREAK();
59749 			HYBRID_CASE(ZEND_FETCH_DIM_W_SPEC_CV_CONST):
59750 				VM_TRACE(ZEND_FETCH_DIM_W_SPEC_CV_CONST)
59751 				ZEND_FETCH_DIM_W_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59752 				HYBRID_BREAK();
59753 			HYBRID_CASE(ZEND_FETCH_DIM_RW_SPEC_CV_CONST):
59754 				VM_TRACE(ZEND_FETCH_DIM_RW_SPEC_CV_CONST)
59755 				ZEND_FETCH_DIM_RW_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59756 				HYBRID_BREAK();
59757 			HYBRID_CASE(ZEND_FETCH_DIM_IS_SPEC_CV_CONST):
59758 				VM_TRACE(ZEND_FETCH_DIM_IS_SPEC_CV_CONST)
59759 				ZEND_FETCH_DIM_IS_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59760 				HYBRID_BREAK();
59761 			HYBRID_CASE(ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_CONST):
59762 				VM_TRACE(ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_CONST)
59763 				ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59764 				HYBRID_BREAK();
59765 			HYBRID_CASE(ZEND_FETCH_DIM_UNSET_SPEC_CV_CONST):
59766 				VM_TRACE(ZEND_FETCH_DIM_UNSET_SPEC_CV_CONST)
59767 				ZEND_FETCH_DIM_UNSET_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59768 				HYBRID_BREAK();
59769 			HYBRID_CASE(ZEND_FETCH_OBJ_R_SPEC_CV_CONST):
59770 				VM_TRACE(ZEND_FETCH_OBJ_R_SPEC_CV_CONST)
59771 				ZEND_FETCH_OBJ_R_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59772 				HYBRID_BREAK();
59773 			HYBRID_CASE(ZEND_FETCH_OBJ_W_SPEC_CV_CONST):
59774 				VM_TRACE(ZEND_FETCH_OBJ_W_SPEC_CV_CONST)
59775 				ZEND_FETCH_OBJ_W_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59776 				HYBRID_BREAK();
59777 			HYBRID_CASE(ZEND_FETCH_OBJ_RW_SPEC_CV_CONST):
59778 				VM_TRACE(ZEND_FETCH_OBJ_RW_SPEC_CV_CONST)
59779 				ZEND_FETCH_OBJ_RW_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59780 				HYBRID_BREAK();
59781 			HYBRID_CASE(ZEND_FETCH_OBJ_IS_SPEC_CV_CONST):
59782 				VM_TRACE(ZEND_FETCH_OBJ_IS_SPEC_CV_CONST)
59783 				ZEND_FETCH_OBJ_IS_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59784 				HYBRID_BREAK();
59785 			HYBRID_CASE(ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CV_CONST):
59786 				VM_TRACE(ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CV_CONST)
59787 				ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59788 				HYBRID_BREAK();
59789 			HYBRID_CASE(ZEND_FETCH_OBJ_UNSET_SPEC_CV_CONST):
59790 				VM_TRACE(ZEND_FETCH_OBJ_UNSET_SPEC_CV_CONST)
59791 				ZEND_FETCH_OBJ_UNSET_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59792 				HYBRID_BREAK();
59793 			HYBRID_CASE(ZEND_ASSIGN_OBJ_SPEC_CV_CONST_OP_DATA_CONST):
59794 				VM_TRACE(ZEND_ASSIGN_OBJ_SPEC_CV_CONST_OP_DATA_CONST)
59795 				ZEND_ASSIGN_OBJ_SPEC_CV_CONST_OP_DATA_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59796 				HYBRID_BREAK();
59797 			HYBRID_CASE(ZEND_ASSIGN_OBJ_SPEC_CV_CONST_OP_DATA_TMP):
59798 				VM_TRACE(ZEND_ASSIGN_OBJ_SPEC_CV_CONST_OP_DATA_TMP)
59799 				ZEND_ASSIGN_OBJ_SPEC_CV_CONST_OP_DATA_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59800 				HYBRID_BREAK();
59801 			HYBRID_CASE(ZEND_ASSIGN_OBJ_SPEC_CV_CONST_OP_DATA_VAR):
59802 				VM_TRACE(ZEND_ASSIGN_OBJ_SPEC_CV_CONST_OP_DATA_VAR)
59803 				ZEND_ASSIGN_OBJ_SPEC_CV_CONST_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59804 				HYBRID_BREAK();
59805 			HYBRID_CASE(ZEND_ASSIGN_OBJ_SPEC_CV_CONST_OP_DATA_CV):
59806 				VM_TRACE(ZEND_ASSIGN_OBJ_SPEC_CV_CONST_OP_DATA_CV)
59807 				ZEND_ASSIGN_OBJ_SPEC_CV_CONST_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59808 				HYBRID_BREAK();
59809 			HYBRID_CASE(ZEND_ASSIGN_DIM_SPEC_CV_CONST_OP_DATA_CONST):
59810 				VM_TRACE(ZEND_ASSIGN_DIM_SPEC_CV_CONST_OP_DATA_CONST)
59811 				ZEND_ASSIGN_DIM_SPEC_CV_CONST_OP_DATA_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59812 				HYBRID_BREAK();
59813 			HYBRID_CASE(ZEND_ASSIGN_DIM_SPEC_CV_CONST_OP_DATA_TMP):
59814 				VM_TRACE(ZEND_ASSIGN_DIM_SPEC_CV_CONST_OP_DATA_TMP)
59815 				ZEND_ASSIGN_DIM_SPEC_CV_CONST_OP_DATA_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59816 				HYBRID_BREAK();
59817 			HYBRID_CASE(ZEND_ASSIGN_DIM_SPEC_CV_CONST_OP_DATA_VAR):
59818 				VM_TRACE(ZEND_ASSIGN_DIM_SPEC_CV_CONST_OP_DATA_VAR)
59819 				ZEND_ASSIGN_DIM_SPEC_CV_CONST_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59820 				HYBRID_BREAK();
59821 			HYBRID_CASE(ZEND_ASSIGN_DIM_SPEC_CV_CONST_OP_DATA_CV):
59822 				VM_TRACE(ZEND_ASSIGN_DIM_SPEC_CV_CONST_OP_DATA_CV)
59823 				ZEND_ASSIGN_DIM_SPEC_CV_CONST_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59824 				HYBRID_BREAK();
59825 			HYBRID_CASE(ZEND_ASSIGN_SPEC_CV_CONST_RETVAL_UNUSED):
59826 				VM_TRACE(ZEND_ASSIGN_SPEC_CV_CONST_RETVAL_UNUSED)
59827 				ZEND_ASSIGN_SPEC_CV_CONST_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59828 				HYBRID_BREAK();
59829 			HYBRID_CASE(ZEND_ASSIGN_SPEC_CV_CONST_RETVAL_USED):
59830 				VM_TRACE(ZEND_ASSIGN_SPEC_CV_CONST_RETVAL_USED)
59831 				ZEND_ASSIGN_SPEC_CV_CONST_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59832 				HYBRID_BREAK();
59833 			HYBRID_CASE(ZEND_FAST_CONCAT_SPEC_CV_CONST):
59834 				VM_TRACE(ZEND_FAST_CONCAT_SPEC_CV_CONST)
59835 				ZEND_FAST_CONCAT_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59836 				HYBRID_BREAK();
59837 			HYBRID_CASE(ZEND_INIT_METHOD_CALL_SPEC_CV_CONST):
59838 				VM_TRACE(ZEND_INIT_METHOD_CALL_SPEC_CV_CONST)
59839 				ZEND_INIT_METHOD_CALL_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59840 				HYBRID_BREAK();
59841 			HYBRID_CASE(ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_CONST):
59842 				VM_TRACE(ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_CONST)
59843 				ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59844 				HYBRID_BREAK();
59845 			HYBRID_CASE(ZEND_INIT_ARRAY_SPEC_CV_CONST):
59846 				VM_TRACE(ZEND_INIT_ARRAY_SPEC_CV_CONST)
59847 				ZEND_INIT_ARRAY_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59848 				HYBRID_BREAK();
59849 			HYBRID_CASE(ZEND_UNSET_STATIC_PROP_SPEC_CV_CONST):
59850 				VM_TRACE(ZEND_UNSET_STATIC_PROP_SPEC_CV_CONST)
59851 				ZEND_UNSET_STATIC_PROP_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59852 				HYBRID_BREAK();
59853 			HYBRID_CASE(ZEND_UNSET_DIM_SPEC_CV_CONST):
59854 				VM_TRACE(ZEND_UNSET_DIM_SPEC_CV_CONST)
59855 				ZEND_UNSET_DIM_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59856 				HYBRID_BREAK();
59857 			HYBRID_CASE(ZEND_UNSET_OBJ_SPEC_CV_CONST):
59858 				VM_TRACE(ZEND_UNSET_OBJ_SPEC_CV_CONST)
59859 				ZEND_UNSET_OBJ_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59860 				HYBRID_BREAK();
59861 			HYBRID_CASE(ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_CV_CONST):
59862 				VM_TRACE(ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_CV_CONST)
59863 				ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59864 				HYBRID_BREAK();
59865 			HYBRID_CASE(ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CV_CONST):
59866 				VM_TRACE(ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CV_CONST)
59867 				ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59868 				HYBRID_BREAK();
59869 			HYBRID_CASE(ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CV_CONST):
59870 				VM_TRACE(ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CV_CONST)
59871 				ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59872 				HYBRID_BREAK();
59873 			HYBRID_CASE(ZEND_INSTANCEOF_SPEC_CV_CONST):
59874 				VM_TRACE(ZEND_INSTANCEOF_SPEC_CV_CONST)
59875 				ZEND_INSTANCEOF_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59876 				HYBRID_BREAK();
59877 			HYBRID_CASE(ZEND_YIELD_SPEC_CV_CONST):
59878 				VM_TRACE(ZEND_YIELD_SPEC_CV_CONST)
59879 				ZEND_YIELD_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59880 				HYBRID_BREAK();
59881 			HYBRID_CASE(ZEND_BIND_GLOBAL_SPEC_CV_CONST):
59882 				VM_TRACE(ZEND_BIND_GLOBAL_SPEC_CV_CONST)
59883 				ZEND_BIND_GLOBAL_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59884 				HYBRID_BREAK();
59885 			HYBRID_CASE(ZEND_BIND_STATIC_SPEC_CV_CONST):
59886 				VM_TRACE(ZEND_BIND_STATIC_SPEC_CV_CONST)
59887 				ZEND_BIND_STATIC_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59888 				HYBRID_BREAK();
59889 			HYBRID_CASE(ZEND_IN_ARRAY_SPEC_CV_CONST):
59890 				VM_TRACE(ZEND_IN_ARRAY_SPEC_CV_CONST)
59891 				ZEND_IN_ARRAY_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59892 				HYBRID_BREAK();
59893 			HYBRID_CASE(ZEND_FETCH_DIM_R_INDEX_SPEC_CV_CONST):
59894 				VM_TRACE(ZEND_FETCH_DIM_R_INDEX_SPEC_CV_CONST)
59895 				ZEND_FETCH_DIM_R_INDEX_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59896 				HYBRID_BREAK();
59897 			HYBRID_CASE(ZEND_FETCH_DIM_R_INDEX_SPEC_CV_TMPVARCV):
59898 				VM_TRACE(ZEND_FETCH_DIM_R_INDEX_SPEC_CV_TMPVARCV)
59899 				ZEND_FETCH_DIM_R_INDEX_SPEC_CV_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59900 				HYBRID_BREAK();
59901 			HYBRID_CASE(ZEND_ADD_SPEC_CV_TMPVAR):
59902 				VM_TRACE(ZEND_ADD_SPEC_CV_TMPVAR)
59903 				ZEND_ADD_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59904 				HYBRID_BREAK();
59905 			HYBRID_CASE(ZEND_SUB_SPEC_CV_TMPVAR):
59906 				VM_TRACE(ZEND_SUB_SPEC_CV_TMPVAR)
59907 				ZEND_SUB_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59908 				HYBRID_BREAK();
59909 			HYBRID_CASE(ZEND_MUL_SPEC_CV_TMPVAR):
59910 				VM_TRACE(ZEND_MUL_SPEC_CV_TMPVAR)
59911 				ZEND_MUL_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59912 				HYBRID_BREAK();
59913 			HYBRID_CASE(ZEND_DIV_SPEC_CV_TMPVAR):
59914 				VM_TRACE(ZEND_DIV_SPEC_CV_TMPVAR)
59915 				ZEND_DIV_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59916 				HYBRID_BREAK();
59917 			HYBRID_CASE(ZEND_MOD_SPEC_CV_TMPVAR):
59918 				VM_TRACE(ZEND_MOD_SPEC_CV_TMPVAR)
59919 				ZEND_MOD_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59920 				HYBRID_BREAK();
59921 			HYBRID_CASE(ZEND_SL_SPEC_CV_TMPVAR):
59922 				VM_TRACE(ZEND_SL_SPEC_CV_TMPVAR)
59923 				ZEND_SL_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59924 				HYBRID_BREAK();
59925 			HYBRID_CASE(ZEND_SR_SPEC_CV_TMPVAR):
59926 				VM_TRACE(ZEND_SR_SPEC_CV_TMPVAR)
59927 				ZEND_SR_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59928 				HYBRID_BREAK();
59929 			HYBRID_CASE(ZEND_POW_SPEC_CV_TMPVAR):
59930 				VM_TRACE(ZEND_POW_SPEC_CV_TMPVAR)
59931 				ZEND_POW_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59932 				HYBRID_BREAK();
59933 			HYBRID_CASE(ZEND_CONCAT_SPEC_CV_TMPVAR):
59934 				VM_TRACE(ZEND_CONCAT_SPEC_CV_TMPVAR)
59935 				ZEND_CONCAT_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59936 				HYBRID_BREAK();
59937 			HYBRID_CASE(ZEND_IS_EQUAL_SPEC_CV_TMPVAR):
59938 				VM_TRACE(ZEND_IS_EQUAL_SPEC_CV_TMPVAR)
59939 				ZEND_IS_EQUAL_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59940 				HYBRID_BREAK();
59941 			HYBRID_CASE(ZEND_IS_NOT_EQUAL_SPEC_CV_TMPVAR):
59942 				VM_TRACE(ZEND_IS_NOT_EQUAL_SPEC_CV_TMPVAR)
59943 				ZEND_IS_NOT_EQUAL_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59944 				HYBRID_BREAK();
59945 			HYBRID_CASE(ZEND_IS_SMALLER_SPEC_CV_TMPVAR):
59946 				VM_TRACE(ZEND_IS_SMALLER_SPEC_CV_TMPVAR)
59947 				ZEND_IS_SMALLER_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59948 				HYBRID_BREAK();
59949 			HYBRID_CASE(ZEND_IS_SMALLER_OR_EQUAL_SPEC_CV_TMPVAR):
59950 				VM_TRACE(ZEND_IS_SMALLER_OR_EQUAL_SPEC_CV_TMPVAR)
59951 				ZEND_IS_SMALLER_OR_EQUAL_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59952 				HYBRID_BREAK();
59953 			HYBRID_CASE(ZEND_SPACESHIP_SPEC_CV_TMPVAR):
59954 				VM_TRACE(ZEND_SPACESHIP_SPEC_CV_TMPVAR)
59955 				ZEND_SPACESHIP_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59956 				HYBRID_BREAK();
59957 			HYBRID_CASE(ZEND_BW_OR_SPEC_CV_TMPVAR):
59958 				VM_TRACE(ZEND_BW_OR_SPEC_CV_TMPVAR)
59959 				ZEND_BW_OR_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59960 				HYBRID_BREAK();
59961 			HYBRID_CASE(ZEND_BW_AND_SPEC_CV_TMPVAR):
59962 				VM_TRACE(ZEND_BW_AND_SPEC_CV_TMPVAR)
59963 				ZEND_BW_AND_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59964 				HYBRID_BREAK();
59965 			HYBRID_CASE(ZEND_BW_XOR_SPEC_CV_TMPVAR):
59966 				VM_TRACE(ZEND_BW_XOR_SPEC_CV_TMPVAR)
59967 				ZEND_BW_XOR_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59968 				HYBRID_BREAK();
59969 			HYBRID_CASE(ZEND_BOOL_XOR_SPEC_CV_TMPVAR):
59970 				VM_TRACE(ZEND_BOOL_XOR_SPEC_CV_TMPVAR)
59971 				ZEND_BOOL_XOR_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59972 				HYBRID_BREAK();
59973 			HYBRID_CASE(ZEND_ASSIGN_ADD_SPEC_CV_TMPVAR):
59974 				VM_TRACE(ZEND_ASSIGN_ADD_SPEC_CV_TMPVAR)
59975 				ZEND_ASSIGN_ADD_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59976 				HYBRID_BREAK();
59977 			HYBRID_CASE(ZEND_ASSIGN_ADD_SPEC_CV_TMPVAR_DIM):
59978 				VM_TRACE(ZEND_ASSIGN_ADD_SPEC_CV_TMPVAR_DIM)
59979 				ZEND_ASSIGN_ADD_SPEC_CV_TMPVAR_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59980 				HYBRID_BREAK();
59981 			HYBRID_CASE(ZEND_ASSIGN_ADD_SPEC_CV_TMPVAR_OBJ):
59982 				VM_TRACE(ZEND_ASSIGN_ADD_SPEC_CV_TMPVAR_OBJ)
59983 				ZEND_ASSIGN_ADD_SPEC_CV_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59984 				HYBRID_BREAK();
59985 			HYBRID_CASE(ZEND_ASSIGN_SUB_SPEC_CV_TMPVAR):
59986 				VM_TRACE(ZEND_ASSIGN_SUB_SPEC_CV_TMPVAR)
59987 				ZEND_ASSIGN_SUB_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59988 				HYBRID_BREAK();
59989 			HYBRID_CASE(ZEND_ASSIGN_SUB_SPEC_CV_TMPVAR_DIM):
59990 				VM_TRACE(ZEND_ASSIGN_SUB_SPEC_CV_TMPVAR_DIM)
59991 				ZEND_ASSIGN_SUB_SPEC_CV_TMPVAR_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59992 				HYBRID_BREAK();
59993 			HYBRID_CASE(ZEND_ASSIGN_SUB_SPEC_CV_TMPVAR_OBJ):
59994 				VM_TRACE(ZEND_ASSIGN_SUB_SPEC_CV_TMPVAR_OBJ)
59995 				ZEND_ASSIGN_SUB_SPEC_CV_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59996 				HYBRID_BREAK();
59997 			HYBRID_CASE(ZEND_ASSIGN_MUL_SPEC_CV_TMPVAR):
59998 				VM_TRACE(ZEND_ASSIGN_MUL_SPEC_CV_TMPVAR)
59999 				ZEND_ASSIGN_MUL_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60000 				HYBRID_BREAK();
60001 			HYBRID_CASE(ZEND_ASSIGN_MUL_SPEC_CV_TMPVAR_DIM):
60002 				VM_TRACE(ZEND_ASSIGN_MUL_SPEC_CV_TMPVAR_DIM)
60003 				ZEND_ASSIGN_MUL_SPEC_CV_TMPVAR_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60004 				HYBRID_BREAK();
60005 			HYBRID_CASE(ZEND_ASSIGN_MUL_SPEC_CV_TMPVAR_OBJ):
60006 				VM_TRACE(ZEND_ASSIGN_MUL_SPEC_CV_TMPVAR_OBJ)
60007 				ZEND_ASSIGN_MUL_SPEC_CV_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60008 				HYBRID_BREAK();
60009 			HYBRID_CASE(ZEND_ASSIGN_DIV_SPEC_CV_TMPVAR):
60010 				VM_TRACE(ZEND_ASSIGN_DIV_SPEC_CV_TMPVAR)
60011 				ZEND_ASSIGN_DIV_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60012 				HYBRID_BREAK();
60013 			HYBRID_CASE(ZEND_ASSIGN_DIV_SPEC_CV_TMPVAR_DIM):
60014 				VM_TRACE(ZEND_ASSIGN_DIV_SPEC_CV_TMPVAR_DIM)
60015 				ZEND_ASSIGN_DIV_SPEC_CV_TMPVAR_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60016 				HYBRID_BREAK();
60017 			HYBRID_CASE(ZEND_ASSIGN_DIV_SPEC_CV_TMPVAR_OBJ):
60018 				VM_TRACE(ZEND_ASSIGN_DIV_SPEC_CV_TMPVAR_OBJ)
60019 				ZEND_ASSIGN_DIV_SPEC_CV_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60020 				HYBRID_BREAK();
60021 			HYBRID_CASE(ZEND_ASSIGN_MOD_SPEC_CV_TMPVAR):
60022 				VM_TRACE(ZEND_ASSIGN_MOD_SPEC_CV_TMPVAR)
60023 				ZEND_ASSIGN_MOD_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60024 				HYBRID_BREAK();
60025 			HYBRID_CASE(ZEND_ASSIGN_MOD_SPEC_CV_TMPVAR_DIM):
60026 				VM_TRACE(ZEND_ASSIGN_MOD_SPEC_CV_TMPVAR_DIM)
60027 				ZEND_ASSIGN_MOD_SPEC_CV_TMPVAR_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60028 				HYBRID_BREAK();
60029 			HYBRID_CASE(ZEND_ASSIGN_MOD_SPEC_CV_TMPVAR_OBJ):
60030 				VM_TRACE(ZEND_ASSIGN_MOD_SPEC_CV_TMPVAR_OBJ)
60031 				ZEND_ASSIGN_MOD_SPEC_CV_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60032 				HYBRID_BREAK();
60033 			HYBRID_CASE(ZEND_ASSIGN_SL_SPEC_CV_TMPVAR):
60034 				VM_TRACE(ZEND_ASSIGN_SL_SPEC_CV_TMPVAR)
60035 				ZEND_ASSIGN_SL_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60036 				HYBRID_BREAK();
60037 			HYBRID_CASE(ZEND_ASSIGN_SL_SPEC_CV_TMPVAR_DIM):
60038 				VM_TRACE(ZEND_ASSIGN_SL_SPEC_CV_TMPVAR_DIM)
60039 				ZEND_ASSIGN_SL_SPEC_CV_TMPVAR_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60040 				HYBRID_BREAK();
60041 			HYBRID_CASE(ZEND_ASSIGN_SL_SPEC_CV_TMPVAR_OBJ):
60042 				VM_TRACE(ZEND_ASSIGN_SL_SPEC_CV_TMPVAR_OBJ)
60043 				ZEND_ASSIGN_SL_SPEC_CV_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60044 				HYBRID_BREAK();
60045 			HYBRID_CASE(ZEND_ASSIGN_SR_SPEC_CV_TMPVAR):
60046 				VM_TRACE(ZEND_ASSIGN_SR_SPEC_CV_TMPVAR)
60047 				ZEND_ASSIGN_SR_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60048 				HYBRID_BREAK();
60049 			HYBRID_CASE(ZEND_ASSIGN_SR_SPEC_CV_TMPVAR_DIM):
60050 				VM_TRACE(ZEND_ASSIGN_SR_SPEC_CV_TMPVAR_DIM)
60051 				ZEND_ASSIGN_SR_SPEC_CV_TMPVAR_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60052 				HYBRID_BREAK();
60053 			HYBRID_CASE(ZEND_ASSIGN_SR_SPEC_CV_TMPVAR_OBJ):
60054 				VM_TRACE(ZEND_ASSIGN_SR_SPEC_CV_TMPVAR_OBJ)
60055 				ZEND_ASSIGN_SR_SPEC_CV_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60056 				HYBRID_BREAK();
60057 			HYBRID_CASE(ZEND_ASSIGN_CONCAT_SPEC_CV_TMPVAR):
60058 				VM_TRACE(ZEND_ASSIGN_CONCAT_SPEC_CV_TMPVAR)
60059 				ZEND_ASSIGN_CONCAT_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60060 				HYBRID_BREAK();
60061 			HYBRID_CASE(ZEND_ASSIGN_CONCAT_SPEC_CV_TMPVAR_DIM):
60062 				VM_TRACE(ZEND_ASSIGN_CONCAT_SPEC_CV_TMPVAR_DIM)
60063 				ZEND_ASSIGN_CONCAT_SPEC_CV_TMPVAR_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60064 				HYBRID_BREAK();
60065 			HYBRID_CASE(ZEND_ASSIGN_CONCAT_SPEC_CV_TMPVAR_OBJ):
60066 				VM_TRACE(ZEND_ASSIGN_CONCAT_SPEC_CV_TMPVAR_OBJ)
60067 				ZEND_ASSIGN_CONCAT_SPEC_CV_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60068 				HYBRID_BREAK();
60069 			HYBRID_CASE(ZEND_ASSIGN_BW_OR_SPEC_CV_TMPVAR):
60070 				VM_TRACE(ZEND_ASSIGN_BW_OR_SPEC_CV_TMPVAR)
60071 				ZEND_ASSIGN_BW_OR_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60072 				HYBRID_BREAK();
60073 			HYBRID_CASE(ZEND_ASSIGN_BW_OR_SPEC_CV_TMPVAR_DIM):
60074 				VM_TRACE(ZEND_ASSIGN_BW_OR_SPEC_CV_TMPVAR_DIM)
60075 				ZEND_ASSIGN_BW_OR_SPEC_CV_TMPVAR_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60076 				HYBRID_BREAK();
60077 			HYBRID_CASE(ZEND_ASSIGN_BW_OR_SPEC_CV_TMPVAR_OBJ):
60078 				VM_TRACE(ZEND_ASSIGN_BW_OR_SPEC_CV_TMPVAR_OBJ)
60079 				ZEND_ASSIGN_BW_OR_SPEC_CV_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60080 				HYBRID_BREAK();
60081 			HYBRID_CASE(ZEND_ASSIGN_BW_AND_SPEC_CV_TMPVAR):
60082 				VM_TRACE(ZEND_ASSIGN_BW_AND_SPEC_CV_TMPVAR)
60083 				ZEND_ASSIGN_BW_AND_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60084 				HYBRID_BREAK();
60085 			HYBRID_CASE(ZEND_ASSIGN_BW_AND_SPEC_CV_TMPVAR_DIM):
60086 				VM_TRACE(ZEND_ASSIGN_BW_AND_SPEC_CV_TMPVAR_DIM)
60087 				ZEND_ASSIGN_BW_AND_SPEC_CV_TMPVAR_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60088 				HYBRID_BREAK();
60089 			HYBRID_CASE(ZEND_ASSIGN_BW_AND_SPEC_CV_TMPVAR_OBJ):
60090 				VM_TRACE(ZEND_ASSIGN_BW_AND_SPEC_CV_TMPVAR_OBJ)
60091 				ZEND_ASSIGN_BW_AND_SPEC_CV_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60092 				HYBRID_BREAK();
60093 			HYBRID_CASE(ZEND_ASSIGN_BW_XOR_SPEC_CV_TMPVAR):
60094 				VM_TRACE(ZEND_ASSIGN_BW_XOR_SPEC_CV_TMPVAR)
60095 				ZEND_ASSIGN_BW_XOR_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60096 				HYBRID_BREAK();
60097 			HYBRID_CASE(ZEND_ASSIGN_BW_XOR_SPEC_CV_TMPVAR_DIM):
60098 				VM_TRACE(ZEND_ASSIGN_BW_XOR_SPEC_CV_TMPVAR_DIM)
60099 				ZEND_ASSIGN_BW_XOR_SPEC_CV_TMPVAR_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60100 				HYBRID_BREAK();
60101 			HYBRID_CASE(ZEND_ASSIGN_BW_XOR_SPEC_CV_TMPVAR_OBJ):
60102 				VM_TRACE(ZEND_ASSIGN_BW_XOR_SPEC_CV_TMPVAR_OBJ)
60103 				ZEND_ASSIGN_BW_XOR_SPEC_CV_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60104 				HYBRID_BREAK();
60105 			HYBRID_CASE(ZEND_ASSIGN_POW_SPEC_CV_TMPVAR):
60106 				VM_TRACE(ZEND_ASSIGN_POW_SPEC_CV_TMPVAR)
60107 				ZEND_ASSIGN_POW_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60108 				HYBRID_BREAK();
60109 			HYBRID_CASE(ZEND_ASSIGN_POW_SPEC_CV_TMPVAR_DIM):
60110 				VM_TRACE(ZEND_ASSIGN_POW_SPEC_CV_TMPVAR_DIM)
60111 				ZEND_ASSIGN_POW_SPEC_CV_TMPVAR_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60112 				HYBRID_BREAK();
60113 			HYBRID_CASE(ZEND_ASSIGN_POW_SPEC_CV_TMPVAR_OBJ):
60114 				VM_TRACE(ZEND_ASSIGN_POW_SPEC_CV_TMPVAR_OBJ)
60115 				ZEND_ASSIGN_POW_SPEC_CV_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60116 				HYBRID_BREAK();
60117 			HYBRID_CASE(ZEND_PRE_INC_OBJ_SPEC_CV_TMPVAR):
60118 				VM_TRACE(ZEND_PRE_INC_OBJ_SPEC_CV_TMPVAR)
60119 				ZEND_PRE_INC_OBJ_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60120 				HYBRID_BREAK();
60121 			HYBRID_CASE(ZEND_PRE_DEC_OBJ_SPEC_CV_TMPVAR):
60122 				VM_TRACE(ZEND_PRE_DEC_OBJ_SPEC_CV_TMPVAR)
60123 				ZEND_PRE_DEC_OBJ_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60124 				HYBRID_BREAK();
60125 			HYBRID_CASE(ZEND_POST_INC_OBJ_SPEC_CV_TMPVAR):
60126 				VM_TRACE(ZEND_POST_INC_OBJ_SPEC_CV_TMPVAR)
60127 				ZEND_POST_INC_OBJ_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60128 				HYBRID_BREAK();
60129 			HYBRID_CASE(ZEND_POST_DEC_OBJ_SPEC_CV_TMPVAR):
60130 				VM_TRACE(ZEND_POST_DEC_OBJ_SPEC_CV_TMPVAR)
60131 				ZEND_POST_DEC_OBJ_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60132 				HYBRID_BREAK();
60133 			HYBRID_CASE(ZEND_FETCH_DIM_R_SPEC_CV_TMPVAR):
60134 				VM_TRACE(ZEND_FETCH_DIM_R_SPEC_CV_TMPVAR)
60135 				ZEND_FETCH_DIM_R_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60136 				HYBRID_BREAK();
60137 			HYBRID_CASE(ZEND_FETCH_DIM_W_SPEC_CV_TMPVAR):
60138 				VM_TRACE(ZEND_FETCH_DIM_W_SPEC_CV_TMPVAR)
60139 				ZEND_FETCH_DIM_W_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60140 				HYBRID_BREAK();
60141 			HYBRID_CASE(ZEND_FETCH_DIM_RW_SPEC_CV_TMPVAR):
60142 				VM_TRACE(ZEND_FETCH_DIM_RW_SPEC_CV_TMPVAR)
60143 				ZEND_FETCH_DIM_RW_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60144 				HYBRID_BREAK();
60145 			HYBRID_CASE(ZEND_FETCH_DIM_IS_SPEC_CV_TMPVAR):
60146 				VM_TRACE(ZEND_FETCH_DIM_IS_SPEC_CV_TMPVAR)
60147 				ZEND_FETCH_DIM_IS_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60148 				HYBRID_BREAK();
60149 			HYBRID_CASE(ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_TMPVAR):
60150 				VM_TRACE(ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_TMPVAR)
60151 				ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60152 				HYBRID_BREAK();
60153 			HYBRID_CASE(ZEND_FETCH_DIM_UNSET_SPEC_CV_TMPVAR):
60154 				VM_TRACE(ZEND_FETCH_DIM_UNSET_SPEC_CV_TMPVAR)
60155 				ZEND_FETCH_DIM_UNSET_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60156 				HYBRID_BREAK();
60157 			HYBRID_CASE(ZEND_FETCH_OBJ_R_SPEC_CV_TMPVAR):
60158 				VM_TRACE(ZEND_FETCH_OBJ_R_SPEC_CV_TMPVAR)
60159 				ZEND_FETCH_OBJ_R_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60160 				HYBRID_BREAK();
60161 			HYBRID_CASE(ZEND_FETCH_OBJ_W_SPEC_CV_TMPVAR):
60162 				VM_TRACE(ZEND_FETCH_OBJ_W_SPEC_CV_TMPVAR)
60163 				ZEND_FETCH_OBJ_W_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60164 				HYBRID_BREAK();
60165 			HYBRID_CASE(ZEND_FETCH_OBJ_RW_SPEC_CV_TMPVAR):
60166 				VM_TRACE(ZEND_FETCH_OBJ_RW_SPEC_CV_TMPVAR)
60167 				ZEND_FETCH_OBJ_RW_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60168 				HYBRID_BREAK();
60169 			HYBRID_CASE(ZEND_FETCH_OBJ_IS_SPEC_CV_TMPVAR):
60170 				VM_TRACE(ZEND_FETCH_OBJ_IS_SPEC_CV_TMPVAR)
60171 				ZEND_FETCH_OBJ_IS_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60172 				HYBRID_BREAK();
60173 			HYBRID_CASE(ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CV_TMPVAR):
60174 				VM_TRACE(ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CV_TMPVAR)
60175 				ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60176 				HYBRID_BREAK();
60177 			HYBRID_CASE(ZEND_FETCH_OBJ_UNSET_SPEC_CV_TMPVAR):
60178 				VM_TRACE(ZEND_FETCH_OBJ_UNSET_SPEC_CV_TMPVAR)
60179 				ZEND_FETCH_OBJ_UNSET_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60180 				HYBRID_BREAK();
60181 			HYBRID_CASE(ZEND_ASSIGN_OBJ_SPEC_CV_TMPVAR_OP_DATA_CONST):
60182 				VM_TRACE(ZEND_ASSIGN_OBJ_SPEC_CV_TMPVAR_OP_DATA_CONST)
60183 				ZEND_ASSIGN_OBJ_SPEC_CV_TMPVAR_OP_DATA_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60184 				HYBRID_BREAK();
60185 			HYBRID_CASE(ZEND_ASSIGN_OBJ_SPEC_CV_TMPVAR_OP_DATA_TMP):
60186 				VM_TRACE(ZEND_ASSIGN_OBJ_SPEC_CV_TMPVAR_OP_DATA_TMP)
60187 				ZEND_ASSIGN_OBJ_SPEC_CV_TMPVAR_OP_DATA_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60188 				HYBRID_BREAK();
60189 			HYBRID_CASE(ZEND_ASSIGN_OBJ_SPEC_CV_TMPVAR_OP_DATA_VAR):
60190 				VM_TRACE(ZEND_ASSIGN_OBJ_SPEC_CV_TMPVAR_OP_DATA_VAR)
60191 				ZEND_ASSIGN_OBJ_SPEC_CV_TMPVAR_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60192 				HYBRID_BREAK();
60193 			HYBRID_CASE(ZEND_ASSIGN_OBJ_SPEC_CV_TMPVAR_OP_DATA_CV):
60194 				VM_TRACE(ZEND_ASSIGN_OBJ_SPEC_CV_TMPVAR_OP_DATA_CV)
60195 				ZEND_ASSIGN_OBJ_SPEC_CV_TMPVAR_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60196 				HYBRID_BREAK();
60197 			HYBRID_CASE(ZEND_ASSIGN_DIM_SPEC_CV_TMPVAR_OP_DATA_CONST):
60198 				VM_TRACE(ZEND_ASSIGN_DIM_SPEC_CV_TMPVAR_OP_DATA_CONST)
60199 				ZEND_ASSIGN_DIM_SPEC_CV_TMPVAR_OP_DATA_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60200 				HYBRID_BREAK();
60201 			HYBRID_CASE(ZEND_ASSIGN_DIM_SPEC_CV_TMPVAR_OP_DATA_TMP):
60202 				VM_TRACE(ZEND_ASSIGN_DIM_SPEC_CV_TMPVAR_OP_DATA_TMP)
60203 				ZEND_ASSIGN_DIM_SPEC_CV_TMPVAR_OP_DATA_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60204 				HYBRID_BREAK();
60205 			HYBRID_CASE(ZEND_ASSIGN_DIM_SPEC_CV_TMPVAR_OP_DATA_VAR):
60206 				VM_TRACE(ZEND_ASSIGN_DIM_SPEC_CV_TMPVAR_OP_DATA_VAR)
60207 				ZEND_ASSIGN_DIM_SPEC_CV_TMPVAR_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60208 				HYBRID_BREAK();
60209 			HYBRID_CASE(ZEND_ASSIGN_DIM_SPEC_CV_TMPVAR_OP_DATA_CV):
60210 				VM_TRACE(ZEND_ASSIGN_DIM_SPEC_CV_TMPVAR_OP_DATA_CV)
60211 				ZEND_ASSIGN_DIM_SPEC_CV_TMPVAR_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60212 				HYBRID_BREAK();
60213 			HYBRID_CASE(ZEND_FAST_CONCAT_SPEC_CV_TMPVAR):
60214 				VM_TRACE(ZEND_FAST_CONCAT_SPEC_CV_TMPVAR)
60215 				ZEND_FAST_CONCAT_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60216 				HYBRID_BREAK();
60217 			HYBRID_CASE(ZEND_INIT_METHOD_CALL_SPEC_CV_TMPVAR):
60218 				VM_TRACE(ZEND_INIT_METHOD_CALL_SPEC_CV_TMPVAR)
60219 				ZEND_INIT_METHOD_CALL_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60220 				HYBRID_BREAK();
60221 			HYBRID_CASE(ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_TMPVAR):
60222 				VM_TRACE(ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_TMPVAR)
60223 				ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60224 				HYBRID_BREAK();
60225 			HYBRID_CASE(ZEND_INIT_ARRAY_SPEC_CV_TMPVAR):
60226 				VM_TRACE(ZEND_INIT_ARRAY_SPEC_CV_TMPVAR)
60227 				ZEND_INIT_ARRAY_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60228 				HYBRID_BREAK();
60229 			HYBRID_CASE(ZEND_UNSET_DIM_SPEC_CV_TMPVAR):
60230 				VM_TRACE(ZEND_UNSET_DIM_SPEC_CV_TMPVAR)
60231 				ZEND_UNSET_DIM_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60232 				HYBRID_BREAK();
60233 			HYBRID_CASE(ZEND_UNSET_OBJ_SPEC_CV_TMPVAR):
60234 				VM_TRACE(ZEND_UNSET_OBJ_SPEC_CV_TMPVAR)
60235 				ZEND_UNSET_OBJ_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60236 				HYBRID_BREAK();
60237 			HYBRID_CASE(ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CV_TMPVAR):
60238 				VM_TRACE(ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CV_TMPVAR)
60239 				ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60240 				HYBRID_BREAK();
60241 			HYBRID_CASE(ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CV_TMPVAR):
60242 				VM_TRACE(ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CV_TMPVAR)
60243 				ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60244 				HYBRID_BREAK();
60245 			HYBRID_CASE(ZEND_IS_IDENTICAL_SPEC_CV_TMP):
60246 				VM_TRACE(ZEND_IS_IDENTICAL_SPEC_CV_TMP)
60247 				ZEND_IS_IDENTICAL_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60248 				HYBRID_BREAK();
60249 			HYBRID_CASE(ZEND_IS_NOT_IDENTICAL_SPEC_CV_TMP):
60250 				VM_TRACE(ZEND_IS_NOT_IDENTICAL_SPEC_CV_TMP)
60251 				ZEND_IS_NOT_IDENTICAL_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60252 				HYBRID_BREAK();
60253 			HYBRID_CASE(ZEND_ASSIGN_SPEC_CV_TMP_RETVAL_UNUSED):
60254 				VM_TRACE(ZEND_ASSIGN_SPEC_CV_TMP_RETVAL_UNUSED)
60255 				ZEND_ASSIGN_SPEC_CV_TMP_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60256 				HYBRID_BREAK();
60257 			HYBRID_CASE(ZEND_ASSIGN_SPEC_CV_TMP_RETVAL_USED):
60258 				VM_TRACE(ZEND_ASSIGN_SPEC_CV_TMP_RETVAL_USED)
60259 				ZEND_ASSIGN_SPEC_CV_TMP_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60260 				HYBRID_BREAK();
60261 			HYBRID_CASE(ZEND_YIELD_SPEC_CV_TMP):
60262 				VM_TRACE(ZEND_YIELD_SPEC_CV_TMP)
60263 				ZEND_YIELD_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60264 				HYBRID_BREAK();
60265 			HYBRID_CASE(ZEND_IS_IDENTICAL_SPEC_CV_VAR):
60266 				VM_TRACE(ZEND_IS_IDENTICAL_SPEC_CV_VAR)
60267 				ZEND_IS_IDENTICAL_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60268 				HYBRID_BREAK();
60269 			HYBRID_CASE(ZEND_IS_NOT_IDENTICAL_SPEC_CV_VAR):
60270 				VM_TRACE(ZEND_IS_NOT_IDENTICAL_SPEC_CV_VAR)
60271 				ZEND_IS_NOT_IDENTICAL_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60272 				HYBRID_BREAK();
60273 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_R_SPEC_CV_VAR):
60274 				VM_TRACE(ZEND_FETCH_STATIC_PROP_R_SPEC_CV_VAR)
60275 				ZEND_FETCH_STATIC_PROP_R_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60276 				HYBRID_BREAK();
60277 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_W_SPEC_CV_VAR):
60278 				VM_TRACE(ZEND_FETCH_STATIC_PROP_W_SPEC_CV_VAR)
60279 				ZEND_FETCH_STATIC_PROP_W_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60280 				HYBRID_BREAK();
60281 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_RW_SPEC_CV_VAR):
60282 				VM_TRACE(ZEND_FETCH_STATIC_PROP_RW_SPEC_CV_VAR)
60283 				ZEND_FETCH_STATIC_PROP_RW_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60284 				HYBRID_BREAK();
60285 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_CV_VAR):
60286 				VM_TRACE(ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_CV_VAR)
60287 				ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60288 				HYBRID_BREAK();
60289 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_UNSET_SPEC_CV_VAR):
60290 				VM_TRACE(ZEND_FETCH_STATIC_PROP_UNSET_SPEC_CV_VAR)
60291 				ZEND_FETCH_STATIC_PROP_UNSET_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60292 				HYBRID_BREAK();
60293 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_IS_SPEC_CV_VAR):
60294 				VM_TRACE(ZEND_FETCH_STATIC_PROP_IS_SPEC_CV_VAR)
60295 				ZEND_FETCH_STATIC_PROP_IS_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60296 				HYBRID_BREAK();
60297 			HYBRID_CASE(ZEND_ASSIGN_SPEC_CV_VAR_RETVAL_UNUSED):
60298 				VM_TRACE(ZEND_ASSIGN_SPEC_CV_VAR_RETVAL_UNUSED)
60299 				ZEND_ASSIGN_SPEC_CV_VAR_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60300 				HYBRID_BREAK();
60301 			HYBRID_CASE(ZEND_ASSIGN_SPEC_CV_VAR_RETVAL_USED):
60302 				VM_TRACE(ZEND_ASSIGN_SPEC_CV_VAR_RETVAL_USED)
60303 				ZEND_ASSIGN_SPEC_CV_VAR_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60304 				HYBRID_BREAK();
60305 			HYBRID_CASE(ZEND_ASSIGN_REF_SPEC_CV_VAR):
60306 				VM_TRACE(ZEND_ASSIGN_REF_SPEC_CV_VAR)
60307 				ZEND_ASSIGN_REF_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60308 				HYBRID_BREAK();
60309 			HYBRID_CASE(ZEND_UNSET_STATIC_PROP_SPEC_CV_VAR):
60310 				VM_TRACE(ZEND_UNSET_STATIC_PROP_SPEC_CV_VAR)
60311 				ZEND_UNSET_STATIC_PROP_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60312 				HYBRID_BREAK();
60313 			HYBRID_CASE(ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_CV_VAR):
60314 				VM_TRACE(ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_CV_VAR)
60315 				ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60316 				HYBRID_BREAK();
60317 			HYBRID_CASE(ZEND_INSTANCEOF_SPEC_CV_VAR):
60318 				VM_TRACE(ZEND_INSTANCEOF_SPEC_CV_VAR)
60319 				ZEND_INSTANCEOF_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60320 				HYBRID_BREAK();
60321 			HYBRID_CASE(ZEND_YIELD_SPEC_CV_VAR):
60322 				VM_TRACE(ZEND_YIELD_SPEC_CV_VAR)
60323 				ZEND_YIELD_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60324 				HYBRID_BREAK();
60325 			HYBRID_CASE(ZEND_ASSIGN_ADD_SPEC_CV_UNUSED_DIM):
60326 				VM_TRACE(ZEND_ASSIGN_ADD_SPEC_CV_UNUSED_DIM)
60327 				ZEND_ASSIGN_ADD_SPEC_CV_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60328 				HYBRID_BREAK();
60329 			HYBRID_CASE(ZEND_ASSIGN_SUB_SPEC_CV_UNUSED_DIM):
60330 				VM_TRACE(ZEND_ASSIGN_SUB_SPEC_CV_UNUSED_DIM)
60331 				ZEND_ASSIGN_SUB_SPEC_CV_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60332 				HYBRID_BREAK();
60333 			HYBRID_CASE(ZEND_ASSIGN_MUL_SPEC_CV_UNUSED_DIM):
60334 				VM_TRACE(ZEND_ASSIGN_MUL_SPEC_CV_UNUSED_DIM)
60335 				ZEND_ASSIGN_MUL_SPEC_CV_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60336 				HYBRID_BREAK();
60337 			HYBRID_CASE(ZEND_ASSIGN_DIV_SPEC_CV_UNUSED_DIM):
60338 				VM_TRACE(ZEND_ASSIGN_DIV_SPEC_CV_UNUSED_DIM)
60339 				ZEND_ASSIGN_DIV_SPEC_CV_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60340 				HYBRID_BREAK();
60341 			HYBRID_CASE(ZEND_ASSIGN_MOD_SPEC_CV_UNUSED_DIM):
60342 				VM_TRACE(ZEND_ASSIGN_MOD_SPEC_CV_UNUSED_DIM)
60343 				ZEND_ASSIGN_MOD_SPEC_CV_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60344 				HYBRID_BREAK();
60345 			HYBRID_CASE(ZEND_ASSIGN_SL_SPEC_CV_UNUSED_DIM):
60346 				VM_TRACE(ZEND_ASSIGN_SL_SPEC_CV_UNUSED_DIM)
60347 				ZEND_ASSIGN_SL_SPEC_CV_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60348 				HYBRID_BREAK();
60349 			HYBRID_CASE(ZEND_ASSIGN_SR_SPEC_CV_UNUSED_DIM):
60350 				VM_TRACE(ZEND_ASSIGN_SR_SPEC_CV_UNUSED_DIM)
60351 				ZEND_ASSIGN_SR_SPEC_CV_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60352 				HYBRID_BREAK();
60353 			HYBRID_CASE(ZEND_ASSIGN_CONCAT_SPEC_CV_UNUSED_DIM):
60354 				VM_TRACE(ZEND_ASSIGN_CONCAT_SPEC_CV_UNUSED_DIM)
60355 				ZEND_ASSIGN_CONCAT_SPEC_CV_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60356 				HYBRID_BREAK();
60357 			HYBRID_CASE(ZEND_ASSIGN_BW_OR_SPEC_CV_UNUSED_DIM):
60358 				VM_TRACE(ZEND_ASSIGN_BW_OR_SPEC_CV_UNUSED_DIM)
60359 				ZEND_ASSIGN_BW_OR_SPEC_CV_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60360 				HYBRID_BREAK();
60361 			HYBRID_CASE(ZEND_ASSIGN_BW_AND_SPEC_CV_UNUSED_DIM):
60362 				VM_TRACE(ZEND_ASSIGN_BW_AND_SPEC_CV_UNUSED_DIM)
60363 				ZEND_ASSIGN_BW_AND_SPEC_CV_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60364 				HYBRID_BREAK();
60365 			HYBRID_CASE(ZEND_ASSIGN_BW_XOR_SPEC_CV_UNUSED_DIM):
60366 				VM_TRACE(ZEND_ASSIGN_BW_XOR_SPEC_CV_UNUSED_DIM)
60367 				ZEND_ASSIGN_BW_XOR_SPEC_CV_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60368 				HYBRID_BREAK();
60369 			HYBRID_CASE(ZEND_ASSIGN_POW_SPEC_CV_UNUSED_DIM):
60370 				VM_TRACE(ZEND_ASSIGN_POW_SPEC_CV_UNUSED_DIM)
60371 				ZEND_ASSIGN_POW_SPEC_CV_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60372 				HYBRID_BREAK();
60373 			HYBRID_CASE(ZEND_FETCH_R_SPEC_CV_UNUSED):
60374 				VM_TRACE(ZEND_FETCH_R_SPEC_CV_UNUSED)
60375 				ZEND_FETCH_R_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60376 				HYBRID_BREAK();
60377 			HYBRID_CASE(ZEND_FETCH_W_SPEC_CV_UNUSED):
60378 				VM_TRACE(ZEND_FETCH_W_SPEC_CV_UNUSED)
60379 				ZEND_FETCH_W_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60380 				HYBRID_BREAK();
60381 			HYBRID_CASE(ZEND_FETCH_RW_SPEC_CV_UNUSED):
60382 				VM_TRACE(ZEND_FETCH_RW_SPEC_CV_UNUSED)
60383 				ZEND_FETCH_RW_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60384 				HYBRID_BREAK();
60385 			HYBRID_CASE(ZEND_FETCH_FUNC_ARG_SPEC_CV_UNUSED):
60386 				VM_TRACE(ZEND_FETCH_FUNC_ARG_SPEC_CV_UNUSED)
60387 				ZEND_FETCH_FUNC_ARG_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60388 				HYBRID_BREAK();
60389 			HYBRID_CASE(ZEND_FETCH_UNSET_SPEC_CV_UNUSED):
60390 				VM_TRACE(ZEND_FETCH_UNSET_SPEC_CV_UNUSED)
60391 				ZEND_FETCH_UNSET_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60392 				HYBRID_BREAK();
60393 			HYBRID_CASE(ZEND_FETCH_IS_SPEC_CV_UNUSED):
60394 				VM_TRACE(ZEND_FETCH_IS_SPEC_CV_UNUSED)
60395 				ZEND_FETCH_IS_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60396 				HYBRID_BREAK();
60397 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_R_SPEC_CV_UNUSED):
60398 				VM_TRACE(ZEND_FETCH_STATIC_PROP_R_SPEC_CV_UNUSED)
60399 				ZEND_FETCH_STATIC_PROP_R_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60400 				HYBRID_BREAK();
60401 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_W_SPEC_CV_UNUSED):
60402 				VM_TRACE(ZEND_FETCH_STATIC_PROP_W_SPEC_CV_UNUSED)
60403 				ZEND_FETCH_STATIC_PROP_W_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60404 				HYBRID_BREAK();
60405 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_RW_SPEC_CV_UNUSED):
60406 				VM_TRACE(ZEND_FETCH_STATIC_PROP_RW_SPEC_CV_UNUSED)
60407 				ZEND_FETCH_STATIC_PROP_RW_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60408 				HYBRID_BREAK();
60409 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_CV_UNUSED):
60410 				VM_TRACE(ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_CV_UNUSED)
60411 				ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60412 				HYBRID_BREAK();
60413 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_UNSET_SPEC_CV_UNUSED):
60414 				VM_TRACE(ZEND_FETCH_STATIC_PROP_UNSET_SPEC_CV_UNUSED)
60415 				ZEND_FETCH_STATIC_PROP_UNSET_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60416 				HYBRID_BREAK();
60417 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_IS_SPEC_CV_UNUSED):
60418 				VM_TRACE(ZEND_FETCH_STATIC_PROP_IS_SPEC_CV_UNUSED)
60419 				ZEND_FETCH_STATIC_PROP_IS_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60420 				HYBRID_BREAK();
60421 			HYBRID_CASE(ZEND_FETCH_DIM_W_SPEC_CV_UNUSED):
60422 				VM_TRACE(ZEND_FETCH_DIM_W_SPEC_CV_UNUSED)
60423 				ZEND_FETCH_DIM_W_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60424 				HYBRID_BREAK();
60425 			HYBRID_CASE(ZEND_FETCH_DIM_RW_SPEC_CV_UNUSED):
60426 				VM_TRACE(ZEND_FETCH_DIM_RW_SPEC_CV_UNUSED)
60427 				ZEND_FETCH_DIM_RW_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60428 				HYBRID_BREAK();
60429 			HYBRID_CASE(ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_UNUSED):
60430 				VM_TRACE(ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_UNUSED)
60431 				ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60432 				HYBRID_BREAK();
60433 			HYBRID_CASE(ZEND_ASSIGN_DIM_SPEC_CV_UNUSED_OP_DATA_CONST):
60434 				VM_TRACE(ZEND_ASSIGN_DIM_SPEC_CV_UNUSED_OP_DATA_CONST)
60435 				ZEND_ASSIGN_DIM_SPEC_CV_UNUSED_OP_DATA_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60436 				HYBRID_BREAK();
60437 			HYBRID_CASE(ZEND_ASSIGN_DIM_SPEC_CV_UNUSED_OP_DATA_TMP):
60438 				VM_TRACE(ZEND_ASSIGN_DIM_SPEC_CV_UNUSED_OP_DATA_TMP)
60439 				ZEND_ASSIGN_DIM_SPEC_CV_UNUSED_OP_DATA_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60440 				HYBRID_BREAK();
60441 			HYBRID_CASE(ZEND_ASSIGN_DIM_SPEC_CV_UNUSED_OP_DATA_VAR):
60442 				VM_TRACE(ZEND_ASSIGN_DIM_SPEC_CV_UNUSED_OP_DATA_VAR)
60443 				ZEND_ASSIGN_DIM_SPEC_CV_UNUSED_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60444 				HYBRID_BREAK();
60445 			HYBRID_CASE(ZEND_ASSIGN_DIM_SPEC_CV_UNUSED_OP_DATA_CV):
60446 				VM_TRACE(ZEND_ASSIGN_DIM_SPEC_CV_UNUSED_OP_DATA_CV)
60447 				ZEND_ASSIGN_DIM_SPEC_CV_UNUSED_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60448 				HYBRID_BREAK();
60449 			HYBRID_CASE(ZEND_VERIFY_RETURN_TYPE_SPEC_CV_UNUSED):
60450 				VM_TRACE(ZEND_VERIFY_RETURN_TYPE_SPEC_CV_UNUSED)
60451 				ZEND_VERIFY_RETURN_TYPE_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60452 				HYBRID_BREAK();
60453 			HYBRID_CASE(ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_UNUSED):
60454 				VM_TRACE(ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_UNUSED)
60455 				ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60456 				HYBRID_BREAK();
60457 			HYBRID_CASE(ZEND_INIT_ARRAY_SPEC_CV_UNUSED):
60458 				VM_TRACE(ZEND_INIT_ARRAY_SPEC_CV_UNUSED)
60459 				ZEND_INIT_ARRAY_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60460 				HYBRID_BREAK();
60461 			HYBRID_CASE(ZEND_UNSET_CV_SPEC_CV_UNUSED):
60462 				VM_TRACE(ZEND_UNSET_CV_SPEC_CV_UNUSED)
60463 				ZEND_UNSET_CV_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60464 				HYBRID_BREAK();
60465 			HYBRID_CASE(ZEND_UNSET_VAR_SPEC_CV_UNUSED):
60466 				VM_TRACE(ZEND_UNSET_VAR_SPEC_CV_UNUSED)
60467 				ZEND_UNSET_VAR_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60468 				HYBRID_BREAK();
60469 			HYBRID_CASE(ZEND_UNSET_STATIC_PROP_SPEC_CV_UNUSED):
60470 				VM_TRACE(ZEND_UNSET_STATIC_PROP_SPEC_CV_UNUSED)
60471 				ZEND_UNSET_STATIC_PROP_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60472 				HYBRID_BREAK();
60473 			HYBRID_CASE(ZEND_ISSET_ISEMPTY_CV_SPEC_CV_UNUSED_SET):
60474 				VM_TRACE(ZEND_ISSET_ISEMPTY_CV_SPEC_CV_UNUSED_SET)
60475 				ZEND_ISSET_ISEMPTY_CV_SPEC_CV_UNUSED_SET_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60476 				HYBRID_BREAK();
60477 			HYBRID_CASE(ZEND_ISSET_ISEMPTY_CV_SPEC_CV_UNUSED_EMPTY):
60478 				VM_TRACE(ZEND_ISSET_ISEMPTY_CV_SPEC_CV_UNUSED_EMPTY)
60479 				ZEND_ISSET_ISEMPTY_CV_SPEC_CV_UNUSED_EMPTY_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60480 				HYBRID_BREAK();
60481 			HYBRID_CASE(ZEND_ISSET_ISEMPTY_VAR_SPEC_CV_UNUSED):
60482 				VM_TRACE(ZEND_ISSET_ISEMPTY_VAR_SPEC_CV_UNUSED)
60483 				ZEND_ISSET_ISEMPTY_VAR_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60484 				HYBRID_BREAK();
60485 			HYBRID_CASE(ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_CV_UNUSED):
60486 				VM_TRACE(ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_CV_UNUSED)
60487 				ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60488 				HYBRID_BREAK();
60489 			HYBRID_CASE(ZEND_INSTANCEOF_SPEC_CV_UNUSED):
60490 				VM_TRACE(ZEND_INSTANCEOF_SPEC_CV_UNUSED)
60491 				ZEND_INSTANCEOF_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60492 				HYBRID_BREAK();
60493 			HYBRID_CASE(ZEND_YIELD_SPEC_CV_UNUSED):
60494 				VM_TRACE(ZEND_YIELD_SPEC_CV_UNUSED)
60495 				ZEND_YIELD_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60496 				HYBRID_BREAK();
60497 			HYBRID_CASE(ZEND_CHECK_VAR_SPEC_CV_UNUSED):
60498 				VM_TRACE(ZEND_CHECK_VAR_SPEC_CV_UNUSED)
60499 				ZEND_CHECK_VAR_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60500 				HYBRID_BREAK();
60501 			HYBRID_CASE(ZEND_MAKE_REF_SPEC_CV_UNUSED):
60502 				VM_TRACE(ZEND_MAKE_REF_SPEC_CV_UNUSED)
60503 				ZEND_MAKE_REF_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60504 				HYBRID_BREAK();
60505 			HYBRID_CASE(ZEND_COUNT_SPEC_CV_UNUSED):
60506 				VM_TRACE(ZEND_COUNT_SPEC_CV_UNUSED)
60507 				ZEND_COUNT_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60508 				HYBRID_BREAK();
60509 			HYBRID_CASE(ZEND_GET_CLASS_SPEC_CV_UNUSED):
60510 				VM_TRACE(ZEND_GET_CLASS_SPEC_CV_UNUSED)
60511 				ZEND_GET_CLASS_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60512 				HYBRID_BREAK();
60513 			HYBRID_CASE(ZEND_GET_TYPE_SPEC_CV_UNUSED):
60514 				VM_TRACE(ZEND_GET_TYPE_SPEC_CV_UNUSED)
60515 				ZEND_GET_TYPE_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60516 				HYBRID_BREAK();
60517 			HYBRID_CASE(ZEND_ADD_SPEC_CV_CV):
60518 				VM_TRACE(ZEND_ADD_SPEC_CV_CV)
60519 				ZEND_ADD_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60520 				HYBRID_BREAK();
60521 			HYBRID_CASE(ZEND_SUB_SPEC_CV_CV):
60522 				VM_TRACE(ZEND_SUB_SPEC_CV_CV)
60523 				ZEND_SUB_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60524 				HYBRID_BREAK();
60525 			HYBRID_CASE(ZEND_MUL_SPEC_CV_CV):
60526 				VM_TRACE(ZEND_MUL_SPEC_CV_CV)
60527 				ZEND_MUL_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60528 				HYBRID_BREAK();
60529 			HYBRID_CASE(ZEND_DIV_SPEC_CV_CV):
60530 				VM_TRACE(ZEND_DIV_SPEC_CV_CV)
60531 				ZEND_DIV_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60532 				HYBRID_BREAK();
60533 			HYBRID_CASE(ZEND_MOD_SPEC_CV_CV):
60534 				VM_TRACE(ZEND_MOD_SPEC_CV_CV)
60535 				ZEND_MOD_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60536 				HYBRID_BREAK();
60537 			HYBRID_CASE(ZEND_SL_SPEC_CV_CV):
60538 				VM_TRACE(ZEND_SL_SPEC_CV_CV)
60539 				ZEND_SL_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60540 				HYBRID_BREAK();
60541 			HYBRID_CASE(ZEND_SR_SPEC_CV_CV):
60542 				VM_TRACE(ZEND_SR_SPEC_CV_CV)
60543 				ZEND_SR_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60544 				HYBRID_BREAK();
60545 			HYBRID_CASE(ZEND_POW_SPEC_CV_CV):
60546 				VM_TRACE(ZEND_POW_SPEC_CV_CV)
60547 				ZEND_POW_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60548 				HYBRID_BREAK();
60549 			HYBRID_CASE(ZEND_CONCAT_SPEC_CV_CV):
60550 				VM_TRACE(ZEND_CONCAT_SPEC_CV_CV)
60551 				ZEND_CONCAT_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60552 				HYBRID_BREAK();
60553 			HYBRID_CASE(ZEND_IS_IDENTICAL_SPEC_CV_CV):
60554 				VM_TRACE(ZEND_IS_IDENTICAL_SPEC_CV_CV)
60555 				ZEND_IS_IDENTICAL_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60556 				HYBRID_BREAK();
60557 			HYBRID_CASE(ZEND_IS_NOT_IDENTICAL_SPEC_CV_CV):
60558 				VM_TRACE(ZEND_IS_NOT_IDENTICAL_SPEC_CV_CV)
60559 				ZEND_IS_NOT_IDENTICAL_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60560 				HYBRID_BREAK();
60561 			HYBRID_CASE(ZEND_IS_EQUAL_SPEC_CV_CV):
60562 				VM_TRACE(ZEND_IS_EQUAL_SPEC_CV_CV)
60563 				ZEND_IS_EQUAL_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60564 				HYBRID_BREAK();
60565 			HYBRID_CASE(ZEND_IS_NOT_EQUAL_SPEC_CV_CV):
60566 				VM_TRACE(ZEND_IS_NOT_EQUAL_SPEC_CV_CV)
60567 				ZEND_IS_NOT_EQUAL_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60568 				HYBRID_BREAK();
60569 			HYBRID_CASE(ZEND_IS_SMALLER_SPEC_CV_CV):
60570 				VM_TRACE(ZEND_IS_SMALLER_SPEC_CV_CV)
60571 				ZEND_IS_SMALLER_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60572 				HYBRID_BREAK();
60573 			HYBRID_CASE(ZEND_IS_SMALLER_OR_EQUAL_SPEC_CV_CV):
60574 				VM_TRACE(ZEND_IS_SMALLER_OR_EQUAL_SPEC_CV_CV)
60575 				ZEND_IS_SMALLER_OR_EQUAL_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60576 				HYBRID_BREAK();
60577 			HYBRID_CASE(ZEND_SPACESHIP_SPEC_CV_CV):
60578 				VM_TRACE(ZEND_SPACESHIP_SPEC_CV_CV)
60579 				ZEND_SPACESHIP_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60580 				HYBRID_BREAK();
60581 			HYBRID_CASE(ZEND_BW_OR_SPEC_CV_CV):
60582 				VM_TRACE(ZEND_BW_OR_SPEC_CV_CV)
60583 				ZEND_BW_OR_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60584 				HYBRID_BREAK();
60585 			HYBRID_CASE(ZEND_BW_AND_SPEC_CV_CV):
60586 				VM_TRACE(ZEND_BW_AND_SPEC_CV_CV)
60587 				ZEND_BW_AND_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60588 				HYBRID_BREAK();
60589 			HYBRID_CASE(ZEND_BW_XOR_SPEC_CV_CV):
60590 				VM_TRACE(ZEND_BW_XOR_SPEC_CV_CV)
60591 				ZEND_BW_XOR_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60592 				HYBRID_BREAK();
60593 			HYBRID_CASE(ZEND_BOOL_XOR_SPEC_CV_CV):
60594 				VM_TRACE(ZEND_BOOL_XOR_SPEC_CV_CV)
60595 				ZEND_BOOL_XOR_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60596 				HYBRID_BREAK();
60597 			HYBRID_CASE(ZEND_ASSIGN_ADD_SPEC_CV_CV):
60598 				VM_TRACE(ZEND_ASSIGN_ADD_SPEC_CV_CV)
60599 				ZEND_ASSIGN_ADD_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60600 				HYBRID_BREAK();
60601 			HYBRID_CASE(ZEND_ASSIGN_ADD_SPEC_CV_CV_DIM):
60602 				VM_TRACE(ZEND_ASSIGN_ADD_SPEC_CV_CV_DIM)
60603 				ZEND_ASSIGN_ADD_SPEC_CV_CV_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60604 				HYBRID_BREAK();
60605 			HYBRID_CASE(ZEND_ASSIGN_ADD_SPEC_CV_CV_OBJ):
60606 				VM_TRACE(ZEND_ASSIGN_ADD_SPEC_CV_CV_OBJ)
60607 				ZEND_ASSIGN_ADD_SPEC_CV_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60608 				HYBRID_BREAK();
60609 			HYBRID_CASE(ZEND_ASSIGN_SUB_SPEC_CV_CV):
60610 				VM_TRACE(ZEND_ASSIGN_SUB_SPEC_CV_CV)
60611 				ZEND_ASSIGN_SUB_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60612 				HYBRID_BREAK();
60613 			HYBRID_CASE(ZEND_ASSIGN_SUB_SPEC_CV_CV_DIM):
60614 				VM_TRACE(ZEND_ASSIGN_SUB_SPEC_CV_CV_DIM)
60615 				ZEND_ASSIGN_SUB_SPEC_CV_CV_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60616 				HYBRID_BREAK();
60617 			HYBRID_CASE(ZEND_ASSIGN_SUB_SPEC_CV_CV_OBJ):
60618 				VM_TRACE(ZEND_ASSIGN_SUB_SPEC_CV_CV_OBJ)
60619 				ZEND_ASSIGN_SUB_SPEC_CV_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60620 				HYBRID_BREAK();
60621 			HYBRID_CASE(ZEND_ASSIGN_MUL_SPEC_CV_CV):
60622 				VM_TRACE(ZEND_ASSIGN_MUL_SPEC_CV_CV)
60623 				ZEND_ASSIGN_MUL_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60624 				HYBRID_BREAK();
60625 			HYBRID_CASE(ZEND_ASSIGN_MUL_SPEC_CV_CV_DIM):
60626 				VM_TRACE(ZEND_ASSIGN_MUL_SPEC_CV_CV_DIM)
60627 				ZEND_ASSIGN_MUL_SPEC_CV_CV_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60628 				HYBRID_BREAK();
60629 			HYBRID_CASE(ZEND_ASSIGN_MUL_SPEC_CV_CV_OBJ):
60630 				VM_TRACE(ZEND_ASSIGN_MUL_SPEC_CV_CV_OBJ)
60631 				ZEND_ASSIGN_MUL_SPEC_CV_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60632 				HYBRID_BREAK();
60633 			HYBRID_CASE(ZEND_ASSIGN_DIV_SPEC_CV_CV):
60634 				VM_TRACE(ZEND_ASSIGN_DIV_SPEC_CV_CV)
60635 				ZEND_ASSIGN_DIV_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60636 				HYBRID_BREAK();
60637 			HYBRID_CASE(ZEND_ASSIGN_DIV_SPEC_CV_CV_DIM):
60638 				VM_TRACE(ZEND_ASSIGN_DIV_SPEC_CV_CV_DIM)
60639 				ZEND_ASSIGN_DIV_SPEC_CV_CV_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60640 				HYBRID_BREAK();
60641 			HYBRID_CASE(ZEND_ASSIGN_DIV_SPEC_CV_CV_OBJ):
60642 				VM_TRACE(ZEND_ASSIGN_DIV_SPEC_CV_CV_OBJ)
60643 				ZEND_ASSIGN_DIV_SPEC_CV_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60644 				HYBRID_BREAK();
60645 			HYBRID_CASE(ZEND_ASSIGN_MOD_SPEC_CV_CV):
60646 				VM_TRACE(ZEND_ASSIGN_MOD_SPEC_CV_CV)
60647 				ZEND_ASSIGN_MOD_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60648 				HYBRID_BREAK();
60649 			HYBRID_CASE(ZEND_ASSIGN_MOD_SPEC_CV_CV_DIM):
60650 				VM_TRACE(ZEND_ASSIGN_MOD_SPEC_CV_CV_DIM)
60651 				ZEND_ASSIGN_MOD_SPEC_CV_CV_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60652 				HYBRID_BREAK();
60653 			HYBRID_CASE(ZEND_ASSIGN_MOD_SPEC_CV_CV_OBJ):
60654 				VM_TRACE(ZEND_ASSIGN_MOD_SPEC_CV_CV_OBJ)
60655 				ZEND_ASSIGN_MOD_SPEC_CV_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60656 				HYBRID_BREAK();
60657 			HYBRID_CASE(ZEND_ASSIGN_SL_SPEC_CV_CV):
60658 				VM_TRACE(ZEND_ASSIGN_SL_SPEC_CV_CV)
60659 				ZEND_ASSIGN_SL_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60660 				HYBRID_BREAK();
60661 			HYBRID_CASE(ZEND_ASSIGN_SL_SPEC_CV_CV_DIM):
60662 				VM_TRACE(ZEND_ASSIGN_SL_SPEC_CV_CV_DIM)
60663 				ZEND_ASSIGN_SL_SPEC_CV_CV_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60664 				HYBRID_BREAK();
60665 			HYBRID_CASE(ZEND_ASSIGN_SL_SPEC_CV_CV_OBJ):
60666 				VM_TRACE(ZEND_ASSIGN_SL_SPEC_CV_CV_OBJ)
60667 				ZEND_ASSIGN_SL_SPEC_CV_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60668 				HYBRID_BREAK();
60669 			HYBRID_CASE(ZEND_ASSIGN_SR_SPEC_CV_CV):
60670 				VM_TRACE(ZEND_ASSIGN_SR_SPEC_CV_CV)
60671 				ZEND_ASSIGN_SR_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60672 				HYBRID_BREAK();
60673 			HYBRID_CASE(ZEND_ASSIGN_SR_SPEC_CV_CV_DIM):
60674 				VM_TRACE(ZEND_ASSIGN_SR_SPEC_CV_CV_DIM)
60675 				ZEND_ASSIGN_SR_SPEC_CV_CV_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60676 				HYBRID_BREAK();
60677 			HYBRID_CASE(ZEND_ASSIGN_SR_SPEC_CV_CV_OBJ):
60678 				VM_TRACE(ZEND_ASSIGN_SR_SPEC_CV_CV_OBJ)
60679 				ZEND_ASSIGN_SR_SPEC_CV_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60680 				HYBRID_BREAK();
60681 			HYBRID_CASE(ZEND_ASSIGN_CONCAT_SPEC_CV_CV):
60682 				VM_TRACE(ZEND_ASSIGN_CONCAT_SPEC_CV_CV)
60683 				ZEND_ASSIGN_CONCAT_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60684 				HYBRID_BREAK();
60685 			HYBRID_CASE(ZEND_ASSIGN_CONCAT_SPEC_CV_CV_DIM):
60686 				VM_TRACE(ZEND_ASSIGN_CONCAT_SPEC_CV_CV_DIM)
60687 				ZEND_ASSIGN_CONCAT_SPEC_CV_CV_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60688 				HYBRID_BREAK();
60689 			HYBRID_CASE(ZEND_ASSIGN_CONCAT_SPEC_CV_CV_OBJ):
60690 				VM_TRACE(ZEND_ASSIGN_CONCAT_SPEC_CV_CV_OBJ)
60691 				ZEND_ASSIGN_CONCAT_SPEC_CV_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60692 				HYBRID_BREAK();
60693 			HYBRID_CASE(ZEND_ASSIGN_BW_OR_SPEC_CV_CV):
60694 				VM_TRACE(ZEND_ASSIGN_BW_OR_SPEC_CV_CV)
60695 				ZEND_ASSIGN_BW_OR_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60696 				HYBRID_BREAK();
60697 			HYBRID_CASE(ZEND_ASSIGN_BW_OR_SPEC_CV_CV_DIM):
60698 				VM_TRACE(ZEND_ASSIGN_BW_OR_SPEC_CV_CV_DIM)
60699 				ZEND_ASSIGN_BW_OR_SPEC_CV_CV_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60700 				HYBRID_BREAK();
60701 			HYBRID_CASE(ZEND_ASSIGN_BW_OR_SPEC_CV_CV_OBJ):
60702 				VM_TRACE(ZEND_ASSIGN_BW_OR_SPEC_CV_CV_OBJ)
60703 				ZEND_ASSIGN_BW_OR_SPEC_CV_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60704 				HYBRID_BREAK();
60705 			HYBRID_CASE(ZEND_ASSIGN_BW_AND_SPEC_CV_CV):
60706 				VM_TRACE(ZEND_ASSIGN_BW_AND_SPEC_CV_CV)
60707 				ZEND_ASSIGN_BW_AND_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60708 				HYBRID_BREAK();
60709 			HYBRID_CASE(ZEND_ASSIGN_BW_AND_SPEC_CV_CV_DIM):
60710 				VM_TRACE(ZEND_ASSIGN_BW_AND_SPEC_CV_CV_DIM)
60711 				ZEND_ASSIGN_BW_AND_SPEC_CV_CV_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60712 				HYBRID_BREAK();
60713 			HYBRID_CASE(ZEND_ASSIGN_BW_AND_SPEC_CV_CV_OBJ):
60714 				VM_TRACE(ZEND_ASSIGN_BW_AND_SPEC_CV_CV_OBJ)
60715 				ZEND_ASSIGN_BW_AND_SPEC_CV_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60716 				HYBRID_BREAK();
60717 			HYBRID_CASE(ZEND_ASSIGN_BW_XOR_SPEC_CV_CV):
60718 				VM_TRACE(ZEND_ASSIGN_BW_XOR_SPEC_CV_CV)
60719 				ZEND_ASSIGN_BW_XOR_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60720 				HYBRID_BREAK();
60721 			HYBRID_CASE(ZEND_ASSIGN_BW_XOR_SPEC_CV_CV_DIM):
60722 				VM_TRACE(ZEND_ASSIGN_BW_XOR_SPEC_CV_CV_DIM)
60723 				ZEND_ASSIGN_BW_XOR_SPEC_CV_CV_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60724 				HYBRID_BREAK();
60725 			HYBRID_CASE(ZEND_ASSIGN_BW_XOR_SPEC_CV_CV_OBJ):
60726 				VM_TRACE(ZEND_ASSIGN_BW_XOR_SPEC_CV_CV_OBJ)
60727 				ZEND_ASSIGN_BW_XOR_SPEC_CV_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60728 				HYBRID_BREAK();
60729 			HYBRID_CASE(ZEND_ASSIGN_POW_SPEC_CV_CV):
60730 				VM_TRACE(ZEND_ASSIGN_POW_SPEC_CV_CV)
60731 				ZEND_ASSIGN_POW_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60732 				HYBRID_BREAK();
60733 			HYBRID_CASE(ZEND_ASSIGN_POW_SPEC_CV_CV_DIM):
60734 				VM_TRACE(ZEND_ASSIGN_POW_SPEC_CV_CV_DIM)
60735 				ZEND_ASSIGN_POW_SPEC_CV_CV_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60736 				HYBRID_BREAK();
60737 			HYBRID_CASE(ZEND_ASSIGN_POW_SPEC_CV_CV_OBJ):
60738 				VM_TRACE(ZEND_ASSIGN_POW_SPEC_CV_CV_OBJ)
60739 				ZEND_ASSIGN_POW_SPEC_CV_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60740 				HYBRID_BREAK();
60741 			HYBRID_CASE(ZEND_PRE_INC_OBJ_SPEC_CV_CV):
60742 				VM_TRACE(ZEND_PRE_INC_OBJ_SPEC_CV_CV)
60743 				ZEND_PRE_INC_OBJ_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60744 				HYBRID_BREAK();
60745 			HYBRID_CASE(ZEND_PRE_DEC_OBJ_SPEC_CV_CV):
60746 				VM_TRACE(ZEND_PRE_DEC_OBJ_SPEC_CV_CV)
60747 				ZEND_PRE_DEC_OBJ_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60748 				HYBRID_BREAK();
60749 			HYBRID_CASE(ZEND_POST_INC_OBJ_SPEC_CV_CV):
60750 				VM_TRACE(ZEND_POST_INC_OBJ_SPEC_CV_CV)
60751 				ZEND_POST_INC_OBJ_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60752 				HYBRID_BREAK();
60753 			HYBRID_CASE(ZEND_POST_DEC_OBJ_SPEC_CV_CV):
60754 				VM_TRACE(ZEND_POST_DEC_OBJ_SPEC_CV_CV)
60755 				ZEND_POST_DEC_OBJ_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60756 				HYBRID_BREAK();
60757 			HYBRID_CASE(ZEND_FETCH_DIM_R_SPEC_CV_CV):
60758 				VM_TRACE(ZEND_FETCH_DIM_R_SPEC_CV_CV)
60759 				ZEND_FETCH_DIM_R_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60760 				HYBRID_BREAK();
60761 			HYBRID_CASE(ZEND_FETCH_DIM_W_SPEC_CV_CV):
60762 				VM_TRACE(ZEND_FETCH_DIM_W_SPEC_CV_CV)
60763 				ZEND_FETCH_DIM_W_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60764 				HYBRID_BREAK();
60765 			HYBRID_CASE(ZEND_FETCH_DIM_RW_SPEC_CV_CV):
60766 				VM_TRACE(ZEND_FETCH_DIM_RW_SPEC_CV_CV)
60767 				ZEND_FETCH_DIM_RW_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60768 				HYBRID_BREAK();
60769 			HYBRID_CASE(ZEND_FETCH_DIM_IS_SPEC_CV_CV):
60770 				VM_TRACE(ZEND_FETCH_DIM_IS_SPEC_CV_CV)
60771 				ZEND_FETCH_DIM_IS_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60772 				HYBRID_BREAK();
60773 			HYBRID_CASE(ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_CV):
60774 				VM_TRACE(ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_CV)
60775 				ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60776 				HYBRID_BREAK();
60777 			HYBRID_CASE(ZEND_FETCH_DIM_UNSET_SPEC_CV_CV):
60778 				VM_TRACE(ZEND_FETCH_DIM_UNSET_SPEC_CV_CV)
60779 				ZEND_FETCH_DIM_UNSET_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60780 				HYBRID_BREAK();
60781 			HYBRID_CASE(ZEND_FETCH_OBJ_R_SPEC_CV_CV):
60782 				VM_TRACE(ZEND_FETCH_OBJ_R_SPEC_CV_CV)
60783 				ZEND_FETCH_OBJ_R_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60784 				HYBRID_BREAK();
60785 			HYBRID_CASE(ZEND_FETCH_OBJ_W_SPEC_CV_CV):
60786 				VM_TRACE(ZEND_FETCH_OBJ_W_SPEC_CV_CV)
60787 				ZEND_FETCH_OBJ_W_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60788 				HYBRID_BREAK();
60789 			HYBRID_CASE(ZEND_FETCH_OBJ_RW_SPEC_CV_CV):
60790 				VM_TRACE(ZEND_FETCH_OBJ_RW_SPEC_CV_CV)
60791 				ZEND_FETCH_OBJ_RW_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60792 				HYBRID_BREAK();
60793 			HYBRID_CASE(ZEND_FETCH_OBJ_IS_SPEC_CV_CV):
60794 				VM_TRACE(ZEND_FETCH_OBJ_IS_SPEC_CV_CV)
60795 				ZEND_FETCH_OBJ_IS_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60796 				HYBRID_BREAK();
60797 			HYBRID_CASE(ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CV_CV):
60798 				VM_TRACE(ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CV_CV)
60799 				ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60800 				HYBRID_BREAK();
60801 			HYBRID_CASE(ZEND_FETCH_OBJ_UNSET_SPEC_CV_CV):
60802 				VM_TRACE(ZEND_FETCH_OBJ_UNSET_SPEC_CV_CV)
60803 				ZEND_FETCH_OBJ_UNSET_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60804 				HYBRID_BREAK();
60805 			HYBRID_CASE(ZEND_ASSIGN_OBJ_SPEC_CV_CV_OP_DATA_CONST):
60806 				VM_TRACE(ZEND_ASSIGN_OBJ_SPEC_CV_CV_OP_DATA_CONST)
60807 				ZEND_ASSIGN_OBJ_SPEC_CV_CV_OP_DATA_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60808 				HYBRID_BREAK();
60809 			HYBRID_CASE(ZEND_ASSIGN_OBJ_SPEC_CV_CV_OP_DATA_TMP):
60810 				VM_TRACE(ZEND_ASSIGN_OBJ_SPEC_CV_CV_OP_DATA_TMP)
60811 				ZEND_ASSIGN_OBJ_SPEC_CV_CV_OP_DATA_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60812 				HYBRID_BREAK();
60813 			HYBRID_CASE(ZEND_ASSIGN_OBJ_SPEC_CV_CV_OP_DATA_VAR):
60814 				VM_TRACE(ZEND_ASSIGN_OBJ_SPEC_CV_CV_OP_DATA_VAR)
60815 				ZEND_ASSIGN_OBJ_SPEC_CV_CV_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60816 				HYBRID_BREAK();
60817 			HYBRID_CASE(ZEND_ASSIGN_OBJ_SPEC_CV_CV_OP_DATA_CV):
60818 				VM_TRACE(ZEND_ASSIGN_OBJ_SPEC_CV_CV_OP_DATA_CV)
60819 				ZEND_ASSIGN_OBJ_SPEC_CV_CV_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60820 				HYBRID_BREAK();
60821 			HYBRID_CASE(ZEND_ASSIGN_DIM_SPEC_CV_CV_OP_DATA_CONST):
60822 				VM_TRACE(ZEND_ASSIGN_DIM_SPEC_CV_CV_OP_DATA_CONST)
60823 				ZEND_ASSIGN_DIM_SPEC_CV_CV_OP_DATA_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60824 				HYBRID_BREAK();
60825 			HYBRID_CASE(ZEND_ASSIGN_DIM_SPEC_CV_CV_OP_DATA_TMP):
60826 				VM_TRACE(ZEND_ASSIGN_DIM_SPEC_CV_CV_OP_DATA_TMP)
60827 				ZEND_ASSIGN_DIM_SPEC_CV_CV_OP_DATA_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60828 				HYBRID_BREAK();
60829 			HYBRID_CASE(ZEND_ASSIGN_DIM_SPEC_CV_CV_OP_DATA_VAR):
60830 				VM_TRACE(ZEND_ASSIGN_DIM_SPEC_CV_CV_OP_DATA_VAR)
60831 				ZEND_ASSIGN_DIM_SPEC_CV_CV_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60832 				HYBRID_BREAK();
60833 			HYBRID_CASE(ZEND_ASSIGN_DIM_SPEC_CV_CV_OP_DATA_CV):
60834 				VM_TRACE(ZEND_ASSIGN_DIM_SPEC_CV_CV_OP_DATA_CV)
60835 				ZEND_ASSIGN_DIM_SPEC_CV_CV_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60836 				HYBRID_BREAK();
60837 			HYBRID_CASE(ZEND_ASSIGN_SPEC_CV_CV_RETVAL_UNUSED):
60838 				VM_TRACE(ZEND_ASSIGN_SPEC_CV_CV_RETVAL_UNUSED)
60839 				ZEND_ASSIGN_SPEC_CV_CV_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60840 				HYBRID_BREAK();
60841 			HYBRID_CASE(ZEND_ASSIGN_SPEC_CV_CV_RETVAL_USED):
60842 				VM_TRACE(ZEND_ASSIGN_SPEC_CV_CV_RETVAL_USED)
60843 				ZEND_ASSIGN_SPEC_CV_CV_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60844 				HYBRID_BREAK();
60845 			HYBRID_CASE(ZEND_ASSIGN_REF_SPEC_CV_CV):
60846 				VM_TRACE(ZEND_ASSIGN_REF_SPEC_CV_CV)
60847 				ZEND_ASSIGN_REF_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60848 				HYBRID_BREAK();
60849 			HYBRID_CASE(ZEND_FAST_CONCAT_SPEC_CV_CV):
60850 				VM_TRACE(ZEND_FAST_CONCAT_SPEC_CV_CV)
60851 				ZEND_FAST_CONCAT_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60852 				HYBRID_BREAK();
60853 			HYBRID_CASE(ZEND_INIT_METHOD_CALL_SPEC_CV_CV):
60854 				VM_TRACE(ZEND_INIT_METHOD_CALL_SPEC_CV_CV)
60855 				ZEND_INIT_METHOD_CALL_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60856 				HYBRID_BREAK();
60857 			HYBRID_CASE(ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_CV):
60858 				VM_TRACE(ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_CV)
60859 				ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60860 				HYBRID_BREAK();
60861 			HYBRID_CASE(ZEND_INIT_ARRAY_SPEC_CV_CV):
60862 				VM_TRACE(ZEND_INIT_ARRAY_SPEC_CV_CV)
60863 				ZEND_INIT_ARRAY_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60864 				HYBRID_BREAK();
60865 			HYBRID_CASE(ZEND_UNSET_DIM_SPEC_CV_CV):
60866 				VM_TRACE(ZEND_UNSET_DIM_SPEC_CV_CV)
60867 				ZEND_UNSET_DIM_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60868 				HYBRID_BREAK();
60869 			HYBRID_CASE(ZEND_UNSET_OBJ_SPEC_CV_CV):
60870 				VM_TRACE(ZEND_UNSET_OBJ_SPEC_CV_CV)
60871 				ZEND_UNSET_OBJ_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60872 				HYBRID_BREAK();
60873 			HYBRID_CASE(ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CV_CV):
60874 				VM_TRACE(ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CV_CV)
60875 				ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60876 				HYBRID_BREAK();
60877 			HYBRID_CASE(ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CV_CV):
60878 				VM_TRACE(ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CV_CV)
60879 				ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60880 				HYBRID_BREAK();
60881 			HYBRID_CASE(ZEND_YIELD_SPEC_CV_CV):
60882 				VM_TRACE(ZEND_YIELD_SPEC_CV_CV)
60883 				ZEND_YIELD_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60884 				HYBRID_BREAK();
60885 			HYBRID_CASE(HYBRID_HALT):
60886 				execute_data = orig_execute_data;
60887 				opline = orig_opline;
60888 				return;
60889 			HYBRID_DEFAULT:
60890 				VM_TRACE(ZEND_NULL)
60891 				ZEND_NULL_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60892 				HYBRID_BREAK(); /* Never reached */
60893 #else
60894 #ifdef ZEND_VM_FP_GLOBAL_REG
60895 			execute_data = orig_execute_data;
60896 # ifdef ZEND_VM_IP_GLOBAL_REG
60897 			opline = orig_opline;
60898 # endif
60899 			return;
60900 #else
60901 			if (EXPECTED(ret > 0)) {
60902 				execute_data = EG(current_execute_data);
60903 				ZEND_VM_LOOP_INTERRUPT_CHECK();
60904 			} else {
60905 # ifdef ZEND_VM_IP_GLOBAL_REG
60906 				opline = orig_opline;
60907 # endif
60908 				return;
60909 			}
60910 #endif
60911 #endif
60912 		}
60913 
60914 	}
60915 	zend_error_noreturn(E_CORE_ERROR, "Arrived at end of main loop which shouldn't happen");
60916 }
60917 
60918 ZEND_API void zend_execute(zend_op_array *op_array, zval *return_value)
60919 {
60920 	zend_execute_data *execute_data;
60921 
60922 	if (EG(exception) != NULL) {
60923 		return;
60924 	}
60925 
60926 	execute_data = zend_vm_stack_push_call_frame(ZEND_CALL_TOP_CODE | ZEND_CALL_HAS_SYMBOL_TABLE,
60927 		(zend_function*)op_array, 0, zend_get_called_scope(EG(current_execute_data)), zend_get_this_object(EG(current_execute_data)));
60928 	if (EG(current_execute_data)) {
60929 		execute_data->symbol_table = zend_rebuild_symbol_table();
60930 	} else {
60931 		execute_data->symbol_table = &EG(symbol_table);
60932 	}
60933 	EX(prev_execute_data) = EG(current_execute_data);
60934 	i_init_code_execute_data(execute_data, op_array, return_value);
60935 	zend_execute_ex(execute_data);
60936 	zend_vm_stack_free_call_frame(execute_data);
60937 }
60938 
60939 
60940 void zend_vm_init(void)
60941 {
60942 	static const void * const labels[] = {
60943 		ZEND_NOP_SPEC_HANDLER,
60944 		ZEND_ADD_SPEC_CONST_CONST_HANDLER,
60945 		ZEND_ADD_SPEC_CONST_TMPVAR_HANDLER,
60946 		ZEND_ADD_SPEC_CONST_TMPVAR_HANDLER,
60947 		ZEND_NULL_HANDLER,
60948 		ZEND_ADD_SPEC_CONST_CV_HANDLER,
60949 		ZEND_ADD_SPEC_TMPVAR_CONST_HANDLER,
60950 		ZEND_ADD_SPEC_TMPVAR_TMPVAR_HANDLER,
60951 		ZEND_ADD_SPEC_TMPVAR_TMPVAR_HANDLER,
60952 		ZEND_NULL_HANDLER,
60953 		ZEND_ADD_SPEC_TMPVAR_CV_HANDLER,
60954 		ZEND_ADD_SPEC_TMPVAR_CONST_HANDLER,
60955 		ZEND_ADD_SPEC_TMPVAR_TMPVAR_HANDLER,
60956 		ZEND_ADD_SPEC_TMPVAR_TMPVAR_HANDLER,
60957 		ZEND_NULL_HANDLER,
60958 		ZEND_ADD_SPEC_TMPVAR_CV_HANDLER,
60959 		ZEND_NULL_HANDLER,
60960 		ZEND_NULL_HANDLER,
60961 		ZEND_NULL_HANDLER,
60962 		ZEND_NULL_HANDLER,
60963 		ZEND_NULL_HANDLER,
60964 		ZEND_ADD_SPEC_CV_CONST_HANDLER,
60965 		ZEND_ADD_SPEC_CV_TMPVAR_HANDLER,
60966 		ZEND_ADD_SPEC_CV_TMPVAR_HANDLER,
60967 		ZEND_NULL_HANDLER,
60968 		ZEND_ADD_SPEC_CV_CV_HANDLER,
60969 		ZEND_SUB_SPEC_CONST_CONST_HANDLER,
60970 		ZEND_SUB_SPEC_CONST_TMPVAR_HANDLER,
60971 		ZEND_SUB_SPEC_CONST_TMPVAR_HANDLER,
60972 		ZEND_NULL_HANDLER,
60973 		ZEND_SUB_SPEC_CONST_CV_HANDLER,
60974 		ZEND_SUB_SPEC_TMPVAR_CONST_HANDLER,
60975 		ZEND_SUB_SPEC_TMPVAR_TMPVAR_HANDLER,
60976 		ZEND_SUB_SPEC_TMPVAR_TMPVAR_HANDLER,
60977 		ZEND_NULL_HANDLER,
60978 		ZEND_SUB_SPEC_TMPVAR_CV_HANDLER,
60979 		ZEND_SUB_SPEC_TMPVAR_CONST_HANDLER,
60980 		ZEND_SUB_SPEC_TMPVAR_TMPVAR_HANDLER,
60981 		ZEND_SUB_SPEC_TMPVAR_TMPVAR_HANDLER,
60982 		ZEND_NULL_HANDLER,
60983 		ZEND_SUB_SPEC_TMPVAR_CV_HANDLER,
60984 		ZEND_NULL_HANDLER,
60985 		ZEND_NULL_HANDLER,
60986 		ZEND_NULL_HANDLER,
60987 		ZEND_NULL_HANDLER,
60988 		ZEND_NULL_HANDLER,
60989 		ZEND_SUB_SPEC_CV_CONST_HANDLER,
60990 		ZEND_SUB_SPEC_CV_TMPVAR_HANDLER,
60991 		ZEND_SUB_SPEC_CV_TMPVAR_HANDLER,
60992 		ZEND_NULL_HANDLER,
60993 		ZEND_SUB_SPEC_CV_CV_HANDLER,
60994 		ZEND_MUL_SPEC_CONST_CONST_HANDLER,
60995 		ZEND_NULL_HANDLER,
60996 		ZEND_NULL_HANDLER,
60997 		ZEND_NULL_HANDLER,
60998 		ZEND_NULL_HANDLER,
60999 		ZEND_MUL_SPEC_TMPVAR_CONST_HANDLER,
61000 		ZEND_MUL_SPEC_TMPVAR_TMPVAR_HANDLER,
61001 		ZEND_MUL_SPEC_TMPVAR_TMPVAR_HANDLER,
61002 		ZEND_NULL_HANDLER,
61003 		ZEND_NULL_HANDLER,
61004 		ZEND_MUL_SPEC_TMPVAR_CONST_HANDLER,
61005 		ZEND_MUL_SPEC_TMPVAR_TMPVAR_HANDLER,
61006 		ZEND_MUL_SPEC_TMPVAR_TMPVAR_HANDLER,
61007 		ZEND_NULL_HANDLER,
61008 		ZEND_NULL_HANDLER,
61009 		ZEND_NULL_HANDLER,
61010 		ZEND_NULL_HANDLER,
61011 		ZEND_NULL_HANDLER,
61012 		ZEND_NULL_HANDLER,
61013 		ZEND_NULL_HANDLER,
61014 		ZEND_MUL_SPEC_CV_CONST_HANDLER,
61015 		ZEND_MUL_SPEC_CV_TMPVAR_HANDLER,
61016 		ZEND_MUL_SPEC_CV_TMPVAR_HANDLER,
61017 		ZEND_NULL_HANDLER,
61018 		ZEND_MUL_SPEC_CV_CV_HANDLER,
61019 		ZEND_DIV_SPEC_CONST_CONST_HANDLER,
61020 		ZEND_DIV_SPEC_CONST_TMPVAR_HANDLER,
61021 		ZEND_DIV_SPEC_CONST_TMPVAR_HANDLER,
61022 		ZEND_NULL_HANDLER,
61023 		ZEND_DIV_SPEC_CONST_CV_HANDLER,
61024 		ZEND_DIV_SPEC_TMPVAR_CONST_HANDLER,
61025 		ZEND_DIV_SPEC_TMPVAR_TMPVAR_HANDLER,
61026 		ZEND_DIV_SPEC_TMPVAR_TMPVAR_HANDLER,
61027 		ZEND_NULL_HANDLER,
61028 		ZEND_DIV_SPEC_TMPVAR_CV_HANDLER,
61029 		ZEND_DIV_SPEC_TMPVAR_CONST_HANDLER,
61030 		ZEND_DIV_SPEC_TMPVAR_TMPVAR_HANDLER,
61031 		ZEND_DIV_SPEC_TMPVAR_TMPVAR_HANDLER,
61032 		ZEND_NULL_HANDLER,
61033 		ZEND_DIV_SPEC_TMPVAR_CV_HANDLER,
61034 		ZEND_NULL_HANDLER,
61035 		ZEND_NULL_HANDLER,
61036 		ZEND_NULL_HANDLER,
61037 		ZEND_NULL_HANDLER,
61038 		ZEND_NULL_HANDLER,
61039 		ZEND_DIV_SPEC_CV_CONST_HANDLER,
61040 		ZEND_DIV_SPEC_CV_TMPVAR_HANDLER,
61041 		ZEND_DIV_SPEC_CV_TMPVAR_HANDLER,
61042 		ZEND_NULL_HANDLER,
61043 		ZEND_DIV_SPEC_CV_CV_HANDLER,
61044 		ZEND_MOD_SPEC_CONST_CONST_HANDLER,
61045 		ZEND_MOD_SPEC_CONST_TMPVAR_HANDLER,
61046 		ZEND_MOD_SPEC_CONST_TMPVAR_HANDLER,
61047 		ZEND_NULL_HANDLER,
61048 		ZEND_MOD_SPEC_CONST_CV_HANDLER,
61049 		ZEND_MOD_SPEC_TMPVAR_CONST_HANDLER,
61050 		ZEND_MOD_SPEC_TMPVAR_TMPVAR_HANDLER,
61051 		ZEND_MOD_SPEC_TMPVAR_TMPVAR_HANDLER,
61052 		ZEND_NULL_HANDLER,
61053 		ZEND_MOD_SPEC_TMPVAR_CV_HANDLER,
61054 		ZEND_MOD_SPEC_TMPVAR_CONST_HANDLER,
61055 		ZEND_MOD_SPEC_TMPVAR_TMPVAR_HANDLER,
61056 		ZEND_MOD_SPEC_TMPVAR_TMPVAR_HANDLER,
61057 		ZEND_NULL_HANDLER,
61058 		ZEND_MOD_SPEC_TMPVAR_CV_HANDLER,
61059 		ZEND_NULL_HANDLER,
61060 		ZEND_NULL_HANDLER,
61061 		ZEND_NULL_HANDLER,
61062 		ZEND_NULL_HANDLER,
61063 		ZEND_NULL_HANDLER,
61064 		ZEND_MOD_SPEC_CV_CONST_HANDLER,
61065 		ZEND_MOD_SPEC_CV_TMPVAR_HANDLER,
61066 		ZEND_MOD_SPEC_CV_TMPVAR_HANDLER,
61067 		ZEND_NULL_HANDLER,
61068 		ZEND_MOD_SPEC_CV_CV_HANDLER,
61069 		ZEND_SL_SPEC_CONST_CONST_HANDLER,
61070 		ZEND_SL_SPEC_CONST_TMPVAR_HANDLER,
61071 		ZEND_SL_SPEC_CONST_TMPVAR_HANDLER,
61072 		ZEND_NULL_HANDLER,
61073 		ZEND_SL_SPEC_CONST_CV_HANDLER,
61074 		ZEND_SL_SPEC_TMPVAR_CONST_HANDLER,
61075 		ZEND_SL_SPEC_TMPVAR_TMPVAR_HANDLER,
61076 		ZEND_SL_SPEC_TMPVAR_TMPVAR_HANDLER,
61077 		ZEND_NULL_HANDLER,
61078 		ZEND_SL_SPEC_TMPVAR_CV_HANDLER,
61079 		ZEND_SL_SPEC_TMPVAR_CONST_HANDLER,
61080 		ZEND_SL_SPEC_TMPVAR_TMPVAR_HANDLER,
61081 		ZEND_SL_SPEC_TMPVAR_TMPVAR_HANDLER,
61082 		ZEND_NULL_HANDLER,
61083 		ZEND_SL_SPEC_TMPVAR_CV_HANDLER,
61084 		ZEND_NULL_HANDLER,
61085 		ZEND_NULL_HANDLER,
61086 		ZEND_NULL_HANDLER,
61087 		ZEND_NULL_HANDLER,
61088 		ZEND_NULL_HANDLER,
61089 		ZEND_SL_SPEC_CV_CONST_HANDLER,
61090 		ZEND_SL_SPEC_CV_TMPVAR_HANDLER,
61091 		ZEND_SL_SPEC_CV_TMPVAR_HANDLER,
61092 		ZEND_NULL_HANDLER,
61093 		ZEND_SL_SPEC_CV_CV_HANDLER,
61094 		ZEND_SR_SPEC_CONST_CONST_HANDLER,
61095 		ZEND_SR_SPEC_CONST_TMPVAR_HANDLER,
61096 		ZEND_SR_SPEC_CONST_TMPVAR_HANDLER,
61097 		ZEND_NULL_HANDLER,
61098 		ZEND_SR_SPEC_CONST_CV_HANDLER,
61099 		ZEND_SR_SPEC_TMPVAR_CONST_HANDLER,
61100 		ZEND_SR_SPEC_TMPVAR_TMPVAR_HANDLER,
61101 		ZEND_SR_SPEC_TMPVAR_TMPVAR_HANDLER,
61102 		ZEND_NULL_HANDLER,
61103 		ZEND_SR_SPEC_TMPVAR_CV_HANDLER,
61104 		ZEND_SR_SPEC_TMPVAR_CONST_HANDLER,
61105 		ZEND_SR_SPEC_TMPVAR_TMPVAR_HANDLER,
61106 		ZEND_SR_SPEC_TMPVAR_TMPVAR_HANDLER,
61107 		ZEND_NULL_HANDLER,
61108 		ZEND_SR_SPEC_TMPVAR_CV_HANDLER,
61109 		ZEND_NULL_HANDLER,
61110 		ZEND_NULL_HANDLER,
61111 		ZEND_NULL_HANDLER,
61112 		ZEND_NULL_HANDLER,
61113 		ZEND_NULL_HANDLER,
61114 		ZEND_SR_SPEC_CV_CONST_HANDLER,
61115 		ZEND_SR_SPEC_CV_TMPVAR_HANDLER,
61116 		ZEND_SR_SPEC_CV_TMPVAR_HANDLER,
61117 		ZEND_NULL_HANDLER,
61118 		ZEND_SR_SPEC_CV_CV_HANDLER,
61119 		ZEND_NULL_HANDLER,
61120 		ZEND_CONCAT_SPEC_CONST_TMPVAR_HANDLER,
61121 		ZEND_CONCAT_SPEC_CONST_TMPVAR_HANDLER,
61122 		ZEND_NULL_HANDLER,
61123 		ZEND_CONCAT_SPEC_CONST_CV_HANDLER,
61124 		ZEND_CONCAT_SPEC_TMPVAR_CONST_HANDLER,
61125 		ZEND_CONCAT_SPEC_TMPVAR_TMPVAR_HANDLER,
61126 		ZEND_CONCAT_SPEC_TMPVAR_TMPVAR_HANDLER,
61127 		ZEND_NULL_HANDLER,
61128 		ZEND_CONCAT_SPEC_TMPVAR_CV_HANDLER,
61129 		ZEND_CONCAT_SPEC_TMPVAR_CONST_HANDLER,
61130 		ZEND_CONCAT_SPEC_TMPVAR_TMPVAR_HANDLER,
61131 		ZEND_CONCAT_SPEC_TMPVAR_TMPVAR_HANDLER,
61132 		ZEND_NULL_HANDLER,
61133 		ZEND_CONCAT_SPEC_TMPVAR_CV_HANDLER,
61134 		ZEND_NULL_HANDLER,
61135 		ZEND_NULL_HANDLER,
61136 		ZEND_NULL_HANDLER,
61137 		ZEND_NULL_HANDLER,
61138 		ZEND_NULL_HANDLER,
61139 		ZEND_CONCAT_SPEC_CV_CONST_HANDLER,
61140 		ZEND_CONCAT_SPEC_CV_TMPVAR_HANDLER,
61141 		ZEND_CONCAT_SPEC_CV_TMPVAR_HANDLER,
61142 		ZEND_NULL_HANDLER,
61143 		ZEND_CONCAT_SPEC_CV_CV_HANDLER,
61144 		ZEND_BW_OR_SPEC_CONST_CONST_HANDLER,
61145 		ZEND_NULL_HANDLER,
61146 		ZEND_NULL_HANDLER,
61147 		ZEND_NULL_HANDLER,
61148 		ZEND_NULL_HANDLER,
61149 		ZEND_BW_OR_SPEC_TMPVAR_CONST_HANDLER,
61150 		ZEND_BW_OR_SPEC_TMPVAR_TMPVAR_HANDLER,
61151 		ZEND_BW_OR_SPEC_TMPVAR_TMPVAR_HANDLER,
61152 		ZEND_NULL_HANDLER,
61153 		ZEND_NULL_HANDLER,
61154 		ZEND_BW_OR_SPEC_TMPVAR_CONST_HANDLER,
61155 		ZEND_BW_OR_SPEC_TMPVAR_TMPVAR_HANDLER,
61156 		ZEND_BW_OR_SPEC_TMPVAR_TMPVAR_HANDLER,
61157 		ZEND_NULL_HANDLER,
61158 		ZEND_NULL_HANDLER,
61159 		ZEND_NULL_HANDLER,
61160 		ZEND_NULL_HANDLER,
61161 		ZEND_NULL_HANDLER,
61162 		ZEND_NULL_HANDLER,
61163 		ZEND_NULL_HANDLER,
61164 		ZEND_BW_OR_SPEC_CV_CONST_HANDLER,
61165 		ZEND_BW_OR_SPEC_CV_TMPVAR_HANDLER,
61166 		ZEND_BW_OR_SPEC_CV_TMPVAR_HANDLER,
61167 		ZEND_NULL_HANDLER,
61168 		ZEND_BW_OR_SPEC_CV_CV_HANDLER,
61169 		ZEND_BW_AND_SPEC_CONST_CONST_HANDLER,
61170 		ZEND_NULL_HANDLER,
61171 		ZEND_NULL_HANDLER,
61172 		ZEND_NULL_HANDLER,
61173 		ZEND_NULL_HANDLER,
61174 		ZEND_BW_AND_SPEC_TMPVAR_CONST_HANDLER,
61175 		ZEND_BW_AND_SPEC_TMPVAR_TMPVAR_HANDLER,
61176 		ZEND_BW_AND_SPEC_TMPVAR_TMPVAR_HANDLER,
61177 		ZEND_NULL_HANDLER,
61178 		ZEND_NULL_HANDLER,
61179 		ZEND_BW_AND_SPEC_TMPVAR_CONST_HANDLER,
61180 		ZEND_BW_AND_SPEC_TMPVAR_TMPVAR_HANDLER,
61181 		ZEND_BW_AND_SPEC_TMPVAR_TMPVAR_HANDLER,
61182 		ZEND_NULL_HANDLER,
61183 		ZEND_NULL_HANDLER,
61184 		ZEND_NULL_HANDLER,
61185 		ZEND_NULL_HANDLER,
61186 		ZEND_NULL_HANDLER,
61187 		ZEND_NULL_HANDLER,
61188 		ZEND_NULL_HANDLER,
61189 		ZEND_BW_AND_SPEC_CV_CONST_HANDLER,
61190 		ZEND_BW_AND_SPEC_CV_TMPVAR_HANDLER,
61191 		ZEND_BW_AND_SPEC_CV_TMPVAR_HANDLER,
61192 		ZEND_NULL_HANDLER,
61193 		ZEND_BW_AND_SPEC_CV_CV_HANDLER,
61194 		ZEND_BW_XOR_SPEC_CONST_CONST_HANDLER,
61195 		ZEND_NULL_HANDLER,
61196 		ZEND_NULL_HANDLER,
61197 		ZEND_NULL_HANDLER,
61198 		ZEND_NULL_HANDLER,
61199 		ZEND_BW_XOR_SPEC_TMPVAR_CONST_HANDLER,
61200 		ZEND_BW_XOR_SPEC_TMPVAR_TMPVAR_HANDLER,
61201 		ZEND_BW_XOR_SPEC_TMPVAR_TMPVAR_HANDLER,
61202 		ZEND_NULL_HANDLER,
61203 		ZEND_NULL_HANDLER,
61204 		ZEND_BW_XOR_SPEC_TMPVAR_CONST_HANDLER,
61205 		ZEND_BW_XOR_SPEC_TMPVAR_TMPVAR_HANDLER,
61206 		ZEND_BW_XOR_SPEC_TMPVAR_TMPVAR_HANDLER,
61207 		ZEND_NULL_HANDLER,
61208 		ZEND_NULL_HANDLER,
61209 		ZEND_NULL_HANDLER,
61210 		ZEND_NULL_HANDLER,
61211 		ZEND_NULL_HANDLER,
61212 		ZEND_NULL_HANDLER,
61213 		ZEND_NULL_HANDLER,
61214 		ZEND_BW_XOR_SPEC_CV_CONST_HANDLER,
61215 		ZEND_BW_XOR_SPEC_CV_TMPVAR_HANDLER,
61216 		ZEND_BW_XOR_SPEC_CV_TMPVAR_HANDLER,
61217 		ZEND_NULL_HANDLER,
61218 		ZEND_BW_XOR_SPEC_CV_CV_HANDLER,
61219 		ZEND_BW_NOT_SPEC_CONST_HANDLER,
61220 		ZEND_BW_NOT_SPEC_TMPVAR_HANDLER,
61221 		ZEND_BW_NOT_SPEC_TMPVAR_HANDLER,
61222 		ZEND_NULL_HANDLER,
61223 		ZEND_BW_NOT_SPEC_CV_HANDLER,
61224 		ZEND_BOOL_NOT_SPEC_CONST_HANDLER,
61225 		ZEND_BOOL_NOT_SPEC_TMPVAR_HANDLER,
61226 		ZEND_BOOL_NOT_SPEC_TMPVAR_HANDLER,
61227 		ZEND_NULL_HANDLER,
61228 		ZEND_BOOL_NOT_SPEC_CV_HANDLER,
61229 		ZEND_BOOL_XOR_SPEC_CONST_CONST_HANDLER,
61230 		ZEND_NULL_HANDLER,
61231 		ZEND_NULL_HANDLER,
61232 		ZEND_NULL_HANDLER,
61233 		ZEND_NULL_HANDLER,
61234 		ZEND_BOOL_XOR_SPEC_TMPVAR_CONST_HANDLER,
61235 		ZEND_BOOL_XOR_SPEC_TMPVAR_TMPVAR_HANDLER,
61236 		ZEND_BOOL_XOR_SPEC_TMPVAR_TMPVAR_HANDLER,
61237 		ZEND_NULL_HANDLER,
61238 		ZEND_NULL_HANDLER,
61239 		ZEND_BOOL_XOR_SPEC_TMPVAR_CONST_HANDLER,
61240 		ZEND_BOOL_XOR_SPEC_TMPVAR_TMPVAR_HANDLER,
61241 		ZEND_BOOL_XOR_SPEC_TMPVAR_TMPVAR_HANDLER,
61242 		ZEND_NULL_HANDLER,
61243 		ZEND_NULL_HANDLER,
61244 		ZEND_NULL_HANDLER,
61245 		ZEND_NULL_HANDLER,
61246 		ZEND_NULL_HANDLER,
61247 		ZEND_NULL_HANDLER,
61248 		ZEND_NULL_HANDLER,
61249 		ZEND_BOOL_XOR_SPEC_CV_CONST_HANDLER,
61250 		ZEND_BOOL_XOR_SPEC_CV_TMPVAR_HANDLER,
61251 		ZEND_BOOL_XOR_SPEC_CV_TMPVAR_HANDLER,
61252 		ZEND_NULL_HANDLER,
61253 		ZEND_BOOL_XOR_SPEC_CV_CV_HANDLER,
61254 		ZEND_IS_IDENTICAL_SPEC_CONST_CONST_HANDLER,
61255 		ZEND_NULL_HANDLER,
61256 		ZEND_NULL_HANDLER,
61257 		ZEND_NULL_HANDLER,
61258 		ZEND_NULL_HANDLER,
61259 		ZEND_IS_IDENTICAL_SPEC_TMP_CONST_HANDLER,
61260 		ZEND_IS_IDENTICAL_SPEC_TMP_TMP_HANDLER,
61261 		ZEND_NULL_HANDLER,
61262 		ZEND_NULL_HANDLER,
61263 		ZEND_NULL_HANDLER,
61264 		ZEND_IS_IDENTICAL_SPEC_VAR_CONST_HANDLER,
61265 		ZEND_IS_IDENTICAL_SPEC_VAR_TMP_HANDLER,
61266 		ZEND_IS_IDENTICAL_SPEC_VAR_VAR_HANDLER,
61267 		ZEND_NULL_HANDLER,
61268 		ZEND_NULL_HANDLER,
61269 		ZEND_NULL_HANDLER,
61270 		ZEND_NULL_HANDLER,
61271 		ZEND_NULL_HANDLER,
61272 		ZEND_NULL_HANDLER,
61273 		ZEND_NULL_HANDLER,
61274 		ZEND_IS_IDENTICAL_SPEC_CV_CONST_HANDLER,
61275 		ZEND_IS_IDENTICAL_SPEC_CV_TMP_HANDLER,
61276 		ZEND_IS_IDENTICAL_SPEC_CV_VAR_HANDLER,
61277 		ZEND_NULL_HANDLER,
61278 		ZEND_IS_IDENTICAL_SPEC_CV_CV_HANDLER,
61279 		ZEND_IS_NOT_IDENTICAL_SPEC_CONST_CONST_HANDLER,
61280 		ZEND_NULL_HANDLER,
61281 		ZEND_NULL_HANDLER,
61282 		ZEND_NULL_HANDLER,
61283 		ZEND_NULL_HANDLER,
61284 		ZEND_IS_NOT_IDENTICAL_SPEC_TMP_CONST_HANDLER,
61285 		ZEND_IS_NOT_IDENTICAL_SPEC_TMP_TMP_HANDLER,
61286 		ZEND_NULL_HANDLER,
61287 		ZEND_NULL_HANDLER,
61288 		ZEND_NULL_HANDLER,
61289 		ZEND_IS_NOT_IDENTICAL_SPEC_VAR_CONST_HANDLER,
61290 		ZEND_IS_NOT_IDENTICAL_SPEC_VAR_TMP_HANDLER,
61291 		ZEND_IS_NOT_IDENTICAL_SPEC_VAR_VAR_HANDLER,
61292 		ZEND_NULL_HANDLER,
61293 		ZEND_NULL_HANDLER,
61294 		ZEND_NULL_HANDLER,
61295 		ZEND_NULL_HANDLER,
61296 		ZEND_NULL_HANDLER,
61297 		ZEND_NULL_HANDLER,
61298 		ZEND_NULL_HANDLER,
61299 		ZEND_IS_NOT_IDENTICAL_SPEC_CV_CONST_HANDLER,
61300 		ZEND_IS_NOT_IDENTICAL_SPEC_CV_TMP_HANDLER,
61301 		ZEND_IS_NOT_IDENTICAL_SPEC_CV_VAR_HANDLER,
61302 		ZEND_NULL_HANDLER,
61303 		ZEND_IS_NOT_IDENTICAL_SPEC_CV_CV_HANDLER,
61304 		ZEND_IS_EQUAL_SPEC_CONST_CONST_HANDLER,
61305 		ZEND_NULL_HANDLER,
61306 		ZEND_NULL_HANDLER,
61307 		ZEND_NULL_HANDLER,
61308 		ZEND_NULL_HANDLER,
61309 		ZEND_IS_EQUAL_SPEC_TMPVAR_CONST_HANDLER,
61310 		ZEND_IS_EQUAL_SPEC_TMPVAR_TMPVAR_HANDLER,
61311 		ZEND_IS_EQUAL_SPEC_TMPVAR_TMPVAR_HANDLER,
61312 		ZEND_NULL_HANDLER,
61313 		ZEND_NULL_HANDLER,
61314 		ZEND_IS_EQUAL_SPEC_TMPVAR_CONST_HANDLER,
61315 		ZEND_IS_EQUAL_SPEC_TMPVAR_TMPVAR_HANDLER,
61316 		ZEND_IS_EQUAL_SPEC_TMPVAR_TMPVAR_HANDLER,
61317 		ZEND_NULL_HANDLER,
61318 		ZEND_NULL_HANDLER,
61319 		ZEND_NULL_HANDLER,
61320 		ZEND_NULL_HANDLER,
61321 		ZEND_NULL_HANDLER,
61322 		ZEND_NULL_HANDLER,
61323 		ZEND_NULL_HANDLER,
61324 		ZEND_IS_EQUAL_SPEC_CV_CONST_HANDLER,
61325 		ZEND_IS_EQUAL_SPEC_CV_TMPVAR_HANDLER,
61326 		ZEND_IS_EQUAL_SPEC_CV_TMPVAR_HANDLER,
61327 		ZEND_NULL_HANDLER,
61328 		ZEND_IS_EQUAL_SPEC_CV_CV_HANDLER,
61329 		ZEND_IS_NOT_EQUAL_SPEC_CONST_CONST_HANDLER,
61330 		ZEND_NULL_HANDLER,
61331 		ZEND_NULL_HANDLER,
61332 		ZEND_NULL_HANDLER,
61333 		ZEND_NULL_HANDLER,
61334 		ZEND_IS_NOT_EQUAL_SPEC_TMPVAR_CONST_HANDLER,
61335 		ZEND_IS_NOT_EQUAL_SPEC_TMPVAR_TMPVAR_HANDLER,
61336 		ZEND_IS_NOT_EQUAL_SPEC_TMPVAR_TMPVAR_HANDLER,
61337 		ZEND_NULL_HANDLER,
61338 		ZEND_NULL_HANDLER,
61339 		ZEND_IS_NOT_EQUAL_SPEC_TMPVAR_CONST_HANDLER,
61340 		ZEND_IS_NOT_EQUAL_SPEC_TMPVAR_TMPVAR_HANDLER,
61341 		ZEND_IS_NOT_EQUAL_SPEC_TMPVAR_TMPVAR_HANDLER,
61342 		ZEND_NULL_HANDLER,
61343 		ZEND_NULL_HANDLER,
61344 		ZEND_NULL_HANDLER,
61345 		ZEND_NULL_HANDLER,
61346 		ZEND_NULL_HANDLER,
61347 		ZEND_NULL_HANDLER,
61348 		ZEND_NULL_HANDLER,
61349 		ZEND_IS_NOT_EQUAL_SPEC_CV_CONST_HANDLER,
61350 		ZEND_IS_NOT_EQUAL_SPEC_CV_TMPVAR_HANDLER,
61351 		ZEND_IS_NOT_EQUAL_SPEC_CV_TMPVAR_HANDLER,
61352 		ZEND_NULL_HANDLER,
61353 		ZEND_IS_NOT_EQUAL_SPEC_CV_CV_HANDLER,
61354 		ZEND_IS_SMALLER_SPEC_CONST_CONST_HANDLER,
61355 		ZEND_IS_SMALLER_SPEC_CONST_TMPVAR_HANDLER,
61356 		ZEND_IS_SMALLER_SPEC_CONST_TMPVAR_HANDLER,
61357 		ZEND_NULL_HANDLER,
61358 		ZEND_IS_SMALLER_SPEC_CONST_CV_HANDLER,
61359 		ZEND_IS_SMALLER_SPEC_TMPVAR_CONST_HANDLER,
61360 		ZEND_IS_SMALLER_SPEC_TMPVAR_TMPVAR_HANDLER,
61361 		ZEND_IS_SMALLER_SPEC_TMPVAR_TMPVAR_HANDLER,
61362 		ZEND_NULL_HANDLER,
61363 		ZEND_IS_SMALLER_SPEC_TMPVAR_CV_HANDLER,
61364 		ZEND_IS_SMALLER_SPEC_TMPVAR_CONST_HANDLER,
61365 		ZEND_IS_SMALLER_SPEC_TMPVAR_TMPVAR_HANDLER,
61366 		ZEND_IS_SMALLER_SPEC_TMPVAR_TMPVAR_HANDLER,
61367 		ZEND_NULL_HANDLER,
61368 		ZEND_IS_SMALLER_SPEC_TMPVAR_CV_HANDLER,
61369 		ZEND_NULL_HANDLER,
61370 		ZEND_NULL_HANDLER,
61371 		ZEND_NULL_HANDLER,
61372 		ZEND_NULL_HANDLER,
61373 		ZEND_NULL_HANDLER,
61374 		ZEND_IS_SMALLER_SPEC_CV_CONST_HANDLER,
61375 		ZEND_IS_SMALLER_SPEC_CV_TMPVAR_HANDLER,
61376 		ZEND_IS_SMALLER_SPEC_CV_TMPVAR_HANDLER,
61377 		ZEND_NULL_HANDLER,
61378 		ZEND_IS_SMALLER_SPEC_CV_CV_HANDLER,
61379 		ZEND_IS_SMALLER_OR_EQUAL_SPEC_CONST_CONST_HANDLER,
61380 		ZEND_IS_SMALLER_OR_EQUAL_SPEC_CONST_TMPVAR_HANDLER,
61381 		ZEND_IS_SMALLER_OR_EQUAL_SPEC_CONST_TMPVAR_HANDLER,
61382 		ZEND_NULL_HANDLER,
61383 		ZEND_IS_SMALLER_OR_EQUAL_SPEC_CONST_CV_HANDLER,
61384 		ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVAR_CONST_HANDLER,
61385 		ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVAR_TMPVAR_HANDLER,
61386 		ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVAR_TMPVAR_HANDLER,
61387 		ZEND_NULL_HANDLER,
61388 		ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVAR_CV_HANDLER,
61389 		ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVAR_CONST_HANDLER,
61390 		ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVAR_TMPVAR_HANDLER,
61391 		ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVAR_TMPVAR_HANDLER,
61392 		ZEND_NULL_HANDLER,
61393 		ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVAR_CV_HANDLER,
61394 		ZEND_NULL_HANDLER,
61395 		ZEND_NULL_HANDLER,
61396 		ZEND_NULL_HANDLER,
61397 		ZEND_NULL_HANDLER,
61398 		ZEND_NULL_HANDLER,
61399 		ZEND_IS_SMALLER_OR_EQUAL_SPEC_CV_CONST_HANDLER,
61400 		ZEND_IS_SMALLER_OR_EQUAL_SPEC_CV_TMPVAR_HANDLER,
61401 		ZEND_IS_SMALLER_OR_EQUAL_SPEC_CV_TMPVAR_HANDLER,
61402 		ZEND_NULL_HANDLER,
61403 		ZEND_IS_SMALLER_OR_EQUAL_SPEC_CV_CV_HANDLER,
61404 		ZEND_CAST_SPEC_CONST_HANDLER,
61405 		ZEND_CAST_SPEC_TMP_HANDLER,
61406 		ZEND_CAST_SPEC_VAR_HANDLER,
61407 		ZEND_NULL_HANDLER,
61408 		ZEND_CAST_SPEC_CV_HANDLER,
61409 		ZEND_QM_ASSIGN_SPEC_CONST_HANDLER,
61410 		ZEND_QM_ASSIGN_SPEC_TMP_HANDLER,
61411 		ZEND_QM_ASSIGN_SPEC_VAR_HANDLER,
61412 		ZEND_NULL_HANDLER,
61413 		ZEND_QM_ASSIGN_SPEC_CV_HANDLER,
61414 		ZEND_NULL_HANDLER,
61415 		ZEND_NULL_HANDLER,
61416 		ZEND_NULL_HANDLER,
61417 		ZEND_NULL_HANDLER,
61418 		ZEND_NULL_HANDLER,
61419 		ZEND_NULL_HANDLER,
61420 		ZEND_NULL_HANDLER,
61421 		ZEND_NULL_HANDLER,
61422 		ZEND_NULL_HANDLER,
61423 		ZEND_NULL_HANDLER,
61424 		ZEND_NULL_HANDLER,
61425 		ZEND_NULL_HANDLER,
61426 		ZEND_NULL_HANDLER,
61427 		ZEND_NULL_HANDLER,
61428 		ZEND_NULL_HANDLER,
61429 		ZEND_NULL_HANDLER,
61430 		ZEND_NULL_HANDLER,
61431 		ZEND_NULL_HANDLER,
61432 		ZEND_NULL_HANDLER,
61433 		ZEND_NULL_HANDLER,
61434 		ZEND_NULL_HANDLER,
61435 		ZEND_NULL_HANDLER,
61436 		ZEND_NULL_HANDLER,
61437 		ZEND_NULL_HANDLER,
61438 		ZEND_NULL_HANDLER,
61439 		ZEND_NULL_HANDLER,
61440 		ZEND_NULL_HANDLER,
61441 		ZEND_NULL_HANDLER,
61442 		ZEND_NULL_HANDLER,
61443 		ZEND_NULL_HANDLER,
61444 		ZEND_ASSIGN_ADD_SPEC_VAR_CONST_HANDLER,
61445 		ZEND_ASSIGN_ADD_SPEC_VAR_CONST_DIM_HANDLER,
61446 		ZEND_ASSIGN_ADD_SPEC_VAR_CONST_OBJ_HANDLER,
61447 		ZEND_ASSIGN_ADD_SPEC_VAR_TMPVAR_HANDLER,
61448 		ZEND_ASSIGN_ADD_SPEC_VAR_TMPVAR_DIM_HANDLER,
61449 		ZEND_ASSIGN_ADD_SPEC_VAR_TMPVAR_OBJ_HANDLER,
61450 		ZEND_ASSIGN_ADD_SPEC_VAR_TMPVAR_HANDLER,
61451 		ZEND_ASSIGN_ADD_SPEC_VAR_TMPVAR_DIM_HANDLER,
61452 		ZEND_ASSIGN_ADD_SPEC_VAR_TMPVAR_OBJ_HANDLER,
61453 		ZEND_NULL_HANDLER,
61454 		ZEND_ASSIGN_ADD_SPEC_VAR_UNUSED_DIM_HANDLER,
61455 		ZEND_NULL_HANDLER,
61456 		ZEND_ASSIGN_ADD_SPEC_VAR_CV_HANDLER,
61457 		ZEND_ASSIGN_ADD_SPEC_VAR_CV_DIM_HANDLER,
61458 		ZEND_ASSIGN_ADD_SPEC_VAR_CV_OBJ_HANDLER,
61459 		ZEND_NULL_HANDLER,
61460 		ZEND_NULL_HANDLER,
61461 		ZEND_ASSIGN_ADD_SPEC_UNUSED_CONST_OBJ_HANDLER,
61462 		ZEND_NULL_HANDLER,
61463 		ZEND_NULL_HANDLER,
61464 		ZEND_ASSIGN_ADD_SPEC_UNUSED_TMPVAR_OBJ_HANDLER,
61465 		ZEND_NULL_HANDLER,
61466 		ZEND_NULL_HANDLER,
61467 		ZEND_ASSIGN_ADD_SPEC_UNUSED_TMPVAR_OBJ_HANDLER,
61468 		ZEND_NULL_HANDLER,
61469 		ZEND_NULL_HANDLER,
61470 		ZEND_NULL_HANDLER,
61471 		ZEND_NULL_HANDLER,
61472 		ZEND_NULL_HANDLER,
61473 		ZEND_ASSIGN_ADD_SPEC_UNUSED_CV_OBJ_HANDLER,
61474 		ZEND_ASSIGN_ADD_SPEC_CV_CONST_HANDLER,
61475 		ZEND_ASSIGN_ADD_SPEC_CV_CONST_DIM_HANDLER,
61476 		ZEND_ASSIGN_ADD_SPEC_CV_CONST_OBJ_HANDLER,
61477 		ZEND_ASSIGN_ADD_SPEC_CV_TMPVAR_HANDLER,
61478 		ZEND_ASSIGN_ADD_SPEC_CV_TMPVAR_DIM_HANDLER,
61479 		ZEND_ASSIGN_ADD_SPEC_CV_TMPVAR_OBJ_HANDLER,
61480 		ZEND_ASSIGN_ADD_SPEC_CV_TMPVAR_HANDLER,
61481 		ZEND_ASSIGN_ADD_SPEC_CV_TMPVAR_DIM_HANDLER,
61482 		ZEND_ASSIGN_ADD_SPEC_CV_TMPVAR_OBJ_HANDLER,
61483 		ZEND_NULL_HANDLER,
61484 		ZEND_ASSIGN_ADD_SPEC_CV_UNUSED_DIM_HANDLER,
61485 		ZEND_NULL_HANDLER,
61486 		ZEND_ASSIGN_ADD_SPEC_CV_CV_HANDLER,
61487 		ZEND_ASSIGN_ADD_SPEC_CV_CV_DIM_HANDLER,
61488 		ZEND_ASSIGN_ADD_SPEC_CV_CV_OBJ_HANDLER,
61489 		ZEND_NULL_HANDLER,
61490 		ZEND_NULL_HANDLER,
61491 		ZEND_NULL_HANDLER,
61492 		ZEND_NULL_HANDLER,
61493 		ZEND_NULL_HANDLER,
61494 		ZEND_NULL_HANDLER,
61495 		ZEND_NULL_HANDLER,
61496 		ZEND_NULL_HANDLER,
61497 		ZEND_NULL_HANDLER,
61498 		ZEND_NULL_HANDLER,
61499 		ZEND_NULL_HANDLER,
61500 		ZEND_NULL_HANDLER,
61501 		ZEND_NULL_HANDLER,
61502 		ZEND_NULL_HANDLER,
61503 		ZEND_NULL_HANDLER,
61504 		ZEND_NULL_HANDLER,
61505 		ZEND_NULL_HANDLER,
61506 		ZEND_NULL_HANDLER,
61507 		ZEND_NULL_HANDLER,
61508 		ZEND_NULL_HANDLER,
61509 		ZEND_NULL_HANDLER,
61510 		ZEND_NULL_HANDLER,
61511 		ZEND_NULL_HANDLER,
61512 		ZEND_NULL_HANDLER,
61513 		ZEND_NULL_HANDLER,
61514 		ZEND_NULL_HANDLER,
61515 		ZEND_NULL_HANDLER,
61516 		ZEND_NULL_HANDLER,
61517 		ZEND_NULL_HANDLER,
61518 		ZEND_NULL_HANDLER,
61519 		ZEND_ASSIGN_SUB_SPEC_VAR_CONST_HANDLER,
61520 		ZEND_ASSIGN_SUB_SPEC_VAR_CONST_DIM_HANDLER,
61521 		ZEND_ASSIGN_SUB_SPEC_VAR_CONST_OBJ_HANDLER,
61522 		ZEND_ASSIGN_SUB_SPEC_VAR_TMPVAR_HANDLER,
61523 		ZEND_ASSIGN_SUB_SPEC_VAR_TMPVAR_DIM_HANDLER,
61524 		ZEND_ASSIGN_SUB_SPEC_VAR_TMPVAR_OBJ_HANDLER,
61525 		ZEND_ASSIGN_SUB_SPEC_VAR_TMPVAR_HANDLER,
61526 		ZEND_ASSIGN_SUB_SPEC_VAR_TMPVAR_DIM_HANDLER,
61527 		ZEND_ASSIGN_SUB_SPEC_VAR_TMPVAR_OBJ_HANDLER,
61528 		ZEND_NULL_HANDLER,
61529 		ZEND_ASSIGN_SUB_SPEC_VAR_UNUSED_DIM_HANDLER,
61530 		ZEND_NULL_HANDLER,
61531 		ZEND_ASSIGN_SUB_SPEC_VAR_CV_HANDLER,
61532 		ZEND_ASSIGN_SUB_SPEC_VAR_CV_DIM_HANDLER,
61533 		ZEND_ASSIGN_SUB_SPEC_VAR_CV_OBJ_HANDLER,
61534 		ZEND_NULL_HANDLER,
61535 		ZEND_NULL_HANDLER,
61536 		ZEND_ASSIGN_SUB_SPEC_UNUSED_CONST_OBJ_HANDLER,
61537 		ZEND_NULL_HANDLER,
61538 		ZEND_NULL_HANDLER,
61539 		ZEND_ASSIGN_SUB_SPEC_UNUSED_TMPVAR_OBJ_HANDLER,
61540 		ZEND_NULL_HANDLER,
61541 		ZEND_NULL_HANDLER,
61542 		ZEND_ASSIGN_SUB_SPEC_UNUSED_TMPVAR_OBJ_HANDLER,
61543 		ZEND_NULL_HANDLER,
61544 		ZEND_NULL_HANDLER,
61545 		ZEND_NULL_HANDLER,
61546 		ZEND_NULL_HANDLER,
61547 		ZEND_NULL_HANDLER,
61548 		ZEND_ASSIGN_SUB_SPEC_UNUSED_CV_OBJ_HANDLER,
61549 		ZEND_ASSIGN_SUB_SPEC_CV_CONST_HANDLER,
61550 		ZEND_ASSIGN_SUB_SPEC_CV_CONST_DIM_HANDLER,
61551 		ZEND_ASSIGN_SUB_SPEC_CV_CONST_OBJ_HANDLER,
61552 		ZEND_ASSIGN_SUB_SPEC_CV_TMPVAR_HANDLER,
61553 		ZEND_ASSIGN_SUB_SPEC_CV_TMPVAR_DIM_HANDLER,
61554 		ZEND_ASSIGN_SUB_SPEC_CV_TMPVAR_OBJ_HANDLER,
61555 		ZEND_ASSIGN_SUB_SPEC_CV_TMPVAR_HANDLER,
61556 		ZEND_ASSIGN_SUB_SPEC_CV_TMPVAR_DIM_HANDLER,
61557 		ZEND_ASSIGN_SUB_SPEC_CV_TMPVAR_OBJ_HANDLER,
61558 		ZEND_NULL_HANDLER,
61559 		ZEND_ASSIGN_SUB_SPEC_CV_UNUSED_DIM_HANDLER,
61560 		ZEND_NULL_HANDLER,
61561 		ZEND_ASSIGN_SUB_SPEC_CV_CV_HANDLER,
61562 		ZEND_ASSIGN_SUB_SPEC_CV_CV_DIM_HANDLER,
61563 		ZEND_ASSIGN_SUB_SPEC_CV_CV_OBJ_HANDLER,
61564 		ZEND_NULL_HANDLER,
61565 		ZEND_NULL_HANDLER,
61566 		ZEND_NULL_HANDLER,
61567 		ZEND_NULL_HANDLER,
61568 		ZEND_NULL_HANDLER,
61569 		ZEND_NULL_HANDLER,
61570 		ZEND_NULL_HANDLER,
61571 		ZEND_NULL_HANDLER,
61572 		ZEND_NULL_HANDLER,
61573 		ZEND_NULL_HANDLER,
61574 		ZEND_NULL_HANDLER,
61575 		ZEND_NULL_HANDLER,
61576 		ZEND_NULL_HANDLER,
61577 		ZEND_NULL_HANDLER,
61578 		ZEND_NULL_HANDLER,
61579 		ZEND_NULL_HANDLER,
61580 		ZEND_NULL_HANDLER,
61581 		ZEND_NULL_HANDLER,
61582 		ZEND_NULL_HANDLER,
61583 		ZEND_NULL_HANDLER,
61584 		ZEND_NULL_HANDLER,
61585 		ZEND_NULL_HANDLER,
61586 		ZEND_NULL_HANDLER,
61587 		ZEND_NULL_HANDLER,
61588 		ZEND_NULL_HANDLER,
61589 		ZEND_NULL_HANDLER,
61590 		ZEND_NULL_HANDLER,
61591 		ZEND_NULL_HANDLER,
61592 		ZEND_NULL_HANDLER,
61593 		ZEND_NULL_HANDLER,
61594 		ZEND_ASSIGN_MUL_SPEC_VAR_CONST_HANDLER,
61595 		ZEND_ASSIGN_MUL_SPEC_VAR_CONST_DIM_HANDLER,
61596 		ZEND_ASSIGN_MUL_SPEC_VAR_CONST_OBJ_HANDLER,
61597 		ZEND_ASSIGN_MUL_SPEC_VAR_TMPVAR_HANDLER,
61598 		ZEND_ASSIGN_MUL_SPEC_VAR_TMPVAR_DIM_HANDLER,
61599 		ZEND_ASSIGN_MUL_SPEC_VAR_TMPVAR_OBJ_HANDLER,
61600 		ZEND_ASSIGN_MUL_SPEC_VAR_TMPVAR_HANDLER,
61601 		ZEND_ASSIGN_MUL_SPEC_VAR_TMPVAR_DIM_HANDLER,
61602 		ZEND_ASSIGN_MUL_SPEC_VAR_TMPVAR_OBJ_HANDLER,
61603 		ZEND_NULL_HANDLER,
61604 		ZEND_ASSIGN_MUL_SPEC_VAR_UNUSED_DIM_HANDLER,
61605 		ZEND_NULL_HANDLER,
61606 		ZEND_ASSIGN_MUL_SPEC_VAR_CV_HANDLER,
61607 		ZEND_ASSIGN_MUL_SPEC_VAR_CV_DIM_HANDLER,
61608 		ZEND_ASSIGN_MUL_SPEC_VAR_CV_OBJ_HANDLER,
61609 		ZEND_NULL_HANDLER,
61610 		ZEND_NULL_HANDLER,
61611 		ZEND_ASSIGN_MUL_SPEC_UNUSED_CONST_OBJ_HANDLER,
61612 		ZEND_NULL_HANDLER,
61613 		ZEND_NULL_HANDLER,
61614 		ZEND_ASSIGN_MUL_SPEC_UNUSED_TMPVAR_OBJ_HANDLER,
61615 		ZEND_NULL_HANDLER,
61616 		ZEND_NULL_HANDLER,
61617 		ZEND_ASSIGN_MUL_SPEC_UNUSED_TMPVAR_OBJ_HANDLER,
61618 		ZEND_NULL_HANDLER,
61619 		ZEND_NULL_HANDLER,
61620 		ZEND_NULL_HANDLER,
61621 		ZEND_NULL_HANDLER,
61622 		ZEND_NULL_HANDLER,
61623 		ZEND_ASSIGN_MUL_SPEC_UNUSED_CV_OBJ_HANDLER,
61624 		ZEND_ASSIGN_MUL_SPEC_CV_CONST_HANDLER,
61625 		ZEND_ASSIGN_MUL_SPEC_CV_CONST_DIM_HANDLER,
61626 		ZEND_ASSIGN_MUL_SPEC_CV_CONST_OBJ_HANDLER,
61627 		ZEND_ASSIGN_MUL_SPEC_CV_TMPVAR_HANDLER,
61628 		ZEND_ASSIGN_MUL_SPEC_CV_TMPVAR_DIM_HANDLER,
61629 		ZEND_ASSIGN_MUL_SPEC_CV_TMPVAR_OBJ_HANDLER,
61630 		ZEND_ASSIGN_MUL_SPEC_CV_TMPVAR_HANDLER,
61631 		ZEND_ASSIGN_MUL_SPEC_CV_TMPVAR_DIM_HANDLER,
61632 		ZEND_ASSIGN_MUL_SPEC_CV_TMPVAR_OBJ_HANDLER,
61633 		ZEND_NULL_HANDLER,
61634 		ZEND_ASSIGN_MUL_SPEC_CV_UNUSED_DIM_HANDLER,
61635 		ZEND_NULL_HANDLER,
61636 		ZEND_ASSIGN_MUL_SPEC_CV_CV_HANDLER,
61637 		ZEND_ASSIGN_MUL_SPEC_CV_CV_DIM_HANDLER,
61638 		ZEND_ASSIGN_MUL_SPEC_CV_CV_OBJ_HANDLER,
61639 		ZEND_NULL_HANDLER,
61640 		ZEND_NULL_HANDLER,
61641 		ZEND_NULL_HANDLER,
61642 		ZEND_NULL_HANDLER,
61643 		ZEND_NULL_HANDLER,
61644 		ZEND_NULL_HANDLER,
61645 		ZEND_NULL_HANDLER,
61646 		ZEND_NULL_HANDLER,
61647 		ZEND_NULL_HANDLER,
61648 		ZEND_NULL_HANDLER,
61649 		ZEND_NULL_HANDLER,
61650 		ZEND_NULL_HANDLER,
61651 		ZEND_NULL_HANDLER,
61652 		ZEND_NULL_HANDLER,
61653 		ZEND_NULL_HANDLER,
61654 		ZEND_NULL_HANDLER,
61655 		ZEND_NULL_HANDLER,
61656 		ZEND_NULL_HANDLER,
61657 		ZEND_NULL_HANDLER,
61658 		ZEND_NULL_HANDLER,
61659 		ZEND_NULL_HANDLER,
61660 		ZEND_NULL_HANDLER,
61661 		ZEND_NULL_HANDLER,
61662 		ZEND_NULL_HANDLER,
61663 		ZEND_NULL_HANDLER,
61664 		ZEND_NULL_HANDLER,
61665 		ZEND_NULL_HANDLER,
61666 		ZEND_NULL_HANDLER,
61667 		ZEND_NULL_HANDLER,
61668 		ZEND_NULL_HANDLER,
61669 		ZEND_ASSIGN_DIV_SPEC_VAR_CONST_HANDLER,
61670 		ZEND_ASSIGN_DIV_SPEC_VAR_CONST_DIM_HANDLER,
61671 		ZEND_ASSIGN_DIV_SPEC_VAR_CONST_OBJ_HANDLER,
61672 		ZEND_ASSIGN_DIV_SPEC_VAR_TMPVAR_HANDLER,
61673 		ZEND_ASSIGN_DIV_SPEC_VAR_TMPVAR_DIM_HANDLER,
61674 		ZEND_ASSIGN_DIV_SPEC_VAR_TMPVAR_OBJ_HANDLER,
61675 		ZEND_ASSIGN_DIV_SPEC_VAR_TMPVAR_HANDLER,
61676 		ZEND_ASSIGN_DIV_SPEC_VAR_TMPVAR_DIM_HANDLER,
61677 		ZEND_ASSIGN_DIV_SPEC_VAR_TMPVAR_OBJ_HANDLER,
61678 		ZEND_NULL_HANDLER,
61679 		ZEND_ASSIGN_DIV_SPEC_VAR_UNUSED_DIM_HANDLER,
61680 		ZEND_NULL_HANDLER,
61681 		ZEND_ASSIGN_DIV_SPEC_VAR_CV_HANDLER,
61682 		ZEND_ASSIGN_DIV_SPEC_VAR_CV_DIM_HANDLER,
61683 		ZEND_ASSIGN_DIV_SPEC_VAR_CV_OBJ_HANDLER,
61684 		ZEND_NULL_HANDLER,
61685 		ZEND_NULL_HANDLER,
61686 		ZEND_ASSIGN_DIV_SPEC_UNUSED_CONST_OBJ_HANDLER,
61687 		ZEND_NULL_HANDLER,
61688 		ZEND_NULL_HANDLER,
61689 		ZEND_ASSIGN_DIV_SPEC_UNUSED_TMPVAR_OBJ_HANDLER,
61690 		ZEND_NULL_HANDLER,
61691 		ZEND_NULL_HANDLER,
61692 		ZEND_ASSIGN_DIV_SPEC_UNUSED_TMPVAR_OBJ_HANDLER,
61693 		ZEND_NULL_HANDLER,
61694 		ZEND_NULL_HANDLER,
61695 		ZEND_NULL_HANDLER,
61696 		ZEND_NULL_HANDLER,
61697 		ZEND_NULL_HANDLER,
61698 		ZEND_ASSIGN_DIV_SPEC_UNUSED_CV_OBJ_HANDLER,
61699 		ZEND_ASSIGN_DIV_SPEC_CV_CONST_HANDLER,
61700 		ZEND_ASSIGN_DIV_SPEC_CV_CONST_DIM_HANDLER,
61701 		ZEND_ASSIGN_DIV_SPEC_CV_CONST_OBJ_HANDLER,
61702 		ZEND_ASSIGN_DIV_SPEC_CV_TMPVAR_HANDLER,
61703 		ZEND_ASSIGN_DIV_SPEC_CV_TMPVAR_DIM_HANDLER,
61704 		ZEND_ASSIGN_DIV_SPEC_CV_TMPVAR_OBJ_HANDLER,
61705 		ZEND_ASSIGN_DIV_SPEC_CV_TMPVAR_HANDLER,
61706 		ZEND_ASSIGN_DIV_SPEC_CV_TMPVAR_DIM_HANDLER,
61707 		ZEND_ASSIGN_DIV_SPEC_CV_TMPVAR_OBJ_HANDLER,
61708 		ZEND_NULL_HANDLER,
61709 		ZEND_ASSIGN_DIV_SPEC_CV_UNUSED_DIM_HANDLER,
61710 		ZEND_NULL_HANDLER,
61711 		ZEND_ASSIGN_DIV_SPEC_CV_CV_HANDLER,
61712 		ZEND_ASSIGN_DIV_SPEC_CV_CV_DIM_HANDLER,
61713 		ZEND_ASSIGN_DIV_SPEC_CV_CV_OBJ_HANDLER,
61714 		ZEND_NULL_HANDLER,
61715 		ZEND_NULL_HANDLER,
61716 		ZEND_NULL_HANDLER,
61717 		ZEND_NULL_HANDLER,
61718 		ZEND_NULL_HANDLER,
61719 		ZEND_NULL_HANDLER,
61720 		ZEND_NULL_HANDLER,
61721 		ZEND_NULL_HANDLER,
61722 		ZEND_NULL_HANDLER,
61723 		ZEND_NULL_HANDLER,
61724 		ZEND_NULL_HANDLER,
61725 		ZEND_NULL_HANDLER,
61726 		ZEND_NULL_HANDLER,
61727 		ZEND_NULL_HANDLER,
61728 		ZEND_NULL_HANDLER,
61729 		ZEND_NULL_HANDLER,
61730 		ZEND_NULL_HANDLER,
61731 		ZEND_NULL_HANDLER,
61732 		ZEND_NULL_HANDLER,
61733 		ZEND_NULL_HANDLER,
61734 		ZEND_NULL_HANDLER,
61735 		ZEND_NULL_HANDLER,
61736 		ZEND_NULL_HANDLER,
61737 		ZEND_NULL_HANDLER,
61738 		ZEND_NULL_HANDLER,
61739 		ZEND_NULL_HANDLER,
61740 		ZEND_NULL_HANDLER,
61741 		ZEND_NULL_HANDLER,
61742 		ZEND_NULL_HANDLER,
61743 		ZEND_NULL_HANDLER,
61744 		ZEND_ASSIGN_MOD_SPEC_VAR_CONST_HANDLER,
61745 		ZEND_ASSIGN_MOD_SPEC_VAR_CONST_DIM_HANDLER,
61746 		ZEND_ASSIGN_MOD_SPEC_VAR_CONST_OBJ_HANDLER,
61747 		ZEND_ASSIGN_MOD_SPEC_VAR_TMPVAR_HANDLER,
61748 		ZEND_ASSIGN_MOD_SPEC_VAR_TMPVAR_DIM_HANDLER,
61749 		ZEND_ASSIGN_MOD_SPEC_VAR_TMPVAR_OBJ_HANDLER,
61750 		ZEND_ASSIGN_MOD_SPEC_VAR_TMPVAR_HANDLER,
61751 		ZEND_ASSIGN_MOD_SPEC_VAR_TMPVAR_DIM_HANDLER,
61752 		ZEND_ASSIGN_MOD_SPEC_VAR_TMPVAR_OBJ_HANDLER,
61753 		ZEND_NULL_HANDLER,
61754 		ZEND_ASSIGN_MOD_SPEC_VAR_UNUSED_DIM_HANDLER,
61755 		ZEND_NULL_HANDLER,
61756 		ZEND_ASSIGN_MOD_SPEC_VAR_CV_HANDLER,
61757 		ZEND_ASSIGN_MOD_SPEC_VAR_CV_DIM_HANDLER,
61758 		ZEND_ASSIGN_MOD_SPEC_VAR_CV_OBJ_HANDLER,
61759 		ZEND_NULL_HANDLER,
61760 		ZEND_NULL_HANDLER,
61761 		ZEND_ASSIGN_MOD_SPEC_UNUSED_CONST_OBJ_HANDLER,
61762 		ZEND_NULL_HANDLER,
61763 		ZEND_NULL_HANDLER,
61764 		ZEND_ASSIGN_MOD_SPEC_UNUSED_TMPVAR_OBJ_HANDLER,
61765 		ZEND_NULL_HANDLER,
61766 		ZEND_NULL_HANDLER,
61767 		ZEND_ASSIGN_MOD_SPEC_UNUSED_TMPVAR_OBJ_HANDLER,
61768 		ZEND_NULL_HANDLER,
61769 		ZEND_NULL_HANDLER,
61770 		ZEND_NULL_HANDLER,
61771 		ZEND_NULL_HANDLER,
61772 		ZEND_NULL_HANDLER,
61773 		ZEND_ASSIGN_MOD_SPEC_UNUSED_CV_OBJ_HANDLER,
61774 		ZEND_ASSIGN_MOD_SPEC_CV_CONST_HANDLER,
61775 		ZEND_ASSIGN_MOD_SPEC_CV_CONST_DIM_HANDLER,
61776 		ZEND_ASSIGN_MOD_SPEC_CV_CONST_OBJ_HANDLER,
61777 		ZEND_ASSIGN_MOD_SPEC_CV_TMPVAR_HANDLER,
61778 		ZEND_ASSIGN_MOD_SPEC_CV_TMPVAR_DIM_HANDLER,
61779 		ZEND_ASSIGN_MOD_SPEC_CV_TMPVAR_OBJ_HANDLER,
61780 		ZEND_ASSIGN_MOD_SPEC_CV_TMPVAR_HANDLER,
61781 		ZEND_ASSIGN_MOD_SPEC_CV_TMPVAR_DIM_HANDLER,
61782 		ZEND_ASSIGN_MOD_SPEC_CV_TMPVAR_OBJ_HANDLER,
61783 		ZEND_NULL_HANDLER,
61784 		ZEND_ASSIGN_MOD_SPEC_CV_UNUSED_DIM_HANDLER,
61785 		ZEND_NULL_HANDLER,
61786 		ZEND_ASSIGN_MOD_SPEC_CV_CV_HANDLER,
61787 		ZEND_ASSIGN_MOD_SPEC_CV_CV_DIM_HANDLER,
61788 		ZEND_ASSIGN_MOD_SPEC_CV_CV_OBJ_HANDLER,
61789 		ZEND_NULL_HANDLER,
61790 		ZEND_NULL_HANDLER,
61791 		ZEND_NULL_HANDLER,
61792 		ZEND_NULL_HANDLER,
61793 		ZEND_NULL_HANDLER,
61794 		ZEND_NULL_HANDLER,
61795 		ZEND_NULL_HANDLER,
61796 		ZEND_NULL_HANDLER,
61797 		ZEND_NULL_HANDLER,
61798 		ZEND_NULL_HANDLER,
61799 		ZEND_NULL_HANDLER,
61800 		ZEND_NULL_HANDLER,
61801 		ZEND_NULL_HANDLER,
61802 		ZEND_NULL_HANDLER,
61803 		ZEND_NULL_HANDLER,
61804 		ZEND_NULL_HANDLER,
61805 		ZEND_NULL_HANDLER,
61806 		ZEND_NULL_HANDLER,
61807 		ZEND_NULL_HANDLER,
61808 		ZEND_NULL_HANDLER,
61809 		ZEND_NULL_HANDLER,
61810 		ZEND_NULL_HANDLER,
61811 		ZEND_NULL_HANDLER,
61812 		ZEND_NULL_HANDLER,
61813 		ZEND_NULL_HANDLER,
61814 		ZEND_NULL_HANDLER,
61815 		ZEND_NULL_HANDLER,
61816 		ZEND_NULL_HANDLER,
61817 		ZEND_NULL_HANDLER,
61818 		ZEND_NULL_HANDLER,
61819 		ZEND_ASSIGN_SL_SPEC_VAR_CONST_HANDLER,
61820 		ZEND_ASSIGN_SL_SPEC_VAR_CONST_DIM_HANDLER,
61821 		ZEND_ASSIGN_SL_SPEC_VAR_CONST_OBJ_HANDLER,
61822 		ZEND_ASSIGN_SL_SPEC_VAR_TMPVAR_HANDLER,
61823 		ZEND_ASSIGN_SL_SPEC_VAR_TMPVAR_DIM_HANDLER,
61824 		ZEND_ASSIGN_SL_SPEC_VAR_TMPVAR_OBJ_HANDLER,
61825 		ZEND_ASSIGN_SL_SPEC_VAR_TMPVAR_HANDLER,
61826 		ZEND_ASSIGN_SL_SPEC_VAR_TMPVAR_DIM_HANDLER,
61827 		ZEND_ASSIGN_SL_SPEC_VAR_TMPVAR_OBJ_HANDLER,
61828 		ZEND_NULL_HANDLER,
61829 		ZEND_ASSIGN_SL_SPEC_VAR_UNUSED_DIM_HANDLER,
61830 		ZEND_NULL_HANDLER,
61831 		ZEND_ASSIGN_SL_SPEC_VAR_CV_HANDLER,
61832 		ZEND_ASSIGN_SL_SPEC_VAR_CV_DIM_HANDLER,
61833 		ZEND_ASSIGN_SL_SPEC_VAR_CV_OBJ_HANDLER,
61834 		ZEND_NULL_HANDLER,
61835 		ZEND_NULL_HANDLER,
61836 		ZEND_ASSIGN_SL_SPEC_UNUSED_CONST_OBJ_HANDLER,
61837 		ZEND_NULL_HANDLER,
61838 		ZEND_NULL_HANDLER,
61839 		ZEND_ASSIGN_SL_SPEC_UNUSED_TMPVAR_OBJ_HANDLER,
61840 		ZEND_NULL_HANDLER,
61841 		ZEND_NULL_HANDLER,
61842 		ZEND_ASSIGN_SL_SPEC_UNUSED_TMPVAR_OBJ_HANDLER,
61843 		ZEND_NULL_HANDLER,
61844 		ZEND_NULL_HANDLER,
61845 		ZEND_NULL_HANDLER,
61846 		ZEND_NULL_HANDLER,
61847 		ZEND_NULL_HANDLER,
61848 		ZEND_ASSIGN_SL_SPEC_UNUSED_CV_OBJ_HANDLER,
61849 		ZEND_ASSIGN_SL_SPEC_CV_CONST_HANDLER,
61850 		ZEND_ASSIGN_SL_SPEC_CV_CONST_DIM_HANDLER,
61851 		ZEND_ASSIGN_SL_SPEC_CV_CONST_OBJ_HANDLER,
61852 		ZEND_ASSIGN_SL_SPEC_CV_TMPVAR_HANDLER,
61853 		ZEND_ASSIGN_SL_SPEC_CV_TMPVAR_DIM_HANDLER,
61854 		ZEND_ASSIGN_SL_SPEC_CV_TMPVAR_OBJ_HANDLER,
61855 		ZEND_ASSIGN_SL_SPEC_CV_TMPVAR_HANDLER,
61856 		ZEND_ASSIGN_SL_SPEC_CV_TMPVAR_DIM_HANDLER,
61857 		ZEND_ASSIGN_SL_SPEC_CV_TMPVAR_OBJ_HANDLER,
61858 		ZEND_NULL_HANDLER,
61859 		ZEND_ASSIGN_SL_SPEC_CV_UNUSED_DIM_HANDLER,
61860 		ZEND_NULL_HANDLER,
61861 		ZEND_ASSIGN_SL_SPEC_CV_CV_HANDLER,
61862 		ZEND_ASSIGN_SL_SPEC_CV_CV_DIM_HANDLER,
61863 		ZEND_ASSIGN_SL_SPEC_CV_CV_OBJ_HANDLER,
61864 		ZEND_NULL_HANDLER,
61865 		ZEND_NULL_HANDLER,
61866 		ZEND_NULL_HANDLER,
61867 		ZEND_NULL_HANDLER,
61868 		ZEND_NULL_HANDLER,
61869 		ZEND_NULL_HANDLER,
61870 		ZEND_NULL_HANDLER,
61871 		ZEND_NULL_HANDLER,
61872 		ZEND_NULL_HANDLER,
61873 		ZEND_NULL_HANDLER,
61874 		ZEND_NULL_HANDLER,
61875 		ZEND_NULL_HANDLER,
61876 		ZEND_NULL_HANDLER,
61877 		ZEND_NULL_HANDLER,
61878 		ZEND_NULL_HANDLER,
61879 		ZEND_NULL_HANDLER,
61880 		ZEND_NULL_HANDLER,
61881 		ZEND_NULL_HANDLER,
61882 		ZEND_NULL_HANDLER,
61883 		ZEND_NULL_HANDLER,
61884 		ZEND_NULL_HANDLER,
61885 		ZEND_NULL_HANDLER,
61886 		ZEND_NULL_HANDLER,
61887 		ZEND_NULL_HANDLER,
61888 		ZEND_NULL_HANDLER,
61889 		ZEND_NULL_HANDLER,
61890 		ZEND_NULL_HANDLER,
61891 		ZEND_NULL_HANDLER,
61892 		ZEND_NULL_HANDLER,
61893 		ZEND_NULL_HANDLER,
61894 		ZEND_ASSIGN_SR_SPEC_VAR_CONST_HANDLER,
61895 		ZEND_ASSIGN_SR_SPEC_VAR_CONST_DIM_HANDLER,
61896 		ZEND_ASSIGN_SR_SPEC_VAR_CONST_OBJ_HANDLER,
61897 		ZEND_ASSIGN_SR_SPEC_VAR_TMPVAR_HANDLER,
61898 		ZEND_ASSIGN_SR_SPEC_VAR_TMPVAR_DIM_HANDLER,
61899 		ZEND_ASSIGN_SR_SPEC_VAR_TMPVAR_OBJ_HANDLER,
61900 		ZEND_ASSIGN_SR_SPEC_VAR_TMPVAR_HANDLER,
61901 		ZEND_ASSIGN_SR_SPEC_VAR_TMPVAR_DIM_HANDLER,
61902 		ZEND_ASSIGN_SR_SPEC_VAR_TMPVAR_OBJ_HANDLER,
61903 		ZEND_NULL_HANDLER,
61904 		ZEND_ASSIGN_SR_SPEC_VAR_UNUSED_DIM_HANDLER,
61905 		ZEND_NULL_HANDLER,
61906 		ZEND_ASSIGN_SR_SPEC_VAR_CV_HANDLER,
61907 		ZEND_ASSIGN_SR_SPEC_VAR_CV_DIM_HANDLER,
61908 		ZEND_ASSIGN_SR_SPEC_VAR_CV_OBJ_HANDLER,
61909 		ZEND_NULL_HANDLER,
61910 		ZEND_NULL_HANDLER,
61911 		ZEND_ASSIGN_SR_SPEC_UNUSED_CONST_OBJ_HANDLER,
61912 		ZEND_NULL_HANDLER,
61913 		ZEND_NULL_HANDLER,
61914 		ZEND_ASSIGN_SR_SPEC_UNUSED_TMPVAR_OBJ_HANDLER,
61915 		ZEND_NULL_HANDLER,
61916 		ZEND_NULL_HANDLER,
61917 		ZEND_ASSIGN_SR_SPEC_UNUSED_TMPVAR_OBJ_HANDLER,
61918 		ZEND_NULL_HANDLER,
61919 		ZEND_NULL_HANDLER,
61920 		ZEND_NULL_HANDLER,
61921 		ZEND_NULL_HANDLER,
61922 		ZEND_NULL_HANDLER,
61923 		ZEND_ASSIGN_SR_SPEC_UNUSED_CV_OBJ_HANDLER,
61924 		ZEND_ASSIGN_SR_SPEC_CV_CONST_HANDLER,
61925 		ZEND_ASSIGN_SR_SPEC_CV_CONST_DIM_HANDLER,
61926 		ZEND_ASSIGN_SR_SPEC_CV_CONST_OBJ_HANDLER,
61927 		ZEND_ASSIGN_SR_SPEC_CV_TMPVAR_HANDLER,
61928 		ZEND_ASSIGN_SR_SPEC_CV_TMPVAR_DIM_HANDLER,
61929 		ZEND_ASSIGN_SR_SPEC_CV_TMPVAR_OBJ_HANDLER,
61930 		ZEND_ASSIGN_SR_SPEC_CV_TMPVAR_HANDLER,
61931 		ZEND_ASSIGN_SR_SPEC_CV_TMPVAR_DIM_HANDLER,
61932 		ZEND_ASSIGN_SR_SPEC_CV_TMPVAR_OBJ_HANDLER,
61933 		ZEND_NULL_HANDLER,
61934 		ZEND_ASSIGN_SR_SPEC_CV_UNUSED_DIM_HANDLER,
61935 		ZEND_NULL_HANDLER,
61936 		ZEND_ASSIGN_SR_SPEC_CV_CV_HANDLER,
61937 		ZEND_ASSIGN_SR_SPEC_CV_CV_DIM_HANDLER,
61938 		ZEND_ASSIGN_SR_SPEC_CV_CV_OBJ_HANDLER,
61939 		ZEND_NULL_HANDLER,
61940 		ZEND_NULL_HANDLER,
61941 		ZEND_NULL_HANDLER,
61942 		ZEND_NULL_HANDLER,
61943 		ZEND_NULL_HANDLER,
61944 		ZEND_NULL_HANDLER,
61945 		ZEND_NULL_HANDLER,
61946 		ZEND_NULL_HANDLER,
61947 		ZEND_NULL_HANDLER,
61948 		ZEND_NULL_HANDLER,
61949 		ZEND_NULL_HANDLER,
61950 		ZEND_NULL_HANDLER,
61951 		ZEND_NULL_HANDLER,
61952 		ZEND_NULL_HANDLER,
61953 		ZEND_NULL_HANDLER,
61954 		ZEND_NULL_HANDLER,
61955 		ZEND_NULL_HANDLER,
61956 		ZEND_NULL_HANDLER,
61957 		ZEND_NULL_HANDLER,
61958 		ZEND_NULL_HANDLER,
61959 		ZEND_NULL_HANDLER,
61960 		ZEND_NULL_HANDLER,
61961 		ZEND_NULL_HANDLER,
61962 		ZEND_NULL_HANDLER,
61963 		ZEND_NULL_HANDLER,
61964 		ZEND_NULL_HANDLER,
61965 		ZEND_NULL_HANDLER,
61966 		ZEND_NULL_HANDLER,
61967 		ZEND_NULL_HANDLER,
61968 		ZEND_NULL_HANDLER,
61969 		ZEND_ASSIGN_CONCAT_SPEC_VAR_CONST_HANDLER,
61970 		ZEND_ASSIGN_CONCAT_SPEC_VAR_CONST_DIM_HANDLER,
61971 		ZEND_ASSIGN_CONCAT_SPEC_VAR_CONST_OBJ_HANDLER,
61972 		ZEND_ASSIGN_CONCAT_SPEC_VAR_TMPVAR_HANDLER,
61973 		ZEND_ASSIGN_CONCAT_SPEC_VAR_TMPVAR_DIM_HANDLER,
61974 		ZEND_ASSIGN_CONCAT_SPEC_VAR_TMPVAR_OBJ_HANDLER,
61975 		ZEND_ASSIGN_CONCAT_SPEC_VAR_TMPVAR_HANDLER,
61976 		ZEND_ASSIGN_CONCAT_SPEC_VAR_TMPVAR_DIM_HANDLER,
61977 		ZEND_ASSIGN_CONCAT_SPEC_VAR_TMPVAR_OBJ_HANDLER,
61978 		ZEND_NULL_HANDLER,
61979 		ZEND_ASSIGN_CONCAT_SPEC_VAR_UNUSED_DIM_HANDLER,
61980 		ZEND_NULL_HANDLER,
61981 		ZEND_ASSIGN_CONCAT_SPEC_VAR_CV_HANDLER,
61982 		ZEND_ASSIGN_CONCAT_SPEC_VAR_CV_DIM_HANDLER,
61983 		ZEND_ASSIGN_CONCAT_SPEC_VAR_CV_OBJ_HANDLER,
61984 		ZEND_NULL_HANDLER,
61985 		ZEND_NULL_HANDLER,
61986 		ZEND_ASSIGN_CONCAT_SPEC_UNUSED_CONST_OBJ_HANDLER,
61987 		ZEND_NULL_HANDLER,
61988 		ZEND_NULL_HANDLER,
61989 		ZEND_ASSIGN_CONCAT_SPEC_UNUSED_TMPVAR_OBJ_HANDLER,
61990 		ZEND_NULL_HANDLER,
61991 		ZEND_NULL_HANDLER,
61992 		ZEND_ASSIGN_CONCAT_SPEC_UNUSED_TMPVAR_OBJ_HANDLER,
61993 		ZEND_NULL_HANDLER,
61994 		ZEND_NULL_HANDLER,
61995 		ZEND_NULL_HANDLER,
61996 		ZEND_NULL_HANDLER,
61997 		ZEND_NULL_HANDLER,
61998 		ZEND_ASSIGN_CONCAT_SPEC_UNUSED_CV_OBJ_HANDLER,
61999 		ZEND_ASSIGN_CONCAT_SPEC_CV_CONST_HANDLER,
62000 		ZEND_ASSIGN_CONCAT_SPEC_CV_CONST_DIM_HANDLER,
62001 		ZEND_ASSIGN_CONCAT_SPEC_CV_CONST_OBJ_HANDLER,
62002 		ZEND_ASSIGN_CONCAT_SPEC_CV_TMPVAR_HANDLER,
62003 		ZEND_ASSIGN_CONCAT_SPEC_CV_TMPVAR_DIM_HANDLER,
62004 		ZEND_ASSIGN_CONCAT_SPEC_CV_TMPVAR_OBJ_HANDLER,
62005 		ZEND_ASSIGN_CONCAT_SPEC_CV_TMPVAR_HANDLER,
62006 		ZEND_ASSIGN_CONCAT_SPEC_CV_TMPVAR_DIM_HANDLER,
62007 		ZEND_ASSIGN_CONCAT_SPEC_CV_TMPVAR_OBJ_HANDLER,
62008 		ZEND_NULL_HANDLER,
62009 		ZEND_ASSIGN_CONCAT_SPEC_CV_UNUSED_DIM_HANDLER,
62010 		ZEND_NULL_HANDLER,
62011 		ZEND_ASSIGN_CONCAT_SPEC_CV_CV_HANDLER,
62012 		ZEND_ASSIGN_CONCAT_SPEC_CV_CV_DIM_HANDLER,
62013 		ZEND_ASSIGN_CONCAT_SPEC_CV_CV_OBJ_HANDLER,
62014 		ZEND_NULL_HANDLER,
62015 		ZEND_NULL_HANDLER,
62016 		ZEND_NULL_HANDLER,
62017 		ZEND_NULL_HANDLER,
62018 		ZEND_NULL_HANDLER,
62019 		ZEND_NULL_HANDLER,
62020 		ZEND_NULL_HANDLER,
62021 		ZEND_NULL_HANDLER,
62022 		ZEND_NULL_HANDLER,
62023 		ZEND_NULL_HANDLER,
62024 		ZEND_NULL_HANDLER,
62025 		ZEND_NULL_HANDLER,
62026 		ZEND_NULL_HANDLER,
62027 		ZEND_NULL_HANDLER,
62028 		ZEND_NULL_HANDLER,
62029 		ZEND_NULL_HANDLER,
62030 		ZEND_NULL_HANDLER,
62031 		ZEND_NULL_HANDLER,
62032 		ZEND_NULL_HANDLER,
62033 		ZEND_NULL_HANDLER,
62034 		ZEND_NULL_HANDLER,
62035 		ZEND_NULL_HANDLER,
62036 		ZEND_NULL_HANDLER,
62037 		ZEND_NULL_HANDLER,
62038 		ZEND_NULL_HANDLER,
62039 		ZEND_NULL_HANDLER,
62040 		ZEND_NULL_HANDLER,
62041 		ZEND_NULL_HANDLER,
62042 		ZEND_NULL_HANDLER,
62043 		ZEND_NULL_HANDLER,
62044 		ZEND_ASSIGN_BW_OR_SPEC_VAR_CONST_HANDLER,
62045 		ZEND_ASSIGN_BW_OR_SPEC_VAR_CONST_DIM_HANDLER,
62046 		ZEND_ASSIGN_BW_OR_SPEC_VAR_CONST_OBJ_HANDLER,
62047 		ZEND_ASSIGN_BW_OR_SPEC_VAR_TMPVAR_HANDLER,
62048 		ZEND_ASSIGN_BW_OR_SPEC_VAR_TMPVAR_DIM_HANDLER,
62049 		ZEND_ASSIGN_BW_OR_SPEC_VAR_TMPVAR_OBJ_HANDLER,
62050 		ZEND_ASSIGN_BW_OR_SPEC_VAR_TMPVAR_HANDLER,
62051 		ZEND_ASSIGN_BW_OR_SPEC_VAR_TMPVAR_DIM_HANDLER,
62052 		ZEND_ASSIGN_BW_OR_SPEC_VAR_TMPVAR_OBJ_HANDLER,
62053 		ZEND_NULL_HANDLER,
62054 		ZEND_ASSIGN_BW_OR_SPEC_VAR_UNUSED_DIM_HANDLER,
62055 		ZEND_NULL_HANDLER,
62056 		ZEND_ASSIGN_BW_OR_SPEC_VAR_CV_HANDLER,
62057 		ZEND_ASSIGN_BW_OR_SPEC_VAR_CV_DIM_HANDLER,
62058 		ZEND_ASSIGN_BW_OR_SPEC_VAR_CV_OBJ_HANDLER,
62059 		ZEND_NULL_HANDLER,
62060 		ZEND_NULL_HANDLER,
62061 		ZEND_ASSIGN_BW_OR_SPEC_UNUSED_CONST_OBJ_HANDLER,
62062 		ZEND_NULL_HANDLER,
62063 		ZEND_NULL_HANDLER,
62064 		ZEND_ASSIGN_BW_OR_SPEC_UNUSED_TMPVAR_OBJ_HANDLER,
62065 		ZEND_NULL_HANDLER,
62066 		ZEND_NULL_HANDLER,
62067 		ZEND_ASSIGN_BW_OR_SPEC_UNUSED_TMPVAR_OBJ_HANDLER,
62068 		ZEND_NULL_HANDLER,
62069 		ZEND_NULL_HANDLER,
62070 		ZEND_NULL_HANDLER,
62071 		ZEND_NULL_HANDLER,
62072 		ZEND_NULL_HANDLER,
62073 		ZEND_ASSIGN_BW_OR_SPEC_UNUSED_CV_OBJ_HANDLER,
62074 		ZEND_ASSIGN_BW_OR_SPEC_CV_CONST_HANDLER,
62075 		ZEND_ASSIGN_BW_OR_SPEC_CV_CONST_DIM_HANDLER,
62076 		ZEND_ASSIGN_BW_OR_SPEC_CV_CONST_OBJ_HANDLER,
62077 		ZEND_ASSIGN_BW_OR_SPEC_CV_TMPVAR_HANDLER,
62078 		ZEND_ASSIGN_BW_OR_SPEC_CV_TMPVAR_DIM_HANDLER,
62079 		ZEND_ASSIGN_BW_OR_SPEC_CV_TMPVAR_OBJ_HANDLER,
62080 		ZEND_ASSIGN_BW_OR_SPEC_CV_TMPVAR_HANDLER,
62081 		ZEND_ASSIGN_BW_OR_SPEC_CV_TMPVAR_DIM_HANDLER,
62082 		ZEND_ASSIGN_BW_OR_SPEC_CV_TMPVAR_OBJ_HANDLER,
62083 		ZEND_NULL_HANDLER,
62084 		ZEND_ASSIGN_BW_OR_SPEC_CV_UNUSED_DIM_HANDLER,
62085 		ZEND_NULL_HANDLER,
62086 		ZEND_ASSIGN_BW_OR_SPEC_CV_CV_HANDLER,
62087 		ZEND_ASSIGN_BW_OR_SPEC_CV_CV_DIM_HANDLER,
62088 		ZEND_ASSIGN_BW_OR_SPEC_CV_CV_OBJ_HANDLER,
62089 		ZEND_NULL_HANDLER,
62090 		ZEND_NULL_HANDLER,
62091 		ZEND_NULL_HANDLER,
62092 		ZEND_NULL_HANDLER,
62093 		ZEND_NULL_HANDLER,
62094 		ZEND_NULL_HANDLER,
62095 		ZEND_NULL_HANDLER,
62096 		ZEND_NULL_HANDLER,
62097 		ZEND_NULL_HANDLER,
62098 		ZEND_NULL_HANDLER,
62099 		ZEND_NULL_HANDLER,
62100 		ZEND_NULL_HANDLER,
62101 		ZEND_NULL_HANDLER,
62102 		ZEND_NULL_HANDLER,
62103 		ZEND_NULL_HANDLER,
62104 		ZEND_NULL_HANDLER,
62105 		ZEND_NULL_HANDLER,
62106 		ZEND_NULL_HANDLER,
62107 		ZEND_NULL_HANDLER,
62108 		ZEND_NULL_HANDLER,
62109 		ZEND_NULL_HANDLER,
62110 		ZEND_NULL_HANDLER,
62111 		ZEND_NULL_HANDLER,
62112 		ZEND_NULL_HANDLER,
62113 		ZEND_NULL_HANDLER,
62114 		ZEND_NULL_HANDLER,
62115 		ZEND_NULL_HANDLER,
62116 		ZEND_NULL_HANDLER,
62117 		ZEND_NULL_HANDLER,
62118 		ZEND_NULL_HANDLER,
62119 		ZEND_ASSIGN_BW_AND_SPEC_VAR_CONST_HANDLER,
62120 		ZEND_ASSIGN_BW_AND_SPEC_VAR_CONST_DIM_HANDLER,
62121 		ZEND_ASSIGN_BW_AND_SPEC_VAR_CONST_OBJ_HANDLER,
62122 		ZEND_ASSIGN_BW_AND_SPEC_VAR_TMPVAR_HANDLER,
62123 		ZEND_ASSIGN_BW_AND_SPEC_VAR_TMPVAR_DIM_HANDLER,
62124 		ZEND_ASSIGN_BW_AND_SPEC_VAR_TMPVAR_OBJ_HANDLER,
62125 		ZEND_ASSIGN_BW_AND_SPEC_VAR_TMPVAR_HANDLER,
62126 		ZEND_ASSIGN_BW_AND_SPEC_VAR_TMPVAR_DIM_HANDLER,
62127 		ZEND_ASSIGN_BW_AND_SPEC_VAR_TMPVAR_OBJ_HANDLER,
62128 		ZEND_NULL_HANDLER,
62129 		ZEND_ASSIGN_BW_AND_SPEC_VAR_UNUSED_DIM_HANDLER,
62130 		ZEND_NULL_HANDLER,
62131 		ZEND_ASSIGN_BW_AND_SPEC_VAR_CV_HANDLER,
62132 		ZEND_ASSIGN_BW_AND_SPEC_VAR_CV_DIM_HANDLER,
62133 		ZEND_ASSIGN_BW_AND_SPEC_VAR_CV_OBJ_HANDLER,
62134 		ZEND_NULL_HANDLER,
62135 		ZEND_NULL_HANDLER,
62136 		ZEND_ASSIGN_BW_AND_SPEC_UNUSED_CONST_OBJ_HANDLER,
62137 		ZEND_NULL_HANDLER,
62138 		ZEND_NULL_HANDLER,
62139 		ZEND_ASSIGN_BW_AND_SPEC_UNUSED_TMPVAR_OBJ_HANDLER,
62140 		ZEND_NULL_HANDLER,
62141 		ZEND_NULL_HANDLER,
62142 		ZEND_ASSIGN_BW_AND_SPEC_UNUSED_TMPVAR_OBJ_HANDLER,
62143 		ZEND_NULL_HANDLER,
62144 		ZEND_NULL_HANDLER,
62145 		ZEND_NULL_HANDLER,
62146 		ZEND_NULL_HANDLER,
62147 		ZEND_NULL_HANDLER,
62148 		ZEND_ASSIGN_BW_AND_SPEC_UNUSED_CV_OBJ_HANDLER,
62149 		ZEND_ASSIGN_BW_AND_SPEC_CV_CONST_HANDLER,
62150 		ZEND_ASSIGN_BW_AND_SPEC_CV_CONST_DIM_HANDLER,
62151 		ZEND_ASSIGN_BW_AND_SPEC_CV_CONST_OBJ_HANDLER,
62152 		ZEND_ASSIGN_BW_AND_SPEC_CV_TMPVAR_HANDLER,
62153 		ZEND_ASSIGN_BW_AND_SPEC_CV_TMPVAR_DIM_HANDLER,
62154 		ZEND_ASSIGN_BW_AND_SPEC_CV_TMPVAR_OBJ_HANDLER,
62155 		ZEND_ASSIGN_BW_AND_SPEC_CV_TMPVAR_HANDLER,
62156 		ZEND_ASSIGN_BW_AND_SPEC_CV_TMPVAR_DIM_HANDLER,
62157 		ZEND_ASSIGN_BW_AND_SPEC_CV_TMPVAR_OBJ_HANDLER,
62158 		ZEND_NULL_HANDLER,
62159 		ZEND_ASSIGN_BW_AND_SPEC_CV_UNUSED_DIM_HANDLER,
62160 		ZEND_NULL_HANDLER,
62161 		ZEND_ASSIGN_BW_AND_SPEC_CV_CV_HANDLER,
62162 		ZEND_ASSIGN_BW_AND_SPEC_CV_CV_DIM_HANDLER,
62163 		ZEND_ASSIGN_BW_AND_SPEC_CV_CV_OBJ_HANDLER,
62164 		ZEND_NULL_HANDLER,
62165 		ZEND_NULL_HANDLER,
62166 		ZEND_NULL_HANDLER,
62167 		ZEND_NULL_HANDLER,
62168 		ZEND_NULL_HANDLER,
62169 		ZEND_NULL_HANDLER,
62170 		ZEND_NULL_HANDLER,
62171 		ZEND_NULL_HANDLER,
62172 		ZEND_NULL_HANDLER,
62173 		ZEND_NULL_HANDLER,
62174 		ZEND_NULL_HANDLER,
62175 		ZEND_NULL_HANDLER,
62176 		ZEND_NULL_HANDLER,
62177 		ZEND_NULL_HANDLER,
62178 		ZEND_NULL_HANDLER,
62179 		ZEND_NULL_HANDLER,
62180 		ZEND_NULL_HANDLER,
62181 		ZEND_NULL_HANDLER,
62182 		ZEND_NULL_HANDLER,
62183 		ZEND_NULL_HANDLER,
62184 		ZEND_NULL_HANDLER,
62185 		ZEND_NULL_HANDLER,
62186 		ZEND_NULL_HANDLER,
62187 		ZEND_NULL_HANDLER,
62188 		ZEND_NULL_HANDLER,
62189 		ZEND_NULL_HANDLER,
62190 		ZEND_NULL_HANDLER,
62191 		ZEND_NULL_HANDLER,
62192 		ZEND_NULL_HANDLER,
62193 		ZEND_NULL_HANDLER,
62194 		ZEND_ASSIGN_BW_XOR_SPEC_VAR_CONST_HANDLER,
62195 		ZEND_ASSIGN_BW_XOR_SPEC_VAR_CONST_DIM_HANDLER,
62196 		ZEND_ASSIGN_BW_XOR_SPEC_VAR_CONST_OBJ_HANDLER,
62197 		ZEND_ASSIGN_BW_XOR_SPEC_VAR_TMPVAR_HANDLER,
62198 		ZEND_ASSIGN_BW_XOR_SPEC_VAR_TMPVAR_DIM_HANDLER,
62199 		ZEND_ASSIGN_BW_XOR_SPEC_VAR_TMPVAR_OBJ_HANDLER,
62200 		ZEND_ASSIGN_BW_XOR_SPEC_VAR_TMPVAR_HANDLER,
62201 		ZEND_ASSIGN_BW_XOR_SPEC_VAR_TMPVAR_DIM_HANDLER,
62202 		ZEND_ASSIGN_BW_XOR_SPEC_VAR_TMPVAR_OBJ_HANDLER,
62203 		ZEND_NULL_HANDLER,
62204 		ZEND_ASSIGN_BW_XOR_SPEC_VAR_UNUSED_DIM_HANDLER,
62205 		ZEND_NULL_HANDLER,
62206 		ZEND_ASSIGN_BW_XOR_SPEC_VAR_CV_HANDLER,
62207 		ZEND_ASSIGN_BW_XOR_SPEC_VAR_CV_DIM_HANDLER,
62208 		ZEND_ASSIGN_BW_XOR_SPEC_VAR_CV_OBJ_HANDLER,
62209 		ZEND_NULL_HANDLER,
62210 		ZEND_NULL_HANDLER,
62211 		ZEND_ASSIGN_BW_XOR_SPEC_UNUSED_CONST_OBJ_HANDLER,
62212 		ZEND_NULL_HANDLER,
62213 		ZEND_NULL_HANDLER,
62214 		ZEND_ASSIGN_BW_XOR_SPEC_UNUSED_TMPVAR_OBJ_HANDLER,
62215 		ZEND_NULL_HANDLER,
62216 		ZEND_NULL_HANDLER,
62217 		ZEND_ASSIGN_BW_XOR_SPEC_UNUSED_TMPVAR_OBJ_HANDLER,
62218 		ZEND_NULL_HANDLER,
62219 		ZEND_NULL_HANDLER,
62220 		ZEND_NULL_HANDLER,
62221 		ZEND_NULL_HANDLER,
62222 		ZEND_NULL_HANDLER,
62223 		ZEND_ASSIGN_BW_XOR_SPEC_UNUSED_CV_OBJ_HANDLER,
62224 		ZEND_ASSIGN_BW_XOR_SPEC_CV_CONST_HANDLER,
62225 		ZEND_ASSIGN_BW_XOR_SPEC_CV_CONST_DIM_HANDLER,
62226 		ZEND_ASSIGN_BW_XOR_SPEC_CV_CONST_OBJ_HANDLER,
62227 		ZEND_ASSIGN_BW_XOR_SPEC_CV_TMPVAR_HANDLER,
62228 		ZEND_ASSIGN_BW_XOR_SPEC_CV_TMPVAR_DIM_HANDLER,
62229 		ZEND_ASSIGN_BW_XOR_SPEC_CV_TMPVAR_OBJ_HANDLER,
62230 		ZEND_ASSIGN_BW_XOR_SPEC_CV_TMPVAR_HANDLER,
62231 		ZEND_ASSIGN_BW_XOR_SPEC_CV_TMPVAR_DIM_HANDLER,
62232 		ZEND_ASSIGN_BW_XOR_SPEC_CV_TMPVAR_OBJ_HANDLER,
62233 		ZEND_NULL_HANDLER,
62234 		ZEND_ASSIGN_BW_XOR_SPEC_CV_UNUSED_DIM_HANDLER,
62235 		ZEND_NULL_HANDLER,
62236 		ZEND_ASSIGN_BW_XOR_SPEC_CV_CV_HANDLER,
62237 		ZEND_ASSIGN_BW_XOR_SPEC_CV_CV_DIM_HANDLER,
62238 		ZEND_ASSIGN_BW_XOR_SPEC_CV_CV_OBJ_HANDLER,
62239 		ZEND_NULL_HANDLER,
62240 		ZEND_NULL_HANDLER,
62241 		ZEND_NULL_HANDLER,
62242 		ZEND_NULL_HANDLER,
62243 		ZEND_PRE_INC_SPEC_VAR_RETVAL_UNUSED_HANDLER,
62244 		ZEND_PRE_INC_SPEC_VAR_RETVAL_USED_HANDLER,
62245 		ZEND_NULL_HANDLER,
62246 		ZEND_NULL_HANDLER,
62247 		ZEND_PRE_INC_SPEC_CV_RETVAL_UNUSED_HANDLER,
62248 		ZEND_PRE_INC_SPEC_CV_RETVAL_USED_HANDLER,
62249 		ZEND_NULL_HANDLER,
62250 		ZEND_NULL_HANDLER,
62251 		ZEND_NULL_HANDLER,
62252 		ZEND_NULL_HANDLER,
62253 		ZEND_PRE_DEC_SPEC_VAR_RETVAL_UNUSED_HANDLER,
62254 		ZEND_PRE_DEC_SPEC_VAR_RETVAL_USED_HANDLER,
62255 		ZEND_NULL_HANDLER,
62256 		ZEND_NULL_HANDLER,
62257 		ZEND_PRE_DEC_SPEC_CV_RETVAL_UNUSED_HANDLER,
62258 		ZEND_PRE_DEC_SPEC_CV_RETVAL_USED_HANDLER,
62259 		ZEND_NULL_HANDLER,
62260 		ZEND_NULL_HANDLER,
62261 		ZEND_POST_INC_SPEC_VAR_HANDLER,
62262 		ZEND_NULL_HANDLER,
62263 		ZEND_POST_INC_SPEC_CV_HANDLER,
62264 		ZEND_NULL_HANDLER,
62265 		ZEND_NULL_HANDLER,
62266 		ZEND_POST_DEC_SPEC_VAR_HANDLER,
62267 		ZEND_NULL_HANDLER,
62268 		ZEND_POST_DEC_SPEC_CV_HANDLER,
62269 		ZEND_NULL_HANDLER,
62270 		ZEND_NULL_HANDLER,
62271 		ZEND_NULL_HANDLER,
62272 		ZEND_NULL_HANDLER,
62273 		ZEND_NULL_HANDLER,
62274 		ZEND_NULL_HANDLER,
62275 		ZEND_NULL_HANDLER,
62276 		ZEND_NULL_HANDLER,
62277 		ZEND_NULL_HANDLER,
62278 		ZEND_NULL_HANDLER,
62279 		ZEND_NULL_HANDLER,
62280 		ZEND_NULL_HANDLER,
62281 		ZEND_NULL_HANDLER,
62282 		ZEND_NULL_HANDLER,
62283 		ZEND_NULL_HANDLER,
62284 		ZEND_NULL_HANDLER,
62285 		ZEND_NULL_HANDLER,
62286 		ZEND_NULL_HANDLER,
62287 		ZEND_NULL_HANDLER,
62288 		ZEND_NULL_HANDLER,
62289 		ZEND_ASSIGN_SPEC_VAR_CONST_RETVAL_UNUSED_HANDLER,
62290 		ZEND_ASSIGN_SPEC_VAR_CONST_RETVAL_USED_HANDLER,
62291 		ZEND_ASSIGN_SPEC_VAR_TMP_RETVAL_UNUSED_HANDLER,
62292 		ZEND_ASSIGN_SPEC_VAR_TMP_RETVAL_USED_HANDLER,
62293 		ZEND_ASSIGN_SPEC_VAR_VAR_RETVAL_UNUSED_HANDLER,
62294 		ZEND_ASSIGN_SPEC_VAR_VAR_RETVAL_USED_HANDLER,
62295 		ZEND_NULL_HANDLER,
62296 		ZEND_NULL_HANDLER,
62297 		ZEND_ASSIGN_SPEC_VAR_CV_RETVAL_UNUSED_HANDLER,
62298 		ZEND_ASSIGN_SPEC_VAR_CV_RETVAL_USED_HANDLER,
62299 		ZEND_NULL_HANDLER,
62300 		ZEND_NULL_HANDLER,
62301 		ZEND_NULL_HANDLER,
62302 		ZEND_NULL_HANDLER,
62303 		ZEND_NULL_HANDLER,
62304 		ZEND_NULL_HANDLER,
62305 		ZEND_NULL_HANDLER,
62306 		ZEND_NULL_HANDLER,
62307 		ZEND_NULL_HANDLER,
62308 		ZEND_NULL_HANDLER,
62309 		ZEND_ASSIGN_SPEC_CV_CONST_RETVAL_UNUSED_HANDLER,
62310 		ZEND_ASSIGN_SPEC_CV_CONST_RETVAL_USED_HANDLER,
62311 		ZEND_ASSIGN_SPEC_CV_TMP_RETVAL_UNUSED_HANDLER,
62312 		ZEND_ASSIGN_SPEC_CV_TMP_RETVAL_USED_HANDLER,
62313 		ZEND_ASSIGN_SPEC_CV_VAR_RETVAL_UNUSED_HANDLER,
62314 		ZEND_ASSIGN_SPEC_CV_VAR_RETVAL_USED_HANDLER,
62315 		ZEND_NULL_HANDLER,
62316 		ZEND_NULL_HANDLER,
62317 		ZEND_ASSIGN_SPEC_CV_CV_RETVAL_UNUSED_HANDLER,
62318 		ZEND_ASSIGN_SPEC_CV_CV_RETVAL_USED_HANDLER,
62319 		ZEND_NULL_HANDLER,
62320 		ZEND_NULL_HANDLER,
62321 		ZEND_NULL_HANDLER,
62322 		ZEND_NULL_HANDLER,
62323 		ZEND_NULL_HANDLER,
62324 		ZEND_NULL_HANDLER,
62325 		ZEND_NULL_HANDLER,
62326 		ZEND_NULL_HANDLER,
62327 		ZEND_NULL_HANDLER,
62328 		ZEND_NULL_HANDLER,
62329 		ZEND_NULL_HANDLER,
62330 		ZEND_NULL_HANDLER,
62331 		ZEND_ASSIGN_REF_SPEC_VAR_VAR_HANDLER,
62332 		ZEND_NULL_HANDLER,
62333 		ZEND_ASSIGN_REF_SPEC_VAR_CV_HANDLER,
62334 		ZEND_NULL_HANDLER,
62335 		ZEND_NULL_HANDLER,
62336 		ZEND_NULL_HANDLER,
62337 		ZEND_NULL_HANDLER,
62338 		ZEND_NULL_HANDLER,
62339 		ZEND_NULL_HANDLER,
62340 		ZEND_NULL_HANDLER,
62341 		ZEND_ASSIGN_REF_SPEC_CV_VAR_HANDLER,
62342 		ZEND_NULL_HANDLER,
62343 		ZEND_ASSIGN_REF_SPEC_CV_CV_HANDLER,
62344 		ZEND_ECHO_SPEC_CONST_HANDLER,
62345 		ZEND_ECHO_SPEC_TMPVAR_HANDLER,
62346 		ZEND_ECHO_SPEC_TMPVAR_HANDLER,
62347 		ZEND_NULL_HANDLER,
62348 		ZEND_ECHO_SPEC_CV_HANDLER,
62349 		ZEND_GENERATOR_CREATE_SPEC_HANDLER,
62350 		ZEND_JMP_SPEC_HANDLER,
62351 		ZEND_JMPZ_SPEC_CONST_HANDLER,
62352 		ZEND_JMPZ_SPEC_TMPVAR_HANDLER,
62353 		ZEND_JMPZ_SPEC_TMPVAR_HANDLER,
62354 		ZEND_NULL_HANDLER,
62355 		ZEND_JMPZ_SPEC_CV_HANDLER,
62356 		ZEND_JMPNZ_SPEC_CONST_HANDLER,
62357 		ZEND_JMPNZ_SPEC_TMPVAR_HANDLER,
62358 		ZEND_JMPNZ_SPEC_TMPVAR_HANDLER,
62359 		ZEND_NULL_HANDLER,
62360 		ZEND_JMPNZ_SPEC_CV_HANDLER,
62361 		ZEND_JMPZNZ_SPEC_CONST_HANDLER,
62362 		ZEND_JMPZNZ_SPEC_TMPVAR_HANDLER,
62363 		ZEND_JMPZNZ_SPEC_TMPVAR_HANDLER,
62364 		ZEND_NULL_HANDLER,
62365 		ZEND_JMPZNZ_SPEC_CV_HANDLER,
62366 		ZEND_JMPZ_EX_SPEC_CONST_HANDLER,
62367 		ZEND_JMPZ_EX_SPEC_TMPVAR_HANDLER,
62368 		ZEND_JMPZ_EX_SPEC_TMPVAR_HANDLER,
62369 		ZEND_NULL_HANDLER,
62370 		ZEND_JMPZ_EX_SPEC_CV_HANDLER,
62371 		ZEND_JMPNZ_EX_SPEC_CONST_HANDLER,
62372 		ZEND_JMPNZ_EX_SPEC_TMPVAR_HANDLER,
62373 		ZEND_JMPNZ_EX_SPEC_TMPVAR_HANDLER,
62374 		ZEND_NULL_HANDLER,
62375 		ZEND_JMPNZ_EX_SPEC_CV_HANDLER,
62376 		ZEND_CASE_SPEC_TMPVAR_CONST_HANDLER,
62377 		ZEND_CASE_SPEC_TMPVAR_TMPVAR_HANDLER,
62378 		ZEND_CASE_SPEC_TMPVAR_TMPVAR_HANDLER,
62379 		ZEND_NULL_HANDLER,
62380 		ZEND_CASE_SPEC_TMPVAR_CV_HANDLER,
62381 		ZEND_CHECK_VAR_SPEC_CV_UNUSED_HANDLER,
62382 		ZEND_SEND_VAR_NO_REF_EX_SPEC_VAR_HANDLER,
62383 		ZEND_SEND_VAR_NO_REF_EX_SPEC_VAR_QUICK_HANDLER,
62384 		ZEND_NULL_HANDLER,
62385 		ZEND_NULL_HANDLER,
62386 		ZEND_MAKE_REF_SPEC_VAR_UNUSED_HANDLER,
62387 		ZEND_NULL_HANDLER,
62388 		ZEND_MAKE_REF_SPEC_CV_UNUSED_HANDLER,
62389 		ZEND_BOOL_SPEC_CONST_HANDLER,
62390 		ZEND_BOOL_SPEC_TMPVAR_HANDLER,
62391 		ZEND_BOOL_SPEC_TMPVAR_HANDLER,
62392 		ZEND_NULL_HANDLER,
62393 		ZEND_BOOL_SPEC_CV_HANDLER,
62394 		ZEND_FAST_CONCAT_SPEC_CONST_CONST_HANDLER,
62395 		ZEND_FAST_CONCAT_SPEC_CONST_TMPVAR_HANDLER,
62396 		ZEND_FAST_CONCAT_SPEC_CONST_TMPVAR_HANDLER,
62397 		ZEND_NULL_HANDLER,
62398 		ZEND_FAST_CONCAT_SPEC_CONST_CV_HANDLER,
62399 		ZEND_FAST_CONCAT_SPEC_TMPVAR_CONST_HANDLER,
62400 		ZEND_FAST_CONCAT_SPEC_TMPVAR_TMPVAR_HANDLER,
62401 		ZEND_FAST_CONCAT_SPEC_TMPVAR_TMPVAR_HANDLER,
62402 		ZEND_NULL_HANDLER,
62403 		ZEND_FAST_CONCAT_SPEC_TMPVAR_CV_HANDLER,
62404 		ZEND_FAST_CONCAT_SPEC_TMPVAR_CONST_HANDLER,
62405 		ZEND_FAST_CONCAT_SPEC_TMPVAR_TMPVAR_HANDLER,
62406 		ZEND_FAST_CONCAT_SPEC_TMPVAR_TMPVAR_HANDLER,
62407 		ZEND_NULL_HANDLER,
62408 		ZEND_FAST_CONCAT_SPEC_TMPVAR_CV_HANDLER,
62409 		ZEND_NULL_HANDLER,
62410 		ZEND_NULL_HANDLER,
62411 		ZEND_NULL_HANDLER,
62412 		ZEND_NULL_HANDLER,
62413 		ZEND_NULL_HANDLER,
62414 		ZEND_FAST_CONCAT_SPEC_CV_CONST_HANDLER,
62415 		ZEND_FAST_CONCAT_SPEC_CV_TMPVAR_HANDLER,
62416 		ZEND_FAST_CONCAT_SPEC_CV_TMPVAR_HANDLER,
62417 		ZEND_NULL_HANDLER,
62418 		ZEND_FAST_CONCAT_SPEC_CV_CV_HANDLER,
62419 		ZEND_ROPE_INIT_SPEC_UNUSED_CONST_HANDLER,
62420 		ZEND_ROPE_INIT_SPEC_UNUSED_TMPVAR_HANDLER,
62421 		ZEND_ROPE_INIT_SPEC_UNUSED_TMPVAR_HANDLER,
62422 		ZEND_NULL_HANDLER,
62423 		ZEND_ROPE_INIT_SPEC_UNUSED_CV_HANDLER,
62424 		ZEND_ROPE_ADD_SPEC_TMP_CONST_HANDLER,
62425 		ZEND_ROPE_ADD_SPEC_TMP_TMPVAR_HANDLER,
62426 		ZEND_ROPE_ADD_SPEC_TMP_TMPVAR_HANDLER,
62427 		ZEND_NULL_HANDLER,
62428 		ZEND_ROPE_ADD_SPEC_TMP_CV_HANDLER,
62429 		ZEND_ROPE_END_SPEC_TMP_CONST_HANDLER,
62430 		ZEND_ROPE_END_SPEC_TMP_TMPVAR_HANDLER,
62431 		ZEND_ROPE_END_SPEC_TMP_TMPVAR_HANDLER,
62432 		ZEND_NULL_HANDLER,
62433 		ZEND_ROPE_END_SPEC_TMP_CV_HANDLER,
62434 		ZEND_BEGIN_SILENCE_SPEC_HANDLER,
62435 		ZEND_END_SILENCE_SPEC_TMP_HANDLER,
62436 		ZEND_INIT_FCALL_BY_NAME_SPEC_CONST_HANDLER,
62437 		ZEND_DO_FCALL_SPEC_RETVAL_UNUSED_HANDLER,
62438 		ZEND_DO_FCALL_SPEC_RETVAL_USED_HANDLER,
62439 		ZEND_INIT_FCALL_SPEC_CONST_HANDLER,
62440 		ZEND_RETURN_SPEC_CONST_HANDLER,
62441 		ZEND_RETURN_SPEC_TMP_HANDLER,
62442 		ZEND_RETURN_SPEC_VAR_HANDLER,
62443 		ZEND_NULL_HANDLER,
62444 		ZEND_RETURN_SPEC_CV_HANDLER,
62445 		ZEND_RECV_SPEC_UNUSED_HANDLER,
62446 		ZEND_RECV_INIT_SPEC_CONST_HANDLER,
62447 		ZEND_SEND_VAL_SPEC_CONST_HANDLER,
62448 		ZEND_SEND_VAL_SPEC_TMPVAR_HANDLER,
62449 		ZEND_SEND_VAL_SPEC_TMPVAR_HANDLER,
62450 		ZEND_NULL_HANDLER,
62451 		ZEND_NULL_HANDLER,
62452 		ZEND_NULL_HANDLER,
62453 		ZEND_NULL_HANDLER,
62454 		ZEND_NULL_HANDLER,
62455 		ZEND_NULL_HANDLER,
62456 		ZEND_SEND_VAR_EX_SPEC_VAR_HANDLER,
62457 		ZEND_SEND_VAR_EX_SPEC_VAR_QUICK_HANDLER,
62458 		ZEND_NULL_HANDLER,
62459 		ZEND_NULL_HANDLER,
62460 		ZEND_SEND_VAR_EX_SPEC_CV_HANDLER,
62461 		ZEND_SEND_VAR_EX_SPEC_CV_QUICK_HANDLER,
62462 		ZEND_NULL_HANDLER,
62463 		ZEND_NULL_HANDLER,
62464 		ZEND_SEND_REF_SPEC_VAR_HANDLER,
62465 		ZEND_NULL_HANDLER,
62466 		ZEND_SEND_REF_SPEC_CV_HANDLER,
62467 		ZEND_NEW_SPEC_CONST_UNUSED_HANDLER,
62468 		ZEND_NULL_HANDLER,
62469 		ZEND_NEW_SPEC_VAR_UNUSED_HANDLER,
62470 		ZEND_NEW_SPEC_UNUSED_UNUSED_HANDLER,
62471 		ZEND_NULL_HANDLER,
62472 		ZEND_INIT_NS_FCALL_BY_NAME_SPEC_CONST_HANDLER,
62473 		ZEND_FREE_SPEC_TMPVAR_HANDLER,
62474 		ZEND_INIT_ARRAY_SPEC_CONST_CONST_HANDLER,
62475 		ZEND_INIT_ARRAY_SPEC_CONST_TMPVAR_HANDLER,
62476 		ZEND_INIT_ARRAY_SPEC_CONST_TMPVAR_HANDLER,
62477 		ZEND_INIT_ARRAY_SPEC_CONST_UNUSED_HANDLER,
62478 		ZEND_INIT_ARRAY_SPEC_CONST_CV_HANDLER,
62479 		ZEND_INIT_ARRAY_SPEC_TMP_CONST_HANDLER,
62480 		ZEND_INIT_ARRAY_SPEC_TMP_TMPVAR_HANDLER,
62481 		ZEND_INIT_ARRAY_SPEC_TMP_TMPVAR_HANDLER,
62482 		ZEND_INIT_ARRAY_SPEC_TMP_UNUSED_HANDLER,
62483 		ZEND_INIT_ARRAY_SPEC_TMP_CV_HANDLER,
62484 		ZEND_INIT_ARRAY_SPEC_VAR_CONST_HANDLER,
62485 		ZEND_INIT_ARRAY_SPEC_VAR_TMPVAR_HANDLER,
62486 		ZEND_INIT_ARRAY_SPEC_VAR_TMPVAR_HANDLER,
62487 		ZEND_INIT_ARRAY_SPEC_VAR_UNUSED_HANDLER,
62488 		ZEND_INIT_ARRAY_SPEC_VAR_CV_HANDLER,
62489 		ZEND_NULL_HANDLER,
62490 		ZEND_NULL_HANDLER,
62491 		ZEND_NULL_HANDLER,
62492 		ZEND_NULL_HANDLER,
62493 		ZEND_NULL_HANDLER,
62494 		ZEND_INIT_ARRAY_SPEC_CV_CONST_HANDLER,
62495 		ZEND_INIT_ARRAY_SPEC_CV_TMPVAR_HANDLER,
62496 		ZEND_INIT_ARRAY_SPEC_CV_TMPVAR_HANDLER,
62497 		ZEND_INIT_ARRAY_SPEC_CV_UNUSED_HANDLER,
62498 		ZEND_INIT_ARRAY_SPEC_CV_CV_HANDLER,
62499 		ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_CONST_HANDLER,
62500 		ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_TMPVAR_HANDLER,
62501 		ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_TMPVAR_HANDLER,
62502 		ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_UNUSED_HANDLER,
62503 		ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_CV_HANDLER,
62504 		ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_CONST_HANDLER,
62505 		ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_TMPVAR_HANDLER,
62506 		ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_TMPVAR_HANDLER,
62507 		ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_UNUSED_HANDLER,
62508 		ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_CV_HANDLER,
62509 		ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_CONST_HANDLER,
62510 		ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_TMPVAR_HANDLER,
62511 		ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_TMPVAR_HANDLER,
62512 		ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_UNUSED_HANDLER,
62513 		ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_CV_HANDLER,
62514 		ZEND_NULL_HANDLER,
62515 		ZEND_NULL_HANDLER,
62516 		ZEND_NULL_HANDLER,
62517 		ZEND_NULL_HANDLER,
62518 		ZEND_NULL_HANDLER,
62519 		ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_CONST_HANDLER,
62520 		ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_TMPVAR_HANDLER,
62521 		ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_TMPVAR_HANDLER,
62522 		ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_UNUSED_HANDLER,
62523 		ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_CV_HANDLER,
62524 		ZEND_INCLUDE_OR_EVAL_SPEC_CONST_HANDLER,
62525 		ZEND_INCLUDE_OR_EVAL_SPEC_TMPVAR_HANDLER,
62526 		ZEND_INCLUDE_OR_EVAL_SPEC_TMPVAR_HANDLER,
62527 		ZEND_NULL_HANDLER,
62528 		ZEND_INCLUDE_OR_EVAL_SPEC_CV_HANDLER,
62529 		ZEND_UNSET_VAR_SPEC_CONST_UNUSED_HANDLER,
62530 		ZEND_UNSET_VAR_SPEC_TMPVAR_UNUSED_HANDLER,
62531 		ZEND_UNSET_VAR_SPEC_TMPVAR_UNUSED_HANDLER,
62532 		ZEND_NULL_HANDLER,
62533 		ZEND_UNSET_VAR_SPEC_CV_UNUSED_HANDLER,
62534 		ZEND_NULL_HANDLER,
62535 		ZEND_NULL_HANDLER,
62536 		ZEND_NULL_HANDLER,
62537 		ZEND_NULL_HANDLER,
62538 		ZEND_NULL_HANDLER,
62539 		ZEND_NULL_HANDLER,
62540 		ZEND_NULL_HANDLER,
62541 		ZEND_NULL_HANDLER,
62542 		ZEND_NULL_HANDLER,
62543 		ZEND_NULL_HANDLER,
62544 		ZEND_UNSET_DIM_SPEC_VAR_CONST_HANDLER,
62545 		ZEND_UNSET_DIM_SPEC_VAR_TMPVAR_HANDLER,
62546 		ZEND_UNSET_DIM_SPEC_VAR_TMPVAR_HANDLER,
62547 		ZEND_NULL_HANDLER,
62548 		ZEND_UNSET_DIM_SPEC_VAR_CV_HANDLER,
62549 		ZEND_NULL_HANDLER,
62550 		ZEND_NULL_HANDLER,
62551 		ZEND_NULL_HANDLER,
62552 		ZEND_NULL_HANDLER,
62553 		ZEND_NULL_HANDLER,
62554 		ZEND_UNSET_DIM_SPEC_CV_CONST_HANDLER,
62555 		ZEND_UNSET_DIM_SPEC_CV_TMPVAR_HANDLER,
62556 		ZEND_UNSET_DIM_SPEC_CV_TMPVAR_HANDLER,
62557 		ZEND_NULL_HANDLER,
62558 		ZEND_UNSET_DIM_SPEC_CV_CV_HANDLER,
62559 		ZEND_NULL_HANDLER,
62560 		ZEND_NULL_HANDLER,
62561 		ZEND_NULL_HANDLER,
62562 		ZEND_NULL_HANDLER,
62563 		ZEND_NULL_HANDLER,
62564 		ZEND_NULL_HANDLER,
62565 		ZEND_NULL_HANDLER,
62566 		ZEND_NULL_HANDLER,
62567 		ZEND_NULL_HANDLER,
62568 		ZEND_NULL_HANDLER,
62569 		ZEND_UNSET_OBJ_SPEC_VAR_CONST_HANDLER,
62570 		ZEND_UNSET_OBJ_SPEC_VAR_TMPVAR_HANDLER,
62571 		ZEND_UNSET_OBJ_SPEC_VAR_TMPVAR_HANDLER,
62572 		ZEND_NULL_HANDLER,
62573 		ZEND_UNSET_OBJ_SPEC_VAR_CV_HANDLER,
62574 		ZEND_UNSET_OBJ_SPEC_UNUSED_CONST_HANDLER,
62575 		ZEND_UNSET_OBJ_SPEC_UNUSED_TMPVAR_HANDLER,
62576 		ZEND_UNSET_OBJ_SPEC_UNUSED_TMPVAR_HANDLER,
62577 		ZEND_NULL_HANDLER,
62578 		ZEND_UNSET_OBJ_SPEC_UNUSED_CV_HANDLER,
62579 		ZEND_UNSET_OBJ_SPEC_CV_CONST_HANDLER,
62580 		ZEND_UNSET_OBJ_SPEC_CV_TMPVAR_HANDLER,
62581 		ZEND_UNSET_OBJ_SPEC_CV_TMPVAR_HANDLER,
62582 		ZEND_NULL_HANDLER,
62583 		ZEND_UNSET_OBJ_SPEC_CV_CV_HANDLER,
62584 		ZEND_FE_RESET_R_SPEC_CONST_HANDLER,
62585 		ZEND_FE_RESET_R_SPEC_TMP_HANDLER,
62586 		ZEND_FE_RESET_R_SPEC_VAR_HANDLER,
62587 		ZEND_NULL_HANDLER,
62588 		ZEND_FE_RESET_R_SPEC_CV_HANDLER,
62589 		ZEND_FE_FETCH_R_SPEC_VAR_HANDLER,
62590 		ZEND_EXIT_SPEC_CONST_HANDLER,
62591 		ZEND_EXIT_SPEC_TMPVAR_HANDLER,
62592 		ZEND_EXIT_SPEC_TMPVAR_HANDLER,
62593 		ZEND_EXIT_SPEC_UNUSED_HANDLER,
62594 		ZEND_EXIT_SPEC_CV_HANDLER,
62595 		ZEND_FETCH_R_SPEC_CONST_UNUSED_HANDLER,
62596 		ZEND_FETCH_R_SPEC_TMPVAR_UNUSED_HANDLER,
62597 		ZEND_FETCH_R_SPEC_TMPVAR_UNUSED_HANDLER,
62598 		ZEND_NULL_HANDLER,
62599 		ZEND_FETCH_R_SPEC_CV_UNUSED_HANDLER,
62600 		ZEND_FETCH_DIM_R_SPEC_CONST_CONST_HANDLER,
62601 		ZEND_FETCH_DIM_R_SPEC_CONST_TMPVAR_HANDLER,
62602 		ZEND_FETCH_DIM_R_SPEC_CONST_TMPVAR_HANDLER,
62603 		ZEND_NULL_HANDLER,
62604 		ZEND_FETCH_DIM_R_SPEC_CONST_CV_HANDLER,
62605 		ZEND_FETCH_DIM_R_SPEC_TMPVAR_CONST_HANDLER,
62606 		ZEND_FETCH_DIM_R_SPEC_TMPVAR_TMPVAR_HANDLER,
62607 		ZEND_FETCH_DIM_R_SPEC_TMPVAR_TMPVAR_HANDLER,
62608 		ZEND_NULL_HANDLER,
62609 		ZEND_FETCH_DIM_R_SPEC_TMPVAR_CV_HANDLER,
62610 		ZEND_FETCH_DIM_R_SPEC_TMPVAR_CONST_HANDLER,
62611 		ZEND_FETCH_DIM_R_SPEC_TMPVAR_TMPVAR_HANDLER,
62612 		ZEND_FETCH_DIM_R_SPEC_TMPVAR_TMPVAR_HANDLER,
62613 		ZEND_NULL_HANDLER,
62614 		ZEND_FETCH_DIM_R_SPEC_TMPVAR_CV_HANDLER,
62615 		ZEND_NULL_HANDLER,
62616 		ZEND_NULL_HANDLER,
62617 		ZEND_NULL_HANDLER,
62618 		ZEND_NULL_HANDLER,
62619 		ZEND_NULL_HANDLER,
62620 		ZEND_FETCH_DIM_R_SPEC_CV_CONST_HANDLER,
62621 		ZEND_FETCH_DIM_R_SPEC_CV_TMPVAR_HANDLER,
62622 		ZEND_FETCH_DIM_R_SPEC_CV_TMPVAR_HANDLER,
62623 		ZEND_NULL_HANDLER,
62624 		ZEND_FETCH_DIM_R_SPEC_CV_CV_HANDLER,
62625 		ZEND_FETCH_OBJ_R_SPEC_CONST_CONST_HANDLER,
62626 		ZEND_FETCH_OBJ_R_SPEC_CONST_TMPVAR_HANDLER,
62627 		ZEND_FETCH_OBJ_R_SPEC_CONST_TMPVAR_HANDLER,
62628 		ZEND_NULL_HANDLER,
62629 		ZEND_FETCH_OBJ_R_SPEC_CONST_CV_HANDLER,
62630 		ZEND_FETCH_OBJ_R_SPEC_TMPVAR_CONST_HANDLER,
62631 		ZEND_FETCH_OBJ_R_SPEC_TMPVAR_TMPVAR_HANDLER,
62632 		ZEND_FETCH_OBJ_R_SPEC_TMPVAR_TMPVAR_HANDLER,
62633 		ZEND_NULL_HANDLER,
62634 		ZEND_FETCH_OBJ_R_SPEC_TMPVAR_CV_HANDLER,
62635 		ZEND_FETCH_OBJ_R_SPEC_TMPVAR_CONST_HANDLER,
62636 		ZEND_FETCH_OBJ_R_SPEC_TMPVAR_TMPVAR_HANDLER,
62637 		ZEND_FETCH_OBJ_R_SPEC_TMPVAR_TMPVAR_HANDLER,
62638 		ZEND_NULL_HANDLER,
62639 		ZEND_FETCH_OBJ_R_SPEC_TMPVAR_CV_HANDLER,
62640 		ZEND_FETCH_OBJ_R_SPEC_UNUSED_CONST_HANDLER,
62641 		ZEND_FETCH_OBJ_R_SPEC_UNUSED_TMPVAR_HANDLER,
62642 		ZEND_FETCH_OBJ_R_SPEC_UNUSED_TMPVAR_HANDLER,
62643 		ZEND_NULL_HANDLER,
62644 		ZEND_FETCH_OBJ_R_SPEC_UNUSED_CV_HANDLER,
62645 		ZEND_FETCH_OBJ_R_SPEC_CV_CONST_HANDLER,
62646 		ZEND_FETCH_OBJ_R_SPEC_CV_TMPVAR_HANDLER,
62647 		ZEND_FETCH_OBJ_R_SPEC_CV_TMPVAR_HANDLER,
62648 		ZEND_NULL_HANDLER,
62649 		ZEND_FETCH_OBJ_R_SPEC_CV_CV_HANDLER,
62650 		ZEND_FETCH_W_SPEC_CONST_UNUSED_HANDLER,
62651 		ZEND_FETCH_W_SPEC_TMPVAR_UNUSED_HANDLER,
62652 		ZEND_FETCH_W_SPEC_TMPVAR_UNUSED_HANDLER,
62653 		ZEND_NULL_HANDLER,
62654 		ZEND_FETCH_W_SPEC_CV_UNUSED_HANDLER,
62655 		ZEND_NULL_HANDLER,
62656 		ZEND_NULL_HANDLER,
62657 		ZEND_NULL_HANDLER,
62658 		ZEND_NULL_HANDLER,
62659 		ZEND_NULL_HANDLER,
62660 		ZEND_NULL_HANDLER,
62661 		ZEND_NULL_HANDLER,
62662 		ZEND_NULL_HANDLER,
62663 		ZEND_NULL_HANDLER,
62664 		ZEND_NULL_HANDLER,
62665 		ZEND_FETCH_DIM_W_SPEC_VAR_CONST_HANDLER,
62666 		ZEND_FETCH_DIM_W_SPEC_VAR_TMPVAR_HANDLER,
62667 		ZEND_FETCH_DIM_W_SPEC_VAR_TMPVAR_HANDLER,
62668 		ZEND_FETCH_DIM_W_SPEC_VAR_UNUSED_HANDLER,
62669 		ZEND_FETCH_DIM_W_SPEC_VAR_CV_HANDLER,
62670 		ZEND_NULL_HANDLER,
62671 		ZEND_NULL_HANDLER,
62672 		ZEND_NULL_HANDLER,
62673 		ZEND_NULL_HANDLER,
62674 		ZEND_NULL_HANDLER,
62675 		ZEND_FETCH_DIM_W_SPEC_CV_CONST_HANDLER,
62676 		ZEND_FETCH_DIM_W_SPEC_CV_TMPVAR_HANDLER,
62677 		ZEND_FETCH_DIM_W_SPEC_CV_TMPVAR_HANDLER,
62678 		ZEND_FETCH_DIM_W_SPEC_CV_UNUSED_HANDLER,
62679 		ZEND_FETCH_DIM_W_SPEC_CV_CV_HANDLER,
62680 		ZEND_NULL_HANDLER,
62681 		ZEND_NULL_HANDLER,
62682 		ZEND_NULL_HANDLER,
62683 		ZEND_NULL_HANDLER,
62684 		ZEND_NULL_HANDLER,
62685 		ZEND_NULL_HANDLER,
62686 		ZEND_NULL_HANDLER,
62687 		ZEND_NULL_HANDLER,
62688 		ZEND_NULL_HANDLER,
62689 		ZEND_NULL_HANDLER,
62690 		ZEND_FETCH_OBJ_W_SPEC_VAR_CONST_HANDLER,
62691 		ZEND_FETCH_OBJ_W_SPEC_VAR_TMPVAR_HANDLER,
62692 		ZEND_FETCH_OBJ_W_SPEC_VAR_TMPVAR_HANDLER,
62693 		ZEND_NULL_HANDLER,
62694 		ZEND_FETCH_OBJ_W_SPEC_VAR_CV_HANDLER,
62695 		ZEND_FETCH_OBJ_W_SPEC_UNUSED_CONST_HANDLER,
62696 		ZEND_FETCH_OBJ_W_SPEC_UNUSED_TMPVAR_HANDLER,
62697 		ZEND_FETCH_OBJ_W_SPEC_UNUSED_TMPVAR_HANDLER,
62698 		ZEND_NULL_HANDLER,
62699 		ZEND_FETCH_OBJ_W_SPEC_UNUSED_CV_HANDLER,
62700 		ZEND_FETCH_OBJ_W_SPEC_CV_CONST_HANDLER,
62701 		ZEND_FETCH_OBJ_W_SPEC_CV_TMPVAR_HANDLER,
62702 		ZEND_FETCH_OBJ_W_SPEC_CV_TMPVAR_HANDLER,
62703 		ZEND_NULL_HANDLER,
62704 		ZEND_FETCH_OBJ_W_SPEC_CV_CV_HANDLER,
62705 		ZEND_FETCH_RW_SPEC_CONST_UNUSED_HANDLER,
62706 		ZEND_FETCH_RW_SPEC_TMPVAR_UNUSED_HANDLER,
62707 		ZEND_FETCH_RW_SPEC_TMPVAR_UNUSED_HANDLER,
62708 		ZEND_NULL_HANDLER,
62709 		ZEND_FETCH_RW_SPEC_CV_UNUSED_HANDLER,
62710 		ZEND_NULL_HANDLER,
62711 		ZEND_NULL_HANDLER,
62712 		ZEND_NULL_HANDLER,
62713 		ZEND_NULL_HANDLER,
62714 		ZEND_NULL_HANDLER,
62715 		ZEND_NULL_HANDLER,
62716 		ZEND_NULL_HANDLER,
62717 		ZEND_NULL_HANDLER,
62718 		ZEND_NULL_HANDLER,
62719 		ZEND_NULL_HANDLER,
62720 		ZEND_FETCH_DIM_RW_SPEC_VAR_CONST_HANDLER,
62721 		ZEND_FETCH_DIM_RW_SPEC_VAR_TMPVAR_HANDLER,
62722 		ZEND_FETCH_DIM_RW_SPEC_VAR_TMPVAR_HANDLER,
62723 		ZEND_FETCH_DIM_RW_SPEC_VAR_UNUSED_HANDLER,
62724 		ZEND_FETCH_DIM_RW_SPEC_VAR_CV_HANDLER,
62725 		ZEND_NULL_HANDLER,
62726 		ZEND_NULL_HANDLER,
62727 		ZEND_NULL_HANDLER,
62728 		ZEND_NULL_HANDLER,
62729 		ZEND_NULL_HANDLER,
62730 		ZEND_FETCH_DIM_RW_SPEC_CV_CONST_HANDLER,
62731 		ZEND_FETCH_DIM_RW_SPEC_CV_TMPVAR_HANDLER,
62732 		ZEND_FETCH_DIM_RW_SPEC_CV_TMPVAR_HANDLER,
62733 		ZEND_FETCH_DIM_RW_SPEC_CV_UNUSED_HANDLER,
62734 		ZEND_FETCH_DIM_RW_SPEC_CV_CV_HANDLER,
62735 		ZEND_NULL_HANDLER,
62736 		ZEND_NULL_HANDLER,
62737 		ZEND_NULL_HANDLER,
62738 		ZEND_NULL_HANDLER,
62739 		ZEND_NULL_HANDLER,
62740 		ZEND_NULL_HANDLER,
62741 		ZEND_NULL_HANDLER,
62742 		ZEND_NULL_HANDLER,
62743 		ZEND_NULL_HANDLER,
62744 		ZEND_NULL_HANDLER,
62745 		ZEND_FETCH_OBJ_RW_SPEC_VAR_CONST_HANDLER,
62746 		ZEND_FETCH_OBJ_RW_SPEC_VAR_TMPVAR_HANDLER,
62747 		ZEND_FETCH_OBJ_RW_SPEC_VAR_TMPVAR_HANDLER,
62748 		ZEND_NULL_HANDLER,
62749 		ZEND_FETCH_OBJ_RW_SPEC_VAR_CV_HANDLER,
62750 		ZEND_FETCH_OBJ_RW_SPEC_UNUSED_CONST_HANDLER,
62751 		ZEND_FETCH_OBJ_RW_SPEC_UNUSED_TMPVAR_HANDLER,
62752 		ZEND_FETCH_OBJ_RW_SPEC_UNUSED_TMPVAR_HANDLER,
62753 		ZEND_NULL_HANDLER,
62754 		ZEND_FETCH_OBJ_RW_SPEC_UNUSED_CV_HANDLER,
62755 		ZEND_FETCH_OBJ_RW_SPEC_CV_CONST_HANDLER,
62756 		ZEND_FETCH_OBJ_RW_SPEC_CV_TMPVAR_HANDLER,
62757 		ZEND_FETCH_OBJ_RW_SPEC_CV_TMPVAR_HANDLER,
62758 		ZEND_NULL_HANDLER,
62759 		ZEND_FETCH_OBJ_RW_SPEC_CV_CV_HANDLER,
62760 		ZEND_FETCH_IS_SPEC_CONST_UNUSED_HANDLER,
62761 		ZEND_FETCH_IS_SPEC_TMPVAR_UNUSED_HANDLER,
62762 		ZEND_FETCH_IS_SPEC_TMPVAR_UNUSED_HANDLER,
62763 		ZEND_NULL_HANDLER,
62764 		ZEND_FETCH_IS_SPEC_CV_UNUSED_HANDLER,
62765 		ZEND_FETCH_DIM_IS_SPEC_CONST_CONST_HANDLER,
62766 		ZEND_FETCH_DIM_IS_SPEC_CONST_TMPVAR_HANDLER,
62767 		ZEND_FETCH_DIM_IS_SPEC_CONST_TMPVAR_HANDLER,
62768 		ZEND_NULL_HANDLER,
62769 		ZEND_FETCH_DIM_IS_SPEC_CONST_CV_HANDLER,
62770 		ZEND_FETCH_DIM_IS_SPEC_TMPVAR_CONST_HANDLER,
62771 		ZEND_FETCH_DIM_IS_SPEC_TMPVAR_TMPVAR_HANDLER,
62772 		ZEND_FETCH_DIM_IS_SPEC_TMPVAR_TMPVAR_HANDLER,
62773 		ZEND_NULL_HANDLER,
62774 		ZEND_FETCH_DIM_IS_SPEC_TMPVAR_CV_HANDLER,
62775 		ZEND_FETCH_DIM_IS_SPEC_TMPVAR_CONST_HANDLER,
62776 		ZEND_FETCH_DIM_IS_SPEC_TMPVAR_TMPVAR_HANDLER,
62777 		ZEND_FETCH_DIM_IS_SPEC_TMPVAR_TMPVAR_HANDLER,
62778 		ZEND_NULL_HANDLER,
62779 		ZEND_FETCH_DIM_IS_SPEC_TMPVAR_CV_HANDLER,
62780 		ZEND_NULL_HANDLER,
62781 		ZEND_NULL_HANDLER,
62782 		ZEND_NULL_HANDLER,
62783 		ZEND_NULL_HANDLER,
62784 		ZEND_NULL_HANDLER,
62785 		ZEND_FETCH_DIM_IS_SPEC_CV_CONST_HANDLER,
62786 		ZEND_FETCH_DIM_IS_SPEC_CV_TMPVAR_HANDLER,
62787 		ZEND_FETCH_DIM_IS_SPEC_CV_TMPVAR_HANDLER,
62788 		ZEND_NULL_HANDLER,
62789 		ZEND_FETCH_DIM_IS_SPEC_CV_CV_HANDLER,
62790 		ZEND_FETCH_OBJ_IS_SPEC_CONST_CONST_HANDLER,
62791 		ZEND_FETCH_OBJ_IS_SPEC_CONST_TMPVAR_HANDLER,
62792 		ZEND_FETCH_OBJ_IS_SPEC_CONST_TMPVAR_HANDLER,
62793 		ZEND_NULL_HANDLER,
62794 		ZEND_FETCH_OBJ_IS_SPEC_CONST_CV_HANDLER,
62795 		ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_CONST_HANDLER,
62796 		ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_TMPVAR_HANDLER,
62797 		ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_TMPVAR_HANDLER,
62798 		ZEND_NULL_HANDLER,
62799 		ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_CV_HANDLER,
62800 		ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_CONST_HANDLER,
62801 		ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_TMPVAR_HANDLER,
62802 		ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_TMPVAR_HANDLER,
62803 		ZEND_NULL_HANDLER,
62804 		ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_CV_HANDLER,
62805 		ZEND_FETCH_OBJ_IS_SPEC_UNUSED_CONST_HANDLER,
62806 		ZEND_FETCH_OBJ_IS_SPEC_UNUSED_TMPVAR_HANDLER,
62807 		ZEND_FETCH_OBJ_IS_SPEC_UNUSED_TMPVAR_HANDLER,
62808 		ZEND_NULL_HANDLER,
62809 		ZEND_FETCH_OBJ_IS_SPEC_UNUSED_CV_HANDLER,
62810 		ZEND_FETCH_OBJ_IS_SPEC_CV_CONST_HANDLER,
62811 		ZEND_FETCH_OBJ_IS_SPEC_CV_TMPVAR_HANDLER,
62812 		ZEND_FETCH_OBJ_IS_SPEC_CV_TMPVAR_HANDLER,
62813 		ZEND_NULL_HANDLER,
62814 		ZEND_FETCH_OBJ_IS_SPEC_CV_CV_HANDLER,
62815 		ZEND_FETCH_FUNC_ARG_SPEC_CONST_UNUSED_HANDLER,
62816 		ZEND_FETCH_FUNC_ARG_SPEC_TMPVAR_UNUSED_HANDLER,
62817 		ZEND_FETCH_FUNC_ARG_SPEC_TMPVAR_UNUSED_HANDLER,
62818 		ZEND_NULL_HANDLER,
62819 		ZEND_FETCH_FUNC_ARG_SPEC_CV_UNUSED_HANDLER,
62820 		ZEND_FETCH_DIM_FUNC_ARG_SPEC_CONST_CONST_HANDLER,
62821 		ZEND_FETCH_DIM_FUNC_ARG_SPEC_CONST_TMPVAR_HANDLER,
62822 		ZEND_FETCH_DIM_FUNC_ARG_SPEC_CONST_TMPVAR_HANDLER,
62823 		ZEND_FETCH_DIM_FUNC_ARG_SPEC_CONST_UNUSED_HANDLER,
62824 		ZEND_FETCH_DIM_FUNC_ARG_SPEC_CONST_CV_HANDLER,
62825 		ZEND_FETCH_DIM_FUNC_ARG_SPEC_TMP_CONST_HANDLER,
62826 		ZEND_FETCH_DIM_FUNC_ARG_SPEC_TMP_TMPVAR_HANDLER,
62827 		ZEND_FETCH_DIM_FUNC_ARG_SPEC_TMP_TMPVAR_HANDLER,
62828 		ZEND_FETCH_DIM_FUNC_ARG_SPEC_TMP_UNUSED_HANDLER,
62829 		ZEND_FETCH_DIM_FUNC_ARG_SPEC_TMP_CV_HANDLER,
62830 		ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_CONST_HANDLER,
62831 		ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_TMPVAR_HANDLER,
62832 		ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_TMPVAR_HANDLER,
62833 		ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_UNUSED_HANDLER,
62834 		ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_CV_HANDLER,
62835 		ZEND_NULL_HANDLER,
62836 		ZEND_NULL_HANDLER,
62837 		ZEND_NULL_HANDLER,
62838 		ZEND_NULL_HANDLER,
62839 		ZEND_NULL_HANDLER,
62840 		ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_CONST_HANDLER,
62841 		ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_TMPVAR_HANDLER,
62842 		ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_TMPVAR_HANDLER,
62843 		ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_UNUSED_HANDLER,
62844 		ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_CV_HANDLER,
62845 		ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CONST_CONST_HANDLER,
62846 		ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CONST_TMPVAR_HANDLER,
62847 		ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CONST_TMPVAR_HANDLER,
62848 		ZEND_NULL_HANDLER,
62849 		ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CONST_CV_HANDLER,
62850 		ZEND_FETCH_OBJ_FUNC_ARG_SPEC_TMP_CONST_HANDLER,
62851 		ZEND_FETCH_OBJ_FUNC_ARG_SPEC_TMP_TMPVAR_HANDLER,
62852 		ZEND_FETCH_OBJ_FUNC_ARG_SPEC_TMP_TMPVAR_HANDLER,
62853 		ZEND_NULL_HANDLER,
62854 		ZEND_FETCH_OBJ_FUNC_ARG_SPEC_TMP_CV_HANDLER,
62855 		ZEND_FETCH_OBJ_FUNC_ARG_SPEC_VAR_CONST_HANDLER,
62856 		ZEND_FETCH_OBJ_FUNC_ARG_SPEC_VAR_TMPVAR_HANDLER,
62857 		ZEND_FETCH_OBJ_FUNC_ARG_SPEC_VAR_TMPVAR_HANDLER,
62858 		ZEND_NULL_HANDLER,
62859 		ZEND_FETCH_OBJ_FUNC_ARG_SPEC_VAR_CV_HANDLER,
62860 		ZEND_FETCH_OBJ_FUNC_ARG_SPEC_UNUSED_CONST_HANDLER,
62861 		ZEND_FETCH_OBJ_FUNC_ARG_SPEC_UNUSED_TMPVAR_HANDLER,
62862 		ZEND_FETCH_OBJ_FUNC_ARG_SPEC_UNUSED_TMPVAR_HANDLER,
62863 		ZEND_NULL_HANDLER,
62864 		ZEND_FETCH_OBJ_FUNC_ARG_SPEC_UNUSED_CV_HANDLER,
62865 		ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CV_CONST_HANDLER,
62866 		ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CV_TMPVAR_HANDLER,
62867 		ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CV_TMPVAR_HANDLER,
62868 		ZEND_NULL_HANDLER,
62869 		ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CV_CV_HANDLER,
62870 		ZEND_FETCH_UNSET_SPEC_CONST_UNUSED_HANDLER,
62871 		ZEND_FETCH_UNSET_SPEC_TMPVAR_UNUSED_HANDLER,
62872 		ZEND_FETCH_UNSET_SPEC_TMPVAR_UNUSED_HANDLER,
62873 		ZEND_NULL_HANDLER,
62874 		ZEND_FETCH_UNSET_SPEC_CV_UNUSED_HANDLER,
62875 		ZEND_NULL_HANDLER,
62876 		ZEND_NULL_HANDLER,
62877 		ZEND_NULL_HANDLER,
62878 		ZEND_NULL_HANDLER,
62879 		ZEND_NULL_HANDLER,
62880 		ZEND_NULL_HANDLER,
62881 		ZEND_NULL_HANDLER,
62882 		ZEND_NULL_HANDLER,
62883 		ZEND_NULL_HANDLER,
62884 		ZEND_NULL_HANDLER,
62885 		ZEND_FETCH_DIM_UNSET_SPEC_VAR_CONST_HANDLER,
62886 		ZEND_FETCH_DIM_UNSET_SPEC_VAR_TMPVAR_HANDLER,
62887 		ZEND_FETCH_DIM_UNSET_SPEC_VAR_TMPVAR_HANDLER,
62888 		ZEND_NULL_HANDLER,
62889 		ZEND_FETCH_DIM_UNSET_SPEC_VAR_CV_HANDLER,
62890 		ZEND_NULL_HANDLER,
62891 		ZEND_NULL_HANDLER,
62892 		ZEND_NULL_HANDLER,
62893 		ZEND_NULL_HANDLER,
62894 		ZEND_NULL_HANDLER,
62895 		ZEND_FETCH_DIM_UNSET_SPEC_CV_CONST_HANDLER,
62896 		ZEND_FETCH_DIM_UNSET_SPEC_CV_TMPVAR_HANDLER,
62897 		ZEND_FETCH_DIM_UNSET_SPEC_CV_TMPVAR_HANDLER,
62898 		ZEND_NULL_HANDLER,
62899 		ZEND_FETCH_DIM_UNSET_SPEC_CV_CV_HANDLER,
62900 		ZEND_NULL_HANDLER,
62901 		ZEND_NULL_HANDLER,
62902 		ZEND_NULL_HANDLER,
62903 		ZEND_NULL_HANDLER,
62904 		ZEND_NULL_HANDLER,
62905 		ZEND_NULL_HANDLER,
62906 		ZEND_NULL_HANDLER,
62907 		ZEND_NULL_HANDLER,
62908 		ZEND_NULL_HANDLER,
62909 		ZEND_NULL_HANDLER,
62910 		ZEND_FETCH_OBJ_UNSET_SPEC_VAR_CONST_HANDLER,
62911 		ZEND_FETCH_OBJ_UNSET_SPEC_VAR_TMPVAR_HANDLER,
62912 		ZEND_FETCH_OBJ_UNSET_SPEC_VAR_TMPVAR_HANDLER,
62913 		ZEND_NULL_HANDLER,
62914 		ZEND_FETCH_OBJ_UNSET_SPEC_VAR_CV_HANDLER,
62915 		ZEND_FETCH_OBJ_UNSET_SPEC_UNUSED_CONST_HANDLER,
62916 		ZEND_FETCH_OBJ_UNSET_SPEC_UNUSED_TMPVAR_HANDLER,
62917 		ZEND_FETCH_OBJ_UNSET_SPEC_UNUSED_TMPVAR_HANDLER,
62918 		ZEND_NULL_HANDLER,
62919 		ZEND_FETCH_OBJ_UNSET_SPEC_UNUSED_CV_HANDLER,
62920 		ZEND_FETCH_OBJ_UNSET_SPEC_CV_CONST_HANDLER,
62921 		ZEND_FETCH_OBJ_UNSET_SPEC_CV_TMPVAR_HANDLER,
62922 		ZEND_FETCH_OBJ_UNSET_SPEC_CV_TMPVAR_HANDLER,
62923 		ZEND_NULL_HANDLER,
62924 		ZEND_FETCH_OBJ_UNSET_SPEC_CV_CV_HANDLER,
62925 		ZEND_FETCH_LIST_R_SPEC_CONST_CONST_HANDLER,
62926 		ZEND_FETCH_LIST_R_SPEC_CONST_TMPVAR_HANDLER,
62927 		ZEND_FETCH_LIST_R_SPEC_CONST_TMPVAR_HANDLER,
62928 		ZEND_NULL_HANDLER,
62929 		ZEND_FETCH_LIST_R_SPEC_CONST_CV_HANDLER,
62930 		ZEND_FETCH_LIST_R_SPEC_TMPVARCV_CONST_HANDLER,
62931 		ZEND_FETCH_LIST_R_SPEC_TMPVARCV_TMPVAR_HANDLER,
62932 		ZEND_FETCH_LIST_R_SPEC_TMPVARCV_TMPVAR_HANDLER,
62933 		ZEND_NULL_HANDLER,
62934 		ZEND_FETCH_LIST_R_SPEC_TMPVARCV_CV_HANDLER,
62935 		ZEND_FETCH_LIST_R_SPEC_TMPVARCV_CONST_HANDLER,
62936 		ZEND_FETCH_LIST_R_SPEC_TMPVARCV_TMPVAR_HANDLER,
62937 		ZEND_FETCH_LIST_R_SPEC_TMPVARCV_TMPVAR_HANDLER,
62938 		ZEND_NULL_HANDLER,
62939 		ZEND_FETCH_LIST_R_SPEC_TMPVARCV_CV_HANDLER,
62940 		ZEND_NULL_HANDLER,
62941 		ZEND_NULL_HANDLER,
62942 		ZEND_NULL_HANDLER,
62943 		ZEND_NULL_HANDLER,
62944 		ZEND_NULL_HANDLER,
62945 		ZEND_FETCH_LIST_R_SPEC_TMPVARCV_CONST_HANDLER,
62946 		ZEND_FETCH_LIST_R_SPEC_TMPVARCV_TMPVAR_HANDLER,
62947 		ZEND_FETCH_LIST_R_SPEC_TMPVARCV_TMPVAR_HANDLER,
62948 		ZEND_NULL_HANDLER,
62949 		ZEND_FETCH_LIST_R_SPEC_TMPVARCV_CV_HANDLER,
62950 		ZEND_FETCH_CONSTANT_SPEC_UNUSED_CONST_HANDLER,
62951 		ZEND_CHECK_FUNC_ARG_SPEC_UNUSED_HANDLER,
62952 		ZEND_CHECK_FUNC_ARG_SPEC_UNUSED_QUICK_HANDLER,
62953 		ZEND_EXT_STMT_SPEC_HANDLER,
62954 		ZEND_EXT_FCALL_BEGIN_SPEC_HANDLER,
62955 		ZEND_EXT_FCALL_END_SPEC_HANDLER,
62956 		ZEND_EXT_NOP_SPEC_HANDLER,
62957 		ZEND_TICKS_SPEC_HANDLER,
62958 		ZEND_SEND_VAR_NO_REF_SPEC_VAR_HANDLER,
62959 		ZEND_CATCH_SPEC_CONST_HANDLER,
62960 		ZEND_THROW_SPEC_CONST_HANDLER,
62961 		ZEND_THROW_SPEC_TMP_HANDLER,
62962 		ZEND_THROW_SPEC_VAR_HANDLER,
62963 		ZEND_NULL_HANDLER,
62964 		ZEND_THROW_SPEC_CV_HANDLER,
62965 		ZEND_FETCH_CLASS_SPEC_UNUSED_CONST_HANDLER,
62966 		ZEND_FETCH_CLASS_SPEC_UNUSED_TMPVAR_HANDLER,
62967 		ZEND_FETCH_CLASS_SPEC_UNUSED_TMPVAR_HANDLER,
62968 		ZEND_FETCH_CLASS_SPEC_UNUSED_UNUSED_HANDLER,
62969 		ZEND_FETCH_CLASS_SPEC_UNUSED_CV_HANDLER,
62970 		ZEND_CLONE_SPEC_CONST_HANDLER,
62971 		ZEND_CLONE_SPEC_TMPVAR_HANDLER,
62972 		ZEND_CLONE_SPEC_TMPVAR_HANDLER,
62973 		ZEND_CLONE_SPEC_UNUSED_HANDLER,
62974 		ZEND_CLONE_SPEC_CV_HANDLER,
62975 		ZEND_RETURN_BY_REF_SPEC_CONST_HANDLER,
62976 		ZEND_RETURN_BY_REF_SPEC_TMP_HANDLER,
62977 		ZEND_RETURN_BY_REF_SPEC_VAR_HANDLER,
62978 		ZEND_NULL_HANDLER,
62979 		ZEND_RETURN_BY_REF_SPEC_CV_HANDLER,
62980 		ZEND_INIT_METHOD_CALL_SPEC_CONST_CONST_HANDLER,
62981 		ZEND_INIT_METHOD_CALL_SPEC_CONST_TMPVAR_HANDLER,
62982 		ZEND_INIT_METHOD_CALL_SPEC_CONST_TMPVAR_HANDLER,
62983 		ZEND_NULL_HANDLER,
62984 		ZEND_INIT_METHOD_CALL_SPEC_CONST_CV_HANDLER,
62985 		ZEND_INIT_METHOD_CALL_SPEC_TMPVAR_CONST_HANDLER,
62986 		ZEND_INIT_METHOD_CALL_SPEC_TMPVAR_TMPVAR_HANDLER,
62987 		ZEND_INIT_METHOD_CALL_SPEC_TMPVAR_TMPVAR_HANDLER,
62988 		ZEND_NULL_HANDLER,
62989 		ZEND_INIT_METHOD_CALL_SPEC_TMPVAR_CV_HANDLER,
62990 		ZEND_INIT_METHOD_CALL_SPEC_TMPVAR_CONST_HANDLER,
62991 		ZEND_INIT_METHOD_CALL_SPEC_TMPVAR_TMPVAR_HANDLER,
62992 		ZEND_INIT_METHOD_CALL_SPEC_TMPVAR_TMPVAR_HANDLER,
62993 		ZEND_NULL_HANDLER,
62994 		ZEND_INIT_METHOD_CALL_SPEC_TMPVAR_CV_HANDLER,
62995 		ZEND_INIT_METHOD_CALL_SPEC_UNUSED_CONST_HANDLER,
62996 		ZEND_INIT_METHOD_CALL_SPEC_UNUSED_TMPVAR_HANDLER,
62997 		ZEND_INIT_METHOD_CALL_SPEC_UNUSED_TMPVAR_HANDLER,
62998 		ZEND_NULL_HANDLER,
62999 		ZEND_INIT_METHOD_CALL_SPEC_UNUSED_CV_HANDLER,
63000 		ZEND_INIT_METHOD_CALL_SPEC_CV_CONST_HANDLER,
63001 		ZEND_INIT_METHOD_CALL_SPEC_CV_TMPVAR_HANDLER,
63002 		ZEND_INIT_METHOD_CALL_SPEC_CV_TMPVAR_HANDLER,
63003 		ZEND_NULL_HANDLER,
63004 		ZEND_INIT_METHOD_CALL_SPEC_CV_CV_HANDLER,
63005 		ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_CONST_HANDLER,
63006 		ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_TMPVAR_HANDLER,
63007 		ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_TMPVAR_HANDLER,
63008 		ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_UNUSED_HANDLER,
63009 		ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_CV_HANDLER,
63010 		ZEND_NULL_HANDLER,
63011 		ZEND_NULL_HANDLER,
63012 		ZEND_NULL_HANDLER,
63013 		ZEND_NULL_HANDLER,
63014 		ZEND_NULL_HANDLER,
63015 		ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_CONST_HANDLER,
63016 		ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_TMPVAR_HANDLER,
63017 		ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_TMPVAR_HANDLER,
63018 		ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_UNUSED_HANDLER,
63019 		ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_CV_HANDLER,
63020 		ZEND_INIT_STATIC_METHOD_CALL_SPEC_UNUSED_CONST_HANDLER,
63021 		ZEND_INIT_STATIC_METHOD_CALL_SPEC_UNUSED_TMPVAR_HANDLER,
63022 		ZEND_INIT_STATIC_METHOD_CALL_SPEC_UNUSED_TMPVAR_HANDLER,
63023 		ZEND_INIT_STATIC_METHOD_CALL_SPEC_UNUSED_UNUSED_HANDLER,
63024 		ZEND_INIT_STATIC_METHOD_CALL_SPEC_UNUSED_CV_HANDLER,
63025 		ZEND_NULL_HANDLER,
63026 		ZEND_NULL_HANDLER,
63027 		ZEND_NULL_HANDLER,
63028 		ZEND_NULL_HANDLER,
63029 		ZEND_NULL_HANDLER,
63030 		ZEND_ISSET_ISEMPTY_VAR_SPEC_CONST_UNUSED_HANDLER,
63031 		ZEND_ISSET_ISEMPTY_VAR_SPEC_TMPVAR_UNUSED_HANDLER,
63032 		ZEND_ISSET_ISEMPTY_VAR_SPEC_TMPVAR_UNUSED_HANDLER,
63033 		ZEND_NULL_HANDLER,
63034 		ZEND_ISSET_ISEMPTY_VAR_SPEC_CV_UNUSED_HANDLER,
63035 		ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CONST_CONST_HANDLER,
63036 		ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CONST_TMPVAR_HANDLER,
63037 		ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CONST_TMPVAR_HANDLER,
63038 		ZEND_NULL_HANDLER,
63039 		ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CONST_CV_HANDLER,
63040 		ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_TMPVAR_CONST_HANDLER,
63041 		ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_TMPVAR_TMPVAR_HANDLER,
63042 		ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_TMPVAR_TMPVAR_HANDLER,
63043 		ZEND_NULL_HANDLER,
63044 		ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_TMPVAR_CV_HANDLER,
63045 		ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_TMPVAR_CONST_HANDLER,
63046 		ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_TMPVAR_TMPVAR_HANDLER,
63047 		ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_TMPVAR_TMPVAR_HANDLER,
63048 		ZEND_NULL_HANDLER,
63049 		ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_TMPVAR_CV_HANDLER,
63050 		ZEND_NULL_HANDLER,
63051 		ZEND_NULL_HANDLER,
63052 		ZEND_NULL_HANDLER,
63053 		ZEND_NULL_HANDLER,
63054 		ZEND_NULL_HANDLER,
63055 		ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CV_CONST_HANDLER,
63056 		ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CV_TMPVAR_HANDLER,
63057 		ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CV_TMPVAR_HANDLER,
63058 		ZEND_NULL_HANDLER,
63059 		ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CV_CV_HANDLER,
63060 		ZEND_SEND_VAL_EX_SPEC_CONST_HANDLER,
63061 		ZEND_SEND_VAL_EX_SPEC_CONST_QUICK_HANDLER,
63062 		ZEND_SEND_VAL_EX_SPEC_TMP_HANDLER,
63063 		ZEND_SEND_VAL_EX_SPEC_TMP_QUICK_HANDLER,
63064 		ZEND_NULL_HANDLER,
63065 		ZEND_NULL_HANDLER,
63066 		ZEND_NULL_HANDLER,
63067 		ZEND_NULL_HANDLER,
63068 		ZEND_NULL_HANDLER,
63069 		ZEND_NULL_HANDLER,
63070 		ZEND_NULL_HANDLER,
63071 		ZEND_NULL_HANDLER,
63072 		ZEND_SEND_VAR_SPEC_VAR_HANDLER,
63073 		ZEND_NULL_HANDLER,
63074 		ZEND_SEND_VAR_SPEC_CV_HANDLER,
63075 		ZEND_INIT_USER_CALL_SPEC_CONST_CONST_HANDLER,
63076 		ZEND_INIT_USER_CALL_SPEC_CONST_TMPVAR_HANDLER,
63077 		ZEND_INIT_USER_CALL_SPEC_CONST_TMPVAR_HANDLER,
63078 		ZEND_NULL_HANDLER,
63079 		ZEND_INIT_USER_CALL_SPEC_CONST_CV_HANDLER,
63080 		ZEND_SEND_ARRAY_SPEC_HANDLER,
63081 		ZEND_SEND_USER_SPEC_CONST_HANDLER,
63082 		ZEND_SEND_USER_SPEC_TMP_HANDLER,
63083 		ZEND_SEND_USER_SPEC_VAR_HANDLER,
63084 		ZEND_NULL_HANDLER,
63085 		ZEND_SEND_USER_SPEC_CV_HANDLER,
63086 		ZEND_STRLEN_SPEC_CONST_HANDLER,
63087 		ZEND_STRLEN_SPEC_TMPVAR_HANDLER,
63088 		ZEND_STRLEN_SPEC_TMPVAR_HANDLER,
63089 		ZEND_NULL_HANDLER,
63090 		ZEND_STRLEN_SPEC_CV_HANDLER,
63091 		ZEND_DEFINED_SPEC_CONST_HANDLER,
63092 		ZEND_TYPE_CHECK_SPEC_CONST_HANDLER,
63093 		ZEND_TYPE_CHECK_SPEC_TMPVAR_HANDLER,
63094 		ZEND_TYPE_CHECK_SPEC_TMPVAR_HANDLER,
63095 		ZEND_NULL_HANDLER,
63096 		ZEND_TYPE_CHECK_SPEC_CV_HANDLER,
63097 		ZEND_VERIFY_RETURN_TYPE_SPEC_CONST_UNUSED_HANDLER,
63098 		ZEND_VERIFY_RETURN_TYPE_SPEC_TMP_UNUSED_HANDLER,
63099 		ZEND_VERIFY_RETURN_TYPE_SPEC_VAR_UNUSED_HANDLER,
63100 		ZEND_VERIFY_RETURN_TYPE_SPEC_UNUSED_UNUSED_HANDLER,
63101 		ZEND_VERIFY_RETURN_TYPE_SPEC_CV_UNUSED_HANDLER,
63102 		ZEND_FE_RESET_RW_SPEC_CONST_HANDLER,
63103 		ZEND_FE_RESET_RW_SPEC_TMP_HANDLER,
63104 		ZEND_FE_RESET_RW_SPEC_VAR_HANDLER,
63105 		ZEND_NULL_HANDLER,
63106 		ZEND_FE_RESET_RW_SPEC_CV_HANDLER,
63107 		ZEND_FE_FETCH_RW_SPEC_VAR_HANDLER,
63108 		ZEND_FE_FREE_SPEC_TMPVAR_HANDLER,
63109 		ZEND_INIT_DYNAMIC_CALL_SPEC_CONST_HANDLER,
63110 		ZEND_INIT_DYNAMIC_CALL_SPEC_TMPVAR_HANDLER,
63111 		ZEND_INIT_DYNAMIC_CALL_SPEC_TMPVAR_HANDLER,
63112 		ZEND_NULL_HANDLER,
63113 		ZEND_INIT_DYNAMIC_CALL_SPEC_CV_HANDLER,
63114 		ZEND_DO_ICALL_SPEC_RETVAL_UNUSED_HANDLER,
63115 		ZEND_DO_ICALL_SPEC_RETVAL_USED_HANDLER,
63116 		ZEND_DO_UCALL_SPEC_RETVAL_UNUSED_HANDLER,
63117 		ZEND_DO_UCALL_SPEC_RETVAL_USED_HANDLER,
63118 		ZEND_DO_FCALL_BY_NAME_SPEC_RETVAL_UNUSED_HANDLER,
63119 		ZEND_DO_FCALL_BY_NAME_SPEC_RETVAL_USED_HANDLER,
63120 		ZEND_NULL_HANDLER,
63121 		ZEND_NULL_HANDLER,
63122 		ZEND_NULL_HANDLER,
63123 		ZEND_NULL_HANDLER,
63124 		ZEND_NULL_HANDLER,
63125 		ZEND_NULL_HANDLER,
63126 		ZEND_NULL_HANDLER,
63127 		ZEND_NULL_HANDLER,
63128 		ZEND_NULL_HANDLER,
63129 		ZEND_NULL_HANDLER,
63130 		ZEND_PRE_INC_OBJ_SPEC_VAR_CONST_HANDLER,
63131 		ZEND_PRE_INC_OBJ_SPEC_VAR_TMPVAR_HANDLER,
63132 		ZEND_PRE_INC_OBJ_SPEC_VAR_TMPVAR_HANDLER,
63133 		ZEND_NULL_HANDLER,
63134 		ZEND_PRE_INC_OBJ_SPEC_VAR_CV_HANDLER,
63135 		ZEND_PRE_INC_OBJ_SPEC_UNUSED_CONST_HANDLER,
63136 		ZEND_PRE_INC_OBJ_SPEC_UNUSED_TMPVAR_HANDLER,
63137 		ZEND_PRE_INC_OBJ_SPEC_UNUSED_TMPVAR_HANDLER,
63138 		ZEND_NULL_HANDLER,
63139 		ZEND_PRE_INC_OBJ_SPEC_UNUSED_CV_HANDLER,
63140 		ZEND_PRE_INC_OBJ_SPEC_CV_CONST_HANDLER,
63141 		ZEND_PRE_INC_OBJ_SPEC_CV_TMPVAR_HANDLER,
63142 		ZEND_PRE_INC_OBJ_SPEC_CV_TMPVAR_HANDLER,
63143 		ZEND_NULL_HANDLER,
63144 		ZEND_PRE_INC_OBJ_SPEC_CV_CV_HANDLER,
63145 		ZEND_NULL_HANDLER,
63146 		ZEND_NULL_HANDLER,
63147 		ZEND_NULL_HANDLER,
63148 		ZEND_NULL_HANDLER,
63149 		ZEND_NULL_HANDLER,
63150 		ZEND_NULL_HANDLER,
63151 		ZEND_NULL_HANDLER,
63152 		ZEND_NULL_HANDLER,
63153 		ZEND_NULL_HANDLER,
63154 		ZEND_NULL_HANDLER,
63155 		ZEND_PRE_DEC_OBJ_SPEC_VAR_CONST_HANDLER,
63156 		ZEND_PRE_DEC_OBJ_SPEC_VAR_TMPVAR_HANDLER,
63157 		ZEND_PRE_DEC_OBJ_SPEC_VAR_TMPVAR_HANDLER,
63158 		ZEND_NULL_HANDLER,
63159 		ZEND_PRE_DEC_OBJ_SPEC_VAR_CV_HANDLER,
63160 		ZEND_PRE_DEC_OBJ_SPEC_UNUSED_CONST_HANDLER,
63161 		ZEND_PRE_DEC_OBJ_SPEC_UNUSED_TMPVAR_HANDLER,
63162 		ZEND_PRE_DEC_OBJ_SPEC_UNUSED_TMPVAR_HANDLER,
63163 		ZEND_NULL_HANDLER,
63164 		ZEND_PRE_DEC_OBJ_SPEC_UNUSED_CV_HANDLER,
63165 		ZEND_PRE_DEC_OBJ_SPEC_CV_CONST_HANDLER,
63166 		ZEND_PRE_DEC_OBJ_SPEC_CV_TMPVAR_HANDLER,
63167 		ZEND_PRE_DEC_OBJ_SPEC_CV_TMPVAR_HANDLER,
63168 		ZEND_NULL_HANDLER,
63169 		ZEND_PRE_DEC_OBJ_SPEC_CV_CV_HANDLER,
63170 		ZEND_NULL_HANDLER,
63171 		ZEND_NULL_HANDLER,
63172 		ZEND_NULL_HANDLER,
63173 		ZEND_NULL_HANDLER,
63174 		ZEND_NULL_HANDLER,
63175 		ZEND_NULL_HANDLER,
63176 		ZEND_NULL_HANDLER,
63177 		ZEND_NULL_HANDLER,
63178 		ZEND_NULL_HANDLER,
63179 		ZEND_NULL_HANDLER,
63180 		ZEND_POST_INC_OBJ_SPEC_VAR_CONST_HANDLER,
63181 		ZEND_POST_INC_OBJ_SPEC_VAR_TMPVAR_HANDLER,
63182 		ZEND_POST_INC_OBJ_SPEC_VAR_TMPVAR_HANDLER,
63183 		ZEND_NULL_HANDLER,
63184 		ZEND_POST_INC_OBJ_SPEC_VAR_CV_HANDLER,
63185 		ZEND_POST_INC_OBJ_SPEC_UNUSED_CONST_HANDLER,
63186 		ZEND_POST_INC_OBJ_SPEC_UNUSED_TMPVAR_HANDLER,
63187 		ZEND_POST_INC_OBJ_SPEC_UNUSED_TMPVAR_HANDLER,
63188 		ZEND_NULL_HANDLER,
63189 		ZEND_POST_INC_OBJ_SPEC_UNUSED_CV_HANDLER,
63190 		ZEND_POST_INC_OBJ_SPEC_CV_CONST_HANDLER,
63191 		ZEND_POST_INC_OBJ_SPEC_CV_TMPVAR_HANDLER,
63192 		ZEND_POST_INC_OBJ_SPEC_CV_TMPVAR_HANDLER,
63193 		ZEND_NULL_HANDLER,
63194 		ZEND_POST_INC_OBJ_SPEC_CV_CV_HANDLER,
63195 		ZEND_NULL_HANDLER,
63196 		ZEND_NULL_HANDLER,
63197 		ZEND_NULL_HANDLER,
63198 		ZEND_NULL_HANDLER,
63199 		ZEND_NULL_HANDLER,
63200 		ZEND_NULL_HANDLER,
63201 		ZEND_NULL_HANDLER,
63202 		ZEND_NULL_HANDLER,
63203 		ZEND_NULL_HANDLER,
63204 		ZEND_NULL_HANDLER,
63205 		ZEND_POST_DEC_OBJ_SPEC_VAR_CONST_HANDLER,
63206 		ZEND_POST_DEC_OBJ_SPEC_VAR_TMPVAR_HANDLER,
63207 		ZEND_POST_DEC_OBJ_SPEC_VAR_TMPVAR_HANDLER,
63208 		ZEND_NULL_HANDLER,
63209 		ZEND_POST_DEC_OBJ_SPEC_VAR_CV_HANDLER,
63210 		ZEND_POST_DEC_OBJ_SPEC_UNUSED_CONST_HANDLER,
63211 		ZEND_POST_DEC_OBJ_SPEC_UNUSED_TMPVAR_HANDLER,
63212 		ZEND_POST_DEC_OBJ_SPEC_UNUSED_TMPVAR_HANDLER,
63213 		ZEND_NULL_HANDLER,
63214 		ZEND_POST_DEC_OBJ_SPEC_UNUSED_CV_HANDLER,
63215 		ZEND_POST_DEC_OBJ_SPEC_CV_CONST_HANDLER,
63216 		ZEND_POST_DEC_OBJ_SPEC_CV_TMPVAR_HANDLER,
63217 		ZEND_POST_DEC_OBJ_SPEC_CV_TMPVAR_HANDLER,
63218 		ZEND_NULL_HANDLER,
63219 		ZEND_POST_DEC_OBJ_SPEC_CV_CV_HANDLER,
63220 		ZEND_NULL_HANDLER,
63221 		ZEND_NULL_HANDLER,
63222 		ZEND_NULL_HANDLER,
63223 		ZEND_NULL_HANDLER,
63224 		ZEND_NULL_HANDLER,
63225 		ZEND_NULL_HANDLER,
63226 		ZEND_NULL_HANDLER,
63227 		ZEND_NULL_HANDLER,
63228 		ZEND_NULL_HANDLER,
63229 		ZEND_NULL_HANDLER,
63230 		ZEND_NULL_HANDLER,
63231 		ZEND_NULL_HANDLER,
63232 		ZEND_NULL_HANDLER,
63233 		ZEND_NULL_HANDLER,
63234 		ZEND_NULL_HANDLER,
63235 		ZEND_NULL_HANDLER,
63236 		ZEND_NULL_HANDLER,
63237 		ZEND_NULL_HANDLER,
63238 		ZEND_NULL_HANDLER,
63239 		ZEND_NULL_HANDLER,
63240 		ZEND_NULL_HANDLER,
63241 		ZEND_NULL_HANDLER,
63242 		ZEND_NULL_HANDLER,
63243 		ZEND_NULL_HANDLER,
63244 		ZEND_NULL_HANDLER,
63245 		ZEND_NULL_HANDLER,
63246 		ZEND_NULL_HANDLER,
63247 		ZEND_NULL_HANDLER,
63248 		ZEND_NULL_HANDLER,
63249 		ZEND_NULL_HANDLER,
63250 		ZEND_NULL_HANDLER,
63251 		ZEND_NULL_HANDLER,
63252 		ZEND_NULL_HANDLER,
63253 		ZEND_NULL_HANDLER,
63254 		ZEND_NULL_HANDLER,
63255 		ZEND_NULL_HANDLER,
63256 		ZEND_NULL_HANDLER,
63257 		ZEND_NULL_HANDLER,
63258 		ZEND_NULL_HANDLER,
63259 		ZEND_NULL_HANDLER,
63260 		ZEND_NULL_HANDLER,
63261 		ZEND_NULL_HANDLER,
63262 		ZEND_NULL_HANDLER,
63263 		ZEND_NULL_HANDLER,
63264 		ZEND_NULL_HANDLER,
63265 		ZEND_NULL_HANDLER,
63266 		ZEND_NULL_HANDLER,
63267 		ZEND_NULL_HANDLER,
63268 		ZEND_NULL_HANDLER,
63269 		ZEND_NULL_HANDLER,
63270 		ZEND_ASSIGN_OBJ_SPEC_VAR_CONST_OP_DATA_CONST_HANDLER,
63271 		ZEND_ASSIGN_OBJ_SPEC_VAR_CONST_OP_DATA_TMP_HANDLER,
63272 		ZEND_ASSIGN_OBJ_SPEC_VAR_CONST_OP_DATA_VAR_HANDLER,
63273 		ZEND_NULL_HANDLER,
63274 		ZEND_ASSIGN_OBJ_SPEC_VAR_CONST_OP_DATA_CV_HANDLER,
63275 		ZEND_ASSIGN_OBJ_SPEC_VAR_TMPVAR_OP_DATA_CONST_HANDLER,
63276 		ZEND_ASSIGN_OBJ_SPEC_VAR_TMPVAR_OP_DATA_TMP_HANDLER,
63277 		ZEND_ASSIGN_OBJ_SPEC_VAR_TMPVAR_OP_DATA_VAR_HANDLER,
63278 		ZEND_NULL_HANDLER,
63279 		ZEND_ASSIGN_OBJ_SPEC_VAR_TMPVAR_OP_DATA_CV_HANDLER,
63280 		ZEND_ASSIGN_OBJ_SPEC_VAR_TMPVAR_OP_DATA_CONST_HANDLER,
63281 		ZEND_ASSIGN_OBJ_SPEC_VAR_TMPVAR_OP_DATA_TMP_HANDLER,
63282 		ZEND_ASSIGN_OBJ_SPEC_VAR_TMPVAR_OP_DATA_VAR_HANDLER,
63283 		ZEND_NULL_HANDLER,
63284 		ZEND_ASSIGN_OBJ_SPEC_VAR_TMPVAR_OP_DATA_CV_HANDLER,
63285 		ZEND_NULL_HANDLER,
63286 		ZEND_NULL_HANDLER,
63287 		ZEND_NULL_HANDLER,
63288 		ZEND_NULL_HANDLER,
63289 		ZEND_NULL_HANDLER,
63290 		ZEND_ASSIGN_OBJ_SPEC_VAR_CV_OP_DATA_CONST_HANDLER,
63291 		ZEND_ASSIGN_OBJ_SPEC_VAR_CV_OP_DATA_TMP_HANDLER,
63292 		ZEND_ASSIGN_OBJ_SPEC_VAR_CV_OP_DATA_VAR_HANDLER,
63293 		ZEND_NULL_HANDLER,
63294 		ZEND_ASSIGN_OBJ_SPEC_VAR_CV_OP_DATA_CV_HANDLER,
63295 		ZEND_ASSIGN_OBJ_SPEC_UNUSED_CONST_OP_DATA_CONST_HANDLER,
63296 		ZEND_ASSIGN_OBJ_SPEC_UNUSED_CONST_OP_DATA_TMP_HANDLER,
63297 		ZEND_ASSIGN_OBJ_SPEC_UNUSED_CONST_OP_DATA_VAR_HANDLER,
63298 		ZEND_NULL_HANDLER,
63299 		ZEND_ASSIGN_OBJ_SPEC_UNUSED_CONST_OP_DATA_CV_HANDLER,
63300 		ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMPVAR_OP_DATA_CONST_HANDLER,
63301 		ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMPVAR_OP_DATA_TMP_HANDLER,
63302 		ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMPVAR_OP_DATA_VAR_HANDLER,
63303 		ZEND_NULL_HANDLER,
63304 		ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMPVAR_OP_DATA_CV_HANDLER,
63305 		ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMPVAR_OP_DATA_CONST_HANDLER,
63306 		ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMPVAR_OP_DATA_TMP_HANDLER,
63307 		ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMPVAR_OP_DATA_VAR_HANDLER,
63308 		ZEND_NULL_HANDLER,
63309 		ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMPVAR_OP_DATA_CV_HANDLER,
63310 		ZEND_NULL_HANDLER,
63311 		ZEND_NULL_HANDLER,
63312 		ZEND_NULL_HANDLER,
63313 		ZEND_NULL_HANDLER,
63314 		ZEND_NULL_HANDLER,
63315 		ZEND_ASSIGN_OBJ_SPEC_UNUSED_CV_OP_DATA_CONST_HANDLER,
63316 		ZEND_ASSIGN_OBJ_SPEC_UNUSED_CV_OP_DATA_TMP_HANDLER,
63317 		ZEND_ASSIGN_OBJ_SPEC_UNUSED_CV_OP_DATA_VAR_HANDLER,
63318 		ZEND_NULL_HANDLER,
63319 		ZEND_ASSIGN_OBJ_SPEC_UNUSED_CV_OP_DATA_CV_HANDLER,
63320 		ZEND_ASSIGN_OBJ_SPEC_CV_CONST_OP_DATA_CONST_HANDLER,
63321 		ZEND_ASSIGN_OBJ_SPEC_CV_CONST_OP_DATA_TMP_HANDLER,
63322 		ZEND_ASSIGN_OBJ_SPEC_CV_CONST_OP_DATA_VAR_HANDLER,
63323 		ZEND_NULL_HANDLER,
63324 		ZEND_ASSIGN_OBJ_SPEC_CV_CONST_OP_DATA_CV_HANDLER,
63325 		ZEND_ASSIGN_OBJ_SPEC_CV_TMPVAR_OP_DATA_CONST_HANDLER,
63326 		ZEND_ASSIGN_OBJ_SPEC_CV_TMPVAR_OP_DATA_TMP_HANDLER,
63327 		ZEND_ASSIGN_OBJ_SPEC_CV_TMPVAR_OP_DATA_VAR_HANDLER,
63328 		ZEND_NULL_HANDLER,
63329 		ZEND_ASSIGN_OBJ_SPEC_CV_TMPVAR_OP_DATA_CV_HANDLER,
63330 		ZEND_ASSIGN_OBJ_SPEC_CV_TMPVAR_OP_DATA_CONST_HANDLER,
63331 		ZEND_ASSIGN_OBJ_SPEC_CV_TMPVAR_OP_DATA_TMP_HANDLER,
63332 		ZEND_ASSIGN_OBJ_SPEC_CV_TMPVAR_OP_DATA_VAR_HANDLER,
63333 		ZEND_NULL_HANDLER,
63334 		ZEND_ASSIGN_OBJ_SPEC_CV_TMPVAR_OP_DATA_CV_HANDLER,
63335 		ZEND_NULL_HANDLER,
63336 		ZEND_NULL_HANDLER,
63337 		ZEND_NULL_HANDLER,
63338 		ZEND_NULL_HANDLER,
63339 		ZEND_NULL_HANDLER,
63340 		ZEND_ASSIGN_OBJ_SPEC_CV_CV_OP_DATA_CONST_HANDLER,
63341 		ZEND_ASSIGN_OBJ_SPEC_CV_CV_OP_DATA_TMP_HANDLER,
63342 		ZEND_ASSIGN_OBJ_SPEC_CV_CV_OP_DATA_VAR_HANDLER,
63343 		ZEND_NULL_HANDLER,
63344 		ZEND_ASSIGN_OBJ_SPEC_CV_CV_OP_DATA_CV_HANDLER,
63345 		ZEND_NULL_HANDLER,
63346 		ZEND_NULL_HANDLER,
63347 		ZEND_NULL_HANDLER,
63348 		ZEND_NULL_HANDLER,
63349 		ZEND_NULL_HANDLER,
63350 		ZEND_NULL_HANDLER,
63351 		ZEND_INSTANCEOF_SPEC_TMPVAR_CONST_HANDLER,
63352 		ZEND_NULL_HANDLER,
63353 		ZEND_INSTANCEOF_SPEC_TMPVAR_VAR_HANDLER,
63354 		ZEND_INSTANCEOF_SPEC_TMPVAR_UNUSED_HANDLER,
63355 		ZEND_NULL_HANDLER,
63356 		ZEND_INSTANCEOF_SPEC_TMPVAR_CONST_HANDLER,
63357 		ZEND_NULL_HANDLER,
63358 		ZEND_INSTANCEOF_SPEC_TMPVAR_VAR_HANDLER,
63359 		ZEND_INSTANCEOF_SPEC_TMPVAR_UNUSED_HANDLER,
63360 		ZEND_NULL_HANDLER,
63361 		ZEND_NULL_HANDLER,
63362 		ZEND_NULL_HANDLER,
63363 		ZEND_NULL_HANDLER,
63364 		ZEND_NULL_HANDLER,
63365 		ZEND_NULL_HANDLER,
63366 		ZEND_INSTANCEOF_SPEC_CV_CONST_HANDLER,
63367 		ZEND_NULL_HANDLER,
63368 		ZEND_INSTANCEOF_SPEC_CV_VAR_HANDLER,
63369 		ZEND_INSTANCEOF_SPEC_CV_UNUSED_HANDLER,
63370 		ZEND_NULL_HANDLER,
63371 		ZEND_DECLARE_CLASS_SPEC_CONST_HANDLER,
63372 		ZEND_DECLARE_INHERITED_CLASS_SPEC_CONST_CONST_HANDLER,
63373 		ZEND_DECLARE_FUNCTION_SPEC_HANDLER,
63374 		ZEND_YIELD_FROM_SPEC_CONST_HANDLER,
63375 		ZEND_YIELD_FROM_SPEC_TMP_HANDLER,
63376 		ZEND_YIELD_FROM_SPEC_VAR_HANDLER,
63377 		ZEND_NULL_HANDLER,
63378 		ZEND_YIELD_FROM_SPEC_CV_HANDLER,
63379 		ZEND_DECLARE_CONST_SPEC_CONST_CONST_HANDLER,
63380 		ZEND_ADD_INTERFACE_SPEC_CONST_HANDLER,
63381 		ZEND_DECLARE_INHERITED_CLASS_DELAYED_SPEC_CONST_CONST_HANDLER,
63382 		ZEND_VERIFY_ABSTRACT_CLASS_SPEC_HANDLER,
63383 		ZEND_NULL_HANDLER,
63384 		ZEND_NULL_HANDLER,
63385 		ZEND_NULL_HANDLER,
63386 		ZEND_NULL_HANDLER,
63387 		ZEND_NULL_HANDLER,
63388 		ZEND_NULL_HANDLER,
63389 		ZEND_NULL_HANDLER,
63390 		ZEND_NULL_HANDLER,
63391 		ZEND_NULL_HANDLER,
63392 		ZEND_NULL_HANDLER,
63393 		ZEND_NULL_HANDLER,
63394 		ZEND_NULL_HANDLER,
63395 		ZEND_NULL_HANDLER,
63396 		ZEND_NULL_HANDLER,
63397 		ZEND_NULL_HANDLER,
63398 		ZEND_NULL_HANDLER,
63399 		ZEND_NULL_HANDLER,
63400 		ZEND_NULL_HANDLER,
63401 		ZEND_NULL_HANDLER,
63402 		ZEND_NULL_HANDLER,
63403 		ZEND_NULL_HANDLER,
63404 		ZEND_NULL_HANDLER,
63405 		ZEND_NULL_HANDLER,
63406 		ZEND_NULL_HANDLER,
63407 		ZEND_NULL_HANDLER,
63408 		ZEND_NULL_HANDLER,
63409 		ZEND_NULL_HANDLER,
63410 		ZEND_NULL_HANDLER,
63411 		ZEND_NULL_HANDLER,
63412 		ZEND_NULL_HANDLER,
63413 		ZEND_NULL_HANDLER,
63414 		ZEND_NULL_HANDLER,
63415 		ZEND_NULL_HANDLER,
63416 		ZEND_NULL_HANDLER,
63417 		ZEND_NULL_HANDLER,
63418 		ZEND_NULL_HANDLER,
63419 		ZEND_NULL_HANDLER,
63420 		ZEND_NULL_HANDLER,
63421 		ZEND_NULL_HANDLER,
63422 		ZEND_NULL_HANDLER,
63423 		ZEND_NULL_HANDLER,
63424 		ZEND_NULL_HANDLER,
63425 		ZEND_NULL_HANDLER,
63426 		ZEND_NULL_HANDLER,
63427 		ZEND_NULL_HANDLER,
63428 		ZEND_NULL_HANDLER,
63429 		ZEND_NULL_HANDLER,
63430 		ZEND_NULL_HANDLER,
63431 		ZEND_NULL_HANDLER,
63432 		ZEND_NULL_HANDLER,
63433 		ZEND_ASSIGN_DIM_SPEC_VAR_CONST_OP_DATA_CONST_HANDLER,
63434 		ZEND_ASSIGN_DIM_SPEC_VAR_CONST_OP_DATA_TMP_HANDLER,
63435 		ZEND_ASSIGN_DIM_SPEC_VAR_CONST_OP_DATA_VAR_HANDLER,
63436 		ZEND_NULL_HANDLER,
63437 		ZEND_ASSIGN_DIM_SPEC_VAR_CONST_OP_DATA_CV_HANDLER,
63438 		ZEND_ASSIGN_DIM_SPEC_VAR_TMPVAR_OP_DATA_CONST_HANDLER,
63439 		ZEND_ASSIGN_DIM_SPEC_VAR_TMPVAR_OP_DATA_TMP_HANDLER,
63440 		ZEND_ASSIGN_DIM_SPEC_VAR_TMPVAR_OP_DATA_VAR_HANDLER,
63441 		ZEND_NULL_HANDLER,
63442 		ZEND_ASSIGN_DIM_SPEC_VAR_TMPVAR_OP_DATA_CV_HANDLER,
63443 		ZEND_ASSIGN_DIM_SPEC_VAR_TMPVAR_OP_DATA_CONST_HANDLER,
63444 		ZEND_ASSIGN_DIM_SPEC_VAR_TMPVAR_OP_DATA_TMP_HANDLER,
63445 		ZEND_ASSIGN_DIM_SPEC_VAR_TMPVAR_OP_DATA_VAR_HANDLER,
63446 		ZEND_NULL_HANDLER,
63447 		ZEND_ASSIGN_DIM_SPEC_VAR_TMPVAR_OP_DATA_CV_HANDLER,
63448 		ZEND_ASSIGN_DIM_SPEC_VAR_UNUSED_OP_DATA_CONST_HANDLER,
63449 		ZEND_ASSIGN_DIM_SPEC_VAR_UNUSED_OP_DATA_TMP_HANDLER,
63450 		ZEND_ASSIGN_DIM_SPEC_VAR_UNUSED_OP_DATA_VAR_HANDLER,
63451 		ZEND_NULL_HANDLER,
63452 		ZEND_ASSIGN_DIM_SPEC_VAR_UNUSED_OP_DATA_CV_HANDLER,
63453 		ZEND_ASSIGN_DIM_SPEC_VAR_CV_OP_DATA_CONST_HANDLER,
63454 		ZEND_ASSIGN_DIM_SPEC_VAR_CV_OP_DATA_TMP_HANDLER,
63455 		ZEND_ASSIGN_DIM_SPEC_VAR_CV_OP_DATA_VAR_HANDLER,
63456 		ZEND_NULL_HANDLER,
63457 		ZEND_ASSIGN_DIM_SPEC_VAR_CV_OP_DATA_CV_HANDLER,
63458 		ZEND_NULL_HANDLER,
63459 		ZEND_NULL_HANDLER,
63460 		ZEND_NULL_HANDLER,
63461 		ZEND_NULL_HANDLER,
63462 		ZEND_NULL_HANDLER,
63463 		ZEND_NULL_HANDLER,
63464 		ZEND_NULL_HANDLER,
63465 		ZEND_NULL_HANDLER,
63466 		ZEND_NULL_HANDLER,
63467 		ZEND_NULL_HANDLER,
63468 		ZEND_NULL_HANDLER,
63469 		ZEND_NULL_HANDLER,
63470 		ZEND_NULL_HANDLER,
63471 		ZEND_NULL_HANDLER,
63472 		ZEND_NULL_HANDLER,
63473 		ZEND_NULL_HANDLER,
63474 		ZEND_NULL_HANDLER,
63475 		ZEND_NULL_HANDLER,
63476 		ZEND_NULL_HANDLER,
63477 		ZEND_NULL_HANDLER,
63478 		ZEND_NULL_HANDLER,
63479 		ZEND_NULL_HANDLER,
63480 		ZEND_NULL_HANDLER,
63481 		ZEND_NULL_HANDLER,
63482 		ZEND_NULL_HANDLER,
63483 		ZEND_ASSIGN_DIM_SPEC_CV_CONST_OP_DATA_CONST_HANDLER,
63484 		ZEND_ASSIGN_DIM_SPEC_CV_CONST_OP_DATA_TMP_HANDLER,
63485 		ZEND_ASSIGN_DIM_SPEC_CV_CONST_OP_DATA_VAR_HANDLER,
63486 		ZEND_NULL_HANDLER,
63487 		ZEND_ASSIGN_DIM_SPEC_CV_CONST_OP_DATA_CV_HANDLER,
63488 		ZEND_ASSIGN_DIM_SPEC_CV_TMPVAR_OP_DATA_CONST_HANDLER,
63489 		ZEND_ASSIGN_DIM_SPEC_CV_TMPVAR_OP_DATA_TMP_HANDLER,
63490 		ZEND_ASSIGN_DIM_SPEC_CV_TMPVAR_OP_DATA_VAR_HANDLER,
63491 		ZEND_NULL_HANDLER,
63492 		ZEND_ASSIGN_DIM_SPEC_CV_TMPVAR_OP_DATA_CV_HANDLER,
63493 		ZEND_ASSIGN_DIM_SPEC_CV_TMPVAR_OP_DATA_CONST_HANDLER,
63494 		ZEND_ASSIGN_DIM_SPEC_CV_TMPVAR_OP_DATA_TMP_HANDLER,
63495 		ZEND_ASSIGN_DIM_SPEC_CV_TMPVAR_OP_DATA_VAR_HANDLER,
63496 		ZEND_NULL_HANDLER,
63497 		ZEND_ASSIGN_DIM_SPEC_CV_TMPVAR_OP_DATA_CV_HANDLER,
63498 		ZEND_ASSIGN_DIM_SPEC_CV_UNUSED_OP_DATA_CONST_HANDLER,
63499 		ZEND_ASSIGN_DIM_SPEC_CV_UNUSED_OP_DATA_TMP_HANDLER,
63500 		ZEND_ASSIGN_DIM_SPEC_CV_UNUSED_OP_DATA_VAR_HANDLER,
63501 		ZEND_NULL_HANDLER,
63502 		ZEND_ASSIGN_DIM_SPEC_CV_UNUSED_OP_DATA_CV_HANDLER,
63503 		ZEND_ASSIGN_DIM_SPEC_CV_CV_OP_DATA_CONST_HANDLER,
63504 		ZEND_ASSIGN_DIM_SPEC_CV_CV_OP_DATA_TMP_HANDLER,
63505 		ZEND_ASSIGN_DIM_SPEC_CV_CV_OP_DATA_VAR_HANDLER,
63506 		ZEND_NULL_HANDLER,
63507 		ZEND_ASSIGN_DIM_SPEC_CV_CV_OP_DATA_CV_HANDLER,
63508 		ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CONST_CONST_HANDLER,
63509 		ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CONST_TMPVAR_HANDLER,
63510 		ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CONST_TMPVAR_HANDLER,
63511 		ZEND_NULL_HANDLER,
63512 		ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CONST_CV_HANDLER,
63513 		ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMPVAR_CONST_HANDLER,
63514 		ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMPVAR_TMPVAR_HANDLER,
63515 		ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMPVAR_TMPVAR_HANDLER,
63516 		ZEND_NULL_HANDLER,
63517 		ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMPVAR_CV_HANDLER,
63518 		ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMPVAR_CONST_HANDLER,
63519 		ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMPVAR_TMPVAR_HANDLER,
63520 		ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMPVAR_TMPVAR_HANDLER,
63521 		ZEND_NULL_HANDLER,
63522 		ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMPVAR_CV_HANDLER,
63523 		ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_UNUSED_CONST_HANDLER,
63524 		ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_UNUSED_TMPVAR_HANDLER,
63525 		ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_UNUSED_TMPVAR_HANDLER,
63526 		ZEND_NULL_HANDLER,
63527 		ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_UNUSED_CV_HANDLER,
63528 		ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CV_CONST_HANDLER,
63529 		ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CV_TMPVAR_HANDLER,
63530 		ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CV_TMPVAR_HANDLER,
63531 		ZEND_NULL_HANDLER,
63532 		ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CV_CV_HANDLER,
63533 		ZEND_HANDLE_EXCEPTION_SPEC_HANDLER,
63534 		ZEND_USER_OPCODE_SPEC_HANDLER,
63535 		ZEND_ASSERT_CHECK_SPEC_HANDLER,
63536 		ZEND_JMP_SET_SPEC_CONST_HANDLER,
63537 		ZEND_JMP_SET_SPEC_TMP_HANDLER,
63538 		ZEND_JMP_SET_SPEC_VAR_HANDLER,
63539 		ZEND_NULL_HANDLER,
63540 		ZEND_JMP_SET_SPEC_CV_HANDLER,
63541 		ZEND_DECLARE_LAMBDA_FUNCTION_SPEC_CONST_UNUSED_HANDLER,
63542 		ZEND_ADD_TRAIT_SPEC_HANDLER,
63543 		ZEND_BIND_TRAITS_SPEC_HANDLER,
63544 		ZEND_SEPARATE_SPEC_VAR_UNUSED_HANDLER,
63545 		ZEND_FETCH_CLASS_NAME_SPEC_UNUSED_HANDLER,
63546 		ZEND_CALL_TRAMPOLINE_SPEC_HANDLER,
63547 		ZEND_DISCARD_EXCEPTION_SPEC_HANDLER,
63548 		ZEND_YIELD_SPEC_CONST_CONST_HANDLER,
63549 		ZEND_YIELD_SPEC_CONST_TMP_HANDLER,
63550 		ZEND_YIELD_SPEC_CONST_VAR_HANDLER,
63551 		ZEND_YIELD_SPEC_CONST_UNUSED_HANDLER,
63552 		ZEND_YIELD_SPEC_CONST_CV_HANDLER,
63553 		ZEND_YIELD_SPEC_TMP_CONST_HANDLER,
63554 		ZEND_YIELD_SPEC_TMP_TMP_HANDLER,
63555 		ZEND_YIELD_SPEC_TMP_VAR_HANDLER,
63556 		ZEND_YIELD_SPEC_TMP_UNUSED_HANDLER,
63557 		ZEND_YIELD_SPEC_TMP_CV_HANDLER,
63558 		ZEND_YIELD_SPEC_VAR_CONST_HANDLER,
63559 		ZEND_YIELD_SPEC_VAR_TMP_HANDLER,
63560 		ZEND_YIELD_SPEC_VAR_VAR_HANDLER,
63561 		ZEND_YIELD_SPEC_VAR_UNUSED_HANDLER,
63562 		ZEND_YIELD_SPEC_VAR_CV_HANDLER,
63563 		ZEND_YIELD_SPEC_UNUSED_CONST_HANDLER,
63564 		ZEND_YIELD_SPEC_UNUSED_TMP_HANDLER,
63565 		ZEND_YIELD_SPEC_UNUSED_VAR_HANDLER,
63566 		ZEND_YIELD_SPEC_UNUSED_UNUSED_HANDLER,
63567 		ZEND_YIELD_SPEC_UNUSED_CV_HANDLER,
63568 		ZEND_YIELD_SPEC_CV_CONST_HANDLER,
63569 		ZEND_YIELD_SPEC_CV_TMP_HANDLER,
63570 		ZEND_YIELD_SPEC_CV_VAR_HANDLER,
63571 		ZEND_YIELD_SPEC_CV_UNUSED_HANDLER,
63572 		ZEND_YIELD_SPEC_CV_CV_HANDLER,
63573 		ZEND_GENERATOR_RETURN_SPEC_CONST_HANDLER,
63574 		ZEND_GENERATOR_RETURN_SPEC_TMP_HANDLER,
63575 		ZEND_GENERATOR_RETURN_SPEC_VAR_HANDLER,
63576 		ZEND_NULL_HANDLER,
63577 		ZEND_GENERATOR_RETURN_SPEC_CV_HANDLER,
63578 		ZEND_FAST_CALL_SPEC_HANDLER,
63579 		ZEND_FAST_RET_SPEC_HANDLER,
63580 		ZEND_RECV_VARIADIC_SPEC_UNUSED_HANDLER,
63581 		ZEND_SEND_UNPACK_SPEC_HANDLER,
63582 		ZEND_POW_SPEC_CONST_CONST_HANDLER,
63583 		ZEND_POW_SPEC_CONST_TMPVAR_HANDLER,
63584 		ZEND_POW_SPEC_CONST_TMPVAR_HANDLER,
63585 		ZEND_NULL_HANDLER,
63586 		ZEND_POW_SPEC_CONST_CV_HANDLER,
63587 		ZEND_POW_SPEC_TMPVAR_CONST_HANDLER,
63588 		ZEND_POW_SPEC_TMPVAR_TMPVAR_HANDLER,
63589 		ZEND_POW_SPEC_TMPVAR_TMPVAR_HANDLER,
63590 		ZEND_NULL_HANDLER,
63591 		ZEND_POW_SPEC_TMPVAR_CV_HANDLER,
63592 		ZEND_POW_SPEC_TMPVAR_CONST_HANDLER,
63593 		ZEND_POW_SPEC_TMPVAR_TMPVAR_HANDLER,
63594 		ZEND_POW_SPEC_TMPVAR_TMPVAR_HANDLER,
63595 		ZEND_NULL_HANDLER,
63596 		ZEND_POW_SPEC_TMPVAR_CV_HANDLER,
63597 		ZEND_NULL_HANDLER,
63598 		ZEND_NULL_HANDLER,
63599 		ZEND_NULL_HANDLER,
63600 		ZEND_NULL_HANDLER,
63601 		ZEND_NULL_HANDLER,
63602 		ZEND_POW_SPEC_CV_CONST_HANDLER,
63603 		ZEND_POW_SPEC_CV_TMPVAR_HANDLER,
63604 		ZEND_POW_SPEC_CV_TMPVAR_HANDLER,
63605 		ZEND_NULL_HANDLER,
63606 		ZEND_POW_SPEC_CV_CV_HANDLER,
63607 		ZEND_NULL_HANDLER,
63608 		ZEND_NULL_HANDLER,
63609 		ZEND_NULL_HANDLER,
63610 		ZEND_NULL_HANDLER,
63611 		ZEND_NULL_HANDLER,
63612 		ZEND_NULL_HANDLER,
63613 		ZEND_NULL_HANDLER,
63614 		ZEND_NULL_HANDLER,
63615 		ZEND_NULL_HANDLER,
63616 		ZEND_NULL_HANDLER,
63617 		ZEND_NULL_HANDLER,
63618 		ZEND_NULL_HANDLER,
63619 		ZEND_NULL_HANDLER,
63620 		ZEND_NULL_HANDLER,
63621 		ZEND_NULL_HANDLER,
63622 		ZEND_NULL_HANDLER,
63623 		ZEND_NULL_HANDLER,
63624 		ZEND_NULL_HANDLER,
63625 		ZEND_NULL_HANDLER,
63626 		ZEND_NULL_HANDLER,
63627 		ZEND_NULL_HANDLER,
63628 		ZEND_NULL_HANDLER,
63629 		ZEND_NULL_HANDLER,
63630 		ZEND_NULL_HANDLER,
63631 		ZEND_NULL_HANDLER,
63632 		ZEND_NULL_HANDLER,
63633 		ZEND_NULL_HANDLER,
63634 		ZEND_NULL_HANDLER,
63635 		ZEND_NULL_HANDLER,
63636 		ZEND_NULL_HANDLER,
63637 		ZEND_ASSIGN_POW_SPEC_VAR_CONST_HANDLER,
63638 		ZEND_ASSIGN_POW_SPEC_VAR_CONST_DIM_HANDLER,
63639 		ZEND_ASSIGN_POW_SPEC_VAR_CONST_OBJ_HANDLER,
63640 		ZEND_ASSIGN_POW_SPEC_VAR_TMPVAR_HANDLER,
63641 		ZEND_ASSIGN_POW_SPEC_VAR_TMPVAR_DIM_HANDLER,
63642 		ZEND_ASSIGN_POW_SPEC_VAR_TMPVAR_OBJ_HANDLER,
63643 		ZEND_ASSIGN_POW_SPEC_VAR_TMPVAR_HANDLER,
63644 		ZEND_ASSIGN_POW_SPEC_VAR_TMPVAR_DIM_HANDLER,
63645 		ZEND_ASSIGN_POW_SPEC_VAR_TMPVAR_OBJ_HANDLER,
63646 		ZEND_NULL_HANDLER,
63647 		ZEND_ASSIGN_POW_SPEC_VAR_UNUSED_DIM_HANDLER,
63648 		ZEND_NULL_HANDLER,
63649 		ZEND_ASSIGN_POW_SPEC_VAR_CV_HANDLER,
63650 		ZEND_ASSIGN_POW_SPEC_VAR_CV_DIM_HANDLER,
63651 		ZEND_ASSIGN_POW_SPEC_VAR_CV_OBJ_HANDLER,
63652 		ZEND_NULL_HANDLER,
63653 		ZEND_NULL_HANDLER,
63654 		ZEND_ASSIGN_POW_SPEC_UNUSED_CONST_OBJ_HANDLER,
63655 		ZEND_NULL_HANDLER,
63656 		ZEND_NULL_HANDLER,
63657 		ZEND_ASSIGN_POW_SPEC_UNUSED_TMPVAR_OBJ_HANDLER,
63658 		ZEND_NULL_HANDLER,
63659 		ZEND_NULL_HANDLER,
63660 		ZEND_ASSIGN_POW_SPEC_UNUSED_TMPVAR_OBJ_HANDLER,
63661 		ZEND_NULL_HANDLER,
63662 		ZEND_NULL_HANDLER,
63663 		ZEND_NULL_HANDLER,
63664 		ZEND_NULL_HANDLER,
63665 		ZEND_NULL_HANDLER,
63666 		ZEND_ASSIGN_POW_SPEC_UNUSED_CV_OBJ_HANDLER,
63667 		ZEND_ASSIGN_POW_SPEC_CV_CONST_HANDLER,
63668 		ZEND_ASSIGN_POW_SPEC_CV_CONST_DIM_HANDLER,
63669 		ZEND_ASSIGN_POW_SPEC_CV_CONST_OBJ_HANDLER,
63670 		ZEND_ASSIGN_POW_SPEC_CV_TMPVAR_HANDLER,
63671 		ZEND_ASSIGN_POW_SPEC_CV_TMPVAR_DIM_HANDLER,
63672 		ZEND_ASSIGN_POW_SPEC_CV_TMPVAR_OBJ_HANDLER,
63673 		ZEND_ASSIGN_POW_SPEC_CV_TMPVAR_HANDLER,
63674 		ZEND_ASSIGN_POW_SPEC_CV_TMPVAR_DIM_HANDLER,
63675 		ZEND_ASSIGN_POW_SPEC_CV_TMPVAR_OBJ_HANDLER,
63676 		ZEND_NULL_HANDLER,
63677 		ZEND_ASSIGN_POW_SPEC_CV_UNUSED_DIM_HANDLER,
63678 		ZEND_NULL_HANDLER,
63679 		ZEND_ASSIGN_POW_SPEC_CV_CV_HANDLER,
63680 		ZEND_ASSIGN_POW_SPEC_CV_CV_DIM_HANDLER,
63681 		ZEND_ASSIGN_POW_SPEC_CV_CV_OBJ_HANDLER,
63682 		ZEND_BIND_GLOBAL_SPEC_CV_CONST_HANDLER,
63683 		ZEND_COALESCE_SPEC_CONST_HANDLER,
63684 		ZEND_COALESCE_SPEC_TMPVAR_HANDLER,
63685 		ZEND_COALESCE_SPEC_TMPVAR_HANDLER,
63686 		ZEND_NULL_HANDLER,
63687 		ZEND_COALESCE_SPEC_CV_HANDLER,
63688 		ZEND_SPACESHIP_SPEC_CONST_CONST_HANDLER,
63689 		ZEND_SPACESHIP_SPEC_CONST_TMPVAR_HANDLER,
63690 		ZEND_SPACESHIP_SPEC_CONST_TMPVAR_HANDLER,
63691 		ZEND_NULL_HANDLER,
63692 		ZEND_SPACESHIP_SPEC_CONST_CV_HANDLER,
63693 		ZEND_SPACESHIP_SPEC_TMPVAR_CONST_HANDLER,
63694 		ZEND_SPACESHIP_SPEC_TMPVAR_TMPVAR_HANDLER,
63695 		ZEND_SPACESHIP_SPEC_TMPVAR_TMPVAR_HANDLER,
63696 		ZEND_NULL_HANDLER,
63697 		ZEND_SPACESHIP_SPEC_TMPVAR_CV_HANDLER,
63698 		ZEND_SPACESHIP_SPEC_TMPVAR_CONST_HANDLER,
63699 		ZEND_SPACESHIP_SPEC_TMPVAR_TMPVAR_HANDLER,
63700 		ZEND_SPACESHIP_SPEC_TMPVAR_TMPVAR_HANDLER,
63701 		ZEND_NULL_HANDLER,
63702 		ZEND_SPACESHIP_SPEC_TMPVAR_CV_HANDLER,
63703 		ZEND_NULL_HANDLER,
63704 		ZEND_NULL_HANDLER,
63705 		ZEND_NULL_HANDLER,
63706 		ZEND_NULL_HANDLER,
63707 		ZEND_NULL_HANDLER,
63708 		ZEND_SPACESHIP_SPEC_CV_CONST_HANDLER,
63709 		ZEND_SPACESHIP_SPEC_CV_TMPVAR_HANDLER,
63710 		ZEND_SPACESHIP_SPEC_CV_TMPVAR_HANDLER,
63711 		ZEND_NULL_HANDLER,
63712 		ZEND_SPACESHIP_SPEC_CV_CV_HANDLER,
63713 		ZEND_DECLARE_ANON_CLASS_SPEC_HANDLER,
63714 		ZEND_DECLARE_ANON_INHERITED_CLASS_SPEC_CONST_CONST_HANDLER,
63715 		ZEND_FETCH_STATIC_PROP_R_SPEC_CONST_CONST_HANDLER,
63716 		ZEND_NULL_HANDLER,
63717 		ZEND_FETCH_STATIC_PROP_R_SPEC_CONST_VAR_HANDLER,
63718 		ZEND_FETCH_STATIC_PROP_R_SPEC_CONST_UNUSED_HANDLER,
63719 		ZEND_NULL_HANDLER,
63720 		ZEND_FETCH_STATIC_PROP_R_SPEC_TMPVAR_CONST_HANDLER,
63721 		ZEND_NULL_HANDLER,
63722 		ZEND_FETCH_STATIC_PROP_R_SPEC_TMPVAR_VAR_HANDLER,
63723 		ZEND_FETCH_STATIC_PROP_R_SPEC_TMPVAR_UNUSED_HANDLER,
63724 		ZEND_NULL_HANDLER,
63725 		ZEND_FETCH_STATIC_PROP_R_SPEC_TMPVAR_CONST_HANDLER,
63726 		ZEND_NULL_HANDLER,
63727 		ZEND_FETCH_STATIC_PROP_R_SPEC_TMPVAR_VAR_HANDLER,
63728 		ZEND_FETCH_STATIC_PROP_R_SPEC_TMPVAR_UNUSED_HANDLER,
63729 		ZEND_NULL_HANDLER,
63730 		ZEND_NULL_HANDLER,
63731 		ZEND_NULL_HANDLER,
63732 		ZEND_NULL_HANDLER,
63733 		ZEND_NULL_HANDLER,
63734 		ZEND_NULL_HANDLER,
63735 		ZEND_FETCH_STATIC_PROP_R_SPEC_CV_CONST_HANDLER,
63736 		ZEND_NULL_HANDLER,
63737 		ZEND_FETCH_STATIC_PROP_R_SPEC_CV_VAR_HANDLER,
63738 		ZEND_FETCH_STATIC_PROP_R_SPEC_CV_UNUSED_HANDLER,
63739 		ZEND_NULL_HANDLER,
63740 		ZEND_FETCH_STATIC_PROP_W_SPEC_CONST_CONST_HANDLER,
63741 		ZEND_NULL_HANDLER,
63742 		ZEND_FETCH_STATIC_PROP_W_SPEC_CONST_VAR_HANDLER,
63743 		ZEND_FETCH_STATIC_PROP_W_SPEC_CONST_UNUSED_HANDLER,
63744 		ZEND_NULL_HANDLER,
63745 		ZEND_FETCH_STATIC_PROP_W_SPEC_TMPVAR_CONST_HANDLER,
63746 		ZEND_NULL_HANDLER,
63747 		ZEND_FETCH_STATIC_PROP_W_SPEC_TMPVAR_VAR_HANDLER,
63748 		ZEND_FETCH_STATIC_PROP_W_SPEC_TMPVAR_UNUSED_HANDLER,
63749 		ZEND_NULL_HANDLER,
63750 		ZEND_FETCH_STATIC_PROP_W_SPEC_TMPVAR_CONST_HANDLER,
63751 		ZEND_NULL_HANDLER,
63752 		ZEND_FETCH_STATIC_PROP_W_SPEC_TMPVAR_VAR_HANDLER,
63753 		ZEND_FETCH_STATIC_PROP_W_SPEC_TMPVAR_UNUSED_HANDLER,
63754 		ZEND_NULL_HANDLER,
63755 		ZEND_NULL_HANDLER,
63756 		ZEND_NULL_HANDLER,
63757 		ZEND_NULL_HANDLER,
63758 		ZEND_NULL_HANDLER,
63759 		ZEND_NULL_HANDLER,
63760 		ZEND_FETCH_STATIC_PROP_W_SPEC_CV_CONST_HANDLER,
63761 		ZEND_NULL_HANDLER,
63762 		ZEND_FETCH_STATIC_PROP_W_SPEC_CV_VAR_HANDLER,
63763 		ZEND_FETCH_STATIC_PROP_W_SPEC_CV_UNUSED_HANDLER,
63764 		ZEND_NULL_HANDLER,
63765 		ZEND_FETCH_STATIC_PROP_RW_SPEC_CONST_CONST_HANDLER,
63766 		ZEND_NULL_HANDLER,
63767 		ZEND_FETCH_STATIC_PROP_RW_SPEC_CONST_VAR_HANDLER,
63768 		ZEND_FETCH_STATIC_PROP_RW_SPEC_CONST_UNUSED_HANDLER,
63769 		ZEND_NULL_HANDLER,
63770 		ZEND_FETCH_STATIC_PROP_RW_SPEC_TMPVAR_CONST_HANDLER,
63771 		ZEND_NULL_HANDLER,
63772 		ZEND_FETCH_STATIC_PROP_RW_SPEC_TMPVAR_VAR_HANDLER,
63773 		ZEND_FETCH_STATIC_PROP_RW_SPEC_TMPVAR_UNUSED_HANDLER,
63774 		ZEND_NULL_HANDLER,
63775 		ZEND_FETCH_STATIC_PROP_RW_SPEC_TMPVAR_CONST_HANDLER,
63776 		ZEND_NULL_HANDLER,
63777 		ZEND_FETCH_STATIC_PROP_RW_SPEC_TMPVAR_VAR_HANDLER,
63778 		ZEND_FETCH_STATIC_PROP_RW_SPEC_TMPVAR_UNUSED_HANDLER,
63779 		ZEND_NULL_HANDLER,
63780 		ZEND_NULL_HANDLER,
63781 		ZEND_NULL_HANDLER,
63782 		ZEND_NULL_HANDLER,
63783 		ZEND_NULL_HANDLER,
63784 		ZEND_NULL_HANDLER,
63785 		ZEND_FETCH_STATIC_PROP_RW_SPEC_CV_CONST_HANDLER,
63786 		ZEND_NULL_HANDLER,
63787 		ZEND_FETCH_STATIC_PROP_RW_SPEC_CV_VAR_HANDLER,
63788 		ZEND_FETCH_STATIC_PROP_RW_SPEC_CV_UNUSED_HANDLER,
63789 		ZEND_NULL_HANDLER,
63790 		ZEND_FETCH_STATIC_PROP_IS_SPEC_CONST_CONST_HANDLER,
63791 		ZEND_NULL_HANDLER,
63792 		ZEND_FETCH_STATIC_PROP_IS_SPEC_CONST_VAR_HANDLER,
63793 		ZEND_FETCH_STATIC_PROP_IS_SPEC_CONST_UNUSED_HANDLER,
63794 		ZEND_NULL_HANDLER,
63795 		ZEND_FETCH_STATIC_PROP_IS_SPEC_TMPVAR_CONST_HANDLER,
63796 		ZEND_NULL_HANDLER,
63797 		ZEND_FETCH_STATIC_PROP_IS_SPEC_TMPVAR_VAR_HANDLER,
63798 		ZEND_FETCH_STATIC_PROP_IS_SPEC_TMPVAR_UNUSED_HANDLER,
63799 		ZEND_NULL_HANDLER,
63800 		ZEND_FETCH_STATIC_PROP_IS_SPEC_TMPVAR_CONST_HANDLER,
63801 		ZEND_NULL_HANDLER,
63802 		ZEND_FETCH_STATIC_PROP_IS_SPEC_TMPVAR_VAR_HANDLER,
63803 		ZEND_FETCH_STATIC_PROP_IS_SPEC_TMPVAR_UNUSED_HANDLER,
63804 		ZEND_NULL_HANDLER,
63805 		ZEND_NULL_HANDLER,
63806 		ZEND_NULL_HANDLER,
63807 		ZEND_NULL_HANDLER,
63808 		ZEND_NULL_HANDLER,
63809 		ZEND_NULL_HANDLER,
63810 		ZEND_FETCH_STATIC_PROP_IS_SPEC_CV_CONST_HANDLER,
63811 		ZEND_NULL_HANDLER,
63812 		ZEND_FETCH_STATIC_PROP_IS_SPEC_CV_VAR_HANDLER,
63813 		ZEND_FETCH_STATIC_PROP_IS_SPEC_CV_UNUSED_HANDLER,
63814 		ZEND_NULL_HANDLER,
63815 		ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_CONST_CONST_HANDLER,
63816 		ZEND_NULL_HANDLER,
63817 		ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_CONST_VAR_HANDLER,
63818 		ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_CONST_UNUSED_HANDLER,
63819 		ZEND_NULL_HANDLER,
63820 		ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_TMPVAR_CONST_HANDLER,
63821 		ZEND_NULL_HANDLER,
63822 		ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_TMPVAR_VAR_HANDLER,
63823 		ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_TMPVAR_UNUSED_HANDLER,
63824 		ZEND_NULL_HANDLER,
63825 		ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_TMPVAR_CONST_HANDLER,
63826 		ZEND_NULL_HANDLER,
63827 		ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_TMPVAR_VAR_HANDLER,
63828 		ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_TMPVAR_UNUSED_HANDLER,
63829 		ZEND_NULL_HANDLER,
63830 		ZEND_NULL_HANDLER,
63831 		ZEND_NULL_HANDLER,
63832 		ZEND_NULL_HANDLER,
63833 		ZEND_NULL_HANDLER,
63834 		ZEND_NULL_HANDLER,
63835 		ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_CV_CONST_HANDLER,
63836 		ZEND_NULL_HANDLER,
63837 		ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_CV_VAR_HANDLER,
63838 		ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_CV_UNUSED_HANDLER,
63839 		ZEND_NULL_HANDLER,
63840 		ZEND_FETCH_STATIC_PROP_UNSET_SPEC_CONST_CONST_HANDLER,
63841 		ZEND_NULL_HANDLER,
63842 		ZEND_FETCH_STATIC_PROP_UNSET_SPEC_CONST_VAR_HANDLER,
63843 		ZEND_FETCH_STATIC_PROP_UNSET_SPEC_CONST_UNUSED_HANDLER,
63844 		ZEND_NULL_HANDLER,
63845 		ZEND_FETCH_STATIC_PROP_UNSET_SPEC_TMPVAR_CONST_HANDLER,
63846 		ZEND_NULL_HANDLER,
63847 		ZEND_FETCH_STATIC_PROP_UNSET_SPEC_TMPVAR_VAR_HANDLER,
63848 		ZEND_FETCH_STATIC_PROP_UNSET_SPEC_TMPVAR_UNUSED_HANDLER,
63849 		ZEND_NULL_HANDLER,
63850 		ZEND_FETCH_STATIC_PROP_UNSET_SPEC_TMPVAR_CONST_HANDLER,
63851 		ZEND_NULL_HANDLER,
63852 		ZEND_FETCH_STATIC_PROP_UNSET_SPEC_TMPVAR_VAR_HANDLER,
63853 		ZEND_FETCH_STATIC_PROP_UNSET_SPEC_TMPVAR_UNUSED_HANDLER,
63854 		ZEND_NULL_HANDLER,
63855 		ZEND_NULL_HANDLER,
63856 		ZEND_NULL_HANDLER,
63857 		ZEND_NULL_HANDLER,
63858 		ZEND_NULL_HANDLER,
63859 		ZEND_NULL_HANDLER,
63860 		ZEND_FETCH_STATIC_PROP_UNSET_SPEC_CV_CONST_HANDLER,
63861 		ZEND_NULL_HANDLER,
63862 		ZEND_FETCH_STATIC_PROP_UNSET_SPEC_CV_VAR_HANDLER,
63863 		ZEND_FETCH_STATIC_PROP_UNSET_SPEC_CV_UNUSED_HANDLER,
63864 		ZEND_NULL_HANDLER,
63865 		ZEND_UNSET_STATIC_PROP_SPEC_CONST_CONST_HANDLER,
63866 		ZEND_NULL_HANDLER,
63867 		ZEND_UNSET_STATIC_PROP_SPEC_CONST_VAR_HANDLER,
63868 		ZEND_UNSET_STATIC_PROP_SPEC_CONST_UNUSED_HANDLER,
63869 		ZEND_NULL_HANDLER,
63870 		ZEND_UNSET_STATIC_PROP_SPEC_TMPVAR_CONST_HANDLER,
63871 		ZEND_NULL_HANDLER,
63872 		ZEND_UNSET_STATIC_PROP_SPEC_TMPVAR_VAR_HANDLER,
63873 		ZEND_UNSET_STATIC_PROP_SPEC_TMPVAR_UNUSED_HANDLER,
63874 		ZEND_NULL_HANDLER,
63875 		ZEND_UNSET_STATIC_PROP_SPEC_TMPVAR_CONST_HANDLER,
63876 		ZEND_NULL_HANDLER,
63877 		ZEND_UNSET_STATIC_PROP_SPEC_TMPVAR_VAR_HANDLER,
63878 		ZEND_UNSET_STATIC_PROP_SPEC_TMPVAR_UNUSED_HANDLER,
63879 		ZEND_NULL_HANDLER,
63880 		ZEND_NULL_HANDLER,
63881 		ZEND_NULL_HANDLER,
63882 		ZEND_NULL_HANDLER,
63883 		ZEND_NULL_HANDLER,
63884 		ZEND_NULL_HANDLER,
63885 		ZEND_UNSET_STATIC_PROP_SPEC_CV_CONST_HANDLER,
63886 		ZEND_NULL_HANDLER,
63887 		ZEND_UNSET_STATIC_PROP_SPEC_CV_VAR_HANDLER,
63888 		ZEND_UNSET_STATIC_PROP_SPEC_CV_UNUSED_HANDLER,
63889 		ZEND_NULL_HANDLER,
63890 		ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_CONST_CONST_HANDLER,
63891 		ZEND_NULL_HANDLER,
63892 		ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_CONST_VAR_HANDLER,
63893 		ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_CONST_UNUSED_HANDLER,
63894 		ZEND_NULL_HANDLER,
63895 		ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_TMPVAR_CONST_HANDLER,
63896 		ZEND_NULL_HANDLER,
63897 		ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_TMPVAR_VAR_HANDLER,
63898 		ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_TMPVAR_UNUSED_HANDLER,
63899 		ZEND_NULL_HANDLER,
63900 		ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_TMPVAR_CONST_HANDLER,
63901 		ZEND_NULL_HANDLER,
63902 		ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_TMPVAR_VAR_HANDLER,
63903 		ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_TMPVAR_UNUSED_HANDLER,
63904 		ZEND_NULL_HANDLER,
63905 		ZEND_NULL_HANDLER,
63906 		ZEND_NULL_HANDLER,
63907 		ZEND_NULL_HANDLER,
63908 		ZEND_NULL_HANDLER,
63909 		ZEND_NULL_HANDLER,
63910 		ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_CV_CONST_HANDLER,
63911 		ZEND_NULL_HANDLER,
63912 		ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_CV_VAR_HANDLER,
63913 		ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_CV_UNUSED_HANDLER,
63914 		ZEND_NULL_HANDLER,
63915 		ZEND_FETCH_CLASS_CONSTANT_SPEC_CONST_CONST_HANDLER,
63916 		ZEND_NULL_HANDLER,
63917 		ZEND_FETCH_CLASS_CONSTANT_SPEC_VAR_CONST_HANDLER,
63918 		ZEND_FETCH_CLASS_CONSTANT_SPEC_UNUSED_CONST_HANDLER,
63919 		ZEND_NULL_HANDLER,
63920 		ZEND_BIND_LEXICAL_SPEC_TMP_CV_HANDLER,
63921 		ZEND_BIND_STATIC_SPEC_CV_CONST_HANDLER,
63922 		ZEND_FETCH_THIS_SPEC_UNUSED_UNUSED_HANDLER,
63923 		ZEND_SEND_FUNC_ARG_SPEC_VAR_HANDLER,
63924 		ZEND_ISSET_ISEMPTY_THIS_SPEC_UNUSED_UNUSED_HANDLER,
63925 		ZEND_SWITCH_LONG_SPEC_CONST_CONST_HANDLER,
63926 		ZEND_SWITCH_LONG_SPEC_TMPVARCV_CONST_HANDLER,
63927 		ZEND_SWITCH_LONG_SPEC_TMPVARCV_CONST_HANDLER,
63928 		ZEND_NULL_HANDLER,
63929 		ZEND_SWITCH_LONG_SPEC_TMPVARCV_CONST_HANDLER,
63930 		ZEND_SWITCH_STRING_SPEC_CONST_CONST_HANDLER,
63931 		ZEND_SWITCH_STRING_SPEC_TMPVARCV_CONST_HANDLER,
63932 		ZEND_SWITCH_STRING_SPEC_TMPVARCV_CONST_HANDLER,
63933 		ZEND_NULL_HANDLER,
63934 		ZEND_SWITCH_STRING_SPEC_TMPVARCV_CONST_HANDLER,
63935 		ZEND_IN_ARRAY_SPEC_CONST_CONST_HANDLER,
63936 		ZEND_IN_ARRAY_SPEC_TMP_CONST_HANDLER,
63937 		ZEND_IN_ARRAY_SPEC_VAR_CONST_HANDLER,
63938 		ZEND_NULL_HANDLER,
63939 		ZEND_IN_ARRAY_SPEC_CV_CONST_HANDLER,
63940 		ZEND_COUNT_SPEC_CONST_UNUSED_HANDLER,
63941 		ZEND_COUNT_SPEC_TMP_UNUSED_HANDLER,
63942 		ZEND_COUNT_SPEC_VAR_UNUSED_HANDLER,
63943 		ZEND_NULL_HANDLER,
63944 		ZEND_COUNT_SPEC_CV_UNUSED_HANDLER,
63945 		ZEND_GET_CLASS_SPEC_CONST_UNUSED_HANDLER,
63946 		ZEND_GET_CLASS_SPEC_TMP_UNUSED_HANDLER,
63947 		ZEND_GET_CLASS_SPEC_VAR_UNUSED_HANDLER,
63948 		ZEND_GET_CLASS_SPEC_UNUSED_UNUSED_HANDLER,
63949 		ZEND_GET_CLASS_SPEC_CV_UNUSED_HANDLER,
63950 		ZEND_GET_CALLED_CLASS_SPEC_UNUSED_UNUSED_HANDLER,
63951 		ZEND_GET_TYPE_SPEC_CONST_UNUSED_HANDLER,
63952 		ZEND_GET_TYPE_SPEC_TMP_UNUSED_HANDLER,
63953 		ZEND_GET_TYPE_SPEC_VAR_UNUSED_HANDLER,
63954 		ZEND_NULL_HANDLER,
63955 		ZEND_GET_TYPE_SPEC_CV_UNUSED_HANDLER,
63956 		ZEND_FUNC_NUM_ARGS_SPEC_UNUSED_UNUSED_HANDLER,
63957 		ZEND_FUNC_GET_ARGS_SPEC_CONST_UNUSED_HANDLER,
63958 		ZEND_NULL_HANDLER,
63959 		ZEND_NULL_HANDLER,
63960 		ZEND_FUNC_GET_ARGS_SPEC_UNUSED_UNUSED_HANDLER,
63961 		ZEND_NULL_HANDLER,
63962 		ZEND_UNSET_CV_SPEC_CV_UNUSED_HANDLER,
63963 		ZEND_ISSET_ISEMPTY_CV_SPEC_CV_UNUSED_SET_HANDLER,
63964 		ZEND_ISSET_ISEMPTY_CV_SPEC_CV_UNUSED_EMPTY_HANDLER,
63965 		ZEND_FETCH_LIST_W_SPEC_VAR_CONST_HANDLER,
63966 		ZEND_FETCH_LIST_W_SPEC_VAR_TMPVAR_HANDLER,
63967 		ZEND_FETCH_LIST_W_SPEC_VAR_TMPVAR_HANDLER,
63968 		ZEND_NULL_HANDLER,
63969 		ZEND_FETCH_LIST_W_SPEC_VAR_CV_HANDLER,
63970 		ZEND_JMP_FORWARD_SPEC_HANDLER,
63971 		ZEND_NULL_HANDLER,
63972 		ZEND_NULL_HANDLER,
63973 		ZEND_NULL_HANDLER,
63974 		ZEND_NULL_HANDLER,
63975 		ZEND_NULL_HANDLER,
63976 		ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST_HANDLER,
63977 		ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_HANDLER,
63978 		ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_HANDLER,
63979 		ZEND_NULL_HANDLER,
63980 		ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_HANDLER,
63981 		ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST_HANDLER,
63982 		ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_HANDLER,
63983 		ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_HANDLER,
63984 		ZEND_NULL_HANDLER,
63985 		ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_HANDLER,
63986 		ZEND_NULL_HANDLER,
63987 		ZEND_NULL_HANDLER,
63988 		ZEND_NULL_HANDLER,
63989 		ZEND_NULL_HANDLER,
63990 		ZEND_NULL_HANDLER,
63991 		ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST_HANDLER,
63992 		ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_HANDLER,
63993 		ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_HANDLER,
63994 		ZEND_NULL_HANDLER,
63995 		ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_HANDLER,
63996 		ZEND_NULL_HANDLER,
63997 		ZEND_NULL_HANDLER,
63998 		ZEND_NULL_HANDLER,
63999 		ZEND_NULL_HANDLER,
64000 		ZEND_NULL_HANDLER,
64001 		ZEND_ADD_LONG_SPEC_TMPVARCV_CONST_HANDLER,
64002 		ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64003 		ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64004 		ZEND_NULL_HANDLER,
64005 		ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64006 		ZEND_ADD_LONG_SPEC_TMPVARCV_CONST_HANDLER,
64007 		ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64008 		ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64009 		ZEND_NULL_HANDLER,
64010 		ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64011 		ZEND_NULL_HANDLER,
64012 		ZEND_NULL_HANDLER,
64013 		ZEND_NULL_HANDLER,
64014 		ZEND_NULL_HANDLER,
64015 		ZEND_NULL_HANDLER,
64016 		ZEND_ADD_LONG_SPEC_TMPVARCV_CONST_HANDLER,
64017 		ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64018 		ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64019 		ZEND_NULL_HANDLER,
64020 		ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64021 		ZEND_NULL_HANDLER,
64022 		ZEND_NULL_HANDLER,
64023 		ZEND_NULL_HANDLER,
64024 		ZEND_NULL_HANDLER,
64025 		ZEND_NULL_HANDLER,
64026 		ZEND_ADD_DOUBLE_SPEC_TMPVARCV_CONST_HANDLER,
64027 		ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64028 		ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64029 		ZEND_NULL_HANDLER,
64030 		ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64031 		ZEND_ADD_DOUBLE_SPEC_TMPVARCV_CONST_HANDLER,
64032 		ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64033 		ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64034 		ZEND_NULL_HANDLER,
64035 		ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64036 		ZEND_NULL_HANDLER,
64037 		ZEND_NULL_HANDLER,
64038 		ZEND_NULL_HANDLER,
64039 		ZEND_NULL_HANDLER,
64040 		ZEND_NULL_HANDLER,
64041 		ZEND_ADD_DOUBLE_SPEC_TMPVARCV_CONST_HANDLER,
64042 		ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64043 		ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64044 		ZEND_NULL_HANDLER,
64045 		ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64046 		ZEND_NULL_HANDLER,
64047 		ZEND_SUB_LONG_NO_OVERFLOW_SPEC_CONST_TMPVARCV_HANDLER,
64048 		ZEND_SUB_LONG_NO_OVERFLOW_SPEC_CONST_TMPVARCV_HANDLER,
64049 		ZEND_NULL_HANDLER,
64050 		ZEND_SUB_LONG_NO_OVERFLOW_SPEC_CONST_TMPVARCV_HANDLER,
64051 		ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST_HANDLER,
64052 		ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64053 		ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64054 		ZEND_NULL_HANDLER,
64055 		ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64056 		ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST_HANDLER,
64057 		ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64058 		ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64059 		ZEND_NULL_HANDLER,
64060 		ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64061 		ZEND_NULL_HANDLER,
64062 		ZEND_NULL_HANDLER,
64063 		ZEND_NULL_HANDLER,
64064 		ZEND_NULL_HANDLER,
64065 		ZEND_NULL_HANDLER,
64066 		ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST_HANDLER,
64067 		ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64068 		ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64069 		ZEND_NULL_HANDLER,
64070 		ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64071 		ZEND_NULL_HANDLER,
64072 		ZEND_SUB_LONG_SPEC_CONST_TMPVARCV_HANDLER,
64073 		ZEND_SUB_LONG_SPEC_CONST_TMPVARCV_HANDLER,
64074 		ZEND_NULL_HANDLER,
64075 		ZEND_SUB_LONG_SPEC_CONST_TMPVARCV_HANDLER,
64076 		ZEND_SUB_LONG_SPEC_TMPVARCV_CONST_HANDLER,
64077 		ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64078 		ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64079 		ZEND_NULL_HANDLER,
64080 		ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64081 		ZEND_SUB_LONG_SPEC_TMPVARCV_CONST_HANDLER,
64082 		ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64083 		ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64084 		ZEND_NULL_HANDLER,
64085 		ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64086 		ZEND_NULL_HANDLER,
64087 		ZEND_NULL_HANDLER,
64088 		ZEND_NULL_HANDLER,
64089 		ZEND_NULL_HANDLER,
64090 		ZEND_NULL_HANDLER,
64091 		ZEND_SUB_LONG_SPEC_TMPVARCV_CONST_HANDLER,
64092 		ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64093 		ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64094 		ZEND_NULL_HANDLER,
64095 		ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64096 		ZEND_NULL_HANDLER,
64097 		ZEND_SUB_DOUBLE_SPEC_CONST_TMPVARCV_HANDLER,
64098 		ZEND_SUB_DOUBLE_SPEC_CONST_TMPVARCV_HANDLER,
64099 		ZEND_NULL_HANDLER,
64100 		ZEND_SUB_DOUBLE_SPEC_CONST_TMPVARCV_HANDLER,
64101 		ZEND_SUB_DOUBLE_SPEC_TMPVARCV_CONST_HANDLER,
64102 		ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64103 		ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64104 		ZEND_NULL_HANDLER,
64105 		ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64106 		ZEND_SUB_DOUBLE_SPEC_TMPVARCV_CONST_HANDLER,
64107 		ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64108 		ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64109 		ZEND_NULL_HANDLER,
64110 		ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64111 		ZEND_NULL_HANDLER,
64112 		ZEND_NULL_HANDLER,
64113 		ZEND_NULL_HANDLER,
64114 		ZEND_NULL_HANDLER,
64115 		ZEND_NULL_HANDLER,
64116 		ZEND_SUB_DOUBLE_SPEC_TMPVARCV_CONST_HANDLER,
64117 		ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64118 		ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64119 		ZEND_NULL_HANDLER,
64120 		ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64121 		ZEND_NULL_HANDLER,
64122 		ZEND_NULL_HANDLER,
64123 		ZEND_NULL_HANDLER,
64124 		ZEND_NULL_HANDLER,
64125 		ZEND_NULL_HANDLER,
64126 		ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST_HANDLER,
64127 		ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64128 		ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64129 		ZEND_NULL_HANDLER,
64130 		ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64131 		ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST_HANDLER,
64132 		ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64133 		ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64134 		ZEND_NULL_HANDLER,
64135 		ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64136 		ZEND_NULL_HANDLER,
64137 		ZEND_NULL_HANDLER,
64138 		ZEND_NULL_HANDLER,
64139 		ZEND_NULL_HANDLER,
64140 		ZEND_NULL_HANDLER,
64141 		ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST_HANDLER,
64142 		ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64143 		ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64144 		ZEND_NULL_HANDLER,
64145 		ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64146 		ZEND_NULL_HANDLER,
64147 		ZEND_NULL_HANDLER,
64148 		ZEND_NULL_HANDLER,
64149 		ZEND_NULL_HANDLER,
64150 		ZEND_NULL_HANDLER,
64151 		ZEND_MUL_LONG_SPEC_TMPVARCV_CONST_HANDLER,
64152 		ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64153 		ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64154 		ZEND_NULL_HANDLER,
64155 		ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64156 		ZEND_MUL_LONG_SPEC_TMPVARCV_CONST_HANDLER,
64157 		ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64158 		ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64159 		ZEND_NULL_HANDLER,
64160 		ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64161 		ZEND_NULL_HANDLER,
64162 		ZEND_NULL_HANDLER,
64163 		ZEND_NULL_HANDLER,
64164 		ZEND_NULL_HANDLER,
64165 		ZEND_NULL_HANDLER,
64166 		ZEND_MUL_LONG_SPEC_TMPVARCV_CONST_HANDLER,
64167 		ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64168 		ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64169 		ZEND_NULL_HANDLER,
64170 		ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64171 		ZEND_NULL_HANDLER,
64172 		ZEND_NULL_HANDLER,
64173 		ZEND_NULL_HANDLER,
64174 		ZEND_NULL_HANDLER,
64175 		ZEND_NULL_HANDLER,
64176 		ZEND_MUL_DOUBLE_SPEC_TMPVARCV_CONST_HANDLER,
64177 		ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64178 		ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64179 		ZEND_NULL_HANDLER,
64180 		ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64181 		ZEND_MUL_DOUBLE_SPEC_TMPVARCV_CONST_HANDLER,
64182 		ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64183 		ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64184 		ZEND_NULL_HANDLER,
64185 		ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64186 		ZEND_NULL_HANDLER,
64187 		ZEND_NULL_HANDLER,
64188 		ZEND_NULL_HANDLER,
64189 		ZEND_NULL_HANDLER,
64190 		ZEND_NULL_HANDLER,
64191 		ZEND_MUL_DOUBLE_SPEC_TMPVARCV_CONST_HANDLER,
64192 		ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64193 		ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64194 		ZEND_NULL_HANDLER,
64195 		ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64196 		ZEND_NULL_HANDLER,
64197 		ZEND_NULL_HANDLER,
64198 		ZEND_NULL_HANDLER,
64199 		ZEND_NULL_HANDLER,
64200 		ZEND_NULL_HANDLER,
64201 		ZEND_NULL_HANDLER,
64202 		ZEND_NULL_HANDLER,
64203 		ZEND_NULL_HANDLER,
64204 		ZEND_NULL_HANDLER,
64205 		ZEND_NULL_HANDLER,
64206 		ZEND_NULL_HANDLER,
64207 		ZEND_NULL_HANDLER,
64208 		ZEND_NULL_HANDLER,
64209 		ZEND_NULL_HANDLER,
64210 		ZEND_NULL_HANDLER,
64211 		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_HANDLER,
64212 		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ_HANDLER,
64213 		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ_HANDLER,
64214 		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64215 		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
64216 		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
64217 		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64218 		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
64219 		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
64220 		ZEND_NULL_HANDLER,
64221 		ZEND_NULL_HANDLER,
64222 		ZEND_NULL_HANDLER,
64223 		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64224 		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
64225 		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
64226 		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_HANDLER,
64227 		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ_HANDLER,
64228 		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ_HANDLER,
64229 		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64230 		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
64231 		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
64232 		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64233 		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
64234 		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
64235 		ZEND_NULL_HANDLER,
64236 		ZEND_NULL_HANDLER,
64237 		ZEND_NULL_HANDLER,
64238 		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64239 		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
64240 		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
64241 		ZEND_NULL_HANDLER,
64242 		ZEND_NULL_HANDLER,
64243 		ZEND_NULL_HANDLER,
64244 		ZEND_NULL_HANDLER,
64245 		ZEND_NULL_HANDLER,
64246 		ZEND_NULL_HANDLER,
64247 		ZEND_NULL_HANDLER,
64248 		ZEND_NULL_HANDLER,
64249 		ZEND_NULL_HANDLER,
64250 		ZEND_NULL_HANDLER,
64251 		ZEND_NULL_HANDLER,
64252 		ZEND_NULL_HANDLER,
64253 		ZEND_NULL_HANDLER,
64254 		ZEND_NULL_HANDLER,
64255 		ZEND_NULL_HANDLER,
64256 		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_HANDLER,
64257 		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ_HANDLER,
64258 		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ_HANDLER,
64259 		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64260 		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
64261 		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
64262 		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64263 		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
64264 		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
64265 		ZEND_NULL_HANDLER,
64266 		ZEND_NULL_HANDLER,
64267 		ZEND_NULL_HANDLER,
64268 		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64269 		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
64270 		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
64271 		ZEND_NULL_HANDLER,
64272 		ZEND_NULL_HANDLER,
64273 		ZEND_NULL_HANDLER,
64274 		ZEND_NULL_HANDLER,
64275 		ZEND_NULL_HANDLER,
64276 		ZEND_NULL_HANDLER,
64277 		ZEND_NULL_HANDLER,
64278 		ZEND_NULL_HANDLER,
64279 		ZEND_NULL_HANDLER,
64280 		ZEND_NULL_HANDLER,
64281 		ZEND_NULL_HANDLER,
64282 		ZEND_NULL_HANDLER,
64283 		ZEND_NULL_HANDLER,
64284 		ZEND_NULL_HANDLER,
64285 		ZEND_NULL_HANDLER,
64286 		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_HANDLER,
64287 		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ_HANDLER,
64288 		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ_HANDLER,
64289 		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64290 		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
64291 		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
64292 		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64293 		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
64294 		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
64295 		ZEND_NULL_HANDLER,
64296 		ZEND_NULL_HANDLER,
64297 		ZEND_NULL_HANDLER,
64298 		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64299 		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
64300 		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
64301 		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_HANDLER,
64302 		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ_HANDLER,
64303 		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ_HANDLER,
64304 		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64305 		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
64306 		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
64307 		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64308 		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
64309 		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
64310 		ZEND_NULL_HANDLER,
64311 		ZEND_NULL_HANDLER,
64312 		ZEND_NULL_HANDLER,
64313 		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64314 		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
64315 		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
64316 		ZEND_NULL_HANDLER,
64317 		ZEND_NULL_HANDLER,
64318 		ZEND_NULL_HANDLER,
64319 		ZEND_NULL_HANDLER,
64320 		ZEND_NULL_HANDLER,
64321 		ZEND_NULL_HANDLER,
64322 		ZEND_NULL_HANDLER,
64323 		ZEND_NULL_HANDLER,
64324 		ZEND_NULL_HANDLER,
64325 		ZEND_NULL_HANDLER,
64326 		ZEND_NULL_HANDLER,
64327 		ZEND_NULL_HANDLER,
64328 		ZEND_NULL_HANDLER,
64329 		ZEND_NULL_HANDLER,
64330 		ZEND_NULL_HANDLER,
64331 		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_HANDLER,
64332 		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ_HANDLER,
64333 		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ_HANDLER,
64334 		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64335 		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
64336 		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
64337 		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64338 		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
64339 		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
64340 		ZEND_NULL_HANDLER,
64341 		ZEND_NULL_HANDLER,
64342 		ZEND_NULL_HANDLER,
64343 		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64344 		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
64345 		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
64346 		ZEND_NULL_HANDLER,
64347 		ZEND_NULL_HANDLER,
64348 		ZEND_NULL_HANDLER,
64349 		ZEND_NULL_HANDLER,
64350 		ZEND_NULL_HANDLER,
64351 		ZEND_NULL_HANDLER,
64352 		ZEND_NULL_HANDLER,
64353 		ZEND_NULL_HANDLER,
64354 		ZEND_NULL_HANDLER,
64355 		ZEND_NULL_HANDLER,
64356 		ZEND_NULL_HANDLER,
64357 		ZEND_NULL_HANDLER,
64358 		ZEND_NULL_HANDLER,
64359 		ZEND_NULL_HANDLER,
64360 		ZEND_NULL_HANDLER,
64361 		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_HANDLER,
64362 		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ_HANDLER,
64363 		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ_HANDLER,
64364 		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64365 		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
64366 		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
64367 		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64368 		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
64369 		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
64370 		ZEND_NULL_HANDLER,
64371 		ZEND_NULL_HANDLER,
64372 		ZEND_NULL_HANDLER,
64373 		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64374 		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
64375 		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
64376 		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_HANDLER,
64377 		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ_HANDLER,
64378 		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ_HANDLER,
64379 		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64380 		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
64381 		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
64382 		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64383 		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
64384 		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
64385 		ZEND_NULL_HANDLER,
64386 		ZEND_NULL_HANDLER,
64387 		ZEND_NULL_HANDLER,
64388 		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64389 		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
64390 		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
64391 		ZEND_NULL_HANDLER,
64392 		ZEND_NULL_HANDLER,
64393 		ZEND_NULL_HANDLER,
64394 		ZEND_NULL_HANDLER,
64395 		ZEND_NULL_HANDLER,
64396 		ZEND_NULL_HANDLER,
64397 		ZEND_NULL_HANDLER,
64398 		ZEND_NULL_HANDLER,
64399 		ZEND_NULL_HANDLER,
64400 		ZEND_NULL_HANDLER,
64401 		ZEND_NULL_HANDLER,
64402 		ZEND_NULL_HANDLER,
64403 		ZEND_NULL_HANDLER,
64404 		ZEND_NULL_HANDLER,
64405 		ZEND_NULL_HANDLER,
64406 		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_HANDLER,
64407 		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ_HANDLER,
64408 		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ_HANDLER,
64409 		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64410 		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
64411 		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
64412 		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64413 		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
64414 		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
64415 		ZEND_NULL_HANDLER,
64416 		ZEND_NULL_HANDLER,
64417 		ZEND_NULL_HANDLER,
64418 		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64419 		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
64420 		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
64421 		ZEND_NULL_HANDLER,
64422 		ZEND_NULL_HANDLER,
64423 		ZEND_NULL_HANDLER,
64424 		ZEND_NULL_HANDLER,
64425 		ZEND_NULL_HANDLER,
64426 		ZEND_NULL_HANDLER,
64427 		ZEND_NULL_HANDLER,
64428 		ZEND_NULL_HANDLER,
64429 		ZEND_NULL_HANDLER,
64430 		ZEND_NULL_HANDLER,
64431 		ZEND_NULL_HANDLER,
64432 		ZEND_NULL_HANDLER,
64433 		ZEND_NULL_HANDLER,
64434 		ZEND_NULL_HANDLER,
64435 		ZEND_NULL_HANDLER,
64436 		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_HANDLER,
64437 		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ_HANDLER,
64438 		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ_HANDLER,
64439 		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64440 		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
64441 		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
64442 		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64443 		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
64444 		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
64445 		ZEND_NULL_HANDLER,
64446 		ZEND_NULL_HANDLER,
64447 		ZEND_NULL_HANDLER,
64448 		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64449 		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
64450 		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
64451 		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_HANDLER,
64452 		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ_HANDLER,
64453 		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ_HANDLER,
64454 		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64455 		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
64456 		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
64457 		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64458 		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
64459 		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
64460 		ZEND_NULL_HANDLER,
64461 		ZEND_NULL_HANDLER,
64462 		ZEND_NULL_HANDLER,
64463 		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64464 		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
64465 		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
64466 		ZEND_NULL_HANDLER,
64467 		ZEND_NULL_HANDLER,
64468 		ZEND_NULL_HANDLER,
64469 		ZEND_NULL_HANDLER,
64470 		ZEND_NULL_HANDLER,
64471 		ZEND_NULL_HANDLER,
64472 		ZEND_NULL_HANDLER,
64473 		ZEND_NULL_HANDLER,
64474 		ZEND_NULL_HANDLER,
64475 		ZEND_NULL_HANDLER,
64476 		ZEND_NULL_HANDLER,
64477 		ZEND_NULL_HANDLER,
64478 		ZEND_NULL_HANDLER,
64479 		ZEND_NULL_HANDLER,
64480 		ZEND_NULL_HANDLER,
64481 		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_HANDLER,
64482 		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ_HANDLER,
64483 		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ_HANDLER,
64484 		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64485 		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
64486 		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
64487 		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64488 		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
64489 		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
64490 		ZEND_NULL_HANDLER,
64491 		ZEND_NULL_HANDLER,
64492 		ZEND_NULL_HANDLER,
64493 		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64494 		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
64495 		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
64496 		ZEND_NULL_HANDLER,
64497 		ZEND_NULL_HANDLER,
64498 		ZEND_NULL_HANDLER,
64499 		ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_HANDLER,
64500 		ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPZ_HANDLER,
64501 		ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPNZ_HANDLER,
64502 		ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_HANDLER,
64503 		ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPZ_HANDLER,
64504 		ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPNZ_HANDLER,
64505 		ZEND_NULL_HANDLER,
64506 		ZEND_NULL_HANDLER,
64507 		ZEND_NULL_HANDLER,
64508 		ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_HANDLER,
64509 		ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPZ_HANDLER,
64510 		ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPNZ_HANDLER,
64511 		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_HANDLER,
64512 		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPZ_HANDLER,
64513 		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPNZ_HANDLER,
64514 		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64515 		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
64516 		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
64517 		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64518 		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
64519 		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
64520 		ZEND_NULL_HANDLER,
64521 		ZEND_NULL_HANDLER,
64522 		ZEND_NULL_HANDLER,
64523 		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64524 		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
64525 		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
64526 		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_HANDLER,
64527 		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPZ_HANDLER,
64528 		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPNZ_HANDLER,
64529 		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64530 		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
64531 		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
64532 		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64533 		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
64534 		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
64535 		ZEND_NULL_HANDLER,
64536 		ZEND_NULL_HANDLER,
64537 		ZEND_NULL_HANDLER,
64538 		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64539 		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
64540 		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
64541 		ZEND_NULL_HANDLER,
64542 		ZEND_NULL_HANDLER,
64543 		ZEND_NULL_HANDLER,
64544 		ZEND_NULL_HANDLER,
64545 		ZEND_NULL_HANDLER,
64546 		ZEND_NULL_HANDLER,
64547 		ZEND_NULL_HANDLER,
64548 		ZEND_NULL_HANDLER,
64549 		ZEND_NULL_HANDLER,
64550 		ZEND_NULL_HANDLER,
64551 		ZEND_NULL_HANDLER,
64552 		ZEND_NULL_HANDLER,
64553 		ZEND_NULL_HANDLER,
64554 		ZEND_NULL_HANDLER,
64555 		ZEND_NULL_HANDLER,
64556 		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_HANDLER,
64557 		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPZ_HANDLER,
64558 		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPNZ_HANDLER,
64559 		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64560 		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
64561 		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
64562 		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64563 		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
64564 		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
64565 		ZEND_NULL_HANDLER,
64566 		ZEND_NULL_HANDLER,
64567 		ZEND_NULL_HANDLER,
64568 		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64569 		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
64570 		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
64571 		ZEND_NULL_HANDLER,
64572 		ZEND_NULL_HANDLER,
64573 		ZEND_NULL_HANDLER,
64574 		ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_HANDLER,
64575 		ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ_HANDLER,
64576 		ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ_HANDLER,
64577 		ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_HANDLER,
64578 		ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ_HANDLER,
64579 		ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ_HANDLER,
64580 		ZEND_NULL_HANDLER,
64581 		ZEND_NULL_HANDLER,
64582 		ZEND_NULL_HANDLER,
64583 		ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_HANDLER,
64584 		ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ_HANDLER,
64585 		ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ_HANDLER,
64586 		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_HANDLER,
64587 		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ_HANDLER,
64588 		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ_HANDLER,
64589 		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64590 		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
64591 		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
64592 		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64593 		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
64594 		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
64595 		ZEND_NULL_HANDLER,
64596 		ZEND_NULL_HANDLER,
64597 		ZEND_NULL_HANDLER,
64598 		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64599 		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
64600 		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
64601 		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_HANDLER,
64602 		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ_HANDLER,
64603 		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ_HANDLER,
64604 		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64605 		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
64606 		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
64607 		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64608 		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
64609 		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
64610 		ZEND_NULL_HANDLER,
64611 		ZEND_NULL_HANDLER,
64612 		ZEND_NULL_HANDLER,
64613 		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64614 		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
64615 		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
64616 		ZEND_NULL_HANDLER,
64617 		ZEND_NULL_HANDLER,
64618 		ZEND_NULL_HANDLER,
64619 		ZEND_NULL_HANDLER,
64620 		ZEND_NULL_HANDLER,
64621 		ZEND_NULL_HANDLER,
64622 		ZEND_NULL_HANDLER,
64623 		ZEND_NULL_HANDLER,
64624 		ZEND_NULL_HANDLER,
64625 		ZEND_NULL_HANDLER,
64626 		ZEND_NULL_HANDLER,
64627 		ZEND_NULL_HANDLER,
64628 		ZEND_NULL_HANDLER,
64629 		ZEND_NULL_HANDLER,
64630 		ZEND_NULL_HANDLER,
64631 		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_HANDLER,
64632 		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ_HANDLER,
64633 		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ_HANDLER,
64634 		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64635 		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
64636 		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
64637 		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64638 		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
64639 		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
64640 		ZEND_NULL_HANDLER,
64641 		ZEND_NULL_HANDLER,
64642 		ZEND_NULL_HANDLER,
64643 		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64644 		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
64645 		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
64646 		ZEND_NULL_HANDLER,
64647 		ZEND_NULL_HANDLER,
64648 		ZEND_NULL_HANDLER,
64649 		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_HANDLER,
64650 		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPZ_HANDLER,
64651 		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPNZ_HANDLER,
64652 		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_HANDLER,
64653 		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPZ_HANDLER,
64654 		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPNZ_HANDLER,
64655 		ZEND_NULL_HANDLER,
64656 		ZEND_NULL_HANDLER,
64657 		ZEND_NULL_HANDLER,
64658 		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_HANDLER,
64659 		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPZ_HANDLER,
64660 		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPNZ_HANDLER,
64661 		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_HANDLER,
64662 		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ_HANDLER,
64663 		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ_HANDLER,
64664 		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64665 		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
64666 		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
64667 		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64668 		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
64669 		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
64670 		ZEND_NULL_HANDLER,
64671 		ZEND_NULL_HANDLER,
64672 		ZEND_NULL_HANDLER,
64673 		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64674 		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
64675 		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
64676 		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_HANDLER,
64677 		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ_HANDLER,
64678 		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ_HANDLER,
64679 		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64680 		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
64681 		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
64682 		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64683 		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
64684 		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
64685 		ZEND_NULL_HANDLER,
64686 		ZEND_NULL_HANDLER,
64687 		ZEND_NULL_HANDLER,
64688 		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64689 		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
64690 		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
64691 		ZEND_NULL_HANDLER,
64692 		ZEND_NULL_HANDLER,
64693 		ZEND_NULL_HANDLER,
64694 		ZEND_NULL_HANDLER,
64695 		ZEND_NULL_HANDLER,
64696 		ZEND_NULL_HANDLER,
64697 		ZEND_NULL_HANDLER,
64698 		ZEND_NULL_HANDLER,
64699 		ZEND_NULL_HANDLER,
64700 		ZEND_NULL_HANDLER,
64701 		ZEND_NULL_HANDLER,
64702 		ZEND_NULL_HANDLER,
64703 		ZEND_NULL_HANDLER,
64704 		ZEND_NULL_HANDLER,
64705 		ZEND_NULL_HANDLER,
64706 		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_HANDLER,
64707 		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ_HANDLER,
64708 		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ_HANDLER,
64709 		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64710 		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
64711 		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
64712 		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64713 		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
64714 		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
64715 		ZEND_NULL_HANDLER,
64716 		ZEND_NULL_HANDLER,
64717 		ZEND_NULL_HANDLER,
64718 		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64719 		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
64720 		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
64721 		ZEND_NULL_HANDLER,
64722 		ZEND_NULL_HANDLER,
64723 		ZEND_NULL_HANDLER,
64724 		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_HANDLER,
64725 		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ_HANDLER,
64726 		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ_HANDLER,
64727 		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_HANDLER,
64728 		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ_HANDLER,
64729 		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ_HANDLER,
64730 		ZEND_NULL_HANDLER,
64731 		ZEND_NULL_HANDLER,
64732 		ZEND_NULL_HANDLER,
64733 		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_HANDLER,
64734 		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ_HANDLER,
64735 		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ_HANDLER,
64736 		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_HANDLER,
64737 		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ_HANDLER,
64738 		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ_HANDLER,
64739 		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64740 		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
64741 		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
64742 		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64743 		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
64744 		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
64745 		ZEND_NULL_HANDLER,
64746 		ZEND_NULL_HANDLER,
64747 		ZEND_NULL_HANDLER,
64748 		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64749 		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
64750 		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
64751 		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_HANDLER,
64752 		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ_HANDLER,
64753 		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ_HANDLER,
64754 		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64755 		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
64756 		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
64757 		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64758 		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
64759 		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
64760 		ZEND_NULL_HANDLER,
64761 		ZEND_NULL_HANDLER,
64762 		ZEND_NULL_HANDLER,
64763 		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64764 		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
64765 		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
64766 		ZEND_NULL_HANDLER,
64767 		ZEND_NULL_HANDLER,
64768 		ZEND_NULL_HANDLER,
64769 		ZEND_NULL_HANDLER,
64770 		ZEND_NULL_HANDLER,
64771 		ZEND_NULL_HANDLER,
64772 		ZEND_NULL_HANDLER,
64773 		ZEND_NULL_HANDLER,
64774 		ZEND_NULL_HANDLER,
64775 		ZEND_NULL_HANDLER,
64776 		ZEND_NULL_HANDLER,
64777 		ZEND_NULL_HANDLER,
64778 		ZEND_NULL_HANDLER,
64779 		ZEND_NULL_HANDLER,
64780 		ZEND_NULL_HANDLER,
64781 		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_HANDLER,
64782 		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ_HANDLER,
64783 		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ_HANDLER,
64784 		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64785 		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
64786 		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
64787 		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64788 		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
64789 		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
64790 		ZEND_NULL_HANDLER,
64791 		ZEND_NULL_HANDLER,
64792 		ZEND_NULL_HANDLER,
64793 		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
64794 		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
64795 		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
64796 		ZEND_PRE_INC_LONG_NO_OVERFLOW_SPEC_CV_RETVAL_UNUSED_HANDLER,
64797 		ZEND_PRE_INC_LONG_NO_OVERFLOW_SPEC_CV_RETVAL_USED_HANDLER,
64798 		ZEND_PRE_INC_LONG_SPEC_CV_RETVAL_UNUSED_HANDLER,
64799 		ZEND_PRE_INC_LONG_SPEC_CV_RETVAL_USED_HANDLER,
64800 		ZEND_PRE_INC_LONG_OR_DOUBLE_SPEC_CV_RETVAL_UNUSED_HANDLER,
64801 		ZEND_PRE_INC_LONG_OR_DOUBLE_SPEC_CV_RETVAL_USED_HANDLER,
64802 		ZEND_PRE_DEC_LONG_NO_OVERFLOW_SPEC_CV_RETVAL_UNUSED_HANDLER,
64803 		ZEND_PRE_DEC_LONG_NO_OVERFLOW_SPEC_CV_RETVAL_USED_HANDLER,
64804 		ZEND_PRE_DEC_LONG_SPEC_CV_RETVAL_UNUSED_HANDLER,
64805 		ZEND_PRE_DEC_LONG_SPEC_CV_RETVAL_USED_HANDLER,
64806 		ZEND_PRE_DEC_LONG_OR_DOUBLE_SPEC_CV_RETVAL_UNUSED_HANDLER,
64807 		ZEND_PRE_DEC_LONG_OR_DOUBLE_SPEC_CV_RETVAL_USED_HANDLER,
64808 		ZEND_POST_INC_LONG_NO_OVERFLOW_SPEC_CV_HANDLER,
64809 		ZEND_POST_INC_LONG_SPEC_CV_HANDLER,
64810 		ZEND_POST_INC_LONG_OR_DOUBLE_SPEC_CV_HANDLER,
64811 		ZEND_POST_DEC_LONG_NO_OVERFLOW_SPEC_CV_HANDLER,
64812 		ZEND_POST_DEC_LONG_SPEC_CV_HANDLER,
64813 		ZEND_POST_DEC_LONG_OR_DOUBLE_SPEC_CV_HANDLER,
64814 		ZEND_QM_ASSIGN_DOUBLE_SPEC_CONST_HANDLER,
64815 		ZEND_QM_ASSIGN_DOUBLE_SPEC_TMPVARCV_HANDLER,
64816 		ZEND_QM_ASSIGN_DOUBLE_SPEC_TMPVARCV_HANDLER,
64817 		ZEND_NULL_HANDLER,
64818 		ZEND_QM_ASSIGN_DOUBLE_SPEC_TMPVARCV_HANDLER,
64819 		ZEND_QM_ASSIGN_NOREF_SPEC_CONST_HANDLER,
64820 		ZEND_QM_ASSIGN_NOREF_SPEC_TMPVARCV_HANDLER,
64821 		ZEND_QM_ASSIGN_NOREF_SPEC_TMPVARCV_HANDLER,
64822 		ZEND_NULL_HANDLER,
64823 		ZEND_QM_ASSIGN_NOREF_SPEC_TMPVARCV_HANDLER,
64824 		ZEND_NULL_HANDLER,
64825 		ZEND_FETCH_DIM_R_INDEX_SPEC_CONST_TMPVARCV_HANDLER,
64826 		ZEND_FETCH_DIM_R_INDEX_SPEC_CONST_TMPVARCV_HANDLER,
64827 		ZEND_NULL_HANDLER,
64828 		ZEND_FETCH_DIM_R_INDEX_SPEC_CONST_TMPVARCV_HANDLER,
64829 		ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_CONST_HANDLER,
64830 		ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_TMPVARCV_HANDLER,
64831 		ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_TMPVARCV_HANDLER,
64832 		ZEND_NULL_HANDLER,
64833 		ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_TMPVARCV_HANDLER,
64834 		ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_CONST_HANDLER,
64835 		ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_TMPVARCV_HANDLER,
64836 		ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_TMPVARCV_HANDLER,
64837 		ZEND_NULL_HANDLER,
64838 		ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_TMPVARCV_HANDLER,
64839 		ZEND_NULL_HANDLER,
64840 		ZEND_NULL_HANDLER,
64841 		ZEND_NULL_HANDLER,
64842 		ZEND_NULL_HANDLER,
64843 		ZEND_NULL_HANDLER,
64844 		ZEND_FETCH_DIM_R_INDEX_SPEC_CV_CONST_HANDLER,
64845 		ZEND_FETCH_DIM_R_INDEX_SPEC_CV_TMPVARCV_HANDLER,
64846 		ZEND_FETCH_DIM_R_INDEX_SPEC_CV_TMPVARCV_HANDLER,
64847 		ZEND_NULL_HANDLER,
64848 		ZEND_FETCH_DIM_R_INDEX_SPEC_CV_TMPVARCV_HANDLER,
64849 		ZEND_NULL_HANDLER,
64850 		ZEND_NULL_HANDLER,
64851 		ZEND_SEND_VAR_SIMPLE_SPEC_VAR_HANDLER,
64852 		ZEND_NULL_HANDLER,
64853 		ZEND_SEND_VAR_SIMPLE_SPEC_CV_HANDLER,
64854 		ZEND_NULL_HANDLER,
64855 		ZEND_NULL_HANDLER,
64856 		ZEND_SEND_VAR_EX_SIMPLE_SPEC_VAR_HANDLER,
64857 		ZEND_NULL_HANDLER,
64858 		ZEND_SEND_VAR_EX_SIMPLE_SPEC_CV_HANDLER,
64859 		ZEND_SEND_VAL_SIMPLE_SPEC_CONST_HANDLER,
64860 		ZEND_SEND_VAL_EX_SIMPLE_SPEC_CONST_HANDLER,
64861 		ZEND_FE_FETCH_R_SIMPLE_SPEC_VAR_CV_RETVAL_UNUSED_HANDLER,
64862 		ZEND_FE_FETCH_R_SIMPLE_SPEC_VAR_CV_RETVAL_USED_HANDLER,
64863 		ZEND_NULL_HANDLER
64864 	};
64865 	static const uint32_t specs[] = {
64866 		0,
64867 		1 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
64868 		26 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
64869 		51 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE,
64870 		76 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
64871 		101 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
64872 		126 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
64873 		151 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
64874 		176 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
64875 		201 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE,
64876 		226 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE,
64877 		251 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE,
64878 		276 | SPEC_RULE_OP1,
64879 		281 | SPEC_RULE_OP1,
64880 		286 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE,
64881 		311 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE,
64882 		336 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE,
64883 		361 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE,
64884 		386 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE,
64885 		411 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
64886 		436 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
64887 		461 | SPEC_RULE_OP1,
64888 		466 | SPEC_RULE_OP1,
64889 		471 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_DIM_OBJ,
64890 		546 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_DIM_OBJ,
64891 		621 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_DIM_OBJ,
64892 		696 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_DIM_OBJ,
64893 		771 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_DIM_OBJ,
64894 		846 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_DIM_OBJ,
64895 		921 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_DIM_OBJ,
64896 		996 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_DIM_OBJ,
64897 		1071 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_DIM_OBJ,
64898 		1146 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_DIM_OBJ,
64899 		1221 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_DIM_OBJ,
64900 		1296 | SPEC_RULE_OP1 | SPEC_RULE_RETVAL,
64901 		1306 | SPEC_RULE_OP1 | SPEC_RULE_RETVAL,
64902 		1316 | SPEC_RULE_OP1,
64903 		1321 | SPEC_RULE_OP1,
64904 		1326 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_RETVAL,
64905 		1376 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
64906 		1401 | SPEC_RULE_OP1,
64907 		1406,
64908 		1407,
64909 		1408 | SPEC_RULE_OP1,
64910 		1413 | SPEC_RULE_OP1,
64911 		1418 | SPEC_RULE_OP1,
64912 		1423 | SPEC_RULE_OP1,
64913 		1428 | SPEC_RULE_OP1,
64914 		1433 | SPEC_RULE_OP2,
64915 		1438,
64916 		1439 | SPEC_RULE_QUICK_ARG,
64917 		1441 | SPEC_RULE_OP1,
64918 		1446 | SPEC_RULE_OP1,
64919 		1451 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
64920 		1476 | SPEC_RULE_OP2,
64921 		1481 | SPEC_RULE_OP2,
64922 		1486 | SPEC_RULE_OP2,
64923 		1491,
64924 		1492,
64925 		1493,
64926 		1494 | SPEC_RULE_RETVAL,
64927 		1496,
64928 		1497 | SPEC_RULE_OP1,
64929 		1502,
64930 		1503,
64931 		1504 | SPEC_RULE_OP1,
64932 		1509 | SPEC_RULE_OP1 | SPEC_RULE_QUICK_ARG,
64933 		1519 | SPEC_RULE_OP1,
64934 		1524 | SPEC_RULE_OP1,
64935 		1529,
64936 		1530,
64937 		1531 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
64938 		1556 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
64939 		1581 | SPEC_RULE_OP1,
64940 		1586 | SPEC_RULE_OP1,
64941 		1591 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
64942 		1616 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
64943 		1641 | SPEC_RULE_OP1,
64944 		1646,
64945 		1647 | SPEC_RULE_OP1,
64946 		1652 | SPEC_RULE_OP1,
64947 		1657 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
64948 		1682 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
64949 		1707 | SPEC_RULE_OP1,
64950 		1712 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
64951 		1737 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
64952 		1762 | SPEC_RULE_OP1,
64953 		1767 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
64954 		1792 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
64955 		1817 | SPEC_RULE_OP1,
64956 		1822 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
64957 		1847 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
64958 		1872 | SPEC_RULE_OP1,
64959 		1877 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
64960 		1902 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
64961 		1927 | SPEC_RULE_OP1,
64962 		1932 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
64963 		1957 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
64964 		1982 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
64965 		2007,
64966 		2008 | SPEC_RULE_QUICK_ARG,
64967 		2010,
64968 		2011,
64969 		2012,
64970 		2013,
64971 		2014,
64972 		2015,
64973 		2016,
64974 		2017 | SPEC_RULE_OP1,
64975 		2022 | SPEC_RULE_OP2,
64976 		2027 | SPEC_RULE_OP1,
64977 		2032 | SPEC_RULE_OP1,
64978 		2037 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
64979 		2062 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
64980 		2087 | SPEC_RULE_OP1,
64981 		2092 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
64982 		2117 | SPEC_RULE_OP1 | SPEC_RULE_QUICK_ARG,
64983 		2127 | SPEC_RULE_OP1,
64984 		2132 | SPEC_RULE_OP2,
64985 		2137,
64986 		2138 | SPEC_RULE_OP1,
64987 		2143 | SPEC_RULE_OP1,
64988 		2148,
64989 		2149 | SPEC_RULE_OP1,
64990 		2154 | SPEC_RULE_OP1,
64991 		2159 | SPEC_RULE_OP1,
64992 		2164,
64993 		2165,
64994 		2166 | SPEC_RULE_OP2,
64995 		2171 | SPEC_RULE_RETVAL,
64996 		2173 | SPEC_RULE_RETVAL,
64997 		2175 | SPEC_RULE_RETVAL,
64998 		2177 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
64999 		2202 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
65000 		2227 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
65001 		2252 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
65002 		2277 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_OP_DATA,
65003 		2402,
65004 		2403 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
65005 		2428,
65006 		2429,
65007 		2430,
65008 		2431 | SPEC_RULE_OP1,
65009 		2436,
65010 		2437,
65011 		2438,
65012 		2439,
65013 		2440 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_OP_DATA,
65014 		2565 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
65015 		2590,
65016 		2591,
65017 		2592,
65018 		2593 | SPEC_RULE_OP1,
65019 		2598,
65020 		2599,
65021 		2600,
65022 		2601,
65023 		2602,
65024 		2603,
65025 		2604,
65026 		2605 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
65027 		2630 | SPEC_RULE_OP1,
65028 		2635,
65029 		2636,
65030 		2637,
65031 		2638,
65032 		2639 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
65033 		2664 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_DIM_OBJ,
65034 		2739,
65035 		2740 | SPEC_RULE_OP1,
65036 		2745 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
65037 		2770,
65038 		2771,
65039 		2772 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
65040 		2797 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
65041 		2822 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
65042 		2847 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
65043 		2872 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
65044 		2897 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
65045 		2922 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
65046 		2947 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
65047 		2972 | SPEC_RULE_OP1,
65048 		2977,
65049 		2978,
65050 		2979,
65051 		2980,
65052 		2981,
65053 		2982 | SPEC_RULE_OP1,
65054 		2987 | SPEC_RULE_OP1,
65055 		2992 | SPEC_RULE_OP1,
65056 		2997 | SPEC_RULE_OP1,
65057 		3002 | SPEC_RULE_OP1,
65058 		3007,
65059 		3008 | SPEC_RULE_OP1,
65060 		3013,
65061 		3014 | SPEC_RULE_OP1,
65062 		3019,
65063 		3020 | SPEC_RULE_ISSET,
65064 		3022 | SPEC_RULE_OP2,
65065 		3920
65066 	};
65067 #if (ZEND_VM_KIND == ZEND_VM_KIND_HYBRID)
65068 	zend_opcode_handler_funcs = labels;
65069 	zend_spec_handlers = specs;
65070 	execute_ex(NULL);
65071 #else
65072 	zend_opcode_handlers = labels;
65073 	zend_handlers_count = sizeof(labels) / sizeof(void*);
65074 	zend_spec_handlers = specs;
65075 #endif
65076 	VM_TRACE_START();
65077 }
65078 
65079 void zend_vm_dtor(void)
65080 {
65081 	VM_TRACE_END();
65082 }
65083 
65084 static HashTable *zend_handlers_table = NULL;
65085 
65086 static void init_opcode_serialiser(void)
65087 {
65088 	int i;
65089 	zval tmp;
65090 
65091 	zend_handlers_table = malloc(sizeof(HashTable));
65092 	zend_hash_init_ex(zend_handlers_table, zend_handlers_count, NULL, NULL, 1, 0);
65093 	zend_hash_real_init(zend_handlers_table, 0);
65094 	Z_TYPE_INFO(tmp) = IS_LONG;
65095 	for (i = 0; i < zend_handlers_count; i++) {
65096 		Z_LVAL(tmp) = i;
65097 		zend_hash_index_add(zend_handlers_table, (zend_long)(zend_uintptr_t)zend_opcode_handlers[i], &tmp);
65098 	}
65099 }
65100 
65101 ZEND_API void ZEND_FASTCALL zend_serialize_opcode_handler(zend_op *op)
65102 {
65103 	zval *zv;
65104 
65105 	if (!zend_handlers_table) {
65106 		init_opcode_serialiser();
65107 	}
65108 	zv = zend_hash_index_find(zend_handlers_table, (zend_long)(zend_uintptr_t)op->handler);
65109 	ZEND_ASSERT(zv != NULL);
65110 	op->handler = (const void *)(zend_uintptr_t)Z_LVAL_P(zv);
65111 }
65112 
65113 ZEND_API void ZEND_FASTCALL zend_deserialize_opcode_handler(zend_op *op)
65114 {
65115 	op->handler = zend_opcode_handlers[(zend_uintptr_t)op->handler];
65116 }
65117 
65118 ZEND_API const void* ZEND_FASTCALL zend_get_opcode_handler_func(const zend_op *op)
65119 {
65120 #if ZEND_VM_KIND == ZEND_VM_KIND_CALL
65121 	return op->handler;
65122 #elif ZEND_VM_KIND == ZEND_VM_KIND_HYBRID
65123 	zval *zv;
65124 
65125 	if (!zend_handlers_table) {
65126 		init_opcode_serialiser();
65127 	}
65128 	zv = zend_hash_index_find(zend_handlers_table, (zend_long)(zend_uintptr_t)op->handler);
65129 	ZEND_ASSERT(zv != NULL);
65130 	return zend_opcode_handler_funcs[Z_LVAL_P(zv)];
65131 #else
65132 	return NULL;
65133 #endif
65134 }
65135 
65136 ZEND_API const zend_op *zend_get_halt_op(void)
65137 {
65138 #if ZEND_VM_KIND == ZEND_VM_KIND_HYBRID
65139 	return &hybrid_halt_op;
65140 #else
65141 	return NULL;
65142 #endif
65143 }
65144 
65145 ZEND_API int zend_vm_kind(void)
65146 {
65147 	return ZEND_VM_KIND;
65148 }
65149 
65150 static const void* ZEND_FASTCALL zend_vm_get_opcode_handler_ex(uint32_t spec, const zend_op* op)
65151 {
65152 	static const int zend_vm_decode[] = {
65153 		_UNUSED_CODE, /* 0 = IS_UNUSED  */
65154 		_CONST_CODE,  /* 1 = IS_CONST   */
65155 		_TMP_CODE,    /* 2 = IS_TMP_VAR */
65156 		_UNUSED_CODE, /* 3              */
65157 		_VAR_CODE,    /* 4 = IS_VAR     */
65158 		_UNUSED_CODE, /* 5              */
65159 		_UNUSED_CODE, /* 6              */
65160 		_UNUSED_CODE, /* 7              */
65161 		_CV_CODE      /* 8 = IS_CV      */
65162 	};
65163 	uint32_t offset = 0;
65164 	if (spec & SPEC_RULE_OP1) offset = offset * 5 + zend_vm_decode[op->op1_type];
65165 	if (spec & SPEC_RULE_OP2) offset = offset * 5 + zend_vm_decode[op->op2_type];
65166 	if (spec & SPEC_EXTRA_MASK) {
65167 		if (spec & SPEC_RULE_OP_DATA) offset = offset * 5 + zend_vm_decode[(op + 1)->op1_type];
65168 		else if (spec & SPEC_RULE_RETVAL) offset = offset * 2 + (op->result_type != IS_UNUSED);
65169 		else if (spec & SPEC_RULE_QUICK_ARG) offset = offset * 2 + (op->op2.num <= MAX_ARG_FLAG_NUM);
65170 		else if (spec & SPEC_RULE_SMART_BRANCH) {
65171 			offset = offset * 3;
65172 			if ((op+1)->opcode == ZEND_JMPZ) {
65173 				offset += 1;
65174 			} else if ((op+1)->opcode == ZEND_JMPNZ) {
65175 				offset += 2;
65176 			}
65177 		}
65178 		else if (spec & SPEC_RULE_DIM_OBJ) {
65179 			offset = offset * 3;
65180 			if (op->extended_value == ZEND_ASSIGN_DIM) {
65181 				offset += 1;
65182 			} else if (op->extended_value == ZEND_ASSIGN_OBJ) {
65183 				offset += 2;
65184 			}
65185 		}
65186 		else if (spec & SPEC_RULE_ISSET) offset = offset * 2 + (op->extended_value & ZEND_ISEMPTY);
65187 	}
65188 	return zend_opcode_handlers[(spec & SPEC_START_MASK) + offset];
65189 }
65190 
65191 #if (ZEND_VM_KIND != ZEND_VM_KIND_HYBRID) || !ZEND_VM_SPEC
65192 static const void *zend_vm_get_opcode_handler(zend_uchar opcode, const zend_op* op)
65193 {
65194 	return zend_vm_get_opcode_handler_ex(zend_spec_handlers[opcode], op);
65195 }
65196 #endif
65197 
65198 #if ZEND_VM_KIND == ZEND_VM_KIND_HYBRID
65199 static const void *zend_vm_get_opcode_handler_func(zend_uchar opcode, const zend_op* op)
65200 {
65201 	uint32_t spec = zend_spec_handlers[opcode];
65202 	static const int zend_vm_decode[] = {
65203 		_UNUSED_CODE, /* 0 = IS_UNUSED  */
65204 		_CONST_CODE,  /* 1 = IS_CONST   */
65205 		_TMP_CODE,    /* 2 = IS_TMP_VAR */
65206 		_UNUSED_CODE, /* 3              */
65207 		_VAR_CODE,    /* 4 = IS_VAR     */
65208 		_UNUSED_CODE, /* 5              */
65209 		_UNUSED_CODE, /* 6              */
65210 		_UNUSED_CODE, /* 7              */
65211 		_CV_CODE      /* 8 = IS_CV      */
65212 	};
65213 	uint32_t offset = 0;
65214 	if (spec & SPEC_RULE_OP1) offset = offset * 5 + zend_vm_decode[op->op1_type];
65215 	if (spec & SPEC_RULE_OP2) offset = offset * 5 + zend_vm_decode[op->op2_type];
65216 	if (spec & SPEC_EXTRA_MASK) {
65217 		if (spec & SPEC_RULE_OP_DATA) offset = offset * 5 + zend_vm_decode[(op + 1)->op1_type];
65218 		else if (spec & SPEC_RULE_RETVAL) offset = offset * 2 + (op->result_type != IS_UNUSED);
65219 		else if (spec & SPEC_RULE_QUICK_ARG) offset = offset * 2 + (op->op2.num <= MAX_ARG_FLAG_NUM);
65220 		else if (spec & SPEC_RULE_SMART_BRANCH) {
65221 			offset = offset * 3;
65222 			if ((op+1)->opcode == ZEND_JMPZ) {
65223 				offset += 1;
65224 			} else if ((op+1)->opcode == ZEND_JMPNZ) {
65225 				offset += 2;
65226 			}
65227 		}
65228 		else if (spec & SPEC_RULE_DIM_OBJ) {
65229 			offset = offset * 3;
65230 			if (op->extended_value == ZEND_ASSIGN_DIM) {
65231 				offset += 1;
65232 			} else if (op->extended_value == ZEND_ASSIGN_OBJ) {
65233 				offset += 2;
65234 			}
65235 		}
65236 		else if (spec & SPEC_RULE_ISSET) offset = offset * 2 + (op->extended_value & ZEND_ISEMPTY);
65237 	}
65238 	return zend_opcode_handler_funcs[(spec & SPEC_START_MASK) + offset];
65239 }
65240 
65241 #endif
65242 
65243 ZEND_API void ZEND_FASTCALL zend_vm_set_opcode_handler(zend_op* op)
65244 {
65245 	zend_uchar opcode = zend_user_opcodes[op->opcode];
65246 
65247 	if (zend_spec_handlers[op->opcode] & SPEC_RULE_COMMUTATIVE) {
65248 		if (op->op1_type < op->op2_type) {
65249 			zend_swap_operands(op);
65250 		}
65251 	}
65252 	op->handler = zend_vm_get_opcode_handler_ex(zend_spec_handlers[opcode], op);
65253 }
65254 
65255 ZEND_API void ZEND_FASTCALL zend_vm_set_opcode_handler_ex(zend_op* op, uint32_t op1_info, uint32_t op2_info, uint32_t res_info)
65256 {
65257 	zend_uchar opcode = zend_user_opcodes[op->opcode];
65258 	uint32_t spec = zend_spec_handlers[opcode];
65259 	switch (opcode) {
65260 		case ZEND_ADD:
65261 			if (res_info == MAY_BE_LONG && op1_info == MAY_BE_LONG && op2_info == MAY_BE_LONG) {
65262 				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
65263 					break;
65264 				}
65265 				spec = 3028 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE;
65266 				if (op->op1_type < op->op2_type) {
65267 					zend_swap_operands(op);
65268 				}
65269 			} else if (op1_info == MAY_BE_LONG && op2_info == MAY_BE_LONG) {
65270 				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
65271 					break;
65272 				}
65273 				spec = 3053 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE;
65274 				if (op->op1_type < op->op2_type) {
65275 					zend_swap_operands(op);
65276 				}
65277 			} else if (op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE) {
65278 				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
65279 					break;
65280 				}
65281 				spec = 3078 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE;
65282 				if (op->op1_type < op->op2_type) {
65283 					zend_swap_operands(op);
65284 				}
65285 			}
65286 			break;
65287 		case ZEND_SUB:
65288 			if (res_info == MAY_BE_LONG && op1_info == MAY_BE_LONG && op2_info == MAY_BE_LONG) {
65289 				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
65290 					break;
65291 				}
65292 				spec = 3103 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
65293 			} else if (op1_info == MAY_BE_LONG && op2_info == MAY_BE_LONG) {
65294 				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
65295 					break;
65296 				}
65297 				spec = 3128 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
65298 			} else if (op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE) {
65299 				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
65300 					break;
65301 				}
65302 				spec = 3153 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
65303 			}
65304 			break;
65305 		case ZEND_MUL:
65306 			if (op->op1_type < op->op2_type) {
65307 				zend_swap_operands(op);
65308 			}
65309 			if (res_info == MAY_BE_LONG && op1_info == MAY_BE_LONG && op2_info == MAY_BE_LONG) {
65310 				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
65311 					break;
65312 				}
65313 				spec = 3178 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE;
65314 			} else if (op1_info == MAY_BE_LONG && op2_info == MAY_BE_LONG) {
65315 				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
65316 					break;
65317 				}
65318 				spec = 3203 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE;
65319 			} else if (op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE) {
65320 				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
65321 					break;
65322 				}
65323 				spec = 3228 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE;
65324 			}
65325 			break;
65326 		case ZEND_IS_EQUAL:
65327 			if (op->op1_type < op->op2_type) {
65328 				zend_swap_operands(op);
65329 			}
65330 			if (op1_info == MAY_BE_LONG && op2_info == MAY_BE_LONG) {
65331 				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
65332 					break;
65333 				}
65334 				spec = 3253 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE;
65335 			} else if (op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE) {
65336 				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
65337 					break;
65338 				}
65339 				spec = 3328 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE;
65340 			}
65341 			break;
65342 		case ZEND_IS_NOT_EQUAL:
65343 			if (op->op1_type < op->op2_type) {
65344 				zend_swap_operands(op);
65345 			}
65346 			if (op1_info == MAY_BE_LONG && op2_info == MAY_BE_LONG) {
65347 				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
65348 					break;
65349 				}
65350 				spec = 3403 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE;
65351 			} else if (op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE) {
65352 				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
65353 					break;
65354 				}
65355 				spec = 3478 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE;
65356 			}
65357 			break;
65358 		case ZEND_IS_SMALLER:
65359 			if (op1_info == MAY_BE_LONG && op2_info == MAY_BE_LONG) {
65360 				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
65361 					break;
65362 				}
65363 				spec = 3553 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH;
65364 			} else if (op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE) {
65365 				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
65366 					break;
65367 				}
65368 				spec = 3628 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH;
65369 			}
65370 			break;
65371 		case ZEND_IS_SMALLER_OR_EQUAL:
65372 			if (op1_info == MAY_BE_LONG && op2_info == MAY_BE_LONG) {
65373 				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
65374 					break;
65375 				}
65376 				spec = 3703 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH;
65377 			} else if (op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE) {
65378 				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
65379 					break;
65380 				}
65381 				spec = 3778 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH;
65382 			}
65383 			break;
65384 		case ZEND_QM_ASSIGN:
65385 			if (op1_info == MAY_BE_DOUBLE) {
65386 				spec = 3871 | SPEC_RULE_OP1;
65387 			} else if ((op->op1_type == IS_CONST) ? !Z_REFCOUNTED_P(RT_CONSTANT(op, op->op1)) : (!(op1_info & ((MAY_BE_ANY|MAY_BE_UNDEF)-(MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE))))) {
65388 				spec = 3876 | SPEC_RULE_OP1;
65389 			}
65390 			break;
65391 		case ZEND_PRE_INC:
65392 			if (res_info == MAY_BE_LONG && op1_info == MAY_BE_LONG) {
65393 				spec = 3853 | SPEC_RULE_RETVAL;
65394 			} else if (op1_info == MAY_BE_LONG) {
65395 				spec = 3855 | SPEC_RULE_RETVAL;
65396 			} else if (op1_info == (MAY_BE_LONG|MAY_BE_DOUBLE)) {
65397 				spec = 3857 | SPEC_RULE_RETVAL;
65398 			}
65399 			break;
65400 		case ZEND_PRE_DEC:
65401 			if (res_info == MAY_BE_LONG && op1_info == MAY_BE_LONG) {
65402 				spec = 3859 | SPEC_RULE_RETVAL;
65403 			} else if (op1_info == MAY_BE_LONG) {
65404 				spec = 3861 | SPEC_RULE_RETVAL;
65405 			} else if (op1_info == (MAY_BE_LONG|MAY_BE_DOUBLE)) {
65406 				spec = 3863 | SPEC_RULE_RETVAL;
65407 			}
65408 			break;
65409 		case ZEND_POST_INC:
65410 			if (res_info == MAY_BE_LONG && op1_info == MAY_BE_LONG) {
65411 				spec = 3865;
65412 			} else if (op1_info == MAY_BE_LONG) {
65413 				spec = 3866;
65414 			} else if (op1_info == (MAY_BE_LONG|MAY_BE_DOUBLE)) {
65415 				spec = 3867;
65416 			}
65417 			break;
65418 		case ZEND_POST_DEC:
65419 			if (res_info == MAY_BE_LONG && op1_info == MAY_BE_LONG) {
65420 				spec = 3868;
65421 			} else if (op1_info == MAY_BE_LONG) {
65422 				spec = 3869;
65423 			} else if (op1_info == (MAY_BE_LONG|MAY_BE_DOUBLE)) {
65424 				spec = 3870;
65425 			}
65426 			break;
65427 		case ZEND_JMP:
65428 			if (OP_JMP_ADDR(op, op->op1) > op) {
65429 				spec = 3027;
65430 			}
65431 			break;
65432 		case ZEND_SEND_VAL:
65433 			if (op->op1_type == IS_CONST && !Z_REFCOUNTED_P(RT_CONSTANT(op, op->op1))) {
65434 				spec = 3916;
65435 			}
65436 			break;
65437 		case ZEND_SEND_VAR_EX:
65438 			if (op->op2.num <= MAX_ARG_FLAG_NUM && (op1_info & (MAY_BE_UNDEF|MAY_BE_REF)) == 0) {
65439 				spec = 3911 | SPEC_RULE_OP1;
65440 			}
65441 			break;
65442 		case ZEND_FE_FETCH_R:
65443 			if (op->op2_type == IS_CV && (op1_info & (MAY_BE_UNDEF|MAY_BE_ANY|MAY_BE_REF)) == MAY_BE_ARRAY) {
65444 				spec = 3918 | SPEC_RULE_RETVAL;
65445 			}
65446 			break;
65447 		case ZEND_FETCH_DIM_R:
65448 			if (!(op2_info & (MAY_BE_UNDEF|MAY_BE_NULL|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))) {
65449 				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
65450 					break;
65451 				}
65452 				spec = 3881 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
65453 			}
65454 			break;
65455 		case ZEND_SEND_VAL_EX:
65456 			if (op->op2.num <= MAX_ARG_FLAG_NUM && op->op1_type == IS_CONST && !Z_REFCOUNTED_P(RT_CONSTANT(op, op->op1))) {
65457 				spec = 3917;
65458 			}
65459 			break;
65460 		case ZEND_SEND_VAR:
65461 			if ((op1_info & (MAY_BE_UNDEF|MAY_BE_REF)) == 0) {
65462 				spec = 3906 | SPEC_RULE_OP1;
65463 			}
65464 			break;
65465 		case ZEND_BW_OR:
65466 		case ZEND_BW_AND:
65467 		case ZEND_BW_XOR:
65468 		case ZEND_BOOL_XOR:
65469 		case ZEND_IS_IDENTICAL:
65470 		case ZEND_IS_NOT_IDENTICAL:
65471 			if (op->op1_type < op->op2_type) {
65472 				zend_swap_operands(op);
65473 			}
65474 			break;
65475 		case ZEND_USER_OPCODE:
65476 			if (zend_spec_handlers[op->opcode] & SPEC_RULE_COMMUTATIVE) {
65477 				if (op->op1_type < op->op2_type) {
65478 					zend_swap_operands(op);
65479 				}
65480 			}
65481 			break;
65482 		default:
65483 			break;
65484 	}
65485 	op->handler = zend_vm_get_opcode_handler_ex(spec, op);
65486 }
65487 
65488 ZEND_API int ZEND_FASTCALL zend_vm_call_opcode_handler(zend_execute_data* ex)
65489 {
65490 #if (ZEND_VM_KIND == ZEND_VM_KIND_HYBRID)
65491 	opcode_handler_t handler;
65492 #endif
65493 	int ret;
65494 #ifdef ZEND_VM_IP_GLOBAL_REG
65495 	const zend_op *orig_opline = opline;
65496 #endif
65497 #ifdef ZEND_VM_FP_GLOBAL_REG
65498 	zend_execute_data *orig_execute_data = execute_data;
65499 	execute_data = ex;
65500 #else
65501 	zend_execute_data *execute_data = ex;
65502 #endif
65503 
65504 	LOAD_OPLINE();
65505 #if defined(ZEND_VM_FP_GLOBAL_REG) && defined(ZEND_VM_IP_GLOBAL_REG)
65506 #if (ZEND_VM_KIND == ZEND_VM_KIND_HYBRID)
65507 	handler = (opcode_handler_t)zend_vm_get_opcode_handler_func(zend_user_opcodes[opline->opcode], opline);
65508 	handler(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
65509 	if (EXPECTED(opline != &hybrid_halt_op)) {
65510 #else
65511 	((opcode_handler_t)OPLINE->handler)(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
65512 	if (EXPECTED(opline)) {
65513 #endif
65514 		ret = execute_data != ex ? (int)(execute_data->prev_execute_data != ex) + 1 : 0;
65515 		SAVE_OPLINE();
65516 	} else {
65517 		ret = -1;
65518 	}
65519 #else
65520 	ret = ((opcode_handler_t)OPLINE->handler)(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
65521 	SAVE_OPLINE();
65522 #endif
65523 #ifdef ZEND_VM_FP_GLOBAL_REG
65524 	execute_data = orig_execute_data;
65525 #endif
65526 #ifdef ZEND_VM_IP_GLOBAL_REG
65527 	opline = orig_opline;
65528 #endif
65529 	return ret;
65530 }
65531 
65532