summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNikita Popov <nikic@php.net>2016-06-28 11:57:04 +0200
committerNikita Popov <nikic@php.net>2016-06-28 12:05:03 +0200
commitcb7cc16c2d27c5e955ec1763278279dbcc77d026 (patch)
treeae2dafc12be7e285c2a13344f5e64476ce09a994
parentcdd58edf42f1c758bfdfc386b7f700fd633c5006 (diff)
downloadphp-git-cb7cc16c2d27c5e955ec1763278279dbcc77d026.tar.gz
Use DO_UCALL for method calls
-rw-r--r--Zend/zend_compile.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c
index f5f1999c64..144c2fb874 100644
--- a/Zend/zend_compile.c
+++ b/Zend/zend_compile.c
@@ -3195,9 +3195,9 @@ uint32_t zend_compile_args(zend_ast *ast, zend_function *fbc) /* {{{ */
ZEND_API zend_uchar zend_get_call_op(const zend_op *init_op, zend_function *fbc) /* {{{ */
{
- if (fbc && init_op->opcode == ZEND_INIT_FCALL) {
+ if (fbc) {
if (fbc->type == ZEND_INTERNAL_FUNCTION) {
- if (!zend_execute_internal) {
+ if (init_op->opcode == ZEND_INIT_FCALL && !zend_execute_internal) {
if (!(fbc->common.fn_flags & (ZEND_ACC_ABSTRACT|ZEND_ACC_DEPRECATED|ZEND_ACC_HAS_TYPE_HINTS|ZEND_ACC_RETURN_REFERENCE))) {
return ZEND_DO_ICALL;
} else {
@@ -3205,7 +3205,7 @@ ZEND_API zend_uchar zend_get_call_op(const zend_op *init_op, zend_function *fbc)
}
}
} else {
- if (zend_execute_ex == execute_ex) {
+ if (zend_execute_ex == execute_ex && !(fbc->common.fn_flags & ZEND_ACC_ABSTRACT)) {
return ZEND_DO_UCALL;
}
}