src/share/vm/oops/method.hpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File 8055008_3 Cdiff src/share/vm/oops/method.hpp

src/share/vm/oops/method.hpp

Print this page

        

*** 78,88 **** enum Flags { _jfr_towrite = 1 << 0, _caller_sensitive = 1 << 1, _force_inline = 1 << 2, _dont_inline = 1 << 3, ! _hidden = 1 << 4 }; u1 _flags; #ifndef PRODUCT int _compiled_invocation_count; // Number of nmethod invocations so far (for perf. debugging) --- 78,89 ---- enum Flags { _jfr_towrite = 1 << 0, _caller_sensitive = 1 << 1, _force_inline = 1 << 2, _dont_inline = 1 << 3, ! _hidden = 1 << 4, ! _running_emcp = 1 << 5 }; u1 _flags; #ifndef PRODUCT int _compiled_invocation_count; // Number of nmethod invocations so far (for perf. debugging)
*** 686,695 **** --- 687,711 ---- void set_is_old() { _access_flags.set_is_old(); } bool is_obsolete() const { return access_flags().is_obsolete(); } void set_is_obsolete() { _access_flags.set_is_obsolete(); } bool is_deleted() const { return access_flags().is_deleted(); } void set_is_deleted() { _access_flags.set_is_deleted(); } + + bool is_running_emcp() const { + // EMCP methods are old but not obsolete or deleted. Equivalent + // Modulo Constant Pool means the method is equivalent except + // the constant pool and instructions that access the constant + // pool might be different. + // If a breakpoint is set in a redefined method, its EMCP methods that are + // still running must have a breakpoint also. + return (_flags & _running_emcp) != 0; + } + + void set_running_emcp(bool x) { + _flags = x ? (_flags | _running_emcp) : (_flags & ~_running_emcp); + } + bool on_stack() const { return access_flags().on_stack(); } void set_on_stack(const bool value); // see the definition in Method*.cpp for the gory details bool should_not_be_cached() const;
src/share/vm/oops/method.hpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File