< prev index next >

src/share/vm/gc/g1/g1ParScanThreadState.hpp

Print this page
rev 8813 : imported patch 8003237-no-wait-for-free-list
rev 8814 : imported patch jon-fast-evac-failure
rev 8815 : [mq]: bengt-jon-more-naming
rev 8816 : [mq]: 8133470-fix-plab-inline
rev 8823 : imported patch 8040162-avoid-reallocating-plab-allocators

*** 37,47 **** class G1PLABAllocator; class HeapRegion; class outputStream; ! class G1ParScanThreadState : public StackObj { private: G1CollectedHeap* _g1h; RefToScanQueue* _refs; DirtyCardQueue _dcq; G1SATBCardTableModRefBS* _ct_bs; --- 37,47 ---- class G1PLABAllocator; class HeapRegion; class outputStream; ! class G1ParScanThreadState : public CHeapObj<mtGC> { private: G1CollectedHeap* _g1h; RefToScanQueue* _refs; DirtyCardQueue _dcq; G1SATBCardTableModRefBS* _ct_bs;
*** 56,73 **** G1ParScanClosure _scanner; int _hash_seed; uint _worker_id; - size_t _term_attempts; - - double _start; - double _start_strong_roots; - double _strong_roots_time; - double _start_term; - double _term_time; - // Map from young-age-index (0 == not young, 1 is youngest) to // surviving words. base is what we get back from the malloc call size_t* _surviving_young_words_base; // this points into the array, as we use the first few entries for padding size_t* _surviving_young_words; --- 56,65 ----
*** 88,100 **** err_msg("Dest state is invalid: " CSETSTATE_FORMAT, _dest[original.value()].value())); return _dest[original.value()]; } public: ! G1ParScanThreadState(G1CollectedHeap* g1h, uint worker_id, ReferenceProcessor* rp); ~G1ParScanThreadState(); ageTable* age_table() { return &_age_table; } #ifdef ASSERT bool queue_is_empty() const { return _refs->is_empty(); } --- 80,94 ---- err_msg("Dest state is invalid: " CSETSTATE_FORMAT, _dest[original.value()].value())); return _dest[original.value()]; } public: ! G1ParScanThreadState(G1CollectedHeap* g1h, uint worker_id); ~G1ParScanThreadState(); + void set_ref_processor(ReferenceProcessor* rp) { _scanner.set_ref_processor(rp); } + ageTable* age_table() { return &_age_table; } #ifdef ASSERT bool queue_is_empty() const { return _refs->is_empty(); }
*** 117,160 **** } } uint worker_id() { return _worker_id; } ! size_t term_attempts() const { return _term_attempts; } ! void note_term_attempt() { _term_attempts++; } ! ! void start_strong_roots() { ! _start_strong_roots = os::elapsedTime(); ! } ! void end_strong_roots() { ! _strong_roots_time += (os::elapsedTime() - _start_strong_roots); ! } ! double strong_roots_time() const { return _strong_roots_time; } ! ! void start_term_time() { ! note_term_attempt(); ! _start_term = os::elapsedTime(); ! } ! void end_term_time() { ! _term_time += (os::elapsedTime() - _start_term); ! } ! double term_time() const { return _term_time; } ! ! double elapsed_time() const { ! return os::elapsedTime() - _start; ! } ! ! // Print the header for the per-thread termination statistics. ! static void print_termination_stats_hdr(outputStream* const st = gclog_or_tty); ! ! // Print actual per-thread termination statistics. ! void print_termination_stats(outputStream* const st = gclog_or_tty) const; size_t* surviving_young_words() { ! // We add on to hide entry 0 which accumulates surviving words for // age -1 regions (i.e. non-young ones) ! return _surviving_young_words; } private: #define G1_PARTIAL_ARRAY_MASK 0x2 --- 111,128 ---- } } uint worker_id() { return _worker_id; } ! // Returns the current amount of waste due to alignment or not being able to fit ! // objects within LABs and the undo waste. ! virtual void waste(size_t& wasted, size_t& undo_wasted); size_t* surviving_young_words() { ! // We add one to hide entry 0 which accumulates surviving words for // age -1 regions (i.e. non-young ones) ! return _surviving_young_words + 1; } private: #define G1_PARTIAL_ARRAY_MASK 0x2
< prev index next >