gh-138050: Use cold flag instead of warm flag in MAKE_WARM (GH-143827)

This commit is contained in:
Hai Zhu 2026-01-14 18:27:33 +08:00 committed by GitHub
parent 7e8a1b5061
commit 94dbce1397
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 14 additions and 14 deletions

View file

@ -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, (--)) {

View file

@ -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;

View file

@ -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;

View file

@ -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.