| Index: lib/compiler/implementation/ssa/builder.dart
|
| ===================================================================
|
| --- lib/compiler/implementation/ssa/builder.dart (revision 13683)
|
| +++ lib/compiler/implementation/ssa/builder.dart (working copy)
|
| @@ -1243,25 +1243,25 @@
|
| Map<Element, HInstruction> fieldValues) {
|
| assert(invariant(classElement, classElement.isImplementation));
|
| classElement.forEachInstanceField(
|
| + (ClassElement enclosingClass, Element member) {
|
| + TreeElements definitions = compiler.analyzeElement(member);
|
| + Node node = member.parseNode(compiler);
|
| + SendSet assignment = node.asSendSet();
|
| + HInstruction value;
|
| + if (assignment === null) {
|
| + value = graph.addConstantNull(constantSystem);
|
| + } else {
|
| + Node right = assignment.arguments.head;
|
| + TreeElements savedElements = elements;
|
| + elements = definitions;
|
| + right.accept(this);
|
| + elements = savedElements;
|
| + value = pop();
|
| + }
|
| + fieldValues[member] = value;
|
| + },
|
| includeBackendMembers: true,
|
| - includeSuperMembers: false,
|
| - f: (ClassElement enclosingClass, Element member) {
|
| - TreeElements definitions = compiler.analyzeElement(member);
|
| - Node node = member.parseNode(compiler);
|
| - SendSet assignment = node.asSendSet();
|
| - HInstruction value;
|
| - if (assignment === null) {
|
| - value = graph.addConstantNull(constantSystem);
|
| - } else {
|
| - Node right = assignment.arguments.head;
|
| - TreeElements savedElements = elements;
|
| - elements = definitions;
|
| - right.accept(this);
|
| - elements = savedElements;
|
| - value = pop();
|
| - }
|
| - fieldValues[member] = value;
|
| - });
|
| + includeSuperMembers: false);
|
| }
|
|
|
|
|
| @@ -1315,12 +1315,12 @@
|
| // Call the JavaScript constructor with the fields as argument.
|
| List<HInstruction> constructorArguments = <HInstruction>[];
|
| classElement.forEachInstanceField(
|
| + (ClassElement enclosingClass, Element member) {
|
| + constructorArguments.add(
|
| + potentiallyCheckType(fieldValues[member], member));
|
| + },
|
| includeBackendMembers: true,
|
| - includeSuperMembers: true,
|
| - f: (ClassElement enclosingClass, Element member) {
|
| - constructorArguments.add(
|
| - potentiallyCheckType(fieldValues[member], member));
|
| - });
|
| + includeSuperMembers: true);
|
|
|
| HForeignNew newObject = new HForeignNew(classElement, constructorArguments);
|
| add(newObject);
|
| @@ -3017,7 +3017,7 @@
|
| }
|
|
|
| // TODO(antonm): migrate rest of SsaBuilder to internalError.
|
| - internalError(String reason, [Node node]) {
|
| + internalError(String reason, {Node node}) {
|
| compiler.internalError(reason, node: node);
|
| }
|
|
|
| @@ -3337,8 +3337,7 @@
|
| }
|
|
|
| visitConditional(Conditional node) {
|
| - SsaBranchBuilder brancher =
|
| - new SsaBranchBuilder(this, diagnosticNode: node);
|
| + SsaBranchBuilder brancher = new SsaBranchBuilder(this, node);
|
| brancher.handleConditional(() => visit(node.condition),
|
| () => visit(node.thenExpression),
|
| () => visit(node.elseExpression));
|
| @@ -4308,7 +4307,7 @@
|
| * return value implies that [mayReuseFromLocals] was set to [:true:].
|
| */
|
| bool mergeLocals(SsaBranch fromBranch, SsaBranch toBranch,
|
| - [bool mayReuseFromLocals]) {
|
| + {bool mayReuseFromLocals}) {
|
| LocalsHandler fromLocals = fromBranch.exitLocals;
|
| if (toBranch.startLocals == null) {
|
| if (mayReuseFromLocals) {
|
| @@ -4367,7 +4366,7 @@
|
| _handleDiamondBranch(visitCondition, visitThen, visitElse, true);
|
| }
|
|
|
| - void handleLogicalAndOr(void left(), void right(), [bool isAnd]) {
|
| + void handleLogicalAndOr(void left(), void right(), {bool isAnd}) {
|
| // x && y is transformed into:
|
| // t0 = boolify(x);
|
| // if (t0) {
|
| @@ -4409,7 +4408,7 @@
|
|
|
| void handleLogicalAndOrWithLeftNode(Node left,
|
| void visitRight(),
|
| - [bool isAnd]) {
|
| + {bool isAnd}) {
|
| // This method is similar to [handleLogicalAndOr] but optimizes the case
|
| // where left is a logical "and" or logical "or".
|
| //
|
| @@ -4433,10 +4432,11 @@
|
| Node middle = link.head;
|
| handleLogicalAndOrWithLeftNode(
|
| newLeft,
|
| - () => handleLogicalAndOrWithLeftNode(middle, visitRight, isAnd),
|
| + () => handleLogicalAndOrWithLeftNode(middle, visitRight,
|
| + isAnd: isAnd),
|
| isAnd: isAnd);
|
| } else {
|
| - handleLogicalAndOr(() => builder.visit(left), visitRight, isAnd);
|
| + handleLogicalAndOr(() => builder.visit(left), visitRight, isAnd: isAnd);
|
| }
|
| }
|
|
|
|
|