Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(250)

Issue 617933003: Iterative graph traversal in FlowGraph::DiscoverBlocks() (Closed)

Created:
6 years, 2 months ago by jgruber1
Modified:
6 years, 2 months ago
CC:
reviews_dartlang.org, vm-dev_dartlang.org
Visibility:
Public.

Description

Iterative graph traversal in FlowGraph::DiscoverBlocks() The motivation behind this change is that very large functions could cause stack overflows in the (previously recursive) DiscoverBlocks function. This commit introduces replaces recursive traversal by iterative algorithms. Postorder traversal had to be removed from DiscoverBlocks and is now done in a separate pass. BUG=21109 R=vegorov@google.com Committed: https://code.google.com/p/dart/source/detail?r=41016

Patch Set 1 #

Total comments: 4

Patch Set 2 : Addressed comments. #

Total comments: 2

Patch Set 3 : Addressed comments. #

Total comments: 1

Patch Set 4 : Added documentation of DiscoverBlock return value. #

Unified diffs Side-by-side diffs Delta from patch set Stats (+68 lines, -46 lines) Patch
M runtime/vm/flow_graph.cc View 1 2 1 chunk +50 lines, -8 lines 0 comments Download
M runtime/vm/intermediate_language.h View 1 2 3 1 chunk +14 lines, -18 lines 0 comments Download
M runtime/vm/intermediate_language.cc View 1 3 chunks +4 lines, -20 lines 0 comments Download

Messages

Total messages: 9 (2 generated)
jgruber1
6 years, 2 months ago (2014-10-02 13:38:30 UTC) #2
Vyacheslav Egorov (Google)
https://codereview.chromium.org/617933003/diff/1/runtime/vm/flow_graph.cc File runtime/vm/flow_graph.cc (right): https://codereview.chromium.org/617933003/diff/1/runtime/vm/flow_graph.cc#newcode214 runtime/vm/flow_graph.cc:214: GrowableArray<BlockEntryEdge> block_stack; I would really like to have this ...
6 years, 2 months ago (2014-10-07 12:43:17 UTC) #3
jgruber1
PTAL. Golem: http://173.255.127.20:8080/Comparison#targetA=dart;machineTypeA=linux-x64;revisionA=40989;patchA=jgruber-iterative-discover-blocks;targetB=dart;machineTypeB=linux-x64;revisionB=40989;patchB=None https://codereview.chromium.org/617933003/diff/1/runtime/vm/flow_graph.cc File runtime/vm/flow_graph.cc (right): https://codereview.chromium.org/617933003/diff/1/runtime/vm/flow_graph.cc#newcode214 runtime/vm/flow_graph.cc:214: GrowableArray<BlockEntryEdge> block_stack; On 2014/10/07 12:43:17, Vyacheslav ...
6 years, 2 months ago (2014-10-08 15:11:29 UTC) #4
zerny-google
A small nit. As discussed offline, the benchmarks don't indicate a regression compared to the ...
6 years, 2 months ago (2014-10-09 09:53:32 UTC) #6
jgruber1
https://codereview.chromium.org/617933003/diff/20001/runtime/vm/flow_graph.cc File runtime/vm/flow_graph.cc (right): https://codereview.chromium.org/617933003/diff/20001/runtime/vm/flow_graph.cc#newcode188 runtime/vm/flow_graph.cc:188: block_stack.Add(BlockTraversalState(graph_entry_)); On 2014/10/09 09:53:32, zerny-google wrote: > Nit: consistent ...
6 years, 2 months ago (2014-10-09 14:08:36 UTC) #7
Vyacheslav Egorov (Google)
LGTM though I am a bit concerned that there will be too much re-allocation happening ...
6 years, 2 months ago (2014-10-09 14:22:19 UTC) #8
jgruber1
6 years, 2 months ago (2014-10-09 15:35:34 UTC) #9
Message was sent while issue was closed.
Committed patchset #4 (id:60001) manually as 41016 (presubmit successful).

Powered by Google App Engine
This is Rietveld 408576698