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