Version 2.15.0-114.0.dev

Merge commit '63f21ac34c9590247814e3b55ac791426dd85c20' into 'dev'
diff --git a/pkg/compiler/lib/src/ssa/builder_kernel.dart b/pkg/compiler/lib/src/ssa/builder_kernel.dart
index 87d4094..69edbdd 100644
--- a/pkg/compiler/lib/src/ssa/builder_kernel.dart
+++ b/pkg/compiler/lib/src/ssa/builder_kernel.dart
@@ -85,7 +85,7 @@
 
 class KernelSsaGraphBuilder extends ir.Visitor<void> with ir.VisitorVoidMixin {
   /// Holds the resulting SSA graph.
-  final HGraph graph = new HGraph();
+  final HGraph graph = HGraph();
 
   /// True if the builder is processing nodes inside a try statement. This is
   /// important for generating control flow out of a try block like returns or
@@ -176,12 +176,12 @@
         _memberContextNode =
             _elementMap.getMemberContextNode(_initialTargetElement) {
     _enterFrame(targetElement, null);
-    this._loopHandler = new KernelLoopHandler(this);
-    _typeBuilder = new KernelTypeBuilder(this, _elementMap);
+    this._loopHandler = KernelLoopHandler(this);
+    _typeBuilder = KernelTypeBuilder(this, _elementMap);
     graph.element = targetElement;
     graph.sourceInformation =
         _sourceInformationBuilder.buildVariableDeclaration();
-    this.localsHandler = new LocalsHandler(this, targetElement, targetElement,
+    this.localsHandler = LocalsHandler(this, targetElement, targetElement,
         instanceType, _nativeData, _interceptorData);
   }
 
@@ -229,7 +229,7 @@
 
   /// Pushes a boolean checking [expression] against null.
   pushCheckNull(HInstruction expression) {
-    push(new HIdentity(expression, graph.addConstantNull(closedWorld),
+    push(HIdentity(expression, graph.addConstantNull(closedWorld),
         _abstractValueDomain.boolType));
   }
 
@@ -290,7 +290,7 @@
   }
 
   void goto(HBasicBlock from, HBasicBlock to) {
-    from.close(new HGoto(_abstractValueDomain));
+    from.close(HGoto(_abstractValueDomain));
     from.addSuccessor(to);
   }
 
@@ -312,10 +312,10 @@
   }
 
   HLocalValue addParameter(Entity parameter, AbstractValue type,
-      {bool isElided: false}) {
+      {bool isElided = false}) {
     HLocalValue result = isElided
-        ? new HLocalValue(parameter, type)
-        : new HParameterValue(parameter, type);
+        ? HLocalValue(parameter, type)
+        : HParameterValue(parameter, type);
     if (lastAddedParameter == null) {
       graph.entry.addBefore(graph.entry.first, result);
     } else {
@@ -327,23 +327,23 @@
 
   HSubGraphBlockInformation wrapStatementGraph(SubGraph statements) {
     if (statements == null) return null;
-    return new HSubGraphBlockInformation(statements);
+    return HSubGraphBlockInformation(statements);
   }
 
   HSubExpressionBlockInformation wrapExpressionGraph(SubExpression expression) {
     if (expression == null) return null;
-    return new HSubExpressionBlockInformation(expression);
+    return HSubExpressionBlockInformation(expression);
   }
 
   HLiteralList _buildLiteralList(List<HInstruction> inputs) {
-    return new HLiteralList(inputs, _abstractValueDomain.growableListType);
+    return HLiteralList(inputs, _abstractValueDomain.growableListType);
   }
 
   /// Called when control flow is about to change, in which case we need to
   /// specify special successors if we are already in a try/catch/finally block.
   void _handleInTryStatement() {
     if (!_inTryStatement) return;
-    HBasicBlock block = close(new HExitTry(_abstractValueDomain));
+    HBasicBlock block = close(HExitTry(_abstractValueDomain));
     HBasicBlock newBlock = graph.addNewBlock();
     block.addSuccessor(newBlock);
     open(newBlock);
@@ -381,7 +381,7 @@
     // TODO(johnniwinther): Substitute the type by the this type and type
     // arguments of the current frame.
     ir.DartType type = _currentFrame.staticTypeProvider.getStaticType(node);
-    return new StaticType(
+    return StaticType(
         _elementMap.getDartType(type), computeClassRelationFromType(type));
   }
 
@@ -390,7 +390,7 @@
     // arguments of the current frame.
     ir.DartType type =
         _currentFrame.staticTypeProvider.getForInIteratorType(node);
-    return new StaticType(
+    return StaticType(
         _elementMap.getDartType(type), computeClassRelationFromType(type));
   }
 
@@ -406,13 +406,13 @@
     if (function != null) {
       asyncMarker = getAsyncMarker(function);
     }
-    _currentFrame = new StackFrame(
+    _currentFrame = StackFrame(
         _currentFrame,
         member,
         asyncMarker,
         _globalLocalsMap.getLocalsMap(member),
         {},
-        new KernelToTypeInferenceMapImpl(member, globalInferenceResults),
+        KernelToTypeInferenceMapImpl(member, globalInferenceResults),
         _currentFrame != null
             ? _currentFrame.sourceInformationBuilder
                 .forContext(member, callSourceInformation)
@@ -449,7 +449,7 @@
 
             if (fieldData.initialValue != null) {
               registry.registerConstantUse(
-                  new ConstantUse.init(fieldData.initialValue));
+                  ConstantUse.init(fieldData.initialValue));
               if (targetElement.isStatic || targetElement.isTopLevel) {
                 /// No code is created for this field: All references inline the
                 /// constant value.
@@ -458,10 +458,10 @@
             } else if (fieldData.isLazy) {
               // The generated initializer needs be wrapped in the cyclic-error
               // helper.
-              registry.registerStaticUse(new StaticUse.staticInvoke(
+              registry.registerStaticUse(StaticUse.staticInvoke(
                   closedWorld.commonElements.cyclicThrowHelper,
                   CallStructure.ONE_ARG));
-              registry.registerStaticUse(new StaticUse.staticInvoke(
+              registry.registerStaticUse(StaticUse.staticInvoke(
                   closedWorld.commonElements.throwLateFieldADI,
                   CallStructure.ONE_ARG));
             }
@@ -565,7 +565,7 @@
           constantValue != null,
           failedAt(_elementMap.getMethod(function.parent),
               'No constant computed for $node'));
-      registry?.registerConstantUse(new ConstantUse.init(constantValue));
+      registry?.registerConstantUse(ConstantUse.init(constantValue));
     }
 
     function.positionalParameters
@@ -782,7 +782,7 @@
 
     _addImplicitInstantiation(thisType);
     List<DartType> instantiatedTypes =
-        new List<InterfaceType>.from(_currentImplicitInstantiations);
+        List<InterfaceType>.from(_currentImplicitInstantiations);
 
     HInstruction newObject;
     if (isCustomElement) {
@@ -810,7 +810,7 @@
             sourceInformation: sourceInformation);
         constructorArguments.add(typeArgument);
       }
-      newObject = new HCreate(cls, constructorArguments,
+      newObject = HCreate(cls, constructorArguments,
           _abstractValueDomain.createNonNullExact(cls), sourceInformation,
           instantiatedTypes: instantiatedTypes,
           hasRtiInput: needsTypeArguments);
@@ -827,7 +827,7 @@
       List<HInstruction> bodyCallInputs = <HInstruction>[];
       if (isCustomElement) {
         if (interceptor == null) {
-          ConstantValue constant = new InterceptorConstantValue(cls);
+          ConstantValue constant = InterceptorConstantValue(cls);
           interceptor = graph.addConstant(constant, closedWorld);
         }
         bodyCallInputs.add(interceptor);
@@ -894,7 +894,7 @@
 
     if (_inliningStack.isEmpty) {
       _closeAndGotoExit(
-          new HReturn(_abstractValueDomain, newObject, sourceInformation));
+          HReturn(_abstractValueDomain, newObject, sourceInformation));
       _closeFunction();
     } else {
       localsHandler.updateLocal(_returnLocal, newObject,
@@ -911,7 +911,7 @@
   void _invokeConstructorBody(ir.Constructor constructor,
       List<HInstruction> inputs, SourceInformation sourceInformation) {
     MemberEntity constructorBody = _elementMap.getConstructorBody(constructor);
-    HInvokeConstructorBody invoke = new HInvokeConstructorBody(constructorBody,
+    HInvokeConstructorBody invoke = HInvokeConstructorBody(constructorBody,
         inputs, _abstractValueDomain.nonNullType, sourceInformation);
     add(invoke);
   }
@@ -1247,7 +1247,7 @@
               .isDefinitelyTrue);
       if (emptyParameters.length > 0) {
         _addComment('${emptyParameters} inferred as [empty]');
-        add(new HInvokeStatic(
+        add(HInvokeStatic(
             _commonElements.assertUnreachableMethod,
             <HInstruction>[],
             _abstractValueDomain.dynamicType,
@@ -1266,7 +1266,7 @@
   /// having side effects which will inhibit code motion.
   // TODO(sra): Figure out how to keep comment anchored without effects.
   void _addComment(String text) {
-    add(new HForeignCode(js.js.statementTemplateYielding(new js.Comment(text)),
+    add(HForeignCode(js.js.statementTemplateYielding(js.Comment(text)),
         _abstractValueDomain.dynamicType, <HInstruction>[],
         isStatement: true));
   }
@@ -1331,7 +1331,7 @@
     }
 
     JGeneratorBody body = _elementMap.getGeneratorBody(function);
-    push(new HInvokeGeneratorBody(
+    push(HInvokeGeneratorBody(
         body,
         inputs,
         _abstractValueDomain.dynamicType, // TODO: better type.
@@ -1424,7 +1424,7 @@
     }
 
     function.positionalParameters.forEach(_handleParameter);
-    function.namedParameters.toList()..forEach(_handleParameter);
+    function.namedParameters.toList().forEach(_handleParameter);
   }
 
   void _checkTypeVariableBounds(FunctionEntity method) {
@@ -1433,8 +1433,8 @@
       ir.FunctionNode function = getFunctionNode(_elementMap, method);
       for (ir.TypeParameter typeParameter in function.typeParameters) {
         Local local = _localsMap.getLocalTypeVariableEntity(_elementMap
-            .getTypeVariableType(new ir.TypeParameterType(
-                typeParameter, ir.Nullability.nonNullable))
+            .getTypeVariableType(
+                ir.TypeParameterType(typeParameter, ir.Nullability.nonNullable))
             .element);
         HInstruction newParameter = localsHandler.directLocals[local];
         DartType bound = _getDartTypeIfValid(typeParameter.bound);
@@ -1611,7 +1611,7 @@
 
     Map<Local, AbstractValue> parameterMap = {};
     List<ir.VariableDeclaration> elidedParameters = [];
-    Set<Local> elidedParameterSet = new Set();
+    Set<Local> elidedParameterSet = Set();
     if (functionNode != null) {
       assert(parameterStructure != null);
 
@@ -1638,7 +1638,7 @@
     // but cannot receive constants before it has been closed. By closing it
     // here, we can use constants in the code that sets up the function.
     open(graph.entry);
-    close(new HGoto(_abstractValueDomain)).addSuccessor(block);
+    close(HGoto(_abstractValueDomain)).addSuccessor(block);
     open(block);
 
     localsHandler.startFunction(targetElement, parameterMap, elidedParameterSet,
@@ -1664,7 +1664,7 @@
         _handleIf(
             visitCondition: () {
               HParameterValue parameter = parameters.values.first;
-              push(new HIdentity(parameter, graph.addConstantNull(closedWorld),
+              push(HIdentity(parameter, graph.addConstantNull(closedWorld),
                   _abstractValueDomain.boolType));
             },
             visitThen: () {
@@ -1685,13 +1685,13 @@
   }
 
   void _closeFunction() {
-    if (!isAborted()) _closeAndGotoExit(new HGoto(_abstractValueDomain));
+    if (!isAborted()) _closeAndGotoExit(HGoto(_abstractValueDomain));
     graph.finalize(_abstractValueDomain);
   }
 
   @override
   void defaultNode(ir.Node node) {
-    throw new UnsupportedError("Unhandled node $node (${node.runtimeType})");
+    throw UnsupportedError("Unhandled node $node (${node.runtimeType})");
   }
 
   /// Returns the current source element. This is used by the type builder.
@@ -1721,7 +1721,7 @@
         _elementMap.getSpannable(targetElement, loadLibrary),
         _elementMap.getImport(loadLibrary.import));
     // TODO(efortuna): Source information!
-    push(new HInvokeStatic(
+    push(HInvokeStatic(
         _commonElements.loadDeferredLibrary,
         <HInstruction>[graph.addConstantString(loadId, closedWorld)],
         _abstractValueDomain.nonNullType,
@@ -1769,8 +1769,7 @@
       _handleInTryStatement();
       SourceInformation sourceInformation =
           _sourceInformationBuilder.buildThrow(node.expression);
-      _closeAndGotoExit(
-          new HThrow(_abstractValueDomain, pop(), sourceInformation));
+      _closeAndGotoExit(HThrow(_abstractValueDomain, pop(), sourceInformation));
     } else {
       expression.accept(this);
       pop();
@@ -1788,8 +1787,8 @@
       OutputUnit outputUnit =
           closedWorld.outputUnitData.outputUnitForConstant(value);
       ConstantValue deferredConstant =
-          new DeferredGlobalConstantValue(value, outputUnit);
-      registry.registerConstantUse(new ConstantUse.deferred(deferredConstant));
+          DeferredGlobalConstantValue(value, outputUnit);
+      registry.registerConstantUse(ConstantUse.deferred(deferredConstant));
       stack.add(graph.addDeferredConstant(
           deferredConstant, sourceInformation, closedWorld));
     } else {
@@ -1913,7 +1912,7 @@
     HInstruction originalLength = null; // Set for growable lists.
 
     HInstruction buildGetLength(SourceInformation sourceInformation) {
-      HGetLength result = new HGetLength(
+      HGetLength result = HGetLength(
           array, _abstractValueDomain.positiveIntType,
           isAssignable: !isFixed)
         ..sourceInformation = sourceInformation;
@@ -1931,7 +1930,7 @@
       SourceInformation sourceInformation =
           _sourceInformationBuilder.buildForInMoveNext(node);
       HInstruction length = buildGetLength(sourceInformation);
-      push(new HIdentity(length, originalLength, _abstractValueDomain.boolType)
+      push(HIdentity(length, originalLength, _abstractValueDomain.boolType)
         ..sourceInformation = sourceInformation);
       _pushStaticInvocation(
           _commonElements.checkConcurrentModificationError,
@@ -1964,9 +1963,8 @@
       HInstruction index = localsHandler.readLocal(indexVariable,
           sourceInformation: sourceInformation);
       HInstruction length = buildGetLength(sourceInformation);
-      HInstruction compare =
-          new HLess(index, length, _abstractValueDomain.boolType)
-            ..sourceInformation = sourceInformation;
+      HInstruction compare = HLess(index, length, _abstractValueDomain.boolType)
+        ..sourceInformation = sourceInformation;
       add(compare);
       return compare;
     }
@@ -1990,7 +1988,7 @@
           sourceInformation: sourceInformation);
       // No bound check is necessary on indexer as it is immediately guarded by
       // the condition.
-      HInstruction value = new HIndex(array, index, type)
+      HInstruction value = HIndex(array, index, type)
         ..sourceInformation = sourceInformation;
       add(value);
 
@@ -2019,7 +2017,7 @@
           sourceInformation: sourceInformation);
       HInstruction one = graph.addConstantInt(1, closedWorld);
       HInstruction addInstruction =
-          new HAdd(index, one, _abstractValueDomain.positiveIntType)
+          HAdd(index, one, _abstractValueDomain.positiveIntType)
             ..sourceInformation = sourceInformation;
       add(addInstruction);
       localsHandler.updateLocal(indexVariable, addInstruction,
@@ -2122,7 +2120,7 @@
         localsHandler.substInContext(dartTypes.interfaceType(cls, [typeArg]));
     // TODO(johnniwinther): This should be the exact type.
     StaticType staticInstanceType =
-        new StaticType(instanceType, ClassRelation.subtype);
+        StaticType(instanceType, ClassRelation.subtype);
     _addImplicitInstantiation(instanceType);
     SourceInformation sourceInformation =
         _sourceInformationBuilder.buildForInIterator(node);
@@ -2152,7 +2150,7 @@
           const <DartType>[],
           _sourceInformationBuilder.buildForInMoveNext(node));
       HInstruction future = pop();
-      push(new HAwait(future, _abstractValueDomain.dynamicType));
+      push(HAwait(future, _abstractValueDomain.dynamicType));
       return popBoolified();
     }
 
@@ -2175,8 +2173,8 @@
     void buildUpdate() {}
 
     // Creates a synthetic try/finally block in case anything async goes amiss.
-    TryCatchFinallyBuilder tryBuilder = new TryCatchFinallyBuilder(
-        this, _sourceInformationBuilder.buildLoop(node));
+    TryCatchFinallyBuilder tryBuilder =
+        TryCatchFinallyBuilder(this, _sourceInformationBuilder.buildLoop(node));
     // Build fake try body:
     _loopHandler.handleLoop(
         node,
@@ -2199,7 +2197,7 @@
           _sourceInformationBuilder
               // ignore:deprecated_member_use_from_same_package
               .buildGeneric(node));
-      add(new HAwait(pop(), _abstractValueDomain.dynamicType));
+      add(HAwait(pop(), _abstractValueDomain.dynamicType));
     }
 
     tryBuilder
@@ -2256,7 +2254,7 @@
         _sourceInformationBuilder.buildLoop(node);
     // TODO(efortuna): I think this can be rewritten using
     // LoopHandler.handleLoop with some tricks about when the "update" happens.
-    LocalsHandler savedLocals = new LocalsHandler.from(localsHandler);
+    LocalsHandler savedLocals = LocalsHandler.from(localsHandler);
     CapturedLoopScope loopClosureInfo =
         _closureDataLookup.getCapturedLoopScope(node);
     localsHandler.startLoop(loopClosureInfo, sourceInformation);
@@ -2284,7 +2282,7 @@
     HBasicBlock bodyExitBlock;
     bool isAbortingBody = false;
     if (current != null) {
-      bodyExitBlock = close(new HGoto(_abstractValueDomain));
+      bodyExitBlock = close(HGoto(_abstractValueDomain));
     } else {
       isAbortingBody = true;
       bodyExitBlock = lastOpenedBlock;
@@ -2310,16 +2308,15 @@
         if (!isAbortingBody) continueHandlers.add(localsHandler);
         localsHandler =
             savedLocals.mergeMultiple(continueHandlers, conditionBlock);
-        SubGraph bodyGraph = new SubGraph(bodyEntryBlock, bodyExitBlock);
+        SubGraph bodyGraph = SubGraph(bodyEntryBlock, bodyExitBlock);
         List<LabelDefinition> labels = jumpHandler.labels;
         HSubGraphBlockInformation bodyInfo =
-            new HSubGraphBlockInformation(bodyGraph);
+            HSubGraphBlockInformation(bodyGraph);
         HLabeledBlockInformation info;
         if (!labels.isEmpty) {
-          info =
-              new HLabeledBlockInformation(bodyInfo, labels, isContinue: true);
+          info = HLabeledBlockInformation(bodyInfo, labels, isContinue: true);
         } else {
-          info = new HLabeledBlockInformation.implicit(bodyInfo, target,
+          info = HLabeledBlockInformation.implicit(bodyInfo, target,
               isContinue: true);
         }
         bodyEntryBlock.setBlockFlow(info, conditionBlock);
@@ -2329,32 +2326,29 @@
       node.condition.accept(this);
       assert(!isAborted());
       HInstruction conditionInstruction = popBoolified();
-      HBasicBlock conditionEndBlock = close(new HLoopBranch(
-          _abstractValueDomain,
-          conditionInstruction,
-          HLoopBranch.DO_WHILE_LOOP));
+      HBasicBlock conditionEndBlock = close(HLoopBranch(_abstractValueDomain,
+          conditionInstruction, HLoopBranch.DO_WHILE_LOOP));
 
       HBasicBlock avoidCriticalEdge = addNewBlock();
       conditionEndBlock.addSuccessor(avoidCriticalEdge);
       open(avoidCriticalEdge);
-      close(new HGoto(_abstractValueDomain));
+      close(HGoto(_abstractValueDomain));
       avoidCriticalEdge.addSuccessor(loopEntryBlock); // The back-edge.
 
-      conditionExpression =
-          new SubExpression(conditionBlock, conditionEndBlock);
+      conditionExpression = SubExpression(conditionBlock, conditionEndBlock);
 
       // Avoid a critical edge from the condition to the loop-exit body.
       HBasicBlock conditionExitBlock = addNewBlock();
       open(conditionExitBlock);
-      close(new HGoto(_abstractValueDomain));
+      close(HGoto(_abstractValueDomain));
       conditionEndBlock.addSuccessor(conditionExitBlock);
 
       _loopHandler.endLoop(
           loopEntryBlock, conditionExitBlock, jumpHandler, localsHandler);
 
       loopEntryBlock.postProcessLoopHeader();
-      SubGraph bodyGraph = new SubGraph(loopEntryBlock, bodyExitBlock);
-      HLoopBlockInformation loopBlockInfo = new HLoopBlockInformation(
+      SubGraph bodyGraph = SubGraph(loopEntryBlock, bodyExitBlock);
+      HLoopBlockInformation loopBlockInfo = HLoopBlockInformation(
           HLoopBlockInformation.DO_WHILE_LOOP,
           null,
           wrapExpressionGraph(conditionExpression),
@@ -2377,16 +2371,16 @@
 
         // Since the body of the loop has a break, we attach a synthesized label
         // to the body.
-        SubGraph bodyGraph = new SubGraph(bodyEntryBlock, bodyExitBlock);
+        SubGraph bodyGraph = SubGraph(bodyEntryBlock, bodyExitBlock);
         JumpTarget target = _localsMap.getJumpTargetForDo(node);
         LabelDefinition label = target.addLabel('loop', isBreakTarget: true);
-        HLabeledBlockInformation info = new HLabeledBlockInformation(
-            new HSubGraphBlockInformation(bodyGraph), <LabelDefinition>[label]);
+        HLabeledBlockInformation info = HLabeledBlockInformation(
+            HSubGraphBlockInformation(bodyGraph), <LabelDefinition>[label]);
         loopEntryBlock.setBlockFlow(info, current);
         jumpHandler.forEachBreak((HBreak breakInstruction, _) {
           HBasicBlock block = breakInstruction.block;
-          block.addAtExit(new HBreak.toLabel(
-              _abstractValueDomain, label, sourceInformation));
+          block.addAtExit(
+              HBreak.toLabel(_abstractValueDomain, label, sourceInformation));
           block.remove(breakInstruction);
         });
       }
@@ -2409,7 +2403,7 @@
       void visitThen(),
       void visitElse(),
       SourceInformation sourceInformation}) {
-    SsaBranchBuilder branchBuilder = new SsaBranchBuilder(this,
+    SsaBranchBuilder branchBuilder = SsaBranchBuilder(this,
         node == null ? null : _elementMap.getSpannable(targetElement, node));
     branchBuilder.handleIf(visitCondition, visitThen, visitElse,
         sourceInformation: sourceInformation);
@@ -2545,16 +2539,16 @@
   /// to distinguish the synthesized loop created for a switch statement with
   /// continue statements from simple switch statements.
   JumpHandler createJumpHandler(ir.TreeNode node, JumpTarget target,
-      {bool isLoopJump: false}) {
+      {bool isLoopJump = false}) {
     if (target == null) {
       // No breaks or continues to this node.
-      return new NullJumpHandler(reporter);
+      return NullJumpHandler(reporter);
     }
     if (isLoopJump && node is ir.SwitchStatement) {
-      return new KernelSwitchCaseJumpHandler(this, target, node, _localsMap);
+      return KernelSwitchCaseJumpHandler(this, target, node, _localsMap);
     }
 
-    return new JumpHandler(this, target);
+    return JumpHandler(this, target);
   }
 
   @override
@@ -2599,11 +2593,11 @@
 
     JumpHandler handler = createJumpHandler(node, jumpTarget);
 
-    LocalsHandler beforeLocals = new LocalsHandler.from(localsHandler);
+    LocalsHandler beforeLocals = LocalsHandler.from(localsHandler);
 
     HBasicBlock newBlock = openNewBlock();
     body.accept(this);
-    SubGraph bodyGraph = new SubGraph(newBlock, lastOpenedBlock);
+    SubGraph bodyGraph = SubGraph(newBlock, lastOpenedBlock);
 
     HBasicBlock joinBlock = graph.addNewBlock();
     List<LocalsHandler> breakHandlers = <LocalsHandler>[];
@@ -2622,8 +2616,8 @@
 
     // There was at least one reachable break, so the label is needed.
     newBlock.setBlockFlow(
-        new HLabeledBlockInformation(
-            new HSubGraphBlockInformation(bodyGraph), handler.labels),
+        HLabeledBlockInformation(
+            HSubGraphBlockInformation(bodyGraph), handler.labels),
         joinBlock);
     handler.close();
   }
@@ -2633,7 +2627,7 @@
   Map<ir.Expression, ConstantValue> _buildSwitchCaseConstants(
       ir.SwitchStatement switchStatement) {
     Map<ir.Expression, ConstantValue> constants =
-        new Map<ir.Expression, ConstantValue>();
+        Map<ir.Expression, ConstantValue>();
     for (ir.SwitchCase switchCase in switchStatement.cases) {
       for (ir.Expression caseExpression in switchCase.expressions) {
         ConstantValue constant =
@@ -2663,7 +2657,7 @@
     // The switch case indices must match those computed in
     // [KernelSwitchCaseJumpHandler].
     bool hasContinue = false;
-    Map<ir.SwitchCase, int> caseIndex = new Map<ir.SwitchCase, int>();
+    Map<ir.SwitchCase, int> caseIndex = Map<ir.SwitchCase, int>();
     int switchIndex = 1;
     bool hasDefault = false;
     for (ir.SwitchCase switchCase in node.cases) {
@@ -2782,7 +2776,7 @@
       // Use null as the marker for a synthetic default clause.
       // The synthetic default is added because otherwise there would be no
       // good place to give a default value to the local.
-      switchCases = new List<ir.SwitchCase>.from(switchCases);
+      switchCases = List<ir.SwitchCase>.from(switchCases);
       switchCases.add(null);
     }
 
@@ -2843,7 +2837,7 @@
       // in the call to [handleLoop] below.
       _handleSwitch(
           switchStatement, // nor is buildExpression.
-          new NullJumpHandler(reporter),
+          NullJumpHandler(reporter),
           buildExpression,
           switchStatement.cases,
           getConstants,
@@ -2873,7 +2867,7 @@
       // null, so we don't drop into the while loop.
       void buildCondition() {
         js.Template code = js.js.parseForeignJS('#');
-        push(new HForeignCode(code, _abstractValueDomain.boolType,
+        push(HForeignCode(code, _abstractValueDomain.boolType,
             [localsHandler.readLocal(switchTarget)],
             nativeBehavior: NativeBehavior.PURE));
       }
@@ -2909,7 +2903,7 @@
     }
 
     HSwitch switchInstruction =
-        new HSwitch(_abstractValueDomain, <HInstruction>[expression]);
+        HSwitch(_abstractValueDomain, <HInstruction>[expression]);
     HBasicBlock expressionEnd = close(switchInstruction);
     LocalsHandler savedLocals = localsHandler;
 
@@ -2932,7 +2926,7 @@
         hasDefault = true;
       }
       open(block);
-      localsHandler = new LocalsHandler.from(savedLocals);
+      localsHandler = LocalsHandler.from(savedLocals);
       buildSwitchCase(switchCase);
       if (!isAborted() &&
           // TODO(johnniwinther): Reinsert this if `isReachable` is no longer
@@ -2945,8 +2939,8 @@
         // sure the last case does not fall through to the default case.
         jumpHandler.generateBreak(sourceInformation);
       }
-      statements.add(
-          new HSubGraphBlockInformation(new SubGraph(block, lastOpenedBlock)));
+      statements
+          .add(HSubGraphBlockInformation(SubGraph(block, lastOpenedBlock)));
     }
 
     // Add a join-block if necessary.
@@ -2956,7 +2950,7 @@
     // to create the phis in [joinBlock].
     // If we never jump to the join block, [caseHandlers] will stay empty, and
     // the join block is never added to the graph.
-    HBasicBlock joinBlock = new HBasicBlock();
+    HBasicBlock joinBlock = HBasicBlock();
     List<LocalsHandler> caseHandlers = <LocalsHandler>[];
     jumpHandler.forEachBreak((HBreak instruction, LocalsHandler locals) {
       instruction.block.addSuccessor(joinBlock);
@@ -2969,7 +2963,7 @@
               'Continue cannot target a switch.'));
     });
     if (!isAborted()) {
-      current.close(new HGoto(_abstractValueDomain));
+      current.close(HGoto(_abstractValueDomain));
       lastOpenedBlock.addSuccessor(joinBlock);
       caseHandlers.add(localsHandler);
     }
@@ -2979,11 +2973,11 @@
       HBasicBlock defaultCase = addNewBlock();
       expressionEnd.addSuccessor(defaultCase);
       open(defaultCase);
-      close(new HGoto(_abstractValueDomain));
+      close(HGoto(_abstractValueDomain));
       defaultCase.addSuccessor(joinBlock);
       caseHandlers.add(savedLocals);
-      statements.add(new HSubGraphBlockInformation(
-          new SubGraph(defaultCase, defaultCase)));
+      statements
+          .add(HSubGraphBlockInformation(SubGraph(defaultCase, defaultCase)));
     }
     assert(caseHandlers.length == joinBlock.predecessors.length);
     if (caseHandlers.isNotEmpty) {
@@ -3000,11 +2994,11 @@
     }
 
     HSubExpressionBlockInformation expressionInfo =
-        new HSubExpressionBlockInformation(
-            new SubExpression(expressionStart, expressionEnd));
+        HSubExpressionBlockInformation(
+            SubExpression(expressionStart, expressionEnd));
     expressionStart.setBlockFlow(
-        new HSwitchBlockInformation(expressionInfo, statements,
-            jumpHandler.target, jumpHandler.labels, sourceInformation),
+        HSwitchBlockInformation(expressionInfo, statements, jumpHandler.target,
+            jumpHandler.labels, sourceInformation),
         joinBlock);
 
     jumpHandler.close();
@@ -3012,14 +3006,14 @@
 
   @override
   void visitConditionalExpression(ir.ConditionalExpression node) {
-    SsaBranchBuilder brancher = new SsaBranchBuilder(this);
+    SsaBranchBuilder brancher = SsaBranchBuilder(this);
     brancher.handleConditional(() => node.condition.accept(this),
         () => node.then.accept(this), () => node.otherwise.accept(this));
   }
 
   @override
   void visitLogicalExpression(ir.LogicalExpression node) {
-    SsaBranchBuilder brancher = new SsaBranchBuilder(this);
+    SsaBranchBuilder brancher = SsaBranchBuilder(this);
     _handleLogicalExpression(node.left, () => node.right.accept(this), brancher,
         node.operatorEnum, _sourceInformationBuilder.buildBinary(node));
   }
@@ -3348,7 +3342,7 @@
       FieldEntity field = _elementMap.getField(staticTarget);
       FieldAnalysisData fieldData = _fieldAnalysis.getFieldData(field);
       if (fieldData.isEager) {
-        push(new HStatic(field, _typeInferenceMap.getInferredTypeOf(field),
+        push(HStatic(field, _typeInferenceMap.getInferredTypeOf(field),
             sourceInformation));
       } else if (fieldData.isEffectivelyConstant) {
         OutputUnit outputUnit =
@@ -3359,10 +3353,9 @@
         // unit, the old FE would still generate a deferred wrapper here.
         if (!closedWorld.outputUnitData
             .hasOnlyNonDeferredImportPaths(targetElement, field)) {
-          ConstantValue deferredConstant = new DeferredGlobalConstantValue(
-              fieldData.initialValue, outputUnit);
-          registry
-              .registerConstantUse(new ConstantUse.deferred(deferredConstant));
+          ConstantValue deferredConstant =
+              DeferredGlobalConstantValue(fieldData.initialValue, outputUnit);
+          registry.registerConstantUse(ConstantUse.deferred(deferredConstant));
           stack.add(graph.addDeferredConstant(
               deferredConstant, sourceInformation, closedWorld));
         } else {
@@ -3372,7 +3365,7 @@
       } else {
         assert(
             fieldData.isLazy, "Unexpected field data for $field: $fieldData");
-        push(new HLazyStatic(field, _typeInferenceMap.getInferredTypeOf(field),
+        push(HLazyStatic(field, _typeInferenceMap.getInferredTypeOf(field),
             sourceInformation));
       }
     } else {
@@ -3380,7 +3373,7 @@
       // created a constant value instead. Remove this case when we use CFE
       // constants.
       FunctionEntity member = _elementMap.getMember(staticTarget);
-      push(new HStatic(member, _typeInferenceMap.getInferredTypeOf(member),
+      push(HStatic(member, _typeInferenceMap.getInferredTypeOf(member),
           sourceInformation));
     }
   }
@@ -3394,7 +3387,7 @@
     SourceInformation sourceInformation =
         _sourceInformationBuilder.buildGet(node);
     FunctionEntity member = _elementMap.getMember(staticTarget);
-    push(new HStatic(member, _typeInferenceMap.getInferredTypeOf(member),
+    push(HStatic(member, _typeInferenceMap.getInferredTypeOf(member),
         sourceInformation));
   }
 
@@ -3414,7 +3407,7 @@
     } else {
       MemberEntity target = _elementMap.getMember(staticTarget);
       if (!_fieldAnalysis.getFieldData(target).isElided) {
-        add(new HStaticStore(
+        add(HStaticStore(
             _abstractValueDomain,
             target,
             _typeBuilder.potentiallyCheckOrTrustTypeOfAssignment(
@@ -3432,7 +3425,7 @@
         node,
         _getStaticType(receiver),
         _typeInferenceMap.receiverTypeOfGet(node),
-        new Selector.getter(_elementMap.getName(name)),
+        Selector.getter(_elementMap.getName(name)),
         <HInstruction>[receiverInstruction],
         const <DartType>[],
         _sourceInformationBuilder.buildGet(node));
@@ -3483,7 +3476,7 @@
         node,
         _getStaticType(receiver),
         _typeInferenceMap.receiverTypeOfSet(node, _abstractValueDomain),
-        new Selector.setter(_elementMap.getName(name)),
+        Selector.setter(_elementMap.getName(name)),
         <HInstruction>[receiverInstruction, valueInstruction],
         const <DartType>[],
         _sourceInformationBuilder.buildAssignment(node));
@@ -4015,7 +4008,7 @@
             "Expected 1-2 argument, actual: $arguments."));
     HInstruction lengthInput = arguments.first;
     if (lengthInput.isNumber(_abstractValueDomain).isPotentiallyFalse) {
-      HPrimitiveCheck conversion = new HPrimitiveCheck(
+      HPrimitiveCheck conversion = HPrimitiveCheck(
           _commonElements.numType,
           HPrimitiveCheck.ARGUMENT_TYPE_CHECK,
           _abstractValueDomain.numType,
@@ -4025,7 +4018,7 @@
       lengthInput = conversion;
     }
     js.Template code = js.js.parseForeignJS('new Array(#)');
-    var behavior = new NativeBehavior();
+    var behavior = NativeBehavior();
 
     DartType expectedType = _getStaticType(invocation).type;
     behavior.typesInstantiated.add(expectedType);
@@ -4043,7 +4036,7 @@
     var resultType = globalInferenceResults.typeOfNewList(invocation) ??
         _abstractValueDomain.fixedListType;
 
-    HForeignCode foreign = new HForeignCode(
+    HForeignCode foreign = HForeignCode(
         code, resultType, <HInstruction>[lengthInput],
         nativeBehavior: behavior,
         throwBehavior:
@@ -4057,7 +4050,7 @@
       js.Template code = js.js.parseForeignJS(r'#.fixed$length = Array');
       // We set the instruction as [canThrow] to avoid it being dead code.
       // We need a finer grained side effect.
-      add(new HForeignCode(code, _abstractValueDomain.nullType, [stack.last],
+      add(HForeignCode(code, _abstractValueDomain.nullType, [stack.last],
           throwBehavior: NativeThrowBehavior.MAY));
     }
 
@@ -4127,7 +4120,7 @@
       TypeVariableType variable = _typeVariable;
       typeArguments.add(variable);
       TypeRecipe recipe = TypeExpressionRecipe(variable);
-      HInstruction typeEval = new HTypeEval(
+      HInstruction typeEval = HTypeEval(
           instanceType, envStructure, recipe, _abstractValueDomain.dynamicType);
       add(typeEval);
       inputs.add(typeEval);
@@ -4137,14 +4130,14 @@
     // function of N type arguments.
 
     Selector selector =
-        new Selector.callClosure(0, const <String>[], typeArguments.length);
+        Selector.callClosure(0, const <String>[], typeArguments.length);
     StaticType receiverStaticType =
         _getStaticType(invocation.arguments.positional[1]);
     AbstractValue receiverType = _abstractValueDomain
         .createFromStaticType(receiverStaticType.type,
             classRelation: receiverStaticType.relation, nullable: true)
         .abstractValue;
-    push(new HInvokeClosure(selector, receiverType, inputs,
+    push(HInvokeClosure(selector, receiverType, inputs,
         _abstractValueDomain.dynamicType, typeArguments));
 
     return true;
@@ -4245,20 +4238,20 @@
     Map<String, ir.Expression> namedArguments = {};
     int kind = _readIntLiteral(invocation.arguments.positional[4]);
 
-    Name memberName = new Name(name, _currentFrame.member.library);
+    Name memberName = Name(name, _currentFrame.member.library);
     Selector selector;
     switch (kind) {
       case invocationMirrorGetterKind:
-        selector = new Selector.getter(memberName);
+        selector = Selector.getter(memberName);
         break;
       case invocationMirrorSetterKind:
-        selector = new Selector.setter(memberName);
+        selector = Selector.setter(memberName);
         break;
       case invocationMirrorMethodKind:
         if (memberName == Names.INDEX_NAME) {
-          selector = new Selector.index();
+          selector = Selector.index();
         } else if (memberName == Names.INDEX_SET_NAME) {
-          selector = new Selector.indexSet();
+          selector = Selector.indexSet();
         } else {
           if (namedArgumentsLiteral is ir.MapLiteral) {
             namedArgumentsLiteral.entries.forEach((ir.MapLiteralEntry entry) {
@@ -4270,8 +4263,7 @@
             ir.MapConstant constant = namedArgumentsLiteral.constant;
             for (ir.ConstantMapEntry entry in constant.entries) {
               ir.StringConstant key = entry.key;
-              namedArguments[key.value] =
-                  new ir.ConstantExpression(entry.value);
+              namedArguments[key.value] = ir.ConstantExpression(entry.value);
             }
           } else {
             reporter.internalError(
@@ -4279,15 +4271,15 @@
                 "Unexpected named arguments value in createInvocationMirrror: "
                 "${namedArgumentsLiteral}.");
           }
-          CallStructure callStructure = new CallStructure(
+          CallStructure callStructure = CallStructure(
               positionalArgumentsLiteral.expressions.length,
               namedArguments.keys.toList(),
               typeArguments.length);
           if (Selector.isOperatorName(name)) {
             selector =
-                new Selector(SelectorKind.OPERATOR, memberName, callStructure);
+                Selector(SelectorKind.OPERATOR, memberName, callStructure);
           } else {
-            selector = new Selector.call(memberName, callStructure);
+            selector = Selector.call(memberName, callStructure);
           }
         }
         break;
@@ -4557,7 +4549,7 @@
 
     AbstractValue ssaType =
         _typeInferenceMap.typeFromNativeBehavior(nativeBehavior, closedWorld);
-    push(new HForeignCode(expr, ssaType, const <HInstruction>[],
+    push(HForeignCode(expr, ssaType, const <HInstruction>[],
         nativeBehavior: nativeBehavior));
   }
 
@@ -4603,7 +4595,7 @@
 
     AbstractValue ssaType =
         _typeInferenceMap.typeFromNativeBehavior(nativeBehavior, closedWorld);
-    push(new HForeignCode(template, ssaType, inputs,
+    push(HForeignCode(template, ssaType, inputs,
         nativeBehavior: nativeBehavior));
   }
 
@@ -4690,7 +4682,7 @@
         InterfaceType type =
             argumentConstant.representedType.withoutNullability;
         // TODO(sra): Check that type is a subclass of [Interceptor].
-        ConstantValue constant = new InterceptorConstantValue(type.element);
+        ConstantValue constant = InterceptorConstantValue(type.element);
         HInstruction instruction = graph.addConstant(constant, closedWorld);
         stack.add(instruction);
         return;
@@ -4789,7 +4781,7 @@
         _typeInferenceMap.typeFromNativeBehavior(nativeBehavior, closedWorld);
 
     SourceInformation sourceInformation = null;
-    HInstruction code = new HForeignCode(
+    HInstruction code = HForeignCode(
         nativeBehavior.codeTemplate, ssaType, inputs,
         isStatement: !nativeBehavior.codeTemplate.isExpression,
         effects: nativeBehavior.sideEffects,
@@ -4824,7 +4816,7 @@
         closedWorld.dartTypes
             .isNonNullableIfSound(_getStaticType(invocation).type)) {
       HInstruction code = pop();
-      push(new HNullCheck(
+      push(HNullCheck(
           code, _abstractValueDomain.excludeNull(code.instructionType),
           sticky: true));
     }
@@ -4838,8 +4830,7 @@
       return;
     }
     List<HInstruction> inputs = _visitPositionalArguments(invocation.arguments);
-    push(new HStringConcat(
-        inputs[0], inputs[1], _abstractValueDomain.stringType));
+    push(HStringConcat(inputs[0], inputs[1], _abstractValueDomain.stringType));
   }
 
   void _handleForeignTypeRef(ir.StaticInvocation invocation) {
@@ -4904,14 +4895,14 @@
       return;
     }
 
-    HInvokeStatic instruction = new HInvokeStatic(
+    HInvokeStatic instruction = HInvokeStatic(
         target, arguments, typeMask, typeArguments,
         targetCanThrow: !_inferredData.getCannotThrow(target))
       ..sourceInformation = sourceInformation;
 
     if (_currentImplicitInstantiations.isNotEmpty) {
       instruction.instantiatedTypes =
-          new List<InterfaceType>.from(_currentImplicitInstantiations);
+          List<InterfaceType>.from(_currentImplicitInstantiations);
     }
     instruction.sideEffects = _inferredData.getSideEffectsOfElement(target);
     push(instruction);
@@ -5034,7 +5025,7 @@
       int i = 0;
       int positions = 0;
       var filteredArguments = <HInstruction>[];
-      var parameterNameMap = new Map<String, js.Expression>();
+      var parameterNameMap = Map<String, js.Expression>();
 
       // Note: we don't use `constructor.parameterStructure` here because
       // we don't elide parameters to js-interop external static targets
@@ -5053,17 +5044,16 @@
         if (argument != null) {
           filteredArguments.add(argument);
           var jsName = _nativeData.computeUnescapedJSInteropName(parameterName);
-          parameterNameMap[jsName] = new js.InterpolatedExpression(positions++);
+          parameterNameMap[jsName] = js.InterpolatedExpression(positions++);
         }
         i++;
       }
-      var codeTemplate =
-          new js.Template(null, js.objectLiteral(parameterNameMap));
+      var codeTemplate = js.Template(null, js.objectLiteral(parameterNameMap));
 
-      var nativeBehavior = new NativeBehavior()..codeTemplate = codeTemplate;
+      var nativeBehavior = NativeBehavior()..codeTemplate = codeTemplate;
       registry.registerNativeMethod(element);
       // TODO(efortuna): Source information.
-      return new HForeignCode(
+      return HForeignCode(
           codeTemplate, _abstractValueDomain.dynamicType, filteredArguments,
           nativeBehavior: nativeBehavior);
     }
@@ -5074,7 +5064,7 @@
     // the factory constructor case.
     List<HInstruction> inputs = arguments.where((arg) => arg != null).toList();
 
-    var nativeBehavior = new NativeBehavior()..sideEffects.setAllSideEffects();
+    var nativeBehavior = NativeBehavior()..sideEffects.setAllSideEffects();
 
     DartType type = element is ConstructorEntity
         ? _elementEnvironment.getThisType(element.enclosingClass)
@@ -5126,8 +5116,7 @@
     AbstractValue type =
         _abstractValueDomain.createNonNullExact(closureClassEntity);
     // TODO(efortuna): Add source information here.
-    push(new HCreate(
-        closureClassEntity, capturedVariables, type, sourceInformation,
+    push(HCreate(closureClassEntity, capturedVariables, type, sourceInformation,
         callMethod: closureInfo.callMethod));
   }
 
@@ -5159,7 +5148,7 @@
             : _commonElements.dynamicType)
         .toList();
     registry.registerGenericInstantiation(
-        new GenericInstantiation(functionType, typeArguments));
+        GenericInstantiation(functionType, typeArguments));
     // TODO(johnniwinther): Can we avoid creating the instantiation object?
     for (DartType type in typeArguments) {
       HInstruction instruction =
@@ -5178,7 +5167,7 @@
       stack.add(graph.addConstantNull(closedWorld));
       return;
     }
-    HInstruction instruction = new HInvokeStatic(
+    HInstruction instruction = HInvokeStatic(
         target, arguments, _abstractValueDomain.functionType, <DartType>[],
         targetCanThrow: targetCanThrow);
     // TODO(sra): ..sourceInformation = sourceInformation
@@ -5285,7 +5274,7 @@
   HInterceptor _interceptorFor(
       HInstruction intercepted, SourceInformation sourceInformation) {
     HInterceptor interceptor =
-        new HInterceptor(intercepted, _abstractValueDomain.nonNullType)
+        HInterceptor(intercepted, _abstractValueDomain.nonNullType)
           ..sourceInformation = sourceInformation;
     add(interceptor);
     return interceptor;
@@ -5374,15 +5363,8 @@
     } else {
       typeMask = _abstractValueDomain.dynamicType;
     }
-    HInstruction instruction = new HInvokeSuper(
-        target,
-        containingClass,
-        selector,
-        inputs,
-        isIntercepted,
-        typeMask,
-        typeArguments,
-        sourceInformation,
+    HInstruction instruction = HInvokeSuper(target, containingClass, selector,
+        inputs, isIntercepted, typeMask, typeArguments, sourceInformation,
         isSetter: selector.isSetter || selector.isIndexSet);
     instruction.sideEffects =
         _inferredData.getSideEffectsOfSelector(selector, null);
@@ -5478,7 +5460,7 @@
       variableNameInstruction,
       methodNameInstruction,
     ];
-    HInstruction checkBound = new HInvokeStatic(
+    HInstruction checkBound = HInvokeStatic(
         element, inputs, typeInstruction.instructionType, const <DartType>[]);
     add(checkBound);
   }
@@ -5572,8 +5554,7 @@
       SourceInformation sourceInformation =
           _sourceInformationBuilder.buildThrow(node);
       _handleInTryStatement();
-      push(
-          new HThrowExpression(_abstractValueDomain, pop(), sourceInformation));
+      push(HThrowExpression(_abstractValueDomain, pop(), sourceInformation));
       _isReachable = false;
     }
   }
@@ -5591,7 +5572,7 @@
   @override
   void visitYieldStatement(ir.YieldStatement node) {
     node.expression.accept(this);
-    add(new HYield(_abstractValueDomain, pop(), node.isYieldStar,
+    add(HYield(_abstractValueDomain, pop(), node.isYieldStar,
         _sourceInformationBuilder.buildYield(node)));
   }
 
@@ -5600,7 +5581,7 @@
     node.operand.accept(this);
     HInstruction awaited = pop();
     // TODO(herhut): Improve this type.
-    push(new HAwait(awaited, _abstractValueDomain.dynamicType)
+    push(HAwait(awaited, _abstractValueDomain.dynamicType)
       ..sourceInformation = _sourceInformationBuilder.buildAwait(node));
   }
 
@@ -5615,8 +5596,7 @@
     _handleInTryStatement();
     SourceInformation sourceInformation =
         _sourceInformationBuilder.buildThrow(node);
-    _closeAndGotoExit(new HThrow(
-        _abstractValueDomain, exception, sourceInformation,
+    _closeAndGotoExit(HThrow(_abstractValueDomain, exception, sourceInformation,
         isRethrow: true));
     // ir.Rethrow is an expression so we need to push a value - a constant with
     // no type.
@@ -5632,21 +5612,21 @@
   @override
   void visitNot(ir.Not node) {
     node.operand.accept(this);
-    push(new HNot(popBoolified(), _abstractValueDomain.boolType)
+    push(HNot(popBoolified(), _abstractValueDomain.boolType)
       ..sourceInformation = _sourceInformationBuilder.buildUnary(node));
   }
 
   @override
   void visitStringConcatenation(ir.StringConcatenation stringConcat) {
-    KernelStringBuilder stringBuilder = new KernelStringBuilder(this);
+    KernelStringBuilder stringBuilder = KernelStringBuilder(this);
     stringConcat.accept(stringBuilder);
     stack.add(stringBuilder.result);
   }
 
   @override
   void visitTryCatch(ir.TryCatch node) {
-    TryCatchFinallyBuilder tryBuilder = new TryCatchFinallyBuilder(
-        this, _sourceInformationBuilder.buildTry(node));
+    TryCatchFinallyBuilder tryBuilder =
+        TryCatchFinallyBuilder(this, _sourceInformationBuilder.buildTry(node));
     node.body.accept(this);
     tryBuilder
       ..closeTryBody()
@@ -5664,8 +5644,8 @@
   /// recursion.
   @override
   void visitTryFinally(ir.TryFinally node) {
-    TryCatchFinallyBuilder tryBuilder = new TryCatchFinallyBuilder(
-        this, _sourceInformationBuilder.buildTry(node));
+    TryCatchFinallyBuilder tryBuilder =
+        TryCatchFinallyBuilder(this, _sourceInformationBuilder.buildTry(node));
 
     // We do these shenanigans to produce better looking code that doesn't
     // have nested try statements.
@@ -5879,12 +5859,12 @@
     void doInlining() {
       if (function.isConstructor) {
         registry.registerStaticUse(
-            new StaticUse.constructorInlining(function, instanceType));
+            StaticUse.constructorInlining(function, instanceType));
       } else {
         assert(instanceType == null,
             "Unexpected instance type for $function: $instanceType");
         registry.registerStaticUse(
-            new StaticUse.methodInlining(function, typeArguments));
+            StaticUse.methodInlining(function, typeArguments));
       }
 
       // Add an explicit null check on the receiver before doing the inlining.
@@ -5969,7 +5949,7 @@
     ParameterStructure parameterStructure = function.parameterStructure;
     List<String> selectorArgumentNames =
         selector.callStructure.getOrderedNamedArguments();
-    List<HInstruction> compiledArguments = new List<HInstruction>.filled(
+    List<HInstruction> compiledArguments = List<HInstruction>.filled(
         parameterStructure.totalParameters +
             parameterStructure.typeParameters +
             1,
@@ -6062,7 +6042,7 @@
   /// [SsaGraphBuilder].
   void _enterInlinedMethod(FunctionEntity function,
       List<HInstruction> compiledArguments, InterfaceType instanceType) {
-    KernelInliningState state = new KernelInliningState(
+    KernelInliningState state = KernelInliningState(
         function,
         _returnLocal,
         _returnType,
@@ -6088,7 +6068,7 @@
   /// stores it in the [_returnLocal] field.
   void _setupStateForInlining(FunctionEntity function,
       List<HInstruction> compiledArguments, InterfaceType instanceType) {
-    localsHandler = new LocalsHandler(
+    localsHandler = LocalsHandler(
         this,
         function,
         function,
@@ -6100,7 +6080,7 @@
     CapturedScope scopeData = _closureDataLookup.getCapturedScope(function);
     bool forGenerativeConstructorBody = function is ConstructorBodyEntity;
 
-    _returnLocal = new SyntheticLocal("result", function, function);
+    _returnLocal = SyntheticLocal("result", function, function);
     localsHandler.updateLocal(_returnLocal, graph.addConstantNull(closedWorld));
 
     _inTryStatement = false; // TODO(lry): why? Document.
@@ -6331,7 +6311,7 @@
     String name = "${n(element.library)}:${n(element.enclosingClass)}."
         "${n(element)}";
     HConstant nameConstant = graph.addConstantString(name, closedWorld);
-    add(new HInvokeStatic(
+    add(HInvokeStatic(
         _commonElements.traceHelper,
         <HInstruction>[idConstant, nameConstant],
         _abstractValueDomain.dynamicType,
@@ -6349,7 +6329,7 @@
       <FieldEntity, HInstruction>{};
 
   /// Classes for which type variables have been prepared.
-  final Set<ClassEntity> includedClasses = new Set<ClassEntity>();
+  final Set<ClassEntity> includedClasses = Set<ClassEntity>();
 }
 
 class KernelInliningState {
@@ -6410,8 +6390,8 @@
   LocalsHandler originalSavedLocals;
 
   TryCatchFinallyBuilder(this.kernelBuilder, this.trySourceInformation) {
-    tryInstruction = new HTry(kernelBuilder._abstractValueDomain);
-    originalSavedLocals = new LocalsHandler.from(kernelBuilder.localsHandler);
+    tryInstruction = HTry(kernelBuilder._abstractValueDomain);
+    originalSavedLocals = LocalsHandler.from(kernelBuilder.localsHandler);
     enterBlock = kernelBuilder.openNewBlock();
     kernelBuilder.close(tryInstruction);
     previouslyInTryStatement = kernelBuilder._inTryStatement;
@@ -6476,17 +6456,16 @@
   /// Build the finally{} clause of a try/{catch}/finally statement. Note this
   /// does not examine the body of the try clause, only the finally portion.
   void buildFinallyBlock(void buildFinalizer()) {
-    kernelBuilder.localsHandler = new LocalsHandler.from(originalSavedLocals);
+    kernelBuilder.localsHandler = LocalsHandler.from(originalSavedLocals);
     startFinallyBlock = kernelBuilder.graph.addNewBlock();
     kernelBuilder.open(startFinallyBlock);
     buildFinalizer();
     if (!kernelBuilder.isAborted()) {
       endFinallyBlock =
-          kernelBuilder.close(new HGoto(kernelBuilder._abstractValueDomain));
+          kernelBuilder.close(HGoto(kernelBuilder._abstractValueDomain));
     }
     tryInstruction.finallyBlock = startFinallyBlock;
-    finallyGraph =
-        new SubGraph(startFinallyBlock, kernelBuilder.lastOpenedBlock);
+    finallyGraph = SubGraph(startFinallyBlock, kernelBuilder.lastOpenedBlock);
   }
 
   void closeTryBody() {
@@ -6495,19 +6474,19 @@
     // the catch or finally block.
     if (!kernelBuilder.isAborted()) {
       endTryBlock =
-          kernelBuilder.close(new HExitTry(kernelBuilder._abstractValueDomain));
+          kernelBuilder.close(HExitTry(kernelBuilder._abstractValueDomain));
     }
-    bodyGraph = new SubGraph(startTryBlock, kernelBuilder.lastOpenedBlock);
+    bodyGraph = SubGraph(startTryBlock, kernelBuilder.lastOpenedBlock);
   }
 
   void buildCatch(ir.TryCatch tryCatch) {
-    kernelBuilder.localsHandler = new LocalsHandler.from(originalSavedLocals);
+    kernelBuilder.localsHandler = LocalsHandler.from(originalSavedLocals);
     startCatchBlock = kernelBuilder.graph.addNewBlock();
     kernelBuilder.open(startCatchBlock);
     // Note that the name of this local is irrelevant.
     SyntheticLocal local = kernelBuilder.localsHandler.createLocal('exception');
     exception =
-        new HLocalValue(local, kernelBuilder._abstractValueDomain.nonNullType)
+        HLocalValue(local, kernelBuilder._abstractValueDomain.nonNullType)
           ..sourceInformation = trySourceInformation;
     kernelBuilder.add(exception);
     HInstruction oldRethrowableException = kernelBuilder._rethrowableException;
@@ -6571,7 +6550,7 @@
 
     void visitElse() {
       if (catchesIndex >= tryCatch.catches.length) {
-        kernelBuilder._closeAndGotoExit(new HThrow(
+        kernelBuilder._closeAndGotoExit(HThrow(
             kernelBuilder._abstractValueDomain,
             exception,
             exception.sourceInformation,
@@ -6600,12 +6579,12 @@
             kernelBuilder._sourceInformationBuilder.buildCatch(firstBlock));
     if (!kernelBuilder.isAborted()) {
       endCatchBlock =
-          kernelBuilder.close(new HGoto(kernelBuilder._abstractValueDomain));
+          kernelBuilder.close(HGoto(kernelBuilder._abstractValueDomain));
     }
 
     kernelBuilder._rethrowableException = oldRethrowableException;
     tryInstruction.catchBlock = startCatchBlock;
-    catchGraph = new SubGraph(startCatchBlock, kernelBuilder.lastOpenedBlock);
+    catchGraph = SubGraph(startCatchBlock, kernelBuilder.lastOpenedBlock);
   }
 
   void cleanUp() {
@@ -6617,7 +6596,7 @@
     kernelBuilder.localsHandler = originalSavedLocals;
     kernelBuilder.open(exitBlock);
     enterBlock.setBlockFlow(
-        new HTryBlockInformation(
+        HTryBlockInformation(
             kernelBuilder.wrapStatementGraph(bodyGraph),
             exception,
             kernelBuilder.wrapStatementGraph(catchGraph),
@@ -6648,7 +6627,7 @@
 
   // TODO(30809): Use const constructor.
   static bool check(ir.Initializer initializer) =>
-      initializer.accept(new _ErroneousInitializerVisitor());
+      initializer.accept(_ErroneousInitializerVisitor());
 
   @override
   bool defaultInitializer(ir.Node node) => false;
@@ -6750,13 +6729,14 @@
       this.regularNodeCount,
       this.callCount});
 
-  bool canBeInlined({int maxInliningNodes, bool allowLoops: false}) {
+  bool canBeInlined({int maxInliningNodes, bool allowLoops = false}) {
     return cannotBeInlinedReason(
             maxInliningNodes: maxInliningNodes, allowLoops: allowLoops) ==
         null;
   }
 
-  String cannotBeInlinedReason({int maxInliningNodes, bool allowLoops: false}) {
+  String cannotBeInlinedReason(
+      {int maxInliningNodes, bool allowLoops = false}) {
     if (hasLoop && !allowLoops) {
       return 'loop';
     } else if (hasTry) {
@@ -6824,7 +6804,7 @@
 
   @override
   String toString() {
-    StringBuffer sb = new StringBuffer();
+    StringBuffer sb = StringBuffer();
     sb.write('InlineData(');
     String comma = '';
     if (isConstructor) {
@@ -6910,7 +6890,7 @@
   final bool omitImplicitCasts;
 
   InlineDataCache(
-      {this.enableUserAssertions: false, this.omitImplicitCasts: false});
+      {this.enableUserAssertions = false, this.omitImplicitCasts = false});
 
   Map<FunctionEntity, InlineData> _cache = {};
 
@@ -6963,12 +6943,12 @@
   bool discountParameters = false;
 
   InlineWeeder(
-      {this.enableUserAssertions: false, this.omitImplicitCasts: false});
+      {this.enableUserAssertions = false, this.omitImplicitCasts = false});
 
   static InlineData computeInlineData(
       JsToElementMap elementMap, FunctionEntity function,
-      {bool enableUserAssertions: false, bool omitImplicitCasts: false}) {
-    InlineWeeder visitor = new InlineWeeder(
+      {bool enableUserAssertions = false, bool omitImplicitCasts = false}) {
+    InlineWeeder visitor = InlineWeeder(
         enableUserAssertions: enableUserAssertions,
         omitImplicitCasts: omitImplicitCasts);
     ir.FunctionNode node = getFunctionNode(elementMap, function);
diff --git a/pkg/compiler/lib/src/ssa/codegen.dart b/pkg/compiler/lib/src/ssa/codegen.dart
index 8cf8ed8..e4737ff 100644
--- a/pkg/compiler/lib/src/ssa/codegen.dart
+++ b/pkg/compiler/lib/src/ssa/codegen.dart
@@ -68,7 +68,7 @@
   js.Fun buildJavaScriptFunction(bool needsAsyncRewrite, FunctionEntity element,
       List<js.Parameter> parameters, js.Block body) {
     js.Fun finish(js.AsyncModifier asyncModifier) {
-      return new js.Fun(parameters, body, asyncModifier: asyncModifier)
+      return js.Fun(parameters, body, asyncModifier: asyncModifier)
           .withSourceInformation(sourceInformationStrategy
               .createBuilderForContext(element)
               .buildDeclaration(element));
@@ -129,7 +129,7 @@
           closedWorld,
           registry);
       codeGenerator.visitGraph(graph);
-      return new js.Fun(codeGenerator.parameters, codeGenerator.body)
+      return js.Fun(codeGenerator.parameters, codeGenerator.body)
           .withSourceInformation(sourceInformation);
     });
   }
@@ -277,17 +277,17 @@
       this._closedWorld,
       this._registry,
       {SourceInformation sourceInformation})
-      : declaredLocals = new Set<String>(),
-        collectedVariableDeclarations = new Set<String>(),
-        currentContainer = new js.Block.empty(),
+      : declaredLocals = Set<String>(),
+        collectedVariableDeclarations = Set<String>(),
+        currentContainer = js.Block.empty(),
         parameters = <js.Parameter>[],
         expressionStack = <js.Expression>[],
         oldContainerStack = <js.Block>[],
-        generateAtUseSite = new Set<HInstruction>(),
-        controlFlowOperators = new Set<HInstruction>(),
-        breakAction = new Set<JumpTarget>(),
-        continueAction = new Set<LabelDefinition>(),
-        implicitContinueAction = new Set<JumpTarget>();
+        generateAtUseSite = Set<HInstruction>(),
+        controlFlowOperators = Set<HInstruction>(),
+        breakAction = Set<JumpTarget>(),
+        continueAction = Set<LabelDefinition>(),
+        implicitContinueAction = Set<JumpTarget>();
 
   JCommonElements get _commonElements => _closedWorld.commonElements;
 
@@ -373,7 +373,7 @@
     if (bitWidth(instruction) <= 31) return false;
     // If the result of a bit-operation is only used by other bit
     // operations, we do not have to convert to an unsigned integer.
-    return hasNonBitOpUser(instruction, new Set<HPhi>());
+    return hasNonBitOpUser(instruction, Set<HPhi>());
   }
 
   /// If the [instruction] is not `null` it will be used to attach the position
@@ -391,7 +391,7 @@
   /// to the [expression].
   pushExpressionAsStatement(
       js.Expression expression, SourceInformation sourceInformation) {
-    pushStatement(new js.ExpressionStatement(expression)
+    pushStatement(js.ExpressionStatement(expression)
         .withSourceInformation(sourceInformation));
   }
 
@@ -414,18 +414,18 @@
       assert(graph.isValid(), 'Graph not valid after ${phase.name}');
     }
 
-    runPhase(new SsaInstructionSelection(_options, _closedWorld));
-    runPhase(new SsaTypeKnownRemover());
-    runPhase(new SsaTrustedCheckRemover(_options));
-    runPhase(new SsaAssignmentChaining(_closedWorld));
-    runPhase(new SsaInstructionMerger(_abstractValueDomain, generateAtUseSite));
-    runPhase(new SsaConditionMerger(generateAtUseSite, controlFlowOperators));
-    runPhase(new SsaShareRegionConstants());
+    runPhase(SsaInstructionSelection(_options, _closedWorld));
+    runPhase(SsaTypeKnownRemover());
+    runPhase(SsaTrustedCheckRemover(_options));
+    runPhase(SsaAssignmentChaining(_closedWorld));
+    runPhase(SsaInstructionMerger(_abstractValueDomain, generateAtUseSite));
+    runPhase(SsaConditionMerger(generateAtUseSite, controlFlowOperators));
+    runPhase(SsaShareRegionConstants());
 
     SsaLiveIntervalBuilder intervalBuilder =
-        new SsaLiveIntervalBuilder(generateAtUseSite, controlFlowOperators);
+        SsaLiveIntervalBuilder(generateAtUseSite, controlFlowOperators);
     runPhase(intervalBuilder, traceGraph: false);
-    SsaVariableAllocator allocator = new SsaVariableAllocator(
+    SsaVariableAllocator allocator = SsaVariableAllocator(
         _namer,
         intervalBuilder.liveInstructions,
         intervalBuilder.liveIntervals,
@@ -456,9 +456,9 @@
             js.Expression value = expression.value;
             if (_safeInInitializer(value) &&
                 collectedVariableDeclarations.remove(name)) {
-              var initialization = new js.VariableInitialization(
-                      new js.VariableDeclaration(name), value)
-                  .withSourceInformation(expression.sourceInformation);
+              var initialization =
+                  js.VariableInitialization(js.VariableDeclaration(name), value)
+                      .withSourceInformation(expression.sourceInformation);
               declarations.add(initialization);
               ++nextStatement;
               continue;
@@ -471,14 +471,14 @@
 
     List<js.VariableInitialization> uninitialized = [];
     for (String name in collectedVariableDeclarations) {
-      uninitialized.add(new js.VariableInitialization(
-          new js.VariableDeclaration(name), null));
+      uninitialized
+          .add(js.VariableInitialization(js.VariableDeclaration(name), null));
     }
     var declarationList =
-        new js.VariableDeclarationList(uninitialized + declarations)
+        js.VariableDeclarationList(uninitialized + declarations)
             .withSourceInformation(sourceInformation);
     statements.replaceRange(
-        0, nextStatement, [new js.ExpressionStatement(declarationList)]);
+        0, nextStatement, [js.ExpressionStatement(declarationList)]);
   }
 
   // An expression is safe to be pulled into a 'var' initializer if it does not
@@ -489,7 +489,7 @@
   visitGraph(HGraph graph) {
     preGenerateMethod(graph);
     currentGraph = graph;
-    visitSubGraph(new SubGraph(graph.entry, graph.exit));
+    visitSubGraph(SubGraph(graph.entry, graph.exit));
     handleDelayedVariableDeclarations(graph.sourceInformation);
   }
 
@@ -497,7 +497,7 @@
     SubGraph oldSubGraph = subGraph;
     Queue<HBasicBlock> oldBlockQueue = blockQueue;
     subGraph = newSubGraph;
-    blockQueue = new Queue<HBasicBlock>();
+    blockQueue = Queue<HBasicBlock>();
     enterSubGraph(subGraph.start);
     blockQueue = oldBlockQueue;
     subGraph = oldSubGraph;
@@ -586,7 +586,7 @@
   }
 
   js.Block generateStatementsInNewBlock(HBlockInformation block) {
-    js.Block result = new js.Block.empty();
+    js.Block result = js.Block.empty();
     js.Block oldContainer = currentContainer;
     currentContainer = result;
     generateStatements(block);
@@ -600,7 +600,7 @@
   /// If the block is empty, returns a new instance of [js.NOP].
   js.Statement unwrapStatement(js.Block block) {
     int len = block.statements.length;
-    if (len == 0) return new js.EmptyStatement();
+    if (len == 0) return js.EmptyStatement();
     if (len == 1) {
       js.Statement result = block.statements[0];
       if (result is js.Block) return unwrapStatement(result);
@@ -631,7 +631,7 @@
     } else {
       js.Expression result = sequenceElements.removeLast();
       while (sequenceElements.isNotEmpty) {
-        result = new js.Binary(',', sequenceElements.removeLast(), result);
+        result = js.Binary(',', sequenceElements.removeLast(), result);
       }
       return result;
     }
@@ -639,10 +639,10 @@
 
   /// Only visits the arguments starting at inputs[HInvoke.ARGUMENTS_OFFSET].
   List<js.Expression> visitArguments(List<HInstruction> inputs,
-      {int start: HInvoke.ARGUMENTS_OFFSET}) {
+      {int start = HInvoke.ARGUMENTS_OFFSET}) {
     assert(inputs.length >= start);
     List<js.Expression> result =
-        new List<js.Expression>.filled(inputs.length - start, null);
+        List<js.Expression>.filled(inputs.length - start, null);
     for (int i = start; i < inputs.length; i++) {
       use(inputs[i]);
       result[i - start] = pop();
@@ -679,13 +679,13 @@
           if ((op == '+' || op == '-') &&
               right is js.LiteralNumber &&
               right.value == "1") {
-            return new js.Prefix(op == '+' ? '++' : '--', left);
+            return js.Prefix(op == '+' ? '++' : '--', left);
           }
-          return new js.Assignment.compound(binary.left, op, binary.right);
+          return js.Assignment.compound(binary.left, op, binary.right);
         }
       }
     }
-    return new js.Assignment(new js.VariableUse(variableName), value)
+    return js.Assignment(js.VariableUse(variableName), value)
         .withSourceInformation(value.sourceInformation ?? sourceInformation);
   }
 
@@ -706,12 +706,12 @@
       // It may be necessary to remove it from the ones to be declared later.
       collectedVariableDeclarations.remove(variableName);
       declaredLocals.add(variableName);
-      js.VariableDeclaration decl = new js.VariableDeclaration(variableName);
+      js.VariableDeclaration decl = js.VariableDeclaration(variableName);
       js.VariableInitialization initialization =
-          new js.VariableInitialization(decl, value);
+          js.VariableInitialization(decl, value);
 
       pushExpressionAsStatement(
-          new js.VariableDeclarationList(
+          js.VariableDeclarationList(
               <js.VariableInitialization>[initialization]),
           sourceInformation);
     } else {
@@ -818,15 +818,15 @@
   }
 
   void continueAsBreak(LabelDefinition target) {
-    pushStatement(new js.Break(_namer.continueLabelName(target)));
+    pushStatement(js.Break(_namer.continueLabelName(target)));
   }
 
   void implicitContinueAsBreak(JumpTarget target) {
-    pushStatement(new js.Break(_namer.implicitContinueLabelName(target)));
+    pushStatement(js.Break(_namer.implicitContinueLabelName(target)));
   }
 
   void implicitBreakWithLabel(JumpTarget target) {
-    pushStatement(new js.Break(_namer.implicitBreakLabelName(target)));
+    pushStatement(js.Break(_namer.implicitBreakLabelName(target)));
   }
 
   js.Statement wrapIntoLabels(
@@ -834,7 +834,7 @@
     for (LabelDefinition label in labels) {
       if (label.isTarget) {
         String breakLabelString = _namer.breakLabelName(label);
-        result = new js.LabeledStatement(breakLabelString, result);
+        result = js.LabeledStatement(breakLabelString, result);
       }
     }
     return result;
@@ -873,8 +873,8 @@
       if (successor.isLive) {
         do {
           visit(inputs[inputIndex]);
-          currentContainer = new js.Block.empty();
-          cases.add(new js.Case(pop(), currentContainer));
+          currentContainer = js.Block.empty();
+          cases.add(js.Case(pop(), currentContainer));
           inputIndex++;
         } while ((successors[inputIndex - 1] == successor) &&
             (inputIndex < inputs.length));
@@ -882,8 +882,8 @@
         // If this is the last statement, then these cases also belong to the
         // default block.
         if (statementIndex == info.statements.length - 1) {
-          currentContainer = new js.Block.empty();
-          cases.add(new js.Default(currentContainer));
+          currentContainer = js.Block.empty();
+          cases.add(js.Default(currentContainer));
           handledDefault = true;
         }
 
@@ -901,17 +901,17 @@
     // If the default case is dead, we omit it. Likewise, if it is an
     // empty block, we omit it, too.
     if (info.statements.last.start.isLive && !handledDefault) {
-      currentContainer = new js.Block.empty();
+      currentContainer = js.Block.empty();
       generateStatements(info.statements.last);
       if (currentContainer.statements.isNotEmpty) {
-        cases.add(new js.Default(currentContainer));
+        cases.add(js.Default(currentContainer));
       }
     }
 
     currentContainer = oldContainer;
 
     js.Statement result =
-        new js.Switch(key, cases).withSourceInformation(info.sourceInformation);
+        js.Switch(key, cases).withSourceInformation(info.sourceInformation);
     pushStatement(wrapIntoLabels(result, info.labels));
     return true;
   }
@@ -956,14 +956,14 @@
 
       HLocalValue exception = info.catchVariable;
       String name = variableNames.getName(exception);
-      js.VariableDeclaration decl = new js.VariableDeclaration(name);
+      js.VariableDeclaration decl = js.VariableDeclaration(name);
       js.Block catchBlock = generateStatementsInNewBlock(info.catchBlock);
-      catchPart = new js.Catch(decl, catchBlock);
+      catchPart = js.Catch(decl, catchBlock);
     }
     if (info.finallyBlock != null) {
       finallyPart = generateStatementsInNewBlock(info.finallyBlock);
     }
-    pushStatement(new js.Try(body, catchPart, finallyPart));
+    pushStatement(js.Try(body, catchPart, finallyPart));
     return true;
   }
 
@@ -1004,7 +1004,7 @@
         // We inserted a basic block to avoid critical edges. This block is
         // part of the LoopBlockInformation and must therefore be handled here.
         js.Block oldContainer = currentContainer;
-        js.Block avoidContainer = new js.Block.empty();
+        js.Block avoidContainer = js.Block.empty();
         currentContainer = avoidContainer;
         assignPhisOfSuccessors(condition.end.successors.last);
         bool hasPhiUpdates = !avoidContainer.statements.isEmpty;
@@ -1052,13 +1052,13 @@
                     <js.VariableInitialization>[];
                 for (js.Assignment assignment in assignments) {
                   String id = (assignment.leftHandSide as js.VariableUse).name;
-                  js.Node declaration = new js.VariableDeclaration(id);
-                  inits.add(new js.VariableInitialization(
-                      declaration, assignment.value));
+                  js.Node declaration = js.VariableDeclaration(id);
+                  inits.add(
+                      js.VariableInitialization(declaration, assignment.value));
                   collectedVariableDeclarations.remove(id);
                   declaredLocals.add(id);
                 }
-                jsInitialization = new js.VariableDeclarationList(inits);
+                jsInitialization = js.VariableDeclarationList(inits);
               }
             }
           }
@@ -1069,12 +1069,12 @@
           // TODO(lrn): Remove this extra labeling when handling all loops
           // using subgraphs.
           oldContainer = currentContainer;
-          js.Statement body = new js.Block.empty();
+          js.Statement body = js.Block.empty();
           currentContainer = body;
           visitBodyIgnoreLabels(info);
           currentContainer = oldContainer;
           body = unwrapStatement(body);
-          loop = new js.For(jsInitialization, jsCondition, jsUpdates, body)
+          loop = js.For(jsInitialization, jsCondition, jsUpdates, body)
               .withSourceInformation(info.sourceInformation);
         } else {
           // We have either no update graph, or it's too complex to
@@ -1084,7 +1084,7 @@
           }
           js.Expression jsCondition;
           js.Block oldContainer = currentContainer;
-          js.Statement body = new js.Block.empty();
+          js.Statement body = js.Block.empty();
           if (isConditionExpression && !hasPhiUpdates) {
             jsCondition = generateExpression(condition);
             currentContainer = body;
@@ -1093,8 +1093,8 @@
             currentContainer = body;
             generateStatements(condition);
             use(condition.conditionExpression);
-            js.Expression ifTest = new js.Prefix("!", pop());
-            js.Statement jsBreak = new js.Break(null);
+            js.Expression ifTest = js.Prefix("!", pop());
+            js.Statement jsBreak = js.Break(null);
             js.Statement exitLoop;
             if (avoidContainer.statements.isEmpty) {
               exitLoop = jsBreak;
@@ -1102,7 +1102,7 @@
               avoidContainer.statements.add(jsBreak);
               exitLoop = avoidContainer;
             }
-            pushStatement(new js.If.noElse(ifTest, exitLoop));
+            pushStatement(js.If.noElse(ifTest, exitLoop));
           }
           if (info.updates != null) {
             wrapLoopBodyForContinue(info);
@@ -1112,7 +1112,7 @@
           }
           currentContainer = oldContainer;
           body = unwrapStatement(body);
-          loop = new js.While(jsCondition, body)
+          loop = js.While(jsCondition, body)
               .withSourceInformation(info.sourceInformation);
         }
         break;
@@ -1123,14 +1123,14 @@
         // We inserted a basic block to avoid critical edges. This block is
         // part of the LoopBlockInformation and must therefore be handled here.
         js.Block oldContainer = currentContainer;
-        js.Block exitAvoidContainer = new js.Block.empty();
+        js.Block exitAvoidContainer = js.Block.empty();
         currentContainer = exitAvoidContainer;
         assignPhisOfSuccessors(condition.end.successors.last);
         bool hasExitPhiUpdates = !exitAvoidContainer.statements.isEmpty;
         currentContainer = oldContainer;
 
         oldContainer = currentContainer;
-        js.Block body = new js.Block.empty();
+        js.Block body = js.Block.empty();
         // If there are phi copies in the block that jumps to the
         // loop entry, we must emit the condition like this:
         // do {
@@ -1143,7 +1143,7 @@
         //   }
         // } while (true);
         HBasicBlock avoidEdge = info.end.successors[0];
-        js.Block updateBody = new js.Block.empty();
+        js.Block updateBody = js.Block.empty();
         currentContainer = updateBody;
         assignPhisOfSuccessors(avoidEdge);
         bool hasPhiUpdates = !updateBody.statements.isEmpty;
@@ -1163,13 +1163,13 @@
           // If the condition is dead code, we turn the do-while into
           // a simpler while because we will never reach the condition
           // at the end of the loop anyway.
-          loop = new js.While(newLiteralBool(true, info.sourceInformation),
+          loop = js.While(newLiteralBool(true, info.sourceInformation),
                   unwrapStatement(body))
               .withSourceInformation(info.sourceInformation);
         } else {
           if (hasPhiUpdates || hasExitPhiUpdates) {
-            updateBody.statements.add(new js.Continue(null));
-            js.Statement jsBreak = new js.Break(null);
+            updateBody.statements.add(js.Continue(null));
+            js.Statement jsBreak = js.Break(null);
             js.Statement exitLoop;
             if (exitAvoidContainer.statements.isEmpty) {
               exitLoop = jsBreak;
@@ -1177,10 +1177,10 @@
               exitAvoidContainer.statements.add(jsBreak);
               exitLoop = exitAvoidContainer;
             }
-            body.statements.add(new js.If(jsCondition, updateBody, exitLoop));
+            body.statements.add(js.If(jsCondition, updateBody, exitLoop));
             jsCondition = newLiteralBool(true, info.sourceInformation);
           }
-          loop = new js.Do(unwrapStatement(body), jsCondition)
+          loop = js.Do(unwrapStatement(body), jsCondition)
               .withSourceInformation(info.sourceInformation);
         }
         currentContainer = oldContainer;
@@ -1193,7 +1193,7 @@
     if (info.kind == HLoopBlockInformation.SWITCH_CONTINUE_LOOP) {
       String continueLabelString =
           _namer.implicitContinueLabelName(info.target);
-      result = new js.LabeledStatement(continueLabelString, result);
+      result = js.LabeledStatement(continueLabelString, result);
     }
     pushStatement(wrapIntoLabels(result, info.labels));
     return true;
@@ -1204,7 +1204,7 @@
     Link<Entity> continueOverrides = const Link<Entity>();
 
     js.Block oldContainer = currentContainer;
-    js.Block body = new js.Block.empty();
+    js.Block body = js.Block.empty();
     js.Statement result = body;
 
     currentContainer = body;
@@ -1217,7 +1217,7 @@
       for (LabelDefinition label in labeledBlockInfo.labels) {
         if (label.isContinueTarget) {
           String labelName = _namer.continueLabelName(label);
-          result = new js.LabeledStatement(labelName, result);
+          result = js.LabeledStatement(labelName, result);
           continueAction.add(label);
           continueOverrides = continueOverrides.prepend(label);
         }
@@ -1227,14 +1227,14 @@
       // a target of an unlabeled continue, and not generate this if it isn't.
       JumpTarget target = labeledBlockInfo.target;
       String labelName = _namer.implicitContinueLabelName(target);
-      result = new js.LabeledStatement(labelName, result);
+      result = js.LabeledStatement(labelName, result);
       implicitContinueAction.add(target);
       continueOverrides = continueOverrides.prepend(target);
     } else {
       for (LabelDefinition label in labeledBlockInfo.labels) {
         if (label.isBreakTarget) {
           String labelName = _namer.breakLabelName(label);
-          result = new js.LabeledStatement(labelName, result);
+          result = js.LabeledStatement(labelName, result);
         }
       }
     }
@@ -1244,7 +1244,7 @@
       // as a nested if/else chain. We add an extra break target
       // so that case code can break.
       String labelName = _namer.implicitBreakLabelName(target);
-      result = new js.LabeledStatement(labelName, result);
+      result = js.LabeledStatement(labelName, result);
       breakAction.add(target);
     }
 
@@ -1272,18 +1272,18 @@
     JumpTarget target = info.target;
     if (target != null && target.isContinueTarget) {
       js.Block oldContainer = currentContainer;
-      js.Block body = new js.Block.empty();
+      js.Block body = js.Block.empty();
       currentContainer = body;
       js.Statement result = body;
       for (LabelDefinition label in info.labels) {
         if (label.isContinueTarget) {
           String labelName = _namer.continueLabelName(label);
-          result = new js.LabeledStatement(labelName, result);
+          result = js.LabeledStatement(labelName, result);
           continueAction.add(label);
         }
       }
       String labelName = _namer.implicitContinueLabelName(target);
-      result = new js.LabeledStatement(labelName, result);
+      result = js.LabeledStatement(labelName, result);
       implicitContinueAction.add(info.target);
       visitBodyIgnoreLabels(info);
       implicitContinueAction.remove(info.target);
@@ -1352,7 +1352,7 @@
 
   void emitAssignment(
       String destination, String source, SourceInformation sourceInformation) {
-    assignVariable(destination, new js.VariableUse(source), sourceInformation);
+    assignVariable(destination, js.VariableUse(source), sourceInformation);
   }
 
   /// Sequentialize a list of conceptually parallel copies. Parallel
@@ -1372,15 +1372,15 @@
       sourceInformationMap[sourceName] = copy.source.sourceInformation;
       String destinationName = variableNames.getName(copy.destination);
       sourceInformationMap[sourceName] = copy.destination.sourceInformation;
-      return new Copy<String>(sourceName, destinationName);
+      return Copy<String>(sourceName, destinationName);
     });
 
     // Map to keep track of the current location (ie the variable that
     // holds the initial value) of a variable.
-    Map<String, String> currentLocation = new Map<String, String>();
+    Map<String, String> currentLocation = Map<String, String>();
 
     // Map to keep track of the initial value of a variable.
-    Map<String, String> initialValue = new Map<String, String>();
+    Map<String, String> initialValue = Map<String, String>();
 
     // List of variables to assign a value.
     List<String> worklist = <String>[];
@@ -1482,8 +1482,7 @@
     use(node.left);
     js.Expression jsLeft = pop();
     use(node.right);
-    push(new js.Binary(op, jsLeft, pop())
-        .withSourceInformation(sourceInformation));
+    push(js.Binary(op, jsLeft, pop()).withSourceInformation(sourceInformation));
   }
 
   @override
@@ -1504,15 +1503,14 @@
   visitBitInvokeBinary(HBinaryBitOp node, String op) {
     visitInvokeBinary(node, op);
     if (op != '>>>' && requiresUintConversion(node)) {
-      push(new js.Binary(">>>", pop(), new js.LiteralNumber("0"))
+      push(js.Binary(">>>", pop(), js.LiteralNumber("0"))
           .withSourceInformation(node.sourceInformation));
     }
   }
 
   visitInvokeUnary(HInvokeUnary node, String op) {
     use(node.operand);
-    push(
-        new js.Prefix(op, pop()).withSourceInformation(node.sourceInformation));
+    push(js.Prefix(op, pop()).withSourceInformation(node.sourceInformation));
   }
 
   // We want the outcome of bit-operations to be positive. We use the unsigned
@@ -1520,14 +1518,14 @@
   visitBitInvokeUnary(HInvokeUnary node, String op) {
     visitInvokeUnary(node, op);
     if (requiresUintConversion(node)) {
-      push(new js.Binary(">>>", pop(), new js.LiteralNumber("0"))
+      push(js.Binary(">>>", pop(), js.LiteralNumber("0"))
           .withSourceInformation(node.sourceInformation));
     }
   }
 
   void emitIdentityComparison(
       HIdentity instruction, SourceInformation sourceInformation,
-      {bool inverse: false}) {
+      {bool inverse = false}) {
     String op = instruction.singleComparisonOp;
     HInstruction left = instruction.left;
     HInstruction right = instruction.right;
@@ -1535,22 +1533,21 @@
       use(left);
       js.Expression jsLeft = pop();
       use(right);
-      push(new js.Binary(mapRelationalOperator(op, inverse), jsLeft, pop())
+      push(js.Binary(mapRelationalOperator(op, inverse), jsLeft, pop())
           .withSourceInformation(sourceInformation));
     } else {
       assert(NullConstantValue.JsNull == 'null');
       use(left);
-      js.Binary leftEqualsNull =
-          new js.Binary("==", pop(), new js.LiteralNull());
+      js.Binary leftEqualsNull = js.Binary("==", pop(), js.LiteralNull());
       use(right);
-      js.Binary rightEqualsNull = new js.Binary(
-          mapRelationalOperator("==", inverse), pop(), new js.LiteralNull());
+      js.Binary rightEqualsNull = js.Binary(
+          mapRelationalOperator("==", inverse), pop(), js.LiteralNull());
       use(right);
       use(left);
       js.Binary tripleEq =
-          new js.Binary(mapRelationalOperator("===", inverse), pop(), pop());
+          js.Binary(mapRelationalOperator("===", inverse), pop(), pop());
 
-      push(new js.Conditional(leftEqualsNull, rightEqualsNull, tripleEq)
+      push(js.Conditional(leftEqualsNull, rightEqualsNull, tripleEq)
           .withSourceInformation(sourceInformation));
     }
   }
@@ -1591,9 +1588,9 @@
     use(node.left);
     js.Expression jsLeft = pop();
     use(node.right);
-    push(new js.Binary('/', jsLeft, pop())
+    push(js.Binary('/', jsLeft, pop())
         .withSourceInformation(node.sourceInformation));
-    push(new js.Binary('|', pop(), new js.LiteralNumber("0"))
+    push(js.Binary('|', pop(), js.LiteralNumber("0"))
         .withSourceInformation(node.sourceInformation));
   }
 
@@ -1669,7 +1666,7 @@
       if (breakAction.contains(label.target)) {
         implicitBreakWithLabel(label.target);
       } else {
-        pushStatement(new js.Break(_namer.breakLabelName(label))
+        pushStatement(js.Break(_namer.breakLabelName(label))
             .withSourceInformation(node.sourceInformation));
       }
     } else {
@@ -1678,11 +1675,11 @@
         implicitBreakWithLabel(target);
       } else {
         if (node.breakSwitchContinueLoop) {
-          pushStatement(new js.Break(_namer.implicitContinueLabelName(target))
+          pushStatement(js.Break(_namer.implicitContinueLabelName(target))
               .withSourceInformation(node.sourceInformation));
         } else {
           pushStatement(
-              new js.Break(null).withSourceInformation(node.sourceInformation));
+              js.Break(null).withSourceInformation(node.sourceInformation));
         }
       }
     }
@@ -1697,7 +1694,7 @@
         continueAsBreak(label);
       } else {
         // TODO(floitsch): should this really be the breakLabelName?
-        pushStatement(new js.Continue(_namer.breakLabelName(label))
+        pushStatement(js.Continue(_namer.breakLabelName(label))
             .withSourceInformation(node.sourceInformation));
       }
     } else {
@@ -1706,12 +1703,11 @@
         implicitContinueAsBreak(target);
       } else {
         if (target.isSwitch) {
-          pushStatement(
-              new js.Continue(_namer.implicitContinueLabelName(target))
-                  .withSourceInformation(node.sourceInformation));
-        } else {
-          pushStatement(new js.Continue(null)
+          pushStatement(js.Continue(_namer.implicitContinueLabelName(target))
               .withSourceInformation(node.sourceInformation));
+        } else {
+          pushStatement(
+              js.Continue(null).withSourceInformation(node.sourceInformation));
         }
       }
     }
@@ -1936,8 +1932,8 @@
     push(js
         .propertyCall(object, methodName, arguments)
         .withSourceInformation(node.sourceInformation));
-    _registry.registerStaticUse(new StaticUse.constructorBodyInvoke(
-        node.element, new CallStructure.unnamed(arguments.length)));
+    _registry.registerStaticUse(StaticUse.constructorBodyInvoke(
+        node.element, CallStructure.unnamed(arguments.length)));
   }
 
   @override
@@ -1954,12 +1950,11 @@
     } else {
       push(_emitter.staticFunctionAccess(element));
       List<js.Expression> arguments = visitArguments(node.inputs, start: 0);
-      push(new js.Call(pop(), arguments,
-          sourceInformation: node.sourceInformation));
+      push(
+          js.Call(pop(), arguments, sourceInformation: node.sourceInformation));
     }
 
-    _registry
-        .registerStaticUse(new StaticUse.generatorBodyInvoke(node.element));
+    _registry.registerStaticUse(StaticUse.generatorBodyInvoke(node.element));
   }
 
   @override
@@ -2028,9 +2023,8 @@
       // TODO(kasperl): If we have a typed selector for the call, we
       // may know something about the types of closures that need
       // the specific closure call method.
-      Selector call = new Selector.callClosureFrom(selector);
-      _registry
-          .registerDynamicUse(new DynamicUse(call, null, node.typeArguments));
+      Selector call = Selector.callClosureFrom(selector);
+      _registry.registerDynamicUse(DynamicUse(call, null, node.typeArguments));
     }
     if (target != null) {
       // This is a dynamic invocation which we have found to have a single
@@ -2041,29 +2035,29 @@
           failedAt(node, '$selector does not apply to $target'));
       assert(!selector.isGetter && !selector.isSetter,
           "Unexpected direct invocation selector: $selector.");
-      _registry.registerStaticUse(new StaticUse.directInvoke(
+      _registry.registerStaticUse(StaticUse.directInvoke(
           target, selector.callStructure, node.typeArguments));
     } else {
       AbstractValue mask =
           getOptimizedSelectorFor(node, selector, node.receiverType);
-      _registry.registerDynamicUse(
-          new DynamicUse(selector, mask, node.typeArguments));
+      _registry
+          .registerDynamicUse(DynamicUse(selector, mask, node.typeArguments));
     }
   }
 
-  void registerSetter(HInvokeDynamic node, {bool needsCheck: false}) {
+  void registerSetter(HInvokeDynamic node, {bool needsCheck = false}) {
     if (node.element is FieldEntity && !needsCheck) {
       // This is a dynamic update which we have found to have a single
       // target but for some reason haven't inlined. We are _still_ accessing
       // the target dynamically but we don't need to enqueue more than target
       // for this to work.
-      _registry.registerStaticUse(new StaticUse.directSet(node.element));
+      _registry.registerStaticUse(StaticUse.directSet(node.element));
     } else {
       Selector selector = node.selector;
       AbstractValue mask =
           getOptimizedSelectorFor(node, selector, node.receiverType);
-      _registry.registerDynamicUse(
-          new DynamicUse(selector, mask, node.typeArguments));
+      _registry
+          .registerDynamicUse(DynamicUse(selector, mask, node.typeArguments));
     }
   }
 
@@ -2075,13 +2069,13 @@
       // dynamically but we don't need to enqueue more than target for this to
       // work. The test above excludes non-getter functions since the element
       // represents two targets - a tearoff getter and the torn-off method.
-      _registry.registerStaticUse(new StaticUse.directGet(node.element));
+      _registry.registerStaticUse(StaticUse.directGet(node.element));
     } else {
       Selector selector = node.selector;
       AbstractValue mask =
           getOptimizedSelectorFor(node, selector, node.receiverType);
-      _registry.registerDynamicUse(
-          new DynamicUse(selector, mask, node.typeArguments));
+      _registry
+          .registerDynamicUse(DynamicUse(selector, mask, node.typeArguments));
     }
   }
 
@@ -2107,7 +2101,7 @@
 
   @override
   visitInvokeClosure(HInvokeClosure node) {
-    Selector call = new Selector.callClosureFrom(node.selector);
+    Selector call = Selector.callClosureFrom(node.selector);
     use(node.receiver);
     push(js
         .propertyCall(
@@ -2116,8 +2110,7 @@
     // TODO(kasperl): If we have a typed selector for the call, we
     // may know something about the types of closures that need
     // the specific closure call method.
-    _registry
-        .registerDynamicUse(new DynamicUse(call, null, node.typeArguments));
+    _registry.registerDynamicUse(DynamicUse(call, null, node.typeArguments));
   }
 
   @override
@@ -2143,7 +2136,7 @@
       FunctionEntity throwFunction =
           _commonElements.throwConcurrentModificationError;
       _registry.registerStaticUse(
-          new StaticUse.staticInvoke(throwFunction, CallStructure.ONE_ARG));
+          StaticUse.staticInvoke(throwFunction, CallStructure.ONE_ARG));
 
       // Calling using `(0, #)(#)` instead of `#(#)` separates the property load
       // of the static function access from the call.  For some reason this
@@ -2164,24 +2157,24 @@
     } else {
       StaticUse staticUse;
       if (element.isConstructor) {
-        CallStructure callStructure = new CallStructure.unnamed(
-            arguments.length, node.typeArguments.length);
-        staticUse = new StaticUse.constructorInvoke(element, callStructure);
+        CallStructure callStructure =
+            CallStructure.unnamed(arguments.length, node.typeArguments.length);
+        staticUse = StaticUse.constructorInvoke(element, callStructure);
       } else if (element.isGetter) {
-        staticUse = new StaticUse.staticGet(element);
+        staticUse = StaticUse.staticGet(element);
       } else if (element.isSetter) {
-        staticUse = new StaticUse.staticSet(element);
+        staticUse = StaticUse.staticSet(element);
       } else {
         assert(element.isFunction);
-        CallStructure callStructure = new CallStructure.unnamed(
-            arguments.length, node.typeArguments.length);
-        staticUse = new StaticUse.staticInvoke(
-            element, callStructure, node.typeArguments);
+        CallStructure callStructure =
+            CallStructure.unnamed(arguments.length, node.typeArguments.length);
+        staticUse =
+            StaticUse.staticInvoke(element, callStructure, node.typeArguments);
       }
       _registry.registerStaticUse(staticUse);
       push(_emitter.staticFunctionAccess(element));
-      push(new js.Call(pop(), arguments,
-          sourceInformation: node.sourceInformation));
+      push(
+          js.Call(pop(), arguments, sourceInformation: node.sourceInformation));
     }
   }
 
@@ -2193,24 +2186,24 @@
     bool useAliasedSuper = canUseAliasedSuperMember(superElement, selector);
     if (selector.isGetter) {
       if (superElement.isField || superElement.isGetter) {
-        _registry.registerStaticUse(new StaticUse.superGet(superElement));
+        _registry.registerStaticUse(StaticUse.superGet(superElement));
       } else {
-        _registry.registerStaticUse(new StaticUse.superTearOff(node.element));
+        _registry.registerStaticUse(StaticUse.superTearOff(node.element));
       }
     } else if (selector.isSetter) {
       if (superElement.isField) {
-        _registry.registerStaticUse(new StaticUse.superFieldSet(superElement));
+        _registry.registerStaticUse(StaticUse.superFieldSet(superElement));
       } else {
         assert(superElement.isSetter);
-        _registry.registerStaticUse(new StaticUse.superSetterSet(superElement));
+        _registry.registerStaticUse(StaticUse.superSetterSet(superElement));
       }
     } else {
       if (useAliasedSuper) {
-        _registry.registerStaticUse(new StaticUse.superInvoke(
-            superElement, new CallStructure.unnamed(node.inputs.length)));
+        _registry.registerStaticUse(StaticUse.superInvoke(
+            superElement, CallStructure.unnamed(node.inputs.length)));
       } else {
-        _registry.registerStaticUse(new StaticUse.superInvoke(
-            superElement, new CallStructure.unnamed(node.inputs.length - 1)));
+        _registry.registerStaticUse(StaticUse.superInvoke(
+            superElement, CallStructure.unnamed(node.inputs.length - 1)));
       }
     }
 
@@ -2218,11 +2211,11 @@
       // TODO(sra): We can lower these in the simplifier.
       js.Name fieldName = _namer.instanceFieldPropertyName(superElement);
       use(node.getDartReceiver(_closedWorld));
-      js.PropertyAccess access = new js.PropertyAccess(pop(), fieldName)
+      js.PropertyAccess access = js.PropertyAccess(pop(), fieldName)
           .withSourceInformation(node.sourceInformation);
       if (node.isSetter) {
         use(node.value);
-        push(new js.Assignment(access, pop())
+        push(js.Assignment(access, pop())
             .withSourceInformation(node.sourceInformation));
       } else {
         push(access);
@@ -2235,9 +2228,9 @@
           // will be created, and that this tear-off must bypass ordinary
           // dispatch to ensure the super method is invoked.
           FunctionEntity helper = _commonElements.closureFromTearOff;
-          _registry.registerStaticUse(new StaticUse.staticInvoke(
+          _registry.registerStaticUse(StaticUse.staticInvoke(
               helper,
-              new CallStructure.unnamed(
+              CallStructure.unnamed(
                   node.inputs.length, node.typeArguments.length),
               node.typeArguments));
           methodName = _namer.invocationName(selector);
@@ -2279,13 +2272,13 @@
   @override
   visitFieldSet(HFieldSet node) {
     FieldEntity element = node.element;
-    _registry.registerStaticUse(new StaticUse.fieldSet(element));
+    _registry.registerStaticUse(StaticUse.fieldSet(element));
     js.Name name = _namer.instanceFieldPropertyName(element);
     use(node.receiver);
     js.Expression receiver = pop();
     use(node.value);
-    push(new js.Assignment(
-            new js.PropertyAccess(receiver, name)
+    push(js.Assignment(
+            js.PropertyAccess(receiver, name)
                 .withSourceInformation(node.sourceInformation),
             pop())
         .withSourceInformation(node.sourceInformation));
@@ -2294,27 +2287,27 @@
   @override
   visitGetLength(HGetLength node) {
     use(node.receiver);
-    push(new js.PropertyAccess.field(pop(), 'length')
+    push(js.PropertyAccess.field(pop(), 'length')
         .withSourceInformation(node.sourceInformation));
   }
 
   @override
   visitReadModifyWrite(HReadModifyWrite node) {
     FieldEntity element = node.element;
-    _registry.registerStaticUse(new StaticUse.fieldGet(element));
-    _registry.registerStaticUse(new StaticUse.fieldSet(element));
+    _registry.registerStaticUse(StaticUse.fieldGet(element));
+    _registry.registerStaticUse(StaticUse.fieldSet(element));
     js.Name name = _namer.instanceFieldPropertyName(element);
     use(node.receiver);
-    js.Expression fieldReference = new js.PropertyAccess(pop(), name);
+    js.Expression fieldReference = js.PropertyAccess(pop(), name);
     if (node.isPreOp) {
-      push(new js.Prefix(node.jsOp, fieldReference)
+      push(js.Prefix(node.jsOp, fieldReference)
           .withSourceInformation(node.sourceInformation));
     } else if (node.isPostOp) {
-      push(new js.Postfix(node.jsOp, fieldReference)
+      push(js.Postfix(node.jsOp, fieldReference)
           .withSourceInformation(node.sourceInformation));
     } else {
       use(node.value);
-      push(new js.Assignment.compound(fieldReference, node.jsOp, pop())
+      push(js.Assignment.compound(fieldReference, node.jsOp, pop())
           .withSourceInformation(node.sourceInformation));
     }
   }
@@ -2457,7 +2450,7 @@
   visitCreate(HCreate node) {
     js.Expression jsClassReference = _emitter.constructorAccess(node.element);
     List<js.Expression> arguments = visitArguments(node.inputs, start: 0);
-    push(new js.New(jsClassReference, arguments)
+    push(js.New(jsClassReference, arguments)
         .withSourceInformation(node.sourceInformation));
     // We also use HCreate to instantiate closure classes that belong to
     // function expressions. We have to register their use here, as otherwise
@@ -2469,25 +2462,24 @@
     }
     node.instantiatedTypes?.forEach(_registry.registerInstantiation);
     if (node.callMethod != null) {
-      _registry
-          ?.registerStaticUse(new StaticUse.implicitInvoke(node.callMethod));
+      _registry?.registerStaticUse(StaticUse.implicitInvoke(node.callMethod));
       _registry?.registerInstantiatedClosure(node.callMethod);
     }
   }
 
   @override
   visitCreateBox(HCreateBox node) {
-    push(new js.ObjectInitializer(<js.Property>[]));
+    push(js.ObjectInitializer(<js.Property>[]));
   }
 
   js.Expression newLiteralBool(
       bool value, SourceInformation sourceInformation) {
     if (_options.enableMinification) {
       // Use !0 for true, !1 for false.
-      return new js.Prefix("!", new js.LiteralNumber(value ? "0" : "1"))
+      return js.Prefix("!", js.LiteralNumber(value ? "0" : "1"))
           .withSourceInformation(sourceInformation);
     } else {
-      return new js.LiteralBool(value).withSourceInformation(sourceInformation);
+      return js.LiteralBool(value).withSourceInformation(sourceInformation);
     }
   }
 
@@ -2506,11 +2498,11 @@
     assert(isGenerateAtUseSite(node));
     generateConstant(node.constant, node.sourceInformation);
 
-    _registry.registerConstantUse(new ConstantUse.literal(node.constant));
+    _registry.registerConstantUse(ConstantUse.literal(node.constant));
     if (node.constant.isType) {
       TypeConstantValue typeConstant = node.constant;
       _registry.registerTypeUse(
-          new TypeUse.constTypeLiteral(typeConstant.representedType));
+          TypeUse.constTypeLiteral(typeConstant.representedType));
     }
   }
 
@@ -2575,7 +2567,7 @@
     }
     if (!handledBySpecialCase) {
       use(input);
-      push(new js.Prefix("!", pop()).withSourceInformation(sourceInformation));
+      push(js.Prefix("!", pop()).withSourceInformation(sourceInformation));
     }
   }
 
@@ -2583,7 +2575,7 @@
   visitParameterValue(HParameterValue node) {
     assert(!isGenerateAtUseSite(node));
     String name = variableNames.getName(node);
-    parameters.add(new js.Parameter(name));
+    parameters.add(js.Parameter(name));
     declaredLocals.add(name);
   }
 
@@ -2615,14 +2607,14 @@
       }
       js.Expression left = pop();
       use(node.inputs[0]);
-      push(new js.Binary(operation, left, pop()));
+      push(js.Binary(operation, left, pop()));
     } else {
       use(input);
       js.Expression test = pop();
       use(node.inputs[0]);
       js.Expression then = pop();
       use(node.inputs[1]);
-      push(new js.Conditional(test, then, pop()));
+      push(js.Conditional(test, then, pop()));
     }
   }
 
@@ -2639,7 +2631,7 @@
 
   @override
   visitThis(HThis node) {
-    push(new js.This());
+    push(js.This());
   }
 
   @override
@@ -2659,13 +2651,13 @@
   @override
   visitAwait(HAwait node) {
     use(node.inputs[0]);
-    push(new js.Await(pop()).withSourceInformation(node.sourceInformation));
+    push(js.Await(pop()).withSourceInformation(node.sourceInformation));
   }
 
   @override
   visitYield(HYield node) {
     use(node.inputs[0]);
-    pushStatement(new js.DartYield(pop(), node.hasStar)
+    pushStatement(js.DartYield(pop(), node.hasStar)
         .withSourceInformation(node.sourceInformation));
   }
 
@@ -2834,31 +2826,31 @@
       push(_emitter
           .staticClosureAccess(element)
           .withSourceInformation(node.sourceInformation));
-      _registry.registerStaticUse(new StaticUse.staticTearOff(element));
+      _registry.registerStaticUse(StaticUse.staticTearOff(element));
     } else {
       push(_emitter
           .staticFieldAccess(element)
           .withSourceInformation(node.sourceInformation));
-      _registry.registerStaticUse(new StaticUse.staticGet(element));
+      _registry.registerStaticUse(StaticUse.staticGet(element));
     }
   }
 
   @override
   void visitLazyStatic(HLazyStatic node) {
     FieldEntity element = node.element;
-    _registry.registerStaticUse(new StaticUse.staticInit(element));
+    _registry.registerStaticUse(StaticUse.staticInit(element));
     js.Expression lazyGetter = _emitter.isolateLazyInitializerAccess(element);
-    js.Call call = new js.Call(lazyGetter, <js.Expression>[],
+    js.Call call = js.Call(lazyGetter, <js.Expression>[],
         sourceInformation: node.sourceInformation);
     push(call);
   }
 
   @override
   void visitStaticStore(HStaticStore node) {
-    _registry.registerStaticUse(new StaticUse.staticSet(node.element));
+    _registry.registerStaticUse(StaticUse.staticSet(node.element));
     js.Node variable = _emitter.staticFieldAccess(node.element);
     use(node.inputs[0]);
-    push(new js.Assignment(variable, pop())
+    push(js.Assignment(variable, pop())
         .withSourceInformation(node.sourceInformation));
   }
 
@@ -2867,7 +2859,7 @@
     use(node.left);
     js.Expression jsLeft = pop();
     use(node.right);
-    push(new js.Binary('+', jsLeft, pop())
+    push(js.Binary('+', jsLeft, pop())
         .withSourceInformation(node.sourceInformation));
   }
 
@@ -2887,17 +2879,17 @@
         // The context is already <string> + value.
       } else {
         // Force an empty string for the first operand.
-        push(new js.Binary('+', js.string(""), pop())
+        push(js.Binary('+', js.string(""), pop())
             .withSourceInformation(node.sourceInformation));
       }
     } else {
       FunctionEntity convertToString =
           _commonElements.stringInterpolationHelper;
       _registry.registerStaticUse(
-          new StaticUse.staticInvoke(convertToString, CallStructure.ONE_ARG));
+          StaticUse.staticInvoke(convertToString, CallStructure.ONE_ARG));
       js.Expression jsHelper = _emitter.staticFunctionAccess(convertToString);
       use(input);
-      push(new js.Call(jsHelper, <js.Expression>[pop()],
+      push(js.Call(jsHelper, <js.Expression>[pop()],
           sourceInformation: node.sourceInformation));
     }
   }
@@ -2915,7 +2907,7 @@
       use(input);
       return pop();
     }).toList();
-    push(new js.ArrayInitializer(elements)
+    push(js.ArrayInitializer(elements)
         .withSourceInformation(node.sourceInformation));
   }
 
@@ -2924,7 +2916,7 @@
     use(node.receiver);
     js.Expression receiver = pop();
     use(node.index);
-    push(new js.PropertyAccess(receiver, pop())
+    push(js.PropertyAccess(receiver, pop())
         .withSourceInformation(node.sourceInformation));
   }
 
@@ -2935,15 +2927,15 @@
     use(node.index);
     js.Expression index = pop();
     use(node.value);
-    push(new js.Assignment(new js.PropertyAccess(receiver, index), pop())
+    push(js.Assignment(js.PropertyAccess(receiver, index), pop())
         .withSourceInformation(node.sourceInformation));
   }
 
   void checkTypeOf(HInstruction input, String cmp, String typeName,
       SourceInformation sourceInformation) {
     use(input);
-    js.Expression typeOf = new js.Prefix("typeof", pop());
-    push(new js.Binary(cmp, typeOf, js.string(typeName))
+    js.Expression typeOf = js.Prefix("typeof", pop());
+    push(js.Binary(cmp, typeOf, js.string(typeName))
         .withSourceInformation(sourceInformation));
   }
 
@@ -3008,7 +3000,7 @@
 
   @override
   void visitBoolConversion(HBoolConversion node) {
-    _registry.registerTypeUse(new TypeUse.isCheck(_commonElements.boolType));
+    _registry.registerTypeUse(TypeUse.isCheck(_commonElements.boolType));
     CheckedModeHelper helper = const CheckedModeHelper('boolConversionCheck');
     StaticUse staticUse = helper.getStaticUse(_commonElements);
     _registry.registerStaticUse(staticUse);
@@ -3046,7 +3038,7 @@
 
   @override
   visitIsTest(HIsTest node) {
-    _registry.registerTypeUse(new TypeUse.isCheck(node.dartType));
+    _registry.registerTypeUse(TypeUse.isCheck(node.dartType));
 
     use(node.typeInput);
     js.Expression first = pop();
@@ -3065,7 +3057,7 @@
     _emitIsTestSimple(node);
   }
 
-  _emitIsTestSimple(HIsTestSimple node, {bool negative: false}) {
+  _emitIsTestSimple(HIsTestSimple node, {bool negative = false}) {
     use(node.checkedInput);
     js.Expression value = pop();
     String relation = negative ? '!=' : '==';
@@ -3181,7 +3173,7 @@
 
     void useHelper(FunctionEntity helper) {
       _registry.registerStaticUse(
-          new StaticUse.staticInvoke(helper, CallStructure.ONE_ARG));
+          StaticUse.staticInvoke(helper, CallStructure.ONE_ARG));
       js.Expression helperAccess = _emitter.staticFunctionAccess(helper);
       push(js.js(r'#(#)', [helperAccess, receiver]).withSourceInformation(
           node.sourceInformation));
@@ -3291,7 +3283,7 @@
     ]).withSourceInformation(node.sourceInformation));
 
     _registry.registerStaticUse(
-        new StaticUse.directInvoke(method, selector.callStructure, null));
+        StaticUse.directInvoke(method, selector.callStructure, null));
   }
 
   @override
@@ -3313,11 +3305,11 @@
     ]).withSourceInformation(node.sourceInformation));
 
     _registry.registerStaticUse(
-        new StaticUse.directInvoke(method, selector.callStructure, null));
+        StaticUse.directInvoke(method, selector.callStructure, null));
   }
 
   _emitIsLateSentinel(HIsLateSentinel node, SourceInformation sourceInformation,
-      {inverse: false}) {
+      {inverse = false}) {
     use(node.inputs[0]);
     js.Expression value = pop();
     js.Expression sentinel =
diff --git a/pkg/compiler/lib/src/ssa/codegen_helpers.dart b/pkg/compiler/lib/src/ssa/codegen_helpers.dart
index 5bf162b..3305b11 100644
--- a/pkg/compiler/lib/src/ssa/codegen_helpers.dart
+++ b/pkg/compiler/lib/src/ssa/codegen_helpers.dart
@@ -266,18 +266,18 @@
       if (isMatchingRead(left)) {
         if (left.usedBy.length == 1) {
           if (right is HConstant && right.constant.isOne) {
-            HInstruction rmw = new HReadModifyWrite.preOp(
+            HInstruction rmw = HReadModifyWrite.preOp(
                 setter.element, incrementOp, receiver, op.instructionType);
             return replaceOp(rmw, left);
           } else {
-            HInstruction rmw = new HReadModifyWrite.assignOp(
+            HInstruction rmw = HReadModifyWrite.assignOp(
                 setter.element, assignOp, receiver, right, op.instructionType);
             return replaceOp(rmw, left);
           }
         } else if (op.usedBy.length == 1 &&
             right is HConstant &&
             right.constant.isOne) {
-          HInstruction rmw = new HReadModifyWrite.postOp(
+          HInstruction rmw = HReadModifyWrite.postOp(
               setter.element, incrementOp, receiver, op.instructionType);
           block.addAfter(left, rmw);
           block.remove(setter);
@@ -294,7 +294,7 @@
         String assignOp, HInstruction left, HInstruction right) {
       if (isMatchingRead(left)) {
         if (left.usedBy.length == 1) {
-          HInstruction rmw = new HReadModifyWrite.assignOp(
+          HInstruction rmw = HReadModifyWrite.assignOp(
               setter.element, assignOp, receiver, right, op.instructionType);
           return replaceOp(rmw, left);
         }
@@ -810,7 +810,7 @@
     // The expectedInputs list holds non-trivial instructions that may
     // be generated at their use site, if they occur in the correct order.
     if (expectedInputs == null) expectedInputs = <HInstruction>[];
-    if (pureInputs == null) pureInputs = new Set<HInstruction>();
+    if (pureInputs == null) pureInputs = Set<HInstruction>();
 
     // Pop instructions from expectedInputs until instruction is found.
     // Return true if it is found, or false if not.
@@ -1133,7 +1133,7 @@
   _cache(
       HInstruction node, bool Function(HInstruction) cacheable, String name) {
     var users = node.usedBy.toList();
-    var reference = new HLateValue(node);
+    var reference = HLateValue(node);
     // TODO(sra): The sourceInformation should really be from the function
     // entry, not the use of `this`.
     reference.sourceInformation = node.sourceInformation;
diff --git a/pkg/compiler/lib/src/ssa/interceptor_simplifier.dart b/pkg/compiler/lib/src/ssa/interceptor_simplifier.dart
index c0b6254..4def583 100644
--- a/pkg/compiler/lib/src/ssa/interceptor_simplifier.dart
+++ b/pkg/compiler/lib/src/ssa/interceptor_simplifier.dart
@@ -117,7 +117,7 @@
       return _graph.thisInstruction;
     }
 
-    ConstantValue constant = new InterceptorConstantValue(constantInterceptor);
+    ConstantValue constant = InterceptorConstantValue(constantInterceptor);
     return _graph.addConstant(constant, _closedWorld);
   }
 
@@ -340,7 +340,7 @@
               interceptedClasses);
           if (interceptorClass != null) {
             HInstruction constantInstruction = _graph.addConstant(
-                new InterceptorConstantValue(interceptorClass), _closedWorld);
+                InterceptorConstantValue(interceptorClass), _closedWorld);
             node.conditionalConstantInterceptor = constantInstruction;
             constantInstruction.usedBy.add(node);
             return false;
diff --git a/pkg/compiler/lib/src/ssa/invoke_dynamic_specializers.dart b/pkg/compiler/lib/src/ssa/invoke_dynamic_specializers.dart
index ba133a6..2ceac61 100644
--- a/pkg/compiler/lib/src/ssa/invoke_dynamic_specializers.dart
+++ b/pkg/compiler/lib/src/ssa/invoke_dynamic_specializers.dart
@@ -374,7 +374,7 @@
       OptimizationTestLog log) {
     HInstruction input = instruction.inputs[1];
     if (input.isNumber(closedWorld.abstractValueDomain).isDefinitelyTrue) {
-      HBitNot converted = new HBitNot(
+      HBitNot converted = HBitNot(
           input, computeTypeFromInputTypes(instruction, results, closedWorld));
       log?.registerBitNot(instruction, converted);
       return converted;
@@ -420,7 +420,7 @@
       OptimizationTestLog log) {
     HInstruction input = instruction.inputs[1];
     if (input.isNumber(closedWorld.abstractValueDomain).isDefinitelyTrue) {
-      HNegate converted = new HNegate(
+      HNegate converted = HNegate(
           input, computeTypeFromInputTypes(instruction, results, closedWorld));
       log?.registerUnaryNegate(instruction, converted);
       return converted;
@@ -459,7 +459,7 @@
       OptimizationTestLog log) {
     HInstruction input = instruction.inputs[1];
     if (input.isNumber(closedWorld.abstractValueDomain).isDefinitelyTrue) {
-      HAbs converted = new HAbs(
+      HAbs converted = HAbs(
           input, computeTypeFromInputTypes(instruction, results, closedWorld));
       log?.registerAbs(instruction, converted);
       return converted;
@@ -585,7 +585,7 @@
   @override
   HInstruction newBuiltinVariant(HInvokeDynamic instruction,
       GlobalTypeInferenceResults results, JClosedWorld closedWorld) {
-    return new HAdd(instruction.inputs[1], instruction.inputs[2],
+    return HAdd(instruction.inputs[1], instruction.inputs[2],
         computeTypeFromInputTypes(instruction, results, closedWorld));
   }
 
@@ -617,7 +617,7 @@
   @override
   HInstruction newBuiltinVariant(HInvokeDynamic instruction,
       GlobalTypeInferenceResults results, JClosedWorld closedWorld) {
-    return new HDivide(instruction.inputs[1], instruction.inputs[2],
+    return HDivide(instruction.inputs[1], instruction.inputs[2],
         closedWorld.abstractValueDomain.numType);
   }
 
@@ -658,7 +658,7 @@
     HInstruction receiver = instruction.getDartReceiver(closedWorld);
     if (inputsArePositiveIntegers(instruction, closedWorld) &&
         !canBeNegativeZero(receiver)) {
-      return new HRemainder(instruction.inputs[1], instruction.inputs[2],
+      return HRemainder(instruction.inputs[1], instruction.inputs[2],
           computeTypeFromInputTypes(instruction, results, closedWorld));
     }
     // TODO(sra):
@@ -700,7 +700,7 @@
   @override
   HInstruction newBuiltinVariant(HInvokeDynamic instruction,
       GlobalTypeInferenceResults results, JClosedWorld closedWorld) {
-    return new HRemainder(instruction.inputs[1], instruction.inputs[2],
+    return HRemainder(instruction.inputs[1], instruction.inputs[2],
         computeTypeFromInputTypes(instruction, results, closedWorld));
   }
 
@@ -731,7 +731,7 @@
   @override
   HInstruction newBuiltinVariant(HInvokeDynamic instruction,
       GlobalTypeInferenceResults results, JClosedWorld closedWorld) {
-    return new HMultiply(instruction.inputs[1], instruction.inputs[2],
+    return HMultiply(instruction.inputs[1], instruction.inputs[2],
         computeTypeFromInputTypes(instruction, results, closedWorld));
   }
 
@@ -753,7 +753,7 @@
   @override
   HInstruction newBuiltinVariant(HInvokeDynamic instruction,
       GlobalTypeInferenceResults results, JClosedWorld closedWorld) {
-    return new HSubtract(instruction.inputs[1], instruction.inputs[2],
+    return HSubtract(instruction.inputs[1], instruction.inputs[2],
         computeTypeFromInputTypes(instruction, results, closedWorld));
   }
 
@@ -858,7 +858,7 @@
   @override
   HInstruction newBuiltinVariant(HInvokeDynamic instruction,
       GlobalTypeInferenceResults results, JClosedWorld closedWorld) {
-    return new HTruncatingDivide(instruction.inputs[1], instruction.inputs[2],
+    return HTruncatingDivide(instruction.inputs[1], instruction.inputs[2],
         computeTypeFromInputTypes(instruction, results, closedWorld));
   }
 
@@ -893,8 +893,7 @@
       HConstant rightConstant = instruction;
       IntConstantValue intConstant = rightConstant.constant;
       int value = intConstant.intValue.toInt();
-      assert(intConstant.intValue ==
-          new BigInt.from(intConstant.intValue.toInt()));
+      assert(intConstant.intValue == BigInt.from(intConstant.intValue.toInt()));
       return value >= low && value <= high;
     }
     // TODO(sra): Integrate with the bit-width analysis in codegen.dart.
@@ -959,7 +958,7 @@
   @override
   HInstruction newBuiltinVariant(HInvokeDynamic instruction,
       GlobalTypeInferenceResults results, JClosedWorld closedWorld) {
-    return new HShiftLeft(instruction.inputs[1], instruction.inputs[2],
+    return HShiftLeft(instruction.inputs[1], instruction.inputs[2],
         computeTypeFromInputTypes(instruction, results, closedWorld));
   }
 
@@ -1030,7 +1029,7 @@
   @override
   HInstruction newBuiltinVariant(HInvokeDynamic instruction,
       GlobalTypeInferenceResults results, JClosedWorld closedWorld) {
-    return new HShiftRight(instruction.inputs[1], instruction.inputs[2],
+    return HShiftRight(instruction.inputs[1], instruction.inputs[2],
         computeTypeFromInputTypes(instruction, results, closedWorld));
   }
 
@@ -1134,7 +1133,7 @@
   @override
   HInstruction newBuiltinVariant(HInvokeDynamic instruction,
       GlobalTypeInferenceResults results, JClosedWorld closedWorld) {
-    return new HBitOr(instruction.inputs[1], instruction.inputs[2],
+    return HBitOr(instruction.inputs[1], instruction.inputs[2],
         computeTypeFromInputTypes(instruction, results, closedWorld));
   }
 
@@ -1171,7 +1170,7 @@
   @override
   HInstruction newBuiltinVariant(HInvokeDynamic instruction,
       GlobalTypeInferenceResults results, JClosedWorld closedWorld) {
-    return new HBitAnd(instruction.inputs[1], instruction.inputs[2],
+    return HBitAnd(instruction.inputs[1], instruction.inputs[2],
         computeTypeFromInputTypes(instruction, results, closedWorld));
   }
 
@@ -1205,7 +1204,7 @@
   @override
   HInstruction newBuiltinVariant(HInvokeDynamic instruction,
       GlobalTypeInferenceResults results, JClosedWorld closedWorld) {
-    return new HBitXor(instruction.inputs[1], instruction.inputs[2],
+    return HBitXor(instruction.inputs[1], instruction.inputs[2],
         computeTypeFromInputTypes(instruction, results, closedWorld));
   }
 
@@ -1310,7 +1309,7 @@
   @override
   HInstruction newBuiltinVariant(
       HInvokeDynamic instruction, JClosedWorld closedWorld) {
-    return new HIdentity(instruction.inputs[1], instruction.inputs[2],
+    return HIdentity(instruction.inputs[1], instruction.inputs[2],
         closedWorld.abstractValueDomain.boolType);
   }
 
@@ -1332,7 +1331,7 @@
   @override
   HInstruction newBuiltinVariant(
       HInvokeDynamic instruction, JClosedWorld closedWorld) {
-    return new HLess(instruction.inputs[1], instruction.inputs[2],
+    return HLess(instruction.inputs[1], instruction.inputs[2],
         closedWorld.abstractValueDomain.boolType);
   }
 
@@ -1354,7 +1353,7 @@
   @override
   HInstruction newBuiltinVariant(
       HInvokeDynamic instruction, JClosedWorld closedWorld) {
-    return new HGreater(instruction.inputs[1], instruction.inputs[2],
+    return HGreater(instruction.inputs[1], instruction.inputs[2],
         closedWorld.abstractValueDomain.boolType);
   }
 
@@ -1376,7 +1375,7 @@
   @override
   HInstruction newBuiltinVariant(
       HInvokeDynamic instruction, JClosedWorld closedWorld) {
-    return new HGreaterEqual(instruction.inputs[1], instruction.inputs[2],
+    return HGreaterEqual(instruction.inputs[1], instruction.inputs[2],
         closedWorld.abstractValueDomain.boolType);
   }
 
@@ -1398,7 +1397,7 @@
   @override
   HInstruction newBuiltinVariant(
       HInvokeDynamic instruction, JClosedWorld closedWorld) {
-    return new HLessEqual(instruction.inputs[1], instruction.inputs[2],
+    return HLessEqual(instruction.inputs[1], instruction.inputs[2],
         closedWorld.abstractValueDomain.boolType);
   }
 
diff --git a/pkg/compiler/lib/src/ssa/jump_handler.dart b/pkg/compiler/lib/src/ssa/jump_handler.dart
index 767df33..24faf54 100644
--- a/pkg/compiler/lib/src/ssa/jump_handler.dart
+++ b/pkg/compiler/lib/src/ssa/jump_handler.dart
@@ -22,7 +22,7 @@
 
 abstract class JumpHandler {
   factory JumpHandler(KernelSsaGraphBuilder builder, JumpTarget target) {
-    return new TargetJumpHandler(builder, target);
+    return TargetJumpHandler(builder, target);
   }
   void generateBreak(SourceInformation sourceInformation,
       [LabelDefinition label]);
@@ -103,14 +103,14 @@
     HInstruction breakInstruction;
     if (label == null) {
       breakInstruction =
-          new HBreak(_abstractValueDomain, target, sourceInformation);
+          HBreak(_abstractValueDomain, target, sourceInformation);
     } else {
       breakInstruction =
-          new HBreak.toLabel(_abstractValueDomain, label, sourceInformation);
+          HBreak.toLabel(_abstractValueDomain, label, sourceInformation);
     }
-    LocalsHandler locals = new LocalsHandler.from(builder.localsHandler);
+    LocalsHandler locals = LocalsHandler.from(builder.localsHandler);
     builder.close(breakInstruction);
-    jumps.add(new _JumpHandlerEntry(breakInstruction, locals));
+    jumps.add(_JumpHandlerEntry(breakInstruction, locals));
   }
 
   @override
@@ -119,17 +119,17 @@
     HInstruction continueInstruction;
     if (label == null) {
       continueInstruction =
-          new HContinue(_abstractValueDomain, target, sourceInformation);
+          HContinue(_abstractValueDomain, target, sourceInformation);
     } else {
       continueInstruction =
-          new HContinue.toLabel(_abstractValueDomain, label, sourceInformation);
+          HContinue.toLabel(_abstractValueDomain, label, sourceInformation);
       // Switch case continue statements must be handled by the
       // [SwitchCaseJumpHandler].
       assert(!label.target.isSwitchCase);
     }
-    LocalsHandler locals = new LocalsHandler.from(builder.localsHandler);
+    LocalsHandler locals = LocalsHandler.from(builder.localsHandler);
     builder.close(continueInstruction);
-    jumps.add(new _JumpHandlerEntry(continueInstruction, locals));
+    jumps.add(_JumpHandlerEntry(continueInstruction, locals));
   }
 
   @override
@@ -184,7 +184,7 @@
 abstract class SwitchCaseJumpHandler extends TargetJumpHandler {
   /// Map from switch case targets to indices used to encode the flow of the
   /// switch case loop.
-  final Map<JumpTarget, int> targetIndexMap = new Map<JumpTarget, int>();
+  final Map<JumpTarget, int> targetIndexMap = Map<JumpTarget, int>();
 
   SwitchCaseJumpHandler(KernelSsaGraphBuilder builder, JumpTarget target)
       : super(builder, target);
@@ -197,12 +197,12 @@
       // for a switch statement with continue statements. See
       // [SsaFromAstMixin.buildComplexSwitchStatement] for detail.
 
-      HInstruction breakInstruction = new HBreak(
+      HInstruction breakInstruction = HBreak(
           _abstractValueDomain, target, sourceInformation,
           breakSwitchContinueLoop: true);
-      LocalsHandler locals = new LocalsHandler.from(builder.localsHandler);
+      LocalsHandler locals = LocalsHandler.from(builder.localsHandler);
       builder.close(breakInstruction);
-      jumps.add(new _JumpHandlerEntry(breakInstruction, locals));
+      jumps.add(_JumpHandlerEntry(breakInstruction, locals));
     } else {
       super.generateBreak(sourceInformation, label);
     }
@@ -227,10 +227,10 @@
 
       assert(label.target.labels.contains(label));
       HInstruction continueInstruction =
-          new HContinue(_abstractValueDomain, target, sourceInformation);
-      LocalsHandler locals = new LocalsHandler.from(builder.localsHandler);
+          HContinue(_abstractValueDomain, target, sourceInformation);
+      LocalsHandler locals = LocalsHandler.from(builder.localsHandler);
       builder.close(continueInstruction);
-      jumps.add(new _JumpHandlerEntry(continueInstruction, locals));
+      jumps.add(_JumpHandlerEntry(continueInstruction, locals));
     } else {
       super.generateContinue(sourceInformation, label);
     }
diff --git a/pkg/compiler/lib/src/ssa/kernel_string_builder.dart b/pkg/compiler/lib/src/ssa/kernel_string_builder.dart
index b6f69b6..c21bc69 100644
--- a/pkg/compiler/lib/src/ssa/kernel_string_builder.dart
+++ b/pkg/compiler/lib/src/ssa/kernel_string_builder.dart
@@ -61,14 +61,14 @@
 
   HInstruction concat(HInstruction left, HInstruction right) {
     HInstruction instruction =
-        new HStringConcat(left, right, _abstractValueDomain.stringType);
+        HStringConcat(left, right, _abstractValueDomain.stringType);
     builder.add(instruction);
     return instruction;
   }
 
   HInstruction stringify(HInstruction expression) {
     HInstruction instruction =
-        new HStringify(expression, _abstractValueDomain.stringType)
+        HStringify(expression, _abstractValueDomain.stringType)
           ..sourceInformation = expression.sourceInformation;
     builder.add(instruction);
     return instruction;
diff --git a/pkg/compiler/lib/src/ssa/locals_handler.dart b/pkg/compiler/lib/src/ssa/locals_handler.dart
index 502d335..37da289 100644
--- a/pkg/compiler/lib/src/ssa/locals_handler.dart
+++ b/pkg/compiler/lib/src/ssa/locals_handler.dart
@@ -32,8 +32,8 @@
   /// iteration order a function only of insertions and not a function of
   /// e.g. Element hash codes.  I'd prefer to use a SortedMap but some elements
   /// don't have source locations for [Elements.compareByPosition].
-  Map<Local, HInstruction> directLocals = new Map<Local, HInstruction>();
-  Map<Local, FieldEntity> redirectionMapping = new Map<Local, FieldEntity>();
+  Map<Local, HInstruction> directLocals = Map<Local, HInstruction>();
+  Map<Local, FieldEntity> redirectionMapping = Map<Local, FieldEntity>();
   final KernelSsaGraphBuilder builder;
 
   MemberEntity _scopeInfoMember;
@@ -41,7 +41,7 @@
   KernelToLocalsMap _localsMap;
 
   Map<TypeVariableEntity, TypeVariableLocal> typeVariableLocals =
-      new Map<TypeVariableEntity, TypeVariableLocal>();
+      Map<TypeVariableEntity, TypeVariableLocal>();
   final Entity executableContext;
   final MemberEntity memberContext;
 
@@ -106,7 +106,7 @@
   /// copy the [directLocals], since the other fields can be shared
   /// throughout the AST visit.
   LocalsHandler.from(LocalsHandler other)
-      : directLocals = new Map<Local, HInstruction>.from(other.directLocals),
+      : directLocals = Map<Local, HInstruction>.from(other.directLocals),
         redirectionMapping = other.redirectionMapping,
         executableContext = other.executableContext,
         memberContext = other.memberContext,
@@ -148,7 +148,7 @@
   }
 
   HInstruction createBox(SourceInformation sourceInformation) {
-    HInstruction box = new HCreateBox(_abstractValueDomain.nonNullType)
+    HInstruction box = HCreateBox(_abstractValueDomain.nonNullType)
       ..sourceInformation = sourceInformation;
     builder.add(box);
     return box;
@@ -158,7 +158,7 @@
   /// method creates a box and sets up the redirections.
   void enterScope(
       CapturedScope closureInfo, SourceInformation sourceInformation,
-      {bool forGenerativeConstructorBody: false, HInstruction inlinedBox}) {
+      {bool forGenerativeConstructorBody = false, HInstruction inlinedBox}) {
     // See if any variable in the top-scope of the function is captured. If yes
     // we need to create a box-object.
     if (!closureInfo.requiresContextBox) return;
@@ -261,7 +261,7 @@
       });
       // Inside closure redirect references to itself to [:this:].
       HThis thisInstruction =
-          new HThis(closureData.thisLocal, _abstractValueDomain.nonNullType);
+          HThis(closureData.thisLocal, _abstractValueDomain.nonNullType);
       builder.graph.thisInstruction = thisInstruction;
       builder.graph.entry.addAtEntry(thisInstruction);
       updateLocal(closureData.getClosureEntity(_localsMap), thisInstruction);
@@ -269,7 +269,7 @@
       // Once closures have been mapped to classes their instance members might
       // not have any thisElement if the closure was created inside a static
       // context.
-      HThis thisInstruction = new HThis(scopeInfo.thisLocal, getTypeOfThis());
+      HThis thisInstruction = HThis(scopeInfo.thisLocal, getTypeOfThis());
       builder.graph.thisInstruction = thisInstruction;
       builder.graph.entry.addAtEntry(thisInstruction);
       directLocals[scopeInfo.thisLocal] = thisInstruction;
@@ -289,7 +289,7 @@
         _nativeData.isNativeOrExtendsNative(cls);
     if (_interceptorData.isInterceptedMethod(element)) {
       SyntheticLocal parameter = createLocal('receiver');
-      HParameterValue value = new HParameterValue(parameter, getTypeOfThis());
+      HParameterValue value = HParameterValue(parameter, getTypeOfThis());
       builder.graph.explicitReceiverParameter = value;
       builder.graph.entry.addAfter(directLocals[scopeInfo.thisLocal], value);
       if (builder.lastAddedParameter == null) {
@@ -301,7 +301,7 @@
       SyntheticLocal parameter = createLocal('receiver');
       // Unlike `this`, receiver is nullable since direct calls to generative
       // constructor call the constructor with `null`.
-      HParameterValue value = new HParameterValue(
+      HParameterValue value = HParameterValue(
           parameter, _closedWorld.abstractValueDomain.createNullableExact(cls));
       builder.graph.explicitReceiverParameter = value;
       builder.graph.entry.addAtEntry(value);
@@ -359,7 +359,7 @@
       }
       HInstruction value = directLocals[local];
       if (sourceInformation != null) {
-        value = new HRef(value, sourceInformation);
+        value = HRef(value, sourceInformation);
         builder.add(value);
       }
       return value;
@@ -372,7 +372,7 @@
           ? _abstractValueDomain.nonNullType
           : getTypeOfCapturedVariable(redirect);
       HInstruction fieldGet =
-          new HFieldGet(redirect, receiver, type, sourceInformation);
+          HFieldGet(redirect, receiver, type, sourceInformation);
       builder.add(fieldGet);
       return fieldGet;
     } else if (isBoxed(local)) {
@@ -389,14 +389,14 @@
       assert(localBox != null);
 
       HInstruction box = readLocal(localBox);
-      HInstruction lookup = new HFieldGet(redirect, box,
+      HInstruction lookup = HFieldGet(redirect, box,
           getTypeOfCapturedVariable(redirect), sourceInformation);
       builder.add(lookup);
       return lookup;
     } else {
       assert(_isUsedInTryOrGenerator(local));
       HLocalValue localValue = getLocal(local);
-      HInstruction instruction = new HLocalGet(local, localValue,
+      HInstruction instruction = HLocalGet(local, localValue,
           _abstractValueDomain.dynamicType, sourceInformation);
       builder.add(instruction);
       return instruction;
@@ -424,7 +424,7 @@
 
     return activationVariables.putIfAbsent(local, () {
       HLocalValue localValue =
-          new HLocalValue(local, _abstractValueDomain.nonNullType)
+          HLocalValue(local, _abstractValueDomain.nonNullType)
             ..sourceInformation = sourceInformation;
       builder.graph.entry.addAtExit(localValue);
       return localValue;
@@ -432,8 +432,7 @@
   }
 
   Local getTypeVariableAsLocal(TypeVariableType type) {
-    return typeVariableLocals[type.element] ??=
-        new TypeVariableLocal(type.element);
+    return typeVariableLocals[type.element] ??= TypeVariableLocal(type.element);
   }
 
   /// Sets the [element] to [value]. If the element is boxed or stored in a
@@ -462,12 +461,12 @@
       // Inside the closure the box is stored in a closure-field and cannot
       // be accessed directly.
       HInstruction box = readLocal(localBox);
-      builder.add(new HFieldSet(_abstractValueDomain, redirect, box, value)
+      builder.add(HFieldSet(_abstractValueDomain, redirect, box, value)
         ..sourceInformation = sourceInformation);
     } else {
       assert(_isUsedInTryOrGenerator(local));
       HLocalValue localValue = getLocal(local);
-      builder.add(new HLocalSet(_abstractValueDomain, local, localValue, value)
+      builder.add(HLocalSet(_abstractValueDomain, local, localValue, value)
         ..sourceInformation = sourceInformation);
     }
   }
@@ -532,14 +531,14 @@
   void beginLoopHeader(HBasicBlock loopEntry) {
     // Create a copy because we modify the map while iterating over it.
     Map<Local, HInstruction> savedDirectLocals =
-        new Map<Local, HInstruction>.from(directLocals);
+        Map<Local, HInstruction>.from(directLocals);
 
     // Create phis for all elements in the definitions environment.
     savedDirectLocals.forEach((Local local, HInstruction instruction) {
       if (isAccessedDirectly(local)) {
         // We know 'this' cannot be modified.
         if (local != _scopeInfo.thisLocal) {
-          HPhi phi = new HPhi.singleInput(
+          HPhi phi = HPhi.singleInput(
               local, instruction, _abstractValueDomain.dynamicType);
           loopEntry.addPhi(phi);
           directLocals[local] = phi;
@@ -595,7 +594,7 @@
     // block. Since variable declarations are scoped the declared
     // variable cannot be alive outside the block. Note: this is only
     // true for nodes where we do joins.
-    Map<Local, HInstruction> joinedLocals = new Map<Local, HInstruction>();
+    Map<Local, HInstruction> joinedLocals = Map<Local, HInstruction>();
     otherLocals.directLocals.forEach((Local local, HInstruction instruction) {
       // We know 'this' cannot be modified.
       if (local == _scopeInfo.thisLocal) {
@@ -607,7 +606,7 @@
         if (identical(instruction, mine)) {
           joinedLocals[local] = instruction;
         } else {
-          HInstruction phi = new HPhi.manyInputs(
+          HInstruction phi = HPhi.manyInputs(
               local,
               <HInstruction>[mine, instruction],
               _abstractValueDomain.dynamicType);
@@ -628,11 +627,11 @@
       List<LocalsHandler> localsHandlers, HBasicBlock joinBlock) {
     assert(localsHandlers.length > 0);
     if (localsHandlers.length == 1) return localsHandlers.single;
-    Map<Local, HInstruction> joinedLocals = new Map<Local, HInstruction>();
+    Map<Local, HInstruction> joinedLocals = Map<Local, HInstruction>();
     HInstruction thisValue = null;
     directLocals.forEach((Local local, HInstruction instruction) {
       if (local != _scopeInfo.thisLocal) {
-        HPhi phi = new HPhi.noInputs(local, _abstractValueDomain.dynamicType);
+        HPhi phi = HPhi.noInputs(local, _abstractValueDomain.dynamicType);
         joinedLocals[local] = phi;
         joinBlock.addPhi(phi);
       } else {
@@ -656,7 +655,7 @@
     }
 
     // Remove locals that are not in all handlers.
-    directLocals = new Map<Local, HInstruction>();
+    directLocals = Map<Local, HInstruction>();
     joinedLocals.forEach((Local local, HInstruction instruction) {
       if (local != _scopeInfo.thisLocal &&
           instruction.inputs.length != localsHandlers.length) {
@@ -690,7 +689,7 @@
   }
 
   Map<FieldEntity, AbstractValue> cachedTypesOfCapturedVariables =
-      new Map<FieldEntity, AbstractValue>();
+      Map<FieldEntity, AbstractValue>();
 
   AbstractValue getTypeOfCapturedVariable(FieldEntity element) {
     return cachedTypesOfCapturedVariables.putIfAbsent(element, () {
@@ -705,7 +704,7 @@
   Map<Local, HLocalValue> activationVariables = <Local, HLocalValue>{};
 
   SyntheticLocal createLocal(String name) {
-    return new SyntheticLocal(name, executableContext, memberContext);
+    return SyntheticLocal(name, executableContext, memberContext);
   }
 }
 
diff --git a/pkg/compiler/lib/src/ssa/logging.dart b/pkg/compiler/lib/src/ssa/logging.dart
index 77c888e..fcbb3ab 100644
--- a/pkg/compiler/lib/src/ssa/logging.dart
+++ b/pkg/compiler/lib/src/ssa/logging.dart
@@ -26,14 +26,14 @@
         return null;
       }
     }
-    Features features = new Features();
+    Features features = Features();
     f(features);
-    entries.add(new OptimizationLogEntry(tag, features));
+    entries.add(OptimizationLogEntry(tag, features));
     return features;
   }
 
   void registerNullCheck(HInstruction original, HNullCheck check) {
-    Features features = new Features();
+    Features features = Features();
     if (check.selector != null) {
       features['selector'] = check.selector.name;
     }
@@ -41,12 +41,12 @@
       features['field'] =
           '${check.field.enclosingClass.name}.${check.field.name}';
     }
-    entries.add(new OptimizationLogEntry('NullCheck', features));
+    entries.add(OptimizationLogEntry('NullCheck', features));
   }
 
   void registerConditionValue(
       HInstruction original, bool value, String where, int count) {
-    Features features = new Features();
+    Features features = Features();
     features['value'] = '$value';
     features['where'] = where;
     features['count'] = '$count';
@@ -54,52 +54,52 @@
   }
 
   void registerFieldGet(HInvokeDynamicGetter original, HFieldGet converted) {
-    Features features = new Features();
+    Features features = Features();
     if (converted.element != null) {
       features['name'] =
           '${converted.element.enclosingClass.name}.${converted.element.name}';
     } else {
       features['name'] = '<null-guard>';
     }
-    entries.add(new OptimizationLogEntry('FieldGet', features));
+    entries.add(OptimizationLogEntry('FieldGet', features));
   }
 
   void registerFieldSet(HInvokeDynamicSetter original, [HFieldSet converted]) {
-    Features features = new Features();
+    Features features = Features();
     if (converted != null) {
       features['name'] =
           '${converted.element.enclosingClass.name}.${converted.element.name}';
     } else {
       features['removed'] = original.selector.name;
     }
-    entries.add(new OptimizationLogEntry('FieldSet', features));
+    entries.add(OptimizationLogEntry('FieldSet', features));
   }
 
   void registerFieldCall(HInvokeDynamicMethod original, HFieldGet converted) {
-    Features features = new Features();
+    Features features = Features();
     if (converted.element != null) {
       features['name'] =
           '${converted.element.enclosingClass.name}.${converted.element.name}';
     } else {
       features['name'] = '<null-guard>';
     }
-    entries.add(new OptimizationLogEntry('FieldCall', features));
+    entries.add(OptimizationLogEntry('FieldCall', features));
   }
 
   void registerConstantFieldGet(
       HInvokeDynamicGetter original, FieldEntity field, HConstant converted) {
-    Features features = new Features();
+    Features features = Features();
     features['name'] = '${field.enclosingClass.name}.${field.name}';
     features['value'] = converted.constant.toStructuredText(_dartTypes);
-    entries.add(new OptimizationLogEntry('ConstantFieldGet', features));
+    entries.add(OptimizationLogEntry('ConstantFieldGet', features));
   }
 
   void registerConstantFieldCall(
       HInvokeDynamicMethod original, FieldEntity field, HConstant converted) {
-    Features features = new Features();
+    Features features = Features();
     features['name'] = '${field.enclosingClass.name}.${field.name}';
     features['value'] = converted.constant.toStructuredText(_dartTypes);
-    entries.add(new OptimizationLogEntry('ConstantFieldCall', features));
+    entries.add(OptimizationLogEntry('ConstantFieldCall', features));
   }
 
   Features _registerSpecializer(
@@ -218,17 +218,17 @@
   }
 
   void registerCodeUnitAt(HInvokeDynamic original) {
-    Features features = new Features();
+    Features features = Features();
     features['name'] = original.selector.name;
-    entries.add(new OptimizationLogEntry('CodeUnitAt', features));
+    entries.add(OptimizationLogEntry('CodeUnitAt', features));
   }
 
   void registerCompareTo(HInvokeDynamic original, [HConstant converted]) {
-    Features features = new Features();
+    Features features = Features();
     if (converted != null) {
       features['constant'] = converted.constant.toDartText(_dartTypes);
     }
-    entries.add(new OptimizationLogEntry('CompareTo', features));
+    entries.add(OptimizationLogEntry('CompareTo', features));
   }
 
   void registerSubstring(HInvokeDynamic original) {
@@ -252,7 +252,7 @@
   }
 
   void registerPrimitiveCheck(HInstruction original, HPrimitiveCheck check) {
-    Features features = new Features();
+    Features features = Features();
 
     if (check.isReceiverTypeCheck) {
       features['kind'] = 'receiver';
@@ -262,7 +262,7 @@
     if (check.typeExpression != null) {
       features['type'] = '${check.typeExpression}';
     }
-    entries.add(new OptimizationLogEntry('PrimitiveCheck', features));
+    entries.add(OptimizationLogEntry('PrimitiveCheck', features));
   }
 
   String getText() {
diff --git a/pkg/compiler/lib/src/ssa/loop_handler.dart b/pkg/compiler/lib/src/ssa/loop_handler.dart
index d729fef..73e96e9 100644
--- a/pkg/compiler/lib/src/ssa/loop_handler.dart
+++ b/pkg/compiler/lib/src/ssa/loop_handler.dart
@@ -56,7 +56,7 @@
       startBlock = initializerBlock;
       initialize();
       assert(!builder.isAborted());
-      initializerGraph = new SubExpression(initializerBlock, builder.current);
+      initializerGraph = SubExpression(initializerBlock, builder.current);
     }
 
     builder.loopDepth++;
@@ -66,15 +66,15 @@
     if (startBlock == null) startBlock = conditionBlock;
 
     HInstruction conditionInstruction = condition();
-    HBasicBlock conditionEndBlock = builder
-        .close(new HLoopBranch(_abstractValueDomain, conditionInstruction));
+    HBasicBlock conditionEndBlock =
+        builder.close(HLoopBranch(_abstractValueDomain, conditionInstruction));
     SubExpression conditionExpression =
-        new SubExpression(conditionBlock, conditionEndBlock);
+        SubExpression(conditionBlock, conditionEndBlock);
 
     // Save the values of the local variables at the end of the condition
     // block.  These are the values that will flow to the loop exit if the
     // condition fails.
-    LocalsHandler savedLocals = new LocalsHandler.from(builder.localsHandler);
+    LocalsHandler savedLocals = LocalsHandler.from(builder.localsHandler);
 
     // The body.
     HBasicBlock beginBodyBlock = builder.addNewBlock();
@@ -84,9 +84,9 @@
     builder.localsHandler.enterLoopBody(loopClosureInfo, sourceInformation);
     body();
 
-    SubGraph bodyGraph = new SubGraph(beginBodyBlock, builder.lastOpenedBlock);
+    SubGraph bodyGraph = SubGraph(beginBodyBlock, builder.lastOpenedBlock);
     HBasicBlock bodyBlock = builder.current;
-    if (builder.current != null) builder.close(new HGoto(_abstractValueDomain));
+    if (builder.current != null) builder.close(HGoto(_abstractValueDomain));
 
     SubExpression updateGraph;
 
@@ -117,14 +117,14 @@
       List<LabelDefinition> labels = jumpHandler.labels;
       if (labels.isNotEmpty) {
         beginBodyBlock.setBlockFlow(
-            new HLabeledBlockInformation(
-                new HSubGraphBlockInformation(bodyGraph), jumpHandler.labels,
+            HLabeledBlockInformation(
+                HSubGraphBlockInformation(bodyGraph), jumpHandler.labels,
                 isContinue: true),
             updateBlock);
       } else if (jumpTarget != null && jumpTarget.isContinueTarget) {
         beginBodyBlock.setBlockFlow(
-            new HLabeledBlockInformation.implicit(
-                new HSubGraphBlockInformation(bodyGraph), jumpTarget,
+            HLabeledBlockInformation.implicit(
+                HSubGraphBlockInformation(bodyGraph), jumpTarget,
                 isContinue: true),
             updateBlock);
       }
@@ -134,22 +134,21 @@
 
       update();
 
-      HBasicBlock updateEndBlock =
-          builder.close(new HGoto(_abstractValueDomain));
+      HBasicBlock updateEndBlock = builder.close(HGoto(_abstractValueDomain));
       // The back-edge completing the cycle.
       updateEndBlock.addSuccessor(conditionBlock);
-      updateGraph = new SubExpression(updateBlock, updateEndBlock);
+      updateGraph = SubExpression(updateBlock, updateEndBlock);
 
       // Avoid a critical edge from the condition to the loop-exit body.
       HBasicBlock conditionExitBlock = builder.addNewBlock();
       builder.open(conditionExitBlock);
-      builder.close(new HGoto(_abstractValueDomain));
+      builder.close(HGoto(_abstractValueDomain));
       conditionEndBlock.addSuccessor(conditionExitBlock);
 
       endLoop(conditionBlock, conditionExitBlock, jumpHandler, savedLocals);
 
       conditionBlock.postProcessLoopHeader();
-      HLoopBlockInformation info = new HLoopBlockInformation(
+      HLoopBlockInformation info = HLoopBlockInformation(
           loopKind(loop),
           builder.wrapExpressionGraph(initializerGraph),
           builder.wrapExpressionGraph(conditionExpression),
@@ -174,22 +173,22 @@
       // label to the if.
       HBasicBlock elseBlock = builder.addNewBlock();
       builder.open(elseBlock);
-      builder.close(new HGoto(_abstractValueDomain));
+      builder.close(HGoto(_abstractValueDomain));
       // Pass the elseBlock as the branchBlock, because that's the block we go
       // to just before leaving the 'loop'.
       endLoop(conditionBlock, elseBlock, jumpHandler, savedLocals);
 
-      SubGraph elseGraph = new SubGraph(elseBlock, elseBlock);
+      SubGraph elseGraph = SubGraph(elseBlock, elseBlock);
       // Remove the loop information attached to the header.
       conditionBlock.loopInformation = null;
 
       // Remove the [HLoopBranch] instruction and replace it with
       // [HIf].
       HInstruction condition = conditionEndBlock.last.inputs[0];
-      conditionEndBlock.addAtExit(new HIf(_abstractValueDomain, condition));
+      conditionEndBlock.addAtExit(HIf(_abstractValueDomain, condition));
       conditionEndBlock.addSuccessor(elseBlock);
       conditionEndBlock.remove(conditionEndBlock.last);
-      HIfBlockInformation info = new HIfBlockInformation(
+      HIfBlockInformation info = HIfBlockInformation(
           builder.wrapExpressionGraph(conditionExpression),
           builder.wrapStatementGraph(bodyGraph),
           builder.wrapStatementGraph(elseGraph));
@@ -203,17 +202,16 @@
       if (jumpHandler.hasAnyBreak()) {
         LabelDefinition label =
             jumpTarget.addLabel('loop', isBreakTarget: true);
-        SubGraph labelGraph = new SubGraph(conditionBlock, builder.current);
-        HLabeledBlockInformation labelInfo = new HLabeledBlockInformation(
-            new HSubGraphBlockInformation(labelGraph),
-            <LabelDefinition>[label]);
+        SubGraph labelGraph = SubGraph(conditionBlock, builder.current);
+        HLabeledBlockInformation labelInfo = HLabeledBlockInformation(
+            HSubGraphBlockInformation(labelGraph), <LabelDefinition>[label]);
 
         conditionBlock.setBlockFlow(labelInfo, builder.current);
 
         jumpHandler.forEachBreak((HBreak breakInstruction, _) {
           HBasicBlock block = breakInstruction.block;
-          block.addAtExit(new HBreak.toLabel(
-              _abstractValueDomain, label, sourceInformation));
+          block.addAtExit(
+              HBreak.toLabel(_abstractValueDomain, label, sourceInformation));
           block.remove(breakInstruction);
         });
       }
@@ -227,7 +225,7 @@
   /// Also notifies the locals handler that we're entering a loop.
   JumpHandler beginLoopHeader(ir.TreeNode node, JumpTarget jumpTarget) {
     assert(!builder.isAborted());
-    HBasicBlock previousBlock = builder.close(new HGoto(_abstractValueDomain));
+    HBasicBlock previousBlock = builder.close(HGoto(_abstractValueDomain));
 
     JumpHandler jumpHandler =
         createJumpHandler(node, jumpTarget, isLoopJump: true);
@@ -326,7 +324,7 @@
       builder.createJumpHandler(node, jumpTarget, isLoopJump: isLoopJump);
 
   @override
-  int loopKind(ir.TreeNode node) => node.accept(new _KernelLoopTypeVisitor());
+  int loopKind(ir.TreeNode node) => node.accept(_KernelLoopTypeVisitor());
 }
 
 class _KernelLoopTypeVisitor extends ir.Visitor<int>
diff --git a/pkg/compiler/lib/src/ssa/nodes.dart b/pkg/compiler/lib/src/ssa/nodes.dart
index a01c6bf..a136378 100644
--- a/pkg/compiler/lib/src/ssa/nodes.dart
+++ b/pkg/compiler/lib/src/ssa/nodes.dart
@@ -131,7 +131,7 @@
     //     }
     //     visitBasicBlockAndSuccessors(graph.entry);
 
-    _Frame frame = new _Frame(null);
+    _Frame frame = _Frame(null);
     frame.block = graph.entry;
     frame.index = 0;
 
@@ -142,7 +142,7 @@
       int index = frame.index;
       if (index < block.dominatedBlocks.length) {
         frame.index = index + 1;
-        frame = frame.next ??= new _Frame(frame);
+        frame = frame.next ??= _Frame(frame);
         frame.block = block.dominatedBlocks[index];
         frame.index = 0;
         visitBasicBlock(frame.block);
@@ -164,7 +164,7 @@
     //     }
     //     visitBasicBlockAndSuccessors(graph.entry);
 
-    _Frame frame = new _Frame(null);
+    _Frame frame = _Frame(null);
     frame.block = graph.entry;
     frame.index = frame.block.dominatedBlocks.length;
 
@@ -173,7 +173,7 @@
       int index = frame.index;
       if (index > 0) {
         frame.index = index - 1;
-        frame = frame.next ??= new _Frame(frame);
+        frame = frame.next ??= _Frame(frame);
         frame.block = block.dominatedBlocks[index - 1];
         frame.index = frame.block.dominatedBlocks.length;
         continue;
@@ -240,19 +240,19 @@
   /// Nodes containing list allocations for which there is a known fixed length.
   // TODO(sigmund,sra): consider not storing this explicitly here (e.g. maybe
   // store it on HInstruction, or maybe this can be computed on demand).
-  final Set<HInstruction> allocatedFixedLists = new Set<HInstruction>();
+  final Set<HInstruction> allocatedFixedLists = Set<HInstruction>();
 
   SourceInformation sourceInformation;
 
   // We canonicalize all constants used within a graph so we do not
   // have to worry about them for global value numbering.
-  Map<ConstantValue, HConstant> constants = new Map<ConstantValue, HConstant>();
+  Map<ConstantValue, HConstant> constants = Map<ConstantValue, HConstant>();
 
   HGraph() {
     entry = addNewBlock();
     // The exit block will be added later, so it has an id that is
     // after all others in the system.
-    exit = new HBasicBlock();
+    exit = HBasicBlock();
   }
 
   void addBlock(HBasicBlock block) {
@@ -263,7 +263,7 @@
   }
 
   HBasicBlock addNewBlock() {
-    HBasicBlock result = new HBasicBlock();
+    HBasicBlock result = HBasicBlock();
     addBlock(result);
     return result;
   }
@@ -271,7 +271,7 @@
   HBasicBlock addNewLoopHeaderBlock(
       JumpTarget target, List<LabelDefinition> labels) {
     HBasicBlock result = addNewBlock();
-    result.loopInformation = new HLoopInformation(result, target, labels);
+    result.loopInformation = HLoopInformation(result, target, labels);
     return result;
   }
 
@@ -286,7 +286,7 @@
       }
       AbstractValue type = closedWorld.abstractValueDomain
           .computeAbstractValueForConstant(constant);
-      result = new HConstant.internal(constant, type)
+      result = HConstant.internal(constant, type)
         ..sourceInformation = sourceInformation;
       entry.addAtExit(result);
       constants[constant] = result;
@@ -309,8 +309,7 @@
 
   HConstant addConstantIntAsUnsigned(int i, JClosedWorld closedWorld) {
     return addConstant(
-        constant_system.createInt(new BigInt.from(i).toUnsigned(64)),
-        closedWorld);
+        constant_system.createInt(BigInt.from(i).toUnsigned(64)), closedWorld);
   }
 
   HConstant addConstantDouble(double d, JClosedWorld closedWorld) {
@@ -322,8 +321,7 @@
   }
 
   HConstant addConstantStringFromName(js.Name name, JClosedWorld closedWorld) {
-    return addConstant(
-        new JsNameConstantValue(js.quoteName(name)), closedWorld);
+    return addConstant(JsNameConstantValue(js.quoteName(name)), closedWorld);
   }
 
   HConstant addConstantBool(bool value, JClosedWorld closedWorld) {
@@ -348,7 +346,7 @@
   void finalize(AbstractValueDomain domain) {
     addBlock(exit);
     exit.open();
-    exit.close(new HExit(domain));
+    exit.close(HExit(domain));
     assignDominators();
   }
 
@@ -375,7 +373,7 @@
     // blocks. A dominator has a dfs-in..dfs-out range that includes the range
     // of the dominated block. See [HGraphVisitor.visitDominatorTree] for
     // recursion-free schema.
-    _Frame frame = new _Frame(null);
+    _Frame frame = _Frame(null);
     frame.block = entry;
     frame.index = 0;
 
@@ -387,7 +385,7 @@
       int index = frame.index;
       if (index < block.dominatedBlocks.length) {
         frame.index = index + 1;
-        frame = frame.next ??= new _Frame(frame);
+        frame = frame.next ??= _Frame(frame);
         frame.block = block.dominatedBlocks[index];
         frame.index = 0;
         frame.block.dominatorDfsIn = ++dfsNumber;
@@ -399,7 +397,7 @@
   }
 
   bool isValid() {
-    HValidator validator = new HValidator();
+    HValidator validator = HValidator();
     validator.visitGraph(this);
     return validator.isValid;
   }
@@ -765,7 +763,7 @@
 
   HBasicBlock() : this.withId(null);
   HBasicBlock.withId(this.id)
-      : phis = new HInstructionList(),
+      : phis = HInstructionList(),
         predecessors = <HBasicBlock>[],
         successors = const <HBasicBlock>[],
         dominatedBlocks = <HBasicBlock>[];
@@ -782,7 +780,7 @@
   }
 
   void setBlockFlow(HBlockInformation blockInfo, HBasicBlock continuation) {
-    blockFlow = new HBlockFlow(blockInfo, continuation);
+    blockFlow = HBlockFlow(blockInfo, continuation);
   }
 
   bool isLabeledBlock() =>
@@ -1017,7 +1015,7 @@
 
   bool isValid() {
     assert(isClosed());
-    HValidator validator = new HValidator();
+    HValidator validator = HValidator();
     validator.visitBasicBlock(this);
     return validator.isValid;
   }
@@ -1045,7 +1043,7 @@
   HInstruction previous = null;
   HInstruction next = null;
 
-  SideEffects sideEffects = new SideEffects.empty();
+  SideEffects sideEffects = SideEffects.empty();
   bool _useGvn = false;
 
   // Type codes.
@@ -1360,7 +1358,7 @@
   bool isInterceptor(JClosedWorld closedWorld) => false;
 
   bool isValid() {
-    HValidator validator = new HValidator();
+    HValidator validator = HValidator();
     validator.currentBlock = block;
     validator.visitInstruction(this);
     return validator.isValid;
@@ -1424,8 +1422,8 @@
   /// of a loop with many break statements).  If [excludePhiOutEdges] is `true`
   /// then these edge uses are not included.
   static DominatedUses of(HInstruction source, HInstruction dominator,
-      {bool excludeDominator: false, bool excludePhiOutEdges: false}) {
-    return new DominatedUses._(source)
+      {bool excludeDominator = false, bool excludePhiOutEdges = false}) {
+    return DominatedUses._(source)
       .._compute(source, dominator, excludeDominator, excludePhiOutEdges);
   }
 
@@ -1466,8 +1464,8 @@
       bool excludeDominator, bool excludePhiOutEdges) {
     // Keep track of all instructions that we have to deal with later and count
     // the number of them that are in the current block.
-    Set<HInstruction> users = new Setlet<HInstruction>();
-    Set<HInstruction> seen = new Setlet<HInstruction>();
+    Set<HInstruction> users = Setlet<HInstruction>();
+    Set<HInstruction> seen = Setlet<HInstruction>();
     int usersInCurrentBlock = 0;
 
     HBasicBlock dominatorBlock = dominator.block;
@@ -1655,7 +1653,7 @@
 
   HCreate(this.element, List<HInstruction> inputs, AbstractValue type,
       SourceInformation sourceInformation,
-      {this.instantiatedTypes, this.hasRtiInput: false, this.callMethod})
+      {this.instantiatedTypes, this.hasRtiInput = false, this.callMethod})
       : super(inputs, type) {
     this.sourceInformation = sourceInformation;
   }
@@ -1834,7 +1832,7 @@
       AbstractValue resultType,
       this.typeArguments,
       SourceInformation sourceInformation,
-      {bool isIntercepted: false})
+      {bool isIntercepted = false})
       : super(selector, receiverType, null, inputs, isIntercepted, resultType) {
     this.sourceInformation = sourceInformation;
     assert(selector.callStructure.typeArgumentCount == typeArguments.length);
@@ -1946,7 +1944,7 @@
 
   /// The first input must be the target.
   HInvokeStatic(this.element, inputs, AbstractValue type, this.typeArguments,
-      {this.targetCanThrow: true, bool isIntercepted: false})
+      {this.targetCanThrow = true, bool isIntercepted = false})
       : super(inputs, type) {
     isInterceptedCall = isIntercepted;
   }
@@ -2411,7 +2409,7 @@
   NativeThrowBehavior throwBehavior;
 
   HForeignCode(this.codeTemplate, AbstractValue type, List<HInstruction> inputs,
-      {this.isStatement: false,
+      {this.isStatement = false,
       SideEffects effects,
       NativeBehavior nativeBehavior,
       NativeThrowBehavior throwBehavior})
@@ -2813,7 +2811,7 @@
 
   HBreak(AbstractValueDomain domain, JumpTarget target,
       SourceInformation sourceInformation,
-      {bool this.breakSwitchContinueLoop: false})
+      {bool this.breakSwitchContinueLoop = false})
       : super(domain, target, sourceInformation);
 
   HBreak.toLabel(AbstractValueDomain domain, LabelDefinition label,
@@ -3207,7 +3205,7 @@
   @override
   bool canThrow(AbstractValueDomain domain) => true;
   @override
-  SideEffects sideEffects = new SideEffects();
+  SideEffects sideEffects = SideEffects();
 }
 
 class HYield extends HInstruction {
@@ -3224,14 +3222,14 @@
   @override
   bool canThrow(AbstractValueDomain domain) => false;
   @override
-  SideEffects sideEffects = new SideEffects();
+  SideEffects sideEffects = SideEffects();
 }
 
 class HThrow extends HControlFlow {
   final bool isRethrow;
   HThrow(AbstractValueDomain domain, HInstruction value,
       SourceInformation sourceInformation,
-      {this.isRethrow: false})
+      {this.isRethrow = false})
       : super(domain, <HInstruction>[value]) {
     this.sourceInformation = sourceInformation;
   }
@@ -3927,12 +3925,12 @@
   final bool isContinue;
 
   HLabeledBlockInformation(this.body, List<LabelDefinition> labels,
-      {this.isContinue: false})
+      {this.isContinue = false})
       : this.labels = labels,
         this.target = labels[0].target;
 
   HLabeledBlockInformation.implicit(this.body, this.target,
-      {this.isContinue: false})
+      {this.isContinue = false})
       : this.labels = const <LabelDefinition>[];
 
   @override
diff --git a/pkg/compiler/lib/src/ssa/optimize.dart b/pkg/compiler/lib/src/ssa/optimize.dart
index fde9609..5bbc0ec 100644
--- a/pkg/compiler/lib/src/ssa/optimize.dart
+++ b/pkg/compiler/lib/src/ssa/optimize.dart
@@ -82,83 +82,83 @@
     if (retainDataForTesting) {
       loggersForTesting ??= {};
       loggersForTesting[member] =
-          log = new OptimizationTestLog(closedWorld.dartTypes);
+          log = OptimizationTestLog(closedWorld.dartTypes);
     }
 
     measure(() {
       List<OptimizationPhase> phases = <OptimizationPhase>[
         // Run trivial instruction simplification first to optimize
         // some patterns useful for type conversion.
-        new SsaInstructionSimplifier(globalInferenceResults, _options,
-            closedWorld, typeRecipeDomain, registry, log),
-        new SsaTypeConversionInserter(closedWorld),
-        new SsaRedundantPhiEliminator(),
-        new SsaDeadPhiEliminator(),
-        new SsaTypePropagator(globalInferenceResults,
-            closedWorld.commonElements, closedWorld, log),
+        SsaInstructionSimplifier(globalInferenceResults, _options, closedWorld,
+            typeRecipeDomain, registry, log),
+        SsaTypeConversionInserter(closedWorld),
+        SsaRedundantPhiEliminator(),
+        SsaDeadPhiEliminator(),
+        SsaTypePropagator(globalInferenceResults, closedWorld.commonElements,
+            closedWorld, log),
         // After type propagation, more instructions can be
         // simplified.
-        new SsaInstructionSimplifier(globalInferenceResults, _options,
-            closedWorld, typeRecipeDomain, registry, log),
-        new SsaInstructionSimplifier(globalInferenceResults, _options,
-            closedWorld, typeRecipeDomain, registry, log),
-        new SsaTypePropagator(globalInferenceResults,
-            closedWorld.commonElements, closedWorld, log),
+        SsaInstructionSimplifier(globalInferenceResults, _options, closedWorld,
+            typeRecipeDomain, registry, log),
+        SsaInstructionSimplifier(globalInferenceResults, _options, closedWorld,
+            typeRecipeDomain, registry, log),
+        SsaTypePropagator(globalInferenceResults, closedWorld.commonElements,
+            closedWorld, log),
         // Run a dead code eliminator before LICM because dead
         // interceptors are often in the way of LICM'able instructions.
-        new SsaDeadCodeEliminator(closedWorld, this),
-        new SsaGlobalValueNumberer(closedWorld.abstractValueDomain),
+        SsaDeadCodeEliminator(closedWorld, this),
+        SsaGlobalValueNumberer(closedWorld.abstractValueDomain),
         // After GVN, some instructions might need their type to be
         // updated because they now have different inputs.
-        new SsaTypePropagator(globalInferenceResults,
-            closedWorld.commonElements, closedWorld, log),
-        codeMotion = new SsaCodeMotion(closedWorld.abstractValueDomain),
-        loadElimination = new SsaLoadElimination(closedWorld),
-        new SsaRedundantPhiEliminator(),
-        new SsaDeadPhiEliminator(),
+        SsaTypePropagator(globalInferenceResults, closedWorld.commonElements,
+            closedWorld, log),
+        codeMotion = SsaCodeMotion(closedWorld.abstractValueDomain),
+        loadElimination = SsaLoadElimination(closedWorld),
+        SsaRedundantPhiEliminator(),
+        SsaDeadPhiEliminator(),
         // After GVN and load elimination the same value may be used in code
         // controlled by a test on the value, so redo 'conversion insertion' to
         // learn from the refined type.
-        new SsaTypeConversionInserter(closedWorld),
-        new SsaTypePropagator(globalInferenceResults,
-            closedWorld.commonElements, closedWorld, log),
-        new SsaValueRangeAnalyzer(closedWorld, this),
+        SsaTypeConversionInserter(closedWorld),
+        SsaTypePropagator(globalInferenceResults, closedWorld.commonElements,
+            closedWorld, log),
+        SsaValueRangeAnalyzer(closedWorld, this),
         // Previous optimizations may have generated new
         // opportunities for instruction simplification.
-        new SsaInstructionSimplifier(globalInferenceResults, _options,
-            closedWorld, typeRecipeDomain, registry, log),
+        SsaInstructionSimplifier(globalInferenceResults, _options, closedWorld,
+            typeRecipeDomain, registry, log),
       ];
       phases.forEach(runPhase);
 
       // Simplifying interceptors is just an optimization, it is required for
       // implementation correctness because the code generator assumes it is
       // always performed to compute the intercepted classes sets.
-      runPhase(new SsaSimplifyInterceptors(closedWorld, member.enclosingClass));
+      runPhase(SsaSimplifyInterceptors(closedWorld, member.enclosingClass));
 
-      SsaDeadCodeEliminator dce = new SsaDeadCodeEliminator(closedWorld, this);
+      SsaDeadCodeEliminator dce = SsaDeadCodeEliminator(closedWorld, this);
       runPhase(dce);
       if (codeMotion.movedCode ||
           dce.eliminatedSideEffects ||
           dce.newGvnCandidates ||
           loadElimination.newGvnCandidates) {
         phases = <OptimizationPhase>[
-          new SsaTypePropagator(globalInferenceResults,
-              closedWorld.commonElements, closedWorld, log),
-          new SsaGlobalValueNumberer(closedWorld.abstractValueDomain),
-          new SsaCodeMotion(closedWorld.abstractValueDomain),
-          new SsaValueRangeAnalyzer(closedWorld, this),
-          new SsaInstructionSimplifier(globalInferenceResults, _options,
+          SsaTypePropagator(globalInferenceResults, closedWorld.commonElements,
+              closedWorld, log),
+          SsaGlobalValueNumberer(closedWorld.abstractValueDomain),
+          SsaCodeMotion(closedWorld.abstractValueDomain),
+          SsaValueRangeAnalyzer(closedWorld, this),
+          SsaInstructionSimplifier(globalInferenceResults, _options,
               closedWorld, typeRecipeDomain, registry, log),
-          new SsaSimplifyInterceptors(closedWorld, member.enclosingClass),
-          new SsaDeadCodeEliminator(closedWorld, this),
+          SsaSimplifyInterceptors(closedWorld, member.enclosingClass),
+          SsaDeadCodeEliminator(closedWorld, this),
         ];
       } else {
         phases = <OptimizationPhase>[
-          new SsaTypePropagator(globalInferenceResults,
-              closedWorld.commonElements, closedWorld, log),
+          SsaTypePropagator(globalInferenceResults, closedWorld.commonElements,
+              closedWorld, log),
           // Run the simplifier to remove unneeded type checks inserted by
           // type propagation.
-          new SsaInstructionSimplifier(globalInferenceResults, _options,
+          SsaInstructionSimplifier(globalInferenceResults, _options,
               closedWorld, typeRecipeDomain, registry, log),
         ];
       }
@@ -375,7 +375,7 @@
         _mostlyEmpty(whenNotNullBlock)) {
       HInstruction trueConstant = _graph.addConstantBool(true, _closedWorld);
       HInstruction replacement =
-          new HIdentity(tested, trueConstant, _abstractValueDomain.boolType)
+          HIdentity(tested, trueConstant, _abstractValueDomain.boolType)
             ..sourceElement = phi.sourceElement
             ..sourceInformation = phi.sourceInformation;
       block.rewrite(phi, replacement);
@@ -397,12 +397,11 @@
         _mostlyEmpty(whenNotNullBlock)) {
       HInstruction falseConstant = _graph.addConstantBool(false, _closedWorld);
       HInstruction compare =
-          new HIdentity(tested, falseConstant, _abstractValueDomain.boolType);
+          HIdentity(tested, falseConstant, _abstractValueDomain.boolType);
       block.addAtEntry(compare);
-      HInstruction replacement =
-          new HNot(compare, _abstractValueDomain.boolType)
-            ..sourceElement = phi.sourceElement
-            ..sourceInformation = phi.sourceInformation;
+      HInstruction replacement = HNot(compare, _abstractValueDomain.boolType)
+        ..sourceElement = phi.sourceElement
+        ..sourceInformation = phi.sourceInformation;
       block.rewrite(phi, replacement);
       block.addAfter(compare, replacement);
       block.removePhi(phi);
@@ -607,7 +606,7 @@
         resultType = _abstractValueDomain.uint32Type;
       }
       HGetLength result =
-          new HGetLength(actualReceiver, resultType, isAssignable: !isFixed);
+          HGetLength(actualReceiver, resultType, isAssignable: !isFixed);
       return result;
     } else if (actualReceiver.isConstantMap()) {
       HConstant constantInput = actualReceiver;
@@ -673,7 +672,7 @@
           HInstruction argument = node.inputs[2];
           if (argument.isString(_abstractValueDomain).isDefinitelyTrue &&
               input.isNull(_abstractValueDomain).isDefinitelyFalse) {
-            return new HStringConcat(input, argument, node.instructionType);
+            return HStringConcat(input, argument, node.instructionType);
           }
         } else if (applies(commonElements.jsStringToString) &&
             input.isNull(_abstractValueDomain).isDefinitelyFalse) {
@@ -690,7 +689,7 @@
         // bounds check will become explicit, so we won't need this
         // optimization.
         // TODO(sra): Fix comment - SsaCheckInserter is deleted.
-        HInvokeDynamicMethod result = new HInvokeDynamicMethod(
+        HInvokeDynamicMethod result = HInvokeDynamicMethod(
             node.selector,
             node.receiverType,
             node.inputs.sublist(1), // Drop interceptor.
@@ -727,7 +726,7 @@
 
     AbstractValue resultMask = _abstractValueDomain.growableListType;
 
-    HInvokeDynamicMethod splitInstruction = new HInvokeDynamicMethod(
+    HInvokeDynamicMethod splitInstruction = HInvokeDynamicMethod(
         node.selector,
         node.receiverType,
         node.inputs.sublist(1), // Drop interceptor.
@@ -751,7 +750,7 @@
         _abstractValueDomain.dynamicType);
     node.block.addBefore(node, typeInfo);
 
-    HInvokeStatic tagInstruction = new HInvokeStatic(
+    HInvokeStatic tagInstruction = HInvokeStatic(
         commonElements.setArrayType,
         <HInstruction>[splitInstruction, typeInfo],
         resultMask,
@@ -839,12 +838,12 @@
           node.block.addBefore(node, load);
           insertionPoint = load;
         }
-        Selector callSelector = new Selector.callClosureFrom(node.selector);
+        Selector callSelector = Selector.callClosureFrom(node.selector);
         List<HInstruction> inputs = <HInstruction>[load]
           ..addAll(node.inputs.skip(node.isInterceptedCall ? 2 : 1));
         DartType fieldType =
             _closedWorld.elementEnvironment.getFieldType(field);
-        HInstruction closureCall = new HInvokeClosure(
+        HInstruction closureCall = HInvokeClosure(
             callSelector,
             _abstractValueDomain
                 .createFromStaticType(fieldType, nullable: true)
@@ -1129,7 +1128,7 @@
       if (constant.constant.isTrue) {
         return input;
       } else {
-        return new HNot(input, _abstractValueDomain.boolType);
+        return HNot(input, _abstractValueDomain.boolType);
       }
     }
 
@@ -1398,8 +1397,7 @@
         isFixedLength(receiver.instructionType, _closedWorld)) {
       // The input type has changed to fixed-length so change to an unassignable
       // HGetLength to allow more GVN optimizations.
-      return new HGetLength(receiver, node.instructionType,
-          isAssignable: false);
+      return HGetLength(receiver, node.instructionType, isAssignable: false);
     }
     return node;
   }
@@ -1599,7 +1597,7 @@
         if (parameterStructure.callStructure == node.selector.callStructure) {
           // TODO(sra): Handle adding optional arguments default values.
           assert(!node.isInterceptedCall);
-          return new HInvokeStatic(target, node.inputs.skip(1).toList(),
+          return HInvokeStatic(target, node.inputs.skip(1).toList(),
               node.instructionType, node.typeArguments)
             ..sourceInformation = node.sourceInformation;
         }
@@ -1615,7 +1613,7 @@
 
     if (element == commonElements.identicalFunction) {
       if (node.inputs.length == 2) {
-        return new HIdentity(
+        return HIdentity(
             node.inputs[0], node.inputs[1], _abstractValueDomain.boolType)
           ..sourceInformation = node.sourceInformation;
       }
@@ -1759,7 +1757,7 @@
             .createString(leftString.stringValue + rightString.stringValue),
         _closedWorld);
     if (prefix == null) return folded;
-    return new HStringConcat(prefix, folded, _abstractValueDomain.stringType);
+    return HStringConcat(prefix, folded, _abstractValueDomain.stringType);
   }
 
   @override
@@ -1825,7 +1823,7 @@
           .isInterceptor(input.instructionType)
           .isDefinitelyFalse) {
         var inputs = <HInstruction>[input, input]; // [interceptor, receiver].
-        HInstruction result = new HInvokeDynamicMethod(
+        HInstruction result = HInvokeDynamicMethod(
             selector,
             input.instructionType, // receiver type.
             inputs,
@@ -2311,7 +2309,7 @@
   HGraph _graph;
   SsaLiveBlockAnalyzer analyzer;
   Map<HInstruction, bool> trivialDeadStoreReceivers =
-      new Maplet<HInstruction, bool>();
+      Maplet<HInstruction, bool>();
   bool eliminatedSideEffects = false;
   bool newGvnCandidates = false;
 
@@ -2425,7 +2423,7 @@
   @override
   void visitGraph(HGraph graph) {
     _graph = graph;
-    analyzer = new SsaLiveBlockAnalyzer(graph, closedWorld, optimizer);
+    analyzer = SsaLiveBlockAnalyzer(graph, closedWorld, optimizer);
     analyzer.analyze();
     visitPostDominatorTree(graph);
     cleanPhis();
@@ -2627,7 +2625,7 @@
 
 class SsaLiveBlockAnalyzer extends HBaseVisitor {
   final HGraph graph;
-  final Set<HBasicBlock> live = new Set<HBasicBlock>();
+  final Set<HBasicBlock> live = Set<HBasicBlock>();
   final List<HBasicBlock> worklist = <HBasicBlock>[];
   final SsaOptimizerTask optimizer;
   final JClosedWorld closedWorld;
@@ -2686,7 +2684,7 @@
         IntValue upperValue = switchRange.upper;
         BigInt lower = lowerValue.value;
         BigInt upper = upperValue.value;
-        Set<BigInt> liveLabels = new Set<BigInt>();
+        Set<BigInt> liveLabels = Set<BigInt>();
         for (int pos = 1; pos < node.inputs.length; pos++) {
           HConstant input = node.inputs[pos];
           if (!input.isConstantInteger()) continue;
@@ -2697,7 +2695,7 @@
             liveLabels.add(label);
           }
         }
-        if (new BigInt.from(liveLabels.length) != upper - lower + BigInt.one) {
+        if (BigInt.from(liveLabels.length) != upper - lower + BigInt.one) {
           markBlockLive(node.defaultTarget);
         }
         return;
@@ -2715,7 +2713,7 @@
   void visitGraph(HGraph graph) {
     final List<HPhi> worklist = <HPhi>[];
     // A set to keep track of the live phis that we found.
-    final Set<HPhi> livePhis = new Set<HPhi>();
+    final Set<HPhi> livePhis = Set<HPhi>();
 
     // Add to the worklist all live phis: phis referenced by non-phi
     // instructions.
@@ -2835,14 +2833,14 @@
   List<int> blockChangesFlags;
   List<int> loopChangesFlags;
 
-  SsaGlobalValueNumberer(this._abstractValueDomain) : visited = new Set<int>();
+  SsaGlobalValueNumberer(this._abstractValueDomain) : visited = Set<int>();
 
   @override
   void visitGraph(HGraph graph) {
     computeChangesFlags(graph);
     moveLoopInvariantCode(graph);
     List<GvnWorkItem> workQueue = <GvnWorkItem>[
-      new GvnWorkItem(graph.entry, new ValueSet())
+      GvnWorkItem(graph.entry, ValueSet())
     ];
     do {
       GvnWorkItem item = workQueue.removeLast();
@@ -2976,7 +2974,7 @@
         } while (!workQueue.isEmpty);
         successorValues.kill(changesFlags);
       }
-      workQueue.add(new GvnWorkItem(dominated, successorValues));
+      workQueue.add(GvnWorkItem(dominated, successorValues));
     }
   }
 
@@ -2985,8 +2983,8 @@
     // loop changes flags list to zero so we can use bitwise or when
     // propagating loop changes upwards.
     final int length = graph.blocks.length;
-    blockChangesFlags = new List<int>.filled(length, null);
-    loopChangesFlags = new List<int>.filled(length, null);
+    blockChangesFlags = List<int>.filled(length, null);
+    loopChangesFlags = List<int>.filled(length, null);
     for (int i = 0; i < length; i++) loopChangesFlags[i] = 0;
 
     // Run through all the basic blocks in the graph and fill in the
@@ -3067,9 +3065,9 @@
 
   @override
   void visitGraph(HGraph graph) {
-    values = new List<ValueSet>.filled(graph.blocks.length, null);
+    values = List<ValueSet>.filled(graph.blocks.length, null);
     for (int i = 0; i < graph.blocks.length; i++) {
-      values[graph.blocks[i].id] = new ValueSet();
+      values[graph.blocks[i].id] = ValueSet();
     }
     visitPostDominatorTree(graph);
   }
@@ -3198,7 +3196,7 @@
       }
     }
 
-    HTypeKnown newInput = new HTypeKnown.pinned(convertedType, input);
+    HTypeKnown newInput = HTypeKnown.pinned(convertedType, input);
     dominator.addBefore(dominator.first, newInput);
     dominatedUses.replaceWith(newInput);
   }
@@ -3344,7 +3342,7 @@
   @override
   void visitGraph(HGraph graph) {
     _graph = graph;
-    memories = new List<MemorySet>.filled(graph.blocks.length, null);
+    memories = List<MemorySet>.filled(graph.blocks.length, null);
     List<HBasicBlock> blocks = graph.blocks;
     for (int i = 0; i < blocks.length; i++) {
       HBasicBlock block = blocks[i];
@@ -3366,7 +3364,7 @@
     final indegree = predecessors.length;
     if (indegree == 0) {
       // Entry block.
-      memorySet = new MemorySet(_closedWorld);
+      memorySet = MemorySet(_closedWorld);
     } else if (indegree == 1 && predecessors[0].successors.length == 1) {
       // No need to clone, there is no other successor for
       // `block.predecessors[0]`, and this block has only one predecessor. Since
@@ -3693,7 +3691,7 @@
       <HInstruction, Map<HInstruction, HInstruction>>{};
 
   /// Set of objects that we know don't escape the current function.
-  final Setlet<HInstruction> nonEscapingReceivers = new Setlet<HInstruction>();
+  final Setlet<HInstruction> nonEscapingReceivers = Setlet<HInstruction>();
 
   MemorySet(this.closedWorld);
 
@@ -3948,7 +3946,7 @@
       phi.instructionType = phiType;
       return phi;
     } else {
-      HPhi phi = new HPhi.noInputs(null, phiType);
+      HPhi phi = HPhi.noInputs(null, phiType);
       block.addPhi(phi);
       // Previous predecessors had the same input. A phi must have
       // the same number of inputs as its block has predecessors.
@@ -3963,7 +3961,7 @@
   /// Returns the intersection between [this] and the [other] memory set.
   MemorySet intersectionFor(
       MemorySet other, HBasicBlock block, int predecessorIndex) {
-    MemorySet result = new MemorySet(closedWorld);
+    MemorySet result = MemorySet(closedWorld);
     if (other == null) {
       // This is the first visit to a loop header ([other] is `null` because we
       // have not visited the back edge). Copy the nonEscapingReceivers that are
@@ -4043,16 +4041,16 @@
 
   /// Returns a copy of [this] memory set.
   MemorySet clone() {
-    MemorySet result = new MemorySet(closedWorld);
+    MemorySet result = MemorySet(closedWorld);
 
     fieldValues.forEach((element, values) {
       result.fieldValues[element] =
-          new Map<HInstruction, HInstruction>.from(values);
+          Map<HInstruction, HInstruction>.from(values);
     });
 
     keyedValues.forEach((receiver, values) {
       result.keyedValues[receiver] =
-          new Map<HInstruction, HInstruction>.from(values);
+          Map<HInstruction, HInstruction>.from(values);
     });
 
     result.nonEscapingReceivers.addAll(nonEscapingReceivers);
diff --git a/pkg/compiler/lib/src/ssa/ssa.dart b/pkg/compiler/lib/src/ssa/ssa.dart
index 9fd8e25..179b946 100644
--- a/pkg/compiler/lib/src/ssa/ssa.dart
+++ b/pkg/compiler/lib/src/ssa/ssa.dart
@@ -47,11 +47,11 @@
       BackendStrategy backendStrategy,
       Measurer measurer,
       this.sourceInformationStrategy)
-      : generator = new SsaCodeGeneratorTask(
-            measurer, _options, sourceInformationStrategy),
-        _builder = new SsaBuilderTask(
+      : generator =
+            SsaCodeGeneratorTask(measurer, _options, sourceInformationStrategy),
+        _builder = SsaBuilderTask(
             measurer, backendStrategy, sourceInformationStrategy),
-        optimizer = new SsaOptimizerTask(measurer, _options);
+        optimizer = SsaOptimizerTask(measurer, _options);
 
   @override
   void initialize(GlobalTypeInferenceResults globalInferenceResults,
@@ -67,10 +67,10 @@
   CodegenResult compile(MemberEntity member) {
     JClosedWorld closedWorld = _globalInferenceResults.closedWorld;
     CodegenRegistry registry =
-        new CodegenRegistry(closedWorld.elementEnvironment, member);
-    ModularNamer namer = new ModularNamerImpl(
+        CodegenRegistry(closedWorld.elementEnvironment, member);
+    ModularNamer namer = ModularNamerImpl(
         registry, closedWorld.commonElements, _codegen.fixedNames);
-    ModularEmitter emitter = new ModularEmitterImpl(namer, registry, _options);
+    ModularEmitter emitter = ModularEmitterImpl(namer, registry, _options);
     if (member.isConstructor &&
         member.enclosingClass == closedWorld.commonElements.jsNullClass) {
       // Work around a problem compiling JSNull's constructor.
@@ -202,7 +202,7 @@
     List<js.Expression> itemTypeExpression =
         _fetchItemTypeNewRti(commonElements, registry, elementType);
 
-    AsyncRewriter rewriter = new AsyncRewriter(_reporter, element,
+    AsyncRewriter rewriter = AsyncRewriter(_reporter, element,
         asyncStart: emitter.staticFunctionAccess(startFunction),
         asyncAwait:
             emitter.staticFunctionAccess(commonElements.asyncHelperAwait),
@@ -216,7 +216,7 @@
         safeVariableName: namer.safeVariablePrefixForAsyncRewrite,
         bodyName: namer.deriveAsyncBodyName(name));
 
-    registry.registerStaticUse(new StaticUse.staticInvoke(
+    registry.registerStaticUse(StaticUse.staticInvoke(
         completerFactory,
         const CallStructure.unnamed(0, 1),
         [elementEnvironment.getFunctionAsyncOrSyncStarElementType(element)]));
@@ -238,7 +238,7 @@
     List<js.Expression> itemTypeExpression =
         _fetchItemTypeNewRti(commonElements, registry, asyncTypeParameter);
 
-    SyncStarRewriter rewriter = new SyncStarRewriter(_reporter, element,
+    SyncStarRewriter rewriter = SyncStarRewriter(_reporter, element,
         endOfIteration:
             emitter.staticFunctionAccess(commonElements.endOfIteration),
         iterableFactory: emitter
@@ -251,7 +251,7 @@
         safeVariableName: namer.safeVariablePrefixForAsyncRewrite,
         bodyName: namer.deriveAsyncBodyName(name));
 
-    registry.registerStaticUse(new StaticUse.staticInvoke(
+    registry.registerStaticUse(StaticUse.staticInvoke(
         commonElements.syncStarIterableFactory,
         const CallStructure.unnamed(1, 1),
         [elementEnvironment.getFunctionAsyncOrSyncStarElementType(element)]));
@@ -273,7 +273,7 @@
     List<js.Expression> itemTypeExpression =
         _fetchItemTypeNewRti(commonElements, registry, asyncTypeParameter);
 
-    AsyncStarRewriter rewriter = new AsyncStarRewriter(_reporter, element,
+    AsyncStarRewriter rewriter = AsyncStarRewriter(_reporter, element,
         asyncStarHelper:
             emitter.staticFunctionAccess(commonElements.asyncStarHelper),
         streamOfController:
@@ -289,7 +289,7 @@
             emitter.staticFunctionAccess(commonElements.yieldStar),
         bodyName: namer.deriveAsyncBodyName(name));
 
-    registry.registerStaticUse(new StaticUse.staticInvoke(
+    registry.registerStaticUse(StaticUse.staticInvoke(
         commonElements.asyncStarStreamControllerFactory,
         const CallStructure.unnamed(1, 1),
         [elementEnvironment.getFunctionAsyncOrSyncStarElementType(element)]));
diff --git a/pkg/compiler/lib/src/ssa/ssa_branch_builder.dart b/pkg/compiler/lib/src/ssa/ssa_branch_builder.dart
index 9383983..76d72c0 100644
--- a/pkg/compiler/lib/src/ssa/ssa_branch_builder.dart
+++ b/pkg/compiler/lib/src/ssa/ssa_branch_builder.dart
@@ -17,7 +17,7 @@
   LocalsHandler exitLocals;
   SubGraph graph;
 
-  SsaBranch(this.branchBuilder) : block = new HBasicBlock();
+  SsaBranch(this.branchBuilder) : block = HBasicBlock();
 }
 
 class SsaBranchBuilder {
@@ -46,7 +46,7 @@
     checkNotAborted();
     assert(identical(builder.current, builder.lastOpenedBlock));
     HInstruction conditionValue = builder.popBoolified();
-    HIf branch = new HIf(_abstractValueDomain, conditionValue)
+    HIf branch = HIf(_abstractValueDomain, conditionValue)
       ..sourceInformation = sourceInformation;
     HBasicBlock conditionExitBlock = builder.current;
     builder.close(branch);
@@ -59,7 +59,7 @@
         mayReuseFromLocals: conditionBranchLocalsCanBeReused);
 
     conditionBranch.graph =
-        new SubExpression(conditionBranch.block, conditionExitBlock);
+        SubExpression(conditionBranch.block, conditionExitBlock);
   }
 
   /// Returns true if the locals of the [fromBranch] may be reused. A [:true:]
@@ -72,7 +72,7 @@
         toBranch.startLocals = fromLocals;
         return false;
       } else {
-        toBranch.startLocals = new LocalsHandler.from(fromLocals);
+        toBranch.startLocals = LocalsHandler.from(fromLocals);
         return true;
       }
     } else {
@@ -91,7 +91,7 @@
       SsaBranch joinBranch, bool isExpression) {
     startBranch(branch);
     visitBranch();
-    branch.graph = new SubGraph(branch.block, builder.lastOpenedBlock);
+    branch.graph = SubGraph(branch.block, builder.lastOpenedBlock);
     branch.exitLocals = builder.localsHandler;
     if (!builder.isAborted()) {
       builder.goto(builder.current, joinBranch.block);
@@ -163,7 +163,7 @@
       boolifiedLeft = builder.popBoolified();
       builder.stack.add(boolifiedLeft);
       if (!isAnd) {
-        builder.push(new HNot(builder.pop(), _abstractValueDomain.boolType)
+        builder.push(HNot(builder.pop(), _abstractValueDomain.boolType)
           ..sourceInformation = sourceInformation);
       }
     }
@@ -177,7 +177,7 @@
         sourceInformation: sourceInformation);
     HConstant notIsAnd =
         builder.graph.addConstantBool(!isAnd, builder.closedWorld);
-    HPhi result = new HPhi.manyInputs(
+    HPhi result = HPhi.manyInputs(
         null,
         <HInstruction>[boolifiedRight, notIsAnd],
         _abstractValueDomain.dynamicType)
@@ -189,10 +189,10 @@
   void _handleDiamondBranch(
       void visitCondition(), void visitThen(), void visitElse(),
       {bool isExpression, SourceInformation sourceInformation}) {
-    SsaBranch conditionBranch = new SsaBranch(this);
-    SsaBranch thenBranch = new SsaBranch(this);
-    SsaBranch elseBranch = new SsaBranch(this);
-    SsaBranch joinBranch = new SsaBranch(this);
+    SsaBranch conditionBranch = SsaBranch(this);
+    SsaBranch thenBranch = SsaBranch(this);
+    SsaBranch elseBranch = SsaBranch(this);
+    SsaBranch joinBranch = SsaBranch(this);
 
     conditionBranch.startLocals = builder.localsHandler;
     builder.goto(builder.current, conditionBranch.block);
@@ -206,7 +206,7 @@
 
     if (isExpression) {
       assert(thenValue != null && elseValue != null);
-      HPhi phi = new HPhi.manyInputs(null, <HInstruction>[thenValue, elseValue],
+      HPhi phi = HPhi.manyInputs(null, <HInstruction>[thenValue, elseValue],
           _abstractValueDomain.dynamicType);
       joinBranch.block.addPhi(phi);
       builder.stack.add(phi);
@@ -219,10 +219,10 @@
       joinBlock = joinBranch.block;
     }
 
-    HIfBlockInformation info = new HIfBlockInformation(
-        new HSubExpressionBlockInformation(conditionBranch.graph),
-        new HSubGraphBlockInformation(thenBranch.graph),
-        new HSubGraphBlockInformation(elseBranch.graph));
+    HIfBlockInformation info = HIfBlockInformation(
+        HSubExpressionBlockInformation(conditionBranch.graph),
+        HSubGraphBlockInformation(thenBranch.graph),
+        HSubGraphBlockInformation(elseBranch.graph));
 
     HBasicBlock conditionStartBlock = conditionBranch.block;
     conditionStartBlock.setBlockFlow(info, joinBlock);
diff --git a/pkg/compiler/lib/src/ssa/ssa_tracer.dart b/pkg/compiler/lib/src/ssa/ssa_tracer.dart
index 24ac86f..8887610 100644
--- a/pkg/compiler/lib/src/ssa/ssa_tracer.dart
+++ b/pkg/compiler/lib/src/ssa/ssa_tracer.dart
@@ -75,7 +75,7 @@
   @override
   void visitBasicBlock(HBasicBlock block) {
     HInstructionStringifier stringifier =
-        new HInstructionStringifier(block, closedWorld);
+        HInstructionStringifier(block, closedWorld);
     assert(block.id != null);
     tag("block", () {
       printProperty("name", "B${block.id}");
@@ -94,7 +94,7 @@
           printProperty("method", "None");
           block.forEachPhi((phi) {
             String phiId = stringifier.temporaryId(phi);
-            StringBuffer inputIds = new StringBuffer();
+            StringBuffer inputIds = StringBuffer();
             for (int i = 0; i < phi.inputs.length; i++) {
               inputIds.write(stringifier.temporaryId(phi.inputs[i]));
               inputIds.write(" ");
@@ -326,7 +326,7 @@
 
   String handleGenericInvoke(
       String invokeType, String functionName, List<HInstruction> arguments) {
-    StringBuffer argumentsString = new StringBuffer();
+    StringBuffer argumentsString = StringBuffer();
     for (int i = 0; i < arguments.length; i++) {
       if (i != 0) argumentsString.write(", ");
       argumentsString.write(temporaryId(arguments[i]));
@@ -445,7 +445,7 @@
 
   @override
   String visitLiteralList(HLiteralList node) {
-    StringBuffer elementsString = new StringBuffer();
+    StringBuffer elementsString = StringBuffer();
     for (int i = 0; i < node.inputs.length; i++) {
       if (i != 0) elementsString.write(", ");
       elementsString.write(temporaryId(node.inputs[i]));
@@ -485,7 +485,7 @@
 
   @override
   String visitPhi(HPhi phi) {
-    StringBuffer buffer = new StringBuffer();
+    StringBuffer buffer = StringBuffer();
     buffer.write("Phi: ");
     for (int i = 0; i < phi.inputs.length; i++) {
       if (i > 0) buffer.write(", ");
@@ -546,7 +546,7 @@
 
   @override
   String visitSwitch(HSwitch node) {
-    StringBuffer buf = new StringBuffer();
+    StringBuffer buf = StringBuffer();
     buf.write("Switch: (");
     buf.write(temporaryId(node.inputs[0]));
     buf.write(") ");
diff --git a/pkg/compiler/lib/src/ssa/switch_continue_analysis.dart b/pkg/compiler/lib/src/ssa/switch_continue_analysis.dart
index 776a5d5..bf99220 100644
--- a/pkg/compiler/lib/src/ssa/switch_continue_analysis.dart
+++ b/pkg/compiler/lib/src/ssa/switch_continue_analysis.dart
@@ -12,7 +12,7 @@
   SwitchContinueAnalysis._();
 
   static bool containsContinue(ir.Statement switchCaseBody) {
-    return switchCaseBody.accept(new SwitchContinueAnalysis._());
+    return switchCaseBody.accept(SwitchContinueAnalysis._());
   }
 
   @override
diff --git a/pkg/compiler/lib/src/ssa/type_builder.dart b/pkg/compiler/lib/src/ssa/type_builder.dart
index 84a46b6..e7e0a25 100644
--- a/pkg/compiler/lib/src/ssa/type_builder.dart
+++ b/pkg/compiler/lib/src/ssa/type_builder.dart
@@ -49,7 +49,7 @@
 
   /// Create a type mask for 'trusting' a DartType. Returns `null` if there is
   /// no approximating type mask (i.e. the type mask would be `dynamic`).
-  AbstractValue trustTypeMask(DartType type, {bool hasLateSentinel: false}) {
+  AbstractValue trustTypeMask(DartType type, {bool hasLateSentinel = false}) {
     if (type == null) return null;
     type = builder.localsHandler.substInContext(type);
     if (_closedWorld.dartTypes.isTopType(type)) return null;
@@ -74,7 +74,7 @@
         .isPotentiallyTrue;
     AbstractValue mask = trustTypeMask(type, hasLateSentinel: hasLateSentinel);
     if (mask == null) return original;
-    return new HTypeKnown.pinned(mask, original);
+    return HTypeKnown.pinned(mask, original);
   }
 
   /// Produces code that checks the runtime type is actually the type specified
@@ -87,7 +87,7 @@
     // If it is needed then it seems likely that similar invocations of
     // `buildAsCheck` in `SsaBuilder.visitAs` should also be followed by a
     // similar operation on `registry`; otherwise, this one might not be needed.
-    builder.registry?.registerTypeUse(new TypeUse.isCheck(type));
+    builder.registry?.registerTypeUse(TypeUse.isCheck(type));
     if (other is HAsCheck &&
         other.isRedundant(builder.closedWorld, builder.options)) {
       return original;
@@ -104,7 +104,7 @@
       return original;
     }
     DartType boolType = _closedWorld.commonElements.boolType;
-    builder.registry?.registerTypeUse(new TypeUse.isCheck(boolType));
+    builder.registry?.registerTypeUse(TypeUse.isCheck(boolType));
     return checkInstruction;
   }
 
diff --git a/pkg/compiler/lib/src/ssa/types_propagation.dart b/pkg/compiler/lib/src/ssa/types_propagation.dart
index 92a35e1..f6909df 100644
--- a/pkg/compiler/lib/src/ssa/types_propagation.dart
+++ b/pkg/compiler/lib/src/ssa/types_propagation.dart
@@ -30,10 +30,10 @@
 // TODO(sra): The InvokeDynamicSpecializer should be consulted for better
 // targeted conditioning checks.
 class SsaTypePropagator extends HBaseVisitor implements OptimizationPhase {
-  final Map<int, HInstruction> workmap = new Map<int, HInstruction>();
+  final Map<int, HInstruction> workmap = Map<int, HInstruction>();
   final List<int> worklist = <int>[];
   final Map<HInstruction, Function> pendingOptimizations =
-      new Map<HInstruction, Function>();
+      Map<HInstruction, Function>();
 
   final GlobalTypeInferenceResults results;
   final CommonElements commonElements;
@@ -248,7 +248,7 @@
     Selector selector = (kind == HPrimitiveCheck.RECEIVER_TYPE_CHECK)
         ? instruction.selector
         : null;
-    HPrimitiveCheck converted = new HPrimitiveCheck(
+    HPrimitiveCheck converted = HPrimitiveCheck(
         typeExpression, kind, type, input, instruction.sourceInformation,
         receiverTypeCheckSelector: selector);
     instruction.block.addBefore(instruction, converted);
@@ -418,7 +418,7 @@
           // dominated by the call to use that node instead of [receiver].
           AbstractValue newType = abstractValueDomain.excludeNull(receiverType);
           HTypeKnown converted =
-              new HTypeKnown.witnessed(newType, receiver, instruction);
+              HTypeKnown.witnessed(newType, receiver, instruction);
           instruction.block.addBefore(instruction.next, converted);
           uses.replaceWith(converted);
           addDependentInstructionsToWorkList(converted);
diff --git a/pkg/compiler/lib/src/ssa/validate.dart b/pkg/compiler/lib/src/ssa/validate.dart
index 6bce627..251368b 100644
--- a/pkg/compiler/lib/src/ssa/validate.dart
+++ b/pkg/compiler/lib/src/ssa/validate.dart
@@ -157,7 +157,7 @@
   static bool everyInstruction(
       List<HInstruction> instructions, bool Function(HInstruction, int) f) {
     if (instructions.length > kMaxValidatedInstructionListLength) return true;
-    var copy = new List<HInstruction>.from(instructions);
+    var copy = List<HInstruction>.from(instructions);
     // TODO(floitsch): there is currently no way to sort HInstructions before
     // we have assigned an ID. The loop is therefore O(n^2) for now.
     for (int i = 0; i < copy.length; i++) {
diff --git a/pkg/compiler/lib/src/ssa/value_range_analyzer.dart b/pkg/compiler/lib/src/ssa/value_range_analyzer.dart
index a0af6be..1c4c554 100644
--- a/pkg/compiler/lib/src/ssa/value_range_analyzer.dart
+++ b/pkg/compiler/lib/src/ssa/value_range_analyzer.dart
@@ -18,40 +18,39 @@
   }
 
   Value newIntValue(BigInt value) {
-    return new IntValue(value, this);
+    return IntValue(value, this);
   }
 
   Value newInstructionValue(HInstruction instruction) {
-    return new InstructionValue(instruction, this);
+    return InstructionValue(instruction, this);
   }
 
   Value newPositiveValue(HInstruction instruction) {
-    return new PositiveValue(instruction, this);
+    return PositiveValue(instruction, this);
   }
 
   Value newAddValue(Value left, Value right) {
-    return new AddValue(left, right, this);
+    return AddValue(left, right, this);
   }
 
   Value newSubtractValue(Value left, Value right) {
-    return new SubtractValue(left, right, this);
+    return SubtractValue(left, right, this);
   }
 
   Value newNegateValue(Value value) {
-    return new NegateValue(value, this);
+    return NegateValue(value, this);
   }
 
   Range newUnboundRange() {
-    return new Range.unbound(this);
+    return Range.unbound(this);
   }
 
   Range newNormalizedRange(Value low, Value up) {
-    return new Range.normalize(low, up, this);
+    return Range.normalize(low, up, this);
   }
 
   Range newMarkerRange() {
-    return new Range(
-        new MarkerValue(false, this), new MarkerValue(true, this), this);
+    return Range(MarkerValue(false, this), MarkerValue(true, this), this);
   }
 }
 
@@ -184,7 +183,7 @@
   }
 
   @override
-  int get hashCode => throw new UnsupportedError('IntValue.hashCode');
+  int get hashCode => throw UnsupportedError('IntValue.hashCode');
 
   @override
   String toString() => 'IntValue $value';
@@ -274,7 +273,7 @@
   }
 
   @override
-  int get hashCode => throw new UnsupportedError('InstructionValue.hashCode');
+  int get hashCode => throw UnsupportedError('InstructionValue.hashCode');
 
   @override
   Value operator +(Value other) {
@@ -347,7 +346,7 @@
   }
 
   @override
-  int get hashCode => throw new UnsupportedError('AddValue.hashCode');
+  int get hashCode => throw UnsupportedError('AddValue.hashCode');
 
   @override
   Value operator -() => -left - right;
@@ -402,7 +401,7 @@
   }
 
   @override
-  int get hashCode => throw new UnsupportedError('SubtractValue.hashCode');
+  int get hashCode => throw UnsupportedError('SubtractValue.hashCode');
 
   @override
   Value operator -() => right - left;
@@ -458,7 +457,7 @@
   }
 
   @override
-  int get hashCode => throw new UnsupportedError('Negate.hashCode');
+  int get hashCode => throw UnsupportedError('Negate.hashCode');
 
   @override
   Value operator +(other) {
@@ -602,7 +601,7 @@
   }
 
   @override
-  int get hashCode => throw new UnsupportedError('Range.hashCode');
+  int get hashCode => throw UnsupportedError('Range.hashCode');
 
   bool operator <(Range other) {
     return upper != other.lower && upper.min(other.lower) == upper;
@@ -642,7 +641,7 @@
 
   /// Value ranges for integer instructions. This map gets populated by
   /// the dominator tree visit.
-  final Map<HInstruction, Range> ranges = new Map<HInstruction, Range>();
+  final Map<HInstruction, Range> ranges = Map<HInstruction, Range>();
 
   final JClosedWorld closedWorld;
   final ValueRangeInfo info;
@@ -651,7 +650,7 @@
   HGraph graph;
 
   SsaValueRangeAnalyzer(JClosedWorld closedWorld, this.optimizer)
-      : info = new ValueRangeInfo(),
+      : info = ValueRangeInfo(),
         this.closedWorld = closedWorld;
 
   @override
@@ -719,8 +718,7 @@
       return info.newUnboundRange();
     }
     if (phi.block.isLoopHeader()) {
-      Range range =
-          new LoopUpdateRecognizer(closedWorld, ranges, info).run(phi);
+      Range range = LoopUpdateRecognizer(closedWorld, ranges, info).run(phi);
       if (range == null) return info.newUnboundRange();
       return range;
     }
@@ -750,12 +748,12 @@
       return info.newUnboundRange();
     }
     if (constantNum.isMinusZero) {
-      constantNum = new IntConstantValue(BigInt.zero);
+      constantNum = IntConstantValue(BigInt.zero);
     }
 
     BigInt intValue = constantNum is IntConstantValue
         ? constantNum.intValue
-        : new BigInt.from(constantNum.doubleValue.toInt());
+        : BigInt.from(constantNum.doubleValue.toInt());
     Value value = info.newIntValue(intValue);
     return info.newNormalizedRange(value, value);
   }
@@ -1018,8 +1016,8 @@
 
   HInstruction createRangeConversion(
       HInstruction cursor, HInstruction instruction) {
-    HRangeConversion newInstruction = new HRangeConversion(
-        instruction, closedWorld.abstractValueDomain.intType);
+    HRangeConversion newInstruction =
+        HRangeConversion(instruction, closedWorld.abstractValueDomain.intType);
     conversions.add(newInstruction);
     cursor.block.addBefore(cursor, newInstruction);
     // Update the users of the instruction dominated by [cursor] to
diff --git a/pkg/compiler/lib/src/ssa/value_set.dart b/pkg/compiler/lib/src/ssa/value_set.dart
index f2a6148..9382934 100644
--- a/pkg/compiler/lib/src/ssa/value_set.dart
+++ b/pkg/compiler/lib/src/ssa/value_set.dart
@@ -9,7 +9,7 @@
   int size = 0;
   List<HInstruction> table;
   ValueSetNode collisions;
-  ValueSet() : table = new List<HInstruction>.filled(8, null);
+  ValueSet() : table = List<HInstruction>.filled(8, null);
 
   bool get isEmpty => size == 0;
   int get length => size;
@@ -28,7 +28,7 @@
     if (table[index] == null) {
       table[index] = instruction;
     } else {
-      collisions = new ValueSetNode(instruction, hashCode, collisions);
+      collisions = ValueSetNode(instruction, hashCode, collisions);
     }
     size++;
   }
@@ -81,7 +81,7 @@
   }
 
   ValueSet copy() {
-    return copyTo(new ValueSet(), table, collisions);
+    return copyTo(ValueSet(), table, collisions);
   }
 
   List<HInstruction> toList() {
@@ -111,7 +111,7 @@
 
   ValueSet intersection(ValueSet other) {
     if (size > other.size) return other.intersection(this);
-    ValueSet result = new ValueSet();
+    ValueSet result = ValueSet();
     // Look in the hash table.
     for (int index = 0, length = table.length; index < length; index++) {
       HInstruction instruction = table[index];
@@ -138,7 +138,7 @@
     // Reset the table with a bigger capacity.
     assert(capacity > table.length);
     size = 0;
-    table = new List<HInstruction>.filled(capacity, null);
+    table = List<HInstruction>.filled(capacity, null);
     collisions = null;
     // Add the old instructions to the new table.
     copyTo(this, oldTable, oldCollisions);
diff --git a/pkg/compiler/lib/src/ssa/variable_allocator.dart b/pkg/compiler/lib/src/ssa/variable_allocator.dart
index a544500..4f90aa5 100644
--- a/pkg/compiler/lib/src/ssa/variable_allocator.dart
+++ b/pkg/compiler/lib/src/ssa/variable_allocator.dart
@@ -92,18 +92,18 @@
   final Map<HInstruction, LiveInterval> liveIntervals;
 
   LiveEnvironment(this.liveIntervals, this.endId)
-      : liveInstructions = new Map<HInstruction, int>(),
-        loopMarkers = new Map<HBasicBlock, int>();
+      : liveInstructions = Map<HInstruction, int>(),
+        loopMarkers = Map<HBasicBlock, int>();
 
   /// Remove an instruction from the liveIn set. This method also
   /// updates the live interval of [instruction] to contain the new
   /// range: [id, / id contained in [liveInstructions] /].
   void remove(HInstruction instruction, int id) {
     LiveInterval interval =
-        liveIntervals.putIfAbsent(instruction, () => new LiveInterval());
+        liveIntervals.putIfAbsent(instruction, () => LiveInterval());
     int lastId = liveInstructions[instruction];
     // If [lastId] is null, then this instruction is not being used.
-    interval.add(new LiveRange(id, lastId == null ? id : lastId));
+    interval.add(LiveRange(id, lastId == null ? id : lastId));
     // The instruction is defined at [id].
     interval.start = id;
     liveInstructions.remove(instruction);
@@ -128,8 +128,8 @@
       // being used in the join block and defined before the if/else.
       if (existingId == endId) return;
       LiveInterval range =
-          liveIntervals.putIfAbsent(instruction, () => new LiveInterval());
-      range.add(new LiveRange(other.startId, existingId));
+          liveIntervals.putIfAbsent(instruction, () => LiveInterval());
+      range.add(LiveRange(other.startId, existingId));
       liveInstructions[instruction] = endId;
     });
     other.loopMarkers.forEach((k, v) {
@@ -260,11 +260,11 @@
       HCheck check = instruction;
       HInstruction checked = checkedInstructionOrNonGenerateAtUseSite(check);
       if (!generateAtUseSite.contains(checked)) {
-        liveIntervals.putIfAbsent(checked, () => new LiveInterval());
+        liveIntervals.putIfAbsent(checked, () => LiveInterval());
         // Unconditionally force the live ranges of the HCheck to
         // be the live ranges of the instruction it is checking.
         liveIntervals[instruction] =
-            new LiveInterval.forCheck(instructionId, liveIntervals[checked]);
+            LiveInterval.forCheck(instructionId, liveIntervals[checked]);
       }
     }
   }
@@ -330,7 +330,7 @@
     // range that covers the loop.
     env.liveInstructions.forEach((HInstruction instruction, int id) {
       LiveInterval range =
-          env.liveIntervals.putIfAbsent(instruction, () => new LiveInterval());
+          env.liveIntervals.putIfAbsent(instruction, () => LiveInterval());
       range.loopUpdate(env.startId, lastId);
       env.liveInstructions[instruction] = lastId;
     });
@@ -380,11 +380,11 @@
         assignments = <Copy<HInstruction>>[];
 
   void addCopy(HInstruction source, HInstruction destination) {
-    copies.add(new Copy<HInstruction>(source, destination));
+    copies.add(Copy<HInstruction>(source, destination));
   }
 
   void addAssignment(HInstruction source, HInstruction destination) {
-    assignments.add(new Copy<HInstruction>(source, destination));
+    assignments.add(Copy<HInstruction>(source, destination));
   }
 
   @override
@@ -413,9 +413,9 @@
   }
 
   VariableNames()
-      : ownName = new Map<HInstruction, String>(),
-        copyHandlers = new Map<HBasicBlock, CopyHandler>(),
-        allUsedNames = new Set<String>(),
+      : ownName = Map<HInstruction, String>(),
+        copyHandlers = Map<HBasicBlock, CopyHandler>(),
+        allUsedNames = Set<String>(),
         swapTemp = 't0';
 
   int get numberOfVariables => allUsedNames.length;
@@ -435,14 +435,12 @@
   bool hasName(HInstruction instruction) => ownName.containsKey(instruction);
 
   void addCopy(HBasicBlock block, HInstruction source, HPhi destination) {
-    CopyHandler handler =
-        copyHandlers.putIfAbsent(block, () => new CopyHandler());
+    CopyHandler handler = copyHandlers.putIfAbsent(block, () => CopyHandler());
     handler.addCopy(source, destination);
   }
 
   void addAssignment(HBasicBlock block, HInstruction source, HPhi destination) {
-    CopyHandler handler =
-        copyHandlers.putIfAbsent(block, () => new CopyHandler());
+    CopyHandler handler = copyHandlers.putIfAbsent(block, () => CopyHandler());
     handler.addAssignment(source, destination);
   }
 }
@@ -454,10 +452,10 @@
   final Set<String> usedNames;
   final List<String> freeTemporaryNames;
   int temporaryIndex = 0;
-  static final RegExp regexp = new RegExp('t[0-9]+');
+  static final RegExp regexp = RegExp('t[0-9]+');
 
   VariableNamer(LiveEnvironment environment, this.names, this._namer)
-      : usedNames = new Set<String>(),
+      : usedNames = Set<String>(),
         freeTemporaryNames = <String>[] {
     // [VariableNames.swapTemp] is used when there is a cycle in a copy handler.
     // Therefore we make sure no one uses it.
@@ -579,7 +577,7 @@
 
   SsaVariableAllocator(this._namer, this.liveInstructions, this.liveIntervals,
       this.generateAtUseSite)
-      : this.names = new VariableNames();
+      : this.names = VariableNames();
 
   @override
   void visitGraph(HGraph graph) {
@@ -589,7 +587,7 @@
   @override
   void visitBasicBlock(HBasicBlock block) {
     VariableNamer variableNamer =
-        new VariableNamer(liveInstructions[block], names, _namer);
+        VariableNamer(liveInstructions[block], names, _namer);
 
     block.forEachPhi((HPhi phi) {
       handlePhi(phi, variableNamer);
diff --git a/tools/VERSION b/tools/VERSION
index 8c0370f..77009c4 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 15
 PATCH 0
-PRERELEASE 113
+PRERELEASE 114
 PRERELEASE_PATCH 0
\ No newline at end of file