diff --git a/Include/internal/pycore_ceval.h b/Include/internal/pycore_ceval.h index af53f2e7d6f73e..bf34c55cd783e4 100644 --- a/Include/internal/pycore_ceval.h +++ b/Include/internal/pycore_ceval.h @@ -123,7 +123,7 @@ _PyEval_EvalFrame(PyThreadState *tstate, _PyInterpreterFrame *frame, int throwfl #ifdef _Py_TIER2 #ifdef _Py_JIT -_Py_CODEUNIT *_Py_LazyJitTrampoline( +_Py_CODEUNIT *_Py_LazyJitShim( struct _PyExecutorObject *current_executor, _PyInterpreterFrame *frame, _PyStackRef *stack_pointer, PyThreadState *tstate ); diff --git a/Python/ceval.c b/Python/ceval.c index 90ae0b022e3958..cf86d5484f0d6e 100644 --- a/Python/ceval.c +++ b/Python/ceval.c @@ -1601,7 +1601,7 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, _PyInterpreterFrame *frame, int } #ifdef _Py_TIER2 #ifdef _Py_JIT -_PyJitEntryFuncPtr _Py_jit_entry = _Py_LazyJitTrampoline; +_PyJitEntryFuncPtr _Py_jit_entry = _Py_LazyJitShim; #else _PyJitEntryFuncPtr _Py_jit_entry = _PyTier2Interpreter; #endif @@ -1617,7 +1617,7 @@ _PyTier2Interpreter( const _PyUOpInstruction *next_uop; int oparg; /* Set up "jit" state after entry from tier 1. - * This mimics what the jit trampoline function does. */ + * This mimics what the jit shim function does. */ tstate->jit_exit = NULL; _PyStackRef _tos_cache0 = PyStackRef_ZERO_BITS; _PyStackRef _tos_cache1 = PyStackRef_ZERO_BITS; diff --git a/Python/jit.c b/Python/jit.c index 7660f6f9beac89..4ce90edf73a8cb 100644 --- a/Python/jit.c +++ b/Python/jit.c @@ -672,20 +672,20 @@ _PyJIT_Compile(_PyExecutorObject *executor, const _PyUOpInstruction trace[], siz return 0; } -/* One-off compilation of the jit entry trampoline +/* One-off compilation of the jit entry shim * We compile this once only as it effectively a normal * function, but we need to use the JIT because it needs * to understand the jit-specific calling convention. */ static _PyJitEntryFuncPtr -compile_trampoline(void) +compile_shim(void) { _PyExecutorObject dummy; const StencilGroup *group; size_t code_size = 0; size_t data_size = 0; jit_state state = {0}; - group = &trampoline; + group = &shim; code_size += group->code_size; data_size += group->data_size; combine_symbol_mask(group->trampoline_mask, state.trampolines.mask); @@ -707,7 +707,7 @@ compile_trampoline(void) // Compile the shim, which handles converting between the native // calling convention and the calling convention used by jitted code // (which may be different for efficiency reasons). - group = &trampoline; + group = &shim; group->emit(code, data, &dummy, NULL, &state); code += group->code_size; data += group->data_size; @@ -723,17 +723,17 @@ compile_trampoline(void) static PyMutex lazy_jit_mutex = { 0 }; _Py_CODEUNIT * -_Py_LazyJitTrampoline( +_Py_LazyJitShim( _PyExecutorObject *executor, _PyInterpreterFrame *frame, _PyStackRef *stack_pointer, PyThreadState *tstate ) { PyMutex_Lock(&lazy_jit_mutex); - if (_Py_jit_entry == _Py_LazyJitTrampoline) { - _PyJitEntryFuncPtr trampoline = compile_trampoline(); - if (trampoline == NULL) { + if (_Py_jit_entry == _Py_LazyJitShim) { + _PyJitEntryFuncPtr shim = compile_shim(); + if (shim == NULL) { PyMutex_Unlock(&lazy_jit_mutex); Py_FatalError("Cannot allocate core JIT code"); } - _Py_jit_entry = trampoline; + _Py_jit_entry = shim; } PyMutex_Unlock(&lazy_jit_mutex); return _Py_jit_entry(executor, frame, stack_pointer, tstate); diff --git a/Python/pystate.c b/Python/pystate.c index 7ea8ef91f107a9..cf55297cf8d94e 100644 --- a/Python/pystate.c +++ b/Python/pystate.c @@ -490,7 +490,7 @@ static inline int check_interpreter_whence(long); #endif extern _Py_CODEUNIT * -_Py_LazyJitTrampoline( +_Py_LazyJitShim( struct _PyExecutorObject *exec, _PyInterpreterFrame *frame, _PyStackRef *stack_pointer, PyThreadState *tstate ); diff --git a/Tools/jit/_targets.py b/Tools/jit/_targets.py index 5895e91c3c44ce..39be353ec30858 100644 --- a/Tools/jit/_targets.py +++ b/Tools/jit/_targets.py @@ -204,8 +204,8 @@ async def _build_stencils(self) -> dict[str, _stencils.StencilGroup]: with tempfile.TemporaryDirectory() as tempdir: work = pathlib.Path(tempdir).resolve() async with asyncio.TaskGroup() as group: - coro = self._compile("trampoline", TOOLS_JIT / "trampoline.c", work) - tasks.append(group.create_task(coro, name="trampoline")) + coro = self._compile("shim", TOOLS_JIT / "shim.c", work) + tasks.append(group.create_task(coro, name="shim")) template = TOOLS_JIT_TEMPLATE_C.read_text() for case, opname in cases_and_opnames: # Write out a copy of the template with *only* this case diff --git a/Tools/jit/_writer.py b/Tools/jit/_writer.py index 3a59ffce7a2c45..5fd9a2ee2d6e58 100644 --- a/Tools/jit/_writer.py +++ b/Tools/jit/_writer.py @@ -23,11 +23,11 @@ def _dump_footer( yield " symbol_mask got_mask;" yield "} StencilGroup;" yield "" - yield f"static const StencilGroup trampoline = {groups['trampoline'].as_c('trampoline')};" + yield f"static const StencilGroup shim = {groups['shim'].as_c('shim')};" yield "" yield "static const StencilGroup stencil_groups[MAX_UOP_REGS_ID + 1] = {" for opname, group in sorted(groups.items()): - if opname == "trampoline": + if opname == "shim": continue yield f" [{opname}] = {group.as_c(opname)}," yield "};" diff --git a/Tools/jit/trampoline.c b/Tools/jit/shim.c similarity index 100% rename from Tools/jit/trampoline.c rename to Tools/jit/shim.c