Summary: | Web Inspector: Heap: don't use recursion when calculating root paths | ||||||||
---|---|---|---|---|---|---|---|---|---|
Product: | WebKit | Reporter: | Devin Rousso <hi> | ||||||
Component: | Web Inspector | Assignee: | Devin Rousso <hi> | ||||||
Status: | RESOLVED FIXED | ||||||||
Severity: | Normal | CC: | commit-queue, hi, inspector-bugzilla-changes, joepeck, webkit-bug-importer | ||||||
Priority: | P2 | Keywords: | InRadar | ||||||
Version: | WebKit Nightly Build | ||||||||
Hardware: | All | ||||||||
OS: | All | ||||||||
Attachments: |
|
Description
Devin Rousso
2019-04-12 18:26:42 PDT
Created attachment 367366 [details]
Patch
Comment on attachment 367366 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=367366&action=review r=me > Source/WebInspectorUI/UserInterface/Workers/HeapSnapshot/HeapSnapshot.js:756 > + for (let i = 0; i < stack.length; ++i) { > + let {currentPath, nodeOrdinal} = stack[i]; This list is not being treated as a stack. In fact it is always growing because nothing nothing is ever removed. Normally when we have a stack approach like this we process it to exhaustion like this: let stack = [{...entry...}]; while (stack.length) { let entry = stack.pop(); // Process entry, maybe push new stack entries. } Which I think could be done here as long as you convert these two lines to: while (stack.length) { let {currentPath, nodeOridinal} = stack.pop(); ... That said, items are going to be processes on the stack in reverse order... so to get unchanging output you could iterate the edges in forward order such as: while (stack.length) { let {currentPath, nodeOridinal} = stack.unshift(); ... That should get you output that is consistent with the current code. Created attachment 367460 [details]
Patch
Comment on attachment 367460 [details] Patch Clearing flags on attachment: 367460 Committed r244308: <https://trac.webkit.org/changeset/244308> All reviewed patches have been landed. Closing bug. |