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

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

Issue 810783002: Clean up FunctionDefinition in the IR S-expression representation. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years 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/analyzer2dart/test/sexpr_data.dart ('k') | tests/compiler/dart2js/backend_dart/opt_constprop_test.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_nodes_sexpr.dart
diff --git a/pkg/compiler/lib/src/cps_ir/cps_ir_nodes_sexpr.dart b/pkg/compiler/lib/src/cps_ir/cps_ir_nodes_sexpr.dart
index 177d61148bf0aa4ac35ef6cb7461fe6dc1ff2ea2..9c387c3fa8dec2ab0ab9152028c99c37fa9f06a8 100644
--- a/pkg/compiler/lib/src/cps_ir/cps_ir_nodes_sexpr.dart
+++ b/pkg/compiler/lib/src/cps_ir/cps_ir_nodes_sexpr.dart
@@ -15,8 +15,8 @@ typedef String Decorator(Node node, String s);
class SExpressionStringifier extends Visitor<String> with Indentation {
final _Namer namer = new _Namer();
- String newValueName(Node node) => namer.defineValueName(node);
- String newContinuationName(Node node) => namer.defineContinuationName(node);
+ String newValueName(Primitive node) => namer.nameValue(node);
+ String newContinuationName(Continuation node) => namer.nameContinuation(node);
Decorator decorator;
SExpressionStringifier([this.decorator]) {
@@ -30,7 +30,7 @@ class SExpressionStringifier extends Visitor<String> with Indentation {
}
String visitParameter(Parameter node) {
- return namer.useElementName(node);
+ return namer.nameParameter(node);
}
String visitClosureVariable(ClosureVariable node) {
@@ -41,25 +41,24 @@ class SExpressionStringifier extends Visitor<String> with Indentation {
/// calls must go through this method.
String visit(Node node) {
String s = super.visit(node);
- return (decorator == null) ? s : decorator(node, s);
+ return decorator(node, s);
}
String visitFunctionDefinition(FunctionDefinition node) {
String name = node.element.name;
- namer.useReturnName(node.returnContinuation);
- String closureVariables = node.closureVariables.isEmpty
- ? ''
- : '{${node.closureVariables.map(namer.defineClosureName).join(' ')}} ';
+ namer.setReturnContinuation(node.returnContinuation);
+ String closureVariables =
+ node.closureVariables.map(namer.nameClosureVariable).join(' ');
String parameters = node.parameters.map(visit).join(' ');
String body = indentBlock(() => visit(node.body));
- return '$indentation(FunctionDefinition $name $closureVariables'
- '($parameters return)\n$body)';
+ return '$indentation(FunctionDefinition $name ($parameters) return'
+ ' ($closureVariables)\n$body)';
}
String visitFieldDefinition(FieldDefinition node) {
String name = node.element.name;
if (node.hasInitializer) {
- namer.useReturnName(node.returnContinuation);
+ namer.setReturnContinuation(node.returnContinuation);
String body = indentBlock(() => visit(node.body));
return '$indentation(FieldDefinition $name (return)\n'
'$body)';
@@ -236,29 +235,29 @@ class _Namer {
int _valueCounter = 0;
int _continuationCounter = 0;
- String useElementName(Parameter parameter) {
+ String nameParameter(Parameter parameter) {
assert(!_names.containsKey(parameter));
return _names[parameter] = parameter.hint.name;
}
- String defineClosureName(ClosureVariable variable) {
+ String nameClosureVariable(ClosureVariable variable) {
assert(!_names.containsKey(variable));
return _names[variable] = variable.hint.name;
}
- String defineContinuationName(Node node) {
+ String nameContinuation(Continuation node) {
assert(!_names.containsKey(node));
return _names[node] = 'k${_continuationCounter++}';
}
- String defineValueName(Node node) {
+ String nameValue(Primitive node) {
assert(!_names.containsKey(node));
return _names[node] = 'v${_valueCounter++}';
}
- String useReturnName(Continuation node) {
+ void setReturnContinuation(Continuation node) {
assert(!_names.containsKey(node) || _names[node] == 'return');
- return _names[node] = 'return';
+ _names[node] = 'return';
}
String getName(Node node) {
« no previous file with comments | « pkg/analyzer2dart/test/sexpr_data.dart ('k') | tests/compiler/dart2js/backend_dart/opt_constprop_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698