From aea85c65bd1795d0750dee6ac0e476acd2ac9dd7 Mon Sep 17 00:00:00 2001 From: Dmitry Stogov Date: Thu, 1 Nov 2018 11:45:50 +0300 Subject: [PATCH] Prevent inlining of method copied from trait --- ext/opcache/Optimizer/optimize_func_calls.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ext/opcache/Optimizer/optimize_func_calls.c b/ext/opcache/Optimizer/optimize_func_calls.c index 4b48b73bee5..737c2ef9230 100644 --- a/ext/opcache/Optimizer/optimize_func_calls.c +++ b/ext/opcache/Optimizer/optimize_func_calls.c @@ -95,6 +95,8 @@ static void zend_try_inline_call(zend_op_array *op_array, zend_op *fcall, zend_o { if (func->type == ZEND_USER_FUNCTION && !(func->op_array.fn_flags & (ZEND_ACC_ABSTRACT|ZEND_ACC_HAS_TYPE_HINTS)) + /* TODO: function copied from trait may be inconsistent ??? */ + && !(func->op_array.fn_flags & (ZEND_ACC_TRAIT_CLONE)) && fcall->extended_value >= func->op_array.required_num_args && func->op_array.opcodes[func->op_array.num_args].opcode == ZEND_RETURN) {