--- old/src/cpu/sparc/vm/macroAssembler_sparc.cpp 2016-04-06 17:17:12.286383524 +0200 +++ new/src/cpu/sparc/vm/macroAssembler_sparc.cpp 2016-04-06 17:17:12.158383522 +0200 @@ -755,7 +755,7 @@ } } -void MacroAssembler::card_table_write(jbyte* byte_map_base, +void MacroAssembler::card_table_write(volatile jbyte* byte_map_base, Register tmp, Register obj) { #ifdef _LP64 srlx(obj, CardTableModRefBS::card_shift, obj); @@ -3810,7 +3810,7 @@ static u_char* dirty_card_log_enqueue_end = 0; // This gets to assume that o0 contains the object address. -static void generate_dirty_card_log_enqueue(jbyte* byte_map_base) { +static void generate_dirty_card_log_enqueue(volatile jbyte* byte_map_base) { BufferBlob* bb = BufferBlob::create("dirty_card_enqueue", EnqueueCodeSize*2); CodeBuffer buf(bb); MacroAssembler masm(&buf); @@ -3824,7 +3824,7 @@ #else __ srl(O0, CardTableModRefBS::card_shift, O0); #endif - AddressLiteral addrlit(byte_map_base); + AddressLiteral addrlit((address)byte_map_base); __ set(addrlit, O1); // O1 := __ ldub(O0, O1, O2); // O2 := [O0 + O1] @@ -3905,7 +3905,7 @@ } static inline void -generate_dirty_card_log_enqueue_if_necessary(jbyte* byte_map_base) { +generate_dirty_card_log_enqueue_if_necessary(volatile jbyte* byte_map_base) { if (dirty_card_log_enqueue == 0) { generate_dirty_card_log_enqueue(byte_map_base); assert(dirty_card_log_enqueue != 0, "postcondition."); @@ -5117,4 +5117,3 @@ not1(crc); } -