if (GCC_GLOBAL_REGS) {
| add r4, SPAD // stack alignment
+ | EXT_JMP handler, r0
+ } else if (JIT_G(trigger) == ZEND_JIT_ON_HOT_TRACE) {
+ | mov FCARG1a, FP
+ | EXT_CALL handler, r0
+ | mov FP, aword T2 // restore FP
+ | mov RX, aword T3 // restore IP
+ | add r4, NR_SPAD // stack alignment
+ | test eax, eax
+ | jl >1
+ | mov r0, 1 // ZEND_VM_ENTER
+ |1:
+ | ret
} else {
| mov FCARG1a, FP
| mov FP, aword T2 // restore FP
| mov RX, aword T3 // restore IP
| add r4, NR_SPAD // stack alignment
+ | EXT_JMP handler, r0
}
- | EXT_JMP handler, r0
}
return 1;
| 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]
+ | test eax, eax
+ | jl ->trace_halt
| mov FP, aword T2 // restore FP
| mov RX, aword T3 // restore IP
| add r4, NR_SPAD // stack alignment