Skip to content

Commit ced459a

Browse files
committed
Update zend_jit_trace_execute
1 parent 8637220 commit ced459a

File tree

1 file changed

+11
-16
lines changed

1 file changed

+11
-16
lines changed

ext/opcache/jit/zend_jit_vm_helpers.c

Lines changed: 11 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -934,31 +934,26 @@ zend_jit_trace_stop ZEND_FASTCALL zend_jit_trace_execute(zend_execute_data *ex,
934934
#ifdef HAVE_GCC_GLOBAL_REGS
935935
handler();
936936
if (UNEXPECTED(opline == zend_jit_halt_op)) {
937+
#else
938+
opline = handler(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
939+
# ifdef ZEND_HIGH_HALF_KERNEL
940+
if (UNEXPECTED((intptr_t)opline == 0)) {
941+
# else
942+
if (UNEXPECTED(((uintptr_t)opline & ~ZEND_VM_ENTER_BIT) == 0)) {
943+
# endif
944+
#endif
937945
stop = ZEND_JIT_TRACE_STOP_RETURN;
938946
opline = NULL;
939947
halt = ZEND_JIT_TRACE_HALT;
940948
break;
941949
}
942-
if (UNEXPECTED(execute_data != prev_execute_data)) {
943-
#else
944-
opline = handler(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
945-
# ifdef ZEND_HIGH_HALF_KERNEL
946-
if ((intptr_t)opline <= 0) {
947-
# else
950+
#ifndef HAVE_GCC_GLOBAL_REGS
948951
if ((uintptr_t)opline & ZEND_VM_ENTER_BIT) {
949-
# endif
950952
opline = (const zend_op*)((uintptr_t)opline & ~ZEND_VM_ENTER_BIT);
951-
if (opline == NULL) {
952-
stop = ZEND_JIT_TRACE_STOP_RETURN;
953-
opline = NULL;
954-
halt = ZEND_JIT_TRACE_HALT;
955-
break;
956-
} else if (execute_data == EG(current_execute_data)) {
957-
/* return after interrupt handler */
958-
ZEND_ASSERT(0 && "TODO");
959-
}
960953
execute_data = EG(current_execute_data);
954+
}
961955
#endif
956+
if (UNEXPECTED(execute_data != prev_execute_data)) {
962957

963958
op_array = &EX(func)->op_array;
964959
jit_extension =

0 commit comments

Comments
 (0)