mirror of
https://github.com/python/cpython.git
synced 2025-10-17 12:18:23 +00:00
GH-123516: Improve JIT memory consumption by invalidating cold executors (GH-124443)
Co-authored-by: Bénédikt Tran <10796600+picnixz@users.noreply.github.com>
This commit is contained in:
parent
23e812b84a
commit
65f1237098
14 changed files with 129 additions and 39 deletions
|
@ -29,9 +29,10 @@ typedef struct {
|
|||
typedef struct {
|
||||
uint8_t opcode;
|
||||
uint8_t oparg;
|
||||
uint16_t valid:1;
|
||||
uint16_t linked:1;
|
||||
uint16_t chain_depth:14; // Must be big engough for MAX_CHAIN_DEPTH - 1.
|
||||
uint8_t valid:1;
|
||||
uint8_t linked:1;
|
||||
uint8_t chain_depth:6; // Must be big enough for MAX_CHAIN_DEPTH - 1.
|
||||
bool warm;
|
||||
int index; // Index of ENTER_EXECUTOR (if code isn't NULL, below).
|
||||
_PyBloomFilter bloom;
|
||||
_PyExecutorLinkListNode links;
|
||||
|
@ -123,11 +124,18 @@ PyAPI_FUNC(PyObject *) _PyOptimizer_NewUOpOptimizer(void);
|
|||
#ifdef _Py_TIER2
|
||||
PyAPI_FUNC(void) _Py_Executors_InvalidateDependency(PyInterpreterState *interp, void *obj, int is_invalidation);
|
||||
PyAPI_FUNC(void) _Py_Executors_InvalidateAll(PyInterpreterState *interp, int is_invalidation);
|
||||
PyAPI_FUNC(void) _Py_Executors_InvalidateCold(PyInterpreterState *interp);
|
||||
|
||||
#else
|
||||
# define _Py_Executors_InvalidateDependency(A, B, C) ((void)0)
|
||||
# define _Py_Executors_InvalidateAll(A, B) ((void)0)
|
||||
# define _Py_Executors_InvalidateCold(A) ((void)0)
|
||||
|
||||
#endif
|
||||
|
||||
// Used as the threshold to trigger executor invalidation when
|
||||
// trace_run_counter is greater than this value.
|
||||
#define JIT_CLEANUP_THRESHOLD 100000
|
||||
|
||||
// This is the length of the trace we project initially.
|
||||
#define UOP_MAX_TRACE_LENGTH 800
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue