]> granicus.if.org Git - php/commitdiff
Merge branch 'PHP-5.5' into PHP-5.6
authorDmitry Stogov <dmitry@zend.com>
Wed, 27 Nov 2013 10:56:18 +0000 (14:56 +0400)
committerDmitry Stogov <dmitry@zend.com>
Wed, 27 Nov 2013 10:56:18 +0000 (14:56 +0400)
* PHP-5.5:
  Fixed bug #65969 (Chain assignment with T_LIST failure)

Conflicts:
NEWS
Zend/zend_vm_def.h
Zend/zend_vm_execute.h

1  2 
Zend/zend_execute.c
Zend/zend_vm_def.h
Zend/zend_vm_execute.h

Simple merge
index 572aac5a20706d35487f59be85c6bbe943b1af29,05557e9833628f78b7b18fe221f1e88036688c21..e95d94d2ffc01840d58c64bc819839f4e82c609b
@@@ -1164,24 -1166,17 +1164,15 @@@ ZEND_VM_HANDLER(81, ZEND_FETCH_DIM_R, C
  {
        USE_OPLINE
        zend_free_op free_op1, free_op2;
-       zval **container;
+       zval *container;
  
        SAVE_OPLINE();
--
-       if (OP1_TYPE == IS_TMP_VAR || OP1_TYPE == IS_CONST) {
-               zval *container = GET_OP1_ZVAL_PTR(BP_VAR_R);
-               zend_fetch_dimension_address_read(&EX_T(opline->result.var), &container, GET_OP2_ZVAL_PTR(BP_VAR_R), OP2_TYPE, BP_VAR_R TSRMLS_CC);
-               FREE_OP2();
 -      if (OP1_TYPE == IS_VAR && (opline->extended_value & ZEND_FETCH_ADD_LOCK)) {
 -              PZVAL_LOCK(EX_T(opline->op1.var).var.ptr);
 -      }
+       container = GET_OP1_ZVAL_PTR(BP_VAR_R);
+       zend_fetch_dimension_address_read(&EX_T(opline->result.var), container, GET_OP2_ZVAL_PTR(BP_VAR_R), OP2_TYPE, BP_VAR_R TSRMLS_CC);
+       FREE_OP2();
 -      FREE_OP1();
++      if (OP1_TYPE != IS_VAR || !(opline->extended_value & ZEND_FETCH_ADD_LOCK)) {
 +              FREE_OP1();
-       } else {
-               container = GET_OP1_ZVAL_PTR_PTR_FAST(BP_VAR_R);
-               zend_fetch_dimension_address_read(&EX_T(opline->result.var), container, GET_OP2_ZVAL_PTR(BP_VAR_R), OP2_TYPE, BP_VAR_R TSRMLS_CC);
-               FREE_OP2();
-               if (OP1_TYPE == IS_VAR && !(opline->extended_value & ZEND_FETCH_ADD_LOCK)) {
-                       FREE_OP1_VAR_PTR_FAST();
-               }
 +      }
        CHECK_EXCEPTION();
        ZEND_VM_NEXT_OPCODE();
  }
index 7ad7dcf463f516588d1acbc263a8fe88a6614d7b,ec29f9e7d8da4efb344515af3c8ed89164f9d2cc..f77a2066fd8c2551f2cc2ff2736d6a3636097c7c
@@@ -3539,24 -3483,17 +3539,15 @@@ static int ZEND_FASTCALL  ZEND_FETCH_DI
  {
        USE_OPLINE
  
-       zval **container;
+       zval *container;
  
        SAVE_OPLINE();
 -
 -      if (IS_CONST == IS_VAR && (opline->extended_value & ZEND_FETCH_ADD_LOCK)) {
 -              PZVAL_LOCK(EX_T(opline->op1.var).var.ptr);
 -      }
+       container = opline->op1.zv;
+       zend_fetch_dimension_address_read(&EX_T(opline->result.var), container, opline->op2.zv, IS_CONST, BP_VAR_R TSRMLS_CC);
  
-       if (IS_CONST == IS_TMP_VAR || IS_CONST == IS_CONST) {
-               zval *container = opline->op1.zv;
-               zend_fetch_dimension_address_read(&EX_T(opline->result.var), &container, opline->op2.zv, IS_CONST, BP_VAR_R TSRMLS_CC);
-       } else {
-               container = NULL;
-               zend_fetch_dimension_address_read(&EX_T(opline->result.var), container, opline->op2.zv, IS_CONST, BP_VAR_R TSRMLS_CC);
-               if (IS_CONST == IS_VAR && !(opline->extended_value & ZEND_FETCH_ADD_LOCK)) {
++      if (IS_CONST != IS_VAR || !(opline->extended_value & ZEND_FETCH_ADD_LOCK)) {
  
-               }
 +      }
        CHECK_EXCEPTION();
        ZEND_VM_NEXT_OPCODE();
  }
@@@ -4552,24 -4495,17 +4543,15 @@@ static int ZEND_FASTCALL  ZEND_FETCH_DI
  {
        USE_OPLINE
        zend_free_op free_op2;
-       zval **container;
+       zval *container;
  
        SAVE_OPLINE();
 -
 -      if (IS_CONST == IS_VAR && (opline->extended_value & ZEND_FETCH_ADD_LOCK)) {
 -              PZVAL_LOCK(EX_T(opline->op1.var).var.ptr);
 -      }
+       container = opline->op1.zv;
+       zend_fetch_dimension_address_read(&EX_T(opline->result.var), container, _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2 TSRMLS_CC), IS_TMP_VAR, BP_VAR_R TSRMLS_CC);
+       zval_dtor(free_op2.var);
++      if (IS_CONST != IS_VAR || !(opline->extended_value & ZEND_FETCH_ADD_LOCK)) {
  
-       if (IS_CONST == IS_TMP_VAR || IS_CONST == IS_CONST) {
-               zval *container = opline->op1.zv;
-               zend_fetch_dimension_address_read(&EX_T(opline->result.var), &container, _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2 TSRMLS_CC), IS_TMP_VAR, BP_VAR_R TSRMLS_CC);
-               zval_dtor(free_op2.var);
-       } else {
-               container = NULL;
-               zend_fetch_dimension_address_read(&EX_T(opline->result.var), container, _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2 TSRMLS_CC), IS_TMP_VAR, BP_VAR_R TSRMLS_CC);
-               zval_dtor(free_op2.var);
-               if (IS_CONST == IS_VAR && !(opline->extended_value & ZEND_FETCH_ADD_LOCK)) {
-               }
 +      }
        CHECK_EXCEPTION();
        ZEND_VM_NEXT_OPCODE();
  }
@@@ -5404,24 -5348,17 +5386,15 @@@ static int ZEND_FASTCALL  ZEND_FETCH_DI
  {
        USE_OPLINE
        zend_free_op free_op2;
-       zval **container;
+       zval *container;
  
        SAVE_OPLINE();
 -
 -      if (IS_CONST == IS_VAR && (opline->extended_value & ZEND_FETCH_ADD_LOCK)) {
 -              PZVAL_LOCK(EX_T(opline->op1.var).var.ptr);
 -      }
+       container = opline->op1.zv;
+       zend_fetch_dimension_address_read(&EX_T(opline->result.var), container, _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2 TSRMLS_CC), IS_VAR, BP_VAR_R TSRMLS_CC);
 -      if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
++      zval_ptr_dtor_nogc(&free_op2.var);
++      if (IS_CONST != IS_VAR || !(opline->extended_value & ZEND_FETCH_ADD_LOCK)) {
  
-       if (IS_CONST == IS_TMP_VAR || IS_CONST == IS_CONST) {
-               zval *container = opline->op1.zv;
-               zend_fetch_dimension_address_read(&EX_T(opline->result.var), &container, _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2 TSRMLS_CC), IS_VAR, BP_VAR_R TSRMLS_CC);
-               zval_ptr_dtor_nogc(&free_op2.var);
-       } else {
-               container = NULL;
-               zend_fetch_dimension_address_read(&EX_T(opline->result.var), container, _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2 TSRMLS_CC), IS_VAR, BP_VAR_R TSRMLS_CC);
-               zval_ptr_dtor_nogc(&free_op2.var);
-               if (IS_CONST == IS_VAR && !(opline->extended_value & ZEND_FETCH_ADD_LOCK)) {
-               }
 +      }
        CHECK_EXCEPTION();
        ZEND_VM_NEXT_OPCODE();
  }
@@@ -6974,24 -6922,17 +6947,15 @@@ static int ZEND_FASTCALL  ZEND_FETCH_DI
  {
        USE_OPLINE
  
-       zval **container;
+       zval *container;
  
        SAVE_OPLINE();
 -
 -      if (IS_CONST == IS_VAR && (opline->extended_value & ZEND_FETCH_ADD_LOCK)) {
 -              PZVAL_LOCK(EX_T(opline->op1.var).var.ptr);
 -      }
+       container = opline->op1.zv;
+       zend_fetch_dimension_address_read(&EX_T(opline->result.var), container, _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC), IS_CV, BP_VAR_R TSRMLS_CC);
  
-       if (IS_CONST == IS_TMP_VAR || IS_CONST == IS_CONST) {
-               zval *container = opline->op1.zv;
-               zend_fetch_dimension_address_read(&EX_T(opline->result.var), &container, _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC), IS_CV, BP_VAR_R TSRMLS_CC);
-       } else {
-               container = NULL;
-               zend_fetch_dimension_address_read(&EX_T(opline->result.var), container, _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC), IS_CV, BP_VAR_R TSRMLS_CC);
-               if (IS_CONST == IS_VAR && !(opline->extended_value & ZEND_FETCH_ADD_LOCK)) {
++      if (IS_CONST != IS_VAR || !(opline->extended_value & ZEND_FETCH_ADD_LOCK)) {
  
-               }
 +      }
        CHECK_EXCEPTION();
        ZEND_VM_NEXT_OPCODE();
  }
@@@ -8894,24 -8820,17 +8858,15 @@@ static int ZEND_FASTCALL  ZEND_FETCH_DI
  {
        USE_OPLINE
        zend_free_op free_op1;
-       zval **container;
+       zval *container;
  
        SAVE_OPLINE();
 -
 -      if (IS_TMP_VAR == IS_VAR && (opline->extended_value & ZEND_FETCH_ADD_LOCK)) {
 -              PZVAL_LOCK(EX_T(opline->op1.var).var.ptr);
 -      }
+       container = _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
+       zend_fetch_dimension_address_read(&EX_T(opline->result.var), container, opline->op2.zv, IS_CONST, BP_VAR_R TSRMLS_CC);
  
-       if (IS_TMP_VAR == IS_TMP_VAR || IS_TMP_VAR == IS_CONST) {
-               zval *container = _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
-               zend_fetch_dimension_address_read(&EX_T(opline->result.var), &container, opline->op2.zv, IS_CONST, BP_VAR_R TSRMLS_CC);
 -      zval_dtor(free_op1.var);
++      if (IS_TMP_VAR != IS_VAR || !(opline->extended_value & ZEND_FETCH_ADD_LOCK)) {
 +              zval_dtor(free_op1.var);
-       } else {
-               container = NULL;
-               zend_fetch_dimension_address_read(&EX_T(opline->result.var), container, opline->op2.zv, IS_CONST, BP_VAR_R TSRMLS_CC);
-               if (IS_TMP_VAR == IS_VAR && !(opline->extended_value & ZEND_FETCH_ADD_LOCK)) {
-               }
 +      }
        CHECK_EXCEPTION();
        ZEND_VM_NEXT_OPCODE();
  }
@@@ -9772,24 -9697,17 +9727,15 @@@ static int ZEND_FASTCALL  ZEND_FETCH_DI
  {
        USE_OPLINE
        zend_free_op free_op1, free_op2;
-       zval **container;
+       zval *container;
  
        SAVE_OPLINE();
--
-       if (IS_TMP_VAR == IS_TMP_VAR || IS_TMP_VAR == IS_CONST) {
-               zval *container = _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
-               zend_fetch_dimension_address_read(&EX_T(opline->result.var), &container, _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2 TSRMLS_CC), IS_TMP_VAR, BP_VAR_R TSRMLS_CC);
-               zval_dtor(free_op2.var);
 -      if (IS_TMP_VAR == IS_VAR && (opline->extended_value & ZEND_FETCH_ADD_LOCK)) {
 -              PZVAL_LOCK(EX_T(opline->op1.var).var.ptr);
 -      }
+       container = _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
+       zend_fetch_dimension_address_read(&EX_T(opline->result.var), container, _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2 TSRMLS_CC), IS_TMP_VAR, BP_VAR_R TSRMLS_CC);
+       zval_dtor(free_op2.var);
 -      zval_dtor(free_op1.var);
++      if (IS_TMP_VAR != IS_VAR || !(opline->extended_value & ZEND_FETCH_ADD_LOCK)) {
 +              zval_dtor(free_op1.var);
-       } else {
-               container = NULL;
-               zend_fetch_dimension_address_read(&EX_T(opline->result.var), container, _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2 TSRMLS_CC), IS_TMP_VAR, BP_VAR_R TSRMLS_CC);
-               zval_dtor(free_op2.var);
-               if (IS_TMP_VAR == IS_VAR && !(opline->extended_value & ZEND_FETCH_ADD_LOCK)) {
-               }
 +      }
        CHECK_EXCEPTION();
        ZEND_VM_NEXT_OPCODE();
  }
@@@ -10626,24 -10552,17 +10572,15 @@@ static int ZEND_FASTCALL  ZEND_FETCH_DI
  {
        USE_OPLINE
        zend_free_op free_op1, free_op2;
-       zval **container;
+       zval *container;
  
        SAVE_OPLINE();
--
-       if (IS_TMP_VAR == IS_TMP_VAR || IS_TMP_VAR == IS_CONST) {
-               zval *container = _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
-               zend_fetch_dimension_address_read(&EX_T(opline->result.var), &container, _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2 TSRMLS_CC), IS_VAR, BP_VAR_R TSRMLS_CC);
-               zval_ptr_dtor_nogc(&free_op2.var);
 -      if (IS_TMP_VAR == IS_VAR && (opline->extended_value & ZEND_FETCH_ADD_LOCK)) {
 -              PZVAL_LOCK(EX_T(opline->op1.var).var.ptr);
 -      }
+       container = _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
+       zend_fetch_dimension_address_read(&EX_T(opline->result.var), container, _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2 TSRMLS_CC), IS_VAR, BP_VAR_R TSRMLS_CC);
 -      if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
 -      zval_dtor(free_op1.var);
++      zval_ptr_dtor_nogc(&free_op2.var);
++      if (IS_TMP_VAR != IS_VAR || !(opline->extended_value & ZEND_FETCH_ADD_LOCK)) {
 +              zval_dtor(free_op1.var);
-       } else {
-               container = NULL;
-               zend_fetch_dimension_address_read(&EX_T(opline->result.var), container, _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2 TSRMLS_CC), IS_VAR, BP_VAR_R TSRMLS_CC);
-               zval_ptr_dtor_nogc(&free_op2.var);
-               if (IS_TMP_VAR == IS_VAR && !(opline->extended_value & ZEND_FETCH_ADD_LOCK)) {
-               }
 +      }
        CHECK_EXCEPTION();
        ZEND_VM_NEXT_OPCODE();
  }
@@@ -12057,24 -11987,17 +11994,15 @@@ static int ZEND_FASTCALL  ZEND_FETCH_DI
  {
        USE_OPLINE
        zend_free_op free_op1;
-       zval **container;
+       zval *container;
  
        SAVE_OPLINE();
 -
 -      if (IS_TMP_VAR == IS_VAR && (opline->extended_value & ZEND_FETCH_ADD_LOCK)) {
 -              PZVAL_LOCK(EX_T(opline->op1.var).var.ptr);
 -      }
+       container = _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
+       zend_fetch_dimension_address_read(&EX_T(opline->result.var), container, _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC), IS_CV, BP_VAR_R TSRMLS_CC);
  
-       if (IS_TMP_VAR == IS_TMP_VAR || IS_TMP_VAR == IS_CONST) {
-               zval *container = _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
-               zend_fetch_dimension_address_read(&EX_T(opline->result.var), &container, _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC), IS_CV, BP_VAR_R TSRMLS_CC);
 -      zval_dtor(free_op1.var);
++      if (IS_TMP_VAR != IS_VAR || !(opline->extended_value & ZEND_FETCH_ADD_LOCK)) {
 +              zval_dtor(free_op1.var);
-       } else {
-               container = NULL;
-               zend_fetch_dimension_address_read(&EX_T(opline->result.var), container, _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC), IS_CV, BP_VAR_R TSRMLS_CC);
-               if (IS_TMP_VAR == IS_VAR && !(opline->extended_value & ZEND_FETCH_ADD_LOCK)) {
-               }
 +      }
        CHECK_EXCEPTION();
        ZEND_VM_NEXT_OPCODE();
  }
@@@ -14772,24 -14683,17 +14700,15 @@@ static int ZEND_FASTCALL  ZEND_FETCH_DI
  {
        USE_OPLINE
        zend_free_op free_op1;
-       zval **container;
+       zval *container;
  
        SAVE_OPLINE();
 -
 -      if (IS_VAR == IS_VAR && (opline->extended_value & ZEND_FETCH_ADD_LOCK)) {
 -              PZVAL_LOCK(EX_T(opline->op1.var).var.ptr);
 -      }
+       container = _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
+       zend_fetch_dimension_address_read(&EX_T(opline->result.var), container, opline->op2.zv, IS_CONST, BP_VAR_R TSRMLS_CC);
  
-       if (IS_VAR == IS_TMP_VAR || IS_VAR == IS_CONST) {
-               zval *container = _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
-               zend_fetch_dimension_address_read(&EX_T(opline->result.var), &container, opline->op2.zv, IS_CONST, BP_VAR_R TSRMLS_CC);
 -      if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
++      if (IS_VAR != IS_VAR || !(opline->extended_value & ZEND_FETCH_ADD_LOCK)) {
 +              zval_ptr_dtor_nogc(&free_op1.var);
-       } else {
-               container = _get_zval_ptr_ptr_var_fast(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
-               zend_fetch_dimension_address_read(&EX_T(opline->result.var), container, opline->op2.zv, IS_CONST, BP_VAR_R TSRMLS_CC);
-               if (IS_VAR == IS_VAR && !(opline->extended_value & ZEND_FETCH_ADD_LOCK)) {
-                       zval_ptr_dtor_nogc(&free_op1.var);
-               }
 +      }
        CHECK_EXCEPTION();
        ZEND_VM_NEXT_OPCODE();
  }
@@@ -14854,13 -14758,13 +14773,13 @@@ static int ZEND_FASTCALL  ZEND_FETCH_DI
  {
        USE_OPLINE
        zend_free_op free_op1;
-       zval **container;
+       zval *container;
  
        SAVE_OPLINE();
-       container = _get_zval_ptr_ptr_var_fast(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
+       container = _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
        zend_fetch_dimension_address_read(&EX_T(opline->result.var), container, opline->op2.zv, IS_CONST, BP_VAR_IS TSRMLS_CC);
  
 -      if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
 +      zval_ptr_dtor_nogc(&free_op1.var);
        CHECK_EXCEPTION();
        ZEND_VM_NEXT_OPCODE();
  }
@@@ -14883,15 -14787,17 +14802,17 @@@ static int ZEND_FASTCALL  ZEND_FETCH_DI
                        EXTRACT_ZVAL_PTR(&EX_T(opline->result.var));
                }
  
 -              if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
 +              if (free_op1.var) {zval_ptr_dtor_nogc(&free_op1.var);};
        } else {
+               zval *container;
                if (IS_CONST == IS_UNUSED) {
                        zend_error_noreturn(E_ERROR, "Cannot use [] for reading");
                }
-               container = _get_zval_ptr_ptr_var_fast(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
+               container = _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
                zend_fetch_dimension_address_read(&EX_T(opline->result.var), container, opline->op2.zv, IS_CONST, BP_VAR_R TSRMLS_CC);
  
 -              if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
 +              zval_ptr_dtor_nogc(&free_op1.var);
        }
        CHECK_EXCEPTION();
        ZEND_VM_NEXT_OPCODE();
@@@ -17103,24 -17025,17 +17024,15 @@@ static int ZEND_FASTCALL  ZEND_FETCH_DI
  {
        USE_OPLINE
        zend_free_op free_op1, free_op2;
-       zval **container;
+       zval *container;
  
        SAVE_OPLINE();
--
-       if (IS_VAR == IS_TMP_VAR || IS_VAR == IS_CONST) {
-               zval *container = _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
-               zend_fetch_dimension_address_read(&EX_T(opline->result.var), &container, _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2 TSRMLS_CC), IS_TMP_VAR, BP_VAR_R TSRMLS_CC);
-               zval_dtor(free_op2.var);
 -      if (IS_VAR == IS_VAR && (opline->extended_value & ZEND_FETCH_ADD_LOCK)) {
 -              PZVAL_LOCK(EX_T(opline->op1.var).var.ptr);
 -      }
+       container = _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
+       zend_fetch_dimension_address_read(&EX_T(opline->result.var), container, _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2 TSRMLS_CC), IS_TMP_VAR, BP_VAR_R TSRMLS_CC);
+       zval_dtor(free_op2.var);
 -      if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
++      if (IS_VAR != IS_VAR || !(opline->extended_value & ZEND_FETCH_ADD_LOCK)) {
 +              zval_ptr_dtor_nogc(&free_op1.var);
-       } else {
-               container = _get_zval_ptr_ptr_var_fast(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
-               zend_fetch_dimension_address_read(&EX_T(opline->result.var), container, _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2 TSRMLS_CC), IS_TMP_VAR, BP_VAR_R TSRMLS_CC);
-               zval_dtor(free_op2.var);
-               if (IS_VAR == IS_VAR && !(opline->extended_value & ZEND_FETCH_ADD_LOCK)) {
-                       zval_ptr_dtor_nogc(&free_op1.var);
-               }
 +      }
        CHECK_EXCEPTION();
        ZEND_VM_NEXT_OPCODE();
  }
@@@ -17185,13 -17100,13 +17097,13 @@@ static int ZEND_FASTCALL  ZEND_FETCH_DI
  {
        USE_OPLINE
        zend_free_op free_op1, free_op2;
-       zval **container;
+       zval *container;
  
        SAVE_OPLINE();
-       container = _get_zval_ptr_ptr_var_fast(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
+       container = _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
        zend_fetch_dimension_address_read(&EX_T(opline->result.var), container, _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2 TSRMLS_CC), IS_TMP_VAR, BP_VAR_IS TSRMLS_CC);
        zval_dtor(free_op2.var);
 -      if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
 +      zval_ptr_dtor_nogc(&free_op1.var);
        CHECK_EXCEPTION();
        ZEND_VM_NEXT_OPCODE();
  }
@@@ -17214,15 -17129,17 +17126,17 @@@ static int ZEND_FASTCALL  ZEND_FETCH_DI
                        EXTRACT_ZVAL_PTR(&EX_T(opline->result.var));
                }
                zval_dtor(free_op2.var);
 -              if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
 +              if (free_op1.var) {zval_ptr_dtor_nogc(&free_op1.var);};
        } else {
+               zval *container;
                if (IS_TMP_VAR == IS_UNUSED) {
                        zend_error_noreturn(E_ERROR, "Cannot use [] for reading");
                }
-               container = _get_zval_ptr_ptr_var_fast(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
+               container = _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
                zend_fetch_dimension_address_read(&EX_T(opline->result.var), container, _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2 TSRMLS_CC), IS_TMP_VAR, BP_VAR_R TSRMLS_CC);
                zval_dtor(free_op2.var);
 -              if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
 +              zval_ptr_dtor_nogc(&free_op1.var);
        }
        CHECK_EXCEPTION();
        ZEND_VM_NEXT_OPCODE();
@@@ -19339,24 -19274,17 +19253,15 @@@ static int ZEND_FASTCALL  ZEND_FETCH_DI
  {
        USE_OPLINE
        zend_free_op free_op1, free_op2;
-       zval **container;
+       zval *container;
  
        SAVE_OPLINE();
--
-       if (IS_VAR == IS_TMP_VAR || IS_VAR == IS_CONST) {
-               zval *container = _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
-               zend_fetch_dimension_address_read(&EX_T(opline->result.var), &container, _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2 TSRMLS_CC), IS_VAR, BP_VAR_R TSRMLS_CC);
-               zval_ptr_dtor_nogc(&free_op2.var);
 -      if (IS_VAR == IS_VAR && (opline->extended_value & ZEND_FETCH_ADD_LOCK)) {
 -              PZVAL_LOCK(EX_T(opline->op1.var).var.ptr);
 -      }
+       container = _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
+       zend_fetch_dimension_address_read(&EX_T(opline->result.var), container, _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2 TSRMLS_CC), IS_VAR, BP_VAR_R TSRMLS_CC);
 -      if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
 -      if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
++      zval_ptr_dtor_nogc(&free_op2.var);
++      if (IS_VAR != IS_VAR || !(opline->extended_value & ZEND_FETCH_ADD_LOCK)) {
 +              zval_ptr_dtor_nogc(&free_op1.var);
-       } else {
-               container = _get_zval_ptr_ptr_var_fast(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
-               zend_fetch_dimension_address_read(&EX_T(opline->result.var), container, _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2 TSRMLS_CC), IS_VAR, BP_VAR_R TSRMLS_CC);
-               zval_ptr_dtor_nogc(&free_op2.var);
-               if (IS_VAR == IS_VAR && !(opline->extended_value & ZEND_FETCH_ADD_LOCK)) {
-                       zval_ptr_dtor_nogc(&free_op1.var);
-               }
 +      }
        CHECK_EXCEPTION();
        ZEND_VM_NEXT_OPCODE();
  }
@@@ -19421,13 -19349,13 +19326,13 @@@ static int ZEND_FASTCALL  ZEND_FETCH_DI
  {
        USE_OPLINE
        zend_free_op free_op1, free_op2;
-       zval **container;
+       zval *container;
  
        SAVE_OPLINE();
-       container = _get_zval_ptr_ptr_var_fast(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
+       container = _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
        zend_fetch_dimension_address_read(&EX_T(opline->result.var), container, _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2 TSRMLS_CC), IS_VAR, BP_VAR_IS TSRMLS_CC);
 -      if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
 -      if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
 +      zval_ptr_dtor_nogc(&free_op2.var);
 +      zval_ptr_dtor_nogc(&free_op1.var);
        CHECK_EXCEPTION();
        ZEND_VM_NEXT_OPCODE();
  }
@@@ -19449,16 -19377,18 +19354,18 @@@ static int ZEND_FASTCALL  ZEND_FETCH_DI
                if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) {
                        EXTRACT_ZVAL_PTR(&EX_T(opline->result.var));
                }
 -              if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
 -              if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
 +              zval_ptr_dtor_nogc(&free_op2.var);
 +              if (free_op1.var) {zval_ptr_dtor_nogc(&free_op1.var);};
        } else {
+               zval *container;
                if (IS_VAR == IS_UNUSED) {
                        zend_error_noreturn(E_ERROR, "Cannot use [] for reading");
                }
-               container = _get_zval_ptr_ptr_var_fast(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
+               container = _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
                zend_fetch_dimension_address_read(&EX_T(opline->result.var), container, _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2 TSRMLS_CC), IS_VAR, BP_VAR_R TSRMLS_CC);
 -              if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
 -              if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
 +              zval_ptr_dtor_nogc(&free_op2.var);
 +              zval_ptr_dtor_nogc(&free_op1.var);
        }
        CHECK_EXCEPTION();
        ZEND_VM_NEXT_OPCODE();
@@@ -21381,15 -21329,17 +21288,17 @@@ static int ZEND_FASTCALL  ZEND_FETCH_DI
                        EXTRACT_ZVAL_PTR(&EX_T(opline->result.var));
                }
  
 -              if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
 +              if (free_op1.var) {zval_ptr_dtor_nogc(&free_op1.var);};
        } else {
+               zval *container;
                if (IS_UNUSED == IS_UNUSED) {
                        zend_error_noreturn(E_ERROR, "Cannot use [] for reading");
                }
-               container = _get_zval_ptr_ptr_var_fast(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
+               container = _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
                zend_fetch_dimension_address_read(&EX_T(opline->result.var), container, NULL, IS_UNUSED, BP_VAR_R TSRMLS_CC);
  
 -              if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
 +              zval_ptr_dtor_nogc(&free_op1.var);
        }
        CHECK_EXCEPTION();
        ZEND_VM_NEXT_OPCODE();
@@@ -22775,24 -22729,17 +22684,15 @@@ static int ZEND_FASTCALL  ZEND_FETCH_DI
  {
        USE_OPLINE
        zend_free_op free_op1;
-       zval **container;
+       zval *container;
  
        SAVE_OPLINE();
 -
 -      if (IS_VAR == IS_VAR && (opline->extended_value & ZEND_FETCH_ADD_LOCK)) {
 -              PZVAL_LOCK(EX_T(opline->op1.var).var.ptr);
 -      }
+       container = _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
+       zend_fetch_dimension_address_read(&EX_T(opline->result.var), container, _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC), IS_CV, BP_VAR_R TSRMLS_CC);
  
-       if (IS_VAR == IS_TMP_VAR || IS_VAR == IS_CONST) {
-               zval *container = _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
-               zend_fetch_dimension_address_read(&EX_T(opline->result.var), &container, _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC), IS_CV, BP_VAR_R TSRMLS_CC);
 -      if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
++      if (IS_VAR != IS_VAR || !(opline->extended_value & ZEND_FETCH_ADD_LOCK)) {
 +              zval_ptr_dtor_nogc(&free_op1.var);
-       } else {
-               container = _get_zval_ptr_ptr_var_fast(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
-               zend_fetch_dimension_address_read(&EX_T(opline->result.var), container, _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC), IS_CV, BP_VAR_R TSRMLS_CC);
-               if (IS_VAR == IS_VAR && !(opline->extended_value & ZEND_FETCH_ADD_LOCK)) {
-                       zval_ptr_dtor_nogc(&free_op1.var);
-               }
 +      }
        CHECK_EXCEPTION();
        ZEND_VM_NEXT_OPCODE();
  }
@@@ -22857,13 -22804,13 +22757,13 @@@ static int ZEND_FASTCALL  ZEND_FETCH_DI
  {
        USE_OPLINE
        zend_free_op free_op1;
-       zval **container;
+       zval *container;
  
        SAVE_OPLINE();
-       container = _get_zval_ptr_ptr_var_fast(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
+       container = _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
        zend_fetch_dimension_address_read(&EX_T(opline->result.var), container, _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC), IS_CV, BP_VAR_IS TSRMLS_CC);
  
 -      if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
 +      zval_ptr_dtor_nogc(&free_op1.var);
        CHECK_EXCEPTION();
        ZEND_VM_NEXT_OPCODE();
  }
@@@ -22886,15 -22833,17 +22786,17 @@@ static int ZEND_FASTCALL  ZEND_FETCH_DI
                        EXTRACT_ZVAL_PTR(&EX_T(opline->result.var));
                }
  
 -              if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
 +              if (free_op1.var) {zval_ptr_dtor_nogc(&free_op1.var);};
        } else {
+               zval *container;
                if (IS_CV == IS_UNUSED) {
                        zend_error_noreturn(E_ERROR, "Cannot use [] for reading");
                }
-               container = _get_zval_ptr_ptr_var_fast(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
+               container = _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
                zend_fetch_dimension_address_read(&EX_T(opline->result.var), container, _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC), IS_CV, BP_VAR_R TSRMLS_CC);
  
 -              if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
 +              zval_ptr_dtor_nogc(&free_op1.var);
        }
        CHECK_EXCEPTION();
        ZEND_VM_NEXT_OPCODE();
@@@ -32129,24 -32101,17 +32031,15 @@@ static int ZEND_FASTCALL  ZEND_FETCH_DI
  {
        USE_OPLINE
  
-       zval **container;
+       zval *container;
  
        SAVE_OPLINE();
 -
 -      if (IS_CV == IS_VAR && (opline->extended_value & ZEND_FETCH_ADD_LOCK)) {
 -              PZVAL_LOCK(EX_T(opline->op1.var).var.ptr);
 -      }
+       container = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC);
+       zend_fetch_dimension_address_read(&EX_T(opline->result.var), container, opline->op2.zv, IS_CONST, BP_VAR_R TSRMLS_CC);
  
-       if (IS_CV == IS_TMP_VAR || IS_CV == IS_CONST) {
-               zval *container = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC);
-               zend_fetch_dimension_address_read(&EX_T(opline->result.var), &container, opline->op2.zv, IS_CONST, BP_VAR_R TSRMLS_CC);
-       } else {
-               container = _get_zval_ptr_ptr_cv_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC);
-               zend_fetch_dimension_address_read(&EX_T(opline->result.var), container, opline->op2.zv, IS_CONST, BP_VAR_R TSRMLS_CC);
-               if (IS_CV == IS_VAR && !(opline->extended_value & ZEND_FETCH_ADD_LOCK)) {
++      if (IS_CV != IS_VAR || !(opline->extended_value & ZEND_FETCH_ADD_LOCK)) {
  
-               }
 +      }
        CHECK_EXCEPTION();
        ZEND_VM_NEXT_OPCODE();
  }
@@@ -34226,24 -34208,17 +34121,15 @@@ static int ZEND_FASTCALL  ZEND_FETCH_DI
  {
        USE_OPLINE
        zend_free_op free_op2;
-       zval **container;
+       zval *container;
  
        SAVE_OPLINE();
 -
 -      if (IS_CV == IS_VAR && (opline->extended_value & ZEND_FETCH_ADD_LOCK)) {
 -              PZVAL_LOCK(EX_T(opline->op1.var).var.ptr);
 -      }
+       container = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC);
+       zend_fetch_dimension_address_read(&EX_T(opline->result.var), container, _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2 TSRMLS_CC), IS_TMP_VAR, BP_VAR_R TSRMLS_CC);
+       zval_dtor(free_op2.var);
++      if (IS_CV != IS_VAR || !(opline->extended_value & ZEND_FETCH_ADD_LOCK)) {
  
-       if (IS_CV == IS_TMP_VAR || IS_CV == IS_CONST) {
-               zval *container = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC);
-               zend_fetch_dimension_address_read(&EX_T(opline->result.var), &container, _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2 TSRMLS_CC), IS_TMP_VAR, BP_VAR_R TSRMLS_CC);
-               zval_dtor(free_op2.var);
-       } else {
-               container = _get_zval_ptr_ptr_cv_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC);
-               zend_fetch_dimension_address_read(&EX_T(opline->result.var), container, _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2 TSRMLS_CC), IS_TMP_VAR, BP_VAR_R TSRMLS_CC);
-               zval_dtor(free_op2.var);
-               if (IS_CV == IS_VAR && !(opline->extended_value & ZEND_FETCH_ADD_LOCK)) {
-               }
 +      }
        CHECK_EXCEPTION();
        ZEND_VM_NEXT_OPCODE();
  }
@@@ -36325,24 -36319,17 +36213,15 @@@ static int ZEND_FASTCALL  ZEND_FETCH_DI
  {
        USE_OPLINE
        zend_free_op free_op2;
-       zval **container;
+       zval *container;
  
        SAVE_OPLINE();
 -
 -      if (IS_CV == IS_VAR && (opline->extended_value & ZEND_FETCH_ADD_LOCK)) {
 -              PZVAL_LOCK(EX_T(opline->op1.var).var.ptr);
 -      }
+       container = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC);
+       zend_fetch_dimension_address_read(&EX_T(opline->result.var), container, _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2 TSRMLS_CC), IS_VAR, BP_VAR_R TSRMLS_CC);
 -      if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
++      zval_ptr_dtor_nogc(&free_op2.var);
++      if (IS_CV != IS_VAR || !(opline->extended_value & ZEND_FETCH_ADD_LOCK)) {
  
-       if (IS_CV == IS_TMP_VAR || IS_CV == IS_CONST) {
-               zval *container = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC);
-               zend_fetch_dimension_address_read(&EX_T(opline->result.var), &container, _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2 TSRMLS_CC), IS_VAR, BP_VAR_R TSRMLS_CC);
-               zval_ptr_dtor_nogc(&free_op2.var);
-       } else {
-               container = _get_zval_ptr_ptr_cv_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC);
-               zend_fetch_dimension_address_read(&EX_T(opline->result.var), container, _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2 TSRMLS_CC), IS_VAR, BP_VAR_R TSRMLS_CC);
-               zval_ptr_dtor_nogc(&free_op2.var);
-               if (IS_CV == IS_VAR && !(opline->extended_value & ZEND_FETCH_ADD_LOCK)) {
-               }
 +      }
        CHECK_EXCEPTION();
        ZEND_VM_NEXT_OPCODE();
  }
@@@ -36406,12 -36393,12 +36285,12 @@@ static int ZEND_FASTCALL  ZEND_FETCH_DI
  {
        USE_OPLINE
        zend_free_op free_op2;
-       zval **container;
+       zval *container;
  
        SAVE_OPLINE();
-       container = _get_zval_ptr_ptr_cv_BP_VAR_IS(execute_data, opline->op1.var TSRMLS_CC);
+       container = _get_zval_ptr_cv_BP_VAR_IS(execute_data, opline->op1.var TSRMLS_CC);
        zend_fetch_dimension_address_read(&EX_T(opline->result.var), container, _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2 TSRMLS_CC), IS_VAR, BP_VAR_IS TSRMLS_CC);
 -      if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
 +      zval_ptr_dtor_nogc(&free_op2.var);
  
        CHECK_EXCEPTION();
        ZEND_VM_NEXT_OPCODE();
@@@ -36434,15 -36421,17 +36313,17 @@@ static int ZEND_FASTCALL  ZEND_FETCH_DI
                if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
                        EXTRACT_ZVAL_PTR(&EX_T(opline->result.var));
                }
 -              if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
 +              zval_ptr_dtor_nogc(&free_op2.var);
  
        } else {
+               zval *container;
                if (IS_VAR == IS_UNUSED) {
                        zend_error_noreturn(E_ERROR, "Cannot use [] for reading");
                }
-               container = _get_zval_ptr_ptr_cv_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC);
+               container = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC);
                zend_fetch_dimension_address_read(&EX_T(opline->result.var), container, _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2 TSRMLS_CC), IS_VAR, BP_VAR_R TSRMLS_CC);
 -              if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
 +              zval_ptr_dtor_nogc(&free_op2.var);
  
        }
        CHECK_EXCEPTION();
@@@ -39476,24 -39487,17 +39359,15 @@@ static int ZEND_FASTCALL  ZEND_FETCH_DI
  {
        USE_OPLINE
  
-       zval **container;
+       zval *container;
  
        SAVE_OPLINE();
 -
 -      if (IS_CV == IS_VAR && (opline->extended_value & ZEND_FETCH_ADD_LOCK)) {
 -              PZVAL_LOCK(EX_T(opline->op1.var).var.ptr);
 -      }
+       container = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC);
+       zend_fetch_dimension_address_read(&EX_T(opline->result.var), container, _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC), IS_CV, BP_VAR_R TSRMLS_CC);
  
-       if (IS_CV == IS_TMP_VAR || IS_CV == IS_CONST) {
-               zval *container = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC);
-               zend_fetch_dimension_address_read(&EX_T(opline->result.var), &container, _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC), IS_CV, BP_VAR_R TSRMLS_CC);
-       } else {
-               container = _get_zval_ptr_ptr_cv_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC);
-               zend_fetch_dimension_address_read(&EX_T(opline->result.var), container, _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC), IS_CV, BP_VAR_R TSRMLS_CC);
-               if (IS_CV == IS_VAR && !(opline->extended_value & ZEND_FETCH_ADD_LOCK)) {
++      if (IS_CV != IS_VAR || !(opline->extended_value & ZEND_FETCH_ADD_LOCK)) {
  
-               }
 +      }
        CHECK_EXCEPTION();
        ZEND_VM_NEXT_OPCODE();
  }