-
Notifications
You must be signed in to change notification settings - Fork 391
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Make inverting the call tree fast, by computing inverted call nodes lazily #4900
Open
mstange
wants to merge
18
commits into
firefox-devtools:main
Choose a base branch
from
mstange:fast-invert4
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from 1 commit
Commits
Show all changes
18 commits
Select commit
Hold shift + click to select a range
f597380
Add an inverted tree test for getSamplesSelectedStates and getTreeOrd…
mstange 3a97c45
Add CallNodeInfoInverted.
mstange 92b0120
Implement the "suffix order".
mstange e88ea5e
Use the suffix order in getMatchingAncestorStackForInvertedCallNode.
mstange 1dd684e
Implement getSamplesSelectedStates for inverted trees with the suffix…
mstange 6fee134
Use suffix order in getTimingsForCallNodeIndex.
mstange bbf5760
Implement getTreeOrderComparator for the inverted tree with non-inver…
mstange 0f1d3a2
Use SampleIndexToNonInvertedCallNodeIndex for the stack chart.
mstange 0b195fd
Remove now-unused stack-to-inverted-call-node mapping.
mstange c21a2ab
Call getNonInvertedCallNodeTable() in more stack-chart-related places.
mstange 17ca128
Compute inverted call tree timings differently.
mstange 9bf0e5c
Rename leaf to self in many places.
mstange 0eb70a1
Use the non-inverted call node table to check for recursion.
mstange 66bb0d5
Replace all remaining callers of getCallNodeTable() with xyzForNode()…
mstange 15d5cf9
Remove now-unused getCallNodeTable().
mstange f35b4aa
Create inverted call nodes lazily.
mstange ed5cd5b
Optimize handling of roots.
mstange 086aec7
Make sourceFramesInlinedIntoSymbol an Int32Array.
mstange File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains 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
This file contains 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
This file contains 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
Oops, something went wrong.
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.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
some more comment around the compare function would be useful.
Esp give a few different examples with callnodes of different lengths, and explain why this gives the intended result.
Also it would probably be a good idea to call the 2
callNodeIndex
differently: there's one as the parameter of the main function (the needleCallNodeIndex), and another one as the parameter of the compare function (the iteratingCallNodeIndex maybe?), that are not the same.I don't understand it fully. Is it similar to
_compareNonInvertedCallNodesInSuffixOrder
below, except that we computed the needle's callPath once at the start for a faster access in the iteration, while it would be more costly than necessary for all the iterating callNodeIndexes?