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

Side by Side Diff: pkg/js_ast/lib/src/nodes.dart

Issue 1153243003: dart2js: Use frequency of occurence to sort metadata indices. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 part of js_ast; 5 part of js_ast;
6 6
7 abstract class NodeVisitor<T> { 7 abstract class NodeVisitor<T> {
8 T visitProgram(Program node); 8 T visitProgram(Program node);
9 9
10 T visitBlock(Block node); 10 T visitBlock(Block node);
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
42 42
43 T visitVariableUse(VariableUse node); 43 T visitVariableUse(VariableUse node);
44 T visitThis(This node); 44 T visitThis(This node);
45 T visitVariableDeclaration(VariableDeclaration node); 45 T visitVariableDeclaration(VariableDeclaration node);
46 T visitParameter(Parameter node); 46 T visitParameter(Parameter node);
47 T visitAccess(PropertyAccess node); 47 T visitAccess(PropertyAccess node);
48 48
49 T visitNamedFunction(NamedFunction node); 49 T visitNamedFunction(NamedFunction node);
50 T visitFun(Fun node); 50 T visitFun(Fun node);
51 51
52 T visitTokenExpression(TokenExpression node);
53 T visitTokenNumber(TokenNumber node);
54 T visitTokenString(TokenString node);
55
52 T visitLiteralBool(LiteralBool node); 56 T visitLiteralBool(LiteralBool node);
53 T visitLiteralString(LiteralString node); 57 T visitLiteralString(LiteralString node);
54 T visitLiteralNumber(LiteralNumber node); 58 T visitLiteralNumber(LiteralNumber node);
55 T visitLiteralNull(LiteralNull node); 59 T visitLiteralNull(LiteralNull node);
56 60
61 T visitStringConcatenation(StringConcatenation node);
62
57 T visitArrayInitializer(ArrayInitializer node); 63 T visitArrayInitializer(ArrayInitializer node);
58 T visitArrayHole(ArrayHole node); 64 T visitArrayHole(ArrayHole node);
59 T visitObjectInitializer(ObjectInitializer node); 65 T visitObjectInitializer(ObjectInitializer node);
60 T visitProperty(Property node); 66 T visitProperty(Property node);
61 T visitRegExpLiteral(RegExpLiteral node); 67 T visitRegExpLiteral(RegExpLiteral node);
62 68
63 T visitAwait(Await node); 69 T visitAwait(Await node);
64 70
65 T visitComment(Comment node); 71 T visitComment(Comment node);
66 72
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
132 138
133 T visitVariableUse(VariableUse node) => visitVariableReference(node); 139 T visitVariableUse(VariableUse node) => visitVariableReference(node);
134 T visitVariableDeclaration(VariableDeclaration node) 140 T visitVariableDeclaration(VariableDeclaration node)
135 => visitVariableReference(node); 141 => visitVariableReference(node);
136 T visitParameter(Parameter node) => visitVariableDeclaration(node); 142 T visitParameter(Parameter node) => visitVariableDeclaration(node);
137 T visitThis(This node) => visitParameter(node); 143 T visitThis(This node) => visitParameter(node);
138 144
139 T visitNamedFunction(NamedFunction node) => visitExpression(node); 145 T visitNamedFunction(NamedFunction node) => visitExpression(node);
140 T visitFun(Fun node) => visitExpression(node); 146 T visitFun(Fun node) => visitExpression(node);
141 147
148 T visitToken(Token node) => visitExpression(node);
149
150 T visitTokenExpression(TokenExpression node) => visitExpression(node);
151 T visitTokenNumber(TokenNumber node) => visitToken(node);
152 T visitTokenString(TokenString node) => visitToken(node);
153
142 T visitLiteral(Literal node) => visitExpression(node); 154 T visitLiteral(Literal node) => visitExpression(node);
143 155
144 T visitLiteralBool(LiteralBool node) => visitLiteral(node); 156 T visitLiteralBool(LiteralBool node) => visitLiteral(node);
145 T visitLiteralString(LiteralString node) => visitLiteral(node); 157 T visitLiteralString(LiteralString node) => visitLiteral(node);
146 T visitLiteralNumber(LiteralNumber node) => visitLiteral(node); 158 T visitLiteralNumber(LiteralNumber node) => visitLiteral(node);
147 T visitLiteralNull(LiteralNull node) => visitLiteral(node); 159 T visitLiteralNull(LiteralNull node) => visitLiteral(node);
148 160
161 T visitStringConcatenation(StringConcatenation node) => visitLiteral(node);
162
149 T visitArrayInitializer(ArrayInitializer node) => visitExpression(node); 163 T visitArrayInitializer(ArrayInitializer node) => visitExpression(node);
150 T visitArrayHole(ArrayHole node) => visitExpression(node); 164 T visitArrayHole(ArrayHole node) => visitExpression(node);
151 T visitObjectInitializer(ObjectInitializer node) => visitExpression(node); 165 T visitObjectInitializer(ObjectInitializer node) => visitExpression(node);
152 T visitProperty(Property node) => visitNode(node); 166 T visitProperty(Property node) => visitNode(node);
153 T visitRegExpLiteral(RegExpLiteral node) => visitExpression(node); 167 T visitRegExpLiteral(RegExpLiteral node) => visitExpression(node);
154 168
155 T visitInterpolatedNode(InterpolatedNode node) => visitNode(node); 169 T visitInterpolatedNode(InterpolatedNode node) => visitNode(node);
156 170
157 T visitInterpolatedExpression(InterpolatedExpression node) 171 T visitInterpolatedExpression(InterpolatedExpression node)
158 => visitInterpolatedNode(node); 172 => visitInterpolatedNode(node);
(...skipping 750 matching lines...) Expand 10 before | Expand all | Expand 10 after
909 void visitChildren(NodeVisitor visitor) { 923 void visitChildren(NodeVisitor visitor) {
910 receiver.accept(visitor); 924 receiver.accept(visitor);
911 selector.accept(visitor); 925 selector.accept(visitor);
912 } 926 }
913 927
914 PropertyAccess _clone() => new PropertyAccess(receiver, selector); 928 PropertyAccess _clone() => new PropertyAccess(receiver, selector);
915 929
916 int get precedenceLevel => CALL; 930 int get precedenceLevel => CALL;
917 } 931 }
918 932
933 abstract class Token extends Literal {
sra1 2015/05/27 19:38:51 These are abstract classes that are overridden. De
herhut 2015/06/09 11:10:00 Well, this is only one use (the current use) of th
934 void visitChildren(NodeVisitor visitor) {}
935
936 Token _clone() => this;
937 }
938
939 abstract class TokenNumber extends Token {
940 accept(NodeVisitor visitor) => visitor.visitTokenNumber(this);
941
942 int get value;
943 }
944
945 abstract class TokenString extends Token {
946 accept(NodeVisitor visitor) => visitor.visitTokenString(this);
947
948 String get value;
949 }
950
951 abstract class TokenExpression extends Token {
sra1 2015/05/27 19:38:51 What is a TokenExpression? DeferredExpression?
herhut 2015/06/09 11:10:00 Done.
952 accept(NodeVisitor visitor) => visitor.visitTokenExpression(this);
953
954 Expression get value;
sra1 2015/05/27 19:38:51 What is the precedence? PRIMARY is almost certainl
herhut 2015/06/09 11:10:00 It actually was correct for the current usage but
955 }
956
919 abstract class Literal extends Expression { 957 abstract class Literal extends Expression {
920 void visitChildren(NodeVisitor visitor) {} 958 void visitChildren(NodeVisitor visitor) {}
921 959
922 int get precedenceLevel => PRIMARY; 960 int get precedenceLevel => PRIMARY;
923 } 961 }
924 962
925 class LiteralBool extends Literal { 963 class LiteralBool extends Literal {
926 final bool value; 964 final bool value;
927 965
928 LiteralBool(this.value); 966 LiteralBool(this.value);
(...skipping 10 matching lines...) Expand all
939 LiteralNull _clone() => new LiteralNull(); 977 LiteralNull _clone() => new LiteralNull();
940 } 978 }
941 979
942 class LiteralString extends Literal { 980 class LiteralString extends Literal {
943 final String value; 981 final String value;
944 982
945 /** 983 /**
946 * Constructs a LiteralString from a string value. 984 * Constructs a LiteralString from a string value.
947 * 985 *
948 * The constructor does not add the required quotes. If [value] is not 986 * The constructor does not add the required quotes. If [value] is not
949 * surrounded by quotes and property escaped, the resulting object is invalid 987 * surrounded by quotes and properly escaped, the resulting object is invalid
950 * as a JS value. 988 * as a JS value.
951 * 989 *
952 * TODO(sra): Introduce variants for known valid strings that don't allocate a 990 * TODO(sra): Introduce variants for known valid strings that don't allocate a
953 * new string just to add quotes. 991 * new string just to add quotes.
954 */ 992 */
955 LiteralString(this.value); 993 LiteralString(this.value);
956 994
957 accept(NodeVisitor visitor) => visitor.visitLiteralString(this); 995 accept(NodeVisitor visitor) => visitor.visitLiteralString(this);
958 LiteralString _clone() => new LiteralString(value); 996 LiteralString _clone() => new LiteralString(value);
959 } 997 }
960 998
999 class StringConcatenation extends Literal {
1000 final List<Literal> parts;
1001
1002 /**
1003 * Constructs a StringConcatenation from a list of Literal elements.
1004 * The constructor does not add surrounding quotes to the resulting
1005 * concatenated string.
1006 */
1007 StringConcatenation(this.parts);
1008
1009 accept(NodeVisitor visitor) => visitor.visitStringConcatenation(this);
1010
1011 void visitChildren(NodeVisitor visitor) {
1012 for (Literal part in parts) part.accept(visitor);
1013 }
1014
1015 StringConcatenation _clone() => new StringConcatenation(this.parts);
1016 }
1017
961 class LiteralNumber extends Literal { 1018 class LiteralNumber extends Literal {
962 final String value; // Must be a valid JavaScript number literal. 1019 final String value; // Must be a valid JavaScript number literal.
963 1020
964 LiteralNumber(this.value); 1021 LiteralNumber(this.value);
965 1022
966 accept(NodeVisitor visitor) => visitor.visitLiteralNumber(this); 1023 accept(NodeVisitor visitor) => visitor.visitLiteralNumber(this);
967 LiteralNumber _clone() => new LiteralNumber(value); 1024 LiteralNumber _clone() => new LiteralNumber(value);
968 } 1025 }
969 1026
970 class ArrayInitializer extends Expression { 1027 class ArrayInitializer extends Expression {
(...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after
1154 class Await extends Expression { 1211 class Await extends Expression {
1155 /** The awaited expression. */ 1212 /** The awaited expression. */
1156 final Expression expression; 1213 final Expression expression;
1157 1214
1158 Await(this.expression); 1215 Await(this.expression);
1159 1216
1160 int get precedenceLevel => UNARY; 1217 int get precedenceLevel => UNARY;
1161 accept(NodeVisitor visitor) => visitor.visitAwait(this); 1218 accept(NodeVisitor visitor) => visitor.visitAwait(this);
1162 void visitChildren(NodeVisitor visitor) => expression.accept(visitor); 1219 void visitChildren(NodeVisitor visitor) => expression.accept(visitor);
1163 Await _clone() => new Await(expression); 1220 Await _clone() => new Await(expression);
1164
1165 } 1221 }
1166 1222
1167 /** 1223 /**
1168 * A comment. 1224 * A comment.
1169 * 1225 *
1170 * Extends [Statement] so we can add comments before statements in 1226 * Extends [Statement] so we can add comments before statements in
1171 * [Block] and [Program]. 1227 * [Block] and [Program].
1172 */ 1228 */
1173 class Comment extends Statement { 1229 class Comment extends Statement {
1174 final String comment; 1230 final String comment;
1175 1231
1176 Comment(this.comment); 1232 Comment(this.comment);
1177 1233
1178 accept(NodeVisitor visitor) => visitor.visitComment(this); 1234 accept(NodeVisitor visitor) => visitor.visitComment(this);
1179 Comment _clone() => new Comment(comment); 1235 Comment _clone() => new Comment(comment);
1180 1236
1181 void visitChildren(NodeVisitor visitor) {} 1237 void visitChildren(NodeVisitor visitor) {}
1182 } 1238 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698