]> granicus.if.org Git - php/commitdiff
Use zval constructors instead ZVAL_COPY if we know the types
authorDmitry Stogov <dmitry@zend.com>
Tue, 26 Dec 2017 13:49:34 +0000 (16:49 +0300)
committerDmitry Stogov <dmitry@zend.com>
Tue, 26 Dec 2017 13:49:34 +0000 (16:49 +0300)
Zend/zend_vm_def.h
Zend/zend_vm_execute.h

index 287c36498f125ba37a43c2b91edbfb25d702a8e2..9f531f67b47d178a0954fa54f848a833f1e6f424 100644 (file)
@@ -1133,7 +1133,7 @@ ZEND_VM_HELPER(zend_post_incdec_property_helper, VAR|UNUSED|CV, CONST|TMPVAR|CV,
                                ZVAL_NULL(EX_VAR(opline->result.var));
                        } else {
                                if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
-                                       ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
+                                       ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(zptr));
                                        if (inc) {
                                                fast_long_increment_function(zptr);
                                        } else {
@@ -1256,7 +1256,7 @@ ZEND_VM_HANDLER(36, ZEND_POST_INC, VAR|CV, ANY)
        var_ptr = GET_OP1_ZVAL_PTR_PTR_UNDEF(BP_VAR_RW);
 
        if (EXPECTED(Z_TYPE_P(var_ptr) == IS_LONG)) {
-               ZVAL_COPY_VALUE(EX_VAR(opline->result.var), var_ptr);
+               ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(var_ptr));
                fast_long_increment_function(var_ptr);
                ZEND_VM_NEXT_OPCODE();
        }
@@ -1288,7 +1288,7 @@ ZEND_VM_HANDLER(37, ZEND_POST_DEC, VAR|CV, ANY)
        var_ptr = GET_OP1_ZVAL_PTR_PTR_UNDEF(BP_VAR_RW);
 
        if (EXPECTED(Z_TYPE_P(var_ptr) == IS_LONG)) {
-               ZVAL_COPY_VALUE(EX_VAR(opline->result.var), var_ptr);
+               ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(var_ptr));
                fast_long_decrement_function(var_ptr);
                ZEND_VM_NEXT_OPCODE();
        }
@@ -8701,10 +8701,11 @@ ZEND_VM_HOT_TYPE_SPEC_HANDLER(ZEND_POST_INC, (op1_info == (MAY_BE_LONG|MAY_BE_DO
        zval *var_ptr;
 
        var_ptr = GET_OP1_ZVAL_PTR_PTR_UNDEF(BP_VAR_RW);
-       ZVAL_COPY_VALUE(EX_VAR(opline->result.var), var_ptr);
        if (EXPECTED(Z_TYPE_P(var_ptr) == IS_LONG)) {
+               ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(var_ptr));
                fast_long_increment_function(var_ptr);
        } else {
+               ZVAL_DOUBLE(EX_VAR(opline->result.var), Z_DVAL_P(var_ptr));
                Z_DVAL_P(var_ptr)++;
        }
        ZEND_VM_NEXT_OPCODE();
@@ -8738,10 +8739,11 @@ ZEND_VM_HOT_TYPE_SPEC_HANDLER(ZEND_POST_DEC, (op1_info == (MAY_BE_LONG|MAY_BE_DO
        zval *var_ptr;
 
        var_ptr = GET_OP1_ZVAL_PTR_PTR_UNDEF(BP_VAR_RW);
-       ZVAL_COPY_VALUE(EX_VAR(opline->result.var), var_ptr);
        if (EXPECTED(Z_TYPE_P(var_ptr) == IS_LONG)) {
+               ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(var_ptr));
                fast_long_decrement_function(var_ptr);
        } else {
+               ZVAL_DOUBLE(EX_VAR(opline->result.var), Z_DVAL_P(var_ptr));
                Z_DVAL_P(var_ptr)--;
        }
        ZEND_VM_NEXT_OPCODE();
index 927bde994a81aecefb99b8047846f96e8d1c727b..b77d675f5eea47d35efce6b9094541573ab77aaf 100644 (file)
@@ -11945,10 +11945,11 @@ static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_POST_INC_LONG_OR_D
        zval *var_ptr;
 
        var_ptr = EX_VAR(opline->op1.var);
-       ZVAL_COPY_VALUE(EX_VAR(opline->result.var), var_ptr);
        if (EXPECTED(Z_TYPE_P(var_ptr) == IS_LONG)) {
+               ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(var_ptr));
                fast_long_increment_function(var_ptr);
        } else {
+               ZVAL_DOUBLE(EX_VAR(opline->result.var), Z_DVAL_P(var_ptr));
                Z_DVAL_P(var_ptr)++;
        }
        ZEND_VM_NEXT_OPCODE();
@@ -11982,10 +11983,11 @@ static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_POST_DEC_LONG_OR_D
        zval *var_ptr;
 
        var_ptr = EX_VAR(opline->op1.var);
-       ZVAL_COPY_VALUE(EX_VAR(opline->result.var), var_ptr);
        if (EXPECTED(Z_TYPE_P(var_ptr) == IS_LONG)) {
+               ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(var_ptr));
                fast_long_decrement_function(var_ptr);
        } else {
+               ZVAL_DOUBLE(EX_VAR(opline->result.var), Z_DVAL_P(var_ptr));
                Z_DVAL_P(var_ptr)--;
        }
        ZEND_VM_NEXT_OPCODE();
@@ -21532,7 +21534,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_POST_INC_SPEC_VAR_HANDLER(ZEND
        var_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
 
        if (EXPECTED(Z_TYPE_P(var_ptr) == IS_LONG)) {
-               ZVAL_COPY_VALUE(EX_VAR(opline->result.var), var_ptr);
+               ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(var_ptr));
                fast_long_increment_function(var_ptr);
                ZEND_VM_NEXT_OPCODE();
        }
@@ -21564,7 +21566,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_POST_DEC_SPEC_VAR_HANDLER(ZEND
        var_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
 
        if (EXPECTED(Z_TYPE_P(var_ptr) == IS_LONG)) {
-               ZVAL_COPY_VALUE(EX_VAR(opline->result.var), var_ptr);
+               ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(var_ptr));
                fast_long_decrement_function(var_ptr);
                ZEND_VM_NEXT_OPCODE();
        }
@@ -23729,7 +23731,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_post_incdec_property_helper_SP
                                ZVAL_NULL(EX_VAR(opline->result.var));
                        } else {
                                if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
-                                       ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
+                                       ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(zptr));
                                        if (inc) {
                                                fast_long_increment_function(zptr);
                                        } else {
@@ -26166,7 +26168,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_post_incdec_property_helper_SP
                                ZVAL_NULL(EX_VAR(opline->result.var));
                        } else {
                                if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
-                                       ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
+                                       ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(zptr));
                                        if (inc) {
                                                fast_long_increment_function(zptr);
                                        } else {
@@ -30018,7 +30020,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_post_incdec_property_helper_SP
                                ZVAL_NULL(EX_VAR(opline->result.var));
                        } else {
                                if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
-                                       ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
+                                       ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(zptr));
                                        if (inc) {
                                                fast_long_increment_function(zptr);
                                        } else {
@@ -32399,7 +32401,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_post_incdec_property_helper_SP
                                ZVAL_NULL(EX_VAR(opline->result.var));
                        } else {
                                if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
-                                       ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
+                                       ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(zptr));
                                        if (inc) {
                                                fast_long_increment_function(zptr);
                                        } else {
@@ -34224,7 +34226,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_post_incdec_property_helper_SP
                                ZVAL_NULL(EX_VAR(opline->result.var));
                        } else {
                                if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
-                                       ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
+                                       ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(zptr));
                                        if (inc) {
                                                fast_long_increment_function(zptr);
                                        } else {
@@ -36585,7 +36587,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_post_incdec_property_helper_SP
                                ZVAL_NULL(EX_VAR(opline->result.var));
                        } else {
                                if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
-                                       ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
+                                       ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(zptr));
                                        if (inc) {
                                                fast_long_increment_function(zptr);
                                        } else {
@@ -38252,7 +38254,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_POST_INC_SPEC_CV_HANDLER(ZEND_
        var_ptr = _get_zval_ptr_cv_undef_BP_VAR_RW(opline->op1.var EXECUTE_DATA_CC);
 
        if (EXPECTED(Z_TYPE_P(var_ptr) == IS_LONG)) {
-               ZVAL_COPY_VALUE(EX_VAR(opline->result.var), var_ptr);
+               ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(var_ptr));
                fast_long_increment_function(var_ptr);
                ZEND_VM_NEXT_OPCODE();
        }
@@ -38283,7 +38285,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_POST_DEC_SPEC_CV_HANDLER(ZEND_
        var_ptr = _get_zval_ptr_cv_undef_BP_VAR_RW(opline->op1.var EXECUTE_DATA_CC);
 
        if (EXPECTED(Z_TYPE_P(var_ptr) == IS_LONG)) {
-               ZVAL_COPY_VALUE(EX_VAR(opline->result.var), var_ptr);
+               ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(var_ptr));
                fast_long_decrement_function(var_ptr);
                ZEND_VM_NEXT_OPCODE();
        }
@@ -41021,7 +41023,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_post_incdec_property_helper_SP
                                ZVAL_NULL(EX_VAR(opline->result.var));
                        } else {
                                if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
-                                       ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
+                                       ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(zptr));
                                        if (inc) {
                                                fast_long_increment_function(zptr);
                                        } else {
@@ -45111,7 +45113,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_post_incdec_property_helper_SP
                                ZVAL_NULL(EX_VAR(opline->result.var));
                        } else {
                                if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
-                                       ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
+                                       ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(zptr));
                                        if (inc) {
                                                fast_long_increment_function(zptr);
                                        } else {
@@ -50920,7 +50922,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_post_incdec_property_helper_SP
                                ZVAL_NULL(EX_VAR(opline->result.var));
                        } else {
                                if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
-                                       ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
+                                       ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(zptr));
                                        if (inc) {
                                                fast_long_increment_function(zptr);
                                        } else {