blob: 8fd2875aedcd04c1eb45a4a30643b0678016f9c7 (
plain)
| 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
 | /* 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;
}
 |