src/share/vm/prims/whitebox.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File 8054492 Sdiff src/share/vm/prims

src/share/vm/prims/whitebox.cpp

Print this page




 795 
 796   return features_string;
 797 WB_END
 798 
 799 
 800 WB_ENTRY(jobjectArray, WB_GetNMethod(JNIEnv* env, jobject o, jobject method, jboolean is_osr))
 801   ResourceMark rm(THREAD);
 802   jmethodID jmid = reflected_method_to_jmid(thread, env, method);
 803   CHECK_JNI_EXCEPTION_(env, NULL);
 804   methodHandle mh(THREAD, Method::checked_resolve_jmethod_id(jmid));
 805   nmethod* code = is_osr ? mh->lookup_osr_nmethod_for(InvocationEntryBci, CompLevel_none, false) : mh->code();
 806   jobjectArray result = NULL;
 807   if (code == NULL) {
 808     return result;
 809   }
 810   int insts_size = code->insts_size();
 811 
 812   ThreadToNativeFromVM ttn(thread);
 813   jclass clazz = env->FindClass(vmSymbols::java_lang_Object()->as_C_string());
 814   CHECK_JNI_EXCEPTION_(env, NULL);
 815   result = env->NewObjectArray(2, clazz, NULL);
 816   if (result == NULL) {
 817     return result;
 818   }
 819 
 820   jobject obj = integerBox(thread, env, code->comp_level());
 821   CHECK_JNI_EXCEPTION_(env, NULL);
 822   env->SetObjectArrayElement(result, 0, obj);
 823 
 824   jbyteArray insts = env->NewByteArray(insts_size);
 825   CHECK_JNI_EXCEPTION_(env, NULL);
 826   env->SetByteArrayRegion(insts, 0, insts_size, (jbyte*) code->insts_begin());
 827   env->SetObjectArrayElement(result, 1, insts);
 828 




 829   return result;
 830 WB_END
 831 
 832 WB_ENTRY(jlong, WB_GetThreadStackSize(JNIEnv* env, jobject o))
 833   return (jlong) Thread::current()->stack_size();
 834 WB_END
 835 
 836 WB_ENTRY(jlong, WB_GetThreadRemainingStackSize(JNIEnv* env, jobject o))
 837   JavaThread* t = JavaThread::current();
 838   return (jlong) t->stack_available(os::current_stack_pointer()) - (jlong) StackShadowPages * os::vm_page_size();
 839 WB_END
 840 
 841 int WhiteBox::array_bytes_to_length(size_t bytes) {
 842   return Array<u1>::bytes_to_length(bytes);
 843 }
 844 
 845 WB_ENTRY(jlong, WB_AllocateMetaspace(JNIEnv* env, jobject wb, jobject class_loader, jlong size))
 846   if (size < 0) {
 847     THROW_MSG_0(vmSymbols::java_lang_IllegalArgumentException(),
 848         err_msg("WB_AllocateMetaspace: size is negative: " JLONG_FORMAT, size));




 795 
 796   return features_string;
 797 WB_END
 798 
 799 
 800 WB_ENTRY(jobjectArray, WB_GetNMethod(JNIEnv* env, jobject o, jobject method, jboolean is_osr))
 801   ResourceMark rm(THREAD);
 802   jmethodID jmid = reflected_method_to_jmid(thread, env, method);
 803   CHECK_JNI_EXCEPTION_(env, NULL);
 804   methodHandle mh(THREAD, Method::checked_resolve_jmethod_id(jmid));
 805   nmethod* code = is_osr ? mh->lookup_osr_nmethod_for(InvocationEntryBci, CompLevel_none, false) : mh->code();
 806   jobjectArray result = NULL;
 807   if (code == NULL) {
 808     return result;
 809   }
 810   int insts_size = code->insts_size();
 811 
 812   ThreadToNativeFromVM ttn(thread);
 813   jclass clazz = env->FindClass(vmSymbols::java_lang_Object()->as_C_string());
 814   CHECK_JNI_EXCEPTION_(env, NULL);
 815   result = env->NewObjectArray(3, clazz, NULL);
 816   if (result == NULL) {
 817     return result;
 818   }
 819 
 820   jobject level = integerBox(thread, env, code->comp_level());
 821   CHECK_JNI_EXCEPTION_(env, NULL);
 822   env->SetObjectArrayElement(result, 0, level);
 823 
 824   jbyteArray insts = env->NewByteArray(insts_size);
 825   CHECK_JNI_EXCEPTION_(env, NULL);
 826   env->SetByteArrayRegion(insts, 0, insts_size, (jbyte*) code->insts_begin());
 827   env->SetObjectArrayElement(result, 1, insts);
 828 
 829   jobject id = integerBox(thread, env, code->compile_id());
 830   CHECK_JNI_EXCEPTION_(env, NULL);
 831   env->SetObjectArrayElement(result, 2, id);
 832 
 833   return result;
 834 WB_END
 835 
 836 WB_ENTRY(jlong, WB_GetThreadStackSize(JNIEnv* env, jobject o))
 837   return (jlong) Thread::current()->stack_size();
 838 WB_END
 839 
 840 WB_ENTRY(jlong, WB_GetThreadRemainingStackSize(JNIEnv* env, jobject o))
 841   JavaThread* t = JavaThread::current();
 842   return (jlong) t->stack_available(os::current_stack_pointer()) - (jlong) StackShadowPages * os::vm_page_size();
 843 WB_END
 844 
 845 int WhiteBox::array_bytes_to_length(size_t bytes) {
 846   return Array<u1>::bytes_to_length(bytes);
 847 }
 848 
 849 WB_ENTRY(jlong, WB_AllocateMetaspace(JNIEnv* env, jobject wb, jobject class_loader, jlong size))
 850   if (size < 0) {
 851     THROW_MSG_0(vmSymbols::java_lang_IllegalArgumentException(),
 852         err_msg("WB_AllocateMetaspace: size is negative: " JLONG_FORMAT, size));


src/share/vm/prims/whitebox.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File