]> granicus.if.org Git - php/commitdiff
Get rid of duplicate handlers (ZEND_ADD_SPEC_TMP_TMP and ZEND_ADD_SPEC_VAR_VAR are...
authorDmitry Stogov <dmitry@zend.com>
Wed, 3 Dec 2014 15:02:02 +0000 (18:02 +0300)
committerDmitry Stogov <dmitry@zend.com>
Wed, 3 Dec 2014 15:02:02 +0000 (18:02 +0300)
Zend/zend_vm_def.h
Zend/zend_vm_execute.h
Zend/zend_vm_gen.php

index 8b622c78e56eadf93cfadf33596aa15303fe2143..42b2acf69869105d4bd638f2ea8364d4711e9861 100644 (file)
@@ -25,7 +25,7 @@
  * php zend_vm_gen.php
  */
 
-ZEND_VM_HANDLER(1, ZEND_ADD, CONST|TMP|VAR|CV, CONST|TMP|VAR|CV)
+ZEND_VM_HANDLER(1, ZEND_ADD, CONST|TMPVAR|CV, CONST|TMPVAR|CV)
 {
        USE_OPLINE
        zend_free_op free_op1, free_op2;
@@ -40,7 +40,7 @@ ZEND_VM_HANDLER(1, ZEND_ADD, CONST|TMP|VAR|CV, CONST|TMP|VAR|CV)
        ZEND_VM_NEXT_OPCODE();
 }
 
-ZEND_VM_HANDLER(2, ZEND_SUB, CONST|TMP|VAR|CV, CONST|TMP|VAR|CV)
+ZEND_VM_HANDLER(2, ZEND_SUB, CONST|TMPVAR|CV, CONST|TMPVAR|CV)
 {
        USE_OPLINE
        zend_free_op free_op1, free_op2;
@@ -55,7 +55,7 @@ ZEND_VM_HANDLER(2, ZEND_SUB, CONST|TMP|VAR|CV, CONST|TMP|VAR|CV)
        ZEND_VM_NEXT_OPCODE();
 }
 
-ZEND_VM_HANDLER(3, ZEND_MUL, CONST|TMP|VAR|CV, CONST|TMP|VAR|CV)
+ZEND_VM_HANDLER(3, ZEND_MUL, CONST|TMPVAR|CV, CONST|TMPVAR|CV)
 {
        USE_OPLINE
        zend_free_op free_op1, free_op2;
@@ -70,7 +70,7 @@ ZEND_VM_HANDLER(3, ZEND_MUL, CONST|TMP|VAR|CV, CONST|TMP|VAR|CV)
        ZEND_VM_NEXT_OPCODE();
 }
 
-ZEND_VM_HANDLER(4, ZEND_DIV, CONST|TMP|VAR|CV, CONST|TMP|VAR|CV)
+ZEND_VM_HANDLER(4, ZEND_DIV, CONST|TMPVAR|CV, CONST|TMPVAR|CV)
 {
        USE_OPLINE
        zend_free_op free_op1, free_op2;
@@ -176,7 +176,7 @@ ZEND_VM_HANDLER(16, ZEND_IS_NOT_IDENTICAL, CONST|TMP|VAR|CV, CONST|TMP|VAR|CV)
        ZEND_VM_NEXT_OPCODE();
 }
 
-ZEND_VM_HANDLER(17, ZEND_IS_EQUAL, CONST|TMP|VAR|CV, CONST|TMP|VAR|CV)
+ZEND_VM_HANDLER(17, ZEND_IS_EQUAL, CONST|TMPVAR|CV, CONST|TMPVAR|CV)
 {
        USE_OPLINE
        zend_free_op free_op1, free_op2;
@@ -192,7 +192,7 @@ ZEND_VM_HANDLER(17, ZEND_IS_EQUAL, CONST|TMP|VAR|CV, CONST|TMP|VAR|CV)
        ZEND_VM_NEXT_OPCODE();
 }
 
-ZEND_VM_HANDLER(18, ZEND_IS_NOT_EQUAL, CONST|TMP|VAR|CV, CONST|TMP|VAR|CV)
+ZEND_VM_HANDLER(18, ZEND_IS_NOT_EQUAL, CONST|TMPVAR|CV, CONST|TMPVAR|CV)
 {
        USE_OPLINE
        zend_free_op free_op1, free_op2;
@@ -208,7 +208,7 @@ ZEND_VM_HANDLER(18, ZEND_IS_NOT_EQUAL, CONST|TMP|VAR|CV, CONST|TMP|VAR|CV)
        ZEND_VM_NEXT_OPCODE();
 }
 
-ZEND_VM_HANDLER(19, ZEND_IS_SMALLER, CONST|TMP|VAR|CV, CONST|TMP|VAR|CV)
+ZEND_VM_HANDLER(19, ZEND_IS_SMALLER, CONST|TMPVAR|CV, CONST|TMPVAR|CV)
 {
        USE_OPLINE
        zend_free_op free_op1, free_op2;
@@ -224,7 +224,7 @@ ZEND_VM_HANDLER(19, ZEND_IS_SMALLER, CONST|TMP|VAR|CV, CONST|TMP|VAR|CV)
        ZEND_VM_NEXT_OPCODE();
 }
 
-ZEND_VM_HANDLER(20, ZEND_IS_SMALLER_OR_EQUAL, CONST|TMP|VAR|CV, CONST|TMP|VAR|CV)
+ZEND_VM_HANDLER(20, ZEND_IS_SMALLER_OR_EQUAL, CONST|TMPVAR|CV, CONST|TMPVAR|CV)
 {
        USE_OPLINE
        zend_free_op free_op1, free_op2;
@@ -1994,7 +1994,7 @@ ZEND_VM_HANDLER(47, ZEND_JMPNZ_EX, CONST|TMP|VAR|CV, ANY)
        ZEND_VM_JMP(opline);
 }
 
-ZEND_VM_HANDLER(70, ZEND_FREE, TMP|VAR, ANY)
+ZEND_VM_HANDLER(70, ZEND_FREE, TMPVAR, ANY)
 {
        USE_OPLINE
 
index cbf1d4b0bdf4dfe878e580e73c8b99d01e73e748..a6b694be9892219e3a4804a49df3d8000501e8d0 100644 (file)
@@ -5012,66 +5012,6 @@ static int ZEND_FASTCALL  ZEND_POW_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_
        ZEND_VM_NEXT_OPCODE();
 }
 
-static int ZEND_FASTCALL  ZEND_ADD_SPEC_CONST_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op2;
-
-       SAVE_OPLINE();
-       fast_add_function(EX_VAR(opline->result.var),
-               opline->op1.zv,
-               _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2) TSRMLS_CC);
-
-       zval_ptr_dtor_nogc(free_op2);
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
-static int ZEND_FASTCALL  ZEND_SUB_SPEC_CONST_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op2;
-
-       SAVE_OPLINE();
-       fast_sub_function(EX_VAR(opline->result.var),
-               opline->op1.zv,
-               _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2) TSRMLS_CC);
-
-       zval_ptr_dtor_nogc(free_op2);
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
-static int ZEND_FASTCALL  ZEND_MUL_SPEC_CONST_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op2;
-
-       SAVE_OPLINE();
-       fast_mul_function(EX_VAR(opline->result.var),
-               opline->op1.zv,
-               _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2) TSRMLS_CC);
-
-       zval_ptr_dtor_nogc(free_op2);
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
-static int ZEND_FASTCALL  ZEND_DIV_SPEC_CONST_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op2;
-
-       SAVE_OPLINE();
-       fast_div_function(EX_VAR(opline->result.var),
-               opline->op1.zv,
-               _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2) TSRMLS_CC);
-
-       zval_ptr_dtor_nogc(free_op2);
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
 static int ZEND_FASTCALL  ZEND_MOD_SPEC_CONST_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
 {
        USE_OPLINE
@@ -5163,70 +5103,6 @@ static int ZEND_FASTCALL  ZEND_IS_NOT_IDENTICAL_SPEC_CONST_TMP_HANDLER(ZEND_OPCO
        ZEND_VM_NEXT_OPCODE();
 }
 
-static int ZEND_FASTCALL  ZEND_IS_EQUAL_SPEC_CONST_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op2;
-       zval *result = EX_VAR(opline->result.var);
-
-       SAVE_OPLINE();
-       fast_equal_function(result,
-               opline->op1.zv,
-               _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2) TSRMLS_CC);
-
-       zval_ptr_dtor_nogc(free_op2);
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
-static int ZEND_FASTCALL  ZEND_IS_NOT_EQUAL_SPEC_CONST_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op2;
-       zval *result = EX_VAR(opline->result.var);
-
-       SAVE_OPLINE();
-       fast_not_equal_function(result,
-               opline->op1.zv,
-               _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2) TSRMLS_CC);
-
-       zval_ptr_dtor_nogc(free_op2);
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
-static int ZEND_FASTCALL  ZEND_IS_SMALLER_SPEC_CONST_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op2;
-       zval *result = EX_VAR(opline->result.var);
-
-       SAVE_OPLINE();
-       fast_is_smaller_function(result,
-               opline->op1.zv,
-               _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2) TSRMLS_CC);
-
-       zval_ptr_dtor_nogc(free_op2);
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
-static int ZEND_FASTCALL  ZEND_IS_SMALLER_OR_EQUAL_SPEC_CONST_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op2;
-       zval *result = EX_VAR(opline->result.var);
-
-       SAVE_OPLINE();
-       fast_is_smaller_or_equal_function(result,
-               opline->op1.zv,
-               _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2) TSRMLS_CC);
-
-       zval_ptr_dtor_nogc(free_op2);
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
 static int ZEND_FASTCALL  ZEND_BW_OR_SPEC_CONST_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
 {
        USE_OPLINE
@@ -6101,66 +5977,6 @@ static int ZEND_FASTCALL  ZEND_POW_SPEC_CONST_TMP_HANDLER(ZEND_OPCODE_HANDLER_AR
        ZEND_VM_NEXT_OPCODE();
 }
 
-static int ZEND_FASTCALL  ZEND_ADD_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op2;
-
-       SAVE_OPLINE();
-       fast_add_function(EX_VAR(opline->result.var),
-               opline->op1.zv,
-               _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2) TSRMLS_CC);
-
-       zval_ptr_dtor_nogc(free_op2);
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
-static int ZEND_FASTCALL  ZEND_SUB_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op2;
-
-       SAVE_OPLINE();
-       fast_sub_function(EX_VAR(opline->result.var),
-               opline->op1.zv,
-               _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2) TSRMLS_CC);
-
-       zval_ptr_dtor_nogc(free_op2);
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
-static int ZEND_FASTCALL  ZEND_MUL_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op2;
-
-       SAVE_OPLINE();
-       fast_mul_function(EX_VAR(opline->result.var),
-               opline->op1.zv,
-               _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2) TSRMLS_CC);
-
-       zval_ptr_dtor_nogc(free_op2);
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
-static int ZEND_FASTCALL  ZEND_DIV_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op2;
-
-       SAVE_OPLINE();
-       fast_div_function(EX_VAR(opline->result.var),
-               opline->op1.zv,
-               _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2) TSRMLS_CC);
-
-       zval_ptr_dtor_nogc(free_op2);
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
 static int ZEND_FASTCALL  ZEND_MOD_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
 {
        USE_OPLINE
@@ -6252,70 +6068,6 @@ static int ZEND_FASTCALL  ZEND_IS_NOT_IDENTICAL_SPEC_CONST_VAR_HANDLER(ZEND_OPCO
        ZEND_VM_NEXT_OPCODE();
 }
 
-static int ZEND_FASTCALL  ZEND_IS_EQUAL_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op2;
-       zval *result = EX_VAR(opline->result.var);
-
-       SAVE_OPLINE();
-       fast_equal_function(result,
-               opline->op1.zv,
-               _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2) TSRMLS_CC);
-
-       zval_ptr_dtor_nogc(free_op2);
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
-static int ZEND_FASTCALL  ZEND_IS_NOT_EQUAL_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op2;
-       zval *result = EX_VAR(opline->result.var);
-
-       SAVE_OPLINE();
-       fast_not_equal_function(result,
-               opline->op1.zv,
-               _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2) TSRMLS_CC);
-
-       zval_ptr_dtor_nogc(free_op2);
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
-static int ZEND_FASTCALL  ZEND_IS_SMALLER_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op2;
-       zval *result = EX_VAR(opline->result.var);
-
-       SAVE_OPLINE();
-       fast_is_smaller_function(result,
-               opline->op1.zv,
-               _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2) TSRMLS_CC);
-
-       zval_ptr_dtor_nogc(free_op2);
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
-static int ZEND_FASTCALL  ZEND_IS_SMALLER_OR_EQUAL_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op2;
-       zval *result = EX_VAR(opline->result.var);
-
-       SAVE_OPLINE();
-       fast_is_smaller_or_equal_function(result,
-               opline->op1.zv,
-               _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2) TSRMLS_CC);
-
-       zval_ptr_dtor_nogc(free_op2);
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
 static int ZEND_FASTCALL  ZEND_BW_OR_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
 {
        USE_OPLINE
@@ -9347,6 +9099,130 @@ static int ZEND_FASTCALL  ZEND_POW_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARG
        ZEND_VM_NEXT_OPCODE();
 }
 
+static int ZEND_FASTCALL  ZEND_ADD_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+       USE_OPLINE
+       zend_free_op free_op2;
+
+       SAVE_OPLINE();
+       fast_add_function(EX_VAR(opline->result.var),
+               opline->op1.zv,
+               _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2 TSRMLS_CC) TSRMLS_CC);
+
+       zval_ptr_dtor_nogc(free_op2);
+       CHECK_EXCEPTION();
+       ZEND_VM_NEXT_OPCODE();
+}
+
+static int ZEND_FASTCALL  ZEND_SUB_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+       USE_OPLINE
+       zend_free_op free_op2;
+
+       SAVE_OPLINE();
+       fast_sub_function(EX_VAR(opline->result.var),
+               opline->op1.zv,
+               _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2 TSRMLS_CC) TSRMLS_CC);
+
+       zval_ptr_dtor_nogc(free_op2);
+       CHECK_EXCEPTION();
+       ZEND_VM_NEXT_OPCODE();
+}
+
+static int ZEND_FASTCALL  ZEND_MUL_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+       USE_OPLINE
+       zend_free_op free_op2;
+
+       SAVE_OPLINE();
+       fast_mul_function(EX_VAR(opline->result.var),
+               opline->op1.zv,
+               _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2 TSRMLS_CC) TSRMLS_CC);
+
+       zval_ptr_dtor_nogc(free_op2);
+       CHECK_EXCEPTION();
+       ZEND_VM_NEXT_OPCODE();
+}
+
+static int ZEND_FASTCALL  ZEND_DIV_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+       USE_OPLINE
+       zend_free_op free_op2;
+
+       SAVE_OPLINE();
+       fast_div_function(EX_VAR(opline->result.var),
+               opline->op1.zv,
+               _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2 TSRMLS_CC) TSRMLS_CC);
+
+       zval_ptr_dtor_nogc(free_op2);
+       CHECK_EXCEPTION();
+       ZEND_VM_NEXT_OPCODE();
+}
+
+static int ZEND_FASTCALL  ZEND_IS_EQUAL_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+       USE_OPLINE
+       zend_free_op free_op2;
+       zval *result = EX_VAR(opline->result.var);
+
+       SAVE_OPLINE();
+       fast_equal_function(result,
+               opline->op1.zv,
+               _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2 TSRMLS_CC) TSRMLS_CC);
+
+       zval_ptr_dtor_nogc(free_op2);
+       CHECK_EXCEPTION();
+       ZEND_VM_NEXT_OPCODE();
+}
+
+static int ZEND_FASTCALL  ZEND_IS_NOT_EQUAL_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+       USE_OPLINE
+       zend_free_op free_op2;
+       zval *result = EX_VAR(opline->result.var);
+
+       SAVE_OPLINE();
+       fast_not_equal_function(result,
+               opline->op1.zv,
+               _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2 TSRMLS_CC) TSRMLS_CC);
+
+       zval_ptr_dtor_nogc(free_op2);
+       CHECK_EXCEPTION();
+       ZEND_VM_NEXT_OPCODE();
+}
+
+static int ZEND_FASTCALL  ZEND_IS_SMALLER_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+       USE_OPLINE
+       zend_free_op free_op2;
+       zval *result = EX_VAR(opline->result.var);
+
+       SAVE_OPLINE();
+       fast_is_smaller_function(result,
+               opline->op1.zv,
+               _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2 TSRMLS_CC) TSRMLS_CC);
+
+       zval_ptr_dtor_nogc(free_op2);
+       CHECK_EXCEPTION();
+       ZEND_VM_NEXT_OPCODE();
+}
+
+static int ZEND_FASTCALL  ZEND_IS_SMALLER_OR_EQUAL_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+       USE_OPLINE
+       zend_free_op free_op2;
+       zval *result = EX_VAR(opline->result.var);
+
+       SAVE_OPLINE();
+       fast_is_smaller_or_equal_function(result,
+               opline->op1.zv,
+               _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2 TSRMLS_CC) TSRMLS_CC);
+
+       zval_ptr_dtor_nogc(free_op2);
+       CHECK_EXCEPTION();
+       ZEND_VM_NEXT_OPCODE();
+}
+
 static int ZEND_FASTCALL  ZEND_BW_NOT_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
 {
        USE_OPLINE
@@ -9560,16 +9436,6 @@ static int ZEND_FASTCALL  ZEND_JMPNZ_EX_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARG
        ZEND_VM_JMP(opline);
 }
 
-static int ZEND_FASTCALL  ZEND_FREE_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-
-       SAVE_OPLINE();
-       zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
 static int ZEND_FASTCALL  ZEND_RETURN_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
 {
        USE_OPLINE
@@ -10433,66 +10299,6 @@ static int ZEND_FASTCALL  ZEND_TYPE_CHECK_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_A
        ZEND_VM_NEXT_OPCODE();
 }
 
-static int ZEND_FASTCALL  ZEND_ADD_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op1;
-
-       SAVE_OPLINE();
-       fast_add_function(EX_VAR(opline->result.var),
-               _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1),
-               opline->op2.zv TSRMLS_CC);
-       zval_ptr_dtor_nogc(free_op1);
-
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
-static int ZEND_FASTCALL  ZEND_SUB_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op1;
-
-       SAVE_OPLINE();
-       fast_sub_function(EX_VAR(opline->result.var),
-               _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1),
-               opline->op2.zv TSRMLS_CC);
-       zval_ptr_dtor_nogc(free_op1);
-
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
-static int ZEND_FASTCALL  ZEND_MUL_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op1;
-
-       SAVE_OPLINE();
-       fast_mul_function(EX_VAR(opline->result.var),
-               _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1),
-               opline->op2.zv TSRMLS_CC);
-       zval_ptr_dtor_nogc(free_op1);
-
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
-static int ZEND_FASTCALL  ZEND_DIV_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op1;
-
-       SAVE_OPLINE();
-       fast_div_function(EX_VAR(opline->result.var),
-               _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1),
-               opline->op2.zv TSRMLS_CC);
-       zval_ptr_dtor_nogc(free_op1);
-
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
 static int ZEND_FASTCALL  ZEND_MOD_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
 {
        USE_OPLINE
@@ -10584,70 +10390,6 @@ static int ZEND_FASTCALL  ZEND_IS_NOT_IDENTICAL_SPEC_TMP_CONST_HANDLER(ZEND_OPCO
        ZEND_VM_NEXT_OPCODE();
 }
 
-static int ZEND_FASTCALL  ZEND_IS_EQUAL_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op1;
-       zval *result = EX_VAR(opline->result.var);
-
-       SAVE_OPLINE();
-       fast_equal_function(result,
-               _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1),
-               opline->op2.zv TSRMLS_CC);
-       zval_ptr_dtor_nogc(free_op1);
-
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
-static int ZEND_FASTCALL  ZEND_IS_NOT_EQUAL_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op1;
-       zval *result = EX_VAR(opline->result.var);
-
-       SAVE_OPLINE();
-       fast_not_equal_function(result,
-               _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1),
-               opline->op2.zv TSRMLS_CC);
-       zval_ptr_dtor_nogc(free_op1);
-
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
-static int ZEND_FASTCALL  ZEND_IS_SMALLER_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op1;
-       zval *result = EX_VAR(opline->result.var);
-
-       SAVE_OPLINE();
-       fast_is_smaller_function(result,
-               _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1),
-               opline->op2.zv TSRMLS_CC);
-       zval_ptr_dtor_nogc(free_op1);
-
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
-static int ZEND_FASTCALL  ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op1;
-       zval *result = EX_VAR(opline->result.var);
-
-       SAVE_OPLINE();
-       fast_is_smaller_or_equal_function(result,
-               _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1),
-               opline->op2.zv TSRMLS_CC);
-       zval_ptr_dtor_nogc(free_op1);
-
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
 static int ZEND_FASTCALL  ZEND_BW_OR_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
 {
        USE_OPLINE
@@ -11850,66 +11592,6 @@ static int ZEND_FASTCALL  ZEND_POW_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_AR
        ZEND_VM_NEXT_OPCODE();
 }
 
-static int ZEND_FASTCALL  ZEND_ADD_SPEC_TMP_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op1, free_op2;
-
-       SAVE_OPLINE();
-       fast_add_function(EX_VAR(opline->result.var),
-               _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1),
-               _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2) TSRMLS_CC);
-       zval_ptr_dtor_nogc(free_op1);
-       zval_ptr_dtor_nogc(free_op2);
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
-static int ZEND_FASTCALL  ZEND_SUB_SPEC_TMP_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op1, free_op2;
-
-       SAVE_OPLINE();
-       fast_sub_function(EX_VAR(opline->result.var),
-               _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1),
-               _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2) TSRMLS_CC);
-       zval_ptr_dtor_nogc(free_op1);
-       zval_ptr_dtor_nogc(free_op2);
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
-static int ZEND_FASTCALL  ZEND_MUL_SPEC_TMP_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op1, free_op2;
-
-       SAVE_OPLINE();
-       fast_mul_function(EX_VAR(opline->result.var),
-               _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1),
-               _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2) TSRMLS_CC);
-       zval_ptr_dtor_nogc(free_op1);
-       zval_ptr_dtor_nogc(free_op2);
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
-static int ZEND_FASTCALL  ZEND_DIV_SPEC_TMP_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op1, free_op2;
-
-       SAVE_OPLINE();
-       fast_div_function(EX_VAR(opline->result.var),
-               _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1),
-               _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2) TSRMLS_CC);
-       zval_ptr_dtor_nogc(free_op1);
-       zval_ptr_dtor_nogc(free_op2);
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
 static int ZEND_FASTCALL  ZEND_MOD_SPEC_TMP_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
 {
        USE_OPLINE
@@ -12001,70 +11683,6 @@ static int ZEND_FASTCALL  ZEND_IS_NOT_IDENTICAL_SPEC_TMP_TMP_HANDLER(ZEND_OPCODE
        ZEND_VM_NEXT_OPCODE();
 }
 
-static int ZEND_FASTCALL  ZEND_IS_EQUAL_SPEC_TMP_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op1, free_op2;
-       zval *result = EX_VAR(opline->result.var);
-
-       SAVE_OPLINE();
-       fast_equal_function(result,
-               _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1),
-               _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2) TSRMLS_CC);
-       zval_ptr_dtor_nogc(free_op1);
-       zval_ptr_dtor_nogc(free_op2);
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
-static int ZEND_FASTCALL  ZEND_IS_NOT_EQUAL_SPEC_TMP_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op1, free_op2;
-       zval *result = EX_VAR(opline->result.var);
-
-       SAVE_OPLINE();
-       fast_not_equal_function(result,
-               _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1),
-               _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2) TSRMLS_CC);
-       zval_ptr_dtor_nogc(free_op1);
-       zval_ptr_dtor_nogc(free_op2);
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
-static int ZEND_FASTCALL  ZEND_IS_SMALLER_SPEC_TMP_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op1, free_op2;
-       zval *result = EX_VAR(opline->result.var);
-
-       SAVE_OPLINE();
-       fast_is_smaller_function(result,
-               _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1),
-               _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2) TSRMLS_CC);
-       zval_ptr_dtor_nogc(free_op1);
-       zval_ptr_dtor_nogc(free_op2);
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
-static int ZEND_FASTCALL  ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMP_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op1, free_op2;
-       zval *result = EX_VAR(opline->result.var);
-
-       SAVE_OPLINE();
-       fast_is_smaller_or_equal_function(result,
-               _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1),
-               _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2) TSRMLS_CC);
-       zval_ptr_dtor_nogc(free_op1);
-       zval_ptr_dtor_nogc(free_op2);
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
 static int ZEND_FASTCALL  ZEND_BW_OR_SPEC_TMP_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
 {
        USE_OPLINE
@@ -12914,66 +12532,6 @@ static int ZEND_FASTCALL  ZEND_POW_SPEC_TMP_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS
        ZEND_VM_NEXT_OPCODE();
 }
 
-static int ZEND_FASTCALL  ZEND_ADD_SPEC_TMP_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op1, free_op2;
-
-       SAVE_OPLINE();
-       fast_add_function(EX_VAR(opline->result.var),
-               _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1),
-               _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2) TSRMLS_CC);
-       zval_ptr_dtor_nogc(free_op1);
-       zval_ptr_dtor_nogc(free_op2);
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
-static int ZEND_FASTCALL  ZEND_SUB_SPEC_TMP_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op1, free_op2;
-
-       SAVE_OPLINE();
-       fast_sub_function(EX_VAR(opline->result.var),
-               _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1),
-               _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2) TSRMLS_CC);
-       zval_ptr_dtor_nogc(free_op1);
-       zval_ptr_dtor_nogc(free_op2);
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
-static int ZEND_FASTCALL  ZEND_MUL_SPEC_TMP_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op1, free_op2;
-
-       SAVE_OPLINE();
-       fast_mul_function(EX_VAR(opline->result.var),
-               _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1),
-               _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2) TSRMLS_CC);
-       zval_ptr_dtor_nogc(free_op1);
-       zval_ptr_dtor_nogc(free_op2);
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
-static int ZEND_FASTCALL  ZEND_DIV_SPEC_TMP_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op1, free_op2;
-
-       SAVE_OPLINE();
-       fast_div_function(EX_VAR(opline->result.var),
-               _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1),
-               _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2) TSRMLS_CC);
-       zval_ptr_dtor_nogc(free_op1);
-       zval_ptr_dtor_nogc(free_op2);
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
 static int ZEND_FASTCALL  ZEND_MOD_SPEC_TMP_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
 {
        USE_OPLINE
@@ -13065,70 +12623,6 @@ static int ZEND_FASTCALL  ZEND_IS_NOT_IDENTICAL_SPEC_TMP_VAR_HANDLER(ZEND_OPCODE
        ZEND_VM_NEXT_OPCODE();
 }
 
-static int ZEND_FASTCALL  ZEND_IS_EQUAL_SPEC_TMP_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op1, free_op2;
-       zval *result = EX_VAR(opline->result.var);
-
-       SAVE_OPLINE();
-       fast_equal_function(result,
-               _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1),
-               _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2) TSRMLS_CC);
-       zval_ptr_dtor_nogc(free_op1);
-       zval_ptr_dtor_nogc(free_op2);
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
-static int ZEND_FASTCALL  ZEND_IS_NOT_EQUAL_SPEC_TMP_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op1, free_op2;
-       zval *result = EX_VAR(opline->result.var);
-
-       SAVE_OPLINE();
-       fast_not_equal_function(result,
-               _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1),
-               _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2) TSRMLS_CC);
-       zval_ptr_dtor_nogc(free_op1);
-       zval_ptr_dtor_nogc(free_op2);
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
-static int ZEND_FASTCALL  ZEND_IS_SMALLER_SPEC_TMP_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op1, free_op2;
-       zval *result = EX_VAR(opline->result.var);
-
-       SAVE_OPLINE();
-       fast_is_smaller_function(result,
-               _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1),
-               _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2) TSRMLS_CC);
-       zval_ptr_dtor_nogc(free_op1);
-       zval_ptr_dtor_nogc(free_op2);
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
-static int ZEND_FASTCALL  ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMP_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op1, free_op2;
-       zval *result = EX_VAR(opline->result.var);
-
-       SAVE_OPLINE();
-       fast_is_smaller_or_equal_function(result,
-               _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1),
-               _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2) TSRMLS_CC);
-       zval_ptr_dtor_nogc(free_op1);
-       zval_ptr_dtor_nogc(free_op2);
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
 static int ZEND_FASTCALL  ZEND_BW_OR_SPEC_TMP_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
 {
        USE_OPLINE
@@ -14893,66 +14387,6 @@ static int ZEND_FASTCALL  ZEND_YIELD_SPEC_TMP_UNUSED_HANDLER(ZEND_OPCODE_HANDLER
        ZEND_VM_RETURN();
 }
 
-static int ZEND_FASTCALL  ZEND_ADD_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op1;
-
-       SAVE_OPLINE();
-       fast_add_function(EX_VAR(opline->result.var),
-               _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1),
-               _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC) TSRMLS_CC);
-       zval_ptr_dtor_nogc(free_op1);
-
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
-static int ZEND_FASTCALL  ZEND_SUB_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op1;
-
-       SAVE_OPLINE();
-       fast_sub_function(EX_VAR(opline->result.var),
-               _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1),
-               _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC) TSRMLS_CC);
-       zval_ptr_dtor_nogc(free_op1);
-
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
-static int ZEND_FASTCALL  ZEND_MUL_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op1;
-
-       SAVE_OPLINE();
-       fast_mul_function(EX_VAR(opline->result.var),
-               _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1),
-               _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC) TSRMLS_CC);
-       zval_ptr_dtor_nogc(free_op1);
-
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
-static int ZEND_FASTCALL  ZEND_DIV_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op1;
-
-       SAVE_OPLINE();
-       fast_div_function(EX_VAR(opline->result.var),
-               _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1),
-               _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC) TSRMLS_CC);
-       zval_ptr_dtor_nogc(free_op1);
-
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
 static int ZEND_FASTCALL  ZEND_MOD_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
 {
        USE_OPLINE
@@ -15044,70 +14478,6 @@ static int ZEND_FASTCALL  ZEND_IS_NOT_IDENTICAL_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_
        ZEND_VM_NEXT_OPCODE();
 }
 
-static int ZEND_FASTCALL  ZEND_IS_EQUAL_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op1;
-       zval *result = EX_VAR(opline->result.var);
-
-       SAVE_OPLINE();
-       fast_equal_function(result,
-               _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1),
-               _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC) TSRMLS_CC);
-       zval_ptr_dtor_nogc(free_op1);
-
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
-static int ZEND_FASTCALL  ZEND_IS_NOT_EQUAL_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op1;
-       zval *result = EX_VAR(opline->result.var);
-
-       SAVE_OPLINE();
-       fast_not_equal_function(result,
-               _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1),
-               _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC) TSRMLS_CC);
-       zval_ptr_dtor_nogc(free_op1);
-
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
-static int ZEND_FASTCALL  ZEND_IS_SMALLER_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op1;
-       zval *result = EX_VAR(opline->result.var);
-
-       SAVE_OPLINE();
-       fast_is_smaller_function(result,
-               _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1),
-               _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC) TSRMLS_CC);
-       zval_ptr_dtor_nogc(free_op1);
-
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
-static int ZEND_FASTCALL  ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op1;
-       zval *result = EX_VAR(opline->result.var);
-
-       SAVE_OPLINE();
-       fast_is_smaller_or_equal_function(result,
-               _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1),
-               _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC) TSRMLS_CC);
-       zval_ptr_dtor_nogc(free_op1);
-
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
 static int ZEND_FASTCALL  ZEND_BW_OR_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
 {
        USE_OPLINE
@@ -16321,16 +15691,6 @@ static int ZEND_FASTCALL  ZEND_JMPNZ_EX_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARG
        ZEND_VM_JMP(opline);
 }
 
-static int ZEND_FASTCALL  ZEND_FREE_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-
-       SAVE_OPLINE();
-       zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
 static int ZEND_FASTCALL  ZEND_RETURN_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
 {
        USE_OPLINE
@@ -17657,66 +17017,6 @@ static int ZEND_FASTCALL  ZEND_TYPE_CHECK_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_A
        ZEND_VM_NEXT_OPCODE();
 }
 
-static int ZEND_FASTCALL  ZEND_ADD_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op1;
-
-       SAVE_OPLINE();
-       fast_add_function(EX_VAR(opline->result.var),
-               _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1),
-               opline->op2.zv TSRMLS_CC);
-       zval_ptr_dtor_nogc(free_op1);
-
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
-static int ZEND_FASTCALL  ZEND_SUB_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op1;
-
-       SAVE_OPLINE();
-       fast_sub_function(EX_VAR(opline->result.var),
-               _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1),
-               opline->op2.zv TSRMLS_CC);
-       zval_ptr_dtor_nogc(free_op1);
-
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
-static int ZEND_FASTCALL  ZEND_MUL_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op1;
-
-       SAVE_OPLINE();
-       fast_mul_function(EX_VAR(opline->result.var),
-               _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1),
-               opline->op2.zv TSRMLS_CC);
-       zval_ptr_dtor_nogc(free_op1);
-
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
-static int ZEND_FASTCALL  ZEND_DIV_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op1;
-
-       SAVE_OPLINE();
-       fast_div_function(EX_VAR(opline->result.var),
-               _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1),
-               opline->op2.zv TSRMLS_CC);
-       zval_ptr_dtor_nogc(free_op1);
-
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
 static int ZEND_FASTCALL  ZEND_MOD_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
 {
        USE_OPLINE
@@ -17808,70 +17108,6 @@ static int ZEND_FASTCALL  ZEND_IS_NOT_IDENTICAL_SPEC_VAR_CONST_HANDLER(ZEND_OPCO
        ZEND_VM_NEXT_OPCODE();
 }
 
-static int ZEND_FASTCALL  ZEND_IS_EQUAL_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op1;
-       zval *result = EX_VAR(opline->result.var);
-
-       SAVE_OPLINE();
-       fast_equal_function(result,
-               _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1),
-               opline->op2.zv TSRMLS_CC);
-       zval_ptr_dtor_nogc(free_op1);
-
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
-static int ZEND_FASTCALL  ZEND_IS_NOT_EQUAL_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op1;
-       zval *result = EX_VAR(opline->result.var);
-
-       SAVE_OPLINE();
-       fast_not_equal_function(result,
-               _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1),
-               opline->op2.zv TSRMLS_CC);
-       zval_ptr_dtor_nogc(free_op1);
-
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
-static int ZEND_FASTCALL  ZEND_IS_SMALLER_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op1;
-       zval *result = EX_VAR(opline->result.var);
-
-       SAVE_OPLINE();
-       fast_is_smaller_function(result,
-               _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1),
-               opline->op2.zv TSRMLS_CC);
-       zval_ptr_dtor_nogc(free_op1);
-
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
-static int ZEND_FASTCALL  ZEND_IS_SMALLER_OR_EQUAL_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op1;
-       zval *result = EX_VAR(opline->result.var);
-
-       SAVE_OPLINE();
-       fast_is_smaller_or_equal_function(result,
-               _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1),
-               opline->op2.zv TSRMLS_CC);
-       zval_ptr_dtor_nogc(free_op1);
-
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
 static int ZEND_FASTCALL  ZEND_BW_OR_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
 {
        USE_OPLINE
@@ -20139,66 +19375,6 @@ static int ZEND_FASTCALL  ZEND_ASSIGN_POW_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HAN
        return zend_binary_assign_op_helper_SPEC_VAR_CONST(pow_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
 }
 
-static int ZEND_FASTCALL  ZEND_ADD_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op1, free_op2;
-
-       SAVE_OPLINE();
-       fast_add_function(EX_VAR(opline->result.var),
-               _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1),
-               _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2) TSRMLS_CC);
-       zval_ptr_dtor_nogc(free_op1);
-       zval_ptr_dtor_nogc(free_op2);
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
-static int ZEND_FASTCALL  ZEND_SUB_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op1, free_op2;
-
-       SAVE_OPLINE();
-       fast_sub_function(EX_VAR(opline->result.var),
-               _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1),
-               _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2) TSRMLS_CC);
-       zval_ptr_dtor_nogc(free_op1);
-       zval_ptr_dtor_nogc(free_op2);
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
-static int ZEND_FASTCALL  ZEND_MUL_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op1, free_op2;
-
-       SAVE_OPLINE();
-       fast_mul_function(EX_VAR(opline->result.var),
-               _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1),
-               _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2) TSRMLS_CC);
-       zval_ptr_dtor_nogc(free_op1);
-       zval_ptr_dtor_nogc(free_op2);
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
-static int ZEND_FASTCALL  ZEND_DIV_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op1, free_op2;
-
-       SAVE_OPLINE();
-       fast_div_function(EX_VAR(opline->result.var),
-               _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1),
-               _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2) TSRMLS_CC);
-       zval_ptr_dtor_nogc(free_op1);
-       zval_ptr_dtor_nogc(free_op2);
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
 static int ZEND_FASTCALL  ZEND_MOD_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
 {
        USE_OPLINE
@@ -20290,70 +19466,6 @@ static int ZEND_FASTCALL  ZEND_IS_NOT_IDENTICAL_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE
        ZEND_VM_NEXT_OPCODE();
 }
 
-static int ZEND_FASTCALL  ZEND_IS_EQUAL_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op1, free_op2;
-       zval *result = EX_VAR(opline->result.var);
-
-       SAVE_OPLINE();
-       fast_equal_function(result,
-               _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1),
-               _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2) TSRMLS_CC);
-       zval_ptr_dtor_nogc(free_op1);
-       zval_ptr_dtor_nogc(free_op2);
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
-static int ZEND_FASTCALL  ZEND_IS_NOT_EQUAL_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op1, free_op2;
-       zval *result = EX_VAR(opline->result.var);
-
-       SAVE_OPLINE();
-       fast_not_equal_function(result,
-               _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1),
-               _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2) TSRMLS_CC);
-       zval_ptr_dtor_nogc(free_op1);
-       zval_ptr_dtor_nogc(free_op2);
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
-static int ZEND_FASTCALL  ZEND_IS_SMALLER_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op1, free_op2;
-       zval *result = EX_VAR(opline->result.var);
-
-       SAVE_OPLINE();
-       fast_is_smaller_function(result,
-               _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1),
-               _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2) TSRMLS_CC);
-       zval_ptr_dtor_nogc(free_op1);
-       zval_ptr_dtor_nogc(free_op2);
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
-static int ZEND_FASTCALL  ZEND_IS_SMALLER_OR_EQUAL_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op1, free_op2;
-       zval *result = EX_VAR(opline->result.var);
-
-       SAVE_OPLINE();
-       fast_is_smaller_or_equal_function(result,
-               _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1),
-               _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2) TSRMLS_CC);
-       zval_ptr_dtor_nogc(free_op1);
-       zval_ptr_dtor_nogc(free_op2);
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
 static int ZEND_FASTCALL  ZEND_BW_OR_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
 {
        USE_OPLINE
@@ -22167,66 +21279,6 @@ static int ZEND_FASTCALL  ZEND_ASSIGN_POW_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDL
        return zend_binary_assign_op_helper_SPEC_VAR_TMP(pow_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
 }
 
-static int ZEND_FASTCALL  ZEND_ADD_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op1, free_op2;
-
-       SAVE_OPLINE();
-       fast_add_function(EX_VAR(opline->result.var),
-               _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1),
-               _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2) TSRMLS_CC);
-       zval_ptr_dtor_nogc(free_op1);
-       zval_ptr_dtor_nogc(free_op2);
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
-static int ZEND_FASTCALL  ZEND_SUB_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op1, free_op2;
-
-       SAVE_OPLINE();
-       fast_sub_function(EX_VAR(opline->result.var),
-               _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1),
-               _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2) TSRMLS_CC);
-       zval_ptr_dtor_nogc(free_op1);
-       zval_ptr_dtor_nogc(free_op2);
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
-static int ZEND_FASTCALL  ZEND_MUL_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op1, free_op2;
-
-       SAVE_OPLINE();
-       fast_mul_function(EX_VAR(opline->result.var),
-               _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1),
-               _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2) TSRMLS_CC);
-       zval_ptr_dtor_nogc(free_op1);
-       zval_ptr_dtor_nogc(free_op2);
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
-static int ZEND_FASTCALL  ZEND_DIV_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op1, free_op2;
-
-       SAVE_OPLINE();
-       fast_div_function(EX_VAR(opline->result.var),
-               _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1),
-               _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2) TSRMLS_CC);
-       zval_ptr_dtor_nogc(free_op1);
-       zval_ptr_dtor_nogc(free_op2);
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
 static int ZEND_FASTCALL  ZEND_MOD_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
 {
        USE_OPLINE
@@ -22318,70 +21370,6 @@ static int ZEND_FASTCALL  ZEND_IS_NOT_IDENTICAL_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE
        ZEND_VM_NEXT_OPCODE();
 }
 
-static int ZEND_FASTCALL  ZEND_IS_EQUAL_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op1, free_op2;
-       zval *result = EX_VAR(opline->result.var);
-
-       SAVE_OPLINE();
-       fast_equal_function(result,
-               _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1),
-               _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2) TSRMLS_CC);
-       zval_ptr_dtor_nogc(free_op1);
-       zval_ptr_dtor_nogc(free_op2);
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
-static int ZEND_FASTCALL  ZEND_IS_NOT_EQUAL_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op1, free_op2;
-       zval *result = EX_VAR(opline->result.var);
-
-       SAVE_OPLINE();
-       fast_not_equal_function(result,
-               _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1),
-               _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2) TSRMLS_CC);
-       zval_ptr_dtor_nogc(free_op1);
-       zval_ptr_dtor_nogc(free_op2);
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
-static int ZEND_FASTCALL  ZEND_IS_SMALLER_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op1, free_op2;
-       zval *result = EX_VAR(opline->result.var);
-
-       SAVE_OPLINE();
-       fast_is_smaller_function(result,
-               _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1),
-               _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2) TSRMLS_CC);
-       zval_ptr_dtor_nogc(free_op1);
-       zval_ptr_dtor_nogc(free_op2);
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
-static int ZEND_FASTCALL  ZEND_IS_SMALLER_OR_EQUAL_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op1, free_op2;
-       zval *result = EX_VAR(opline->result.var);
-
-       SAVE_OPLINE();
-       fast_is_smaller_or_equal_function(result,
-               _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1),
-               _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2) TSRMLS_CC);
-       zval_ptr_dtor_nogc(free_op1);
-       zval_ptr_dtor_nogc(free_op2);
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
 static int ZEND_FASTCALL  ZEND_BW_OR_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
 {
        USE_OPLINE
@@ -25758,66 +24746,6 @@ static int ZEND_FASTCALL  ZEND_ASSIGN_POW_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HA
        return zend_binary_assign_op_helper_SPEC_VAR_UNUSED(pow_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
 }
 
-static int ZEND_FASTCALL  ZEND_ADD_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op1;
-
-       SAVE_OPLINE();
-       fast_add_function(EX_VAR(opline->result.var),
-               _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1),
-               _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC) TSRMLS_CC);
-       zval_ptr_dtor_nogc(free_op1);
-
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
-static int ZEND_FASTCALL  ZEND_SUB_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op1;
-
-       SAVE_OPLINE();
-       fast_sub_function(EX_VAR(opline->result.var),
-               _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1),
-               _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC) TSRMLS_CC);
-       zval_ptr_dtor_nogc(free_op1);
-
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
-static int ZEND_FASTCALL  ZEND_MUL_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op1;
-
-       SAVE_OPLINE();
-       fast_mul_function(EX_VAR(opline->result.var),
-               _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1),
-               _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC) TSRMLS_CC);
-       zval_ptr_dtor_nogc(free_op1);
-
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
-static int ZEND_FASTCALL  ZEND_DIV_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op1;
-
-       SAVE_OPLINE();
-       fast_div_function(EX_VAR(opline->result.var),
-               _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1),
-               _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC) TSRMLS_CC);
-       zval_ptr_dtor_nogc(free_op1);
-
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
 static int ZEND_FASTCALL  ZEND_MOD_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
 {
        USE_OPLINE
@@ -25909,70 +24837,6 @@ static int ZEND_FASTCALL  ZEND_IS_NOT_IDENTICAL_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_
        ZEND_VM_NEXT_OPCODE();
 }
 
-static int ZEND_FASTCALL  ZEND_IS_EQUAL_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op1;
-       zval *result = EX_VAR(opline->result.var);
-
-       SAVE_OPLINE();
-       fast_equal_function(result,
-               _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1),
-               _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC) TSRMLS_CC);
-       zval_ptr_dtor_nogc(free_op1);
-
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
-static int ZEND_FASTCALL  ZEND_IS_NOT_EQUAL_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op1;
-       zval *result = EX_VAR(opline->result.var);
-
-       SAVE_OPLINE();
-       fast_not_equal_function(result,
-               _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1),
-               _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC) TSRMLS_CC);
-       zval_ptr_dtor_nogc(free_op1);
-
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
-static int ZEND_FASTCALL  ZEND_IS_SMALLER_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op1;
-       zval *result = EX_VAR(opline->result.var);
-
-       SAVE_OPLINE();
-       fast_is_smaller_function(result,
-               _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1),
-               _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC) TSRMLS_CC);
-       zval_ptr_dtor_nogc(free_op1);
-
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
-static int ZEND_FASTCALL  ZEND_IS_SMALLER_OR_EQUAL_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op1;
-       zval *result = EX_VAR(opline->result.var);
-
-       SAVE_OPLINE();
-       fast_is_smaller_or_equal_function(result,
-               _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1),
-               _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC) TSRMLS_CC);
-       zval_ptr_dtor_nogc(free_op1);
-
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
 static int ZEND_FASTCALL  ZEND_BW_OR_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
 {
        USE_OPLINE
@@ -37452,66 +36316,6 @@ check_indirect:
        ZEND_VM_NEXT_OPCODE();
 }
 
-static int ZEND_FASTCALL  ZEND_ADD_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op2;
-
-       SAVE_OPLINE();
-       fast_add_function(EX_VAR(opline->result.var),
-               _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC),
-               _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2) TSRMLS_CC);
-
-       zval_ptr_dtor_nogc(free_op2);
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
-static int ZEND_FASTCALL  ZEND_SUB_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op2;
-
-       SAVE_OPLINE();
-       fast_sub_function(EX_VAR(opline->result.var),
-               _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC),
-               _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2) TSRMLS_CC);
-
-       zval_ptr_dtor_nogc(free_op2);
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
-static int ZEND_FASTCALL  ZEND_MUL_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op2;
-
-       SAVE_OPLINE();
-       fast_mul_function(EX_VAR(opline->result.var),
-               _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC),
-               _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2) TSRMLS_CC);
-
-       zval_ptr_dtor_nogc(free_op2);
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
-static int ZEND_FASTCALL  ZEND_DIV_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op2;
-
-       SAVE_OPLINE();
-       fast_div_function(EX_VAR(opline->result.var),
-               _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC),
-               _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2) TSRMLS_CC);
-
-       zval_ptr_dtor_nogc(free_op2);
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
 static int ZEND_FASTCALL  ZEND_MOD_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
 {
        USE_OPLINE
@@ -37603,70 +36407,6 @@ static int ZEND_FASTCALL  ZEND_IS_NOT_IDENTICAL_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_
        ZEND_VM_NEXT_OPCODE();
 }
 
-static int ZEND_FASTCALL  ZEND_IS_EQUAL_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op2;
-       zval *result = EX_VAR(opline->result.var);
-
-       SAVE_OPLINE();
-       fast_equal_function(result,
-               _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC),
-               _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2) TSRMLS_CC);
-
-       zval_ptr_dtor_nogc(free_op2);
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
-static int ZEND_FASTCALL  ZEND_IS_NOT_EQUAL_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op2;
-       zval *result = EX_VAR(opline->result.var);
-
-       SAVE_OPLINE();
-       fast_not_equal_function(result,
-               _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC),
-               _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2) TSRMLS_CC);
-
-       zval_ptr_dtor_nogc(free_op2);
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
-static int ZEND_FASTCALL  ZEND_IS_SMALLER_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op2;
-       zval *result = EX_VAR(opline->result.var);
-
-       SAVE_OPLINE();
-       fast_is_smaller_function(result,
-               _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC),
-               _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2) TSRMLS_CC);
-
-       zval_ptr_dtor_nogc(free_op2);
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
-static int ZEND_FASTCALL  ZEND_IS_SMALLER_OR_EQUAL_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op2;
-       zval *result = EX_VAR(opline->result.var);
-
-       SAVE_OPLINE();
-       fast_is_smaller_or_equal_function(result,
-               _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC),
-               _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2) TSRMLS_CC);
-
-       zval_ptr_dtor_nogc(free_op2);
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
 static int ZEND_FASTCALL  ZEND_BW_OR_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
 {
        USE_OPLINE
@@ -39352,66 +38092,6 @@ static int ZEND_FASTCALL  ZEND_ASSIGN_POW_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLE
        return zend_binary_assign_op_helper_SPEC_CV_TMP(pow_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
 }
 
-static int ZEND_FASTCALL  ZEND_ADD_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op2;
-
-       SAVE_OPLINE();
-       fast_add_function(EX_VAR(opline->result.var),
-               _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC),
-               _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2) TSRMLS_CC);
-
-       zval_ptr_dtor_nogc(free_op2);
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
-static int ZEND_FASTCALL  ZEND_SUB_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op2;
-
-       SAVE_OPLINE();
-       fast_sub_function(EX_VAR(opline->result.var),
-               _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC),
-               _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2) TSRMLS_CC);
-
-       zval_ptr_dtor_nogc(free_op2);
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
-static int ZEND_FASTCALL  ZEND_MUL_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op2;
-
-       SAVE_OPLINE();
-       fast_mul_function(EX_VAR(opline->result.var),
-               _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC),
-               _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2) TSRMLS_CC);
-
-       zval_ptr_dtor_nogc(free_op2);
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
-static int ZEND_FASTCALL  ZEND_DIV_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op2;
-
-       SAVE_OPLINE();
-       fast_div_function(EX_VAR(opline->result.var),
-               _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC),
-               _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2) TSRMLS_CC);
-
-       zval_ptr_dtor_nogc(free_op2);
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
 static int ZEND_FASTCALL  ZEND_MOD_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
 {
        USE_OPLINE
@@ -39503,70 +38183,6 @@ static int ZEND_FASTCALL  ZEND_IS_NOT_IDENTICAL_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_
        ZEND_VM_NEXT_OPCODE();
 }
 
-static int ZEND_FASTCALL  ZEND_IS_EQUAL_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op2;
-       zval *result = EX_VAR(opline->result.var);
-
-       SAVE_OPLINE();
-       fast_equal_function(result,
-               _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC),
-               _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2) TSRMLS_CC);
-
-       zval_ptr_dtor_nogc(free_op2);
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
-static int ZEND_FASTCALL  ZEND_IS_NOT_EQUAL_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op2;
-       zval *result = EX_VAR(opline->result.var);
-
-       SAVE_OPLINE();
-       fast_not_equal_function(result,
-               _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC),
-               _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2) TSRMLS_CC);
-
-       zval_ptr_dtor_nogc(free_op2);
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
-static int ZEND_FASTCALL  ZEND_IS_SMALLER_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op2;
-       zval *result = EX_VAR(opline->result.var);
-
-       SAVE_OPLINE();
-       fast_is_smaller_function(result,
-               _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC),
-               _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2) TSRMLS_CC);
-
-       zval_ptr_dtor_nogc(free_op2);
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
-static int ZEND_FASTCALL  ZEND_IS_SMALLER_OR_EQUAL_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op2;
-       zval *result = EX_VAR(opline->result.var);
-
-       SAVE_OPLINE();
-       fast_is_smaller_or_equal_function(result,
-               _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC),
-               _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2) TSRMLS_CC);
-
-       zval_ptr_dtor_nogc(free_op2);
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
 static int ZEND_FASTCALL  ZEND_BW_OR_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
 {
        USE_OPLINE
@@ -44620,6 +43236,512 @@ static int ZEND_FASTCALL  ZEND_ASSIGN_POW_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER
        return zend_binary_assign_op_helper_SPEC_CV_CV(pow_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
 }
 
+static int ZEND_FASTCALL  ZEND_ADD_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+       USE_OPLINE
+       zend_free_op free_op2;
+
+       SAVE_OPLINE();
+       fast_add_function(EX_VAR(opline->result.var),
+               _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC),
+               _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2 TSRMLS_CC) TSRMLS_CC);
+
+       zval_ptr_dtor_nogc(free_op2);
+       CHECK_EXCEPTION();
+       ZEND_VM_NEXT_OPCODE();
+}
+
+static int ZEND_FASTCALL  ZEND_SUB_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+       USE_OPLINE
+       zend_free_op free_op2;
+
+       SAVE_OPLINE();
+       fast_sub_function(EX_VAR(opline->result.var),
+               _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC),
+               _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2 TSRMLS_CC) TSRMLS_CC);
+
+       zval_ptr_dtor_nogc(free_op2);
+       CHECK_EXCEPTION();
+       ZEND_VM_NEXT_OPCODE();
+}
+
+static int ZEND_FASTCALL  ZEND_MUL_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+       USE_OPLINE
+       zend_free_op free_op2;
+
+       SAVE_OPLINE();
+       fast_mul_function(EX_VAR(opline->result.var),
+               _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC),
+               _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2 TSRMLS_CC) TSRMLS_CC);
+
+       zval_ptr_dtor_nogc(free_op2);
+       CHECK_EXCEPTION();
+       ZEND_VM_NEXT_OPCODE();
+}
+
+static int ZEND_FASTCALL  ZEND_DIV_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+       USE_OPLINE
+       zend_free_op free_op2;
+
+       SAVE_OPLINE();
+       fast_div_function(EX_VAR(opline->result.var),
+               _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC),
+               _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2 TSRMLS_CC) TSRMLS_CC);
+
+       zval_ptr_dtor_nogc(free_op2);
+       CHECK_EXCEPTION();
+       ZEND_VM_NEXT_OPCODE();
+}
+
+static int ZEND_FASTCALL  ZEND_IS_EQUAL_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+       USE_OPLINE
+       zend_free_op free_op2;
+       zval *result = EX_VAR(opline->result.var);
+
+       SAVE_OPLINE();
+       fast_equal_function(result,
+               _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC),
+               _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2 TSRMLS_CC) TSRMLS_CC);
+
+       zval_ptr_dtor_nogc(free_op2);
+       CHECK_EXCEPTION();
+       ZEND_VM_NEXT_OPCODE();
+}
+
+static int ZEND_FASTCALL  ZEND_IS_NOT_EQUAL_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+       USE_OPLINE
+       zend_free_op free_op2;
+       zval *result = EX_VAR(opline->result.var);
+
+       SAVE_OPLINE();
+       fast_not_equal_function(result,
+               _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC),
+               _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2 TSRMLS_CC) TSRMLS_CC);
+
+       zval_ptr_dtor_nogc(free_op2);
+       CHECK_EXCEPTION();
+       ZEND_VM_NEXT_OPCODE();
+}
+
+static int ZEND_FASTCALL  ZEND_IS_SMALLER_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+       USE_OPLINE
+       zend_free_op free_op2;
+       zval *result = EX_VAR(opline->result.var);
+
+       SAVE_OPLINE();
+       fast_is_smaller_function(result,
+               _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC),
+               _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2 TSRMLS_CC) TSRMLS_CC);
+
+       zval_ptr_dtor_nogc(free_op2);
+       CHECK_EXCEPTION();
+       ZEND_VM_NEXT_OPCODE();
+}
+
+static int ZEND_FASTCALL  ZEND_IS_SMALLER_OR_EQUAL_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+       USE_OPLINE
+       zend_free_op free_op2;
+       zval *result = EX_VAR(opline->result.var);
+
+       SAVE_OPLINE();
+       fast_is_smaller_or_equal_function(result,
+               _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC),
+               _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2 TSRMLS_CC) TSRMLS_CC);
+
+       zval_ptr_dtor_nogc(free_op2);
+       CHECK_EXCEPTION();
+       ZEND_VM_NEXT_OPCODE();
+}
+
+static int ZEND_FASTCALL  ZEND_FREE_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+       USE_OPLINE
+
+       SAVE_OPLINE();
+       zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
+       CHECK_EXCEPTION();
+       ZEND_VM_NEXT_OPCODE();
+}
+
+static int ZEND_FASTCALL  ZEND_ADD_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+       USE_OPLINE
+       zend_free_op free_op1;
+
+       SAVE_OPLINE();
+       fast_add_function(EX_VAR(opline->result.var),
+               _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC),
+               opline->op2.zv TSRMLS_CC);
+       zval_ptr_dtor_nogc(free_op1);
+
+       CHECK_EXCEPTION();
+       ZEND_VM_NEXT_OPCODE();
+}
+
+static int ZEND_FASTCALL  ZEND_SUB_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+       USE_OPLINE
+       zend_free_op free_op1;
+
+       SAVE_OPLINE();
+       fast_sub_function(EX_VAR(opline->result.var),
+               _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC),
+               opline->op2.zv TSRMLS_CC);
+       zval_ptr_dtor_nogc(free_op1);
+
+       CHECK_EXCEPTION();
+       ZEND_VM_NEXT_OPCODE();
+}
+
+static int ZEND_FASTCALL  ZEND_MUL_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+       USE_OPLINE
+       zend_free_op free_op1;
+
+       SAVE_OPLINE();
+       fast_mul_function(EX_VAR(opline->result.var),
+               _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC),
+               opline->op2.zv TSRMLS_CC);
+       zval_ptr_dtor_nogc(free_op1);
+
+       CHECK_EXCEPTION();
+       ZEND_VM_NEXT_OPCODE();
+}
+
+static int ZEND_FASTCALL  ZEND_DIV_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+       USE_OPLINE
+       zend_free_op free_op1;
+
+       SAVE_OPLINE();
+       fast_div_function(EX_VAR(opline->result.var),
+               _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC),
+               opline->op2.zv TSRMLS_CC);
+       zval_ptr_dtor_nogc(free_op1);
+
+       CHECK_EXCEPTION();
+       ZEND_VM_NEXT_OPCODE();
+}
+
+static int ZEND_FASTCALL  ZEND_IS_EQUAL_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+       USE_OPLINE
+       zend_free_op free_op1;
+       zval *result = EX_VAR(opline->result.var);
+
+       SAVE_OPLINE();
+       fast_equal_function(result,
+               _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC),
+               opline->op2.zv TSRMLS_CC);
+       zval_ptr_dtor_nogc(free_op1);
+
+       CHECK_EXCEPTION();
+       ZEND_VM_NEXT_OPCODE();
+}
+
+static int ZEND_FASTCALL  ZEND_IS_NOT_EQUAL_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+       USE_OPLINE
+       zend_free_op free_op1;
+       zval *result = EX_VAR(opline->result.var);
+
+       SAVE_OPLINE();
+       fast_not_equal_function(result,
+               _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC),
+               opline->op2.zv TSRMLS_CC);
+       zval_ptr_dtor_nogc(free_op1);
+
+       CHECK_EXCEPTION();
+       ZEND_VM_NEXT_OPCODE();
+}
+
+static int ZEND_FASTCALL  ZEND_IS_SMALLER_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+       USE_OPLINE
+       zend_free_op free_op1;
+       zval *result = EX_VAR(opline->result.var);
+
+       SAVE_OPLINE();
+       fast_is_smaller_function(result,
+               _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC),
+               opline->op2.zv TSRMLS_CC);
+       zval_ptr_dtor_nogc(free_op1);
+
+       CHECK_EXCEPTION();
+       ZEND_VM_NEXT_OPCODE();
+}
+
+static int ZEND_FASTCALL  ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+       USE_OPLINE
+       zend_free_op free_op1;
+       zval *result = EX_VAR(opline->result.var);
+
+       SAVE_OPLINE();
+       fast_is_smaller_or_equal_function(result,
+               _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC),
+               opline->op2.zv TSRMLS_CC);
+       zval_ptr_dtor_nogc(free_op1);
+
+       CHECK_EXCEPTION();
+       ZEND_VM_NEXT_OPCODE();
+}
+
+static int ZEND_FASTCALL  ZEND_ADD_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+       USE_OPLINE
+       zend_free_op free_op1;
+
+       SAVE_OPLINE();
+       fast_add_function(EX_VAR(opline->result.var),
+               _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC),
+               _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC) TSRMLS_CC);
+       zval_ptr_dtor_nogc(free_op1);
+
+       CHECK_EXCEPTION();
+       ZEND_VM_NEXT_OPCODE();
+}
+
+static int ZEND_FASTCALL  ZEND_SUB_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+       USE_OPLINE
+       zend_free_op free_op1;
+
+       SAVE_OPLINE();
+       fast_sub_function(EX_VAR(opline->result.var),
+               _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC),
+               _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC) TSRMLS_CC);
+       zval_ptr_dtor_nogc(free_op1);
+
+       CHECK_EXCEPTION();
+       ZEND_VM_NEXT_OPCODE();
+}
+
+static int ZEND_FASTCALL  ZEND_MUL_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+       USE_OPLINE
+       zend_free_op free_op1;
+
+       SAVE_OPLINE();
+       fast_mul_function(EX_VAR(opline->result.var),
+               _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC),
+               _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC) TSRMLS_CC);
+       zval_ptr_dtor_nogc(free_op1);
+
+       CHECK_EXCEPTION();
+       ZEND_VM_NEXT_OPCODE();
+}
+
+static int ZEND_FASTCALL  ZEND_DIV_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+       USE_OPLINE
+       zend_free_op free_op1;
+
+       SAVE_OPLINE();
+       fast_div_function(EX_VAR(opline->result.var),
+               _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC),
+               _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC) TSRMLS_CC);
+       zval_ptr_dtor_nogc(free_op1);
+
+       CHECK_EXCEPTION();
+       ZEND_VM_NEXT_OPCODE();
+}
+
+static int ZEND_FASTCALL  ZEND_IS_EQUAL_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+       USE_OPLINE
+       zend_free_op free_op1;
+       zval *result = EX_VAR(opline->result.var);
+
+       SAVE_OPLINE();
+       fast_equal_function(result,
+               _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC),
+               _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC) TSRMLS_CC);
+       zval_ptr_dtor_nogc(free_op1);
+
+       CHECK_EXCEPTION();
+       ZEND_VM_NEXT_OPCODE();
+}
+
+static int ZEND_FASTCALL  ZEND_IS_NOT_EQUAL_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+       USE_OPLINE
+       zend_free_op free_op1;
+       zval *result = EX_VAR(opline->result.var);
+
+       SAVE_OPLINE();
+       fast_not_equal_function(result,
+               _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC),
+               _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC) TSRMLS_CC);
+       zval_ptr_dtor_nogc(free_op1);
+
+       CHECK_EXCEPTION();
+       ZEND_VM_NEXT_OPCODE();
+}
+
+static int ZEND_FASTCALL  ZEND_IS_SMALLER_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+       USE_OPLINE
+       zend_free_op free_op1;
+       zval *result = EX_VAR(opline->result.var);
+
+       SAVE_OPLINE();
+       fast_is_smaller_function(result,
+               _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC),
+               _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC) TSRMLS_CC);
+       zval_ptr_dtor_nogc(free_op1);
+
+       CHECK_EXCEPTION();
+       ZEND_VM_NEXT_OPCODE();
+}
+
+static int ZEND_FASTCALL  ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+       USE_OPLINE
+       zend_free_op free_op1;
+       zval *result = EX_VAR(opline->result.var);
+
+       SAVE_OPLINE();
+       fast_is_smaller_or_equal_function(result,
+               _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC),
+               _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC) TSRMLS_CC);
+       zval_ptr_dtor_nogc(free_op1);
+
+       CHECK_EXCEPTION();
+       ZEND_VM_NEXT_OPCODE();
+}
+
+static int ZEND_FASTCALL  ZEND_ADD_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+       USE_OPLINE
+       zend_free_op free_op1, free_op2;
+
+       SAVE_OPLINE();
+       fast_add_function(EX_VAR(opline->result.var),
+               _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC),
+               _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2 TSRMLS_CC) TSRMLS_CC);
+       zval_ptr_dtor_nogc(free_op1);
+       zval_ptr_dtor_nogc(free_op2);
+       CHECK_EXCEPTION();
+       ZEND_VM_NEXT_OPCODE();
+}
+
+static int ZEND_FASTCALL  ZEND_SUB_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+       USE_OPLINE
+       zend_free_op free_op1, free_op2;
+
+       SAVE_OPLINE();
+       fast_sub_function(EX_VAR(opline->result.var),
+               _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC),
+               _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2 TSRMLS_CC) TSRMLS_CC);
+       zval_ptr_dtor_nogc(free_op1);
+       zval_ptr_dtor_nogc(free_op2);
+       CHECK_EXCEPTION();
+       ZEND_VM_NEXT_OPCODE();
+}
+
+static int ZEND_FASTCALL  ZEND_MUL_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+       USE_OPLINE
+       zend_free_op free_op1, free_op2;
+
+       SAVE_OPLINE();
+       fast_mul_function(EX_VAR(opline->result.var),
+               _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC),
+               _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2 TSRMLS_CC) TSRMLS_CC);
+       zval_ptr_dtor_nogc(free_op1);
+       zval_ptr_dtor_nogc(free_op2);
+       CHECK_EXCEPTION();
+       ZEND_VM_NEXT_OPCODE();
+}
+
+static int ZEND_FASTCALL  ZEND_DIV_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+       USE_OPLINE
+       zend_free_op free_op1, free_op2;
+
+       SAVE_OPLINE();
+       fast_div_function(EX_VAR(opline->result.var),
+               _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC),
+               _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2 TSRMLS_CC) TSRMLS_CC);
+       zval_ptr_dtor_nogc(free_op1);
+       zval_ptr_dtor_nogc(free_op2);
+       CHECK_EXCEPTION();
+       ZEND_VM_NEXT_OPCODE();
+}
+
+static int ZEND_FASTCALL  ZEND_IS_EQUAL_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+       USE_OPLINE
+       zend_free_op free_op1, free_op2;
+       zval *result = EX_VAR(opline->result.var);
+
+       SAVE_OPLINE();
+       fast_equal_function(result,
+               _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC),
+               _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2 TSRMLS_CC) TSRMLS_CC);
+       zval_ptr_dtor_nogc(free_op1);
+       zval_ptr_dtor_nogc(free_op2);
+       CHECK_EXCEPTION();
+       ZEND_VM_NEXT_OPCODE();
+}
+
+static int ZEND_FASTCALL  ZEND_IS_NOT_EQUAL_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+       USE_OPLINE
+       zend_free_op free_op1, free_op2;
+       zval *result = EX_VAR(opline->result.var);
+
+       SAVE_OPLINE();
+       fast_not_equal_function(result,
+               _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC),
+               _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2 TSRMLS_CC) TSRMLS_CC);
+       zval_ptr_dtor_nogc(free_op1);
+       zval_ptr_dtor_nogc(free_op2);
+       CHECK_EXCEPTION();
+       ZEND_VM_NEXT_OPCODE();
+}
+
+static int ZEND_FASTCALL  ZEND_IS_SMALLER_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+       USE_OPLINE
+       zend_free_op free_op1, free_op2;
+       zval *result = EX_VAR(opline->result.var);
+
+       SAVE_OPLINE();
+       fast_is_smaller_function(result,
+               _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC),
+               _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2 TSRMLS_CC) TSRMLS_CC);
+       zval_ptr_dtor_nogc(free_op1);
+       zval_ptr_dtor_nogc(free_op2);
+       CHECK_EXCEPTION();
+       ZEND_VM_NEXT_OPCODE();
+}
+
+static int ZEND_FASTCALL  ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+       USE_OPLINE
+       zend_free_op free_op1, free_op2;
+       zval *result = EX_VAR(opline->result.var);
+
+       SAVE_OPLINE();
+       fast_is_smaller_or_equal_function(result,
+               _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC),
+               _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2 TSRMLS_CC) TSRMLS_CC);
+       zval_ptr_dtor_nogc(free_op1);
+       zval_ptr_dtor_nogc(free_op2);
+       CHECK_EXCEPTION();
+       ZEND_VM_NEXT_OPCODE();
+}
+
 static int ZEND_FASTCALL ZEND_NULL_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
 {
        zend_error_noreturn(E_ERROR, "Invalid opcode %d/%d/%d.", OPLINE->opcode, OPLINE->op1_type, OPLINE->op2_type);
@@ -44656,103 +43778,103 @@ void zend_init_opcodes_handlers(void)
        ZEND_NOP_SPEC_HANDLER,
        ZEND_NOP_SPEC_HANDLER,
        ZEND_ADD_SPEC_CONST_CONST_HANDLER,
-       ZEND_ADD_SPEC_CONST_TMP_HANDLER,
-       ZEND_ADD_SPEC_CONST_VAR_HANDLER,
+       ZEND_ADD_SPEC_CONST_TMPVAR_HANDLER,
+       ZEND_ADD_SPEC_CONST_TMPVAR_HANDLER,
        ZEND_NULL_HANDLER,
        ZEND_ADD_SPEC_CONST_CV_HANDLER,
-       ZEND_ADD_SPEC_TMP_CONST_HANDLER,
-       ZEND_ADD_SPEC_TMP_TMP_HANDLER,
-       ZEND_ADD_SPEC_TMP_VAR_HANDLER,
+       ZEND_ADD_SPEC_TMPVAR_CONST_HANDLER,
+       ZEND_ADD_SPEC_TMPVAR_TMPVAR_HANDLER,
+       ZEND_ADD_SPEC_TMPVAR_TMPVAR_HANDLER,
        ZEND_NULL_HANDLER,
-       ZEND_ADD_SPEC_TMP_CV_HANDLER,
-       ZEND_ADD_SPEC_VAR_CONST_HANDLER,
-       ZEND_ADD_SPEC_VAR_TMP_HANDLER,
-       ZEND_ADD_SPEC_VAR_VAR_HANDLER,
+       ZEND_ADD_SPEC_TMPVAR_CV_HANDLER,
+       ZEND_ADD_SPEC_TMPVAR_CONST_HANDLER,
+       ZEND_ADD_SPEC_TMPVAR_TMPVAR_HANDLER,
+       ZEND_ADD_SPEC_TMPVAR_TMPVAR_HANDLER,
        ZEND_NULL_HANDLER,
-       ZEND_ADD_SPEC_VAR_CV_HANDLER,
+       ZEND_ADD_SPEC_TMPVAR_CV_HANDLER,
        ZEND_NULL_HANDLER,
        ZEND_NULL_HANDLER,
        ZEND_NULL_HANDLER,
        ZEND_NULL_HANDLER,
        ZEND_NULL_HANDLER,
        ZEND_ADD_SPEC_CV_CONST_HANDLER,
-       ZEND_ADD_SPEC_CV_TMP_HANDLER,
-       ZEND_ADD_SPEC_CV_VAR_HANDLER,
+       ZEND_ADD_SPEC_CV_TMPVAR_HANDLER,
+       ZEND_ADD_SPEC_CV_TMPVAR_HANDLER,
        ZEND_NULL_HANDLER,
        ZEND_ADD_SPEC_CV_CV_HANDLER,
        ZEND_SUB_SPEC_CONST_CONST_HANDLER,
-       ZEND_SUB_SPEC_CONST_TMP_HANDLER,
-       ZEND_SUB_SPEC_CONST_VAR_HANDLER,
+       ZEND_SUB_SPEC_CONST_TMPVAR_HANDLER,
+       ZEND_SUB_SPEC_CONST_TMPVAR_HANDLER,
        ZEND_NULL_HANDLER,
        ZEND_SUB_SPEC_CONST_CV_HANDLER,
-       ZEND_SUB_SPEC_TMP_CONST_HANDLER,
-       ZEND_SUB_SPEC_TMP_TMP_HANDLER,
-       ZEND_SUB_SPEC_TMP_VAR_HANDLER,
+       ZEND_SUB_SPEC_TMPVAR_CONST_HANDLER,
+       ZEND_SUB_SPEC_TMPVAR_TMPVAR_HANDLER,
+       ZEND_SUB_SPEC_TMPVAR_TMPVAR_HANDLER,
        ZEND_NULL_HANDLER,
-       ZEND_SUB_SPEC_TMP_CV_HANDLER,
-       ZEND_SUB_SPEC_VAR_CONST_HANDLER,
-       ZEND_SUB_SPEC_VAR_TMP_HANDLER,
-       ZEND_SUB_SPEC_VAR_VAR_HANDLER,
+       ZEND_SUB_SPEC_TMPVAR_CV_HANDLER,
+       ZEND_SUB_SPEC_TMPVAR_CONST_HANDLER,
+       ZEND_SUB_SPEC_TMPVAR_TMPVAR_HANDLER,
+       ZEND_SUB_SPEC_TMPVAR_TMPVAR_HANDLER,
        ZEND_NULL_HANDLER,
-       ZEND_SUB_SPEC_VAR_CV_HANDLER,
+       ZEND_SUB_SPEC_TMPVAR_CV_HANDLER,
        ZEND_NULL_HANDLER,
        ZEND_NULL_HANDLER,
        ZEND_NULL_HANDLER,
        ZEND_NULL_HANDLER,
        ZEND_NULL_HANDLER,
        ZEND_SUB_SPEC_CV_CONST_HANDLER,
-       ZEND_SUB_SPEC_CV_TMP_HANDLER,
-       ZEND_SUB_SPEC_CV_VAR_HANDLER,
+       ZEND_SUB_SPEC_CV_TMPVAR_HANDLER,
+       ZEND_SUB_SPEC_CV_TMPVAR_HANDLER,
        ZEND_NULL_HANDLER,
        ZEND_SUB_SPEC_CV_CV_HANDLER,
        ZEND_MUL_SPEC_CONST_CONST_HANDLER,
-       ZEND_MUL_SPEC_CONST_TMP_HANDLER,
-       ZEND_MUL_SPEC_CONST_VAR_HANDLER,
+       ZEND_MUL_SPEC_CONST_TMPVAR_HANDLER,
+       ZEND_MUL_SPEC_CONST_TMPVAR_HANDLER,
        ZEND_NULL_HANDLER,
        ZEND_MUL_SPEC_CONST_CV_HANDLER,
-       ZEND_MUL_SPEC_TMP_CONST_HANDLER,
-       ZEND_MUL_SPEC_TMP_TMP_HANDLER,
-       ZEND_MUL_SPEC_TMP_VAR_HANDLER,
+       ZEND_MUL_SPEC_TMPVAR_CONST_HANDLER,
+       ZEND_MUL_SPEC_TMPVAR_TMPVAR_HANDLER,
+       ZEND_MUL_SPEC_TMPVAR_TMPVAR_HANDLER,
        ZEND_NULL_HANDLER,
-       ZEND_MUL_SPEC_TMP_CV_HANDLER,
-       ZEND_MUL_SPEC_VAR_CONST_HANDLER,
-       ZEND_MUL_SPEC_VAR_TMP_HANDLER,
-       ZEND_MUL_SPEC_VAR_VAR_HANDLER,
+       ZEND_MUL_SPEC_TMPVAR_CV_HANDLER,
+       ZEND_MUL_SPEC_TMPVAR_CONST_HANDLER,
+       ZEND_MUL_SPEC_TMPVAR_TMPVAR_HANDLER,
+       ZEND_MUL_SPEC_TMPVAR_TMPVAR_HANDLER,
        ZEND_NULL_HANDLER,
-       ZEND_MUL_SPEC_VAR_CV_HANDLER,
+       ZEND_MUL_SPEC_TMPVAR_CV_HANDLER,
        ZEND_NULL_HANDLER,
        ZEND_NULL_HANDLER,
        ZEND_NULL_HANDLER,
        ZEND_NULL_HANDLER,
        ZEND_NULL_HANDLER,
        ZEND_MUL_SPEC_CV_CONST_HANDLER,
-       ZEND_MUL_SPEC_CV_TMP_HANDLER,
-       ZEND_MUL_SPEC_CV_VAR_HANDLER,
+       ZEND_MUL_SPEC_CV_TMPVAR_HANDLER,
+       ZEND_MUL_SPEC_CV_TMPVAR_HANDLER,
        ZEND_NULL_HANDLER,
        ZEND_MUL_SPEC_CV_CV_HANDLER,
        ZEND_DIV_SPEC_CONST_CONST_HANDLER,
-       ZEND_DIV_SPEC_CONST_TMP_HANDLER,
-       ZEND_DIV_SPEC_CONST_VAR_HANDLER,
+       ZEND_DIV_SPEC_CONST_TMPVAR_HANDLER,
+       ZEND_DIV_SPEC_CONST_TMPVAR_HANDLER,
        ZEND_NULL_HANDLER,
        ZEND_DIV_SPEC_CONST_CV_HANDLER,
-       ZEND_DIV_SPEC_TMP_CONST_HANDLER,
-       ZEND_DIV_SPEC_TMP_TMP_HANDLER,
-       ZEND_DIV_SPEC_TMP_VAR_HANDLER,
+       ZEND_DIV_SPEC_TMPVAR_CONST_HANDLER,
+       ZEND_DIV_SPEC_TMPVAR_TMPVAR_HANDLER,
+       ZEND_DIV_SPEC_TMPVAR_TMPVAR_HANDLER,
        ZEND_NULL_HANDLER,
-       ZEND_DIV_SPEC_TMP_CV_HANDLER,
-       ZEND_DIV_SPEC_VAR_CONST_HANDLER,
-       ZEND_DIV_SPEC_VAR_TMP_HANDLER,
-       ZEND_DIV_SPEC_VAR_VAR_HANDLER,
+       ZEND_DIV_SPEC_TMPVAR_CV_HANDLER,
+       ZEND_DIV_SPEC_TMPVAR_CONST_HANDLER,
+       ZEND_DIV_SPEC_TMPVAR_TMPVAR_HANDLER,
+       ZEND_DIV_SPEC_TMPVAR_TMPVAR_HANDLER,
        ZEND_NULL_HANDLER,
-       ZEND_DIV_SPEC_VAR_CV_HANDLER,
+       ZEND_DIV_SPEC_TMPVAR_CV_HANDLER,
        ZEND_NULL_HANDLER,
        ZEND_NULL_HANDLER,
        ZEND_NULL_HANDLER,
        ZEND_NULL_HANDLER,
        ZEND_NULL_HANDLER,
        ZEND_DIV_SPEC_CV_CONST_HANDLER,
-       ZEND_DIV_SPEC_CV_TMP_HANDLER,
-       ZEND_DIV_SPEC_CV_VAR_HANDLER,
+       ZEND_DIV_SPEC_CV_TMPVAR_HANDLER,
+       ZEND_DIV_SPEC_CV_TMPVAR_HANDLER,
        ZEND_NULL_HANDLER,
        ZEND_DIV_SPEC_CV_CV_HANDLER,
        ZEND_MOD_SPEC_CONST_CONST_HANDLER,
@@ -45056,103 +44178,103 @@ void zend_init_opcodes_handlers(void)
        ZEND_NULL_HANDLER,
        ZEND_IS_NOT_IDENTICAL_SPEC_CV_CV_HANDLER,
        ZEND_IS_EQUAL_SPEC_CONST_CONST_HANDLER,
-       ZEND_IS_EQUAL_SPEC_CONST_TMP_HANDLER,
-       ZEND_IS_EQUAL_SPEC_CONST_VAR_HANDLER,
+       ZEND_IS_EQUAL_SPEC_CONST_TMPVAR_HANDLER,
+       ZEND_IS_EQUAL_SPEC_CONST_TMPVAR_HANDLER,
        ZEND_NULL_HANDLER,
        ZEND_IS_EQUAL_SPEC_CONST_CV_HANDLER,
-       ZEND_IS_EQUAL_SPEC_TMP_CONST_HANDLER,
-       ZEND_IS_EQUAL_SPEC_TMP_TMP_HANDLER,
-       ZEND_IS_EQUAL_SPEC_TMP_VAR_HANDLER,
+       ZEND_IS_EQUAL_SPEC_TMPVAR_CONST_HANDLER,
+       ZEND_IS_EQUAL_SPEC_TMPVAR_TMPVAR_HANDLER,
+       ZEND_IS_EQUAL_SPEC_TMPVAR_TMPVAR_HANDLER,
        ZEND_NULL_HANDLER,
-       ZEND_IS_EQUAL_SPEC_TMP_CV_HANDLER,
-       ZEND_IS_EQUAL_SPEC_VAR_CONST_HANDLER,
-       ZEND_IS_EQUAL_SPEC_VAR_TMP_HANDLER,
-       ZEND_IS_EQUAL_SPEC_VAR_VAR_HANDLER,
+       ZEND_IS_EQUAL_SPEC_TMPVAR_CV_HANDLER,
+       ZEND_IS_EQUAL_SPEC_TMPVAR_CONST_HANDLER,
+       ZEND_IS_EQUAL_SPEC_TMPVAR_TMPVAR_HANDLER,
+       ZEND_IS_EQUAL_SPEC_TMPVAR_TMPVAR_HANDLER,
        ZEND_NULL_HANDLER,
-       ZEND_IS_EQUAL_SPEC_VAR_CV_HANDLER,
+       ZEND_IS_EQUAL_SPEC_TMPVAR_CV_HANDLER,
        ZEND_NULL_HANDLER,
        ZEND_NULL_HANDLER,
        ZEND_NULL_HANDLER,
        ZEND_NULL_HANDLER,
        ZEND_NULL_HANDLER,
        ZEND_IS_EQUAL_SPEC_CV_CONST_HANDLER,
-       ZEND_IS_EQUAL_SPEC_CV_TMP_HANDLER,
-       ZEND_IS_EQUAL_SPEC_CV_VAR_HANDLER,
+       ZEND_IS_EQUAL_SPEC_CV_TMPVAR_HANDLER,
+       ZEND_IS_EQUAL_SPEC_CV_TMPVAR_HANDLER,
        ZEND_NULL_HANDLER,
        ZEND_IS_EQUAL_SPEC_CV_CV_HANDLER,
        ZEND_IS_NOT_EQUAL_SPEC_CONST_CONST_HANDLER,
-       ZEND_IS_NOT_EQUAL_SPEC_CONST_TMP_HANDLER,
-       ZEND_IS_NOT_EQUAL_SPEC_CONST_VAR_HANDLER,
+       ZEND_IS_NOT_EQUAL_SPEC_CONST_TMPVAR_HANDLER,
+       ZEND_IS_NOT_EQUAL_SPEC_CONST_TMPVAR_HANDLER,
        ZEND_NULL_HANDLER,
        ZEND_IS_NOT_EQUAL_SPEC_CONST_CV_HANDLER,
-       ZEND_IS_NOT_EQUAL_SPEC_TMP_CONST_HANDLER,
-       ZEND_IS_NOT_EQUAL_SPEC_TMP_TMP_HANDLER,
-       ZEND_IS_NOT_EQUAL_SPEC_TMP_VAR_HANDLER,
+       ZEND_IS_NOT_EQUAL_SPEC_TMPVAR_CONST_HANDLER,
+       ZEND_IS_NOT_EQUAL_SPEC_TMPVAR_TMPVAR_HANDLER,
+       ZEND_IS_NOT_EQUAL_SPEC_TMPVAR_TMPVAR_HANDLER,
        ZEND_NULL_HANDLER,
-       ZEND_IS_NOT_EQUAL_SPEC_TMP_CV_HANDLER,
-       ZEND_IS_NOT_EQUAL_SPEC_VAR_CONST_HANDLER,
-       ZEND_IS_NOT_EQUAL_SPEC_VAR_TMP_HANDLER,
-       ZEND_IS_NOT_EQUAL_SPEC_VAR_VAR_HANDLER,
+       ZEND_IS_NOT_EQUAL_SPEC_TMPVAR_CV_HANDLER,
+       ZEND_IS_NOT_EQUAL_SPEC_TMPVAR_CONST_HANDLER,
+       ZEND_IS_NOT_EQUAL_SPEC_TMPVAR_TMPVAR_HANDLER,
+       ZEND_IS_NOT_EQUAL_SPEC_TMPVAR_TMPVAR_HANDLER,
        ZEND_NULL_HANDLER,
-       ZEND_IS_NOT_EQUAL_SPEC_VAR_CV_HANDLER,
+       ZEND_IS_NOT_EQUAL_SPEC_TMPVAR_CV_HANDLER,
        ZEND_NULL_HANDLER,
        ZEND_NULL_HANDLER,
        ZEND_NULL_HANDLER,
        ZEND_NULL_HANDLER,
        ZEND_NULL_HANDLER,
        ZEND_IS_NOT_EQUAL_SPEC_CV_CONST_HANDLER,
-       ZEND_IS_NOT_EQUAL_SPEC_CV_TMP_HANDLER,
-       ZEND_IS_NOT_EQUAL_SPEC_CV_VAR_HANDLER,
+       ZEND_IS_NOT_EQUAL_SPEC_CV_TMPVAR_HANDLER,
+       ZEND_IS_NOT_EQUAL_SPEC_CV_TMPVAR_HANDLER,
        ZEND_NULL_HANDLER,
        ZEND_IS_NOT_EQUAL_SPEC_CV_CV_HANDLER,
        ZEND_IS_SMALLER_SPEC_CONST_CONST_HANDLER,
-       ZEND_IS_SMALLER_SPEC_CONST_TMP_HANDLER,
-       ZEND_IS_SMALLER_SPEC_CONST_VAR_HANDLER,
+       ZEND_IS_SMALLER_SPEC_CONST_TMPVAR_HANDLER,
+       ZEND_IS_SMALLER_SPEC_CONST_TMPVAR_HANDLER,
        ZEND_NULL_HANDLER,
        ZEND_IS_SMALLER_SPEC_CONST_CV_HANDLER,
-       ZEND_IS_SMALLER_SPEC_TMP_CONST_HANDLER,
-       ZEND_IS_SMALLER_SPEC_TMP_TMP_HANDLER,
-       ZEND_IS_SMALLER_SPEC_TMP_VAR_HANDLER,
+       ZEND_IS_SMALLER_SPEC_TMPVAR_CONST_HANDLER,
+       ZEND_IS_SMALLER_SPEC_TMPVAR_TMPVAR_HANDLER,
+       ZEND_IS_SMALLER_SPEC_TMPVAR_TMPVAR_HANDLER,
        ZEND_NULL_HANDLER,
-       ZEND_IS_SMALLER_SPEC_TMP_CV_HANDLER,
-       ZEND_IS_SMALLER_SPEC_VAR_CONST_HANDLER,
-       ZEND_IS_SMALLER_SPEC_VAR_TMP_HANDLER,
-       ZEND_IS_SMALLER_SPEC_VAR_VAR_HANDLER,
+       ZEND_IS_SMALLER_SPEC_TMPVAR_CV_HANDLER,
+       ZEND_IS_SMALLER_SPEC_TMPVAR_CONST_HANDLER,
+       ZEND_IS_SMALLER_SPEC_TMPVAR_TMPVAR_HANDLER,
+       ZEND_IS_SMALLER_SPEC_TMPVAR_TMPVAR_HANDLER,
        ZEND_NULL_HANDLER,
-       ZEND_IS_SMALLER_SPEC_VAR_CV_HANDLER,
+       ZEND_IS_SMALLER_SPEC_TMPVAR_CV_HANDLER,
        ZEND_NULL_HANDLER,
        ZEND_NULL_HANDLER,
        ZEND_NULL_HANDLER,
        ZEND_NULL_HANDLER,
        ZEND_NULL_HANDLER,
        ZEND_IS_SMALLER_SPEC_CV_CONST_HANDLER,
-       ZEND_IS_SMALLER_SPEC_CV_TMP_HANDLER,
-       ZEND_IS_SMALLER_SPEC_CV_VAR_HANDLER,
+       ZEND_IS_SMALLER_SPEC_CV_TMPVAR_HANDLER,
+       ZEND_IS_SMALLER_SPEC_CV_TMPVAR_HANDLER,
        ZEND_NULL_HANDLER,
        ZEND_IS_SMALLER_SPEC_CV_CV_HANDLER,
        ZEND_IS_SMALLER_OR_EQUAL_SPEC_CONST_CONST_HANDLER,
-       ZEND_IS_SMALLER_OR_EQUAL_SPEC_CONST_TMP_HANDLER,
-       ZEND_IS_SMALLER_OR_EQUAL_SPEC_CONST_VAR_HANDLER,
+       ZEND_IS_SMALLER_OR_EQUAL_SPEC_CONST_TMPVAR_HANDLER,
+       ZEND_IS_SMALLER_OR_EQUAL_SPEC_CONST_TMPVAR_HANDLER,
        ZEND_NULL_HANDLER,
        ZEND_IS_SMALLER_OR_EQUAL_SPEC_CONST_CV_HANDLER,
-       ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMP_CONST_HANDLER,
-       ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMP_TMP_HANDLER,
-       ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMP_VAR_HANDLER,
+       ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVAR_CONST_HANDLER,
+       ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVAR_TMPVAR_HANDLER,
+       ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVAR_TMPVAR_HANDLER,
        ZEND_NULL_HANDLER,
-       ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMP_CV_HANDLER,
-       ZEND_IS_SMALLER_OR_EQUAL_SPEC_VAR_CONST_HANDLER,
-       ZEND_IS_SMALLER_OR_EQUAL_SPEC_VAR_TMP_HANDLER,
-       ZEND_IS_SMALLER_OR_EQUAL_SPEC_VAR_VAR_HANDLER,
+       ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVAR_CV_HANDLER,
+       ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVAR_CONST_HANDLER,
+       ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVAR_TMPVAR_HANDLER,
+       ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVAR_TMPVAR_HANDLER,
        ZEND_NULL_HANDLER,
-       ZEND_IS_SMALLER_OR_EQUAL_SPEC_VAR_CV_HANDLER,
+       ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVAR_CV_HANDLER,
        ZEND_NULL_HANDLER,
        ZEND_NULL_HANDLER,
        ZEND_NULL_HANDLER,
        ZEND_NULL_HANDLER,
        ZEND_NULL_HANDLER,
        ZEND_IS_SMALLER_OR_EQUAL_SPEC_CV_CONST_HANDLER,
-       ZEND_IS_SMALLER_OR_EQUAL_SPEC_CV_TMP_HANDLER,
-       ZEND_IS_SMALLER_OR_EQUAL_SPEC_CV_VAR_HANDLER,
+       ZEND_IS_SMALLER_OR_EQUAL_SPEC_CV_TMPVAR_HANDLER,
+       ZEND_IS_SMALLER_OR_EQUAL_SPEC_CV_TMPVAR_HANDLER,
        ZEND_NULL_HANDLER,
        ZEND_IS_SMALLER_OR_EQUAL_SPEC_CV_CV_HANDLER,
        ZEND_CAST_SPEC_CONST_HANDLER,
@@ -46385,16 +45507,16 @@ void zend_init_opcodes_handlers(void)
        ZEND_NULL_HANDLER,
        ZEND_NULL_HANDLER,
        ZEND_NULL_HANDLER,
-       ZEND_FREE_SPEC_TMP_HANDLER,
-       ZEND_FREE_SPEC_TMP_HANDLER,
-       ZEND_FREE_SPEC_TMP_HANDLER,
-       ZEND_FREE_SPEC_TMP_HANDLER,
-       ZEND_FREE_SPEC_TMP_HANDLER,
-       ZEND_FREE_SPEC_VAR_HANDLER,
-       ZEND_FREE_SPEC_VAR_HANDLER,
-       ZEND_FREE_SPEC_VAR_HANDLER,
-       ZEND_FREE_SPEC_VAR_HANDLER,
-       ZEND_FREE_SPEC_VAR_HANDLER,
+       ZEND_FREE_SPEC_TMPVAR_HANDLER,
+       ZEND_FREE_SPEC_TMPVAR_HANDLER,
+       ZEND_FREE_SPEC_TMPVAR_HANDLER,
+       ZEND_FREE_SPEC_TMPVAR_HANDLER,
+       ZEND_FREE_SPEC_TMPVAR_HANDLER,
+       ZEND_FREE_SPEC_TMPVAR_HANDLER,
+       ZEND_FREE_SPEC_TMPVAR_HANDLER,
+       ZEND_FREE_SPEC_TMPVAR_HANDLER,
+       ZEND_FREE_SPEC_TMPVAR_HANDLER,
+       ZEND_FREE_SPEC_TMPVAR_HANDLER,
        ZEND_NULL_HANDLER,
        ZEND_NULL_HANDLER,
        ZEND_NULL_HANDLER,
index 5836adaefb836c4f3c4b370d8c5344e24b0a2bc1..63cce6e532b3d1f35145c9cd2afe7d38c3925e18 100644 (file)
@@ -63,6 +63,16 @@ $op_types = array(
        "CV"
 );
 
+$op_types_ex = array(
+       "ANY",
+       "CONST",
+       "TMP",
+       "VAR",
+       "UNUSED",
+       "CV",
+       "TMPVAR",
+);
+
 $prefix = array(
        "ANY"    => "",
        "TMP"    => "_TMP",
@@ -70,6 +80,7 @@ $prefix = array(
        "CONST"  => "_CONST",
        "UNUSED" => "_UNUSED",
        "CV"     => "_CV",
+       "TMPVAR" => "_TMPVAR",
 );
 
 $typecode = array(
@@ -79,6 +90,7 @@ $typecode = array(
        "CONST"  => 0,
        "UNUSED" => 3,
        "CV"     => 4,
+       "TMPVAR" => 0,
 );
 
 $op1_type = array(
@@ -88,6 +100,7 @@ $op1_type = array(
        "CONST"  => "IS_CONST",
        "UNUSED" => "IS_UNUSED",
        "CV"     => "IS_CV",
+       "TMPVAR" => "???",
 );
 
 $op2_type = array(
@@ -97,6 +110,7 @@ $op2_type = array(
        "CONST"  => "IS_CONST",
        "UNUSED" => "IS_UNUSED",
        "CV"     => "IS_CV",
+       "TMPVAR" => "???",
 );
 
 $op1_free = array(
@@ -106,6 +120,7 @@ $op1_free = array(
        "CONST"  => "0",
        "UNUSED" => "0",
        "CV"     => "0",
+       "TMPVAR" => "???",
 );
 
 $op2_free = array(
@@ -115,6 +130,7 @@ $op2_free = array(
        "CONST"  => "0",
        "UNUSED" => "0",
        "CV"     => "0",
+       "TMPVAR" => "???",
 );
 
 $op1_get_zval_ptr = array(
@@ -124,6 +140,7 @@ $op1_get_zval_ptr = array(
        "CONST"  => "opline->op1.zv",
        "UNUSED" => "NULL",
        "CV"     => "_get_zval_ptr_cv_\\1(execute_data, opline->op1.var TSRMLS_CC)",
+       "TMPVAR" => "_get_zval_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC)",
 );
 
 $op2_get_zval_ptr = array(
@@ -133,6 +150,7 @@ $op2_get_zval_ptr = array(
        "CONST"  => "opline->op2.zv",
        "UNUSED" => "NULL",
        "CV"     => "_get_zval_ptr_cv_\\1(execute_data, opline->op2.var TSRMLS_CC)",
+       "TMPVAR" => "_get_zval_ptr_var(opline->op2.var, execute_data, &free_op2 TSRMLS_CC)",
 );
 
 $op1_get_zval_ptr_ptr = array(
@@ -142,6 +160,7 @@ $op1_get_zval_ptr_ptr = array(
        "CONST"  => "NULL",
        "UNUSED" => "NULL",
        "CV"     => "_get_zval_ptr_cv_\\1(execute_data, opline->op1.var TSRMLS_CC)",
+       "TMPVAR" => "???",
 );
 
 $op2_get_zval_ptr_ptr = array(
@@ -151,6 +170,7 @@ $op2_get_zval_ptr_ptr = array(
        "CONST"  => "NULL",
        "UNUSED" => "NULL",
        "CV"     => "_get_zval_ptr_cv_\\1(execute_data, opline->op2.var TSRMLS_CC)",
+       "TMPVAR" => "???",
 );
 
 $op1_get_zval_ptr_deref = array(
@@ -160,6 +180,7 @@ $op1_get_zval_ptr_deref = array(
        "CONST"  => "opline->op1.zv",
        "UNUSED" => "NULL",
        "CV"     => "_get_zval_ptr_cv_deref_\\1(execute_data, opline->op1.var TSRMLS_CC)",
+       "TMPVAR" => "???",
 );
 
 $op2_get_zval_ptr_deref = array(
@@ -169,6 +190,7 @@ $op2_get_zval_ptr_deref = array(
        "CONST"  => "opline->op2.zv",
        "UNUSED" => "NULL",
        "CV"     => "_get_zval_ptr_cv_deref_\\1(execute_data, opline->op2.var TSRMLS_CC)",
+       "TMPVAR" => "???",
 );
 
 $op1_get_zval_ptr_ptr_undef = array(
@@ -178,6 +200,7 @@ $op1_get_zval_ptr_ptr_undef = array(
        "CONST"  => "NULL",
        "UNUSED" => "NULL",
        "CV"     => "_get_zval_ptr_cv_undef_\\1(execute_data, opline->op1.var TSRMLS_CC)",
+       "TMPVAR" => "???",
 );
 
 $op2_get_zval_ptr_ptr_undef = array(
@@ -187,6 +210,7 @@ $op2_get_zval_ptr_ptr_undef = array(
        "CONST"  => "NULL",
        "UNUSED" => "NULL",
        "CV"     => "_get_zval_ptr_cv_undef_\\1(execute_data, opline->op2.var TSRMLS_CC)",
+       "TMPVAR" => "???",
 );
 
 $op1_get_obj_zval_ptr = array(
@@ -196,6 +220,7 @@ $op1_get_obj_zval_ptr = array(
        "CONST"  => "opline->op1.zv",
        "UNUSED" => "_get_obj_zval_ptr_unused(execute_data)",
        "CV"     => "_get_zval_ptr_cv_\\1(execute_data, opline->op1.var TSRMLS_CC)",
+       "TMPVAR" => "_get_zval_ptr_var(opline->op1.var, execute_data, &free_op1)",
 );
 
 $op2_get_obj_zval_ptr = array(
@@ -205,6 +230,7 @@ $op2_get_obj_zval_ptr = array(
        "CONST"  => "opline->op2.zv",
        "UNUSED" => "_get_obj_zval_ptr_unused(execute_data)",
        "CV"     => "_get_zval_ptr_cv_\\1(execute_data, opline->op2.var TSRMLS_CC)",
+       "TMPVAR" => "_get_zval_ptr_var(opline->op2.var, execute_data, &free_op2)",
 );
 
 $op1_get_obj_zval_ptr_deref = array(
@@ -214,6 +240,7 @@ $op1_get_obj_zval_ptr_deref = array(
        "CONST"  => "opline->op1.zv",
        "UNUSED" => "_get_obj_zval_ptr_unused(execute_data)",
        "CV"     => "_get_zval_ptr_cv_deref_\\1(execute_data, opline->op1.var TSRMLS_CC)",
+       "TMPVAR" => "???",
 );
 
 $op2_get_obj_zval_ptr_deref = array(
@@ -223,6 +250,7 @@ $op2_get_obj_zval_ptr_deref = array(
        "CONST"  => "opline->op2.zv",
        "UNUSED" => "_get_obj_zval_ptr_unused(execute_data)",
        "CV"     => "_get_zval_ptr_cv_deref_\\1(execute_data, opline->op2.var TSRMLS_CC)",
+       "TMPVAR" => "???",
 );
 
 $op1_get_obj_zval_ptr_ptr = array(
@@ -232,6 +260,7 @@ $op1_get_obj_zval_ptr_ptr = array(
        "CONST"  => "NULL",
        "UNUSED" => "_get_obj_zval_ptr_unused(execute_data)",
        "CV"     => "_get_zval_ptr_cv_\\1(execute_data, opline->op1.var TSRMLS_CC)",
+       "TMPVAR" => "???",
 );
 
 $op2_get_obj_zval_ptr_ptr = array(
@@ -241,6 +270,7 @@ $op2_get_obj_zval_ptr_ptr = array(
        "CONST"  => "NULL",
        "UNUSED" => "_get_obj_zval_ptr_unused(execute_data)",
        "CV"     => "_get_zval_ptr_cv_\\1(execute_data, opline->op2.var TSRMLS_CC)",
+       "TMPVAR" => "???",
 );
 
 $op1_free_op = array(
@@ -250,6 +280,7 @@ $op1_free_op = array(
        "CONST"  => "",
        "UNUSED" => "",
        "CV"     => "",
+       "TMPVAR" => "zval_ptr_dtor_nogc(free_op1)",
 );
 
 $op2_free_op = array(
@@ -259,6 +290,7 @@ $op2_free_op = array(
        "CONST"  => "",
        "UNUSED" => "",
        "CV"     => "",
+       "TMPVAR" => "zval_ptr_dtor_nogc(free_op2)",
 );
 
 $op1_free_op_if_var = array(
@@ -268,6 +300,7 @@ $op1_free_op_if_var = array(
        "CONST"  => "",
        "UNUSED" => "",
        "CV"     => "",
+       "TMPVAR" => "???",
 );
 
 $op2_free_op_if_var = array(
@@ -277,6 +310,7 @@ $op2_free_op_if_var = array(
        "CONST"  => "",
        "UNUSED" => "",
        "CV"     => "",
+       "TMPVAR" => "???",
 );
 
 $op1_free_op_var_ptr = array(
@@ -286,6 +320,7 @@ $op1_free_op_var_ptr = array(
        "CONST"  => "",
        "UNUSED" => "",
        "CV"     => "",
+       "TMPVAR" => "???",
 );
 
 $op2_free_op_var_ptr = array(
@@ -295,6 +330,7 @@ $op2_free_op_var_ptr = array(
        "CONST"  => "",
        "UNUSED" => "",
        "CV"     => "",
+       "TMPVAR" => "???",
 );
 
 $list    = array(); // list of opcode handlers and helpers in original order
@@ -650,16 +686,24 @@ function gen_labels($f, $spec, $kind, $prolog) {
                        foreach($op1t as $op1) {
                                if ($op1 != "ANY") {
                                        if (!isset($dsc["op1"][$op1])) {
-                                               // Try to use unspecialized handler
-                                               $op1 = "ANY";
+                                               if (($op1 == "TMP" || $op1 == "VAR") && isset($dsc["op1"]["TMPVAR"])) {
+                                                       $op1 = "TMPVAR";
+                                               } else {
+                                                       // Try to use unspecialized handler
+                                                       $op1 = "ANY";
+                                               }
                                        }
                                        $op2t = $op_types;
                                        // For each op2.op_type except ANY
                                        foreach($op2t as $op2) {
                                                if ($op2 != "ANY") {
                                                        if (!isset($dsc["op2"][$op2])) {
-                                                               // Try to use unspecialized handler
-                                                               $op2 = "ANY";
+                                                               if (($op2 == "TMP" || $op2 == "VAR") && isset($dsc["op2"]["TMPVAR"])) {
+                                                                       $op2 = "TMPVAR";
+                                                               } else {
+                                                                       // Try to use unspecialized handler
+                                                                       $op2 = "ANY";
+                                                               }
                                                        }
                                                        // Check if specialized handler is defined
                                                        if (isset($dsc["op1"][$op1]) &&
@@ -764,14 +808,14 @@ function gen_null_handler($f) {
 
 // Generates all opcode handlers and helpers (specialized or unspecilaized)
 function gen_executor_code($f, $spec, $kind, $prolog) {
-       global $list, $opcodes, $helpers, $op_types;
+       global $list, $opcodes, $helpers, $op_types_ex;
 
        if ($spec) {
                // Produce specialized executor
-               $op1t = $op_types;
+               $op1t = $op_types_ex;
                // for each op1.op_type
                foreach($op1t as $op1) {
-                       $op2t = $op_types;
+                       $op2t = $op_types_ex;
                        // for each op2.op_type
                        foreach($op2t as $op2) {
                                // for each handlers in helpers in original order