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

Unified Diff: pkg/compiler/lib/src/tree_ir/tree_ir_nodes.dart

Issue 1155463005: dart2js cps: Remove dart2dart from cps pipeline and clean up. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Skip tests specific to the dart backend Created 5 years, 7 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
Index: pkg/compiler/lib/src/tree_ir/tree_ir_nodes.dart
diff --git a/pkg/compiler/lib/src/tree_ir/tree_ir_nodes.dart b/pkg/compiler/lib/src/tree_ir/tree_ir_nodes.dart
index fe216b17377bc80c77477838d2a9ab97b6fb57d4..d200e405e5cf36eef3aa733695a69536760dfbdf 100644
--- a/pkg/compiler/lib/src/tree_ir/tree_ir_nodes.dart
+++ b/pkg/compiler/lib/src/tree_ir/tree_ir_nodes.dart
@@ -6,10 +6,9 @@ library tree_ir_nodes;
import '../constants/expressions.dart';
import '../constants/values.dart' as values;
-import '../dart_types.dart' show DartType, GenericType, InterfaceType, TypeVariableType;
+import '../dart_types.dart' show DartType, InterfaceType, TypeVariableType;
import '../elements/elements.dart';
import '../io/source_information.dart' show SourceInformation;
-import '../universe/universe.dart';
import '../universe/universe.dart' show Selector;
// The Tree language is the target of translation out of the CPS-based IR.
@@ -288,19 +287,8 @@ class This extends Expression {
accept1(ExpressionVisitor1 visitor, arg) => visitor.visitThis(this, arg);
}
-class ReifyTypeVar extends Expression implements DartSpecificNode {
- TypeVariableElement typeVariable;
-
- ReifyTypeVar(this.typeVariable);
-
- accept(ExpressionVisitor visitor) => visitor.visitReifyTypeVar(this);
- accept1(ExpressionVisitor1 visitor, arg) {
- return visitor.visitReifyTypeVar(this, arg);
- }
-}
-
class LiteralList extends Expression {
- final GenericType type;
+ final InterfaceType type;
final List<Expression> values;
LiteralList(this.type, this.values);
@@ -319,7 +307,7 @@ class LiteralMapEntry {
}
class LiteralMap extends Expression {
- final GenericType type;
+ final InterfaceType type;
final List<LiteralMapEntry> entries;
LiteralMap(this.type, this.entries);
@@ -390,7 +378,10 @@ class Not extends Expression {
accept1(ExpressionVisitor1 visitor, arg) => visitor.visitNot(this, arg);
}
-class FunctionExpression extends Expression implements DartSpecificNode {
+/// Currently unused.
+///
+/// See CreateFunction in the cps_ir_nodes.dart.
+class FunctionExpression extends Expression {
final FunctionDefinition definition;
FunctionExpression(this.definition);
@@ -401,26 +392,6 @@ class FunctionExpression extends Expression implements DartSpecificNode {
}
}
-/// Declares a local function.
-/// Used for functions that may not occur in expression context due to
-/// being recursive or having a return type.
-/// The [variable] must not occur as the left-hand side of an [Assign] or
-/// any other [FunctionDeclaration].
-class FunctionDeclaration extends Statement implements DartSpecificNode {
- Variable variable;
- final FunctionDefinition definition;
- Statement next;
-
- FunctionDeclaration(this.variable, this.definition, this.next) {
- ++variable.writeCount;
- }
-
- accept(StatementVisitor visitor) => visitor.visitFunctionDeclaration(this);
- accept1(StatementVisitor1 visitor, arg) {
- return visitor.visitFunctionDeclaration(this, arg);
- }
-}
-
/// A [LabeledStatement] or [WhileTrue] or [WhileCondition].
abstract class JumpTarget extends Statement {
Label get label;
@@ -539,28 +510,6 @@ class Continue extends Jump {
accept1(StatementVisitor1 visitor, arg) => visitor.visitContinue(this, arg);
}
-/// Declares a captured [variable] with an initial [value].
-///
-/// All uses of the variable must be inside the [next] statement.
-class VariableDeclaration extends Statement implements DartSpecificNode {
- Variable variable;
- Expression value;
- Statement next;
-
- VariableDeclaration(this.variable, this.value, this.next) {
- assert(variable.isCaptured); // Because otherwise no declaration is needed.
- ++variable.writeCount;
- }
-
- accept(StatementVisitor visitor) {
- return visitor.visitVariableDeclaration(this);
- }
-
- accept1(StatementVisitor1 visitor, arg) {
- return visitor.visitVariableDeclaration(this, arg);
- }
-}
-
/**
* A return exit from the function.
*
@@ -663,183 +612,25 @@ class Try extends Statement {
}
}
-abstract class RootNode extends Node {
- ExecutableElement get element;
- List<Variable> get parameters;
-
- /// True if there is no body for this root node.
- ///
- /// In some parts of the compiler, empty root nodes are used as placeholders
- /// for abstract methods, external constructors, fields without initializers,
- /// etc.
- bool get isEmpty;
-
- void forEachBody(void action(Statement node));
- void replaceEachBody(Statement transform(Statement node));
-
- accept(RootVisitor v);
- accept1(RootVisitor1 v, arg);
-}
-
-class FieldDefinition extends RootNode implements DartSpecificNode {
- final FieldElement element;
- // The `body` of a field is its initializer.
- Statement body;
- List<Variable> get parameters => const <Variable>[];
-
- FieldDefinition(this.element, this.body);
-
- bool get isEmpty => body == null;
-
- accept(RootVisitor v) => v.visitFieldDefinition(this);
- accept1(RootVisitor1 v, arg) => v.visitFieldDefinition(this, arg);
-
- void forEachBody(void action(Statement node)) {
- if (isEmpty) return;
- action(body);
- }
-
- void replaceEachBody(Statement transform(Statement node)) {
- if (isEmpty) return;
- body = transform(body);
- }
-}
-
-class FunctionDefinition extends RootNode {
+class FunctionDefinition extends Node {
final ExecutableElement element;
final List<Variable> parameters;
Statement body;
- final List<ConstDeclaration> localConstants;
- final List<ConstantExpression> defaultParameterValues;
/// Creates a function definition and updates `writeCount` for [parameters].
- FunctionDefinition(this.element, this.parameters, this.body,
- this.localConstants, this.defaultParameterValues) {
+ FunctionDefinition(this.element, this.parameters, this.body) {
for (Variable param in parameters) {
param.writeCount++; // Being a parameter counts as a write.
}
}
-
- bool get isEmpty => body == null;
-
- accept(RootVisitor v) => v.visitFunctionDefinition(this);
- accept1(RootVisitor1 v, arg) => v.visitFunctionDefinition(this, arg);
-
- void forEachBody(void action(Statement node)) {
- if (isEmpty) return;
- action(body);
- }
-
- void replaceEachBody(Statement transform(Statement node)) {
- if (isEmpty) return;
- body = transform(body);
- }
}
-abstract class Initializer implements DartSpecificNode {
- accept(InitializerVisitor v);
- accept1(InitializerVisitor1 v, arg);
-
- void forEachBody(void action(Statement node));
- void replaceEachBody(Statement transform(Statement node));
-}
-
-class FieldInitializer extends Initializer {
- final FieldElement element;
- Statement body;
- bool processed = false;
-
- FieldInitializer(this.element, this.body);
-
- accept(InitializerVisitor visitor) => visitor.visitFieldInitializer(this);
- accept1(InitializerVisitor1 visitor, arg) {
- return visitor.visitFieldInitializer(this, arg);
- }
-
- void forEachBody(void action(Statement node)) {
- action(body);
- }
-
- void replaceEachBody(Statement transform(Statement node)) {
- body = transform(body);
- }
-}
-
-class SuperInitializer extends Initializer {
- final ConstructorElement target;
- final Selector selector;
- final List<Statement> arguments;
- bool processed = false;
-
- SuperInitializer(this.target, this.selector, this.arguments);
- accept(InitializerVisitor visitor) => visitor.visitSuperInitializer(this);
- accept1(InitializerVisitor1 visitor, arg) {
- return visitor.visitSuperInitializer(this, arg);
- }
-
- void forEachBody(void action(Statement node)) {
- arguments.forEach(action);
- }
-
- void replaceEachBody(Statement transform(Statement node)) {
- for (int i = 0; i < arguments.length; i++) {
- arguments[i] = transform(arguments[i]);
- }
- }
-}
-
-class ConstructorDefinition extends RootNode
- implements DartSpecificNode {
- final ConstructorElement element;
- final List<Variable> parameters;
- Statement body;
- final List<ConstDeclaration> localConstants;
- final List<ConstantExpression> defaultParameterValues;
- final List<Initializer> initializers;
-
- ConstructorDefinition(this.element,
- this.parameters,
- this.body,
- this.initializers,
- this.localConstants,
- this.defaultParameterValues) {
- for (Variable param in parameters) {
- param.writeCount++; // Being a parameter counts as a write.
- }
- }
-
- bool get isEmpty => body == null;
-
- accept(RootVisitor v) => v.visitConstructorDefinition(this);
- accept1(RootVisitor1 v, arg) => v.visitConstructorDefinition(this, arg);
-
- void forEachBody(void action(Statement node)) {
- if (isEmpty) return;
- for (Initializer init in initializers) {
- init.forEachBody(action);
- }
- action(body);
- }
-
- void replaceEachBody(Statement transform(Statement node)) {
- if (isEmpty) return;
- for (Initializer init in initializers) {
- init.replaceEachBody(transform);
- }
- body = transform(body);
- }
-}
-
-abstract class JsSpecificNode implements Node {}
-
-abstract class DartSpecificNode implements Node {}
-
-class CreateBox extends Expression implements JsSpecificNode {
+class CreateBox extends Expression {
accept(ExpressionVisitor visitor) => visitor.visitCreateBox(this);
accept1(ExpressionVisitor1 visitor, arg) => visitor.visitCreateBox(this, arg);
}
-class CreateInstance extends Expression implements JsSpecificNode {
+class CreateInstance extends Expression {
ClassElement classElement;
List<Expression> arguments;
List<Expression> typeInformation;
@@ -852,7 +643,7 @@ class CreateInstance extends Expression implements JsSpecificNode {
}
}
-class GetField extends Expression implements JsSpecificNode {
+class GetField extends Expression {
Expression object;
Element field;
@@ -862,7 +653,7 @@ class GetField extends Expression implements JsSpecificNode {
accept1(ExpressionVisitor1 visitor, arg) => visitor.visitGetField(this, arg);
}
-class SetField extends Expression implements JsSpecificNode {
+class SetField extends Expression {
Expression object;
Element field;
Expression value;
@@ -896,7 +687,7 @@ class SetStatic extends Expression {
accept1(ExpressionVisitor1 visitor, arg) => visitor.visitSetStatic(this, arg);
}
-class ReifyRuntimeType extends Expression implements JsSpecificNode {
+class ReifyRuntimeType extends Expression {
Expression value;
ReifyRuntimeType(this.value);
@@ -910,7 +701,7 @@ class ReifyRuntimeType extends Expression implements JsSpecificNode {
}
}
-class ReadTypeVariable extends Expression implements JsSpecificNode {
+class ReadTypeVariable extends Expression {
final TypeVariableType variable;
Expression target;
@@ -925,7 +716,7 @@ class ReadTypeVariable extends Expression implements JsSpecificNode {
}
}
-class CreateInvocationMirror extends Expression implements JsSpecificNode {
+class CreateInvocationMirror extends Expression {
final Selector selector;
final List<Expression> arguments;
@@ -969,7 +760,6 @@ abstract class ExpressionVisitor<E> {
E visitConcatenateStrings(ConcatenateStrings node);
E visitConstant(Constant node);
E visitThis(This node);
- E visitReifyTypeVar(ReifyTypeVar node);
E visitConditional(Conditional node);
E visitLogicalOperator(LogicalOperator node);
E visitNot(Not node);
@@ -1000,7 +790,6 @@ abstract class ExpressionVisitor1<E, A> {
E visitConcatenateStrings(ConcatenateStrings node, A arg);
E visitConstant(Constant node, A arg);
E visitThis(This node, A arg);
- E visitReifyTypeVar(ReifyTypeVar node, A arg);
E visitConditional(Conditional node, A arg);
E visitLogicalOperator(LogicalOperator node, A arg);
E visitNot(Not node, A arg);
@@ -1031,8 +820,6 @@ abstract class StatementVisitor<S> {
S visitIf(If node);
S visitWhileTrue(WhileTrue node);
S visitWhileCondition(WhileCondition node);
- S visitFunctionDeclaration(FunctionDeclaration node);
- S visitVariableDeclaration(VariableDeclaration node);
S visitExpressionStatement(ExpressionStatement node);
S visitTry(Try node);
}
@@ -1048,39 +835,10 @@ abstract class StatementVisitor1<S, A> {
S visitIf(If node, A arg);
S visitWhileTrue(WhileTrue node, A arg);
S visitWhileCondition(WhileCondition node, A arg);
- S visitFunctionDeclaration(FunctionDeclaration node, A arg);
- S visitVariableDeclaration(VariableDeclaration node, A arg);
S visitExpressionStatement(ExpressionStatement node, A arg);
S visitTry(Try node, A arg);
}
-abstract class RootVisitor<T> {
- T visitRootNode(RootNode node) => node.accept(this);
- T visitFunctionDefinition(FunctionDefinition node);
- T visitConstructorDefinition(ConstructorDefinition node);
- T visitFieldDefinition(FieldDefinition node);
-}
-
-abstract class RootVisitor1<T, A> {
- T visitRootNode(RootNode node, A arg) => node.accept1(this, arg);
- T visitFunctionDefinition(FunctionDefinition node, A arg);
- T visitConstructorDefinition(ConstructorDefinition node, A arg);
- T visitFieldDefinition(FieldDefinition node, A arg);
-}
-
-abstract class InitializerVisitor<T> {
- T visitInitializer(Initializer node) => node.accept(this);
- T visitFieldInitializer(FieldInitializer node);
- T visitSuperInitializer(SuperInitializer node);
-}
-
-
-abstract class InitializerVisitor1<T, A> {
- T visitInitializer(Initializer node, A arg) => node.accept1(this, arg);
- T visitFieldInitializer(FieldInitializer node, A arg);
- T visitSuperInitializer(SuperInitializer node, A arg);
-}
-
abstract class RecursiveVisitor implements StatementVisitor, ExpressionVisitor {
visitExpression(Expression e) => e.accept(this);
visitStatement(Statement s) => s.accept(this);
@@ -1093,11 +851,6 @@ abstract class RecursiveVisitor implements StatementVisitor, ExpressionVisitor {
visitVariable(node.variable);
}
- visitVariableDeclaration(VariableDeclaration node) {
- visitVariable(node.variable);
- visitStatement(node.next);
- }
-
visitAssign(Assign node) {
visitVariable(node.variable);
visitExpression(node.value);
@@ -1129,8 +882,6 @@ abstract class RecursiveVisitor implements StatementVisitor, ExpressionVisitor {
visitThis(This node) {}
- visitReifyTypeVar(ReifyTypeVar node) {}
-
visitConditional(Conditional node) {
visitExpression(node.condition);
visitExpression(node.thenExpression);
@@ -1201,11 +952,6 @@ abstract class RecursiveVisitor implements StatementVisitor, ExpressionVisitor {
visitStatement(node.next);
}
- visitFunctionDeclaration(FunctionDeclaration node) {
- visitInnerFunction(node.definition);
- visitStatement(node.next);
- }
-
visitExpressionStatement(ExpressionStatement node) {
visitExpression(node.expression);
visitStatement(node.next);
@@ -1276,11 +1022,6 @@ class RecursiveTransformer extends Transformer {
visitVariableUse(VariableUse node) => node;
- visitVariableDeclaration(VariableDeclaration node) {
- node.next = visitStatement(node.next);
- return node;
- }
-
visitAssign(Assign node) {
node.value = visitExpression(node.value);
return node;
@@ -1317,8 +1058,6 @@ class RecursiveTransformer extends Transformer {
visitThis(This node) => node;
- visitReifyTypeVar(ReifyTypeVar node) => node;
-
visitConditional(Conditional node) {
node.condition = visitExpression(node.condition);
node.thenExpression = visitExpression(node.thenExpression);
@@ -1402,12 +1141,6 @@ class RecursiveTransformer extends Transformer {
return node;
}
- visitFunctionDeclaration(FunctionDeclaration node) {
- visitInnerFunction(node.definition);
- node.next = visitStatement(node.next);
- return node;
- }
-
visitExpressionStatement(ExpressionStatement node) {
node.expression = visitExpression(node.expression);
node.next = visitStatement(node.next);
« no previous file with comments | « pkg/compiler/lib/src/tree_ir/tree_ir_integrity.dart ('k') | pkg/compiler/lib/src/tree_ir/tree_ir_tracer.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698