* Fixed architecture and interpreter defines: who supports what in which
authortwisti <none@none>
Fri, 16 Sep 2005 11:53:40 +0000 (11:53 +0000)
committertwisti <none@none>
Fri, 16 Sep 2005 11:53:40 +0000 (11:53 +0000)
  configuration.

src/native/vm/VMAccessController.c
src/native/vm/VMStackWalker.c

index b127af33ecd47afffeec15199635d4a0cf89bd64..fa89960109ae8f2e55ad9b170b0cfc22c92bdd06 100644 (file)
@@ -28,7 +28,7 @@
 
    Changes: Christian Thalinger
 
-   $Id: VMAccessController.c 3137 2005-08-24 00:11:23Z michi $
+   $Id: VMAccessController.c 3189 2005-09-16 11:53:40Z twisti $
 
 */
 
  * Signature: ()[[Ljava/lang/Object;
  */
 JNIEXPORT java_objectarray* JNICALL Java_java_security_VMAccessController_getStack(JNIEnv *env, jclass clazz) {
-#if defined(__I386__) || defined(__ALPHA__) || defined(__ARM__) || defined (__x86_64__)
+#if defined(__ALPHA__) || defined(__ARM__) || defined(__I386__) || defined(__MIPS__) || defined(__POWERPC__) || defined (__X86_64__)
+       /* these JITs support stacktraces */
+
        return cacao_getStackForVMAccessController();
+
 #else
-       java_objectarray *result;
-       java_objectarray *classes;
-       java_objectarray *methodnames;
+# if defined(ENABLE_INTRP)
+       /* the interpreter supports stacktraces, even if the JIT does not */
+
+       if (opt_intrp) {
+               return cacao_getStackForVMAccessController();
+
+       } else
+# endif
+               {
+                       java_objectarray *result;
+                       java_objectarray *classes;
+                       java_objectarray *methodnames;
 
-       if (!(result = builtin_anewarray(2, arrayclass_java_lang_Object)))
-               return NULL;
+                       if (!(result = builtin_anewarray(2, arrayclass_java_lang_Object)))
+                               return NULL;
 
-       if (!(classes = builtin_anewarray(0, class_java_lang_Class)))
-               return NULL;
+                       if (!(classes = builtin_anewarray(0, class_java_lang_Class)))
+                               return NULL;
 
-       if (!(methodnames = builtin_anewarray(0, class_java_lang_String)))
-               return NULL;
+                       if (!(methodnames = builtin_anewarray(0, class_java_lang_String)))
+                               return NULL;
 
-       result->data[0] = (java_objectheader *) classes;
-       result->data[1] = (java_objectheader *) methodnames;
+                       result->data[0] = (java_objectheader *) classes;
+                       result->data[1] = (java_objectheader *) methodnames;
 
-       return result;
+                       return result;
+               }
 #endif
 }
 
index 7d4bb56fd6c4b3bf2b0087efe7ca6594a68dd522..03583f7ad11e77918785bd697412950ea744065d 100644 (file)
@@ -28,7 +28,7 @@
 
    Changes: 
 
-   $Id: VMStackWalker.c 3163 2005-09-10 15:09:44Z twisti $
+   $Id: VMStackWalker.c 3189 2005-09-16 11:53:40Z twisti $
 
 */
 
@@ -54,10 +54,23 @@ JNIEXPORT java_objectarray* JNICALL Java_gnu_classpath_VMStackWalker_getClassCon
 /*     if (cacao_initializing) */
 /*             return NULL; */
 
-#if !defined(ENABLE_INTRP) && (defined(__ALPHA__) || defined(__ARM__) || defined(__I386__) || defined(__MIPS__) || defined(__POWERPC__) || defined(__X86_64__))
+#if defined(__ALPHA__) || defined(__ARM__) || defined(__I386__) || defined(__MIPS__) || defined(__POWERPC__) || defined(__X86_64__)
+       /* these JITs support stacktraces, and so does the interpreter */
+
        return cacao_createClassContextArray();
+
 #else
-       return builtin_anewarray(0, class_java_lang_Class);
+# if defined(ENABLE_INTRP)
+       /* the interpreter supports stacktraces, even if the JIT does not */
+
+       if (opt_intrp) {
+               return cacao_createClassContextArray();
+
+       } else
+# endif
+               {
+                       return builtin_anewarray(0, class_java_lang_Class);
+               }
 #endif
 }
 
@@ -69,7 +82,9 @@ JNIEXPORT java_objectarray* JNICALL Java_gnu_classpath_VMStackWalker_getClassCon
  */
 JNIEXPORT java_lang_Class* JNICALL Java_gnu_classpath_VMStackWalker_getCallingClass(JNIEnv *env, jclass clazz)
 {
-#if !defined(ENABLE_INTRP) && (defined(__ALPHA__) || defined(__ARM__) || defined(__I386__) || defined(__MIPS__) || defined(__POWERPC__) || defined(__X86_64__))
+#if defined(__ALPHA__) || defined(__ARM__) || defined(__I386__) || defined(__MIPS__) || defined(__POWERPC__) || defined(__X86_64__)
+       /* these JITs support stacktraces, and so does the interpreter */
+
        java_objectarray *oa;
 
        oa = cacao_createClassContextArray();
@@ -78,8 +93,26 @@ JNIEXPORT java_lang_Class* JNICALL Java_gnu_classpath_VMStackWalker_getCallingCl
                return NULL;
 
        return (java_lang_Class *) oa->data[1];
+
 #else
-       return NULL;
+# if defined(ENABLE_INTRP)
+       /* the interpreter supports stacktraces, even if the JIT does not */
+
+       if (opt_intrp) {
+               java_objectarray *oa;
+
+               oa = cacao_createClassContextArray();
+
+               if (oa->header.size < 2)
+                       return NULL;
+
+               return (java_lang_Class *) oa->data[1];
+
+       } else
+# endif
+               {
+                       return NULL;
+               }
 #endif
 }
 
@@ -91,7 +124,9 @@ JNIEXPORT java_lang_Class* JNICALL Java_gnu_classpath_VMStackWalker_getCallingCl
  */
 JNIEXPORT java_lang_ClassLoader* JNICALL Java_gnu_classpath_VMStackWalker_getCallingClassLoader(JNIEnv *env, jclass clazz)
 {
-#if !defined(ENABLE_INTRP) && (defined(__ALPHA__) || defined(__ARM__) || defined(__I386__) || defined(__MIPS__) || defined(__POWERPC__) || defined(__X86_64__))
+#if defined(__ALPHA__) || defined(__ARM__) || defined(__I386__) || defined(__MIPS__) || defined(__POWERPC__) || defined(__X86_64__)
+       /* these JITs support stacktraces, and so does the interpreter */
+
        java_objectarray *oa;
        classinfo        *c;
 
@@ -103,8 +138,29 @@ JNIEXPORT java_lang_ClassLoader* JNICALL Java_gnu_classpath_VMStackWalker_getCal
        c = (classinfo *) oa->data[1];
 
        return (java_lang_ClassLoader *) c->classloader;
+
 #else
-       return NULL;
+# if defined(ENABLE_INTRP)
+       /* the interpreter supports stacktraces, even if the JIT does not */
+
+       if (opt_intrp) {
+               java_objectarray *oa;
+               classinfo        *c;
+
+               oa = cacao_createClassContextArray();
+
+               if (oa->header.size < 2)
+                       return NULL;
+
+               c = (classinfo *) oa->data[1];
+
+               return (java_lang_ClassLoader *) c->classloader;
+
+       } else
+# endif
+               {
+                       return NULL;
+               }
 #endif
 }