PR149: Used wrong class loader.
[cacao.git] / src / vm / globals.hpp
1 /* src/vm/globals.hpp - global variables
2
3    Copyright (C) 1996-2011
4    CACAOVM - Verein zur Foerderung der freien virtuellen Maschine CACAO
5
6    This file is part of CACAO.
7
8    This program is free software; you can redistribute it and/or
9    modify it under the terms of the GNU General Public License as
10    published by the Free Software Foundation; either version 2, or (at
11    your option) any later version.
12
13    This program is distributed in the hope that it will be useful, but
14    WITHOUT ANY WARRANTY; without even the implied warranty of
15    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
16    General Public License for more details.
17
18    You should have received a copy of the GNU General Public License
19    along with this program; if not, write to the Free Software
20    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
21    02110-1301, USA.
22
23 */
24
25
26 #ifndef _GLOBALS_HPP
27 #define _GLOBALS_HPP
28
29 #include "config.h"
30
31 #include <stdint.h>
32
33 #include "vm/class.hpp"
34
35
36 // FIXME For now we export them a C symbols.
37 #ifdef __cplusplus
38 extern "C" {
39 #endif
40
41 // Classes.
42
43 /* Important system classes. */
44
45 extern classinfo *class_java_lang_Object;
46 extern classinfo *class_java_lang_Class;
47 extern classinfo *class_java_lang_ClassLoader;
48 extern classinfo *class_java_lang_Cloneable;
49 extern classinfo *class_java_lang_SecurityManager;
50 extern classinfo *class_java_lang_String;
51 extern classinfo *class_java_lang_System;
52 extern classinfo *class_java_lang_Thread;
53 extern classinfo *class_java_lang_ThreadGroup;
54 extern classinfo *class_java_lang_Throwable;
55 extern classinfo *class_java_io_Serializable;
56
57 /* Important system exceptions. */
58
59 extern classinfo *class_java_lang_Exception;
60 extern classinfo *class_java_lang_ClassNotFoundException;
61 extern classinfo *class_java_lang_RuntimeException;
62
63 #if defined(WITH_JAVA_RUNTIME_LIBRARY_GNU_CLASSPATH)
64 extern classinfo *class_java_lang_VMSystem;
65 extern classinfo *class_java_lang_VMThread;
66 extern classinfo *class_java_lang_VMThrowable;
67 #endif
68
69 #if defined(WITH_JAVA_RUNTIME_LIBRARY_OPENJDK)
70 extern classinfo *class_sun_misc_Signal;
71 extern classinfo *class_sun_reflect_MagicAccessorImpl;
72 extern classinfo *class_sun_reflect_MethodAccessorImpl;
73 extern classinfo *class_sun_reflect_ConstructorAccessorImpl;
74 #endif
75
76 #if defined(ENABLE_JAVASE)
77 extern classinfo *class_java_lang_Void;
78 #endif
79
80 extern classinfo *class_java_lang_Boolean;
81 extern classinfo *class_java_lang_Byte;
82 extern classinfo *class_java_lang_Character;
83 extern classinfo *class_java_lang_Short;
84 extern classinfo *class_java_lang_Integer;
85 extern classinfo *class_java_lang_Long;
86 extern classinfo *class_java_lang_Float;
87 extern classinfo *class_java_lang_Double;
88
89 /* some classes which may be used more often */
90
91 #if defined(ENABLE_JAVASE)
92 extern classinfo *class_java_lang_StackTraceElement;
93 extern classinfo *class_java_lang_reflect_Constructor;
94 extern classinfo *class_java_lang_reflect_Field;
95 extern classinfo *class_java_lang_reflect_Method;
96 extern classinfo *class_java_security_PrivilegedAction;
97 extern classinfo *class_java_util_Vector;
98 extern classinfo *class_java_util_HashMap;
99
100 # if defined(WITH_JAVA_RUNTIME_LIBRARY_GNU_CLASSPATH)
101 extern classinfo *class_java_lang_reflect_VMConstructor;
102 extern classinfo *class_java_lang_reflect_VMField;
103 extern classinfo *class_java_lang_reflect_VMMethod;
104 # endif
105
106 extern classinfo *arrayclass_java_lang_Object;
107
108 # if defined(ENABLE_ANNOTATIONS)
109 extern classinfo *class_sun_reflect_ConstantPool;
110 #  if defined(WITH_JAVA_RUNTIME_LIBRARY_GNU_CLASSPATH)
111 extern classinfo *class_sun_reflect_annotation_AnnotationParser;
112 #  endif
113 # endif
114 #endif
115
116
117 /* pseudo classes for the type checker ****************************************/
118
119 /*
120  * pseudo_class_Arraystub
121  *     (extends Object implements Cloneable, java.io.Serializable)
122  *
123  *     If two arrays of incompatible component types are merged,
124  *     the resulting reference has no accessible components.
125  *     The result does, however, implement the interfaces Cloneable
126  *     and java.io.Serializable. This pseudo class is used internally
127  *     to represent such results. (They are *not* considered arrays!)
128  *
129  * pseudo_class_Null
130  *
131  *     This pseudo class is used internally to represent the
132  *     null type.
133  *
134  * pseudo_class_New
135  *
136  *     This pseudo class is used internally to represent the
137  *     the 'uninitialized object' type.
138  */
139
140 extern classinfo *pseudo_class_Arraystub;
141 extern classinfo *pseudo_class_Null;
142 extern classinfo *pseudo_class_New;
143
144 #ifdef __cplusplus
145 }
146 #endif
147
148 #endif // _GLOBALS_HPP
149
150
151 /*
152  * These are local overrides for various environment variables in Emacs.
153  * Please do not remove this and leave it at the end of the file, where
154  * Emacs will automagically detect them.
155  * ---------------------------------------------------------------------
156  * Local variables:
157  * mode: c++
158  * indent-tabs-mode: t
159  * c-basic-offset: 4
160  * tab-width: 4
161  * End:
162  */