comparison src/share/vm/runtime/biasedLocking.cpp @ 14443:3205e78d8193

8029396: PPC64 (part 212): Several memory ordering fixes in C-code. Summary: memory ordering fixes in GC and other runtime code showing on PPC64. Reviewed-by: kvn, coleenp
author goetz
date Mon, 02 Dec 2013 10:26:14 +0100
parents 190899198332
children 3df21373e577
comparison
equal deleted inserted replaced
14442:1174c8abbdb6 14443:3205e78d8193
231 } 231 }
232 if (highest_lock != NULL) { 232 if (highest_lock != NULL) {
233 // Fix up highest lock to contain displaced header and point 233 // Fix up highest lock to contain displaced header and point
234 // object at it 234 // object at it
235 highest_lock->set_displaced_header(unbiased_prototype); 235 highest_lock->set_displaced_header(unbiased_prototype);
236 // Reset object header to point to displaced mark 236 // Reset object header to point to displaced mark.
237 obj->set_mark(markOopDesc::encode(highest_lock)); 237 // Must release storing the lock address for platforms without TSO
238 // ordering (e.g. ppc).
239 obj->release_set_mark(markOopDesc::encode(highest_lock));
238 assert(!obj->mark()->has_bias_pattern(), "illegal mark state: stack lock used bias bit"); 240 assert(!obj->mark()->has_bias_pattern(), "illegal mark state: stack lock used bias bit");
239 if (TraceBiasedLocking && (Verbose || !is_bulk)) { 241 if (TraceBiasedLocking && (Verbose || !is_bulk)) {
240 tty->print_cr(" Revoked bias of currently-locked object"); 242 tty->print_cr(" Revoked bias of currently-locked object");
241 } 243 }
242 } else { 244 } else {