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
}
Changes:
- $Id: VMStackWalker.c 3163 2005-09-10 15:09:44Z twisti $
+ $Id: VMStackWalker.c 3189 2005-09-16 11:53:40Z twisti $
*/
/* 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
}
*/
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();
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
}
*/
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;
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
}