src/hotspot/share/opto/node.hpp
branchdatagramsocketimpl-branch
changeset 58678 9cf78a70fa4f
parent 55050 feba48c5dfb4
child 58679 9c3209ff7550
equal deleted inserted replaced
58677:13588c901957 58678:9cf78a70fa4f
    50 class CallLeafNode;
    50 class CallLeafNode;
    51 class CallNode;
    51 class CallNode;
    52 class CallRuntimeNode;
    52 class CallRuntimeNode;
    53 class CallStaticJavaNode;
    53 class CallStaticJavaNode;
    54 class CastIINode;
    54 class CastIINode;
       
    55 class CastLLNode;
    55 class CatchNode;
    56 class CatchNode;
    56 class CatchProjNode;
    57 class CatchProjNode;
    57 class CheckCastPPNode;
    58 class CheckCastPPNode;
    58 class ClearArrayNode;
    59 class ClearArrayNode;
    59 class CmpNode;
    60 class CmpNode;
    70 class EncodeNarrowPtrNode;
    71 class EncodeNarrowPtrNode;
    71 class EncodePNode;
    72 class EncodePNode;
    72 class EncodePKlassNode;
    73 class EncodePKlassNode;
    73 class FastLockNode;
    74 class FastLockNode;
    74 class FastUnlockNode;
    75 class FastUnlockNode;
       
    76 class HaltNode;
    75 class IfNode;
    77 class IfNode;
    76 class IfProjNode;
    78 class IfProjNode;
    77 class IfFalseNode;
    79 class IfFalseNode;
    78 class IfTrueNode;
    80 class IfTrueNode;
    79 class InitializeNode;
    81 class InitializeNode;
    80 class JVMState;
    82 class JVMState;
    81 class JumpNode;
    83 class JumpNode;
    82 class JumpProjNode;
    84 class JumpProjNode;
    83 class LoadNode;
    85 class LoadNode;
    84 class LoadBarrierNode;
       
    85 class LoadBarrierSlowRegNode;
       
    86 class LoadBarrierWeakSlowRegNode;
       
    87 class LoadStoreNode;
    86 class LoadStoreNode;
       
    87 class LoadStoreConditionalNode;
    88 class LockNode;
    88 class LockNode;
    89 class LoopNode;
    89 class LoopNode;
    90 class MachBranchNode;
    90 class MachBranchNode;
    91 class MachCallDynamicJavaNode;
    91 class MachCallDynamicJavaNode;
    92 class MachCallJavaNode;
    92 class MachCallJavaNode;
   390   }
   390   }
   391 
   391 
   392 #ifdef ASSERT
   392 #ifdef ASSERT
   393   bool is_dead() const;
   393   bool is_dead() const;
   394 #define is_not_dead(n) ((n) == NULL || !VerifyIterativeGVN || !((n)->is_dead()))
   394 #define is_not_dead(n) ((n) == NULL || !VerifyIterativeGVN || !((n)->is_dead()))
       
   395   bool is_reachable_from_root() const;
   395 #endif
   396 #endif
   396   // Check whether node has become unreachable
   397   // Check whether node has become unreachable
   397   bool is_unreachable(PhaseIterGVN &igvn) const;
   398   bool is_unreachable(PhaseIterGVN &igvn) const;
   398 
   399 
   399   // Set a required input edge, also updates corresponding output edge
   400   // Set a required input edge, also updates corresponding output edge
   637         DEFINE_CLASS_ID(NeverBranch, MultiBranch, 2)
   638         DEFINE_CLASS_ID(NeverBranch, MultiBranch, 2)
   638       DEFINE_CLASS_ID(Start,       Multi, 2)
   639       DEFINE_CLASS_ID(Start,       Multi, 2)
   639       DEFINE_CLASS_ID(MemBar,      Multi, 3)
   640       DEFINE_CLASS_ID(MemBar,      Multi, 3)
   640         DEFINE_CLASS_ID(Initialize,       MemBar, 0)
   641         DEFINE_CLASS_ID(Initialize,       MemBar, 0)
   641         DEFINE_CLASS_ID(MemBarStoreStore, MemBar, 1)
   642         DEFINE_CLASS_ID(MemBarStoreStore, MemBar, 1)
   642       DEFINE_CLASS_ID(LoadBarrier, Multi, 4)
       
   643 
   643 
   644     DEFINE_CLASS_ID(Mach,  Node, 1)
   644     DEFINE_CLASS_ID(Mach,  Node, 1)
   645       DEFINE_CLASS_ID(MachReturn, Mach, 0)
   645       DEFINE_CLASS_ID(MachReturn, Mach, 0)
   646         DEFINE_CLASS_ID(MachSafePoint, MachReturn, 0)
   646         DEFINE_CLASS_ID(MachSafePoint, MachReturn, 0)
   647           DEFINE_CLASS_ID(MachCall, MachSafePoint, 0)
   647           DEFINE_CLASS_ID(MachCall, MachSafePoint, 0)
   664 
   664 
   665     DEFINE_CLASS_ID(Type,  Node, 2)
   665     DEFINE_CLASS_ID(Type,  Node, 2)
   666       DEFINE_CLASS_ID(Phi,   Type, 0)
   666       DEFINE_CLASS_ID(Phi,   Type, 0)
   667       DEFINE_CLASS_ID(ConstraintCast, Type, 1)
   667       DEFINE_CLASS_ID(ConstraintCast, Type, 1)
   668         DEFINE_CLASS_ID(CastII, ConstraintCast, 0)
   668         DEFINE_CLASS_ID(CastII, ConstraintCast, 0)
   669         DEFINE_CLASS_ID(CheckCastPP, ConstraintCast, 1)
   669         DEFINE_CLASS_ID(CastLL, ConstraintCast, 1)
       
   670         DEFINE_CLASS_ID(CheckCastPP, ConstraintCast, 2)
   670       DEFINE_CLASS_ID(CMove, Type, 3)
   671       DEFINE_CLASS_ID(CMove, Type, 3)
   671       DEFINE_CLASS_ID(SafePointScalarObject, Type, 4)
   672       DEFINE_CLASS_ID(SafePointScalarObject, Type, 4)
   672       DEFINE_CLASS_ID(DecodeNarrowPtr, Type, 5)
   673       DEFINE_CLASS_ID(DecodeNarrowPtr, Type, 5)
   673         DEFINE_CLASS_ID(DecodeN, DecodeNarrowPtr, 0)
   674         DEFINE_CLASS_ID(DecodeN, DecodeNarrowPtr, 0)
   674         DEFINE_CLASS_ID(DecodeNKlass, DecodeNarrowPtr, 1)
   675         DEFINE_CLASS_ID(DecodeNKlass, DecodeNarrowPtr, 1)
   686       DEFINE_CLASS_ID(MachProj,  Proj, 5)
   687       DEFINE_CLASS_ID(MachProj,  Proj, 5)
   687 
   688 
   688     DEFINE_CLASS_ID(Mem,   Node, 4)
   689     DEFINE_CLASS_ID(Mem,   Node, 4)
   689       DEFINE_CLASS_ID(Load,  Mem, 0)
   690       DEFINE_CLASS_ID(Load,  Mem, 0)
   690         DEFINE_CLASS_ID(LoadVector,  Load, 0)
   691         DEFINE_CLASS_ID(LoadVector,  Load, 0)
   691           DEFINE_CLASS_ID(LoadBarrierSlowReg, Load, 1)
       
   692           DEFINE_CLASS_ID(LoadBarrierWeakSlowReg, Load, 2)
       
   693       DEFINE_CLASS_ID(Store, Mem, 1)
   692       DEFINE_CLASS_ID(Store, Mem, 1)
   694         DEFINE_CLASS_ID(StoreVector, Store, 0)
   693         DEFINE_CLASS_ID(StoreVector, Store, 0)
   695       DEFINE_CLASS_ID(LoadStore, Mem, 2)
   694       DEFINE_CLASS_ID(LoadStore, Mem, 2)
   696         DEFINE_CLASS_ID(LoadStoreConditional, LoadStore, 0)
   695         DEFINE_CLASS_ID(LoadStoreConditional, LoadStore, 0)
   697           DEFINE_CLASS_ID(CompareAndSwap, LoadStoreConditional, 0)
   696           DEFINE_CLASS_ID(CompareAndSwap, LoadStoreConditional, 0)
   714     DEFINE_CLASS_ID(BoxLock,  Node, 10)
   713     DEFINE_CLASS_ID(BoxLock,  Node, 10)
   715     DEFINE_CLASS_ID(Add,      Node, 11)
   714     DEFINE_CLASS_ID(Add,      Node, 11)
   716     DEFINE_CLASS_ID(Mul,      Node, 12)
   715     DEFINE_CLASS_ID(Mul,      Node, 12)
   717     DEFINE_CLASS_ID(Vector,   Node, 13)
   716     DEFINE_CLASS_ID(Vector,   Node, 13)
   718     DEFINE_CLASS_ID(ClearArray, Node, 14)
   717     DEFINE_CLASS_ID(ClearArray, Node, 14)
   719 
   718     DEFINE_CLASS_ID(Halt, Node, 15)
   720     _max_classes  = ClassMask_ClearArray
   719 
       
   720     _max_classes  = ClassMask_Halt
   721   };
   721   };
   722   #undef DEFINE_CLASS_ID
   722   #undef DEFINE_CLASS_ID
   723 
   723 
   724   // Flags are sorted by usage frequency.
   724   // Flags are sorted by usage frequency.
   725   enum NodeFlags {
   725   enum NodeFlags {
   746   jushort _flags;
   746   jushort _flags;
   747 
   747 
   748 protected:
   748 protected:
   749   // These methods should be called from constructors only.
   749   // These methods should be called from constructors only.
   750   void init_class_id(jushort c) {
   750   void init_class_id(jushort c) {
   751     assert(c <= _max_classes, "invalid node class");
       
   752     _class_id = c; // cast out const
   751     _class_id = c; // cast out const
   753   }
   752   }
   754   void init_flags(jushort fl) {
   753   void init_flags(jushort fl) {
   755     assert(fl <= _max_flags, "invalid node flag");
   754     assert(fl <= _max_flags, "invalid node flag");
   756     _flags |= fl;
   755     _flags |= fl;
   804   DEFINE_CLASS_QUERY(CallStaticJava)
   803   DEFINE_CLASS_QUERY(CallStaticJava)
   805   DEFINE_CLASS_QUERY(Catch)
   804   DEFINE_CLASS_QUERY(Catch)
   806   DEFINE_CLASS_QUERY(CatchProj)
   805   DEFINE_CLASS_QUERY(CatchProj)
   807   DEFINE_CLASS_QUERY(CheckCastPP)
   806   DEFINE_CLASS_QUERY(CheckCastPP)
   808   DEFINE_CLASS_QUERY(CastII)
   807   DEFINE_CLASS_QUERY(CastII)
       
   808   DEFINE_CLASS_QUERY(CastLL)
   809   DEFINE_CLASS_QUERY(ConstraintCast)
   809   DEFINE_CLASS_QUERY(ConstraintCast)
   810   DEFINE_CLASS_QUERY(ClearArray)
   810   DEFINE_CLASS_QUERY(ClearArray)
   811   DEFINE_CLASS_QUERY(CMove)
   811   DEFINE_CLASS_QUERY(CMove)
   812   DEFINE_CLASS_QUERY(Cmp)
   812   DEFINE_CLASS_QUERY(Cmp)
   813   DEFINE_CLASS_QUERY(CountedLoop)
   813   DEFINE_CLASS_QUERY(CountedLoop)
   818   DEFINE_CLASS_QUERY(EncodeNarrowPtr)
   818   DEFINE_CLASS_QUERY(EncodeNarrowPtr)
   819   DEFINE_CLASS_QUERY(EncodeP)
   819   DEFINE_CLASS_QUERY(EncodeP)
   820   DEFINE_CLASS_QUERY(EncodePKlass)
   820   DEFINE_CLASS_QUERY(EncodePKlass)
   821   DEFINE_CLASS_QUERY(FastLock)
   821   DEFINE_CLASS_QUERY(FastLock)
   822   DEFINE_CLASS_QUERY(FastUnlock)
   822   DEFINE_CLASS_QUERY(FastUnlock)
       
   823   DEFINE_CLASS_QUERY(Halt)
   823   DEFINE_CLASS_QUERY(If)
   824   DEFINE_CLASS_QUERY(If)
   824   DEFINE_CLASS_QUERY(RangeCheck)
   825   DEFINE_CLASS_QUERY(RangeCheck)
   825   DEFINE_CLASS_QUERY(IfProj)
   826   DEFINE_CLASS_QUERY(IfProj)
   826   DEFINE_CLASS_QUERY(IfFalse)
   827   DEFINE_CLASS_QUERY(IfFalse)
   827   DEFINE_CLASS_QUERY(IfTrue)
   828   DEFINE_CLASS_QUERY(IfTrue)
   828   DEFINE_CLASS_QUERY(Initialize)
   829   DEFINE_CLASS_QUERY(Initialize)
   829   DEFINE_CLASS_QUERY(Jump)
   830   DEFINE_CLASS_QUERY(Jump)
   830   DEFINE_CLASS_QUERY(JumpProj)
   831   DEFINE_CLASS_QUERY(JumpProj)
   831   DEFINE_CLASS_QUERY(Load)
   832   DEFINE_CLASS_QUERY(Load)
   832   DEFINE_CLASS_QUERY(LoadStore)
   833   DEFINE_CLASS_QUERY(LoadStore)
   833   DEFINE_CLASS_QUERY(LoadBarrier)
   834   DEFINE_CLASS_QUERY(LoadStoreConditional)
   834   DEFINE_CLASS_QUERY(LoadBarrierSlowReg)
       
   835   DEFINE_CLASS_QUERY(LoadBarrierWeakSlowReg)
       
   836   DEFINE_CLASS_QUERY(Lock)
   835   DEFINE_CLASS_QUERY(Lock)
   837   DEFINE_CLASS_QUERY(Loop)
   836   DEFINE_CLASS_QUERY(Loop)
   838   DEFINE_CLASS_QUERY(Mach)
   837   DEFINE_CLASS_QUERY(Mach)
   839   DEFINE_CLASS_QUERY(MachBranch)
   838   DEFINE_CLASS_QUERY(MachBranch)
   840   DEFINE_CLASS_QUERY(MachCall)
   839   DEFINE_CLASS_QUERY(MachCall)