< 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))




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, jboolean allowAttachedThread))
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 && (allowAttachedThread || !thr->has_attached_via_jni())) {
3191     // Sets the native thread name for a JavaThread. If specifically
3192     // requested JNI-attached threads can also have their native name set;
3193     // otherwise we do not modify JNI-attached threads as it may interfere
3194     // with the application that created them.
3195     const char *thread_name = java_lang_String::as_utf8_string(JNIHandles::resolve_non_null(name));
3196     os::set_native_thread_name(thread_name);
3197   }
3198 JVM_END
3199 
3200 // java.lang.SecurityManager ///////////////////////////////////////////////////////////////////////
3201 
3202 static bool is_trusted_frame(JavaThread* jthread, vframeStream* vfst) {
3203   assert(jthread->is_Java_thread(), "must be a Java thread");
3204   if (jthread->privileged_stack_top() == NULL) return false;
3205   if (jthread->privileged_stack_top()->frame_id() == vfst->frame_id()) {
3206     oop loader = jthread->privileged_stack_top()->class_loader();
3207     if (loader == NULL) return true;
3208     bool trusted = java_lang_ClassLoader::is_trusted_loader(loader);
3209     if (trusted) return true;
3210   }
3211   return false;
3212 }
3213 
3214 JVM_ENTRY(jclass, JVM_CurrentLoadedClass(JNIEnv *env))


< prev index next >