Bug fix in Float.floatToRawIntBits and rawIntBitsToFloat. development
authorJan Vrany <jan.vrany@fit.cvut.cz>
Sun, 16 Dec 2012 11:20:22 +0100
branchdevelopment
changeset 1885 32d39c55b8b0
parent 1884 b5f94052b1c7
child 1887 6d3d6ed2d80c
child 1890 7bc6b5feb6f8
Bug fix in Float.floatToRawIntBits and rawIntBitsToFloat. Fixes mauve Math.min/max tests.
JavaVM.st
--- a/JavaVM.st	Sun Dec 16 10:32:25 2012 +0100
+++ b/JavaVM.st	Sun Dec 16 11:20:22 2012 +0100
@@ -7638,14 +7638,13 @@
     f := aJavaContext argAt:1.
     f class == ShortFloat ifFalse:[ self throwIllegalArgumentException: 'Not a float'].
 %{
-        int i;
-        i = (int)(__shortFloatVal(f));
-        RETURN (__MKINT(i));
+        int *ival = &__shortFloatVal(f);
+        RETURN (__MKINT(*ival));
 %}.
     self primitiveFailed.
 
     "Created: / 09-11-2010 / 20:59:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 07-08-2011 / 21:45:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 16-12-2012 / 11:16:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 _java_lang_Float_intBitsToFloat: nativeContext
@@ -7657,9 +7656,13 @@
     i := nativeContext argAt:1.
     f := ShortFloat new.
 %{
-    __shortFloatVal(f) = (float)(__intVal(i));
+    int ival = __intVal(i);
+    float *fval = &ival;
+    __shortFloatVal(f) = *fval;
 %}.
     ^f
+
+    "Modified: / 16-12-2012 / 10:39:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 _java_lang_Object_clone: nativeContext
@@ -19960,7 +19963,7 @@
 !
 
 version_CVS
-    ^ 'Header: /cvs/stx/stx/libjava/JavaVM.st,v 1.186 2011/08/22 14:49:28 vrany Exp '
+    ^ '§Header: /cvs/stx/stx/libjava/JavaVM.st,v 1.186 2011/08/22 14:49:28 vrany Exp §'
 !
 
 version_HG
@@ -19969,7 +19972,7 @@
 !
 
 version_SVN
-    ^ 'Id'
+    ^ '§Id§'
 ! !
 
 JavaVM initialize!