Draft
Conversation
clonker
commented
Apr 15, 2026
Member
Author
There was a problem hiding this comment.
here the guards are a bit strict perhaps. i managed to get rid of the regression in this particular case but that lead to overall worse results in the external contracts. ugh :)
d8106bf to
41d19bb
Compare
blishko
reviewed
Apr 15, 2026
Contributor
blishko
left a comment
There was a problem hiding this comment.
It definitely shows potential, but let's see if we can minimize the regressions.
| // if there are no args, we should be done now | ||
| if (_state.target().args.empty()) | ||
| return {StackShufflerResult::Status::Admissible}; | ||
| yulAssert(_stack.size() == _state.target().size); |
Contributor
There was a problem hiding this comment.
Why is this not true anymore?
Member
Author
There was a problem hiding this comment.
previously, the fixArgsSlot couldn't refuse to grow and would, worst case, push junk. now it can refuse and ultimately yield NoAction in which case the invariant would be violated.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
argsRangeontargethelper, inspired from SSA: Fix cycle in stack shuffler #16595 (comment)fixArgsSlot:canReachSomeUnfilledTarget(arg)checking if there is a swap-reachable slot wantingarg, andprefixReachablechecking that, after growing the stack, every misaligned prefix offset is still reachablefixArgsSlot:argthe target wants at the new top directly) but only under a stricterpushKeepsDeepPrefixReachablegate: every misaligned prefix offset must survive the grow plus one more op. this accounts for committing the slot to its final position right away, which means that fixing a deeper slot requires duping/pushing something else first if that slot is in its final position