< prev index next >

src/share/vm/oops/instanceKlass.cpp

Print this page

        

@@ -469,10 +469,11 @@
 }
 
 void InstanceKlass::eager_initialize_impl(instanceKlassHandle this_k) {
   EXCEPTION_MARK;
   oop init_lock = this_k->init_lock();
+  init_lock = oopDesc::bs()->write_barrier(init_lock);
   ObjectLocker ol(init_lock, THREAD, init_lock != NULL);
 
   // abort if someone beat us to the initialization
   if (!this_k->is_not_initialized()) return;  // note: not equivalent to is_initialized()
 

@@ -615,10 +616,11 @@
                              PerfClassTraceTime::CLASS_LINK);
 
   // verification & rewriting
   {
     oop init_lock = this_k->init_lock();
+    init_lock = oopDesc::bs()->write_barrier(init_lock);
     ObjectLocker ol(init_lock, THREAD, init_lock != NULL);
     // rewritten will have been set if loader constraint error found
     // on an earlier link attempt
     // don't verify or rewrite if already rewritten
 

@@ -748,10 +750,11 @@
 
   // refer to the JVM book page 47 for description of steps
   // Step 1
   {
     oop init_lock = this_k->init_lock();
+    init_lock = oopDesc::bs()->write_barrier(init_lock);
     ObjectLocker ol(init_lock, THREAD, init_lock != NULL);
 
     Thread *self = THREAD; // it's passed the current thread
 
     // Step 2

@@ -880,10 +883,11 @@
   set_initialization_state_and_notify_impl(kh, state, CHECK);
 }
 
 void InstanceKlass::set_initialization_state_and_notify_impl(instanceKlassHandle this_k, ClassState state, TRAPS) {
   oop init_lock = this_k->init_lock();
+  init_lock = oopDesc::bs()->write_barrier(init_lock);
   ObjectLocker ol(init_lock, THREAD, init_lock != NULL);
   this_k->set_init_state(state);
   this_k->fence_and_clear_init_lock();
   ol.notify_all(CHECK);
 }

@@ -2252,11 +2256,11 @@
     _source_debug_extension = sde;
   }
 }
 
 address InstanceKlass::static_field_addr(int offset) {
-  return (address)(offset + InstanceMirrorKlass::offset_of_static_fields() + cast_from_oop<intptr_t>(java_mirror()));
+  return (address)(offset + InstanceMirrorKlass::offset_of_static_fields() + cast_from_oop<intptr_t>(oopDesc::bs()->write_barrier(java_mirror())));
 }
 
 
 const char* InstanceKlass::signature_name() const {
   int hash_len = 0;
< prev index next >