equal
deleted
inserted
replaced
286 ReportJNIFatalError(thr, fatal_should_be_nonstatic); |
286 ReportJNIFatalError(thr, fatal_should_be_nonstatic); |
287 |
287 |
288 /* validate the object being passed and then get its class */ |
288 /* validate the object being passed and then get its class */ |
289 ASSERT_OOPS_ALLOWED; |
289 ASSERT_OOPS_ALLOWED; |
290 oop oopObj = jniCheck::validate_object(thr, obj); |
290 oop oopObj = jniCheck::validate_object(thr, obj); |
291 if (!oopObj) { |
291 if (oopObj == NULL) { |
292 ReportJNIFatalError(thr, fatal_null_object); |
292 ReportJNIFatalError(thr, fatal_null_object); |
293 } |
293 } |
294 Klass* k_oop = oopObj->klass(); |
294 Klass* k_oop = oopObj->klass(); |
295 |
295 |
296 if (!jfieldIDWorkaround::is_valid_jfieldID(k_oop, fid)) { |
296 if (!jfieldIDWorkaround::is_valid_jfieldID(k_oop, fid)) { |
316 static inline void |
316 static inline void |
317 checkString(JavaThread* thr, jstring js) |
317 checkString(JavaThread* thr, jstring js) |
318 { |
318 { |
319 ASSERT_OOPS_ALLOWED; |
319 ASSERT_OOPS_ALLOWED; |
320 oop s = jniCheck::validate_object(thr, js); |
320 oop s = jniCheck::validate_object(thr, js); |
321 if (!s || !java_lang_String::is_instance(s)) |
321 if ((s == NULL) || !java_lang_String::is_instance(s)) |
322 ReportJNIFatalError(thr, fatal_non_string); |
322 ReportJNIFatalError(thr, fatal_non_string); |
323 } |
323 } |
324 |
324 |
325 static inline arrayOop |
325 static inline arrayOop |
326 check_is_array(JavaThread* thr, jarray jArray) |
326 check_is_array(JavaThread* thr, jarray jArray) |
459 return moop; |
459 return moop; |
460 } |
460 } |
461 |
461 |
462 |
462 |
463 oop jniCheck::validate_object(JavaThread* thr, jobject obj) { |
463 oop jniCheck::validate_object(JavaThread* thr, jobject obj) { |
464 if (!obj) |
464 if (obj == NULL) return NULL; |
465 return NULL; |
465 ASSERT_OOPS_ALLOWED; |
466 ASSERT_OOPS_ALLOWED; |
466 oop oopObj = jniCheck::validate_handle(thr, obj); |
467 oop oopObj = jniCheck::validate_handle(thr, obj); |
467 if (oopObj == NULL) { |
468 if (!oopObj) { |
468 ReportJNIFatalError(thr, fatal_bad_ref_to_jni); |
469 ReportJNIFatalError(thr, fatal_bad_ref_to_jni); |
469 } |
470 } |
470 return oopObj; |
471 return oopObj; |
|
472 } |
471 } |
473 |
472 |
474 // Warn if a class descriptor is in decorated form; class descriptors |
473 // Warn if a class descriptor is in decorated form; class descriptors |
475 // passed to JNI findClass should not be decorated unless they are |
474 // passed to JNI findClass should not be decorated unless they are |
476 // array descriptors. |
475 // array descriptors. |
490 } |
489 } |
491 |
490 |
492 Klass* jniCheck::validate_class(JavaThread* thr, jclass clazz, bool allow_primitive) { |
491 Klass* jniCheck::validate_class(JavaThread* thr, jclass clazz, bool allow_primitive) { |
493 ASSERT_OOPS_ALLOWED; |
492 ASSERT_OOPS_ALLOWED; |
494 oop mirror = jniCheck::validate_handle(thr, clazz); |
493 oop mirror = jniCheck::validate_handle(thr, clazz); |
495 if (!mirror) { |
494 if (mirror == NULL) { |
496 ReportJNIFatalError(thr, fatal_received_null_class); |
495 ReportJNIFatalError(thr, fatal_received_null_class); |
497 } |
496 } |
498 |
497 |
499 if (mirror->klass() != SystemDictionary::Class_klass()) { |
498 if (mirror->klass() != SystemDictionary::Class_klass()) { |
500 ReportJNIFatalError(thr, fatal_class_not_a_class); |
499 ReportJNIFatalError(thr, fatal_class_not_a_class); |