< prev index next >

src/share/vm/oops/objArrayOop.hpp

Print this page

        

@@ -23,10 +23,11 @@
  */
 
 #ifndef SHARE_VM_OOPS_OBJARRAYOOP_HPP
 #define SHARE_VM_OOPS_OBJARRAYOOP_HPP
 
+#include "gc/shared/barrierSet.hpp"
 #include "gc/shared/specialized_oop_closures.hpp"
 #include "oops/arrayOop.hpp"
 
 // An objArrayOop is an array containing oops.
 // Evaluating "String arg[10]" will create an objArrayOop.

@@ -80,14 +81,15 @@
 
   // Accessing
   oop obj_at(int index) const;
 
   void obj_at_put(int index, oop value) {
+    objArrayOop p = (objArrayOop) oopDesc::bs()->write_barrier(this);
     if (UseCompressedOops) {
-      oop_store(obj_at_addr<narrowOop>(index), value);
+      oop_store(p->obj_at_addr<narrowOop>(index), value);
     } else {
-      oop_store(obj_at_addr<oop>(index), value);
+      oop_store(p->obj_at_addr<oop>(index), value);
     }
   }
 
   oop atomic_compare_exchange_oop(int index, oop exchange_value, oop compare_value);
 
< prev index next >