equal
deleted
inserted
replaced
269 |
269 |
270 bool borrow_reg = (tmp == noreg); |
270 bool borrow_reg = (tmp == noreg); |
271 if (borrow_reg) { |
271 if (borrow_reg) { |
272 // No free registers available. Make one useful. |
272 // No free registers available. Make one useful. |
273 tmp = LP64_ONLY(rscratch1) NOT_LP64(rdx); |
273 tmp = LP64_ONLY(rscratch1) NOT_LP64(rdx); |
|
274 if (tmp == dst) { |
|
275 tmp = LP64_ONLY(rscratch2) NOT_LP64(rcx); |
|
276 } |
274 __ push(tmp); |
277 __ push(tmp); |
275 } |
278 } |
|
279 |
|
280 assert_different_registers(dst, tmp); |
276 |
281 |
277 Label done; |
282 Label done; |
278 __ movptr(tmp, Address(dst, oopDesc::mark_offset_in_bytes())); |
283 __ movptr(tmp, Address(dst, oopDesc::mark_offset_in_bytes())); |
279 __ notptr(tmp); |
284 __ notptr(tmp); |
280 __ testb(tmp, markWord::marked_value); |
285 __ testb(tmp, markWord::marked_value); |