} _PyUOpInstruction;
// This is the length of the trace we translate initially.
-#define UOP_MAX_TRACE_LENGTH 1400
+#define UOP_MAX_TRACE_LENGTH 1500
#define UOP_BUFFER_SIZE (UOP_MAX_TRACE_LENGTH * sizeof(_PyUOpInstruction))
/* Bloom filter with m = 256
}
int _is_sys_tracing = (tstate->c_tracefunc != NULL) || (tstate->c_profilefunc != NULL);
if (!_is_sys_tracing) {
- _PyJIT_InitializeTracing(tstate, frame, this_instr, next_instr, STACK_LEVEL(), 0, NULL);
+ /* Back up over EXTENDED_ARGs so executor is inserted at the corret place */
+ _Py_CODEUNIT *insert_exec_at = this_instr;
+ while (oparg > 255) {
+ oparg >>= 8;
+ insert_exec_at--;
+ }
+ _PyJIT_InitializeTracing(tstate, frame, insert_exec_at, next_instr, STACK_LEVEL(), 0, NULL);
ENTER_TRACING();
}
int _jump_taken = false;
}
int _is_sys_tracing = (tstate->c_tracefunc != NULL) || (tstate->c_profilefunc != NULL);
if (!_is_sys_tracing) {
- _PyJIT_InitializeTracing(tstate, frame, this_instr, next_instr, STACK_LEVEL(), 0, NULL);
+ _Py_CODEUNIT *insert_exec_at = this_instr;
+ while (oparg > 255) {
+ oparg >>= 8;
+ insert_exec_at--;
+ }
+ _PyJIT_InitializeTracing(tstate, frame, insert_exec_at, next_instr, STACK_LEVEL(), 0, NULL);
ENTER_TRACING();
}
int _jump_taken = false;
}
int _is_sys_tracing = (tstate->c_tracefunc != NULL) || (tstate->c_profilefunc != NULL);
if (!_is_sys_tracing) {
- _PyJIT_InitializeTracing(tstate, frame, this_instr, next_instr, STACK_LEVEL(), 0, NULL);
+ _Py_CODEUNIT *insert_exec_at = this_instr;
+ while (oparg > 255) {
+ oparg >>= 8;
+ insert_exec_at--;
+ }
+ _PyJIT_InitializeTracing(tstate, frame, insert_exec_at, next_instr, STACK_LEVEL(), 0, NULL);
ENTER_TRACING();
}
int _jump_taken = false;