move doubleToRawLongBits (not present on JME) to JSE class

This commit is contained in:
asie
2019-08-11 12:48:34 +02:00
parent 0707e71c6c
commit 6ba28727d2
3 changed files with 32 additions and 2 deletions

View File

@@ -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);

View 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);
}
}

View 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);
}
}