< prev index next >

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

Print this page

38 
39 public class InstanceMirrorKlass extends InstanceKlass {
40   static {
41     VM.registerVMInitializedObserver(new Observer() {
42         public void update(Observable o, Object data) {
43           initialize(VM.getVM().getTypeDataBase());
44         }
45       });
46   }
47 
48   private static synchronized void initialize(TypeDataBase db) throws WrongTypeException {
49     // Just make sure it's there for now
50     Type type = db.lookupType("InstanceMirrorKlass");
51   }
52 
53   public InstanceMirrorKlass(Address addr) {
54     super(addr);
55   }
56 
57   public long getObjectSize(Oop o) {
58     return java_lang_Class.getOopSize(o) * VM.getVM().getAddressSize();








59   }
60 
61   public void iterateNonStaticFields(OopVisitor visitor, Oop obj) {
62     super.iterateNonStaticFields(visitor, obj);
63     // Fetch the real klass from the mirror object
64     Klass klass = java_lang_Class.asKlass(obj);
65     if (klass instanceof InstanceKlass) {
66       ((InstanceKlass)klass).iterateStaticFields(visitor);
67     }
68   }
69 }

38 
39 public class InstanceMirrorKlass extends InstanceKlass {
40   static {
41     VM.registerVMInitializedObserver(new Observer() {
42         public void update(Observable o, Object data) {
43           initialize(VM.getVM().getTypeDataBase());
44         }
45       });
46   }
47 
48   private static synchronized void initialize(TypeDataBase db) throws WrongTypeException {
49     // Just make sure it's there for now
50     Type type = db.lookupType("InstanceMirrorKlass");
51   }
52 
53   public InstanceMirrorKlass(Address addr) {
54     super(addr);
55   }
56 
57   public long getObjectSize(Oop o) {
58     long s = java_lang_Class.getOopSize(o) * VM.getVM().getAddressSize();
59     if (VM.getVM().isCompactObjectHeadersEnabled()) {
60       Mark mark = o.getMark();
61       if (mark.isExpanded()) {
62         // Needs extra 4 bytes for identity hash-code (and align-up to whole word).
63         s += VM.getVM().getAddressSize();
64       }
65     }
66     return s;
67   }
68 
69   public void iterateNonStaticFields(OopVisitor visitor, Oop obj) {
70     super.iterateNonStaticFields(visitor, obj);
71     // Fetch the real klass from the mirror object
72     Klass klass = java_lang_Class.asKlass(obj);
73     if (klass instanceof InstanceKlass) {
74       ((InstanceKlass)klass).iterateStaticFields(visitor);
75     }
76   }
77 }
< prev index next >