move doubleToRawLongBits (not present on JME) to JSE class
This commit is contained in:
@@ -21,6 +21,8 @@
|
||||
******************************************************************************/
|
||||
package org.luaj.vm2;
|
||||
|
||||
import jdk.nashorn.internal.objects.Global;
|
||||
import org.luaj.vm2.compat.JavaCompat;
|
||||
import org.luaj.vm2.lib.MathLib;
|
||||
|
||||
/**
|
||||
@@ -242,12 +244,12 @@ public class LuaDouble extends LuaNumber {
|
||||
|
||||
public String tojstring() {
|
||||
if ( v == 0.0 ) // never occurs on J2ME
|
||||
return (Double.doubleToRawLongBits(v)<0? "-0": "0");
|
||||
return (JavaCompat.INSTANCE.doubleToRawLongBits(v)<0? "-0": "0");
|
||||
long l = (long) v;
|
||||
if ( l == v )
|
||||
return Long.toString(l);
|
||||
if ( Double.isNaN(v) )
|
||||
return (Double.doubleToRawLongBits(v)<0? JSTR_NEGNAN: JSTR_NAN);
|
||||
return (JavaCompat.INSTANCE.doubleToRawLongBits(v)<0? JSTR_NEGNAN: JSTR_NAN);
|
||||
if ( Double.isInfinite(v) )
|
||||
return (v<0? JSTR_NEGINF: JSTR_POSINF);
|
||||
return Float.toString((float)v);
|
||||
|
||||
19
src/core/org/luaj/vm2/compat/JavaCompat.java
Normal file
19
src/core/org/luaj/vm2/compat/JavaCompat.java
Normal file
@@ -0,0 +1,19 @@
|
||||
package org.luaj.vm2.compat;
|
||||
|
||||
public class JavaCompat {
|
||||
public static final JavaCompat INSTANCE;
|
||||
|
||||
static {
|
||||
JavaCompat instance;
|
||||
try {
|
||||
instance = (JavaCompat) Class.forName("org.luaj.vm2.lib.jse.JavaCompatJSE").newInstance();
|
||||
} catch (Throwable t) {
|
||||
instance = new JavaCompat();
|
||||
}
|
||||
INSTANCE = instance;
|
||||
}
|
||||
|
||||
public long doubleToRawLongBits(double x) {
|
||||
return Double.doubleToLongBits(x);
|
||||
}
|
||||
}
|
||||
9
src/jse/org/luaj/vm2/lib/jse/JavaCompatJSE.java
Normal file
9
src/jse/org/luaj/vm2/lib/jse/JavaCompatJSE.java
Normal file
@@ -0,0 +1,9 @@
|
||||
package org.luaj.vm2.lib.jse;
|
||||
|
||||
import org.luaj.vm2.compat.JavaCompat;
|
||||
|
||||
public class JavaCompatJSE extends JavaCompat {
|
||||
public long doubleToRawLongBits(double x) {
|
||||
return Double.doubleToRawLongBits(x);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user