summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@zend.com>2014-12-03 02:47:03 +0300
committerDmitry Stogov <dmitry@zend.com>2014-12-03 02:47:03 +0300
commit631f05f71eed8d08d01d5997d58311bb5a0e1a80 (patch)
treef4360f2a8d93ad98250f3cfb12cba6a5081ca5f7
parent7296f9ddfc026b8bce436c8668fbc300c1f553d5 (diff)
downloadphp-git-631f05f71eed8d08d01d5997d58311bb5a0e1a80.tar.gz
Improved POST INC/DEC
-rw-r--r--Zend/zend_vm_def.h24
-rw-r--r--Zend/zend_vm_execute.h88
2 files changed, 44 insertions, 68 deletions
diff --git a/Zend/zend_vm_def.h b/Zend/zend_vm_def.h
index 9b9260844f..cb9b7c120e 100644
--- a/Zend/zend_vm_def.h
+++ b/Zend/zend_vm_def.h
@@ -783,9 +783,9 @@ ZEND_VM_HELPER_EX(zend_post_incdec_property_helper, VAR|UNUSED|CV, CONST|TMP|VAR
&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((OP2_TYPE == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) {
ZVAL_DEREF(zptr);
- ZVAL_COPY(retval, zptr);
+ ZVAL_COPY_VALUE(retval, zptr);
+ zval_opt_copy_ctor(zptr);
- SEPARATE_ZVAL_NOREF(zptr);
incdec_op(zptr);
} else {
if (Z_OBJ_HT_P(object)->read_property && Z_OBJ_HT_P(object)->write_property) {
@@ -942,13 +942,9 @@ ZEND_VM_HANDLER(36, ZEND_POST_INC, VAR|CV, ANY)
ZEND_VM_NEXT_OPCODE();
}
- if (UNEXPECTED(Z_ISREF_P(var_ptr))) {
- var_ptr = Z_REFVAL_P(var_ptr);
- ZVAL_DUP(EX_VAR(opline->result.var), var_ptr);
- } else {
- ZVAL_COPY_VALUE(EX_VAR(opline->result.var), var_ptr);
- zval_opt_copy_ctor(var_ptr);
- }
+ ZVAL_DEREF(var_ptr);
+ ZVAL_COPY_VALUE(EX_VAR(opline->result.var), var_ptr);
+ zval_opt_copy_ctor(var_ptr);
increment_function(var_ptr);
@@ -982,13 +978,9 @@ ZEND_VM_HANDLER(37, ZEND_POST_DEC, VAR|CV, ANY)
ZEND_VM_NEXT_OPCODE();
}
- if (UNEXPECTED(Z_ISREF_P(var_ptr))) {
- var_ptr = Z_REFVAL_P(var_ptr);
- ZVAL_DUP(EX_VAR(opline->result.var), var_ptr);
- } else {
- ZVAL_COPY_VALUE(EX_VAR(opline->result.var), var_ptr);
- zval_opt_copy_ctor(var_ptr);
- }
+ ZVAL_DEREF(var_ptr);
+ ZVAL_COPY_VALUE(EX_VAR(opline->result.var), var_ptr);
+ zval_opt_copy_ctor(var_ptr);
decrement_function(var_ptr);
diff --git a/Zend/zend_vm_execute.h b/Zend/zend_vm_execute.h
index 326b202135..f43fc32e5d 100644
--- a/Zend/zend_vm_execute.h
+++ b/Zend/zend_vm_execute.h
@@ -16087,13 +16087,9 @@ static int ZEND_FASTCALL ZEND_POST_INC_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARG
ZEND_VM_NEXT_OPCODE();
}
- if (UNEXPECTED(Z_ISREF_P(var_ptr))) {
- var_ptr = Z_REFVAL_P(var_ptr);
- ZVAL_DUP(EX_VAR(opline->result.var), var_ptr);
- } else {
- ZVAL_COPY_VALUE(EX_VAR(opline->result.var), var_ptr);
- zval_opt_copy_ctor(var_ptr);
- }
+ ZVAL_DEREF(var_ptr);
+ ZVAL_COPY_VALUE(EX_VAR(opline->result.var), var_ptr);
+ zval_opt_copy_ctor(var_ptr);
increment_function(var_ptr);
@@ -16127,13 +16123,9 @@ static int ZEND_FASTCALL ZEND_POST_DEC_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARG
ZEND_VM_NEXT_OPCODE();
}
- if (UNEXPECTED(Z_ISREF_P(var_ptr))) {
- var_ptr = Z_REFVAL_P(var_ptr);
- ZVAL_DUP(EX_VAR(opline->result.var), var_ptr);
- } else {
- ZVAL_COPY_VALUE(EX_VAR(opline->result.var), var_ptr);
- zval_opt_copy_ctor(var_ptr);
- }
+ ZVAL_DEREF(var_ptr);
+ ZVAL_COPY_VALUE(EX_VAR(opline->result.var), var_ptr);
+ zval_opt_copy_ctor(var_ptr);
decrement_function(var_ptr);
@@ -18393,9 +18385,9 @@ static int ZEND_FASTCALL zend_post_incdec_property_helper_SPEC_VAR_CONST(incdec_
&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) {
ZVAL_DEREF(zptr);
- ZVAL_COPY(retval, zptr);
+ ZVAL_COPY_VALUE(retval, zptr);
+ zval_opt_copy_ctor(zptr);
- SEPARATE_ZVAL_NOREF(zptr);
incdec_op(zptr);
} else {
if (Z_OBJ_HT_P(object)->read_property && Z_OBJ_HT_P(object)->write_property) {
@@ -20879,9 +20871,9 @@ static int ZEND_FASTCALL zend_post_incdec_property_helper_SPEC_VAR_TMP(incdec_t
&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_TMP_VAR == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) {
ZVAL_DEREF(zptr);
- ZVAL_COPY(retval, zptr);
+ ZVAL_COPY_VALUE(retval, zptr);
+ zval_opt_copy_ctor(zptr);
- SEPARATE_ZVAL_NOREF(zptr);
incdec_op(zptr);
} else {
if (Z_OBJ_HT_P(object)->read_property && Z_OBJ_HT_P(object)->write_property) {
@@ -22907,9 +22899,9 @@ static int ZEND_FASTCALL zend_post_incdec_property_helper_SPEC_VAR_VAR(incdec_t
&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_VAR == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) {
ZVAL_DEREF(zptr);
- ZVAL_COPY(retval, zptr);
+ ZVAL_COPY_VALUE(retval, zptr);
+ zval_opt_copy_ctor(zptr);
- SEPARATE_ZVAL_NOREF(zptr);
incdec_op(zptr);
} else {
if (Z_OBJ_HT_P(object)->read_property && Z_OBJ_HT_P(object)->write_property) {
@@ -26494,9 +26486,9 @@ static int ZEND_FASTCALL zend_post_incdec_property_helper_SPEC_VAR_CV(incdec_t i
&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) {
ZVAL_DEREF(zptr);
- ZVAL_COPY(retval, zptr);
+ ZVAL_COPY_VALUE(retval, zptr);
+ zval_opt_copy_ctor(zptr);
- SEPARATE_ZVAL_NOREF(zptr);
incdec_op(zptr);
} else {
if (Z_OBJ_HT_P(object)->read_property && Z_OBJ_HT_P(object)->write_property) {
@@ -28379,9 +28371,9 @@ static int ZEND_FASTCALL zend_post_incdec_property_helper_SPEC_UNUSED_CONST(incd
&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) {
ZVAL_DEREF(zptr);
- ZVAL_COPY(retval, zptr);
+ ZVAL_COPY_VALUE(retval, zptr);
+ zval_opt_copy_ctor(zptr);
- SEPARATE_ZVAL_NOREF(zptr);
incdec_op(zptr);
} else {
if (Z_OBJ_HT_P(object)->read_property && Z_OBJ_HT_P(object)->write_property) {
@@ -29786,9 +29778,9 @@ static int ZEND_FASTCALL zend_post_incdec_property_helper_SPEC_UNUSED_TMP(incdec
&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_TMP_VAR == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) {
ZVAL_DEREF(zptr);
- ZVAL_COPY(retval, zptr);
+ ZVAL_COPY_VALUE(retval, zptr);
+ zval_opt_copy_ctor(zptr);
- SEPARATE_ZVAL_NOREF(zptr);
incdec_op(zptr);
} else {
if (Z_OBJ_HT_P(object)->read_property && Z_OBJ_HT_P(object)->write_property) {
@@ -31109,9 +31101,9 @@ static int ZEND_FASTCALL zend_post_incdec_property_helper_SPEC_UNUSED_VAR(incdec
&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_VAR == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) {
ZVAL_DEREF(zptr);
- ZVAL_COPY(retval, zptr);
+ ZVAL_COPY_VALUE(retval, zptr);
+ zval_opt_copy_ctor(zptr);
- SEPARATE_ZVAL_NOREF(zptr);
incdec_op(zptr);
} else {
if (Z_OBJ_HT_P(object)->read_property && Z_OBJ_HT_P(object)->write_property) {
@@ -32920,9 +32912,9 @@ static int ZEND_FASTCALL zend_post_incdec_property_helper_SPEC_UNUSED_CV(incdec_
&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) {
ZVAL_DEREF(zptr);
- ZVAL_COPY(retval, zptr);
+ ZVAL_COPY_VALUE(retval, zptr);
+ zval_opt_copy_ctor(zptr);
- SEPARATE_ZVAL_NOREF(zptr);
incdec_op(zptr);
} else {
if (Z_OBJ_HT_P(object)->read_property && Z_OBJ_HT_P(object)->write_property) {
@@ -33915,13 +33907,9 @@ static int ZEND_FASTCALL ZEND_POST_INC_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS
ZEND_VM_NEXT_OPCODE();
}
- if (UNEXPECTED(Z_ISREF_P(var_ptr))) {
- var_ptr = Z_REFVAL_P(var_ptr);
- ZVAL_DUP(EX_VAR(opline->result.var), var_ptr);
- } else {
- ZVAL_COPY_VALUE(EX_VAR(opline->result.var), var_ptr);
- zval_opt_copy_ctor(var_ptr);
- }
+ ZVAL_DEREF(var_ptr);
+ ZVAL_COPY_VALUE(EX_VAR(opline->result.var), var_ptr);
+ zval_opt_copy_ctor(var_ptr);
increment_function(var_ptr);
@@ -33954,13 +33942,9 @@ static int ZEND_FASTCALL ZEND_POST_DEC_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS
ZEND_VM_NEXT_OPCODE();
}
- if (UNEXPECTED(Z_ISREF_P(var_ptr))) {
- var_ptr = Z_REFVAL_P(var_ptr);
- ZVAL_DUP(EX_VAR(opline->result.var), var_ptr);
- } else {
- ZVAL_COPY_VALUE(EX_VAR(opline->result.var), var_ptr);
- zval_opt_copy_ctor(var_ptr);
- }
+ ZVAL_DEREF(var_ptr);
+ ZVAL_COPY_VALUE(EX_VAR(opline->result.var), var_ptr);
+ zval_opt_copy_ctor(var_ptr);
decrement_function(var_ptr);
@@ -35884,9 +35868,9 @@ static int ZEND_FASTCALL zend_post_incdec_property_helper_SPEC_CV_CONST(incdec_t
&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) {
ZVAL_DEREF(zptr);
- ZVAL_COPY(retval, zptr);
+ ZVAL_COPY_VALUE(retval, zptr);
+ zval_opt_copy_ctor(zptr);
- SEPARATE_ZVAL_NOREF(zptr);
incdec_op(zptr);
} else {
if (Z_OBJ_HT_P(object)->read_property && Z_OBJ_HT_P(object)->write_property) {
@@ -38199,9 +38183,9 @@ static int ZEND_FASTCALL zend_post_incdec_property_helper_SPEC_CV_TMP(incdec_t i
&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_TMP_VAR == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) {
ZVAL_DEREF(zptr);
- ZVAL_COPY(retval, zptr);
+ ZVAL_COPY_VALUE(retval, zptr);
+ zval_opt_copy_ctor(zptr);
- SEPARATE_ZVAL_NOREF(zptr);
incdec_op(zptr);
} else {
if (Z_OBJ_HT_P(object)->read_property && Z_OBJ_HT_P(object)->write_property) {
@@ -40099,9 +40083,9 @@ static int ZEND_FASTCALL zend_post_incdec_property_helper_SPEC_CV_VAR(incdec_t i
&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_VAR == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) {
ZVAL_DEREF(zptr);
- ZVAL_COPY(retval, zptr);
+ ZVAL_COPY_VALUE(retval, zptr);
+ zval_opt_copy_ctor(zptr);
- SEPARATE_ZVAL_NOREF(zptr);
incdec_op(zptr);
} else {
if (Z_OBJ_HT_P(object)->read_property && Z_OBJ_HT_P(object)->write_property) {
@@ -43411,9 +43395,9 @@ static int ZEND_FASTCALL zend_post_incdec_property_helper_SPEC_CV_CV(incdec_t in
&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) {
ZVAL_DEREF(zptr);
- ZVAL_COPY(retval, zptr);
+ ZVAL_COPY_VALUE(retval, zptr);
+ zval_opt_copy_ctor(zptr);
- SEPARATE_ZVAL_NOREF(zptr);
incdec_op(zptr);
} else {
if (Z_OBJ_HT_P(object)->read_property && Z_OBJ_HT_P(object)->write_property) {