diff options
| -rw-r--r-- | ext/opcache/jit/zend_jit_x86.dasc | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/ext/opcache/jit/zend_jit_x86.dasc b/ext/opcache/jit/zend_jit_x86.dasc index 642fb70211..a46d077789 100644 --- a/ext/opcache/jit/zend_jit_x86.dasc +++ b/ext/opcache/jit/zend_jit_x86.dasc @@ -3021,12 +3021,18 @@ static int zend_jit_trace_return(dasm_State **Dst, zend_bool original_handler) | jmp aword [IP + r0] } } else { + if (original_handler) { + | mov FCARG1a, FP + | mov r0, EX->func + | 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)] + | call aword [IP + r0] + } | mov FP, aword T2 // restore FP | mov RX, aword T3 // restore IP | add r4, NR_SPAD // stack alignment | mov r0, 2 // ZEND_VM_LEAVE | ret - // TODO: support for "original_handler" ???? } #endif return 1; |
