< 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 >