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