comparison src/share/vm/opto/callnode.hpp @ 460:424f9bfe6b96

6775880: EA +DeoptimizeALot: assert(mon_info->owner()->is_locked(),"object must be locked now") Summary: Create new "eliminated" BoxLock node for monitor debug info when corresponding locks are eliminated. Reviewed-by: never
author kvn
date Wed, 03 Dec 2008 13:41:37 -0800
parents a1980da045cc
children 523ded093c31
comparison
equal deleted inserted replaced
459:3a86a8dcf27c 460:424f9bfe6b96
778 }; 778 };
779 779
780 //------------------------------AbstractLockNode----------------------------------- 780 //------------------------------AbstractLockNode-----------------------------------
781 class AbstractLockNode: public CallNode { 781 class AbstractLockNode: public CallNode {
782 private: 782 private:
783 bool _eliminate; // indicates this lock can be safely eliminated 783 bool _eliminate; // indicates this lock can be safely eliminated
784 bool _coarsened; // indicates this lock was coarsened
784 #ifndef PRODUCT 785 #ifndef PRODUCT
785 NamedCounter* _counter; 786 NamedCounter* _counter;
786 #endif 787 #endif
787 788
788 protected: 789 protected:
799 800
800 801
801 public: 802 public:
802 AbstractLockNode(const TypeFunc *tf) 803 AbstractLockNode(const TypeFunc *tf)
803 : CallNode(tf, NULL, TypeRawPtr::BOTTOM), 804 : CallNode(tf, NULL, TypeRawPtr::BOTTOM),
805 _coarsened(false),
804 _eliminate(false) 806 _eliminate(false)
805 { 807 {
806 #ifndef PRODUCT 808 #ifndef PRODUCT
807 _counter = NULL; 809 _counter = NULL;
808 #endif 810 #endif
816 virtual uint size_of() const { return sizeof(*this); } 818 virtual uint size_of() const { return sizeof(*this); }
817 819
818 bool is_eliminated() {return _eliminate; } 820 bool is_eliminated() {return _eliminate; }
819 // mark node as eliminated and update the counter if there is one 821 // mark node as eliminated and update the counter if there is one
820 void set_eliminated(); 822 void set_eliminated();
823
824 bool is_coarsened() { return _coarsened; }
825 void set_coarsened() { _coarsened = true; }
821 826
822 // locking does not modify its arguments 827 // locking does not modify its arguments
823 virtual bool may_modify(const TypePtr *addr_t, PhaseTransform *phase){ return false;} 828 virtual bool may_modify(const TypePtr *addr_t, PhaseTransform *phase){ return false;}
824 829
825 #ifndef PRODUCT 830 #ifndef PRODUCT