From a18452f6c96f16e699117fe67a9ae84b6ba17075 Mon Sep 17 00:00:00 2001 From: Joel Dice Date: Mon, 22 Apr 2013 21:23:32 -0600 Subject: [PATCH] implement JVM_ConstantPoolGetFloatAt This commit also simplifies JVM_ConstantPoolGetDoubleAt, which cannot throw an exception and thus need not go through vmRun. --- src/classpath-openjdk.cpp | 23 +++++++++-------------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/src/classpath-openjdk.cpp b/src/classpath-openjdk.cpp index 56f8526fcc..fcbf27ea57 100644 --- a/src/classpath-openjdk.cpp +++ b/src/classpath-openjdk.cpp @@ -4874,29 +4874,24 @@ EXPORT(JVM_ConstantPoolGetLongAt)(Thread* t, jobject, jobject pool, jint index) } extern "C" JNIEXPORT jfloat JNICALL -EXPORT(JVM_ConstantPoolGetFloatAt)(Thread*, jobject, jobject, jint) -{ abort(); } - -uint64_t -jvmConstantPoolGetDoubleAt(Thread* t, uintptr_t* arguments) +EXPORT(JVM_ConstantPoolGetFloatAt)(Thread* t, jobject, jobject pool, + jint index) { - jobject pool = reinterpret_cast(arguments[0]); - jint index = arguments[1]; + ENTER(t, Thread::ActiveState); - double v; memcpy(&v, &singletonValue(t, *pool, index - 1), 8); - - return doubleToBits(v); + return bitsToFloat(singletonValue(t, *pool, index - 1)); } extern "C" JNIEXPORT jdouble JNICALL EXPORT(JVM_ConstantPoolGetDoubleAt)(Thread* t, jobject, jobject pool, jint index) { - uintptr_t arguments[] = { reinterpret_cast(pool), - static_cast(index) }; + ENTER(t, Thread::ActiveState); - return bitsToDouble - (run(t, jvmConstantPoolGetDoubleAt, arguments)); + double v; + memcpy(&v, &singletonValue(t, *pool, index - 1), 8); + + return v; } extern "C" JNIEXPORT jstring JNICALL