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; package org.luaj.vm2;
import jdk.nashorn.internal.objects.Global;
import org.luaj.vm2.compat.JavaCompat;
import org.luaj.vm2.lib.MathLib; import org.luaj.vm2.lib.MathLib;
/** /**
@@ -242,12 +244,12 @@ public class LuaDouble extends LuaNumber {
public String tojstring() { public String tojstring() {
if ( v == 0.0 ) // never occurs on J2ME 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; long l = (long) v;
if ( l == v ) if ( l == v )
return Long.toString(l); return Long.toString(l);
if ( Double.isNaN(v) ) 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) ) if ( Double.isInfinite(v) )
return (v<0? JSTR_NEGINF: JSTR_POSINF); return (v<0? JSTR_NEGINF: JSTR_POSINF);
return Float.toString((float)v); 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);
}
}