| OLD | NEW |
| 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 ssa; | 5 part of ssa; |
| 6 | 6 |
| 7 abstract class HVisitor<R> { | 7 abstract class HVisitor<R> { |
| 8 R visitAdd(HAdd node); | 8 R visitAdd(HAdd node); |
| 9 R visitBailoutTarget(HBailoutTarget node); | 9 R visitBailoutTarget(HBailoutTarget node); |
| 10 R visitBitAnd(HBitAnd node); | 10 R visitBitAnd(HBitAnd node); |
| (...skipping 19 matching lines...) Expand all Loading... |
| 30 R visitIf(HIf node); | 30 R visitIf(HIf node); |
| 31 R visitIndex(HIndex node); | 31 R visitIndex(HIndex node); |
| 32 R visitIndexAssign(HIndexAssign node); | 32 R visitIndexAssign(HIndexAssign node); |
| 33 R visitInterceptor(HInterceptor node); | 33 R visitInterceptor(HInterceptor node); |
| 34 R visitInvokeClosure(HInvokeClosure node); | 34 R visitInvokeClosure(HInvokeClosure node); |
| 35 R visitInvokeDynamicGetter(HInvokeDynamicGetter node); | 35 R visitInvokeDynamicGetter(HInvokeDynamicGetter node); |
| 36 R visitInvokeDynamicMethod(HInvokeDynamicMethod node); | 36 R visitInvokeDynamicMethod(HInvokeDynamicMethod node); |
| 37 R visitInvokeDynamicSetter(HInvokeDynamicSetter node); | 37 R visitInvokeDynamicSetter(HInvokeDynamicSetter node); |
| 38 R visitInvokeStatic(HInvokeStatic node); | 38 R visitInvokeStatic(HInvokeStatic node); |
| 39 R visitInvokeSuper(HInvokeSuper node); | 39 R visitInvokeSuper(HInvokeSuper node); |
| 40 R visitInvokeConstructorBody(HInvokeConstructorBody node); |
| 40 R visitIs(HIs node); | 41 R visitIs(HIs node); |
| 41 R visitLazyStatic(HLazyStatic node); | 42 R visitLazyStatic(HLazyStatic node); |
| 42 R visitLess(HLess node); | 43 R visitLess(HLess node); |
| 43 R visitLessEqual(HLessEqual node); | 44 R visitLessEqual(HLessEqual node); |
| 44 R visitLiteralList(HLiteralList node); | 45 R visitLiteralList(HLiteralList node); |
| 45 R visitLocalGet(HLocalGet node); | 46 R visitLocalGet(HLocalGet node); |
| 46 R visitLocalSet(HLocalSet node); | 47 R visitLocalSet(HLocalSet node); |
| 47 R visitLocalValue(HLocalValue node); | 48 R visitLocalValue(HLocalValue node); |
| 48 R visitLoopBranch(HLoopBranch node); | 49 R visitLoopBranch(HLoopBranch node); |
| 49 R visitMultiply(HMultiply node); | 50 R visitMultiply(HMultiply node); |
| (...skipping 246 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 296 visitGoto(HGoto node) => visitControlFlow(node); | 297 visitGoto(HGoto node) => visitControlFlow(node); |
| 297 visitGreater(HGreater node) => visitRelational(node); | 298 visitGreater(HGreater node) => visitRelational(node); |
| 298 visitGreaterEqual(HGreaterEqual node) => visitRelational(node); | 299 visitGreaterEqual(HGreaterEqual node) => visitRelational(node); |
| 299 visitIdentity(HIdentity node) => visitRelational(node); | 300 visitIdentity(HIdentity node) => visitRelational(node); |
| 300 visitIf(HIf node) => visitConditionalBranch(node); | 301 visitIf(HIf node) => visitConditionalBranch(node); |
| 301 visitIndex(HIndex node) => visitInstruction(node); | 302 visitIndex(HIndex node) => visitInstruction(node); |
| 302 visitIndexAssign(HIndexAssign node) => visitInstruction(node); | 303 visitIndexAssign(HIndexAssign node) => visitInstruction(node); |
| 303 visitInterceptor(HInterceptor node) => visitInstruction(node); | 304 visitInterceptor(HInterceptor node) => visitInstruction(node); |
| 304 visitInvokeClosure(HInvokeClosure node) | 305 visitInvokeClosure(HInvokeClosure node) |
| 305 => visitInvokeDynamic(node); | 306 => visitInvokeDynamic(node); |
| 307 visitInvokeConstructorBody(HInvokeConstructorBody node) |
| 308 => visitInvokeStatic(node); |
| 306 visitInvokeDynamicMethod(HInvokeDynamicMethod node) | 309 visitInvokeDynamicMethod(HInvokeDynamicMethod node) |
| 307 => visitInvokeDynamic(node); | 310 => visitInvokeDynamic(node); |
| 308 visitInvokeDynamicGetter(HInvokeDynamicGetter node) | 311 visitInvokeDynamicGetter(HInvokeDynamicGetter node) |
| 309 => visitInvokeDynamicField(node); | 312 => visitInvokeDynamicField(node); |
| 310 visitInvokeDynamicSetter(HInvokeDynamicSetter node) | 313 visitInvokeDynamicSetter(HInvokeDynamicSetter node) |
| 311 => visitInvokeDynamicField(node); | 314 => visitInvokeDynamicField(node); |
| 312 visitInvokeStatic(HInvokeStatic node) => visitInvoke(node); | 315 visitInvokeStatic(HInvokeStatic node) => visitInvoke(node); |
| 313 visitInvokeSuper(HInvokeSuper node) => visitInvoke(node); | 316 visitInvokeSuper(HInvokeSuper node) => visitInvokeStatic(node); |
| 314 visitJump(HJump node) => visitControlFlow(node); | 317 visitJump(HJump node) => visitControlFlow(node); |
| 315 visitLazyStatic(HLazyStatic node) => visitInstruction(node); | 318 visitLazyStatic(HLazyStatic node) => visitInstruction(node); |
| 316 visitLess(HLess node) => visitRelational(node); | 319 visitLess(HLess node) => visitRelational(node); |
| 317 visitLessEqual(HLessEqual node) => visitRelational(node); | 320 visitLessEqual(HLessEqual node) => visitRelational(node); |
| 318 visitLiteralList(HLiteralList node) => visitInstruction(node); | 321 visitLiteralList(HLiteralList node) => visitInstruction(node); |
| 319 visitLocalGet(HLocalGet node) => visitFieldAccess(node); | 322 visitLocalGet(HLocalGet node) => visitFieldAccess(node); |
| 320 visitLocalSet(HLocalSet node) => visitFieldAccess(node); | 323 visitLocalSet(HLocalSet node) => visitFieldAccess(node); |
| 321 visitLocalValue(HLocalValue node) => visitInstruction(node); | 324 visitLocalValue(HLocalValue node) => visitInstruction(node); |
| 322 visitLoopBranch(HLoopBranch node) => visitConditionalBranch(node); | 325 visitLoopBranch(HLoopBranch node) => visitConditionalBranch(node); |
| 323 visitNegate(HNegate node) => visitInvokeUnary(node); | 326 visitNegate(HNegate node) => visitInvokeUnary(node); |
| (...skipping 1077 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1401 toString() => 'invoke super: ${element.name}'; | 1404 toString() => 'invoke super: ${element.name}'; |
| 1402 accept(HVisitor visitor) => visitor.visitInvokeSuper(this); | 1405 accept(HVisitor visitor) => visitor.visitInvokeSuper(this); |
| 1403 | 1406 |
| 1404 HInstruction get value { | 1407 HInstruction get value { |
| 1405 assert(isSetter); | 1408 assert(isSetter); |
| 1406 // Index 0: 'this'. | 1409 // Index 0: 'this'. |
| 1407 return inputs[1]; | 1410 return inputs[1]; |
| 1408 } | 1411 } |
| 1409 } | 1412 } |
| 1410 | 1413 |
| 1414 class HInvokeConstructorBody extends HInvokeStatic { |
| 1415 HInvokeConstructorBody(element, inputs) |
| 1416 : super(element, inputs, HType.UNKNOWN); |
| 1417 |
| 1418 String toString() => 'invoke constructor body: ${element.name}'; |
| 1419 accept(HVisitor visitor) => visitor.visitInvokeConstructorBody(this); |
| 1420 } |
| 1421 |
| 1411 abstract class HFieldAccess extends HInstruction { | 1422 abstract class HFieldAccess extends HInstruction { |
| 1412 final Element element; | 1423 final Element element; |
| 1413 | 1424 |
| 1414 HFieldAccess(Element element, List<HInstruction> inputs) | 1425 HFieldAccess(Element element, List<HInstruction> inputs) |
| 1415 : this.element = element, super(inputs); | 1426 : this.element = element, super(inputs); |
| 1416 | 1427 |
| 1417 HInstruction get receiver => inputs[0]; | 1428 HInstruction get receiver => inputs[0]; |
| 1418 } | 1429 } |
| 1419 | 1430 |
| 1420 class HFieldGet extends HFieldAccess { | 1431 class HFieldGet extends HFieldAccess { |
| (...skipping 1230 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2651 HBasicBlock get start => expression.start; | 2662 HBasicBlock get start => expression.start; |
| 2652 HBasicBlock get end { | 2663 HBasicBlock get end { |
| 2653 // We don't create a switch block if there are no cases. | 2664 // We don't create a switch block if there are no cases. |
| 2654 assert(!statements.isEmpty); | 2665 assert(!statements.isEmpty); |
| 2655 return statements.last.end; | 2666 return statements.last.end; |
| 2656 } | 2667 } |
| 2657 | 2668 |
| 2658 bool accept(HStatementInformationVisitor visitor) => | 2669 bool accept(HStatementInformationVisitor visitor) => |
| 2659 visitor.visitSwitchInfo(this); | 2670 visitor.visitSwitchInfo(this); |
| 2660 } | 2671 } |
| OLD | NEW |