< prev index next >
src/share/vm/gc/shared/barrierSet.cpp
Print this page
rev 12854 : [mq]: gcinterface.patch
@@ -29,16 +29,48 @@
// 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);
+ GC::gc()->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);
+ 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
- Universe::heap()->barrier_set()->write_ref_array(start, count);
+ 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 >