< 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 >