1 /*
2  * Copyright 2013 The Emscripten Authors.  All rights reserved.
3  * Emscripten is available under two separate licenses, the MIT license and the
4  * University of Illinois/NCSA Open Source License.  Both these licenses can be
5  * found in the LICENSE file.
6  */
7 
8 #include "xmlvm.h"
9 #include "java_lang_Math.h"
10 #include "nbody_Body.h"
11 
12 #include "nbody_NBodySystem.h"
13 
14 #define XMLVM_CURRENT_CLASS_NAME NBodySystem
15 #define XMLVM_CURRENT_PKG_CLASS_NAME nbody_NBodySystem
16 
17 __TIB_DEFINITION_nbody_NBodySystem __TIB_nbody_NBodySystem = {
18     0, // classInitializationBegan
19     0, // classInitialized
20     -1, // initializerThreadId
21     __INIT_nbody_NBodySystem, // classInitializer
22     "nbody.NBodySystem", // className
23     "nbody", // package
24     JAVA_NULL, // enclosingClassName
25     JAVA_NULL, // enclosingMethodName
26     JAVA_NULL, // signature
27     (__TIB_DEFINITION_TEMPLATE*) &__TIB_java_lang_Object, // extends
28     sizeof(nbody_NBodySystem), // sizeInstance
29     XMLVM_TYPE_CLASS};
30 
31 JAVA_OBJECT __CLASS_nbody_NBodySystem;
32 JAVA_OBJECT __CLASS_nbody_NBodySystem_1ARRAY;
33 JAVA_OBJECT __CLASS_nbody_NBodySystem_2ARRAY;
34 JAVA_OBJECT __CLASS_nbody_NBodySystem_3ARRAY;
35 //XMLVM_BEGIN_IMPLEMENTATION
36 //XMLVM_END_IMPLEMENTATION
37 
38 
39 #include "xmlvm-reflection.h"
40 
41 static XMLVM_FIELD_REFLECTION_DATA __field_reflection_data[] = {
42 };
43 
44 static XMLVM_CONSTRUCTOR_REFLECTION_DATA __constructor_reflection_data[] = {
45 };
46 
constructor_dispatcher(JAVA_OBJECT constructor,JAVA_OBJECT arguments)47 static JAVA_OBJECT constructor_dispatcher(JAVA_OBJECT constructor, JAVA_OBJECT arguments)
48 {
49     XMLVM_NOT_IMPLEMENTED();
50 }
51 
52 static XMLVM_METHOD_REFLECTION_DATA __method_reflection_data[] = {
53 };
54 
method_dispatcher(JAVA_OBJECT method,JAVA_OBJECT receiver,JAVA_OBJECT arguments)55 static JAVA_OBJECT method_dispatcher(JAVA_OBJECT method, JAVA_OBJECT receiver, JAVA_OBJECT arguments)
56 {
57     XMLVM_NOT_IMPLEMENTED();
58 }
59 
__INIT_nbody_NBodySystem()60 void __INIT_nbody_NBodySystem()
61 {
62     staticInitializerLock(&__TIB_nbody_NBodySystem);
63 
64     // While the static initializer mutex is locked, locally store the value of
65     // whether class initialization began or not
66     int initBegan = __TIB_nbody_NBodySystem.classInitializationBegan;
67 
68     // Whether or not class initialization had already began, it has begun now
69     __TIB_nbody_NBodySystem.classInitializationBegan = 1;
70 
71     staticInitializerUnlock(&__TIB_nbody_NBodySystem);
72 
73     JAVA_LONG curThreadId = (JAVA_LONG)pthread_self();
74     if (initBegan) {
75         if (__TIB_nbody_NBodySystem.initializerThreadId != curThreadId) {
76             // Busy wait until the other thread finishes initializing this class
77             while (!__TIB_nbody_NBodySystem.classInitialized) {
78                 // do nothing
79             }
80         }
81     } else {
82         __TIB_nbody_NBodySystem.initializerThreadId = curThreadId;
83         XMLVM_CLASS_USED("nbody.NBodySystem")
84         __INIT_IMPL_nbody_NBodySystem();
85     }
86 }
87 
__INIT_IMPL_nbody_NBodySystem()88 void __INIT_IMPL_nbody_NBodySystem()
89 {
90     // Initialize base class if necessary
91     XMLVM_CLASS_INIT(java_lang_Object)
92     __TIB_nbody_NBodySystem.newInstanceFunc = __NEW_INSTANCE_nbody_NBodySystem;
93     // Copy vtable from base class
94     XMLVM_MEMCPY(__TIB_nbody_NBodySystem.vtable, __TIB_java_lang_Object.vtable, sizeof(__TIB_java_lang_Object.vtable));
95     // Initialize vtable for this class
96     // Initialize interface information
97     __TIB_nbody_NBodySystem.numImplementedInterfaces = 0;
98     __TIB_nbody_NBodySystem.implementedInterfaces = (__TIB_DEFINITION_TEMPLATE* (*)[1]) XMLVM_MALLOC(sizeof(__TIB_DEFINITION_TEMPLATE*) * 0);
99 
100     // Initialize interfaces if necessary and assign tib to implementedInterfaces
101 
102     __TIB_nbody_NBodySystem.declaredFields = &__field_reflection_data[0];
103     __TIB_nbody_NBodySystem.numDeclaredFields = sizeof(__field_reflection_data) / sizeof(XMLVM_FIELD_REFLECTION_DATA);
104     __TIB_nbody_NBodySystem.constructorDispatcherFunc = constructor_dispatcher;
105     __TIB_nbody_NBodySystem.declaredConstructors = &__constructor_reflection_data[0];
106     __TIB_nbody_NBodySystem.numDeclaredConstructors = sizeof(__constructor_reflection_data) / sizeof(XMLVM_CONSTRUCTOR_REFLECTION_DATA);
107     __TIB_nbody_NBodySystem.methodDispatcherFunc = method_dispatcher;
108     __TIB_nbody_NBodySystem.declaredMethods = &__method_reflection_data[0];
109     __TIB_nbody_NBodySystem.numDeclaredMethods = sizeof(__method_reflection_data) / sizeof(XMLVM_METHOD_REFLECTION_DATA);
110     __CLASS_nbody_NBodySystem = XMLVM_CREATE_CLASS_OBJECT(&__TIB_nbody_NBodySystem);
111     __TIB_nbody_NBodySystem.clazz = __CLASS_nbody_NBodySystem;
112     __TIB_nbody_NBodySystem.baseType = JAVA_NULL;
113     __CLASS_nbody_NBodySystem_1ARRAY = XMLVM_CREATE_ARRAY_CLASS_OBJECT(__CLASS_nbody_NBodySystem);
114     __CLASS_nbody_NBodySystem_2ARRAY = XMLVM_CREATE_ARRAY_CLASS_OBJECT(__CLASS_nbody_NBodySystem_1ARRAY);
115     __CLASS_nbody_NBodySystem_3ARRAY = XMLVM_CREATE_ARRAY_CLASS_OBJECT(__CLASS_nbody_NBodySystem_2ARRAY);
116     //XMLVM_BEGIN_WRAPPER[__INIT_nbody_NBodySystem]
117     //XMLVM_END_WRAPPER
118 
119     __TIB_nbody_NBodySystem.classInitialized = 1;
120 }
121 
__DELETE_nbody_NBodySystem(void * me,void * client_data)122 void __DELETE_nbody_NBodySystem(void* me, void* client_data)
123 {
124     //XMLVM_BEGIN_WRAPPER[__DELETE_nbody_NBodySystem]
125     //XMLVM_END_WRAPPER
126 }
127 
__INIT_INSTANCE_MEMBERS_nbody_NBodySystem(JAVA_OBJECT me,int derivedClassWillRegisterFinalizer)128 void __INIT_INSTANCE_MEMBERS_nbody_NBodySystem(JAVA_OBJECT me, int derivedClassWillRegisterFinalizer)
129 {
130     __INIT_INSTANCE_MEMBERS_java_lang_Object(me, 0 || derivedClassWillRegisterFinalizer);
131     ((nbody_NBodySystem*) me)->fields.nbody_NBodySystem.bodies_ = (org_xmlvm_runtime_XMLVMArray*) JAVA_NULL;
132     //XMLVM_BEGIN_WRAPPER[__INIT_INSTANCE_MEMBERS_nbody_NBodySystem]
133     //XMLVM_END_WRAPPER
134 }
135 
__NEW_nbody_NBodySystem()136 JAVA_OBJECT __NEW_nbody_NBodySystem()
137 {    XMLVM_CLASS_INIT(nbody_NBodySystem)
138 nbody_NBodySystem* me = (nbody_NBodySystem*) XMLVM_MALLOC(sizeof(nbody_NBodySystem));
139     me->tib = &__TIB_nbody_NBodySystem;
140     __INIT_INSTANCE_MEMBERS_nbody_NBodySystem(me, 0);
141     //XMLVM_BEGIN_WRAPPER[__NEW_nbody_NBodySystem]
142     //XMLVM_END_WRAPPER
143     return me;
144 }
145 
__NEW_INSTANCE_nbody_NBodySystem()146 JAVA_OBJECT __NEW_INSTANCE_nbody_NBodySystem()
147 {
148     JAVA_OBJECT me = JAVA_NULL;
149     me = __NEW_nbody_NBodySystem();
150     nbody_NBodySystem___INIT___(me);
151     return me;
152 }
153 
nbody_NBodySystem___INIT___(JAVA_OBJECT me)154 void nbody_NBodySystem___INIT___(JAVA_OBJECT me)
155 {
156     //XMLVM_BEGIN_WRAPPER[nbody_NBodySystem___INIT___]
157     XMLVM_ENTER_METHOD("nbody.NBodySystem", "<init>", "?")
158     XMLVMElem _r0;
159     XMLVMElem _r1;
160     XMLVMElem _r2;
161     XMLVMElem _r3;
162     XMLVMElem _r4;
163     XMLVMElem _r5;
164     XMLVMElem _r6;
165     XMLVMElem _r7;
166     XMLVMElem _r8;
167     XMLVMElem _r9;
168     XMLVMElem _r10;
169     XMLVMElem _r11;
170     XMLVMElem _r12;
171     _r12.o = me;
172     _r11.i = 0;
173     _r3.d = 0.0;
174     XMLVM_SOURCE_POSITION("nbody.java", 39)
175     XMLVM_CHECK_NPE(12)
176     java_lang_Object___INIT___(_r12.o);
177     XMLVM_SOURCE_POSITION("nbody.java", 40)
178     _r0.i = 5;
179     XMLVM_CLASS_INIT(nbody_Body)
180     _r0.o = XMLVMArray_createSingleDimension(__CLASS_nbody_Body, _r0.i);
181     _r1.o = nbody_Body_sun__();
182     XMLVM_CHECK_NPE(0)
183     XMLVM_CHECK_ARRAY_BOUNDS(_r0.o, _r11.i);
184     ((JAVA_ARRAY_OBJECT*) (((org_xmlvm_runtime_XMLVMArray*) _r0.o)->fields.org_xmlvm_runtime_XMLVMArray.array_))[_r11.i] = _r1.o;
185     _r1.i = 1;
186     _r2.o = nbody_Body_jupiter__();
187     XMLVM_CHECK_NPE(0)
188     XMLVM_CHECK_ARRAY_BOUNDS(_r0.o, _r1.i);
189     ((JAVA_ARRAY_OBJECT*) (((org_xmlvm_runtime_XMLVMArray*) _r0.o)->fields.org_xmlvm_runtime_XMLVMArray.array_))[_r1.i] = _r2.o;
190     _r1.i = 2;
191     _r2.o = nbody_Body_saturn__();
192     XMLVM_CHECK_NPE(0)
193     XMLVM_CHECK_ARRAY_BOUNDS(_r0.o, _r1.i);
194     ((JAVA_ARRAY_OBJECT*) (((org_xmlvm_runtime_XMLVMArray*) _r0.o)->fields.org_xmlvm_runtime_XMLVMArray.array_))[_r1.i] = _r2.o;
195     _r1.i = 3;
196     _r2.o = nbody_Body_uranus__();
197     XMLVM_CHECK_NPE(0)
198     XMLVM_CHECK_ARRAY_BOUNDS(_r0.o, _r1.i);
199     ((JAVA_ARRAY_OBJECT*) (((org_xmlvm_runtime_XMLVMArray*) _r0.o)->fields.org_xmlvm_runtime_XMLVMArray.array_))[_r1.i] = _r2.o;
200     _r1.i = 4;
201     _r2.o = nbody_Body_neptune__();
202     XMLVM_CHECK_NPE(0)
203     XMLVM_CHECK_ARRAY_BOUNDS(_r0.o, _r1.i);
204     ((JAVA_ARRAY_OBJECT*) (((org_xmlvm_runtime_XMLVMArray*) _r0.o)->fields.org_xmlvm_runtime_XMLVMArray.array_))[_r1.i] = _r2.o;
205     XMLVM_CHECK_NPE(12)
206     ((nbody_NBodySystem*) _r12.o)->fields.nbody_NBodySystem.bodies_ = _r0.o;
207     _r0 = _r11;
208     _r5 = _r3;
209     _r1 = _r3;
210     label48:;
211     XMLVM_SOURCE_POSITION("nbody.java", 51)
212     XMLVM_CHECK_NPE(12)
213     _r7.o = ((nbody_NBodySystem*) _r12.o)->fields.nbody_NBodySystem.bodies_;
214     _r7.i = XMLVMArray_count(((org_xmlvm_runtime_XMLVMArray*) _r7.o));
215     if (_r0.i >= _r7.i) goto label98;
216     XMLVM_SOURCE_POSITION("nbody.java", 52)
217     XMLVM_CHECK_NPE(12)
218     _r7.o = ((nbody_NBodySystem*) _r12.o)->fields.nbody_NBodySystem.bodies_;
219     XMLVM_CHECK_NPE(7)
220     XMLVM_CHECK_ARRAY_BOUNDS(_r7.o, _r0.i);
221     _r7.o = ((JAVA_ARRAY_OBJECT*) (((org_xmlvm_runtime_XMLVMArray*) _r7.o)->fields.org_xmlvm_runtime_XMLVMArray.array_))[_r0.i];
222     XMLVM_CHECK_NPE(7)
223     _r7.d = ((nbody_Body*) _r7.o)->fields.nbody_Body.vx_;
224     XMLVM_CHECK_NPE(12)
225     _r9.o = ((nbody_NBodySystem*) _r12.o)->fields.nbody_NBodySystem.bodies_;
226     XMLVM_CHECK_NPE(9)
227     XMLVM_CHECK_ARRAY_BOUNDS(_r9.o, _r0.i);
228     _r9.o = ((JAVA_ARRAY_OBJECT*) (((org_xmlvm_runtime_XMLVMArray*) _r9.o)->fields.org_xmlvm_runtime_XMLVMArray.array_))[_r0.i];
229     XMLVM_CHECK_NPE(9)
230     _r9.d = ((nbody_Body*) _r9.o)->fields.nbody_Body.mass_;
231     _r7.d = _r7.d * _r9.d;
232     _r1.d = _r1.d + _r7.d;
233     XMLVM_SOURCE_POSITION("nbody.java", 53)
234     XMLVM_CHECK_NPE(12)
235     _r7.o = ((nbody_NBodySystem*) _r12.o)->fields.nbody_NBodySystem.bodies_;
236     XMLVM_CHECK_NPE(7)
237     XMLVM_CHECK_ARRAY_BOUNDS(_r7.o, _r0.i);
238     _r7.o = ((JAVA_ARRAY_OBJECT*) (((org_xmlvm_runtime_XMLVMArray*) _r7.o)->fields.org_xmlvm_runtime_XMLVMArray.array_))[_r0.i];
239     XMLVM_CHECK_NPE(7)
240     _r7.d = ((nbody_Body*) _r7.o)->fields.nbody_Body.vy_;
241     XMLVM_CHECK_NPE(12)
242     _r9.o = ((nbody_NBodySystem*) _r12.o)->fields.nbody_NBodySystem.bodies_;
243     XMLVM_CHECK_NPE(9)
244     XMLVM_CHECK_ARRAY_BOUNDS(_r9.o, _r0.i);
245     _r9.o = ((JAVA_ARRAY_OBJECT*) (((org_xmlvm_runtime_XMLVMArray*) _r9.o)->fields.org_xmlvm_runtime_XMLVMArray.array_))[_r0.i];
246     XMLVM_CHECK_NPE(9)
247     _r9.d = ((nbody_Body*) _r9.o)->fields.nbody_Body.mass_;
248     _r7.d = _r7.d * _r9.d;
249     _r3.d = _r3.d + _r7.d;
250     XMLVM_SOURCE_POSITION("nbody.java", 54)
251     XMLVM_CHECK_NPE(12)
252     _r7.o = ((nbody_NBodySystem*) _r12.o)->fields.nbody_NBodySystem.bodies_;
253     XMLVM_CHECK_NPE(7)
254     XMLVM_CHECK_ARRAY_BOUNDS(_r7.o, _r0.i);
255     _r7.o = ((JAVA_ARRAY_OBJECT*) (((org_xmlvm_runtime_XMLVMArray*) _r7.o)->fields.org_xmlvm_runtime_XMLVMArray.array_))[_r0.i];
256     XMLVM_CHECK_NPE(7)
257     _r7.d = ((nbody_Body*) _r7.o)->fields.nbody_Body.vz_;
258     XMLVM_CHECK_NPE(12)
259     _r9.o = ((nbody_NBodySystem*) _r12.o)->fields.nbody_NBodySystem.bodies_;
260     XMLVM_CHECK_NPE(9)
261     XMLVM_CHECK_ARRAY_BOUNDS(_r9.o, _r0.i);
262     _r9.o = ((JAVA_ARRAY_OBJECT*) (((org_xmlvm_runtime_XMLVMArray*) _r9.o)->fields.org_xmlvm_runtime_XMLVMArray.array_))[_r0.i];
263     XMLVM_CHECK_NPE(9)
264     _r9.d = ((nbody_Body*) _r9.o)->fields.nbody_Body.mass_;
265     _r7.d = _r7.d * _r9.d;
266     _r5.d = _r5.d + _r7.d;
267     _r0.i = _r0.i + 1;
268     goto label48;
269     label98:;
270     XMLVM_SOURCE_POSITION("nbody.java", 56)
271     XMLVM_CHECK_NPE(12)
272     _r0.o = ((nbody_NBodySystem*) _r12.o)->fields.nbody_NBodySystem.bodies_;
273     XMLVM_CHECK_NPE(0)
274     XMLVM_CHECK_ARRAY_BOUNDS(_r0.o, _r11.i);
275     _r0.o = ((JAVA_ARRAY_OBJECT*) (((org_xmlvm_runtime_XMLVMArray*) _r0.o)->fields.org_xmlvm_runtime_XMLVMArray.array_))[_r11.i];
276     XMLVM_CHECK_NPE(0)
277     nbody_Body_offsetMomentum___double_double_double(_r0.o, _r1.d, _r3.d, _r5.d);
278     XMLVM_SOURCE_POSITION("nbody.java", 57)
279     XMLVM_EXIT_METHOD()
280     return;
281     //XMLVM_END_WRAPPER
282 }
283 
nbody_NBodySystem_advance___double(JAVA_OBJECT me,JAVA_DOUBLE n1)284 void nbody_NBodySystem_advance___double(JAVA_OBJECT me, JAVA_DOUBLE n1)
285 {
286     //XMLVM_BEGIN_WRAPPER[nbody_NBodySystem_advance___double]
287     XMLVM_ENTER_METHOD("nbody.NBodySystem", "advance", "?")
288     XMLVMElem _r0;
289     XMLVMElem _r1;
290     XMLVMElem _r2;
291     XMLVMElem _r3;
292     XMLVMElem _r4;
293     XMLVMElem _r5;
294     XMLVMElem _r6;
295     XMLVMElem _r7;
296     XMLVMElem _r8;
297     XMLVMElem _r9;
298     XMLVMElem _r10;
299     XMLVMElem _r11;
300     XMLVMElem _r12;
301     XMLVMElem _r13;
302     XMLVMElem _r14;
303     XMLVMElem _r15;
304     XMLVMElem _r16;
305     XMLVMElem _r17;
306     XMLVMElem _r18;
307     XMLVMElem _r19;
308     _r17.o = me;
309     _r18.d = n1;
310     XMLVM_SOURCE_POSITION("nbody.java", 61)
311     _r1.i = 0;
312     label1:;
313     _r0 = _r17;
314     XMLVM_CHECK_NPE(0)
315     _r0.o = ((nbody_NBodySystem*) _r0.o)->fields.nbody_NBodySystem.bodies_;
316     _r2 = _r0;
317     _r2.i = XMLVMArray_count(((org_xmlvm_runtime_XMLVMArray*) _r2.o));
318     if (_r1.i >= _r2.i) goto label183;
319     XMLVM_SOURCE_POSITION("nbody.java", 62)
320     _r0 = _r17;
321     XMLVM_CHECK_NPE(0)
322     _r0.o = ((nbody_NBodySystem*) _r0.o)->fields.nbody_NBodySystem.bodies_;
323     _r2 = _r0;
324     XMLVM_CHECK_NPE(2)
325     XMLVM_CHECK_ARRAY_BOUNDS(_r2.o, _r1.i);
326     _r2.o = ((JAVA_ARRAY_OBJECT*) (((org_xmlvm_runtime_XMLVMArray*) _r2.o)->fields.org_xmlvm_runtime_XMLVMArray.array_))[_r1.i];
327     XMLVM_SOURCE_POSITION("nbody.java", 63)
328     _r3.i = _r1.i + 1;
329     label18:;
330     _r0 = _r17;
331     XMLVM_CHECK_NPE(0)
332     _r0.o = ((nbody_NBodySystem*) _r0.o)->fields.nbody_NBodySystem.bodies_;
333     _r4 = _r0;
334     _r4.i = XMLVMArray_count(((org_xmlvm_runtime_XMLVMArray*) _r4.o));
335     if (_r3.i >= _r4.i) goto label179;
336     XMLVM_SOURCE_POSITION("nbody.java", 64)
337     XMLVM_CHECK_NPE(2)
338     _r4.d = ((nbody_Body*) _r2.o)->fields.nbody_Body.x_;
339     _r0 = _r17;
340     XMLVM_CHECK_NPE(0)
341     _r0.o = ((nbody_NBodySystem*) _r0.o)->fields.nbody_NBodySystem.bodies_;
342     _r6 = _r0;
343     XMLVM_CHECK_NPE(6)
344     XMLVM_CHECK_ARRAY_BOUNDS(_r6.o, _r3.i);
345     _r6.o = ((JAVA_ARRAY_OBJECT*) (((org_xmlvm_runtime_XMLVMArray*) _r6.o)->fields.org_xmlvm_runtime_XMLVMArray.array_))[_r3.i];
346     XMLVM_CHECK_NPE(6)
347     _r6.d = ((nbody_Body*) _r6.o)->fields.nbody_Body.x_;
348     _r4.d = _r4.d - _r6.d;
349     XMLVM_SOURCE_POSITION("nbody.java", 65)
350     XMLVM_CHECK_NPE(2)
351     _r6.d = ((nbody_Body*) _r2.o)->fields.nbody_Body.y_;
352     _r0 = _r17;
353     XMLVM_CHECK_NPE(0)
354     _r0.o = ((nbody_NBodySystem*) _r0.o)->fields.nbody_NBodySystem.bodies_;
355     _r8 = _r0;
356     XMLVM_CHECK_NPE(8)
357     XMLVM_CHECK_ARRAY_BOUNDS(_r8.o, _r3.i);
358     _r8.o = ((JAVA_ARRAY_OBJECT*) (((org_xmlvm_runtime_XMLVMArray*) _r8.o)->fields.org_xmlvm_runtime_XMLVMArray.array_))[_r3.i];
359     XMLVM_CHECK_NPE(8)
360     _r8.d = ((nbody_Body*) _r8.o)->fields.nbody_Body.y_;
361     _r6.d = _r6.d - _r8.d;
362     XMLVM_SOURCE_POSITION("nbody.java", 66)
363     XMLVM_CHECK_NPE(2)
364     _r8.d = ((nbody_Body*) _r2.o)->fields.nbody_Body.z_;
365     _r0 = _r17;
366     XMLVM_CHECK_NPE(0)
367     _r0.o = ((nbody_NBodySystem*) _r0.o)->fields.nbody_NBodySystem.bodies_;
368     _r10 = _r0;
369     XMLVM_CHECK_NPE(10)
370     XMLVM_CHECK_ARRAY_BOUNDS(_r10.o, _r3.i);
371     _r10.o = ((JAVA_ARRAY_OBJECT*) (((org_xmlvm_runtime_XMLVMArray*) _r10.o)->fields.org_xmlvm_runtime_XMLVMArray.array_))[_r3.i];
372     XMLVM_CHECK_NPE(10)
373     _r10.d = ((nbody_Body*) _r10.o)->fields.nbody_Body.z_;
374     _r8.d = _r8.d - _r10.d;
375     _r10.d = _r4.d * _r4.d;
376     _r12.d = _r6.d * _r6.d;
377     _r10.d = _r10.d + _r12.d;
378     _r12.d = _r8.d * _r8.d;
379     _r10.d = _r10.d + _r12.d;
380     XMLVM_SOURCE_POSITION("nbody.java", 69)
381     _r12.d = java_lang_Math_sqrt___double(_r10.d);
382     XMLVM_SOURCE_POSITION("nbody.java", 70)
383     _r10.d = _r10.d * _r12.d;
384     _r10.d = _r18.d / _r10.d;
385     XMLVM_SOURCE_POSITION("nbody.java", 72)
386     XMLVM_CHECK_NPE(2)
387     _r12.d = ((nbody_Body*) _r2.o)->fields.nbody_Body.vx_;
388     _r0 = _r17;
389     XMLVM_CHECK_NPE(0)
390     _r0.o = ((nbody_NBodySystem*) _r0.o)->fields.nbody_NBodySystem.bodies_;
391     _r14 = _r0;
392     XMLVM_CHECK_NPE(14)
393     XMLVM_CHECK_ARRAY_BOUNDS(_r14.o, _r3.i);
394     _r14.o = ((JAVA_ARRAY_OBJECT*) (((org_xmlvm_runtime_XMLVMArray*) _r14.o)->fields.org_xmlvm_runtime_XMLVMArray.array_))[_r3.i];
395     XMLVM_CHECK_NPE(14)
396     _r14.d = ((nbody_Body*) _r14.o)->fields.nbody_Body.mass_;
397     _r14.d = _r14.d * _r4.d;
398     _r14.d = _r14.d * _r10.d;
399     _r12.d = _r12.d - _r14.d;
400     XMLVM_CHECK_NPE(2)
401     ((nbody_Body*) _r2.o)->fields.nbody_Body.vx_ = _r12.d;
402     XMLVM_SOURCE_POSITION("nbody.java", 73)
403     XMLVM_CHECK_NPE(2)
404     _r12.d = ((nbody_Body*) _r2.o)->fields.nbody_Body.vy_;
405     _r0 = _r17;
406     XMLVM_CHECK_NPE(0)
407     _r0.o = ((nbody_NBodySystem*) _r0.o)->fields.nbody_NBodySystem.bodies_;
408     _r14 = _r0;
409     XMLVM_CHECK_NPE(14)
410     XMLVM_CHECK_ARRAY_BOUNDS(_r14.o, _r3.i);
411     _r14.o = ((JAVA_ARRAY_OBJECT*) (((org_xmlvm_runtime_XMLVMArray*) _r14.o)->fields.org_xmlvm_runtime_XMLVMArray.array_))[_r3.i];
412     XMLVM_CHECK_NPE(14)
413     _r14.d = ((nbody_Body*) _r14.o)->fields.nbody_Body.mass_;
414     _r14.d = _r14.d * _r6.d;
415     _r14.d = _r14.d * _r10.d;
416     _r12.d = _r12.d - _r14.d;
417     XMLVM_CHECK_NPE(2)
418     ((nbody_Body*) _r2.o)->fields.nbody_Body.vy_ = _r12.d;
419     XMLVM_SOURCE_POSITION("nbody.java", 74)
420     XMLVM_CHECK_NPE(2)
421     _r12.d = ((nbody_Body*) _r2.o)->fields.nbody_Body.vz_;
422     _r0 = _r17;
423     XMLVM_CHECK_NPE(0)
424     _r0.o = ((nbody_NBodySystem*) _r0.o)->fields.nbody_NBodySystem.bodies_;
425     _r14 = _r0;
426     XMLVM_CHECK_NPE(14)
427     XMLVM_CHECK_ARRAY_BOUNDS(_r14.o, _r3.i);
428     _r14.o = ((JAVA_ARRAY_OBJECT*) (((org_xmlvm_runtime_XMLVMArray*) _r14.o)->fields.org_xmlvm_runtime_XMLVMArray.array_))[_r3.i];
429     XMLVM_CHECK_NPE(14)
430     _r14.d = ((nbody_Body*) _r14.o)->fields.nbody_Body.mass_;
431     _r14.d = _r14.d * _r8.d;
432     _r14.d = _r14.d * _r10.d;
433     _r12.d = _r12.d - _r14.d;
434     XMLVM_CHECK_NPE(2)
435     ((nbody_Body*) _r2.o)->fields.nbody_Body.vz_ = _r12.d;
436     XMLVM_SOURCE_POSITION("nbody.java", 76)
437     _r0 = _r17;
438     XMLVM_CHECK_NPE(0)
439     _r0.o = ((nbody_NBodySystem*) _r0.o)->fields.nbody_NBodySystem.bodies_;
440     _r12 = _r0;
441     XMLVM_CHECK_NPE(12)
442     XMLVM_CHECK_ARRAY_BOUNDS(_r12.o, _r3.i);
443     _r12.o = ((JAVA_ARRAY_OBJECT*) (((org_xmlvm_runtime_XMLVMArray*) _r12.o)->fields.org_xmlvm_runtime_XMLVMArray.array_))[_r3.i];
444     XMLVM_CHECK_NPE(12)
445     _r13.d = ((nbody_Body*) _r12.o)->fields.nbody_Body.vx_;
446     XMLVM_CHECK_NPE(2)
447     _r15.d = ((nbody_Body*) _r2.o)->fields.nbody_Body.mass_;
448     _r4.d = _r4.d * _r15.d;
449     _r4.d = _r4.d * _r10.d;
450     _r4.d = _r4.d + _r13.d;
451     XMLVM_CHECK_NPE(12)
452     ((nbody_Body*) _r12.o)->fields.nbody_Body.vx_ = _r4.d;
453     XMLVM_SOURCE_POSITION("nbody.java", 77)
454     _r0 = _r17;
455     XMLVM_CHECK_NPE(0)
456     _r0.o = ((nbody_NBodySystem*) _r0.o)->fields.nbody_NBodySystem.bodies_;
457     _r4 = _r0;
458     XMLVM_CHECK_NPE(4)
459     XMLVM_CHECK_ARRAY_BOUNDS(_r4.o, _r3.i);
460     _r4.o = ((JAVA_ARRAY_OBJECT*) (((org_xmlvm_runtime_XMLVMArray*) _r4.o)->fields.org_xmlvm_runtime_XMLVMArray.array_))[_r3.i];
461     XMLVM_CHECK_NPE(4)
462     _r12.d = ((nbody_Body*) _r4.o)->fields.nbody_Body.vy_;
463     XMLVM_CHECK_NPE(2)
464     _r14.d = ((nbody_Body*) _r2.o)->fields.nbody_Body.mass_;
465     _r5.d = _r6.d * _r14.d;
466     _r5.d = _r5.d * _r10.d;
467     _r5.d = _r5.d + _r12.d;
468     XMLVM_CHECK_NPE(4)
469     ((nbody_Body*) _r4.o)->fields.nbody_Body.vy_ = _r5.d;
470     XMLVM_SOURCE_POSITION("nbody.java", 78)
471     _r0 = _r17;
472     XMLVM_CHECK_NPE(0)
473     _r0.o = ((nbody_NBodySystem*) _r0.o)->fields.nbody_NBodySystem.bodies_;
474     _r4 = _r0;
475     XMLVM_CHECK_NPE(4)
476     XMLVM_CHECK_ARRAY_BOUNDS(_r4.o, _r3.i);
477     _r4.o = ((JAVA_ARRAY_OBJECT*) (((org_xmlvm_runtime_XMLVMArray*) _r4.o)->fields.org_xmlvm_runtime_XMLVMArray.array_))[_r3.i];
478     XMLVM_CHECK_NPE(4)
479     _r5.d = ((nbody_Body*) _r4.o)->fields.nbody_Body.vz_;
480     XMLVM_CHECK_NPE(2)
481     _r12.d = ((nbody_Body*) _r2.o)->fields.nbody_Body.mass_;
482     _r7.d = _r8.d * _r12.d;
483     _r7.d = _r7.d * _r10.d;
484     _r5.d = _r5.d + _r7.d;
485     XMLVM_CHECK_NPE(4)
486     ((nbody_Body*) _r4.o)->fields.nbody_Body.vz_ = _r5.d;
487     _r3.i = _r3.i + 1;
488     goto label18;
489     label179:;
490     _r1.i = _r1.i + 1;
491     goto label1;
492     label183:;
493     XMLVM_SOURCE_POSITION("nbody.java", 82)
494     _r0 = _r17;
495     XMLVM_CHECK_NPE(0)
496     _r0.o = ((nbody_NBodySystem*) _r0.o)->fields.nbody_NBodySystem.bodies_;
497     _r1 = _r0;
498     _r2.i = XMLVMArray_count(((org_xmlvm_runtime_XMLVMArray*) _r1.o));
499     _r3.i = 0;
500     label190:;
501     if (_r3.i >= _r2.i) goto label224;
502     XMLVM_CHECK_NPE(1)
503     XMLVM_CHECK_ARRAY_BOUNDS(_r1.o, _r3.i);
504     _r4.o = ((JAVA_ARRAY_OBJECT*) (((org_xmlvm_runtime_XMLVMArray*) _r1.o)->fields.org_xmlvm_runtime_XMLVMArray.array_))[_r3.i];
505     XMLVM_SOURCE_POSITION("nbody.java", 83)
506     XMLVM_CHECK_NPE(4)
507     _r5.d = ((nbody_Body*) _r4.o)->fields.nbody_Body.x_;
508     XMLVM_CHECK_NPE(4)
509     _r7.d = ((nbody_Body*) _r4.o)->fields.nbody_Body.vx_;
510     _r7.d = _r7.d * _r18.d;
511     _r5.d = _r5.d + _r7.d;
512     XMLVM_CHECK_NPE(4)
513     ((nbody_Body*) _r4.o)->fields.nbody_Body.x_ = _r5.d;
514     XMLVM_SOURCE_POSITION("nbody.java", 84)
515     XMLVM_CHECK_NPE(4)
516     _r5.d = ((nbody_Body*) _r4.o)->fields.nbody_Body.y_;
517     XMLVM_CHECK_NPE(4)
518     _r7.d = ((nbody_Body*) _r4.o)->fields.nbody_Body.vy_;
519     _r7.d = _r7.d * _r18.d;
520     _r5.d = _r5.d + _r7.d;
521     XMLVM_CHECK_NPE(4)
522     ((nbody_Body*) _r4.o)->fields.nbody_Body.y_ = _r5.d;
523     XMLVM_SOURCE_POSITION("nbody.java", 85)
524     XMLVM_CHECK_NPE(4)
525     _r5.d = ((nbody_Body*) _r4.o)->fields.nbody_Body.z_;
526     XMLVM_CHECK_NPE(4)
527     _r7.d = ((nbody_Body*) _r4.o)->fields.nbody_Body.vz_;
528     _r7.d = _r7.d * _r18.d;
529     _r5.d = _r5.d + _r7.d;
530     XMLVM_CHECK_NPE(4)
531     ((nbody_Body*) _r4.o)->fields.nbody_Body.z_ = _r5.d;
532     _r3.i = _r3.i + 1;
533     goto label190;
534     label224:;
535     XMLVM_SOURCE_POSITION("nbody.java", 87)
536     XMLVM_EXIT_METHOD()
537     return;
538     //XMLVM_END_WRAPPER
539 }
540 
nbody_NBodySystem_energy__(JAVA_OBJECT me)541 JAVA_DOUBLE nbody_NBodySystem_energy__(JAVA_OBJECT me)
542 {
543     //XMLVM_BEGIN_WRAPPER[nbody_NBodySystem_energy__]
544     XMLVM_ENTER_METHOD("nbody.NBodySystem", "energy", "?")
545     XMLVMElem _r0;
546     XMLVMElem _r1;
547     XMLVMElem _r2;
548     XMLVMElem _r3;
549     XMLVMElem _r4;
550     XMLVMElem _r5;
551     XMLVMElem _r6;
552     XMLVMElem _r7;
553     XMLVMElem _r8;
554     XMLVMElem _r9;
555     XMLVMElem _r10;
556     XMLVMElem _r11;
557     XMLVMElem _r12;
558     XMLVMElem _r13;
559     XMLVMElem _r14;
560     XMLVMElem _r15;
561     XMLVMElem _r16;
562     XMLVMElem _r17;
563     XMLVMElem _r18;
564     _r18.o = me;
565     XMLVM_SOURCE_POSITION("nbody.java", 91)
566     _r1.d = 0.0;
567     _r3.i = 0;
568     _r15 = _r3;
569     _r16 = _r1;
570     _r2 = _r16;
571     _r1 = _r15;
572     label9:;
573     XMLVM_SOURCE_POSITION("nbody.java", 93)
574     _r0 = _r18;
575     XMLVM_CHECK_NPE(0)
576     _r0.o = ((nbody_NBodySystem*) _r0.o)->fields.nbody_NBodySystem.bodies_;
577     _r4 = _r0;
578     _r4.i = XMLVMArray_count(((org_xmlvm_runtime_XMLVMArray*) _r4.o));
579     if (_r1.i >= _r4.i) goto label108;
580     XMLVM_SOURCE_POSITION("nbody.java", 94)
581     _r0 = _r18;
582     XMLVM_CHECK_NPE(0)
583     _r0.o = ((nbody_NBodySystem*) _r0.o)->fields.nbody_NBodySystem.bodies_;
584     _r4 = _r0;
585     XMLVM_CHECK_NPE(4)
586     XMLVM_CHECK_ARRAY_BOUNDS(_r4.o, _r1.i);
587     _r4.o = ((JAVA_ARRAY_OBJECT*) (((org_xmlvm_runtime_XMLVMArray*) _r4.o)->fields.org_xmlvm_runtime_XMLVMArray.array_))[_r1.i];
588     XMLVM_SOURCE_POSITION("nbody.java", 95)
589     _r5.d = 0.5;
590     XMLVM_CHECK_NPE(4)
591     _r7.d = ((nbody_Body*) _r4.o)->fields.nbody_Body.mass_;
592     _r5.d = _r5.d * _r7.d;
593     XMLVM_CHECK_NPE(4)
594     _r7.d = ((nbody_Body*) _r4.o)->fields.nbody_Body.vx_;
595     XMLVM_CHECK_NPE(4)
596     _r9.d = ((nbody_Body*) _r4.o)->fields.nbody_Body.vx_;
597     _r7.d = _r7.d * _r9.d;
598     XMLVM_CHECK_NPE(4)
599     _r9.d = ((nbody_Body*) _r4.o)->fields.nbody_Body.vy_;
600     XMLVM_CHECK_NPE(4)
601     _r11.d = ((nbody_Body*) _r4.o)->fields.nbody_Body.vy_;
602     _r9.d = _r9.d * _r11.d;
603     _r7.d = _r7.d + _r9.d;
604     XMLVM_CHECK_NPE(4)
605     _r9.d = ((nbody_Body*) _r4.o)->fields.nbody_Body.vz_;
606     XMLVM_CHECK_NPE(4)
607     _r11.d = ((nbody_Body*) _r4.o)->fields.nbody_Body.vz_;
608     _r9.d = _r9.d * _r11.d;
609     _r7.d = _r7.d + _r9.d;
610     _r5.d = _r5.d * _r7.d;
611     _r2.d = _r2.d + _r5.d;
612     _r5.i = _r1.i + 1;
613     _r15 = _r5;
614     _r5 = _r2;
615     _r2 = _r15;
616     label53:;
617     XMLVM_SOURCE_POSITION("nbody.java", 100)
618     _r0 = _r18;
619     XMLVM_CHECK_NPE(0)
620     _r0.o = ((nbody_NBodySystem*) _r0.o)->fields.nbody_NBodySystem.bodies_;
621     _r3 = _r0;
622     _r3.i = XMLVMArray_count(((org_xmlvm_runtime_XMLVMArray*) _r3.o));
623     if (_r2.i >= _r3.i) goto label104;
624     XMLVM_SOURCE_POSITION("nbody.java", 101)
625     _r0 = _r18;
626     XMLVM_CHECK_NPE(0)
627     _r0.o = ((nbody_NBodySystem*) _r0.o)->fields.nbody_NBodySystem.bodies_;
628     _r3 = _r0;
629     XMLVM_CHECK_NPE(3)
630     XMLVM_CHECK_ARRAY_BOUNDS(_r3.o, _r2.i);
631     _r3.o = ((JAVA_ARRAY_OBJECT*) (((org_xmlvm_runtime_XMLVMArray*) _r3.o)->fields.org_xmlvm_runtime_XMLVMArray.array_))[_r2.i];
632     XMLVM_SOURCE_POSITION("nbody.java", 102)
633     XMLVM_CHECK_NPE(4)
634     _r7.d = ((nbody_Body*) _r4.o)->fields.nbody_Body.x_;
635     XMLVM_CHECK_NPE(3)
636     _r9.d = ((nbody_Body*) _r3.o)->fields.nbody_Body.x_;
637     _r7.d = _r7.d - _r9.d;
638     XMLVM_SOURCE_POSITION("nbody.java", 103)
639     XMLVM_CHECK_NPE(4)
640     _r9.d = ((nbody_Body*) _r4.o)->fields.nbody_Body.y_;
641     XMLVM_CHECK_NPE(3)
642     _r11.d = ((nbody_Body*) _r3.o)->fields.nbody_Body.y_;
643     _r9.d = _r9.d - _r11.d;
644     XMLVM_SOURCE_POSITION("nbody.java", 104)
645     XMLVM_CHECK_NPE(4)
646     _r11.d = ((nbody_Body*) _r4.o)->fields.nbody_Body.z_;
647     XMLVM_CHECK_NPE(3)
648     _r13.d = ((nbody_Body*) _r3.o)->fields.nbody_Body.z_;
649     _r11.d = _r11.d - _r13.d;
650     _r7.d = _r7.d * _r7.d;
651     _r9.d = _r9.d * _r9.d;
652     _r7.d = _r7.d + _r9.d;
653     _r9.d = _r11.d * _r11.d;
654     _r7.d = _r7.d + _r9.d;
655     XMLVM_SOURCE_POSITION("nbody.java", 106)
656     _r7.d = java_lang_Math_sqrt___double(_r7.d);
657     XMLVM_SOURCE_POSITION("nbody.java", 107)
658     XMLVM_CHECK_NPE(4)
659     _r9.d = ((nbody_Body*) _r4.o)->fields.nbody_Body.mass_;
660     XMLVM_CHECK_NPE(3)
661     _r11.d = ((nbody_Body*) _r3.o)->fields.nbody_Body.mass_;
662     _r9.d = _r9.d * _r11.d;
663     _r7.d = _r9.d / _r7.d;
664     _r5.d = _r5.d - _r7.d;
665     _r2.i = _r2.i + 1;
666     goto label53;
667     label104:;
668     _r1.i = _r1.i + 1;
669     _r2 = _r5;
670     goto label9;
671     label108:;
672     XMLVM_SOURCE_POSITION("nbody.java", 110)
673     XMLVM_EXIT_METHOD()
674     return _r2.d;
675     //XMLVM_END_WRAPPER
676 }
677 
678