From 23d397d67fcdb5356e34885d5ae8826c909e11b2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C5=82=20Marczyk?= <michal.marczyk@gmail.com>
Date: Wed, 11 Apr 2012 23:07:58 +0200
Subject: [PATCH] Have cljs.core/hash-map and compiler's emit :map use PersistentHashMap

---
 src/clj/cljs/compiler.clj |    6 ++++++
 src/cljs/cljs/core.cljs   |    2 +-
 2 files changed, 7 insertions(+), 1 deletions(-)

diff --git a/src/clj/cljs/compiler.clj b/src/clj/cljs/compiler.clj
index b088e98..e0c21cf 100644
--- a/src/clj/cljs/compiler.clj
+++ b/src/clj/cljs/compiler.clj
@@ -291,6 +291,12 @@
 (defmethod emit :map
   [{:keys [children env simple-keys? keys vals]}]
   (emit-wrap env
+    (print (str "cljs.core.PersistentHashMap.fromArrays(["
+                (comma-sep (map emits keys))
+                "],["
+                (comma-sep (map emits vals))
+                "])"))
+    #_
     (if simple-keys?
       (print (str "cljs.core.ObjMap.fromObject(["
                   (comma-sep (map emits keys)) ; keys
diff --git a/src/cljs/cljs/core.cljs b/src/cljs/cljs/core.cljs
index a3cdecf..f93fd3e 100644
--- a/src/cljs/cljs/core.cljs
+++ b/src/cljs/cljs/core.cljs
@@ -3135,7 +3135,7 @@ reduces them without incurring seq initialization"
   "keyval => key val
   Returns a new hash map with supplied mappings."
   [& keyvals]
-  (loop [in (seq keyvals), out cljs.core.HashMap/EMPTY]
+  (loop [in (seq keyvals), out #_cljs.core.HashMap/EMPTY cljs.core.PersistentHashMap/EMPTY]
     (if in
       (recur (nnext in) (assoc out (first in) (second in)))
       out)))
-- 
1.7.1

