< 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 >