| OLD | NEW | 
|---|
| 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 946 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 957   } | 957   } | 
| 958 | 958 | 
| 959   HType get guaranteedType() => HType.BOOLEAN; | 959   HType get guaranteedType() => HType.BOOLEAN; | 
| 960 | 960 | 
| 961   accept(HVisitor visitor) => visitor.visitBoolify(this); | 961   accept(HVisitor visitor) => visitor.visitBoolify(this); | 
| 962   int typeCode() => 0; | 962   int typeCode() => 0; | 
| 963   bool typeEquals(other) => other is HBoolify; | 963   bool typeEquals(other) => other is HBoolify; | 
| 964   bool dataEquals(HInstruction other) => true; | 964   bool dataEquals(HInstruction other) => true; | 
| 965 } | 965 } | 
| 966 | 966 | 
| 967 class HCheck extends HInstruction { | 967 /** | 
|  | 968  * A [HCheck] instruction is an instruction that might do a dynamic | 
|  | 969  * check at runtime on another instruction. To have proper instruction | 
|  | 970  * dependencies in the graph, instructions that depend on the check | 
|  | 971  * being done reference the [HCheck] instruction instead of the | 
|  | 972  * instruction itself. | 
|  | 973  */ | 
|  | 974 abstract class HCheck extends HInstruction { | 
| 968   HCheck(inputs) : super(inputs); | 975   HCheck(inputs) : super(inputs); | 
| 969 |  | 
| 970   // TODO(floitsch): make class abstract instead of adding an abstract method. |  | 
| 971   abstract accept(HVisitor visitor); |  | 
| 972 |  | 
| 973   HInstruction get checkedInput() => inputs[0]; | 976   HInstruction get checkedInput() => inputs[0]; | 
| 974 } | 977 } | 
| 975 | 978 | 
| 976 class HTypeGuard extends HCheck { | 979 class HTypeGuard extends HCheck { | 
| 977   final int state; | 980   final int state; | 
| 978   final HType guardedType; | 981   final HType guardedType; | 
| 979   bool isOn = false; | 982   bool isOn = false; | 
| 980   HTypeGuard(this.guardedType, this.state, List<HInstruction> env) : super(env); | 983   HTypeGuard(this.guardedType, this.state, List<HInstruction> env) : super(env); | 
| 981 | 984 | 
| 982   void prepareGvn() { | 985   void prepareGvn() { | 
| (...skipping 1581 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 2564   HBasicBlock get start() => expression.start; | 2567   HBasicBlock get start() => expression.start; | 
| 2565   HBasicBlock get end() { | 2568   HBasicBlock get end() { | 
| 2566     // We don't create a switch block if there are no cases. | 2569     // We don't create a switch block if there are no cases. | 
| 2567     assert(!statements.isEmpty()); | 2570     assert(!statements.isEmpty()); | 
| 2568     return statements.last().end; | 2571     return statements.last().end; | 
| 2569   } | 2572   } | 
| 2570 | 2573 | 
| 2571   bool accept(HStatementInformationVisitor visitor) => | 2574   bool accept(HStatementInformationVisitor visitor) => | 
| 2572       visitor.visitSwitchInfo(this); | 2575       visitor.visitSwitchInfo(this); | 
| 2573 } | 2576 } | 
| OLD | NEW | 
|---|