]> granicus.if.org Git - php/commitdiff
IS_CONST operands are always have is_ref==1 and refcount==2, so we can eliminate
authorDmitry Stogov <dmitry@php.net>
Wed, 30 Apr 2008 10:44:24 +0000 (10:44 +0000)
committerDmitry Stogov <dmitry@php.net>
Wed, 30 Apr 2008 10:44:24 +0000 (10:44 +0000)
 unnecessary checks at specialization/compilation stage

Zend/zend_vm_def.h
Zend/zend_vm_execute.h

index 287543fc765a548395686678bd48d91f9b34800b..424570a167a721b54dfdf23749ae46982b50f5cb 100644 (file)
@@ -2374,7 +2374,8 @@ ZEND_VM_C_LABEL(return_by_value):
                                FREE_OP1();
                        }
                } else if (!IS_OP1_TMP_FREE()) { /* Not a temp var */
-                       if (EG(active_op_array)->return_reference == ZEND_RETURN_REF ||
+                       if (OP1_TYPE == IS_CONST ||
+                           EG(active_op_array)->return_reference == ZEND_RETURN_REF ||
                            (PZVAL_IS_REF(retval_ptr) && Z_REFCOUNT_P(retval_ptr) > 0)) {
                                zval *ret;
 
@@ -2964,7 +2965,7 @@ ZEND_VM_HANDLER(72, ZEND_ADD_ARRAY_ELEMENT, CONST|TMP|VAR|CV, CONST|TMP|VAR|UNUS
                        Z_ADDREF_P(expr_ptr);
                } else
 #endif
-               if (PZVAL_IS_REF(expr_ptr)) {
+               if (OP1_TYPE == IS_CONST || PZVAL_IS_REF(expr_ptr)) {
                        zval *new_expr;
 
                        ALLOC_ZVAL(new_expr);
index 933f06b821f94e4d6aff202c2b73252e808e9890..cc47d898eadd0dc35e72eaf7305cda2b7828a223 100644 (file)
@@ -1429,7 +1429,8 @@ return_by_value:
 
                        }
                } else if (!0) { /* Not a temp var */
-                       if (EG(active_op_array)->return_reference == ZEND_RETURN_REF ||
+                       if (IS_CONST == IS_CONST ||
+                           EG(active_op_array)->return_reference == ZEND_RETURN_REF ||
                            (PZVAL_IS_REF(retval_ptr) && Z_REFCOUNT_P(retval_ptr) > 0)) {
                                zval *ret;
 
@@ -2716,7 +2717,7 @@ static int ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_A
                        Z_ADDREF_P(expr_ptr);
                } else
 #endif
-               if (PZVAL_IS_REF(expr_ptr)) {
+               if (IS_CONST == IS_CONST || PZVAL_IS_REF(expr_ptr)) {
                        zval *new_expr;
 
                        ALLOC_ZVAL(new_expr);
@@ -3223,7 +3224,7 @@ static int ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARG
                        Z_ADDREF_P(expr_ptr);
                } else
 #endif
-               if (PZVAL_IS_REF(expr_ptr)) {
+               if (IS_CONST == IS_CONST || PZVAL_IS_REF(expr_ptr)) {
                        zval *new_expr;
 
                        ALLOC_ZVAL(new_expr);
@@ -3692,7 +3693,7 @@ static int ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARG
                        Z_ADDREF_P(expr_ptr);
                } else
 #endif
-               if (PZVAL_IS_REF(expr_ptr)) {
+               if (IS_CONST == IS_CONST || PZVAL_IS_REF(expr_ptr)) {
                        zval *new_expr;
 
                        ALLOC_ZVAL(new_expr);
@@ -3885,7 +3886,7 @@ static int ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_
                        Z_ADDREF_P(expr_ptr);
                } else
 #endif
-               if (PZVAL_IS_REF(expr_ptr)) {
+               if (IS_CONST == IS_CONST || PZVAL_IS_REF(expr_ptr)) {
                        zval *new_expr;
 
                        ALLOC_ZVAL(new_expr);
@@ -4353,7 +4354,7 @@ static int ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS
                        Z_ADDREF_P(expr_ptr);
                } else
 #endif
-               if (PZVAL_IS_REF(expr_ptr)) {
+               if (IS_CONST == IS_CONST || PZVAL_IS_REF(expr_ptr)) {
                        zval *new_expr;
 
                        ALLOC_ZVAL(new_expr);
@@ -4780,7 +4781,8 @@ return_by_value:
                                zval_dtor(free_op1.var);
                        }
                } else if (!1) { /* Not a temp var */
-                       if (EG(active_op_array)->return_reference == ZEND_RETURN_REF ||
+                       if (IS_TMP_VAR == IS_CONST ||
+                           EG(active_op_array)->return_reference == ZEND_RETURN_REF ||
                            (PZVAL_IS_REF(retval_ptr) && Z_REFCOUNT_P(retval_ptr) > 0)) {
                                zval *ret;
 
@@ -6009,7 +6011,7 @@ static int ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARG
                        Z_ADDREF_P(expr_ptr);
                } else
 #endif
-               if (PZVAL_IS_REF(expr_ptr)) {
+               if (IS_TMP_VAR == IS_CONST || PZVAL_IS_REF(expr_ptr)) {
                        zval *new_expr;
 
                        ALLOC_ZVAL(new_expr);
@@ -6472,7 +6474,7 @@ static int ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
                        Z_ADDREF_P(expr_ptr);
                } else
 #endif
-               if (PZVAL_IS_REF(expr_ptr)) {
+               if (IS_TMP_VAR == IS_CONST || PZVAL_IS_REF(expr_ptr)) {
                        zval *new_expr;
 
                        ALLOC_ZVAL(new_expr);
@@ -6935,7 +6937,7 @@ static int ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
                        Z_ADDREF_P(expr_ptr);
                } else
 #endif
-               if (PZVAL_IS_REF(expr_ptr)) {
+               if (IS_TMP_VAR == IS_CONST || PZVAL_IS_REF(expr_ptr)) {
                        zval *new_expr;
 
                        ALLOC_ZVAL(new_expr);
@@ -7029,7 +7031,7 @@ static int ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_AR
                        Z_ADDREF_P(expr_ptr);
                } else
 #endif
-               if (PZVAL_IS_REF(expr_ptr)) {
+               if (IS_TMP_VAR == IS_CONST || PZVAL_IS_REF(expr_ptr)) {
                        zval *new_expr;
 
                        ALLOC_ZVAL(new_expr);
@@ -7489,7 +7491,7 @@ static int ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
                        Z_ADDREF_P(expr_ptr);
                } else
 #endif
-               if (PZVAL_IS_REF(expr_ptr)) {
+               if (IS_TMP_VAR == IS_CONST || PZVAL_IS_REF(expr_ptr)) {
                        zval *new_expr;
 
                        ALLOC_ZVAL(new_expr);
@@ -8068,7 +8070,8 @@ return_by_value:
                                if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
                        }
                } else if (!0) { /* Not a temp var */
-                       if (EG(active_op_array)->return_reference == ZEND_RETURN_REF ||
+                       if (IS_VAR == IS_CONST ||
+                           EG(active_op_array)->return_reference == ZEND_RETURN_REF ||
                            (PZVAL_IS_REF(retval_ptr) && Z_REFCOUNT_P(retval_ptr) > 0)) {
                                zval *ret;
 
@@ -10662,7 +10665,7 @@ static int ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARG
                        Z_ADDREF_P(expr_ptr);
                } else
 #endif
-               if (PZVAL_IS_REF(expr_ptr)) {
+               if (IS_VAR == IS_CONST || PZVAL_IS_REF(expr_ptr)) {
                        zval *new_expr;
 
                        ALLOC_ZVAL(new_expr);
@@ -12479,7 +12482,7 @@ static int ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
                        Z_ADDREF_P(expr_ptr);
                } else
 #endif
-               if (PZVAL_IS_REF(expr_ptr)) {
+               if (IS_VAR == IS_CONST || PZVAL_IS_REF(expr_ptr)) {
                        zval *new_expr;
 
                        ALLOC_ZVAL(new_expr);
@@ -14337,7 +14340,7 @@ static int ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
                        Z_ADDREF_P(expr_ptr);
                } else
 #endif
-               if (PZVAL_IS_REF(expr_ptr)) {
+               if (IS_VAR == IS_CONST || PZVAL_IS_REF(expr_ptr)) {
                        zval *new_expr;
 
                        ALLOC_ZVAL(new_expr);
@@ -15261,7 +15264,7 @@ static int ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_AR
                        Z_ADDREF_P(expr_ptr);
                } else
 #endif
-               if (PZVAL_IS_REF(expr_ptr)) {
+               if (IS_VAR == IS_CONST || PZVAL_IS_REF(expr_ptr)) {
                        zval *new_expr;
 
                        ALLOC_ZVAL(new_expr);
@@ -16800,7 +16803,7 @@ static int ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
                        Z_ADDREF_P(expr_ptr);
                } else
 #endif
-               if (PZVAL_IS_REF(expr_ptr)) {
+               if (IS_VAR == IS_CONST || PZVAL_IS_REF(expr_ptr)) {
                        zval *new_expr;
 
                        ALLOC_ZVAL(new_expr);
@@ -22386,7 +22389,8 @@ return_by_value:
 
                        }
                } else if (!0) { /* Not a temp var */
-                       if (EG(active_op_array)->return_reference == ZEND_RETURN_REF ||
+                       if (IS_CV == IS_CONST ||
+                           EG(active_op_array)->return_reference == ZEND_RETURN_REF ||
                            (PZVAL_IS_REF(retval_ptr) && Z_REFCOUNT_P(retval_ptr) > 0)) {
                                zval *ret;
 
@@ -24634,7 +24638,7 @@ static int ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS
                        Z_ADDREF_P(expr_ptr);
                } else
 #endif
-               if (PZVAL_IS_REF(expr_ptr)) {
+               if (IS_CV == IS_CONST || PZVAL_IS_REF(expr_ptr)) {
                        zval *new_expr;
 
                        ALLOC_ZVAL(new_expr);
@@ -26340,7 +26344,7 @@ static int ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
                        Z_ADDREF_P(expr_ptr);
                } else
 #endif
-               if (PZVAL_IS_REF(expr_ptr)) {
+               if (IS_CV == IS_CONST || PZVAL_IS_REF(expr_ptr)) {
                        zval *new_expr;
 
                        ALLOC_ZVAL(new_expr);
@@ -28086,7 +28090,7 @@ static int ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
                        Z_ADDREF_P(expr_ptr);
                } else
 #endif
-               if (PZVAL_IS_REF(expr_ptr)) {
+               if (IS_CV == IS_CONST || PZVAL_IS_REF(expr_ptr)) {
                        zval *new_expr;
 
                        ALLOC_ZVAL(new_expr);
@@ -28905,7 +28909,7 @@ static int ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARG
                        Z_ADDREF_P(expr_ptr);
                } else
 #endif
-               if (PZVAL_IS_REF(expr_ptr)) {
+               if (IS_CV == IS_CONST || PZVAL_IS_REF(expr_ptr)) {
                        zval *new_expr;
 
                        ALLOC_ZVAL(new_expr);
@@ -30336,7 +30340,7 @@ static int ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
                        Z_ADDREF_P(expr_ptr);
                } else
 #endif
-               if (PZVAL_IS_REF(expr_ptr)) {
+               if (IS_CV == IS_CONST || PZVAL_IS_REF(expr_ptr)) {
                        zval *new_expr;
 
                        ALLOC_ZVAL(new_expr);