< prev index next >

src/hotspot/share/gc/shenandoah/shenandoahBarrierSet.hpp

Print this page
rev 54932 : 8221086: Shenandoah-specific workaround for JDK-8220671


  69   void write_ref_array_pre(oop* dst, size_t count, bool dest_uninitialized);
  70 
  71   void write_ref_array_pre(narrowOop* dst, size_t count, bool dest_uninitialized);
  72 
  73   // We export this to make it available in cases where the static
  74   // type of the barrier set is known.  Note that it is non-virtual.
  75   template <class T> inline void inline_write_ref_field_pre(T* field, oop new_val);
  76 
  77   // These are the more general virtual versions.
  78   void write_ref_field_pre_work(oop* field, oop new_val);
  79   void write_ref_field_pre_work(narrowOop* field, oop new_val);
  80   void write_ref_field_pre_work(void* field, oop new_val);
  81 
  82   void write_ref_field_work(void* v, oop o, bool release = false);
  83   void write_region(MemRegion mr);
  84 
  85   virtual void on_thread_create(Thread* thread);
  86   virtual void on_thread_destroy(Thread* thread);
  87   virtual void on_thread_attach(Thread* thread);
  88   virtual void on_thread_detach(Thread* thread);

  89 
  90   static inline oop resolve_forwarded_not_null(oop p);
  91   static inline oop resolve_forwarded(oop p);
  92 
  93   void storeval_barrier(oop obj);
  94   void keep_alive_barrier(oop obj);
  95 
  96   oop load_reference_barrier(oop obj);
  97   oop load_reference_barrier_mutator(oop obj);
  98   oop load_reference_barrier_not_null(oop obj);
  99 
 100   void enqueue(oop obj);
 101 
 102 private:
 103   inline bool need_update_refs_barrier();
 104 
 105   template <class T, bool STOREVAL_WRITE_BARRIER>
 106   void write_ref_array_loop(HeapWord* start, size_t count);
 107 
 108   oop load_reference_barrier_impl(oop obj);




  69   void write_ref_array_pre(oop* dst, size_t count, bool dest_uninitialized);
  70 
  71   void write_ref_array_pre(narrowOop* dst, size_t count, bool dest_uninitialized);
  72 
  73   // We export this to make it available in cases where the static
  74   // type of the barrier set is known.  Note that it is non-virtual.
  75   template <class T> inline void inline_write_ref_field_pre(T* field, oop new_val);
  76 
  77   // These are the more general virtual versions.
  78   void write_ref_field_pre_work(oop* field, oop new_val);
  79   void write_ref_field_pre_work(narrowOop* field, oop new_val);
  80   void write_ref_field_pre_work(void* field, oop new_val);
  81 
  82   void write_ref_field_work(void* v, oop o, bool release = false);
  83   void write_region(MemRegion mr);
  84 
  85   virtual void on_thread_create(Thread* thread);
  86   virtual void on_thread_destroy(Thread* thread);
  87   virtual void on_thread_attach(Thread* thread);
  88   virtual void on_thread_detach(Thread* thread);
  89   virtual bool needs_sts_sync_on_attach_detach() { return true; }
  90 
  91   static inline oop resolve_forwarded_not_null(oop p);
  92   static inline oop resolve_forwarded(oop p);
  93 
  94   void storeval_barrier(oop obj);
  95   void keep_alive_barrier(oop obj);
  96 
  97   oop load_reference_barrier(oop obj);
  98   oop load_reference_barrier_mutator(oop obj);
  99   oop load_reference_barrier_not_null(oop obj);
 100 
 101   void enqueue(oop obj);
 102 
 103 private:
 104   inline bool need_update_refs_barrier();
 105 
 106   template <class T, bool STOREVAL_WRITE_BARRIER>
 107   void write_ref_array_loop(HeapWord* start, size_t count);
 108 
 109   oop load_reference_barrier_impl(oop obj);


< prev index next >