|
From: <ls...@us...> - 2007-05-13 16:52:36
|
Revision: 3190
http://jnode.svn.sourceforge.net/jnode/?rev=3190&view=rev
Author: lsantha
Date: 2007-05-13 09:52:35 -0700 (Sun, 13 May 2007)
Log Message:
-----------
First portions of OpenJDK.
Modified Paths:
--------------
trunk/core/src/classpath/vm/java/lang/Class.java
Added Paths:
-----------
trunk/core/src/classpath/vm/java/lang/NativeDouble.java
Modified: trunk/core/src/classpath/vm/java/lang/Class.java
===================================================================
--- trunk/core/src/classpath/vm/java/lang/Class.java 2007-05-13 16:51:36 UTC (rev 3189)
+++ trunk/core/src/classpath/vm/java/lang/Class.java 2007-05-13 16:52:35 UTC (rev 3190)
@@ -1039,6 +1039,36 @@
}
/**
+ * Gets a primitive class of a given type.
+ *
+ * @param type
+ * @return
+ * @see VmType#getPrimitiveClass(char)
+ */
+ static Class getPrimitiveClass(String type) {
+ if(type.equals("double"))
+ return getPrimitiveClass('D');
+ else if(type.equals("float"))
+ return getPrimitiveClass('F');
+ else if(type.equals("boolean"))
+ return getPrimitiveClass('Z');
+ else if(type.equals("byte"))
+ return getPrimitiveClass('B');
+ else if(type.equals("char"))
+ return getPrimitiveClass('C');
+ else if(type.equals("short"))
+ return getPrimitiveClass('S');
+ else if(type.equals("int"))
+ return getPrimitiveClass('I');
+ else if(type.equals("long"))
+ return getPrimitiveClass('J');
+ else if(type.equals("void"))
+ return getPrimitiveClass('V');
+ else
+ throw new IllegalArgumentException("Unknown type " + type);
+ }
+
+ /**
* Returns the enumeration constants of this class, or null if this class is
* not an <code>Enum</code>.
*
Added: trunk/core/src/classpath/vm/java/lang/NativeDouble.java
===================================================================
--- trunk/core/src/classpath/vm/java/lang/NativeDouble.java (rev 0)
+++ trunk/core/src/classpath/vm/java/lang/NativeDouble.java 2007-05-13 16:52:35 UTC (rev 3190)
@@ -0,0 +1,47 @@
+/*
+ * $Id$
+ */
+package java.lang;
+
+import org.jnode.vm.VmMagic;
+
+/**
+ * @author Levente S\xE1ntha
+ */
+public class NativeDouble {
+ /**
+ * Convert the double to the IEEE 754 floating-point "double format" bit
+ * layout. Bit 63 (the most significant) is the sign bit, bits 62-52 (masked
+ * by 0x7ff0000000000000L) represent the exponent, and bits 51-0 (masked by
+ * 0x000fffffffffffffL) are the mantissa. This function leaves NaN alone,
+ * rather than collapsing to a canonical value. The result of this function
+ * can be used as the argument to <code>Double.longBitsToDouble(long)</code>
+ * to obtain the original <code>double</code> value.
+ *
+ * @param value
+ * the <code>double</code> to convert
+ * @return the bits of the <code>double</code>
+ * @see java.lang.Double#longBitsToDouble(long)
+ */
+ public static long doubleToRawLongBits(double value) {
+ return VmMagic.doubleToRawLongBits(value);
+ }
+
+ /**
+ * Convert the argument in IEEE 754 floating-point "double format" bit
+ * layout to the corresponding float. Bit 63 (the most significant) is the
+ * sign bit, bits 62-52 (masked by 0x7ff0000000000000L) represent the
+ * exponent, and bits 51-0 (masked by 0x000fffffffffffffL) are the mantissa.
+ * This function leaves NaN alone, so that you can recover the bit pattern
+ * with <code>Double.doubleToRawLongBits(double)</code>.
+ *
+ * @param bits
+ * the bits to convert
+ * @return the <code>double</code> represented by the bits
+ * @see java.lang.Double#doubleToLongBits(double)
+ * @see #doubleToRawLongBits(double)
+ */
+ public static double longBitsToDouble(long bits) {
+ return VmMagic.longBitsToDouble(bits);
+ }
+}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|