6765804: GC "dead ratios" should be unsigned

Reviewed-by: ysr, tonyp
This commit is contained in:
John Coomes 2008-10-29 06:30:02 -07:00
parent 8eb2e02296
commit 401e04572a
6 changed files with 27 additions and 26 deletions

View file

@ -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));

View file

@ -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();