diff options
author | Dmitry Stogov <dmitry@zend.com> | 2020-11-16 13:19:44 +0300 |
---|---|---|
committer | Dmitry Stogov <dmitry@zend.com> | 2020-11-16 13:19:44 +0300 |
commit | bd321df47925db2186d6a95e16e9ebca036b08ca (patch) | |
tree | 1e3c73a764d6605780e136cf69de925c11d1cc99 | |
parent | 64dc79f90649f2ca3522ae8d658da4d5707dba29 (diff) | |
download | php-git-bd321df47925db2186d6a95e16e9ebca036b08ca.tar.gz |
Fixed inconsistent VM stack state
-rw-r--r-- | ext/opcache/jit/zend_jit_x86.dasc | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/ext/opcache/jit/zend_jit_x86.dasc b/ext/opcache/jit/zend_jit_x86.dasc index 42b0e1940c..8b61d5b092 100644 --- a/ext/opcache/jit/zend_jit_x86.dasc +++ b/ext/opcache/jit/zend_jit_x86.dasc @@ -10092,7 +10092,10 @@ static int zend_jit_do_fcall(dasm_State **Dst, const zend_op *opline, const zend if (JIT_G(trigger) != ZEND_JIT_ON_HOT_TRACE || !JIT_G(current_frame) || !JIT_G(current_frame)->call || - !TRACE_FRAME_IS_NESTED(JIT_G(current_frame)->call)) { + !TRACE_FRAME_IS_NESTED(JIT_G(current_frame)->call) || + prev_opline->opcode == ZEND_SEND_UNPACK || + prev_opline->opcode == ZEND_SEND_ARRAY || + prev_opline->opcode == ZEND_CHECK_UNDEF_ARGS) { | // zend_vm_stack_free_call_frame(call); | test byte [RX + offsetof(zend_execute_data, This.u1.type_info) + 2], (ZEND_CALL_ALLOCATED >> 16) |