Skip to content

Draft: gh-143732: Add specialization for TO_BOOL#148113

Open
eendebakpt wants to merge 5 commits intopython:mainfrom
eendebakpt:to_bool_generic
Open

Draft: gh-143732: Add specialization for TO_BOOL#148113
eendebakpt wants to merge 5 commits intopython:mainfrom
eendebakpt:to_bool_generic

Conversation

@eendebakpt
Copy link
Copy Markdown
Contributor

@eendebakpt eendebakpt commented Apr 4, 2026

We add TO_BOOL_GENERIC as suggested in #143732 (comment). This adds type information for several builtin classes. We also add _TO_BOOL_DICT (tier 2). In the jit conversion of a dict to bool is about 30% faster.

eendebakpt and others added 5 commits March 25, 2026 22:53
- Add TO_BOOL_GENERIC: a catch-all specialization for types not covered
  by existing TO_BOOL variants (dict, tuple, float, set, bytes, frozenset,
  etc. and heap types with __bool__/__len__). Records type info for the JIT.

- Add _TO_BOOL_DICT: a tier2-only uop that checks dict.ma_used directly
  instead of calling PyObject_IsTrue(). The JIT optimizer replaces _TO_BOOL
  with _TO_BOOL_DICT when the type is known to be dict or frozendict.

- Fix _GUARD_TYPE_VERSION optimizer handler to resolve types from recorded
  type info even when the type version cache has a collision. This enables
  the optimizer to eliminate redundant type guards (e.g. _GUARD_NOS_LIST)
  in more cases.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant