From 6ba28727d2dd3b1e237b3ae8997022baf82e355b Mon Sep 17 00:00:00 2001 From: asie Date: Sun, 11 Aug 2019 12:48:34 +0200 Subject: [PATCH] move doubleToRawLongBits (not present on JME) to JSE class --- src/core/org/luaj/vm2/LuaDouble.java | 6 ++++-- src/core/org/luaj/vm2/compat/JavaCompat.java | 19 +++++++++++++++++++ .../org/luaj/vm2/lib/jse/JavaCompatJSE.java | 9 +++++++++ 3 files changed, 32 insertions(+), 2 deletions(-) create mode 100644 src/core/org/luaj/vm2/compat/JavaCompat.java create mode 100644 src/jse/org/luaj/vm2/lib/jse/JavaCompatJSE.java diff --git a/src/core/org/luaj/vm2/LuaDouble.java b/src/core/org/luaj/vm2/LuaDouble.java index 31c9886d..1126d077 100644 --- a/src/core/org/luaj/vm2/LuaDouble.java +++ b/src/core/org/luaj/vm2/LuaDouble.java @@ -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); diff --git a/src/core/org/luaj/vm2/compat/JavaCompat.java b/src/core/org/luaj/vm2/compat/JavaCompat.java new file mode 100644 index 00000000..07b0be29 --- /dev/null +++ b/src/core/org/luaj/vm2/compat/JavaCompat.java @@ -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); + } +} diff --git a/src/jse/org/luaj/vm2/lib/jse/JavaCompatJSE.java b/src/jse/org/luaj/vm2/lib/jse/JavaCompatJSE.java new file mode 100644 index 00000000..2c6ccf8e --- /dev/null +++ b/src/jse/org/luaj/vm2/lib/jse/JavaCompatJSE.java @@ -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); + } +}