aboutsummaryrefslogtreecommitdiff
path: root/clojurescript/support-for-clojurescript.patch
diff options
context:
space:
mode:
authorChouser <chouser@n01se.net>2009-01-12 07:54:16 +0000
committerChouser <chouser@n01se.net>2009-01-12 07:54:16 +0000
commit2b1e44f04489b5d70faff703bf824f07b74432d2 (patch)
tree2bc686386c956028744f7411a4404f59efca9115 /clojurescript/support-for-clojurescript.patch
parent6e53cf73c313d2bf76f5ee3c9a847548665b32e2 (diff)
Rearrange ClojureScript code for AOT compilation and its eventual place in clojure.contrib. Also fix major breaking errors for Clojure SVN 1205, but it's not well tested with this latest version.
Diffstat (limited to 'clojurescript/support-for-clojurescript.patch')
-rw-r--r--clojurescript/support-for-clojurescript.patch248
1 files changed, 118 insertions, 130 deletions
diff --git a/clojurescript/support-for-clojurescript.patch b/clojurescript/support-for-clojurescript.patch
index c8618bf7..634c6b34 100644
--- a/clojurescript/support-for-clojurescript.patch
+++ b/clojurescript/support-for-clojurescript.patch
@@ -1,83 +1,14 @@
-commit 5b84f0b77a1e1b9cc443c64b66e6fbffaa6f17a4
+commit 3a3b1b4f8fad93e54cd3571010bacf787c6a77c8
Author: Chouser <chouser@n01se.net>
-Date: Thu Nov 20 11:03:00 2008 -0500
+Date: Wed Dec 17 15:14:51 2008 -0500
ClojureScript support
-diff --git a/src/clj/clojure/core-print.clj b/src/clj/clojure/core-print.clj
-index 05c8abc..0f04558 100644
---- a/src/clj/clojure/core-print.clj
-+++ b/src/clj/clojure/core-print.clj
-@@ -75,14 +75,14 @@
-
- (defn print-ctor [o print-args #^Writer w]
- (.write w "#=(")
-- (.write w (.getName #^Class (class o)))
-+ (.write w (RT/className (class o)))
- (.write w ". ")
- (print-args o w)
- (.write w ")"))
-
- (defmethod print-method :default [o, #^Writer w]
- (.write w "#<")
-- (.write w (.getSimpleName (class o)))
-+ (.write w (RT/simpleClassName (class o)))
- (.write w " ")
- (.write w (str o))
- (.write w ">"))
-@@ -153,7 +153,7 @@
- (defmethod print-dup clojure.lang.IPersistentCollection [o, #^Writer w]
- (print-meta o w)
- (.write w "#=(")
-- (.write w (.getName #^Class (class o)))
-+ (.write w (RT/className (class o)))
- (.write w "/create ")
- (print-sequential "[" print-dup " " "]" o w)
- (.write w ")"))
-@@ -212,7 +212,7 @@
- (defmethod print-dup clojure.lang.IPersistentMap [m, #^Writer w]
- (print-meta m w)
- (.write w "#=(")
-- (.write w (.getName (class m)))
-+ (.write w (RT/className (class m)))
- (.write w "/create ")
- (print-map m print-dup w)
- (.write w ")"))
-@@ -268,7 +268,7 @@
- Short/TYPE "Short/TYPE"})
-
- (defmethod print-method Class [#^Class c, #^Writer w]
-- (.write w (.getName c)))
-+ (.write w (RT/className c)))
-
- (defmethod print-dup Class [#^Class c, #^Writer w]
- (cond
-@@ -278,11 +278,11 @@
- (.write w ")"))
- (.isArray c) (do
- (.write w "#=(java.lang.Class/forName \"")
-- (.write w (.getName c))
-+ (.write w (RT/className c))
- (.write w "\")"))
- :else (do
- (.write w "#=")
-- (.write w (.getName c)))))
-+ (.write w (RT/className c)))))
-
- (defmethod print-method java.math.BigDecimal [b, #^Writer w]
- (.write w (str b))
-@@ -317,4 +317,4 @@
- (print-dup (.name n) w)
- (.write w ")"))
-
--(def #^{:private true} print-initialized true)
-\ No newline at end of file
-+(def #^{:private true} print-initialized true)
diff --git a/src/clj/clojure/core.clj b/src/clj/clojure/core.clj
-index 1957f4f..0831fee 100644
+index 5a4cef0..1812548 100644
--- a/src/clj/clojure/core.clj
+++ b/src/clj/clojure/core.clj
-@@ -319,7 +319,7 @@
+@@ -321,7 +321,7 @@
(if more
(recur (. sb (append (str (first more)))) (rest more))
(str sb)))
@@ -86,7 +17,7 @@ index 1957f4f..0831fee 100644
(defn symbol?
-@@ -542,7 +542,7 @@
+@@ -553,7 +553,7 @@
{:inline (fn [x y] `(. clojure.lang.Numbers (add ~x ~y)))
:inline-arities #{2}}
([] 0)
@@ -95,7 +26,7 @@ index 1957f4f..0831fee 100644
([x y] (. clojure.lang.Numbers (add x y)))
([x y & more]
(reduce + (+ x y) more)))
-@@ -552,7 +552,7 @@
+@@ -563,7 +563,7 @@
{:inline (fn [x y] `(. clojure.lang.Numbers (multiply ~x ~y)))
:inline-arities #{2}}
([] 1)
@@ -104,29 +35,23 @@ index 1957f4f..0831fee 100644
([x y] (. clojure.lang.Numbers (multiply x y)))
([x y & more]
(reduce * (* x y) more)))
-@@ -1042,7 +1042,7 @@
- ([state] (new clojure.lang.Agent state))
- ([state validate-fn] (new clojure.lang.Agent state validate-fn)))
-
--(defn ! [& args] (throw (new Exception "! is now send. See also send-off")))
-+(defn ! [& args] (throw (clojure.lang.RT/makeException "! is now send. See also send-off")))
-
- (defn send
- "Dispatch an action to an agent. Returns the agent immediately.
-@@ -1363,10 +1363,10 @@
+@@ -1478,12 +1478,12 @@
(defn range
"Returns a lazy seq of nums from start (inclusive) to end
(exclusive), by step, where start defaults to 0 and step to 1."
-- ([end] (if (and (> end 0) (< end (. Integer MAX_VALUE)))
-+ ([end] (if (and (> end 0) (< end clojure.lang.RT/IntegerMaxValue))
+- ([end] (if (and (> end 0) (<= end (. Integer MAX_VALUE)))
++ ([end] (if (and (> end 0) (<= end clojure.lang.RT/IntegerMaxValue))
(new clojure.lang.Range 0 end)
(take end (iterate inc 0))))
-- ([start end] (if (and (< start end) (< end (. Integer MAX_VALUE)))
-+ ([start end] (if (and (< start end) (< end clojure.lang.RT/IntegerMaxValue))
+ ([start end] (if (and (< start end)
+- (>= start (. Integer MIN_VALUE))
+- (<= end (. Integer MAX_VALUE)))
++ (>= start clojure.lang.RT/IntegerMinValue)
++ (<= end clojure.lang.RT/IntegerMaxValue))
(new clojure.lang.Range start end)
(take (- end start) (iterate inc start))))
([start end step]
-@@ -1433,7 +1433,7 @@
+@@ -1550,7 +1550,7 @@
([#^java.util.Comparator comp coll]
(when (and coll (not (zero? (count coll))))
(let [a (to-array coll)]
@@ -135,25 +60,25 @@ index 1957f4f..0831fee 100644
(seq a)))))
(defn sort-by
-@@ -1517,7 +1517,7 @@
- occurred."
+@@ -1640,7 +1640,7 @@
[& agents]
+ (io! "await in transaction"
(when *agent*
- (throw (new Exception "Can't await in agent action")))
+ (throw (clojure.lang.RT/makeException "Can't await in agent action")))
(let [latch (new java.util.concurrent.CountDownLatch (count agents))
count-down (fn [agent] (. latch (countDown)) agent)]
(doseq [agent agents]
-@@ -1536,7 +1536,7 @@
- to timeout, non-nil otherwise."
+@@ -1660,7 +1660,7 @@
[timeout-ms & agents]
- (when *agent*
-- (throw (new Exception "Can't await in agent action")))
-+ (throw (clojure.lang.RT/makeException "Can't await in agent action")))
- (let [latch (new java.util.concurrent.CountDownLatch (count agents))
- count-down (fn [agent] (. latch (countDown)) agent)]
- (doseq [agent agents]
-@@ -1798,6 +1798,7 @@
+ (io! "await-for in transaction"
+ (when *agent*
+- (throw (new Exception "Can't await in agent action")))
++ (throw (clojure.lang.RT/makeException "Can't await in agent action")))
+ (let [latch (new java.util.concurrent.CountDownLatch (count agents))
+ count-down (fn [agent] (. latch (countDown)) agent)]
+ (doseq [agent agents]
+@@ -1984,6 +1984,7 @@
(import '(java.lang.reflect Array))
@@ -161,7 +86,7 @@ index 1957f4f..0831fee 100644
(defn alength
"Returns the length of the Java array. Works on arrays of all
-@@ -1817,7 +1818,7 @@
+@@ -2003,7 +2004,7 @@
{:inline (fn [a i] `(. clojure.lang.RT (aget ~a ~i)))
:inline-arities #{2}}
([array idx]
@@ -170,7 +95,7 @@ index 1957f4f..0831fee 100644
([array idx & idxs]
(apply aget (aget array idx) idxs)))
-@@ -1827,7 +1828,7 @@
+@@ -2013,7 +2014,7 @@
{:inline (fn [a i v] `(. clojure.lang.RT (aset ~a ~i ~v)))
:inline-arities #{3}}
([array idx val]
@@ -179,7 +104,7 @@ index 1957f4f..0831fee 100644
val)
([array idx idx2 & idxv]
(apply aset (aget array idx) idx2 idxv)))
-@@ -1995,6 +1996,10 @@
+@@ -2170,6 +2171,10 @@
"Returns a set of the distinct elements of coll."
[coll] (apply hash-set coll))
@@ -190,8 +115,8 @@ index 1957f4f..0831fee 100644
(defn #^{:private true}
filter-key [keyfn pred amap]
(loop [ret {} es (seq amap)]
-@@ -2027,7 +2032,7 @@
- the-ns [x]
+@@ -2205,7 +2210,7 @@
+ [x]
(if (instance? clojure.lang.Namespace x)
x
- (or (find-ns x) (throw (Exception. (str "No namespace: " x " found"))))))
@@ -199,7 +124,7 @@ index 1957f4f..0831fee 100644
(defn ns-name
"Returns the name of the namespace, a symbol."
-@@ -2060,7 +2065,7 @@
+@@ -2238,7 +2243,7 @@
(defn ns-imports
"Returns a map of the import mappings for the namespace."
[ns]
@@ -208,7 +133,7 @@ index 1957f4f..0831fee 100644
(defn refer
"refers to all public vars of ns, subject to filters.
-@@ -2078,7 +2083,8 @@
+@@ -2256,7 +2261,8 @@
to a symbol different from the var's name, in order to prevent
clashes. Use :use in the ns macro in preference to calling this directly."
[ns-sym & filters]
@@ -218,7 +143,7 @@ index 1957f4f..0831fee 100644
fs (apply hash-map filters)
nspublics (ns-publics ns)
rename (or (:rename fs) {})
-@@ -2207,7 +2213,7 @@
+@@ -2388,7 +2394,7 @@
true)
(= firstb :as) (pb ret (second bs) gvec)
:else (if seen-rest?
@@ -227,7 +152,7 @@ index 1957f4f..0831fee 100644
(recur (pb ret firstb (list `nth gvec n nil))
(inc n)
(rest bs)
-@@ -2238,7 +2244,7 @@
+@@ -2419,7 +2425,7 @@
(symbol? b) (-> bvec (conj b) (conj v))
(vector? b) (pvec bvec b v)
(map? b) (pmap bvec b v)
@@ -236,7 +161,7 @@ index 1957f4f..0831fee 100644
process-entry (fn [bvec b] (pb bvec (key b) (val b)))]
(if (every? symbol? (keys bmap))
bindings
-@@ -2385,7 +2391,7 @@
+@@ -2567,7 +2573,7 @@
StringWriter. Returns the string created by any nested printing
calls."
[& body]
@@ -245,7 +170,7 @@ index 1957f4f..0831fee 100644
(binding [*out* s#]
~@body
(str s#))))
-@@ -2431,7 +2437,7 @@
+@@ -2613,7 +2619,7 @@
logical true."
[x]
`(when-not ~x
@@ -254,7 +179,7 @@ index 1957f4f..0831fee 100644
(defn test
"test [v] finds fn at key :test in var metadata and calls it,
-@@ -2503,7 +2509,7 @@
+@@ -2687,7 +2693,7 @@
(defn rand
"Returns a random floating point number between 0 (inclusive) and
1 (exclusive)."
@@ -263,7 +188,7 @@ index 1957f4f..0831fee 100644
([n] (* n (rand))))
(defn rand-int
-@@ -2613,7 +2619,7 @@
+@@ -2797,7 +2803,7 @@
"Reads the file named by f into a string and returns it."
[#^String f]
(with-open [r (new java.io.BufferedReader (new java.io.FileReader f))]
@@ -272,7 +197,7 @@ index 1957f4f..0831fee 100644
(loop [c (. r (read))]
(if (neg? c)
(str sb)
-@@ -2897,10 +2903,6 @@
+@@ -3081,10 +3087,6 @@
(send-off agt fill)
(drain))))
@@ -283,7 +208,7 @@ index 1957f4f..0831fee 100644
(defn alter-var-root
"Atomically alters the root binding of var v by applying f to its
current value plus any args"
-@@ -2986,7 +2988,7 @@
+@@ -3170,7 +3172,7 @@
relationships."
([tag] (descendants global-hierarchy tag))
([h tag] (if (class? tag)
@@ -292,7 +217,7 @@ index 1957f4f..0831fee 100644
(not-empty (get (:descendants h) tag)))))
(defn derive
-@@ -3013,9 +3015,9 @@
+@@ -3200,9 +3202,9 @@
(or
(when-not (contains? (tp tag) parent)
(when (contains? (ta tag) parent)
@@ -304,7 +229,7 @@ index 1957f4f..0831fee 100644
{:parents (assoc (:parents h) tag (conj (get tp tag #{}) parent))
:ancestors (tf (:ancestors h) tag td parent ta)
:descendants (tf (:descendants h) parent ta tag td)})
-@@ -3145,7 +3147,7 @@
+@@ -3343,7 +3345,7 @@
[pred fmt & args]
(when pred
(let [message (apply format fmt args)
@@ -313,11 +238,73 @@ index 1957f4f..0831fee 100644
raw-trace (.getStackTrace exception)
boring? #(not= (.getMethodName %) "doInvoke")
trace (into-array (drop 2 (drop-while boring? raw-trace)))]
+diff --git a/src/clj/clojure/core_print.clj b/src/clj/clojure/core_print.clj
+index 4dc83cf..1d2274b 100644
+--- a/src/clj/clojure/core_print.clj
++++ b/src/clj/clojure/core_print.clj
+@@ -75,14 +75,14 @@
+
+ (defn print-ctor [o print-args #^Writer w]
+ (.write w "#=(")
+- (.write w (.getName #^Class (class o)))
++ (.write w (RT/className (class o)))
+ (.write w ". ")
+ (print-args o w)
+ (.write w ")"))
+
+ (defmethod print-method :default [o, #^Writer w]
+ (.write w "#<")
+- (.write w (.getSimpleName (class o)))
++ (.write w (RT/simpleClassName (class o)))
+ (.write w " ")
+ (.write w (str o))
+ (.write w ">"))
+@@ -153,7 +153,7 @@
+ (defmethod print-dup clojure.lang.IPersistentCollection [o, #^Writer w]
+ (print-meta o w)
+ (.write w "#=(")
+- (.write w (.getName #^Class (class o)))
++ (.write w (RT/className (class o)))
+ (.write w "/create ")
+ (print-sequential "[" print-dup " " "]" o w)
+ (.write w ")"))
+@@ -212,7 +212,7 @@
+ (defmethod print-dup clojure.lang.IPersistentMap [m, #^Writer w]
+ (print-meta m w)
+ (.write w "#=(")
+- (.write w (.getName (class m)))
++ (.write w (RT/className (class m)))
+ (.write w "/create ")
+ (print-map m print-dup w)
+ (.write w ")"))
+@@ -269,7 +269,7 @@
+ Short/TYPE "Short/TYPE"})
+
+ (defmethod print-method Class [#^Class c, #^Writer w]
+- (.write w (.getName c)))
++ (.write w (RT/className c)))
+
+ (defmethod print-dup Class [#^Class c, #^Writer w]
+ (cond
+@@ -279,11 +279,11 @@
+ (.write w ")"))
+ (.isArray c) (do
+ (.write w "#=(java.lang.Class/forName \"")
+- (.write w (.getName c))
++ (.write w (RT/className c))
+ (.write w "\")"))
+ :else (do
+ (.write w "#=")
+- (.write w (.getName c)))))
++ (.write w (RT/className c)))))
+
+ (defmethod print-method java.math.BigDecimal [b, #^Writer w]
+ (.write w (str b))
diff --git a/src/jvm/clojure/lang/Compiler.java b/src/jvm/clojure/lang/Compiler.java
-index bbb5aff..d4dc231 100644
+index c180201..20a2bef 100644
--- a/src/jvm/clojure/lang/Compiler.java
+++ b/src/jvm/clojure/lang/Compiler.java
-@@ -201,7 +201,8 @@ static final public Var NEXT_LOCAL_NUM = Var.create(0);
+@@ -202,7 +202,8 @@ static final public Var NEXT_LOCAL_NUM = Var.create(0);
static final public Var RET_LOCAL_NUM = Var.create();
//DynamicClassLoader
@@ -328,19 +315,20 @@ index bbb5aff..d4dc231 100644
public enum C{
STATEMENT, //value ignored
diff --git a/src/jvm/clojure/lang/RT.java b/src/jvm/clojure/lang/RT.java
-index f6139d1..fab9304 100644
+index 4954028..98981ea 100644
--- a/src/jvm/clojure/lang/RT.java
+++ b/src/jvm/clojure/lang/RT.java
-@@ -35,6 +35,8 @@ public class RT{
- static final public Boolean T = Boolean.TRUE;//Keyword.intern(Symbol.create(null, "t"));
+@@ -32,6 +32,9 @@ static final public Boolean T = Boolean.TRUE;//Keyword.intern(Symbol.create(null
static final public Boolean F = Boolean.FALSE;//Keyword.intern(Symbol.create(null, "t"));
+ static final public String LOADER_SUFFIX = "__init";
+static final public Integer IntegerMaxValue = Integer.MAX_VALUE;
++static final public Integer IntegerMinValue = Integer.MIN_VALUE;
+
//simple-symbol->class
final static IPersistentMap DEFAULT_IMPORTS = map(
// Symbol.create("RT"), "clojure.lang.RT",
-@@ -1060,6 +1062,10 @@ static public double doubleCast(double x){
+@@ -963,6 +966,10 @@ static public double doubleCast(double x){
return x;
}
@@ -349,12 +337,12 @@ index f6139d1..fab9304 100644
+}
+
static public IPersistentMap map(Object... init){
- if(init != null && init.length == 2)
- return new PersistentArrayMap(init);
-@@ -1792,4 +1798,43 @@ static public int alength(Object xs){
- return Array.getLength(xs);
- }
-
+ if(init == null)
+ return PersistentArrayMap.EMPTY;
+@@ -1707,4 +1714,43 @@ synchronized public static DynamicClassLoader getRootClassLoader() {
+ ROOT_CLASSLOADER = new DynamicClassLoader();
+ return ROOT_CLASSLOADER;
+ }
+
+////////////// ClojureScript support /////////////////////////////////
+