typedef _Py_CODEUNIT *(*_PyJitEntryFuncPtr)(struct _PyExecutorObject *exec, _PyInterpreterFrame *frame, _PyStackRef *stack_pointer, PyThreadState *tstate);
+typedef struct _PyJitTracerInitialState {
+ int stack_depth;
+ int chain_depth;
+ struct _PyExitData *exit;
+ PyCodeObject *code; // Strong
+ PyFunctionObject *func; // Strong
+ _Py_CODEUNIT *start_instr;
+ _Py_CODEUNIT *close_loop_instr;
+ _Py_CODEUNIT *jump_backward_instr;
+} _PyJitTracerInitialState;
+
+typedef struct _PyJitTracerPreviousState {
+ bool dependencies_still_valid;
+ bool instr_is_super;
+ int code_max_size;
+ int code_curr_size;
+ int instr_oparg;
+ int instr_stacklevel;
+ int specialize_counter;
+ _Py_CODEUNIT *instr;
+ PyCodeObject *instr_code; // Strong
+ _PyInterpreterFrame *instr_frame;
+ _PyBloomFilter dependencies;
+} _PyJitTracerPreviousState;
+
typedef struct _PyJitTracerState {
- struct {
- int stack_depth;
- int chain_depth;
- struct _PyExitData *exit;
- PyCodeObject *code; // Strong
- PyFunctionObject *func; // Strong
- _Py_CODEUNIT *start_instr;
- _Py_CODEUNIT *close_loop_instr;
- _Py_CODEUNIT *jump_backward_instr;
- } initial_state;
_PyUOpInstruction *code_buffer;
- struct {
- bool dependencies_still_valid;
- bool instr_is_super;
- int code_max_size;
- int code_curr_size;
- int instr_oparg;
- int instr_stacklevel;
- int specialize_counter;
- _Py_CODEUNIT *instr;
- PyCodeObject *instr_code; // Strong
- _PyInterpreterFrame *instr_frame;
- _PyBloomFilter dependencies;
- } prev_state;;
+ _PyJitTracerInitialState initial_state;
+ _PyJitTracerPreviousState prev_state;
} _PyJitTracerState;
/* PyInterpreterState holds the global state for one of the runtime's