< prev index next >

src/hotspot/share/oops/method.hpp

Print this page

        

*** 89,99 **** _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;) --- 89,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, ! _scalarized_args = 1 << 8, ! _needs_stack_repair = 1 << 9 }; mutable u2 _flags; JFR_ONLY(DEFINE_TRACE_FLAG;)
*** 102,119 **** #endif // Entry point for calling both from and to the interpreter. address _i2i_entry; // All-args-on-stack calling convention // Entry point for calling from compiled code, to compiled code if it exists // or else the interpreter. ! volatile address _from_compiled_entry; // Cache of: _code ? _code->entry_point() : _adapter->c2i_entry() // The entry point for calling both from and to compiled code is // "_code->entry_point()". Because of tiered compilation and de-opt, this // field can come and go. It can transition from NULL to not-null at any // time (whenever a compile completes). It can transition from not-null to // NULL only at safepoints (because of a de-opt). CompiledMethod* volatile _code; // Points to the corresponding piece of native code volatile address _from_interpreted_entry; // Cache of _code ? _adapter->i2c_entry() : _i2i_entry #if INCLUDE_AOT && defined(TIERED) CompiledMethod* _aot_code; #endif --- 104,124 ---- #endif // Entry point for calling both from and to the interpreter. address _i2i_entry; // All-args-on-stack calling convention // Entry point for calling from compiled code, to compiled code if it exists // or else the interpreter. ! volatile address _from_compiled_entry; // Cache of: _code ? _code->verified_entry_point() : _adapter->c2i_entry() ! volatile address _from_compiled_value_ro_entry; // Cache of: _code ? _code->verified_value_ro_entry_point() : _adapter->c2i_value_ro_entry() ! volatile address _from_compiled_value_entry; // Cache of: _code ? _code->verified_value_entry_point() : _adapter->c2i_value_entry() // The entry point for calling both from and to compiled code is // "_code->entry_point()". Because of tiered compilation and de-opt, this // field can come and go. It can transition from NULL to not-null at any // time (whenever a compile completes). It can transition from not-null to // NULL only at safepoints (because of a de-opt). CompiledMethod* volatile _code; // Points to the corresponding piece of native code volatile address _from_interpreted_entry; // Cache of _code ? _adapter->i2c_entry() : _i2i_entry + int _max_vt_buffer; // max number of VT buffer chunk to use before recycling #if INCLUDE_AOT && defined(TIERED) CompiledMethod* _aot_code; #endif
*** 447,456 **** --- 452,462 ---- // if this (shared) method were mapped into another JVM. void remove_unshareable_info(); // nmethod/verified compiler entry address verified_code_entry(); + address verified_value_ro_code_entry(); bool check_code() const; // Not inline to avoid circular ref CompiledMethod* volatile code() const; void clear_code(bool acquire_lock = true); // Clear out any compiled code static void set_code(const methodHandle& mh, CompiledMethod* code); void set_adapter_entry(AdapterHandlerEntry* adapter) {
*** 572,583 **** InstanceKlass* method_holder() const { return constants()->pool_holder(); } void compute_size_of_parameters(Thread *thread); // word size of parameters (receiver if any + arguments) Symbol* klass_name() const; // returns the name of the method holder BasicType result_type() const; // type of the method result ! bool is_returning_oop() const { BasicType r = result_type(); return (r == T_OBJECT || r == T_ARRAY); } ! bool is_returning_fp() const { BasicType r = result_type(); return (r == T_FLOAT || r == T_DOUBLE); } // Checked exceptions thrown by this method (resolved to mirrors) objArrayHandle resolved_checked_exceptions(TRAPS) { return resolved_checked_exceptions_impl(this, THREAD); } // Access flags --- 578,591 ---- InstanceKlass* method_holder() const { return constants()->pool_holder(); } void compute_size_of_parameters(Thread *thread); // word size of parameters (receiver if any + arguments) Symbol* klass_name() const; // returns the name of the method holder BasicType result_type() const; // type of the method result ! bool may_return_oop() const { BasicType r = result_type(); return (r == T_OBJECT || r == T_ARRAY || r == T_VALUETYPE); } ! #ifdef ASSERT ! ValueKlass* returned_value_type(Thread* thread) const; ! #endif // Checked exceptions thrown by this method (resolved to mirrors) objArrayHandle resolved_checked_exceptions(TRAPS) { return resolved_checked_exceptions_impl(this, THREAD); } // Access flags
*** 683,693 **** --- 691,704 ---- // 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 from_compiled_value_offset() { return byte_offset_of(Method, _from_compiled_value_entry); } + static ByteSize from_compiled_value_ro_offset(){ return byte_offset_of(Method, _from_compiled_value_ro_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);
*** 704,713 **** --- 715,726 ---- // for code generation static int method_data_offset_in_bytes() { return offset_of(Method, _method_data); } static int intrinsic_id_offset_in_bytes() { return offset_of(Method, _intrinsic_id); } static int intrinsic_id_size_in_bytes() { return sizeof(u2); } + static ByteSize max_vt_buffer_offset() { return byte_offset_of(Method, _max_vt_buffer); } + // Static methods that are used to implement member methods where an exposed this pointer // is needed due to possible GCs static objArrayHandle resolved_checked_exceptions_impl(Method* method, TRAPS); // Returns the byte code index from the byte code pointer
*** 883,892 **** --- 896,921 ---- void set_has_reserved_stack_access(bool x) { _flags = x ? (_flags | _reserved_stack_access) : (_flags & ~_reserved_stack_access); } + bool has_scalarized_args() { + return (_flags & _scalarized_args) != 0; + } + + void set_has_scalarized_args(bool x) { + _flags = x ? (_flags | _scalarized_args) : (_flags & ~_scalarized_args); + } + + bool needs_stack_repair() { + return (_flags & _needs_stack_repair) != 0; + } + + void set_needs_stack_repair(bool x) { + _flags = x ? (_flags | _needs_stack_repair) : (_flags & ~_needs_stack_repair); + } + JFR_ONLY(DEFINE_TRACE_FLAG_ACCESSOR;) ConstMethod::MethodType method_type() const { return _constMethod->method_type(); }
< prev index next >