Mercurial > hg > graal-compiler
changeset 6838:7a40901e0d5c
8000332: SA ClassDump throws exception after permgen removal
Summary: In ClassWrite.writeFields(), fields count was mistakenly set to fields length which overflow the array index. Also removed a file which is leftover from 6879063 changeset.
Reviewed-by: coleenp, sspitsyn
Contributed-by: yumin.qi@oracle.com
author | minqi |
---|---|
date | Mon, 08 Oct 2012 16:48:52 -0700 |
parents | fab6fbf427d2 |
children | 0e8ca886e4e1 |
files | agent/src/share/classes/sun/jvm/hotspot/tools/jcore/ClassWriter.java agent/src/share/native/sadis.c |
diffstat | 2 files changed, 5 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/agent/src/share/classes/sun/jvm/hotspot/tools/jcore/ClassWriter.java Sun Sep 30 23:24:12 2012 +0100 +++ b/agent/src/share/classes/sun/jvm/hotspot/tools/jcore/ClassWriter.java Mon Oct 08 16:48:52 2012 -0700 @@ -354,15 +354,14 @@ } protected void writeFields() throws IOException { - U2Array fields = klass.getFields(); - final int length = (int) fields.length(); + final int javaFieldsCount = klass.getJavaFieldsCount(); // write number of fields - dos.writeShort((short) length); + dos.writeShort((short) javaFieldsCount); - if (DEBUG) debugMessage("number of fields = " + length); + if (DEBUG) debugMessage("number of fields = " + javaFieldsCount); - for (int index = 0; index < length; index++) { + for (int index = 0; index < javaFieldsCount; index++) { short accessFlags = klass.getFieldAccessFlags(index); dos.writeShort(accessFlags & (short) JVM_RECOGNIZED_FIELD_MODIFIERS);