comparison src/cpu/sparc/vm/interp_masm_sparc.cpp @ 11006:b88209cf98c0

Merge
author kvn
date Thu, 20 Jun 2013 16:08:11 -0700
parents 46c544b8fbfc
children 6b0fd0964b87 8cdf3f43f63e
comparison
equal deleted inserted replaced
10994:9f9c0a163cc5 11006:b88209cf98c0
1208 or3(mark_reg, markOopDesc::unlocked_value, mark_reg); 1208 or3(mark_reg, markOopDesc::unlocked_value, mark_reg);
1209 // initialize the box (Must happen before we update the object mark!) 1209 // initialize the box (Must happen before we update the object mark!)
1210 st_ptr(mark_reg, lock_addr, BasicLock::displaced_header_offset_in_bytes()); 1210 st_ptr(mark_reg, lock_addr, BasicLock::displaced_header_offset_in_bytes());
1211 // compare and exchange object_addr, markOop | 1, stack address of basicLock 1211 // compare and exchange object_addr, markOop | 1, stack address of basicLock
1212 assert(mark_addr.disp() == 0, "cas must take a zero displacement"); 1212 assert(mark_addr.disp() == 0, "cas must take a zero displacement");
1213 casx_under_lock(mark_addr.base(), mark_reg, temp_reg, 1213 cas_ptr(mark_addr.base(), mark_reg, temp_reg);
1214 (address)StubRoutines::Sparc::atomic_memory_operation_lock_addr());
1215 1214
1216 // if the compare and exchange succeeded we are done (we saw an unlocked object) 1215 // if the compare and exchange succeeded we are done (we saw an unlocked object)
1217 cmp_and_brx_short(mark_reg, temp_reg, Assembler::equal, Assembler::pt, done); 1216 cmp_and_brx_short(mark_reg, temp_reg, Assembler::equal, Assembler::pt, done);
1218 1217
1219 // We did not see an unlocked object so try the fast recursive case 1218 // We did not see an unlocked object so try the fast recursive case
1289 1288
1290 // we have the displaced header in displaced_header_reg 1289 // we have the displaced header in displaced_header_reg
1291 // we expect to see the stack address of the basicLock in case the 1290 // we expect to see the stack address of the basicLock in case the
1292 // lock is still a light weight lock (lock_reg) 1291 // lock is still a light weight lock (lock_reg)
1293 assert(mark_addr.disp() == 0, "cas must take a zero displacement"); 1292 assert(mark_addr.disp() == 0, "cas must take a zero displacement");
1294 casx_under_lock(mark_addr.base(), lock_reg, displaced_header_reg, 1293 cas_ptr(mark_addr.base(), lock_reg, displaced_header_reg);
1295 (address)StubRoutines::Sparc::atomic_memory_operation_lock_addr());
1296 cmp(lock_reg, displaced_header_reg); 1294 cmp(lock_reg, displaced_header_reg);
1297 brx(Assembler::equal, true, Assembler::pn, done); 1295 brx(Assembler::equal, true, Assembler::pn, done);
1298 delayed()->st_ptr(G0, lockobj_addr); // free entry 1296 delayed()->st_ptr(G0, lockobj_addr); // free entry
1299 1297
1300 // The lock has been converted into a heavy lock and hence 1298 // The lock has been converted into a heavy lock and hence