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

Unified Diff: pkg/compiler/lib/src/js_backend/codegen/codegen.dart

Issue 764593002: Invoking constructors in js cps (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Address comments Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | tests/compiler/dart2js/js_backend_cps_ir_basic.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/compiler/lib/src/js_backend/codegen/codegen.dart
diff --git a/pkg/compiler/lib/src/js_backend/codegen/codegen.dart b/pkg/compiler/lib/src/js_backend/codegen/codegen.dart
index 1eb0c335da60e8462b3e20fdedee90275718a7ab..67203061c4ba74b5f07c55a903933888fc4232bf 100644
--- a/pkg/compiler/lib/src/js_backend/codegen/codegen.dart
+++ b/pkg/compiler/lib/src/js_backend/codegen/codegen.dart
@@ -162,10 +162,27 @@ class CodeGenerator extends tree_ir.Visitor<dynamic, js.Expression> {
// TODO: implement visitFunctionExpression
}
+ js.Expression compileConstant(ParameterElement parameter) {
+ return buildConstant(glue.getConstantForVariable(parameter).value);
+ }
+
+ js.Expression buildStaticInvoke(Selector selector,
+ Element target,
+ List<tree_ir.Expression> arguments) {
+ registry.registerStaticInvocation(target.declaration);
+
+ js.Expression elementAccess = glue.elementAccess(target);
+ List<js.Expression> compiledArguments =
+ selector.makeArgumentsList(arguments, target.implementation,
+ visitExpression,
+ compileConstant);
+ return new js.Call(elementAccess, compiledArguments);
+ }
+
@override
js.Expression visitInvokeConstructor(tree_ir.InvokeConstructor node) {
- return giveup(node);
- // TODO: implement visitInvokeConstructor
+ if (node.constant != null) return giveup(node);
+ return buildStaticInvoke(node.selector, node.target, node.arguments);
}
@override
@@ -176,20 +193,7 @@ class CodeGenerator extends tree_ir.Visitor<dynamic, js.Expression> {
@override
js.Expression visitInvokeStatic(tree_ir.InvokeStatic node) {
- Element element = node.target;
-
- registry.registerStaticInvocation(element.declaration);
-
- js.Expression compileConstant(ParameterElement parameter) {
- return buildConstant(glue.getConstantForVariable(parameter).value);
- }
-
- js.Expression elementAccess = glue.elementAccess(node.target);
- List<js.Expression> arguments =
- node.selector.makeArgumentsList(node.arguments, element.implementation,
- visitExpression,
- compileConstant);
- return new js.Call(elementAccess, arguments);
+ return buildStaticInvoke(node.selector, node.target, node.arguments);
}
@override
« no previous file with comments | « no previous file | tests/compiler/dart2js/js_backend_cps_ir_basic.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698