< prev index next >

src/share/vm/prims/jvm.cpp

Print this page




3163 JVM_ENTRY(jboolean, JVM_HoldsLock(JNIEnv* env, jclass threadClass, jobject obj))
3164   JVMWrapper("JVM_HoldsLock");
3165   assert(THREAD->is_Java_thread(), "sanity check");
3166   if (obj == NULL) {
3167     THROW_(vmSymbols::java_lang_NullPointerException(), JNI_FALSE);
3168   }
3169   Handle h_obj(THREAD, JNIHandles::resolve(obj));
3170   return ObjectSynchronizer::current_thread_holds_lock((JavaThread*)THREAD, h_obj);
3171 JVM_END
3172 
3173 
3174 JVM_ENTRY(void, JVM_DumpAllStacks(JNIEnv* env, jclass))
3175   JVMWrapper("JVM_DumpAllStacks");
3176   VM_PrintThreads op;
3177   VMThread::execute(&op);
3178   if (JvmtiExport::should_post_data_dump()) {
3179     JvmtiExport::post_data_dump();
3180   }
3181 JVM_END
3182 





3183 JVM_ENTRY(void, JVM_SetNativeThreadName(JNIEnv* env, jobject jthread, jstring name))
3184   JVMWrapper("JVM_SetNativeThreadName");
3185   ResourceMark rm(THREAD);
3186   oop java_thread = JNIHandles::resolve_non_null(jthread);
3187   JavaThread* thr = java_lang_Thread::thread(java_thread);
3188   // Thread naming only supported for the current thread, doesn't work for
3189   // target threads.
3190   if (Thread::current() == thr && !thr->has_attached_via_jni()) {
3191     // we don't set the name of an attached thread to avoid stepping
3192     // on other programs
3193     const char *thread_name = java_lang_String::as_utf8_string(JNIHandles::resolve_non_null(name));
3194     os::set_native_thread_name(thread_name);
3195   }
3196 JVM_END
3197 
3198 // java.lang.SecurityManager ///////////////////////////////////////////////////////////////////////
3199 
3200 static bool is_trusted_frame(JavaThread* jthread, vframeStream* vfst) {
3201   assert(jthread->is_Java_thread(), "must be a Java thread");
3202   if (jthread->privileged_stack_top() == NULL) return false;
3203   if (jthread->privileged_stack_top()->frame_id() == vfst->frame_id()) {
3204     oop loader = jthread->privileged_stack_top()->class_loader();
3205     if (loader == NULL) return true;
3206     bool trusted = java_lang_ClassLoader::is_trusted_loader(loader);
3207     if (trusted) return true;
3208   }
3209   return false;
3210 }
3211 
3212 JVM_ENTRY(jclass, JVM_CurrentLoadedClass(JNIEnv *env))
3213   JVMWrapper("JVM_CurrentLoadedClass");
3214   ResourceMark rm(THREAD);




3163 JVM_ENTRY(jboolean, JVM_HoldsLock(JNIEnv* env, jclass threadClass, jobject obj))
3164   JVMWrapper("JVM_HoldsLock");
3165   assert(THREAD->is_Java_thread(), "sanity check");
3166   if (obj == NULL) {
3167     THROW_(vmSymbols::java_lang_NullPointerException(), JNI_FALSE);
3168   }
3169   Handle h_obj(THREAD, JNIHandles::resolve(obj));
3170   return ObjectSynchronizer::current_thread_holds_lock((JavaThread*)THREAD, h_obj);
3171 JVM_END
3172 
3173 
3174 JVM_ENTRY(void, JVM_DumpAllStacks(JNIEnv* env, jclass))
3175   JVMWrapper("JVM_DumpAllStacks");
3176   VM_PrintThreads op;
3177   VMThread::execute(&op);
3178   if (JvmtiExport::should_post_data_dump()) {
3179     JvmtiExport::post_data_dump();
3180   }
3181 JVM_END
3182 
3183 JVM_ENTRY_NO_ENV(void, JVM_SetNativeThreadName0(const char *name))
3184   JVMWrapper("JVM_SetNativeThreadName0");
3185   os::set_native_thread_name(name);
3186 JVM_END
3187 
3188 JVM_ENTRY(void, JVM_SetNativeThreadName(JNIEnv* env, jobject jthread, jstring name))
3189   JVMWrapper("JVM_SetNativeThreadName");
3190   ResourceMark rm(THREAD);
3191   oop java_thread = JNIHandles::resolve_non_null(jthread);
3192   JavaThread* thr = java_lang_Thread::thread(java_thread);
3193   // Thread naming only supported for the current thread, doesn't work for
3194   // target threads.
3195   if (Thread::current() == thr && !thr->has_attached_via_jni()) {
3196     // we don't set the name of an attached thread to avoid stepping
3197     // on other programs
3198     const char *thread_name = java_lang_String::as_utf8_string(JNIHandles::resolve_non_null(name));
3199     JVM_SetNativeThreadName0(thread_name);
3200   }
3201 JVM_END
3202 
3203 // java.lang.SecurityManager ///////////////////////////////////////////////////////////////////////
3204 
3205 static bool is_trusted_frame(JavaThread* jthread, vframeStream* vfst) {
3206   assert(jthread->is_Java_thread(), "must be a Java thread");
3207   if (jthread->privileged_stack_top() == NULL) return false;
3208   if (jthread->privileged_stack_top()->frame_id() == vfst->frame_id()) {
3209     oop loader = jthread->privileged_stack_top()->class_loader();
3210     if (loader == NULL) return true;
3211     bool trusted = java_lang_ClassLoader::is_trusted_loader(loader);
3212     if (trusted) return true;
3213   }
3214   return false;
3215 }
3216 
3217 JVM_ENTRY(jclass, JVM_CurrentLoadedClass(JNIEnv *env))
3218   JVMWrapper("JVM_CurrentLoadedClass");
3219   ResourceMark rm(THREAD);


< prev index next >