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

@ -135,7 +135,10 @@ intptr_t jfieldIDWorkaround::encode_klass_hash(klassOop k, intptr_t offset) {
if (offset <= small_offset_mask) {
klassOop field_klass = k;
klassOop super_klass = Klass::cast(field_klass)->super();
while (instanceKlass::cast(super_klass)->contains_field_offset(offset)) {
// With compressed oops the most super class with nonstatic fields would
// be the owner of fields embedded in the header.
while (instanceKlass::cast(super_klass)->has_nonstatic_fields() &&
instanceKlass::cast(super_klass)->contains_field_offset(offset)) {
field_klass = super_klass; // super contains the field also
super_klass = Klass::cast(field_klass)->super();
}