hotspot/agent/src/share/classes/sun/jvm/hotspot/memory/SystemDictionary.java
changeset 10517 f92c9ff3a15f
parent 7662 5f31baaff55b
child 11628 13155c0c00b4
equal deleted inserted replaced
10516:2797e487c09f 10517:f92c9ff3a15f
    42   private static sun.jvm.hotspot.types.OopField classLoaderKlassField;
    42   private static sun.jvm.hotspot.types.OopField classLoaderKlassField;
    43   private static sun.jvm.hotspot.types.OopField stringKlassField;
    43   private static sun.jvm.hotspot.types.OopField stringKlassField;
    44   private static sun.jvm.hotspot.types.OopField systemKlassField;
    44   private static sun.jvm.hotspot.types.OopField systemKlassField;
    45   private static sun.jvm.hotspot.types.OopField threadKlassField;
    45   private static sun.jvm.hotspot.types.OopField threadKlassField;
    46   private static sun.jvm.hotspot.types.OopField threadGroupKlassField;
    46   private static sun.jvm.hotspot.types.OopField threadGroupKlassField;
       
    47   private static sun.jvm.hotspot.types.OopField methodHandleKlassField;
    47 
    48 
    48   static {
    49   static {
    49     VM.registerVMInitializedObserver(new Observer() {
    50     VM.registerVMInitializedObserver(new Observer() {
    50         public void update(Observable o, Object data) {
    51         public void update(Observable o, Object data) {
    51           initialize(VM.getVM().getTypeDataBase());
    52           initialize(VM.getVM().getTypeDataBase());
    67     classLoaderKlassField = type.getOopField(WK_KLASS("ClassLoader_klass"));
    68     classLoaderKlassField = type.getOopField(WK_KLASS("ClassLoader_klass"));
    68     stringKlassField = type.getOopField(WK_KLASS("String_klass"));
    69     stringKlassField = type.getOopField(WK_KLASS("String_klass"));
    69     systemKlassField = type.getOopField(WK_KLASS("System_klass"));
    70     systemKlassField = type.getOopField(WK_KLASS("System_klass"));
    70     threadKlassField = type.getOopField(WK_KLASS("Thread_klass"));
    71     threadKlassField = type.getOopField(WK_KLASS("Thread_klass"));
    71     threadGroupKlassField = type.getOopField(WK_KLASS("ThreadGroup_klass"));
    72     threadGroupKlassField = type.getOopField(WK_KLASS("ThreadGroup_klass"));
       
    73     methodHandleKlassField = type.getOopField(WK_KLASS("MethodHandle_klass"));
    72   }
    74   }
    73 
    75 
    74   // This WK functions must follow the definitions in systemDictionary.hpp:
    76   // This WK functions must follow the definitions in systemDictionary.hpp:
    75   private static String WK_KLASS(String name) {
    77   private static String WK_KLASS(String name) {
    76       //#define WK_KLASS(name) _well_known_klasses[SystemDictionary::WK_KLASS_ENUM_NAME(name)]
    78       //#define WK_KLASS(name) _well_known_klasses[SystemDictionary::WK_KLASS_ENUM_NAME(name)]
   123     return (InstanceKlass) newOop(classLoaderKlassField.getValue());
   125     return (InstanceKlass) newOop(classLoaderKlassField.getValue());
   124   }
   126   }
   125 
   127 
   126   public static InstanceKlass getSystemKlass() {
   128   public static InstanceKlass getSystemKlass() {
   127     return (InstanceKlass) newOop(systemKlassField.getValue());
   129     return (InstanceKlass) newOop(systemKlassField.getValue());
       
   130   }
       
   131 
       
   132   public static InstanceKlass getMethodHandleKlass() {
       
   133     return (InstanceKlass) newOop(methodHandleKlassField.getValue());
   128   }
   134   }
   129 
   135 
   130   public InstanceKlass getAbstractOwnableSynchronizerKlass() {
   136   public InstanceKlass getAbstractOwnableSynchronizerKlass() {
   131     return (InstanceKlass) find("java/util/concurrent/locks/AbstractOwnableSynchronizer",
   137     return (InstanceKlass) find("java/util/concurrent/locks/AbstractOwnableSynchronizer",
   132                                 null, null);
   138                                 null, null);