< prev index next >

src/hotspot/share/opto/node.hpp

Print this page




  63 class CompareAndSwapNode;
  64 class CompareAndExchangeNode;
  65 class CountedLoopNode;
  66 class CountedLoopEndNode;
  67 class DecodeNarrowPtrNode;
  68 class DecodeNNode;
  69 class DecodeNKlassNode;
  70 class EncodeNarrowPtrNode;
  71 class EncodePNode;
  72 class EncodePKlassNode;
  73 class FastLockNode;
  74 class FastUnlockNode;
  75 class IfNode;
  76 class IfFalseNode;
  77 class IfTrueNode;
  78 class InitializeNode;
  79 class JVMState;
  80 class JumpNode;
  81 class JumpProjNode;
  82 class LoadNode;



  83 class LoadStoreNode;
  84 class LockNode;
  85 class LoopNode;
  86 class MachBranchNode;
  87 class MachCallDynamicJavaNode;
  88 class MachCallJavaNode;
  89 class MachCallLeafNode;
  90 class MachCallNode;
  91 class MachCallRuntimeNode;
  92 class MachCallStaticJavaNode;
  93 class MachConstantBaseNode;
  94 class MachConstantNode;
  95 class MachGotoNode;
  96 class MachIfNode;
  97 class MachJumpNode;
  98 class MachNode;
  99 class MachNullCheckNode;
 100 class MachProjNode;
 101 class MachReturnNode;
 102 class MachSafePointNode;


 617             DEFINE_CLASS_ID(CallLeaf,         CallRuntime, 0)
 618           DEFINE_CLASS_ID(Allocate,         Call, 2)
 619             DEFINE_CLASS_ID(AllocateArray,    Allocate, 0)
 620           DEFINE_CLASS_ID(AbstractLock,     Call, 3)
 621             DEFINE_CLASS_ID(Lock,             AbstractLock, 0)
 622             DEFINE_CLASS_ID(Unlock,           AbstractLock, 1)
 623           DEFINE_CLASS_ID(ArrayCopy,        Call, 4)
 624       DEFINE_CLASS_ID(MultiBranch, Multi, 1)
 625         DEFINE_CLASS_ID(PCTable,     MultiBranch, 0)
 626           DEFINE_CLASS_ID(Catch,       PCTable, 0)
 627           DEFINE_CLASS_ID(Jump,        PCTable, 1)
 628         DEFINE_CLASS_ID(If,          MultiBranch, 1)
 629           DEFINE_CLASS_ID(CountedLoopEnd,         If, 0)
 630           DEFINE_CLASS_ID(RangeCheck,             If, 1)
 631           DEFINE_CLASS_ID(OuterStripMinedLoopEnd, If, 2)
 632         DEFINE_CLASS_ID(NeverBranch, MultiBranch, 2)
 633       DEFINE_CLASS_ID(Start,       Multi, 2)
 634       DEFINE_CLASS_ID(MemBar,      Multi, 3)
 635         DEFINE_CLASS_ID(Initialize,       MemBar, 0)
 636         DEFINE_CLASS_ID(MemBarStoreStore, MemBar, 1)

 637 
 638     DEFINE_CLASS_ID(Mach,  Node, 1)
 639       DEFINE_CLASS_ID(MachReturn, Mach, 0)
 640         DEFINE_CLASS_ID(MachSafePoint, MachReturn, 0)
 641           DEFINE_CLASS_ID(MachCall, MachSafePoint, 0)
 642             DEFINE_CLASS_ID(MachCallJava,         MachCall, 0)
 643               DEFINE_CLASS_ID(MachCallStaticJava,   MachCallJava, 0)
 644               DEFINE_CLASS_ID(MachCallDynamicJava,  MachCallJava, 1)
 645             DEFINE_CLASS_ID(MachCallRuntime,      MachCall, 1)
 646               DEFINE_CLASS_ID(MachCallLeaf,         MachCallRuntime, 0)
 647       DEFINE_CLASS_ID(MachBranch, Mach, 1)
 648         DEFINE_CLASS_ID(MachIf,         MachBranch, 0)
 649         DEFINE_CLASS_ID(MachGoto,       MachBranch, 1)
 650         DEFINE_CLASS_ID(MachNullCheck,  MachBranch, 2)
 651       DEFINE_CLASS_ID(MachSpillCopy,    Mach, 2)
 652       DEFINE_CLASS_ID(MachTemp,         Mach, 3)
 653       DEFINE_CLASS_ID(MachConstantBase, Mach, 4)
 654       DEFINE_CLASS_ID(MachConstant,     Mach, 5)
 655         DEFINE_CLASS_ID(MachJump,       MachConstant, 0)
 656       DEFINE_CLASS_ID(MachMerge,        Mach, 6)


 663       DEFINE_CLASS_ID(CMove, Type, 3)
 664       DEFINE_CLASS_ID(SafePointScalarObject, Type, 4)
 665       DEFINE_CLASS_ID(DecodeNarrowPtr, Type, 5)
 666         DEFINE_CLASS_ID(DecodeN, DecodeNarrowPtr, 0)
 667         DEFINE_CLASS_ID(DecodeNKlass, DecodeNarrowPtr, 1)
 668       DEFINE_CLASS_ID(EncodeNarrowPtr, Type, 6)
 669         DEFINE_CLASS_ID(EncodeP, EncodeNarrowPtr, 0)
 670         DEFINE_CLASS_ID(EncodePKlass, EncodeNarrowPtr, 1)
 671 
 672     DEFINE_CLASS_ID(Proj,  Node, 3)
 673       DEFINE_CLASS_ID(CatchProj, Proj, 0)
 674       DEFINE_CLASS_ID(JumpProj,  Proj, 1)
 675       DEFINE_CLASS_ID(IfTrue,    Proj, 2)
 676       DEFINE_CLASS_ID(IfFalse,   Proj, 3)
 677       DEFINE_CLASS_ID(Parm,      Proj, 4)
 678       DEFINE_CLASS_ID(MachProj,  Proj, 5)
 679 
 680     DEFINE_CLASS_ID(Mem,   Node, 4)
 681       DEFINE_CLASS_ID(Load,  Mem, 0)
 682         DEFINE_CLASS_ID(LoadVector,  Load, 0)


 683       DEFINE_CLASS_ID(Store, Mem, 1)
 684         DEFINE_CLASS_ID(StoreVector, Store, 0)
 685       DEFINE_CLASS_ID(LoadStore, Mem, 2)
 686         DEFINE_CLASS_ID(LoadStoreConditional, LoadStore, 0)
 687           DEFINE_CLASS_ID(CompareAndSwap, LoadStoreConditional, 0)
 688         DEFINE_CLASS_ID(CompareAndExchangeNode, LoadStore, 1)
 689 
 690     DEFINE_CLASS_ID(Region, Node, 5)
 691       DEFINE_CLASS_ID(Loop, Region, 0)
 692         DEFINE_CLASS_ID(Root,                Loop, 0)
 693         DEFINE_CLASS_ID(CountedLoop,         Loop, 1)
 694         DEFINE_CLASS_ID(OuterStripMinedLoop, Loop, 2)
 695 
 696     DEFINE_CLASS_ID(Sub,   Node, 6)
 697       DEFINE_CLASS_ID(Cmp,   Sub, 0)
 698         DEFINE_CLASS_ID(FastLock,   Cmp, 0)
 699         DEFINE_CLASS_ID(FastUnlock, Cmp, 1)
 700 
 701     DEFINE_CLASS_ID(MergeMem, Node, 7)
 702     DEFINE_CLASS_ID(Bool,     Node, 8)


 802   DEFINE_CLASS_QUERY(Cmp)
 803   DEFINE_CLASS_QUERY(CountedLoop)
 804   DEFINE_CLASS_QUERY(CountedLoopEnd)
 805   DEFINE_CLASS_QUERY(DecodeNarrowPtr)
 806   DEFINE_CLASS_QUERY(DecodeN)
 807   DEFINE_CLASS_QUERY(DecodeNKlass)
 808   DEFINE_CLASS_QUERY(EncodeNarrowPtr)
 809   DEFINE_CLASS_QUERY(EncodeP)
 810   DEFINE_CLASS_QUERY(EncodePKlass)
 811   DEFINE_CLASS_QUERY(FastLock)
 812   DEFINE_CLASS_QUERY(FastUnlock)
 813   DEFINE_CLASS_QUERY(If)
 814   DEFINE_CLASS_QUERY(RangeCheck)
 815   DEFINE_CLASS_QUERY(IfFalse)
 816   DEFINE_CLASS_QUERY(IfTrue)
 817   DEFINE_CLASS_QUERY(Initialize)
 818   DEFINE_CLASS_QUERY(Jump)
 819   DEFINE_CLASS_QUERY(JumpProj)
 820   DEFINE_CLASS_QUERY(Load)
 821   DEFINE_CLASS_QUERY(LoadStore)



 822   DEFINE_CLASS_QUERY(Lock)
 823   DEFINE_CLASS_QUERY(Loop)
 824   DEFINE_CLASS_QUERY(Mach)
 825   DEFINE_CLASS_QUERY(MachBranch)
 826   DEFINE_CLASS_QUERY(MachCall)
 827   DEFINE_CLASS_QUERY(MachCallDynamicJava)
 828   DEFINE_CLASS_QUERY(MachCallJava)
 829   DEFINE_CLASS_QUERY(MachCallLeaf)
 830   DEFINE_CLASS_QUERY(MachCallRuntime)
 831   DEFINE_CLASS_QUERY(MachCallStaticJava)
 832   DEFINE_CLASS_QUERY(MachConstantBase)
 833   DEFINE_CLASS_QUERY(MachConstant)
 834   DEFINE_CLASS_QUERY(MachGoto)
 835   DEFINE_CLASS_QUERY(MachIf)
 836   DEFINE_CLASS_QUERY(MachJump)
 837   DEFINE_CLASS_QUERY(MachNullCheck)
 838   DEFINE_CLASS_QUERY(MachProj)
 839   DEFINE_CLASS_QUERY(MachReturn)
 840   DEFINE_CLASS_QUERY(MachSafePoint)
 841   DEFINE_CLASS_QUERY(MachSpillCopy)


1700 protected:
1701   virtual uint hash() const;    // Check the type
1702   virtual uint cmp( const Node &n ) const;
1703   virtual uint size_of() const; // Size is bigger
1704   const Type* const _type;
1705 public:
1706   void set_type(const Type* t) {
1707     assert(t != NULL, "sanity");
1708     debug_only(uint check_hash = (VerifyHashTableKeys && _hash_lock) ? hash() : NO_HASH);
1709     *(const Type**)&_type = t;   // cast away const-ness
1710     // If this node is in the hash table, make sure it doesn't need a rehash.
1711     assert(check_hash == NO_HASH || check_hash == hash(), "type change must preserve hash code");
1712   }
1713   const Type* type() const { assert(_type != NULL, "sanity"); return _type; };
1714   TypeNode( const Type *t, uint required ) : Node(required), _type(t) {
1715     init_class_id(Class_Type);
1716   }
1717   virtual const Type* Value(PhaseGVN* phase) const;
1718   virtual const Type *bottom_type() const;
1719   virtual       uint  ideal_reg() const;

1720 #ifndef PRODUCT
1721   virtual void dump_spec(outputStream *st) const;
1722   virtual void dump_compact_spec(outputStream *st) const;
1723 #endif
1724 };
1725 
1726 #endif // SHARE_VM_OPTO_NODE_HPP


  63 class CompareAndSwapNode;
  64 class CompareAndExchangeNode;
  65 class CountedLoopNode;
  66 class CountedLoopEndNode;
  67 class DecodeNarrowPtrNode;
  68 class DecodeNNode;
  69 class DecodeNKlassNode;
  70 class EncodeNarrowPtrNode;
  71 class EncodePNode;
  72 class EncodePKlassNode;
  73 class FastLockNode;
  74 class FastUnlockNode;
  75 class IfNode;
  76 class IfFalseNode;
  77 class IfTrueNode;
  78 class InitializeNode;
  79 class JVMState;
  80 class JumpNode;
  81 class JumpProjNode;
  82 class LoadNode;
  83 class LoadBarrierNode;
  84 class LoadBarrierSlowRegNode;
  85 class LoadBarrierWeakSlowRegNode;
  86 class LoadStoreNode;
  87 class LockNode;
  88 class LoopNode;
  89 class MachBranchNode;
  90 class MachCallDynamicJavaNode;
  91 class MachCallJavaNode;
  92 class MachCallLeafNode;
  93 class MachCallNode;
  94 class MachCallRuntimeNode;
  95 class MachCallStaticJavaNode;
  96 class MachConstantBaseNode;
  97 class MachConstantNode;
  98 class MachGotoNode;
  99 class MachIfNode;
 100 class MachJumpNode;
 101 class MachNode;
 102 class MachNullCheckNode;
 103 class MachProjNode;
 104 class MachReturnNode;
 105 class MachSafePointNode;


 620             DEFINE_CLASS_ID(CallLeaf,         CallRuntime, 0)
 621           DEFINE_CLASS_ID(Allocate,         Call, 2)
 622             DEFINE_CLASS_ID(AllocateArray,    Allocate, 0)
 623           DEFINE_CLASS_ID(AbstractLock,     Call, 3)
 624             DEFINE_CLASS_ID(Lock,             AbstractLock, 0)
 625             DEFINE_CLASS_ID(Unlock,           AbstractLock, 1)
 626           DEFINE_CLASS_ID(ArrayCopy,        Call, 4)
 627       DEFINE_CLASS_ID(MultiBranch, Multi, 1)
 628         DEFINE_CLASS_ID(PCTable,     MultiBranch, 0)
 629           DEFINE_CLASS_ID(Catch,       PCTable, 0)
 630           DEFINE_CLASS_ID(Jump,        PCTable, 1)
 631         DEFINE_CLASS_ID(If,          MultiBranch, 1)
 632           DEFINE_CLASS_ID(CountedLoopEnd,         If, 0)
 633           DEFINE_CLASS_ID(RangeCheck,             If, 1)
 634           DEFINE_CLASS_ID(OuterStripMinedLoopEnd, If, 2)
 635         DEFINE_CLASS_ID(NeverBranch, MultiBranch, 2)
 636       DEFINE_CLASS_ID(Start,       Multi, 2)
 637       DEFINE_CLASS_ID(MemBar,      Multi, 3)
 638         DEFINE_CLASS_ID(Initialize,       MemBar, 0)
 639         DEFINE_CLASS_ID(MemBarStoreStore, MemBar, 1)
 640       DEFINE_CLASS_ID(LoadBarrier, Multi, 4)
 641 
 642     DEFINE_CLASS_ID(Mach,  Node, 1)
 643       DEFINE_CLASS_ID(MachReturn, Mach, 0)
 644         DEFINE_CLASS_ID(MachSafePoint, MachReturn, 0)
 645           DEFINE_CLASS_ID(MachCall, MachSafePoint, 0)
 646             DEFINE_CLASS_ID(MachCallJava,         MachCall, 0)
 647               DEFINE_CLASS_ID(MachCallStaticJava,   MachCallJava, 0)
 648               DEFINE_CLASS_ID(MachCallDynamicJava,  MachCallJava, 1)
 649             DEFINE_CLASS_ID(MachCallRuntime,      MachCall, 1)
 650               DEFINE_CLASS_ID(MachCallLeaf,         MachCallRuntime, 0)
 651       DEFINE_CLASS_ID(MachBranch, Mach, 1)
 652         DEFINE_CLASS_ID(MachIf,         MachBranch, 0)
 653         DEFINE_CLASS_ID(MachGoto,       MachBranch, 1)
 654         DEFINE_CLASS_ID(MachNullCheck,  MachBranch, 2)
 655       DEFINE_CLASS_ID(MachSpillCopy,    Mach, 2)
 656       DEFINE_CLASS_ID(MachTemp,         Mach, 3)
 657       DEFINE_CLASS_ID(MachConstantBase, Mach, 4)
 658       DEFINE_CLASS_ID(MachConstant,     Mach, 5)
 659         DEFINE_CLASS_ID(MachJump,       MachConstant, 0)
 660       DEFINE_CLASS_ID(MachMerge,        Mach, 6)


 667       DEFINE_CLASS_ID(CMove, Type, 3)
 668       DEFINE_CLASS_ID(SafePointScalarObject, Type, 4)
 669       DEFINE_CLASS_ID(DecodeNarrowPtr, Type, 5)
 670         DEFINE_CLASS_ID(DecodeN, DecodeNarrowPtr, 0)
 671         DEFINE_CLASS_ID(DecodeNKlass, DecodeNarrowPtr, 1)
 672       DEFINE_CLASS_ID(EncodeNarrowPtr, Type, 6)
 673         DEFINE_CLASS_ID(EncodeP, EncodeNarrowPtr, 0)
 674         DEFINE_CLASS_ID(EncodePKlass, EncodeNarrowPtr, 1)
 675 
 676     DEFINE_CLASS_ID(Proj,  Node, 3)
 677       DEFINE_CLASS_ID(CatchProj, Proj, 0)
 678       DEFINE_CLASS_ID(JumpProj,  Proj, 1)
 679       DEFINE_CLASS_ID(IfTrue,    Proj, 2)
 680       DEFINE_CLASS_ID(IfFalse,   Proj, 3)
 681       DEFINE_CLASS_ID(Parm,      Proj, 4)
 682       DEFINE_CLASS_ID(MachProj,  Proj, 5)
 683 
 684     DEFINE_CLASS_ID(Mem,   Node, 4)
 685       DEFINE_CLASS_ID(Load,  Mem, 0)
 686         DEFINE_CLASS_ID(LoadVector,  Load, 0)
 687           DEFINE_CLASS_ID(LoadBarrierSlowReg, Load, 1)
 688           DEFINE_CLASS_ID(LoadBarrierWeakSlowReg, Load, 2)
 689       DEFINE_CLASS_ID(Store, Mem, 1)
 690         DEFINE_CLASS_ID(StoreVector, Store, 0)
 691       DEFINE_CLASS_ID(LoadStore, Mem, 2)
 692         DEFINE_CLASS_ID(LoadStoreConditional, LoadStore, 0)
 693           DEFINE_CLASS_ID(CompareAndSwap, LoadStoreConditional, 0)
 694         DEFINE_CLASS_ID(CompareAndExchangeNode, LoadStore, 1)
 695 
 696     DEFINE_CLASS_ID(Region, Node, 5)
 697       DEFINE_CLASS_ID(Loop, Region, 0)
 698         DEFINE_CLASS_ID(Root,                Loop, 0)
 699         DEFINE_CLASS_ID(CountedLoop,         Loop, 1)
 700         DEFINE_CLASS_ID(OuterStripMinedLoop, Loop, 2)
 701 
 702     DEFINE_CLASS_ID(Sub,   Node, 6)
 703       DEFINE_CLASS_ID(Cmp,   Sub, 0)
 704         DEFINE_CLASS_ID(FastLock,   Cmp, 0)
 705         DEFINE_CLASS_ID(FastUnlock, Cmp, 1)
 706 
 707     DEFINE_CLASS_ID(MergeMem, Node, 7)
 708     DEFINE_CLASS_ID(Bool,     Node, 8)


 808   DEFINE_CLASS_QUERY(Cmp)
 809   DEFINE_CLASS_QUERY(CountedLoop)
 810   DEFINE_CLASS_QUERY(CountedLoopEnd)
 811   DEFINE_CLASS_QUERY(DecodeNarrowPtr)
 812   DEFINE_CLASS_QUERY(DecodeN)
 813   DEFINE_CLASS_QUERY(DecodeNKlass)
 814   DEFINE_CLASS_QUERY(EncodeNarrowPtr)
 815   DEFINE_CLASS_QUERY(EncodeP)
 816   DEFINE_CLASS_QUERY(EncodePKlass)
 817   DEFINE_CLASS_QUERY(FastLock)
 818   DEFINE_CLASS_QUERY(FastUnlock)
 819   DEFINE_CLASS_QUERY(If)
 820   DEFINE_CLASS_QUERY(RangeCheck)
 821   DEFINE_CLASS_QUERY(IfFalse)
 822   DEFINE_CLASS_QUERY(IfTrue)
 823   DEFINE_CLASS_QUERY(Initialize)
 824   DEFINE_CLASS_QUERY(Jump)
 825   DEFINE_CLASS_QUERY(JumpProj)
 826   DEFINE_CLASS_QUERY(Load)
 827   DEFINE_CLASS_QUERY(LoadStore)
 828   DEFINE_CLASS_QUERY(LoadBarrier)
 829   DEFINE_CLASS_QUERY(LoadBarrierSlowReg)
 830   DEFINE_CLASS_QUERY(LoadBarrierWeakSlowReg)
 831   DEFINE_CLASS_QUERY(Lock)
 832   DEFINE_CLASS_QUERY(Loop)
 833   DEFINE_CLASS_QUERY(Mach)
 834   DEFINE_CLASS_QUERY(MachBranch)
 835   DEFINE_CLASS_QUERY(MachCall)
 836   DEFINE_CLASS_QUERY(MachCallDynamicJava)
 837   DEFINE_CLASS_QUERY(MachCallJava)
 838   DEFINE_CLASS_QUERY(MachCallLeaf)
 839   DEFINE_CLASS_QUERY(MachCallRuntime)
 840   DEFINE_CLASS_QUERY(MachCallStaticJava)
 841   DEFINE_CLASS_QUERY(MachConstantBase)
 842   DEFINE_CLASS_QUERY(MachConstant)
 843   DEFINE_CLASS_QUERY(MachGoto)
 844   DEFINE_CLASS_QUERY(MachIf)
 845   DEFINE_CLASS_QUERY(MachJump)
 846   DEFINE_CLASS_QUERY(MachNullCheck)
 847   DEFINE_CLASS_QUERY(MachProj)
 848   DEFINE_CLASS_QUERY(MachReturn)
 849   DEFINE_CLASS_QUERY(MachSafePoint)
 850   DEFINE_CLASS_QUERY(MachSpillCopy)


1709 protected:
1710   virtual uint hash() const;    // Check the type
1711   virtual uint cmp( const Node &n ) const;
1712   virtual uint size_of() const; // Size is bigger
1713   const Type* const _type;
1714 public:
1715   void set_type(const Type* t) {
1716     assert(t != NULL, "sanity");
1717     debug_only(uint check_hash = (VerifyHashTableKeys && _hash_lock) ? hash() : NO_HASH);
1718     *(const Type**)&_type = t;   // cast away const-ness
1719     // If this node is in the hash table, make sure it doesn't need a rehash.
1720     assert(check_hash == NO_HASH || check_hash == hash(), "type change must preserve hash code");
1721   }
1722   const Type* type() const { assert(_type != NULL, "sanity"); return _type; };
1723   TypeNode( const Type *t, uint required ) : Node(required), _type(t) {
1724     init_class_id(Class_Type);
1725   }
1726   virtual const Type* Value(PhaseGVN* phase) const;
1727   virtual const Type *bottom_type() const;
1728   virtual       uint  ideal_reg() const;
1729 
1730 #ifndef PRODUCT
1731   virtual void dump_spec(outputStream *st) const;
1732   virtual void dump_compact_spec(outputStream *st) const;
1733 #endif
1734 };
1735 
1736 #endif // SHARE_VM_OPTO_NODE_HPP
< prev index next >