mirror of
https://github.com/python/cpython.git
synced 2026-01-26 21:03:34 +00:00
gh-138050: Use cold flag instead of warm flag in MAKE_WARM (GH-143827)
This commit is contained in:
parent
7e8a1b5061
commit
94dbce1397
@ -27,7 +27,7 @@ typedef struct {
|
||||
uint8_t oparg;
|
||||
uint8_t valid;
|
||||
uint8_t chain_depth; // Must be big enough for MAX_CHAIN_DEPTH - 1.
|
||||
bool warm;
|
||||
bool cold;
|
||||
uint8_t pending_deletion;
|
||||
int32_t index; // Index of ENTER_EXECUTOR (if code isn't NULL, below).
|
||||
_PyBloomFilter bloom;
|
||||
|
||||
@ -5474,7 +5474,7 @@ dummy_func(
|
||||
}
|
||||
|
||||
tier2 op(_MAKE_WARM, (--)) {
|
||||
current_executor->vm_data.warm = true;
|
||||
current_executor->vm_data.cold = false;
|
||||
}
|
||||
|
||||
tier2 op(_FATAL_ERROR, (--)) {
|
||||
|
||||
8
Python/executor_cases.c.h
generated
8
Python/executor_cases.c.h
generated
@ -18511,7 +18511,7 @@
|
||||
case _MAKE_WARM_r00: {
|
||||
CHECK_CURRENT_CACHED_VALUES(0);
|
||||
assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE());
|
||||
current_executor->vm_data.warm = true;
|
||||
current_executor->vm_data.cold = false;
|
||||
SET_CURRENT_CACHED_VALUES(0);
|
||||
assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE());
|
||||
break;
|
||||
@ -18521,7 +18521,7 @@
|
||||
CHECK_CURRENT_CACHED_VALUES(1);
|
||||
assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE());
|
||||
_PyStackRef _stack_item_0 = _tos_cache0;
|
||||
current_executor->vm_data.warm = true;
|
||||
current_executor->vm_data.cold = false;
|
||||
_tos_cache0 = _stack_item_0;
|
||||
SET_CURRENT_CACHED_VALUES(1);
|
||||
assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE());
|
||||
@ -18533,7 +18533,7 @@
|
||||
assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE());
|
||||
_PyStackRef _stack_item_0 = _tos_cache0;
|
||||
_PyStackRef _stack_item_1 = _tos_cache1;
|
||||
current_executor->vm_data.warm = true;
|
||||
current_executor->vm_data.cold = false;
|
||||
_tos_cache1 = _stack_item_1;
|
||||
_tos_cache0 = _stack_item_0;
|
||||
SET_CURRENT_CACHED_VALUES(2);
|
||||
@ -18547,7 +18547,7 @@
|
||||
_PyStackRef _stack_item_0 = _tos_cache0;
|
||||
_PyStackRef _stack_item_1 = _tos_cache1;
|
||||
_PyStackRef _stack_item_2 = _tos_cache2;
|
||||
current_executor->vm_data.warm = true;
|
||||
current_executor->vm_data.cold = false;
|
||||
_tos_cache2 = _stack_item_2;
|
||||
_tos_cache1 = _stack_item_1;
|
||||
_tos_cache0 = _stack_item_0;
|
||||
|
||||
@ -1408,9 +1408,9 @@ make_executor_from_uops(_PyThreadStateImpl *tstate, _PyUOpInstruction *buffer, i
|
||||
#ifdef _Py_JIT
|
||||
executor->jit_code = NULL;
|
||||
executor->jit_size = 0;
|
||||
// This is initialized to true so we can prevent the executor
|
||||
// This is initialized to false so we can prevent the executor
|
||||
// from being immediately detected as cold and invalidated.
|
||||
executor->vm_data.warm = true;
|
||||
executor->vm_data.cold = false;
|
||||
if (_PyJIT_Compile(executor, executor->trace, length)) {
|
||||
Py_DECREF(executor);
|
||||
return NULL;
|
||||
@ -1698,9 +1698,9 @@ make_cold_executor(uint16_t opcode)
|
||||
Py_FatalError("Cannot allocate core JIT code");
|
||||
}
|
||||
((_PyUOpInstruction *)cold->trace)->opcode = opcode;
|
||||
// This is initialized to true so we can prevent the executor
|
||||
// This is initialized to false so we can prevent the executor
|
||||
// from being immediately detected as cold and invalidated.
|
||||
cold->vm_data.warm = true;
|
||||
cold->vm_data.cold = false;
|
||||
#ifdef _Py_JIT
|
||||
cold->jit_code = NULL;
|
||||
cold->jit_size = 0;
|
||||
@ -1895,11 +1895,11 @@ _Py_Executors_InvalidateCold(PyInterpreterState *interp)
|
||||
assert(exec->vm_data.valid);
|
||||
_PyExecutorObject *next = exec->vm_data.links.next;
|
||||
|
||||
if (!exec->vm_data.warm && PyList_Append(invalidate, (PyObject *)exec) < 0) {
|
||||
if (exec->vm_data.cold && PyList_Append(invalidate, (PyObject *)exec) < 0) {
|
||||
goto error;
|
||||
}
|
||||
else {
|
||||
exec->vm_data.warm = false;
|
||||
exec->vm_data.cold = true;
|
||||
}
|
||||
|
||||
exec = next;
|
||||
|
||||
@ -820,7 +820,7 @@ interpreter_clear(PyInterpreterState *interp, PyThreadState *tstate)
|
||||
if (cold != NULL) {
|
||||
interp->cold_executor = NULL;
|
||||
assert(cold->vm_data.valid);
|
||||
assert(cold->vm_data.warm);
|
||||
assert(!cold->vm_data.cold);
|
||||
_PyExecutor_Free(cold);
|
||||
}
|
||||
|
||||
@ -828,7 +828,7 @@ interpreter_clear(PyInterpreterState *interp, PyThreadState *tstate)
|
||||
if (cold_dynamic != NULL) {
|
||||
interp->cold_dynamic_executor = NULL;
|
||||
assert(cold_dynamic->vm_data.valid);
|
||||
assert(cold_dynamic->vm_data.warm);
|
||||
assert(!cold_dynamic->vm_data.cold);
|
||||
_PyExecutor_Free(cold_dynamic);
|
||||
}
|
||||
/* We don't clear sysdict and builtins until the end of this function.
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user