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 }
|
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_HasReferencePendingList(JNIEnv* env))
3370 JVMWrapper("JVM_HasReferencePendingList");
3371 MonitorLockerEx ml(Heap_lock);
3372 return Universe::has_reference_pending_list();
3373 JVM_END
3374
3375 JVM_ENTRY(void, JVM_WaitForReferencePendingList(JNIEnv* env))
3376 JVMWrapper("JVM_WaitForReferencePendingList");
3377 MonitorLockerEx ml(Heap_lock);
3378 while (!Universe::has_reference_pending_list()) {
3379 ml.wait();
3380 }
3381 JVM_END
3382
3383
3384 // ObjectInputStream ///////////////////////////////////////////////////////////////
3385
3386 bool force_verify_field_access(Klass* current_class, Klass* field_class, AccessFlags access, bool classloader_only) {
3387 if (current_class == NULL) {
3388 return true;
3389 }
3390 if ((current_class == field_class) || access.is_public()) {
3391 return true;
3392 }
3393
3394 if (access.is_protected()) {
3395 // See if current_class is a subclass of field_class
3396 if (current_class->is_subclass_of(field_class)) {
3397 return true;
3398 }
3399 }
|