733 #endif 734 }; 735 736 //------------------------------MachIfNode------------------------------------- 737 // Machine-specific versions of IfNodes 738 class MachIfNode : public MachBranchNode { 739 virtual uint size_of() const { return sizeof(*this); } // Size is bigger 740 public: 741 float _prob; // Probability branch goes either way 742 float _fcnt; // Frequency counter 743 MachIfNode() : MachBranchNode() { 744 init_class_id(Class_MachIf); 745 } 746 // Negate conditional branches. 747 virtual void negate() = 0; 748 #ifndef PRODUCT 749 virtual void dump_spec(outputStream *st) const; 750 #endif 751 }; 752 753 //------------------------------MachGotoNode----------------------------------- 754 // Machine-specific versions of GotoNodes 755 class MachGotoNode : public MachBranchNode { 756 public: 757 MachGotoNode() : MachBranchNode() { 758 init_class_id(Class_MachGoto); 759 } 760 }; 761 762 //------------------------------MachFastLockNode------------------------------------- 763 // Machine-specific versions of FastLockNodes 764 class MachFastLockNode : public MachNode { 765 virtual uint size_of() const { return sizeof(*this); } // Size is bigger 766 public: 767 BiasedLockingCounters* _counters; 768 RTMLockingCounters* _rtm_counters; // RTM lock counters for inflated locks 769 RTMLockingCounters* _stack_rtm_counters; // RTM lock counters for stack locks 770 MachFastLockNode() : MachNode() {} 771 }; 772 | 733 #endif 734 }; 735 736 //------------------------------MachIfNode------------------------------------- 737 // Machine-specific versions of IfNodes 738 class MachIfNode : public MachBranchNode { 739 virtual uint size_of() const { return sizeof(*this); } // Size is bigger 740 public: 741 float _prob; // Probability branch goes either way 742 float _fcnt; // Frequency counter 743 MachIfNode() : MachBranchNode() { 744 init_class_id(Class_MachIf); 745 } 746 // Negate conditional branches. 747 virtual void negate() = 0; 748 #ifndef PRODUCT 749 virtual void dump_spec(outputStream *st) const; 750 #endif 751 }; 752 753 //------------------------------MachJumpNode----------------------------------- 754 // Machine-specific versions of JumpNodes 755 class MachJumpNode : public MachConstantNode { 756 public: 757 float* _probs; 758 MachJumpNode() : MachConstantNode() { 759 init_class_id(Class_MachJump); 760 } 761 }; 762 763 //------------------------------MachGotoNode----------------------------------- 764 // Machine-specific versions of GotoNodes 765 class MachGotoNode : public MachBranchNode { 766 public: 767 MachGotoNode() : MachBranchNode() { 768 init_class_id(Class_MachGoto); 769 } 770 }; 771 772 //------------------------------MachFastLockNode------------------------------------- 773 // Machine-specific versions of FastLockNodes 774 class MachFastLockNode : public MachNode { 775 virtual uint size_of() const { return sizeof(*this); } // Size is bigger 776 public: 777 BiasedLockingCounters* _counters; 778 RTMLockingCounters* _rtm_counters; // RTM lock counters for inflated locks 779 RTMLockingCounters* _stack_rtm_counters; // RTM lock counters for stack locks 780 MachFastLockNode() : MachNode() {} 781 }; 782 |