]> granicus.if.org Git - php/commitdiff
ZVAL_COPY_UNREF() micro-optimization
authorDmitry Stogov <dmitry@zend.com>
Thu, 1 Jun 2017 21:38:09 +0000 (00:38 +0300)
committerDmitry Stogov <dmitry@zend.com>
Thu, 1 Jun 2017 21:38:09 +0000 (00:38 +0300)
Zend/zend_types.h
Zend/zend_vm_def.h
Zend/zend_vm_execute.h

index caa68e22e84e24c6eaa9b5da41471fcb31941f8e..98bf27c45ac7e240396f2bf364a55eceb14fa784 100644 (file)
@@ -982,11 +982,11 @@ static zend_always_inline uint32_t zval_delref_p(zval* pz) {
 
 #define ZVAL_COPY_UNREF(z, v) do {                                             \
                zval *_z3 = (v);                                                                \
-               if (Z_REFCOUNTED_P(_z3)) {                                              \
-                       if (UNEXPECTED(Z_ISREF_P(_z3))                          \
+               if (Z_OPT_REFCOUNTED_P(_z3)) {                                  \
+                       if (UNEXPECTED(Z_OPT_ISREF_P(_z3))                      \
                         && UNEXPECTED(Z_REFCOUNT_P(_z3) == 1)) {       \
                                ZVAL_UNREF(_z3);                                                \
-                               if (Z_REFCOUNTED_P(_z3)) {                              \
+                               if (Z_OPT_REFCOUNTED_P(_z3)) {                  \
                                        Z_ADDREF_P(_z3);                                        \
                                }                                                                               \
                        } else {                                                                        \
index 882582b2c5969eaa2a997e3ed21405788c5bff73..d4c5a52585d42aabc4daf051c3ae9f35ec6c2a00 100644 (file)
@@ -1787,7 +1787,7 @@ ZEND_VM_HANDLER(82, ZEND_FETCH_OBJ_R, CONST|TMP|VAR|UNUSED|THIS|CV, CONST|TMPVAR
 
                        if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
                                retval = OBJ_PROP(zobj, prop_offset);
-                               if (EXPECTED(Z_TYPE_P(retval) != IS_UNDEF)) {
+                               if (EXPECTED(Z_TYPE_INFO_P(retval) != IS_UNDEF)) {
                                        ZVAL_COPY_UNREF(EX_VAR(opline->result.var), retval);
                                        break;
                                }
index 7133229dca6f40ddba0fcf38ae72eaf5eb0542f3..863b6ff08ea066fd58ff26a5f1c942f6dabe2e1a 100644 (file)
@@ -5072,7 +5072,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_R_SPEC_CONST_CONST_H
 
                        if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
                                retval = OBJ_PROP(zobj, prop_offset);
-                               if (EXPECTED(Z_TYPE_P(retval) != IS_UNDEF)) {
+                               if (EXPECTED(Z_TYPE_INFO_P(retval) != IS_UNDEF)) {
                                        ZVAL_COPY_UNREF(EX_VAR(opline->result.var), retval);
                                        break;
                                }
@@ -9121,7 +9121,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_R_SPEC_CONST_CV_HAND
 
                        if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
                                retval = OBJ_PROP(zobj, prop_offset);
-                               if (EXPECTED(Z_TYPE_P(retval) != IS_UNDEF)) {
+                               if (EXPECTED(Z_TYPE_INFO_P(retval) != IS_UNDEF)) {
                                        ZVAL_COPY_UNREF(EX_VAR(opline->result.var), retval);
                                        break;
                                }
@@ -11106,7 +11106,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_R_SPEC_CONST_TMPVAR_
 
                        if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
                                retval = OBJ_PROP(zobj, prop_offset);
-                               if (EXPECTED(Z_TYPE_P(retval) != IS_UNDEF)) {
+                               if (EXPECTED(Z_TYPE_INFO_P(retval) != IS_UNDEF)) {
                                        ZVAL_COPY_UNREF(EX_VAR(opline->result.var), retval);
                                        break;
                                }
@@ -13612,7 +13612,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_R_SPEC_TMP_CONST_HAN
 
                        if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
                                retval = OBJ_PROP(zobj, prop_offset);
-                               if (EXPECTED(Z_TYPE_P(retval) != IS_UNDEF)) {
+                               if (EXPECTED(Z_TYPE_INFO_P(retval) != IS_UNDEF)) {
                                        ZVAL_COPY_UNREF(EX_VAR(opline->result.var), retval);
                                        break;
                                }
@@ -14967,7 +14967,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_R_SPEC_TMP_CV_HANDLE
 
                        if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
                                retval = OBJ_PROP(zobj, prop_offset);
-                               if (EXPECTED(Z_TYPE_P(retval) != IS_UNDEF)) {
+                               if (EXPECTED(Z_TYPE_INFO_P(retval) != IS_UNDEF)) {
                                        ZVAL_COPY_UNREF(EX_VAR(opline->result.var), retval);
                                        break;
                                }
@@ -15492,7 +15492,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_R_SPEC_TMP_TMPVAR_HA
 
                        if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
                                retval = OBJ_PROP(zobj, prop_offset);
-                               if (EXPECTED(Z_TYPE_P(retval) != IS_UNDEF)) {
+                               if (EXPECTED(Z_TYPE_INFO_P(retval) != IS_UNDEF)) {
                                        ZVAL_COPY_UNREF(EX_VAR(opline->result.var), retval);
                                        break;
                                }
@@ -18416,7 +18416,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_R_SPEC_VAR_CONST_HAN
 
                        if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
                                retval = OBJ_PROP(zobj, prop_offset);
-                               if (EXPECTED(Z_TYPE_P(retval) != IS_UNDEF)) {
+                               if (EXPECTED(Z_TYPE_INFO_P(retval) != IS_UNDEF)) {
                                        ZVAL_COPY_UNREF(EX_VAR(opline->result.var), retval);
                                        break;
                                }
@@ -22770,7 +22770,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_R_SPEC_VAR_CV_HANDLE
 
                        if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
                                retval = OBJ_PROP(zobj, prop_offset);
-                               if (EXPECTED(Z_TYPE_P(retval) != IS_UNDEF)) {
+                               if (EXPECTED(Z_TYPE_INFO_P(retval) != IS_UNDEF)) {
                                        ZVAL_COPY_UNREF(EX_VAR(opline->result.var), retval);
                                        break;
                                }
@@ -25292,7 +25292,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_R_SPEC_VAR_TMPVAR_HA
 
                        if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
                                retval = OBJ_PROP(zobj, prop_offset);
-                               if (EXPECTED(Z_TYPE_P(retval) != IS_UNDEF)) {
+                               if (EXPECTED(Z_TYPE_INFO_P(retval) != IS_UNDEF)) {
                                        ZVAL_COPY_UNREF(EX_VAR(opline->result.var), retval);
                                        break;
                                }
@@ -27370,7 +27370,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_R_SPEC_UNUSED_CONST_
 
                        if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
                                retval = OBJ_PROP(zobj, prop_offset);
-                               if (EXPECTED(Z_TYPE_P(retval) != IS_UNDEF)) {
+                               if (EXPECTED(Z_TYPE_INFO_P(retval) != IS_UNDEF)) {
                                        ZVAL_COPY_UNREF(EX_VAR(opline->result.var), retval);
                                        break;
                                }
@@ -29997,7 +29997,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_R_SPEC_UNUSED_CV_HAN
 
                        if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
                                retval = OBJ_PROP(zobj, prop_offset);
-                               if (EXPECTED(Z_TYPE_P(retval) != IS_UNDEF)) {
+                               if (EXPECTED(Z_TYPE_INFO_P(retval) != IS_UNDEF)) {
                                        ZVAL_COPY_UNREF(EX_VAR(opline->result.var), retval);
                                        break;
                                }
@@ -31730,7 +31730,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_R_SPEC_UNUSED_TMPVAR
 
                        if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
                                retval = OBJ_PROP(zobj, prop_offset);
-                               if (EXPECTED(Z_TYPE_P(retval) != IS_UNDEF)) {
+                               if (EXPECTED(Z_TYPE_INFO_P(retval) != IS_UNDEF)) {
                                        ZVAL_COPY_UNREF(EX_VAR(opline->result.var), retval);
                                        break;
                                }
@@ -36342,7 +36342,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_R_SPEC_CV_CONST_HAND
 
                        if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
                                retval = OBJ_PROP(zobj, prop_offset);
-                               if (EXPECTED(Z_TYPE_P(retval) != IS_UNDEF)) {
+                               if (EXPECTED(Z_TYPE_INFO_P(retval) != IS_UNDEF)) {
                                        ZVAL_COPY_UNREF(EX_VAR(opline->result.var), retval);
                                        break;
                                }
@@ -42764,7 +42764,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_R_SPEC_CV_CV_HANDLER
 
                        if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
                                retval = OBJ_PROP(zobj, prop_offset);
-                               if (EXPECTED(Z_TYPE_P(retval) != IS_UNDEF)) {
+                               if (EXPECTED(Z_TYPE_INFO_P(retval) != IS_UNDEF)) {
                                        ZVAL_COPY_UNREF(EX_VAR(opline->result.var), retval);
                                        break;
                                }
@@ -46421,7 +46421,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_R_SPEC_CV_TMPVAR_HAN
 
                        if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
                                retval = OBJ_PROP(zobj, prop_offset);
-                               if (EXPECTED(Z_TYPE_P(retval) != IS_UNDEF)) {
+                               if (EXPECTED(Z_TYPE_INFO_P(retval) != IS_UNDEF)) {
                                        ZVAL_COPY_UNREF(EX_VAR(opline->result.var), retval);
                                        break;
                                }