com php-src: Manual CSE to avoid double read: Zend/zend_vm_ def.h Zend/zend_vm_execute.h
| From: | Dmitry Stogov | Date: | Fri, 11 Sep 2015 11:13:41 +0000 |
| Subject: | com php-src: Manual CSE to avoid double read: Zend/zend_vm_ def.h Zend/zend_vm_execute.h | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-89003@lists.php.net to get a copy of this message | ||
Commit: 51aa1b5a1dd244cba981bd333b497dcd2e5456c0
Author: Dmitry Stogov <dmitry@zend.com> Fri, 11 Sep 2015 14:13:41 +0300
Parents: 465d0326d1c35d132faef5df3ea281f54af59bfa
Branches: master
Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=51aa1b5a1dd244cba981bd333b497dcd2e5456c0
Log:
Manual CSE to avoid double read
Changed paths:
M Zend/zend_vm_def.h
M Zend/zend_vm_execute.h
Diff:
diff --git a/Zend/zend_vm_def.h b/Zend/zend_vm_def.h
index faff4a1..60c0b73 100644
--- a/Zend/zend_vm_def.h
+++ b/Zend/zend_vm_def.h
@@ -4167,15 +4167,16 @@ ZEND_VM_HANDLER(116, ZEND_SEND_VAL_EX, CONST|TMP, ANY)
USE_OPLINE
zval *value, *arg;
zend_free_op free_op1;
+ uint32_t arg_num = opline->op2.num;
- if (EXPECTED(opline->op2.num <= MAX_ARG_FLAG_NUM)) {
- if (QUICK_ARG_MUST_BE_SENT_BY_REF(EX(call)->func, opline->op2.num)) {
+ if (EXPECTED(arg_num <= MAX_ARG_FLAG_NUM)) {
+ if (QUICK_ARG_MUST_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
ZEND_VM_C_GOTO(send_val_by_ref);
}
- } else if (ARG_MUST_BE_SENT_BY_REF(EX(call)->func, opline->op2.num)) {
+ } else if (ARG_MUST_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
ZEND_VM_C_LABEL(send_val_by_ref):
SAVE_OPLINE();
- zend_throw_error(NULL, "Cannot pass parameter %d by reference", opline->op2.num);
+ zend_throw_error(NULL, "Cannot pass parameter %d by reference", arg_num);
FREE_UNFETCHED_OP1();
arg = ZEND_CALL_VAR(EX(call), opline->result.var);
ZVAL_UNDEF(arg);
@@ -4308,12 +4309,13 @@ ZEND_VM_HANDLER(66, ZEND_SEND_VAR_EX, VAR|CV, ANY)
USE_OPLINE
zval *varptr, *arg;
zend_free_op free_op1;
+ uint32_t arg_num = opline->op2.num;
- if (EXPECTED(opline->op2.num <= MAX_ARG_FLAG_NUM)) {
- if (QUICK_ARG_SHOULD_BE_SENT_BY_REF(EX(call)->func, opline->op2.num)) {
+ if (EXPECTED(arg_num <= MAX_ARG_FLAG_NUM)) {
+ if (QUICK_ARG_SHOULD_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
ZEND_VM_C_GOTO(send_var_by_ref);
}
- } else if (ARG_SHOULD_BE_SENT_BY_REF(EX(call)->func, opline->op2.num)) {
+ } else if (ARG_SHOULD_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
ZEND_VM_C_LABEL(send_var_by_ref):
ZEND_VM_DISPATCH_TO_HANDLER(ZEND_SEND_REF);
}
diff --git a/Zend/zend_vm_execute.h b/Zend/zend_vm_execute.h
index 717b670..b1c1b36 100644
--- a/Zend/zend_vm_execute.h
+++ b/Zend/zend_vm_execute.h
@@ -3278,15 +3278,16 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL
ZEND_SEND_VAL_EX_SPEC_CONST_HANDLER
USE_OPLINE
zval *value, *arg;
+ uint32_t arg_num = opline->op2.num;
- if (EXPECTED(opline->op2.num <= MAX_ARG_FLAG_NUM)) {
- if (QUICK_ARG_MUST_BE_SENT_BY_REF(EX(call)->func, opline->op2.num)) {
+ if (EXPECTED(arg_num <= MAX_ARG_FLAG_NUM)) {
+ if (QUICK_ARG_MUST_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
goto send_val_by_ref;
}
- } else if (ARG_MUST_BE_SENT_BY_REF(EX(call)->func, opline->op2.num)) {
+ } else if (ARG_MUST_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
send_val_by_ref:
SAVE_OPLINE();
- zend_throw_error(NULL, "Cannot pass parameter %d by reference", opline->op2.num);
+ zend_throw_error(NULL, "Cannot pass parameter %d by reference", arg_num);
arg = ZEND_CALL_VAR(EX(call), opline->result.var);
ZVAL_UNDEF(arg);
@@ -11901,15 +11902,16 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL
ZEND_SEND_VAL_EX_SPEC_TMP_HANDLER(Z
USE_OPLINE
zval *value, *arg;
zend_free_op free_op1;
+ uint32_t arg_num = opline->op2.num;
- if (EXPECTED(opline->op2.num <= MAX_ARG_FLAG_NUM)) {
- if (QUICK_ARG_MUST_BE_SENT_BY_REF(EX(call)->func, opline->op2.num)) {
+ if (EXPECTED(arg_num <= MAX_ARG_FLAG_NUM)) {
+ if (QUICK_ARG_MUST_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
goto send_val_by_ref;
}
- } else if (ARG_MUST_BE_SENT_BY_REF(EX(call)->func, opline->op2.num)) {
+ } else if (ARG_MUST_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
send_val_by_ref:
SAVE_OPLINE();
- zend_throw_error(NULL, "Cannot pass parameter %d by reference", opline->op2.num);
+ zend_throw_error(NULL, "Cannot pass parameter %d by reference", arg_num);
zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
arg = ZEND_CALL_VAR(EX(call), opline->result.var);
ZVAL_UNDEF(arg);
@@ -15237,12 +15239,13 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL
ZEND_SEND_VAR_EX_SPEC_VAR_HANDLER(Z
USE_OPLINE
zval *varptr, *arg;
zend_free_op free_op1;
+ uint32_t arg_num = opline->op2.num;
- if (EXPECTED(opline->op2.num <= MAX_ARG_FLAG_NUM)) {
- if (QUICK_ARG_SHOULD_BE_SENT_BY_REF(EX(call)->func, opline->op2.num)) {
+ if (EXPECTED(arg_num <= MAX_ARG_FLAG_NUM)) {
+ if (QUICK_ARG_SHOULD_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
goto send_var_by_ref;
}
- } else if (ARG_SHOULD_BE_SENT_BY_REF(EX(call)->func, opline->op2.num)) {
+ } else if (ARG_SHOULD_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
send_var_by_ref:
ZEND_VM_TAIL_CALL(ZEND_SEND_REF_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
}
@@ -28616,12 +28619,13 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL
ZEND_SEND_VAR_EX_SPEC_CV_HANDLER(ZE
USE_OPLINE
zval *varptr, *arg;
+ uint32_t arg_num = opline->op2.num;
- if (EXPECTED(opline->op2.num <= MAX_ARG_FLAG_NUM)) {
- if (QUICK_ARG_SHOULD_BE_SENT_BY_REF(EX(call)->func, opline->op2.num)) {
+ if (EXPECTED(arg_num <= MAX_ARG_FLAG_NUM)) {
+ if (QUICK_ARG_SHOULD_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
goto send_var_by_ref;
}
- } else if (ARG_SHOULD_BE_SENT_BY_REF(EX(call)->func, opline->op2.num)) {
+ } else if (ARG_SHOULD_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
send_var_by_ref:
ZEND_VM_TAIL_CALL(ZEND_SEND_REF_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
}