| #ifndef Py_INTERNAL_UOPS_H |
| #define Py_INTERNAL_UOPS_H |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| #ifndef Py_BUILD_CORE |
| # error "this header requires Py_BUILD_CORE define" |
| #endif |
| |
| #define _Py_UOP_MAX_TRACE_LENGTH 32 |
| |
| typedef struct { |
| int opcode; |
| uint64_t operand; // Sometimes oparg, sometimes a cache entry |
| } _PyUOpInstruction; |
| |
| typedef struct { |
| _PyExecutorObject base; |
| _PyUOpInstruction trace[_Py_UOP_MAX_TRACE_LENGTH]; // TODO: variable length |
| } _PyUOpExecutorObject; |
| |
| _PyInterpreterFrame *_PyUopExecute( |
| _PyExecutorObject *executor, |
| _PyInterpreterFrame *frame, |
| PyObject **stack_pointer); |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| #endif /* !Py_INTERNAL_UOPS_H */ |