mirror of
https://github.com/python/cpython.git
synced 2026-01-29 18:52:38 +00:00
GH-139109: Partial reworking of JIT data structures (GH-144105)
* Halve size of buffers by reusing combined trace + optimizer buffers for TOS caching * Add simple buffer struct for more maintainable handling of buffers * Decouple JIT structs from thread state struct * Ensure terminator is added to trace, when optimizer gives up
This commit is contained in:
parent
fb690c38ca
commit
d77aaa7311
10 changed files with 228 additions and 215 deletions
|
|
@ -194,7 +194,6 @@ dummy_func(void) {
|
|||
_Py_BloomFilter_Add(dependencies, type);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -798,7 +797,7 @@ dummy_func(void) {
|
|||
if (sym_is_const(ctx, callable) && sym_matches_type(callable, &PyFunction_Type)) {
|
||||
assert(PyFunction_Check(sym_get_const(ctx, callable)));
|
||||
ADD_OP(_CHECK_FUNCTION_VERSION_INLINE, 0, func_version);
|
||||
ctx->out_buffer[ctx->out_len - 1].operand1 = (uintptr_t)sym_get_const(ctx, callable);
|
||||
uop_buffer_last(&ctx->out_buffer)->operand1 = (uintptr_t)sym_get_const(ctx, callable);
|
||||
}
|
||||
sym_set_type(callable, &PyFunction_Type);
|
||||
}
|
||||
|
|
@ -808,7 +807,7 @@ dummy_func(void) {
|
|||
PyMethodObject *method = (PyMethodObject *)sym_get_const(ctx, callable);
|
||||
assert(PyMethod_Check(method));
|
||||
ADD_OP(_CHECK_FUNCTION_VERSION_INLINE, 0, func_version);
|
||||
ctx->out_buffer[ctx->out_len - 1].operand1 = (uintptr_t)method->im_func;
|
||||
uop_buffer_last(&ctx->out_buffer)->operand1 = (uintptr_t)method->im_func;
|
||||
}
|
||||
sym_set_type(callable, &PyMethod_Type);
|
||||
}
|
||||
|
|
@ -1570,7 +1569,7 @@ dummy_func(void) {
|
|||
ctx->frame->globals_watched = true;
|
||||
}
|
||||
if (ctx->frame->globals_checked_version != version && this_instr[-1].opcode == _NOP) {
|
||||
REPLACE_OP(&ctx->out_buffer[ctx->out_len - 1], _GUARD_GLOBALS_VERSION, 0, version);
|
||||
REPLACE_OP(uop_buffer_last(&ctx->out_buffer), _GUARD_GLOBALS_VERSION, 0, version);
|
||||
ctx->frame->globals_checked_version = version;
|
||||
}
|
||||
if (ctx->frame->globals_checked_version == version) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue