< prev index next >

src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/oops/Klass.java

Print this page

        

*** 49,59 **** public static int LH_ARRAY_TAG_TYPE_VALUE; public static int LH_ARRAY_TAG_OBJ_VALUE; private static synchronized void initialize(TypeDataBase db) throws WrongTypeException { Type type = db.lookupType("Klass"); ! javaMirror = new OopField(type.getOopField("_java_mirror"), 0); superField = new MetadataField(type.getAddressField("_super"), 0); layoutHelper = new IntField(type.getJIntField("_layout_helper"), 0); name = type.getAddressField("_name"); accessFlags = new CIntField(type.getCIntegerField("_access_flags"), 0); try { --- 49,59 ---- public static int LH_ARRAY_TAG_TYPE_VALUE; public static int LH_ARRAY_TAG_OBJ_VALUE; private static synchronized void initialize(TypeDataBase db) throws WrongTypeException { Type type = db.lookupType("Klass"); ! javaMirror = type.getAddressField("_java_mirror"); superField = new MetadataField(type.getAddressField("_super"), 0); layoutHelper = new IntField(type.getJIntField("_layout_helper"), 0); name = type.getAddressField("_name"); accessFlags = new CIntField(type.getCIntegerField("_access_flags"), 0); try {
*** 86,96 **** } public boolean isKlass() { return true; } // Fields ! private static OopField javaMirror; private static MetadataField superField; private static IntField layoutHelper; private static AddressField name; private static CIntField accessFlags; private static MetadataField subklass; --- 86,96 ---- } public boolean isKlass() { return true; } // Fields ! private static AddressField javaMirror; private static MetadataField superField; private static IntField layoutHelper; private static AddressField name; private static CIntField accessFlags; private static MetadataField subklass;
*** 107,117 **** protected Symbol getSymbol(AddressField field) { return Symbol.create(addr.getAddressAt(field.getOffset())); } // Accessors for declared fields ! public Instance getJavaMirror() { return (Instance) javaMirror.getValue(this); } public Klass getSuper() { return (Klass) superField.getValue(this); } public Klass getJavaSuper() { return null; } public int getLayoutHelper() { return (int) layoutHelper.getValue(this); } public Symbol getName() { return getSymbol(name); } public long getAccessFlags() { return accessFlags.getValue(this); } --- 107,125 ---- protected Symbol getSymbol(AddressField field) { return Symbol.create(addr.getAddressAt(field.getOffset())); } // Accessors for declared fields ! public Instance getJavaMirror() { ! Address handle = javaMirror.getValue(getAddress()); ! if (handle != null) { ! // Load through the handle ! OopHandle refs = handle.getOopHandleAt(0); ! return (Instance)VM.getVM().getObjectHeap().newOop(refs); ! } ! return null; ! } public Klass getSuper() { return (Klass) superField.getValue(this); } public Klass getJavaSuper() { return null; } public int getLayoutHelper() { return (int) layoutHelper.getValue(this); } public Symbol getName() { return getSymbol(name); } public long getAccessFlags() { return accessFlags.getValue(this); }
*** 183,193 **** public void printValueOn(PrintStream tty) { tty.print("Klass"); } public void iterateFields(MetadataVisitor visitor) { ! visitor.doOop(javaMirror, true); visitor.doMetadata(superField, true); visitor.doInt(layoutHelper, true); // visitor.doOop(name, true); visitor.doCInt(accessFlags, true); visitor.doMetadata(subklass, true); --- 191,201 ---- public void printValueOn(PrintStream tty) { tty.print("Klass"); } public void iterateFields(MetadataVisitor visitor) { ! // visitor.doOop(javaMirror, true); visitor.doMetadata(superField, true); visitor.doInt(layoutHelper, true); // visitor.doOop(name, true); visitor.doCInt(accessFlags, true); visitor.doMetadata(subklass, true);
< prev index next >