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

src/share/vm/oops/method.hpp

Print this page

        

*** 91,102 **** #ifndef PRODUCT int _compiled_invocation_count; // Number of nmethod invocations so far (for perf. debugging) #endif // Entry point for calling both from and to the interpreter. address _i2i_entry; // All-args-on-stack calling convention - // Adapter blob (i2c/c2i) for this Method*. Set once when method is linked. - AdapterHandlerEntry* _adapter; // 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 --- 91,100 ----
*** 135,144 **** --- 133,143 ---- void set_constMethod(ConstMethod* xconst) { _constMethod = xconst; } static address make_adapters(methodHandle mh, TRAPS); volatile address from_compiled_entry() const { return (address)OrderAccess::load_ptr_acquire(&_from_compiled_entry); } + volatile address from_compiled_entry_no_trampoline() const; volatile address from_interpreted_entry() const{ return (address)OrderAccess::load_ptr_acquire(&_from_interpreted_entry); } // access flag AccessFlags access_flags() const { return _access_flags; } void set_access_flags(AccessFlags flags) { _access_flags = flags; }
*** 429,443 **** address verified_code_entry(); bool check_code() const; // Not inline to avoid circular ref nmethod* volatile code() const { assert( check_code(), "" ); return (nmethod *)OrderAccess::load_ptr_acquire(&_code); } void clear_code(); // Clear out any compiled code static void set_code(methodHandle mh, nmethod* code); ! void set_adapter_entry(AdapterHandlerEntry* adapter) { _adapter = adapter; } address get_i2c_entry(); address get_c2i_entry(); address get_c2i_unverified_entry(); ! AdapterHandlerEntry* adapter() { return _adapter; } // setup entry points void link_method(const methodHandle& method, TRAPS); // clear entry points. Used by sharing code void unlink_method(); --- 428,450 ---- address verified_code_entry(); bool check_code() const; // Not inline to avoid circular ref nmethod* volatile code() const { assert( check_code(), "" ); return (nmethod *)OrderAccess::load_ptr_acquire(&_code); } void clear_code(); // Clear out any compiled code static void set_code(methodHandle mh, nmethod* code); ! void set_adapter_entry(AdapterHandlerEntry* adapter) { ! constMethod()->set_adapter_entry(adapter); ! } ! void update_adapter_trampoline(AdapterHandlerEntry* adapter) { ! constMethod()->update_adapter_trampoline(adapter); ! } ! address get_i2c_entry(); address get_c2i_entry(); address get_c2i_unverified_entry(); ! AdapterHandlerEntry* adapter() const { ! return constMethod()->adapter(); ! } // setup entry points void link_method(const methodHandle& method, TRAPS); // clear entry points. Used by sharing code void unlink_method();
*** 463,473 **** void set_itable_index(int index) { _vtable_index = itable_index_max - index; assert(valid_itable_index(), ""); } // interpreter entry address interpreter_entry() const { return _i2i_entry; } // Only used when first initialize so we can set _i2i_entry and _from_interpreted_entry ! void set_interpreter_entry(address entry) { _i2i_entry = entry; _from_interpreted_entry = entry; } // native function (used for native methods only) enum { native_bind_event_is_interesting = true }; --- 470,487 ---- void set_itable_index(int index) { _vtable_index = itable_index_max - index; assert(valid_itable_index(), ""); } // interpreter entry address interpreter_entry() const { return _i2i_entry; } // Only used when first initialize so we can set _i2i_entry and _from_interpreted_entry ! void set_interpreter_entry(address entry) { ! if (_i2i_entry != entry) { ! _i2i_entry = entry; ! } ! if (_from_interpreted_entry != entry) { ! _from_interpreted_entry = entry; ! } ! } // native function (used for native methods only) enum { native_bind_event_is_interesting = true };
src/share/vm/oops/method.hpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File