Wed, 16 Jan 2013 16:30:04 +0100
8006403: Regression: jstack failed due to the FieldInfo regression in SA
Reviewed-by: sla, dholmes
Contributed-by: Aleksey Shipilev <aleksey.shipilev@oracle.com>
agent/src/share/classes/sun/jvm/hotspot/oops/InstanceKlass.java | file | annotate | diff | comparison | revisions | |
src/share/vm/runtime/vmStructs.cpp | file | annotate | diff | comparison | revisions |
1.1 --- a/agent/src/share/classes/sun/jvm/hotspot/oops/InstanceKlass.java Tue Jan 15 17:05:53 2013 -0500 1.2 +++ b/agent/src/share/classes/sun/jvm/hotspot/oops/InstanceKlass.java Wed Jan 16 16:30:04 2013 +0100 1.3 @@ -53,6 +53,7 @@ 1.4 private static int HIGH_OFFSET; 1.5 private static int FIELD_SLOTS; 1.6 private static short FIELDINFO_TAG_SIZE; 1.7 + private static short FIELDINFO_TAG_MASK; 1.8 private static short FIELDINFO_TAG_OFFSET; 1.9 1.10 // ClassState constants 1.11 @@ -102,6 +103,7 @@ 1.12 HIGH_OFFSET = db.lookupIntConstant("FieldInfo::high_packed_offset").intValue(); 1.13 FIELD_SLOTS = db.lookupIntConstant("FieldInfo::field_slots").intValue(); 1.14 FIELDINFO_TAG_SIZE = db.lookupIntConstant("FIELDINFO_TAG_SIZE").shortValue(); 1.15 + FIELDINFO_TAG_MASK = db.lookupIntConstant("FIELDINFO_TAG_MASK").shortValue(); 1.16 FIELDINFO_TAG_OFFSET = db.lookupIntConstant("FIELDINFO_TAG_OFFSET").shortValue(); 1.17 1.18 // read ClassState constants 1.19 @@ -321,7 +323,7 @@ 1.20 U2Array fields = getFields(); 1.21 short lo = fields.at(index * FIELD_SLOTS + LOW_OFFSET); 1.22 short hi = fields.at(index * FIELD_SLOTS + HIGH_OFFSET); 1.23 - if ((lo & FIELDINFO_TAG_SIZE) == FIELDINFO_TAG_OFFSET) { 1.24 + if ((lo & FIELDINFO_TAG_MASK) == FIELDINFO_TAG_OFFSET) { 1.25 return VM.getVM().buildIntFromShorts(lo, hi) >> FIELDINFO_TAG_SIZE; 1.26 } 1.27 throw new RuntimeException("should not reach here");
2.1 --- a/src/share/vm/runtime/vmStructs.cpp Tue Jan 15 17:05:53 2013 -0500 2.2 +++ b/src/share/vm/runtime/vmStructs.cpp Wed Jan 16 16:30:04 2013 +0100 2.3 @@ -2292,6 +2292,7 @@ 2.4 /*************************************/ \ 2.5 \ 2.6 declare_preprocessor_constant("FIELDINFO_TAG_SIZE", FIELDINFO_TAG_SIZE) \ 2.7 + declare_preprocessor_constant("FIELDINFO_TAG_MASK", FIELDINFO_TAG_MASK) \ 2.8 declare_preprocessor_constant("FIELDINFO_TAG_OFFSET", FIELDINFO_TAG_OFFSET) \ 2.9 \ 2.10 /************************************************/ \