--- a/hotspot/src/share/vm/runtime/biasedLocking.cpp Thu Dec 05 15:13:12 2013 -0800
+++ b/hotspot/src/share/vm/runtime/biasedLocking.cpp Mon Dec 02 10:26:14 2013 +0100
@@ -233,8 +233,10 @@
// Fix up highest lock to contain displaced header and point
// object at it
highest_lock->set_displaced_header(unbiased_prototype);
- // Reset object header to point to displaced mark
- obj->set_mark(markOopDesc::encode(highest_lock));
+ // Reset object header to point to displaced mark.
+ // Must release storing the lock address for platforms without TSO
+ // ordering (e.g. ppc).
+ obj->release_set_mark(markOopDesc::encode(highest_lock));
assert(!obj->mark()->has_bias_pattern(), "illegal mark state: stack lock used bias bit");
if (TraceBiasedLocking && (Verbose || !is_bulk)) {
tty->print_cr(" Revoked bias of currently-locked object");