summaryrefslogtreecommitdiff
path: root/Zend/zend_vm_execute.h
diff options
context:
space:
mode:
authorBob Weinand <bobwei9@hotmail.com>2015-09-19 19:48:03 +0200
committerBob Weinand <bobwei9@hotmail.com>2015-09-19 19:49:44 +0200
commitb8f56013b5501071a0fa5c74401afe861e5519f7 (patch)
tree9bcac7a37d611f6447fc23b7777435f0b79f4af6 /Zend/zend_vm_execute.h
parent8f85dc141a74ea12f794cf5d719728f4d6f02843 (diff)
downloadphp-git-b8f56013b5501071a0fa5c74401afe861e5519f7.tar.gz
Force compiler to prefer ZEND_CALL_NESTED_FUNCTION
It is by far the most used branch; compilers tended here to split the branches via an &2, &1 check, now it only does an &3 check and prefers ZEND_CALL_NESTED_FUNCTION branch
Diffstat (limited to 'Zend/zend_vm_execute.h')
-rw-r--r--Zend/zend_vm_execute.h5
1 files changed, 3 insertions, 2 deletions
diff --git a/Zend/zend_vm_execute.h b/Zend/zend_vm_execute.h
index 83e82c870f..7d1d726a8f 100644
--- a/Zend/zend_vm_execute.h
+++ b/Zend/zend_vm_execute.h
@@ -460,7 +460,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_leave_helper_SPEC(ZEND_OPCODE_
zend_execute_data *old_execute_data;
uint32_t call_info = EX_CALL_INFO();
- if (ZEND_CALL_KIND_EX(call_info) == ZEND_CALL_NESTED_FUNCTION) {
+ if (EXPECTED(ZEND_CALL_KIND_EX(call_info) == ZEND_CALL_NESTED_FUNCTION)) {
zend_object *object;
i_free_compiled_variables(execute_data);
@@ -505,7 +505,8 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_leave_helper_SPEC(ZEND_OPCODE_
LOAD_NEXT_OPLINE();
ZEND_VM_LEAVE();
- } else if (ZEND_CALL_KIND_EX(call_info) == ZEND_CALL_NESTED_CODE) {
+ }
+ if (EXPECTED((ZEND_CALL_KIND_EX(call_info) & ZEND_CALL_TOP) == 0)) {
zend_detach_symbol_table(execute_data);
destroy_op_array(&EX(func)->op_array);
efree_size(EX(func), sizeof(zend_op_array));