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