Repository navigation
Reuse one function address order across SDK pages - #1610
Merged
Merged
Conversation
…age-order # Conflicts: # lib/sdk/capi/InstructionFlow.cpp
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.
Reference and warmup pagination repeatedly filtered and sorted the remaining function inventory for each page. Retain one stable address order per function-list revision and seek each page with a lower bound. Stateless access-width scans also build their order once per scan.
The cache checks the list revision, backing storage and count. Equal addresses retain the first listed identity; pages preserve the requested bounds and continuation. The same SDK implementation serves the worker and CLI.
Regression coverage checks complete paging, address zero, duplicate identities, limit clamping, storage replacement, and a revision change without an allocation or count change. It also asserts that successive pages reuse the same address-order storage. Existing reference, access-width and warmup invalidation cases protect callers.
An earlier local Windows Release comparison of this change together with asynchronous discovery and replica preparation reduced initial Functions filtering by about 89% over three paired runs. That is a combined result, not an isolated timing claim for this cache. The input identity, binary, paths and raw traces are not included.
Windows x64 Release: 11 focused SDK cases passed without skips, including the new complete-page/revision regression and existing access-width/warmup cases. A freshly linked real CLI and worker passed the two-size synthetic reference/width comparison. The modified C++ ranges and diff whitespace were checked. Full CTest and native Linux/macOS host runs were not performed locally. This PR is independent and targets dev; related worker and GUI changes are submitted separately.