70 class CheckCastPPNode;
71 class ClearArrayNode;
72 class CmpNode;
73 class CodeBuffer;
74 class ConstraintCastNode;
75 class ConNode;
76 class ConINode;
77 class ConvertNode;
78 class CompareAndSwapNode;
79 class CompareAndExchangeNode;
80 class CountedLoopNode;
81 class CountedLoopEndNode;
82 class DecodeNarrowPtrNode;
83 class DecodeNNode;
84 class DecodeNKlassNode;
85 class EncodeNarrowPtrNode;
86 class EncodePNode;
87 class EncodePKlassNode;
88 class FastLockNode;
89 class FastUnlockNode;
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 MachReturnNode;
123 class MachSafePointNode;
124 class MachSpillCopyNode;
125 class MachTempNode;
126 class MachMergeNode;
127 class MachMemBarNode;
128 class Matcher;
129 class MemBarNode;
130 class MemBarStoreStoreNode;
131 class MemNode;
132 class MergeMemNode;
133 class MoveNode;
134 class MulNode;
135 class MultiNode;
136 class MultiBranchNode;
137 class NegNode;
138 class NegVNode;
139 class NeverBranchNode;
140 class Opaque1Node;
141 class OpaqueLoopInitNode;
142 class OpaqueLoopStrideNode;
143 class OpaqueMultiversioningNode;
144 class OpaqueNotNullNode;
145 class OpaqueInitializedAssertionPredicateNode;
146 class OpaqueTemplateAssertionPredicateNode;
147 class OuterStripMinedLoopNode;
165 class Pipeline;
166 class PopulateIndexNode;
167 class ProjNode;
168 class RangeCheckNode;
169 class ReductionNode;
170 class RegMask;
171 class RegionNode;
172 class RootNode;
173 class SafePointNode;
174 class SafePointScalarObjectNode;
175 class SafePointScalarMergeNode;
176 class SaturatingVectorNode;
177 class StartNode;
178 class State;
179 class StoreNode;
180 class SubNode;
181 class SubTypeCheckNode;
182 class Type;
183 class TypeNode;
184 class UnlockNode;
185 class VectorNode;
186 class LoadVectorNode;
187 class LoadVectorMaskedNode;
188 class StoreVectorMaskedNode;
189 class LoadVectorGatherNode;
190 class LoadVectorGatherMaskedNode;
191 class StoreVectorNode;
192 class StoreVectorScatterNode;
193 class StoreVectorScatterMaskedNode;
194 class VerifyVectorAlignmentNode;
195 class VectorMaskCmpNode;
196 class VectorUnboxNode;
197 class VectorSet;
198 class VectorReinterpretNode;
199 class ShiftVNode;
200 class MulVLNode;
201 class ExpandVNode;
202 class CompressVNode;
203 class CompressMNode;
204 class C2_MacroAssembler;
680 DEFINE_CLASS_ID(AbstractLock, Call, 3)
681 DEFINE_CLASS_ID(Lock, AbstractLock, 0)
682 DEFINE_CLASS_ID(Unlock, AbstractLock, 1)
683 DEFINE_CLASS_ID(ArrayCopy, Call, 4)
684 DEFINE_CLASS_ID(MultiBranch, Multi, 1)
685 DEFINE_CLASS_ID(PCTable, MultiBranch, 0)
686 DEFINE_CLASS_ID(Catch, PCTable, 0)
687 DEFINE_CLASS_ID(Jump, PCTable, 1)
688 DEFINE_CLASS_ID(If, MultiBranch, 1)
689 DEFINE_CLASS_ID(BaseCountedLoopEnd, If, 0)
690 DEFINE_CLASS_ID(CountedLoopEnd, BaseCountedLoopEnd, 0)
691 DEFINE_CLASS_ID(LongCountedLoopEnd, BaseCountedLoopEnd, 1)
692 DEFINE_CLASS_ID(RangeCheck, If, 1)
693 DEFINE_CLASS_ID(OuterStripMinedLoopEnd, If, 2)
694 DEFINE_CLASS_ID(ParsePredicate, If, 3)
695 DEFINE_CLASS_ID(NeverBranch, MultiBranch, 2)
696 DEFINE_CLASS_ID(Start, Multi, 2)
697 DEFINE_CLASS_ID(MemBar, Multi, 3)
698 DEFINE_CLASS_ID(Initialize, MemBar, 0)
699 DEFINE_CLASS_ID(MemBarStoreStore, MemBar, 1)
700
701 DEFINE_CLASS_ID(Mach, Node, 1)
702 DEFINE_CLASS_ID(MachReturn, Mach, 0)
703 DEFINE_CLASS_ID(MachSafePoint, MachReturn, 0)
704 DEFINE_CLASS_ID(MachCall, MachSafePoint, 0)
705 DEFINE_CLASS_ID(MachCallJava, MachCall, 0)
706 DEFINE_CLASS_ID(MachCallStaticJava, MachCallJava, 0)
707 DEFINE_CLASS_ID(MachCallDynamicJava, MachCallJava, 1)
708 DEFINE_CLASS_ID(MachCallRuntime, MachCall, 1)
709 DEFINE_CLASS_ID(MachCallLeaf, MachCallRuntime, 0)
710 DEFINE_CLASS_ID(MachBranch, Mach, 1)
711 DEFINE_CLASS_ID(MachIf, MachBranch, 0)
712 DEFINE_CLASS_ID(MachGoto, MachBranch, 1)
713 DEFINE_CLASS_ID(MachNullCheck, MachBranch, 2)
714 DEFINE_CLASS_ID(MachSpillCopy, Mach, 2)
715 DEFINE_CLASS_ID(MachTemp, Mach, 3)
716 DEFINE_CLASS_ID(MachConstantBase, Mach, 4)
717 DEFINE_CLASS_ID(MachConstant, Mach, 5)
718 DEFINE_CLASS_ID(MachJump, MachConstant, 0)
719 DEFINE_CLASS_ID(MachMerge, Mach, 6)
720 DEFINE_CLASS_ID(MachMemBar, Mach, 7)
721
722 DEFINE_CLASS_ID(Type, Node, 2)
723 DEFINE_CLASS_ID(Phi, Type, 0)
724 DEFINE_CLASS_ID(ConstraintCast, Type, 1)
725 DEFINE_CLASS_ID(CastII, ConstraintCast, 0)
726 DEFINE_CLASS_ID(CheckCastPP, ConstraintCast, 1)
727 DEFINE_CLASS_ID(CastLL, ConstraintCast, 2)
728 DEFINE_CLASS_ID(CastFF, ConstraintCast, 3)
729 DEFINE_CLASS_ID(CastDD, ConstraintCast, 4)
730 DEFINE_CLASS_ID(CastVV, ConstraintCast, 5)
731 DEFINE_CLASS_ID(CastPP, ConstraintCast, 6)
732 DEFINE_CLASS_ID(CastHH, ConstraintCast, 7)
733 DEFINE_CLASS_ID(CMove, Type, 3)
734 DEFINE_CLASS_ID(SafePointScalarObject, Type, 4)
735 DEFINE_CLASS_ID(DecodeNarrowPtr, Type, 5)
736 DEFINE_CLASS_ID(DecodeN, DecodeNarrowPtr, 0)
737 DEFINE_CLASS_ID(DecodeNKlass, DecodeNarrowPtr, 1)
738 DEFINE_CLASS_ID(EncodeNarrowPtr, Type, 6)
739 DEFINE_CLASS_ID(EncodeP, EncodeNarrowPtr, 0)
740 DEFINE_CLASS_ID(EncodePKlass, EncodeNarrowPtr, 1)
741 DEFINE_CLASS_ID(Vector, Type, 7)
742 DEFINE_CLASS_ID(VectorMaskCmp, Vector, 0)
743 DEFINE_CLASS_ID(VectorUnbox, Vector, 1)
744 DEFINE_CLASS_ID(VectorReinterpret, Vector, 2)
745 DEFINE_CLASS_ID(ShiftV, Vector, 3)
746 DEFINE_CLASS_ID(CompressV, Vector, 4)
747 DEFINE_CLASS_ID(ExpandV, Vector, 5)
748 DEFINE_CLASS_ID(CompressM, Vector, 6)
749 DEFINE_CLASS_ID(Reduction, Vector, 7)
750 DEFINE_CLASS_ID(NegV, Vector, 8)
751 DEFINE_CLASS_ID(SaturatingVector, Vector, 9)
752 DEFINE_CLASS_ID(MulVL, Vector, 10)
753 DEFINE_CLASS_ID(Con, Type, 8)
754 DEFINE_CLASS_ID(ConI, Con, 0)
755 DEFINE_CLASS_ID(SafePointScalarMerge, Type, 9)
756 DEFINE_CLASS_ID(Convert, Type, 10)
757
758
759 DEFINE_CLASS_ID(Proj, Node, 3)
760 DEFINE_CLASS_ID(CatchProj, Proj, 0)
761 DEFINE_CLASS_ID(JumpProj, Proj, 1)
762 DEFINE_CLASS_ID(IfProj, Proj, 2)
763 DEFINE_CLASS_ID(IfTrue, IfProj, 0)
764 DEFINE_CLASS_ID(IfFalse, IfProj, 1)
765 DEFINE_CLASS_ID(Parm, Proj, 4)
766 DEFINE_CLASS_ID(MachProj, Proj, 5)
767
768 DEFINE_CLASS_ID(Mem, Node, 4)
769 DEFINE_CLASS_ID(Load, Mem, 0)
770 DEFINE_CLASS_ID(LoadVector, Load, 0)
771 DEFINE_CLASS_ID(LoadVectorGather, LoadVector, 0)
772 DEFINE_CLASS_ID(LoadVectorGatherMasked, LoadVector, 1)
773 DEFINE_CLASS_ID(LoadVectorMasked, LoadVector, 2)
774 DEFINE_CLASS_ID(Store, Mem, 1)
775 DEFINE_CLASS_ID(StoreVector, Store, 0)
776 DEFINE_CLASS_ID(StoreVectorScatter, StoreVector, 0)
777 DEFINE_CLASS_ID(StoreVectorScatterMasked, StoreVector, 1)
778 DEFINE_CLASS_ID(StoreVectorMasked, StoreVector, 2)
779 DEFINE_CLASS_ID(LoadStore, Mem, 2)
780 DEFINE_CLASS_ID(LoadStoreConditional, LoadStore, 0)
781 DEFINE_CLASS_ID(CompareAndSwap, LoadStoreConditional, 0)
782 DEFINE_CLASS_ID(CompareAndExchangeNode, LoadStore, 1)
783
784 DEFINE_CLASS_ID(Region, Node, 5)
785 DEFINE_CLASS_ID(Loop, Region, 0)
786 DEFINE_CLASS_ID(Root, Loop, 0)
787 DEFINE_CLASS_ID(BaseCountedLoop, Loop, 1)
788 DEFINE_CLASS_ID(CountedLoop, BaseCountedLoop, 0)
789 DEFINE_CLASS_ID(LongCountedLoop, BaseCountedLoop, 1)
790 DEFINE_CLASS_ID(OuterStripMinedLoop, Loop, 2)
791
792 DEFINE_CLASS_ID(Sub, Node, 6)
793 DEFINE_CLASS_ID(Cmp, Sub, 0)
794 DEFINE_CLASS_ID(FastLock, Cmp, 0)
795 DEFINE_CLASS_ID(FastUnlock, Cmp, 1)
796 DEFINE_CLASS_ID(SubTypeCheck,Cmp, 2)
797
798 DEFINE_CLASS_ID(MergeMem, Node, 7)
799 DEFINE_CLASS_ID(Bool, Node, 8)
800 DEFINE_CLASS_ID(AddP, Node, 9)
801 DEFINE_CLASS_ID(BoxLock, Node, 10)
802 DEFINE_CLASS_ID(Add, Node, 11)
803 DEFINE_CLASS_ID(Mul, Node, 12)
804 DEFINE_CLASS_ID(ClearArray, Node, 14)
805 DEFINE_CLASS_ID(Halt, Node, 15)
806 DEFINE_CLASS_ID(Opaque1, Node, 16)
807 DEFINE_CLASS_ID(OpaqueLoopInit, Opaque1, 0)
808 DEFINE_CLASS_ID(OpaqueLoopStride, Opaque1, 1)
809 DEFINE_CLASS_ID(OpaqueMultiversioning, Opaque1, 2)
810 DEFINE_CLASS_ID(OpaqueNotNull, Node, 17)
811 DEFINE_CLASS_ID(OpaqueInitializedAssertionPredicate, Node, 18)
812 DEFINE_CLASS_ID(OpaqueTemplateAssertionPredicate, Node, 19)
813 DEFINE_CLASS_ID(Move, Node, 20)
814 DEFINE_CLASS_ID(LShift, Node, 21)
815 DEFINE_CLASS_ID(Neg, Node, 22)
816
885 #define DEFINE_CLASS_QUERY(type) \
886 bool is_##type() const { \
887 return ((_class_id & ClassMask_##type) == Class_##type); \
888 } \
889 type##Node *as_##type() const { \
890 assert(is_##type(), "invalid node class: %s", Name()); \
891 return (type##Node*)this; \
892 } \
893 type##Node* isa_##type() const { \
894 return (is_##type()) ? as_##type() : nullptr; \
895 }
896
897 DEFINE_CLASS_QUERY(AbstractLock)
898 DEFINE_CLASS_QUERY(Add)
899 DEFINE_CLASS_QUERY(AddP)
900 DEFINE_CLASS_QUERY(Allocate)
901 DEFINE_CLASS_QUERY(AllocateArray)
902 DEFINE_CLASS_QUERY(ArrayCopy)
903 DEFINE_CLASS_QUERY(BaseCountedLoop)
904 DEFINE_CLASS_QUERY(BaseCountedLoopEnd)
905 DEFINE_CLASS_QUERY(Bool)
906 DEFINE_CLASS_QUERY(BoxLock)
907 DEFINE_CLASS_QUERY(Call)
908 DEFINE_CLASS_QUERY(CallDynamicJava)
909 DEFINE_CLASS_QUERY(CallJava)
910 DEFINE_CLASS_QUERY(CallLeaf)
911 DEFINE_CLASS_QUERY(CallLeafNoFP)
912 DEFINE_CLASS_QUERY(CallLeafPure)
913 DEFINE_CLASS_QUERY(CallRuntime)
914 DEFINE_CLASS_QUERY(CallStaticJava)
915 DEFINE_CLASS_QUERY(Catch)
916 DEFINE_CLASS_QUERY(CatchProj)
917 DEFINE_CLASS_QUERY(CheckCastPP)
918 DEFINE_CLASS_QUERY(CastII)
919 DEFINE_CLASS_QUERY(CastLL)
920 DEFINE_CLASS_QUERY(CastFF)
921 DEFINE_CLASS_QUERY(ConI)
922 DEFINE_CLASS_QUERY(CastPP)
923 DEFINE_CLASS_QUERY(ConstraintCast)
924 DEFINE_CLASS_QUERY(ClearArray)
925 DEFINE_CLASS_QUERY(CMove)
926 DEFINE_CLASS_QUERY(Cmp)
927 DEFINE_CLASS_QUERY(Convert)
928 DEFINE_CLASS_QUERY(CountedLoop)
929 DEFINE_CLASS_QUERY(CountedLoopEnd)
930 DEFINE_CLASS_QUERY(DecodeNarrowPtr)
931 DEFINE_CLASS_QUERY(DecodeN)
932 DEFINE_CLASS_QUERY(DecodeNKlass)
933 DEFINE_CLASS_QUERY(EncodeNarrowPtr)
934 DEFINE_CLASS_QUERY(EncodeP)
935 DEFINE_CLASS_QUERY(EncodePKlass)
936 DEFINE_CLASS_QUERY(FastLock)
937 DEFINE_CLASS_QUERY(FastUnlock)
938 DEFINE_CLASS_QUERY(Halt)
939 DEFINE_CLASS_QUERY(If)
940 DEFINE_CLASS_QUERY(RangeCheck)
941 DEFINE_CLASS_QUERY(IfProj)
942 DEFINE_CLASS_QUERY(IfFalse)
943 DEFINE_CLASS_QUERY(IfTrue)
944 DEFINE_CLASS_QUERY(Initialize)
945 DEFINE_CLASS_QUERY(Jump)
946 DEFINE_CLASS_QUERY(JumpProj)
947 DEFINE_CLASS_QUERY(LongCountedLoop)
948 DEFINE_CLASS_QUERY(LongCountedLoopEnd)
949 DEFINE_CLASS_QUERY(Load)
950 DEFINE_CLASS_QUERY(LoadStore)
951 DEFINE_CLASS_QUERY(LoadStoreConditional)
952 DEFINE_CLASS_QUERY(Lock)
953 DEFINE_CLASS_QUERY(Loop)
954 DEFINE_CLASS_QUERY(LShift)
955 DEFINE_CLASS_QUERY(Mach)
956 DEFINE_CLASS_QUERY(MachBranch)
957 DEFINE_CLASS_QUERY(MachCall)
958 DEFINE_CLASS_QUERY(MachCallDynamicJava)
959 DEFINE_CLASS_QUERY(MachCallJava)
960 DEFINE_CLASS_QUERY(MachCallLeaf)
961 DEFINE_CLASS_QUERY(MachCallRuntime)
962 DEFINE_CLASS_QUERY(MachCallStaticJava)
963 DEFINE_CLASS_QUERY(MachConstantBase)
964 DEFINE_CLASS_QUERY(MachConstant)
965 DEFINE_CLASS_QUERY(MachGoto)
966 DEFINE_CLASS_QUERY(MachIf)
967 DEFINE_CLASS_QUERY(MachJump)
968 DEFINE_CLASS_QUERY(MachNullCheck)
969 DEFINE_CLASS_QUERY(MachProj)
970 DEFINE_CLASS_QUERY(MachReturn)
971 DEFINE_CLASS_QUERY(MachSafePoint)
972 DEFINE_CLASS_QUERY(MachSpillCopy)
973 DEFINE_CLASS_QUERY(MachTemp)
974 DEFINE_CLASS_QUERY(MachMemBar)
975 DEFINE_CLASS_QUERY(MachMerge)
976 DEFINE_CLASS_QUERY(Mem)
977 DEFINE_CLASS_QUERY(MemBar)
978 DEFINE_CLASS_QUERY(MemBarStoreStore)
979 DEFINE_CLASS_QUERY(MergeMem)
980 DEFINE_CLASS_QUERY(Move)
981 DEFINE_CLASS_QUERY(Mul)
982 DEFINE_CLASS_QUERY(Multi)
983 DEFINE_CLASS_QUERY(MultiBranch)
984 DEFINE_CLASS_QUERY(MulVL)
985 DEFINE_CLASS_QUERY(Neg)
986 DEFINE_CLASS_QUERY(NegV)
987 DEFINE_CLASS_QUERY(NeverBranch)
988 DEFINE_CLASS_QUERY(Opaque1)
989 DEFINE_CLASS_QUERY(OpaqueNotNull)
990 DEFINE_CLASS_QUERY(OpaqueInitializedAssertionPredicate)
991 DEFINE_CLASS_QUERY(OpaqueTemplateAssertionPredicate)
992 DEFINE_CLASS_QUERY(OpaqueLoopInit)
993 DEFINE_CLASS_QUERY(OpaqueLoopStride)
994 DEFINE_CLASS_QUERY(OpaqueMultiversioning)
995 DEFINE_CLASS_QUERY(OuterStripMinedLoop)
996 DEFINE_CLASS_QUERY(OuterStripMinedLoopEnd)
997 DEFINE_CLASS_QUERY(Parm)
998 DEFINE_CLASS_QUERY(ParsePredicate)
999 DEFINE_CLASS_QUERY(PCTable)
1000 DEFINE_CLASS_QUERY(Phi)
1001 DEFINE_CLASS_QUERY(Proj)
1002 DEFINE_CLASS_QUERY(Reduction)
1003 DEFINE_CLASS_QUERY(Region)
1004 DEFINE_CLASS_QUERY(Root)
1005 DEFINE_CLASS_QUERY(SafePoint)
1006 DEFINE_CLASS_QUERY(SafePointScalarObject)
1007 DEFINE_CLASS_QUERY(SafePointScalarMerge)
1008 DEFINE_CLASS_QUERY(Start)
1009 DEFINE_CLASS_QUERY(Store)
1010 DEFINE_CLASS_QUERY(Sub)
1011 DEFINE_CLASS_QUERY(SubTypeCheck)
1012 DEFINE_CLASS_QUERY(Type)
1013 DEFINE_CLASS_QUERY(Vector)
1014 DEFINE_CLASS_QUERY(VectorMaskCmp)
1015 DEFINE_CLASS_QUERY(VectorUnbox)
1016 DEFINE_CLASS_QUERY(VectorReinterpret)
1017 DEFINE_CLASS_QUERY(CompressV)
1018 DEFINE_CLASS_QUERY(ExpandV)
1019 DEFINE_CLASS_QUERY(CompressM)
1020 DEFINE_CLASS_QUERY(LoadVector)
1021 DEFINE_CLASS_QUERY(LoadVectorGather)
1022 DEFINE_CLASS_QUERY(LoadVectorMasked)
1023 DEFINE_CLASS_QUERY(LoadVectorGatherMasked)
1024 DEFINE_CLASS_QUERY(StoreVector)
1025 DEFINE_CLASS_QUERY(StoreVectorScatter)
1026 DEFINE_CLASS_QUERY(StoreVectorMasked)
1027 DEFINE_CLASS_QUERY(StoreVectorScatterMasked)
1028 DEFINE_CLASS_QUERY(SaturatingVector)
1029 DEFINE_CLASS_QUERY(ShiftV)
1030 DEFINE_CLASS_QUERY(Unlock)
1031
1032 #undef DEFINE_CLASS_QUERY
|
70 class CheckCastPPNode;
71 class ClearArrayNode;
72 class CmpNode;
73 class CodeBuffer;
74 class ConstraintCastNode;
75 class ConNode;
76 class ConINode;
77 class ConvertNode;
78 class CompareAndSwapNode;
79 class CompareAndExchangeNode;
80 class CountedLoopNode;
81 class CountedLoopEndNode;
82 class DecodeNarrowPtrNode;
83 class DecodeNNode;
84 class DecodeNKlassNode;
85 class EncodeNarrowPtrNode;
86 class EncodePNode;
87 class EncodePKlassNode;
88 class FastLockNode;
89 class FastUnlockNode;
90 class FlatArrayCheckNode;
91 class HaltNode;
92 class IfNode;
93 class IfProjNode;
94 class IfFalseNode;
95 class IfTrueNode;
96 class InitializeNode;
97 class JVMState;
98 class JumpNode;
99 class JumpProjNode;
100 class LoadNode;
101 class LoadStoreNode;
102 class LoadStoreConditionalNode;
103 class LockNode;
104 class LongCountedLoopNode;
105 class LongCountedLoopEndNode;
106 class LoopNode;
107 class LShiftNode;
108 class MachBranchNode;
109 class MachCallDynamicJavaNode;
110 class MachCallJavaNode;
111 class MachCallLeafNode;
112 class MachCallNode;
113 class MachCallRuntimeNode;
114 class MachCallStaticJavaNode;
115 class MachConstantBaseNode;
116 class MachConstantNode;
117 class MachGotoNode;
118 class MachIfNode;
119 class MachJumpNode;
120 class MachNode;
121 class MachNullCheckNode;
122 class MachProjNode;
123 class MachPrologNode;
124 class MachReturnNode;
125 class MachSafePointNode;
126 class MachSpillCopyNode;
127 class MachTempNode;
128 class MachMergeNode;
129 class MachMemBarNode;
130 class MachVEPNode;
131 class Matcher;
132 class MemBarNode;
133 class MemBarStoreStoreNode;
134 class MemNode;
135 class MergeMemNode;
136 class MoveNode;
137 class MulNode;
138 class MultiNode;
139 class MultiBranchNode;
140 class NegNode;
141 class NegVNode;
142 class NeverBranchNode;
143 class Opaque1Node;
144 class OpaqueLoopInitNode;
145 class OpaqueLoopStrideNode;
146 class OpaqueMultiversioningNode;
147 class OpaqueNotNullNode;
148 class OpaqueInitializedAssertionPredicateNode;
149 class OpaqueTemplateAssertionPredicateNode;
150 class OuterStripMinedLoopNode;
168 class Pipeline;
169 class PopulateIndexNode;
170 class ProjNode;
171 class RangeCheckNode;
172 class ReductionNode;
173 class RegMask;
174 class RegionNode;
175 class RootNode;
176 class SafePointNode;
177 class SafePointScalarObjectNode;
178 class SafePointScalarMergeNode;
179 class SaturatingVectorNode;
180 class StartNode;
181 class State;
182 class StoreNode;
183 class SubNode;
184 class SubTypeCheckNode;
185 class Type;
186 class TypeNode;
187 class UnlockNode;
188 class InlineTypeNode;
189 class VectorNode;
190 class LoadVectorNode;
191 class LoadVectorMaskedNode;
192 class StoreVectorMaskedNode;
193 class LoadVectorGatherNode;
194 class LoadVectorGatherMaskedNode;
195 class StoreVectorNode;
196 class StoreVectorScatterNode;
197 class StoreVectorScatterMaskedNode;
198 class VerifyVectorAlignmentNode;
199 class VectorMaskCmpNode;
200 class VectorUnboxNode;
201 class VectorSet;
202 class VectorReinterpretNode;
203 class ShiftVNode;
204 class MulVLNode;
205 class ExpandVNode;
206 class CompressVNode;
207 class CompressMNode;
208 class C2_MacroAssembler;
684 DEFINE_CLASS_ID(AbstractLock, Call, 3)
685 DEFINE_CLASS_ID(Lock, AbstractLock, 0)
686 DEFINE_CLASS_ID(Unlock, AbstractLock, 1)
687 DEFINE_CLASS_ID(ArrayCopy, Call, 4)
688 DEFINE_CLASS_ID(MultiBranch, Multi, 1)
689 DEFINE_CLASS_ID(PCTable, MultiBranch, 0)
690 DEFINE_CLASS_ID(Catch, PCTable, 0)
691 DEFINE_CLASS_ID(Jump, PCTable, 1)
692 DEFINE_CLASS_ID(If, MultiBranch, 1)
693 DEFINE_CLASS_ID(BaseCountedLoopEnd, If, 0)
694 DEFINE_CLASS_ID(CountedLoopEnd, BaseCountedLoopEnd, 0)
695 DEFINE_CLASS_ID(LongCountedLoopEnd, BaseCountedLoopEnd, 1)
696 DEFINE_CLASS_ID(RangeCheck, If, 1)
697 DEFINE_CLASS_ID(OuterStripMinedLoopEnd, If, 2)
698 DEFINE_CLASS_ID(ParsePredicate, If, 3)
699 DEFINE_CLASS_ID(NeverBranch, MultiBranch, 2)
700 DEFINE_CLASS_ID(Start, Multi, 2)
701 DEFINE_CLASS_ID(MemBar, Multi, 3)
702 DEFINE_CLASS_ID(Initialize, MemBar, 0)
703 DEFINE_CLASS_ID(MemBarStoreStore, MemBar, 1)
704 DEFINE_CLASS_ID(Blackhole, MemBar, 2)
705
706 DEFINE_CLASS_ID(Mach, Node, 1)
707 DEFINE_CLASS_ID(MachReturn, Mach, 0)
708 DEFINE_CLASS_ID(MachSafePoint, MachReturn, 0)
709 DEFINE_CLASS_ID(MachCall, MachSafePoint, 0)
710 DEFINE_CLASS_ID(MachCallJava, MachCall, 0)
711 DEFINE_CLASS_ID(MachCallStaticJava, MachCallJava, 0)
712 DEFINE_CLASS_ID(MachCallDynamicJava, MachCallJava, 1)
713 DEFINE_CLASS_ID(MachCallRuntime, MachCall, 1)
714 DEFINE_CLASS_ID(MachCallLeaf, MachCallRuntime, 0)
715 DEFINE_CLASS_ID(MachBranch, Mach, 1)
716 DEFINE_CLASS_ID(MachIf, MachBranch, 0)
717 DEFINE_CLASS_ID(MachGoto, MachBranch, 1)
718 DEFINE_CLASS_ID(MachNullCheck, MachBranch, 2)
719 DEFINE_CLASS_ID(MachSpillCopy, Mach, 2)
720 DEFINE_CLASS_ID(MachTemp, Mach, 3)
721 DEFINE_CLASS_ID(MachConstantBase, Mach, 4)
722 DEFINE_CLASS_ID(MachConstant, Mach, 5)
723 DEFINE_CLASS_ID(MachJump, MachConstant, 0)
724 DEFINE_CLASS_ID(MachMerge, Mach, 6)
725 DEFINE_CLASS_ID(MachMemBar, Mach, 7)
726 DEFINE_CLASS_ID(MachProlog, Mach, 8)
727 DEFINE_CLASS_ID(MachVEP, Mach, 9)
728
729 DEFINE_CLASS_ID(Type, Node, 2)
730 DEFINE_CLASS_ID(Phi, Type, 0)
731 DEFINE_CLASS_ID(ConstraintCast, Type, 1)
732 DEFINE_CLASS_ID(CastII, ConstraintCast, 0)
733 DEFINE_CLASS_ID(CheckCastPP, ConstraintCast, 1)
734 DEFINE_CLASS_ID(CastLL, ConstraintCast, 2)
735 DEFINE_CLASS_ID(CastFF, ConstraintCast, 3)
736 DEFINE_CLASS_ID(CastDD, ConstraintCast, 4)
737 DEFINE_CLASS_ID(CastVV, ConstraintCast, 5)
738 DEFINE_CLASS_ID(CastPP, ConstraintCast, 6)
739 DEFINE_CLASS_ID(CastHH, ConstraintCast, 7)
740 DEFINE_CLASS_ID(CMove, Type, 3)
741 DEFINE_CLASS_ID(SafePointScalarObject, Type, 4)
742 DEFINE_CLASS_ID(DecodeNarrowPtr, Type, 5)
743 DEFINE_CLASS_ID(DecodeN, DecodeNarrowPtr, 0)
744 DEFINE_CLASS_ID(DecodeNKlass, DecodeNarrowPtr, 1)
745 DEFINE_CLASS_ID(EncodeNarrowPtr, Type, 6)
746 DEFINE_CLASS_ID(EncodeP, EncodeNarrowPtr, 0)
747 DEFINE_CLASS_ID(EncodePKlass, EncodeNarrowPtr, 1)
748 DEFINE_CLASS_ID(Vector, Type, 7)
749 DEFINE_CLASS_ID(VectorMaskCmp, Vector, 0)
750 DEFINE_CLASS_ID(VectorUnbox, Vector, 1)
751 DEFINE_CLASS_ID(VectorReinterpret, Vector, 2)
752 DEFINE_CLASS_ID(ShiftV, Vector, 3)
753 DEFINE_CLASS_ID(CompressV, Vector, 4)
754 DEFINE_CLASS_ID(ExpandV, Vector, 5)
755 DEFINE_CLASS_ID(CompressM, Vector, 6)
756 DEFINE_CLASS_ID(Reduction, Vector, 7)
757 DEFINE_CLASS_ID(NegV, Vector, 8)
758 DEFINE_CLASS_ID(SaturatingVector, Vector, 9)
759 DEFINE_CLASS_ID(MulVL, Vector, 10)
760 DEFINE_CLASS_ID(InlineType, Type, 8)
761 DEFINE_CLASS_ID(Con, Type, 9)
762 DEFINE_CLASS_ID(ConI, Con, 0)
763 DEFINE_CLASS_ID(SafePointScalarMerge, Type, 10)
764 DEFINE_CLASS_ID(Convert, Type, 11)
765
766
767 DEFINE_CLASS_ID(Proj, Node, 3)
768 DEFINE_CLASS_ID(CatchProj, Proj, 0)
769 DEFINE_CLASS_ID(JumpProj, Proj, 1)
770 DEFINE_CLASS_ID(IfProj, Proj, 2)
771 DEFINE_CLASS_ID(IfTrue, IfProj, 0)
772 DEFINE_CLASS_ID(IfFalse, IfProj, 1)
773 DEFINE_CLASS_ID(Parm, Proj, 4)
774 DEFINE_CLASS_ID(MachProj, Proj, 5)
775
776 DEFINE_CLASS_ID(Mem, Node, 4)
777 DEFINE_CLASS_ID(Load, Mem, 0)
778 DEFINE_CLASS_ID(LoadVector, Load, 0)
779 DEFINE_CLASS_ID(LoadVectorGather, LoadVector, 0)
780 DEFINE_CLASS_ID(LoadVectorGatherMasked, LoadVector, 1)
781 DEFINE_CLASS_ID(LoadVectorMasked, LoadVector, 2)
782 DEFINE_CLASS_ID(Store, Mem, 1)
783 DEFINE_CLASS_ID(StoreVector, Store, 0)
784 DEFINE_CLASS_ID(StoreVectorScatter, StoreVector, 0)
785 DEFINE_CLASS_ID(StoreVectorScatterMasked, StoreVector, 1)
786 DEFINE_CLASS_ID(StoreVectorMasked, StoreVector, 2)
787 DEFINE_CLASS_ID(LoadStore, Mem, 2)
788 DEFINE_CLASS_ID(LoadStoreConditional, LoadStore, 0)
789 DEFINE_CLASS_ID(CompareAndSwap, LoadStoreConditional, 0)
790 DEFINE_CLASS_ID(CompareAndExchangeNode, LoadStore, 1)
791
792 DEFINE_CLASS_ID(Region, Node, 5)
793 DEFINE_CLASS_ID(Loop, Region, 0)
794 DEFINE_CLASS_ID(Root, Loop, 0)
795 DEFINE_CLASS_ID(BaseCountedLoop, Loop, 1)
796 DEFINE_CLASS_ID(CountedLoop, BaseCountedLoop, 0)
797 DEFINE_CLASS_ID(LongCountedLoop, BaseCountedLoop, 1)
798 DEFINE_CLASS_ID(OuterStripMinedLoop, Loop, 2)
799
800 DEFINE_CLASS_ID(Sub, Node, 6)
801 DEFINE_CLASS_ID(Cmp, Sub, 0)
802 DEFINE_CLASS_ID(FastLock, Cmp, 0)
803 DEFINE_CLASS_ID(FastUnlock, Cmp, 1)
804 DEFINE_CLASS_ID(SubTypeCheck, Cmp, 2)
805 DEFINE_CLASS_ID(FlatArrayCheck, Cmp, 3)
806
807 DEFINE_CLASS_ID(MergeMem, Node, 7)
808 DEFINE_CLASS_ID(Bool, Node, 8)
809 DEFINE_CLASS_ID(AddP, Node, 9)
810 DEFINE_CLASS_ID(BoxLock, Node, 10)
811 DEFINE_CLASS_ID(Add, Node, 11)
812 DEFINE_CLASS_ID(Mul, Node, 12)
813 DEFINE_CLASS_ID(ClearArray, Node, 14)
814 DEFINE_CLASS_ID(Halt, Node, 15)
815 DEFINE_CLASS_ID(Opaque1, Node, 16)
816 DEFINE_CLASS_ID(OpaqueLoopInit, Opaque1, 0)
817 DEFINE_CLASS_ID(OpaqueLoopStride, Opaque1, 1)
818 DEFINE_CLASS_ID(OpaqueMultiversioning, Opaque1, 2)
819 DEFINE_CLASS_ID(OpaqueNotNull, Node, 17)
820 DEFINE_CLASS_ID(OpaqueInitializedAssertionPredicate, Node, 18)
821 DEFINE_CLASS_ID(OpaqueTemplateAssertionPredicate, Node, 19)
822 DEFINE_CLASS_ID(Move, Node, 20)
823 DEFINE_CLASS_ID(LShift, Node, 21)
824 DEFINE_CLASS_ID(Neg, Node, 22)
825
894 #define DEFINE_CLASS_QUERY(type) \
895 bool is_##type() const { \
896 return ((_class_id & ClassMask_##type) == Class_##type); \
897 } \
898 type##Node *as_##type() const { \
899 assert(is_##type(), "invalid node class: %s", Name()); \
900 return (type##Node*)this; \
901 } \
902 type##Node* isa_##type() const { \
903 return (is_##type()) ? as_##type() : nullptr; \
904 }
905
906 DEFINE_CLASS_QUERY(AbstractLock)
907 DEFINE_CLASS_QUERY(Add)
908 DEFINE_CLASS_QUERY(AddP)
909 DEFINE_CLASS_QUERY(Allocate)
910 DEFINE_CLASS_QUERY(AllocateArray)
911 DEFINE_CLASS_QUERY(ArrayCopy)
912 DEFINE_CLASS_QUERY(BaseCountedLoop)
913 DEFINE_CLASS_QUERY(BaseCountedLoopEnd)
914 DEFINE_CLASS_QUERY(Blackhole)
915 DEFINE_CLASS_QUERY(Bool)
916 DEFINE_CLASS_QUERY(BoxLock)
917 DEFINE_CLASS_QUERY(Call)
918 DEFINE_CLASS_QUERY(CallDynamicJava)
919 DEFINE_CLASS_QUERY(CallJava)
920 DEFINE_CLASS_QUERY(CallLeaf)
921 DEFINE_CLASS_QUERY(CallLeafNoFP)
922 DEFINE_CLASS_QUERY(CallLeafPure)
923 DEFINE_CLASS_QUERY(CallRuntime)
924 DEFINE_CLASS_QUERY(CallStaticJava)
925 DEFINE_CLASS_QUERY(Catch)
926 DEFINE_CLASS_QUERY(CatchProj)
927 DEFINE_CLASS_QUERY(CheckCastPP)
928 DEFINE_CLASS_QUERY(CastII)
929 DEFINE_CLASS_QUERY(CastLL)
930 DEFINE_CLASS_QUERY(CastFF)
931 DEFINE_CLASS_QUERY(ConI)
932 DEFINE_CLASS_QUERY(CastPP)
933 DEFINE_CLASS_QUERY(ConstraintCast)
934 DEFINE_CLASS_QUERY(ClearArray)
935 DEFINE_CLASS_QUERY(CMove)
936 DEFINE_CLASS_QUERY(Cmp)
937 DEFINE_CLASS_QUERY(Convert)
938 DEFINE_CLASS_QUERY(CountedLoop)
939 DEFINE_CLASS_QUERY(CountedLoopEnd)
940 DEFINE_CLASS_QUERY(DecodeNarrowPtr)
941 DEFINE_CLASS_QUERY(DecodeN)
942 DEFINE_CLASS_QUERY(DecodeNKlass)
943 DEFINE_CLASS_QUERY(EncodeNarrowPtr)
944 DEFINE_CLASS_QUERY(EncodeP)
945 DEFINE_CLASS_QUERY(EncodePKlass)
946 DEFINE_CLASS_QUERY(FastLock)
947 DEFINE_CLASS_QUERY(FastUnlock)
948 DEFINE_CLASS_QUERY(FlatArrayCheck)
949 DEFINE_CLASS_QUERY(Halt)
950 DEFINE_CLASS_QUERY(If)
951 DEFINE_CLASS_QUERY(RangeCheck)
952 DEFINE_CLASS_QUERY(IfProj)
953 DEFINE_CLASS_QUERY(IfFalse)
954 DEFINE_CLASS_QUERY(IfTrue)
955 DEFINE_CLASS_QUERY(Initialize)
956 DEFINE_CLASS_QUERY(Jump)
957 DEFINE_CLASS_QUERY(JumpProj)
958 DEFINE_CLASS_QUERY(LongCountedLoop)
959 DEFINE_CLASS_QUERY(LongCountedLoopEnd)
960 DEFINE_CLASS_QUERY(Load)
961 DEFINE_CLASS_QUERY(LoadStore)
962 DEFINE_CLASS_QUERY(LoadStoreConditional)
963 DEFINE_CLASS_QUERY(Lock)
964 DEFINE_CLASS_QUERY(Loop)
965 DEFINE_CLASS_QUERY(LShift)
966 DEFINE_CLASS_QUERY(Mach)
967 DEFINE_CLASS_QUERY(MachBranch)
968 DEFINE_CLASS_QUERY(MachCall)
969 DEFINE_CLASS_QUERY(MachCallDynamicJava)
970 DEFINE_CLASS_QUERY(MachCallJava)
971 DEFINE_CLASS_QUERY(MachCallLeaf)
972 DEFINE_CLASS_QUERY(MachCallRuntime)
973 DEFINE_CLASS_QUERY(MachCallStaticJava)
974 DEFINE_CLASS_QUERY(MachConstantBase)
975 DEFINE_CLASS_QUERY(MachConstant)
976 DEFINE_CLASS_QUERY(MachGoto)
977 DEFINE_CLASS_QUERY(MachIf)
978 DEFINE_CLASS_QUERY(MachJump)
979 DEFINE_CLASS_QUERY(MachNullCheck)
980 DEFINE_CLASS_QUERY(MachProj)
981 DEFINE_CLASS_QUERY(MachProlog)
982 DEFINE_CLASS_QUERY(MachReturn)
983 DEFINE_CLASS_QUERY(MachSafePoint)
984 DEFINE_CLASS_QUERY(MachSpillCopy)
985 DEFINE_CLASS_QUERY(MachTemp)
986 DEFINE_CLASS_QUERY(MachMemBar)
987 DEFINE_CLASS_QUERY(MachMerge)
988 DEFINE_CLASS_QUERY(MachVEP)
989 DEFINE_CLASS_QUERY(Mem)
990 DEFINE_CLASS_QUERY(MemBar)
991 DEFINE_CLASS_QUERY(MemBarStoreStore)
992 DEFINE_CLASS_QUERY(MergeMem)
993 DEFINE_CLASS_QUERY(Move)
994 DEFINE_CLASS_QUERY(Mul)
995 DEFINE_CLASS_QUERY(Multi)
996 DEFINE_CLASS_QUERY(MultiBranch)
997 DEFINE_CLASS_QUERY(MulVL)
998 DEFINE_CLASS_QUERY(Neg)
999 DEFINE_CLASS_QUERY(NegV)
1000 DEFINE_CLASS_QUERY(NeverBranch)
1001 DEFINE_CLASS_QUERY(Opaque1)
1002 DEFINE_CLASS_QUERY(OpaqueNotNull)
1003 DEFINE_CLASS_QUERY(OpaqueInitializedAssertionPredicate)
1004 DEFINE_CLASS_QUERY(OpaqueTemplateAssertionPredicate)
1005 DEFINE_CLASS_QUERY(OpaqueLoopInit)
1006 DEFINE_CLASS_QUERY(OpaqueLoopStride)
1007 DEFINE_CLASS_QUERY(OpaqueMultiversioning)
1008 DEFINE_CLASS_QUERY(OuterStripMinedLoop)
1009 DEFINE_CLASS_QUERY(OuterStripMinedLoopEnd)
1010 DEFINE_CLASS_QUERY(Parm)
1011 DEFINE_CLASS_QUERY(ParsePredicate)
1012 DEFINE_CLASS_QUERY(PCTable)
1013 DEFINE_CLASS_QUERY(Phi)
1014 DEFINE_CLASS_QUERY(Proj)
1015 DEFINE_CLASS_QUERY(Reduction)
1016 DEFINE_CLASS_QUERY(Region)
1017 DEFINE_CLASS_QUERY(Root)
1018 DEFINE_CLASS_QUERY(SafePoint)
1019 DEFINE_CLASS_QUERY(SafePointScalarObject)
1020 DEFINE_CLASS_QUERY(SafePointScalarMerge)
1021 DEFINE_CLASS_QUERY(Start)
1022 DEFINE_CLASS_QUERY(Store)
1023 DEFINE_CLASS_QUERY(Sub)
1024 DEFINE_CLASS_QUERY(SubTypeCheck)
1025 DEFINE_CLASS_QUERY(Type)
1026 DEFINE_CLASS_QUERY(InlineType)
1027 DEFINE_CLASS_QUERY(Vector)
1028 DEFINE_CLASS_QUERY(VectorMaskCmp)
1029 DEFINE_CLASS_QUERY(VectorUnbox)
1030 DEFINE_CLASS_QUERY(VectorReinterpret)
1031 DEFINE_CLASS_QUERY(CompressV)
1032 DEFINE_CLASS_QUERY(ExpandV)
1033 DEFINE_CLASS_QUERY(CompressM)
1034 DEFINE_CLASS_QUERY(LoadVector)
1035 DEFINE_CLASS_QUERY(LoadVectorGather)
1036 DEFINE_CLASS_QUERY(LoadVectorMasked)
1037 DEFINE_CLASS_QUERY(LoadVectorGatherMasked)
1038 DEFINE_CLASS_QUERY(StoreVector)
1039 DEFINE_CLASS_QUERY(StoreVectorScatter)
1040 DEFINE_CLASS_QUERY(StoreVectorMasked)
1041 DEFINE_CLASS_QUERY(StoreVectorScatterMasked)
1042 DEFINE_CLASS_QUERY(SaturatingVector)
1043 DEFINE_CLASS_QUERY(ShiftV)
1044 DEFINE_CLASS_QUERY(Unlock)
1045
1046 #undef DEFINE_CLASS_QUERY
|