comparison src/share/vm/gc_implementation/parNew/parGCAllocBuffer.cpp @ 113:ba764ed4b6f2

6420645: Create a vm that uses compressed oops for up to 32gb heapsizes Summary: Compressed oops in instances, arrays, and headers. Code contributors are coleenp, phh, never, swamyv Reviewed-by: jmasa, kamg, acorn, tbell, kvn, rasbold
author coleenp
date Sun, 13 Apr 2008 17:43:42 -0400
parents a61af66fc99e
children d1605aabd0a1
comparison
equal deleted inserted replaced
110:a49a647afe9a 113:ba764ed4b6f2
30 _end(NULL), _hard_end(NULL), 30 _end(NULL), _hard_end(NULL),
31 _retained(false), _retained_filler(), 31 _retained(false), _retained_filler(),
32 _allocated(0), _wasted(0) 32 _allocated(0), _wasted(0)
33 { 33 {
34 assert (min_size() > AlignmentReserve, "Inconsistency!"); 34 assert (min_size() > AlignmentReserve, "Inconsistency!");
35 } 35 // arrayOopDesc::header_size depends on command line initialization.
36 36 FillerHeaderSize = align_object_size(arrayOopDesc::header_size(T_INT));
37 const size_t ParGCAllocBuffer::FillerHeaderSize = 37 AlignmentReserve = oopDesc::header_size() > MinObjAlignment ? FillerHeaderSize : 0;
38 align_object_size(arrayOopDesc::header_size(T_INT)); 38 }
39
40 size_t ParGCAllocBuffer::FillerHeaderSize;
39 41
40 // If the minimum object size is greater than MinObjAlignment, we can 42 // If the minimum object size is greater than MinObjAlignment, we can
41 // end up with a shard at the end of the buffer that's smaller than 43 // end up with a shard at the end of the buffer that's smaller than
42 // the smallest object. We can't allow that because the buffer must 44 // the smallest object. We can't allow that because the buffer must
43 // look like it's full of objects when we retire it, so we make 45 // look like it's full of objects when we retire it, so we make
44 // sure we have enough space for a filler int array object. 46 // sure we have enough space for a filler int array object.
45 const size_t ParGCAllocBuffer::AlignmentReserve = 47 size_t ParGCAllocBuffer::AlignmentReserve;
46 oopDesc::header_size() > MinObjAlignment ? FillerHeaderSize : 0;
47 48
48 void ParGCAllocBuffer::retire(bool end_of_gc, bool retain) { 49 void ParGCAllocBuffer::retire(bool end_of_gc, bool retain) {
49 assert(!retain || end_of_gc, "Can only retain at GC end."); 50 assert(!retain || end_of_gc, "Can only retain at GC end.");
50 if (_retained) { 51 if (_retained) {
51 // If the buffer had been retained shorten the previous filler object. 52 // If the buffer had been retained shorten the previous filler object.