2
#include "java_lang_System.h"
3
#include "org_xmlvm_runtime_Condition.h"
4
#include "org_xmlvm_runtime_FinalizerNotifier.h"
5
#include "org_xmlvm_runtime_Mutex.h"
7
#include "org_xmlvm_runtime_FinalizerNotifier_1.h"
9
#define XMLVM_CURRENT_CLASS_NAME FinalizerNotifier_1
10
#define XMLVM_CURRENT_PKG_CLASS_NAME org_xmlvm_runtime_FinalizerNotifier_1
12
__TIB_DEFINITION_org_xmlvm_runtime_FinalizerNotifier_1 __TIB_org_xmlvm_runtime_FinalizerNotifier_1 = {
13
0, // classInitializationBegan
14
0, // classInitialized
15
-1, // initializerThreadId
16
__INIT_org_xmlvm_runtime_FinalizerNotifier_1, // classInitializer
17
"org.xmlvm.runtime.FinalizerNotifier$1", // className
18
"org.xmlvm.runtime", // package
19
"org.xmlvm.runtime.FinalizerNotifier", // enclosingClassName
20
"startFinalizerThread:()Ljava/lang/Thread;", // enclosingMethodName
21
JAVA_NULL, // signature
22
(__TIB_DEFINITION_TEMPLATE*) &__TIB_java_lang_Thread, // extends
23
sizeof(org_xmlvm_runtime_FinalizerNotifier_1), // sizeInstance
26
JAVA_OBJECT __CLASS_org_xmlvm_runtime_FinalizerNotifier_1;
27
JAVA_OBJECT __CLASS_org_xmlvm_runtime_FinalizerNotifier_1_1ARRAY;
28
JAVA_OBJECT __CLASS_org_xmlvm_runtime_FinalizerNotifier_1_2ARRAY;
29
JAVA_OBJECT __CLASS_org_xmlvm_runtime_FinalizerNotifier_1_3ARRAY;
30
//XMLVM_BEGIN_IMPLEMENTATION
31
//XMLVM_END_IMPLEMENTATION
34
#include "xmlvm-reflection.h"
36
static XMLVM_FIELD_REFLECTION_DATA __field_reflection_data[] = {
39
static XMLVM_CONSTRUCTOR_REFLECTION_DATA __constructor_reflection_data[] = {
42
static JAVA_OBJECT constructor_dispatcher(JAVA_OBJECT constructor, JAVA_OBJECT arguments)
44
XMLVM_NOT_IMPLEMENTED();
47
static XMLVM_METHOD_REFLECTION_DATA __method_reflection_data[] = {
50
static JAVA_OBJECT method_dispatcher(JAVA_OBJECT method, JAVA_OBJECT receiver, JAVA_OBJECT arguments)
52
XMLVM_NOT_IMPLEMENTED();
55
void __INIT_org_xmlvm_runtime_FinalizerNotifier_1()
57
staticInitializerLock(&__TIB_org_xmlvm_runtime_FinalizerNotifier_1);
59
// While the static initializer mutex is locked, locally store the value of
60
// whether class initialization began or not
61
int initBegan = __TIB_org_xmlvm_runtime_FinalizerNotifier_1.classInitializationBegan;
63
// Whether or not class initialization had already began, it has begun now
64
__TIB_org_xmlvm_runtime_FinalizerNotifier_1.classInitializationBegan = 1;
66
staticInitializerUnlock(&__TIB_org_xmlvm_runtime_FinalizerNotifier_1);
68
JAVA_LONG curThreadId = (JAVA_LONG)pthread_self();
70
if (__TIB_org_xmlvm_runtime_FinalizerNotifier_1.initializerThreadId != curThreadId) {
71
// Busy wait until the other thread finishes initializing this class
72
while (!__TIB_org_xmlvm_runtime_FinalizerNotifier_1.classInitialized) {
77
__TIB_org_xmlvm_runtime_FinalizerNotifier_1.initializerThreadId = curThreadId;
78
XMLVM_CLASS_USED("org.xmlvm.runtime.FinalizerNotifier$1")
79
__INIT_IMPL_org_xmlvm_runtime_FinalizerNotifier_1();
83
void __INIT_IMPL_org_xmlvm_runtime_FinalizerNotifier_1()
85
// Initialize base class if necessary
86
XMLVM_CLASS_INIT(java_lang_Thread)
87
__TIB_org_xmlvm_runtime_FinalizerNotifier_1.newInstanceFunc = __NEW_INSTANCE_org_xmlvm_runtime_FinalizerNotifier_1;
88
// Copy vtable from base class
89
XMLVM_MEMCPY(__TIB_org_xmlvm_runtime_FinalizerNotifier_1.vtable, __TIB_java_lang_Thread.vtable, sizeof(__TIB_java_lang_Thread.vtable));
90
// Initialize vtable for this class
91
__TIB_org_xmlvm_runtime_FinalizerNotifier_1.vtable[6] = (VTABLE_PTR) &org_xmlvm_runtime_FinalizerNotifier_1_run__;
92
// Initialize interface information
93
__TIB_org_xmlvm_runtime_FinalizerNotifier_1.numImplementedInterfaces = 1;
94
__TIB_org_xmlvm_runtime_FinalizerNotifier_1.implementedInterfaces = (__TIB_DEFINITION_TEMPLATE* (*)[1]) XMLVM_MALLOC(sizeof(__TIB_DEFINITION_TEMPLATE*) * 1);
96
// Initialize interfaces if necessary and assign tib to implementedInterfaces
98
XMLVM_CLASS_INIT(java_lang_Runnable)
100
__TIB_org_xmlvm_runtime_FinalizerNotifier_1.implementedInterfaces[0][0] = &__TIB_java_lang_Runnable;
101
// Initialize itable for this class
102
__TIB_org_xmlvm_runtime_FinalizerNotifier_1.itableBegin = &__TIB_org_xmlvm_runtime_FinalizerNotifier_1.itable[0];
103
__TIB_org_xmlvm_runtime_FinalizerNotifier_1.itable[XMLVM_ITABLE_IDX_java_lang_Runnable_run__] = __TIB_org_xmlvm_runtime_FinalizerNotifier_1.vtable[6];
106
__TIB_org_xmlvm_runtime_FinalizerNotifier_1.declaredFields = &__field_reflection_data[0];
107
__TIB_org_xmlvm_runtime_FinalizerNotifier_1.numDeclaredFields = sizeof(__field_reflection_data) / sizeof(XMLVM_FIELD_REFLECTION_DATA);
108
__TIB_org_xmlvm_runtime_FinalizerNotifier_1.constructorDispatcherFunc = constructor_dispatcher;
109
__TIB_org_xmlvm_runtime_FinalizerNotifier_1.declaredConstructors = &__constructor_reflection_data[0];
110
__TIB_org_xmlvm_runtime_FinalizerNotifier_1.numDeclaredConstructors = sizeof(__constructor_reflection_data) / sizeof(XMLVM_CONSTRUCTOR_REFLECTION_DATA);
111
__TIB_org_xmlvm_runtime_FinalizerNotifier_1.methodDispatcherFunc = method_dispatcher;
112
__TIB_org_xmlvm_runtime_FinalizerNotifier_1.declaredMethods = &__method_reflection_data[0];
113
__TIB_org_xmlvm_runtime_FinalizerNotifier_1.numDeclaredMethods = sizeof(__method_reflection_data) / sizeof(XMLVM_METHOD_REFLECTION_DATA);
114
__CLASS_org_xmlvm_runtime_FinalizerNotifier_1 = XMLVM_CREATE_CLASS_OBJECT(&__TIB_org_xmlvm_runtime_FinalizerNotifier_1);
115
__TIB_org_xmlvm_runtime_FinalizerNotifier_1.clazz = __CLASS_org_xmlvm_runtime_FinalizerNotifier_1;
116
__TIB_org_xmlvm_runtime_FinalizerNotifier_1.baseType = JAVA_NULL;
117
__CLASS_org_xmlvm_runtime_FinalizerNotifier_1_1ARRAY = XMLVM_CREATE_ARRAY_CLASS_OBJECT(__CLASS_org_xmlvm_runtime_FinalizerNotifier_1);
118
__CLASS_org_xmlvm_runtime_FinalizerNotifier_1_2ARRAY = XMLVM_CREATE_ARRAY_CLASS_OBJECT(__CLASS_org_xmlvm_runtime_FinalizerNotifier_1_1ARRAY);
119
__CLASS_org_xmlvm_runtime_FinalizerNotifier_1_3ARRAY = XMLVM_CREATE_ARRAY_CLASS_OBJECT(__CLASS_org_xmlvm_runtime_FinalizerNotifier_1_2ARRAY);
120
//XMLVM_BEGIN_WRAPPER[__INIT_org_xmlvm_runtime_FinalizerNotifier_1]
123
__TIB_org_xmlvm_runtime_FinalizerNotifier_1.classInitialized = 1;
126
void __DELETE_org_xmlvm_runtime_FinalizerNotifier_1(void* me, void* client_data)
128
//XMLVM_BEGIN_WRAPPER[__DELETE_org_xmlvm_runtime_FinalizerNotifier_1]
132
void __INIT_INSTANCE_MEMBERS_org_xmlvm_runtime_FinalizerNotifier_1(JAVA_OBJECT me, int derivedClassWillRegisterFinalizer)
134
__INIT_INSTANCE_MEMBERS_java_lang_Thread(me, 0 || derivedClassWillRegisterFinalizer);
135
//XMLVM_BEGIN_WRAPPER[__INIT_INSTANCE_MEMBERS_org_xmlvm_runtime_FinalizerNotifier_1]
139
JAVA_OBJECT __NEW_org_xmlvm_runtime_FinalizerNotifier_1()
140
{ XMLVM_CLASS_INIT(org_xmlvm_runtime_FinalizerNotifier_1)
141
org_xmlvm_runtime_FinalizerNotifier_1* me = (org_xmlvm_runtime_FinalizerNotifier_1*) XMLVM_MALLOC(sizeof(org_xmlvm_runtime_FinalizerNotifier_1));
142
me->tib = &__TIB_org_xmlvm_runtime_FinalizerNotifier_1;
143
__INIT_INSTANCE_MEMBERS_org_xmlvm_runtime_FinalizerNotifier_1(me, 0);
144
//XMLVM_BEGIN_WRAPPER[__NEW_org_xmlvm_runtime_FinalizerNotifier_1]
149
JAVA_OBJECT __NEW_INSTANCE_org_xmlvm_runtime_FinalizerNotifier_1()
151
JAVA_OBJECT me = JAVA_NULL;
152
me = __NEW_org_xmlvm_runtime_FinalizerNotifier_1();
153
org_xmlvm_runtime_FinalizerNotifier_1___INIT___(me);
157
void org_xmlvm_runtime_FinalizerNotifier_1___INIT___(JAVA_OBJECT me)
159
//XMLVM_BEGIN_WRAPPER[org_xmlvm_runtime_FinalizerNotifier_1___INIT___]
160
XMLVM_ENTER_METHOD("org.xmlvm.runtime.FinalizerNotifier$1", "<init>", "?")
163
XMLVM_SOURCE_POSITION("FinalizerNotifier.java", 34)
165
java_lang_Thread___INIT___(_r0.o);
171
void org_xmlvm_runtime_FinalizerNotifier_1_run__(JAVA_OBJECT me)
173
//XMLVM_BEGIN_WRAPPER[org_xmlvm_runtime_FinalizerNotifier_1_run__]
174
XMLVM_ENTER_METHOD("org.xmlvm.runtime.FinalizerNotifier$1", "run", "?")
182
XMLVM_SOURCE_POSITION("FinalizerNotifier.java", 37)
185
XMLVM_SOURCE_POSITION("FinalizerNotifier.java", 38)
186
if (_r0.i != 0) goto label63;
187
XMLVM_SOURCE_POSITION("FinalizerNotifier.java", 41)
188
_r1.o = org_xmlvm_runtime_FinalizerNotifier_access$000__();
190
org_xmlvm_runtime_Mutex_lock__(_r1.o);
191
XMLVM_SOURCE_POSITION("FinalizerNotifier.java", 50)
192
_r1.i = org_xmlvm_runtime_FinalizerNotifier_access$100__();
193
if (_r1.i != 0) goto label31;
194
XMLVM_SOURCE_POSITION("FinalizerNotifier.java", 54)
195
org_xmlvm_runtime_FinalizerNotifier_access$200___boolean(_r3.i);
196
XMLVM_SOURCE_POSITION("FinalizerNotifier.java", 59)
197
_r1.o = org_xmlvm_runtime_FinalizerNotifier_access$300__();
198
_r2.o = org_xmlvm_runtime_FinalizerNotifier_access$000__();
200
org_xmlvm_runtime_Condition_wait___org_xmlvm_runtime_Mutex(_r1.o, _r2.o);
202
XMLVM_SOURCE_POSITION("FinalizerNotifier.java", 62)
203
_r1.o = org_xmlvm_runtime_FinalizerNotifier_access$000__();
205
org_xmlvm_runtime_Mutex_unlock__(_r1.o);
206
XMLVM_SOURCE_POSITION("FinalizerNotifier.java", 64)
207
_r0.i = org_xmlvm_runtime_FinalizerNotifier_access$400__();
208
XMLVM_SOURCE_POSITION("FinalizerNotifier.java", 67)
209
_r1.o = org_xmlvm_runtime_FinalizerNotifier_access$000__();
211
org_xmlvm_runtime_Mutex_lock__(_r1.o);
212
XMLVM_SOURCE_POSITION("FinalizerNotifier.java", 68)
213
org_xmlvm_runtime_FinalizerNotifier_access$200___boolean(_r3.i);
214
XMLVM_SOURCE_POSITION("FinalizerNotifier.java", 69)
215
_r1.o = org_xmlvm_runtime_FinalizerNotifier_access$000__();
217
org_xmlvm_runtime_Mutex_unlock__(_r1.o);
218
XMLVM_SOURCE_POSITION("FinalizerNotifier.java", 73)
219
java_lang_System_gc__();
222
XMLVM_SOURCE_POSITION("FinalizerNotifier.java", 77)