summaryrefslogtreecommitdiff
path: root/src/jvm/clojure/lang/Numbers.java
diff options
context:
space:
mode:
authorRich Hickey <richhickey@gmail.com>2008-10-04 22:07:56 +0000
committerRich Hickey <richhickey@gmail.com>2008-10-04 22:07:56 +0000
commit52d295cb123671de01f1df9526e193e4b3967c82 (patch)
treeb3e78fc63debbde183e9b44b50f0c1cfcc19f133 /src/jvm/clojure/lang/Numbers.java
parent75dcef321baeb94e4d35036fb7a7805e6350e662 (diff)
added inlining for integer bitops
Diffstat (limited to 'src/jvm/clojure/lang/Numbers.java')
-rw-r--r--src/jvm/clojure/lang/Numbers.java55
1 files changed, 47 insertions, 8 deletions
diff --git a/src/jvm/clojure/lang/Numbers.java b/src/jvm/clojure/lang/Numbers.java
index 47bac98d..4a6f924c 100644
--- a/src/jvm/clojure/lang/Numbers.java
+++ b/src/jvm/clojure/lang/Numbers.java
@@ -294,21 +294,21 @@ static public Number divide(BigInteger n, BigInteger d){
(d.signum() < 0 ? d.negate() : d));
}
-static public Number not(Number x){
- return bitOps(x).not(x);
+static public Number not(Object x){
+ return bitOps(x).not((Number)x);
}
-static public Number and(Number x, Number y){
- return bitOps(x).combine(bitOps(y)).and(x, y);
+static public Number and(Object x, Object y){
+ return bitOps(x).combine(bitOps(y)).and((Number)x, (Number)y);
}
-static public Number or(Number x, Number y){
- return bitOps(x).combine(bitOps(y)).or(x, y);
+static public Number or(Object x, Object y){
+ return bitOps(x).combine(bitOps(y)).or((Number)x, (Number)y);
}
-static public Number xor(Number x, Number y){
- return bitOps(x).combine(bitOps(y)).xor(x, y);
+static public Number xor(Object x, Object y){
+ return bitOps(x).combine(bitOps(y)).xor((Number)x, (Number)y);
}
static public Number andNot(Number x, Number y){
@@ -1562,6 +1562,21 @@ static public int add(int x, int y){
return ret;
}
+static public int not(int x){
+ return ~x;
+}
+
+static public int and(int x, int y){
+ return x & y;
+}
+
+static public int or(int x, int y){
+ return x | y;
+}
+
+static public int xor(int x, int y){
+ return x ^ y;
+}
static public int minus(int x, int y){
int ret = x - y;
@@ -3460,6 +3475,30 @@ static public Number add(Object x, int y){
return add(x,(Object)y);
}
+static public Number and(int x, Object y){
+ return and((Object)x,y);
+}
+
+static public Number and(Object x, int y){
+ return and(x,(Object)y);
+}
+
+static public Number or(int x, Object y){
+ return or((Object)x,y);
+}
+
+static public Number or(Object x, int y){
+ return or(x,(Object)y);
+}
+
+static public Number xor(int x, Object y){
+ return xor((Object)x,y);
+}
+
+static public Number xor(Object x, int y){
+ return xor(x,(Object)y);
+}
+
static public Number add(float x, Object y){
return add((Object)x,y);
}