18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 *
23 */
24
25 #ifndef SHARE_VM_PRIMS_JNICHECK_HPP
26 #define SHARE_VM_PRIMS_JNICHECK_HPP
27
28 #ifndef KERNEL
29 #include "runtime/thread.hpp"
30 #endif
31
32 extern "C" {
33 // Report a JNI failure caught by -Xcheck:jni. Perform a core dump.
34 // Note: two variations -- one to be called when in VM state (e.g. when
35 // within IN_VM macro), one to be called when in NATIVE state.
36
37 // When in VM state:
38 static void ReportJNIFatalError(JavaThread* thr, const char *msg) {
39 tty->print_cr("FATAL ERROR in native method: %s", msg);
40 thr->print_stack();
41 os::abort(true);
42 }
43 }
44
45 //
46 // Checked JNI routines that are useful for outside of checked JNI
47 //
48
49 class jniCheck : public AllStatic {
50 public:
51 static oop validate_handle(JavaThread* thr, jobject obj);
52 static oop validate_object(JavaThread* thr, jobject obj);
53 static Klass* validate_class(JavaThread* thr, jclass clazz, bool allow_primitive = false);
54 static void validate_class_descriptor(JavaThread* thr, const char* name);
55 static void validate_throwable_klass(JavaThread* thr, Klass* klass);
56 static void validate_call_object(JavaThread* thr, jobject obj, jmethodID method_id);
57 static void validate_call_class(JavaThread* thr, jclass clazz, jmethodID method_id);
58 static Method* validate_jmethod_id(JavaThread* thr, jmethodID method_id);
|
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 *
23 */
24
25 #ifndef SHARE_VM_PRIMS_JNICHECK_HPP
26 #define SHARE_VM_PRIMS_JNICHECK_HPP
27
28 #ifndef KERNEL
29 #include "runtime/thread.hpp"
30 #endif
31
32 extern "C" {
33 // Report a JNI failure caught by -Xcheck:jni. Perform a core dump.
34 // Note: two variations -- one to be called when in VM state (e.g. when
35 // within IN_VM macro), one to be called when in NATIVE state.
36
37 // When in VM state:
38 static inline void ReportJNIFatalError(JavaThread* thr, const char *msg) {
39 tty->print_cr("FATAL ERROR in native method: %s", msg);
40 thr->print_stack();
41 os::abort(true);
42 }
43 }
44
45 //
46 // Checked JNI routines that are useful for outside of checked JNI
47 //
48
49 class jniCheck : public AllStatic {
50 public:
51 static oop validate_handle(JavaThread* thr, jobject obj);
52 static oop validate_object(JavaThread* thr, jobject obj);
53 static Klass* validate_class(JavaThread* thr, jclass clazz, bool allow_primitive = false);
54 static void validate_class_descriptor(JavaThread* thr, const char* name);
55 static void validate_throwable_klass(JavaThread* thr, Klass* klass);
56 static void validate_call_object(JavaThread* thr, jobject obj, jmethodID method_id);
57 static void validate_call_class(JavaThread* thr, jclass clazz, jmethodID method_id);
58 static Method* validate_jmethod_id(JavaThread* thr, jmethodID method_id);
|