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

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

Issue 10511007: Make HBreak and HContinue not extend HGoto. They now extend HJump which is independent of HGoto. To… (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 8 years, 6 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) 2011, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2011, 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 visitBitAnd(HBitAnd node); 7 R visitBitAnd(HBitAnd node);
8 R visitBitNot(HBitNot node); 8 R visitBitNot(HBitNot node);
9 R visitBitOr(HBitOr node); 9 R visitBitOr(HBitOr node);
10 R visitBitXor(HBitXor node); 10 R visitBitXor(HBitXor node);
(...skipping 236 matching lines...) Expand 10 before | Expand all | Expand 10 after
247 visitControlFlow(HControlFlow node) => visitInstruction(node); 247 visitControlFlow(HControlFlow node) => visitInstruction(node);
248 visitRelational(HRelational node) => visitInvokeBinary(node); 248 visitRelational(HRelational node) => visitInvokeBinary(node);
249 249
250 visitAdd(HAdd node) => visitBinaryArithmetic(node); 250 visitAdd(HAdd node) => visitBinaryArithmetic(node);
251 visitBitAnd(HBitAnd node) => visitBinaryBitOp(node); 251 visitBitAnd(HBitAnd node) => visitBinaryBitOp(node);
252 visitBitNot(HBitNot node) => visitInvokeUnary(node); 252 visitBitNot(HBitNot node) => visitInvokeUnary(node);
253 visitBitOr(HBitOr node) => visitBinaryBitOp(node); 253 visitBitOr(HBitOr node) => visitBinaryBitOp(node);
254 visitBitXor(HBitXor node) => visitBinaryBitOp(node); 254 visitBitXor(HBitXor node) => visitBinaryBitOp(node);
255 visitBoolify(HBoolify node) => visitInstruction(node); 255 visitBoolify(HBoolify node) => visitInstruction(node);
256 visitBoundsCheck(HBoundsCheck node) => visitCheck(node); 256 visitBoundsCheck(HBoundsCheck node) => visitCheck(node);
257 visitBreak(HBreak node) => visitGoto(node); 257 visitBreak(HBreak node) => visitJump(node);
258 visitContinue(HContinue node) => visitGoto(node); 258 visitContinue(HContinue node) => visitJump(node);
259 visitCheck(HCheck node) => visitInstruction(node); 259 visitCheck(HCheck node) => visitInstruction(node);
260 visitConstant(HConstant node) => visitInstruction(node); 260 visitConstant(HConstant node) => visitInstruction(node);
261 visitDivide(HDivide node) => visitBinaryArithmetic(node); 261 visitDivide(HDivide node) => visitBinaryArithmetic(node);
262 visitEquals(HEquals node) => visitRelational(node); 262 visitEquals(HEquals node) => visitRelational(node);
263 visitExit(HExit node) => visitControlFlow(node); 263 visitExit(HExit node) => visitControlFlow(node);
264 visitFieldGet(HFieldGet node) => visitInstruction(node); 264 visitFieldGet(HFieldGet node) => visitInstruction(node);
265 visitFieldSet(HFieldSet node) => visitInstruction(node); 265 visitFieldSet(HFieldSet node) => visitInstruction(node);
266 visitForeign(HForeign node) => visitInstruction(node); 266 visitForeign(HForeign node) => visitInstruction(node);
267 visitForeignNew(HForeignNew node) => visitForeign(node); 267 visitForeignNew(HForeignNew node) => visitForeign(node);
268 visitGoto(HGoto node) => visitControlFlow(node); 268 visitGoto(HGoto node) => visitControlFlow(node);
269 visitGreater(HGreater node) => visitRelational(node); 269 visitGreater(HGreater node) => visitRelational(node);
270 visitGreaterEqual(HGreaterEqual node) => visitRelational(node); 270 visitGreaterEqual(HGreaterEqual node) => visitRelational(node);
271 visitIdentity(HIdentity node) => visitRelational(node); 271 visitIdentity(HIdentity node) => visitRelational(node);
272 visitIf(HIf node) => visitConditionalBranch(node); 272 visitIf(HIf node) => visitConditionalBranch(node);
273 visitIndex(HIndex node) => visitInvokeStatic(node); 273 visitIndex(HIndex node) => visitInvokeStatic(node);
274 visitIndexAssign(HIndexAssign node) => visitInvokeStatic(node); 274 visitIndexAssign(HIndexAssign node) => visitInvokeStatic(node);
275 visitIntegerCheck(HIntegerCheck node) => visitCheck(node); 275 visitIntegerCheck(HIntegerCheck node) => visitCheck(node);
276 visitInvokeClosure(HInvokeClosure node) 276 visitInvokeClosure(HInvokeClosure node)
277 => visitInvokeDynamic(node); 277 => visitInvokeDynamic(node);
278 visitInvokeDynamicMethod(HInvokeDynamicMethod node) 278 visitInvokeDynamicMethod(HInvokeDynamicMethod node)
279 => visitInvokeDynamic(node); 279 => visitInvokeDynamic(node);
280 visitInvokeDynamicGetter(HInvokeDynamicGetter node) 280 visitInvokeDynamicGetter(HInvokeDynamicGetter node)
281 => visitInvokeDynamicField(node); 281 => visitInvokeDynamicField(node);
282 visitInvokeDynamicSetter(HInvokeDynamicSetter node) 282 visitInvokeDynamicSetter(HInvokeDynamicSetter node)
283 => visitInvokeDynamicField(node); 283 => visitInvokeDynamicField(node);
284 visitInvokeInterceptor(HInvokeInterceptor node) 284 visitInvokeInterceptor(HInvokeInterceptor node)
285 => visitInvokeStatic(node); 285 => visitInvokeStatic(node);
286 visitInvokeStatic(HInvokeStatic node) => visitInvoke(node); 286 visitInvokeStatic(HInvokeStatic node) => visitInvoke(node);
287 visitInvokeSuper(HInvokeSuper node) => visitInvoke(node); 287 visitInvokeSuper(HInvokeSuper node) => visitInvoke(node);
288 visitJump(HJump node) => visitControlFlow(node);
288 visitLess(HLess node) => visitRelational(node); 289 visitLess(HLess node) => visitRelational(node);
289 visitLessEqual(HLessEqual node) => visitRelational(node); 290 visitLessEqual(HLessEqual node) => visitRelational(node);
290 visitLiteralList(HLiteralList node) => visitInstruction(node); 291 visitLiteralList(HLiteralList node) => visitInstruction(node);
291 visitLoopBranch(HLoopBranch node) => visitConditionalBranch(node); 292 visitLoopBranch(HLoopBranch node) => visitConditionalBranch(node);
292 visitModulo(HModulo node) => visitBinaryArithmetic(node); 293 visitModulo(HModulo node) => visitBinaryArithmetic(node);
293 visitNegate(HNegate node) => visitInvokeUnary(node); 294 visitNegate(HNegate node) => visitInvokeUnary(node);
294 visitNot(HNot node) => visitInstruction(node); 295 visitNot(HNot node) => visitInstruction(node);
295 visitPhi(HPhi node) => visitInstruction(node); 296 visitPhi(HPhi node) => visitInstruction(node);
296 visitMultiply(HMultiply node) => visitBinaryArithmetic(node); 297 visitMultiply(HMultiply node) => visitBinaryArithmetic(node);
297 visitParameterValue(HParameterValue node) => visitInstruction(node); 298 visitParameterValue(HParameterValue node) => visitInstruction(node);
(...skipping 1356 matching lines...) Expand 10 before | Expand all | Expand 10 after
1654 toString() => 'exit'; 1655 toString() => 'exit';
1655 accept(HVisitor visitor) => visitor.visitExit(this); 1656 accept(HVisitor visitor) => visitor.visitExit(this);
1656 } 1657 }
1657 1658
1658 class HGoto extends HControlFlow { 1659 class HGoto extends HControlFlow {
1659 HGoto() : super(const <HInstruction>[]); 1660 HGoto() : super(const <HInstruction>[]);
1660 toString() => 'goto'; 1661 toString() => 'goto';
1661 accept(HVisitor visitor) => visitor.visitGoto(this); 1662 accept(HVisitor visitor) => visitor.visitGoto(this);
1662 } 1663 }
1663 1664
1664 class HBreak extends HGoto { 1665 abstract class HJump extends HControlFlow {
1665 final TargetElement target; 1666 final TargetElement target;
1666 final LabelElement label; 1667 final LabelElement label;
1667 HBreak(this.target) : label = null; 1668 HJump(this.target) : label = null, super(const <HInstruction>[]);
1668 HBreak.toLabel(LabelElement label) : label = label, target = label.target; 1669 HJump.toLabel(LabelElement label)
1670 : label = label, target = label.target, super(const <HInstruction>[]);
1671 }
1672
1673 class HBreak extends HJump {
1674 HBreak(TargetElement target) : super(target);
1675 HBreak.toLabel(LabelElement label) : super.toLabel(label);
1669 toString() => (label !== null) ? 'break ${label.labelName}' : 'break'; 1676 toString() => (label !== null) ? 'break ${label.labelName}' : 'break';
1670 accept(HVisitor visitor) => visitor.visitBreak(this); 1677 accept(HVisitor visitor) => visitor.visitBreak(this);
1671 } 1678 }
1672 1679
1673 class HContinue extends HGoto { 1680 class HContinue extends HJump {
1674 final TargetElement target; 1681 HContinue(TargetElement target) : super(target);
1675 final LabelElement label; 1682 HContinue.toLabel(LabelElement label) : super.toLabel(label);
1676 HContinue(this.target) : label = null;
1677 HContinue.toLabel(LabelElement label) : label = label, target = label.target;
1678 toString() => (label !== null) ? 'continue ${label.labelName}' : 'continue'; 1683 toString() => (label !== null) ? 'continue ${label.labelName}' : 'continue';
1679 accept(HVisitor visitor) => visitor.visitContinue(this); 1684 accept(HVisitor visitor) => visitor.visitContinue(this);
1680 } 1685 }
1681 1686
1682 class HTry extends HControlFlow { 1687 class HTry extends HControlFlow {
1683 HParameterValue exception; 1688 HParameterValue exception;
1684 HBasicBlock catchBlock; 1689 HBasicBlock catchBlock;
1685 HBasicBlock finallyBlock; 1690 HBasicBlock finallyBlock;
1686 HTry() : super(const <HInstruction>[]); 1691 HTry() : super(const <HInstruction>[]);
1687 toString() => 'try'; 1692 toString() => 'try';
(...skipping 802 matching lines...) Expand 10 before | Expand all | Expand 10 after
2490 this.catchBlock, 2495 this.catchBlock,
2491 this.finallyBlock); 2496 this.finallyBlock);
2492 2497
2493 HBasicBlock get start() => body.start; 2498 HBasicBlock get start() => body.start;
2494 HBasicBlock get end() => 2499 HBasicBlock get end() =>
2495 finallyBlock === null ? catchBlock.end : finallyBlock.end; 2500 finallyBlock === null ? catchBlock.end : finallyBlock.end;
2496 2501
2497 bool accept(HStatementInformationVisitor visitor) => 2502 bool accept(HStatementInformationVisitor visitor) =>
2498 visitor.visitTryInfo(this); 2503 visitor.visitTryInfo(this);
2499 } 2504 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698