< 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
rev 11753 : [mq]: per_review


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_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   }
3400 
3401   return (!access.is_private() && InstanceKlass::cast(current_class)->is_same_class_package(field_class));
3402 }
3403 


< prev index next >