3
#include "java_lang_Thread.h"
6
//XMLVM_BEGIN_NATIVE_IMPLEMENTATION
9
#import <Foundation/NSAutoreleasePool.h>
13
void threadRunner(JAVA_OBJECT me)
15
java_lang_Thread* thiz = me;
16
XMLVM_JMP_BUF xmlvm_exception_env;
17
JAVA_LONG nativeThreadId = (JAVA_LONG) pthread_self();
20
NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
22
#ifdef XMLVM_ENABLE_STACK_TRACES
23
createStackForNewThread(nativeThreadId);
26
if (XMLVM_SETJMP(xmlvm_exception_env)) {
27
// Technically, XMLVM_UNWIND_EXCEPTION() should be called, but
28
// exceptions will not be used anymore and XMLVM_ENTER_METHOD() wasn't
29
// called (excessive), so a compilation error would occur
31
xmlvm_unhandled_exception();
33
thiz->fields.java_lang_Thread.xmlvmExceptionEnv_ = &xmlvm_exception_env;
34
java_lang_Thread_run0___long(thiz, nativeThreadId);
37
#ifdef XMLVM_ENABLE_STACK_TRACES
38
destroyStackForExitingThread(nativeThreadId);
44
//XMLVM_END_NATIVE_IMPLEMENTATION
46
void java_lang_Thread_initMainThread__(JAVA_OBJECT me)
48
//XMLVM_BEGIN_NATIVE[java_lang_Thread_initMainThread__]
49
((java_lang_Thread*)me)->fields.java_lang_Thread.xmlvmExceptionEnv_ = xmlvm_exception_env_main_thread;
53
JAVA_INT java_lang_Thread_activeCount__()
55
//XMLVM_BEGIN_NATIVE[java_lang_Thread_activeCount__]
56
XMLVM_UNIMPLEMENTED_NATIVE_METHOD();
60
void java_lang_Thread_checkAccess__(JAVA_OBJECT me)
62
//XMLVM_BEGIN_NATIVE[java_lang_Thread_checkAccess__]
63
XMLVM_UNIMPLEMENTED_NATIVE_METHOD();
67
JAVA_INT java_lang_Thread_countStackFrames__(JAVA_OBJECT me)
69
//XMLVM_BEGIN_NATIVE[java_lang_Thread_countStackFrames__]
70
XMLVM_UNIMPLEMENTED_NATIVE_METHOD();
74
JAVA_LONG java_lang_Thread_getCurrentThreadNativeId__()
76
//XMLVM_BEGIN_NATIVE[java_lang_Thread_getCurrentThreadNativeId__]
77
JAVA_LONG nativeThreadId = (JAVA_LONG)pthread_self();
78
return nativeThreadId;
82
void java_lang_Thread_destroy__(JAVA_OBJECT me)
84
//XMLVM_BEGIN_NATIVE[java_lang_Thread_destroy__]
85
XMLVM_UNIMPLEMENTED_NATIVE_METHOD();
89
void java_lang_Thread_dumpStack__()
91
//XMLVM_BEGIN_NATIVE[java_lang_Thread_dumpStack__]
92
XMLVM_UNIMPLEMENTED_NATIVE_METHOD();
96
JAVA_INT java_lang_Thread_enumerate___java_lang_Thread_1ARRAY(JAVA_OBJECT n1)
98
//XMLVM_BEGIN_NATIVE[java_lang_Thread_enumerate___java_lang_Thread_1ARRAY]
99
XMLVM_UNIMPLEMENTED_NATIVE_METHOD();
103
JAVA_OBJECT java_lang_Thread_getAllStackTraces__()
105
//XMLVM_BEGIN_NATIVE[java_lang_Thread_getAllStackTraces__]
106
XMLVM_UNIMPLEMENTED_NATIVE_METHOD();
110
JAVA_OBJECT java_lang_Thread_getContextClassLoader__(JAVA_OBJECT me)
112
//XMLVM_BEGIN_NATIVE[java_lang_Thread_getContextClassLoader__]
114
_r0.o = __NEW_org_xmlvm_runtime_XMLVMClassLoader();
115
org_xmlvm_runtime_XMLVMClassLoader___INIT___(_r0.o);
120
JAVA_OBJECT java_lang_Thread_getDefaultUncaughtExceptionHandler__()
122
//XMLVM_BEGIN_NATIVE[java_lang_Thread_getDefaultUncaughtExceptionHandler__]
123
XMLVM_UNIMPLEMENTED_NATIVE_METHOD();
127
JAVA_OBJECT java_lang_Thread_getStackTrace__(JAVA_OBJECT me)
129
//XMLVM_BEGIN_NATIVE[java_lang_Thread_getStackTrace__]
130
XMLVM_UNIMPLEMENTED_NATIVE_METHOD();
134
JAVA_OBJECT java_lang_Thread_getUncaughtExceptionHandler__(JAVA_OBJECT me)
136
//XMLVM_BEGIN_NATIVE[java_lang_Thread_getUncaughtExceptionHandler__]
137
XMLVM_UNIMPLEMENTED_NATIVE_METHOD();
141
void java_lang_Thread_join___long_int(JAVA_OBJECT me, JAVA_LONG n1, JAVA_INT n2)
143
//XMLVM_BEGIN_NATIVE[java_lang_Thread_join___long_int]
144
XMLVM_UNIMPLEMENTED_NATIVE_METHOD();
148
void java_lang_Thread_resume__(JAVA_OBJECT me)
150
//XMLVM_BEGIN_NATIVE[java_lang_Thread_resume__]
151
XMLVM_UNIMPLEMENTED_NATIVE_METHOD();
155
JAVA_BOOLEAN java_lang_Thread_stackTracesEnabled__()
157
//XMLVM_BEGIN_NATIVE[java_lang_Thread_stackTracesEnabled__]
158
#ifdef XMLVM_ENABLE_STACK_TRACES
166
void java_lang_Thread_setContextClassLoader___java_lang_ClassLoader(JAVA_OBJECT me, JAVA_OBJECT n1)
168
//XMLVM_BEGIN_NATIVE[java_lang_Thread_setContextClassLoader___java_lang_ClassLoader]
169
XMLVM_UNIMPLEMENTED_NATIVE_METHOD();
173
void java_lang_Thread_setDefaultUncaughtExceptionHandler___java_lang_Thread_UncaughtExceptionHandler(JAVA_OBJECT n1)
175
//XMLVM_BEGIN_NATIVE[java_lang_Thread_setDefaultUncaughtExceptionHandler___java_lang_Thread_UncaughtExceptionHandler]
176
XMLVM_UNIMPLEMENTED_NATIVE_METHOD();
180
void java_lang_Thread_setPriority___int(JAVA_OBJECT me, JAVA_INT n1)
182
//XMLVM_BEGIN_NATIVE[java_lang_Thread_setPriority___int]
183
XMLVM_UNIMPLEMENTED_NATIVE_METHOD();
187
void java_lang_Thread_setUncaughtExceptionHandler___java_lang_Thread_UncaughtExceptionHandler(JAVA_OBJECT me, JAVA_OBJECT n1)
189
//XMLVM_BEGIN_NATIVE[java_lang_Thread_setUncaughtExceptionHandler___java_lang_Thread_UncaughtExceptionHandler]
190
XMLVM_UNIMPLEMENTED_NATIVE_METHOD();
194
void java_lang_Thread_start0__(JAVA_OBJECT me)
196
//XMLVM_BEGIN_NATIVE[java_lang_Thread_start0__]
199
pthread_attr_init(&attr);
200
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE);
201
int rc = pthread_create(&pt, &attr, threadRunner, (void *)me);
203
printf("ERROR creating thread. Return code: %i", rc);
206
pthread_attr_destroy(&attr);
210
void java_lang_Thread_stop__(JAVA_OBJECT me)
212
//XMLVM_BEGIN_NATIVE[java_lang_Thread_stop__]
213
XMLVM_UNIMPLEMENTED_NATIVE_METHOD();
217
void java_lang_Thread_stop___java_lang_Throwable(JAVA_OBJECT me, JAVA_OBJECT n1)
219
//XMLVM_BEGIN_NATIVE[java_lang_Thread_stop___java_lang_Throwable]
220
XMLVM_UNIMPLEMENTED_NATIVE_METHOD();
224
void java_lang_Thread_suspend__(JAVA_OBJECT me)
226
//XMLVM_BEGIN_NATIVE[java_lang_Thread_suspend__]
227
XMLVM_UNIMPLEMENTED_NATIVE_METHOD();
231
void java_lang_Thread_yield__()
233
//XMLVM_BEGIN_NATIVE[java_lang_Thread_yield__]
234
XMLVM_UNIMPLEMENTED_NATIVE_METHOD();
238
JAVA_BOOLEAN java_lang_Thread_holdsLock___java_lang_Object(JAVA_OBJECT n1)
240
//XMLVM_BEGIN_NATIVE[java_lang_Thread_holdsLock___java_lang_Object]
241
XMLVM_UNIMPLEMENTED_NATIVE_METHOD();
246
void xmlvm_init_native_java_lang_Thread()
248
//XMLVM_BEGIN_NATIVE_IMPLEMENTATION_INIT
249
//XMLVM_END_NATIVE_IMPLEMENTATION_INIT
250
#ifdef XMLVM_VTABLE_IDX_java_lang_Thread_checkAccess__
251
__TIB_java_lang_Thread.vtable[XMLVM_VTABLE_IDX_java_lang_Thread_checkAccess__] =
252
(VTABLE_PTR) java_lang_Thread_checkAccess__;
254
#ifdef XMLVM_VTABLE_IDX_java_lang_Thread_countStackFrames__
255
__TIB_java_lang_Thread.vtable[XMLVM_VTABLE_IDX_java_lang_Thread_countStackFrames__] =
256
(VTABLE_PTR) java_lang_Thread_countStackFrames__;
258
#ifdef XMLVM_VTABLE_IDX_java_lang_Thread_destroy__
259
__TIB_java_lang_Thread.vtable[XMLVM_VTABLE_IDX_java_lang_Thread_destroy__] =
260
(VTABLE_PTR) java_lang_Thread_destroy__;
262
#ifdef XMLVM_VTABLE_IDX_java_lang_Thread_getContextClassLoader__
263
__TIB_java_lang_Thread.vtable[XMLVM_VTABLE_IDX_java_lang_Thread_getContextClassLoader__] =
264
(VTABLE_PTR) java_lang_Thread_getContextClassLoader__;
266
#ifdef XMLVM_VTABLE_IDX_java_lang_Thread_getStackTrace__
267
__TIB_java_lang_Thread.vtable[XMLVM_VTABLE_IDX_java_lang_Thread_getStackTrace__] =
268
(VTABLE_PTR) java_lang_Thread_getStackTrace__;
270
#ifdef XMLVM_VTABLE_IDX_java_lang_Thread_getUncaughtExceptionHandler__
271
__TIB_java_lang_Thread.vtable[XMLVM_VTABLE_IDX_java_lang_Thread_getUncaughtExceptionHandler__] =
272
(VTABLE_PTR) java_lang_Thread_getUncaughtExceptionHandler__;
274
#ifdef XMLVM_VTABLE_IDX_java_lang_Thread_join___long_int
275
__TIB_java_lang_Thread.vtable[XMLVM_VTABLE_IDX_java_lang_Thread_join___long_int] =
276
(VTABLE_PTR) java_lang_Thread_join___long_int;
278
#ifdef XMLVM_VTABLE_IDX_java_lang_Thread_resume__
279
__TIB_java_lang_Thread.vtable[XMLVM_VTABLE_IDX_java_lang_Thread_resume__] =
280
(VTABLE_PTR) java_lang_Thread_resume__;
282
#ifdef XMLVM_VTABLE_IDX_java_lang_Thread_setContextClassLoader___java_lang_ClassLoader
283
__TIB_java_lang_Thread.vtable[XMLVM_VTABLE_IDX_java_lang_Thread_setContextClassLoader___java_lang_ClassLoader] =
284
(VTABLE_PTR) java_lang_Thread_setContextClassLoader___java_lang_ClassLoader;
286
#ifdef XMLVM_VTABLE_IDX_java_lang_Thread_setPriority___int
287
__TIB_java_lang_Thread.vtable[XMLVM_VTABLE_IDX_java_lang_Thread_setPriority___int] =
288
(VTABLE_PTR) java_lang_Thread_setPriority___int;
290
#ifdef XMLVM_VTABLE_IDX_java_lang_Thread_setUncaughtExceptionHandler___java_lang_Thread_UncaughtExceptionHandler
291
__TIB_java_lang_Thread.vtable[XMLVM_VTABLE_IDX_java_lang_Thread_setUncaughtExceptionHandler___java_lang_Thread_UncaughtExceptionHandler] =
292
(VTABLE_PTR) java_lang_Thread_setUncaughtExceptionHandler___java_lang_Thread_UncaughtExceptionHandler;
294
#ifdef XMLVM_VTABLE_IDX_java_lang_Thread_start0__
295
__TIB_java_lang_Thread.vtable[XMLVM_VTABLE_IDX_java_lang_Thread_start0__] =
296
(VTABLE_PTR) java_lang_Thread_start0__;
298
#ifdef XMLVM_VTABLE_IDX_java_lang_Thread_stop__
299
__TIB_java_lang_Thread.vtable[XMLVM_VTABLE_IDX_java_lang_Thread_stop__] =
300
(VTABLE_PTR) java_lang_Thread_stop__;
302
#ifdef XMLVM_VTABLE_IDX_java_lang_Thread_stop___java_lang_Throwable
303
__TIB_java_lang_Thread.vtable[XMLVM_VTABLE_IDX_java_lang_Thread_stop___java_lang_Throwable] =
304
(VTABLE_PTR) java_lang_Thread_stop___java_lang_Throwable;
306
#ifdef XMLVM_VTABLE_IDX_java_lang_Thread_suspend__
307
__TIB_java_lang_Thread.vtable[XMLVM_VTABLE_IDX_java_lang_Thread_suspend__] =
308
(VTABLE_PTR) java_lang_Thread_suspend__;