|
dart2js cps: Avoid deep recursion using trampolines and basic blocks.
The CPS RecursiveVisitor now uses an explicit stack of things to do
on the way out of a term. Every CPS pass has been hacked to fit the
new visitor paradigm.
The tree visitors now iterate over chains of ExpressionStatements.
This seems to do the trick, mostly because direct-style rewriting
significantly reduces the height of the tree.
The IR tracers still use deep recursion, but they are disabled by
default anyway so they are not critical.
BUG=
R=floitsch@google.com, karlklose@google.com
Committed: https://github.com/dart-lang/sdk/commit/7d038fbc679fcbf17bccfc27562584d323c75de5
Total comments: 26
Total comments: 3
|
Unified diffs |
Side-by-side diffs |
Delta from patch set |
Stats (+11460 lines, -480 lines) |
Patch |
|
M |
pkg/compiler/lib/src/cps_ir/cps_ir_integrity.dart
|
View
|
|
3 chunks |
+58 lines, -55 lines |
0 comments
|
Download
|
|
M |
pkg/compiler/lib/src/cps_ir/cps_ir_nodes.dart
|
View
|
1
2
3
4
5
6
7
|
6 chunks |
+130 lines, -14 lines |
0 comments
|
Download
|
|
M |
pkg/compiler/lib/src/cps_ir/let_sinking.dart
|
View
|
|
1 chunk |
+15 lines, -12 lines |
0 comments
|
Download
|
|
M |
pkg/compiler/lib/src/cps_ir/mutable_ssa.dart
|
View
|
|
1 chunk |
+5 lines, -4 lines |
0 comments
|
Download
|
|
M |
pkg/compiler/lib/src/cps_ir/redundant_join.dart
|
View
|
|
2 chunks |
+9 lines, -10 lines |
0 comments
|
Download
|
|
M |
pkg/compiler/lib/src/cps_ir/type_propagation.dart
|
View
|
1
2
3
4
5
6
7
|
23 chunks |
+156 lines, -113 lines |
0 comments
|
Download
|
|
M |
pkg/compiler/lib/src/js_backend/codegen/unsugar.dart
|
View
|
1
2
3
4
5
6
7
|
4 chunks |
+7 lines, -15 lines |
0 comments
|
Download
|
|
M |
pkg/compiler/lib/src/tree_ir/optimization/statement_rewriter.dart
|
View
|
1
2
3
|
2 chunks |
+61 lines, -33 lines |
0 comments
|
Download
|
|
M |
pkg/compiler/lib/src/tree_ir/tree_ir_builder.dart
|
View
|
1
2
3
4
5
6
7
|
12 chunks |
+245 lines, -212 lines |
0 comments
|
Download
|
|
M |
pkg/compiler/lib/src/tree_ir/tree_ir_nodes.dart
|
View
|
1
2
3
4
5
6
7
|
2 chunks |
+20 lines, -5 lines |
0 comments
|
Download
|
|
M |
pkg/compiler/lib/src/tree_ir/tree_ir_tracer.dart
|
View
|
|
2 chunks |
+6 lines, -2 lines |
0 comments
|
Download
|
|
M |
tests/co19/co19-dart2js.status
|
View
|
1
2
3
4
5
6
7
|
2 chunks |
+3 lines, -3 lines |
0 comments
|
Download
|
|
M |
tests/language/language_dart2js.status
|
View
|
1
2
3
4
5
6
7
|
3 chunks |
+1 line, -2 lines |
0 comments
|
Download
|
|
A |
tests/language/larger_implicit_getter_test.dart
|
View
|
1
2
3
4
5
|
1 chunk |
+4100 lines, -0 lines |
0 comments
|
Download
|
|
A |
tests/language/many_method_calls_test.dart
|
View
|
1
|
1 chunk |
+6644 lines, -0 lines |
0 comments
|
Download
|
Total messages: 13 (3 generated)
|