< prev index next >

src/hotspot/share/prims/whitebox.cpp

Print this page
rev 54697 : imported patch 8221734-v2-merge


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




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

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

 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   MutexLocker 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   }


< prev index next >