< prev index next >

src/hotspot/share/oops/method.hpp

Print this page

*** 88,98 **** _dont_inline = 1 << 2, _hidden = 1 << 3, _has_injected_profile = 1 << 4, _running_emcp = 1 << 5, _intrinsic_candidate = 1 << 6, ! _reserved_stack_access = 1 << 7 }; mutable u2 _flags; JFR_ONLY(DEFINE_TRACE_FLAG;) --- 88,101 ---- _dont_inline = 1 << 2, _hidden = 1 << 3, _has_injected_profile = 1 << 4, _running_emcp = 1 << 5, _intrinsic_candidate = 1 << 6, ! _reserved_stack_access = 1 << 7, ! _known_not_returning_vt= 1 << 8, // <- See byte_value_for_known_not_returning_vt() ! _known_returning_vt = 1 << 9, // <- for these 2 bits. ! _unused_bits_mask = 0xfc00 }; mutable u2 _flags; JFR_ONLY(DEFINE_TRACE_FLAG;)
*** 693,702 **** --- 696,706 ---- // interpreter support static ByteSize const_offset() { return byte_offset_of(Method, _constMethod ); } static ByteSize access_flags_offset() { return byte_offset_of(Method, _access_flags ); } static ByteSize from_compiled_offset() { return byte_offset_of(Method, _from_compiled_entry); } static ByteSize code_offset() { return byte_offset_of(Method, _code); } + static ByteSize flags_offset() { return byte_offset_of(Method, _flags); } static ByteSize method_data_offset() { return byte_offset_of(Method, _method_data); } static ByteSize method_counters_offset() { return byte_offset_of(Method, _method_counters);
*** 894,903 **** --- 898,934 ---- void set_has_reserved_stack_access(bool x) { _flags = x ? (_flags | _reserved_stack_access) : (_flags & ~_reserved_stack_access); } + static int byte_value_for_known_not_returning_vt() { + // The higher byte of Method::_flags has only the + // _known_not_returning_vt and _known_returning_vt bits, and all other bits + // are zero, so we can test for is_known_not_returning_vt() in the interpreter + // by essentially comparing (_flags >> 8) == Method::byte_value_for_known_not_returning_vt() + assert(_unused_bits_mask == 0xfc00, "must be"); + return (_known_not_returning_vt >> 8); + } + + bool is_known_not_returning_vt() { + return (_flags & _known_not_returning_vt) != 0; + } + + void set_known_not_returning_vt() { + _flags |= _known_not_returning_vt; + } + + bool is_known_returning_vt() { + return (_flags & _known_returning_vt) != 0; + } + + void set_known_returning_vt() { + _flags |= _known_returning_vt; + } + + void check_returning_vt(TRAPS); + JFR_ONLY(DEFINE_TRACE_FLAG_ACCESSOR;) ConstMethod::MethodType method_type() const { return _constMethod->method_type(); }
< prev index next >