113 class Node_List;
114 class Node_Stack;
115 class NullCheckNode;
116 class OopMap;
117 class ParmNode;
118 class PCTableNode;
119 class PhaseCCP;
120 class PhaseGVN;
121 class PhaseIterGVN;
122 class PhaseRegAlloc;
123 class PhaseTransform;
124 class PhaseValues;
125 class PhiNode;
126 class Pipeline;
127 class ProjNode;
128 class RegMask;
129 class RegionNode;
130 class RootNode;
131 class SafePointNode;
132 class SafePointScalarObjectNode;
133 class StartNode;
134 class State;
135 class StoreNode;
136 class SubNode;
137 class Type;
138 class TypeNode;
139 class UnlockNode;
140 class VectorNode;
141 class LoadVectorNode;
142 class StoreVectorNode;
143 class VectorSet;
144 typedef void (*NFunc)(Node&,void*);
145 extern "C" {
146 typedef int (*C_sort_func_t)(const void *, const void *);
147 }
148
149 // The type of all node counts and indexes.
150 // It must hold at least 16 bits, but must also be fast to load and store.
151 // This type, if less than 32 bits, could limit the number of possible nodes.
152 // (To make this type platform-specific, move to globalDefinitions_xxx.hpp.)
604 DEFINE_CLASS_ID(MachGoto, MachBranch, 1)
605 DEFINE_CLASS_ID(MachNullCheck, MachBranch, 2)
606 DEFINE_CLASS_ID(MachSpillCopy, Mach, 2)
607 DEFINE_CLASS_ID(MachTemp, Mach, 3)
608 DEFINE_CLASS_ID(MachConstantBase, Mach, 4)
609 DEFINE_CLASS_ID(MachConstant, Mach, 5)
610 DEFINE_CLASS_ID(MachMerge, Mach, 6)
611
612 DEFINE_CLASS_ID(Type, Node, 2)
613 DEFINE_CLASS_ID(Phi, Type, 0)
614 DEFINE_CLASS_ID(ConstraintCast, Type, 1)
615 DEFINE_CLASS_ID(CheckCastPP, Type, 2)
616 DEFINE_CLASS_ID(CMove, Type, 3)
617 DEFINE_CLASS_ID(SafePointScalarObject, Type, 4)
618 DEFINE_CLASS_ID(DecodeNarrowPtr, Type, 5)
619 DEFINE_CLASS_ID(DecodeN, DecodeNarrowPtr, 0)
620 DEFINE_CLASS_ID(DecodeNKlass, DecodeNarrowPtr, 1)
621 DEFINE_CLASS_ID(EncodeNarrowPtr, Type, 6)
622 DEFINE_CLASS_ID(EncodeP, EncodeNarrowPtr, 0)
623 DEFINE_CLASS_ID(EncodePKlass, EncodeNarrowPtr, 1)
624
625 DEFINE_CLASS_ID(Proj, Node, 3)
626 DEFINE_CLASS_ID(CatchProj, Proj, 0)
627 DEFINE_CLASS_ID(JumpProj, Proj, 1)
628 DEFINE_CLASS_ID(IfTrue, Proj, 2)
629 DEFINE_CLASS_ID(IfFalse, Proj, 3)
630 DEFINE_CLASS_ID(Parm, Proj, 4)
631 DEFINE_CLASS_ID(MachProj, Proj, 5)
632
633 DEFINE_CLASS_ID(Mem, Node, 4)
634 DEFINE_CLASS_ID(Load, Mem, 0)
635 DEFINE_CLASS_ID(LoadVector, Load, 0)
636 DEFINE_CLASS_ID(Store, Mem, 1)
637 DEFINE_CLASS_ID(StoreVector, Store, 0)
638 DEFINE_CLASS_ID(LoadStore, Mem, 2)
639
640 DEFINE_CLASS_ID(Region, Node, 5)
641 DEFINE_CLASS_ID(Loop, Region, 0)
642 DEFINE_CLASS_ID(Root, Loop, 0)
643 DEFINE_CLASS_ID(CountedLoop, Loop, 1)
783 DEFINE_CLASS_QUERY(MachReturn)
784 DEFINE_CLASS_QUERY(MachSafePoint)
785 DEFINE_CLASS_QUERY(MachSpillCopy)
786 DEFINE_CLASS_QUERY(MachTemp)
787 DEFINE_CLASS_QUERY(MachMerge)
788 DEFINE_CLASS_QUERY(Mem)
789 DEFINE_CLASS_QUERY(MemBar)
790 DEFINE_CLASS_QUERY(MemBarStoreStore)
791 DEFINE_CLASS_QUERY(MergeMem)
792 DEFINE_CLASS_QUERY(Mul)
793 DEFINE_CLASS_QUERY(Multi)
794 DEFINE_CLASS_QUERY(MultiBranch)
795 DEFINE_CLASS_QUERY(Parm)
796 DEFINE_CLASS_QUERY(PCTable)
797 DEFINE_CLASS_QUERY(Phi)
798 DEFINE_CLASS_QUERY(Proj)
799 DEFINE_CLASS_QUERY(Region)
800 DEFINE_CLASS_QUERY(Root)
801 DEFINE_CLASS_QUERY(SafePoint)
802 DEFINE_CLASS_QUERY(SafePointScalarObject)
803 DEFINE_CLASS_QUERY(Start)
804 DEFINE_CLASS_QUERY(Store)
805 DEFINE_CLASS_QUERY(Sub)
806 DEFINE_CLASS_QUERY(Type)
807 DEFINE_CLASS_QUERY(Vector)
808 DEFINE_CLASS_QUERY(LoadVector)
809 DEFINE_CLASS_QUERY(StoreVector)
810 DEFINE_CLASS_QUERY(Unlock)
811
812 #undef DEFINE_CLASS_QUERY
813
814 // duplicate of is_MachSpillCopy()
815 bool is_SpillCopy () const {
816 return ((_class_id & ClassMask_MachSpillCopy) == Class_MachSpillCopy);
817 }
818
819 bool is_Con () const { return (_flags & Flag_is_Con) != 0; }
820 // The data node which is safe to leave in dead loop during IGVN optimization.
821 bool is_dead_loop_safe() const {
822 return is_Phi() || (is_Proj() && in(0) == NULL) ||
|
113 class Node_List;
114 class Node_Stack;
115 class NullCheckNode;
116 class OopMap;
117 class ParmNode;
118 class PCTableNode;
119 class PhaseCCP;
120 class PhaseGVN;
121 class PhaseIterGVN;
122 class PhaseRegAlloc;
123 class PhaseTransform;
124 class PhaseValues;
125 class PhiNode;
126 class Pipeline;
127 class ProjNode;
128 class RegMask;
129 class RegionNode;
130 class RootNode;
131 class SafePointNode;
132 class SafePointScalarObjectNode;
133 class ShenandoahBarrierNode;
134 class StartNode;
135 class State;
136 class StoreNode;
137 class SubNode;
138 class Type;
139 class TypeNode;
140 class UnlockNode;
141 class VectorNode;
142 class LoadVectorNode;
143 class StoreVectorNode;
144 class VectorSet;
145 typedef void (*NFunc)(Node&,void*);
146 extern "C" {
147 typedef int (*C_sort_func_t)(const void *, const void *);
148 }
149
150 // The type of all node counts and indexes.
151 // It must hold at least 16 bits, but must also be fast to load and store.
152 // This type, if less than 32 bits, could limit the number of possible nodes.
153 // (To make this type platform-specific, move to globalDefinitions_xxx.hpp.)
605 DEFINE_CLASS_ID(MachGoto, MachBranch, 1)
606 DEFINE_CLASS_ID(MachNullCheck, MachBranch, 2)
607 DEFINE_CLASS_ID(MachSpillCopy, Mach, 2)
608 DEFINE_CLASS_ID(MachTemp, Mach, 3)
609 DEFINE_CLASS_ID(MachConstantBase, Mach, 4)
610 DEFINE_CLASS_ID(MachConstant, Mach, 5)
611 DEFINE_CLASS_ID(MachMerge, Mach, 6)
612
613 DEFINE_CLASS_ID(Type, Node, 2)
614 DEFINE_CLASS_ID(Phi, Type, 0)
615 DEFINE_CLASS_ID(ConstraintCast, Type, 1)
616 DEFINE_CLASS_ID(CheckCastPP, Type, 2)
617 DEFINE_CLASS_ID(CMove, Type, 3)
618 DEFINE_CLASS_ID(SafePointScalarObject, Type, 4)
619 DEFINE_CLASS_ID(DecodeNarrowPtr, Type, 5)
620 DEFINE_CLASS_ID(DecodeN, DecodeNarrowPtr, 0)
621 DEFINE_CLASS_ID(DecodeNKlass, DecodeNarrowPtr, 1)
622 DEFINE_CLASS_ID(EncodeNarrowPtr, Type, 6)
623 DEFINE_CLASS_ID(EncodeP, EncodeNarrowPtr, 0)
624 DEFINE_CLASS_ID(EncodePKlass, EncodeNarrowPtr, 1)
625 DEFINE_CLASS_ID(ShenandoahBarrier, Type, 7)
626
627 DEFINE_CLASS_ID(Proj, Node, 3)
628 DEFINE_CLASS_ID(CatchProj, Proj, 0)
629 DEFINE_CLASS_ID(JumpProj, Proj, 1)
630 DEFINE_CLASS_ID(IfTrue, Proj, 2)
631 DEFINE_CLASS_ID(IfFalse, Proj, 3)
632 DEFINE_CLASS_ID(Parm, Proj, 4)
633 DEFINE_CLASS_ID(MachProj, Proj, 5)
634
635 DEFINE_CLASS_ID(Mem, Node, 4)
636 DEFINE_CLASS_ID(Load, Mem, 0)
637 DEFINE_CLASS_ID(LoadVector, Load, 0)
638 DEFINE_CLASS_ID(Store, Mem, 1)
639 DEFINE_CLASS_ID(StoreVector, Store, 0)
640 DEFINE_CLASS_ID(LoadStore, Mem, 2)
641
642 DEFINE_CLASS_ID(Region, Node, 5)
643 DEFINE_CLASS_ID(Loop, Region, 0)
644 DEFINE_CLASS_ID(Root, Loop, 0)
645 DEFINE_CLASS_ID(CountedLoop, Loop, 1)
785 DEFINE_CLASS_QUERY(MachReturn)
786 DEFINE_CLASS_QUERY(MachSafePoint)
787 DEFINE_CLASS_QUERY(MachSpillCopy)
788 DEFINE_CLASS_QUERY(MachTemp)
789 DEFINE_CLASS_QUERY(MachMerge)
790 DEFINE_CLASS_QUERY(Mem)
791 DEFINE_CLASS_QUERY(MemBar)
792 DEFINE_CLASS_QUERY(MemBarStoreStore)
793 DEFINE_CLASS_QUERY(MergeMem)
794 DEFINE_CLASS_QUERY(Mul)
795 DEFINE_CLASS_QUERY(Multi)
796 DEFINE_CLASS_QUERY(MultiBranch)
797 DEFINE_CLASS_QUERY(Parm)
798 DEFINE_CLASS_QUERY(PCTable)
799 DEFINE_CLASS_QUERY(Phi)
800 DEFINE_CLASS_QUERY(Proj)
801 DEFINE_CLASS_QUERY(Region)
802 DEFINE_CLASS_QUERY(Root)
803 DEFINE_CLASS_QUERY(SafePoint)
804 DEFINE_CLASS_QUERY(SafePointScalarObject)
805 DEFINE_CLASS_QUERY(ShenandoahBarrier)
806 DEFINE_CLASS_QUERY(Start)
807 DEFINE_CLASS_QUERY(Store)
808 DEFINE_CLASS_QUERY(Sub)
809 DEFINE_CLASS_QUERY(Type)
810 DEFINE_CLASS_QUERY(Vector)
811 DEFINE_CLASS_QUERY(LoadVector)
812 DEFINE_CLASS_QUERY(StoreVector)
813 DEFINE_CLASS_QUERY(Unlock)
814
815 #undef DEFINE_CLASS_QUERY
816
817 // duplicate of is_MachSpillCopy()
818 bool is_SpillCopy () const {
819 return ((_class_id & ClassMask_MachSpillCopy) == Class_MachSpillCopy);
820 }
821
822 bool is_Con () const { return (_flags & Flag_is_Con) != 0; }
823 // The data node which is safe to leave in dead loop during IGVN optimization.
824 bool is_dead_loop_safe() const {
825 return is_Phi() || (is_Proj() && in(0) == NULL) ||
|