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
This commit is contained in:
Gary Benson
2006-07-28 10:54:11 +00:00
committed by Gary Benson
parent 99460c7e0f
commit 464fc7a199
9 changed files with 414 additions and 209 deletions
+42
View File
@@ -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;
}