| Index: pkg/compiler/lib/src/ssa/codegen_helpers.dart
 | 
| diff --git a/pkg/compiler/lib/src/ssa/codegen_helpers.dart b/pkg/compiler/lib/src/ssa/codegen_helpers.dart
 | 
| index beb4f42206732fa5e0dfea69edb86cd0a18e049a..254e577a31f6141119a0e9d6f9c1fd77a60370a7 100644
 | 
| --- a/pkg/compiler/lib/src/ssa/codegen_helpers.dart
 | 
| +++ b/pkg/compiler/lib/src/ssa/codegen_helpers.dart
 | 
| @@ -67,8 +67,8 @@ class SsaInstructionSelection extends HBaseVisitor {
 | 
|      if (node.kind == HIs.RAW_CHECK) {
 | 
|        HInstruction interceptor = node.interceptor;
 | 
|        if (interceptor != null) {
 | 
| -        return new HIsViaInterceptor(node.typeExpression, interceptor,
 | 
| -                                     backend.boolType);
 | 
| +        return new HIsViaInterceptor(
 | 
| +            node.typeExpression, interceptor, backend.boolType);
 | 
|        }
 | 
|      }
 | 
|      return node;
 | 
| @@ -87,8 +87,7 @@ class SsaInstructionSelection extends HBaseVisitor {
 | 
|      if (leftType.isNullable && rightType.isNullable) {
 | 
|        if (left.isConstantNull() ||
 | 
|            right.isConstantNull() ||
 | 
| -          (left.isPrimitive(compiler) &&
 | 
| -           leftType == rightType)) {
 | 
| +          (left.isPrimitive(compiler) && leftType == rightType)) {
 | 
|          return '==';
 | 
|        }
 | 
|        return null;
 | 
| @@ -193,14 +192,12 @@ class SsaInstructionSelection extends HBaseVisitor {
 | 
|              return replaceOp(rmw, left);
 | 
|            } else {
 | 
|              HInstruction rmw = new HReadModifyWrite.assignOp(
 | 
| -                setter.element,
 | 
| -                assignOp,
 | 
| -                receiver, right, op.instructionType);
 | 
| +                setter.element, assignOp, receiver, right, op.instructionType);
 | 
|              return replaceOp(rmw, left);
 | 
|            }
 | 
|          } else if (op.usedBy.length == 1 &&
 | 
| -                   right is HConstant &&
 | 
| -                   right.constant.isOne) {
 | 
| +            right is HConstant &&
 | 
| +            right.constant.isOne) {
 | 
|            HInstruction rmw = new HReadModifyWrite.postOp(
 | 
|                setter.element, incrementOp, receiver, op.instructionType);
 | 
|            block.addAfter(left, rmw);
 | 
| @@ -214,14 +211,12 @@ class SsaInstructionSelection extends HBaseVisitor {
 | 
|        return noMatchingRead();
 | 
|      }
 | 
|  
 | 
| -    HInstruction simple(String assignOp,
 | 
| -                        HInstruction left, HInstruction right) {
 | 
| +    HInstruction simple(
 | 
| +        String assignOp, HInstruction left, HInstruction right) {
 | 
|        if (isMatchingRead(left)) {
 | 
|          if (left.usedBy.length == 1) {
 | 
|            HInstruction rmw = new HReadModifyWrite.assignOp(
 | 
| -              setter.element,
 | 
| -              assignOp,
 | 
| -              receiver, right, op.instructionType);
 | 
| +              setter.element, assignOp, receiver, right, op.instructionType);
 | 
|            return replaceOp(rmw, left);
 | 
|          }
 | 
|        }
 | 
| @@ -261,7 +256,6 @@ class SsaInstructionSelection extends HBaseVisitor {
 | 
|   * analysis easier.
 | 
|   */
 | 
|  class SsaTypeKnownRemover extends HBaseVisitor {
 | 
| -
 | 
|    void visitGraph(HGraph graph) {
 | 
|      visitDominatorTree(graph);
 | 
|    }
 | 
| @@ -286,7 +280,6 @@ class SsaTypeKnownRemover extends HBaseVisitor {
 | 
|   * mode.
 | 
|   */
 | 
|  class SsaTrustedCheckRemover extends HBaseVisitor {
 | 
| -
 | 
|    Compiler compiler;
 | 
|    SsaTrustedCheckRemover(this.compiler);
 | 
|  
 | 
| @@ -354,12 +347,12 @@ class SsaInstructionMerger extends HBaseVisitor {
 | 
|      List<HInstruction> inputs = user.inputs;
 | 
|      for (int i = start; i < inputs.length; i++) {
 | 
|        HInstruction input = inputs[i];
 | 
| -      if (!generateAtUseSite.contains(input)
 | 
| -          && !input.isCodeMotionInvariant()
 | 
| -          && input.usedBy.length == 1
 | 
| -          && input is !HPhi
 | 
| -          && input is !HLocalValue
 | 
| -          && !input.isJsStatement()) {
 | 
| +      if (!generateAtUseSite.contains(input) &&
 | 
| +          !input.isCodeMotionInvariant() &&
 | 
| +          input.usedBy.length == 1 &&
 | 
| +          input is! HPhi &&
 | 
| +          input is! HLocalValue &&
 | 
| +          !input.isJsStatement()) {
 | 
|          if (input.isPure()) {
 | 
|            // Only consider a pure input if it is in the same loop.
 | 
|            // Otherwise, we might move GVN'ed instruction back into the
 | 
| @@ -441,8 +434,7 @@ class SsaInstructionMerger extends HBaseVisitor {
 | 
|    }
 | 
|  
 | 
|    void visitTypeConversion(HTypeConversion instruction) {
 | 
| -    if (!instruction.isArgumentTypeCheck
 | 
| -        && !instruction.isReceiverTypeCheck) {
 | 
| +    if (!instruction.isArgumentTypeCheck && !instruction.isReceiverTypeCheck) {
 | 
|        assert(instruction.isCheckedModeCheck || instruction.isCastTypeCheck);
 | 
|        // Checked mode checks and cast checks compile to code that
 | 
|        // only use their input once, so we can safely visit them
 | 
| @@ -462,8 +454,8 @@ class SsaInstructionMerger extends HBaseVisitor {
 | 
|    }
 | 
|  
 | 
|    bool isBlockSinglePredecessor(HBasicBlock block) {
 | 
| -    return block.successors.length == 1
 | 
| -        && block.successors[0].predecessors.length == 1;
 | 
| +    return block.successors.length == 1 &&
 | 
| +        block.successors[0].predecessors.length == 1;
 | 
|    }
 | 
|  
 | 
|    void visitBasicBlock(HBasicBlock block) {
 | 
| @@ -503,8 +495,8 @@ class SsaInstructionMerger extends HBaseVisitor {
 | 
|  
 | 
|      block.last.accept(this);
 | 
|      for (HInstruction instruction = block.last.previous;
 | 
| -         instruction != null;
 | 
| -         instruction = instruction.previous) {
 | 
| +        instruction != null;
 | 
| +        instruction = instruction.previous) {
 | 
|        if (generateAtUseSite.contains(instruction)) {
 | 
|          continue;
 | 
|        }
 | 
| @@ -585,8 +577,8 @@ class SsaInstructionMerger extends HBaseVisitor {
 | 
|        }
 | 
|      }
 | 
|  
 | 
| -    if (block.predecessors.length == 1
 | 
| -        && isBlockSinglePredecessor(block.predecessors[0])) {
 | 
| +    if (block.predecessors.length == 1 &&
 | 
| +        isBlockSinglePredecessor(block.predecessors[0])) {
 | 
|        assert(block.phis.isEmpty);
 | 
|        tryMergingExpressions(block.predecessors[0]);
 | 
|      } else {
 | 
| @@ -630,8 +622,8 @@ class SsaConditionMerger extends HGraphVisitor {
 | 
|      // If [instruction] is not the last instruction of the block
 | 
|      // before the control flow instruction, or the last instruction,
 | 
|      // then we will have to emit a statement for that last instruction.
 | 
| -    if (instruction != block.last
 | 
| -        && !identical(instruction, block.last.previous)) return true;
 | 
| +    if (instruction != block.last &&
 | 
| +        !identical(instruction, block.last.previous)) return true;
 | 
|  
 | 
|      // If one of the instructions in the block until [instruction] is
 | 
|      // not generated at use site, then we will have to emit a
 | 
| @@ -639,8 +631,8 @@ class SsaConditionMerger extends HGraphVisitor {
 | 
|      // TODO(ngeoffray): we could generate a comma separated
 | 
|      // list of expressions.
 | 
|      for (HInstruction temp = block.first;
 | 
| -         !identical(temp, instruction);
 | 
| -         temp = temp.next) {
 | 
| +        !identical(temp, instruction);
 | 
| +        temp = temp.next) {
 | 
|        if (!generateAtUseSite.contains(temp)) return true;
 | 
|      }
 | 
|  
 | 
| @@ -664,7 +656,7 @@ class SsaConditionMerger extends HGraphVisitor {
 | 
|    }
 | 
|  
 | 
|    void visitBasicBlock(HBasicBlock block) {
 | 
| -    if (block.last is !HIf) return;
 | 
| +    if (block.last is! HIf) return;
 | 
|      HIf startIf = block.last;
 | 
|      HBasicBlock end = startIf.joinBlock;
 | 
|  
 | 
| @@ -754,9 +746,9 @@ class SsaConditionMerger extends HGraphVisitor {
 | 
|      // If the operation is only used by the first instruction
 | 
|      // of its block and is safe to be generated at use site, mark it
 | 
|      // so.
 | 
| -    if (phi.usedBy.length == 1
 | 
| -        && phi.usedBy[0] == nextInstruction
 | 
| -        && isSafeToGenerateAtUseSite(phi.usedBy[0], phi)) {
 | 
| +    if (phi.usedBy.length == 1 &&
 | 
| +        phi.usedBy[0] == nextInstruction &&
 | 
| +        isSafeToGenerateAtUseSite(phi.usedBy[0], phi)) {
 | 
|        markAsGenerateAtUseSite(phi);
 | 
|      }
 | 
|  
 | 
| 
 |