< prev index next >
src/hotspot/share/runtime/sharedRuntime.hpp
Print this page
*** 53,63 ****
static bool resolve_sub_helper_internal(methodHandle callee_method, const frame& caller_frame,
CompiledMethod* caller_nm, bool is_virtual, bool is_optimized,
Handle receiver, CallInfo& call_info, Bytecodes::Code invoke_code, TRAPS);
static methodHandle resolve_sub_helper(JavaThread *thread,
bool is_virtual,
! bool is_optimized, TRAPS);
// Shared stub locations
static RuntimeStub* _wrong_method_blob;
static RuntimeStub* _wrong_method_abstract_blob;
--- 53,64 ----
static bool resolve_sub_helper_internal(methodHandle callee_method, const frame& caller_frame,
CompiledMethod* caller_nm, bool is_virtual, bool is_optimized,
Handle receiver, CallInfo& call_info, Bytecodes::Code invoke_code, TRAPS);
static methodHandle resolve_sub_helper(JavaThread *thread,
bool is_virtual,
! bool is_optimized,
! bool* caller_is_c1, TRAPS);
// Shared stub locations
static RuntimeStub* _wrong_method_blob;
static RuntimeStub* _wrong_method_abstract_blob;
*** 321,354 ****
// Resolves a call site- may patch in the destination of the call into the
// compiled code.
static methodHandle resolve_helper(JavaThread *thread,
bool is_virtual,
! bool is_optimized, TRAPS);
private:
// deopt blob
static void generate_deopt_blob(void);
static bool handle_ic_miss_helper_internal(Handle receiver, CompiledMethod* caller_nm, const frame& caller_frame,
methodHandle callee_method, Bytecodes::Code bc, CallInfo& call_info,
! bool& needs_ic_stub_refill, bool& is_optimized, TRAPS);
public:
static DeoptimizationBlob* deopt_blob(void) { return _deopt_blob; }
// Resets a call-site in compiled code so it will get resolved again.
! static methodHandle reresolve_call_site(JavaThread *thread, bool& is_optimized, TRAPS);
// In the code prolog, if the klass comparison fails, the inline cache
// misses and the call site is patched to megamorphic
! static methodHandle handle_ic_miss_helper(JavaThread* thread, bool& is_optimized, TRAPS);
// Find the method that called us.
static methodHandle find_callee_method(JavaThread* thread, TRAPS);
private:
static Handle find_callee_info(JavaThread* thread,
Bytecodes::Code& bc,
CallInfo& callinfo, TRAPS);
static Handle find_callee_info_helper(JavaThread* thread,
--- 322,369 ----
// Resolves a call site- may patch in the destination of the call into the
// compiled code.
static methodHandle resolve_helper(JavaThread *thread,
bool is_virtual,
! bool is_optimized,
! bool* caller_is_c1, TRAPS);
private:
// deopt blob
static void generate_deopt_blob(void);
static bool handle_ic_miss_helper_internal(Handle receiver, CompiledMethod* caller_nm, const frame& caller_frame,
methodHandle callee_method, Bytecodes::Code bc, CallInfo& call_info,
! bool& needs_ic_stub_refill, bool& is_optimized, bool caller_is_c1, TRAPS);
public:
static DeoptimizationBlob* deopt_blob(void) { return _deopt_blob; }
// Resets a call-site in compiled code so it will get resolved again.
! static methodHandle reresolve_call_site(JavaThread *thread, bool& is_optimized, bool& caller_is_c1, TRAPS);
// In the code prolog, if the klass comparison fails, the inline cache
// misses and the call site is patched to megamorphic
! static methodHandle handle_ic_miss_helper(JavaThread* thread, bool& is_optimized, bool& caller_is_c1, TRAPS);
// Find the method that called us.
static methodHandle find_callee_method(JavaThread* thread, TRAPS);
+ static address entry_for_handle_wrong_method(methodHandle callee_method, bool is_optimized, bool caller_is_c1) {
+ assert(callee_method->verified_code_entry() != NULL, "Jump to zero!");
+ assert(callee_method->verified_value_code_entry() != NULL, "Jump to zero!");
+ assert(callee_method->verified_value_ro_code_entry() != NULL, "Jump to zero!");
+ if (caller_is_c1) {
+ return callee_method->verified_value_code_entry();
+ } else if (is_optimized) {
+ return callee_method->verified_code_entry();
+ } else {
+ return callee_method->verified_value_ro_code_entry();
+ }
+ }
+
private:
static Handle find_callee_info(JavaThread* thread,
Bytecodes::Code& bc,
CallInfo& callinfo, TRAPS);
static Handle find_callee_info_helper(JavaThread* thread,
< prev index next >