3adf259767e9361bd397ed660ee6dc55b7949baa
[cacao.git] / src / vm / globals.hpp
1 /* src/vm/globals.hpp - global variables
2
3    Copyright (C) 2008
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 #endif
73
74 #if defined(ENABLE_JAVASE)
75 extern classinfo *class_java_lang_Void;
76 #endif
77
78 extern classinfo *class_java_lang_Boolean;
79 extern classinfo *class_java_lang_Byte;
80 extern classinfo *class_java_lang_Character;
81 extern classinfo *class_java_lang_Short;
82 extern classinfo *class_java_lang_Integer;
83 extern classinfo *class_java_lang_Long;
84 extern classinfo *class_java_lang_Float;
85 extern classinfo *class_java_lang_Double;
86
87 /* some classes which may be used more often */
88
89 #if defined(ENABLE_JAVASE)
90 extern classinfo *class_java_lang_StackTraceElement;
91 extern classinfo *class_java_lang_reflect_Constructor;
92 extern classinfo *class_java_lang_reflect_Field;
93 extern classinfo *class_java_lang_reflect_Method;
94 extern classinfo *class_java_security_PrivilegedAction;
95 extern classinfo *class_java_util_Vector;
96 extern classinfo *class_java_util_HashMap;
97
98 # if defined(WITH_JAVA_RUNTIME_LIBRARY_GNU_CLASSPATH)
99 extern classinfo *class_java_lang_reflect_VMConstructor;
100 extern classinfo *class_java_lang_reflect_VMField;
101 extern classinfo *class_java_lang_reflect_VMMethod;
102 # endif
103
104 extern classinfo *arrayclass_java_lang_Object;
105
106 # if defined(ENABLE_ANNOTATIONS)
107 extern classinfo *class_sun_reflect_ConstantPool;
108 #  if defined(WITH_JAVA_RUNTIME_LIBRARY_GNU_CLASSPATH)
109 extern classinfo *class_sun_reflect_annotation_AnnotationParser;
110 #  endif
111 # endif
112 #endif
113
114
115 /* pseudo classes for the type checker ****************************************/
116
117 /*
118  * pseudo_class_Arraystub
119  *     (extends Object implements Cloneable, java.io.Serializable)
120  *
121  *     If two arrays of incompatible component types are merged,
122  *     the resulting reference has no accessible components.
123  *     The result does, however, implement the interfaces Cloneable
124  *     and java.io.Serializable. This pseudo class is used internally
125  *     to represent such results. (They are *not* considered arrays!)
126  *
127  * pseudo_class_Null
128  *
129  *     This pseudo class is used internally to represent the
130  *     null type.
131  *
132  * pseudo_class_New
133  *
134  *     This pseudo class is used internally to represent the
135  *     the 'uninitialized object' type.
136  */
137
138 extern classinfo *pseudo_class_Arraystub;
139 extern classinfo *pseudo_class_Null;
140 extern classinfo *pseudo_class_New;
141
142 #ifdef __cplusplus
143 }
144 #endif
145
146 #endif // _GLOBALS_HPP
147
148
149 /*
150  * These are local overrides for various environment variables in Emacs.
151  * Please do not remove this and leave it at the end of the file, where
152  * Emacs will automagically detect them.
153  * ---------------------------------------------------------------------
154  * Local variables:
155  * mode: c++
156  * indent-tabs-mode: t
157  * c-basic-offset: 4
158  * tab-width: 4
159  * End:
160  */