inline oop JNIHandles::resolve_non_null(jobject handle) { assert(handle != NULL, "JNI handle should not be null"); oop result = *(oop*)handle; assert(result != NULL, "Invalid value read from jni handle"); assert(result != badJNIHandle, "Pointing to zapped jni handle area"); // Don't let that private _deleted_handle object escape into the wild. assert(result != deleted_handle(), "Used a deleted global handle."); return result; };
inline void JNIHandles::destroy_local(jobject handle) { if (handle != NULL) { *((oop*)handle) = deleted_handle(); // Mark the handle as deleted, allocate will reuse it } }
void JNIHandles::destroy_weak_global(jobject handle) { if (handle != NULL) { assert(!CheckJNICalls || is_weak_global_handle(handle), "Invalid delete of weak global JNI handle"); *((oop*)handle) = deleted_handle(); // Mark the handle as deleted, allocate will reuse it } }