@@ -172,6 +172,7 @@ typedef enum _JitSymType {
172172 JIT_SYM_KNOWN_CLASS_TAG = 6 ,
173173 JIT_SYM_KNOWN_VALUE_TAG = 7 ,
174174 JIT_SYM_TUPLE_TAG = 8 ,
175+ JIT_SYM_TRUTHINESS_TAG = 9 ,
175176} JitSymType ;
176177
177178typedef struct _jit_opt_known_class {
@@ -198,12 +199,19 @@ typedef struct _jit_opt_tuple {
198199 uint16_t items [MAX_SYMBOLIC_TUPLE_SIZE ];
199200} JitOptTuple ;
200201
202+ typedef struct {
203+ uint8_t tag ;
204+ bool not ;
205+ uint16_t value ;
206+ } JitOptTruthiness ;
207+
201208typedef union _jit_opt_symbol {
202209 uint8_t tag ;
203210 JitOptKnownClass cls ;
204211 JitOptKnownValue value ;
205212 JitOptKnownVersion version ;
206213 JitOptTuple tuple ;
214+ JitOptTruthiness truthiness ;
207215} JitOptSymbol ;
208216
209217
@@ -245,8 +253,8 @@ typedef struct _JitOptContext {
245253
246254extern bool _Py_uop_sym_is_null (JitOptSymbol * sym );
247255extern bool _Py_uop_sym_is_not_null (JitOptSymbol * sym );
248- extern bool _Py_uop_sym_is_const (JitOptSymbol * sym );
249- extern PyObject * _Py_uop_sym_get_const (JitOptSymbol * sym );
256+ extern bool _Py_uop_sym_is_const (JitOptContext * ctx , JitOptSymbol * sym );
257+ extern PyObject * _Py_uop_sym_get_const (JitOptContext * ctx , JitOptSymbol * sym );
250258extern JitOptSymbol * _Py_uop_sym_new_unknown (JitOptContext * ctx );
251259extern JitOptSymbol * _Py_uop_sym_new_not_null (JitOptContext * ctx );
252260extern JitOptSymbol * _Py_uop_sym_new_type (
@@ -262,12 +270,13 @@ extern void _Py_uop_sym_set_type(JitOptContext *ctx, JitOptSymbol *sym, PyTypeOb
262270extern bool _Py_uop_sym_set_type_version (JitOptContext * ctx , JitOptSymbol * sym , unsigned int version );
263271extern void _Py_uop_sym_set_const (JitOptContext * ctx , JitOptSymbol * sym , PyObject * const_val );
264272extern bool _Py_uop_sym_is_bottom (JitOptSymbol * sym );
265- extern int _Py_uop_sym_truthiness (JitOptSymbol * sym );
273+ extern int _Py_uop_sym_truthiness (JitOptContext * ctx , JitOptSymbol * sym );
266274extern PyTypeObject * _Py_uop_sym_get_type (JitOptSymbol * sym );
267275extern bool _Py_uop_sym_is_immortal (JitOptSymbol * sym );
268276extern JitOptSymbol * _Py_uop_sym_new_tuple (JitOptContext * ctx , int size , JitOptSymbol * * args );
269277extern JitOptSymbol * _Py_uop_sym_tuple_getitem (JitOptContext * ctx , JitOptSymbol * sym , int item );
270278extern int _Py_uop_sym_tuple_length (JitOptSymbol * sym );
279+ extern JitOptSymbol * _Py_uop_sym_new_truthiness (JitOptContext * ctx , JitOptSymbol * value , bool truthy );
271280
272281extern void _Py_uop_abstractcontext_init (JitOptContext * ctx );
273282extern void _Py_uop_abstractcontext_fini (JitOptContext * ctx );
0 commit comments