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