mirror of
https://github.com/openjdk/jdk.git
synced 2025-09-18 18:14:38 +02:00
6672698: mangle_unused_area() should not remangle the entire heap at each collection
Maintain a high water mark for the allocations in a space and mangle only up to that high water mark. Reviewed-by: ysr, apetrusenko
This commit is contained in:
parent
0d9452401c
commit
18dbebd143
43 changed files with 1299 additions and 206 deletions
|
@ -279,6 +279,9 @@ protected:
|
|||
virtual void gc_prologue(bool full);
|
||||
virtual void gc_epilogue(bool full);
|
||||
|
||||
// Save the tops for eden, from, and to
|
||||
virtual void record_spaces_top();
|
||||
|
||||
// Doesn't require additional work during GC prologue and epilogue
|
||||
virtual bool performs_in_place_marking() const { return false; }
|
||||
|
||||
|
@ -299,9 +302,12 @@ protected:
|
|||
|
||||
// For non-youngest collection, the DefNewGeneration can contribute
|
||||
// "to-space".
|
||||
void contribute_scratch(ScratchBlock*& list, Generation* requestor,
|
||||
virtual void contribute_scratch(ScratchBlock*& list, Generation* requestor,
|
||||
size_t max_alloc_words);
|
||||
|
||||
// Reset for contribution of "to-space".
|
||||
virtual void reset_scratch();
|
||||
|
||||
// GC support
|
||||
virtual void compute_new_size();
|
||||
virtual void collect(bool full,
|
||||
|
@ -331,7 +337,12 @@ protected:
|
|||
void verify(bool allow_dirty);
|
||||
|
||||
protected:
|
||||
void compute_space_boundaries(uintx minimum_eden_size);
|
||||
// If clear_space is true, clear the survivor spaces. Eden is
|
||||
// cleared if the minimum size of eden is 0. If mangle_space
|
||||
// is true, also mangle the space in debug mode.
|
||||
void compute_space_boundaries(uintx minimum_eden_size,
|
||||
bool clear_space,
|
||||
bool mangle_space);
|
||||
// Scavenge support
|
||||
void swap_spaces();
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue