< prev index next >

src/hotspot/share/prims/whitebox.cpp

Print this page
rev 54621 : imported patch 8221734-v1


 802                 assert(cm != NULL, "sanity check");
 803                 cm->make_not_entrant();
 804             }
 805             ++_result;
 806           }
 807         }
 808       }
 809     }
 810   }
 811 };
 812 
 813 WB_ENTRY(jint, WB_DeoptimizeFrames(JNIEnv* env, jobject o, jboolean make_not_entrant))
 814   VM_WhiteBoxDeoptimizeFrames op(make_not_entrant == JNI_TRUE);
 815   VMThread::execute(&op);
 816   return op.result();
 817 WB_END
 818 
 819 WB_ENTRY(void, WB_DeoptimizeAll(JNIEnv* env, jobject o))
 820   MutexLockerEx mu(Compile_lock);
 821   CodeCache::mark_all_nmethods_for_deoptimization();
 822   VM_Deoptimize op;
 823   VMThread::execute(&op);
 824 WB_END
 825 
 826 WB_ENTRY(jint, WB_DeoptimizeMethod(JNIEnv* env, jobject o, jobject method, jboolean is_osr))
 827   jmethodID jmid = reflected_method_to_jmid(thread, env, method);
 828   int result = 0;
 829   CHECK_JNI_EXCEPTION_(env, result);
 830   MutexLockerEx mu(Compile_lock);
 831   methodHandle mh(THREAD, Method::checked_resolve_jmethod_id(jmid));
 832   if (is_osr) {
 833     result += mh->mark_osr_nmethods();
 834   } else if (mh->code() != NULL) {
 835     mh->code()->mark_for_deoptimization();
 836     ++result;
 837   }
 838   result += CodeCache::mark_for_deoptimization(mh());
 839   if (result > 0) {
 840     VM_Deoptimize op;
 841     VMThread::execute(&op);
 842   }
 843   return result;
 844 WB_END
 845 
 846 WB_ENTRY(jboolean, WB_IsMethodCompiled(JNIEnv* env, jobject o, jobject method, jboolean is_osr))
 847   jmethodID jmid = reflected_method_to_jmid(thread, env, method);
 848   CHECK_JNI_EXCEPTION_(env, JNI_FALSE);
 849   MutexLockerEx mu(Compile_lock);
 850   methodHandle mh(THREAD, Method::checked_resolve_jmethod_id(jmid));
 851   CompiledMethod* code = is_osr ? mh->lookup_osr_nmethod_for(InvocationEntryBci, CompLevel_none, false) : mh->code();
 852   if (code == NULL) {
 853     return JNI_FALSE;
 854   }
 855   return (code->is_alive() && !code->is_marked_for_deoptimization());
 856 WB_END
 857 
 858 WB_ENTRY(jboolean, WB_IsMethodCompilable(JNIEnv* env, jobject o, jobject method, jint comp_level, jboolean is_osr))
 859   if (method == NULL || comp_level > MIN2((CompLevel) TieredStopAtLevel, CompLevel_highest_tier)) {
 860     return false;
 861   }




 802                 assert(cm != NULL, "sanity check");
 803                 cm->make_not_entrant();
 804             }
 805             ++_result;
 806           }
 807         }
 808       }
 809     }
 810   }
 811 };
 812 
 813 WB_ENTRY(jint, WB_DeoptimizeFrames(JNIEnv* env, jobject o, jboolean make_not_entrant))
 814   VM_WhiteBoxDeoptimizeFrames op(make_not_entrant == JNI_TRUE);
 815   VMThread::execute(&op);
 816   return op.result();
 817 WB_END
 818 
 819 WB_ENTRY(void, WB_DeoptimizeAll(JNIEnv* env, jobject o))
 820   MutexLockerEx mu(Compile_lock);
 821   CodeCache::mark_all_nmethods_for_deoptimization();
 822   Deoptimization::deoptimize_all_marked();

 823 WB_END
 824 
 825 WB_ENTRY(jint, WB_DeoptimizeMethod(JNIEnv* env, jobject o, jobject method, jboolean is_osr))
 826   jmethodID jmid = reflected_method_to_jmid(thread, env, method);
 827   int result = 0;
 828   CHECK_JNI_EXCEPTION_(env, result);
 829   MutexLockerEx mu(Compile_lock);
 830   methodHandle mh(THREAD, Method::checked_resolve_jmethod_id(jmid));
 831   if (is_osr) {
 832     result += mh->mark_osr_nmethods();
 833   } else if (mh->code() != NULL) {
 834     mh->code()->mark_for_deoptimization();
 835     ++result;
 836   }
 837   result += CodeCache::mark_for_deoptimization(mh());
 838   if (result > 0) {
 839     Deoptimization::deoptimize_all_marked();

 840   }
 841   return result;
 842 WB_END
 843 
 844 WB_ENTRY(jboolean, WB_IsMethodCompiled(JNIEnv* env, jobject o, jobject method, jboolean is_osr))
 845   jmethodID jmid = reflected_method_to_jmid(thread, env, method);
 846   CHECK_JNI_EXCEPTION_(env, JNI_FALSE);
 847   MutexLockerEx mu(Compile_lock);
 848   methodHandle mh(THREAD, Method::checked_resolve_jmethod_id(jmid));
 849   CompiledMethod* code = is_osr ? mh->lookup_osr_nmethod_for(InvocationEntryBci, CompLevel_none, false) : mh->code();
 850   if (code == NULL) {
 851     return JNI_FALSE;
 852   }
 853   return (code->is_alive() && !code->is_marked_for_deoptimization());
 854 WB_END
 855 
 856 WB_ENTRY(jboolean, WB_IsMethodCompilable(JNIEnv* env, jobject o, jobject method, jint comp_level, jboolean is_osr))
 857   if (method == NULL || comp_level > MIN2((CompLevel) TieredStopAtLevel, CompLevel_highest_tier)) {
 858     return false;
 859   }


< prev index next >