| Index: pkg/compiler/lib/src/ssa/codegen.dart
|
| diff --git a/pkg/compiler/lib/src/ssa/codegen.dart b/pkg/compiler/lib/src/ssa/codegen.dart
|
| index 60403c3c56617bff3fd136a2943688f4a4d2a320..612a46547df2408e95075d65ea9d90fb71dc5721 100644
|
| --- a/pkg/compiler/lib/src/ssa/codegen.dart
|
| +++ b/pkg/compiler/lib/src/ssa/codegen.dart
|
| @@ -1472,14 +1472,24 @@ class SsaCodeGenerator implements HVisitor, HBlockInformationVisitor {
|
| }
|
|
|
| void visitInterceptor(HInterceptor node) {
|
| - registry.registerSpecializedGetInterceptor(node.interceptedClasses);
|
| - String name = backend.namer.nameForGetInterceptor(node.interceptedClasses);
|
| - var isolate = new js.VariableUse(
|
| - backend.namer.globalObjectFor(backend.interceptorsLibrary));
|
| - use(node.receiver);
|
| - List<js.Expression> arguments = <js.Expression>[pop()];
|
| - push(js.propertyCall(isolate, name, arguments), node);
|
| - registry.registerUseInterceptor();
|
| + if (node.inputs.length == 1) {
|
| + registry.registerSpecializedGetInterceptor(node.interceptedClasses);
|
| + String name = backend.namer.nameForGetInterceptor(node.interceptedClasses);
|
| + var isolate = new js.VariableUse(
|
| + backend.namer.globalObjectFor(backend.interceptorsLibrary));
|
| + use(node.receiver);
|
| + List<js.Expression> arguments = <js.Expression>[pop()];
|
| + push(js.propertyCall(isolate, name, arguments), node);
|
| + registry.registerUseInterceptor();
|
| + } else {
|
| + assert(node.inputs.length == 2);
|
| + HInstruction receiver = node.receiver;
|
| + use(receiver);
|
| + js.Expression receiverExpression = pop();
|
| + use(node.inputs[1]);
|
| + js.Expression constant = pop();
|
| + push(js.js('# && #', [receiverExpression, constant]));
|
| + }
|
| }
|
|
|
| visitInvokeDynamicMethod(HInvokeDynamicMethod node) {
|
|
|