3335
3336
3337 JVM_ENTRY(jstring, JVM_GetSystemPackage(JNIEnv *env, jstring name))
3338 JVMWrapper("JVM_GetSystemPackage");
3339 ResourceMark rm(THREAD);
3340 JvmtiVMObjectAllocEventCollector oam;
3341 char* str = java_lang_String::as_utf8_string(JNIHandles::resolve_non_null(name));
3342 oop result = ClassLoader::get_system_package(str, CHECK_NULL);
3343 return (jstring) JNIHandles::make_local(result);
3344 JVM_END
3345
3346
3347 JVM_ENTRY(jobjectArray, JVM_GetSystemPackages(JNIEnv *env))
3348 JVMWrapper("JVM_GetSystemPackages");
3349 JvmtiVMObjectAllocEventCollector oam;
3350 objArrayOop result = ClassLoader::get_system_packages(CHECK_NULL);
3351 return (jobjectArray) JNIHandles::make_local(result);
3352 JVM_END
3353
3354
3355 // ObjectInputStream ///////////////////////////////////////////////////////////////
3356
3357 bool force_verify_field_access(Klass* current_class, Klass* field_class, AccessFlags access, bool classloader_only) {
3358 if (current_class == NULL) {
3359 return true;
3360 }
3361 if ((current_class == field_class) || access.is_public()) {
3362 return true;
3363 }
3364
3365 if (access.is_protected()) {
3366 // See if current_class is a subclass of field_class
3367 if (current_class->is_subclass_of(field_class)) {
3368 return true;
3369 }
3370 }
3371
3372 return (!access.is_private() && InstanceKlass::cast(current_class)->is_same_class_package(field_class));
3373 }
3374
|
3335
3336
3337 JVM_ENTRY(jstring, JVM_GetSystemPackage(JNIEnv *env, jstring name))
3338 JVMWrapper("JVM_GetSystemPackage");
3339 ResourceMark rm(THREAD);
3340 JvmtiVMObjectAllocEventCollector oam;
3341 char* str = java_lang_String::as_utf8_string(JNIHandles::resolve_non_null(name));
3342 oop result = ClassLoader::get_system_package(str, CHECK_NULL);
3343 return (jstring) JNIHandles::make_local(result);
3344 JVM_END
3345
3346
3347 JVM_ENTRY(jobjectArray, JVM_GetSystemPackages(JNIEnv *env))
3348 JVMWrapper("JVM_GetSystemPackages");
3349 JvmtiVMObjectAllocEventCollector oam;
3350 objArrayOop result = ClassLoader::get_system_packages(CHECK_NULL);
3351 return (jobjectArray) JNIHandles::make_local(result);
3352 JVM_END
3353
3354
3355 // java.lang.ref.Reference ///////////////////////////////////////////////////////////////
3356
3357
3358 JVM_ENTRY(jobject, JVM_GetAndClearReferencePendingList(JNIEnv* env))
3359 JVMWrapper("JVM_GetAndClearReferencePendingList");
3360
3361 MonitorLockerEx ml(Heap_lock);
3362 oop ref = Universe::reference_pending_list();
3363 if (ref != NULL) {
3364 Universe::set_reference_pending_list(NULL);
3365 }
3366 return JNIHandles::make_local(env, ref);
3367 JVM_END
3368
3369 JVM_ENTRY(jboolean, JVM_CheckReferencePendingList(JNIEnv* env, jboolean await))
3370 JVMWrapper("JVM_CheckReferencePendingList");
3371 MonitorLockerEx ml(Heap_lock);
3372 if (Universe::reference_pending_list() != NULL) {
3373 return true;
3374 } else if (await) {
3375 do {
3376 ml.wait();
3377 } while (Universe::reference_pending_list() == NULL);
3378 return true;
3379 } else {
3380 return false;
3381 }
3382 JVM_END
3383
3384
3385 // ObjectInputStream ///////////////////////////////////////////////////////////////
3386
3387 bool force_verify_field_access(Klass* current_class, Klass* field_class, AccessFlags access, bool classloader_only) {
3388 if (current_class == NULL) {
3389 return true;
3390 }
3391 if ((current_class == field_class) || access.is_public()) {
3392 return true;
3393 }
3394
3395 if (access.is_protected()) {
3396 // See if current_class is a subclass of field_class
3397 if (current_class->is_subclass_of(field_class)) {
3398 return true;
3399 }
3400 }
3401
3402 return (!access.is_private() && InstanceKlass::cast(current_class)->is_same_class_package(field_class));
3403 }
3404
|