--- a/hotspot/src/cpu/sparc/vm/sharedRuntime_sparc.cpp Mon Apr 20 14:48:03 2009 -0700
+++ b/hotspot/src/cpu/sparc/vm/sharedRuntime_sparc.cpp Tue Apr 21 11:16:30 2009 -0700
@@ -625,9 +625,9 @@
__ mov(I7, O1); // VM needs caller's callsite
// Must be a leaf call...
// can be very far once the blob has been relocated
- Address dest(O7, CAST_FROM_FN_PTR(address, SharedRuntime::fixup_callers_callsite));
+ AddressLiteral dest(CAST_FROM_FN_PTR(address, SharedRuntime::fixup_callers_callsite));
__ relocate(relocInfo::runtime_call_type);
- __ jumpl_to(dest, O7);
+ __ jumpl_to(dest, O7, O7);
__ delayed()->mov(G2_thread, L7_thread_cache);
__ mov(L7_thread_cache, G2_thread);
__ mov(L1, G1);
@@ -1152,7 +1152,7 @@
#ifndef _LP64
if (g3_crushed) {
// Rats load was wasted, at least it is in cache...
- __ ld_ptr(G5_method, in_bytes(methodOopDesc::from_compiled_offset()), G3);
+ __ ld_ptr(G5_method, methodOopDesc::from_compiled_offset(), G3);
}
#endif /* _LP64 */
@@ -1165,7 +1165,7 @@
// we try and find the callee by normal means a safepoint
// is possible. So we stash the desired callee in the thread
// and the vm will find there should this case occur.
- Address callee_target_addr(G2_thread, 0, in_bytes(JavaThread::callee_target_offset()));
+ Address callee_target_addr(G2_thread, JavaThread::callee_target_offset());
__ st_ptr(G5_method, callee_target_addr);
if (StressNonEntrant) {
@@ -1218,7 +1218,7 @@
Register R_temp = G1; // another scratch register
#endif
- Address ic_miss(G3_scratch, SharedRuntime::get_ic_miss_stub());
+ AddressLiteral ic_miss(SharedRuntime::get_ic_miss_stub());
__ verify_oop(O0);
__ verify_oop(G5_method);
@@ -1240,7 +1240,7 @@
Label ok, ok2;
__ brx(Assembler::equal, false, Assembler::pt, ok);
__ delayed()->ld_ptr(G5_method, compiledICHolderOopDesc::holder_method_offset(), G5_method);
- __ jump_to(ic_miss);
+ __ jump_to(ic_miss, G3_scratch);
__ delayed()->nop();
__ bind(ok);
@@ -1251,7 +1251,7 @@
__ bind(ok2);
__ br_null(G3_scratch, false, __ pt, skip_fixup);
__ delayed()->ld_ptr(G5_method, in_bytes(methodOopDesc::interpreter_entry_offset()), G3_scratch);
- __ jump_to(ic_miss);
+ __ jump_to(ic_miss, G3_scratch);
__ delayed()->nop();
}
@@ -1444,8 +1444,8 @@
// without calling into the VM: it's the empty function. Just pop this
// frame and then jump to forward_exception_entry; O7 will contain the
// native caller's return PC.
- Address exception_entry(G3_scratch, StubRoutines::forward_exception_entry());
- __ jump_to(exception_entry);
+ AddressLiteral exception_entry(StubRoutines::forward_exception_entry());
+ __ jump_to(exception_entry, G3_scratch);
__ delayed()->restore(); // Pop this frame off.
__ bind(L);
}
@@ -1822,14 +1822,14 @@
{
Label L;
const Register temp_reg = G3_scratch;
- Address ic_miss(temp_reg, SharedRuntime::get_ic_miss_stub());
+ AddressLiteral ic_miss(SharedRuntime::get_ic_miss_stub());
__ verify_oop(O0);
__ load_klass(O0, temp_reg);
__ cmp(temp_reg, G5_inline_cache_reg);
__ brx(Assembler::equal, true, Assembler::pt, L);
__ delayed()->nop();
- __ jump_to(ic_miss, 0);
+ __ jump_to(ic_miss, temp_reg);
__ delayed()->nop();
__ align(CodeEntryAlignment);
__ bind(L);
@@ -2261,21 +2261,19 @@
// Transition from _thread_in_Java to _thread_in_native.
__ set(_thread_in_native, G3_scratch);
- __ st(G3_scratch, G2_thread, in_bytes(JavaThread::thread_state_offset()));
+ __ st(G3_scratch, G2_thread, JavaThread::thread_state_offset());
// We flushed the windows ages ago now mark them as flushed
// mark windows as flushed
__ set(JavaFrameAnchor::flushed, G3_scratch);
- Address flags(G2_thread,
- 0,
- in_bytes(JavaThread::frame_anchor_offset()) + in_bytes(JavaFrameAnchor::flags_offset()));
+ Address flags(G2_thread, JavaThread::frame_anchor_offset() + JavaFrameAnchor::flags_offset());
#ifdef _LP64
- Address dest(O7, method->native_function());
+ AddressLiteral dest(method->native_function());
__ relocate(relocInfo::runtime_call_type);
- __ jumpl_to(dest, O7);
+ __ jumpl_to(dest, O7, O7);
#else
__ call(method->native_function(), relocInfo::runtime_call_type);
#endif
@@ -2316,7 +2314,7 @@
// Block, if necessary, before resuming in _thread_in_Java state.
// In order for GC to work, don't clear the last_Java_sp until after blocking.
{ Label no_block;
- Address sync_state(G3_scratch, SafepointSynchronize::address_of_state());
+ AddressLiteral sync_state(SafepointSynchronize::address_of_state());
// Switch thread to "native transition" state before reading the synchronization state.
// This additional state is necessary because reading and testing the synchronization
@@ -2326,7 +2324,7 @@
// Thread A is resumed to finish this native method, but doesn't block here since it
// didn't see any synchronization is progress, and escapes.
__ set(_thread_in_native_trans, G3_scratch);
- __ st(G3_scratch, G2_thread, in_bytes(JavaThread::thread_state_offset()));
+ __ st(G3_scratch, G2_thread, JavaThread::thread_state_offset());
if(os::is_MP()) {
if (UseMembar) {
// Force this write out before the read below
@@ -2343,10 +2341,9 @@
__ cmp(G3_scratch, SafepointSynchronize::_not_synchronized);
Label L;
- Address suspend_state(G2_thread, 0, in_bytes(JavaThread::suspend_flags_offset()));
+ Address suspend_state(G2_thread, JavaThread::suspend_flags_offset());
__ br(Assembler::notEqual, false, Assembler::pn, L);
- __ delayed()->
- ld(suspend_state, G3_scratch);
+ __ delayed()->ld(suspend_state, G3_scratch);
__ cmp(G3_scratch, 0);
__ br(Assembler::equal, false, Assembler::pt, no_block);
__ delayed()->nop();
@@ -2372,11 +2369,11 @@
__ set(_thread_in_Java, G3_scratch);
- __ st(G3_scratch, G2_thread, in_bytes(JavaThread::thread_state_offset()));
+ __ st(G3_scratch, G2_thread, JavaThread::thread_state_offset());
Label no_reguard;
- __ ld(G2_thread, in_bytes(JavaThread::stack_guard_state_offset()), G3_scratch);
+ __ ld(G2_thread, JavaThread::stack_guard_state_offset(), G3_scratch);
__ cmp(G3_scratch, JavaThread::stack_guard_yellow_disabled);
__ br(Assembler::notEqual, false, Assembler::pt, no_reguard);
__ delayed()->nop();
@@ -2684,14 +2681,14 @@
{
Label L;
const Register temp_reg = G3_scratch;
- Address ic_miss(temp_reg, SharedRuntime::get_ic_miss_stub());
+ AddressLiteral ic_miss(SharedRuntime::get_ic_miss_stub());
__ verify_oop(O0);
__ ld_ptr(O0, oopDesc::klass_offset_in_bytes(), temp_reg);
__ cmp(temp_reg, G5_inline_cache_reg);
__ brx(Assembler::equal, true, Assembler::pt, L);
__ delayed()->nop();
- __ jump_to(ic_miss, 0);
+ __ jump_to(ic_miss, temp_reg);
__ delayed()->nop();
__ align(CodeEntryAlignment);
__ bind(L);
@@ -3155,15 +3152,13 @@
// Do this after the caller's return address is on top of stack
if (UseStackBanging) {
// Get total frame size for interpreted frames
- __ ld(Address(O2UnrollBlock, 0,
- Deoptimization::UnrollBlock::total_frame_sizes_offset_in_bytes()), O4);
+ __ ld(O2UnrollBlock, Deoptimization::UnrollBlock::total_frame_sizes_offset_in_bytes(), O4);
__ bang_stack_size(O4, O3, G3_scratch);
}
- __ ld(Address(O2UnrollBlock, 0, Deoptimization::UnrollBlock::number_of_frames_offset_in_bytes()), O4array_size);
- __ ld_ptr(Address(O2UnrollBlock, 0, Deoptimization::UnrollBlock::frame_pcs_offset_in_bytes()), G3pcs);
-
- __ ld_ptr(Address(O2UnrollBlock, 0, Deoptimization::UnrollBlock::frame_sizes_offset_in_bytes()), O3array);
+ __ ld(O2UnrollBlock, Deoptimization::UnrollBlock::number_of_frames_offset_in_bytes(), O4array_size);
+ __ ld_ptr(O2UnrollBlock, Deoptimization::UnrollBlock::frame_pcs_offset_in_bytes(), G3pcs);
+ __ ld_ptr(O2UnrollBlock, Deoptimization::UnrollBlock::frame_sizes_offset_in_bytes(), O3array);
// Adjust old interpreter frame to make space for new frame's extra java locals
//
@@ -3176,7 +3171,7 @@
// for each frame we create and keep up the illusion every where.
//
- __ ld(Address(O2UnrollBlock, 0, Deoptimization::UnrollBlock::caller_adjustment_offset_in_bytes()), O7);
+ __ ld(O2UnrollBlock, Deoptimization::UnrollBlock::caller_adjustment_offset_in_bytes(), O7);
__ mov(SP, O5_savedSP); // remember initial sender's original sp before adjustment
__ sub(SP, O7, SP);
@@ -3225,9 +3220,9 @@
Register I5exception_tmp = I5;
Register G4exception_tmp = G4_scratch;
int frame_size_words;
- Address saved_Freturn0_addr(FP, 0, -sizeof(double) + STACK_BIAS);
+ Address saved_Freturn0_addr(FP, -sizeof(double) + STACK_BIAS);
#if !defined(_LP64) && defined(COMPILER2)
- Address saved_Greturn1_addr(FP, 0, -sizeof(double) -sizeof(jlong) + STACK_BIAS);
+ Address saved_Greturn1_addr(FP, -sizeof(double) -sizeof(jlong) + STACK_BIAS);
#endif
Label cont;
@@ -3289,7 +3284,7 @@
// save exception oop in JavaThread and fall through into the
// exception_in_tls case since they are handled in same way except
// for where the pending exception is kept.
- __ st_ptr(Oexception, G2_thread, in_bytes(JavaThread::exception_oop_offset()));
+ __ st_ptr(Oexception, G2_thread, JavaThread::exception_oop_offset());
//
// Vanilla deoptimization with an exception pending in exception_oop
@@ -3306,7 +3301,7 @@
{
// verify that there is really an exception oop in exception_oop
Label has_exception;
- __ ld_ptr(G2_thread, in_bytes(JavaThread::exception_oop_offset()), Oexception);
+ __ ld_ptr(G2_thread, JavaThread::exception_oop_offset(), Oexception);
__ br_notnull(Oexception, false, Assembler::pt, has_exception);
__ delayed()-> nop();
__ stop("no exception in thread");
@@ -3314,7 +3309,7 @@
// verify that there is no pending exception
Label no_pending_exception;
- Address exception_addr(G2_thread, 0, in_bytes(Thread::pending_exception_offset()));
+ Address exception_addr(G2_thread, Thread::pending_exception_offset());
__ ld_ptr(exception_addr, Oexception);
__ br_null(Oexception, false, Assembler::pt, no_pending_exception);
__ delayed()->nop();