< prev index next >
src/hotspot/share/gc/g1/g1BarrierSet.cpp
8198949_arraycopy
*
*/
#include "precompiled.hpp"
#include "gc/g1/g1BarrierSet.inline.hpp"
+ #include "gc/g1/g1BSCodeGen.hpp"
#include "gc/g1/g1CardTable.inline.hpp"
#include "gc/g1/g1CollectedHeap.inline.hpp"
#include "gc/g1/heapRegion.hpp"
#include "gc/g1/satbMarkQueue.hpp"
#include "logging/log.hpp"
***************
MutexLockerEx x(Shared_SATB_Q_lock, Mutex::_no_safepoint_check_flag);
JavaThread::satb_mark_queue_set().shared_satb_queue()->enqueue(pre_val);
}
}
+ BarrierSetCodeGen *G1BarrierSet::make_code_gen() {
+ return new G1BSCodeGen();
+ }
+
+ void G1BarrierSet::write_ref_array_pre_oop_entry(oop* dst, size_t length) {
+ assert(length <= (size_t)max_intx, "count too large");
+ G1BarrierSet *bs = barrier_set_cast<G1BarrierSet>(BarrierSet::barrier_set());
+ bs->G1BarrierSet::write_ref_array_pre(dst, (int)length, false);
+ }
+
+ void G1BarrierSet::write_ref_array_pre_narrow_oop_entry(narrowOop* dst, size_t length) {
+ assert(length <= (size_t)max_intx, "count too large");
+ G1BarrierSet *bs = barrier_set_cast<G1BarrierSet>(BarrierSet::barrier_set());
+ bs->G1BarrierSet::write_ref_array_pre(dst, (int)length, false);
+ }
+
+ void G1BarrierSet::write_ref_array_post_entry(HeapWord* dst, size_t length) {
+ G1BarrierSet *bs = barrier_set_cast<G1BarrierSet>(BarrierSet::barrier_set());
+ bs->G1BarrierSet::write_ref_array(dst, (int)length);
+ }
+
+
template <class T> void
G1BarrierSet::write_ref_array_pre_work(T* dst, int count) {
if (!JavaThread::satb_mark_queue_set().is_active()) return;
T* elem_ptr = dst;
for (int i = 0; i < count; i++, elem_ptr++) {
< prev index next >