Mercurial > hg > truffle
diff agent/src/share/classes/sun/jvm/hotspot/memory/SystemDictionary.java @ 6725:da91efe96a93
6964458: Reimplement class meta-data storage to use native memory
Summary: Remove PermGen, allocate meta-data in metaspace linked to class loaders, rewrite GC walking, rewrite and rename metadata to be C++ classes
Reviewed-by: jmasa, stefank, never, coleenp, kvn, brutisso, mgerdin, dholmes, jrose, twisti, roland
Contributed-by: jmasa <jon.masamitsu@oracle.com>, stefank <stefan.karlsson@oracle.com>, mgerdin <mikael.gerdin@oracle.com>, never <tom.rodriguez@oracle.com>
author | coleenp |
---|---|
date | Sat, 01 Sep 2012 13:25:18 -0400 |
parents | b2cd0ee8f778 |
children |
line wrap: on
line diff
--- a/agent/src/share/classes/sun/jvm/hotspot/memory/SystemDictionary.java Fri Aug 31 16:39:35 2012 -0700 +++ b/agent/src/share/classes/sun/jvm/hotspot/memory/SystemDictionary.java Sat Sep 01 13:25:18 2012 -0400 @@ -37,13 +37,13 @@ private static AddressField loaderConstraintTableField; private static sun.jvm.hotspot.types.OopField javaSystemLoaderField; - private static sun.jvm.hotspot.types.OopField objectKlassField; - private static sun.jvm.hotspot.types.OopField classLoaderKlassField; - private static sun.jvm.hotspot.types.OopField stringKlassField; - private static sun.jvm.hotspot.types.OopField systemKlassField; - private static sun.jvm.hotspot.types.OopField threadKlassField; - private static sun.jvm.hotspot.types.OopField threadGroupKlassField; - private static sun.jvm.hotspot.types.OopField methodHandleKlassField; + private static AddressField objectKlassField; + private static AddressField classLoaderKlassField; + private static AddressField stringKlassField; + private static AddressField systemKlassField; + private static AddressField threadKlassField; + private static AddressField threadGroupKlassField; + private static AddressField methodHandleKlassField; static { VM.registerVMInitializedObserver(new Observer() { @@ -62,13 +62,13 @@ loaderConstraintTableField = type.getAddressField("_loader_constraints"); javaSystemLoaderField = type.getOopField("_java_system_loader"); - objectKlassField = type.getOopField(WK_KLASS("Object_klass")); - classLoaderKlassField = type.getOopField(WK_KLASS("ClassLoader_klass")); - stringKlassField = type.getOopField(WK_KLASS("String_klass")); - systemKlassField = type.getOopField(WK_KLASS("System_klass")); - threadKlassField = type.getOopField(WK_KLASS("Thread_klass")); - threadGroupKlassField = type.getOopField(WK_KLASS("ThreadGroup_klass")); - methodHandleKlassField = type.getOopField(WK_KLASS("MethodHandle_klass")); + objectKlassField = type.getAddressField(WK_KLASS("Object_klass")); + classLoaderKlassField = type.getAddressField(WK_KLASS("ClassLoader_klass")); + stringKlassField = type.getAddressField(WK_KLASS("String_klass")); + systemKlassField = type.getAddressField(WK_KLASS("System_klass")); + threadKlassField = type.getAddressField(WK_KLASS("Thread_klass")); + threadGroupKlassField = type.getAddressField(WK_KLASS("ThreadGroup_klass")); + methodHandleKlassField = type.getAddressField(WK_KLASS("MethodHandle_klass")); } // This WK functions must follow the definitions in systemDictionary.hpp: @@ -104,31 +104,31 @@ // few well known classes -- not all are added here. // add more if needed. public static InstanceKlass getThreadKlass() { - return (InstanceKlass) newOop(threadKlassField.getValue()); + return (InstanceKlass)Metadata.instantiateWrapperFor(threadKlassField.getValue()); } public static InstanceKlass getThreadGroupKlass() { - return (InstanceKlass) newOop(threadGroupKlassField.getValue()); + return (InstanceKlass)Metadata.instantiateWrapperFor(threadGroupKlassField.getValue()); } public static InstanceKlass getObjectKlass() { - return (InstanceKlass) newOop(objectKlassField.getValue()); + return (InstanceKlass)Metadata.instantiateWrapperFor(objectKlassField.getValue()); } public static InstanceKlass getStringKlass() { - return (InstanceKlass) newOop(stringKlassField.getValue()); + return (InstanceKlass)Metadata.instantiateWrapperFor(stringKlassField.getValue()); } public static InstanceKlass getClassLoaderKlass() { - return (InstanceKlass) newOop(classLoaderKlassField.getValue()); + return (InstanceKlass)Metadata.instantiateWrapperFor(classLoaderKlassField.getValue()); } public static InstanceKlass getSystemKlass() { - return (InstanceKlass) newOop(systemKlassField.getValue()); + return (InstanceKlass)Metadata.instantiateWrapperFor(systemKlassField.getValue()); } public static InstanceKlass getMethodHandleKlass() { - return (InstanceKlass) newOop(methodHandleKlassField.getValue()); + return (InstanceKlass)Metadata.instantiateWrapperFor(methodHandleKlassField.getValue()); } public InstanceKlass getAbstractOwnableSynchronizerKlass() {