< prev index next >
src/share/vm/oops/objArrayOop.hpp
Print this page
*** 23,32 ****
--- 23,33 ----
*/
#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,93 ****
// Accessing
oop obj_at(int index) const;
void obj_at_put(int index, oop value) {
if (UseCompressedOops) {
! oop_store(obj_at_addr<narrowOop>(index), value);
} else {
! oop_store(obj_at_addr<oop>(index), value);
}
}
oop atomic_compare_exchange_oop(int index, oop exchange_value, oop compare_value);
--- 81,95 ----
// 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(p->obj_at_addr<narrowOop>(index), value);
} else {
! 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 >