summaryrefslogtreecommitdiff
path: root/src/jvm/clojure/lang/DynamicClassLoader.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/jvm/clojure/lang/DynamicClassLoader.java')
-rw-r--r--src/jvm/clojure/lang/DynamicClassLoader.java14
1 files changed, 7 insertions, 7 deletions
diff --git a/src/jvm/clojure/lang/DynamicClassLoader.java b/src/jvm/clojure/lang/DynamicClassLoader.java
index 2a7ce676..7c58244e 100644
--- a/src/jvm/clojure/lang/DynamicClassLoader.java
+++ b/src/jvm/clojure/lang/DynamicClassLoader.java
@@ -22,8 +22,8 @@ import java.lang.ref.WeakReference;
public class DynamicClassLoader extends URLClassLoader{
HashMap<Integer, Object[]> constantVals = new HashMap<Integer, Object[]>();
-static ConcurrentHashMap<String, Map.Entry<WeakReference<Class>,Integer> >classCache =
- new ConcurrentHashMap<String, Map.Entry<WeakReference<Class>,Integer> >();
+static ConcurrentHashMap<String, Map.Entry<WeakReference<Class>,Object> >classCache =
+ new ConcurrentHashMap<String, Map.Entry<WeakReference<Class>,Object> >();
static final URL[] EMPTY_URLS = new URL[]{};
@@ -38,22 +38,22 @@ public DynamicClassLoader(ClassLoader parent){
super(EMPTY_URLS,parent);
}
-public Class defineClass(String name, byte[] bytes){
- Map.Entry<WeakReference<Class>,Integer> ce = classCache.get(name);
+public Class defineClass(String name, byte[] bytes, Object srcForm){
+ Map.Entry<WeakReference<Class>,Object> ce = classCache.get(name);
if(ce != null)
{
WeakReference<Class> cr = ce.getKey();
Class c = cr.get();
- if(c != null && Arrays.hashCode(bytes) == ce.getValue())
+ if((c != null) && srcForm.equals(ce.getValue()))
return c;
}
Class c = defineClass(name, bytes, 0, bytes.length);
- classCache.put(name, new MapEntry(new WeakReference(c), Arrays.hashCode(bytes)));
+ classCache.put(name, new MapEntry(new WeakReference(c), srcForm));
return c;
}
protected Class<?> findClass(String name) throws ClassNotFoundException{
- Map.Entry<WeakReference<Class>,Integer> ce = classCache.get(name);
+ Map.Entry<WeakReference<Class>,Object> ce = classCache.get(name);
if(ce != null)
{
WeakReference<Class> cr = ce.getKey();