< prev index next >

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

Print this page
rev 50928 : Process remaining SATB buffers in final mark/traverse loop instead of separate phase
rev 50929 : [mq]: satb1.patch


 101   template<class T, UpdateRefsMode UPDATE_REFS, bool STRING_DEDUP>
 102   static inline void mark_through_ref(T* p, ShenandoahHeap* heap, ShenandoahObjToScanQueue* q, ShenandoahStrDedupQueue* dq = NULL);
 103 
 104   void mark_from_roots();
 105 
 106   // Prepares unmarked root objects by marking them and putting
 107   // them into the marking task queue.
 108   void init_mark_roots();
 109   void mark_roots(ShenandoahPhaseTimings::Phase root_phase);
 110   void update_roots(ShenandoahPhaseTimings::Phase root_phase);
 111 
 112   void shared_finish_mark_from_roots(bool full_gc);
 113   void finish_mark_from_roots();
 114   // Those are only needed public because they're called from closures.
 115 
 116   inline bool try_queue(ShenandoahObjToScanQueue* q, ShenandoahMarkTask &task);
 117 
 118   ShenandoahObjToScanQueue* get_queue(uint worker_id);
 119   void clear_queue(ShenandoahObjToScanQueue *q);
 120 
 121   void drain_satb_buffers(uint worker_id);
 122   ShenandoahObjToScanQueueSet* task_queues() { return _task_queues;}
 123 
 124   jushort* get_liveness(uint worker_id);
 125 
 126   void cancel();
 127 
 128   void preclean_weak_refs();
 129 
 130   void concurrent_scan_code_roots(uint worker_id, ReferenceProcessor* rp, bool update_ref);
 131 private:
 132 
 133   void weak_refs_work(bool full_gc);
 134   void weak_refs_work_doit(bool full_gc);
 135 
 136 #if TASKQUEUE_STATS
 137   static void print_taskqueue_stats_hdr(outputStream* const st);
 138   void print_taskqueue_stats() const;
 139   void reset_taskqueue_stats();
 140 #endif // TASKQUEUE_STATS
 141 


 101   template<class T, UpdateRefsMode UPDATE_REFS, bool STRING_DEDUP>
 102   static inline void mark_through_ref(T* p, ShenandoahHeap* heap, ShenandoahObjToScanQueue* q, ShenandoahStrDedupQueue* dq = NULL);
 103 
 104   void mark_from_roots();
 105 
 106   // Prepares unmarked root objects by marking them and putting
 107   // them into the marking task queue.
 108   void init_mark_roots();
 109   void mark_roots(ShenandoahPhaseTimings::Phase root_phase);
 110   void update_roots(ShenandoahPhaseTimings::Phase root_phase);
 111 
 112   void shared_finish_mark_from_roots(bool full_gc);
 113   void finish_mark_from_roots();
 114   // Those are only needed public because they're called from closures.
 115 
 116   inline bool try_queue(ShenandoahObjToScanQueue* q, ShenandoahMarkTask &task);
 117 
 118   ShenandoahObjToScanQueue* get_queue(uint worker_id);
 119   void clear_queue(ShenandoahObjToScanQueue *q);
 120 

 121   ShenandoahObjToScanQueueSet* task_queues() { return _task_queues;}
 122 
 123   jushort* get_liveness(uint worker_id);
 124 
 125   void cancel();
 126 
 127   void preclean_weak_refs();
 128 
 129   void concurrent_scan_code_roots(uint worker_id, ReferenceProcessor* rp, bool update_ref);
 130 private:
 131 
 132   void weak_refs_work(bool full_gc);
 133   void weak_refs_work_doit(bool full_gc);
 134 
 135 #if TASKQUEUE_STATS
 136   static void print_taskqueue_stats_hdr(outputStream* const st);
 137   void print_taskqueue_stats() const;
 138   void reset_taskqueue_stats();
 139 #endif // TASKQUEUE_STATS
 140 
< prev index next >