]> granicus.if.org Git - php/commitdiff
Fixed dereferencing of value returned from function (foo()[1] = ...)
authorDmitry Stogov <dmitry@zend.com>
Tue, 4 Mar 2014 13:23:23 +0000 (17:23 +0400)
committerDmitry Stogov <dmitry@zend.com>
Tue, 4 Mar 2014 13:23:23 +0000 (17:23 +0400)
Zend/zend.h
Zend/zend_execute.c
Zend/zend_vm_def.h
Zend/zend_vm_execute.h

index 922d937eb81a80761d61a73682137bf1ee87f938..27caadc51cb2bd0c45396f87639136a407f155ef 100644 (file)
@@ -774,9 +774,7 @@ END_EXTERN_C()
        } while (0)
 
 #define READY_TO_DESTROY(zv) \
-       (Z_REFCOUNT_P(zv) == 1 && \
-        (Z_TYPE_P(zv) != IS_OBJECT || \
-         zend_objects_store_get_refcount(zv TSRMLS_CC) == 1))
+       (Z_REFCOUNTED_P(zv) && Z_REFCOUNT_P(zv) == 1)
 
 #define ZEND_MAX_RESERVED_RESOURCES    4
 
index a2d4be204ac704ce35c6b80f124536f2c15b147b..955249acb4103c87594f88885d107ea55e205413 100644 (file)
@@ -113,20 +113,11 @@ static zend_always_inline void zend_pzval_unlock_free_func(zval *z TSRMLS_DC)
 #define PZVAL_LOCK(z) if (Z_REFCOUNTED_P(z)) Z_ADDREF_P((z))
 #define SELECTIVE_PZVAL_LOCK(pzv, opline)      if (RETURN_VALUE_USED(opline)) { PZVAL_LOCK(pzv); }
 
-#define EXTRACT_ZVAL_PTR(t) do {                               \
-               temp_variable *__t = (t);                               \
-               __t->var.ptr = *__t->var.ptr_ptr;               \
-               __t->var.ptr_ptr = &__t->var.ptr;               \
-               if (!PZVAL_IS_REF(__t->var.ptr) &&              \
-                   Z_REFCOUNT_P(__t->var.ptr) > 2) {   \
-                       SEPARATE_ZVAL(__t->var.ptr_ptr);        \
-               }                                                                               \
-       } while (0)
-
-#define AI_SET_PTR(t, val) do {                                \
-               temp_variable *__t = (t);                       \
-               __t->var.ptr = (val);                           \
-               __t->var.ptr_ptr = &__t->var.ptr;       \
+#define EXTRACT_ZVAL_PTR(zv) do {                                              \
+               zval *__zv = (zv);                                                              \
+               if (Z_TYPE_P(__zv) == IS_INDIRECT) {                    \
+                       ZVAL_COPY_VALUE(__zv, Z_INDIRECT_P(__zv));      \
+               }                                                                                               \
        } while (0)
 
 #define FREE_OP(should_free) \
index 8c272a5494fae63b1b9d246d5f7056dfa2e2d4a1..11f3e4c2fccb0ce48878112471e0d0b060c19ec5 100644 (file)
@@ -1188,9 +1188,9 @@ ZEND_VM_HANDLER(84, ZEND_FETCH_DIM_W, VAR|CV, CONST|TMP|VAR|UNUSED|CV)
        }
        zend_fetch_dimension_address(EX_VAR(opline->result.var), container, GET_OP2_ZVAL_PTR(BP_VAR_R), OP2_TYPE, BP_VAR_W TSRMLS_CC);
        FREE_OP2();
-//???  if (OP1_TYPE == IS_VAR && OP1_FREE && READY_TO_DESTROY(free_op1.var)) {
-//???          EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
-//???  }
+       if (OP1_TYPE == IS_VAR && OP1_FREE && READY_TO_DESTROY(free_op1.var)) {
+               EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
+       }
 
        FREE_OP1_VAR_PTR();
 
@@ -1230,9 +1230,9 @@ ZEND_VM_HANDLER(87, ZEND_FETCH_DIM_RW, VAR|CV, CONST|TMP|VAR|UNUSED|CV)
        }
        zend_fetch_dimension_address(EX_VAR(opline->result.var), container, GET_OP2_ZVAL_PTR(BP_VAR_R), OP2_TYPE, BP_VAR_RW TSRMLS_CC);
        FREE_OP2();
-//???  if (OP1_TYPE == IS_VAR && OP1_FREE && READY_TO_DESTROY(free_op1.var)) {
-//???          EXTRACT_ZVAL_PTR(&EX_T(opline->result.var));
-//???  }
+       if (OP1_TYPE == IS_VAR && OP1_FREE && READY_TO_DESTROY(free_op1.var)) {
+               EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
+       }
        FREE_OP1_VAR_PTR();
        CHECK_EXCEPTION();
        ZEND_VM_NEXT_OPCODE();
@@ -1267,9 +1267,9 @@ ZEND_VM_HANDLER(93, ZEND_FETCH_DIM_FUNC_ARG, VAR|CV, CONST|TMP|VAR|UNUSED|CV)
                        zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
                }
                zend_fetch_dimension_address(EX_VAR(opline->result.var), container, GET_OP2_ZVAL_PTR(BP_VAR_R), OP2_TYPE, BP_VAR_W TSRMLS_CC);
-//???          if (OP1_TYPE == IS_VAR && OP1_FREE && READY_TO_DESTROY(free_op1.var)) {
-//???                  EXTRACT_ZVAL_PTR(&EX_T(opline->result.var));
-//???          }
+               if (OP1_TYPE == IS_VAR && OP1_FREE && READY_TO_DESTROY(free_op1.var)) {
+                       EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
+               }
                FREE_OP2();
                FREE_OP1_VAR_PTR();
        } else {
@@ -1302,9 +1302,9 @@ ZEND_VM_HANDLER(96, ZEND_FETCH_DIM_UNSET, VAR|CV, CONST|TMP|VAR|CV)
        }
        zend_fetch_dimension_address(EX_VAR(opline->result.var), container, GET_OP2_ZVAL_PTR(BP_VAR_R), OP2_TYPE, BP_VAR_UNSET TSRMLS_CC);
        FREE_OP2();
-//???  if (OP1_TYPE == IS_VAR && OP1_FREE && READY_TO_DESTROY(free_op1.var)) {
-//???          EXTRACT_ZVAL_PTR(&EX_T(opline->result.var));
-//???  }
+       if (OP1_TYPE == IS_VAR && OP1_FREE && READY_TO_DESTROY(free_op1.var)) {
+               EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
+       }
        FREE_OP1_VAR_PTR();
        if (UNEXPECTED(Z_TYPE_P(EX_VAR(opline->result.var)) == IS_STR_OFFSET)) {
                zend_error_noreturn(E_ERROR, "Cannot unset string offsets");
@@ -1402,9 +1402,9 @@ ZEND_VM_HANDLER(85, ZEND_FETCH_OBJ_W, VAR|UNUSED|CV, CONST|TMP|VAR|CV)
                FREE_OP2();
 //???  }
 
-//???  if (OP1_TYPE == IS_VAR && OP1_FREE && READY_TO_DESTROY(free_op1.var)) {
-//???          EXTRACT_ZVAL_PTR(&EX_T(opline->result.var));
-//???  }
+       if (OP1_TYPE == IS_VAR && OP1_FREE && READY_TO_DESTROY(free_op1.var)) {
+               EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
+       }
        FREE_OP1_VAR_PTR();
 
        /* We are going to assign the result by reference */
@@ -1453,9 +1453,9 @@ ZEND_VM_HANDLER(88, ZEND_FETCH_OBJ_RW, VAR|UNUSED|CV, CONST|TMP|VAR|CV)
                FREE_OP2();
 //???  }
 
-//???  if (OP1_TYPE == IS_VAR && OP1_FREE && READY_TO_DESTROY(free_op1.var)) {
-//???          EXTRACT_ZVAL_PTR(&EX_T(opline->result.var));
-//???  }
+       if (OP1_TYPE == IS_VAR && OP1_FREE && READY_TO_DESTROY(free_op1.var)) {
+               EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
+       }
        FREE_OP1_VAR_PTR();
        CHECK_EXCEPTION();
        ZEND_VM_NEXT_OPCODE();
@@ -1530,9 +1530,9 @@ ZEND_VM_HANDLER(94, ZEND_FETCH_OBJ_FUNC_ARG, VAR|UNUSED|CV, CONST|TMP|VAR|CV)
                        FREE_OP2();
 //???          }
 
-//???          if (OP1_TYPE == IS_VAR && OP1_FREE && READY_TO_DESTROY(free_op1.var)) {
-//???                  EXTRACT_ZVAL_PTR(&EX_T(opline->result.var));
-//???          }
+               if (OP1_TYPE == IS_VAR && OP1_FREE && READY_TO_DESTROY(free_op1.var)) {
+                       EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
+               }
                FREE_OP1_VAR_PTR();
                CHECK_EXCEPTION();
                ZEND_VM_NEXT_OPCODE();
@@ -1567,9 +1567,9 @@ ZEND_VM_HANDLER(97, ZEND_FETCH_OBJ_UNSET, VAR|UNUSED|CV, CONST|TMP|VAR|CV)
                FREE_OP2();
 //???  }
 
-//???  if (OP1_TYPE == IS_VAR && OP1_FREE && READY_TO_DESTROY(free_op1.var)) {
-//???          EXTRACT_ZVAL_PTR(&EX_T(opline->result.var));
-//???  }
+       if (OP1_TYPE == IS_VAR && OP1_FREE && READY_TO_DESTROY(free_op1.var)) {
+               EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
+       }
        FREE_OP1_VAR_PTR();
 
        retval_ptr = EX_VAR(opline->result.var);
index a1779caf7747bcbae3a48f69e043fe40f713c251..cbe5aa07acac3253bd97333160ecbbcbe8e1b101 100644 (file)
@@ -14517,9 +14517,9 @@ static int ZEND_FASTCALL  ZEND_FETCH_DIM_W_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HA
        }
        zend_fetch_dimension_address(EX_VAR(opline->result.var), container, opline->op2.zv, IS_CONST, BP_VAR_W TSRMLS_CC);
 
-//???  if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) {
-//???          EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
-//???  }
+       if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) {
+               EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
+       }
 
        if (free_op1.var) {zval_ptr_dtor_nogc(free_op1.var);};
 
@@ -14559,9 +14559,9 @@ static int ZEND_FASTCALL  ZEND_FETCH_DIM_RW_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_H
        }
        zend_fetch_dimension_address(EX_VAR(opline->result.var), container, opline->op2.zv, IS_CONST, BP_VAR_RW TSRMLS_CC);
 
-//???  if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) {
-//???          EXTRACT_ZVAL_PTR(&EX_T(opline->result.var));
-//???  }
+       if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) {
+               EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
+       }
        if (free_op1.var) {zval_ptr_dtor_nogc(free_op1.var);};
        CHECK_EXCEPTION();
        ZEND_VM_NEXT_OPCODE();
@@ -14596,9 +14596,9 @@ static int ZEND_FASTCALL  ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_CONST_HANDLER(ZEND_OP
                        zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
                }
                zend_fetch_dimension_address(EX_VAR(opline->result.var), container, opline->op2.zv, IS_CONST, BP_VAR_W TSRMLS_CC);
-//???          if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) {
-//???                  EXTRACT_ZVAL_PTR(&EX_T(opline->result.var));
-//???          }
+               if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) {
+                       EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
+               }
 
                if (free_op1.var) {zval_ptr_dtor_nogc(free_op1.var);};
        } else {
@@ -14631,9 +14631,9 @@ static int ZEND_FASTCALL  ZEND_FETCH_DIM_UNSET_SPEC_VAR_CONST_HANDLER(ZEND_OPCOD
        }
        zend_fetch_dimension_address(EX_VAR(opline->result.var), container, opline->op2.zv, IS_CONST, BP_VAR_UNSET TSRMLS_CC);
 
-//???  if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) {
-//???          EXTRACT_ZVAL_PTR(&EX_T(opline->result.var));
-//???  }
+       if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) {
+               EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
+       }
        if (free_op1.var) {zval_ptr_dtor_nogc(free_op1.var);};
        if (UNEXPECTED(Z_TYPE_P(EX_VAR(opline->result.var)) == IS_STR_OFFSET)) {
                zend_error_noreturn(E_ERROR, "Cannot unset string offsets");
@@ -14731,9 +14731,9 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_W_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HA
 
 //???  }
 
-//???  if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) {
-//???          EXTRACT_ZVAL_PTR(&EX_T(opline->result.var));
-//???  }
+       if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) {
+               EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
+       }
        if (free_op1.var) {zval_ptr_dtor_nogc(free_op1.var);};
 
        /* We are going to assign the result by reference */
@@ -14782,9 +14782,9 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_RW_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_H
 
 //???  }
 
-//???  if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) {
-//???          EXTRACT_ZVAL_PTR(&EX_T(opline->result.var));
-//???  }
+       if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) {
+               EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
+       }
        if (free_op1.var) {zval_ptr_dtor_nogc(free_op1.var);};
        CHECK_EXCEPTION();
        ZEND_VM_NEXT_OPCODE();
@@ -14859,9 +14859,9 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_FUNC_ARG_SPEC_VAR_CONST_HANDLER(ZEND_OP
 
 //???          }
 
-//???          if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) {
-//???                  EXTRACT_ZVAL_PTR(&EX_T(opline->result.var));
-//???          }
+               if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) {
+                       EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
+               }
                if (free_op1.var) {zval_ptr_dtor_nogc(free_op1.var);};
                CHECK_EXCEPTION();
                ZEND_VM_NEXT_OPCODE();
@@ -14896,9 +14896,9 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_UNSET_SPEC_VAR_CONST_HANDLER(ZEND_OPCOD
 
 //???  }
 
-//???  if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) {
-//???          EXTRACT_ZVAL_PTR(&EX_T(opline->result.var));
-//???  }
+       if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) {
+               EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
+       }
        if (free_op1.var) {zval_ptr_dtor_nogc(free_op1.var);};
 
        retval_ptr = EX_VAR(opline->result.var);
@@ -16803,9 +16803,9 @@ static int ZEND_FASTCALL  ZEND_FETCH_DIM_W_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HAND
        }
        zend_fetch_dimension_address(EX_VAR(opline->result.var), container, _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2 TSRMLS_CC), IS_TMP_VAR, BP_VAR_W TSRMLS_CC);
        zval_dtor(free_op2.var);
-//???  if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) {
-//???          EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
-//???  }
+       if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) {
+               EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
+       }
 
        if (free_op1.var) {zval_ptr_dtor_nogc(free_op1.var);};
 
@@ -16845,9 +16845,9 @@ static int ZEND_FASTCALL  ZEND_FETCH_DIM_RW_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HAN
        }
        zend_fetch_dimension_address(EX_VAR(opline->result.var), container, _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2 TSRMLS_CC), IS_TMP_VAR, BP_VAR_RW TSRMLS_CC);
        zval_dtor(free_op2.var);
-//???  if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) {
-//???          EXTRACT_ZVAL_PTR(&EX_T(opline->result.var));
-//???  }
+       if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) {
+               EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
+       }
        if (free_op1.var) {zval_ptr_dtor_nogc(free_op1.var);};
        CHECK_EXCEPTION();
        ZEND_VM_NEXT_OPCODE();
@@ -16882,9 +16882,9 @@ static int ZEND_FASTCALL  ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_TMP_HANDLER(ZEND_OPCO
                        zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
                }
                zend_fetch_dimension_address(EX_VAR(opline->result.var), container, _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2 TSRMLS_CC), IS_TMP_VAR, BP_VAR_W TSRMLS_CC);
-//???          if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) {
-//???                  EXTRACT_ZVAL_PTR(&EX_T(opline->result.var));
-//???          }
+               if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) {
+                       EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
+               }
                zval_dtor(free_op2.var);
                if (free_op1.var) {zval_ptr_dtor_nogc(free_op1.var);};
        } else {
@@ -16917,9 +16917,9 @@ static int ZEND_FASTCALL  ZEND_FETCH_DIM_UNSET_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_
        }
        zend_fetch_dimension_address(EX_VAR(opline->result.var), container, _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2 TSRMLS_CC), IS_TMP_VAR, BP_VAR_UNSET TSRMLS_CC);
        zval_dtor(free_op2.var);
-//???  if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) {
-//???          EXTRACT_ZVAL_PTR(&EX_T(opline->result.var));
-//???  }
+       if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) {
+               EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
+       }
        if (free_op1.var) {zval_ptr_dtor_nogc(free_op1.var);};
        if (UNEXPECTED(Z_TYPE_P(EX_VAR(opline->result.var)) == IS_STR_OFFSET)) {
                zend_error_noreturn(E_ERROR, "Cannot unset string offsets");
@@ -17017,9 +17017,9 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_W_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HAND
                zval_dtor(free_op2.var);
 //???  }
 
-//???  if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) {
-//???          EXTRACT_ZVAL_PTR(&EX_T(opline->result.var));
-//???  }
+       if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) {
+               EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
+       }
        if (free_op1.var) {zval_ptr_dtor_nogc(free_op1.var);};
 
        /* We are going to assign the result by reference */
@@ -17068,9 +17068,9 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_RW_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HAN
                zval_dtor(free_op2.var);
 //???  }
 
-//???  if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) {
-//???          EXTRACT_ZVAL_PTR(&EX_T(opline->result.var));
-//???  }
+       if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) {
+               EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
+       }
        if (free_op1.var) {zval_ptr_dtor_nogc(free_op1.var);};
        CHECK_EXCEPTION();
        ZEND_VM_NEXT_OPCODE();
@@ -17145,9 +17145,9 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_FUNC_ARG_SPEC_VAR_TMP_HANDLER(ZEND_OPCO
                        zval_dtor(free_op2.var);
 //???          }
 
-//???          if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) {
-//???                  EXTRACT_ZVAL_PTR(&EX_T(opline->result.var));
-//???          }
+               if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) {
+                       EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
+               }
                if (free_op1.var) {zval_ptr_dtor_nogc(free_op1.var);};
                CHECK_EXCEPTION();
                ZEND_VM_NEXT_OPCODE();
@@ -17182,9 +17182,9 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_UNSET_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_
                zval_dtor(free_op2.var);
 //???  }
 
-//???  if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) {
-//???          EXTRACT_ZVAL_PTR(&EX_T(opline->result.var));
-//???  }
+       if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) {
+               EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
+       }
        if (free_op1.var) {zval_ptr_dtor_nogc(free_op1.var);};
 
        retval_ptr = EX_VAR(opline->result.var);
@@ -18986,9 +18986,9 @@ static int ZEND_FASTCALL  ZEND_FETCH_DIM_W_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HAND
        }
        zend_fetch_dimension_address(EX_VAR(opline->result.var), container, _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2 TSRMLS_CC), IS_VAR, BP_VAR_W TSRMLS_CC);
        zval_ptr_dtor_nogc(free_op2.var);
-//???  if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) {
-//???          EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
-//???  }
+       if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) {
+               EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
+       }
 
        if (free_op1.var) {zval_ptr_dtor_nogc(free_op1.var);};
 
@@ -19028,9 +19028,9 @@ static int ZEND_FASTCALL  ZEND_FETCH_DIM_RW_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HAN
        }
        zend_fetch_dimension_address(EX_VAR(opline->result.var), container, _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2 TSRMLS_CC), IS_VAR, BP_VAR_RW TSRMLS_CC);
        zval_ptr_dtor_nogc(free_op2.var);
-//???  if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) {
-//???          EXTRACT_ZVAL_PTR(&EX_T(opline->result.var));
-//???  }
+       if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) {
+               EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
+       }
        if (free_op1.var) {zval_ptr_dtor_nogc(free_op1.var);};
        CHECK_EXCEPTION();
        ZEND_VM_NEXT_OPCODE();
@@ -19065,9 +19065,9 @@ static int ZEND_FASTCALL  ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_VAR_HANDLER(ZEND_OPCO
                        zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
                }
                zend_fetch_dimension_address(EX_VAR(opline->result.var), container, _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2 TSRMLS_CC), IS_VAR, BP_VAR_W TSRMLS_CC);
-//???          if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) {
-//???                  EXTRACT_ZVAL_PTR(&EX_T(opline->result.var));
-//???          }
+               if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) {
+                       EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
+               }
                zval_ptr_dtor_nogc(free_op2.var);
                if (free_op1.var) {zval_ptr_dtor_nogc(free_op1.var);};
        } else {
@@ -19100,9 +19100,9 @@ static int ZEND_FASTCALL  ZEND_FETCH_DIM_UNSET_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_
        }
        zend_fetch_dimension_address(EX_VAR(opline->result.var), container, _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2 TSRMLS_CC), IS_VAR, BP_VAR_UNSET TSRMLS_CC);
        zval_ptr_dtor_nogc(free_op2.var);
-//???  if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) {
-//???          EXTRACT_ZVAL_PTR(&EX_T(opline->result.var));
-//???  }
+       if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) {
+               EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
+       }
        if (free_op1.var) {zval_ptr_dtor_nogc(free_op1.var);};
        if (UNEXPECTED(Z_TYPE_P(EX_VAR(opline->result.var)) == IS_STR_OFFSET)) {
                zend_error_noreturn(E_ERROR, "Cannot unset string offsets");
@@ -19200,9 +19200,9 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_W_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HAND
                zval_ptr_dtor_nogc(free_op2.var);
 //???  }
 
-//???  if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) {
-//???          EXTRACT_ZVAL_PTR(&EX_T(opline->result.var));
-//???  }
+       if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) {
+               EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
+       }
        if (free_op1.var) {zval_ptr_dtor_nogc(free_op1.var);};
 
        /* We are going to assign the result by reference */
@@ -19251,9 +19251,9 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_RW_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HAN
                zval_ptr_dtor_nogc(free_op2.var);
 //???  }
 
-//???  if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) {
-//???          EXTRACT_ZVAL_PTR(&EX_T(opline->result.var));
-//???  }
+       if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) {
+               EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
+       }
        if (free_op1.var) {zval_ptr_dtor_nogc(free_op1.var);};
        CHECK_EXCEPTION();
        ZEND_VM_NEXT_OPCODE();
@@ -19328,9 +19328,9 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_FUNC_ARG_SPEC_VAR_VAR_HANDLER(ZEND_OPCO
                        zval_ptr_dtor_nogc(free_op2.var);
 //???          }
 
-//???          if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) {
-//???                  EXTRACT_ZVAL_PTR(&EX_T(opline->result.var));
-//???          }
+               if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) {
+                       EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
+               }
                if (free_op1.var) {zval_ptr_dtor_nogc(free_op1.var);};
                CHECK_EXCEPTION();
                ZEND_VM_NEXT_OPCODE();
@@ -19365,9 +19365,9 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_UNSET_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_
                zval_ptr_dtor_nogc(free_op2.var);
 //???  }
 
-//???  if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) {
-//???          EXTRACT_ZVAL_PTR(&EX_T(opline->result.var));
-//???  }
+       if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) {
+               EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
+       }
        if (free_op1.var) {zval_ptr_dtor_nogc(free_op1.var);};
 
        retval_ptr = EX_VAR(opline->result.var);
@@ -20907,9 +20907,9 @@ static int ZEND_FASTCALL  ZEND_FETCH_DIM_W_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_H
        }
        zend_fetch_dimension_address(EX_VAR(opline->result.var), container, NULL, IS_UNUSED, BP_VAR_W TSRMLS_CC);
 
-//???  if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) {
-//???          EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
-//???  }
+       if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) {
+               EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
+       }
 
        if (free_op1.var) {zval_ptr_dtor_nogc(free_op1.var);};
 
@@ -20949,9 +20949,9 @@ static int ZEND_FASTCALL  ZEND_FETCH_DIM_RW_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_
        }
        zend_fetch_dimension_address(EX_VAR(opline->result.var), container, NULL, IS_UNUSED, BP_VAR_RW TSRMLS_CC);
 
-//???  if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) {
-//???          EXTRACT_ZVAL_PTR(&EX_T(opline->result.var));
-//???  }
+       if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) {
+               EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
+       }
        if (free_op1.var) {zval_ptr_dtor_nogc(free_op1.var);};
        CHECK_EXCEPTION();
        ZEND_VM_NEXT_OPCODE();
@@ -20971,9 +20971,9 @@ static int ZEND_FASTCALL  ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_UNUSED_HANDLER(ZEND_O
                        zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
                }
                zend_fetch_dimension_address(EX_VAR(opline->result.var), container, NULL, IS_UNUSED, BP_VAR_W TSRMLS_CC);
-//???          if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) {
-//???                  EXTRACT_ZVAL_PTR(&EX_T(opline->result.var));
-//???          }
+               if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) {
+                       EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
+               }
 
                if (free_op1.var) {zval_ptr_dtor_nogc(free_op1.var);};
        } else {
@@ -22348,9 +22348,9 @@ static int ZEND_FASTCALL  ZEND_FETCH_DIM_W_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDL
        }
        zend_fetch_dimension_address(EX_VAR(opline->result.var), container, _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC), IS_CV, BP_VAR_W TSRMLS_CC);
 
-//???  if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) {
-//???          EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
-//???  }
+       if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) {
+               EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
+       }
 
        if (free_op1.var) {zval_ptr_dtor_nogc(free_op1.var);};
 
@@ -22390,9 +22390,9 @@ static int ZEND_FASTCALL  ZEND_FETCH_DIM_RW_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HAND
        }
        zend_fetch_dimension_address(EX_VAR(opline->result.var), container, _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC), IS_CV, BP_VAR_RW TSRMLS_CC);
 
-//???  if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) {
-//???          EXTRACT_ZVAL_PTR(&EX_T(opline->result.var));
-//???  }
+       if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) {
+               EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
+       }
        if (free_op1.var) {zval_ptr_dtor_nogc(free_op1.var);};
        CHECK_EXCEPTION();
        ZEND_VM_NEXT_OPCODE();
@@ -22427,9 +22427,9 @@ static int ZEND_FASTCALL  ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_CV_HANDLER(ZEND_OPCOD
                        zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
                }
                zend_fetch_dimension_address(EX_VAR(opline->result.var), container, _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC), IS_CV, BP_VAR_W TSRMLS_CC);
-//???          if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) {
-//???                  EXTRACT_ZVAL_PTR(&EX_T(opline->result.var));
-//???          }
+               if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) {
+                       EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
+               }
 
                if (free_op1.var) {zval_ptr_dtor_nogc(free_op1.var);};
        } else {
@@ -22462,9 +22462,9 @@ static int ZEND_FASTCALL  ZEND_FETCH_DIM_UNSET_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_H
        }
        zend_fetch_dimension_address(EX_VAR(opline->result.var), container, _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC), IS_CV, BP_VAR_UNSET TSRMLS_CC);
 
-//???  if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) {
-//???          EXTRACT_ZVAL_PTR(&EX_T(opline->result.var));
-//???  }
+       if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) {
+               EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
+       }
        if (free_op1.var) {zval_ptr_dtor_nogc(free_op1.var);};
        if (UNEXPECTED(Z_TYPE_P(EX_VAR(opline->result.var)) == IS_STR_OFFSET)) {
                zend_error_noreturn(E_ERROR, "Cannot unset string offsets");
@@ -22562,9 +22562,9 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_W_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDL
 
 //???  }
 
-//???  if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) {
-//???          EXTRACT_ZVAL_PTR(&EX_T(opline->result.var));
-//???  }
+       if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) {
+               EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
+       }
        if (free_op1.var) {zval_ptr_dtor_nogc(free_op1.var);};
 
        /* We are going to assign the result by reference */
@@ -22613,9 +22613,9 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_RW_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HAND
 
 //???  }
 
-//???  if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) {
-//???          EXTRACT_ZVAL_PTR(&EX_T(opline->result.var));
-//???  }
+       if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) {
+               EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
+       }
        if (free_op1.var) {zval_ptr_dtor_nogc(free_op1.var);};
        CHECK_EXCEPTION();
        ZEND_VM_NEXT_OPCODE();
@@ -22690,9 +22690,9 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_FUNC_ARG_SPEC_VAR_CV_HANDLER(ZEND_OPCOD
 
 //???          }
 
-//???          if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) {
-//???                  EXTRACT_ZVAL_PTR(&EX_T(opline->result.var));
-//???          }
+               if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) {
+                       EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
+               }
                if (free_op1.var) {zval_ptr_dtor_nogc(free_op1.var);};
                CHECK_EXCEPTION();
                ZEND_VM_NEXT_OPCODE();
@@ -22727,9 +22727,9 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_UNSET_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_H
 
 //???  }
 
-//???  if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) {
-//???          EXTRACT_ZVAL_PTR(&EX_T(opline->result.var));
-//???  }
+       if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) {
+               EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
+       }
        if (free_op1.var) {zval_ptr_dtor_nogc(free_op1.var);};
 
        retval_ptr = EX_VAR(opline->result.var);
@@ -24268,9 +24268,9 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_W_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE
 
 //???  }
 
-//???  if (IS_UNUSED == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
-//???          EXTRACT_ZVAL_PTR(&EX_T(opline->result.var));
-//???  }
+       if (IS_UNUSED == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
+               EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
+       }
 
        /* We are going to assign the result by reference */
        if (opline->extended_value & ZEND_FETCH_MAKE_REF) {
@@ -24318,9 +24318,9 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_RW_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCOD
 
 //???  }
 
-//???  if (IS_UNUSED == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
-//???          EXTRACT_ZVAL_PTR(&EX_T(opline->result.var));
-//???  }
+       if (IS_UNUSED == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
+               EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
+       }
 
        CHECK_EXCEPTION();
        ZEND_VM_NEXT_OPCODE();
@@ -24394,9 +24394,9 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_FUNC_ARG_SPEC_UNUSED_CONST_HANDLER(ZEND
 
 //???          }
 
-//???          if (IS_UNUSED == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
-//???                  EXTRACT_ZVAL_PTR(&EX_T(opline->result.var));
-//???          }
+               if (IS_UNUSED == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
+                       EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
+               }
 
                CHECK_EXCEPTION();
                ZEND_VM_NEXT_OPCODE();
@@ -24431,9 +24431,9 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_UNSET_SPEC_UNUSED_CONST_HANDLER(ZEND_OP
 
 //???  }
 
-//???  if (IS_UNUSED == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
-//???          EXTRACT_ZVAL_PTR(&EX_T(opline->result.var));
-//???  }
+       if (IS_UNUSED == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
+               EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
+       }
 
        retval_ptr = EX_VAR(opline->result.var);
        if (Z_TYPE_P(retval_ptr) == IS_INDIRECT) {
@@ -25638,9 +25638,9 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_W_SPEC_UNUSED_TMP_HANDLER(ZEND_OPCODE_H
                zval_dtor(free_op2.var);
 //???  }
 
-//???  if (IS_UNUSED == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
-//???          EXTRACT_ZVAL_PTR(&EX_T(opline->result.var));
-//???  }
+       if (IS_UNUSED == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
+               EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
+       }
 
        /* We are going to assign the result by reference */
        if (opline->extended_value & ZEND_FETCH_MAKE_REF) {
@@ -25688,9 +25688,9 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_RW_SPEC_UNUSED_TMP_HANDLER(ZEND_OPCODE_
                zval_dtor(free_op2.var);
 //???  }
 
-//???  if (IS_UNUSED == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
-//???          EXTRACT_ZVAL_PTR(&EX_T(opline->result.var));
-//???  }
+       if (IS_UNUSED == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
+               EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
+       }
 
        CHECK_EXCEPTION();
        ZEND_VM_NEXT_OPCODE();
@@ -25764,9 +25764,9 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_FUNC_ARG_SPEC_UNUSED_TMP_HANDLER(ZEND_O
                        zval_dtor(free_op2.var);
 //???          }
 
-//???          if (IS_UNUSED == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
-//???                  EXTRACT_ZVAL_PTR(&EX_T(opline->result.var));
-//???          }
+               if (IS_UNUSED == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
+                       EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
+               }
 
                CHECK_EXCEPTION();
                ZEND_VM_NEXT_OPCODE();
@@ -25801,9 +25801,9 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_UNSET_SPEC_UNUSED_TMP_HANDLER(ZEND_OPCO
                zval_dtor(free_op2.var);
 //???  }
 
-//???  if (IS_UNUSED == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
-//???          EXTRACT_ZVAL_PTR(&EX_T(opline->result.var));
-//???  }
+       if (IS_UNUSED == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
+               EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
+       }
 
        retval_ptr = EX_VAR(opline->result.var);
        if (Z_TYPE_P(retval_ptr) == IS_INDIRECT) {
@@ -26924,9 +26924,9 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_W_SPEC_UNUSED_VAR_HANDLER(ZEND_OPCODE_H
                zval_ptr_dtor_nogc(free_op2.var);
 //???  }
 
-//???  if (IS_UNUSED == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
-//???          EXTRACT_ZVAL_PTR(&EX_T(opline->result.var));
-//???  }
+       if (IS_UNUSED == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
+               EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
+       }
 
        /* We are going to assign the result by reference */
        if (opline->extended_value & ZEND_FETCH_MAKE_REF) {
@@ -26974,9 +26974,9 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_RW_SPEC_UNUSED_VAR_HANDLER(ZEND_OPCODE_
                zval_ptr_dtor_nogc(free_op2.var);
 //???  }
 
-//???  if (IS_UNUSED == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
-//???          EXTRACT_ZVAL_PTR(&EX_T(opline->result.var));
-//???  }
+       if (IS_UNUSED == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
+               EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
+       }
 
        CHECK_EXCEPTION();
        ZEND_VM_NEXT_OPCODE();
@@ -27050,9 +27050,9 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_FUNC_ARG_SPEC_UNUSED_VAR_HANDLER(ZEND_O
                        zval_ptr_dtor_nogc(free_op2.var);
 //???          }
 
-//???          if (IS_UNUSED == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
-//???                  EXTRACT_ZVAL_PTR(&EX_T(opline->result.var));
-//???          }
+               if (IS_UNUSED == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
+                       EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
+               }
 
                CHECK_EXCEPTION();
                ZEND_VM_NEXT_OPCODE();
@@ -27087,9 +27087,9 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_UNSET_SPEC_UNUSED_VAR_HANDLER(ZEND_OPCO
                zval_ptr_dtor_nogc(free_op2.var);
 //???  }
 
-//???  if (IS_UNUSED == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
-//???          EXTRACT_ZVAL_PTR(&EX_T(opline->result.var));
-//???  }
+       if (IS_UNUSED == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
+               EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
+       }
 
        retval_ptr = EX_VAR(opline->result.var);
        if (Z_TYPE_P(retval_ptr) == IS_INDIRECT) {
@@ -28610,9 +28610,9 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_W_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HA
 
 //???  }
 
-//???  if (IS_UNUSED == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
-//???          EXTRACT_ZVAL_PTR(&EX_T(opline->result.var));
-//???  }
+       if (IS_UNUSED == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
+               EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
+       }
 
        /* We are going to assign the result by reference */
        if (opline->extended_value & ZEND_FETCH_MAKE_REF) {
@@ -28660,9 +28660,9 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_RW_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_H
 
 //???  }
 
-//???  if (IS_UNUSED == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
-//???          EXTRACT_ZVAL_PTR(&EX_T(opline->result.var));
-//???  }
+       if (IS_UNUSED == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
+               EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
+       }
 
        CHECK_EXCEPTION();
        ZEND_VM_NEXT_OPCODE();
@@ -28736,9 +28736,9 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_FUNC_ARG_SPEC_UNUSED_CV_HANDLER(ZEND_OP
 
 //???          }
 
-//???          if (IS_UNUSED == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
-//???                  EXTRACT_ZVAL_PTR(&EX_T(opline->result.var));
-//???          }
+               if (IS_UNUSED == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
+                       EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
+               }
 
                CHECK_EXCEPTION();
                ZEND_VM_NEXT_OPCODE();
@@ -28773,9 +28773,9 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_UNSET_SPEC_UNUSED_CV_HANDLER(ZEND_OPCOD
 
 //???  }
 
-//???  if (IS_UNUSED == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
-//???          EXTRACT_ZVAL_PTR(&EX_T(opline->result.var));
-//???  }
+       if (IS_UNUSED == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
+               EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
+       }
 
        retval_ptr = EX_VAR(opline->result.var);
        if (Z_TYPE_P(retval_ptr) == IS_INDIRECT) {
@@ -31491,9 +31491,9 @@ static int ZEND_FASTCALL  ZEND_FETCH_DIM_W_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HAN
        }
        zend_fetch_dimension_address(EX_VAR(opline->result.var), container, opline->op2.zv, IS_CONST, BP_VAR_W TSRMLS_CC);
 
-//???  if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
-//???          EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
-//???  }
+       if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
+               EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
+       }
 
        /* We are going to assign the result by reference */
        if (UNEXPECTED(opline->extended_value != 0)) {
@@ -31531,9 +31531,9 @@ static int ZEND_FASTCALL  ZEND_FETCH_DIM_RW_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HA
        }
        zend_fetch_dimension_address(EX_VAR(opline->result.var), container, opline->op2.zv, IS_CONST, BP_VAR_RW TSRMLS_CC);
 
-//???  if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
-//???          EXTRACT_ZVAL_PTR(&EX_T(opline->result.var));
-//???  }
+       if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
+               EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
+       }
 
        CHECK_EXCEPTION();
        ZEND_VM_NEXT_OPCODE();
@@ -31568,9 +31568,9 @@ static int ZEND_FASTCALL  ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_CONST_HANDLER(ZEND_OPC
                        zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
                }
                zend_fetch_dimension_address(EX_VAR(opline->result.var), container, opline->op2.zv, IS_CONST, BP_VAR_W TSRMLS_CC);
-//???          if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
-//???                  EXTRACT_ZVAL_PTR(&EX_T(opline->result.var));
-//???          }
+               if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
+                       EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
+               }
 
 
        } else {
@@ -31603,9 +31603,9 @@ static int ZEND_FASTCALL  ZEND_FETCH_DIM_UNSET_SPEC_CV_CONST_HANDLER(ZEND_OPCODE
        }
        zend_fetch_dimension_address(EX_VAR(opline->result.var), container, opline->op2.zv, IS_CONST, BP_VAR_UNSET TSRMLS_CC);
 
-//???  if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
-//???          EXTRACT_ZVAL_PTR(&EX_T(opline->result.var));
-//???  }
+       if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
+               EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
+       }
 
        if (UNEXPECTED(Z_TYPE_P(EX_VAR(opline->result.var)) == IS_STR_OFFSET)) {
                zend_error_noreturn(E_ERROR, "Cannot unset string offsets");
@@ -31702,9 +31702,9 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_W_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HAN
 
 //???  }
 
-//???  if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
-//???          EXTRACT_ZVAL_PTR(&EX_T(opline->result.var));
-//???  }
+       if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
+               EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
+       }
 
        /* We are going to assign the result by reference */
        if (opline->extended_value & ZEND_FETCH_MAKE_REF) {
@@ -31752,9 +31752,9 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_RW_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HA
 
 //???  }
 
-//???  if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
-//???          EXTRACT_ZVAL_PTR(&EX_T(opline->result.var));
-//???  }
+       if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
+               EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
+       }
 
        CHECK_EXCEPTION();
        ZEND_VM_NEXT_OPCODE();
@@ -31828,9 +31828,9 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CV_CONST_HANDLER(ZEND_OPC
 
 //???          }
 
-//???          if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
-//???                  EXTRACT_ZVAL_PTR(&EX_T(opline->result.var));
-//???          }
+               if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
+                       EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
+               }
 
                CHECK_EXCEPTION();
                ZEND_VM_NEXT_OPCODE();
@@ -31865,9 +31865,9 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_UNSET_SPEC_CV_CONST_HANDLER(ZEND_OPCODE
 
 //???  }
 
-//???  if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
-//???          EXTRACT_ZVAL_PTR(&EX_T(opline->result.var));
-//???  }
+       if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
+               EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
+       }
 
        retval_ptr = EX_VAR(opline->result.var);
        if (Z_TYPE_P(retval_ptr) == IS_INDIRECT) {
@@ -33559,9 +33559,9 @@ static int ZEND_FASTCALL  ZEND_FETCH_DIM_W_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDL
        }
        zend_fetch_dimension_address(EX_VAR(opline->result.var), container, _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2 TSRMLS_CC), IS_TMP_VAR, BP_VAR_W TSRMLS_CC);
        zval_dtor(free_op2.var);
-//???  if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
-//???          EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
-//???  }
+       if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
+               EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
+       }
 
        /* We are going to assign the result by reference */
        if (UNEXPECTED(opline->extended_value != 0)) {
@@ -33599,9 +33599,9 @@ static int ZEND_FASTCALL  ZEND_FETCH_DIM_RW_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HAND
        }
        zend_fetch_dimension_address(EX_VAR(opline->result.var), container, _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2 TSRMLS_CC), IS_TMP_VAR, BP_VAR_RW TSRMLS_CC);
        zval_dtor(free_op2.var);
-//???  if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
-//???          EXTRACT_ZVAL_PTR(&EX_T(opline->result.var));
-//???  }
+       if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
+               EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
+       }
 
        CHECK_EXCEPTION();
        ZEND_VM_NEXT_OPCODE();
@@ -33636,9 +33636,9 @@ static int ZEND_FASTCALL  ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_TMP_HANDLER(ZEND_OPCOD
                        zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
                }
                zend_fetch_dimension_address(EX_VAR(opline->result.var), container, _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2 TSRMLS_CC), IS_TMP_VAR, BP_VAR_W TSRMLS_CC);
-//???          if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
-//???                  EXTRACT_ZVAL_PTR(&EX_T(opline->result.var));
-//???          }
+               if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
+                       EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
+               }
                zval_dtor(free_op2.var);
 
        } else {
@@ -33671,9 +33671,9 @@ static int ZEND_FASTCALL  ZEND_FETCH_DIM_UNSET_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_H
        }
        zend_fetch_dimension_address(EX_VAR(opline->result.var), container, _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2 TSRMLS_CC), IS_TMP_VAR, BP_VAR_UNSET TSRMLS_CC);
        zval_dtor(free_op2.var);
-//???  if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
-//???          EXTRACT_ZVAL_PTR(&EX_T(opline->result.var));
-//???  }
+       if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
+               EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
+       }
 
        if (UNEXPECTED(Z_TYPE_P(EX_VAR(opline->result.var)) == IS_STR_OFFSET)) {
                zend_error_noreturn(E_ERROR, "Cannot unset string offsets");
@@ -33770,9 +33770,9 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_W_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDL
                zval_dtor(free_op2.var);
 //???  }
 
-//???  if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
-//???          EXTRACT_ZVAL_PTR(&EX_T(opline->result.var));
-//???  }
+       if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
+               EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
+       }
 
        /* We are going to assign the result by reference */
        if (opline->extended_value & ZEND_FETCH_MAKE_REF) {
@@ -33820,9 +33820,9 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_RW_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HAND
                zval_dtor(free_op2.var);
 //???  }
 
-//???  if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
-//???          EXTRACT_ZVAL_PTR(&EX_T(opline->result.var));
-//???  }
+       if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
+               EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
+       }
 
        CHECK_EXCEPTION();
        ZEND_VM_NEXT_OPCODE();
@@ -33896,9 +33896,9 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CV_TMP_HANDLER(ZEND_OPCOD
                        zval_dtor(free_op2.var);
 //???          }
 
-//???          if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
-//???                  EXTRACT_ZVAL_PTR(&EX_T(opline->result.var));
-//???          }
+               if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
+                       EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
+               }
 
                CHECK_EXCEPTION();
                ZEND_VM_NEXT_OPCODE();
@@ -33933,9 +33933,9 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_UNSET_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_H
                zval_dtor(free_op2.var);
 //???  }
 
-//???  if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
-//???          EXTRACT_ZVAL_PTR(&EX_T(opline->result.var));
-//???  }
+       if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
+               EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
+       }
 
        retval_ptr = EX_VAR(opline->result.var);
        if (Z_TYPE_P(retval_ptr) == IS_INDIRECT) {
@@ -35617,9 +35617,9 @@ static int ZEND_FASTCALL  ZEND_FETCH_DIM_W_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDL
        }
        zend_fetch_dimension_address(EX_VAR(opline->result.var), container, _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2 TSRMLS_CC), IS_VAR, BP_VAR_W TSRMLS_CC);
        zval_ptr_dtor_nogc(free_op2.var);
-//???  if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
-//???          EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
-//???  }
+       if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
+               EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
+       }
 
        /* We are going to assign the result by reference */
        if (UNEXPECTED(opline->extended_value != 0)) {
@@ -35657,9 +35657,9 @@ static int ZEND_FASTCALL  ZEND_FETCH_DIM_RW_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HAND
        }
        zend_fetch_dimension_address(EX_VAR(opline->result.var), container, _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2 TSRMLS_CC), IS_VAR, BP_VAR_RW TSRMLS_CC);
        zval_ptr_dtor_nogc(free_op2.var);
-//???  if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
-//???          EXTRACT_ZVAL_PTR(&EX_T(opline->result.var));
-//???  }
+       if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
+               EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
+       }
 
        CHECK_EXCEPTION();
        ZEND_VM_NEXT_OPCODE();
@@ -35694,9 +35694,9 @@ static int ZEND_FASTCALL  ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_VAR_HANDLER(ZEND_OPCOD
                        zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
                }
                zend_fetch_dimension_address(EX_VAR(opline->result.var), container, _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2 TSRMLS_CC), IS_VAR, BP_VAR_W TSRMLS_CC);
-//???          if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
-//???                  EXTRACT_ZVAL_PTR(&EX_T(opline->result.var));
-//???          }
+               if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
+                       EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
+               }
                zval_ptr_dtor_nogc(free_op2.var);
 
        } else {
@@ -35729,9 +35729,9 @@ static int ZEND_FASTCALL  ZEND_FETCH_DIM_UNSET_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_H
        }
        zend_fetch_dimension_address(EX_VAR(opline->result.var), container, _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2 TSRMLS_CC), IS_VAR, BP_VAR_UNSET TSRMLS_CC);
        zval_ptr_dtor_nogc(free_op2.var);
-//???  if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
-//???          EXTRACT_ZVAL_PTR(&EX_T(opline->result.var));
-//???  }
+       if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
+               EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
+       }
 
        if (UNEXPECTED(Z_TYPE_P(EX_VAR(opline->result.var)) == IS_STR_OFFSET)) {
                zend_error_noreturn(E_ERROR, "Cannot unset string offsets");
@@ -35828,9 +35828,9 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_W_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDL
                zval_ptr_dtor_nogc(free_op2.var);
 //???  }
 
-//???  if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
-//???          EXTRACT_ZVAL_PTR(&EX_T(opline->result.var));
-//???  }
+       if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
+               EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
+       }
 
        /* We are going to assign the result by reference */
        if (opline->extended_value & ZEND_FETCH_MAKE_REF) {
@@ -35878,9 +35878,9 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_RW_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HAND
                zval_ptr_dtor_nogc(free_op2.var);
 //???  }
 
-//???  if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
-//???          EXTRACT_ZVAL_PTR(&EX_T(opline->result.var));
-//???  }
+       if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
+               EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
+       }
 
        CHECK_EXCEPTION();
        ZEND_VM_NEXT_OPCODE();
@@ -35954,9 +35954,9 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CV_VAR_HANDLER(ZEND_OPCOD
                        zval_ptr_dtor_nogc(free_op2.var);
 //???          }
 
-//???          if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
-//???                  EXTRACT_ZVAL_PTR(&EX_T(opline->result.var));
-//???          }
+               if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
+                       EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
+               }
 
                CHECK_EXCEPTION();
                ZEND_VM_NEXT_OPCODE();
@@ -35991,9 +35991,9 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_UNSET_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_H
                zval_ptr_dtor_nogc(free_op2.var);
 //???  }
 
-//???  if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
-//???          EXTRACT_ZVAL_PTR(&EX_T(opline->result.var));
-//???  }
+       if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
+               EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
+       }
 
        retval_ptr = EX_VAR(opline->result.var);
        if (Z_TYPE_P(retval_ptr) == IS_INDIRECT) {
@@ -37412,9 +37412,9 @@ static int ZEND_FASTCALL  ZEND_FETCH_DIM_W_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HA
        }
        zend_fetch_dimension_address(EX_VAR(opline->result.var), container, NULL, IS_UNUSED, BP_VAR_W TSRMLS_CC);
 
-//???  if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
-//???          EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
-//???  }
+       if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
+               EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
+       }
 
        /* We are going to assign the result by reference */
        if (UNEXPECTED(opline->extended_value != 0)) {
@@ -37452,9 +37452,9 @@ static int ZEND_FASTCALL  ZEND_FETCH_DIM_RW_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_H
        }
        zend_fetch_dimension_address(EX_VAR(opline->result.var), container, NULL, IS_UNUSED, BP_VAR_RW TSRMLS_CC);
 
-//???  if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
-//???          EXTRACT_ZVAL_PTR(&EX_T(opline->result.var));
-//???  }
+       if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
+               EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
+       }
 
        CHECK_EXCEPTION();
        ZEND_VM_NEXT_OPCODE();
@@ -37474,9 +37474,9 @@ static int ZEND_FASTCALL  ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_UNUSED_HANDLER(ZEND_OP
                        zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
                }
                zend_fetch_dimension_address(EX_VAR(opline->result.var), container, NULL, IS_UNUSED, BP_VAR_W TSRMLS_CC);
-//???          if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
-//???                  EXTRACT_ZVAL_PTR(&EX_T(opline->result.var));
-//???          }
+               if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
+                       EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
+               }
 
 
        } else {
@@ -38719,9 +38719,9 @@ static int ZEND_FASTCALL  ZEND_FETCH_DIM_W_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLE
        }
        zend_fetch_dimension_address(EX_VAR(opline->result.var), container, _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC), IS_CV, BP_VAR_W TSRMLS_CC);
 
-//???  if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
-//???          EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
-//???  }
+       if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
+               EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
+       }
 
        /* We are going to assign the result by reference */
        if (UNEXPECTED(opline->extended_value != 0)) {
@@ -38759,9 +38759,9 @@ static int ZEND_FASTCALL  ZEND_FETCH_DIM_RW_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDL
        }
        zend_fetch_dimension_address(EX_VAR(opline->result.var), container, _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC), IS_CV, BP_VAR_RW TSRMLS_CC);
 
-//???  if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
-//???          EXTRACT_ZVAL_PTR(&EX_T(opline->result.var));
-//???  }
+       if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
+               EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
+       }
 
        CHECK_EXCEPTION();
        ZEND_VM_NEXT_OPCODE();
@@ -38796,9 +38796,9 @@ static int ZEND_FASTCALL  ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_CV_HANDLER(ZEND_OPCODE
                        zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
                }
                zend_fetch_dimension_address(EX_VAR(opline->result.var), container, _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC), IS_CV, BP_VAR_W TSRMLS_CC);
-//???          if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
-//???                  EXTRACT_ZVAL_PTR(&EX_T(opline->result.var));
-//???          }
+               if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
+                       EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
+               }
 
 
        } else {
@@ -38831,9 +38831,9 @@ static int ZEND_FASTCALL  ZEND_FETCH_DIM_UNSET_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HA
        }
        zend_fetch_dimension_address(EX_VAR(opline->result.var), container, _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC), IS_CV, BP_VAR_UNSET TSRMLS_CC);
 
-//???  if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
-//???          EXTRACT_ZVAL_PTR(&EX_T(opline->result.var));
-//???  }
+       if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
+               EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
+       }
 
        if (UNEXPECTED(Z_TYPE_P(EX_VAR(opline->result.var)) == IS_STR_OFFSET)) {
                zend_error_noreturn(E_ERROR, "Cannot unset string offsets");
@@ -38930,9 +38930,9 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_W_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLE
 
 //???  }
 
-//???  if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
-//???          EXTRACT_ZVAL_PTR(&EX_T(opline->result.var));
-//???  }
+       if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
+               EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
+       }
 
        /* We are going to assign the result by reference */
        if (opline->extended_value & ZEND_FETCH_MAKE_REF) {
@@ -38980,9 +38980,9 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_RW_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDL
 
 //???  }
 
-//???  if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
-//???          EXTRACT_ZVAL_PTR(&EX_T(opline->result.var));
-//???  }
+       if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
+               EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
+       }
 
        CHECK_EXCEPTION();
        ZEND_VM_NEXT_OPCODE();
@@ -39056,9 +39056,9 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CV_CV_HANDLER(ZEND_OPCODE
 
 //???          }
 
-//???          if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
-//???                  EXTRACT_ZVAL_PTR(&EX_T(opline->result.var));
-//???          }
+               if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
+                       EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
+               }
 
                CHECK_EXCEPTION();
                ZEND_VM_NEXT_OPCODE();
@@ -39093,9 +39093,9 @@ static int ZEND_FASTCALL  ZEND_FETCH_OBJ_UNSET_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HA
 
 //???  }
 
-//???  if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
-//???          EXTRACT_ZVAL_PTR(&EX_T(opline->result.var));
-//???  }
+       if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
+               EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
+       }
 
        retval_ptr = EX_VAR(opline->result.var);
        if (Z_TYPE_P(retval_ptr) == IS_INDIRECT) {