Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1902)

Unified Diff: pkg/compiler/lib/src/cps_ir/cps_ir_builder_task.dart

Issue 1779153002: Make source information on conditions mandatory in CPS (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « pkg/compiler/lib/src/cps_ir/cps_ir_builder.dart ('k') | pkg/compiler/lib/src/cps_ir/cps_ir_nodes.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/compiler/lib/src/cps_ir/cps_ir_builder_task.dart
diff --git a/pkg/compiler/lib/src/cps_ir/cps_ir_builder_task.dart b/pkg/compiler/lib/src/cps_ir/cps_ir_builder_task.dart
index 1b54f071151c853e26819a97428e784e037d07e1..654c246c479722e1b1ab1cc11c12c03c10250205 100644
--- a/pkg/compiler/lib/src/cps_ir/cps_ir_builder_task.dart
+++ b/pkg/compiler/lib/src/cps_ir/cps_ir_builder_task.dart
@@ -1090,7 +1090,8 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
irBuilder.buildIf(
build(node.condition),
subbuild(node.thenPart),
- subbuild(node.elsePart));
+ subbuild(node.elsePart),
+ sourceInformationBuilder.buildIf(node));
}
visitLabeledStatement(ast.LabeledStatement node) {
@@ -1493,7 +1494,9 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
condition = buildComparison();
} else {
condition = irBuilder.buildLogicalOperator(condition,
- nested(buildComparison), isLazyOr: true);
+ nested(buildComparison),
+ sourceInformationBuilder.buildSwitchCase(switchCase),
+ isLazyOr: true);
}
}
}
@@ -1534,7 +1537,8 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
};
}
- cases.add(new SwitchCaseInfo(buildCondition, buildBody));
+ cases.add(new SwitchCaseInfo(buildCondition, buildBody,
+ sourceInformationBuilder.buildSwitchCase(switchCase)));
}
irBuilder.buildSimpleSwitch(join, cases, buildDefaultBody);
@@ -1588,7 +1592,8 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
return null;
}
- cases.add(new SwitchCaseInfo(buildCondition, buildBody));
+ cases.add(new SwitchCaseInfo(buildCondition, buildBody,
+ sourceInformationBuilder.buildSwitch(node)));
}
// A loop with a simple switch in the body.
@@ -1597,7 +1602,8 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
buildCondition: (IrBuilder builder) {
ir.Primitive condition = builder.buildIdentical(
builder.environment.index2value[stateIndex], initial);
- return builder.buildNegation(condition);
+ return builder.buildNegation(condition,
+ sourceInformationBuilder.buildSwitch(node));
},
buildBody: (IrBuilder builder) {
builder.buildSimpleSwitch(loop, cases, null);
@@ -1668,7 +1674,8 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
return irBuilder.buildConditional(
build(node.condition),
subbuild(node.thenExpression),
- subbuild(node.elseExpression));
+ subbuild(node.elseExpression),
+ sourceInformationBuilder.buildIf(node));
}
// For all simple literals:
@@ -1927,7 +1934,8 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
target,
new Selector.getter(name),
elements.getTypeMask(node),
- sourceInformationBuilder.buildGet(node))));
+ sourceInformationBuilder.buildGet(node))),
+ sourceInformationBuilder.buildIf(node));
}
@override
@@ -2066,6 +2074,7 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
ir.Primitive translateLogicalOperator(ast.Expression left,
ast.Expression right,
+ SourceInformation sourceInformation,
{bool isLazyOr}) {
ir.Primitive leftValue = visit(left);
@@ -2074,25 +2083,28 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
}
return irBuilder.buildLogicalOperator(
- leftValue, buildRightValue, isLazyOr: isLazyOr);
+ leftValue, buildRightValue, sourceInformation, isLazyOr: isLazyOr);
}
@override
ir.Primitive visitIfNull(
ast.Send node, ast.Node left, ast.Node right, _) {
- return irBuilder.buildIfNull(build(left), subbuild(right));
+ return irBuilder.buildIfNull(build(left), subbuild(right),
+ sourceInformationBuilder.buildIf(node));
}
@override
ir.Primitive visitLogicalAnd(
ast.Send node, ast.Node left, ast.Node right, _) {
- return translateLogicalOperator(left, right, isLazyOr: false);
+ return translateLogicalOperator(left, right,
+ sourceInformationBuilder.buildIf(node), isLazyOr: false);
}
@override
ir.Primitive visitLogicalOr(
ast.Send node, ast.Node left, ast.Node right, _) {
- return translateLogicalOperator(left, right, isLazyOr: true);
+ return translateLogicalOperator(left, right,
+ sourceInformationBuilder.buildIf(node), isLazyOr: true);
}
@override
@@ -2132,7 +2144,8 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
type,
sourceInformationBuilder.buildIs(node),
isTypeTest: true);
- return irBuilder.buildNegation(check);
+ return irBuilder.buildNegation(check,
+ sourceInformationBuilder.buildIf(node));
}
ir.Primitive translateBinary(ast.Send node,
@@ -2231,7 +2244,8 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
ast.Send node,
ast.Node expression,
_) {
- return irBuilder.buildNegation(visit(expression));
+ return irBuilder.buildNegation(visit(expression),
+ sourceInformationBuilder.buildIf(node));
}
@override
@@ -2241,7 +2255,8 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
ast.Node right,
_) {
return irBuilder.buildNegation(
- translateBinary(node, left, op.BinaryOperator.NOT_EQ, right));
+ translateBinary(node, left, op.BinaryOperator.NOT_EQ, right),
+ sourceInformationBuilder.buildIf(node));
}
@override
@@ -2252,7 +2267,8 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
_) {
return irBuilder.buildNegation(
translateSuperBinary(function, op.BinaryOperator.NOT_EQ, argument,
- sourceInformationBuilder.buildBinary(node)));
+ sourceInformationBuilder.buildBinary(node)),
+ sourceInformationBuilder.buildIf(node));
}
@override
@@ -2427,7 +2443,8 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
elements.getTypeMask(node),
arguments,
sourceInformationBuilder.buildCall(node, node.selector));
- }));
+ }),
+ sourceInformationBuilder.buildIf(node));
}
ir.Primitive handleLocalInvoke(
@@ -2681,7 +2698,8 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
ir.Primitive newValue = build(rhs.rhs);
setValue(newValue);
return newValue;
- }));
+ }),
+ sourceInformationBuilder.buildIf(node));
}
Selector operatorSelector =
@@ -2722,7 +2740,8 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
ir.Primitive newValue = build(rhs);
setValue(newValue);
return newValue;
- }));
+ }),
+ sourceInformationBuilder.buildIf(node));
}
@override
@@ -2755,7 +2774,8 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
new Selector.setter(name),
elements.getTypeMask(node),
visit(rhs),
- sourceInformationBuilder.buildAssignment(node))));
+ sourceInformationBuilder.buildAssignment(node))),
+ sourceInformationBuilder.buildIf(node));
}
@override
@@ -2872,7 +2892,8 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
});
}
return node.isConditional
- ? irBuilder.buildIfNotNullSend(target, nested(helper))
+ ? irBuilder.buildIfNotNullSend(
+ target, nested(helper), sourceInformationBuilder.buildIf(node))
: helper();
}
@@ -2901,7 +2922,8 @@ class IrBuilderVisitor extends ast.Visitor<ir.Primitive>
});
}
return node.isConditional
- ? irBuilder.buildIfNotNullSend(target, nested(helper))
+ ? irBuilder.buildIfNotNullSend(
+ target, nested(helper), sourceInformationBuilder.buildIf(node))
: helper();
}
« no previous file with comments | « pkg/compiler/lib/src/cps_ir/cps_ir_builder.dart ('k') | pkg/compiler/lib/src/cps_ir/cps_ir_nodes.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698