+java_objectarray *builtin_asm_createclasscontextarray(classinfo **end, classinfo **start)
+{
+#if defined(__GNUC__)
+#warning platform dependend
+#endif
+ java_objectarray *tmpArray;
+ int i;
+ classinfo **current;
+ classinfo *c;
+ size_t size;
+
+ size = (((size_t) start) - ((size_t) end)) / sizeof(classinfo*);
+
+ /*printf("end %p, start %p, size %ld\n",end,start,size);*/
+ if (!class_java_lang_Class)
+ class_java_lang_Class = class_new(utf_new_char("java/lang/Class"));
+
+ if (!class_java_lang_SecurityManager)
+ class_java_lang_SecurityManager =
+ class_new(utf_new_char("java/lang/SecurityManager"));
+
+ if (size > 0) {
+ if (start == class_java_lang_SecurityManager) {
+ size--;
+ start--;
+ }
+ }
+
+ tmpArray =
+ builtin_newarray(size, class_array_of(class_java_lang_Class)->vftbl);
+
+ for(i = 0, current = start; i < size; i++, current--) {
+ c = *current;
+ /* printf("%d\n",i);
+ utf_display(c->name);*/
+ use_class_as_object(c);
+ tmpArray->data[i] = (java_objectheader *) c;
+ }
+
+ return tmpArray;
+}
+
+
+java_lang_ClassLoader *builtin_asm_getclassloader(classinfo **end, classinfo **start)
+{
+#if defined(__GNUC__)
+#warning platform dependend
+#endif
+ int i;
+ classinfo **current;
+ classinfo *c;
+ classinfo *privilegedAction;
+ size_t size;
+
+ size = (((size_t) start) - ((size_t) end)) / sizeof(classinfo*);
+
+ /* log_text("builtin_asm_getclassloader");
+ printf("end %p, start %p, size %ld\n",end,start,size);*/
+
+ if (!class_java_lang_SecurityManager)
+ class_java_lang_SecurityManager =
+ class_new(utf_new_char("java/lang/SecurityManager"));
+
+ if (size > 0) {
+ if (start == class_java_lang_SecurityManager) {
+ size--;
+ start--;
+ }
+ }
+
+ privilegedAction=class_new(utf_new_char("java/security/PrivilegedAction"));
+
+ for(i = 0, current = start; i < size; i++, current--) {
+ c = *current;
+
+ if (c == privilegedAction)
+ return NULL;
+
+ if (c->classloader)
+ return (java_lang_ClassLoader *) c->classloader;
+ }
+
+ return NULL;
+
+ /*
+ log_text("Java_java_lang_VMSecurityManager_currentClassLoader");
+ init_systemclassloader();
+
+ return SystemClassLoader;*/
+}
+
+