]> granicus.if.org Git - php/commitdiff
micro optimization
authorDmitry Stogov <dmitry@zend.com>
Tue, 21 Oct 2014 12:18:06 +0000 (16:18 +0400)
committerDmitry Stogov <dmitry@zend.com>
Tue, 21 Oct 2014 12:18:06 +0000 (16:18 +0400)
Zend/zend_vm_def.h
Zend/zend_vm_execute.h

index 24ae57eab150ee96d823fb185cb9953b0e971d0f..0c5ef75be43b145fe66bf989a1c39de64c48dc90 100644 (file)
@@ -1541,10 +1541,8 @@ ZEND_VM_HANDLER(147, ZEND_ASSIGN_DIM, VAR|CV, CONST|TMP|VAR|UNUSED|CV)
        if (OP1_TYPE == IS_VAR && UNEXPECTED(object_ptr == NULL)) {
                zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        }
-       if (UNEXPECTED(Z_ISREF_P(object_ptr)) && Z_TYPE_P(Z_REFVAL_P(object_ptr)) == IS_OBJECT) {
-               object_ptr = Z_REFVAL_P(object_ptr);
-       }
-       if (Z_TYPE_P(object_ptr) == IS_OBJECT) {
+       ZVAL_DEREF(object_ptr);
+       if (UNEXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) {
                zend_free_op free_op2;
                zval *property_name = GET_OP2_ZVAL_PTR(BP_VAR_R);
 
index ae0daef6c8c62c4b29bf7732de2d01a4543a052a..14f2d6ebb58dbac23aef196709ebb165b4fee8d4 100644 (file)
@@ -18483,10 +18483,8 @@ static int ZEND_FASTCALL  ZEND_ASSIGN_DIM_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HAN
        if (IS_VAR == IS_VAR && UNEXPECTED(object_ptr == NULL)) {
                zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        }
-       if (UNEXPECTED(Z_ISREF_P(object_ptr)) && Z_TYPE_P(Z_REFVAL_P(object_ptr)) == IS_OBJECT) {
-               object_ptr = Z_REFVAL_P(object_ptr);
-       }
-       if (Z_TYPE_P(object_ptr) == IS_OBJECT) {
+       ZVAL_DEREF(object_ptr);
+       if (UNEXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) {
 
                zval *property_name = opline->op2.zv;
 
@@ -20695,10 +20693,8 @@ static int ZEND_FASTCALL  ZEND_ASSIGN_DIM_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDL
        if (IS_VAR == IS_VAR && UNEXPECTED(object_ptr == NULL)) {
                zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        }
-       if (UNEXPECTED(Z_ISREF_P(object_ptr)) && Z_TYPE_P(Z_REFVAL_P(object_ptr)) == IS_OBJECT) {
-               object_ptr = Z_REFVAL_P(object_ptr);
-       }
-       if (Z_TYPE_P(object_ptr) == IS_OBJECT) {
+       ZVAL_DEREF(object_ptr);
+       if (UNEXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) {
                zend_free_op free_op2;
                zval *property_name = _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2 TSRMLS_CC);
 
@@ -22820,10 +22816,8 @@ static int ZEND_FASTCALL  ZEND_ASSIGN_DIM_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDL
        if (IS_VAR == IS_VAR && UNEXPECTED(object_ptr == NULL)) {
                zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        }
-       if (UNEXPECTED(Z_ISREF_P(object_ptr)) && Z_TYPE_P(Z_REFVAL_P(object_ptr)) == IS_OBJECT) {
-               object_ptr = Z_REFVAL_P(object_ptr);
-       }
-       if (Z_TYPE_P(object_ptr) == IS_OBJECT) {
+       ZVAL_DEREF(object_ptr);
+       if (UNEXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) {
                zend_free_op free_op2;
                zval *property_name = _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2 TSRMLS_CC);
 
@@ -24456,10 +24450,8 @@ static int ZEND_FASTCALL  ZEND_ASSIGN_DIM_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HA
        if (IS_VAR == IS_VAR && UNEXPECTED(object_ptr == NULL)) {
                zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        }
-       if (UNEXPECTED(Z_ISREF_P(object_ptr)) && Z_TYPE_P(Z_REFVAL_P(object_ptr)) == IS_OBJECT) {
-               object_ptr = Z_REFVAL_P(object_ptr);
-       }
-       if (Z_TYPE_P(object_ptr) == IS_OBJECT) {
+       ZVAL_DEREF(object_ptr);
+       if (UNEXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) {
 
                zval *property_name = NULL;
 
@@ -26155,10 +26147,8 @@ static int ZEND_FASTCALL  ZEND_ASSIGN_DIM_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLE
        if (IS_VAR == IS_VAR && UNEXPECTED(object_ptr == NULL)) {
                zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        }
-       if (UNEXPECTED(Z_ISREF_P(object_ptr)) && Z_TYPE_P(Z_REFVAL_P(object_ptr)) == IS_OBJECT) {
-               object_ptr = Z_REFVAL_P(object_ptr);
-       }
-       if (Z_TYPE_P(object_ptr) == IS_OBJECT) {
+       ZVAL_DEREF(object_ptr);
+       if (UNEXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) {
 
                zval *property_name = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC);
 
@@ -35480,10 +35470,8 @@ static int ZEND_FASTCALL  ZEND_ASSIGN_DIM_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HAND
        if (IS_CV == IS_VAR && UNEXPECTED(object_ptr == NULL)) {
                zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        }
-       if (UNEXPECTED(Z_ISREF_P(object_ptr)) && Z_TYPE_P(Z_REFVAL_P(object_ptr)) == IS_OBJECT) {
-               object_ptr = Z_REFVAL_P(object_ptr);
-       }
-       if (Z_TYPE_P(object_ptr) == IS_OBJECT) {
+       ZVAL_DEREF(object_ptr);
+       if (UNEXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) {
 
                zval *property_name = opline->op2.zv;
 
@@ -37524,10 +37512,8 @@ static int ZEND_FASTCALL  ZEND_ASSIGN_DIM_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLE
        if (IS_CV == IS_VAR && UNEXPECTED(object_ptr == NULL)) {
                zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        }
-       if (UNEXPECTED(Z_ISREF_P(object_ptr)) && Z_TYPE_P(Z_REFVAL_P(object_ptr)) == IS_OBJECT) {
-               object_ptr = Z_REFVAL_P(object_ptr);
-       }
-       if (Z_TYPE_P(object_ptr) == IS_OBJECT) {
+       ZVAL_DEREF(object_ptr);
+       if (UNEXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) {
                zend_free_op free_op2;
                zval *property_name = _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2 TSRMLS_CC);
 
@@ -39521,10 +39507,8 @@ static int ZEND_FASTCALL  ZEND_ASSIGN_DIM_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLE
        if (IS_CV == IS_VAR && UNEXPECTED(object_ptr == NULL)) {
                zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        }
-       if (UNEXPECTED(Z_ISREF_P(object_ptr)) && Z_TYPE_P(Z_REFVAL_P(object_ptr)) == IS_OBJECT) {
-               object_ptr = Z_REFVAL_P(object_ptr);
-       }
-       if (Z_TYPE_P(object_ptr) == IS_OBJECT) {
+       ZVAL_DEREF(object_ptr);
+       if (UNEXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) {
                zend_free_op free_op2;
                zval *property_name = _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2 TSRMLS_CC);
 
@@ -41027,10 +41011,8 @@ static int ZEND_FASTCALL  ZEND_ASSIGN_DIM_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HAN
        if (IS_CV == IS_VAR && UNEXPECTED(object_ptr == NULL)) {
                zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        }
-       if (UNEXPECTED(Z_ISREF_P(object_ptr)) && Z_TYPE_P(Z_REFVAL_P(object_ptr)) == IS_OBJECT) {
-               object_ptr = Z_REFVAL_P(object_ptr);
-       }
-       if (Z_TYPE_P(object_ptr) == IS_OBJECT) {
+       ZVAL_DEREF(object_ptr);
+       if (UNEXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) {
 
                zval *property_name = NULL;
 
@@ -42581,10 +42563,8 @@ static int ZEND_FASTCALL  ZEND_ASSIGN_DIM_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER
        if (IS_CV == IS_VAR && UNEXPECTED(object_ptr == NULL)) {
                zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        }
-       if (UNEXPECTED(Z_ISREF_P(object_ptr)) && Z_TYPE_P(Z_REFVAL_P(object_ptr)) == IS_OBJECT) {
-               object_ptr = Z_REFVAL_P(object_ptr);
-       }
-       if (Z_TYPE_P(object_ptr) == IS_OBJECT) {
+       ZVAL_DEREF(object_ptr);
+       if (UNEXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) {
 
                zval *property_name = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC);