--- old/agent/src/share/classes/sun/jvm/hotspot/oops/InstanceKlass.java Fri Sep 9 14:15:55 2011 +++ new/agent/src/share/classes/sun/jvm/hotspot/oops/InstanceKlass.java Fri Sep 9 14:15:54 2011 @@ -172,7 +172,7 @@ private String value; } - private int getInitStateAsInt() { return (int) initState.getValue(this); } + public int getInitStateAsInt() { return (int) initState.getValue(this); } public ClassState getInitState() { int state = getInitStateAsInt(); if (state == CLASS_STATE_UNPARSABLE_BY_GC) { @@ -496,6 +496,29 @@ return getSuper(); } + public static class StaticField { + public AccessFlags flags; + public Field field; + + StaticField(Field field, AccessFlags flags) { + this.field = field; + this.flags = flags; + } + } + + public Field[] getStaticFields() { + TypeArray fields = getFields(); + int length = (int) fields.getLength(); + ArrayList result = new ArrayList(); + for (int index = 0; index < length; index += NEXT_OFFSET) { + Field f = newField(index); + if (f.isStatic()) { + result.add(f); + } + } + return (Field[])result.toArray(new Field[result.size()]); + } + public void iterateNonStaticFields(OopVisitor visitor, Oop obj) { if (getSuper() != null) { ((InstanceKlass) getSuper()).iterateNonStaticFields(visitor, obj);