< prev index next >
src/share/vm/gc_implementation/shenandoah/shenandoahBarrierSet.hpp
Print this page
rev 10525 : [backport] Replace ShBarrierSet* casts with accessor
rev 10533 : [backport] Replace risky SBS::need_update_refs_barrier with straightforward check
rev 10534 : [backport] Pre-filter oops before enqueing them in SBS slowpaths
rev 10551 : [backport] Remove safe_equals()
rev 10594 : [backport] Split write barrier paths for mutator and GC workers
@@ -35,10 +35,16 @@
public:
ShenandoahBarrierSet(ShenandoahHeap* heap);
+ inline static ShenandoahBarrierSet* barrier_set() {
+ BarrierSet *bs = oopDesc::bs();
+ assert(bs->kind() == BarrierSet::ShenandoahBarrierSet, "sanity");
+ return (ShenandoahBarrierSet*)bs;
+ }
+
void print_on(outputStream* st) const;
bool is_a(BarrierSet::Name bsn);
bool has_read_prim_array_opt();
@@ -98,20 +104,19 @@
virtual oop write_barrier(oop obj);
static oopDesc* write_barrier_IRT(oopDesc* src);
static oopDesc* write_barrier_JRT(oopDesc* src);
+ oop write_barrier_mutator(oop obj);
+
bool obj_equals(oop obj1, oop obj2);
bool obj_equals(narrowOop obj1, narrowOop obj2);
-#ifdef ASSERT
- virtual void verify_safe_oop(oop p);
- virtual void verify_safe_oop(narrowOop p);
-#endif
+ void enqueue(oop obj);
private:
- bool need_update_refs_barrier();
+ inline bool need_update_refs_barrier();
template <class T>
void write_ref_array_loop(HeapWord* start, size_t count);
#ifndef CC_INTERP
< prev index next >