Mercurial > hg > truffle
diff src/share/vm/prims/jni.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 8d852b81e775 |
line wrap: on
line diff
--- a/src/share/vm/prims/jni.cpp Fri Apr 11 09:56:35 2008 -0400 +++ b/src/share/vm/prims/jni.cpp Sun Apr 13 17:43:42 2008 -0400 @@ -135,7 +135,10 @@ 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(); }