From: Dmitry Stogov Date: Wed, 27 May 2020 12:59:29 +0000 (+0300) Subject: Fixed tracing JIT for CALL VM X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=7f3a296f847de74f20f2e1fc64ad6ea706e33a12;p=php Fixed tracing JIT for CALL VM --- diff --git a/ext/opcache/jit/zend_jit_x86.dasc b/ext/opcache/jit/zend_jit_x86.dasc index abee45b95c..f76175a7d7 100644 --- a/ext/opcache/jit/zend_jit_x86.dasc +++ b/ext/opcache/jit/zend_jit_x86.dasc @@ -2433,7 +2433,11 @@ static int zend_jit_trace_exit_stub(dasm_State **Dst) } |1: - | jl ->trace_halt + if (zend_jit_vm_kind == ZEND_VM_KIND_HYBRID) { + | jl ->trace_halt + } else { + | jl >2 + } | // execute_data = EG(current_execute_data) | MEM_OP2_2_ZTS mov, FP, aword, executor_globals, current_execute_data, r0 @@ -2456,6 +2460,9 @@ static int zend_jit_trace_exit_stub(dasm_State **Dst) | mov r0, aword [r0 + offsetof(zend_op_array, reserved[zend_func_info_rid])] | mov r0, aword [r0 + offsetof(zend_jit_op_array_trace_extension, offset)] | jmp aword [IP + r0] + |2: + | add r4, SPAD // stack alignment + | ret } else { | mov IP, aword EX->opline | mov FCARG1a, FP @@ -2468,6 +2475,9 @@ static int zend_jit_trace_exit_stub(dasm_State **Dst) | add r4, NR_SPAD // stack alignment | mov r0, 1 // ZEND_VM_ENTER | ret + |2: + | add r4, NR_SPAD // stack alignment + | ret } return 1;