| Index: sdk/lib/_internal/compiler/implementation/ssa/builder.dart
 | 
| ===================================================================
 | 
| --- sdk/lib/_internal/compiler/implementation/ssa/builder.dart	(revision 15954)
 | 
| +++ sdk/lib/_internal/compiler/implementation/ssa/builder.dart	(working copy)
 | 
| @@ -2696,13 +2696,7 @@
 | 
|  
 | 
|      Operator op = node.selector;
 | 
|      if (const SourceString("[]") == op.source) {
 | 
| -      HStatic target = new HStatic(interceptors.getIndexInterceptor());
 | 
| -      add(target);
 | 
| -      visit(node.receiver);
 | 
| -      HInstruction receiver = pop();
 | 
| -      visit(node.argumentsNode);
 | 
| -      HInstruction index = pop();
 | 
| -      push(new HIndex(target, receiver, index));
 | 
| +      visitDynamicSend(node);
 | 
|      } else if (const SourceString("&&") == op.source ||
 | 
|                 const SourceString("||") == op.source) {
 | 
|        visitLogicalAndOr(node, op);
 | 
| @@ -3551,6 +3545,19 @@
 | 
|      }
 | 
|    }
 | 
|  
 | 
| +  HInvokeDynamicMethod buildInvokeDynamicWithOneArgument(
 | 
| +      Node node, Selector selector, HInstruction receiver, HInstruction arg0) {
 | 
| +    Set<ClassElement> interceptedClasses =
 | 
| +        getInterceptedClassesOn(node, selector);
 | 
| +    List<HInstruction> inputs = <HInstruction>[];
 | 
| +    if (interceptedClasses != null) {
 | 
| +      inputs.add(invokeInterceptor(interceptedClasses, receiver, node));
 | 
| +    }
 | 
| +    inputs.add(receiver);
 | 
| +    inputs.add(arg0);
 | 
| +    return new HInvokeDynamicMethod(selector, inputs);
 | 
| +  }
 | 
| +
 | 
|    visitSendSet(SendSet node) {
 | 
|      Element element = elements[node];
 | 
|      if (!Elements.isUnresolved(element) && element.impliesType()) {
 | 
| @@ -3602,9 +3609,9 @@
 | 
|              index = pop();
 | 
|              value = graph.addConstantInt(1, constantSystem);
 | 
|            }
 | 
| -          HStatic indexMethod = new HStatic(interceptors.getIndexInterceptor());
 | 
| -          add(indexMethod);
 | 
| -          HInstruction left = new HIndex(indexMethod, receiver, index);
 | 
| +
 | 
| +          HInvokeDynamicMethod left = buildInvokeDynamicWithOneArgument(
 | 
| +              node, new Selector.index(), receiver, index);
 | 
|            add(left);
 | 
|            Element opElement = elements[op];
 | 
|            visitBinary(left, op, value);
 | 
| 
 |