613
614 mh->clear_not_c1_compilable();
615 mh->clear_not_c2_compilable();
616 mh->clear_not_c2_osr_compilable();
617 NOT_PRODUCT(mh->set_compiled_invocation_count(0));
618 if (mcs != NULL) {
619 mcs->backedge_counter()->init();
620 mcs->invocation_counter()->init();
621 mcs->set_interpreter_invocation_count(0);
622 mcs->set_interpreter_throwout_count(0);
623
624 #ifdef TIERED
625 mcs->set_rate(0.0F);
626 mh->set_prev_event_count(0);
627 mh->set_prev_time(0);
628 #endif
629 }
630 WB_END
631
632 template <typename T>
633 static bool GetVMFlag(JavaThread* thread, JNIEnv* env, jstring name, T* value, bool (*TAt)(const char*, T*, bool, bool)) {
634 if (name == NULL) {
635 return false;
636 }
637 ThreadToNativeFromVM ttnfv(thread); // can't be in VM when we call JNI
638 const char* flag_name = env->GetStringUTFChars(name, NULL);
639 bool result = (*TAt)(flag_name, value, true, true);
640 env->ReleaseStringUTFChars(name, flag_name);
641 return result;
642 }
643
644 template <typename T>
645 static bool SetVMFlag(JavaThread* thread, JNIEnv* env, jstring name, T* value, bool (*TAtPut)(const char*, T*, Flag::Flags)) {
646 if (name == NULL) {
647 return false;
648 }
649 ThreadToNativeFromVM ttnfv(thread); // can't be in VM when we call JNI
650 const char* flag_name = env->GetStringUTFChars(name, NULL);
651 bool result = (*TAtPut)(flag_name, value, Flag::INTERNAL);
652 env->ReleaseStringUTFChars(name, flag_name);
653 return result;
654 }
655
656 template <typename T>
657 static jobject box(JavaThread* thread, JNIEnv* env, Symbol* name, Symbol* sig, T value) {
658 ResourceMark rm(thread);
659 jclass clazz = env->FindClass(name->as_C_string());
660 CHECK_JNI_EXCEPTION_(env, NULL);
661 jmethodID methodID = env->GetStaticMethodID(clazz,
662 vmSymbols::valueOf_name()->as_C_string(),
663 sig->as_C_string());
664 CHECK_JNI_EXCEPTION_(env, NULL);
665 jobject result = env->CallStaticObjectMethod(clazz, methodID, value);
666 CHECK_JNI_EXCEPTION_(env, NULL);
667 return result;
668 }
669
670 static jobject booleanBox(JavaThread* thread, JNIEnv* env, jboolean value) {
671 return box(thread, env, vmSymbols::java_lang_Boolean(), vmSymbols::Boolean_valueOf_signature(), value);
672 }
673 static jobject integerBox(JavaThread* thread, JNIEnv* env, jint value) {
|
613
614 mh->clear_not_c1_compilable();
615 mh->clear_not_c2_compilable();
616 mh->clear_not_c2_osr_compilable();
617 NOT_PRODUCT(mh->set_compiled_invocation_count(0));
618 if (mcs != NULL) {
619 mcs->backedge_counter()->init();
620 mcs->invocation_counter()->init();
621 mcs->set_interpreter_invocation_count(0);
622 mcs->set_interpreter_throwout_count(0);
623
624 #ifdef TIERED
625 mcs->set_rate(0.0F);
626 mh->set_prev_event_count(0);
627 mh->set_prev_time(0);
628 #endif
629 }
630 WB_END
631
632 template <typename T>
633 static bool GetVMFlag(JavaThread* thread, JNIEnv* env, jstring name, T* value, Flag::Error (*TAt)(const char*, T*, bool, bool)) {
634 if (name == NULL) {
635 return false;
636 }
637 ThreadToNativeFromVM ttnfv(thread); // can't be in VM when we call JNI
638 const char* flag_name = env->GetStringUTFChars(name, NULL);
639 Flag::Error result = (*TAt)(flag_name, value, true, true);
640 env->ReleaseStringUTFChars(name, flag_name);
641 return (result == Flag::SUCCESS);
642 }
643
644 template <typename T>
645 static bool SetVMFlag(JavaThread* thread, JNIEnv* env, jstring name, T* value, Flag::Error (*TAtPut)(const char*, T*, Flag::Flags)) {
646 if (name == NULL) {
647 return false;
648 }
649 ThreadToNativeFromVM ttnfv(thread); // can't be in VM when we call JNI
650 const char* flag_name = env->GetStringUTFChars(name, NULL);
651 Flag::Error result = (*TAtPut)(flag_name, value, Flag::INTERNAL);
652 env->ReleaseStringUTFChars(name, flag_name);
653 return (result == Flag::SUCCESS);
654 }
655
656 template <typename T>
657 static jobject box(JavaThread* thread, JNIEnv* env, Symbol* name, Symbol* sig, T value) {
658 ResourceMark rm(thread);
659 jclass clazz = env->FindClass(name->as_C_string());
660 CHECK_JNI_EXCEPTION_(env, NULL);
661 jmethodID methodID = env->GetStaticMethodID(clazz,
662 vmSymbols::valueOf_name()->as_C_string(),
663 sig->as_C_string());
664 CHECK_JNI_EXCEPTION_(env, NULL);
665 jobject result = env->CallStaticObjectMethod(clazz, methodID, value);
666 CHECK_JNI_EXCEPTION_(env, NULL);
667 return result;
668 }
669
670 static jobject booleanBox(JavaThread* thread, JNIEnv* env, jboolean value) {
671 return box(thread, env, vmSymbols::java_lang_Boolean(), vmSymbols::Boolean_valueOf_signature(), value);
672 }
673 static jobject integerBox(JavaThread* thread, JNIEnv* env, jint value) {
|