From d03a298d8b3be7f7c9ef915f1f208a62a5f7d5ac Mon Sep 17 00:00:00 2001
From: Bronsa <brobronsa@gmail.com>
Date: Sat, 2 Jun 2012 20:06:03 +0200
Subject: [PATCH 1/2] emit cljs.core.ObjMap.EMPTY when map is empty

---
 src/clj/cljs/compiler.clj |    3 +++
 1 file changed, 3 insertions(+)

diff --git a/src/clj/cljs/compiler.clj b/src/clj/cljs/compiler.clj
index 2a05f2b..2cff27c 100644
--- a/src/clj/cljs/compiler.clj
+++ b/src/clj/cljs/compiler.clj
@@ -360,6 +360,9 @@
   [{:keys [env simple-keys? keys vals]}]
   (emit-wrap env
     (cond
+      (zero? (count keys))
+      (emits "cljs.core.ObjMap.EMPTY")
+      
       (and simple-keys? (<= (count keys) obj-map-threshold))
       (emits "cljs.core.ObjMap.fromObject(["
              (comma-sep keys) ; keys
-- 
1.7.9.5


From 7afd89098b7a935a1d267e677ac2bed4691fbe56 Mon Sep 17 00:00:00 2001
From: Bronsa <brobronsa@gmail.com>
Date: Sat, 2 Jun 2012 21:00:26 +0200
Subject: [PATCH 2/2] make obj-map->hash-map return a PersistentArrayMap for
 maps whose length is <=
 cljs.core.PersistentArrayMap/HASHMAP_THRESHOLD

---
 src/cljs/cljs/core.cljs |    4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/cljs/cljs/core.cljs b/src/cljs/cljs/core.cljs
index b6bf733..2e8ee43 100644
--- a/src/cljs/cljs/core.cljs
+++ b/src/cljs/cljs/core.cljs
@@ -3484,7 +3484,9 @@ reduces them without incurring seq initialization"
   (let [ks  (.-keys m)
         len (.-length ks)
         so  (.-strobj m)
-        out (with-meta cljs.core.PersistentHashMap/EMPTY (meta m))]
+        out (with-meta (if (<= len cljs.core.PersistentArrayMap/HASHMAP_THRESHOLD)
+                         cljs.core.PersistentArrayMap/EMPTY
+                         cljs.core.PersistentHashMap/EMPTY) (meta m))]
     (loop [i   0
            out (transient out)]
       (if (< i len)
-- 
1.7.9.5

