< prev index next >

src/share/vm/prims/whitebox.cpp

Print this page
rev 8985 : 8059575: JEP-JDK-8043304: Test task: Tiered Compilation level transition tests
Reviewed-by: iveresov, thartmann, andrew


 850 
 851   return features_string;
 852 WB_END
 853 
 854 
 855 WB_ENTRY(jobjectArray, WB_GetNMethod(JNIEnv* env, jobject o, jobject method, jboolean is_osr))
 856   ResourceMark rm(THREAD);
 857   jmethodID jmid = reflected_method_to_jmid(thread, env, method);
 858   CHECK_JNI_EXCEPTION_(env, NULL);
 859   methodHandle mh(THREAD, Method::checked_resolve_jmethod_id(jmid));
 860   nmethod* code = is_osr ? mh->lookup_osr_nmethod_for(InvocationEntryBci, CompLevel_none, false) : mh->code();
 861   jobjectArray result = NULL;
 862   if (code == NULL) {
 863     return result;
 864   }
 865   int insts_size = code->insts_size();
 866 
 867   ThreadToNativeFromVM ttn(thread);
 868   jclass clazz = env->FindClass(vmSymbols::java_lang_Object()->as_C_string());
 869   CHECK_JNI_EXCEPTION_(env, NULL);
 870   result = env->NewObjectArray(2, clazz, NULL);
 871   if (result == NULL) {
 872     return result;
 873   }
 874 
 875   jobject obj = integerBox(thread, env, code->comp_level());
 876   CHECK_JNI_EXCEPTION_(env, NULL);
 877   env->SetObjectArrayElement(result, 0, obj);




 878 
 879   jbyteArray insts = env->NewByteArray(insts_size);
 880   CHECK_JNI_EXCEPTION_(env, NULL);
 881   env->SetByteArrayRegion(insts, 0, insts_size, (jbyte*) code->insts_begin());
 882   env->SetObjectArrayElement(result, 1, insts);
 883 
 884   return result;
 885 WB_END
 886 
 887 
 888 int WhiteBox::array_bytes_to_length(size_t bytes) {
 889   return Array<u1>::bytes_to_length(bytes);
 890 }
 891 
 892 WB_ENTRY(jlong, WB_AllocateMetaspace(JNIEnv* env, jobject wb, jobject class_loader, jlong size))
 893   if (size < 0) {
 894     THROW_MSG_0(vmSymbols::java_lang_IllegalArgumentException(),
 895         err_msg("WB_AllocateMetaspace: size is negative: " JLONG_FORMAT, size));
 896   }
 897 
 898   oop class_loader_oop = JNIHandles::resolve(class_loader);
 899   ClassLoaderData* cld = class_loader_oop != NULL
 900       ? java_lang_ClassLoader::loader_data(class_loader_oop)
 901       : ClassLoaderData::the_null_class_loader_data();
 902 




 850 
 851   return features_string;
 852 WB_END
 853 
 854 
 855 WB_ENTRY(jobjectArray, WB_GetNMethod(JNIEnv* env, jobject o, jobject method, jboolean is_osr))
 856   ResourceMark rm(THREAD);
 857   jmethodID jmid = reflected_method_to_jmid(thread, env, method);
 858   CHECK_JNI_EXCEPTION_(env, NULL);
 859   methodHandle mh(THREAD, Method::checked_resolve_jmethod_id(jmid));
 860   nmethod* code = is_osr ? mh->lookup_osr_nmethod_for(InvocationEntryBci, CompLevel_none, false) : mh->code();
 861   jobjectArray result = NULL;
 862   if (code == NULL) {
 863     return result;
 864   }
 865   int insts_size = code->insts_size();
 866 
 867   ThreadToNativeFromVM ttn(thread);
 868   jclass clazz = env->FindClass(vmSymbols::java_lang_Object()->as_C_string());
 869   CHECK_JNI_EXCEPTION_(env, NULL);
 870   result = env->NewObjectArray(3, clazz, NULL);
 871   if (result == NULL) {
 872     return result;
 873   }
 874 
 875   jobject level = integerBox(thread, env, code->comp_level());
 876   CHECK_JNI_EXCEPTION_(env, NULL);
 877   env->SetObjectArrayElement(result, 0, level);
 878 
 879   jobject id = integerBox(thread, env, code->compile_id());
 880   CHECK_JNI_EXCEPTION_(env, NULL);
 881   env->SetObjectArrayElement(result, 1, id);
 882 
 883   jbyteArray insts = env->NewByteArray(insts_size);
 884   CHECK_JNI_EXCEPTION_(env, NULL);
 885   env->SetByteArrayRegion(insts, 0, insts_size, (jbyte*) code->insts_begin());
 886   env->SetObjectArrayElement(result, 2, insts);
 887 
 888   return result;
 889 WB_END
 890 
 891 
 892 int WhiteBox::array_bytes_to_length(size_t bytes) {
 893   return Array<u1>::bytes_to_length(bytes);
 894 }
 895 
 896 WB_ENTRY(jlong, WB_AllocateMetaspace(JNIEnv* env, jobject wb, jobject class_loader, jlong size))
 897   if (size < 0) {
 898     THROW_MSG_0(vmSymbols::java_lang_IllegalArgumentException(),
 899         err_msg("WB_AllocateMetaspace: size is negative: " JLONG_FORMAT, size));
 900   }
 901 
 902   oop class_loader_oop = JNIHandles::resolve(class_loader);
 903   ClassLoaderData* cld = class_loader_oop != NULL
 904       ? java_lang_ClassLoader::loader_data(class_loader_oop)
 905       : ClassLoaderData::the_null_class_loader_data();
 906 


< prev index next >