1 /* class: java/lang/Class */
12 #include "toolbox/loging.h"
13 #include "toolbox/memory.h"
14 #include "java_lang_Class.h"
15 #include "java_lang_reflect_Constructor.h"
16 #include "java_lang_reflect_Field.h"
17 #include "java_lang_reflect_Method.h"
18 #include "java_lang_Throwable.h" /* needed for java_lang_VMClass.h */
19 #include "java_lang_VMClass.h"
22 /* for selecting public members */
23 #define MEMBER_PUBLIC 0
27 * Class: java_lang_VMClass
29 * Signature: (Ljava/lang/String;)Ljava/lang/Class;
31 JNIEXPORT struct java_lang_Class* JNICALL Java_java_lang_VMClass_forName(JNIEnv *env, jclass clazz, struct java_lang_String* s)
37 log_text("Java_java_lang_VMClass_forName called");
38 log_text(javastring_tochar((java_objectheader*)s));
41 /* illegal argument */
44 /* create utf string in which '.' is replaced by '/' */
45 u = javastring_toutf(s, true);
49 /* class was not loaded. raise exception */
52 log_text("Setting class not found exception");
54 native_new_and_init_string(class_java_lang_ClassNotFoundException, s);
59 /*log_text("Returning class");*/
60 use_class_as_object (c);
61 return (java_lang_Class*) c;
65 * Class: java_lang_VMClass
66 * Method: getClassLoader
67 * Signature: ()Ljava/lang/ClassLoader;
69 JNIEXPORT struct java_lang_ClassLoader* JNICALL Java_java_lang_VMClass_getClassLoader (JNIEnv *env , struct java_lang_VMClass* this )
71 init_systemclassloader();
72 return SystemClassLoader;
76 * Class: java_lang_VMClass
77 * Method: getModifiers
80 JNIEXPORT struct java_lang_Class* JNICALL Java_java_lang_VMClass_getComponentType (JNIEnv *env , struct java_lang_VMClass* this )
82 classinfo *thisclass = (classinfo*) (this->vmData);
84 arraydescriptor *desc;
86 if ((desc = thisclass->vftbl->arraydesc) != NULL) {
87 if (desc->arraytype == ARRAYTYPE_OBJECT)
88 c = desc->componentvftbl->class;
90 c = primitivetype_table[desc->arraytype].class_primitive;
93 use_class_as_object (c);
96 return (java_lang_Class*) c;
101 * Class: java_lang_VMClass
102 * Method: getDeclaredConstructors
103 * Signature: (Z)[Ljava/lang/reflect/Constructor;
105 JNIEXPORT java_objectarray* JNICALL Java_java_lang_VMClass_getDeclaredConstructors (JNIEnv *env , struct java_lang_VMClass* this , s4 public_only)
108 classinfo *c = (classinfo *) (this->vmData);
109 java_objectheader *o;
110 classinfo *class_constructor;
111 java_objectarray *array_constructor; /* result: array of Method-objects */
112 java_objectarray *exceptiontypes; /* the exceptions thrown by the method */
113 methodinfo *m; /* the current method to be represented */
114 int public_methods = 0; /* number of public methods of the class */
117 utf *utf_constr=utf_new_char("<init>");
121 log_text("Java_java_lang_VMClass_getDeclaredConstructors");
122 log_plain_utf(c->name);
124 /* class_showmethods(c);
125 class_showmethods(loader_load(utf_new_char("java/lang/Class")));*/
128 /* determine number of constructors */
129 for (i = 0; i < c->methodscount; i++)
130 if ((((c->methods[i].flags & ACC_PUBLIC)) || (!public_only)) &&
131 (c->methods[i].name==utf_constr)) public_methods++;
133 class_constructor = (classinfo*) loader_load(utf_new_char ("java/lang/reflect/Constructor"));
134 if (!class_constructor)
138 array_constructor = builtin_anewarray(public_methods, class_constructor);
140 if (!array_constructor)
143 for (i = 0; i < c->methodscount; i++)
144 if ((c->methods[i].flags & ACC_PUBLIC) || (!public_only)){
147 if (m->name!=utf_constr) continue;
148 o = native_new_and_init(class_constructor);
149 array_constructor->data[pos++] = o;
151 /* array of exceptions declared to be thrown, information not available !! */
152 exceptiontypes = builtin_anewarray (0, class_java_lang_Class);
154 /* class_showconstantpool(class_constructor);*/
155 /* initialize instance fields */
156 /* ((java_lang_reflect_Constructor*)o)->flag=(m->flags & (ACC_PRIVATE | ACC_PUBLIC | ACC_PROTECTED));*/
157 setfield_critical(class_constructor,o,"clazz", "Ljava/lang/Class;", jobject, (jobject) c /*this*/);
158 setfield_critical(class_constructor,o,"slot", "I", jint, i);
159 /* setfield_critical(class_constructor,o,"flag", "I", jint, (m->flags & (ACC_PRIVATE |
160 ACC_PUBLIC | ACC_PROTECTED))); */
161 setfield_critical(class_constructor,o,"exceptionTypes", "[Ljava/lang/Class;", jobject, (jobject) exceptiontypes);
162 setfield_critical(class_constructor,o,"parameterTypes", "[Ljava/lang/Class;", jobject, (jobject) get_parametertypes(m));
165 log_text("leaving Java_java_lang_VMClass_getDeclaredConstructors");
166 return array_constructor;
171 /* panic("Java_java_lang_Class_getConstructors0 called");
177 * Class: java_lang_VMClass
178 * Method: getDeclaredClasses
179 * Signature: (Z)[Ljava/lang/Class;
181 JNIEXPORT java_objectarray* JNICALL Java_java_lang_VMClass_getDeclaredClasses (JNIEnv *env , struct java_lang_VMClass* this , s4 publicOnly)
183 #warning fix the public only case
184 classinfo *c = (classinfo *) (this->vmData);
185 int pos = 0; /* current declared class */
186 int declaredclasscount = 0; /* number of declared classes */
187 java_objectarray *result; /* array of declared classes */
188 int notPublicOnly=!publicOnly;
197 /*printf("PublicOnly: %d\n",publicOnly);*/
198 if (!Java_java_lang_VMClass_isPrimitive(env, c) && (c->name->text[0]!='[')) {
199 /* determine number of declared classes */
200 for (i = 0; i < c->innerclasscount; i++) {
201 if ( (c->innerclass[i].outer_class == c) && (notPublicOnly || (c->innerclass[i].flags & ACC_PUBLIC)))
202 /* outer class is this class */
203 declaredclasscount++;
207 /*class_showmethods(c); */
209 result = builtin_anewarray(declaredclasscount, class_java_lang_Class);
211 for (i = 0; i < c->innerclasscount; i++) {
213 classinfo *inner = c->innerclass[i].inner_class;
214 classinfo *outer = c->innerclass[i].outer_class;
217 if ( (outer == c) && (notPublicOnly || (inner->flags & ACC_PUBLIC))) {
218 /* outer class is this class, store innerclass in array */
219 use_class_as_object (inner);
220 result->data[pos++] = (java_objectheader *) inner;
228 * Class: java/lang/Class
229 * Method: getDeclaringClass
230 * Signature: ()Ljava/lang/Class;
232 JNIEXPORT struct java_lang_Class* JNICALL Java_java_lang_VMClass_getDeclaringClass ( JNIEnv *env , struct java_lang_VMClass* this)
235 classinfo *c = (classinfo *) (this->vmData);
236 log_text("Java_java_lang_VMClass_getDeclaringClass");
238 if (this && this->vmData && !Java_java_lang_VMClass_isPrimitive(env, this) && (c->name->text[0]!='[')) {
241 if (c->innerclasscount == 0) /* no innerclasses exist */
244 for (i = 0; i < c->innerclasscount; i++) {
246 classinfo *inner = c->innerclass[i].inner_class;
247 classinfo *outer = c->innerclass[i].outer_class;
250 /* innerclass is this class */
251 use_class_as_object (outer);
252 return (java_lang_Class*) outer;
257 /* return NULL for arrayclasses and primitive classes */
262 * Class: java/lang/Class
264 * Signature: (Ljava/lang/String;I)Ljava/lang/reflect/Field;
266 JNIEXPORT struct java_lang_reflect_Field* JNICALL Java_java_lang_VMClass_getField0 ( JNIEnv *env , struct java_lang_VMClass* this, struct java_lang_String* name, s4 public_only)
268 classinfo *c, *fieldtype;
269 fieldinfo *f; /* the field to be represented */
270 java_lang_reflect_Field *o; /* result: field-object */
271 utf *desc; /* the fielddescriptor */
274 /* create Field object */
275 c = (classinfo*) loader_load(utf_new_char ("java/lang/reflect/Field"));
276 o = (java_lang_reflect_Field*) native_new_and_init(c);
278 /* get fieldinfo entry */
279 idx = class_findfield_index_approx((classinfo*) (this->vmData), javastring_toutf(name, false));
281 exceptionptr = native_new_and_init(class_java_lang_NoSuchFieldException);
284 f= &(((struct classinfo*)(this->vmData))->fields[idx]);
287 if ( public_only && !(f->flags & ACC_PUBLIC))
289 /* field is not public and public only had been requested*/
290 exceptionptr = native_new_and_init(class_java_lang_NoSuchFieldException);
294 desc = f->descriptor;
295 fieldtype = class_from_descriptor(desc->text,utf_end(desc),NULL,true);
296 if (!fieldtype) return NULL;
298 /* initialize instance fields */
299 setfield_critical(c,o,"declaringClass", "Ljava/lang/Class;", jobject, (jobject) (this->vmData) /*this*/);
300 /* ((java_lang_reflect_Field*)(o))->flag=f->flags;*/
301 /* save type in slot-field for faster processing */
302 /* setfield_critical(c,o,"flag", "I", jint, (jint) f->flags); */
303 setfield_critical(c,o,"slot", "I", jint, (jint) idx);
304 setfield_critical(c,o,"name", "Ljava/lang/String;", jstring, (jstring) name);
305 /*setfield_critical(c,o,"type", "Ljava/lang/Class;", jclass, fieldtype);*/
315 * Class: java_lang_VMClass
316 * Method: getDeclaredFields
317 * Signature: (Z)[Ljava/lang/reflect/Field;
319 JNIEXPORT java_objectarray* JNICALL Java_java_lang_VMClass_getDeclaredFields (JNIEnv *env , struct java_lang_VMClass* this , s4 public_only)
321 classinfo *c = (classinfo *) (this->vmData);
322 classinfo *class_field;
323 java_objectarray *array_field; /* result: array of field-objects */
324 int public_fields = 0; /* number of elements in field-array */
328 /* determine number of fields */
329 for (i = 0; i < c->fieldscount; i++)
330 if ((c->fields[i].flags & ACC_PUBLIC) || (!public_only)) public_fields++;
332 class_field = loader_load(utf_new_char("java/lang/reflect/Field"));
337 /* create array of fields */
338 array_field = builtin_anewarray(public_fields, class_field);
340 /* creation of array failed */
344 /* get the fields and store in the array */
345 for (i = 0; i < c->fieldscount; i++)
346 if ( (c->fields[i].flags & ACC_PUBLIC) || (!public_only))
347 array_field->data[pos++] = (java_objectheader*) Java_java_lang_VMClass_getField0
350 (java_lang_String*) javastring_new(c->fields[i].name),
356 * Class: java/lang/Class
357 * Method: getInterfaces
358 * Signature: ()[Ljava/lang/Class;
360 JNIEXPORT java_objectarray* JNICALL Java_java_lang_VMClass_getInterfaces ( JNIEnv *env , struct java_lang_VMClass* this)
362 classinfo *c = (classinfo*) (this->vmData);
364 java_objectarray *a = builtin_anewarray (c->interfacescount, class_java_lang_Class);
366 for (i=0; i<c->interfacescount; i++) {
367 use_class_as_object (c->interfaces[i]);
369 a->data[i] = (java_objectheader*) c->interfaces[i];
376 * Class: java/lang/Class
378 * Signature: (Ljava/lang/String;[Ljava/lang/Class;I)Ljava/lang/reflect/Method;
380 JNIEXPORT struct java_lang_reflect_Method* JNICALL Java_java_lang_VMClass_getMethod0 ( JNIEnv *env , struct java_lang_Class*
381 this, struct java_lang_String* name, java_objectarray* types, s4 which)
384 classinfo *clazz = (classinfo *) this;
385 java_lang_reflect_Method* o; /* result: Method-object */
386 java_objectarray *exceptiontypes; /* the exceptions thrown by the method */
387 methodinfo *m; /* the method to be represented */
389 c = (classinfo*) loader_load(utf_new_char ("java/lang/reflect/Method"));
390 o = (java_lang_reflect_Method*) native_new_and_init(c);
392 /* find the method */
393 m = class_resolvemethod_approx (
395 javastring_toutf(name, false),
396 create_methodsig(types,0)
399 if (!m || (which==MEMBER_PUBLIC && !(m->flags & ACC_PUBLIC)))
401 /* no apropriate method was found */
402 exceptionptr = native_new_and_init (class_java_lang_NoSuchMethodException);
406 /* array of exceptions declared to be thrown, information not available !! */
407 exceptiontypes = builtin_anewarray (0, class_java_lang_Class);
409 /* initialize instance fields */
410 setfield_critical(c,o,"clazz", "Ljava/lang/Class;", jobject, (jobject) clazz /*this*/);
411 setfield_critical(c,o,"parameterTypes", "[Ljava/lang/Class;", jobject, (jobject) types);
412 setfield_critical(c,o,"exceptionTypes", "[Ljava/lang/Class;", jobject, (jobject) exceptiontypes);
413 setfield_critical(c,o,"name", "Ljava/lang/String;", jstring, javastring_new(m->name));
414 setfield_critical(c,o,"modifiers", "I", jint, m->flags);
415 setfield_critical(c,o,"slot", "I", jint, 0);
416 setfield_critical(c,o,"returnType", "Ljava/lang/Class;", jclass, get_returntype(m));
422 * Class: java_lang_VMClass
423 * Method: getDeclaredMethods
424 * Signature: (Z)[Ljava/lang/reflect/Method;
426 JNIEXPORT java_objectarray* JNICALL Java_java_lang_VMClass_getDeclaredMethods (JNIEnv *env , struct java_lang_VMClass* this , s4 public_only)
428 classinfo *c = (classinfo *) this->vmData;
429 java_objectheader *o;
430 classinfo *class_method;
431 java_objectarray *array_method; /* result: array of Method-objects */
432 java_objectarray *exceptiontypes; /* the exceptions thrown by the method */
433 methodinfo *m; /* the current method to be represented */
434 int public_methods = 0; /* number of public methods of the class */
437 utf *utf_constr=utf_new_char("<init>");
438 utf *utf_clinit=utf_new_char("<clinit>");
441 class_method = (classinfo*) loader_load(utf_new_char ("java/lang/reflect/Method"));
445 /* JOWENN: array classes do not declare methods according to mauve test. It should be considered, if
446 we should return to my old clone method overriding instead of declaring it as a member function */
447 if (Java_java_lang_VMClass_isArray(env,this)) {
448 return builtin_anewarray(0, class_method);
452 /* determine number of methods */
453 for (i = 0; i < c->methodscount; i++)
454 if ((((c->methods[i].flags & ACC_PUBLIC)) || (!public_only)) &&
456 ((c->methods[i].name==utf_constr) ||
457 (c->methods[i].name==utf_clinit) )
461 class_showmethods(class_method);
466 array_method = builtin_anewarray(public_methods, class_method);
471 for (i = 0; i < c->methodscount; i++)
472 if (((c->methods[i].flags & ACC_PUBLIC) || (!public_only)) &&
474 ((c->methods[i].name==utf_constr) ||
475 (c->methods[i].name==utf_clinit) )
479 o = native_new_and_init(class_method);
480 array_method->data[pos++] = o;
482 /* array of exceptions declared to be thrown, information not available !! */
483 exceptiontypes = builtin_anewarray (0, class_java_lang_Class);
486 /* initialize instance fields */
487 /* ((java_lang_reflect_Method*)o)->flag=(m->flags &
488 (ACC_PUBLIC | ACC_PRIVATE | ACC_PROTECTED | ACC_ABSTRACT | ACC_STATIC | ACC_FINAL |
489 ACC_SYNCHRONIZED | ACC_NATIVE | ACC_STRICT)
491 setfield_critical(class_method,o,"declaringClass", "Ljava/lang/Class;", jobject, (jobject) c /*this*/);
492 setfield_critical(class_method,o,"name", "Ljava/lang/String;", jstring, javastring_new(m->name));
493 /* setfield_critical(class_method,o,"flag", "I", jint, (m->flags &
494 (ACC_PUBLIC | ACC_PRIVATE | ACC_PROTECTED | ACC_ABSTRACT | ACC_STATIC | ACC_FINAL |
495 ACC_SYNCHRONIZED | ACC_NATIVE | ACC_STRICT)));*/
496 setfield_critical(class_method,o,"slot", "I", jint, i);
497 /* setfield_critical(class_method,o,"returnType", "Ljava/lang/Class;", jclass, get_returntype(m));
498 setfield_critical(class_method,o,"exceptionTypes", "[Ljava/lang/Class;", jobject, (jobject) exceptiontypes);
499 setfield_critical(class_method,o,"parameterTypes", "[Ljava/lang/Class;", jobject, (jobject) get_parametertypes(m));*/
506 * Class: java/lang/Class
507 * Method: getModifiers
510 JNIEXPORT s4 JNICALL Java_java_lang_VMClass_getModifiers ( JNIEnv *env , struct java_lang_VMClass* this)
512 classinfo *c = (classinfo *) (this->vmData);
517 * Class: java/lang/Class
519 * Signature: ()Ljava/lang/String;
521 JNIEXPORT struct java_lang_String* JNICALL Java_java_lang_VMClass_getName ( JNIEnv *env , struct java_lang_VMClass* this) {
523 classinfo *c = (classinfo*) (this->vmData);
524 java_lang_String *s = (java_lang_String*) javastring_new(c->name);
527 /* return string where '/' is replaced by '.' */
528 for (i=0; i<s->value->header.size; i++) {
529 if (s->value->data[i] == '/') s->value->data[i] = '.';
537 * Class: java/lang/VMClass
538 * Method: getBeautifiedName
539 * Signature: (Ljava/lang/Class;)Ljava/lang/String;
541 JNIEXPORT struct java_lang_String* JNICALL Java_java_lang_VMClass_getBeautifiedName(JNIEnv *env, jclass clazz, struct java_lang_Class* par1)
544 classinfo *c = (classinfo*) (par1);
546 char *utf__ptr = c->name->text; /* current position in utf-text */
547 char **utf_ptr = &utf__ptr;
548 char *desc_end = utf_end(c->name); /* points behind utf string */
553 if (runverbose) log_text("Java_java_lang_VMClass_getName");
556 while ( *utf_ptr != desc_end ) {
557 if (utf_nextu2(utf_ptr)=='[') dimCnt++;
560 utf__ptr=(*utf_ptr)-1;
563 if (((*utf_ptr)+1)==desc_end) {
564 for (i=0;i<PRIMITIVETYPE_COUNT;i++) {
565 if (primitivetype_table[i].typesig==(*utf__ptr)) {
566 len=dimCnt*2+strlen(primitivetype_table[i].name);
567 str=MNEW(char,len+1);
568 strcpy(str,primitivetype_table[i].name);
574 len=dimCnt+strlen(c->name->text)-2;
575 str=MNEW(char,len+1);
576 strncpy(str,++utf__ptr,len-2*dimCnt);
581 for (i=len-1;i>=dimCnt;i=i-2) {
585 s=(java_lang_String*)javastring_new(utf_new_char(str));
586 MFREE(str,char,len+1);
590 /* return string where '/' is replaced by '.' */
591 for (i=0; i<s->value->header.size; i++) {
592 if (s->value->data[i] == '/') s->value->data[i] = '.';
601 * Class: java/lang/Class
602 * Method: getProtectionDomain0
603 * Signature: ()Ljava/security/ProtectionDomain;
605 JNIEXPORT struct java_security_ProtectionDomain* JNICALL Java_java_lang_VMClass_getProtectionDomain0 ( JNIEnv *env , struct java_lang_Class* this)
607 log_text("Java_java_lang_VMClass_getProtectionDomain0 called");
612 * Class: java/lang/Class
614 * Signature: ()[Ljava/lang/Object;
616 JNIEXPORT java_objectarray* JNICALL Java_java_lang_VMClass_getSigners ( JNIEnv *env , struct java_lang_Class* this)
618 log_text("Java_java_lang_VMClass_getSigners called");
623 * Class: java/lang/Class
624 * Method: getSuperclass
625 * Signature: ()Ljava/lang/Class;
627 JNIEXPORT struct java_lang_Class* JNICALL Java_java_lang_VMClass_getSuperclass ( JNIEnv *env , struct java_lang_VMClass* this)
629 classinfo *cl= ((classinfo*)this->vmData);
630 classinfo *c=cl -> super;
634 use_class_as_object (c);
635 return (java_lang_Class*) c;
639 * Class: java/lang/Class
643 JNIEXPORT s4 JNICALL Java_java_lang_VMClass_isArray ( JNIEnv *env , struct java_lang_VMClass* this)
645 classinfo *c = (classinfo*) (this->vmData);
646 return c->vftbl->arraydesc != NULL;
650 * Class: java/lang/Class
651 * Method: isAssignableFrom
652 * Signature: (Ljava/lang/Class;)Z
654 JNIEXPORT s4 JNICALL Java_java_lang_VMClass_isAssignableFrom ( JNIEnv *env , struct java_lang_VMClass* this, struct java_lang_Class* sup)
657 log_text("Java_java_lang_VMClass_isAssignableFrom");
661 panic("sup->vmClass is NULL in VMClass.isAssignableFrom");
664 return (*env)->IsAssignableForm(env, (jclass) sup, (jclass) (this->vmData));
668 * Class: java/lang/Class
670 * Signature: (Ljava/lang/Object;)Z
672 JNIEXPORT s4 JNICALL Java_java_lang_VMClass_isInstance ( JNIEnv *env , struct java_lang_VMClass* this, struct java_lang_Object* obj)
674 classinfo *clazz = (classinfo*) (this->vmData);
675 return (*env)->IsInstanceOf(env,(jobject) obj,clazz);
679 * Class: java/lang/Class
680 * Method: isInterface
683 JNIEXPORT s4 JNICALL Java_java_lang_VMClass_isInterface ( JNIEnv *env , struct java_lang_VMClass* this)
685 classinfo *c = (classinfo*) this->vmData;
686 if (c->flags & ACC_INTERFACE) return true;
691 * Class: java/lang/Class
692 * Method: isPrimitive
695 JNIEXPORT s4 JNICALL Java_java_lang_VMClass_isPrimitive ( JNIEnv *env , struct java_lang_VMClass* this)
698 classinfo *c = (classinfo *) this->vmData;
700 /* search table of primitive classes */
701 for (i=0;i<PRIMITIVETYPE_COUNT;i++)
702 if (primitivetype_table[i].class_primitive == c) return true;
709 * Class: java/lang/Class
710 * Method: registerNatives
713 JNIEXPORT void JNICALL Java_java_lang_VMClass_registerNatives ( JNIEnv *env )
719 * Class: java/lang/Class
720 * Method: setProtectionDomain0
721 * Signature: (Ljava/security/ProtectionDomain;)V
723 JNIEXPORT void JNICALL Java_java_lang_VMClass_setProtectionDomain0 ( JNIEnv *env , struct java_lang_Class* this, struct java_security_ProtectionDomain* par1)
726 log_text("Java_java_lang_VMClass_setProtectionDomain0 called");
730 * Class: java/lang/Class
732 * Signature: ([Ljava/lang/Object;)V
734 JNIEXPORT void JNICALL Java_java_lang_VMClass_setSigners ( JNIEnv *env , struct java_lang_Class* this, java_objectarray* par1)
737 log_text("Java_java_lang_VMClass_setSigners called");
746 * Class: java_lang_VMClass
750 JNIEXPORT void JNICALL Java_java_lang_VMClass_initialize (JNIEnv *env , struct java_lang_VMClass* this ){
751 log_text("Java_java_lang_VMClass_initialize");
754 * Class: java_lang_VMClass
755 * Method: loadArrayClass
756 * Signature: (Ljava/lang/String;Ljava/lang/ClassLoader;)Ljava/lang/Class;
758 JNIEXPORT struct java_lang_Class* JNICALL Java_java_lang_VMClass_loadArrayClass (JNIEnv *env , jclass clazz, struct java_lang_String* par1, struct
759 java_lang_ClassLoader* par2) {
760 log_text("Java_java_lang_VMClass_loadArrayClass");
764 * Class: java_lang_VMClass
765 * Method: throwException
766 * Signature: (Ljava/lang/Throwable;)V
768 JNIEXPORT void JNICALL Java_java_lang_VMClass_throwException (JNIEnv *env , jclass clazz, struct java_lang_Throwable* par1) {
769 log_text("Java_java_lang_VMClass_throwException");
773 * Class: java_lang_VMClass
777 JNIEXPORT void JNICALL Java_java_lang_VMClass_step7 (JNIEnv *env , struct java_lang_VMClass* this ) {
778 log_text("Java_java_lang_VMClass_step7");
781 * Class: java_lang_VMClass
785 JNIEXPORT void JNICALL Java_java_lang_VMClass_step8 (JNIEnv *env , struct java_lang_VMClass* this ) {
786 log_text("Java_java_lang_VMClass_step8");
792 * Class: java_lang_VMClass
793 * Method: isInitialized
796 JNIEXPORT s4 JNICALL Java_java_lang_VMClass_isInitialized (JNIEnv *env , struct java_lang_VMClass* this ) {
797 log_text("Java_java_lang_VMClass_isInitialized");
801 * Class: java_lang_VMClass
802 * Method: setInitialized
805 JNIEXPORT void JNICALL Java_java_lang_VMClass_setInitialized (JNIEnv *env , struct java_lang_VMClass* this ) {
806 log_text("Java_java_lang_VMClass_setInitialized");