624 WB_ENTRY(jint, WB_GetCompileQueueSize(JNIEnv* env, jobject o, jint comp_level))
625 if (comp_level == CompLevel_any) {
626 return CompileBroker::queue_size(CompLevel_full_optimization) /* C2 */ +
627 CompileBroker::queue_size(CompLevel_full_profile) /* C1 */;
628 } else {
629 return CompileBroker::queue_size(comp_level);
630 }
631 WB_END
632
633 WB_ENTRY(jboolean, WB_TestSetForceInlineMethod(JNIEnv* env, jobject o, jobject method, jboolean value))
634 jmethodID jmid = reflected_method_to_jmid(thread, env, method);
635 CHECK_JNI_EXCEPTION_(env, JNI_FALSE);
636 methodHandle mh(THREAD, Method::checked_resolve_jmethod_id(jmid));
637 bool result = mh->force_inline();
638 mh->set_force_inline(value == JNI_TRUE);
639 return result;
640 WB_END
641
642 bool WhiteBox::compile_method(Method* method, int comp_level, int bci, Thread* THREAD) {
643 // Screen for unavailable/bad comp level or null method
644 if (method == NULL || CompileBroker::compiler(comp_level) == NULL) {
645 return false;
646 }
647 methodHandle mh(THREAD, method);
648 nmethod* nm = CompileBroker::compile_method(mh, bci, comp_level, mh, mh->invocation_count(), "WhiteBox", THREAD);
649 MutexLockerEx mu(Compile_lock);
650 return (mh->queued_for_compilation() || nm != NULL);
651 }
652
653 WB_ENTRY(jboolean, WB_EnqueueMethodForCompilation(JNIEnv* env, jobject o, jobject method, jint comp_level, jint bci))
654 jmethodID jmid = reflected_method_to_jmid(thread, env, method);
655 CHECK_JNI_EXCEPTION_(env, JNI_FALSE);
656 return WhiteBox::compile_method(Method::checked_resolve_jmethod_id(jmid), comp_level, bci, THREAD);
657 WB_END
658
659 WB_ENTRY(jboolean, WB_EnqueueInitializerForCompilation(JNIEnv* env, jobject o, jclass klass, jint comp_level))
660 instanceKlassHandle ikh(java_lang_Class::as_Klass(JNIHandles::resolve(klass)));
661 return WhiteBox::compile_method(ikh->class_initializer(), comp_level, InvocationEntryBci, THREAD);
662 WB_END
663
664 WB_ENTRY(jboolean, WB_ShouldPrintAssembly(JNIEnv* env, jobject o, jobject method, jint comp_level))
|
624 WB_ENTRY(jint, WB_GetCompileQueueSize(JNIEnv* env, jobject o, jint comp_level))
625 if (comp_level == CompLevel_any) {
626 return CompileBroker::queue_size(CompLevel_full_optimization) /* C2 */ +
627 CompileBroker::queue_size(CompLevel_full_profile) /* C1 */;
628 } else {
629 return CompileBroker::queue_size(comp_level);
630 }
631 WB_END
632
633 WB_ENTRY(jboolean, WB_TestSetForceInlineMethod(JNIEnv* env, jobject o, jobject method, jboolean value))
634 jmethodID jmid = reflected_method_to_jmid(thread, env, method);
635 CHECK_JNI_EXCEPTION_(env, JNI_FALSE);
636 methodHandle mh(THREAD, Method::checked_resolve_jmethod_id(jmid));
637 bool result = mh->force_inline();
638 mh->set_force_inline(value == JNI_TRUE);
639 return result;
640 WB_END
641
642 bool WhiteBox::compile_method(Method* method, int comp_level, int bci, Thread* THREAD) {
643 // Screen for unavailable/bad comp level or null method
644 if (method == NULL || comp_level > TieredStopAtLevel ||
645 CompileBroker::compiler(comp_level) == NULL) {
646 return false;
647 }
648 methodHandle mh(THREAD, method);
649 nmethod* nm = CompileBroker::compile_method(mh, bci, comp_level, mh, mh->invocation_count(), "WhiteBox", THREAD);
650 MutexLockerEx mu(Compile_lock);
651 return (mh->queued_for_compilation() || nm != NULL);
652 }
653
654 WB_ENTRY(jboolean, WB_EnqueueMethodForCompilation(JNIEnv* env, jobject o, jobject method, jint comp_level, jint bci))
655 jmethodID jmid = reflected_method_to_jmid(thread, env, method);
656 CHECK_JNI_EXCEPTION_(env, JNI_FALSE);
657 return WhiteBox::compile_method(Method::checked_resolve_jmethod_id(jmid), comp_level, bci, THREAD);
658 WB_END
659
660 WB_ENTRY(jboolean, WB_EnqueueInitializerForCompilation(JNIEnv* env, jobject o, jclass klass, jint comp_level))
661 instanceKlassHandle ikh(java_lang_Class::as_Klass(JNIHandles::resolve(klass)));
662 return WhiteBox::compile_method(ikh->class_initializer(), comp_level, InvocationEntryBci, THREAD);
663 WB_END
664
665 WB_ENTRY(jboolean, WB_ShouldPrintAssembly(JNIEnv* env, jobject o, jobject method, jint comp_level))
|