1 /* class: java/lang/Class */
11 #include "java_lang_Class.h"
12 #include "java_lang_reflect_Constructor.h"
13 #include "java_lang_reflect_Field.h"
14 #include "java_lang_reflect_Method.h"
15 #include "java_lang_Throwable.h" /* needed for java_lang_VMClass.h */
16 #include "java_lang_VMClass.h"
19 /* for selecting public members */
20 #define MEMBER_PUBLIC 0
24 * Class: java_lang_VMClass
26 * Signature: (Ljava/lang/String;)Ljava/lang/Class;
28 JNIEXPORT struct java_lang_Class* JNICALL Java_java_lang_VMClass_forName(JNIEnv *env, jclass clazz, struct java_lang_String* s)
34 log_text("Java_java_lang_VMClass_forName called");
35 log_text(javastring_tochar((java_objectheader*)s));
38 /* illegal argument */
41 /* create utf string in which '.' is replaced by '/' */
42 u = javastring_toutf(s, true);
46 /* class was not loaded. raise exception */
49 log_text("Setting class not found exception");
51 native_new_and_init_string(class_java_lang_ClassNotFoundException, s);
56 /*log_text("Returning class");*/
57 use_class_as_object (c);
58 return (java_lang_Class*) c;
62 * Class: java_lang_VMClass
63 * Method: getClassLoader
64 * Signature: ()Ljava/lang/ClassLoader;
66 JNIEXPORT struct java_lang_ClassLoader* JNICALL Java_java_lang_VMClass_getClassLoader (JNIEnv *env , struct java_lang_VMClass* this )
68 init_systemclassloader();
69 return SystemClassLoader;
73 * Class: java_lang_VMClass
74 * Method: getModifiers
77 JNIEXPORT struct java_lang_Class* JNICALL Java_java_lang_VMClass_getComponentType (JNIEnv *env , struct java_lang_VMClass* this )
79 classinfo *thisclass = (classinfo*) (this->vmData);
81 arraydescriptor *desc;
83 if ((desc = thisclass->vftbl->arraydesc) != NULL) {
84 if (desc->arraytype == ARRAYTYPE_OBJECT)
85 c = desc->componentvftbl->class;
87 c = primitivetype_table[desc->arraytype].class_primitive;
90 use_class_as_object (c);
93 return (java_lang_Class*) c;
98 * Class: java_lang_VMClass
99 * Method: getDeclaredConstructors
100 * Signature: (Z)[Ljava/lang/reflect/Constructor;
102 JNIEXPORT java_objectarray* JNICALL Java_java_lang_VMClass_getDeclaredConstructors (JNIEnv *env , struct java_lang_VMClass* this , s4 public_only)
105 classinfo *c = (classinfo *) (this->vmData);
106 java_objectheader *o;
107 classinfo *class_constructor;
108 java_objectarray *array_constructor; /* result: array of Method-objects */
109 java_objectarray *exceptiontypes; /* the exceptions thrown by the method */
110 methodinfo *m; /* the current method to be represented */
111 int public_methods = 0; /* number of public methods of the class */
114 utf *utf_constr=utf_new_char("<init>");
118 log_text("Java_java_lang_VMClass_getDeclaredConstructors");
119 utf_display(c->name);
121 /* class_showmethods(c);
122 class_showmethods(loader_load(utf_new_char("java/lang/Class")));*/
125 /* determine number of constructors */
126 for (i = 0; i < c->methodscount; i++)
127 if ((((c->methods[i].flags & ACC_PUBLIC)) || (!public_only)) &&
128 (c->methods[i].name==utf_constr)) public_methods++;
130 class_constructor = (classinfo*) loader_load(utf_new_char ("java/lang/reflect/Constructor"));
131 if (!class_constructor)
135 array_constructor = builtin_anewarray(public_methods, class_constructor);
137 if (!array_constructor)
140 for (i = 0; i < c->methodscount; i++)
141 if ((c->methods[i].flags & ACC_PUBLIC) || (!public_only)){
144 if (m->name!=utf_constr) continue;
145 o = native_new_and_init(class_constructor);
146 array_constructor->data[pos++] = o;
148 /* array of exceptions declared to be thrown, information not available !! */
149 exceptiontypes = builtin_anewarray (0, class_java_lang_Class);
151 /* class_showconstantpool(class_constructor);*/
152 /* initialize instance fields */
153 /* ((java_lang_reflect_Constructor*)o)->flag=(m->flags & (ACC_PRIVATE | ACC_PUBLIC | ACC_PROTECTED));*/
154 setfield_critical(class_constructor,o,"clazz", "Ljava/lang/Class;", jobject, (jobject) c /*this*/);
155 setfield_critical(class_constructor,o,"slot", "I", jint, i);
156 /* setfield_critical(class_constructor,o,"flag", "I", jint, (m->flags & (ACC_PRIVATE |
157 ACC_PUBLIC | ACC_PROTECTED))); */
158 setfield_critical(class_constructor,o,"exceptionTypes", "[Ljava/lang/Class;", jobject, (jobject) exceptiontypes);
159 setfield_critical(class_constructor,o,"parameterTypes", "[Ljava/lang/Class;", jobject, (jobject) get_parametertypes(m));
162 log_text("leaving Java_java_lang_VMClass_getDeclaredConstructors");
163 return array_constructor;
168 /* panic("Java_java_lang_Class_getConstructors0 called");
174 * Class: java_lang_VMClass
175 * Method: getDeclaredClasses
176 * Signature: (Z)[Ljava/lang/Class;
178 JNIEXPORT java_objectarray* JNICALL Java_java_lang_VMClass_getDeclaredClasses (JNIEnv *env , struct java_lang_VMClass* this , s4 publicOnly)
180 #warning fix the public only case
181 classinfo *c = (classinfo *) (this->vmData);
182 int pos = 0; /* current declared class */
183 int declaredclasscount = 0; /* number of declared classes */
184 java_objectarray *result; /* array of declared classes */
185 int notPublicOnly=!publicOnly;
194 /*printf("PublicOnly: %d\n",publicOnly);*/
195 if (!Java_java_lang_VMClass_isPrimitive(env, c) && (c->name->text[0]!='[')) {
196 /* determine number of declared classes */
197 for (i = 0; i < c->innerclasscount; i++) {
198 if ( (c->innerclass[i].outer_class == c) && (notPublicOnly || (c->innerclass[i].flags & ACC_PUBLIC)))
199 /* outer class is this class */
200 declaredclasscount++;
204 /*class_showmethods(c); */
206 result = builtin_anewarray(declaredclasscount, class_java_lang_Class);
208 for (i = 0; i < c->innerclasscount; i++) {
210 classinfo *inner = c->innerclass[i].inner_class;
211 classinfo *outer = c->innerclass[i].outer_class;
214 if ( (outer == c) && (notPublicOnly || (inner->flags & ACC_PUBLIC))) {
215 /* outer class is this class, store innerclass in array */
216 use_class_as_object (inner);
217 result->data[pos++] = (java_objectheader *) inner;
225 * Class: java/lang/Class
226 * Method: getDeclaringClass
227 * Signature: ()Ljava/lang/Class;
229 JNIEXPORT struct java_lang_Class* JNICALL Java_java_lang_VMClass_getDeclaringClass ( JNIEnv *env , struct java_lang_VMClass* this)
232 classinfo *c = (classinfo *) (this->vmData);
233 log_text("Java_java_lang_VMClass_getDeclaringClass");
235 if (this && this->vmData && !Java_java_lang_VMClass_isPrimitive(env, this) && (c->name->text[0]!='[')) {
238 if (c->innerclasscount == 0) /* no innerclasses exist */
241 for (i = 0; i < c->innerclasscount; i++) {
243 classinfo *inner = c->innerclass[i].inner_class;
244 classinfo *outer = c->innerclass[i].outer_class;
247 /* innerclass is this class */
248 use_class_as_object (outer);
249 return (java_lang_Class*) outer;
254 /* return NULL for arrayclasses and primitive classes */
259 * Class: java/lang/Class
261 * Signature: (Ljava/lang/String;I)Ljava/lang/reflect/Field;
263 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)
265 classinfo *c, *fieldtype;
266 fieldinfo *f; /* the field to be represented */
267 java_lang_reflect_Field *o; /* result: field-object */
268 utf *desc; /* the fielddescriptor */
271 /* create Field object */
272 c = (classinfo*) loader_load(utf_new_char ("java/lang/reflect/Field"));
273 o = (java_lang_reflect_Field*) native_new_and_init(c);
275 /* get fieldinfo entry */
276 idx = class_findfield_index_approx((classinfo*) (this->vmData), javastring_toutf(name, false));
278 exceptionptr = native_new_and_init(class_java_lang_NoSuchFieldException);
281 f= &(((struct classinfo*)(this->vmData))->fields[idx]);
284 if ( public_only && !(f->flags & ACC_PUBLIC))
286 /* field is not public and public only had been requested*/
287 exceptionptr = native_new_and_init(class_java_lang_NoSuchFieldException);
291 desc = f->descriptor;
292 fieldtype = class_from_descriptor(desc->text,utf_end(desc),NULL,true);
293 if (!fieldtype) return NULL;
295 /* initialize instance fields */
296 setfield_critical(c,o,"declaringClass", "Ljava/lang/Class;", jobject, (jobject) (this->vmData) /*this*/);
297 /* ((java_lang_reflect_Field*)(o))->flag=f->flags;*/
298 /* save type in slot-field for faster processing */
299 /* setfield_critical(c,o,"flag", "I", jint, (jint) f->flags); */
300 setfield_critical(c,o,"slot", "I", jint, (jint) idx);
301 setfield_critical(c,o,"name", "Ljava/lang/String;", jstring, (jstring) name);
302 /*setfield_critical(c,o,"type", "Ljava/lang/Class;", jclass, fieldtype);*/
312 * Class: java_lang_VMClass
313 * Method: getDeclaredFields
314 * Signature: (Z)[Ljava/lang/reflect/Field;
316 JNIEXPORT java_objectarray* JNICALL Java_java_lang_VMClass_getDeclaredFields (JNIEnv *env , struct java_lang_VMClass* this , s4 public_only)
318 classinfo *c = (classinfo *) (this->vmData);
319 classinfo *class_field;
320 java_objectarray *array_field; /* result: array of field-objects */
321 int public_fields = 0; /* number of elements in field-array */
325 /* determine number of fields */
326 for (i = 0; i < c->fieldscount; i++)
327 if ((c->fields[i].flags & ACC_PUBLIC) || (!public_only)) public_fields++;
329 class_field = loader_load(utf_new_char("java/lang/reflect/Field"));
334 /* create array of fields */
335 array_field = builtin_anewarray(public_fields, class_field);
337 /* creation of array failed */
341 /* get the fields and store in the array */
342 for (i = 0; i < c->fieldscount; i++)
343 if ( (c->fields[i].flags & ACC_PUBLIC) || (!public_only))
344 array_field->data[pos++] = (java_objectheader*) Java_java_lang_VMClass_getField0
347 (java_lang_String*) javastring_new(c->fields[i].name),
353 * Class: java/lang/Class
354 * Method: getInterfaces
355 * Signature: ()[Ljava/lang/Class;
357 JNIEXPORT java_objectarray* JNICALL Java_java_lang_VMClass_getInterfaces ( JNIEnv *env , struct java_lang_VMClass* this)
359 classinfo *c = (classinfo*) (this->vmData);
361 java_objectarray *a = builtin_anewarray (c->interfacescount, class_java_lang_Class);
363 for (i=0; i<c->interfacescount; i++) {
364 use_class_as_object (c->interfaces[i]);
366 a->data[i] = (java_objectheader*) c->interfaces[i];
373 * Class: java/lang/Class
375 * Signature: (Ljava/lang/String;[Ljava/lang/Class;I)Ljava/lang/reflect/Method;
377 JNIEXPORT struct java_lang_reflect_Method* JNICALL Java_java_lang_VMClass_getMethod0 ( JNIEnv *env , struct java_lang_Class*
378 this, struct java_lang_String* name, java_objectarray* types, s4 which)
381 classinfo *clazz = (classinfo *) this;
382 java_lang_reflect_Method* o; /* result: Method-object */
383 java_objectarray *exceptiontypes; /* the exceptions thrown by the method */
384 methodinfo *m; /* the method to be represented */
386 c = (classinfo*) loader_load(utf_new_char ("java/lang/reflect/Method"));
387 o = (java_lang_reflect_Method*) native_new_and_init(c);
389 /* find the method */
390 m = class_resolvemethod_approx (
392 javastring_toutf(name, false),
393 create_methodsig(types,0)
396 if (!m || (which==MEMBER_PUBLIC && !(m->flags & ACC_PUBLIC)))
398 /* no apropriate method was found */
399 exceptionptr = native_new_and_init (class_java_lang_NoSuchMethodException);
403 /* array of exceptions declared to be thrown, information not available !! */
404 exceptiontypes = builtin_anewarray (0, class_java_lang_Class);
406 /* initialize instance fields */
407 setfield_critical(c,o,"clazz", "Ljava/lang/Class;", jobject, (jobject) clazz /*this*/);
408 setfield_critical(c,o,"parameterTypes", "[Ljava/lang/Class;", jobject, (jobject) types);
409 setfield_critical(c,o,"exceptionTypes", "[Ljava/lang/Class;", jobject, (jobject) exceptiontypes);
410 setfield_critical(c,o,"name", "Ljava/lang/String;", jstring, javastring_new(m->name));
411 setfield_critical(c,o,"modifiers", "I", jint, m->flags);
412 setfield_critical(c,o,"slot", "I", jint, 0);
413 setfield_critical(c,o,"returnType", "Ljava/lang/Class;", jclass, get_returntype(m));
419 * Class: java_lang_VMClass
420 * Method: getDeclaredMethods
421 * Signature: (Z)[Ljava/lang/reflect/Method;
423 JNIEXPORT java_objectarray* JNICALL Java_java_lang_VMClass_getDeclaredMethods (JNIEnv *env , struct java_lang_VMClass* this , s4 public_only)
425 classinfo *c = (classinfo *) this->vmData;
426 java_objectheader *o;
427 classinfo *class_method;
428 java_objectarray *array_method; /* result: array of Method-objects */
429 java_objectarray *exceptiontypes; /* the exceptions thrown by the method */
430 methodinfo *m; /* the current method to be represented */
431 int public_methods = 0; /* number of public methods of the class */
434 utf *utf_constr=utf_new_char("<init>");
435 utf *utf_clinit=utf_new_char("<clinit>");
438 class_method = (classinfo*) loader_load(utf_new_char ("java/lang/reflect/Method"));
442 /* JOWENN: array classes do not declare methods according to mauve test. It should be considered, if
443 we should return to my old clone method overriding instead of declaring it as a member function */
444 if (Java_java_lang_VMClass_isArray(env,this)) {
445 return builtin_anewarray(0, class_method);
449 /* determine number of methods */
450 for (i = 0; i < c->methodscount; i++)
451 if ((((c->methods[i].flags & ACC_PUBLIC)) || (!public_only)) &&
453 ((c->methods[i].name==utf_constr) ||
454 (c->methods[i].name==utf_clinit) )
458 class_showmethods(class_method);
463 array_method = builtin_anewarray(public_methods, class_method);
468 for (i = 0; i < c->methodscount; i++)
469 if (((c->methods[i].flags & ACC_PUBLIC) || (!public_only)) &&
471 ((c->methods[i].name==utf_constr) ||
472 (c->methods[i].name==utf_clinit) )
476 o = native_new_and_init(class_method);
477 array_method->data[pos++] = o;
479 /* array of exceptions declared to be thrown, information not available !! */
480 exceptiontypes = builtin_anewarray (0, class_java_lang_Class);
483 /* initialize instance fields */
484 /* ((java_lang_reflect_Method*)o)->flag=(m->flags &
485 (ACC_PUBLIC | ACC_PRIVATE | ACC_PROTECTED | ACC_ABSTRACT | ACC_STATIC | ACC_FINAL |
486 ACC_SYNCHRONIZED | ACC_NATIVE | ACC_STRICT)
488 setfield_critical(class_method,o,"declaringClass", "Ljava/lang/Class;", jobject, (jobject) c /*this*/);
489 setfield_critical(class_method,o,"name", "Ljava/lang/String;", jstring, javastring_new(m->name));
490 /* setfield_critical(class_method,o,"flag", "I", jint, (m->flags &
491 (ACC_PUBLIC | ACC_PRIVATE | ACC_PROTECTED | ACC_ABSTRACT | ACC_STATIC | ACC_FINAL |
492 ACC_SYNCHRONIZED | ACC_NATIVE | ACC_STRICT)));*/
493 setfield_critical(class_method,o,"slot", "I", jint, i);
494 /* setfield_critical(class_method,o,"returnType", "Ljava/lang/Class;", jclass, get_returntype(m));
495 setfield_critical(class_method,o,"exceptionTypes", "[Ljava/lang/Class;", jobject, (jobject) exceptiontypes);
496 setfield_critical(class_method,o,"parameterTypes", "[Ljava/lang/Class;", jobject, (jobject) get_parametertypes(m));*/
503 * Class: java/lang/Class
504 * Method: getModifiers
507 JNIEXPORT s4 JNICALL Java_java_lang_VMClass_getModifiers ( JNIEnv *env , struct java_lang_VMClass* this)
509 classinfo *c = (classinfo *) (this->vmData);
514 * Class: java/lang/Class
516 * Signature: ()Ljava/lang/String;
518 JNIEXPORT struct java_lang_String* JNICALL Java_java_lang_VMClass_getName ( JNIEnv *env , struct java_lang_VMClass* this) {
520 classinfo *c = (classinfo*) (this->vmData);
521 java_lang_String *s = (java_lang_String*) javastring_new(c->name);
524 /* return string where '/' is replaced by '.' */
525 for (i=0; i<s->value->header.size; i++) {
526 if (s->value->data[i] == '/') s->value->data[i] = '.';
534 * Class: java/lang/VMClass
535 * Method: getBeautifiedName
536 * Signature: (Ljava/lang/Class;)Ljava/lang/String;
538 JNIEXPORT struct java_lang_String* JNICALL Java_java_lang_VMClass_getBeautifiedName(JNIEnv *env, jclass clazz, struct java_lang_Class* par1)
541 classinfo *c = (classinfo*) (par1);
543 char *utf__ptr = c->name->text; /* current position in utf-text */
544 char **utf_ptr = &utf__ptr;
545 char *desc_end = utf_end(c->name); /* points behind utf string */
550 if (runverbose) log_text("Java_java_lang_VMClass_getName");
553 while ( *utf_ptr != desc_end ) {
554 if (utf_nextu2(utf_ptr)=='[') dimCnt++;
557 utf__ptr=(*utf_ptr)-1;
560 if (((*utf_ptr)+1)==desc_end) {
561 for (i=0;i<PRIMITIVETYPE_COUNT;i++) {
562 if (primitivetype_table[i].typesig==(*utf__ptr)) {
563 len=dimCnt*2+strlen(primitivetype_table[i].name);
564 str=MNEW(char,len+1);
565 strcpy(str,primitivetype_table[i].name);
571 len=dimCnt+strlen(c->name->text)-2;
572 str=MNEW(char,len+1);
573 strncpy(str,++utf__ptr,len-2*dimCnt);
578 for (i=len-1;i>=dimCnt;i=i-2) {
582 s=(java_lang_String*)javastring_new(utf_new_char(str));
583 MFREE(str,char,len+1);
587 /* return string where '/' is replaced by '.' */
588 for (i=0; i<s->value->header.size; i++) {
589 if (s->value->data[i] == '/') s->value->data[i] = '.';
598 * Class: java/lang/Class
599 * Method: getProtectionDomain0
600 * Signature: ()Ljava/security/ProtectionDomain;
602 JNIEXPORT struct java_security_ProtectionDomain* JNICALL Java_java_lang_VMClass_getProtectionDomain0 ( JNIEnv *env , struct java_lang_Class* this)
604 log_text("Java_java_lang_VMClass_getProtectionDomain0 called");
609 * Class: java/lang/Class
611 * Signature: ()[Ljava/lang/Object;
613 JNIEXPORT java_objectarray* JNICALL Java_java_lang_VMClass_getSigners ( JNIEnv *env , struct java_lang_Class* this)
615 log_text("Java_java_lang_VMClass_getSigners called");
620 * Class: java/lang/Class
621 * Method: getSuperclass
622 * Signature: ()Ljava/lang/Class;
624 JNIEXPORT struct java_lang_Class* JNICALL Java_java_lang_VMClass_getSuperclass ( JNIEnv *env , struct java_lang_VMClass* this)
626 classinfo *cl= ((classinfo*)this->vmData);
627 classinfo *c=cl -> super;
631 use_class_as_object (c);
632 return (java_lang_Class*) c;
636 * Class: java/lang/Class
640 JNIEXPORT s4 JNICALL Java_java_lang_VMClass_isArray ( JNIEnv *env , struct java_lang_VMClass* this)
642 classinfo *c = (classinfo*) (this->vmData);
643 return c->vftbl->arraydesc != NULL;
647 * Class: java/lang/Class
648 * Method: isAssignableFrom
649 * Signature: (Ljava/lang/Class;)Z
651 JNIEXPORT s4 JNICALL Java_java_lang_VMClass_isAssignableFrom ( JNIEnv *env , struct java_lang_VMClass* this, struct java_lang_Class* sup)
654 log_text("Java_java_lang_VMClass_isAssignableFrom");
658 panic("sup->vmClass is NULL in VMClass.isAssignableFrom");
661 return (*env)->IsAssignableForm(env, (jclass) sup, (jclass) (this->vmData));
665 * Class: java/lang/Class
667 * Signature: (Ljava/lang/Object;)Z
669 JNIEXPORT s4 JNICALL Java_java_lang_VMClass_isInstance ( JNIEnv *env , struct java_lang_VMClass* this, struct java_lang_Object* obj)
671 classinfo *clazz = (classinfo*) (this->vmData);
672 return (*env)->IsInstanceOf(env,(jobject) obj,clazz);
676 * Class: java/lang/Class
677 * Method: isInterface
680 JNIEXPORT s4 JNICALL Java_java_lang_VMClass_isInterface ( JNIEnv *env , struct java_lang_VMClass* this)
682 classinfo *c = (classinfo*) this->vmData;
683 if (c->flags & ACC_INTERFACE) return true;
688 * Class: java/lang/Class
689 * Method: isPrimitive
692 JNIEXPORT s4 JNICALL Java_java_lang_VMClass_isPrimitive ( JNIEnv *env , struct java_lang_VMClass* this)
695 classinfo *c = (classinfo *) this->vmData;
697 /* search table of primitive classes */
698 for (i=0;i<PRIMITIVETYPE_COUNT;i++)
699 if (primitivetype_table[i].class_primitive == c) return true;
706 * Class: java/lang/Class
707 * Method: registerNatives
710 JNIEXPORT void JNICALL Java_java_lang_VMClass_registerNatives ( JNIEnv *env )
716 * Class: java/lang/Class
717 * Method: setProtectionDomain0
718 * Signature: (Ljava/security/ProtectionDomain;)V
720 JNIEXPORT void JNICALL Java_java_lang_VMClass_setProtectionDomain0 ( JNIEnv *env , struct java_lang_Class* this, struct java_security_ProtectionDomain* par1)
723 log_text("Java_java_lang_VMClass_setProtectionDomain0 called");
727 * Class: java/lang/Class
729 * Signature: ([Ljava/lang/Object;)V
731 JNIEXPORT void JNICALL Java_java_lang_VMClass_setSigners ( JNIEnv *env , struct java_lang_Class* this, java_objectarray* par1)
734 log_text("Java_java_lang_VMClass_setSigners called");
743 * Class: java_lang_VMClass
747 JNIEXPORT void JNICALL Java_java_lang_VMClass_initialize (JNIEnv *env , struct java_lang_VMClass* this ){
748 log_text("Java_java_lang_VMClass_initialize");
751 * Class: java_lang_VMClass
752 * Method: loadArrayClass
753 * Signature: (Ljava/lang/String;Ljava/lang/ClassLoader;)Ljava/lang/Class;
755 JNIEXPORT struct java_lang_Class* JNICALL Java_java_lang_VMClass_loadArrayClass (JNIEnv *env , jclass clazz, struct java_lang_String* par1, struct
756 java_lang_ClassLoader* par2) {
757 log_text("Java_java_lang_VMClass_loadArrayClass");
761 * Class: java_lang_VMClass
762 * Method: throwException
763 * Signature: (Ljava/lang/Throwable;)V
765 JNIEXPORT void JNICALL Java_java_lang_VMClass_throwException (JNIEnv *env , jclass clazz, struct java_lang_Throwable* par1) {
766 log_text("Java_java_lang_VMClass_throwException");
770 * Class: java_lang_VMClass
774 JNIEXPORT void JNICALL Java_java_lang_VMClass_step7 (JNIEnv *env , struct java_lang_VMClass* this ) {
775 log_text("Java_java_lang_VMClass_step7");
778 * Class: java_lang_VMClass
782 JNIEXPORT void JNICALL Java_java_lang_VMClass_step8 (JNIEnv *env , struct java_lang_VMClass* this ) {
783 log_text("Java_java_lang_VMClass_step8");
789 * Class: java_lang_VMClass
790 * Method: isInitialized
793 JNIEXPORT s4 JNICALL Java_java_lang_VMClass_isInitialized (JNIEnv *env , struct java_lang_VMClass* this ) {
794 log_text("Java_java_lang_VMClass_isInitialized");
798 * Class: java_lang_VMClass
799 * Method: setInitialized
802 JNIEXPORT void JNICALL Java_java_lang_VMClass_setInitialized (JNIEnv *env , struct java_lang_VMClass* this ) {
803 log_text("Java_java_lang_VMClass_setInitialized");