--- old/src/cpu/sparc/vm/templateTable_sparc.cpp 2011-03-11 15:50:35.929000000 -0800 +++ new/src/cpu/sparc/vm/templateTable_sparc.cpp 2011-03-11 15:50:35.701250000 -0800 @@ -57,7 +57,11 @@ case BarrierSet::G1SATBCT: case BarrierSet::G1SATBCTLogging: { - __ g1_write_barrier_pre( base, index, offset, tmp, /*preserve_o_regs*/true); + // Load and record the previous value. + __ g1_write_barrier_pre(base, index, offset, + noreg /* pre_val */, + tmp, true /*preserve_o_regs*/); + if (index == noreg ) { assert(Assembler::is_simm13(offset), "fix this code"); __ store_heap_oop(val, base, offset);