Skip to content

Commit fc41abc

Browse files
committed
fix: replace raw hex with HIR_TYPE_LISTEXACT/SETEXACT/BYTESEXACT
Added HIR_TYPE_LISTEXACT, HIR_TYPE_SETEXACT, HIR_TYPE_BYTESEXACT named constants to hir_type_c.h. Replaced all remaining raw hex type bits in simplify_c.c. Prevents TLongExact/TListExact confusion class of bugs.
1 parent 7215a58 commit fc41abc

File tree

2 files changed

+6
-3
lines changed

2 files changed

+6
-3
lines changed

Python/jit/hir/hir_type_c.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -217,6 +217,9 @@ size_t hir_type_to_string_c(const HirType *type, char *buf, size_t bufsz,
217217

218218
/* Exact subtypes */
219219
#define HIR_TYPE_DICTEXACT HIR_TYPE_SIMPLE(0x00000004000ULL, HIR_TYPE_LIFETIME_TOP)
220+
#define HIR_TYPE_LISTEXACT HIR_TYPE_SIMPLE(0x00000010000ULL, HIR_TYPE_LIFETIME_TOP)
221+
#define HIR_TYPE_SETEXACT HIR_TYPE_SIMPLE(0x00000020000ULL, HIR_TYPE_LIFETIME_TOP)
222+
#define HIR_TYPE_BYTESEXACT HIR_TYPE_SIMPLE(0x00000002000ULL, HIR_TYPE_LIFETIME_TOP)
220223
#define HIR_TYPE_FLOATEXACT HIR_TYPE_SIMPLE(0x00000008000ULL, HIR_TYPE_LIFETIME_TOP)
221224
#define HIR_TYPE_LONGEXACT HIR_TYPE_SIMPLE(0x00000000400ULL, HIR_TYPE_LIFETIME_TOP)
222225
#define HIR_TYPE_TUPLEEXACT HIR_TYPE_SIMPLE(0x00000040000ULL, HIR_TYPE_LIFETIME_TOP)

Python/jit/hir/simplify_c.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,7 @@ static void *emit_get_length_int64_c(SimplifyEnv *env, void *obj) {
155155
HirType t_cint64 = HIR_TYPE_CINT64;
156156

157157
#ifndef Py_GIL_DISABLED
158-
HirType t_list_exact = HIR_TYPE_SIMPLE(0x00000010000ULL, HIR_TYPE_LIFETIME_TOP);
158+
HirType t_list_exact = HIR_TYPE_LISTEXACT;
159159
if (hir_type_is_subtype(obj_type, t_list_exact) ||
160160
hir_type_is_subtype(obj_type, t_tuple_exact)) {
161161
#else
@@ -170,7 +170,7 @@ static void *emit_get_length_int64_c(SimplifyEnv *env, void *obj) {
170170
HirType t_unicode_exact = HIR_TYPE_UNICODEEXACT;
171171
#ifndef Py_GIL_DISABLED
172172
HirType t_dict_exact = HIR_TYPE_DICTEXACT;
173-
HirType t_set_exact = HIR_TYPE_SIMPLE(0x00000020000ULL, HIR_TYPE_LIFETIME_TOP);
173+
HirType t_set_exact = HIR_TYPE_SETEXACT;
174174
if (hir_type_is_subtype(obj_type, t_dict_exact)) {
175175
HirType unspec = hir_type_unspecialized(&obj_type);
176176
simplify_env_emit_use_type(env, obj, unspec);
@@ -547,7 +547,7 @@ void *simplify_load_var_object_size_c(SimplifyEnv *env, const void *instr) {
547547

548548
/* Known tuple/bytes object path */
549549
HirType t_tuple_exact = HIR_TYPE_TUPLEEXACT;
550-
HirType t_bytes_exact = HIR_TYPE_SIMPLE(0x00000002000ULL, HIR_TYPE_LIFETIME_TOP);
550+
HirType t_bytes_exact = HIR_TYPE_BYTESEXACT;
551551

552552
if (hir_type_has_value_spec(&obj_type, t_tuple_exact) ||
553553
hir_type_has_value_spec(&obj_type, t_bytes_exact)) {

0 commit comments

Comments
 (0)