summaryrefslogtreecommitdiff
path: root/src/library
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2009-04-08 13:45:47 +0000
committerPaul Phillips <paulp@improving.org>2009-04-08 13:45:47 +0000
commit7a458d71310d747914a50715bfba1f20f521f502 (patch)
tree63212511ff358a84e617d1819811273fc118c477 /src/library
parent4e2f93073a79e49321fd06f0a69ac120b448ba0c (diff)
downloadscala-7a458d71310d747914a50715bfba1f20f521f502.tar.gz
scala-7a458d71310d747914a50715bfba1f20f521f502.tar.bz2
scala-7a458d71310d747914a50715bfba1f20f521f502.zip
Modified all boxing methods to use java.lang.{P...
Modified all boxing methods to use java.lang.{Primitive}.valueOf instead of instantiating a new object. Removed scala's boxing cache since all boxing now goes through the JVM's cache.
Diffstat (limited to 'src/library')
-rw-r--r--src/library/scala/Console.scala24
-rw-r--r--src/library/scala/Predef.scala26
-rw-r--r--src/library/scala/mobile/Code.scala26
-rw-r--r--src/library/scala/runtime/BoxesRunTime.java129
4 files changed, 33 insertions, 172 deletions
diff --git a/src/library/scala/Console.scala b/src/library/scala/Console.scala
index d2a06e7e4a..f22c272e4e 100644
--- a/src/library/scala/Console.scala
+++ b/src/library/scala/Console.scala
@@ -410,23 +410,13 @@ object Console {
while (iter.hasNext) {
res(i) = iter.next match {
case x: Boolean => java.lang.Boolean.valueOf(x)
- /** Should use java.lang.Byte.valueOf(Byte), but only available
- * in Java 1.5 and above. */
- case x: Byte => new java.lang.Byte(x)
- /** Should use java.lang.Short.valueOf(Short), but only available
- * in Java 1.5 and above. */
- case x: Short => new java.lang.Short(x)
- /** Should use java.lang.Character.valueOf(Char), but only available
- * in Java 1.5 and above. */
- case x: Char => new java.lang.Character(x)
- /** Should use java.lang.Integer.valueOf(Int), but only available
- * in Java 1.5 and above. */
- case x: Int => new java.lang.Integer(x)
- /** Should use java.lang.Long.valueOf(Long), but only available
- * in Java 1.5 and above. */
- case x: Long => new java.lang.Long(x)
- case x: Float => new java.lang.Float(x)
- case x: Double => new java.lang.Double(x)
+ case x: Byte => java.lang.Byte.valueOf(x)
+ case x: Short => java.lang.Short.valueOf(x)
+ case x: Char => java.lang.Character.valueOf(x)
+ case x: Int => java.lang.Integer.valueOf(x)
+ case x: Long => java.lang.Long.valueOf(x)
+ case x: Float => java.lang.Float.valueOf(x)
+ case x: Double => java.lang.Double.valueOf(x)
case x: Unit => "()"
case x: AnyRef => x
}
diff --git a/src/library/scala/Predef.scala b/src/library/scala/Predef.scala
index 6662c5cf36..8b4c00bf9c 100644
--- a/src/library/scala/Predef.scala
+++ b/src/library/scala/Predef.scala
@@ -321,24 +321,14 @@ object Predef {
implicit def float2double(x: Float): Double = x.toDouble
- /** Should use java.lang.Byte.valueOf(Byte), but only available
- * in Java 1.5 and above. */
- implicit def byte2Byte(x: Byte) = new java.lang.Byte(x)
- /** Should use java.lang.Short.valueOf(Short), but only available
- * in Java 1.5 and above. */
- implicit def short2Short(x: Short) = new java.lang.Short(x)
- /** Should use java.lang.Character.valueOf(Char), but only available
- * in Java 1.5 and above. */
- implicit def char2Character(x: Char) = new java.lang.Character(x)
- /** Should use java.lang.Integer.valueOf(Int), but only available
- * in Java 1.5 and above. */
- implicit def int2Integer(x: Int) = new java.lang.Integer(x)
- /** Should use java.lang.Long.valueOf(Long), but only available
- * in Java 1.5 and above. */
- implicit def long2Long(x: Long) = new java.lang.Long(x)
- implicit def float2Float(x: Float) = new java.lang.Float(x)
- implicit def double2Double(x: Double) = new java.lang.Double(x)
- implicit def boolean2Boolean(x: Boolean) = java.lang.Boolean.valueOf(x)
+ implicit def byte2Byte(x: Byte) = java.lang.Byte.valueOf(x)
+ implicit def short2Short(x: Short) = java.lang.Short.valueOf(x)
+ implicit def char2Character(x: Char) = java.lang.Character.valueOf(x)
+ implicit def int2Integer(x: Int) = java.lang.Integer.valueOf(x)
+ implicit def long2Long(x: Long) = java.lang.Long.valueOf(x)
+ implicit def float2Float(x: Float) = java.lang.Float.valueOf(x)
+ implicit def double2Double(x: Double) = java.lang.Double.valueOf(x)
+ implicit def boolean2Boolean(x: Boolean) = java.lang.Boolean.valueOf(x)
/** any array projection can be automatically converted into an array */
implicit def forceArrayProjection[A](x: Array.Projection[A]): Array[A] = x.force
diff --git a/src/library/scala/mobile/Code.scala b/src/library/scala/mobile/Code.scala
index ea8da7ce29..cd898e8a3e 100644
--- a/src/library/scala/mobile/Code.scala
+++ b/src/library/scala/mobile/Code.scala
@@ -160,24 +160,14 @@ class Code(clazz: java.lang.Class[_]) {
////////////////////// private functions ///////////////////////
private def boxValue(value: Any) = value match {
- /** Should use java.lang.Byte.valueOf(Byte), but only available
- * in Java 1.5 and above. */
- case x: Byte => (new java.lang.Byte(x), java.lang.Byte.TYPE)
- case x: Boolean => (java.lang.Boolean.valueOf(x), java.lang.Boolean.TYPE)
- /** Should use java.lang.Character.valueOf(Char), but only available
- * in Java 1.5 and above. */
- case x: Char => (new java.lang.Character(x), java.lang.Character.TYPE)
- /** Should use java.lang.Short.valueOf(Short), but only available
- * in Java 1.5 and above. */
- case x: Short => (new java.lang.Short(x), java.lang.Short.TYPE)
- /** Should use java.lang.Integer.valueOf(Int), but only available
- * in Java 1.5 and above. */
- case x: Int => (new java.lang.Integer(x), java.lang.Integer.TYPE)
- /** Should use java.lang.Long.valueOf(Long), but only available
- * in Java 1.5 and above. */
- case x: Long => (new java.lang.Long(x), java.lang.Long.TYPE)
- case x: Float => (new java.lang.Float(x), java.lang.Float.TYPE)
- case x: Double => (new java.lang.Double(x), java.lang.Double.TYPE)
+ case x: Byte => (java.lang.Byte.valueOf(x), java.lang.Byte.TYPE)
+ case x: Boolean => (java.lang.Boolean.valueOf(x), java.lang.Boolean.TYPE)
+ case x: Char => (java.lang.Character.valueOf(x), java.lang.Character.TYPE)
+ case x: Short => (java.lang.Short.valueOf(x), java.lang.Short.TYPE)
+ case x: Int => (java.lang.Integer.valueOf(x), java.lang.Integer.TYPE)
+ case x: Long => (java.lang.Long.valueOf(x), java.lang.Long.TYPE)
+ case x: Float => (java.lang.Float.valueOf(x), java.lang.Float.TYPE)
+ case x: Double => (java.lang.Double.valueOf(x), java.lang.Double.TYPE)
case _ =>
val x = value.asInstanceOf[JObject]
(x, x.getClass())
diff --git a/src/library/scala/runtime/BoxesRunTime.java b/src/library/scala/runtime/BoxesRunTime.java
index 7b8d6bb672..966fbe8cd1 100644
--- a/src/library/scala/runtime/BoxesRunTime.java
+++ b/src/library/scala/runtime/BoxesRunTime.java
@@ -42,96 +42,36 @@ public class BoxesRunTime {
/* BOXING ... BOXING ... BOXING ... BOXING ... BOXING ... BOXING ... BOXING ... BOXING */
- // for 2.8: change to valueOf methods.
-
- private static int charLowBound = 0;
- private static int charUpBound = 255;
- private static Character[] charCache = new Character[charUpBound - charLowBound + 1];
-
- private static int byteLowBound = -128;
- private static int byteUpBound = 127;
- private static Byte[] byteCache = new Byte[byteUpBound - byteLowBound + 1];
-
- private static int shortLowBound = -128;
- private static int shortUpBound = 127;
- private static Short[] shortCache = new Short[shortUpBound - shortLowBound + 1];
-
- private static int intLowBound = -128;
- private static int intUpBound = 1024;
- private static Integer[] intCache = new Integer[intUpBound - intLowBound + 1];
-
- private static int longLowBound = -128;
- private static int longUpBound = 1024;
- private static Long[] longCache = new Long[longUpBound - longLowBound + 1];
-
- static {
- int idx = 0;
- while (idx <= charUpBound - charLowBound) {
- charCache[idx] = new Character((char)(idx + charLowBound));
- idx = idx + 1;
- }
- idx = 0;
- while (idx <= byteUpBound - byteLowBound) {
- byteCache[idx] = new Byte((byte)(idx + byteLowBound));
- idx = idx + 1;
- }
- idx = 0;
- while (idx <= shortUpBound - shortLowBound) {
- shortCache[idx] = new Short((short)(idx + shortLowBound));
- idx = idx + 1;
- }
- idx = 0;
- while (idx <= intUpBound - intLowBound) {
- intCache[idx] = new Integer((int)(idx + intLowBound));
- idx = idx + 1;
- }
- idx = 0;
- while (idx <= longUpBound - longLowBound) {
- longCache[idx] = new Long((long)(idx + longLowBound));
- idx = idx + 1;
- }
- }
-
public static Boolean boxToBoolean(boolean b) {
- return b ? Boolean.TRUE : Boolean.FALSE;
+ return Boolean.valueOf(b);
}
public static Character boxToCharacter(char c) {
- if (c >= charLowBound && c <= charUpBound)
- return charCache[(int)c - charLowBound];
- return new Character(c);
+ return Character.valueOf(c);
}
public static Byte boxToByte(byte b) {
- if (b >= byteLowBound && b <= byteUpBound)
- return byteCache[(int)b - byteLowBound];
- return new Byte(b);
+ return Byte.valueOf(b);
}
public static Short boxToShort(short s) {
- if (s >= shortLowBound && s <= shortUpBound)
- return shortCache[(int)s - shortLowBound];
- return new Short(s);
+ return Short.valueOf(s);
}
public static Integer boxToInteger(int i) {
- if (i >= intLowBound && i <= intUpBound)
- return intCache[(int)i - intLowBound];
- return new Integer(i);
+ return Integer.valueOf(i);
}
public static Long boxToLong(long l) {
- if (l >= longLowBound && l <= longUpBound)
- return longCache[(int)l - longLowBound];
- return new Long(l);
+ return Long.valueOf(l);
}
public static Float boxToFloat(float f) {
- return new Float(f);
+ return Float.valueOf(f);
}
public static Double boxToDouble(double d) {
- return new Double(d);
+ return Double.valueOf(d);
}
/* UNBOXING ... UNBOXING ... UNBOXING ... UNBOXING ... UNBOXING ... UNBOXING ... UNBOXING */
@@ -168,56 +108,6 @@ public class BoxesRunTime {
return d == null ? 0.0d : ((Double)d).doubleValue();
}
- /*
- public static boolean unboxToBoolean(Object b) {
- if (b == null)
- throw new ClassCastException("null is no Boolean value");
- return ((Boolean)b).booleanValue();
- }
-
- public static char unboxToChar(Object c) {
- if (c == null)
- throw new ClassCastException("null is no Char value");
- return ((Character)c).charValue();
- }
-
- public static byte unboxToByte(Object b) {
- if (b == null)
- throw new ClassCastException("null is no Byte value");
- return ((Byte)b).byteValue();
- }
-
- public static short unboxToShort(Object s) {
- if (s == null)
- throw new ClassCastException("null is no Short value");
- return ((Short)s).shortValue();
- }
-
- public static int unboxToInt(Object i) {
- if (i == null)
- throw new ClassCastException("null is no Int value");
- return ((Integer)i).intValue();
- }
-
- public static long unboxToLong(Object l) {
- if (l == null)
- throw new ClassCastException("null is no Long value");
- return ((Long)l).longValue();
- }
-
- public static float unboxToFloat(Object f) {
- if (f == null)
- throw new ClassCastException("null is no Float value");
- return ((Float)f).floatValue();
- }
-
- public static double unboxToDouble(Object d) {
- if (d == null)
- throw new ClassCastException("null is no Double value");
- return ((Double)d).doubleValue();
- }
- */
-
/* COMPARISON ... COMPARISON ... COMPARISON ... COMPARISON ... COMPARISON ... COMPARISON */
/** A rich implementation of the <code>equals</code> method that overrides the
@@ -256,7 +146,8 @@ public class BoxesRunTime {
double bb = (bcode == CHAR) ? ((Character) b).charValue() : ((Number) b).doubleValue();
return aa == bb;
}
- return b.equals(a);
+
+ return b.equals(a);
}
return false;
}