< prev index next >

src/share/vm/opto/node.hpp

Print this page




 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) ||


< prev index next >