< prev index next >

src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/memory/Dictionary.java

Print this page

        

@@ -24,16 +24,17 @@
 
 package sun.jvm.hotspot.memory;
 
 import java.util.*;
 import sun.jvm.hotspot.debugger.*;
+import sun.jvm.hotspot.classfile.*;
 import sun.jvm.hotspot.oops.*;
 import sun.jvm.hotspot.types.*;
 import sun.jvm.hotspot.runtime.*;
 import sun.jvm.hotspot.utilities.*;
 
-public class Dictionary extends TwoOopHashtable {
+public class Dictionary extends sun.jvm.hotspot.utilities.Hashtable {
   static {
     VM.registerVMInitializedObserver(new Observer() {
         public void update(Observable o, Object data) {
           initialize(VM.getVM().getTypeDataBase());
         }

@@ -53,60 +54,36 @@
   // object of DictionaryEntry.class
   protected Class getHashtableEntryClass() {
     return DictionaryEntry.class;
   }
 
-  /** Iterate over all klasses in dictionary; just the classes from
-      declaring class loaders */
-  public void classesDo(SystemDictionary.ClassVisitor v) {
-    ObjectHeap heap = VM.getVM().getObjectHeap();
+  /** All classes, and their initiating class loader, passed in. */
+  public void allEntriesDo(ClassLoaderDataGraph.ClassAndLoaderVisitor v, Oop loader) {
     int tblSize = tableSize();
     for (int index = 0; index < tblSize; index++) {
       for (DictionaryEntry probe = (DictionaryEntry) bucket(index); probe != null;
                                              probe = (DictionaryEntry) probe.next()) {
         Klass k = probe.klass();
-        if (heap.equal(probe.loader(), ((InstanceKlass) k).getClassLoader())) {
-            v.visit(k);
+        v.visit(k, loader);
         }
       }
     }
-  }
-
-  /** All classes, and their class loaders */
-  public void classesDo(SystemDictionary.ClassAndLoaderVisitor v) {
-    int tblSize = tableSize();
-    for (int index = 0; index < tblSize; index++) {
-      for (DictionaryEntry probe = (DictionaryEntry) bucket(index); probe != null;
-                                             probe = (DictionaryEntry) probe.next()) {
-        Klass k = probe.klass();
-        v.visit(k, probe.loader());
-      }
-    }
-  }
-
-  public Klass find(int index, long hash, Symbol className, Oop classLoader, Oop protectionDomain) {
-    DictionaryEntry entry = getEntry(index, hash, className, classLoader);
-    if (entry != null && entry.isValidProtectionDomain(protectionDomain)) {
-      return entry.klass();
-    }
-    return null;
-  }
 
   // - Internals only below this point
 
-  private DictionaryEntry getEntry(int index, long hash, Symbol className, Oop classLoader) {
+  private DictionaryEntry getEntry(int index, long hash, Symbol className) {
     for (DictionaryEntry entry = (DictionaryEntry) bucket(index); entry != null;
                                     entry = (DictionaryEntry) entry.next()) {
-      if (entry.hash() == hash && entry.equals(className, classLoader)) {
+      if (entry.hash() == hash && entry.equals(className)) {
         return entry;
       }
     }
     return null;
   }
 
-  public boolean contains(Klass c, Oop classLoader) {
-    long hash = computeHash(c.getName(), classLoader);
+  public boolean contains(Klass c) {
+    long hash = computeHash(c.getName());
     int index = hashToIndex(hash);
 
     for (DictionaryEntry entry = (DictionaryEntry) bucket(index); entry != null;
                                     entry = (DictionaryEntry) entry.next()) {
       if (entry.literalValue().equals(c.getAddress())) {
< prev index next >