6420645: Create a vm that uses compressed oops for up to 32gb heapsizes

Compressed oops in instances, arrays, and headers. Code contributors are coleenp, phh, never, swamyv

Reviewed-by: jmasa, kamg, acorn, tbell, kvn, rasbold
This commit is contained in:
Coleen Phillimore 2008-04-13 17:43:42 -04:00
parent 680ecf1611
commit 4a831d45f0
273 changed files with 6585 additions and 2993 deletions

View file

@ -24,7 +24,8 @@
// A constantPoolKlass is the klass of a constantPoolOop
class constantPoolKlass : public arrayKlass {
class constantPoolKlass : public Klass {
juint _alloc_size; // allocation profiling support
public:
// Dispatched klass operations
bool oop_is_constantPool() const { return true; }
@ -44,7 +45,7 @@ class constantPoolKlass : public arrayKlass {
// Sizing
static int header_size() { return oopDesc::header_size() + sizeof(constantPoolKlass)/HeapWordSize; }
int object_size() const { return arrayKlass::object_size(header_size()); }
int object_size() const { return align_object_size(header_size()); }
// Garbage collection
void oop_follow_contents(oop obj);
@ -57,6 +58,11 @@ class constantPoolKlass : public arrayKlass {
int oop_oop_iterate(oop obj, OopClosure* blk);
int oop_oop_iterate_m(oop obj, OopClosure* blk, MemRegion mr);
// Allocation profiling support
// no idea why this is pure virtual and not in Klass ???
juint alloc_size() const { return _alloc_size; }
void set_alloc_size(juint n) { _alloc_size = n; }
#ifndef PRODUCT
public:
// Printing