| 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 visitBitAnd(HBitAnd node); | 9   R visitBitAnd(HBitAnd node); | 
| 10   R visitBitNot(HBitNot node); | 10   R visitBitNot(HBitNot node); | 
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 58   R visitShiftRight(HShiftRight node); | 58   R visitShiftRight(HShiftRight node); | 
| 59   R visitStatic(HStatic node); | 59   R visitStatic(HStatic node); | 
| 60   R visitStaticStore(HStaticStore node); | 60   R visitStaticStore(HStaticStore node); | 
| 61   R visitStringConcat(HStringConcat node); | 61   R visitStringConcat(HStringConcat node); | 
| 62   R visitStringify(HStringify node); | 62   R visitStringify(HStringify node); | 
| 63   R visitSubtract(HSubtract node); | 63   R visitSubtract(HSubtract node); | 
| 64   R visitSwitch(HSwitch node); | 64   R visitSwitch(HSwitch node); | 
| 65   R visitThis(HThis node); | 65   R visitThis(HThis node); | 
| 66   R visitThrow(HThrow node); | 66   R visitThrow(HThrow node); | 
| 67   R visitThrowExpression(HThrowExpression node); | 67   R visitThrowExpression(HThrowExpression node); | 
|  | 68   R visitTruncatingDivide(HTruncatingDivide node); | 
| 68   R visitTry(HTry node); | 69   R visitTry(HTry node); | 
| 69   R visitTypeConversion(HTypeConversion node); | 70   R visitTypeConversion(HTypeConversion node); | 
| 70   R visitTypeKnown(HTypeKnown node); | 71   R visitTypeKnown(HTypeKnown node); | 
| 71   R visitReadTypeVariable(HReadTypeVariable node); | 72   R visitReadTypeVariable(HReadTypeVariable node); | 
| 72   R visitFunctionType(HFunctionType node); | 73   R visitFunctionType(HFunctionType node); | 
| 73   R visitVoidType(HVoidType node); | 74   R visitVoidType(HVoidType node); | 
| 74   R visitInterfaceType(HInterfaceType node); | 75   R visitInterfaceType(HInterfaceType node); | 
| 75   R visitDynamicType(HDynamicType node); | 76   R visitDynamicType(HDynamicType node); | 
| 76 } | 77 } | 
| 77 | 78 | 
| (...skipping 246 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 324   visitShiftRight(HShiftRight node) => visitBinaryBitOp(node); | 325   visitShiftRight(HShiftRight node) => visitBinaryBitOp(node); | 
| 325   visitSubtract(HSubtract node) => visitBinaryArithmetic(node); | 326   visitSubtract(HSubtract node) => visitBinaryArithmetic(node); | 
| 326   visitSwitch(HSwitch node) => visitControlFlow(node); | 327   visitSwitch(HSwitch node) => visitControlFlow(node); | 
| 327   visitStatic(HStatic node) => visitInstruction(node); | 328   visitStatic(HStatic node) => visitInstruction(node); | 
| 328   visitStaticStore(HStaticStore node) => visitInstruction(node); | 329   visitStaticStore(HStaticStore node) => visitInstruction(node); | 
| 329   visitStringConcat(HStringConcat node) => visitInstruction(node); | 330   visitStringConcat(HStringConcat node) => visitInstruction(node); | 
| 330   visitStringify(HStringify node) => visitInstruction(node); | 331   visitStringify(HStringify node) => visitInstruction(node); | 
| 331   visitThis(HThis node) => visitParameterValue(node); | 332   visitThis(HThis node) => visitParameterValue(node); | 
| 332   visitThrow(HThrow node) => visitControlFlow(node); | 333   visitThrow(HThrow node) => visitControlFlow(node); | 
| 333   visitThrowExpression(HThrowExpression node) => visitInstruction(node); | 334   visitThrowExpression(HThrowExpression node) => visitInstruction(node); | 
|  | 335   visitTruncatingDivide(HTruncatingDivide node) => visitBinaryArithmetic(node); | 
| 334   visitTry(HTry node) => visitControlFlow(node); | 336   visitTry(HTry node) => visitControlFlow(node); | 
| 335   visitIs(HIs node) => visitInstruction(node); | 337   visitIs(HIs node) => visitInstruction(node); | 
| 336   visitTypeConversion(HTypeConversion node) => visitCheck(node); | 338   visitTypeConversion(HTypeConversion node) => visitCheck(node); | 
| 337   visitTypeKnown(HTypeKnown node) => visitCheck(node); | 339   visitTypeKnown(HTypeKnown node) => visitCheck(node); | 
| 338   visitReadTypeVariable(HReadTypeVariable node) => visitInstruction(node); | 340   visitReadTypeVariable(HReadTypeVariable node) => visitInstruction(node); | 
| 339   visitFunctionType(HFunctionType node) => visitInstruction(node); | 341   visitFunctionType(HFunctionType node) => visitInstruction(node); | 
| 340   visitVoidType(HVoidType node) => visitInstruction(node); | 342   visitVoidType(HVoidType node) => visitInstruction(node); | 
| 341   visitInterfaceType(HInterfaceType node) => visitInstruction(node); | 343   visitInterfaceType(HInterfaceType node) => visitInstruction(node); | 
| 342   visitDynamicType(HDynamicType node) => visitInstruction(node); | 344   visitDynamicType(HDynamicType node) => visitInstruction(node); | 
| 343 } | 345 } | 
| (...skipping 447 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 791   static const int INVOKE_STATIC_TYPECODE = 26; | 793   static const int INVOKE_STATIC_TYPECODE = 26; | 
| 792   static const int INDEX_TYPECODE = 27; | 794   static const int INDEX_TYPECODE = 27; | 
| 793   static const int IS_TYPECODE = 28; | 795   static const int IS_TYPECODE = 28; | 
| 794   static const int INVOKE_DYNAMIC_TYPECODE = 29; | 796   static const int INVOKE_DYNAMIC_TYPECODE = 29; | 
| 795   static const int SHIFT_RIGHT_TYPECODE = 30; | 797   static const int SHIFT_RIGHT_TYPECODE = 30; | 
| 796   static const int READ_TYPE_VARIABLE_TYPECODE = 31; | 798   static const int READ_TYPE_VARIABLE_TYPECODE = 31; | 
| 797   static const int FUNCTION_TYPE_TYPECODE = 32; | 799   static const int FUNCTION_TYPE_TYPECODE = 32; | 
| 798   static const int VOID_TYPE_TYPECODE = 33; | 800   static const int VOID_TYPE_TYPECODE = 33; | 
| 799   static const int INTERFACE_TYPE_TYPECODE = 34; | 801   static const int INTERFACE_TYPE_TYPECODE = 34; | 
| 800   static const int DYNAMIC_TYPE_TYPECODE = 35; | 802   static const int DYNAMIC_TYPE_TYPECODE = 35; | 
|  | 803   static const int TRUNCATING_DIVIDE_TYPECODE = 36; | 
| 801 | 804 | 
| 802   HInstruction(this.inputs, this.instructionType) | 805   HInstruction(this.inputs, this.instructionType) | 
| 803       : id = idCounter++, usedBy = <HInstruction>[] { | 806       : id = idCounter++, usedBy = <HInstruction>[] { | 
| 804     assert(inputs.every((e) => e != null)); | 807     assert(inputs.every((e) => e != null)); | 
| 805   } | 808   } | 
| 806 | 809 | 
| 807   int get hashCode => id; | 810   int get hashCode => id; | 
| 808 | 811 | 
| 809   bool useGvn() => _useGvn; | 812   bool useGvn() => _useGvn; | 
| 810   void setUseGvn() { _useGvn = true; } | 813   void setUseGvn() { _useGvn = true; } | 
| (...skipping 861 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1672   HSubtract(left, right, selector, type) : super(left, right, selector, type); | 1675   HSubtract(left, right, selector, type) : super(left, right, selector, type); | 
| 1673   accept(HVisitor visitor) => visitor.visitSubtract(this); | 1676   accept(HVisitor visitor) => visitor.visitSubtract(this); | 
| 1674 | 1677 | 
| 1675   BinaryOperation operation(ConstantSystem constantSystem) | 1678   BinaryOperation operation(ConstantSystem constantSystem) | 
| 1676       => constantSystem.subtract; | 1679       => constantSystem.subtract; | 
| 1677   int typeCode() => HInstruction.SUBTRACT_TYPECODE; | 1680   int typeCode() => HInstruction.SUBTRACT_TYPECODE; | 
| 1678   bool typeEquals(other) => other is HSubtract; | 1681   bool typeEquals(other) => other is HSubtract; | 
| 1679   bool dataEquals(HInstruction other) => true; | 1682   bool dataEquals(HInstruction other) => true; | 
| 1680 } | 1683 } | 
| 1681 | 1684 | 
|  | 1685 class HTruncatingDivide extends HBinaryArithmetic { | 
|  | 1686   HTruncatingDivide(left, right, selector, type) | 
|  | 1687       : super(left, right, selector, type); | 
|  | 1688   accept(HVisitor visitor) => visitor.visitTruncatingDivide(this); | 
|  | 1689 | 
|  | 1690   BinaryOperation operation(ConstantSystem constantSystem) | 
|  | 1691       => constantSystem.truncatingDivide; | 
|  | 1692   int typeCode() => HInstruction.TRUNCATING_DIVIDE_TYPECODE; | 
|  | 1693   bool typeEquals(other) => other is HTruncatingDivide; | 
|  | 1694   bool dataEquals(HInstruction other) => true; | 
|  | 1695 } | 
|  | 1696 | 
| 1682 /** | 1697 /** | 
| 1683  * An [HSwitch] instruction has one input for the incoming | 1698  * An [HSwitch] instruction has one input for the incoming | 
| 1684  * value, and one input per constant that it can switch on. | 1699  * value, and one input per constant that it can switch on. | 
| 1685  * Its block has one successor per constant, and one for the default. | 1700  * Its block has one successor per constant, and one for the default. | 
| 1686  */ | 1701  */ | 
| 1687 class HSwitch extends HControlFlow { | 1702 class HSwitch extends HControlFlow { | 
| 1688   HSwitch(List<HInstruction> inputs) : super(inputs); | 1703   HSwitch(List<HInstruction> inputs) : super(inputs); | 
| 1689 | 1704 | 
| 1690   HConstant constant(int index) => inputs[index + 1]; | 1705   HConstant constant(int index) => inputs[index + 1]; | 
| 1691   HInstruction get expression => inputs[0]; | 1706   HInstruction get expression => inputs[0]; | 
| (...skipping 1192 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 2884 class HDynamicType extends HRuntimeType { | 2899 class HDynamicType extends HRuntimeType { | 
| 2885   HDynamicType(DynamicType dartType, TypeMask instructionType) | 2900   HDynamicType(DynamicType dartType, TypeMask instructionType) | 
| 2886       : super(const <HInstruction>[], dartType, instructionType); | 2901       : super(const <HInstruction>[], dartType, instructionType); | 
| 2887 | 2902 | 
| 2888   accept(HVisitor visitor) => visitor.visitDynamicType(this); | 2903   accept(HVisitor visitor) => visitor.visitDynamicType(this); | 
| 2889 | 2904 | 
| 2890   int typeCode() => HInstruction.DYNAMIC_TYPE_TYPECODE; | 2905   int typeCode() => HInstruction.DYNAMIC_TYPE_TYPECODE; | 
| 2891 | 2906 | 
| 2892   bool typeEquals(HInstruction other) => other is HDynamicType; | 2907   bool typeEquals(HInstruction other) => other is HDynamicType; | 
| 2893 } | 2908 } | 
| OLD | NEW | 
|---|