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

Side by Side Diff: lib/compiler/implementation/ssa/nodes.dart

Issue 10836339: Get rid of the name in HInvokeDynamic (just use the selector instead). (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Fix checked mode. Created 8 years, 4 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 | Annotate | Revision Log
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 interface HVisitor<R> { 5 interface HVisitor<R> {
6 R visitAdd(HAdd node); 6 R visitAdd(HAdd node);
7 R visitBailoutTarget(HBailoutTarget node); 7 R visitBailoutTarget(HBailoutTarget node);
8 R visitBitAnd(HBitAnd node); 8 R visitBitAnd(HBitAnd node);
9 R visitBitNot(HBitNot node); 9 R visitBitNot(HBitNot node);
10 R visitBitOr(HBitOr node); 10 R visitBitOr(HBitOr node);
(...skipping 1141 matching lines...) Expand 10 before | Expand all | Expand 10 after
1152 HInvoke(List<HInstruction> inputs) : super(inputs); 1152 HInvoke(List<HInstruction> inputs) : super(inputs);
1153 static final int ARGUMENTS_OFFSET = 1; 1153 static final int ARGUMENTS_OFFSET = 1;
1154 1154
1155 // TODO(floitsch): make class abstract instead of adding an abstract method. 1155 // TODO(floitsch): make class abstract instead of adding an abstract method.
1156 abstract accept(HVisitor visitor); 1156 abstract accept(HVisitor visitor);
1157 } 1157 }
1158 1158
1159 class HInvokeDynamic extends HInvoke { 1159 class HInvokeDynamic extends HInvoke {
1160 final Selector selector; 1160 final Selector selector;
1161 Element element; 1161 Element element;
1162 SourceString name;
1163 1162
1164 HInvokeDynamic(this.selector, this.element, this.name, 1163 HInvokeDynamic(this.selector, this.element, List<HInstruction> inputs)
1165 List<HInstruction> inputs) : super(inputs); 1164 : super(inputs);
1166 toString() => 'invoke dynamic: $name'; 1165 toString() => 'invoke dynamic: $selector';
1167 HInstruction get receiver() => inputs[0]; 1166 HInstruction get receiver() => inputs[0];
1168 1167
1169 // TODO(floitsch): make class abstract instead of adding an abstract method. 1168 // TODO(floitsch): make class abstract instead of adding an abstract method.
1170 abstract accept(HVisitor visitor); 1169 abstract accept(HVisitor visitor);
1171 } 1170 }
1172 1171
1173 class HInvokeClosure extends HInvokeDynamic { 1172 class HInvokeClosure extends HInvokeDynamic {
1174 HInvokeClosure(Selector selector, List<HInstruction> inputs) 1173 HInvokeClosure(Selector selector, List<HInstruction> inputs)
1175 : super(selector, null, const SourceString('call'), inputs); 1174 : super(selector, null, inputs);
1176 accept(HVisitor visitor) => visitor.visitInvokeClosure(this); 1175 accept(HVisitor visitor) => visitor.visitInvokeClosure(this);
1177 } 1176 }
1178 1177
1179 class HInvokeDynamicMethod extends HInvokeDynamic { 1178 class HInvokeDynamicMethod extends HInvokeDynamic {
1180 HInvokeDynamicMethod(Selector selector, 1179 HInvokeDynamicMethod(Selector selector, List<HInstruction> inputs)
1181 SourceString methodName, 1180 : super(selector, null, inputs);
1182 List<HInstruction> inputs) 1181 toString() => 'invoke dynamic method: $selector';
1183 : super(selector, null, methodName, inputs);
1184 toString() => 'invoke dynamic method: $name';
1185 accept(HVisitor visitor) => visitor.visitInvokeDynamicMethod(this); 1182 accept(HVisitor visitor) => visitor.visitInvokeDynamicMethod(this);
1186 } 1183 }
1187 1184
1188 class HInvokeDynamicField extends HInvokeDynamic { 1185 class HInvokeDynamicField extends HInvokeDynamic {
1189 HInvokeDynamicField(Selector selector, 1186 HInvokeDynamicField(Selector selector, Element element,
1190 Element element, 1187 List<HInstruction> inputs)
1191 SourceString name, 1188 : super(selector, element, inputs);
1192 List<HInstruction>inputs) 1189 toString() => 'invoke dynamic field: $selector';
1193 : super(selector, element, name, inputs);
1194 toString() => 'invoke dynamic field: $name';
1195 1190
1196 // TODO(floitsch): make class abstract instead of adding an abstract method. 1191 // TODO(floitsch): make class abstract instead of adding an abstract method.
1197 abstract accept(HVisitor visitor); 1192 abstract accept(HVisitor visitor);
1198 } 1193 }
1199 1194
1200 class HInvokeDynamicGetter extends HInvokeDynamicField { 1195 class HInvokeDynamicGetter extends HInvokeDynamicField {
1201 HInvokeDynamicGetter(selector, element, name, receiver) 1196 HInvokeDynamicGetter(selector, element, receiver)
1202 : super(selector, element, name, [receiver]); 1197 : super(selector, element,[receiver]);
1203 toString() => 'invoke dynamic getter: $name'; 1198 toString() => 'invoke dynamic getter: $selector';
1204 accept(HVisitor visitor) => visitor.visitInvokeDynamicGetter(this); 1199 accept(HVisitor visitor) => visitor.visitInvokeDynamicGetter(this);
1205 } 1200 }
1206 1201
1207 class HInvokeDynamicSetter extends HInvokeDynamicField { 1202 class HInvokeDynamicSetter extends HInvokeDynamicField {
1208 HInvokeDynamicSetter(selector, element, name, receiver, value) 1203 HInvokeDynamicSetter(selector, element, receiver, value)
1209 : super(selector, element, name, [receiver, value]); 1204 : super(selector, element, [receiver, value]);
1210 toString() => 'invoke dynamic setter: $name'; 1205 toString() => 'invoke dynamic setter: $selector';
1211 accept(HVisitor visitor) => visitor.visitInvokeDynamicSetter(this); 1206 accept(HVisitor visitor) => visitor.visitInvokeDynamicSetter(this);
1212 } 1207 }
1213 1208
1214 class HInvokeStatic extends HInvoke { 1209 class HInvokeStatic extends HInvoke {
1215 static final int INVOKE_STATIC_TYPECODE = 30; 1210 static final int INVOKE_STATIC_TYPECODE = 30;
1216 1211
1217 /** The first input must be the target. */ 1212 /** The first input must be the target. */
1218 HInvokeStatic(inputs, [HType knownType = HType.UNKNOWN]) : super(inputs) { 1213 HInvokeStatic(inputs, [HType knownType = HType.UNKNOWN]) : super(inputs) {
1219 guaranteedType = knownType; 1214 guaranteedType = knownType;
1220 } 1215 }
(...skipping 1522 matching lines...) Expand 10 before | Expand all | Expand 10 after
2743 HBasicBlock get start() => expression.start; 2738 HBasicBlock get start() => expression.start;
2744 HBasicBlock get end() { 2739 HBasicBlock get end() {
2745 // We don't create a switch block if there are no cases. 2740 // We don't create a switch block if there are no cases.
2746 assert(!statements.isEmpty()); 2741 assert(!statements.isEmpty());
2747 return statements.last().end; 2742 return statements.last().end;
2748 } 2743 }
2749 2744
2750 bool accept(HStatementInformationVisitor visitor) => 2745 bool accept(HStatementInformationVisitor visitor) =>
2751 visitor.visitSwitchInfo(this); 2746 visitor.visitSwitchInfo(this);
2752 } 2747 }
OLDNEW
« no previous file with comments | « lib/compiler/implementation/ssa/codegen.dart ('k') | lib/compiler/implementation/ssa/optimize.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698