< prev index next >

src/share/vm/prims/jvm.cpp

Print this page
rev 11747 : [mq]: per.hotspot.patch
rev 11748 : imported patch pop_pl
rev 11749 : imported patch coleen_review
rev 11752 : [mq]: vm_api


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 


< prev index next >