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
|