| 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 23dcd7db16b50e09b4c50ad539513660f00414f2..1661811edccfa9c7ca382c784350b6125a3b9f27 100644
|
| --- a/pkg/compiler/lib/src/js_backend/codegen/codegen.dart
|
| +++ b/pkg/compiler/lib/src/js_backend/codegen/codegen.dart
|
| @@ -216,6 +216,14 @@ class CodeGenerator extends tree_ir.Visitor<dynamic, js.Expression> {
|
| @override
|
| js.Expression visitInvokeMethodDirectly(tree_ir.InvokeMethodDirectly node) {
|
| registry.registerDirectInvocation(node.target.declaration);
|
| + if (node.target is ConstructorBodyElement) {
|
| + // Constructor body cannot be overriden or intercepted, so we can
|
| + // use the short form for this invocation.
|
| + return js.js('#.#(#)',
|
| + [visitExpression(node.receiver),
|
| + glue.instanceMethodName(node.target),
|
| + visitArguments(node.arguments)]);
|
| + }
|
| return js.js('#.#.call(#, #)',
|
| [glue.prototypeAccess(node.target.enclosingClass),
|
| glue.invocationName(node.selector),
|
| @@ -435,9 +443,9 @@ class CodeGenerator extends tree_ir.Visitor<dynamic, js.Expression> {
|
| }
|
|
|
| @override
|
| - js.Expression visitCreateClosureClass(tree_ir.CreateClosureClass node) {
|
| + js.Expression visitCreateInstance(tree_ir.CreateInstance node) {
|
| registry.registerInstantiatedClass(node.classElement);
|
| - return new js.New(glue.closureClassConstructorAccess(node.classElement),
|
| + return new js.New(glue.internalConstructorAccess(node.classElement),
|
| node.arguments.map(visitExpression).toList());
|
| }
|
|
|
|
|