28 #include "classfile/stackMapTable.hpp"
29 #include "classfile/stackMapFrame.hpp"
30 #include "classfile/stackMapTableFormat.hpp"
31 #include "classfile/systemDictionary.hpp"
32 #include "classfile/verifier.hpp"
33 #include "classfile/vmSymbols.hpp"
34 #include "interpreter/bytecodes.hpp"
35 #include "interpreter/bytecodeStream.hpp"
36 #include "memory/oopFactory.hpp"
37 #include "memory/resourceArea.hpp"
38 #include "oops/instanceKlass.hpp"
39 #include "oops/oop.inline.hpp"
40 #include "oops/typeArrayOop.hpp"
41 #include "prims/jvm.h"
42 #include "runtime/fieldDescriptor.hpp"
43 #include "runtime/handles.inline.hpp"
44 #include "runtime/interfaceSupport.hpp"
45 #include "runtime/javaCalls.hpp"
46 #include "runtime/orderAccess.inline.hpp"
47 #include "runtime/os.hpp"
48 #ifdef TARGET_ARCH_x86
49 # include "bytes_x86.hpp"
50 #endif
51 #ifdef TARGET_ARCH_sparc
52 # include "bytes_sparc.hpp"
53 #endif
54 #ifdef TARGET_ARCH_zero
55 # include "bytes_zero.hpp"
56 #endif
57 #ifdef TARGET_ARCH_arm
58 # include "bytes_arm.hpp"
59 #endif
60 #ifdef TARGET_ARCH_ppc
61 # include "bytes_ppc.hpp"
62 #endif
63
64 #define NOFAILOVER_MAJOR_VERSION 51
65 #define NONZERO_PADDING_BYTES_IN_SWITCH_MAJOR_VERSION 51
66 #define STATIC_METHOD_IN_INTERFACE_MAJOR_VERSION 52
67
68 // Access to external entry for VerifyClassCodes - old byte code verifier
69
70 extern "C" {
71 typedef jboolean (*verify_byte_codes_fn_t)(JNIEnv *, jclass, char *, jint);
72 typedef jboolean (*verify_byte_codes_fn_new_t)(JNIEnv *, jclass, char *, jint, jint);
73 }
74
75 static void* volatile _verify_byte_codes_fn = NULL;
76
77 static volatile jint _is_new_verify_byte_codes_fn = (jint) true;
78
79 static void* verify_byte_codes_fn() {
80 if (_verify_byte_codes_fn == NULL) {
81 void *lib_handle = os::native_java_library();
82 void *func = os::dll_lookup(lib_handle, "VerifyClassCodesForMajorVersion");
|
28 #include "classfile/stackMapTable.hpp"
29 #include "classfile/stackMapFrame.hpp"
30 #include "classfile/stackMapTableFormat.hpp"
31 #include "classfile/systemDictionary.hpp"
32 #include "classfile/verifier.hpp"
33 #include "classfile/vmSymbols.hpp"
34 #include "interpreter/bytecodes.hpp"
35 #include "interpreter/bytecodeStream.hpp"
36 #include "memory/oopFactory.hpp"
37 #include "memory/resourceArea.hpp"
38 #include "oops/instanceKlass.hpp"
39 #include "oops/oop.inline.hpp"
40 #include "oops/typeArrayOop.hpp"
41 #include "prims/jvm.h"
42 #include "runtime/fieldDescriptor.hpp"
43 #include "runtime/handles.inline.hpp"
44 #include "runtime/interfaceSupport.hpp"
45 #include "runtime/javaCalls.hpp"
46 #include "runtime/orderAccess.inline.hpp"
47 #include "runtime/os.hpp"
48 #include "utilities/bytes.hpp"
49
50 #define NOFAILOVER_MAJOR_VERSION 51
51 #define NONZERO_PADDING_BYTES_IN_SWITCH_MAJOR_VERSION 51
52 #define STATIC_METHOD_IN_INTERFACE_MAJOR_VERSION 52
53
54 // Access to external entry for VerifyClassCodes - old byte code verifier
55
56 extern "C" {
57 typedef jboolean (*verify_byte_codes_fn_t)(JNIEnv *, jclass, char *, jint);
58 typedef jboolean (*verify_byte_codes_fn_new_t)(JNIEnv *, jclass, char *, jint, jint);
59 }
60
61 static void* volatile _verify_byte_codes_fn = NULL;
62
63 static volatile jint _is_new_verify_byte_codes_fn = (jint) true;
64
65 static void* verify_byte_codes_fn() {
66 if (_verify_byte_codes_fn == NULL) {
67 void *lib_handle = os::native_java_library();
68 void *func = os::dll_lookup(lib_handle, "VerifyClassCodesForMajorVersion");
|