< prev index next >
src/share/vm/gc/shared/barrierSet.cpp
Print this page
rev 12854 : [mq]: gcinterface.patch
*** 29,44 ****
// count is number of array elements being written
void BarrierSet::static_write_ref_array_pre(HeapWord* start, size_t count) {
assert(count <= (size_t)max_intx, "count too large");
if (UseCompressedOops) {
! Universe::heap()->barrier_set()->write_ref_array_pre((narrowOop*)start, (int)count, false);
} else {
! Universe::heap()->barrier_set()->write_ref_array_pre( (oop*)start, (int)count, false);
}
}
// count is number of array elements being written
void BarrierSet::static_write_ref_array_post(HeapWord* start, size_t count) {
// simply delegate to instance method
! Universe::heap()->barrier_set()->write_ref_array(start, count);
}
--- 29,76 ----
// count is number of array elements being written
void BarrierSet::static_write_ref_array_pre(HeapWord* start, size_t count) {
assert(count <= (size_t)max_intx, "count too large");
if (UseCompressedOops) {
! GC::gc()->heap()->barrier_set()->write_ref_array_pre((narrowOop*)start, (int)count, false);
} else {
! GC::gc()->heap()->barrier_set()->write_ref_array_pre( (oop*)start, (int)count, false);
}
}
// count is number of array elements being written
void BarrierSet::static_write_ref_array_post(HeapWord* start, size_t count) {
// simply delegate to instance method
! GC::gc()->heap()->barrier_set()->write_ref_array(start, count);
! }
!
! void BarrierSet::oop_store(oop* p, oop v) {
! write_ref_field_pre(p, v);
! oopDesc::encode_store_heap_oop(p, v);
! write_ref_field(p, v, false /* release */);
! }
!
! void BarrierSet::oop_store(narrowOop* p, oop v) {
! write_ref_field_pre(p, v);
! oopDesc::encode_store_heap_oop(p, v);
! write_ref_field(p, v, false /* release */);
! }
!
! void BarrierSet::oop_store(volatile oop* p, oop v) {
! write_ref_field_pre((oop*) p, v); // cast away volatile
! oopDesc::release_encode_store_heap_oop(p, v);
! write_ref_field((void*) p, v, true); // cast away type
! }
!
! void BarrierSet::oop_store(volatile narrowOop* p, oop v) {
! write_ref_field_pre((narrowOop*) p, v); // cast away volatile
! oopDesc::release_encode_store_heap_oop(p, v);
! write_ref_field((void*) p, v, true /* release */); // cast away type
! }
!
! void BarrierSet::klass_oop_store(oop* p, oop v) {
! oopDesc::encode_store_heap_oop(p, v);
! }
!
! void BarrierSet::klass_oop_store(volatile oop* p, oop v) {
! oopDesc::release_encode_store_heap_oop(p, v);
}
< prev index next >