diff --git a/classpath/java-lang.cpp b/classpath/java-lang.cpp index 7d4a6259ef..64b8472624 100644 --- a/classpath/java-lang.cpp +++ b/classpath/java-lang.cpp @@ -81,6 +81,12 @@ Java_java_lang_System_doMapLibraryName(JNIEnv* e, jclass, jstring name) return r; } +extern "C" JNIEXPORT jdouble JNICALL +Java_java_lang_Math_sin(JNIEnv*, jclass, jdouble val) +{ + return sin(val); +} + extern "C" JNIEXPORT jdouble JNICALL Java_java_lang_Math_sqrt(JNIEnv*, jclass, jdouble val) { @@ -99,6 +105,12 @@ Java_java_lang_Math_floor(JNIEnv*, jclass, jdouble val) return floor(val); } +extern "C" JNIEXPORT jdouble JNICALL +Java_java_lang_Math_ceil(JNIEnv*, jclass, jdouble val) +{ + return ceil(val); +} + extern "C" JNIEXPORT jint JNICALL Java_java_lang_Double_fillBufferWithDouble(JNIEnv* e, jclass, jdouble val, jbyteArray buffer, jint bufferSize) { diff --git a/src/machine.cpp b/src/machine.cpp index 3331926b56..5462a43808 100644 --- a/src/machine.cpp +++ b/src/machine.cpp @@ -2605,6 +2605,11 @@ collect(Thread* t, Heap::CollectionType type) void printTrace(Thread* t, object exception) { + if (exception == 0) { + exception = makeNullPointerException(t, 0, + makeTrace(t, t->m->processor->frameStart(t)), + 0); + } for (object e = exception; e; e = throwableCauseUnsafe(t, e)) { if (e != exception) { fprintf(stderr, "caused by: ");