GH-131798: Narrow types more aggressively in the JIT (GH-134373)

This commit is contained in:
Brandt Bucher 2025-05-20 18:09:51 -04:00 committed by GitHub
parent e1c0c451a2
commit 2f0570caf4
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
10 changed files with 180 additions and 88 deletions

View file

@ -102,6 +102,12 @@
break;
}
case _POP_TWO: {
stack_pointer += -2;
assert(WITHIN_STACK_BOUNDS());
break;
}
case _PUSH_NULL: {
JitOptSymbol *res;
res = sym_new_null(ctx);
@ -1259,6 +1265,18 @@
}
case _CHECK_ATTR_CLASS: {
JitOptSymbol *owner;
owner = stack_pointer[-1];
uint32_t type_version = (uint32_t)this_instr->operand0;
PyObject *type = (PyObject *)_PyType_LookupByVersion(type_version);
if (type) {
if (type == sym_get_const(ctx, owner)) {
REPLACE_OP(this_instr, _NOP, 0, 0);
}
else {
sym_set_const(owner, type);
}
}
break;
}