Mercurial > hg > truffle
comparison 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 |
comparison
equal
deleted
inserted
replaced
6724:36d1d483d5d6 | 6725:da91efe96a93 |
---|---|
35 private static AddressField sharedDictionaryField; | 35 private static AddressField sharedDictionaryField; |
36 private static AddressField placeholdersField; | 36 private static AddressField placeholdersField; |
37 private static AddressField loaderConstraintTableField; | 37 private static AddressField loaderConstraintTableField; |
38 private static sun.jvm.hotspot.types.OopField javaSystemLoaderField; | 38 private static sun.jvm.hotspot.types.OopField javaSystemLoaderField; |
39 | 39 |
40 private static sun.jvm.hotspot.types.OopField objectKlassField; | 40 private static AddressField objectKlassField; |
41 private static sun.jvm.hotspot.types.OopField classLoaderKlassField; | 41 private static AddressField classLoaderKlassField; |
42 private static sun.jvm.hotspot.types.OopField stringKlassField; | 42 private static AddressField stringKlassField; |
43 private static sun.jvm.hotspot.types.OopField systemKlassField; | 43 private static AddressField systemKlassField; |
44 private static sun.jvm.hotspot.types.OopField threadKlassField; | 44 private static AddressField threadKlassField; |
45 private static sun.jvm.hotspot.types.OopField threadGroupKlassField; | 45 private static AddressField threadGroupKlassField; |
46 private static sun.jvm.hotspot.types.OopField methodHandleKlassField; | 46 private static AddressField methodHandleKlassField; |
47 | 47 |
48 static { | 48 static { |
49 VM.registerVMInitializedObserver(new Observer() { | 49 VM.registerVMInitializedObserver(new Observer() { |
50 public void update(Observable o, Object data) { | 50 public void update(Observable o, Object data) { |
51 initialize(VM.getVM().getTypeDataBase()); | 51 initialize(VM.getVM().getTypeDataBase()); |
60 sharedDictionaryField = type.getAddressField("_shared_dictionary"); | 60 sharedDictionaryField = type.getAddressField("_shared_dictionary"); |
61 placeholdersField = type.getAddressField("_placeholders"); | 61 placeholdersField = type.getAddressField("_placeholders"); |
62 loaderConstraintTableField = type.getAddressField("_loader_constraints"); | 62 loaderConstraintTableField = type.getAddressField("_loader_constraints"); |
63 javaSystemLoaderField = type.getOopField("_java_system_loader"); | 63 javaSystemLoaderField = type.getOopField("_java_system_loader"); |
64 | 64 |
65 objectKlassField = type.getOopField(WK_KLASS("Object_klass")); | 65 objectKlassField = type.getAddressField(WK_KLASS("Object_klass")); |
66 classLoaderKlassField = type.getOopField(WK_KLASS("ClassLoader_klass")); | 66 classLoaderKlassField = type.getAddressField(WK_KLASS("ClassLoader_klass")); |
67 stringKlassField = type.getOopField(WK_KLASS("String_klass")); | 67 stringKlassField = type.getAddressField(WK_KLASS("String_klass")); |
68 systemKlassField = type.getOopField(WK_KLASS("System_klass")); | 68 systemKlassField = type.getAddressField(WK_KLASS("System_klass")); |
69 threadKlassField = type.getOopField(WK_KLASS("Thread_klass")); | 69 threadKlassField = type.getAddressField(WK_KLASS("Thread_klass")); |
70 threadGroupKlassField = type.getOopField(WK_KLASS("ThreadGroup_klass")); | 70 threadGroupKlassField = type.getAddressField(WK_KLASS("ThreadGroup_klass")); |
71 methodHandleKlassField = type.getOopField(WK_KLASS("MethodHandle_klass")); | 71 methodHandleKlassField = type.getAddressField(WK_KLASS("MethodHandle_klass")); |
72 } | 72 } |
73 | 73 |
74 // This WK functions must follow the definitions in systemDictionary.hpp: | 74 // This WK functions must follow the definitions in systemDictionary.hpp: |
75 private static String WK_KLASS(String name) { | 75 private static String WK_KLASS(String name) { |
76 //#define WK_KLASS(name) _well_known_klasses[SystemDictionary::WK_KLASS_ENUM_NAME(name)] | 76 //#define WK_KLASS(name) _well_known_klasses[SystemDictionary::WK_KLASS_ENUM_NAME(name)] |
102 } | 102 } |
103 | 103 |
104 // few well known classes -- not all are added here. | 104 // few well known classes -- not all are added here. |
105 // add more if needed. | 105 // add more if needed. |
106 public static InstanceKlass getThreadKlass() { | 106 public static InstanceKlass getThreadKlass() { |
107 return (InstanceKlass) newOop(threadKlassField.getValue()); | 107 return (InstanceKlass)Metadata.instantiateWrapperFor(threadKlassField.getValue()); |
108 } | 108 } |
109 | 109 |
110 public static InstanceKlass getThreadGroupKlass() { | 110 public static InstanceKlass getThreadGroupKlass() { |
111 return (InstanceKlass) newOop(threadGroupKlassField.getValue()); | 111 return (InstanceKlass)Metadata.instantiateWrapperFor(threadGroupKlassField.getValue()); |
112 } | 112 } |
113 | 113 |
114 public static InstanceKlass getObjectKlass() { | 114 public static InstanceKlass getObjectKlass() { |
115 return (InstanceKlass) newOop(objectKlassField.getValue()); | 115 return (InstanceKlass)Metadata.instantiateWrapperFor(objectKlassField.getValue()); |
116 } | 116 } |
117 | 117 |
118 public static InstanceKlass getStringKlass() { | 118 public static InstanceKlass getStringKlass() { |
119 return (InstanceKlass) newOop(stringKlassField.getValue()); | 119 return (InstanceKlass)Metadata.instantiateWrapperFor(stringKlassField.getValue()); |
120 } | 120 } |
121 | 121 |
122 public static InstanceKlass getClassLoaderKlass() { | 122 public static InstanceKlass getClassLoaderKlass() { |
123 return (InstanceKlass) newOop(classLoaderKlassField.getValue()); | 123 return (InstanceKlass)Metadata.instantiateWrapperFor(classLoaderKlassField.getValue()); |
124 } | 124 } |
125 | 125 |
126 public static InstanceKlass getSystemKlass() { | 126 public static InstanceKlass getSystemKlass() { |
127 return (InstanceKlass) newOop(systemKlassField.getValue()); | 127 return (InstanceKlass)Metadata.instantiateWrapperFor(systemKlassField.getValue()); |
128 } | 128 } |
129 | 129 |
130 public static InstanceKlass getMethodHandleKlass() { | 130 public static InstanceKlass getMethodHandleKlass() { |
131 return (InstanceKlass) newOop(methodHandleKlassField.getValue()); | 131 return (InstanceKlass)Metadata.instantiateWrapperFor(methodHandleKlassField.getValue()); |
132 } | 132 } |
133 | 133 |
134 public InstanceKlass getAbstractOwnableSynchronizerKlass() { | 134 public InstanceKlass getAbstractOwnableSynchronizerKlass() { |
135 return (InstanceKlass) find("java/util/concurrent/locks/AbstractOwnableSynchronizer", | 135 return (InstanceKlass) find("java/util/concurrent/locks/AbstractOwnableSynchronizer", |
136 null, null); | 136 null, null); |