< prev index next >

src/hotspot/share/opto/node.hpp

Print this page

  69 class CheckCastPPNode;
  70 class ClearArrayNode;
  71 class CmpNode;
  72 class CodeBuffer;
  73 class ConstraintCastNode;
  74 class ConNode;
  75 class ConINode;
  76 class ConvertNode;
  77 class CompareAndSwapNode;
  78 class CompareAndExchangeNode;
  79 class CountedLoopNode;
  80 class CountedLoopEndNode;
  81 class DecodeNarrowPtrNode;
  82 class DecodeNNode;
  83 class DecodeNKlassNode;
  84 class EncodeNarrowPtrNode;
  85 class EncodePNode;
  86 class EncodePKlassNode;
  87 class FastLockNode;
  88 class FastUnlockNode;

  89 class HaltNode;
  90 class IfNode;
  91 class IfProjNode;
  92 class IfFalseNode;
  93 class IfTrueNode;
  94 class InitializeNode;
  95 class JVMState;
  96 class JumpNode;
  97 class JumpProjNode;
  98 class LoadNode;
  99 class LoadStoreNode;
 100 class LoadStoreConditionalNode;
 101 class LockNode;
 102 class LongCountedLoopNode;
 103 class LongCountedLoopEndNode;
 104 class LoopNode;
 105 class LShiftNode;
 106 class MachBranchNode;
 107 class MachCallDynamicJavaNode;
 108 class MachCallJavaNode;
 109 class MachCallLeafNode;
 110 class MachCallNode;
 111 class MachCallRuntimeNode;
 112 class MachCallStaticJavaNode;
 113 class MachConstantBaseNode;
 114 class MachConstantNode;
 115 class MachGotoNode;
 116 class MachIfNode;
 117 class MachJumpNode;
 118 class MachNode;
 119 class MachNullCheckNode;
 120 class MachProjNode;

 121 class MachReturnNode;
 122 class MachSafePointNode;
 123 class MachSpillCopyNode;
 124 class MachTempNode;
 125 class MachMergeNode;
 126 class MachMemBarNode;

 127 class Matcher;
 128 class MemBarNode;
 129 class MemBarStoreStoreNode;
 130 class MemNode;
 131 class MergeMemNode;
 132 class MoveNode;
 133 class MulNode;
 134 class MultiNode;
 135 class MultiBranchNode;
 136 class NegNode;
 137 class NegVNode;
 138 class NeverBranchNode;
 139 class Opaque1Node;
 140 class OpaqueLoopInitNode;
 141 class OpaqueLoopStrideNode;
 142 class OpaqueMultiversioningNode;
 143 class OpaqueNotNullNode;
 144 class OpaqueInitializedAssertionPredicateNode;
 145 class OpaqueTemplateAssertionPredicateNode;
 146 class OuterStripMinedLoopNode;

 164 class Pipeline;
 165 class PopulateIndexNode;
 166 class ProjNode;
 167 class RangeCheckNode;
 168 class ReductionNode;
 169 class RegMask;
 170 class RegionNode;
 171 class RootNode;
 172 class SafePointNode;
 173 class SafePointScalarObjectNode;
 174 class SafePointScalarMergeNode;
 175 class SaturatingVectorNode;
 176 class StartNode;
 177 class State;
 178 class StoreNode;
 179 class SubNode;
 180 class SubTypeCheckNode;
 181 class Type;
 182 class TypeNode;
 183 class UnlockNode;

 184 class VectorNode;
 185 class LoadVectorNode;
 186 class LoadVectorMaskedNode;
 187 class StoreVectorMaskedNode;
 188 class LoadVectorGatherNode;
 189 class LoadVectorGatherMaskedNode;
 190 class StoreVectorNode;
 191 class StoreVectorScatterNode;
 192 class StoreVectorScatterMaskedNode;
 193 class VerifyVectorAlignmentNode;
 194 class VectorMaskCmpNode;
 195 class VectorUnboxNode;
 196 class VectorSet;
 197 class VectorReinterpretNode;
 198 class ShiftVNode;
 199 class MulVLNode;
 200 class ExpandVNode;
 201 class CompressVNode;
 202 class CompressMNode;
 203 class C2_MacroAssembler;

 678           DEFINE_CLASS_ID(AbstractLock,     Call, 3)
 679             DEFINE_CLASS_ID(Lock,             AbstractLock, 0)
 680             DEFINE_CLASS_ID(Unlock,           AbstractLock, 1)
 681           DEFINE_CLASS_ID(ArrayCopy,        Call, 4)
 682       DEFINE_CLASS_ID(MultiBranch, Multi, 1)
 683         DEFINE_CLASS_ID(PCTable,     MultiBranch, 0)
 684           DEFINE_CLASS_ID(Catch,       PCTable, 0)
 685           DEFINE_CLASS_ID(Jump,        PCTable, 1)
 686         DEFINE_CLASS_ID(If,          MultiBranch, 1)
 687           DEFINE_CLASS_ID(BaseCountedLoopEnd,     If, 0)
 688             DEFINE_CLASS_ID(CountedLoopEnd,       BaseCountedLoopEnd, 0)
 689             DEFINE_CLASS_ID(LongCountedLoopEnd,   BaseCountedLoopEnd, 1)
 690           DEFINE_CLASS_ID(RangeCheck,             If, 1)
 691           DEFINE_CLASS_ID(OuterStripMinedLoopEnd, If, 2)
 692           DEFINE_CLASS_ID(ParsePredicate,         If, 3)
 693         DEFINE_CLASS_ID(NeverBranch, MultiBranch, 2)
 694       DEFINE_CLASS_ID(Start,       Multi, 2)
 695       DEFINE_CLASS_ID(MemBar,      Multi, 3)
 696         DEFINE_CLASS_ID(Initialize,       MemBar, 0)
 697         DEFINE_CLASS_ID(MemBarStoreStore, MemBar, 1)

 698 
 699     DEFINE_CLASS_ID(Mach,  Node, 1)
 700       DEFINE_CLASS_ID(MachReturn, Mach, 0)
 701         DEFINE_CLASS_ID(MachSafePoint, MachReturn, 0)
 702           DEFINE_CLASS_ID(MachCall, MachSafePoint, 0)
 703             DEFINE_CLASS_ID(MachCallJava,         MachCall, 0)
 704               DEFINE_CLASS_ID(MachCallStaticJava,   MachCallJava, 0)
 705               DEFINE_CLASS_ID(MachCallDynamicJava,  MachCallJava, 1)
 706             DEFINE_CLASS_ID(MachCallRuntime,      MachCall, 1)
 707               DEFINE_CLASS_ID(MachCallLeaf,         MachCallRuntime, 0)
 708       DEFINE_CLASS_ID(MachBranch, Mach, 1)
 709         DEFINE_CLASS_ID(MachIf,         MachBranch, 0)
 710         DEFINE_CLASS_ID(MachGoto,       MachBranch, 1)
 711         DEFINE_CLASS_ID(MachNullCheck,  MachBranch, 2)
 712       DEFINE_CLASS_ID(MachSpillCopy,    Mach, 2)
 713       DEFINE_CLASS_ID(MachTemp,         Mach, 3)
 714       DEFINE_CLASS_ID(MachConstantBase, Mach, 4)
 715       DEFINE_CLASS_ID(MachConstant,     Mach, 5)
 716         DEFINE_CLASS_ID(MachJump,       MachConstant, 0)
 717       DEFINE_CLASS_ID(MachMerge,        Mach, 6)
 718       DEFINE_CLASS_ID(MachMemBar,       Mach, 7)


 719 
 720     DEFINE_CLASS_ID(Type,  Node, 2)
 721       DEFINE_CLASS_ID(Phi,   Type, 0)
 722       DEFINE_CLASS_ID(ConstraintCast, Type, 1)
 723         DEFINE_CLASS_ID(CastII, ConstraintCast, 0)
 724         DEFINE_CLASS_ID(CheckCastPP, ConstraintCast, 1)
 725         DEFINE_CLASS_ID(CastLL, ConstraintCast, 2)
 726         DEFINE_CLASS_ID(CastFF, ConstraintCast, 3)
 727         DEFINE_CLASS_ID(CastDD, ConstraintCast, 4)
 728         DEFINE_CLASS_ID(CastVV, ConstraintCast, 5)
 729         DEFINE_CLASS_ID(CastPP, ConstraintCast, 6)
 730         DEFINE_CLASS_ID(CastHH, ConstraintCast, 7)
 731       DEFINE_CLASS_ID(CMove, Type, 3)
 732       DEFINE_CLASS_ID(SafePointScalarObject, Type, 4)
 733       DEFINE_CLASS_ID(DecodeNarrowPtr, Type, 5)
 734         DEFINE_CLASS_ID(DecodeN, DecodeNarrowPtr, 0)
 735         DEFINE_CLASS_ID(DecodeNKlass, DecodeNarrowPtr, 1)
 736       DEFINE_CLASS_ID(EncodeNarrowPtr, Type, 6)
 737         DEFINE_CLASS_ID(EncodeP, EncodeNarrowPtr, 0)
 738         DEFINE_CLASS_ID(EncodePKlass, EncodeNarrowPtr, 1)
 739       DEFINE_CLASS_ID(Vector, Type, 7)
 740         DEFINE_CLASS_ID(VectorMaskCmp, Vector, 0)
 741         DEFINE_CLASS_ID(VectorUnbox, Vector, 1)
 742         DEFINE_CLASS_ID(VectorReinterpret, Vector, 2)
 743         DEFINE_CLASS_ID(ShiftV, Vector, 3)
 744         DEFINE_CLASS_ID(CompressV, Vector, 4)
 745         DEFINE_CLASS_ID(ExpandV, Vector, 5)
 746         DEFINE_CLASS_ID(CompressM, Vector, 6)
 747         DEFINE_CLASS_ID(Reduction, Vector, 7)
 748         DEFINE_CLASS_ID(NegV, Vector, 8)
 749         DEFINE_CLASS_ID(SaturatingVector, Vector, 9)
 750         DEFINE_CLASS_ID(MulVL, Vector, 10)
 751       DEFINE_CLASS_ID(Con, Type, 8)

 752           DEFINE_CLASS_ID(ConI, Con, 0)
 753       DEFINE_CLASS_ID(SafePointScalarMerge, Type, 9)
 754       DEFINE_CLASS_ID(Convert, Type, 10)
 755 
 756 
 757     DEFINE_CLASS_ID(Proj,  Node, 3)
 758       DEFINE_CLASS_ID(CatchProj, Proj, 0)
 759       DEFINE_CLASS_ID(JumpProj,  Proj, 1)
 760       DEFINE_CLASS_ID(IfProj,    Proj, 2)
 761         DEFINE_CLASS_ID(IfTrue,    IfProj, 0)
 762         DEFINE_CLASS_ID(IfFalse,   IfProj, 1)
 763       DEFINE_CLASS_ID(Parm,      Proj, 4)
 764       DEFINE_CLASS_ID(MachProj,  Proj, 5)
 765 
 766     DEFINE_CLASS_ID(Mem, Node, 4)
 767       DEFINE_CLASS_ID(Load, Mem, 0)
 768         DEFINE_CLASS_ID(LoadVector,  Load, 0)
 769           DEFINE_CLASS_ID(LoadVectorGather, LoadVector, 0)
 770           DEFINE_CLASS_ID(LoadVectorGatherMasked, LoadVector, 1)
 771           DEFINE_CLASS_ID(LoadVectorMasked, LoadVector, 2)
 772       DEFINE_CLASS_ID(Store, Mem, 1)
 773         DEFINE_CLASS_ID(StoreVector, Store, 0)
 774           DEFINE_CLASS_ID(StoreVectorScatter, StoreVector, 0)
 775           DEFINE_CLASS_ID(StoreVectorScatterMasked, StoreVector, 1)
 776           DEFINE_CLASS_ID(StoreVectorMasked, StoreVector, 2)
 777       DEFINE_CLASS_ID(LoadStore, Mem, 2)
 778         DEFINE_CLASS_ID(LoadStoreConditional, LoadStore, 0)
 779           DEFINE_CLASS_ID(CompareAndSwap, LoadStoreConditional, 0)
 780         DEFINE_CLASS_ID(CompareAndExchangeNode, LoadStore, 1)
 781 
 782     DEFINE_CLASS_ID(Region, Node, 5)
 783       DEFINE_CLASS_ID(Loop, Region, 0)
 784         DEFINE_CLASS_ID(Root,                Loop, 0)
 785         DEFINE_CLASS_ID(BaseCountedLoop,     Loop, 1)
 786           DEFINE_CLASS_ID(CountedLoop,       BaseCountedLoop, 0)
 787           DEFINE_CLASS_ID(LongCountedLoop,   BaseCountedLoop, 1)
 788         DEFINE_CLASS_ID(OuterStripMinedLoop, Loop, 2)
 789 
 790     DEFINE_CLASS_ID(Sub,   Node, 6)
 791       DEFINE_CLASS_ID(Cmp,   Sub, 0)
 792         DEFINE_CLASS_ID(FastLock,   Cmp, 0)
 793         DEFINE_CLASS_ID(FastUnlock, Cmp, 1)
 794         DEFINE_CLASS_ID(SubTypeCheck,Cmp, 2)

 795 
 796     DEFINE_CLASS_ID(MergeMem, Node, 7)
 797     DEFINE_CLASS_ID(Bool,     Node, 8)
 798     DEFINE_CLASS_ID(AddP,     Node, 9)
 799     DEFINE_CLASS_ID(BoxLock,  Node, 10)
 800     DEFINE_CLASS_ID(Add,      Node, 11)
 801     DEFINE_CLASS_ID(Mul,      Node, 12)
 802     DEFINE_CLASS_ID(ClearArray, Node, 14)
 803     DEFINE_CLASS_ID(Halt,     Node, 15)
 804     DEFINE_CLASS_ID(Opaque1,  Node, 16)
 805       DEFINE_CLASS_ID(OpaqueLoopInit, Opaque1, 0)
 806       DEFINE_CLASS_ID(OpaqueLoopStride, Opaque1, 1)
 807       DEFINE_CLASS_ID(OpaqueMultiversioning, Opaque1, 2)
 808     DEFINE_CLASS_ID(OpaqueNotNull,  Node, 17)
 809     DEFINE_CLASS_ID(OpaqueInitializedAssertionPredicate,  Node, 18)
 810     DEFINE_CLASS_ID(OpaqueTemplateAssertionPredicate,  Node, 19)
 811     DEFINE_CLASS_ID(Move,     Node, 20)
 812     DEFINE_CLASS_ID(LShift,   Node, 21)
 813     DEFINE_CLASS_ID(Neg,      Node, 22)
 814 

 883   #define DEFINE_CLASS_QUERY(type)                           \
 884   bool is_##type() const {                                   \
 885     return ((_class_id & ClassMask_##type) == Class_##type); \
 886   }                                                          \
 887   type##Node *as_##type() const {                            \
 888     assert(is_##type(), "invalid node class: %s", Name());   \
 889     return (type##Node*)this;                                \
 890   }                                                          \
 891   type##Node* isa_##type() const {                           \
 892     return (is_##type()) ? as_##type() : nullptr;            \
 893   }
 894 
 895   DEFINE_CLASS_QUERY(AbstractLock)
 896   DEFINE_CLASS_QUERY(Add)
 897   DEFINE_CLASS_QUERY(AddP)
 898   DEFINE_CLASS_QUERY(Allocate)
 899   DEFINE_CLASS_QUERY(AllocateArray)
 900   DEFINE_CLASS_QUERY(ArrayCopy)
 901   DEFINE_CLASS_QUERY(BaseCountedLoop)
 902   DEFINE_CLASS_QUERY(BaseCountedLoopEnd)

 903   DEFINE_CLASS_QUERY(Bool)
 904   DEFINE_CLASS_QUERY(BoxLock)
 905   DEFINE_CLASS_QUERY(Call)
 906   DEFINE_CLASS_QUERY(CallDynamicJava)
 907   DEFINE_CLASS_QUERY(CallJava)
 908   DEFINE_CLASS_QUERY(CallLeaf)
 909   DEFINE_CLASS_QUERY(CallLeafNoFP)
 910   DEFINE_CLASS_QUERY(CallRuntime)
 911   DEFINE_CLASS_QUERY(CallStaticJava)
 912   DEFINE_CLASS_QUERY(Catch)
 913   DEFINE_CLASS_QUERY(CatchProj)
 914   DEFINE_CLASS_QUERY(CheckCastPP)
 915   DEFINE_CLASS_QUERY(CastII)
 916   DEFINE_CLASS_QUERY(CastLL)
 917   DEFINE_CLASS_QUERY(CastFF)
 918   DEFINE_CLASS_QUERY(ConI)
 919   DEFINE_CLASS_QUERY(CastPP)
 920   DEFINE_CLASS_QUERY(ConstraintCast)
 921   DEFINE_CLASS_QUERY(ClearArray)
 922   DEFINE_CLASS_QUERY(CMove)
 923   DEFINE_CLASS_QUERY(Cmp)
 924   DEFINE_CLASS_QUERY(Convert)
 925   DEFINE_CLASS_QUERY(CountedLoop)
 926   DEFINE_CLASS_QUERY(CountedLoopEnd)
 927   DEFINE_CLASS_QUERY(DecodeNarrowPtr)
 928   DEFINE_CLASS_QUERY(DecodeN)
 929   DEFINE_CLASS_QUERY(DecodeNKlass)
 930   DEFINE_CLASS_QUERY(EncodeNarrowPtr)
 931   DEFINE_CLASS_QUERY(EncodeP)
 932   DEFINE_CLASS_QUERY(EncodePKlass)
 933   DEFINE_CLASS_QUERY(FastLock)
 934   DEFINE_CLASS_QUERY(FastUnlock)

 935   DEFINE_CLASS_QUERY(Halt)
 936   DEFINE_CLASS_QUERY(If)
 937   DEFINE_CLASS_QUERY(RangeCheck)
 938   DEFINE_CLASS_QUERY(IfProj)
 939   DEFINE_CLASS_QUERY(IfFalse)
 940   DEFINE_CLASS_QUERY(IfTrue)
 941   DEFINE_CLASS_QUERY(Initialize)
 942   DEFINE_CLASS_QUERY(Jump)
 943   DEFINE_CLASS_QUERY(JumpProj)
 944   DEFINE_CLASS_QUERY(LongCountedLoop)
 945   DEFINE_CLASS_QUERY(LongCountedLoopEnd)
 946   DEFINE_CLASS_QUERY(Load)
 947   DEFINE_CLASS_QUERY(LoadStore)
 948   DEFINE_CLASS_QUERY(LoadStoreConditional)
 949   DEFINE_CLASS_QUERY(Lock)
 950   DEFINE_CLASS_QUERY(Loop)
 951   DEFINE_CLASS_QUERY(LShift)
 952   DEFINE_CLASS_QUERY(Mach)
 953   DEFINE_CLASS_QUERY(MachBranch)
 954   DEFINE_CLASS_QUERY(MachCall)
 955   DEFINE_CLASS_QUERY(MachCallDynamicJava)
 956   DEFINE_CLASS_QUERY(MachCallJava)
 957   DEFINE_CLASS_QUERY(MachCallLeaf)
 958   DEFINE_CLASS_QUERY(MachCallRuntime)
 959   DEFINE_CLASS_QUERY(MachCallStaticJava)
 960   DEFINE_CLASS_QUERY(MachConstantBase)
 961   DEFINE_CLASS_QUERY(MachConstant)
 962   DEFINE_CLASS_QUERY(MachGoto)
 963   DEFINE_CLASS_QUERY(MachIf)
 964   DEFINE_CLASS_QUERY(MachJump)
 965   DEFINE_CLASS_QUERY(MachNullCheck)
 966   DEFINE_CLASS_QUERY(MachProj)

 967   DEFINE_CLASS_QUERY(MachReturn)
 968   DEFINE_CLASS_QUERY(MachSafePoint)
 969   DEFINE_CLASS_QUERY(MachSpillCopy)
 970   DEFINE_CLASS_QUERY(MachTemp)
 971   DEFINE_CLASS_QUERY(MachMemBar)
 972   DEFINE_CLASS_QUERY(MachMerge)

 973   DEFINE_CLASS_QUERY(Mem)
 974   DEFINE_CLASS_QUERY(MemBar)
 975   DEFINE_CLASS_QUERY(MemBarStoreStore)
 976   DEFINE_CLASS_QUERY(MergeMem)
 977   DEFINE_CLASS_QUERY(Move)
 978   DEFINE_CLASS_QUERY(Mul)
 979   DEFINE_CLASS_QUERY(Multi)
 980   DEFINE_CLASS_QUERY(MultiBranch)
 981   DEFINE_CLASS_QUERY(MulVL)
 982   DEFINE_CLASS_QUERY(Neg)
 983   DEFINE_CLASS_QUERY(NegV)
 984   DEFINE_CLASS_QUERY(NeverBranch)
 985   DEFINE_CLASS_QUERY(Opaque1)
 986   DEFINE_CLASS_QUERY(OpaqueNotNull)
 987   DEFINE_CLASS_QUERY(OpaqueInitializedAssertionPredicate)
 988   DEFINE_CLASS_QUERY(OpaqueTemplateAssertionPredicate)
 989   DEFINE_CLASS_QUERY(OpaqueLoopInit)
 990   DEFINE_CLASS_QUERY(OpaqueLoopStride)
 991   DEFINE_CLASS_QUERY(OpaqueMultiversioning)
 992   DEFINE_CLASS_QUERY(OuterStripMinedLoop)
 993   DEFINE_CLASS_QUERY(OuterStripMinedLoopEnd)
 994   DEFINE_CLASS_QUERY(Parm)
 995   DEFINE_CLASS_QUERY(ParsePredicate)
 996   DEFINE_CLASS_QUERY(PCTable)
 997   DEFINE_CLASS_QUERY(Phi)
 998   DEFINE_CLASS_QUERY(Proj)
 999   DEFINE_CLASS_QUERY(Reduction)
1000   DEFINE_CLASS_QUERY(Region)
1001   DEFINE_CLASS_QUERY(Root)
1002   DEFINE_CLASS_QUERY(SafePoint)
1003   DEFINE_CLASS_QUERY(SafePointScalarObject)
1004   DEFINE_CLASS_QUERY(SafePointScalarMerge)
1005   DEFINE_CLASS_QUERY(Start)
1006   DEFINE_CLASS_QUERY(Store)
1007   DEFINE_CLASS_QUERY(Sub)
1008   DEFINE_CLASS_QUERY(SubTypeCheck)
1009   DEFINE_CLASS_QUERY(Type)

1010   DEFINE_CLASS_QUERY(Vector)
1011   DEFINE_CLASS_QUERY(VectorMaskCmp)
1012   DEFINE_CLASS_QUERY(VectorUnbox)
1013   DEFINE_CLASS_QUERY(VectorReinterpret)
1014   DEFINE_CLASS_QUERY(CompressV)
1015   DEFINE_CLASS_QUERY(ExpandV)
1016   DEFINE_CLASS_QUERY(CompressM)
1017   DEFINE_CLASS_QUERY(LoadVector)
1018   DEFINE_CLASS_QUERY(LoadVectorGather)
1019   DEFINE_CLASS_QUERY(LoadVectorMasked)
1020   DEFINE_CLASS_QUERY(LoadVectorGatherMasked)
1021   DEFINE_CLASS_QUERY(StoreVector)
1022   DEFINE_CLASS_QUERY(StoreVectorScatter)
1023   DEFINE_CLASS_QUERY(StoreVectorMasked)
1024   DEFINE_CLASS_QUERY(StoreVectorScatterMasked)
1025   DEFINE_CLASS_QUERY(SaturatingVector)
1026   DEFINE_CLASS_QUERY(ShiftV)
1027   DEFINE_CLASS_QUERY(Unlock)
1028 
1029   #undef DEFINE_CLASS_QUERY

  69 class CheckCastPPNode;
  70 class ClearArrayNode;
  71 class CmpNode;
  72 class CodeBuffer;
  73 class ConstraintCastNode;
  74 class ConNode;
  75 class ConINode;
  76 class ConvertNode;
  77 class CompareAndSwapNode;
  78 class CompareAndExchangeNode;
  79 class CountedLoopNode;
  80 class CountedLoopEndNode;
  81 class DecodeNarrowPtrNode;
  82 class DecodeNNode;
  83 class DecodeNKlassNode;
  84 class EncodeNarrowPtrNode;
  85 class EncodePNode;
  86 class EncodePKlassNode;
  87 class FastLockNode;
  88 class FastUnlockNode;
  89 class FlatArrayCheckNode;
  90 class HaltNode;
  91 class IfNode;
  92 class IfProjNode;
  93 class IfFalseNode;
  94 class IfTrueNode;
  95 class InitializeNode;
  96 class JVMState;
  97 class JumpNode;
  98 class JumpProjNode;
  99 class LoadNode;
 100 class LoadStoreNode;
 101 class LoadStoreConditionalNode;
 102 class LockNode;
 103 class LongCountedLoopNode;
 104 class LongCountedLoopEndNode;
 105 class LoopNode;
 106 class LShiftNode;
 107 class MachBranchNode;
 108 class MachCallDynamicJavaNode;
 109 class MachCallJavaNode;
 110 class MachCallLeafNode;
 111 class MachCallNode;
 112 class MachCallRuntimeNode;
 113 class MachCallStaticJavaNode;
 114 class MachConstantBaseNode;
 115 class MachConstantNode;
 116 class MachGotoNode;
 117 class MachIfNode;
 118 class MachJumpNode;
 119 class MachNode;
 120 class MachNullCheckNode;
 121 class MachProjNode;
 122 class MachPrologNode;
 123 class MachReturnNode;
 124 class MachSafePointNode;
 125 class MachSpillCopyNode;
 126 class MachTempNode;
 127 class MachMergeNode;
 128 class MachMemBarNode;
 129 class MachVEPNode;
 130 class Matcher;
 131 class MemBarNode;
 132 class MemBarStoreStoreNode;
 133 class MemNode;
 134 class MergeMemNode;
 135 class MoveNode;
 136 class MulNode;
 137 class MultiNode;
 138 class MultiBranchNode;
 139 class NegNode;
 140 class NegVNode;
 141 class NeverBranchNode;
 142 class Opaque1Node;
 143 class OpaqueLoopInitNode;
 144 class OpaqueLoopStrideNode;
 145 class OpaqueMultiversioningNode;
 146 class OpaqueNotNullNode;
 147 class OpaqueInitializedAssertionPredicateNode;
 148 class OpaqueTemplateAssertionPredicateNode;
 149 class OuterStripMinedLoopNode;

 167 class Pipeline;
 168 class PopulateIndexNode;
 169 class ProjNode;
 170 class RangeCheckNode;
 171 class ReductionNode;
 172 class RegMask;
 173 class RegionNode;
 174 class RootNode;
 175 class SafePointNode;
 176 class SafePointScalarObjectNode;
 177 class SafePointScalarMergeNode;
 178 class SaturatingVectorNode;
 179 class StartNode;
 180 class State;
 181 class StoreNode;
 182 class SubNode;
 183 class SubTypeCheckNode;
 184 class Type;
 185 class TypeNode;
 186 class UnlockNode;
 187 class InlineTypeNode;
 188 class VectorNode;
 189 class LoadVectorNode;
 190 class LoadVectorMaskedNode;
 191 class StoreVectorMaskedNode;
 192 class LoadVectorGatherNode;
 193 class LoadVectorGatherMaskedNode;
 194 class StoreVectorNode;
 195 class StoreVectorScatterNode;
 196 class StoreVectorScatterMaskedNode;
 197 class VerifyVectorAlignmentNode;
 198 class VectorMaskCmpNode;
 199 class VectorUnboxNode;
 200 class VectorSet;
 201 class VectorReinterpretNode;
 202 class ShiftVNode;
 203 class MulVLNode;
 204 class ExpandVNode;
 205 class CompressVNode;
 206 class CompressMNode;
 207 class C2_MacroAssembler;

 682           DEFINE_CLASS_ID(AbstractLock,     Call, 3)
 683             DEFINE_CLASS_ID(Lock,             AbstractLock, 0)
 684             DEFINE_CLASS_ID(Unlock,           AbstractLock, 1)
 685           DEFINE_CLASS_ID(ArrayCopy,        Call, 4)
 686       DEFINE_CLASS_ID(MultiBranch, Multi, 1)
 687         DEFINE_CLASS_ID(PCTable,     MultiBranch, 0)
 688           DEFINE_CLASS_ID(Catch,       PCTable, 0)
 689           DEFINE_CLASS_ID(Jump,        PCTable, 1)
 690         DEFINE_CLASS_ID(If,          MultiBranch, 1)
 691           DEFINE_CLASS_ID(BaseCountedLoopEnd,     If, 0)
 692             DEFINE_CLASS_ID(CountedLoopEnd,       BaseCountedLoopEnd, 0)
 693             DEFINE_CLASS_ID(LongCountedLoopEnd,   BaseCountedLoopEnd, 1)
 694           DEFINE_CLASS_ID(RangeCheck,             If, 1)
 695           DEFINE_CLASS_ID(OuterStripMinedLoopEnd, If, 2)
 696           DEFINE_CLASS_ID(ParsePredicate,         If, 3)
 697         DEFINE_CLASS_ID(NeverBranch, MultiBranch, 2)
 698       DEFINE_CLASS_ID(Start,       Multi, 2)
 699       DEFINE_CLASS_ID(MemBar,      Multi, 3)
 700         DEFINE_CLASS_ID(Initialize,       MemBar, 0)
 701         DEFINE_CLASS_ID(MemBarStoreStore, MemBar, 1)
 702         DEFINE_CLASS_ID(Blackhole,        MemBar, 2)
 703 
 704     DEFINE_CLASS_ID(Mach,  Node, 1)
 705       DEFINE_CLASS_ID(MachReturn, Mach, 0)
 706         DEFINE_CLASS_ID(MachSafePoint, MachReturn, 0)
 707           DEFINE_CLASS_ID(MachCall, MachSafePoint, 0)
 708             DEFINE_CLASS_ID(MachCallJava,         MachCall, 0)
 709               DEFINE_CLASS_ID(MachCallStaticJava,   MachCallJava, 0)
 710               DEFINE_CLASS_ID(MachCallDynamicJava,  MachCallJava, 1)
 711             DEFINE_CLASS_ID(MachCallRuntime,      MachCall, 1)
 712               DEFINE_CLASS_ID(MachCallLeaf,         MachCallRuntime, 0)
 713       DEFINE_CLASS_ID(MachBranch, Mach, 1)
 714         DEFINE_CLASS_ID(MachIf,         MachBranch, 0)
 715         DEFINE_CLASS_ID(MachGoto,       MachBranch, 1)
 716         DEFINE_CLASS_ID(MachNullCheck,  MachBranch, 2)
 717       DEFINE_CLASS_ID(MachSpillCopy,    Mach, 2)
 718       DEFINE_CLASS_ID(MachTemp,         Mach, 3)
 719       DEFINE_CLASS_ID(MachConstantBase, Mach, 4)
 720       DEFINE_CLASS_ID(MachConstant,     Mach, 5)
 721         DEFINE_CLASS_ID(MachJump,       MachConstant, 0)
 722       DEFINE_CLASS_ID(MachMerge,        Mach, 6)
 723       DEFINE_CLASS_ID(MachMemBar,       Mach, 7)
 724       DEFINE_CLASS_ID(MachProlog,       Mach, 8)
 725       DEFINE_CLASS_ID(MachVEP,          Mach, 9)
 726 
 727     DEFINE_CLASS_ID(Type,  Node, 2)
 728       DEFINE_CLASS_ID(Phi,   Type, 0)
 729       DEFINE_CLASS_ID(ConstraintCast, Type, 1)
 730         DEFINE_CLASS_ID(CastII, ConstraintCast, 0)
 731         DEFINE_CLASS_ID(CheckCastPP, ConstraintCast, 1)
 732         DEFINE_CLASS_ID(CastLL, ConstraintCast, 2)
 733         DEFINE_CLASS_ID(CastFF, ConstraintCast, 3)
 734         DEFINE_CLASS_ID(CastDD, ConstraintCast, 4)
 735         DEFINE_CLASS_ID(CastVV, ConstraintCast, 5)
 736         DEFINE_CLASS_ID(CastPP, ConstraintCast, 6)
 737         DEFINE_CLASS_ID(CastHH, ConstraintCast, 7)
 738       DEFINE_CLASS_ID(CMove, Type, 3)
 739       DEFINE_CLASS_ID(SafePointScalarObject, Type, 4)
 740       DEFINE_CLASS_ID(DecodeNarrowPtr, Type, 5)
 741         DEFINE_CLASS_ID(DecodeN, DecodeNarrowPtr, 0)
 742         DEFINE_CLASS_ID(DecodeNKlass, DecodeNarrowPtr, 1)
 743       DEFINE_CLASS_ID(EncodeNarrowPtr, Type, 6)
 744         DEFINE_CLASS_ID(EncodeP, EncodeNarrowPtr, 0)
 745         DEFINE_CLASS_ID(EncodePKlass, EncodeNarrowPtr, 1)
 746       DEFINE_CLASS_ID(Vector, Type, 7)
 747         DEFINE_CLASS_ID(VectorMaskCmp, Vector, 0)
 748         DEFINE_CLASS_ID(VectorUnbox, Vector, 1)
 749         DEFINE_CLASS_ID(VectorReinterpret, Vector, 2)
 750         DEFINE_CLASS_ID(ShiftV, Vector, 3)
 751         DEFINE_CLASS_ID(CompressV, Vector, 4)
 752         DEFINE_CLASS_ID(ExpandV, Vector, 5)
 753         DEFINE_CLASS_ID(CompressM, Vector, 6)
 754         DEFINE_CLASS_ID(Reduction, Vector, 7)
 755         DEFINE_CLASS_ID(NegV, Vector, 8)
 756         DEFINE_CLASS_ID(SaturatingVector, Vector, 9)
 757         DEFINE_CLASS_ID(MulVL, Vector, 10)
 758       DEFINE_CLASS_ID(InlineType, Type, 8)
 759       DEFINE_CLASS_ID(Con, Type, 9)
 760           DEFINE_CLASS_ID(ConI, Con, 0)
 761       DEFINE_CLASS_ID(SafePointScalarMerge, Type, 10)
 762       DEFINE_CLASS_ID(Convert, Type, 11)
 763 
 764 
 765     DEFINE_CLASS_ID(Proj,  Node, 3)
 766       DEFINE_CLASS_ID(CatchProj, Proj, 0)
 767       DEFINE_CLASS_ID(JumpProj,  Proj, 1)
 768       DEFINE_CLASS_ID(IfProj,    Proj, 2)
 769         DEFINE_CLASS_ID(IfTrue,    IfProj, 0)
 770         DEFINE_CLASS_ID(IfFalse,   IfProj, 1)
 771       DEFINE_CLASS_ID(Parm,      Proj, 4)
 772       DEFINE_CLASS_ID(MachProj,  Proj, 5)
 773 
 774     DEFINE_CLASS_ID(Mem, Node, 4)
 775       DEFINE_CLASS_ID(Load, Mem, 0)
 776         DEFINE_CLASS_ID(LoadVector,  Load, 0)
 777           DEFINE_CLASS_ID(LoadVectorGather, LoadVector, 0)
 778           DEFINE_CLASS_ID(LoadVectorGatherMasked, LoadVector, 1)
 779           DEFINE_CLASS_ID(LoadVectorMasked, LoadVector, 2)
 780       DEFINE_CLASS_ID(Store, Mem, 1)
 781         DEFINE_CLASS_ID(StoreVector, Store, 0)
 782           DEFINE_CLASS_ID(StoreVectorScatter, StoreVector, 0)
 783           DEFINE_CLASS_ID(StoreVectorScatterMasked, StoreVector, 1)
 784           DEFINE_CLASS_ID(StoreVectorMasked, StoreVector, 2)
 785       DEFINE_CLASS_ID(LoadStore, Mem, 2)
 786         DEFINE_CLASS_ID(LoadStoreConditional, LoadStore, 0)
 787           DEFINE_CLASS_ID(CompareAndSwap, LoadStoreConditional, 0)
 788         DEFINE_CLASS_ID(CompareAndExchangeNode, LoadStore, 1)
 789 
 790     DEFINE_CLASS_ID(Region, Node, 5)
 791       DEFINE_CLASS_ID(Loop, Region, 0)
 792         DEFINE_CLASS_ID(Root,                Loop, 0)
 793         DEFINE_CLASS_ID(BaseCountedLoop,     Loop, 1)
 794           DEFINE_CLASS_ID(CountedLoop,       BaseCountedLoop, 0)
 795           DEFINE_CLASS_ID(LongCountedLoop,   BaseCountedLoop, 1)
 796         DEFINE_CLASS_ID(OuterStripMinedLoop, Loop, 2)
 797 
 798     DEFINE_CLASS_ID(Sub,   Node, 6)
 799       DEFINE_CLASS_ID(Cmp,   Sub, 0)
 800         DEFINE_CLASS_ID(FastLock,       Cmp, 0)
 801         DEFINE_CLASS_ID(FastUnlock,     Cmp, 1)
 802         DEFINE_CLASS_ID(SubTypeCheck,   Cmp, 2)
 803         DEFINE_CLASS_ID(FlatArrayCheck, Cmp, 3)
 804 
 805     DEFINE_CLASS_ID(MergeMem, Node, 7)
 806     DEFINE_CLASS_ID(Bool,     Node, 8)
 807     DEFINE_CLASS_ID(AddP,     Node, 9)
 808     DEFINE_CLASS_ID(BoxLock,  Node, 10)
 809     DEFINE_CLASS_ID(Add,      Node, 11)
 810     DEFINE_CLASS_ID(Mul,      Node, 12)
 811     DEFINE_CLASS_ID(ClearArray, Node, 14)
 812     DEFINE_CLASS_ID(Halt,     Node, 15)
 813     DEFINE_CLASS_ID(Opaque1,  Node, 16)
 814       DEFINE_CLASS_ID(OpaqueLoopInit, Opaque1, 0)
 815       DEFINE_CLASS_ID(OpaqueLoopStride, Opaque1, 1)
 816       DEFINE_CLASS_ID(OpaqueMultiversioning, Opaque1, 2)
 817     DEFINE_CLASS_ID(OpaqueNotNull,  Node, 17)
 818     DEFINE_CLASS_ID(OpaqueInitializedAssertionPredicate,  Node, 18)
 819     DEFINE_CLASS_ID(OpaqueTemplateAssertionPredicate,  Node, 19)
 820     DEFINE_CLASS_ID(Move,     Node, 20)
 821     DEFINE_CLASS_ID(LShift,   Node, 21)
 822     DEFINE_CLASS_ID(Neg,      Node, 22)
 823 

 892   #define DEFINE_CLASS_QUERY(type)                           \
 893   bool is_##type() const {                                   \
 894     return ((_class_id & ClassMask_##type) == Class_##type); \
 895   }                                                          \
 896   type##Node *as_##type() const {                            \
 897     assert(is_##type(), "invalid node class: %s", Name());   \
 898     return (type##Node*)this;                                \
 899   }                                                          \
 900   type##Node* isa_##type() const {                           \
 901     return (is_##type()) ? as_##type() : nullptr;            \
 902   }
 903 
 904   DEFINE_CLASS_QUERY(AbstractLock)
 905   DEFINE_CLASS_QUERY(Add)
 906   DEFINE_CLASS_QUERY(AddP)
 907   DEFINE_CLASS_QUERY(Allocate)
 908   DEFINE_CLASS_QUERY(AllocateArray)
 909   DEFINE_CLASS_QUERY(ArrayCopy)
 910   DEFINE_CLASS_QUERY(BaseCountedLoop)
 911   DEFINE_CLASS_QUERY(BaseCountedLoopEnd)
 912   DEFINE_CLASS_QUERY(Blackhole)
 913   DEFINE_CLASS_QUERY(Bool)
 914   DEFINE_CLASS_QUERY(BoxLock)
 915   DEFINE_CLASS_QUERY(Call)
 916   DEFINE_CLASS_QUERY(CallDynamicJava)
 917   DEFINE_CLASS_QUERY(CallJava)
 918   DEFINE_CLASS_QUERY(CallLeaf)
 919   DEFINE_CLASS_QUERY(CallLeafNoFP)
 920   DEFINE_CLASS_QUERY(CallRuntime)
 921   DEFINE_CLASS_QUERY(CallStaticJava)
 922   DEFINE_CLASS_QUERY(Catch)
 923   DEFINE_CLASS_QUERY(CatchProj)
 924   DEFINE_CLASS_QUERY(CheckCastPP)
 925   DEFINE_CLASS_QUERY(CastII)
 926   DEFINE_CLASS_QUERY(CastLL)
 927   DEFINE_CLASS_QUERY(CastFF)
 928   DEFINE_CLASS_QUERY(ConI)
 929   DEFINE_CLASS_QUERY(CastPP)
 930   DEFINE_CLASS_QUERY(ConstraintCast)
 931   DEFINE_CLASS_QUERY(ClearArray)
 932   DEFINE_CLASS_QUERY(CMove)
 933   DEFINE_CLASS_QUERY(Cmp)
 934   DEFINE_CLASS_QUERY(Convert)
 935   DEFINE_CLASS_QUERY(CountedLoop)
 936   DEFINE_CLASS_QUERY(CountedLoopEnd)
 937   DEFINE_CLASS_QUERY(DecodeNarrowPtr)
 938   DEFINE_CLASS_QUERY(DecodeN)
 939   DEFINE_CLASS_QUERY(DecodeNKlass)
 940   DEFINE_CLASS_QUERY(EncodeNarrowPtr)
 941   DEFINE_CLASS_QUERY(EncodeP)
 942   DEFINE_CLASS_QUERY(EncodePKlass)
 943   DEFINE_CLASS_QUERY(FastLock)
 944   DEFINE_CLASS_QUERY(FastUnlock)
 945   DEFINE_CLASS_QUERY(FlatArrayCheck)
 946   DEFINE_CLASS_QUERY(Halt)
 947   DEFINE_CLASS_QUERY(If)
 948   DEFINE_CLASS_QUERY(RangeCheck)
 949   DEFINE_CLASS_QUERY(IfProj)
 950   DEFINE_CLASS_QUERY(IfFalse)
 951   DEFINE_CLASS_QUERY(IfTrue)
 952   DEFINE_CLASS_QUERY(Initialize)
 953   DEFINE_CLASS_QUERY(Jump)
 954   DEFINE_CLASS_QUERY(JumpProj)
 955   DEFINE_CLASS_QUERY(LongCountedLoop)
 956   DEFINE_CLASS_QUERY(LongCountedLoopEnd)
 957   DEFINE_CLASS_QUERY(Load)
 958   DEFINE_CLASS_QUERY(LoadStore)
 959   DEFINE_CLASS_QUERY(LoadStoreConditional)
 960   DEFINE_CLASS_QUERY(Lock)
 961   DEFINE_CLASS_QUERY(Loop)
 962   DEFINE_CLASS_QUERY(LShift)
 963   DEFINE_CLASS_QUERY(Mach)
 964   DEFINE_CLASS_QUERY(MachBranch)
 965   DEFINE_CLASS_QUERY(MachCall)
 966   DEFINE_CLASS_QUERY(MachCallDynamicJava)
 967   DEFINE_CLASS_QUERY(MachCallJava)
 968   DEFINE_CLASS_QUERY(MachCallLeaf)
 969   DEFINE_CLASS_QUERY(MachCallRuntime)
 970   DEFINE_CLASS_QUERY(MachCallStaticJava)
 971   DEFINE_CLASS_QUERY(MachConstantBase)
 972   DEFINE_CLASS_QUERY(MachConstant)
 973   DEFINE_CLASS_QUERY(MachGoto)
 974   DEFINE_CLASS_QUERY(MachIf)
 975   DEFINE_CLASS_QUERY(MachJump)
 976   DEFINE_CLASS_QUERY(MachNullCheck)
 977   DEFINE_CLASS_QUERY(MachProj)
 978   DEFINE_CLASS_QUERY(MachProlog)
 979   DEFINE_CLASS_QUERY(MachReturn)
 980   DEFINE_CLASS_QUERY(MachSafePoint)
 981   DEFINE_CLASS_QUERY(MachSpillCopy)
 982   DEFINE_CLASS_QUERY(MachTemp)
 983   DEFINE_CLASS_QUERY(MachMemBar)
 984   DEFINE_CLASS_QUERY(MachMerge)
 985   DEFINE_CLASS_QUERY(MachVEP)
 986   DEFINE_CLASS_QUERY(Mem)
 987   DEFINE_CLASS_QUERY(MemBar)
 988   DEFINE_CLASS_QUERY(MemBarStoreStore)
 989   DEFINE_CLASS_QUERY(MergeMem)
 990   DEFINE_CLASS_QUERY(Move)
 991   DEFINE_CLASS_QUERY(Mul)
 992   DEFINE_CLASS_QUERY(Multi)
 993   DEFINE_CLASS_QUERY(MultiBranch)
 994   DEFINE_CLASS_QUERY(MulVL)
 995   DEFINE_CLASS_QUERY(Neg)
 996   DEFINE_CLASS_QUERY(NegV)
 997   DEFINE_CLASS_QUERY(NeverBranch)
 998   DEFINE_CLASS_QUERY(Opaque1)
 999   DEFINE_CLASS_QUERY(OpaqueNotNull)
1000   DEFINE_CLASS_QUERY(OpaqueInitializedAssertionPredicate)
1001   DEFINE_CLASS_QUERY(OpaqueTemplateAssertionPredicate)
1002   DEFINE_CLASS_QUERY(OpaqueLoopInit)
1003   DEFINE_CLASS_QUERY(OpaqueLoopStride)
1004   DEFINE_CLASS_QUERY(OpaqueMultiversioning)
1005   DEFINE_CLASS_QUERY(OuterStripMinedLoop)
1006   DEFINE_CLASS_QUERY(OuterStripMinedLoopEnd)
1007   DEFINE_CLASS_QUERY(Parm)
1008   DEFINE_CLASS_QUERY(ParsePredicate)
1009   DEFINE_CLASS_QUERY(PCTable)
1010   DEFINE_CLASS_QUERY(Phi)
1011   DEFINE_CLASS_QUERY(Proj)
1012   DEFINE_CLASS_QUERY(Reduction)
1013   DEFINE_CLASS_QUERY(Region)
1014   DEFINE_CLASS_QUERY(Root)
1015   DEFINE_CLASS_QUERY(SafePoint)
1016   DEFINE_CLASS_QUERY(SafePointScalarObject)
1017   DEFINE_CLASS_QUERY(SafePointScalarMerge)
1018   DEFINE_CLASS_QUERY(Start)
1019   DEFINE_CLASS_QUERY(Store)
1020   DEFINE_CLASS_QUERY(Sub)
1021   DEFINE_CLASS_QUERY(SubTypeCheck)
1022   DEFINE_CLASS_QUERY(Type)
1023   DEFINE_CLASS_QUERY(InlineType)
1024   DEFINE_CLASS_QUERY(Vector)
1025   DEFINE_CLASS_QUERY(VectorMaskCmp)
1026   DEFINE_CLASS_QUERY(VectorUnbox)
1027   DEFINE_CLASS_QUERY(VectorReinterpret)
1028   DEFINE_CLASS_QUERY(CompressV)
1029   DEFINE_CLASS_QUERY(ExpandV)
1030   DEFINE_CLASS_QUERY(CompressM)
1031   DEFINE_CLASS_QUERY(LoadVector)
1032   DEFINE_CLASS_QUERY(LoadVectorGather)
1033   DEFINE_CLASS_QUERY(LoadVectorMasked)
1034   DEFINE_CLASS_QUERY(LoadVectorGatherMasked)
1035   DEFINE_CLASS_QUERY(StoreVector)
1036   DEFINE_CLASS_QUERY(StoreVectorScatter)
1037   DEFINE_CLASS_QUERY(StoreVectorMasked)
1038   DEFINE_CLASS_QUERY(StoreVectorScatterMasked)
1039   DEFINE_CLASS_QUERY(SaturatingVector)
1040   DEFINE_CLASS_QUERY(ShiftV)
1041   DEFINE_CLASS_QUERY(Unlock)
1042 
1043   #undef DEFINE_CLASS_QUERY
< prev index next >