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

Issue 862703002: Implement constructor bodies and initializers in CPS->JS backend. (Closed)

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

Description

Implement constructor bodies and initializers in CPS->JS backend. As in the SSA backend, a constructor consists of three parts: 1. Instantiator: creates an object and sets its fields 2. Factory: evaluates field initializers, calls instantiator, then calls bodies. 3. Body: executes the body of a constructor. The CreateClosureClass instruction has been replaced by CreateInstance for invoking the instantiator for an arbitrary class. The IrBuilderVisitor has been split into two subclasses to better isolate the JS-specific code. BUG= R=floitsch@google.com Committed: https://code.google.com/p/dart/source/detail?r=43092

Patch Set 1 #

Total comments: 3

Patch Set 2 : Removed obsolete TODO #

Total comments: 18

Patch Set 3 : Minor fixes #

Patch Set 4 : Minor fix #

Patch Set 5 : Fix initialization order #

Patch Set 6 : Bugfix: proper inlining of expressions #

Patch Set 7 : Fix test case #

Total comments: 47

Patch Set 8 : Remove stray internalConstructorAccess #

Patch Set 9 : Addressed comments #

Patch Set 10 : Rename in analyzer2dart #

Total comments: 2

Patch Set 11 : Comments and minor fix in asseriton #

Patch Set 12 : Rebase #

Patch Set 13 : Rebase again #

Unified diffs Side-by-side diffs Delta from patch set Stats (+819 lines, -253 lines) Patch
M pkg/analyzer2dart/lib/src/cps_generator.dart View 1 2 3 4 5 6 7 8 9 4 chunks +6 lines, -3 lines 0 comments Download
M pkg/compiler/lib/src/cps_ir/cps_ir_builder.dart View 1 2 3 4 5 6 7 8 9 10 11 12 11 chunks +46 lines, -19 lines 0 comments Download
M pkg/compiler/lib/src/cps_ir/cps_ir_builder_visitor.dart View 1 2 3 4 5 6 7 8 9 10 11 12 14 chunks +566 lines, -174 lines 0 comments Download
M pkg/compiler/lib/src/cps_ir/cps_ir_nodes.dart View 1 2 3 4 5 6 7 8 9 10 11 12 4 chunks +12 lines, -12 lines 0 comments Download
M pkg/compiler/lib/src/cps_ir/cps_ir_nodes_sexpr.dart View 1 chunk +2 lines, -2 lines 0 comments Download
M pkg/compiler/lib/src/cps_ir/cps_ir_tracer.dart View 1 chunk +2 lines, -2 lines 0 comments Download
M pkg/compiler/lib/src/cps_ir/shrinking_reductions.dart View 1 chunk +1 line, -1 line 0 comments Download
M pkg/compiler/lib/src/cps_ir/type_propagation.dart View 1 chunk +1 line, -1 line 0 comments Download
M pkg/compiler/lib/src/dart_backend/backend_ast_emitter.dart View 1 chunk +1 line, -1 line 0 comments Download
M pkg/compiler/lib/src/js_backend/codegen/codegen.dart View 1 2 3 4 5 6 7 8 2 chunks +11 lines, -2 lines 0 comments Download
M pkg/compiler/lib/src/js_backend/codegen/glue.dart View 1 2 2 chunks +10 lines, -2 lines 0 comments Download
M pkg/compiler/lib/src/js_backend/codegen/js_tree_builder.dart View 1 chunk +2 lines, -2 lines 0 comments Download
M pkg/compiler/lib/src/js_backend/codegen/task.dart View 1 chunk +1 line, -2 lines 0 comments Download
M pkg/compiler/lib/src/js_backend/codegen/unsugar.dart View 1 chunk +1 line, -1 line 0 comments Download
M pkg/compiler/lib/src/js_emitter/code_emitter_task.dart View 1 2 3 4 5 6 7 8 9 10 11 2 chunks +0 lines, -7 lines 0 comments Download
M pkg/compiler/lib/src/js_emitter/new_emitter/emitter.dart View 1 2 3 4 5 6 7 8 9 10 11 1 chunk +0 lines, -5 lines 0 comments Download
M pkg/compiler/lib/src/js_emitter/old_emitter/emitter.dart View 1 2 3 4 5 6 7 8 9 10 11 1 chunk +0 lines, -5 lines 0 comments Download
M pkg/compiler/lib/src/tree_ir/optimization/logical_rewriter.dart View 1 chunk +1 line, -1 line 0 comments Download
M pkg/compiler/lib/src/tree_ir/optimization/statement_rewriter.dart View 1 chunk +1 line, -1 line 0 comments Download
M pkg/compiler/lib/src/tree_ir/tree_ir_nodes.dart View 4 chunks +8 lines, -8 lines 0 comments Download
M pkg/compiler/lib/src/tree_ir/tree_ir_tracer.dart View 1 chunk +2 lines, -2 lines 0 comments Download
A tests/compiler/dart2js/js_backend_cps_ir_constructor_test.dart View 1 2 3 4 5 6 1 chunk +145 lines, -0 lines 0 comments Download

Messages

Total messages: 13 (3 generated)
asgerf
https://codereview.chromium.org/862703002/diff/1/pkg/compiler/lib/src/cps_ir/cps_ir_builder_visitor.dart File pkg/compiler/lib/src/cps_ir/cps_ir_builder_visitor.dart (left): https://codereview.chromium.org/862703002/diff/1/pkg/compiler/lib/src/cps_ir/cps_ir_builder_visitor.dart#oldcode162 pkg/compiler/lib/src/cps_ir/cps_ir_builder_visitor.dart:162: } All this stuff have been moved to subclasses. ...
5 years, 11 months ago (2015-01-20 16:13:17 UTC) #2
floitsch
First round of comments. Will have another look, once we agree on the initialization order. ...
5 years, 11 months ago (2015-01-20 17:26:27 UTC) #3
asgerf
Done all the minor fixes. https://codereview.chromium.org/862703002/diff/20001/pkg/compiler/lib/src/cps_ir/cps_ir_builder_visitor.dart File pkg/compiler/lib/src/cps_ir/cps_ir_builder_visitor.dart (right): https://codereview.chromium.org/862703002/diff/20001/pkg/compiler/lib/src/cps_ir/cps_ir_builder_visitor.dart#newcode1264 pkg/compiler/lib/src/cps_ir/cps_ir_builder_visitor.dart:1264: // For some reason, ...
5 years, 11 months ago (2015-01-21 09:55:58 UTC) #4
floitsch
https://codereview.chromium.org/862703002/diff/20001/pkg/compiler/lib/src/js_backend/codegen/codegen.dart File pkg/compiler/lib/src/js_backend/codegen/codegen.dart (right): https://codereview.chromium.org/862703002/diff/20001/pkg/compiler/lib/src/js_backend/codegen/codegen.dart#newcode220 pkg/compiler/lib/src/js_backend/codegen/codegen.dart:220: // Constructor body cannot be overriden or intercepted, so ...
5 years, 11 months ago (2015-01-21 11:37:54 UTC) #5
asgerf
PTAL Initialization order fixed. Also found and fixed a bug when inlining expressions from field ...
5 years, 11 months ago (2015-01-21 12:48:26 UTC) #6
floitsch
(no worries for the patch history). LGTM. nice clean code. The naming for the closure ...
5 years, 11 months ago (2015-01-21 16:29:35 UTC) #9
asgerf
https://codereview.chromium.org/862703002/diff/120001/pkg/compiler/lib/src/cps_ir/cps_ir_builder_visitor.dart File pkg/compiler/lib/src/cps_ir/cps_ir_builder_visitor.dart (right): https://codereview.chromium.org/862703002/diff/120001/pkg/compiler/lib/src/cps_ir/cps_ir_builder_visitor.dart#newcode1024 pkg/compiler/lib/src/cps_ir/cps_ir_builder_visitor.dart:1024: DetectClosureVariables closures = new DetectClosureVariables(elements); On 2015/01/21 16:29:34, floitsch ...
5 years, 11 months ago (2015-01-22 10:18:58 UTC) #10
floitsch
Still LGTM. https://codereview.chromium.org/862703002/diff/220001/pkg/compiler/lib/src/cps_ir/cps_ir_builder_visitor.dart File pkg/compiler/lib/src/cps_ir/cps_ir_builder_visitor.dart (right): https://codereview.chromium.org/862703002/diff/220001/pkg/compiler/lib/src/cps_ir/cps_ir_builder_visitor.dart#newcode1117 pkg/compiler/lib/src/cps_ir/cps_ir_builder_visitor.dart:1117: ClosureClassMap closureMap; Add a small comment what ...
5 years, 11 months ago (2015-01-22 10:36:01 UTC) #11
asgerf
Thanks for the very thorough reviews! https://codereview.chromium.org/862703002/diff/220001/pkg/compiler/lib/src/cps_ir/cps_ir_builder_visitor.dart File pkg/compiler/lib/src/cps_ir/cps_ir_builder_visitor.dart (right): https://codereview.chromium.org/862703002/diff/220001/pkg/compiler/lib/src/cps_ir/cps_ir_builder_visitor.dart#newcode1117 pkg/compiler/lib/src/cps_ir/cps_ir_builder_visitor.dart:1117: ClosureClassMap closureMap; On ...
5 years, 11 months ago (2015-01-22 10:58:29 UTC) #12
asgerf
5 years, 11 months ago (2015-01-23 10:19:46 UTC) #13
Message was sent while issue was closed.
Committed patchset #13 (id:280001) manually as 43092 (presubmit successful).

Powered by Google App Engine
This is Rietveld 408576698