GNU header update.
[cacao.git] / src / native / vm / VMSecurityManager.c
index 38c19fb2f19d749834de8dd2db5b1677d7cfc88b..ed7a98f3169e867780e2654b17855bd982a9c094 100644 (file)
@@ -1,9 +1,9 @@
-/* nat/SecurityManager.c - java/lang/SecurityManager
+/* native/vm/VMSecurityManager.c - java/lang/VMSecurityManager
 
-   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
-   R. Grafl, A. Krall, C. Kruegel, C. Oates, R. Obermaisser,
-   M. Probst, S. Ring, E. Steiner, C. Thalinger, D. Thuernbeck,
-   P. Tomsich, J. Wenninger
+   Copyright (C) 1996-2005 R. Grafl, A. Krall, C. Kruegel, C. Oates,
+   R. Obermaisser, M. Platter, M. Probst, S. Ring, E. Steiner,
+   C. Thalinger, D. Thuernbeck, P. Tomsich, C. Ullrich, J. Wenninger,
+   Institut f. Computersprachen - TU Wien
 
    This file is part of CACAO.
 
 
    Changes: Joseph Wenninger
 
-   $Id: VMSecurityManager.c 951 2004-03-11 17:30:03Z jowenn $
+   $Id: VMSecurityManager.c 1735 2004-12-07 14:33:27Z twisti $
 
 */
 
 
-#include "jni.h"
-#include "builtin.h"
-#include "native.h"
-#include "tables.h"
-#include "toolbox/loging.h"
-#include "java_lang_ClassLoader.h"
+#include "native/jni.h"
+#include "native/native.h"
+#include "native/include/java_lang_ClassLoader.h"
+#include "toolbox/logging.h"
+#include "vm/builtin.h"
+#include "vm/tables.h"
+#include "vm/jit/stacktrace.h"
+
 
-#ifdef _ALPHA_
 /*
- * Class:     java/lang/SecurityManager
+ * Class:     java/lang/VMSecurityManager
  * Method:    currentClassLoader
  * Signature: ()Ljava/lang/ClassLoader;
  */
 JNIEXPORT java_lang_ClassLoader* JNICALL Java_java_lang_VMSecurityManager_currentClassLoader(JNIEnv *env, jclass clazz)
 {
        log_text("Java_java_lang_VMSecurityManager_currentClassLoader");
-       init_systemclassloader();
 
+       if (cacao_initializing)
+               return NULL;
+
+#if defined(__I386__) || defined(__ALPHA__)
+       return (java_lang_ClassLoader *) cacao_currentClassLoader();
+#else
+/*     return 0; */
+       /* XXX TWISTI: only a quick hack */
+       init_systemclassloader();
        return SystemClassLoader;
-}
 #endif
+}
+
 
-#ifdef _ALPHA_
-/*THIS IS IN ASMPART NOW*/
 /*
- * Class:     java/lang/SecurityManager
+ * Class:     java/lang/VMSecurityManager
  * Method:    getClassContext
  * Signature: ()[Ljava/lang/Class;
  */
 JNIEXPORT java_objectarray* JNICALL Java_java_lang_VMSecurityManager_getClassContext(JNIEnv *env, jclass clazz)
 {
-  log_text("Java_java_lang_VMSecurityManager_getClassContext  called");
-
-  /* XXX should use vftbl directly */
-  return (java_objectarray *) builtin_newarray(0, class_array_of(class_java_lang_Class)->vftbl);
-}
+       log_text("Java_java_lang_VMSecurityManager_getClassContext  called");
+       if (cacao_initializing) return 0;
+#if defined(__I386__) || defined(__ALPHA__)
+       return cacao_createClassContextArray();
+#else
+/*     return 0; */
+
+       /* XXX TWISTI: only a quick hack */
+       return (java_objectarray *) builtin_newarray(0, class_array_of(class_java_lang_Class)->vftbl);
 #endif
+}
 
 java_objectarray* temporaryGetClassContextHelper(methodinfo *m) {
        if (!m) {
@@ -83,7 +96,8 @@ java_objectarray* temporaryGetClassContextHelper(methodinfo *m) {
        if (!(m->class)) log_text("method or block has no class");
        else
        utf_display(m->class->name);
-       printf("\n");  
+       printf("\n");
+       return NULL;
 #if 0
   log_text("temporaryGetClassContextHelper called");
   if (adr==0) log_text("NO REAL METHOD");
@@ -102,15 +116,17 @@ java_objectarray* temporaryGetClassContextHelper(methodinfo *m) {
        printf("saveflt:%ld\n",(long)(*(adr-1)));
   }
   log_text("temporaryGetClassContextHelper leaving");
-  return (java_objectarray *) builtin_newarray(0, class_array_of(class_java_lang_Class)->vftbl);       
+  return (java_objectarray *) builtin_newarray(0, class_array_of(class_java_lang_Class)->vftbl);
 #endif
 }
 
+
 java_objectarray* temporaryGetClassContextHelper2() {
   log_text("temporaryGetClassContextHelper2 called");
   return (java_objectarray *) builtin_newarray(0, class_array_of(class_java_lang_Class)->vftbl);       
 }
 
+
 /*
  * These are local overrides for various environment variables in Emacs.
  * Please do not remove this and leave it at the end of the file, where