src/cpu/sparc/vm/stubGenerator_sparc.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File 7055355 Cdiff src/cpu/sparc/vm/stubGenerator_sparc.cpp

src/cpu/sparc/vm/stubGenerator_sparc.cpp

Print this page

        

*** 438,448 **** // properly traversed and ignored during GC, so we change the meaning of the "__" // macro within this method. #undef __ #define __ masm-> ! address generate_throw_exception(const char* name, address runtime_entry, bool restore_saved_exception_pc) { #ifdef ASSERT int insts_size = VerifyThread ? 1 * K : 600; #else int insts_size = VerifyThread ? 1 * K : 256; #endif /* ASSERT */ --- 438,449 ---- // properly traversed and ignored during GC, so we change the meaning of the "__" // macro within this method. #undef __ #define __ masm-> ! address generate_throw_exception(const char* name, address runtime_entry, bool restore_saved_exception_pc, ! Register arg1 = noreg, Register arg2 = noreg) { #ifdef ASSERT int insts_size = VerifyThread ? 1 * K : 600; #else int insts_size = VerifyThread ? 1 * K : 256; #endif /* ASSERT */
*** 474,483 **** --- 475,491 ---- Register last_java_sp = SP; // 64-bit last_java_sp is biased! __ set_last_Java_frame(last_java_sp, G0); if (VerifyThread) __ mov(G2_thread, O0); // about to be smashed; pass early __ save_thread(noreg); + if (arg1 != noreg) { + assert(arg2 != O1, "clobbered"); + __ mov(arg1, O1); + } + if (arg2 != noreg) { + __ mov(arg2, O2); + } // do the call BLOCK_COMMENT("call runtime_entry"); __ call(runtime_entry, relocInfo::runtime_call_type); if (!VerifyThread) __ delayed()->mov(G2_thread, O0); // pass thread as first argument
*** 3238,3247 **** --- 3246,3263 ---- StubRoutines::_atomic_xchg_ptr_entry = StubRoutines::_atomic_xchg_entry; StubRoutines::_atomic_cmpxchg_ptr_entry = StubRoutines::_atomic_cmpxchg_entry; StubRoutines::_atomic_cmpxchg_long_entry = generate_atomic_cmpxchg_long(); StubRoutines::_atomic_add_ptr_entry = StubRoutines::_atomic_add_entry; #endif // COMPILER2 !=> _LP64 + + // Build this early so it's available for the interpreter. The + // stub expects the required and actual type to already be in O1 + // and O2 respectively. + StubRoutines::_throw_WrongMethodTypeException_entry = + generate_throw_exception("WrongMethodTypeException throw_exception", + CAST_FROM_FN_PTR(address, SharedRuntime::throw_WrongMethodTypeException), + false, G5_method_type, G3_method_handle); } void generate_all() { // Generates all stubs and initializes the entry points
src/cpu/sparc/vm/stubGenerator_sparc.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File