126 class Node_Stack;
127 class NullCheckNode;
128 class OopMap;
129 class ParmNode;
130 class PCTableNode;
131 class PhaseCCP;
132 class PhaseGVN;
133 class PhaseIterGVN;
134 class PhaseRegAlloc;
135 class PhaseTransform;
136 class PhaseValues;
137 class PhiNode;
138 class Pipeline;
139 class ProjNode;
140 class RangeCheckNode;
141 class RegMask;
142 class RegionNode;
143 class RootNode;
144 class SafePointNode;
145 class SafePointScalarObjectNode;
146 class StartNode;
147 class State;
148 class StoreNode;
149 class SubNode;
150 class Type;
151 class TypeNode;
152 class UnlockNode;
153 class VectorNode;
154 class LoadVectorNode;
155 class StoreVectorNode;
156 class VectorSet;
157 typedef void (*NFunc)(Node&,void*);
158 extern "C" {
159 typedef int (*C_sort_func_t)(const void *, const void *);
160 }
161
162 // The type of all node counts and indexes.
163 // It must hold at least 16 bits, but must also be fast to load and store.
164 // This type, if less than 32 bits, could limit the number of possible nodes.
165 // (To make this type platform-specific, move to globalDefinitions_xxx.hpp.)
661 DEFINE_CLASS_ID(MachConstantBase, Mach, 4)
662 DEFINE_CLASS_ID(MachConstant, Mach, 5)
663 DEFINE_CLASS_ID(MachJump, MachConstant, 0)
664 DEFINE_CLASS_ID(MachMerge, Mach, 6)
665 DEFINE_CLASS_ID(MachMemBar, Mach, 7)
666
667 DEFINE_CLASS_ID(Type, Node, 2)
668 DEFINE_CLASS_ID(Phi, Type, 0)
669 DEFINE_CLASS_ID(ConstraintCast, Type, 1)
670 DEFINE_CLASS_ID(CastII, ConstraintCast, 0)
671 DEFINE_CLASS_ID(CastLL, ConstraintCast, 1)
672 DEFINE_CLASS_ID(CheckCastPP, ConstraintCast, 2)
673 DEFINE_CLASS_ID(CMove, Type, 3)
674 DEFINE_CLASS_ID(SafePointScalarObject, Type, 4)
675 DEFINE_CLASS_ID(DecodeNarrowPtr, Type, 5)
676 DEFINE_CLASS_ID(DecodeN, DecodeNarrowPtr, 0)
677 DEFINE_CLASS_ID(DecodeNKlass, DecodeNarrowPtr, 1)
678 DEFINE_CLASS_ID(EncodeNarrowPtr, Type, 6)
679 DEFINE_CLASS_ID(EncodeP, EncodeNarrowPtr, 0)
680 DEFINE_CLASS_ID(EncodePKlass, EncodeNarrowPtr, 1)
681
682 DEFINE_CLASS_ID(Proj, Node, 3)
683 DEFINE_CLASS_ID(CatchProj, Proj, 0)
684 DEFINE_CLASS_ID(JumpProj, Proj, 1)
685 DEFINE_CLASS_ID(IfProj, Proj, 2)
686 DEFINE_CLASS_ID(IfTrue, IfProj, 0)
687 DEFINE_CLASS_ID(IfFalse, IfProj, 1)
688 DEFINE_CLASS_ID(Parm, Proj, 4)
689 DEFINE_CLASS_ID(MachProj, Proj, 5)
690
691 DEFINE_CLASS_ID(Mem, Node, 4)
692 DEFINE_CLASS_ID(Load, Mem, 0)
693 DEFINE_CLASS_ID(LoadVector, Load, 0)
694 DEFINE_CLASS_ID(LoadBarrierSlowReg, Load, 1)
695 DEFINE_CLASS_ID(LoadBarrierWeakSlowReg, Load, 2)
696 DEFINE_CLASS_ID(Store, Mem, 1)
697 DEFINE_CLASS_ID(StoreVector, Store, 0)
698 DEFINE_CLASS_ID(LoadStore, Mem, 2)
699 DEFINE_CLASS_ID(LoadStoreConditional, LoadStore, 0)
700 DEFINE_CLASS_ID(CompareAndSwap, LoadStoreConditional, 0)
860 DEFINE_CLASS_QUERY(MachTemp)
861 DEFINE_CLASS_QUERY(MachMemBar)
862 DEFINE_CLASS_QUERY(MachMerge)
863 DEFINE_CLASS_QUERY(Mem)
864 DEFINE_CLASS_QUERY(MemBar)
865 DEFINE_CLASS_QUERY(MemBarStoreStore)
866 DEFINE_CLASS_QUERY(MergeMem)
867 DEFINE_CLASS_QUERY(Mul)
868 DEFINE_CLASS_QUERY(Multi)
869 DEFINE_CLASS_QUERY(MultiBranch)
870 DEFINE_CLASS_QUERY(OuterStripMinedLoop)
871 DEFINE_CLASS_QUERY(OuterStripMinedLoopEnd)
872 DEFINE_CLASS_QUERY(Parm)
873 DEFINE_CLASS_QUERY(PCTable)
874 DEFINE_CLASS_QUERY(Phi)
875 DEFINE_CLASS_QUERY(Proj)
876 DEFINE_CLASS_QUERY(Region)
877 DEFINE_CLASS_QUERY(Root)
878 DEFINE_CLASS_QUERY(SafePoint)
879 DEFINE_CLASS_QUERY(SafePointScalarObject)
880 DEFINE_CLASS_QUERY(Start)
881 DEFINE_CLASS_QUERY(Store)
882 DEFINE_CLASS_QUERY(Sub)
883 DEFINE_CLASS_QUERY(Type)
884 DEFINE_CLASS_QUERY(Vector)
885 DEFINE_CLASS_QUERY(LoadVector)
886 DEFINE_CLASS_QUERY(StoreVector)
887 DEFINE_CLASS_QUERY(Unlock)
888
889 #undef DEFINE_CLASS_QUERY
890
891 // duplicate of is_MachSpillCopy()
892 bool is_SpillCopy () const {
893 return ((_class_id & ClassMask_MachSpillCopy) == Class_MachSpillCopy);
894 }
895
896 bool is_Con () const { return (_flags & Flag_is_Con) != 0; }
897 // The data node which is safe to leave in dead loop during IGVN optimization.
898 bool is_dead_loop_safe() const {
899 return is_Phi() || (is_Proj() && in(0) == NULL) ||
|
126 class Node_Stack;
127 class NullCheckNode;
128 class OopMap;
129 class ParmNode;
130 class PCTableNode;
131 class PhaseCCP;
132 class PhaseGVN;
133 class PhaseIterGVN;
134 class PhaseRegAlloc;
135 class PhaseTransform;
136 class PhaseValues;
137 class PhiNode;
138 class Pipeline;
139 class ProjNode;
140 class RangeCheckNode;
141 class RegMask;
142 class RegionNode;
143 class RootNode;
144 class SafePointNode;
145 class SafePointScalarObjectNode;
146 class ShenandoahBarrierNode;
147 class StartNode;
148 class State;
149 class StoreNode;
150 class SubNode;
151 class Type;
152 class TypeNode;
153 class UnlockNode;
154 class VectorNode;
155 class LoadVectorNode;
156 class StoreVectorNode;
157 class VectorSet;
158 typedef void (*NFunc)(Node&,void*);
159 extern "C" {
160 typedef int (*C_sort_func_t)(const void *, const void *);
161 }
162
163 // The type of all node counts and indexes.
164 // It must hold at least 16 bits, but must also be fast to load and store.
165 // This type, if less than 32 bits, could limit the number of possible nodes.
166 // (To make this type platform-specific, move to globalDefinitions_xxx.hpp.)
662 DEFINE_CLASS_ID(MachConstantBase, Mach, 4)
663 DEFINE_CLASS_ID(MachConstant, Mach, 5)
664 DEFINE_CLASS_ID(MachJump, MachConstant, 0)
665 DEFINE_CLASS_ID(MachMerge, Mach, 6)
666 DEFINE_CLASS_ID(MachMemBar, Mach, 7)
667
668 DEFINE_CLASS_ID(Type, Node, 2)
669 DEFINE_CLASS_ID(Phi, Type, 0)
670 DEFINE_CLASS_ID(ConstraintCast, Type, 1)
671 DEFINE_CLASS_ID(CastII, ConstraintCast, 0)
672 DEFINE_CLASS_ID(CastLL, ConstraintCast, 1)
673 DEFINE_CLASS_ID(CheckCastPP, ConstraintCast, 2)
674 DEFINE_CLASS_ID(CMove, Type, 3)
675 DEFINE_CLASS_ID(SafePointScalarObject, Type, 4)
676 DEFINE_CLASS_ID(DecodeNarrowPtr, Type, 5)
677 DEFINE_CLASS_ID(DecodeN, DecodeNarrowPtr, 0)
678 DEFINE_CLASS_ID(DecodeNKlass, DecodeNarrowPtr, 1)
679 DEFINE_CLASS_ID(EncodeNarrowPtr, Type, 6)
680 DEFINE_CLASS_ID(EncodeP, EncodeNarrowPtr, 0)
681 DEFINE_CLASS_ID(EncodePKlass, EncodeNarrowPtr, 1)
682 DEFINE_CLASS_ID(ShenandoahBarrier, Type, 7)
683
684 DEFINE_CLASS_ID(Proj, Node, 3)
685 DEFINE_CLASS_ID(CatchProj, Proj, 0)
686 DEFINE_CLASS_ID(JumpProj, Proj, 1)
687 DEFINE_CLASS_ID(IfProj, Proj, 2)
688 DEFINE_CLASS_ID(IfTrue, IfProj, 0)
689 DEFINE_CLASS_ID(IfFalse, IfProj, 1)
690 DEFINE_CLASS_ID(Parm, Proj, 4)
691 DEFINE_CLASS_ID(MachProj, Proj, 5)
692
693 DEFINE_CLASS_ID(Mem, Node, 4)
694 DEFINE_CLASS_ID(Load, Mem, 0)
695 DEFINE_CLASS_ID(LoadVector, Load, 0)
696 DEFINE_CLASS_ID(LoadBarrierSlowReg, Load, 1)
697 DEFINE_CLASS_ID(LoadBarrierWeakSlowReg, Load, 2)
698 DEFINE_CLASS_ID(Store, Mem, 1)
699 DEFINE_CLASS_ID(StoreVector, Store, 0)
700 DEFINE_CLASS_ID(LoadStore, Mem, 2)
701 DEFINE_CLASS_ID(LoadStoreConditional, LoadStore, 0)
702 DEFINE_CLASS_ID(CompareAndSwap, LoadStoreConditional, 0)
862 DEFINE_CLASS_QUERY(MachTemp)
863 DEFINE_CLASS_QUERY(MachMemBar)
864 DEFINE_CLASS_QUERY(MachMerge)
865 DEFINE_CLASS_QUERY(Mem)
866 DEFINE_CLASS_QUERY(MemBar)
867 DEFINE_CLASS_QUERY(MemBarStoreStore)
868 DEFINE_CLASS_QUERY(MergeMem)
869 DEFINE_CLASS_QUERY(Mul)
870 DEFINE_CLASS_QUERY(Multi)
871 DEFINE_CLASS_QUERY(MultiBranch)
872 DEFINE_CLASS_QUERY(OuterStripMinedLoop)
873 DEFINE_CLASS_QUERY(OuterStripMinedLoopEnd)
874 DEFINE_CLASS_QUERY(Parm)
875 DEFINE_CLASS_QUERY(PCTable)
876 DEFINE_CLASS_QUERY(Phi)
877 DEFINE_CLASS_QUERY(Proj)
878 DEFINE_CLASS_QUERY(Region)
879 DEFINE_CLASS_QUERY(Root)
880 DEFINE_CLASS_QUERY(SafePoint)
881 DEFINE_CLASS_QUERY(SafePointScalarObject)
882 DEFINE_CLASS_QUERY(ShenandoahBarrier)
883 DEFINE_CLASS_QUERY(Start)
884 DEFINE_CLASS_QUERY(Store)
885 DEFINE_CLASS_QUERY(Sub)
886 DEFINE_CLASS_QUERY(Type)
887 DEFINE_CLASS_QUERY(Vector)
888 DEFINE_CLASS_QUERY(LoadVector)
889 DEFINE_CLASS_QUERY(StoreVector)
890 DEFINE_CLASS_QUERY(Unlock)
891
892 #undef DEFINE_CLASS_QUERY
893
894 // duplicate of is_MachSpillCopy()
895 bool is_SpillCopy () const {
896 return ((_class_id & ClassMask_MachSpillCopy) == Class_MachSpillCopy);
897 }
898
899 bool is_Con () const { return (_flags & Flag_is_Con) != 0; }
900 // The data node which is safe to leave in dead loop during IGVN optimization.
901 bool is_dead_loop_safe() const {
902 return is_Phi() || (is_Proj() && in(0) == NULL) ||
|