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

Unified Diff: pkg/compiler/lib/src/js_backend/codegen/codegen.dart

Issue 1229673006: Generated source mapping through CPS. (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Updated cf. comments. Created 5 years, 5 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/io/start_end_information.dart ('k') | pkg/compiler/lib/src/ssa/builder.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/compiler/lib/src/js_backend/codegen/codegen.dart
diff --git a/pkg/compiler/lib/src/js_backend/codegen/codegen.dart b/pkg/compiler/lib/src/js_backend/codegen/codegen.dart
index 2a4480e135dbdf4d73467d417e313f8e611b956d..e0388d2666f5da106c86665e614b9c33403149ab 100644
--- a/pkg/compiler/lib/src/js_backend/codegen/codegen.dart
+++ b/pkg/compiler/lib/src/js_backend/codegen/codegen.dart
@@ -51,7 +51,7 @@ class CodeGenerator extends tree_ir.StatementVisitor
/// Stacks whose top element is the current target of an unlabeled break
/// or continue. For continues, this is the loop node itself.
final tree_ir.FallthroughStack shortBreak = new tree_ir.FallthroughStack();
- final tree_ir.FallthroughStack shortContinue =
+ final tree_ir.FallthroughStack shortContinue =
new tree_ir.FallthroughStack();
Set<tree_ir.Label> usedLabels = new Set<tree_ir.Label>();
@@ -183,14 +183,18 @@ class CodeGenerator extends tree_ir.StatementVisitor
visitExpression(node.elseExpression));
}
- js.Expression buildConstant(ConstantValue constant) {
+ js.Expression buildConstant(ConstantValue constant,
+ {SourceInformation sourceInformation}) {
registry.registerCompileTimeConstant(constant);
- return glue.constantReference(constant);
+ return glue.constantReference(constant)
+ .withSourceInformation(sourceInformation);
}
@override
js.Expression visitConstant(tree_ir.Constant node) {
- return buildConstant(node.value);
+ return buildConstant(
+ node.value,
+ sourceInformation: node.sourceInformation);
}
js.Expression compileConstant(ParameterElement parameter) {
@@ -213,7 +217,8 @@ class CodeGenerator extends tree_ir.StatementVisitor
registry.registerInstantiatedType(node.type);
FunctionElement target = node.target;
List<js.Expression> arguments = visitExpressionList(node.arguments);
- return buildStaticInvoke(target, arguments);
+ return buildStaticInvoke(
+ target, arguments, sourceInformation: node.sourceInformation);
}
void registerMethodInvoke(tree_ir.InvokeMethod node) {
@@ -240,7 +245,8 @@ class CodeGenerator extends tree_ir.StatementVisitor
registerMethodInvoke(node);
return js.propertyCall(visitExpression(node.receiver),
glue.invocationName(node.selector),
- visitExpressionList(node.arguments));
+ visitExpressionList(node.arguments))
+ .withSourceInformation(node.sourceInformation);
}
@override
@@ -260,13 +266,15 @@ class CodeGenerator extends tree_ir.StatementVisitor
return js.js('#.#(#)',
[visitExpression(node.receiver),
glue.instanceMethodName(node.target),
- visitExpressionList(node.arguments)]);
+ visitExpressionList(node.arguments)])
+ .withSourceInformation(node.sourceInformation);
}
return js.js('#.#.call(#, #)',
[glue.prototypeAccess(node.target.enclosingClass),
glue.invocationName(node.selector),
visitExpression(node.receiver),
- visitExpressionList(node.arguments)]);
+ visitExpressionList(node.arguments)])
+ .withSourceInformation(node.sourceInformation);
}
@override
@@ -425,7 +433,7 @@ class CodeGenerator extends tree_ir.StatementVisitor
} else if (isEffectiveBreakTarget(node, shortBreak.target)) {
// Unlabeled break to the break target or to an equivalent break.
shortBreak.use();
- accumulator.add(new js.Break(null));
+ accumulator.add(new js.Break(null));
} else {
usedLabels.add(node.target);
accumulator.add(new js.Break(node.target.name));
@@ -547,7 +555,8 @@ class CodeGenerator extends tree_ir.StatementVisitor
registry.registerCompileTimeConstant(new NullConstantValue());
fallthrough.use();
} else {
- accumulator.add(new js.Return(visitExpression(node.value)));
+ accumulator.add(new js.Return(visitExpression(node.value))
+ .withSourceInformation(node.sourceInformation));
}
}
@@ -596,7 +605,8 @@ class CodeGenerator extends tree_ir.StatementVisitor
}
js.Expression instance = new js.New(
glue.constructorAccess(classElement),
- visitExpressionList(node.arguments));
+ visitExpressionList(node.arguments))
+ .withSourceInformation(node.sourceInformation);
List<tree_ir.Expression> typeInformation = node.typeInformation;
assert(typeInformation.isEmpty ||
@@ -606,7 +616,8 @@ class CodeGenerator extends tree_ir.StatementVisitor
js.Expression typeArguments = new js.ArrayInitializer(
visitExpressionList(typeInformation));
return buildStaticHelperInvocation(helper,
- <js.Expression>[instance, typeArguments]);
+ <js.Expression>[instance, typeArguments],
+ sourceInformation: node.sourceInformation);
} else {
return instance;
}
@@ -704,19 +715,25 @@ class CodeGenerator extends tree_ir.StatementVisitor
visitExpression(node.value)]);
}
- js.Expression buildStaticHelperInvocation(FunctionElement helper,
- List<js.Expression> arguments) {
+ js.Expression buildStaticHelperInvocation(
+ FunctionElement helper,
+ List<js.Expression> arguments,
+ {SourceInformation sourceInformation}) {
registry.registerStaticUse(helper);
- return buildStaticInvoke(helper, arguments);
+ return buildStaticInvoke(
+ helper, arguments, sourceInformation: sourceInformation);
}
@override
js.Expression visitReifyRuntimeType(tree_ir.ReifyRuntimeType node) {
- FunctionElement createType = glue.getCreateRuntimeType();
- FunctionElement typeToString = glue.getRuntimeTypeToString();
- return buildStaticHelperInvocation(createType,
- [buildStaticHelperInvocation(typeToString,
- [visitExpression(node.value)])]);
+ js.Expression typeToString = buildStaticHelperInvocation(
+ glue.getRuntimeTypeToString(),
+ [visitExpression(node.value)],
+ sourceInformation: node.sourceInformation);
+ return buildStaticHelperInvocation(
+ glue.getCreateRuntimeType(),
+ [typeToString],
+ sourceInformation: node.sourceInformation);
}
@override
@@ -727,11 +744,13 @@ class CodeGenerator extends tree_ir.StatementVisitor
js.Expression typeName = glue.getRuntimeTypeName(context);
return buildStaticHelperInvocation(
glue.getRuntimeTypeArgument(),
- [visitExpression(node.target), typeName, index]);
+ [visitExpression(node.target), typeName, index],
+ sourceInformation: node.sourceInformation);
} else {
return buildStaticHelperInvocation(
glue.getTypeArgumentByIndex(),
- [visitExpression(node.target), index]);
+ [visitExpression(node.target), index],
+ sourceInformation: node.sourceInformation);
}
}
« no previous file with comments | « pkg/compiler/lib/src/io/start_end_information.dart ('k') | pkg/compiler/lib/src/ssa/builder.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698