mirror of
https://github.com/python/cpython.git
synced 2026-06-05 17:31:21 +00:00
For AArch64 linux, reduces the total bytes in the code bodies from 489kb to 218kb. Reduces the size of the stencils files from 394k lines to 167k lines.
43 lines
1.2 KiB
C
43 lines
1.2 KiB
C
#ifndef Py_INTERNAL_JIT_H
|
|
#define Py_INTERNAL_JIT_H
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#include "pycore_interp.h"
|
|
#include "pycore_optimizer.h"
|
|
#include "pycore_stackref.h"
|
|
|
|
#ifndef Py_BUILD_CORE
|
|
# error "this header requires Py_BUILD_CORE define"
|
|
#endif
|
|
|
|
/* To be able to reason about code layout and branches, keep code size below 1 MB */
|
|
#define PY_MAX_JIT_CODE_SIZE ((1 << 20)-1)
|
|
|
|
#ifdef _Py_JIT
|
|
|
|
typedef _Py_CODEUNIT *(*jit_func)(
|
|
_PyExecutorObject *executor, _PyInterpreterFrame *frame, _PyStackRef *stack_pointer, PyThreadState *tstate,
|
|
_PyStackRef _tos_cache0, _PyStackRef _tos_cache1, _PyStackRef _tos_cache2
|
|
);
|
|
|
|
_Py_CODEUNIT *_PyJIT_Entry(
|
|
_PyExecutorObject *executor, _PyInterpreterFrame *frame,
|
|
_PyStackRef *stack_pointer, PyThreadState *tstate
|
|
);
|
|
|
|
int _PyJIT_Compile(_PyExecutorObject *executor, const _PyUOpInstruction *trace, size_t length);
|
|
void _PyJIT_Free(_PyExecutorObject *executor);
|
|
PyAPI_FUNC(int) _PyJIT_AddressInJitCode(PyInterpreterState *interp, uintptr_t addr);
|
|
PyAPI_FUNC(void) _Py_jit_assert_within_stack_bounds(_PyInterpreterFrame *frame, _PyStackRef *stack_pointer, int lineno);
|
|
PyAPI_FUNC(int) _Py_jit_assertion_failure(int line);
|
|
|
|
#endif // _Py_JIT
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif // !Py_INTERNAL_JIT_H
|