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

Issue 1068243002: Overhaul tree IR visitor and rename IR classes. (Closed)

Created:
5 years, 8 months ago by asgerf
Modified:
5 years, 8 months ago
CC:
reviews_dartlang.org
Target Ref:
refs/remotes/git-svn
Visibility:
Public.

Description

Overhaul tree IR visitor and rename IR classes. Changes in both IRs: - ExecutableDefinition -> RootNode - PassMixin has been removed and the Pass interface has been reduced to a single rewrite(RootNode) method. - ConstructorDefinition no longer subclasses FunctionDefinition. Changes in the cps IR: - RunnableBody -> Body Changes in tree IR: - RootNodes have "forEachBody" and "replaceEachBody" helper methods that take care of the boilerplate for traversing roots and initializers. - We now have visitors for initializers and root nodes. The RecursiveVisitor still just visits statements and expressions since forEachBody takes care of the root nodes and initializers. - Initializers are no longer expressions. Why were they expressions? - We now have a RecursiveTransformer class which behaves like RecursiveVisitor, except visitors are expected to return a transformed node. This removes a lot of boilerplate traversal from transformations. R=kmillikin@google.com Committed: https://code.google.com/p/dart/source/detail?r=45000 Reverted: https://code.google.com/p/dart/source/detail?r=45004 Committed: https://code.google.com/p/dart/source/detail?r=45006

Patch Set 1 #

Total comments: 36

Patch Set 2 : Respond to comments #

Patch Set 3 : ++i #

Patch Set 4 : Revert + unrevert #

Patch Set 5 : Add dummy use for RootVisitor and InitializerVisitor without arguments #

Unified diffs Side-by-side diffs Delta from patch set Stats (+695 lines, -860 lines) Patch
M pkg/analyzer2dart/lib/src/cps_generator.dart View 1 chunk +1 line, -2 lines 0 comments Download
M pkg/analyzer2dart/test/sexpr_test.dart View 1 chunk +1 line, -1 line 0 comments Download
M pkg/compiler/lib/src/cps_ir/cps_ir_builder.dart View 1 2 3 4 chunks +8 lines, -8 lines 0 comments Download
M pkg/compiler/lib/src/cps_ir/cps_ir_builder_task.dart View 1 2 3 13 chunks +21 lines, -23 lines 0 comments Download
M pkg/compiler/lib/src/cps_ir/cps_ir_integrity.dart View 3 chunks +3 lines, -3 lines 0 comments Download
M pkg/compiler/lib/src/cps_ir/cps_ir_nodes.dart View 1 2 3 11 chunks +60 lines, -61 lines 0 comments Download
M pkg/compiler/lib/src/cps_ir/cps_ir_nodes_sexpr.dart View 2 chunks +2 lines, -2 lines 0 comments Download
M pkg/compiler/lib/src/cps_ir/cps_ir_tracer.dart View 1 9 chunks +48 lines, -46 lines 0 comments Download
M pkg/compiler/lib/src/cps_ir/optimizers.dart View 1 chunk +1 line, -25 lines 0 comments Download
M pkg/compiler/lib/src/cps_ir/redundant_phi.dart View 1 1 chunk +3 lines, -2 lines 0 comments Download
M pkg/compiler/lib/src/cps_ir/shrinking_reductions.dart View 5 chunks +7 lines, -5 lines 0 comments Download
M pkg/compiler/lib/src/cps_ir/type_propagation.dart View 8 chunks +10 lines, -10 lines 0 comments Download
M pkg/compiler/lib/src/dart_backend/backend.dart View 1 5 chunks +21 lines, -22 lines 0 comments Download
M pkg/compiler/lib/src/dart_backend/backend_ast_emitter.dart View 1 2 3 14 chunks +48 lines, -40 lines 0 comments Download
M pkg/compiler/lib/src/dart_backend/backend_ast_nodes.dart View 2 chunks +3 lines, -3 lines 0 comments Download
M pkg/compiler/lib/src/dart_backend/backend_ast_to_frontend_ast.dart View 1 2 chunks +3 lines, -3 lines 0 comments Download
M pkg/compiler/lib/src/js_backend/codegen/codegen.dart View 2 chunks +2 lines, -11 lines 0 comments Download
M pkg/compiler/lib/src/js_backend/codegen/task.dart View 2 chunks +2 lines, -2 lines 0 comments Download
M pkg/compiler/lib/src/tracer.dart View 1 chunk +2 lines, -2 lines 0 comments Download
M pkg/compiler/lib/src/tree_ir/optimization/logical_rewriter.dart View 6 chunks +10 lines, -176 lines 0 comments Download
M pkg/compiler/lib/src/tree_ir/optimization/loop_rewriter.dart View 3 chunks +7 lines, -67 lines 0 comments Download
M pkg/compiler/lib/src/tree_ir/optimization/optimization.dart View 2 chunks +1 line, -24 lines 0 comments Download
M pkg/compiler/lib/src/tree_ir/optimization/statement_rewriter.dart View 3 chunks +7 lines, -31 lines 0 comments Download
M pkg/compiler/lib/src/tree_ir/optimization/variable_merger.dart View 1 2 6 chunks +35 lines, -135 lines 0 comments Download
M pkg/compiler/lib/src/tree_ir/tree_ir_builder.dart View 6 chunks +6 lines, -6 lines 0 comments Download
M pkg/compiler/lib/src/tree_ir/tree_ir_integrity.dart View 3 chunks +14 lines, -17 lines 0 comments Download
M pkg/compiler/lib/src/tree_ir/tree_ir_nodes.dart View 1 16 chunks +326 lines, -104 lines 0 comments Download
M pkg/compiler/lib/src/tree_ir/tree_ir_tracer.dart View 1 6 chunks +21 lines, -21 lines 0 comments Download
M pkg/compiler/lib/src/use_unused_api.dart View 1 2 3 4 3 chunks +17 lines, -0 lines 0 comments Download
M tests/compiler/dart2js/backend_dart/sexpr2_test.dart View 1 chunk +1 line, -1 line 0 comments Download
M tests/compiler/dart2js/backend_dart/sexpr_unstringifier.dart View 1 2 3 1 chunk +1 line, -1 line 0 comments Download
M tests/compiler/dart2js/js_backend_cps_ir_source_information_test.dart View 1 chunk +3 lines, -6 lines 0 comments Download

Messages

Total messages: 11 (2 generated)
asgerf
5 years, 8 months ago (2015-04-08 13:47:03 UTC) #2
Kevin Millikin (Google)
Nice. LGTM with suggestions for further improvements (?). https://codereview.chromium.org/1068243002/diff/1/pkg/compiler/lib/src/cps_ir/cps_ir_nodes.dart File pkg/compiler/lib/src/cps_ir/cps_ir_nodes.dart (right): https://codereview.chromium.org/1068243002/diff/1/pkg/compiler/lib/src/cps_ir/cps_ir_nodes.dart#newcode734 pkg/compiler/lib/src/cps_ir/cps_ir_nodes.dart:734: bool ...
5 years, 8 months ago (2015-04-08 15:10:16 UTC) #3
asgerf
https://codereview.chromium.org/1068243002/diff/1/pkg/compiler/lib/src/cps_ir/cps_ir_nodes.dart File pkg/compiler/lib/src/cps_ir/cps_ir_nodes.dart (right): https://codereview.chromium.org/1068243002/diff/1/pkg/compiler/lib/src/cps_ir/cps_ir_nodes.dart#newcode734 pkg/compiler/lib/src/cps_ir/cps_ir_nodes.dart:734: bool get isEmpty; On 2015/04/08 15:10:15, kmillikin wrote: > ...
5 years, 8 months ago (2015-04-09 09:58:24 UTC) #4
Kevin Millikin (Google)
Changes LGTM. https://codereview.chromium.org/1068243002/diff/1/pkg/compiler/lib/src/tree_ir/optimization/variable_merger.dart File pkg/compiler/lib/src/tree_ir/optimization/variable_merger.dart (right): https://codereview.chromium.org/1068243002/diff/1/pkg/compiler/lib/src/tree_ir/optimization/variable_merger.dart#newcode480 pkg/compiler/lib/src/tree_ir/optimization/variable_merger.dart:480: for (int i=0; i < node.parameters.length; i++) ...
5 years, 8 months ago (2015-04-09 10:56:32 UTC) #5
Kevin Millikin (Google)
Also in Dart, ++i is equivalent to i += 1 and i++ is equivalent to ...
5 years, 8 months ago (2015-04-09 10:58:52 UTC) #6
asgerf
Old habits die hard I guess. https://codereview.chromium.org/1068243002/diff/1/pkg/compiler/lib/src/tree_ir/optimization/variable_merger.dart File pkg/compiler/lib/src/tree_ir/optimization/variable_merger.dart (right): https://codereview.chromium.org/1068243002/diff/1/pkg/compiler/lib/src/tree_ir/optimization/variable_merger.dart#newcode480 pkg/compiler/lib/src/tree_ir/optimization/variable_merger.dart:480: for (int i=0; ...
5 years, 8 months ago (2015-04-09 11:01:18 UTC) #7
asgerf
Committed patchset #3 (id:40001) manually as 45000 (presubmit successful).
5 years, 8 months ago (2015-04-09 12:05:21 UTC) #8
asgerf
Committed patchset #4 (id:60001) manually as 45004 (presubmit successful).
5 years, 8 months ago (2015-04-09 13:01:34 UTC) #9
asgerf
5 years, 8 months ago (2015-04-09 13:19:30 UTC) #11
Message was sent while issue was closed.
Committed patchset #5 (id:100001) manually as 45006 (presubmit successful).

Powered by Google App Engine
This is Rietveld 408576698