From a5f4fd3041fc73a5d289a36079852ffa4c2eb7bf Mon Sep 17 00:00:00 2001 From: "nboyd%atg.com" Date: Wed, 30 Jan 2008 19:40:03 +0000 Subject: [PATCH] No point in using WeakHashMap with classes as keys. Back off to plain HashMap until we figure out more about the particular problem one user is seeing. git-svn-id: svn://10.0.0.236/trunk@244532 18797224-902f-48f8-a5cc-f745e15eee43 --- .../org/mozilla/javascript/ClassCache.java | 29 ++++++++----------- 1 file changed, 12 insertions(+), 17 deletions(-) diff --git a/mozilla/js/rhino/src/org/mozilla/javascript/ClassCache.java b/mozilla/js/rhino/src/org/mozilla/javascript/ClassCache.java index c3acfd9a1c8..9047278e35e 100644 --- a/mozilla/js/rhino/src/org/mozilla/javascript/ClassCache.java +++ b/mozilla/js/rhino/src/org/mozilla/javascript/ClassCache.java @@ -40,7 +40,7 @@ package org.mozilla.javascript; import java.util.Map; -import java.util.WeakHashMap; +import java.util.HashMap; /** * Cache of generated classes and data structures to access Java runtime @@ -54,13 +54,13 @@ public class ClassCache { private static final Object AKEY = new Object(); private volatile boolean cachingIsEnabled = true; - private WeakHashMap,JavaMembers> classTable - = new WeakHashMap,JavaMembers>(); - private WeakHashMap,JavaMembers> javaAdapterGeneratedClasses - = new WeakHashMap,JavaMembers>(); - private WeakHashMap> classAdapterCache - = new WeakHashMap>(); - private WeakHashMap,Object> interfaceAdapterCache; + private HashMap,JavaMembers> classTable + = new HashMap,JavaMembers>(); + private HashMap,JavaMembers> javaAdapterGeneratedClasses + = new HashMap,JavaMembers>(); + private HashMap> classAdapterCache + = new HashMap>(); + private HashMap,Object> interfaceAdapterCache; private int generatedClassSerial; /** @@ -203,21 +203,16 @@ public class ClassCache Object getInterfaceAdapter(Class cl) { - Object result; - WeakHashMap,Object> cache = interfaceAdapterCache; - if (cache == null) { - result = null; - } else { - result = cache.get(cl); - } - return result; + return interfaceAdapterCache == null + ? null + : interfaceAdapterCache.get(cl); } synchronized void cacheInterfaceAdapter(Class cl, Object iadapter) { if (cachingIsEnabled) { if (interfaceAdapterCache == null) { - interfaceAdapterCache = new WeakHashMap,Object>(); + interfaceAdapterCache = new HashMap,Object>(); } interfaceAdapterCache.put(cl, iadapter); }