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

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

Issue 1068243002: Overhaul tree IR visitor and rename IR classes. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Add dummy use for RootVisitor and InitializerVisitor without arguments Created 5 years, 8 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_integrity.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 6541e41a2533146b0cbf615a0c3a7ffff500457e..115ae15662cac80efc5e7dff69ae019b97212222 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
@@ -41,8 +41,7 @@ import 'cps_ir_builder.dart';
* re-implemented to work directly on the IR.
*/
class IrBuilderTask extends CompilerTask {
- final Map<Element, ir.ExecutableDefinition> nodes =
- <Element, ir.ExecutableDefinition>{};
+ final Map<Element, ir.RootNode> nodes = <Element, ir.RootNode>{};
final bool generateSourceMap;
IrBuilderTask(Compiler compiler, {this.generateSourceMap: true})
@@ -52,11 +51,11 @@ class IrBuilderTask extends CompilerTask {
bool hasIr(Element element) => nodes.containsKey(element.implementation);
- ir.ExecutableDefinition getIr(ExecutableElement element) {
+ ir.RootNode getIr(ExecutableElement element) {
return nodes[element.implementation];
}
- ir.ExecutableDefinition buildNode(AstElement element) {
+ ir.RootNode buildNode(AstElement element) {
if (!canBuild(element)) return null;
TreeElements elementsMapping = element.resolvedAst.elements;
@@ -72,12 +71,11 @@ class IrBuilderTask extends CompilerTask {
elementsMapping, compiler, sourceInformationBuilder)
: new DartIrBuilderVisitor(
elementsMapping, compiler, sourceInformationBuilder);
- ir.ExecutableDefinition definition =
- builder.buildExecutable(element);
- if (definition != null) {
- nodes[element] = definition;
+ ir.RootNode irNode = builder.buildExecutable(element);
+ if (irNode != null) {
+ nodes[element] = irNode;
}
- return definition;
+ return irNode;
});
}
@@ -170,11 +168,11 @@ abstract class IrBuilderVisitor extends SemanticVisitor<ir.Primitive, dynamic>
SemanticSendVisitor get sendVisitor => this;
/**
- * Builds the [ir.ExecutableDefinition] for an executable element. In case the
+ * Builds the [ir.RootNode] for an executable element. In case the
* function uses features that cannot be expressed in the IR, this element
* returns `null`.
*/
- ir.ExecutableDefinition buildExecutable(ExecutableElement element);
+ ir.RootNode buildExecutable(ExecutableElement element);
ClosureScope getClosureScopeForNode(ast.Node node);
ClosureEnvironment getClosureEnvironment();
@@ -201,8 +199,8 @@ abstract class IrBuilderVisitor extends SemanticVisitor<ir.Primitive, dynamic>
Selector selector,
List<ir.Primitive> arguments);
- ir.FunctionDefinition _makeFunctionBody(FunctionElement element,
- ast.FunctionExpression node) {
+ ir.RootNode _makeFunctionBody(FunctionElement element,
+ ast.FunctionExpression node) {
FunctionSignature signature = element.functionSignature;
List<ParameterElement> parameters = [];
signature.orderedForEachParameter(parameters.add);
@@ -247,7 +245,7 @@ abstract class IrBuilderVisitor extends SemanticVisitor<ir.Primitive, dynamic>
ir.Primitive value = irBuilder.buildLocalGet(parameterElement);
result.add(irBuilder.makeFieldInitializer(
initializingFormal.fieldElement,
- irBuilder.makeRunnableBody(value)));
+ irBuilder.makeBody(value)));
});
}
}
@@ -263,7 +261,7 @@ abstract class IrBuilderVisitor extends SemanticVisitor<ir.Primitive, dynamic>
FieldElement field = elements[initializer];
withBuilder(irBuilder.makeInitializerBuilder(), () {
ir.Primitive value = visit(initializer.arguments.head);
- ir.RunnableBody body = irBuilder.makeRunnableBody(value);
+ ir.Body body = irBuilder.makeBody(value);
result.add(irBuilder.makeFieldInitializer(field, body));
});
} else if (initializer is ast.Send) {
@@ -273,11 +271,11 @@ abstract class IrBuilderVisitor extends SemanticVisitor<ir.Primitive, dynamic>
}
ConstructorElement constructor = elements[initializer].implementation;
Selector selector = elements.getSelector(initializer);
- List<ir.RunnableBody> arguments =
+ List<ir.Body> arguments =
initializer.arguments.mapToList((ast.Node argument) {
return withBuilder(irBuilder.makeInitializerBuilder(), () {
ir.Primitive value = visit(argument);
- return irBuilder.makeRunnableBody(value);
+ return irBuilder.makeBody(value);
});
});
result.add(irBuilder.makeSuperInitializer(constructor,
@@ -303,7 +301,7 @@ abstract class IrBuilderVisitor extends SemanticVisitor<ir.Primitive, dynamic>
}
Selector selector = new Selector.callDefaultConstructor();
result.add(irBuilder.makeSuperInitializer(target,
- <ir.RunnableBody>[],
+ <ir.Body>[],
selector));
}
}
@@ -1749,7 +1747,7 @@ abstract class IrBuilderVisitor extends SemanticVisitor<ir.Primitive, dynamic>
return irBuilder.buildConstantLiteral(getConstantForNode(node));
}
- ir.ExecutableDefinition nullIfGiveup(ir.ExecutableDefinition action()) {
+ ir.RootNode nullIfGiveup(ir.RootNode action()) {
try {
return action();
} catch(e, tr) {
@@ -1959,11 +1957,11 @@ class DartIrBuilderVisitor extends IrBuilderVisitor {
ClosureScope getClosureScopeForNode(ast.Node node) => null;
ClosureEnvironment getClosureEnvironment() => null;
- ir.ExecutableDefinition buildExecutable(ExecutableElement element) {
+ ir.RootNode buildExecutable(ExecutableElement element) {
return nullIfGiveup(() {
if (element is FieldElement) {
return buildField(element);
- } else if (element is FunctionElement) {
+ } else if (element is FunctionElement || element is ConstructorElement) {
return buildFunction(element);
} else {
compiler.internalError(element, "Unexpected element type $element");
@@ -1996,7 +1994,7 @@ class DartIrBuilderVisitor extends IrBuilderVisitor {
});
}
- ir.FunctionDefinition buildFunction(FunctionElement element) {
+ ir.RootNode buildFunction(FunctionElement element) {
assert(invariant(element, element.isImplementation));
ast.FunctionExpression node = element.node;
if (element.asyncMarker != AsyncMarker.SYNC) {
@@ -2157,7 +2155,7 @@ class JsIrBuilderVisitor extends IrBuilderVisitor {
scope.boxedLoopVariables);
}
- ir.ExecutableDefinition buildExecutable(ExecutableElement element) {
+ ir.RootNode buildExecutable(ExecutableElement element) {
return nullIfGiveup(() {
switch (element.kind) {
case ElementKind.GENERATIVE_CONSTRUCTOR:
« no previous file with comments | « pkg/compiler/lib/src/cps_ir/cps_ir_builder.dart ('k') | pkg/compiler/lib/src/cps_ir/cps_ir_integrity.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698