From a16ceea3f2cc059d8e96e067026a905d77ee4199 Mon Sep 17 00:00:00 2001 From: Artur Ventura Date: Wed, 16 Nov 2011 23:48:47 +0000 Subject: [PATCH] More JNI functions --- src/internalJNI.jsh | 6 ++++++ src/javaNativeInterface.js | 15 +++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/src/internalJNI.jsh b/src/internalJNI.jsh index 279a33e..05e841a 100644 --- a/src/internalJNI.jsh +++ b/src/internalJNI.jsh @@ -24,5 +24,11 @@ 'java.lang.Class' : { 'method registerNatives()V' : java_lang_Object_registerNatives, 'method getPrimitiveClass(Ljava/lang/String;)Ljava/lang/Class;' : java_lang_Class_getPrimitiveClass + }, + 'java.lang.Float' : { + 'method floatToRawIntBits(F)I' : java_lang_Float_floatToRawIntBits + }, + 'java.lang.Double' : { + 'method doubleToRawLongBits(D)J' : java_lang_Double_doubleToRawLongBits } } \ No newline at end of file diff --git a/src/javaNativeInterface.js b/src/javaNativeInterface.js index 0a12422..73b44ed 100644 --- a/src/javaNativeInterface.js +++ b/src/javaNativeInterface.js @@ -34,4 +34,19 @@ function java_lang_System_currentTimeMillis(){ //java.lang.Class getPrimitiveClass(Ljava/lang/String;)Ljava/lang/Class; function java_lang_Class_getPrimitiveClass (type) { return this.jvm['primitive_' + javaString2JS(type)]; +} + +//java.lang.Float floatToRawIntBits(F)I +function java_lang_Float_floatToRawIntBits(f){ + var x = new ArrayBuffer(32); + new Float32Array(x,0)[0] = f; + return new Int32Array(x,0)[0]; +} + +//java.lang.Double doubleToRawLongBits(D)J + function java_lang_Double_doubleToRawLongBits(d){ + var x = new ArrayBuffer(32); + new Float64Array(x,0)[0] = d; + var y = new Int32Array(x,0); + return new math.Long(y[0],y[1]); } \ No newline at end of file