diff --git a/bin/LuaJit0.class b/bin/LuaJit0.class new file mode 100644 index 00000000..dd42a993 Binary files /dev/null and b/bin/LuaJit0.class differ diff --git a/src/core/org/luaj/vm/LDouble.java b/src/core/org/luaj/vm/LDouble.java index af82c564..3e00c5e2 100644 --- a/src/core/org/luaj/vm/LDouble.java +++ b/src/core/org/luaj/vm/LDouble.java @@ -47,7 +47,7 @@ public class LDouble extends LNumber { int iz = (int) m_value; if ( iz == m_value ) return iz; long bits = Double.doubleToLongBits( m_value ); - return ( (int) bits >> 32 ) + ( (int) bits ); + return ((int) (bits >> 32)) + ((int)bits); } } diff --git a/src/test/java/org/luaj/compiler/SimpleTests.java b/src/test/java/org/luaj/compiler/SimpleTests.java index 18a0df6e..a20cb9d3 100644 --- a/src/test/java/org/luaj/compiler/SimpleTests.java +++ b/src/test/java/org/luaj/compiler/SimpleTests.java @@ -8,6 +8,8 @@ import junit.framework.TestCase; import org.luaj.TestPlatform; import org.luaj.lib.BaseLib; import org.luaj.vm.LClosure; +import org.luaj.vm.LDouble; +import org.luaj.vm.LInteger; import org.luaj.vm.LPrototype; import org.luaj.vm.LValue; import org.luaj.vm.LuaState; @@ -85,4 +87,24 @@ public class SimpleTests extends TestCase { String s = "print( 1 == b and b )\n"; doTest( s ); } + + private static final int [] samehash = { 0, 1, -1, 2, -2, 4, 8, 16, 32, Integer.MAX_VALUE, Integer.MIN_VALUE }; + private static final double [] diffhash = { .5, 1, 1.5, 1, .5, 1.5, 1.25, 2.5 }; + + public void testDoubleHashCode() { + for ( int i=0; i