jamvm
view src/symbol.h @ 405:99039a39df1f
Support creating a DirectByteBuffer in OpenJDK from JNI.
2008-08-04 Andrew John Hughes <gnu_andrew@member.fsf.org>
* src/jni.c,
* src/symbol.h:
Support creating a DirectByteBuffer from JNI
under OpenJDK.
2008-08-04 Andrew John Hughes <gnu_andrew@member.fsf.org>
* src/jni.c,
* src/symbol.h:
Support creating a DirectByteBuffer from JNI
under OpenJDK.
| author | andrew |
|---|---|
| date | Tue Aug 05 06:24:55 2008 +0100 (2008-08-05) |
| parents | 3ca4c2fbbd7f |
| children | f5ea446164a8 |
line source
1 /*
2 * Copyright (C) 2008 Robert Lougher <rob@lougher.org.uk>.
3 *
4 * This file is part of JamVM.
5 *
6 * This program is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU General Public License
8 * as published by the Free Software Foundation; either version 2,
9 * or (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
19 */
21 extern char *symbol_values[];
22 #define SYMBOL_NAME_ENUM(name) symbol_##name
23 #define SYMBOL(name) symbol_values[SYMBOL_NAME_ENUM(name)]
25 #define SYMBOLS_DO(action) \
26 /* Method and field names, etc. */\
27 action(I, "I"), \
28 action(J, "J"), \
29 action(Z, "Z"), \
30 action(pd, "pd"), \
31 action(put, "put"), \
32 #ifdef WITH_JAVA_RUNTIME_LIBRARY_CLASSPATH
33 action(cap, "cap"), \
34 #elif WITH_JAVA_RUNTIME_LIBRARY_OPENJDK
35 action(capacity, "capacity"), \
36 #endif
37 action(run, "run"), \
38 action(main, "main"), \
39 action(data, "data"), \
40 action(name, "name"), \
41 action(root, "root"), \
42 action(exit, "exit"), \
43 action(slot, "slot"), \
44 action(queue, "queue"), \
45 action(group, "group"), \
46 action(count, "count"), \
47 action(value, "value"), \
48 action(create, "create"), \
49 action(daemon, "daemon"), \
50 action(thread, "thread"), \
51 action(vmData, "vmData"), \
52 action(vmdata, "vmdata"), \
53 action(offset, "offset"), \
54 action(valueOf, "valueOf"), \
55 action(enqueue, "enqueue"), \
56 action(address, "address"), \
57 action(referent, "referent"), \
58 action(vmThread, "vmThread"), \
59 action(priority, "priority"), \
60 action(threadId, "threadId"), \
61 action(finalize, "finalize"), \
62 action(hashtable, "hashtable"), \
63 action(backtrace, "backtrace"), \
64 action(initCause, "initCause"), \
65 action(loadClass, "loadClass"), \
66 action(addThread, "addThread"), \
67 action(removeThread, "removeThread"), \
68 action(declaringClass, "declaringClass"), \
69 action(printStackTrace, "printStackTrace"), \
70 action(exceptionHandler, "exceptionHandler"), \
71 action(uncaughtException, "uncaughtException"), \
72 action(newLibraryUnloader, "newLibraryUnloader"), \
73 action(contextClassLoader, "contextClassLoader"), \
74 action(getSystemClassLoader, "getSystemClassLoader"), \
75 \
76 /* Constant pool attribute names */\
77 action(Code, "Code"), \
78 action(Signature, "Signature"), \
79 action(Synthetic, "Synthetic"), \
80 action(Exceptions, "Exceptions"), \
81 action(SourceFile, "SourceFile"), \
82 action(InnerClasses, "InnerClasses"), \
83 action(ConstantValue, "ConstantValue"), \
84 action(LineNumberTable, "LineNumberTable"), \
85 action(EnclosingMethod, "EnclosingMethod"), \
86 action(AnnotationDefault, "AnnotationDefault"), \
87 action(RuntimeVisibleAnnotations, "RuntimeVisibleAnnotations"), \
88 action(RuntimeVisibleParameterAnnotations, "RuntimeVisibleParameterAnnotations"), \
89 \
90 /* Primitive type names */\
91 action(int, "int"), \
92 action(void, "void"), \
93 action(byte, "byte"), \
94 action(char, "char"), \
95 action(long, "long"), \
96 action(short, "short"), \
97 action(float, "float"), \
98 action(double, "double"), \
99 action(boolean, "boolean"), \
100 \
101 /* Class and object initialiser names */\
102 action(object_init, "<init>"), \
103 action(class_init, "<clinit>"), \
104 \
105 /* Class names */\
106 action(java_lang_Byte, "java/lang/Byte"), \
107 action(java_lang_Long, "java/lang/Long"), \
108 action(java_lang_Enum, "java/lang/Enum"), \
109 action(java_lang_Short, "java/lang/Short"), \
110 action(java_lang_Float, "java/lang/Float"), \
111 action(java_nio_Buffer, "java/nio/Buffer"), \
112 action(java_lang_Class, "java/lang/Class"), \
113 action(java_lang_Number, "java/lang/Number"), \
114 action(java_lang_Double, "java/lang/Double"), \
115 action(java_lang_Object, "java/lang/Object"), \
116 action(java_lang_String, "java/lang/String"), \
117 action(java_lang_Thread, "java/lang/Thread"), \
118 action(java_lang_System, "java/lang/System"), \
119 action(java_lang_Boolean, "java/lang/Boolean"), \
120 action(java_lang_Integer, "java/lang/Integer"), \
121 action(java_util_HashMap, "java/util/HashMap"), \
122 action(java_lang_VMThread, "java/lang/VMThread"), \
123 action(java_lang_Character, "java/lang/Character"), \
124 action(java_lang_VMRuntime, "java/lang/VMRuntime"), \
125 action(java_lang_Throwable, "java/lang/Throwable"), \
126 action(java_lang_Cloneable, "java/lang/Cloneable"), \
127 action(java_io_Serializable, "java/io/Serializable"), \
128 action(java_lang_VMThrowable, "java/lang/VMThrowable"), \
129 action(java_lang_ThreadGroup, "java/lang/ThreadGroup"), \
130 action(java_lang_ClassLoader, "java/lang/ClassLoader"), \
131 action(java_lang_reflect_Field, "java/lang/reflect/Field"), \
132 action(gnu_classpath_Pointer32, "gnu/classpath/Pointer32"), \
133 action(gnu_classpath_Pointer64, "gnu/classpath/Pointer64"), \
134 action(java_lang_VMClassLoader, "java/lang/VMClassLoader"), \
135 action(java_lang_ref_Reference, "java/lang/ref/Reference"), \
136 action(sun_reflect_annotation_AnnotationInvocationHandler, \
137 "sun/reflect/annotation/AnnotationInvocationHandler"), \
138 action(java_lang_reflect_Method, "java/lang/reflect/Method"), \
139 action(java_lang_StackTraceElement, "java/lang/StackTraceElement"), \
140 action(java_lang_ref_SoftReference, "java/lang/ref/SoftReference"), \
141 action(java_lang_ref_WeakReference, "java/lang/ref/WeakReference"), \
142 action(java_lang_reflect_Constructor, "java/lang/reflect/Constructor"), \
143 action(java_lang_ref_PhantomReference, "java/lang/ref/PhantomReference"), \
144 action(jamvm_java_lang_VMClassLoaderData, "jamvm/java/lang/VMClassLoaderData"), \
145 #ifdef WITH_JAVA_RUNTIME_LIBRARY_CLASSPATH
146 action(java_nio_DirectByteBufferImpl_ReadWrite, "java/nio/DirectByteBufferImpl$ReadWrite"), \
147 #elif WITH_JAVA_RUNTIME_LIBRARY_OPENJDK
148 action(java_nio_DirectByteBuffer, "java/nio/DirectByteBuffer"), \
149 #endif
150 \
151 /* Exception class names */\
152 action(java_lang_Error, "java/lang/Error"), \
153 action(java_lang_LinkageError, "java/lang/LinkageError"), \
154 action(java_lang_InternalError, "java/lang/InternalError"), \
155 action(java_lang_ClassFormatError, "java/lang/ClassFormatError"), \
156 action(java_lang_OutOfMemoryError, "java/lang/OutOfMemoryError"), \
157 action(java_lang_NoSuchFieldError, "java/lang/NoSuchFieldError"), \
158 action(java_lang_NoSuchMethodError, "java/lang/NoSuchMethodError"), \
159 action(java_lang_ClassCastException, "java/lang/ClassCastException"), \
160 action(java_lang_StackOverflowError, "java/lang/StackOverflowError"), \
161 action(java_lang_InstantiationError, "java/lang/InstantiationError"), \
162 action(java_lang_IllegalAccessError, "java/lang/IllegalAccessError"), \
163 action(java_lang_ArithmeticException, "java/lang/ArithmeticException"), \
164 action(java_lang_AbstractMethodError, "java/lang/AbstractMethodError"), \
165 action(java_lang_ArrayStoreException, "java/lang/ArrayStoreException"), \
166 action(java_lang_UnsatisfiedLinkError, "java/lang/UnsatisfiedLinkError"), \
167 action(java_lang_InterruptedException, "java/lang/InterruptedException"), \
168 action(java_lang_NullPointerException, "java/lang/NullPointerException"), \
169 action(java_lang_NoClassDefFoundError, "java/lang/NoClassDefFoundError"), \
170 action(java_lang_IllegalAccessException, "java/lang/IllegalAccessException"), \
171 action(java_lang_ClassNotFoundException, "java/lang/ClassNotFoundException"), \
172 action(java_lang_IllegalArgumentException, "java/lang/IllegalArgumentException"), \
173 action(java_lang_NegativeArraySizeException, "java/lang/NegativeArraySizeException"), \
174 action(java_lang_ExceptionInInitializerError, "java/lang/ExceptionInInitializerError"), \
175 action(java_lang_IllegalThreadStateException, "java/lang/IllegalThreadStateException"), \
176 action(java_lang_IllegalMonitorStateException, "java/lang/IllegalMonitorStateException"), \
177 action(java_lang_IncompatibleClassChangeError, "java/lang/IncompatibleClassChangeError"), \
178 action(java_lang_ArrayIndexOutOfBoundsException, "java/lang/ArrayIndexOutOfBoundsException"), \
179 action(java_lang_StringIndexOutOfBoundsException, "java/lang/StringIndexOutOfBoundsException"), \
180 \
181 /* Array class names */\
182 action(array_C, "[C"), \
183 action(array_java_lang_Class, "[Ljava/lang/Class;"), \
184 action(array_java_lang_String, "[Ljava/lang/String;"), \
185 action(array_java_lang_reflect_Field, "[Ljava/lang/reflect/Field;"), \
186 action(array_java_lang_reflect_Method, "[Ljava/lang/reflect/Method;"), \
187 action(array_java_lang_StackTraceElement, "[Ljava/lang/StackTraceElement;"), \
188 action(array_java_lang_reflect_Constructor, "[Ljava/lang/reflect/Constructor;"), \
189 \
190 /* Field signatures */\
191 action(sig_java_lang_Class, "Ljava/lang/Class;"), \
192 action(sig_java_lang_Object, "Ljava/lang/Object;"), \
193 action(sig_java_lang_String, "Ljava/lang/String;"), \
194 action(sig_java_lang_Thread, "Ljava/lang/Thread;"), \
195 action(sig_java_lang_VMThread, "Ljava/lang/VMThread;"), \
196 action(sig_gnu_classpath_Pointer, "Lgnu/classpath/Pointer;"), \
197 action(sig_java_lang_ThreadGroup, "Ljava/lang/ThreadGroup;"), \
198 action(sig_java_lang_ClassLoader, "Ljava/lang/ClassLoader;"), \
199 action(sig_java_lang_ref_ReferenceQueue, "Ljava/lang/ref/ReferenceQueue;"), \
200 action(sig_java_security_ProtectionDomain, "Ljava/security/ProtectionDomain;"), \
201 action(sig_java_lang_Thread_UncaughtExceptionHandler, "Ljava/lang/Thread$UncaughtExceptionHandler;"), \
202 \
203 /* Method signatures */\
204 action(___V, "()V"), \
205 action(___Z, "()Z"), \
206 action(_I__V, "(I)V"), \
207 action(_J__V, "(J)V"), \
208 action(_java_lang_Thread_java_lang_Throwable__V, \
209 "(Ljava/lang/Thread;Ljava/lang/Throwable;)V"), \
210 action(_java_lang_VMThread_java_lang_String_I_Z__V, \
211 "(Ljava/lang/VMThread;Ljava/lang/String;IZ)V"), \
212 action(_java_lang_Throwable__java_lang_Throwable, \
213 "(Ljava/lang/Throwable;)Ljava/lang/Throwable;"), \
214 #ifdef WITH_JAVA_RUNTIME_LIBRARY_CLASSPATH
215 action(_java_lang_Object_gnu_classpath_Pointer_III__V, \
216 "(Ljava/lang/Object;Lgnu/classpath/Pointer;III)V"), \
217 #elif WITH_JAVA_RUNTIME_LIBRARY_OPENJDK
218 action(_LI__V, "(LI)V"), \
219 #endif
220 action(_java_lang_String__V, "(Ljava/lang/String;)V"), \
221 action(_array_java_lang_String__V, "([Ljava/lang/String;)V"), \
222 action(_java_lang_Throwable__V, "(Ljava/lang/Throwable;)V"), \
223 action(___java_lang_ClassLoader, "()Ljava/lang/ClassLoader;"), \
224 action(_java_lang_Thread_args__void, "(Ljava/lang/Thread;)V"), \
225 action(_java_lang_Class_java_lang_Class_java_lang_String_I__V, \
226 "(Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/String;I)V"), \
227 action(_java_lang_Object_java_lang_Object__java_lang_Object, \
228 "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;"), \
229 #ifdef WITH_JAVA_RUNTIME_LIBRARY_CLASSPATH
230 action(_java_lang_String_I_java_lang_String_java_lang_String_Z__V, \
231 "(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Z)V"), \
232 #elif WITH_JAVA_RUNTIME_LIBRARY_OPENJDK
233 action(_java_lang_String_java_lang_String_java_lang_String_I__V, \
234 "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V"), \
235 #endif
236 action(_java_lang_Class_array_java_lang_Class_array_java_lang_Class_I__V, \
237 "(Ljava/lang/Class;[Ljava/lang/Class;[Ljava/lang/Class;I)V"), \
238 action(_java_lang_String__java_lang_Class, "(Ljava/lang/String;)Ljava/lang/Class;"), \
239 action(_java_lang_Class_array_java_lang_Class_array_java_lang_Class_java_lang_Class_java_lang_String_I__V, \
240 "(Ljava/lang/Class;[Ljava/lang/Class;[Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/String;I)V")
242 #define SYMBOL_ENUM(name, value) SYMBOL_NAME_ENUM(name)
243 enum {
244 SYMBOLS_DO(SYMBOL_ENUM),
245 MAX_SYMBOL_ENUM
246 };
