83 class LoopNode;
84 class MachBranchNode;
85 class MachCallDynamicJavaNode;
86 class MachCallJavaNode;
87 class MachCallLeafNode;
88 class MachCallNode;
89 class MachCallRuntimeNode;
90 class MachCallStaticJavaNode;
91 class MachConstantBaseNode;
92 class MachConstantNode;
93 class MachGotoNode;
94 class MachIfNode;
95 class MachNode;
96 class MachNullCheckNode;
97 class MachProjNode;
98 class MachReturnNode;
99 class MachSafePointNode;
100 class MachSpillCopyNode;
101 class MachTempNode;
102 class Matcher;
103 class MemBarNode;
104 class MemBarStoreStoreNode;
105 class MemNode;
106 class MergeMemNode;
107 class MulNode;
108 class MultiNode;
109 class MultiBranchNode;
110 class NeverBranchNode;
111 class Node;
112 class Node_Array;
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;
551 DEFINE_CLASS_ID(CallStaticJava, CallJava, 0)
552 DEFINE_CLASS_ID(CallDynamicJava, CallJava, 1)
553 DEFINE_CLASS_ID(CallRuntime, Call, 1)
554 DEFINE_CLASS_ID(CallLeaf, CallRuntime, 0)
555 DEFINE_CLASS_ID(Allocate, Call, 2)
556 DEFINE_CLASS_ID(AllocateArray, Allocate, 0)
557 DEFINE_CLASS_ID(AbstractLock, Call, 3)
558 DEFINE_CLASS_ID(Lock, AbstractLock, 0)
559 DEFINE_CLASS_ID(Unlock, AbstractLock, 1)
560 DEFINE_CLASS_ID(MultiBranch, Multi, 1)
561 DEFINE_CLASS_ID(PCTable, MultiBranch, 0)
562 DEFINE_CLASS_ID(Catch, PCTable, 0)
563 DEFINE_CLASS_ID(Jump, PCTable, 1)
564 DEFINE_CLASS_ID(If, MultiBranch, 1)
565 DEFINE_CLASS_ID(CountedLoopEnd, If, 0)
566 DEFINE_CLASS_ID(NeverBranch, MultiBranch, 2)
567 DEFINE_CLASS_ID(Start, Multi, 2)
568 DEFINE_CLASS_ID(MemBar, Multi, 3)
569 DEFINE_CLASS_ID(Initialize, MemBar, 0)
570 DEFINE_CLASS_ID(MemBarStoreStore, MemBar, 1)
571
572 DEFINE_CLASS_ID(Mach, Node, 1)
573 DEFINE_CLASS_ID(MachReturn, Mach, 0)
574 DEFINE_CLASS_ID(MachSafePoint, MachReturn, 0)
575 DEFINE_CLASS_ID(MachCall, MachSafePoint, 0)
576 DEFINE_CLASS_ID(MachCallJava, MachCall, 0)
577 DEFINE_CLASS_ID(MachCallStaticJava, MachCallJava, 0)
578 DEFINE_CLASS_ID(MachCallDynamicJava, MachCallJava, 1)
579 DEFINE_CLASS_ID(MachCallRuntime, MachCall, 1)
580 DEFINE_CLASS_ID(MachCallLeaf, MachCallRuntime, 0)
581 DEFINE_CLASS_ID(MachBranch, Mach, 1)
582 DEFINE_CLASS_ID(MachIf, MachBranch, 0)
583 DEFINE_CLASS_ID(MachGoto, MachBranch, 1)
584 DEFINE_CLASS_ID(MachNullCheck, MachBranch, 2)
585 DEFINE_CLASS_ID(MachSpillCopy, Mach, 2)
586 DEFINE_CLASS_ID(MachTemp, Mach, 3)
587 DEFINE_CLASS_ID(MachConstantBase, Mach, 4)
588 DEFINE_CLASS_ID(MachConstant, Mach, 5)
589
590 DEFINE_CLASS_ID(Type, Node, 2)
618 DEFINE_CLASS_ID(Region, Node, 5)
619 DEFINE_CLASS_ID(Loop, Region, 0)
620 DEFINE_CLASS_ID(Root, Loop, 0)
621 DEFINE_CLASS_ID(CountedLoop, Loop, 1)
622
623 DEFINE_CLASS_ID(Sub, Node, 6)
624 DEFINE_CLASS_ID(Cmp, Sub, 0)
625 DEFINE_CLASS_ID(FastLock, Cmp, 0)
626 DEFINE_CLASS_ID(FastUnlock, Cmp, 1)
627 DEFINE_CLASS_ID(FlagsProj, Cmp, 2)
628
629 DEFINE_CLASS_ID(MergeMem, Node, 7)
630 DEFINE_CLASS_ID(Bool, Node, 8)
631 DEFINE_CLASS_ID(AddP, Node, 9)
632 DEFINE_CLASS_ID(BoxLock, Node, 10)
633 DEFINE_CLASS_ID(Add, Node, 11)
634 DEFINE_CLASS_ID(Mul, Node, 12)
635 DEFINE_CLASS_ID(Vector, Node, 13)
636 DEFINE_CLASS_ID(ClearArray, Node, 14)
637
638 _max_classes = ClassMask_ClearArray
639 };
640 #undef DEFINE_CLASS_ID
641
642 // Flags are sorted by usage frequency.
643 enum NodeFlags {
644 Flag_is_Copy = 0x01, // should be first bit to avoid shift
645 Flag_rematerialize = Flag_is_Copy << 1,
646 Flag_needs_anti_dependence_check = Flag_rematerialize << 1,
647 Flag_is_macro = Flag_needs_anti_dependence_check << 1,
648 Flag_is_Con = Flag_is_macro << 1,
649 Flag_is_cisc_alternate = Flag_is_Con << 1,
650 Flag_is_dead_loop_safe = Flag_is_cisc_alternate << 1,
651 Flag_may_be_short_branch = Flag_is_dead_loop_safe << 1,
652 Flag_avoid_back_to_back = Flag_may_be_short_branch << 1,
653 Flag_has_call = Flag_avoid_back_to_back << 1,
654 Flag_is_expensive = Flag_has_call << 1,
655 _max_flags = (Flag_is_expensive << 1) - 1 // allow flags combination
656 };
657
740 DEFINE_CLASS_QUERY(Lock)
741 DEFINE_CLASS_QUERY(Loop)
742 DEFINE_CLASS_QUERY(Mach)
743 DEFINE_CLASS_QUERY(MachBranch)
744 DEFINE_CLASS_QUERY(MachCall)
745 DEFINE_CLASS_QUERY(MachCallDynamicJava)
746 DEFINE_CLASS_QUERY(MachCallJava)
747 DEFINE_CLASS_QUERY(MachCallLeaf)
748 DEFINE_CLASS_QUERY(MachCallRuntime)
749 DEFINE_CLASS_QUERY(MachCallStaticJava)
750 DEFINE_CLASS_QUERY(MachConstantBase)
751 DEFINE_CLASS_QUERY(MachConstant)
752 DEFINE_CLASS_QUERY(MachGoto)
753 DEFINE_CLASS_QUERY(MachIf)
754 DEFINE_CLASS_QUERY(MachNullCheck)
755 DEFINE_CLASS_QUERY(MachProj)
756 DEFINE_CLASS_QUERY(MachReturn)
757 DEFINE_CLASS_QUERY(MachSafePoint)
758 DEFINE_CLASS_QUERY(MachSpillCopy)
759 DEFINE_CLASS_QUERY(MachTemp)
760 DEFINE_CLASS_QUERY(Mem)
761 DEFINE_CLASS_QUERY(MemBar)
762 DEFINE_CLASS_QUERY(MemBarStoreStore)
763 DEFINE_CLASS_QUERY(MergeMem)
764 DEFINE_CLASS_QUERY(Mul)
765 DEFINE_CLASS_QUERY(Multi)
766 DEFINE_CLASS_QUERY(MultiBranch)
767 DEFINE_CLASS_QUERY(Parm)
768 DEFINE_CLASS_QUERY(PCTable)
769 DEFINE_CLASS_QUERY(Phi)
770 DEFINE_CLASS_QUERY(Proj)
771 DEFINE_CLASS_QUERY(Region)
772 DEFINE_CLASS_QUERY(Root)
773 DEFINE_CLASS_QUERY(SafePoint)
774 DEFINE_CLASS_QUERY(SafePointScalarObject)
775 DEFINE_CLASS_QUERY(Start)
776 DEFINE_CLASS_QUERY(Store)
777 DEFINE_CLASS_QUERY(Sub)
778 DEFINE_CLASS_QUERY(Type)
779 DEFINE_CLASS_QUERY(Vector)
|
83 class LoopNode;
84 class MachBranchNode;
85 class MachCallDynamicJavaNode;
86 class MachCallJavaNode;
87 class MachCallLeafNode;
88 class MachCallNode;
89 class MachCallRuntimeNode;
90 class MachCallStaticJavaNode;
91 class MachConstantBaseNode;
92 class MachConstantNode;
93 class MachGotoNode;
94 class MachIfNode;
95 class MachNode;
96 class MachNullCheckNode;
97 class MachProjNode;
98 class MachReturnNode;
99 class MachSafePointNode;
100 class MachSpillCopyNode;
101 class MachTempNode;
102 class Matcher;
103 class MathExactNode;
104 class MemBarNode;
105 class MemBarStoreStoreNode;
106 class MemNode;
107 class MergeMemNode;
108 class MulNode;
109 class MultiNode;
110 class MultiBranchNode;
111 class NeverBranchNode;
112 class Node;
113 class Node_Array;
114 class Node_List;
115 class Node_Stack;
116 class NullCheckNode;
117 class OopMap;
118 class ParmNode;
119 class PCTableNode;
120 class PhaseCCP;
121 class PhaseGVN;
122 class PhaseIterGVN;
123 class PhaseRegAlloc;
552 DEFINE_CLASS_ID(CallStaticJava, CallJava, 0)
553 DEFINE_CLASS_ID(CallDynamicJava, CallJava, 1)
554 DEFINE_CLASS_ID(CallRuntime, Call, 1)
555 DEFINE_CLASS_ID(CallLeaf, CallRuntime, 0)
556 DEFINE_CLASS_ID(Allocate, Call, 2)
557 DEFINE_CLASS_ID(AllocateArray, Allocate, 0)
558 DEFINE_CLASS_ID(AbstractLock, Call, 3)
559 DEFINE_CLASS_ID(Lock, AbstractLock, 0)
560 DEFINE_CLASS_ID(Unlock, AbstractLock, 1)
561 DEFINE_CLASS_ID(MultiBranch, Multi, 1)
562 DEFINE_CLASS_ID(PCTable, MultiBranch, 0)
563 DEFINE_CLASS_ID(Catch, PCTable, 0)
564 DEFINE_CLASS_ID(Jump, PCTable, 1)
565 DEFINE_CLASS_ID(If, MultiBranch, 1)
566 DEFINE_CLASS_ID(CountedLoopEnd, If, 0)
567 DEFINE_CLASS_ID(NeverBranch, MultiBranch, 2)
568 DEFINE_CLASS_ID(Start, Multi, 2)
569 DEFINE_CLASS_ID(MemBar, Multi, 3)
570 DEFINE_CLASS_ID(Initialize, MemBar, 0)
571 DEFINE_CLASS_ID(MemBarStoreStore, MemBar, 1)
572 DEFINE_CLASS_ID(MathExact, Multi, 7)
573 DEFINE_CLASS_ID(MathExactI, MathExact, 0)
574 DEFINE_CLASS_ID(AddExactI, MathExactI, 0)
575 DEFINE_CLASS_ID(SubExactI, MathExactI, 1)
576 DEFINE_CLASS_ID(MulExactI, MathExactI, 2)
577 DEFINE_CLASS_ID(NegExactI, MathExactI, 3)
578 DEFINE_CLASS_ID(MathExactL, MathExact, 1)
579 DEFINE_CLASS_ID(AddExactL, MathExactL, 0)
580 DEFINE_CLASS_ID(SubExactL, MathExactL, 1)
581 DEFINE_CLASS_ID(MulExactL, MathExactL, 2)
582 DEFINE_CLASS_ID(NegExactL, MathExactL, 3)
583
584 DEFINE_CLASS_ID(Mach, Node, 1)
585 DEFINE_CLASS_ID(MachReturn, Mach, 0)
586 DEFINE_CLASS_ID(MachSafePoint, MachReturn, 0)
587 DEFINE_CLASS_ID(MachCall, MachSafePoint, 0)
588 DEFINE_CLASS_ID(MachCallJava, MachCall, 0)
589 DEFINE_CLASS_ID(MachCallStaticJava, MachCallJava, 0)
590 DEFINE_CLASS_ID(MachCallDynamicJava, MachCallJava, 1)
591 DEFINE_CLASS_ID(MachCallRuntime, MachCall, 1)
592 DEFINE_CLASS_ID(MachCallLeaf, MachCallRuntime, 0)
593 DEFINE_CLASS_ID(MachBranch, Mach, 1)
594 DEFINE_CLASS_ID(MachIf, MachBranch, 0)
595 DEFINE_CLASS_ID(MachGoto, MachBranch, 1)
596 DEFINE_CLASS_ID(MachNullCheck, MachBranch, 2)
597 DEFINE_CLASS_ID(MachSpillCopy, Mach, 2)
598 DEFINE_CLASS_ID(MachTemp, Mach, 3)
599 DEFINE_CLASS_ID(MachConstantBase, Mach, 4)
600 DEFINE_CLASS_ID(MachConstant, Mach, 5)
601
602 DEFINE_CLASS_ID(Type, Node, 2)
630 DEFINE_CLASS_ID(Region, Node, 5)
631 DEFINE_CLASS_ID(Loop, Region, 0)
632 DEFINE_CLASS_ID(Root, Loop, 0)
633 DEFINE_CLASS_ID(CountedLoop, Loop, 1)
634
635 DEFINE_CLASS_ID(Sub, Node, 6)
636 DEFINE_CLASS_ID(Cmp, Sub, 0)
637 DEFINE_CLASS_ID(FastLock, Cmp, 0)
638 DEFINE_CLASS_ID(FastUnlock, Cmp, 1)
639 DEFINE_CLASS_ID(FlagsProj, Cmp, 2)
640
641 DEFINE_CLASS_ID(MergeMem, Node, 7)
642 DEFINE_CLASS_ID(Bool, Node, 8)
643 DEFINE_CLASS_ID(AddP, Node, 9)
644 DEFINE_CLASS_ID(BoxLock, Node, 10)
645 DEFINE_CLASS_ID(Add, Node, 11)
646 DEFINE_CLASS_ID(Mul, Node, 12)
647 DEFINE_CLASS_ID(Vector, Node, 13)
648 DEFINE_CLASS_ID(ClearArray, Node, 14)
649
650
651 _max_classes = ClassMask_ClearArray
652 };
653 #undef DEFINE_CLASS_ID
654
655 // Flags are sorted by usage frequency.
656 enum NodeFlags {
657 Flag_is_Copy = 0x01, // should be first bit to avoid shift
658 Flag_rematerialize = Flag_is_Copy << 1,
659 Flag_needs_anti_dependence_check = Flag_rematerialize << 1,
660 Flag_is_macro = Flag_needs_anti_dependence_check << 1,
661 Flag_is_Con = Flag_is_macro << 1,
662 Flag_is_cisc_alternate = Flag_is_Con << 1,
663 Flag_is_dead_loop_safe = Flag_is_cisc_alternate << 1,
664 Flag_may_be_short_branch = Flag_is_dead_loop_safe << 1,
665 Flag_avoid_back_to_back = Flag_may_be_short_branch << 1,
666 Flag_has_call = Flag_avoid_back_to_back << 1,
667 Flag_is_expensive = Flag_has_call << 1,
668 _max_flags = (Flag_is_expensive << 1) - 1 // allow flags combination
669 };
670
753 DEFINE_CLASS_QUERY(Lock)
754 DEFINE_CLASS_QUERY(Loop)
755 DEFINE_CLASS_QUERY(Mach)
756 DEFINE_CLASS_QUERY(MachBranch)
757 DEFINE_CLASS_QUERY(MachCall)
758 DEFINE_CLASS_QUERY(MachCallDynamicJava)
759 DEFINE_CLASS_QUERY(MachCallJava)
760 DEFINE_CLASS_QUERY(MachCallLeaf)
761 DEFINE_CLASS_QUERY(MachCallRuntime)
762 DEFINE_CLASS_QUERY(MachCallStaticJava)
763 DEFINE_CLASS_QUERY(MachConstantBase)
764 DEFINE_CLASS_QUERY(MachConstant)
765 DEFINE_CLASS_QUERY(MachGoto)
766 DEFINE_CLASS_QUERY(MachIf)
767 DEFINE_CLASS_QUERY(MachNullCheck)
768 DEFINE_CLASS_QUERY(MachProj)
769 DEFINE_CLASS_QUERY(MachReturn)
770 DEFINE_CLASS_QUERY(MachSafePoint)
771 DEFINE_CLASS_QUERY(MachSpillCopy)
772 DEFINE_CLASS_QUERY(MachTemp)
773 DEFINE_CLASS_QUERY(MathExact)
774 DEFINE_CLASS_QUERY(Mem)
775 DEFINE_CLASS_QUERY(MemBar)
776 DEFINE_CLASS_QUERY(MemBarStoreStore)
777 DEFINE_CLASS_QUERY(MergeMem)
778 DEFINE_CLASS_QUERY(Mul)
779 DEFINE_CLASS_QUERY(Multi)
780 DEFINE_CLASS_QUERY(MultiBranch)
781 DEFINE_CLASS_QUERY(Parm)
782 DEFINE_CLASS_QUERY(PCTable)
783 DEFINE_CLASS_QUERY(Phi)
784 DEFINE_CLASS_QUERY(Proj)
785 DEFINE_CLASS_QUERY(Region)
786 DEFINE_CLASS_QUERY(Root)
787 DEFINE_CLASS_QUERY(SafePoint)
788 DEFINE_CLASS_QUERY(SafePointScalarObject)
789 DEFINE_CLASS_QUERY(Start)
790 DEFINE_CLASS_QUERY(Store)
791 DEFINE_CLASS_QUERY(Sub)
792 DEFINE_CLASS_QUERY(Type)
793 DEFINE_CLASS_QUERY(Vector)
|