# HG changeset patch # Parent 269a183cebc5cd49adb268c81e706a01f1a7714d diff --git a/src/share/vm/runtime/synchronizer.cpp b/src/share/vm/runtime/synchronizer.cpp --- a/src/share/vm/runtime/synchronizer.cpp +++ b/src/share/vm/runtime/synchronizer.cpp @@ -224,14 +224,15 @@ // We don't need to use fast path here, because it must have been // failed in the interpreter/compiler code. void ObjectSynchronizer::slow_enter(Handle obj, BasicLock* lock, TRAPS) { - markOop mark = obj->mark(); + oop o = Universe::heap()->barrier_set()->write_barrier(obj()); + markOop mark = o->mark(); assert(!mark->has_bias_pattern(), "should not see bias pattern here"); if (mark->is_neutral()) { // Anticipate successful CAS -- the ST of the displaced mark must // be visible <= the ST performed by the CAS. lock->set_displaced_header(mark); - if (mark == obj()->cas_set_mark((markOop) lock, mark)) { + if (mark == o->cas_set_mark((markOop) lock, mark)) { TEVENT (slow_enter: release stacklock) ; return ; } @@ -239,7 +240,7 @@ } else if (mark->has_locker() && THREAD->is_lock_owned((address)mark->locker())) { assert(lock != mark->locker(), "must not re-lock the same lock"); - assert(lock != (BasicLock*)obj->mark(), "don't relock with same BasicLock"); + assert(lock != (BasicLock*)o->mark(), "don't relock with same BasicLock"); lock->set_displaced_header(NULL); return; }