com php-src: Don't skip fcall guard for method calls from trait: ext/opcache/jit/zend_jit_trace.c
| From: | Dmitry Stogov | Date: | Wed, 29 Jul 2020 21:31:46 +0000 |
| Subject: | com php-src: Don't skip fcall guard for method calls from trait: ext/opcache/jit/zend_jit_trace.c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-112450@lists.php.net to get a copy of this message | ||
Commit: 713d3ea4e64b18ceddb6b6d88d2983bb7b977402
Author: Dmitry Stogov <dmitry@zend.com> Thu, 30 Jul 2020 00:31:46 +0300
Parents: 44384dfb3e620bf947b263dcf9169f3637c0acc5
Branches: master
Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=713d3ea4e64b18ceddb6b6d88d2983bb7b977402
Log:
Don't skip fcall guard for method calls from trait
Changed paths:
M ext/opcache/jit/zend_jit_trace.c
Diff:
diff --git a/ext/opcache/jit/zend_jit_trace.c b/ext/opcache/jit/zend_jit_trace.c
index 71adacaa0c..8d47f26d4e 100644
--- a/ext/opcache/jit/zend_jit_trace.c
+++ b/ext/opcache/jit/zend_jit_trace.c
@@ -4549,6 +4549,14 @@ done:
while (call_info) {
if (call_info->caller_init_opline == init_opline) {
+ if (op_array->fn_flags & ZEND_ACC_TRAIT_CLONE) {
+ if (init_opline->opcode == ZEND_INIT_STATIC_METHOD_CALL
+ && init_opline->op1_type != IS_CONST) {
+ break;
+ } else if (init_opline->opcode == ZEND_INIT_METHOD_CALL) {
+ break;
+ }
+ }
skip_guard = 1;
break;
}