< prev index next >

src/hotspot/share/gc/shared/cardTableBarrierSet.hpp

Print this page

 75   void write_ref_array_work(MemRegion mr);
 76 
 77  public:
 78   // Record a reference update. Note that these versions are precise!
 79   // The scanning code has to handle the fact that the write barrier may be
 80   // either precise or imprecise. We make non-virtual inline variants of
 81   // these functions here for performance.
 82   template <DecoratorSet decorators, typename T>
 83   void write_ref_field_post(T* field, oop newVal);
 84 
 85   virtual void invalidate(MemRegion mr);
 86 
 87   // ReduceInitialCardMarks
 88   void initialize_deferred_card_mark_barriers();
 89 
 90   // If the CollectedHeap was asked to defer a store barrier above,
 91   // this informs it to flush such a deferred store barrier to the
 92   // remembered set.
 93   void flush_deferred_card_mark_barrier(JavaThread* thread);
 94 



 95   // If a compiler is eliding store barriers for TLAB-allocated objects,
 96   // we will be informed of a slow-path allocation by a call
 97   // to on_slowpath_allocation_exit() below. Such a call precedes the
 98   // initialization of the object itself, and no post-store-barriers will
 99   // be issued. Some heap types require that the barrier strictly follows
100   // the initializing stores. (This is currently implemented by deferring the
101   // barrier until the next slow-path allocation or gc-related safepoint.)
102   // This interface answers whether a particular barrier type needs the card
103   // mark to be thus strictly sequenced after the stores.
104   virtual bool card_mark_must_follow_store() const;
105 
106   virtual void on_slowpath_allocation_exit(JavaThread* thread, oop new_obj);
107   virtual void on_thread_detach(Thread* thread);
108 
109   virtual void make_parsable(JavaThread* thread) { flush_deferred_card_mark_barrier(thread); }
110 
111   virtual void print_on(outputStream* st) const;
112 
113   template <DecoratorSet decorators, typename BarrierSetT = CardTableBarrierSet>
114   class AccessBarrier: public ModRefBarrierSet::AccessBarrier<decorators, BarrierSetT> {};

 75   void write_ref_array_work(MemRegion mr);
 76 
 77  public:
 78   // Record a reference update. Note that these versions are precise!
 79   // The scanning code has to handle the fact that the write barrier may be
 80   // either precise or imprecise. We make non-virtual inline variants of
 81   // these functions here for performance.
 82   template <DecoratorSet decorators, typename T>
 83   void write_ref_field_post(T* field, oop newVal);
 84 
 85   virtual void invalidate(MemRegion mr);
 86 
 87   // ReduceInitialCardMarks
 88   void initialize_deferred_card_mark_barriers();
 89 
 90   // If the CollectedHeap was asked to defer a store barrier above,
 91   // this informs it to flush such a deferred store barrier to the
 92   // remembered set.
 93   void flush_deferred_card_mark_barrier(JavaThread* thread);
 94 
 95   // Loom support
 96   static constexpr bool is_concurrent_gc() { return false; }
 97 
 98   // If a compiler is eliding store barriers for TLAB-allocated objects,
 99   // we will be informed of a slow-path allocation by a call
100   // to on_slowpath_allocation_exit() below. Such a call precedes the
101   // initialization of the object itself, and no post-store-barriers will
102   // be issued. Some heap types require that the barrier strictly follows
103   // the initializing stores. (This is currently implemented by deferring the
104   // barrier until the next slow-path allocation or gc-related safepoint.)
105   // This interface answers whether a particular barrier type needs the card
106   // mark to be thus strictly sequenced after the stores.
107   virtual bool card_mark_must_follow_store() const;
108 
109   virtual void on_slowpath_allocation_exit(JavaThread* thread, oop new_obj);
110   virtual void on_thread_detach(Thread* thread);
111 
112   virtual void make_parsable(JavaThread* thread) { flush_deferred_card_mark_barrier(thread); }
113 
114   virtual void print_on(outputStream* st) const;
115 
116   template <DecoratorSet decorators, typename BarrierSetT = CardTableBarrierSet>
117   class AccessBarrier: public ModRefBarrierSet::AccessBarrier<decorators, BarrierSetT> {};
< prev index next >