#include <stdint.h>
-#include "native/jni.h"
-#include "native/native.h"
+#include "native/jni.hpp"
+#include "native/native.hpp"
#if defined(ENABLE_JNI_HEADERS)
# include "native/include/java_lang_Thread.h"
#endif
#include "threads/thread.hpp"
+#include "threads/threadlist.hpp"
-#include "toolbox/logging.h"
+#include "toolbox/logging.hpp"
-#include "vm/builtin.h"
+#include "vm/jit/builtin.hpp"
#include "vm/javaobjects.hpp"
}
-#if 0
/*
* Class: java/lang/Thread
* Method: activeCount
*/
JNIEXPORT s4 JNICALL Java_java_lang_Thread_activeCount(JNIEnv *env, jclass clazz)
{
+#if defined(ENABLE_THREADS)
+ return ThreadList::get_number_of_non_daemon_threads();
+#else
+ return 1;
+#endif
}
*/
JNIEXPORT void JNICALL Java_java_lang_Thread_interrupt0(JNIEnv *env, jobject _this)
{
+#if defined(ENABLE_THREADS)
+ java_lang_Thread jlt(_this);
+ threadobject* t = jlt.get_vm_thread();
+ threads_thread_interrupt(t);
+#endif
}
-
+#if 0
/*
* Class: java/lang/Thread
* Method: internalExit
{ (char*) "sleep", (char*) "(J)V", (void*) (uintptr_t) &Java_java_lang_Thread_sleep },
{ (char*) "start0", (char*) "()V", (void*) (uintptr_t) &Java_java_lang_Thread_start0 },
{ (char*) "isAlive", (char*) "()Z", (void*) (uintptr_t) &Java_java_lang_Thread_isAlive },
-#if 0
{ (char*) "activeCount", (char*) "()I", (void*) (uintptr_t) &Java_java_lang_Thread_activeCount },
{ (char*) "setPriority0", (char*) "(II)V", (void*) (uintptr_t) &Java_java_lang_Thread_setPriority0 },
{ (char*) "interrupt0", (char*) "()V", (void*) (uintptr_t) &Java_java_lang_Thread_interrupt0 },
+#if 0
{ (char*) "internalExit", (char*) "()V", (void*) (uintptr_t) &Java_java_lang_Thread_internalExit },
#endif
{ (char*) "yield", (char*) "()V", (void*) (uintptr_t) &Java_java_lang_Thread_yield },
*******************************************************************************/
-// FIXME
-extern "C" {
void _Jv_java_lang_Thread_init(void)
{
- utf *u;
-
- u = utf_new_char("java/lang/Thread");
+ utf* u = utf_new_char("java/lang/Thread");
- native_method_register(u, methods, NATIVE_METHODS_COUNT);
-}
+ NativeMethods& nm = VM::get_current()->get_nativemethods();
+ nm.register_methods(u, methods, NATIVE_METHODS_COUNT);
}