blob: f98ed395bead146cc068c345b67d4ba5cd0e02cf [file] [log] [blame] [edit]
/*
* Copyright 2013 The Emscripten Authors. All rights reserved.
* Emscripten is available under two separate licenses, the MIT license and the
* University of Illinois/NCSA Open Source License. Both these licenses can be
* found in the LICENSE file.
*/
#include "xmlvm.h"
#include "java_lang_Math.h"
#include "nbody_Body.h"
#include "nbody_NBodySystem.h"
#define XMLVM_CURRENT_CLASS_NAME NBodySystem
#define XMLVM_CURRENT_PKG_CLASS_NAME nbody_NBodySystem
__TIB_DEFINITION_nbody_NBodySystem __TIB_nbody_NBodySystem = {
0, // classInitializationBegan
0, // classInitialized
-1, // initializerThreadId
__INIT_nbody_NBodySystem, // classInitializer
"nbody.NBodySystem", // className
"nbody", // package
JAVA_NULL, // enclosingClassName
JAVA_NULL, // enclosingMethodName
JAVA_NULL, // signature
(__TIB_DEFINITION_TEMPLATE*) &__TIB_java_lang_Object, // extends
sizeof(nbody_NBodySystem), // sizeInstance
XMLVM_TYPE_CLASS};
JAVA_OBJECT __CLASS_nbody_NBodySystem;
JAVA_OBJECT __CLASS_nbody_NBodySystem_1ARRAY;
JAVA_OBJECT __CLASS_nbody_NBodySystem_2ARRAY;
JAVA_OBJECT __CLASS_nbody_NBodySystem_3ARRAY;
//XMLVM_BEGIN_IMPLEMENTATION
//XMLVM_END_IMPLEMENTATION
#include "xmlvm-reflection.h"
static XMLVM_FIELD_REFLECTION_DATA __field_reflection_data[] = {
};
static XMLVM_CONSTRUCTOR_REFLECTION_DATA __constructor_reflection_data[] = {
};
static JAVA_OBJECT constructor_dispatcher(JAVA_OBJECT constructor, JAVA_OBJECT arguments)
{
XMLVM_NOT_IMPLEMENTED();
}
static XMLVM_METHOD_REFLECTION_DATA __method_reflection_data[] = {
};
static JAVA_OBJECT method_dispatcher(JAVA_OBJECT method, JAVA_OBJECT receiver, JAVA_OBJECT arguments)
{
XMLVM_NOT_IMPLEMENTED();
}
void __INIT_nbody_NBodySystem()
{
staticInitializerLock(&__TIB_nbody_NBodySystem);
// While the static initializer mutex is locked, locally store the value of
// whether class initialization began or not
int initBegan = __TIB_nbody_NBodySystem.classInitializationBegan;
// Whether or not class initialization had already began, it has begun now
__TIB_nbody_NBodySystem.classInitializationBegan = 1;
staticInitializerUnlock(&__TIB_nbody_NBodySystem);
JAVA_LONG curThreadId = (JAVA_LONG)pthread_self();
if (initBegan) {
if (__TIB_nbody_NBodySystem.initializerThreadId != curThreadId) {
// Busy wait until the other thread finishes initializing this class
while (!__TIB_nbody_NBodySystem.classInitialized) {
// do nothing
}
}
} else {
__TIB_nbody_NBodySystem.initializerThreadId = curThreadId;
XMLVM_CLASS_USED("nbody.NBodySystem")
__INIT_IMPL_nbody_NBodySystem();
}
}
void __INIT_IMPL_nbody_NBodySystem()
{
// Initialize base class if necessary
XMLVM_CLASS_INIT(java_lang_Object)
__TIB_nbody_NBodySystem.newInstanceFunc = __NEW_INSTANCE_nbody_NBodySystem;
// Copy vtable from base class
XMLVM_MEMCPY(__TIB_nbody_NBodySystem.vtable, __TIB_java_lang_Object.vtable, sizeof(__TIB_java_lang_Object.vtable));
// Initialize vtable for this class
// Initialize interface information
__TIB_nbody_NBodySystem.numImplementedInterfaces = 0;
__TIB_nbody_NBodySystem.implementedInterfaces = (__TIB_DEFINITION_TEMPLATE* (*)[1]) XMLVM_MALLOC(sizeof(__TIB_DEFINITION_TEMPLATE*) * 0);
// Initialize interfaces if necessary and assign tib to implementedInterfaces
__TIB_nbody_NBodySystem.declaredFields = &__field_reflection_data[0];
__TIB_nbody_NBodySystem.numDeclaredFields = sizeof(__field_reflection_data) / sizeof(XMLVM_FIELD_REFLECTION_DATA);
__TIB_nbody_NBodySystem.constructorDispatcherFunc = constructor_dispatcher;
__TIB_nbody_NBodySystem.declaredConstructors = &__constructor_reflection_data[0];
__TIB_nbody_NBodySystem.numDeclaredConstructors = sizeof(__constructor_reflection_data) / sizeof(XMLVM_CONSTRUCTOR_REFLECTION_DATA);
__TIB_nbody_NBodySystem.methodDispatcherFunc = method_dispatcher;
__TIB_nbody_NBodySystem.declaredMethods = &__method_reflection_data[0];
__TIB_nbody_NBodySystem.numDeclaredMethods = sizeof(__method_reflection_data) / sizeof(XMLVM_METHOD_REFLECTION_DATA);
__CLASS_nbody_NBodySystem = XMLVM_CREATE_CLASS_OBJECT(&__TIB_nbody_NBodySystem);
__TIB_nbody_NBodySystem.clazz = __CLASS_nbody_NBodySystem;
__TIB_nbody_NBodySystem.baseType = JAVA_NULL;
__CLASS_nbody_NBodySystem_1ARRAY = XMLVM_CREATE_ARRAY_CLASS_OBJECT(__CLASS_nbody_NBodySystem);
__CLASS_nbody_NBodySystem_2ARRAY = XMLVM_CREATE_ARRAY_CLASS_OBJECT(__CLASS_nbody_NBodySystem_1ARRAY);
__CLASS_nbody_NBodySystem_3ARRAY = XMLVM_CREATE_ARRAY_CLASS_OBJECT(__CLASS_nbody_NBodySystem_2ARRAY);
//XMLVM_BEGIN_WRAPPER[__INIT_nbody_NBodySystem]
//XMLVM_END_WRAPPER
__TIB_nbody_NBodySystem.classInitialized = 1;
}
void __DELETE_nbody_NBodySystem(void* me, void* client_data)
{
//XMLVM_BEGIN_WRAPPER[__DELETE_nbody_NBodySystem]
//XMLVM_END_WRAPPER
}
void __INIT_INSTANCE_MEMBERS_nbody_NBodySystem(JAVA_OBJECT me, int derivedClassWillRegisterFinalizer)
{
__INIT_INSTANCE_MEMBERS_java_lang_Object(me, 0 || derivedClassWillRegisterFinalizer);
((nbody_NBodySystem*) me)->fields.nbody_NBodySystem.bodies_ = (org_xmlvm_runtime_XMLVMArray*) JAVA_NULL;
//XMLVM_BEGIN_WRAPPER[__INIT_INSTANCE_MEMBERS_nbody_NBodySystem]
//XMLVM_END_WRAPPER
}
JAVA_OBJECT __NEW_nbody_NBodySystem()
{ XMLVM_CLASS_INIT(nbody_NBodySystem)
nbody_NBodySystem* me = (nbody_NBodySystem*) XMLVM_MALLOC(sizeof(nbody_NBodySystem));
me->tib = &__TIB_nbody_NBodySystem;
__INIT_INSTANCE_MEMBERS_nbody_NBodySystem(me, 0);
//XMLVM_BEGIN_WRAPPER[__NEW_nbody_NBodySystem]
//XMLVM_END_WRAPPER
return me;
}
JAVA_OBJECT __NEW_INSTANCE_nbody_NBodySystem()
{
JAVA_OBJECT me = JAVA_NULL;
me = __NEW_nbody_NBodySystem();
nbody_NBodySystem___INIT___(me);
return me;
}
void nbody_NBodySystem___INIT___(JAVA_OBJECT me)
{
//XMLVM_BEGIN_WRAPPER[nbody_NBodySystem___INIT___]
XMLVM_ENTER_METHOD("nbody.NBodySystem", "<init>", "?")
XMLVMElem _r0;
XMLVMElem _r1;
XMLVMElem _r2;
XMLVMElem _r3;
XMLVMElem _r4;
XMLVMElem _r5;
XMLVMElem _r6;
XMLVMElem _r7;
XMLVMElem _r8;
XMLVMElem _r9;
XMLVMElem _r10;
XMLVMElem _r11;
XMLVMElem _r12;
_r12.o = me;
_r11.i = 0;
_r3.d = 0.0;
XMLVM_SOURCE_POSITION("nbody.java", 39)
XMLVM_CHECK_NPE(12)
java_lang_Object___INIT___(_r12.o);
XMLVM_SOURCE_POSITION("nbody.java", 40)
_r0.i = 5;
XMLVM_CLASS_INIT(nbody_Body)
_r0.o = XMLVMArray_createSingleDimension(__CLASS_nbody_Body, _r0.i);
_r1.o = nbody_Body_sun__();
XMLVM_CHECK_NPE(0)
XMLVM_CHECK_ARRAY_BOUNDS(_r0.o, _r11.i);
((JAVA_ARRAY_OBJECT*) (((org_xmlvm_runtime_XMLVMArray*) _r0.o)->fields.org_xmlvm_runtime_XMLVMArray.array_))[_r11.i] = _r1.o;
_r1.i = 1;
_r2.o = nbody_Body_jupiter__();
XMLVM_CHECK_NPE(0)
XMLVM_CHECK_ARRAY_BOUNDS(_r0.o, _r1.i);
((JAVA_ARRAY_OBJECT*) (((org_xmlvm_runtime_XMLVMArray*) _r0.o)->fields.org_xmlvm_runtime_XMLVMArray.array_))[_r1.i] = _r2.o;
_r1.i = 2;
_r2.o = nbody_Body_saturn__();
XMLVM_CHECK_NPE(0)
XMLVM_CHECK_ARRAY_BOUNDS(_r0.o, _r1.i);
((JAVA_ARRAY_OBJECT*) (((org_xmlvm_runtime_XMLVMArray*) _r0.o)->fields.org_xmlvm_runtime_XMLVMArray.array_))[_r1.i] = _r2.o;
_r1.i = 3;
_r2.o = nbody_Body_uranus__();
XMLVM_CHECK_NPE(0)
XMLVM_CHECK_ARRAY_BOUNDS(_r0.o, _r1.i);
((JAVA_ARRAY_OBJECT*) (((org_xmlvm_runtime_XMLVMArray*) _r0.o)->fields.org_xmlvm_runtime_XMLVMArray.array_))[_r1.i] = _r2.o;
_r1.i = 4;
_r2.o = nbody_Body_neptune__();
XMLVM_CHECK_NPE(0)
XMLVM_CHECK_ARRAY_BOUNDS(_r0.o, _r1.i);
((JAVA_ARRAY_OBJECT*) (((org_xmlvm_runtime_XMLVMArray*) _r0.o)->fields.org_xmlvm_runtime_XMLVMArray.array_))[_r1.i] = _r2.o;
XMLVM_CHECK_NPE(12)
((nbody_NBodySystem*) _r12.o)->fields.nbody_NBodySystem.bodies_ = _r0.o;
_r0 = _r11;
_r5 = _r3;
_r1 = _r3;
label48:;
XMLVM_SOURCE_POSITION("nbody.java", 51)
XMLVM_CHECK_NPE(12)
_r7.o = ((nbody_NBodySystem*) _r12.o)->fields.nbody_NBodySystem.bodies_;
_r7.i = XMLVMArray_count(((org_xmlvm_runtime_XMLVMArray*) _r7.o));
if (_r0.i >= _r7.i) goto label98;
XMLVM_SOURCE_POSITION("nbody.java", 52)
XMLVM_CHECK_NPE(12)
_r7.o = ((nbody_NBodySystem*) _r12.o)->fields.nbody_NBodySystem.bodies_;
XMLVM_CHECK_NPE(7)
XMLVM_CHECK_ARRAY_BOUNDS(_r7.o, _r0.i);
_r7.o = ((JAVA_ARRAY_OBJECT*) (((org_xmlvm_runtime_XMLVMArray*) _r7.o)->fields.org_xmlvm_runtime_XMLVMArray.array_))[_r0.i];
XMLVM_CHECK_NPE(7)
_r7.d = ((nbody_Body*) _r7.o)->fields.nbody_Body.vx_;
XMLVM_CHECK_NPE(12)
_r9.o = ((nbody_NBodySystem*) _r12.o)->fields.nbody_NBodySystem.bodies_;
XMLVM_CHECK_NPE(9)
XMLVM_CHECK_ARRAY_BOUNDS(_r9.o, _r0.i);
_r9.o = ((JAVA_ARRAY_OBJECT*) (((org_xmlvm_runtime_XMLVMArray*) _r9.o)->fields.org_xmlvm_runtime_XMLVMArray.array_))[_r0.i];
XMLVM_CHECK_NPE(9)
_r9.d = ((nbody_Body*) _r9.o)->fields.nbody_Body.mass_;
_r7.d = _r7.d * _r9.d;
_r1.d = _r1.d + _r7.d;
XMLVM_SOURCE_POSITION("nbody.java", 53)
XMLVM_CHECK_NPE(12)
_r7.o = ((nbody_NBodySystem*) _r12.o)->fields.nbody_NBodySystem.bodies_;
XMLVM_CHECK_NPE(7)
XMLVM_CHECK_ARRAY_BOUNDS(_r7.o, _r0.i);
_r7.o = ((JAVA_ARRAY_OBJECT*) (((org_xmlvm_runtime_XMLVMArray*) _r7.o)->fields.org_xmlvm_runtime_XMLVMArray.array_))[_r0.i];
XMLVM_CHECK_NPE(7)
_r7.d = ((nbody_Body*) _r7.o)->fields.nbody_Body.vy_;
XMLVM_CHECK_NPE(12)
_r9.o = ((nbody_NBodySystem*) _r12.o)->fields.nbody_NBodySystem.bodies_;
XMLVM_CHECK_NPE(9)
XMLVM_CHECK_ARRAY_BOUNDS(_r9.o, _r0.i);
_r9.o = ((JAVA_ARRAY_OBJECT*) (((org_xmlvm_runtime_XMLVMArray*) _r9.o)->fields.org_xmlvm_runtime_XMLVMArray.array_))[_r0.i];
XMLVM_CHECK_NPE(9)
_r9.d = ((nbody_Body*) _r9.o)->fields.nbody_Body.mass_;
_r7.d = _r7.d * _r9.d;
_r3.d = _r3.d + _r7.d;
XMLVM_SOURCE_POSITION("nbody.java", 54)
XMLVM_CHECK_NPE(12)
_r7.o = ((nbody_NBodySystem*) _r12.o)->fields.nbody_NBodySystem.bodies_;
XMLVM_CHECK_NPE(7)
XMLVM_CHECK_ARRAY_BOUNDS(_r7.o, _r0.i);
_r7.o = ((JAVA_ARRAY_OBJECT*) (((org_xmlvm_runtime_XMLVMArray*) _r7.o)->fields.org_xmlvm_runtime_XMLVMArray.array_))[_r0.i];
XMLVM_CHECK_NPE(7)
_r7.d = ((nbody_Body*) _r7.o)->fields.nbody_Body.vz_;
XMLVM_CHECK_NPE(12)
_r9.o = ((nbody_NBodySystem*) _r12.o)->fields.nbody_NBodySystem.bodies_;
XMLVM_CHECK_NPE(9)
XMLVM_CHECK_ARRAY_BOUNDS(_r9.o, _r0.i);
_r9.o = ((JAVA_ARRAY_OBJECT*) (((org_xmlvm_runtime_XMLVMArray*) _r9.o)->fields.org_xmlvm_runtime_XMLVMArray.array_))[_r0.i];
XMLVM_CHECK_NPE(9)
_r9.d = ((nbody_Body*) _r9.o)->fields.nbody_Body.mass_;
_r7.d = _r7.d * _r9.d;
_r5.d = _r5.d + _r7.d;
_r0.i = _r0.i + 1;
goto label48;
label98:;
XMLVM_SOURCE_POSITION("nbody.java", 56)
XMLVM_CHECK_NPE(12)
_r0.o = ((nbody_NBodySystem*) _r12.o)->fields.nbody_NBodySystem.bodies_;
XMLVM_CHECK_NPE(0)
XMLVM_CHECK_ARRAY_BOUNDS(_r0.o, _r11.i);
_r0.o = ((JAVA_ARRAY_OBJECT*) (((org_xmlvm_runtime_XMLVMArray*) _r0.o)->fields.org_xmlvm_runtime_XMLVMArray.array_))[_r11.i];
XMLVM_CHECK_NPE(0)
nbody_Body_offsetMomentum___double_double_double(_r0.o, _r1.d, _r3.d, _r5.d);
XMLVM_SOURCE_POSITION("nbody.java", 57)
XMLVM_EXIT_METHOD()
return;
//XMLVM_END_WRAPPER
}
void nbody_NBodySystem_advance___double(JAVA_OBJECT me, JAVA_DOUBLE n1)
{
//XMLVM_BEGIN_WRAPPER[nbody_NBodySystem_advance___double]
XMLVM_ENTER_METHOD("nbody.NBodySystem", "advance", "?")
XMLVMElem _r0;
XMLVMElem _r1;
XMLVMElem _r2;
XMLVMElem _r3;
XMLVMElem _r4;
XMLVMElem _r5;
XMLVMElem _r6;
XMLVMElem _r7;
XMLVMElem _r8;
XMLVMElem _r9;
XMLVMElem _r10;
XMLVMElem _r11;
XMLVMElem _r12;
XMLVMElem _r13;
XMLVMElem _r14;
XMLVMElem _r15;
XMLVMElem _r16;
XMLVMElem _r17;
XMLVMElem _r18;
XMLVMElem _r19;
_r17.o = me;
_r18.d = n1;
XMLVM_SOURCE_POSITION("nbody.java", 61)
_r1.i = 0;
label1:;
_r0 = _r17;
XMLVM_CHECK_NPE(0)
_r0.o = ((nbody_NBodySystem*) _r0.o)->fields.nbody_NBodySystem.bodies_;
_r2 = _r0;
_r2.i = XMLVMArray_count(((org_xmlvm_runtime_XMLVMArray*) _r2.o));
if (_r1.i >= _r2.i) goto label183;
XMLVM_SOURCE_POSITION("nbody.java", 62)
_r0 = _r17;
XMLVM_CHECK_NPE(0)
_r0.o = ((nbody_NBodySystem*) _r0.o)->fields.nbody_NBodySystem.bodies_;
_r2 = _r0;
XMLVM_CHECK_NPE(2)
XMLVM_CHECK_ARRAY_BOUNDS(_r2.o, _r1.i);
_r2.o = ((JAVA_ARRAY_OBJECT*) (((org_xmlvm_runtime_XMLVMArray*) _r2.o)->fields.org_xmlvm_runtime_XMLVMArray.array_))[_r1.i];
XMLVM_SOURCE_POSITION("nbody.java", 63)
_r3.i = _r1.i + 1;
label18:;
_r0 = _r17;
XMLVM_CHECK_NPE(0)
_r0.o = ((nbody_NBodySystem*) _r0.o)->fields.nbody_NBodySystem.bodies_;
_r4 = _r0;
_r4.i = XMLVMArray_count(((org_xmlvm_runtime_XMLVMArray*) _r4.o));
if (_r3.i >= _r4.i) goto label179;
XMLVM_SOURCE_POSITION("nbody.java", 64)
XMLVM_CHECK_NPE(2)
_r4.d = ((nbody_Body*) _r2.o)->fields.nbody_Body.x_;
_r0 = _r17;
XMLVM_CHECK_NPE(0)
_r0.o = ((nbody_NBodySystem*) _r0.o)->fields.nbody_NBodySystem.bodies_;
_r6 = _r0;
XMLVM_CHECK_NPE(6)
XMLVM_CHECK_ARRAY_BOUNDS(_r6.o, _r3.i);
_r6.o = ((JAVA_ARRAY_OBJECT*) (((org_xmlvm_runtime_XMLVMArray*) _r6.o)->fields.org_xmlvm_runtime_XMLVMArray.array_))[_r3.i];
XMLVM_CHECK_NPE(6)
_r6.d = ((nbody_Body*) _r6.o)->fields.nbody_Body.x_;
_r4.d = _r4.d - _r6.d;
XMLVM_SOURCE_POSITION("nbody.java", 65)
XMLVM_CHECK_NPE(2)
_r6.d = ((nbody_Body*) _r2.o)->fields.nbody_Body.y_;
_r0 = _r17;
XMLVM_CHECK_NPE(0)
_r0.o = ((nbody_NBodySystem*) _r0.o)->fields.nbody_NBodySystem.bodies_;
_r8 = _r0;
XMLVM_CHECK_NPE(8)
XMLVM_CHECK_ARRAY_BOUNDS(_r8.o, _r3.i);
_r8.o = ((JAVA_ARRAY_OBJECT*) (((org_xmlvm_runtime_XMLVMArray*) _r8.o)->fields.org_xmlvm_runtime_XMLVMArray.array_))[_r3.i];
XMLVM_CHECK_NPE(8)
_r8.d = ((nbody_Body*) _r8.o)->fields.nbody_Body.y_;
_r6.d = _r6.d - _r8.d;
XMLVM_SOURCE_POSITION("nbody.java", 66)
XMLVM_CHECK_NPE(2)
_r8.d = ((nbody_Body*) _r2.o)->fields.nbody_Body.z_;
_r0 = _r17;
XMLVM_CHECK_NPE(0)
_r0.o = ((nbody_NBodySystem*) _r0.o)->fields.nbody_NBodySystem.bodies_;
_r10 = _r0;
XMLVM_CHECK_NPE(10)
XMLVM_CHECK_ARRAY_BOUNDS(_r10.o, _r3.i);
_r10.o = ((JAVA_ARRAY_OBJECT*) (((org_xmlvm_runtime_XMLVMArray*) _r10.o)->fields.org_xmlvm_runtime_XMLVMArray.array_))[_r3.i];
XMLVM_CHECK_NPE(10)
_r10.d = ((nbody_Body*) _r10.o)->fields.nbody_Body.z_;
_r8.d = _r8.d - _r10.d;
_r10.d = _r4.d * _r4.d;
_r12.d = _r6.d * _r6.d;
_r10.d = _r10.d + _r12.d;
_r12.d = _r8.d * _r8.d;
_r10.d = _r10.d + _r12.d;
XMLVM_SOURCE_POSITION("nbody.java", 69)
_r12.d = java_lang_Math_sqrt___double(_r10.d);
XMLVM_SOURCE_POSITION("nbody.java", 70)
_r10.d = _r10.d * _r12.d;
_r10.d = _r18.d / _r10.d;
XMLVM_SOURCE_POSITION("nbody.java", 72)
XMLVM_CHECK_NPE(2)
_r12.d = ((nbody_Body*) _r2.o)->fields.nbody_Body.vx_;
_r0 = _r17;
XMLVM_CHECK_NPE(0)
_r0.o = ((nbody_NBodySystem*) _r0.o)->fields.nbody_NBodySystem.bodies_;
_r14 = _r0;
XMLVM_CHECK_NPE(14)
XMLVM_CHECK_ARRAY_BOUNDS(_r14.o, _r3.i);
_r14.o = ((JAVA_ARRAY_OBJECT*) (((org_xmlvm_runtime_XMLVMArray*) _r14.o)->fields.org_xmlvm_runtime_XMLVMArray.array_))[_r3.i];
XMLVM_CHECK_NPE(14)
_r14.d = ((nbody_Body*) _r14.o)->fields.nbody_Body.mass_;
_r14.d = _r14.d * _r4.d;
_r14.d = _r14.d * _r10.d;
_r12.d = _r12.d - _r14.d;
XMLVM_CHECK_NPE(2)
((nbody_Body*) _r2.o)->fields.nbody_Body.vx_ = _r12.d;
XMLVM_SOURCE_POSITION("nbody.java", 73)
XMLVM_CHECK_NPE(2)
_r12.d = ((nbody_Body*) _r2.o)->fields.nbody_Body.vy_;
_r0 = _r17;
XMLVM_CHECK_NPE(0)
_r0.o = ((nbody_NBodySystem*) _r0.o)->fields.nbody_NBodySystem.bodies_;
_r14 = _r0;
XMLVM_CHECK_NPE(14)
XMLVM_CHECK_ARRAY_BOUNDS(_r14.o, _r3.i);
_r14.o = ((JAVA_ARRAY_OBJECT*) (((org_xmlvm_runtime_XMLVMArray*) _r14.o)->fields.org_xmlvm_runtime_XMLVMArray.array_))[_r3.i];
XMLVM_CHECK_NPE(14)
_r14.d = ((nbody_Body*) _r14.o)->fields.nbody_Body.mass_;
_r14.d = _r14.d * _r6.d;
_r14.d = _r14.d * _r10.d;
_r12.d = _r12.d - _r14.d;
XMLVM_CHECK_NPE(2)
((nbody_Body*) _r2.o)->fields.nbody_Body.vy_ = _r12.d;
XMLVM_SOURCE_POSITION("nbody.java", 74)
XMLVM_CHECK_NPE(2)
_r12.d = ((nbody_Body*) _r2.o)->fields.nbody_Body.vz_;
_r0 = _r17;
XMLVM_CHECK_NPE(0)
_r0.o = ((nbody_NBodySystem*) _r0.o)->fields.nbody_NBodySystem.bodies_;
_r14 = _r0;
XMLVM_CHECK_NPE(14)
XMLVM_CHECK_ARRAY_BOUNDS(_r14.o, _r3.i);
_r14.o = ((JAVA_ARRAY_OBJECT*) (((org_xmlvm_runtime_XMLVMArray*) _r14.o)->fields.org_xmlvm_runtime_XMLVMArray.array_))[_r3.i];
XMLVM_CHECK_NPE(14)
_r14.d = ((nbody_Body*) _r14.o)->fields.nbody_Body.mass_;
_r14.d = _r14.d * _r8.d;
_r14.d = _r14.d * _r10.d;
_r12.d = _r12.d - _r14.d;
XMLVM_CHECK_NPE(2)
((nbody_Body*) _r2.o)->fields.nbody_Body.vz_ = _r12.d;
XMLVM_SOURCE_POSITION("nbody.java", 76)
_r0 = _r17;
XMLVM_CHECK_NPE(0)
_r0.o = ((nbody_NBodySystem*) _r0.o)->fields.nbody_NBodySystem.bodies_;
_r12 = _r0;
XMLVM_CHECK_NPE(12)
XMLVM_CHECK_ARRAY_BOUNDS(_r12.o, _r3.i);
_r12.o = ((JAVA_ARRAY_OBJECT*) (((org_xmlvm_runtime_XMLVMArray*) _r12.o)->fields.org_xmlvm_runtime_XMLVMArray.array_))[_r3.i];
XMLVM_CHECK_NPE(12)
_r13.d = ((nbody_Body*) _r12.o)->fields.nbody_Body.vx_;
XMLVM_CHECK_NPE(2)
_r15.d = ((nbody_Body*) _r2.o)->fields.nbody_Body.mass_;
_r4.d = _r4.d * _r15.d;
_r4.d = _r4.d * _r10.d;
_r4.d = _r4.d + _r13.d;
XMLVM_CHECK_NPE(12)
((nbody_Body*) _r12.o)->fields.nbody_Body.vx_ = _r4.d;
XMLVM_SOURCE_POSITION("nbody.java", 77)
_r0 = _r17;
XMLVM_CHECK_NPE(0)
_r0.o = ((nbody_NBodySystem*) _r0.o)->fields.nbody_NBodySystem.bodies_;
_r4 = _r0;
XMLVM_CHECK_NPE(4)
XMLVM_CHECK_ARRAY_BOUNDS(_r4.o, _r3.i);
_r4.o = ((JAVA_ARRAY_OBJECT*) (((org_xmlvm_runtime_XMLVMArray*) _r4.o)->fields.org_xmlvm_runtime_XMLVMArray.array_))[_r3.i];
XMLVM_CHECK_NPE(4)
_r12.d = ((nbody_Body*) _r4.o)->fields.nbody_Body.vy_;
XMLVM_CHECK_NPE(2)
_r14.d = ((nbody_Body*) _r2.o)->fields.nbody_Body.mass_;
_r5.d = _r6.d * _r14.d;
_r5.d = _r5.d * _r10.d;
_r5.d = _r5.d + _r12.d;
XMLVM_CHECK_NPE(4)
((nbody_Body*) _r4.o)->fields.nbody_Body.vy_ = _r5.d;
XMLVM_SOURCE_POSITION("nbody.java", 78)
_r0 = _r17;
XMLVM_CHECK_NPE(0)
_r0.o = ((nbody_NBodySystem*) _r0.o)->fields.nbody_NBodySystem.bodies_;
_r4 = _r0;
XMLVM_CHECK_NPE(4)
XMLVM_CHECK_ARRAY_BOUNDS(_r4.o, _r3.i);
_r4.o = ((JAVA_ARRAY_OBJECT*) (((org_xmlvm_runtime_XMLVMArray*) _r4.o)->fields.org_xmlvm_runtime_XMLVMArray.array_))[_r3.i];
XMLVM_CHECK_NPE(4)
_r5.d = ((nbody_Body*) _r4.o)->fields.nbody_Body.vz_;
XMLVM_CHECK_NPE(2)
_r12.d = ((nbody_Body*) _r2.o)->fields.nbody_Body.mass_;
_r7.d = _r8.d * _r12.d;
_r7.d = _r7.d * _r10.d;
_r5.d = _r5.d + _r7.d;
XMLVM_CHECK_NPE(4)
((nbody_Body*) _r4.o)->fields.nbody_Body.vz_ = _r5.d;
_r3.i = _r3.i + 1;
goto label18;
label179:;
_r1.i = _r1.i + 1;
goto label1;
label183:;
XMLVM_SOURCE_POSITION("nbody.java", 82)
_r0 = _r17;
XMLVM_CHECK_NPE(0)
_r0.o = ((nbody_NBodySystem*) _r0.o)->fields.nbody_NBodySystem.bodies_;
_r1 = _r0;
_r2.i = XMLVMArray_count(((org_xmlvm_runtime_XMLVMArray*) _r1.o));
_r3.i = 0;
label190:;
if (_r3.i >= _r2.i) goto label224;
XMLVM_CHECK_NPE(1)
XMLVM_CHECK_ARRAY_BOUNDS(_r1.o, _r3.i);
_r4.o = ((JAVA_ARRAY_OBJECT*) (((org_xmlvm_runtime_XMLVMArray*) _r1.o)->fields.org_xmlvm_runtime_XMLVMArray.array_))[_r3.i];
XMLVM_SOURCE_POSITION("nbody.java", 83)
XMLVM_CHECK_NPE(4)
_r5.d = ((nbody_Body*) _r4.o)->fields.nbody_Body.x_;
XMLVM_CHECK_NPE(4)
_r7.d = ((nbody_Body*) _r4.o)->fields.nbody_Body.vx_;
_r7.d = _r7.d * _r18.d;
_r5.d = _r5.d + _r7.d;
XMLVM_CHECK_NPE(4)
((nbody_Body*) _r4.o)->fields.nbody_Body.x_ = _r5.d;
XMLVM_SOURCE_POSITION("nbody.java", 84)
XMLVM_CHECK_NPE(4)
_r5.d = ((nbody_Body*) _r4.o)->fields.nbody_Body.y_;
XMLVM_CHECK_NPE(4)
_r7.d = ((nbody_Body*) _r4.o)->fields.nbody_Body.vy_;
_r7.d = _r7.d * _r18.d;
_r5.d = _r5.d + _r7.d;
XMLVM_CHECK_NPE(4)
((nbody_Body*) _r4.o)->fields.nbody_Body.y_ = _r5.d;
XMLVM_SOURCE_POSITION("nbody.java", 85)
XMLVM_CHECK_NPE(4)
_r5.d = ((nbody_Body*) _r4.o)->fields.nbody_Body.z_;
XMLVM_CHECK_NPE(4)
_r7.d = ((nbody_Body*) _r4.o)->fields.nbody_Body.vz_;
_r7.d = _r7.d * _r18.d;
_r5.d = _r5.d + _r7.d;
XMLVM_CHECK_NPE(4)
((nbody_Body*) _r4.o)->fields.nbody_Body.z_ = _r5.d;
_r3.i = _r3.i + 1;
goto label190;
label224:;
XMLVM_SOURCE_POSITION("nbody.java", 87)
XMLVM_EXIT_METHOD()
return;
//XMLVM_END_WRAPPER
}
JAVA_DOUBLE nbody_NBodySystem_energy__(JAVA_OBJECT me)
{
//XMLVM_BEGIN_WRAPPER[nbody_NBodySystem_energy__]
XMLVM_ENTER_METHOD("nbody.NBodySystem", "energy", "?")
XMLVMElem _r0;
XMLVMElem _r1;
XMLVMElem _r2;
XMLVMElem _r3;
XMLVMElem _r4;
XMLVMElem _r5;
XMLVMElem _r6;
XMLVMElem _r7;
XMLVMElem _r8;
XMLVMElem _r9;
XMLVMElem _r10;
XMLVMElem _r11;
XMLVMElem _r12;
XMLVMElem _r13;
XMLVMElem _r14;
XMLVMElem _r15;
XMLVMElem _r16;
XMLVMElem _r17;
XMLVMElem _r18;
_r18.o = me;
XMLVM_SOURCE_POSITION("nbody.java", 91)
_r1.d = 0.0;
_r3.i = 0;
_r15 = _r3;
_r16 = _r1;
_r2 = _r16;
_r1 = _r15;
label9:;
XMLVM_SOURCE_POSITION("nbody.java", 93)
_r0 = _r18;
XMLVM_CHECK_NPE(0)
_r0.o = ((nbody_NBodySystem*) _r0.o)->fields.nbody_NBodySystem.bodies_;
_r4 = _r0;
_r4.i = XMLVMArray_count(((org_xmlvm_runtime_XMLVMArray*) _r4.o));
if (_r1.i >= _r4.i) goto label108;
XMLVM_SOURCE_POSITION("nbody.java", 94)
_r0 = _r18;
XMLVM_CHECK_NPE(0)
_r0.o = ((nbody_NBodySystem*) _r0.o)->fields.nbody_NBodySystem.bodies_;
_r4 = _r0;
XMLVM_CHECK_NPE(4)
XMLVM_CHECK_ARRAY_BOUNDS(_r4.o, _r1.i);
_r4.o = ((JAVA_ARRAY_OBJECT*) (((org_xmlvm_runtime_XMLVMArray*) _r4.o)->fields.org_xmlvm_runtime_XMLVMArray.array_))[_r1.i];
XMLVM_SOURCE_POSITION("nbody.java", 95)
_r5.d = 0.5;
XMLVM_CHECK_NPE(4)
_r7.d = ((nbody_Body*) _r4.o)->fields.nbody_Body.mass_;
_r5.d = _r5.d * _r7.d;
XMLVM_CHECK_NPE(4)
_r7.d = ((nbody_Body*) _r4.o)->fields.nbody_Body.vx_;
XMLVM_CHECK_NPE(4)
_r9.d = ((nbody_Body*) _r4.o)->fields.nbody_Body.vx_;
_r7.d = _r7.d * _r9.d;
XMLVM_CHECK_NPE(4)
_r9.d = ((nbody_Body*) _r4.o)->fields.nbody_Body.vy_;
XMLVM_CHECK_NPE(4)
_r11.d = ((nbody_Body*) _r4.o)->fields.nbody_Body.vy_;
_r9.d = _r9.d * _r11.d;
_r7.d = _r7.d + _r9.d;
XMLVM_CHECK_NPE(4)
_r9.d = ((nbody_Body*) _r4.o)->fields.nbody_Body.vz_;
XMLVM_CHECK_NPE(4)
_r11.d = ((nbody_Body*) _r4.o)->fields.nbody_Body.vz_;
_r9.d = _r9.d * _r11.d;
_r7.d = _r7.d + _r9.d;
_r5.d = _r5.d * _r7.d;
_r2.d = _r2.d + _r5.d;
_r5.i = _r1.i + 1;
_r15 = _r5;
_r5 = _r2;
_r2 = _r15;
label53:;
XMLVM_SOURCE_POSITION("nbody.java", 100)
_r0 = _r18;
XMLVM_CHECK_NPE(0)
_r0.o = ((nbody_NBodySystem*) _r0.o)->fields.nbody_NBodySystem.bodies_;
_r3 = _r0;
_r3.i = XMLVMArray_count(((org_xmlvm_runtime_XMLVMArray*) _r3.o));
if (_r2.i >= _r3.i) goto label104;
XMLVM_SOURCE_POSITION("nbody.java", 101)
_r0 = _r18;
XMLVM_CHECK_NPE(0)
_r0.o = ((nbody_NBodySystem*) _r0.o)->fields.nbody_NBodySystem.bodies_;
_r3 = _r0;
XMLVM_CHECK_NPE(3)
XMLVM_CHECK_ARRAY_BOUNDS(_r3.o, _r2.i);
_r3.o = ((JAVA_ARRAY_OBJECT*) (((org_xmlvm_runtime_XMLVMArray*) _r3.o)->fields.org_xmlvm_runtime_XMLVMArray.array_))[_r2.i];
XMLVM_SOURCE_POSITION("nbody.java", 102)
XMLVM_CHECK_NPE(4)
_r7.d = ((nbody_Body*) _r4.o)->fields.nbody_Body.x_;
XMLVM_CHECK_NPE(3)
_r9.d = ((nbody_Body*) _r3.o)->fields.nbody_Body.x_;
_r7.d = _r7.d - _r9.d;
XMLVM_SOURCE_POSITION("nbody.java", 103)
XMLVM_CHECK_NPE(4)
_r9.d = ((nbody_Body*) _r4.o)->fields.nbody_Body.y_;
XMLVM_CHECK_NPE(3)
_r11.d = ((nbody_Body*) _r3.o)->fields.nbody_Body.y_;
_r9.d = _r9.d - _r11.d;
XMLVM_SOURCE_POSITION("nbody.java", 104)
XMLVM_CHECK_NPE(4)
_r11.d = ((nbody_Body*) _r4.o)->fields.nbody_Body.z_;
XMLVM_CHECK_NPE(3)
_r13.d = ((nbody_Body*) _r3.o)->fields.nbody_Body.z_;
_r11.d = _r11.d - _r13.d;
_r7.d = _r7.d * _r7.d;
_r9.d = _r9.d * _r9.d;
_r7.d = _r7.d + _r9.d;
_r9.d = _r11.d * _r11.d;
_r7.d = _r7.d + _r9.d;
XMLVM_SOURCE_POSITION("nbody.java", 106)
_r7.d = java_lang_Math_sqrt___double(_r7.d);
XMLVM_SOURCE_POSITION("nbody.java", 107)
XMLVM_CHECK_NPE(4)
_r9.d = ((nbody_Body*) _r4.o)->fields.nbody_Body.mass_;
XMLVM_CHECK_NPE(3)
_r11.d = ((nbody_Body*) _r3.o)->fields.nbody_Body.mass_;
_r9.d = _r9.d * _r11.d;
_r7.d = _r9.d / _r7.d;
_r5.d = _r5.d - _r7.d;
_r2.i = _r2.i + 1;
goto label53;
label104:;
_r1.i = _r1.i + 1;
_r2 = _r5;
goto label9;
label108:;
XMLVM_SOURCE_POSITION("nbody.java", 110)
XMLVM_EXIT_METHOD()
return _r2.d;
//XMLVM_END_WRAPPER
}