summaryrefslogtreecommitdiff
path: root/src/jvm/clojure
diff options
context:
space:
mode:
authorRich Hickey <richhickey@gmail.com>2008-12-13 19:25:10 +0000
committerRich Hickey <richhickey@gmail.com>2008-12-13 19:25:10 +0000
commit044419862707c9a540b8e42faad0f69bc66fe1fd (patch)
tree512b15b4ea91c09f9b39156213db39db8da892c0 /src/jvm/clojure
parentf95175264df36c3d8fe2113aa9af92cda0f2f5c8 (diff)
proxy perf tweaks
Note breaking change if you are using the proxy interface other than the proxy macro itself - proxy maps are now maps of (preferably interned) strings to fns, not symbols to fns, and if you construct a proxy manually you must establish initial map with init-proxy
Diffstat (limited to 'src/jvm/clojure')
-rw-r--r--src/jvm/clojure/lang/IProxy.java5
-rw-r--r--src/jvm/clojure/lang/PersistentArrayMap.java2
-rw-r--r--src/jvm/clojure/lang/RT.java4
3 files changed, 7 insertions, 4 deletions
diff --git a/src/jvm/clojure/lang/IProxy.java b/src/jvm/clojure/lang/IProxy.java
index 7f3630f9..c32521a7 100644
--- a/src/jvm/clojure/lang/IProxy.java
+++ b/src/jvm/clojure/lang/IProxy.java
@@ -14,7 +14,8 @@ package clojure.lang;
public interface IProxy{
-public void __updateClojureFnMappings(IPersistentMap m);
-public IPersistentMap __getClojureFnMappings();
+ public void __initClojureFnMappings(IPersistentMap m);
+ public void __updateClojureFnMappings(IPersistentMap m);
+ public IPersistentMap __getClojureFnMappings();
}
diff --git a/src/jvm/clojure/lang/PersistentArrayMap.java b/src/jvm/clojure/lang/PersistentArrayMap.java
index 070fe1bf..009b1fe8 100644
--- a/src/jvm/clojure/lang/PersistentArrayMap.java
+++ b/src/jvm/clojure/lang/PersistentArrayMap.java
@@ -27,7 +27,7 @@ import java.util.Map;
public class PersistentArrayMap extends APersistentMap{
final Object[] array;
-static final int HASHTABLE_THRESHOLD = 8;
+static final int HASHTABLE_THRESHOLD = 16;
public static final PersistentArrayMap EMPTY = new PersistentArrayMap();
diff --git a/src/jvm/clojure/lang/RT.java b/src/jvm/clojure/lang/RT.java
index ae18bfce..7a31bbdf 100644
--- a/src/jvm/clojure/lang/RT.java
+++ b/src/jvm/clojure/lang/RT.java
@@ -966,7 +966,9 @@ static public double doubleCast(double x){
}
static public IPersistentMap map(Object... init){
- if(init != null && init.length == 2)
+ if(init == null)
+ return PersistentArrayMap.EMPTY;
+ else if(init.length <= PersistentArrayMap.HASHTABLE_THRESHOLD)
return new PersistentArrayMap(init);
return PersistentHashMap.create(init);
}