0001-PersistentHashMap-ported-from-Clojure.patch contains a port of Clojure's PersistentHashMap.
0002-...-.patch rewires cljs.core/hash-map and cljs.compiler/emit's :map method to use cljs.core.PersistentHashMap. With that in place, the regular cljs test suite runs fine.
As a quick sanity check,
runs fine under Rhino. Timing this loop produces the expected results: it takes 1.1s on my machine as written above and 10.5s with cljs.core.HashMap/EMPTY bound to m. With 100000 iterations, PersistentHashMap takes 11.8s, whereas HashMap takes forever.
iron out any remaining bugs, add in missing protocols (if any) etc.,
test HashCollisionNode and related code,
use other map types for small maps and switch at some threshold.