diff options
author | Gary Benson <gbenson@redhat.com> | 2006-07-28 10:54:11 +0000 |
---|---|---|
committer | Gary Benson <gary@gcc.gnu.org> | 2006-07-28 10:54:11 +0000 |
commit | 464fc7a19978df2b22cf8683279cd1f14a161a6e (patch) | |
tree | 330a292f4d8ffc6685638990777d68888da955c8 /libjava/stacktrace.cc | |
parent | 99460c7e0f5b0e6dbeb5cf5aa4fb32b0c0350454 (diff) | |
download | gcc-464fc7a19978df2b22cf8683279cd1f14a161a6e.tar.gz |
re PR libgcj/13604 (AccessController unfinished)
2006-07-28 Gary Benson <gbenson@redhat.com>
Casey Marshall <csm@gnu.org>
PR libgcj/13604:
* include/java-stack.h (GetClassMethodStack): Declare.
* stacktrace.cc (GetClassMethodStack): New method.
* java/security/AccessController.java: Removed.
* java/security/VMAccessController.java: New file.
* java/security/natVMAccessController.cc: Likewise.
* Makefile.am (nat_source_files): Added the above.
* sources.am, Makefile.in: Rebuilt.
Co-Authored-By: Casey Marshall <csm@gnu.org>
From-SVN: r115793
Diffstat (limited to 'libjava/stacktrace.cc')
-rw-r--r-- | libjava/stacktrace.cc | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/libjava/stacktrace.cc b/libjava/stacktrace.cc index ba971ddc13e..843c5124e7e 100644 --- a/libjava/stacktrace.cc +++ b/libjava/stacktrace.cc @@ -534,3 +534,45 @@ _Jv_StackTrace::GetFirstNonSystemClassLoader () return NULL; } + +JArray<jobjectArray> * +_Jv_StackTrace::GetClassMethodStack (_Jv_StackTrace *trace) +{ + jint length = 0; + + UpdateNCodeMap(); + for (int i = 0; i < trace->length; i++) + { + _Jv_StackFrame *frame = &trace->frames[i]; + FillInFrameInfo (frame); + + if (frame->klass && frame->meth) + length++; + } + + jclass array_class = _Jv_GetArrayClass (&::java::lang::Object::class$, NULL); + JArray<jobjectArray> *result = + (JArray<jobjectArray> *) _Jv_NewObjectArray (2, array_class, NULL); + JArray<jclass> *classes = (JArray<jclass> *) + _Jv_NewObjectArray (length, &::java::lang::Class::class$, NULL); + JArray<jstring> *methods = (JArray<jstring> *) + _Jv_NewObjectArray (length, &::java::lang::String::class$, NULL); + jclass *c = elements (classes); + jstring *m = elements (methods); + + for (int i = 0, j = 0; i < trace->length; i++) + { + _Jv_StackFrame *frame = &trace->frames[i]; + if (!frame->klass || !frame->meth) + continue; + c[j] = frame->klass; + m[j] = JvNewStringUTF (frame->meth->name->chars()); + j++; + } + + jobjectArray *elems = elements (result); + elems[0] = (jobjectArray) classes; + elems[1] = (jobjectArray) methods; + + return result; +} |