mirror of
https://github.com/openjdk/jdk.git
synced 2025-09-22 03:54:33 +02:00
6765804: GC "dead ratios" should be unsigned
Reviewed-by: ysr, tonyp
This commit is contained in:
parent
8eb2e02296
commit
401e04572a
6 changed files with 27 additions and 26 deletions
|
@ -90,10 +90,10 @@ void PSMarkSweepDecorator::precompact() {
|
|||
*/
|
||||
bool skip_dead = ((PSMarkSweep::total_invocations() % MarkSweepAlwaysCompactCount) != 0);
|
||||
|
||||
ssize_t allowed_deadspace = 0;
|
||||
size_t allowed_deadspace = 0;
|
||||
if (skip_dead) {
|
||||
int ratio = allowed_dead_ratio();
|
||||
allowed_deadspace = (space()->capacity_in_bytes() * ratio / 100) / HeapWordSize;
|
||||
const size_t ratio = allowed_dead_ratio();
|
||||
allowed_deadspace = space()->capacity_in_words() * ratio / 100;
|
||||
}
|
||||
|
||||
// Fetch the current destination decorator
|
||||
|
@ -271,10 +271,10 @@ void PSMarkSweepDecorator::precompact() {
|
|||
dest->set_compaction_top(compact_top);
|
||||
}
|
||||
|
||||
bool PSMarkSweepDecorator::insert_deadspace(ssize_t& allowed_deadspace_words,
|
||||
HeapWord* q, size_t deadlength) {
|
||||
allowed_deadspace_words -= deadlength;
|
||||
if (allowed_deadspace_words >= 0) {
|
||||
bool PSMarkSweepDecorator::insert_deadspace(size_t& allowed_deadspace_words,
|
||||
HeapWord* q, size_t deadlength) {
|
||||
if (allowed_deadspace_words >= deadlength) {
|
||||
allowed_deadspace_words -= deadlength;
|
||||
oop(q)->set_mark(markOopDesc::prototype()->set_marked());
|
||||
const size_t aligned_min_int_array_size =
|
||||
align_object_size(typeArrayOopDesc::header_size(T_INT));
|
||||
|
|
|
@ -39,14 +39,16 @@ class PSMarkSweepDecorator: public CHeapObj {
|
|||
HeapWord* _first_dead;
|
||||
HeapWord* _end_of_live;
|
||||
HeapWord* _compaction_top;
|
||||
unsigned int _allowed_dead_ratio;
|
||||
size_t _allowed_dead_ratio;
|
||||
|
||||
bool insert_deadspace(ssize_t& allowed_deadspace_words, HeapWord* q, size_t word_len);
|
||||
bool insert_deadspace(size_t& allowed_deadspace_words, HeapWord* q,
|
||||
size_t word_len);
|
||||
|
||||
public:
|
||||
PSMarkSweepDecorator(MutableSpace* space, ObjectStartArray* start_array,
|
||||
unsigned int allowed_dead_ratio) :
|
||||
_space(space), _start_array(start_array), _allowed_dead_ratio(allowed_dead_ratio) { }
|
||||
size_t allowed_dead_ratio) :
|
||||
_space(space), _start_array(start_array),
|
||||
_allowed_dead_ratio(allowed_dead_ratio) { }
|
||||
|
||||
// During a compacting collection, we need to collapse objects into
|
||||
// spaces in a given order. We want to fill space A, space B, and so
|
||||
|
@ -57,14 +59,14 @@ class PSMarkSweepDecorator: public CHeapObj {
|
|||
static PSMarkSweepDecorator* destination_decorator();
|
||||
|
||||
// Accessors
|
||||
MutableSpace* space() { return _space; }
|
||||
ObjectStartArray* start_array() { return _start_array; }
|
||||
MutableSpace* space() { return _space; }
|
||||
ObjectStartArray* start_array() { return _start_array; }
|
||||
|
||||
HeapWord* compaction_top() { return _compaction_top; }
|
||||
void set_compaction_top(HeapWord* value) { _compaction_top = value; }
|
||||
HeapWord* compaction_top() { return _compaction_top; }
|
||||
void set_compaction_top(HeapWord* value) { _compaction_top = value; }
|
||||
|
||||
unsigned int allowed_dead_ratio() { return _allowed_dead_ratio; }
|
||||
void set_allowed_dead_ratio(unsigned int value) { _allowed_dead_ratio = value; }
|
||||
size_t allowed_dead_ratio() { return _allowed_dead_ratio; }
|
||||
void set_allowed_dead_ratio(size_t value) { _allowed_dead_ratio = value; }
|
||||
|
||||
// Work methods
|
||||
void adjust_pointers();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue