< prev index next >

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

Print this page
rev 53862 : [mq]: java_attach_protocol
rev 53869 : [mq]: merge_attach


  85   // ReduceInitialCardMarks
  86   void initialize_deferred_card_mark_barriers();
  87 
  88   // If the CollectedHeap was asked to defer a store barrier above,
  89   // this informs it to flush such a deferred store barrier to the
  90   // remembered set.
  91   void flush_deferred_card_mark_barrier(JavaThread* thread);
  92 
  93   // If a compiler is eliding store barriers for TLAB-allocated objects,
  94   // we will be informed of a slow-path allocation by a call
  95   // to on_slowpath_allocation_exit() below. Such a call precedes the
  96   // initialization of the object itself, and no post-store-barriers will
  97   // be issued. Some heap types require that the barrier strictly follows
  98   // the initializing stores. (This is currently implemented by deferring the
  99   // barrier until the next slow-path allocation or gc-related safepoint.)
 100   // This interface answers whether a particular barrier type needs the card
 101   // mark to be thus strictly sequenced after the stores.
 102   virtual bool card_mark_must_follow_store() const;
 103 
 104   virtual void on_slowpath_allocation_exit(JavaThread* thread, oop new_obj);
 105   virtual void on_thread_detach(JavaThread* thread);
 106 
 107   virtual void make_parsable(JavaThread* thread) { flush_deferred_card_mark_barrier(thread); }
 108 
 109   virtual void print_on(outputStream* st) const;
 110 
 111   template <DecoratorSet decorators, typename BarrierSetT = CardTableBarrierSet>
 112   class AccessBarrier: public ModRefBarrierSet::AccessBarrier<decorators, BarrierSetT> {};
 113 };
 114 
 115 template<>
 116 struct BarrierSet::GetName<CardTableBarrierSet> {
 117   static const BarrierSet::Name value = BarrierSet::CardTableBarrierSet;
 118 };
 119 
 120 template<>
 121 struct BarrierSet::GetType<BarrierSet::CardTableBarrierSet> {
 122   typedef ::CardTableBarrierSet type;
 123 };
 124 
 125 #endif // SHARE_GC_SHARED_CARDTABLEBARRIERSET_HPP


  85   // ReduceInitialCardMarks
  86   void initialize_deferred_card_mark_barriers();
  87 
  88   // If the CollectedHeap was asked to defer a store barrier above,
  89   // this informs it to flush such a deferred store barrier to the
  90   // remembered set.
  91   void flush_deferred_card_mark_barrier(JavaThread* thread);
  92 
  93   // If a compiler is eliding store barriers for TLAB-allocated objects,
  94   // we will be informed of a slow-path allocation by a call
  95   // to on_slowpath_allocation_exit() below. Such a call precedes the
  96   // initialization of the object itself, and no post-store-barriers will
  97   // be issued. Some heap types require that the barrier strictly follows
  98   // the initializing stores. (This is currently implemented by deferring the
  99   // barrier until the next slow-path allocation or gc-related safepoint.)
 100   // This interface answers whether a particular barrier type needs the card
 101   // mark to be thus strictly sequenced after the stores.
 102   virtual bool card_mark_must_follow_store() const;
 103 
 104   virtual void on_slowpath_allocation_exit(JavaThread* thread, oop new_obj);
 105   virtual void on_thread_detach(Thread* thread);
 106 
 107   virtual void make_parsable(JavaThread* thread) { flush_deferred_card_mark_barrier(thread); }
 108 
 109   virtual void print_on(outputStream* st) const;
 110 
 111   template <DecoratorSet decorators, typename BarrierSetT = CardTableBarrierSet>
 112   class AccessBarrier: public ModRefBarrierSet::AccessBarrier<decorators, BarrierSetT> {};
 113 };
 114 
 115 template<>
 116 struct BarrierSet::GetName<CardTableBarrierSet> {
 117   static const BarrierSet::Name value = BarrierSet::CardTableBarrierSet;
 118 };
 119 
 120 template<>
 121 struct BarrierSet::GetType<BarrierSet::CardTableBarrierSet> {
 122   typedef ::CardTableBarrierSet type;
 123 };
 124 
 125 #endif // SHARE_GC_SHARED_CARDTABLEBARRIERSET_HPP
< prev index next >