760 void remove_dependent_nmethod(nmethod* nm);
761
762 // On-stack replacement support
763 nmethod* osr_nmethods_head() const { return _osr_nmethods_head; };
764 void set_osr_nmethods_head(nmethod* h) { _osr_nmethods_head = h; };
765 void add_osr_nmethod(nmethod* n);
766 void remove_osr_nmethod(nmethod* n);
767 nmethod* lookup_osr_nmethod(const Method* m, int bci, int level, bool match_level) const;
768
769 // Breakpoint support (see methods on Method* for details)
770 BreakpointInfo* breakpoints() const { return _breakpoints; };
771 void set_breakpoints(BreakpointInfo* bps) { _breakpoints = bps; };
772
773 // support for stub routines
774 static ByteSize init_state_offset() { return in_ByteSize(offset_of(InstanceKlass, _init_state)); }
775 TRACE_DEFINE_OFFSET;
776 static ByteSize init_thread_offset() { return in_ByteSize(offset_of(InstanceKlass, _init_thread)); }
777
778 // subclass/subinterface checks
779 bool implements_interface(Klass* k) const;
780
781 // Access to the implementor of an interface.
782 Klass* implementor() const
783 {
784 Klass** k = adr_implementor();
785 if (k == NULL) {
786 return NULL;
787 } else {
788 return *k;
789 }
790 }
791
792 void set_implementor(Klass* k) {
793 assert(is_interface(), "not interface");
794 Klass** addr = adr_implementor();
795 assert(addr != NULL, "null addr");
796 if (addr != NULL) {
797 *addr = k;
798 }
799 }
|
760 void remove_dependent_nmethod(nmethod* nm);
761
762 // On-stack replacement support
763 nmethod* osr_nmethods_head() const { return _osr_nmethods_head; };
764 void set_osr_nmethods_head(nmethod* h) { _osr_nmethods_head = h; };
765 void add_osr_nmethod(nmethod* n);
766 void remove_osr_nmethod(nmethod* n);
767 nmethod* lookup_osr_nmethod(const Method* m, int bci, int level, bool match_level) const;
768
769 // Breakpoint support (see methods on Method* for details)
770 BreakpointInfo* breakpoints() const { return _breakpoints; };
771 void set_breakpoints(BreakpointInfo* bps) { _breakpoints = bps; };
772
773 // support for stub routines
774 static ByteSize init_state_offset() { return in_ByteSize(offset_of(InstanceKlass, _init_state)); }
775 TRACE_DEFINE_OFFSET;
776 static ByteSize init_thread_offset() { return in_ByteSize(offset_of(InstanceKlass, _init_thread)); }
777
778 // subclass/subinterface checks
779 bool implements_interface(Klass* k) const;
780 bool is_same_or_direct_interface(Klass* k) const;
781
782 // Access to the implementor of an interface.
783 Klass* implementor() const
784 {
785 Klass** k = adr_implementor();
786 if (k == NULL) {
787 return NULL;
788 } else {
789 return *k;
790 }
791 }
792
793 void set_implementor(Klass* k) {
794 assert(is_interface(), "not interface");
795 Klass** addr = adr_implementor();
796 assert(addr != NULL, "null addr");
797 if (addr != NULL) {
798 *addr = k;
799 }
800 }
|