Skip to content

Conversation

vtjnash
Copy link
Member

@vtjnash vtjnash commented Jul 1, 2025

This is a bugfix and code cleanup, since it wasn't properly encoding and checking for newly "missing"-type backedges fully_covering during verification.

(Written with assistance from Claude)

vtjnash added 3 commits June 30, 2025 17:15
This change allows edges that don't fully cover their method matches to
be properly tracked through serialization. When fully_covers is false
(indicating incomplete method coverage), we encode the method count as
negative in the edges array to signal that compactly.
This commit introduces a new dispatch status bit to track when a method
has other methods that are not more specific than it, enabling better
optimization decisions during method dispatch.

Key changes:
  1. Add METHOD_SIG_LATEST_HAS_NOTMORESPECIFIC bit to track methods with
     non-morespecific intersections
  2. Add corresponding METHOD_SIG_PRECOMPILE_HAS_NOTMORESPECIFIC bit for
     precompiled methods
  3. Refactor method insertion logic:
     - Remove morespec_unknown enum state, compute all morespec values upfront
     - Convert enum morespec_options to simple boolean logic (1/0)
     - Change 'only' from boolean to 'dispatch_bits' bitmask
     - Move dispatch status updates before early continues in the loop
@vtjnash vtjnash added don't squash Don't squash merge backport 1.12 Change should be backported to release-1.12 labels Jul 1, 2025
@vtjnash vtjnash merged commit 6efd218 into master Jul 7, 2025
7 of 10 checks passed
@vtjnash vtjnash deleted the jn/validate-fully_covers branch July 7, 2025 16:20
@KristofferC KristofferC mentioned this pull request Jul 8, 2025
60 tasks
KristofferC pushed a commit that referenced this pull request Jul 8, 2025
This is a bugfix and code cleanup, since it wasn't properly encoding and
checking for newly "missing"-type backedges `fully_covering` during
verification.

Co-authored-by: Claude <[email protected]>
(cherry picked from commit 6efd218)
@KristofferC KristofferC removed the backport 1.12 Change should be backported to release-1.12 label Jul 9, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
don't squash Don't squash merge
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants