]> granicus.if.org Git - php/commitdiff
cleanup
authorDmitry Stogov <dmitry@zend.com>
Wed, 8 Jun 2016 09:55:31 +0000 (12:55 +0300)
committerDmitry Stogov <dmitry@zend.com>
Wed, 8 Jun 2016 09:55:31 +0000 (12:55 +0300)
Zend/zend_vm_def.h
Zend/zend_vm_execute.h

index 6e3cba7db378582d45b4237781080c812d1fc3ab..bcc8fe4ed60980970724fabf2d91f170d5419ab3 100644 (file)
@@ -7641,6 +7641,7 @@ ZEND_VM_HANDLER(168, ZEND_BIND_GLOBAL, CV, CONST)
        zval *value;
        zval *variable_ptr;
        uint32_t idx;
+       zend_reference *ref;
 
        ZEND_VM_REPEATABLE_OPCODE
 
@@ -7683,29 +7684,24 @@ ZEND_VM_C_LABEL(check_indirect):
                }
        }
 
-       do {
-               zend_reference *ref;
+       if (UNEXPECTED(!Z_ISREF_P(value))) {
+               ref = (zend_reference*)emalloc(sizeof(zend_reference));
+               GC_REFCOUNT(ref) = 2;
+               GC_TYPE_INFO(ref) = IS_REFERENCE;
+               ZVAL_COPY_VALUE(&ref->val, value);
+               Z_REF_P(value) = ref;
+               Z_TYPE_INFO_P(value) = IS_REFERENCE_EX;
+       } else {
+               ref = Z_REF_P(value);
+               GC_REFCOUNT(ref)++;
+       }
 
-               if (UNEXPECTED(!Z_ISREF_P(value))) {
-                       ref = (zend_reference*)emalloc(sizeof(zend_reference));
-                       GC_REFCOUNT(ref) = 2;
-                       GC_TYPE_INFO(ref) = IS_REFERENCE;
-                       ZVAL_COPY_VALUE(&ref->val, value);
-                       Z_REF_P(value) = ref;
-                       Z_TYPE_INFO_P(value) = IS_REFERENCE_EX;
-               } else {
-                       ref = Z_REF_P(value);
-                       GC_REFCOUNT(ref)++;
-               }
+       variable_ptr = GET_OP1_ZVAL_PTR_PTR_UNDEF(BP_VAR_W);
 
-               variable_ptr = GET_OP1_ZVAL_PTR_PTR_UNDEF(BP_VAR_W);
-               
-               if (UNEXPECTED(Z_REFCOUNTED_P(variable_ptr))) {
-                       uint32_t refcnt = Z_DELREF_P(variable_ptr);
+       if (UNEXPECTED(Z_REFCOUNTED_P(variable_ptr))) {
+               uint32_t refcnt = Z_DELREF_P(variable_ptr);
 
-                       if (UNEXPECTED(variable_ptr == value)) {
-                               break;
-                       }
+               if (EXPECTED(variable_ptr != value)) {
                        if (refcnt == 0) {
                                SAVE_OPLINE();
                                zval_dtor_func(Z_COUNTED_P(variable_ptr));
@@ -7717,8 +7713,8 @@ ZEND_VM_C_LABEL(check_indirect):
                                GC_ZVAL_CHECK_POSSIBLE_ROOT(variable_ptr);
                        }
                }
-               ZVAL_REF(variable_ptr, ref);
-       } while (0);
+       }
+       ZVAL_REF(variable_ptr, ref);
 
        ZEND_VM_REPEAT_OPCODE(ZEND_BIND_GLOBAL);
        ZEND_VM_NEXT_OPCODE();
index 854a247ab8d8e8093187258b2529aa032b73b6d4..cfac4e7e54df13351a10eda90b5a6448aef913bf 100644 (file)
@@ -42447,6 +42447,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BIND_GLOBAL_SPEC_CV_CONST_HAND
        zval *value;
        zval *variable_ptr;
        uint32_t idx;
+       zend_reference *ref;
 
        ZEND_VM_REPEATABLE_OPCODE
 
@@ -42489,29 +42490,24 @@ check_indirect:
                }
        }
 
-       do {
-               zend_reference *ref;
-
-               if (UNEXPECTED(!Z_ISREF_P(value))) {
-                       ref = (zend_reference*)emalloc(sizeof(zend_reference));
-                       GC_REFCOUNT(ref) = 2;
-                       GC_TYPE_INFO(ref) = IS_REFERENCE;
-                       ZVAL_COPY_VALUE(&ref->val, value);
-                       Z_REF_P(value) = ref;
-                       Z_TYPE_INFO_P(value) = IS_REFERENCE_EX;
-               } else {
-                       ref = Z_REF_P(value);
-                       GC_REFCOUNT(ref)++;
-               }
+       if (UNEXPECTED(!Z_ISREF_P(value))) {
+               ref = (zend_reference*)emalloc(sizeof(zend_reference));
+               GC_REFCOUNT(ref) = 2;
+               GC_TYPE_INFO(ref) = IS_REFERENCE;
+               ZVAL_COPY_VALUE(&ref->val, value);
+               Z_REF_P(value) = ref;
+               Z_TYPE_INFO_P(value) = IS_REFERENCE_EX;
+       } else {
+               ref = Z_REF_P(value);
+               GC_REFCOUNT(ref)++;
+       }
 
-               variable_ptr = _get_zval_ptr_cv_undef_BP_VAR_W(execute_data, opline->op1.var);
+       variable_ptr = _get_zval_ptr_cv_undef_BP_VAR_W(execute_data, opline->op1.var);
 
-               if (UNEXPECTED(Z_REFCOUNTED_P(variable_ptr))) {
-                       uint32_t refcnt = Z_DELREF_P(variable_ptr);
+       if (UNEXPECTED(Z_REFCOUNTED_P(variable_ptr))) {
+               uint32_t refcnt = Z_DELREF_P(variable_ptr);
 
-                       if (UNEXPECTED(variable_ptr == value)) {
-                               break;
-                       }
+               if (EXPECTED(variable_ptr != value)) {
                        if (refcnt == 0) {
                                SAVE_OPLINE();
                                zval_dtor_func(Z_COUNTED_P(variable_ptr));
@@ -42523,8 +42519,8 @@ check_indirect:
                                GC_ZVAL_CHECK_POSSIBLE_ROOT(variable_ptr);
                        }
                }
-               ZVAL_REF(variable_ptr, ref);
-       } while (0);
+       }
+       ZVAL_REF(variable_ptr, ref);
 
        ZEND_VM_REPEAT_OPCODE(ZEND_BIND_GLOBAL);
        ZEND_VM_NEXT_OPCODE();