/* Copyright (C) 2002 Free Software Foundation This file is part of libgcj. This software is copyrighted work licensed under the terms of the Libgcj License. Please consult the file "LIBGCJ_LICENSE" for details. */ // Written by Tom Tromey <tromey@redhat.com> #include <config.h> #include <gcj/cni.h> #include <jvm.h> #include <java/lang/VMSecurityManager.h> #include <java/lang/SecurityManager.h> #include <java/lang/ClassLoader.h> #include <java/lang/Class.h> #include <gnu/gcj/runtime/StackTrace.h> JArray<jclass> * java::lang::VMSecurityManager::getClassContext () { JArray<jclass> *result = NULL; gnu::gcj::runtime::StackTrace *t = new gnu::gcj::runtime::StackTrace(); if (t) { int maxlen = t->length(); int len = 0; for (int i=0; i<maxlen; i++) { jclass klass = t->classAt(i); if (klass != NULL && klass != &java::lang::VMSecurityManager::class$ && klass != &java::lang::SecurityManager::class$) ++len; } result = (JArray<jclass> *) _Jv_NewObjectArray (len, &java::lang::Class::class$, NULL); len = 0; for (int i=0; i<maxlen; i++) { jclass klass = t->classAt(i); if (klass != NULL && klass != &java::lang::VMSecurityManager::class$ && klass != &java::lang::SecurityManager::class$) elements(result)[len++] = klass; } } return result; }