| Index: sdk/lib/_internal/compiler/implementation/ssa/builder.dart
|
| ===================================================================
|
| --- sdk/lib/_internal/compiler/implementation/ssa/builder.dart (revision 17124)
|
| +++ sdk/lib/_internal/compiler/implementation/ssa/builder.dart (working copy)
|
| @@ -2900,16 +2900,11 @@
|
| }
|
|
|
| List<HInstruction> inputs = <HInstruction>[];
|
| - Set<ClassElement> interceptedClasses =
|
| - getInterceptedClassesOn(node, selector);
|
| - if (interceptedClasses != null) {
|
| - inputs.add(invokeInterceptor(interceptedClasses, receiver, node));
|
| - }
|
| - inputs.add(receiver);
|
| -
|
| addDynamicSendArgumentsToList(node, inputs);
|
|
|
| - pushWithPosition(new HInvokeDynamicMethod(selector, inputs), node);
|
| + HInvokeDynamicMethod invoke = buildInvokeDynamic(
|
| + node, selector, receiver, inputs);
|
| + pushWithPosition(invoke, node);
|
|
|
| if (isNotEquals) {
|
| HNot not = new HNot(popBoolified());
|
| @@ -3645,12 +3640,14 @@
|
| Set<ClassElement> interceptedClasses =
|
| getInterceptedClassesOn(node, selector);
|
| List<HInstruction> inputs = <HInstruction>[];
|
| - if (interceptedClasses != null) {
|
| + bool isIntercepted = interceptedClasses != null;
|
| + if (isIntercepted) {
|
| + assert(!interceptedClasses.isEmpty);
|
| inputs.add(invokeInterceptor(interceptedClasses, receiver, node));
|
| }
|
| inputs.add(receiver);
|
| inputs.addAll(arguments);
|
| - return new HInvokeDynamicMethod(selector, inputs);
|
| + return new HInvokeDynamicMethod(selector, inputs, isIntercepted);
|
| }
|
|
|
| visitSendSet(SendSet node) {
|
|
|