+helper_initialize_class(void* beginOfJavaStack,classinfo *c,u1 *ra) {
+ if (!c->initialized) {
+ bool init;
+ {
+ /*struct native_stackframeinfo {
+ void *oldThreadspecificHeadValue;
+ void **addressOfThreadspecificHead;
+ methodinfo *method;
+ void *beginOfJavaStackframe; only used if != 0
+ void *returnToFromNative;
+ }*/
+ /* more or less the same as the above sfi setup is done in the assembler code by the prepare/remove functions*/
+ native_stackframeinfo sfi;
+ sfi.returnToFromNative=ra;
+ sfi.beginOfJavaStackframe=beginOfJavaStack;
+ sfi.method=0; /*internal*/
+ sfi.addressOfThreadspecificHead=builtin_asm_get_stackframeinfo();
+ sfi.oldThreadspecificHeadValue=*(sfi.addressOfThreadspecificHead);
+ *(sfi.addressOfThreadspecificHead)=&sfi;
+
+ /*printf("calling static initializer (helper_initialize_class), returnaddress=%p for class %s\n",ra,c->name->text);*/
+
+ init=initialize_class(c);
+
+ *(sfi.addressOfThreadspecificHead)=sfi.oldThreadspecificHeadValue;
+ }
+ return init;
+ }
+ return true;
+}
+
+
+