1 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
2 * This source file is part of SableVM. *
3 * *
4 * See the file "LICENSE" for the copyright information and for *
5 * the terms and conditions for copying, distribution and *
6 * modification of this source file. *
7 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
8
9 /* m4svm_file_name */
10
11 /*
12 ----------------------------------------------------------------------
13 m4svm_create_link_and_initialize_class
14 ----------------------------------------------------------------------
15 */
16
17 void
m4_dnl()18 m4_dnl ()
19 {
20 m4svm_define_begin v = ":], [:m4svm_create_link_and_initialize_class:])";
21
22 /* Create[:,:] link[:,:] and initialize class: $1 */
23 if (_svmm_create_class
24 (env, vm->class_loading.boot_loader.class_loader_info,
25 "$1", vm->class_loading.boot_loader.classes.$2) != JNI_OK)
26 {
27 _svmf_printf (env, stderr,
28 "*** Fatal error: Unable to create essential class $1.\n");
29 return JNI_ERR;
30 }
31
32 if (_svmf_link_class
33 (env, vm->class_loading.boot_loader.classes.$2) != JNI_OK)
34 {
35 _svmf_printf (env, stderr,
36 "*** Fatal error: Unable to link essential class $1.\n");
37 return JNI_ERR;
38 }
39
40 if (_svmf_special_initialization
41 (env, vm->class_loading.boot_loader.classes.$2) != JNI_OK)
42 {
43 _svmf_printf (env, stderr,
44 "*** Fatal error: Unable to initialize essential class $1.\n");
45 return JNI_ERR;
46 }
47 m4svm_define_end v = ":])";
48 }
49
50 /*
51 ----------------------------------------------------------------------
52 m4svm_create_and_link_array
53 ----------------------------------------------------------------------
54 */
55
56 void
m4_dnl()57 m4_dnl ()
58 {
59 m4svm_define_begin v = ":], [:m4svm_create_and_link_array:])";
60
61 /* Create and link array: $1 */
62 if (_svmm_create_array
63 (env, vm->class_loading.boot_loader.class_loader_info,
64 "$1", vm->class_loading.boot_loader.classes.$2) != JNI_OK)
65 {
66 return JNI_ERR;
67 }
68
69 if (_svmf_link_array
70 (env, vm->class_loading.boot_loader.classes.$2) != JNI_OK)
71 {
72 return JNI_ERR;
73 }
74 m4svm_define_end v = ":])";
75 }
76
77 /*
78 ----------------------------------------------------------------------
79 m4svm_find_method
80 ----------------------------------------------------------------------
81 */
82
83 void
m4_dnl()84 m4_dnl ()
85 {
86 m4svm_define_begin v = ":], [:m4svm_find_method:])";
87
88 /* Find method: $3.$1$2 */
89 vm->class_loading.boot_loader.methods.$3_$4 =
90 _svmf_resolve_method (vm->class_loading.boot_loader.classes.$3,
91 "$1", "$2");
92
93 if (vm->class_loading.boot_loader.methods.$3_$4 == NULL)
94 {
95 _svmf_printf (env, stderr,
96 "*** Fatal error: Unable to find essential method $1 in $3 class.\n");
97 _svmf_error_NoSuchMethodError (env);
98 return JNI_ERR;
99 }
100 m4svm_define_end v = ":])";
101 }
102
103 /*
104 ----------------------------------------------------------------------
105 m4svm_find_field
106 ----------------------------------------------------------------------
107 */
108
109 void
m4_dnl()110 m4_dnl ()
111 {
112 m4svm_define_begin v = ":], [:m4svm_find_field:])";
113
114 /* Find field: $3.($2)$1 */
115 vm->class_loading.boot_loader.fields.$3_$4 =
116 _svmf_resolve_field (vm->class_loading.boot_loader.classes.$3,
117 "$1", "$2");
118
119 if (vm->class_loading.boot_loader.fields.$3_$4 == NULL)
120 {
121 _svmf_printf (env, stderr,
122 "*** Fatal error: Unable to find essential field $1 in $3 class.\n");
123 _svmf_error_NoSuchFieldError (env);
124 return JNI_ERR;
125 }
126 m4svm_define_end v = ":])";
127 }
128
129 /*
130 ----------------------------------------------------------------------
131 m4svm_instantiate_and_init_primitive_type
132 ----------------------------------------------------------------------
133 */
134
135 void
m4_dnl()136 m4_dnl ()
137 {
138 m4svm_define_begin v = ":], [:m4svm_instantiate_and_init_primitive_type:])";
139
140 /* instantiate and init the $2 class instance */
141 {
142 jobject obj;
143
144 if (_svmm_new_native_global (env, obj) != JNI_OK)
145 {
146 return JNI_ERR;
147 }
148
149 if (_svmm_new_object_instance
150 (env, vm->class_loading.boot_loader.classes.jlclass, *obj) != JNI_OK)
151 {
152 _svmm_free_native_global (env, obj);
153 return JNI_ERR;
154 }
155
156 if (_svmm_invoke_nonvirtual_jlclass_init_primitive (env, obj, '$1') !=
157 JNI_OK)
158 {
159 _svmm_free_native_global (env, obj);
160 return JNI_ERR;
161 }
162
163 vm->class_loading.boot_loader.instances.$2_type = obj;
164 }
165 m4svm_define_end v = ":])";
166 }
167
168 /*
169 ----------------------------------------------------------------------
170 m4svm_instantiate_and_init_error
171 ----------------------------------------------------------------------
172 */
173
174 void
m4_dnl()175 m4_dnl ()
176 {
177 m4svm_define_begin v = ":], [:m4svm_instantiate_and_init_error:])";
178
179 /* instantiate and init the default $1 instance */
180 {
181 jobject error;
182
183 if (_svmm_new_native_global (env, error) != JNI_OK)
184 {
185 return JNI_ERR;
186 }
187
188 if (_svmm_new_object_instance
189 (env, vm->class_loading.boot_loader.classes.$1, *error) != JNI_OK)
190 {
191 _svmm_free_native_global (env, error);
192 return JNI_ERR;
193 }
194
195 if (_svmm_invoke_nonvirtual_$1_init (env, error, NULL) != JNI_OK)
196 {
197 _svmm_free_native_global (env, error);
198 return JNI_ERR;
199 }
200
201 vm->class_loading.boot_loader.instances.default_$1 = error;
202 }
203 m4svm_define_end v = ":])";
204 }
205
206 /* m4svm_on(0)m4_dnl */
207
208 /*
209 ----------------------------------------------------------------------
210 _svmf_bootstrap
211 ----------------------------------------------------------------------
212 */
213
214 svm_static jint
_svmf_bootstrap(_svmt_JNIEnv * env)215 _svmf_bootstrap (_svmt_JNIEnv *env)
216 {
217 _svmt_JavaVM *vm = env->vm;
218
219 if (_svmf_bootcl_internal_split_bootcl (env) != JNI_OK)
220 return JNI_ERR;
221
222 /* We must create the following classes and array first. This will
223 allow us to create java/lang/Class instances.
224
225 Initialization is done in a special way. Initialization checks
226 that there is no <clinit> method. This is a requirement SableVM
227 imposes on classes internally created.
228
229 Rationale: Initialization can possibly cause the execution of an
230 arbitrary amount of bytecode in an unrestricted number of
231 classes. At bootstrapping time, though, SableVM is not yet ready
232 to run arbitrary code.
233
234 If you really need to use static initializers in such classes,
235 simply put your static initializers in static inner classes;
236 you'll achieve equivalent semantics while also complying with
237 SableVM's "no <clinit>" requirement. *[::]/
238 m4svm_off()
239
240 m4svm_create_link_and_initialize_class(java/lang/Object, jlobject)
241 m4svm_create_link_and_initialize_class(java/io/Serializable, jiserializable)
242 m4svm_create_link_and_initialize_class(java/lang/Cloneable, jlcloneable)
243 m4svm_create_and_link_array([B, byte_array)
244 m4svm_create_link_and_initialize_class(java/lang/VMClass, jlvmclass)
245 m4svm_create_link_and_initialize_class(java/lang/Class, jlclass)
246
247 m4svm_on(0)m4_dnl */
248
249 /* find java/lang/Class constructor */
250
251 vm->class_loading.boot_loader.methods.jlclass_init =
252 _svmf_resolve_method (vm->class_loading.boot_loader.classes.jlclass,
253 "<init>",
254 "(Ljava/lang/Object;Ljava/security/ProtectionDomain;)V");
255
256 if (vm->class_loading.boot_loader.methods.jlclass_init == NULL)
257 {
258 _svmf_error_NoSuchMethodError (env);
259 return JNI_ERR;
260 }
261
262 /* Now, we're ready to create "java/lang/Class" instances.
263
264 IMPORTANT: Usually, this is automatically done by
265 _svmf_create_class and _svmf_create_array, so you should not call
266 _svmf_new_class. In this particular case, though,
267 "java/lang/Class" was't yet created, so _svmf_create_class and
268 _svmf_create_array were not able to invoke _svmf_new_class; so we
269 do it now. */
270
271 /*
272 The constructor of java.lang.Class should look like this:
273
274 private Class(byte[] vmData)
275 {
276 this.vmData = vmData;
277 }
278
279 In bytecode:
280
281 0 aload_0
282 1 invokespecial <Method java.lang.Object()>
283 4 aload_0
284 5 aload_1
285 6 putfield <Field byte[] vmData>
286 9 return
287
288
289 *** Update for Classpath 0.06 ************************************
290
291 With Classpath 0.06 the constructor of java.lang.Class looks like:
292
293 Class(RawData vmData)
294 {
295 this.vmClass = new VMClass(vmData);
296 this.vmData = vmData;
297 }
298
299 Ideally, it should look like:
300
301 Class(VMClass vmClass)
302 {
303 this.vmClass = vmClass;
304 }
305
306 We are still in transition towards the VM{Classes} interface.
307
308 Note also that RawData still correspond to a Java byte[]. In
309 other words the runtime type of RawData is byte[] although its
310 compile type is RawData. It is still used the same way as before.
311
312 ******************************************************************
313
314 */
315
316 if (_svmf_new_class
317 (env, _svmf_cast_type_class
318 (vm->class_loading.boot_loader.classes.jlobject)) != JNI_OK)
319 {
320 return JNI_ERR;
321 }
322
323 if (_svmf_new_class
324 (env, _svmf_cast_type_class
325 (vm->class_loading.boot_loader.classes.jiserializable)) != JNI_OK)
326 {
327 return JNI_ERR;
328 }
329
330 if (_svmf_new_class
331 (env, _svmf_cast_type_class
332 (vm->class_loading.boot_loader.classes.jlcloneable)) != JNI_OK)
333 {
334 return JNI_ERR;
335 }
336
337 if (_svmf_new_class
338 (env, _svmf_cast_type_array
339 (vm->class_loading.boot_loader.classes.byte_array)) != JNI_OK)
340 {
341 return JNI_ERR;
342 }
343
344 if (_svmf_new_class
345 (env, _svmf_cast_type_class
346 (vm->class_loading.boot_loader.classes.jlvmclass)) != JNI_OK)
347 {
348 return JNI_ERR;
349 }
350
351 if (_svmf_new_class
352 (env, _svmf_cast_type_class
353 (vm->class_loading.boot_loader.classes.jlclass)) != JNI_OK)
354 {
355 return JNI_ERR;
356 }
357
358 /* create, link, and intialize various classes and arrays *[::]/
359 m4svm_off()
360
361 m4svm_create_link_and_initialize_class(java/lang/StackTraceElement, jlstacktraceelement)
362 m4svm_create_link_and_initialize_class(java/lang/StringCreator, stringcreator)
363 m4svm_create_link_and_initialize_class(java/lang/VirtualMachine, virtualmachine)
364 m4svm_create_link_and_initialize_class(java/lang/reflect/Constructor, jlrconstructor)
365 m4svm_create_link_and_initialize_class(java/lang/reflect/Field, jlrfield)
366 m4svm_create_link_and_initialize_class(java/lang/reflect/InvocationTargetException, jlrinvocationtargetexception)
367 m4svm_create_link_and_initialize_class(java/lang/reflect/Method, jlrmethod)
368 m4svm_create_link_and_initialize_class(java/nio/ByteBuffer$vm, niobytebuffervm)
369
370 m4svm_create_and_link_array([Ljava/lang/reflect/Field;, jlrfield_array)
371
372 m4svm_create_and_link_array([Z, boolean_array)
373 m4svm_create_and_link_array([S, short_array)
374 m4svm_create_and_link_array([C, char_array)
375 m4svm_create_and_link_array([I, int_array)
376 m4svm_create_and_link_array([J, long_array)
377 m4svm_create_and_link_array([F, float_array)
378 m4svm_create_and_link_array([D, double_array)
379
380 m4svm_create_link_and_initialize_class(java/lang/ArithmeticException, ArithmeticException)
381 m4svm_create_link_and_initialize_class(java/lang/ArrayIndexOutOfBoundsException, ArrayIndexOutOfBoundsException)
382 m4svm_create_link_and_initialize_class(java/lang/ArrayStoreException, ArrayStoreException)
383 m4svm_create_link_and_initialize_class(java/lang/ClassCastException, ClassCastException)
384 m4svm_create_link_and_initialize_class(java/lang/IllegalMonitorStateException, IllegalMonitorStateException)
385 m4svm_create_link_and_initialize_class(java/lang/NegativeArraySizeException, NegativeArraySizeException)
386 m4svm_create_link_and_initialize_class(java/lang/NoSuchFieldException, NoSuchFieldException)
387 m4svm_create_link_and_initialize_class(java/lang/NoSuchMethodException, NoSuchMethodException)
388 m4svm_create_link_and_initialize_class(java/lang/NullPointerException, NullPointerException)
389 m4svm_create_link_and_initialize_class(java/lang/InterruptedException, InterruptedException)
390 m4svm_on(0)
391 #if defined(_SABLEVM_INLINABILITY_TESTING)
392 m4svm_off()
393 m4svm_create_link_and_initialize_class(java/lang/InliningException, InliningException)
394 m4svm_on(0)
395 #endif
396 m4svm_off()
397
398 m4svm_create_link_and_initialize_class(java/lang/AbstractMethodError, AbstractMethodError)
399 m4svm_create_link_and_initialize_class(java/lang/ClassCircularityError, ClassCircularityError)
400 m4svm_create_link_and_initialize_class(java/lang/ClassFormatError, ClassFormatError)
401 m4svm_create_link_and_initialize_class(java/lang/ExceptionInInitializerError, ExceptionInInitializerError)
402 m4svm_create_link_and_initialize_class(java/lang/IncompatibleClassChangeError, IncompatibleClassChangeError)
403 m4svm_create_link_and_initialize_class(java/lang/InternalError, InternalError)
404 m4svm_create_link_and_initialize_class(java/lang/LinkageError, LinkageError)
405 m4svm_create_link_and_initialize_class(java/lang/NoClassDefFoundError, NoClassDefFoundError)
406 m4svm_create_link_and_initialize_class(java/lang/NoSuchFieldError, NoSuchFieldError)
407 m4svm_create_link_and_initialize_class(java/lang/NoSuchMethodError, NoSuchMethodError)
408 m4svm_create_link_and_initialize_class(java/lang/OutOfMemoryError, OutOfMemoryError)
409 m4svm_create_link_and_initialize_class(java/lang/UnsatisfiedLinkError, UnsatisfiedLinkError)
410 m4svm_create_link_and_initialize_class(java/lang/UnsupportedClassVersionError, UnsupportedClassVersionError)
411 m4svm_create_link_and_initialize_class(java/lang/VerifyError, VerifyError)
412
413 m4svm_on(0)m4_dnl */
414
415 /* find some methods *[::]/
416 m4svm_off()
417
418 m4svm_find_method(<init>, (C)V, jlclass, init_primitive)
419 m4svm_find_method(<init>, (Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Z)V, jlstacktraceelement, init)
420 m4svm_find_method(<init>, (Ljava/lang/Throwable;)V, jlrinvocationtargetexception, init)
421 m4svm_find_method(<init>, ([B)V, jlrconstructor, init)
422 m4svm_find_method(<init>, ([B)V, jlrfield, init)
423 m4svm_find_method(<init>, ([B)V, jlrmethod, init)
424 m4svm_find_method(createArray, (Ljava/lang/ClassLoader;Ljava/lang/String;)Ljava/lang/Class;, virtualmachine, createarray)
425 m4svm_find_method(createClass, (Ljava/lang/ClassLoader;Ljava/lang/String;)Ljava/lang/Class;, virtualmachine, createclass)
426 m4svm_find_method(createInternedString, ([B)Ljava/lang/String;, stringcreator, createinternedstring)
427 m4svm_find_method(createRootThread, ([B)Ljava/lang/Thread;, virtualmachine, createrootthread)
428 m4svm_find_method(createString, ([B)Ljava/lang/String;, stringcreator, createstring)
429 m4svm_find_method(createStringFromChars, ([C)Ljava/lang/String;, stringcreator, createstringfromchars)
430 m4svm_find_method(exceptionDescribe, (Ljava/lang/Throwable;)V, virtualmachine, exceptiondescribe)
431 m4svm_find_method(exceptionDescription, (Ljava/lang/Throwable;)Ljava/lang/String;, virtualmachine, exceptiondescription)
432 m4svm_find_method(exceptionTruncatedDescription, (Ljava/lang/Throwable;)Ljava/lang/String;, virtualmachine, exceptiontruncateddescription)
433 m4svm_find_method(getChars, (Ljava/lang/String;)[C, stringcreator, getchars)
434 m4svm_find_method(getLength, (Ljava/lang/String;)I, stringcreator, getlength)
435 m4svm_find_method(getSystemClassLoader, ()[B, virtualmachine, getsystemcl)
436 m4svm_find_method(getUTFChars, (Ljava/lang/String;)[B, stringcreator, getutfchars)
437 m4svm_find_method(getUTFLength, (Ljava/lang/String;)I, stringcreator, getutflength)
438 m4svm_find_method(initialize, (I)V, jlclass, initialize)
439 m4svm_find_method(runThread, ()V, virtualmachine, runthread)
440 m4svm_find_method(vmGetDirectBufferCapacity, (Ljava/nio/ByteBuffer;)J, niobytebuffervm, getcapacity)
441
442 m4svm_on(0)
443 #if SVM_WORD_BIT_COUNT == 32
444 m4svm_off()
445
446 m4svm_find_method(vmGetDirectBufferAddress32, (Ljava/nio/ByteBuffer;)I, niobytebuffervm, getaddress32)
447 m4svm_find_method(vmNewDirectByteBuffer32, (IJ)Ljava/nio/ByteBuffer;, niobytebuffervm, newbuffer32)
448
449 m4svm_on(0)
450 #elif SVM_WORD_BIT_COUNT == 64
451 m4svm_off()
452
453 m4svm_find_method(vmGetDirectBufferAddress64, (Ljava/nio/ByteBuffer;)J, niobytebuffervm, getaddress64)
454 m4svm_find_method(vmNewDirectByteBuffer64, (JJ)Ljava/nio/ByteBuffer;, niobytebuffervm, newbuffer64)
455
456 m4svm_on(0)
457 #endif
458 m4svm_off()
459
460 m4svm_find_method(<init>, (Ljava/lang/String;)V, ArithmeticException, init)
461 m4svm_find_method(<init>, (Ljava/lang/String;)V, ArrayIndexOutOfBoundsException, init)
462 m4svm_find_method(<init>, (Ljava/lang/String;)V, ArrayStoreException, init)
463 m4svm_find_method(<init>, (Ljava/lang/String;)V, ClassCastException, init)
464 m4svm_find_method(<init>, (Ljava/lang/String;)V, IllegalMonitorStateException, init)
465 m4svm_find_method(<init>, (Ljava/lang/String;)V, NegativeArraySizeException, init)
466 m4svm_find_method(<init>, (Ljava/lang/String;)V, NoSuchFieldException, init)
467 m4svm_find_method(<init>, (Ljava/lang/String;)V, NoSuchMethodException, init)
468 m4svm_find_method(<init>, (Ljava/lang/String;)V, NullPointerException, init)
469 m4svm_find_method(<init>, (Ljava/lang/String;)V, InterruptedException, init)
470 m4svm_on(0)
471 #if defined(_SABLEVM_INLINABILITY_TESTING)
472 m4svm_off()
473 m4svm_find_method(<init>, (Ljava/lang/String;)V, InliningException, init)
474 m4svm_on(0)
475 #endif
476 m4svm_off()
477
478 m4svm_find_method(<init>, (Ljava/lang/String;)V, AbstractMethodError, init)
479 m4svm_find_method(<init>, (Ljava/lang/String;)V, ClassCircularityError, init)
480 m4svm_find_method(<init>, (Ljava/lang/String;)V, ClassFormatError, init)
481 m4svm_find_method(<init>, (Ljava/lang/String;)V, ExceptionInInitializerError, init)
482 m4svm_find_method(<init>, (Ljava/lang/String;)V, IncompatibleClassChangeError, init)
483 m4svm_find_method(<init>, (Ljava/lang/String;)V, InternalError, init)
484 m4svm_find_method(<init>, (Ljava/lang/String;)V, LinkageError, init)
485 m4svm_find_method(<init>, (Ljava/lang/String;)V, NoClassDefFoundError, init)
486 m4svm_find_method(<init>, (Ljava/lang/String;)V, NoSuchFieldError, init)
487 m4svm_find_method(<init>, (Ljava/lang/String;)V, NoSuchMethodError, init)
488 m4svm_find_method(<init>, (Ljava/lang/String;)V, OutOfMemoryError, init)
489 m4svm_find_method(<init>, (Ljava/lang/String;)V, UnsatisfiedLinkError, init)
490 m4svm_find_method(<init>, (Ljava/lang/String;)V, UnsupportedClassVersionError, init)
491 m4svm_find_method(<init>, (Ljava/lang/String;)V, VerifyError, init)
492
493 m4svm_on(0)m4_dnl */
494
495 /* find some fields *[::]/
496 m4svm_off()
497
498 m4svm_find_field(vmdata, Ljava/lang/Object;, jlclass, vmdata)
499 m4svm_find_field(vmData, [B, jlrfield, vmdata)
500 m4svm_find_field(vmData, [B, jlrmethod, vmdata)
501 m4svm_find_field(vmData, [B, jlrconstructor, vmdata)
502 m4svm_find_field(next, Ljava/lang/StackTraceElement;, jlstacktraceelement, next)
503 m4svm_find_field(length, I, jlstacktraceelement, length)
504
505 m4svm_on(0)m4_dnl */
506
507 /* create default error and exception instances *[::]/
508 m4svm_off()
509
510 m4svm_instantiate_and_init_primitive_type(Z, boolean)
511 m4svm_instantiate_and_init_primitive_type(B, byte)
512 m4svm_instantiate_and_init_primitive_type(S, short)
513 m4svm_instantiate_and_init_primitive_type(C, char)
514 m4svm_instantiate_and_init_primitive_type(I, int)
515 m4svm_instantiate_and_init_primitive_type(J, long)
516 m4svm_instantiate_and_init_primitive_type(F, float)
517 m4svm_instantiate_and_init_primitive_type(D, double)
518 m4svm_instantiate_and_init_primitive_type(V, void)
519
520 m4svm_instantiate_and_init_error(ArithmeticException)
521 m4svm_instantiate_and_init_error(ArrayIndexOutOfBoundsException)
522 m4svm_instantiate_and_init_error(ArrayStoreException)
523 m4svm_instantiate_and_init_error(ClassCastException)
524 m4svm_instantiate_and_init_error(IllegalMonitorStateException)
525 m4svm_instantiate_and_init_error(NegativeArraySizeException)
526 m4svm_instantiate_and_init_error(NoSuchFieldException)
527 m4svm_instantiate_and_init_error(NoSuchMethodException)
528 m4svm_instantiate_and_init_error(NullPointerException)
529 m4svm_instantiate_and_init_error(InterruptedException)
530 m4svm_on(0)
531 #if defined(_SABLEVM_INLINABILITY_TESTING)
532 m4svm_off()
533 m4svm_instantiate_and_init_error(InliningException)
534 m4svm_on(0)
535 #endif
536 m4svm_off()
537
538 m4svm_instantiate_and_init_error(ExceptionInInitializerError)
539 m4svm_instantiate_and_init_error(AbstractMethodError)
540 m4svm_instantiate_and_init_error(ClassCircularityError)
541 m4svm_instantiate_and_init_error(ClassFormatError)
542 m4svm_instantiate_and_init_error(IncompatibleClassChangeError)
543 m4svm_instantiate_and_init_error(InternalError)
544 m4svm_instantiate_and_init_error(LinkageError)
545 m4svm_instantiate_and_init_error(NoClassDefFoundError)
546 m4svm_instantiate_and_init_error(NoSuchFieldError)
547 m4svm_instantiate_and_init_error(NoSuchMethodError)
548 m4svm_instantiate_and_init_error(OutOfMemoryError)
549 m4svm_instantiate_and_init_error(UnsatisfiedLinkError)
550 m4svm_instantiate_and_init_error(UnsupportedClassVersionError)
551 m4svm_instantiate_and_init_error(VerifyError)
552
553 m4svm_on(0)m4_dnl */
554
555 return JNI_OK;
556 }
557