< prev index next >
src/share/vm/gc/g1/g1SATBCardTableModRefBS.cpp
Print this page
rev 12854 : [mq]: gcinterface.patch
@@ -261,5 +261,27 @@
// Last reference to this region, remove the nmethod from the rset.
hr->remove_strong_code_root(nm);
}
}
}
+
+void G1SATBCardTableModRefBS::klass_oop_store(oop* p, oop v) {
+ // This barrier is used by G1 to remember the old oop values, so
+ // that we don't forget any objects that were live at the snapshot at
+ // the beginning. This function is only used when we write oops into Klasses.
+ oop obj = oopDesc::load_heap_oop(p);
+ if (! oopDesc::is_null(obj)) {
+ enqueue(obj);
+ }
+ BarrierSet::klass_oop_store(p, v);
+}
+
+void G1SATBCardTableModRefBS::klass_oop_store(volatile oop* p, oop v) {
+ // This barrier is used by G1 to remember the old oop values, so
+ // that we don't forget any objects that were live at the snapshot at
+ // the beginning. This function is only used when we write oops into Klasses.
+ oop obj = oopDesc::load_heap_oop((oop*) p);
+ if (! oopDesc::is_null(obj)) {
+ enqueue(obj);
+ }
+ BarrierSet::klass_oop_store(p, v);
+}
< prev index next >