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;
}
tier2 op(_MAKE_WARM, (--)) {
- current_executor->vm_data.warm = true;
+ current_executor->vm_data.cold = false;
}
tier2 op(_FATAL_ERROR, (--)) {
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;
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());
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);
_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;
#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;
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;
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;
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);
}
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.