~ubuntu-branches/ubuntu/vivid/emscripten/vivid

« back to all changes in this revision

Viewing changes to tests/nbody-java/native_java_lang_Thread.c

  • Committer: Package Import Robot
  • Author(s): Sylvestre Ledru
  • Date: 2013-06-11 15:45:24 UTC
  • mfrom: (1.2.1) (2.1.1 experimental)
  • Revision ID: package-import@ubuntu.com-20130611154524-rppb3w6tixlegv4n
Tags: 1.4.7~20130611~a1eb425-1
* New snapshot release
* Upload to unstable

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
 
 
2
#include "xmlvm.h"
 
3
#include "java_lang_Thread.h"
 
4
 
 
5
 
 
6
//XMLVM_BEGIN_NATIVE_IMPLEMENTATION
 
7
#include <pthread.h>
 
8
#ifdef __OBJC__
 
9
#import <Foundation/NSAutoreleasePool.h>
 
10
#endif
 
11
 
 
12
 
 
13
void threadRunner(JAVA_OBJECT me)
 
14
{
 
15
    java_lang_Thread* thiz = me;
 
16
    XMLVM_JMP_BUF xmlvm_exception_env;
 
17
    JAVA_LONG nativeThreadId = (JAVA_LONG) pthread_self();
 
18
    
 
19
#ifdef __OBJC__
 
20
    NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
 
21
#endif
 
22
#ifdef XMLVM_ENABLE_STACK_TRACES
 
23
    createStackForNewThread(nativeThreadId);
 
24
#endif
 
25
 
 
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
 
30
 
 
31
        xmlvm_unhandled_exception();
 
32
    } else {
 
33
        thiz->fields.java_lang_Thread.xmlvmExceptionEnv_ = &xmlvm_exception_env;
 
34
        java_lang_Thread_run0___long(thiz, nativeThreadId);
 
35
    }
 
36
 
 
37
#ifdef XMLVM_ENABLE_STACK_TRACES
 
38
    destroyStackForExitingThread(nativeThreadId);
 
39
#endif
 
40
#ifdef __OBJC__
 
41
    [pool release];
 
42
#endif
 
43
}
 
44
//XMLVM_END_NATIVE_IMPLEMENTATION
 
45
 
 
46
void java_lang_Thread_initMainThread__(JAVA_OBJECT me)
 
47
{
 
48
    //XMLVM_BEGIN_NATIVE[java_lang_Thread_initMainThread__]
 
49
    ((java_lang_Thread*)me)->fields.java_lang_Thread.xmlvmExceptionEnv_ = xmlvm_exception_env_main_thread;
 
50
    //XMLVM_END_NATIVE
 
51
}
 
52
 
 
53
JAVA_INT java_lang_Thread_activeCount__()
 
54
{
 
55
    //XMLVM_BEGIN_NATIVE[java_lang_Thread_activeCount__]
 
56
    XMLVM_UNIMPLEMENTED_NATIVE_METHOD();
 
57
    //XMLVM_END_NATIVE
 
58
}
 
59
 
 
60
void java_lang_Thread_checkAccess__(JAVA_OBJECT me)
 
61
{
 
62
    //XMLVM_BEGIN_NATIVE[java_lang_Thread_checkAccess__]
 
63
    XMLVM_UNIMPLEMENTED_NATIVE_METHOD();
 
64
    //XMLVM_END_NATIVE
 
65
}
 
66
 
 
67
JAVA_INT java_lang_Thread_countStackFrames__(JAVA_OBJECT me)
 
68
{
 
69
    //XMLVM_BEGIN_NATIVE[java_lang_Thread_countStackFrames__]
 
70
    XMLVM_UNIMPLEMENTED_NATIVE_METHOD();
 
71
    //XMLVM_END_NATIVE
 
72
}
 
73
 
 
74
JAVA_LONG java_lang_Thread_getCurrentThreadNativeId__()
 
75
{
 
76
    //XMLVM_BEGIN_NATIVE[java_lang_Thread_getCurrentThreadNativeId__]
 
77
    JAVA_LONG nativeThreadId = (JAVA_LONG)pthread_self();
 
78
    return nativeThreadId;
 
79
    //XMLVM_END_NATIVE
 
80
}
 
81
 
 
82
void java_lang_Thread_destroy__(JAVA_OBJECT me)
 
83
{
 
84
    //XMLVM_BEGIN_NATIVE[java_lang_Thread_destroy__]
 
85
    XMLVM_UNIMPLEMENTED_NATIVE_METHOD();
 
86
    //XMLVM_END_NATIVE
 
87
}
 
88
 
 
89
void java_lang_Thread_dumpStack__()
 
90
{
 
91
    //XMLVM_BEGIN_NATIVE[java_lang_Thread_dumpStack__]
 
92
    XMLVM_UNIMPLEMENTED_NATIVE_METHOD();
 
93
    //XMLVM_END_NATIVE
 
94
}
 
95
 
 
96
JAVA_INT java_lang_Thread_enumerate___java_lang_Thread_1ARRAY(JAVA_OBJECT n1)
 
97
{
 
98
    //XMLVM_BEGIN_NATIVE[java_lang_Thread_enumerate___java_lang_Thread_1ARRAY]
 
99
    XMLVM_UNIMPLEMENTED_NATIVE_METHOD();
 
100
    //XMLVM_END_NATIVE
 
101
}
 
102
 
 
103
JAVA_OBJECT java_lang_Thread_getAllStackTraces__()
 
104
{
 
105
    //XMLVM_BEGIN_NATIVE[java_lang_Thread_getAllStackTraces__]
 
106
    XMLVM_UNIMPLEMENTED_NATIVE_METHOD();
 
107
    //XMLVM_END_NATIVE
 
108
}
 
109
 
 
110
JAVA_OBJECT java_lang_Thread_getContextClassLoader__(JAVA_OBJECT me)
 
111
{
 
112
    //XMLVM_BEGIN_NATIVE[java_lang_Thread_getContextClassLoader__]
 
113
    XMLVMElem _r0;
 
114
    _r0.o = __NEW_org_xmlvm_runtime_XMLVMClassLoader();
 
115
    org_xmlvm_runtime_XMLVMClassLoader___INIT___(_r0.o);
 
116
    return _r0.o;
 
117
    //XMLVM_END_NATIVE
 
118
}
 
119
 
 
120
JAVA_OBJECT java_lang_Thread_getDefaultUncaughtExceptionHandler__()
 
121
{
 
122
    //XMLVM_BEGIN_NATIVE[java_lang_Thread_getDefaultUncaughtExceptionHandler__]
 
123
    XMLVM_UNIMPLEMENTED_NATIVE_METHOD();
 
124
    //XMLVM_END_NATIVE
 
125
}
 
126
 
 
127
JAVA_OBJECT java_lang_Thread_getStackTrace__(JAVA_OBJECT me)
 
128
{
 
129
    //XMLVM_BEGIN_NATIVE[java_lang_Thread_getStackTrace__]
 
130
    XMLVM_UNIMPLEMENTED_NATIVE_METHOD();
 
131
    //XMLVM_END_NATIVE
 
132
}
 
133
 
 
134
JAVA_OBJECT java_lang_Thread_getUncaughtExceptionHandler__(JAVA_OBJECT me)
 
135
{
 
136
    //XMLVM_BEGIN_NATIVE[java_lang_Thread_getUncaughtExceptionHandler__]
 
137
    XMLVM_UNIMPLEMENTED_NATIVE_METHOD();
 
138
    //XMLVM_END_NATIVE
 
139
}
 
140
 
 
141
void java_lang_Thread_join___long_int(JAVA_OBJECT me, JAVA_LONG n1, JAVA_INT n2)
 
142
{
 
143
    //XMLVM_BEGIN_NATIVE[java_lang_Thread_join___long_int]
 
144
    XMLVM_UNIMPLEMENTED_NATIVE_METHOD();
 
145
    //XMLVM_END_NATIVE
 
146
}
 
147
 
 
148
void java_lang_Thread_resume__(JAVA_OBJECT me)
 
149
{
 
150
    //XMLVM_BEGIN_NATIVE[java_lang_Thread_resume__]
 
151
    XMLVM_UNIMPLEMENTED_NATIVE_METHOD();
 
152
    //XMLVM_END_NATIVE
 
153
}
 
154
 
 
155
JAVA_BOOLEAN java_lang_Thread_stackTracesEnabled__()
 
156
{
 
157
    //XMLVM_BEGIN_NATIVE[java_lang_Thread_stackTracesEnabled__]
 
158
#ifdef XMLVM_ENABLE_STACK_TRACES
 
159
    return 1;
 
160
#else
 
161
    return 0;
 
162
#endif
 
163
    //XMLVM_END_NATIVE
 
164
}
 
165
 
 
166
void java_lang_Thread_setContextClassLoader___java_lang_ClassLoader(JAVA_OBJECT me, JAVA_OBJECT n1)
 
167
{
 
168
    //XMLVM_BEGIN_NATIVE[java_lang_Thread_setContextClassLoader___java_lang_ClassLoader]
 
169
    XMLVM_UNIMPLEMENTED_NATIVE_METHOD();
 
170
    //XMLVM_END_NATIVE
 
171
}
 
172
 
 
173
void java_lang_Thread_setDefaultUncaughtExceptionHandler___java_lang_Thread_UncaughtExceptionHandler(JAVA_OBJECT n1)
 
174
{
 
175
    //XMLVM_BEGIN_NATIVE[java_lang_Thread_setDefaultUncaughtExceptionHandler___java_lang_Thread_UncaughtExceptionHandler]
 
176
    XMLVM_UNIMPLEMENTED_NATIVE_METHOD();
 
177
    //XMLVM_END_NATIVE
 
178
}
 
179
 
 
180
void java_lang_Thread_setPriority___int(JAVA_OBJECT me, JAVA_INT n1)
 
181
{
 
182
    //XMLVM_BEGIN_NATIVE[java_lang_Thread_setPriority___int]
 
183
    XMLVM_UNIMPLEMENTED_NATIVE_METHOD();
 
184
    //XMLVM_END_NATIVE
 
185
}
 
186
 
 
187
void java_lang_Thread_setUncaughtExceptionHandler___java_lang_Thread_UncaughtExceptionHandler(JAVA_OBJECT me, JAVA_OBJECT n1)
 
188
{
 
189
    //XMLVM_BEGIN_NATIVE[java_lang_Thread_setUncaughtExceptionHandler___java_lang_Thread_UncaughtExceptionHandler]
 
190
    XMLVM_UNIMPLEMENTED_NATIVE_METHOD();
 
191
    //XMLVM_END_NATIVE
 
192
}
 
193
 
 
194
void java_lang_Thread_start0__(JAVA_OBJECT me)
 
195
{
 
196
    //XMLVM_BEGIN_NATIVE[java_lang_Thread_start0__]
 
197
    pthread_t pt;
 
198
    pthread_attr_t attr;
 
199
    pthread_attr_init(&attr);
 
200
    pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE);
 
201
    int rc = pthread_create(&pt, &attr, threadRunner, (void *)me);
 
202
    if (rc != 0) {
 
203
        printf("ERROR creating thread. Return code: %i", rc);
 
204
        exit(-1);
 
205
    }
 
206
    pthread_attr_destroy(&attr);
 
207
    //XMLVM_END_NATIVE
 
208
}
 
209
 
 
210
void java_lang_Thread_stop__(JAVA_OBJECT me)
 
211
{
 
212
    //XMLVM_BEGIN_NATIVE[java_lang_Thread_stop__]
 
213
    XMLVM_UNIMPLEMENTED_NATIVE_METHOD();
 
214
    //XMLVM_END_NATIVE
 
215
}
 
216
 
 
217
void java_lang_Thread_stop___java_lang_Throwable(JAVA_OBJECT me, JAVA_OBJECT n1)
 
218
{
 
219
    //XMLVM_BEGIN_NATIVE[java_lang_Thread_stop___java_lang_Throwable]
 
220
    XMLVM_UNIMPLEMENTED_NATIVE_METHOD();
 
221
    //XMLVM_END_NATIVE
 
222
}
 
223
 
 
224
void java_lang_Thread_suspend__(JAVA_OBJECT me)
 
225
{
 
226
    //XMLVM_BEGIN_NATIVE[java_lang_Thread_suspend__]
 
227
    XMLVM_UNIMPLEMENTED_NATIVE_METHOD();
 
228
    //XMLVM_END_NATIVE
 
229
}
 
230
 
 
231
void java_lang_Thread_yield__()
 
232
{
 
233
    //XMLVM_BEGIN_NATIVE[java_lang_Thread_yield__]
 
234
    XMLVM_UNIMPLEMENTED_NATIVE_METHOD();
 
235
    //XMLVM_END_NATIVE
 
236
}
 
237
 
 
238
JAVA_BOOLEAN java_lang_Thread_holdsLock___java_lang_Object(JAVA_OBJECT n1)
 
239
{
 
240
    //XMLVM_BEGIN_NATIVE[java_lang_Thread_holdsLock___java_lang_Object]
 
241
    XMLVM_UNIMPLEMENTED_NATIVE_METHOD();
 
242
    //XMLVM_END_NATIVE
 
243
}
 
244
 
 
245
 
 
246
void xmlvm_init_native_java_lang_Thread()
 
247
{
 
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__;
 
253
#endif
 
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__;
 
257
#endif
 
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__;
 
261
#endif
 
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__;
 
265
#endif
 
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__;
 
269
#endif
 
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__;
 
273
#endif
 
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;
 
277
#endif
 
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__;
 
281
#endif
 
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;
 
285
#endif
 
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;
 
289
#endif
 
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;
 
293
#endif
 
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__;
 
297
#endif
 
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__;
 
301
#endif
 
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;
 
305
#endif
 
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__;
 
309
#endif
 
310
}