diff options
author | Alon Zakai <alonzakai@gmail.com> | 2013-05-08 16:06:26 -0700 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2013-05-08 16:06:26 -0700 |
commit | 693682fc225e60c9c335ee910fb3c8bb5cf85470 (patch) | |
tree | b2c1285adf65b68a7b20aa231c4c5665966b2c18 /tests/nbody-java/native_java_lang_Thread.c | |
parent | b41b535aeac53740dec416f617378ec4e4e382ce (diff) |
add nbody-java code
Diffstat (limited to 'tests/nbody-java/native_java_lang_Thread.c')
-rw-r--r-- | tests/nbody-java/native_java_lang_Thread.c | 310 |
1 files changed, 310 insertions, 0 deletions
diff --git a/tests/nbody-java/native_java_lang_Thread.c b/tests/nbody-java/native_java_lang_Thread.c new file mode 100644 index 00000000..c2631b1c --- /dev/null +++ b/tests/nbody-java/native_java_lang_Thread.c @@ -0,0 +1,310 @@ + +#include "xmlvm.h" +#include "java_lang_Thread.h" + + +//XMLVM_BEGIN_NATIVE_IMPLEMENTATION +#include <pthread.h> +#ifdef __OBJC__ +#import <Foundation/NSAutoreleasePool.h> +#endif + + +void threadRunner(JAVA_OBJECT me) +{ + java_lang_Thread* thiz = me; + XMLVM_JMP_BUF xmlvm_exception_env; + JAVA_LONG nativeThreadId = (JAVA_LONG) pthread_self(); + +#ifdef __OBJC__ + NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init]; +#endif +#ifdef XMLVM_ENABLE_STACK_TRACES + createStackForNewThread(nativeThreadId); +#endif + + if (XMLVM_SETJMP(xmlvm_exception_env)) { + // Technically, XMLVM_UNWIND_EXCEPTION() should be called, but + // exceptions will not be used anymore and XMLVM_ENTER_METHOD() wasn't + // called (excessive), so a compilation error would occur + + xmlvm_unhandled_exception(); + } else { + thiz->fields.java_lang_Thread.xmlvmExceptionEnv_ = &xmlvm_exception_env; + java_lang_Thread_run0___long(thiz, nativeThreadId); + } + +#ifdef XMLVM_ENABLE_STACK_TRACES + destroyStackForExitingThread(nativeThreadId); +#endif +#ifdef __OBJC__ + [pool release]; +#endif +} +//XMLVM_END_NATIVE_IMPLEMENTATION + +void java_lang_Thread_initMainThread__(JAVA_OBJECT me) +{ + //XMLVM_BEGIN_NATIVE[java_lang_Thread_initMainThread__] + ((java_lang_Thread*)me)->fields.java_lang_Thread.xmlvmExceptionEnv_ = xmlvm_exception_env_main_thread; + //XMLVM_END_NATIVE +} + +JAVA_INT java_lang_Thread_activeCount__() +{ + //XMLVM_BEGIN_NATIVE[java_lang_Thread_activeCount__] + XMLVM_UNIMPLEMENTED_NATIVE_METHOD(); + //XMLVM_END_NATIVE +} + +void java_lang_Thread_checkAccess__(JAVA_OBJECT me) +{ + //XMLVM_BEGIN_NATIVE[java_lang_Thread_checkAccess__] + XMLVM_UNIMPLEMENTED_NATIVE_METHOD(); + //XMLVM_END_NATIVE +} + +JAVA_INT java_lang_Thread_countStackFrames__(JAVA_OBJECT me) +{ + //XMLVM_BEGIN_NATIVE[java_lang_Thread_countStackFrames__] + XMLVM_UNIMPLEMENTED_NATIVE_METHOD(); + //XMLVM_END_NATIVE +} + +JAVA_LONG java_lang_Thread_getCurrentThreadNativeId__() +{ + //XMLVM_BEGIN_NATIVE[java_lang_Thread_getCurrentThreadNativeId__] + JAVA_LONG nativeThreadId = (JAVA_LONG)pthread_self(); + return nativeThreadId; + //XMLVM_END_NATIVE +} + +void java_lang_Thread_destroy__(JAVA_OBJECT me) +{ + //XMLVM_BEGIN_NATIVE[java_lang_Thread_destroy__] + XMLVM_UNIMPLEMENTED_NATIVE_METHOD(); + //XMLVM_END_NATIVE +} + +void java_lang_Thread_dumpStack__() +{ + //XMLVM_BEGIN_NATIVE[java_lang_Thread_dumpStack__] + XMLVM_UNIMPLEMENTED_NATIVE_METHOD(); + //XMLVM_END_NATIVE +} + +JAVA_INT java_lang_Thread_enumerate___java_lang_Thread_1ARRAY(JAVA_OBJECT n1) +{ + //XMLVM_BEGIN_NATIVE[java_lang_Thread_enumerate___java_lang_Thread_1ARRAY] + XMLVM_UNIMPLEMENTED_NATIVE_METHOD(); + //XMLVM_END_NATIVE +} + +JAVA_OBJECT java_lang_Thread_getAllStackTraces__() +{ + //XMLVM_BEGIN_NATIVE[java_lang_Thread_getAllStackTraces__] + XMLVM_UNIMPLEMENTED_NATIVE_METHOD(); + //XMLVM_END_NATIVE +} + +JAVA_OBJECT java_lang_Thread_getContextClassLoader__(JAVA_OBJECT me) +{ + //XMLVM_BEGIN_NATIVE[java_lang_Thread_getContextClassLoader__] + XMLVMElem _r0; + _r0.o = __NEW_org_xmlvm_runtime_XMLVMClassLoader(); + org_xmlvm_runtime_XMLVMClassLoader___INIT___(_r0.o); + return _r0.o; + //XMLVM_END_NATIVE +} + +JAVA_OBJECT java_lang_Thread_getDefaultUncaughtExceptionHandler__() +{ + //XMLVM_BEGIN_NATIVE[java_lang_Thread_getDefaultUncaughtExceptionHandler__] + XMLVM_UNIMPLEMENTED_NATIVE_METHOD(); + //XMLVM_END_NATIVE +} + +JAVA_OBJECT java_lang_Thread_getStackTrace__(JAVA_OBJECT me) +{ + //XMLVM_BEGIN_NATIVE[java_lang_Thread_getStackTrace__] + XMLVM_UNIMPLEMENTED_NATIVE_METHOD(); + //XMLVM_END_NATIVE +} + +JAVA_OBJECT java_lang_Thread_getUncaughtExceptionHandler__(JAVA_OBJECT me) +{ + //XMLVM_BEGIN_NATIVE[java_lang_Thread_getUncaughtExceptionHandler__] + XMLVM_UNIMPLEMENTED_NATIVE_METHOD(); + //XMLVM_END_NATIVE +} + +void java_lang_Thread_join___long_int(JAVA_OBJECT me, JAVA_LONG n1, JAVA_INT n2) +{ + //XMLVM_BEGIN_NATIVE[java_lang_Thread_join___long_int] + XMLVM_UNIMPLEMENTED_NATIVE_METHOD(); + //XMLVM_END_NATIVE +} + +void java_lang_Thread_resume__(JAVA_OBJECT me) +{ + //XMLVM_BEGIN_NATIVE[java_lang_Thread_resume__] + XMLVM_UNIMPLEMENTED_NATIVE_METHOD(); + //XMLVM_END_NATIVE +} + +JAVA_BOOLEAN java_lang_Thread_stackTracesEnabled__() +{ + //XMLVM_BEGIN_NATIVE[java_lang_Thread_stackTracesEnabled__] +#ifdef XMLVM_ENABLE_STACK_TRACES + return 1; +#else + return 0; +#endif + //XMLVM_END_NATIVE +} + +void java_lang_Thread_setContextClassLoader___java_lang_ClassLoader(JAVA_OBJECT me, JAVA_OBJECT n1) +{ + //XMLVM_BEGIN_NATIVE[java_lang_Thread_setContextClassLoader___java_lang_ClassLoader] + XMLVM_UNIMPLEMENTED_NATIVE_METHOD(); + //XMLVM_END_NATIVE +} + +void java_lang_Thread_setDefaultUncaughtExceptionHandler___java_lang_Thread_UncaughtExceptionHandler(JAVA_OBJECT n1) +{ + //XMLVM_BEGIN_NATIVE[java_lang_Thread_setDefaultUncaughtExceptionHandler___java_lang_Thread_UncaughtExceptionHandler] + XMLVM_UNIMPLEMENTED_NATIVE_METHOD(); + //XMLVM_END_NATIVE +} + +void java_lang_Thread_setPriority___int(JAVA_OBJECT me, JAVA_INT n1) +{ + //XMLVM_BEGIN_NATIVE[java_lang_Thread_setPriority___int] + XMLVM_UNIMPLEMENTED_NATIVE_METHOD(); + //XMLVM_END_NATIVE +} + +void java_lang_Thread_setUncaughtExceptionHandler___java_lang_Thread_UncaughtExceptionHandler(JAVA_OBJECT me, JAVA_OBJECT n1) +{ + //XMLVM_BEGIN_NATIVE[java_lang_Thread_setUncaughtExceptionHandler___java_lang_Thread_UncaughtExceptionHandler] + XMLVM_UNIMPLEMENTED_NATIVE_METHOD(); + //XMLVM_END_NATIVE +} + +void java_lang_Thread_start0__(JAVA_OBJECT me) +{ + //XMLVM_BEGIN_NATIVE[java_lang_Thread_start0__] + pthread_t pt; + pthread_attr_t attr; + pthread_attr_init(&attr); + pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE); + int rc = pthread_create(&pt, &attr, threadRunner, (void *)me); + if (rc != 0) { + printf("ERROR creating thread. Return code: %i", rc); + exit(-1); + } + pthread_attr_destroy(&attr); + //XMLVM_END_NATIVE +} + +void java_lang_Thread_stop__(JAVA_OBJECT me) +{ + //XMLVM_BEGIN_NATIVE[java_lang_Thread_stop__] + XMLVM_UNIMPLEMENTED_NATIVE_METHOD(); + //XMLVM_END_NATIVE +} + +void java_lang_Thread_stop___java_lang_Throwable(JAVA_OBJECT me, JAVA_OBJECT n1) +{ + //XMLVM_BEGIN_NATIVE[java_lang_Thread_stop___java_lang_Throwable] + XMLVM_UNIMPLEMENTED_NATIVE_METHOD(); + //XMLVM_END_NATIVE +} + +void java_lang_Thread_suspend__(JAVA_OBJECT me) +{ + //XMLVM_BEGIN_NATIVE[java_lang_Thread_suspend__] + XMLVM_UNIMPLEMENTED_NATIVE_METHOD(); + //XMLVM_END_NATIVE +} + +void java_lang_Thread_yield__() +{ + //XMLVM_BEGIN_NATIVE[java_lang_Thread_yield__] + XMLVM_UNIMPLEMENTED_NATIVE_METHOD(); + //XMLVM_END_NATIVE +} + +JAVA_BOOLEAN java_lang_Thread_holdsLock___java_lang_Object(JAVA_OBJECT n1) +{ + //XMLVM_BEGIN_NATIVE[java_lang_Thread_holdsLock___java_lang_Object] + XMLVM_UNIMPLEMENTED_NATIVE_METHOD(); + //XMLVM_END_NATIVE +} + + +void xmlvm_init_native_java_lang_Thread() +{ + //XMLVM_BEGIN_NATIVE_IMPLEMENTATION_INIT + //XMLVM_END_NATIVE_IMPLEMENTATION_INIT +#ifdef XMLVM_VTABLE_IDX_java_lang_Thread_checkAccess__ + __TIB_java_lang_Thread.vtable[XMLVM_VTABLE_IDX_java_lang_Thread_checkAccess__] = + (VTABLE_PTR) java_lang_Thread_checkAccess__; +#endif +#ifdef XMLVM_VTABLE_IDX_java_lang_Thread_countStackFrames__ + __TIB_java_lang_Thread.vtable[XMLVM_VTABLE_IDX_java_lang_Thread_countStackFrames__] = + (VTABLE_PTR) java_lang_Thread_countStackFrames__; +#endif +#ifdef XMLVM_VTABLE_IDX_java_lang_Thread_destroy__ + __TIB_java_lang_Thread.vtable[XMLVM_VTABLE_IDX_java_lang_Thread_destroy__] = + (VTABLE_PTR) java_lang_Thread_destroy__; +#endif +#ifdef XMLVM_VTABLE_IDX_java_lang_Thread_getContextClassLoader__ + __TIB_java_lang_Thread.vtable[XMLVM_VTABLE_IDX_java_lang_Thread_getContextClassLoader__] = + (VTABLE_PTR) java_lang_Thread_getContextClassLoader__; +#endif +#ifdef XMLVM_VTABLE_IDX_java_lang_Thread_getStackTrace__ + __TIB_java_lang_Thread.vtable[XMLVM_VTABLE_IDX_java_lang_Thread_getStackTrace__] = + (VTABLE_PTR) java_lang_Thread_getStackTrace__; +#endif +#ifdef XMLVM_VTABLE_IDX_java_lang_Thread_getUncaughtExceptionHandler__ + __TIB_java_lang_Thread.vtable[XMLVM_VTABLE_IDX_java_lang_Thread_getUncaughtExceptionHandler__] = + (VTABLE_PTR) java_lang_Thread_getUncaughtExceptionHandler__; +#endif +#ifdef XMLVM_VTABLE_IDX_java_lang_Thread_join___long_int + __TIB_java_lang_Thread.vtable[XMLVM_VTABLE_IDX_java_lang_Thread_join___long_int] = + (VTABLE_PTR) java_lang_Thread_join___long_int; +#endif +#ifdef XMLVM_VTABLE_IDX_java_lang_Thread_resume__ + __TIB_java_lang_Thread.vtable[XMLVM_VTABLE_IDX_java_lang_Thread_resume__] = + (VTABLE_PTR) java_lang_Thread_resume__; +#endif +#ifdef XMLVM_VTABLE_IDX_java_lang_Thread_setContextClassLoader___java_lang_ClassLoader + __TIB_java_lang_Thread.vtable[XMLVM_VTABLE_IDX_java_lang_Thread_setContextClassLoader___java_lang_ClassLoader] = + (VTABLE_PTR) java_lang_Thread_setContextClassLoader___java_lang_ClassLoader; +#endif +#ifdef XMLVM_VTABLE_IDX_java_lang_Thread_setPriority___int + __TIB_java_lang_Thread.vtable[XMLVM_VTABLE_IDX_java_lang_Thread_setPriority___int] = + (VTABLE_PTR) java_lang_Thread_setPriority___int; +#endif +#ifdef XMLVM_VTABLE_IDX_java_lang_Thread_setUncaughtExceptionHandler___java_lang_Thread_UncaughtExceptionHandler + __TIB_java_lang_Thread.vtable[XMLVM_VTABLE_IDX_java_lang_Thread_setUncaughtExceptionHandler___java_lang_Thread_UncaughtExceptionHandler] = + (VTABLE_PTR) java_lang_Thread_setUncaughtExceptionHandler___java_lang_Thread_UncaughtExceptionHandler; +#endif +#ifdef XMLVM_VTABLE_IDX_java_lang_Thread_start0__ + __TIB_java_lang_Thread.vtable[XMLVM_VTABLE_IDX_java_lang_Thread_start0__] = + (VTABLE_PTR) java_lang_Thread_start0__; +#endif +#ifdef XMLVM_VTABLE_IDX_java_lang_Thread_stop__ + __TIB_java_lang_Thread.vtable[XMLVM_VTABLE_IDX_java_lang_Thread_stop__] = + (VTABLE_PTR) java_lang_Thread_stop__; +#endif +#ifdef XMLVM_VTABLE_IDX_java_lang_Thread_stop___java_lang_Throwable + __TIB_java_lang_Thread.vtable[XMLVM_VTABLE_IDX_java_lang_Thread_stop___java_lang_Throwable] = + (VTABLE_PTR) java_lang_Thread_stop___java_lang_Throwable; +#endif +#ifdef XMLVM_VTABLE_IDX_java_lang_Thread_suspend__ + __TIB_java_lang_Thread.vtable[XMLVM_VTABLE_IDX_java_lang_Thread_suspend__] = + (VTABLE_PTR) java_lang_Thread_suspend__; +#endif +} |