497 JVM_END 498 499 500 JVM_ENTRY_NO_ENV(jint, JVM_ActiveProcessorCount(void)) 501 JVMWrapper("JVM_ActiveProcessorCount"); 502 return os::active_processor_count(); 503 JVM_END 504 505 506 507 // java.lang.Throwable ////////////////////////////////////////////////////// 508 509 510 JVM_ENTRY(void, JVM_FillInStackTrace(JNIEnv *env, jobject receiver)) 511 JVMWrapper("JVM_FillInStackTrace"); 512 Handle exception(thread, JNIHandles::resolve_non_null(receiver)); 513 java_lang_Throwable::fill_in_stack_trace(exception); 514 JVM_END 515 516 517 JVM_ENTRY(jint, JVM_GetStackTraceDepth(JNIEnv *env, jobject throwable)) 518 JVMWrapper("JVM_GetStackTraceDepth"); 519 oop exception = JNIHandles::resolve(throwable); 520 return java_lang_Throwable::get_stack_trace_depth(exception, THREAD); 521 JVM_END 522 523 524 JVM_ENTRY(jobject, JVM_GetStackTraceElement(JNIEnv *env, jobject throwable, jint index)) 525 JVMWrapper("JVM_GetStackTraceElement"); 526 JvmtiVMObjectAllocEventCollector oam; // This ctor (throughout this module) may trigger a safepoint/GC 527 oop exception = JNIHandles::resolve(throwable); 528 oop element = java_lang_Throwable::get_stack_trace_element(exception, index, CHECK_NULL); 529 return JNIHandles::make_local(env, element); 530 JVM_END 531 532 533 // java.lang.StackWalker ////////////////////////////////////////////////////// 534 535 536 JVM_ENTRY(jobject, JVM_CallStackWalk(JNIEnv *env, jobject stackStream, jlong mode, 537 jint skip_frames, jint frame_count, jint start_index, 538 jobjectArray classes, 539 jobjectArray frames)) 540 JVMWrapper("JVM_CallStackWalk"); 541 JavaThread* jt = (JavaThread*) THREAD; 542 if (!jt->is_Java_thread() || !jt->has_last_Java_frame()) { 543 THROW_MSG_(vmSymbols::java_lang_InternalError(), "doStackWalk: no stack trace", NULL); 544 } 545 546 Handle stackStream_h(THREAD, JNIHandles::resolve_non_null(stackStream)); 547 objArrayOop ca = objArrayOop(JNIHandles::resolve_non_null(classes)); 548 objArrayHandle classes_array_h(THREAD, ca); 549 | 497 JVM_END 498 499 500 JVM_ENTRY_NO_ENV(jint, JVM_ActiveProcessorCount(void)) 501 JVMWrapper("JVM_ActiveProcessorCount"); 502 return os::active_processor_count(); 503 JVM_END 504 505 506 507 // java.lang.Throwable ////////////////////////////////////////////////////// 508 509 510 JVM_ENTRY(void, JVM_FillInStackTrace(JNIEnv *env, jobject receiver)) 511 JVMWrapper("JVM_FillInStackTrace"); 512 Handle exception(thread, JNIHandles::resolve_non_null(receiver)); 513 java_lang_Throwable::fill_in_stack_trace(exception); 514 JVM_END 515 516 517 JVM_ENTRY(void, JVM_GetStackTraceElements(JNIEnv *env, jobject throwable, jobjectArray stackTrace)) 518 JVMWrapper("JVM_GetStackTraceElements"); 519 Handle exception(THREAD, JNIHandles::resolve(throwable)); 520 objArrayOop st = objArrayOop(JNIHandles::resolve(stackTrace)); 521 objArrayHandle stack_trace(THREAD, st); 522 // Fill in the allocated stack trace 523 java_lang_Throwable::get_stack_trace_elements(exception, stack_trace, CHECK); 524 JVM_END 525 526 527 // java.lang.StackWalker ////////////////////////////////////////////////////// 528 529 530 JVM_ENTRY(jobject, JVM_CallStackWalk(JNIEnv *env, jobject stackStream, jlong mode, 531 jint skip_frames, jint frame_count, jint start_index, 532 jobjectArray classes, 533 jobjectArray frames)) 534 JVMWrapper("JVM_CallStackWalk"); 535 JavaThread* jt = (JavaThread*) THREAD; 536 if (!jt->is_Java_thread() || !jt->has_last_Java_frame()) { 537 THROW_MSG_(vmSymbols::java_lang_InternalError(), "doStackWalk: no stack trace", NULL); 538 } 539 540 Handle stackStream_h(THREAD, JNIHandles::resolve_non_null(stackStream)); 541 objArrayOop ca = objArrayOop(JNIHandles::resolve_non_null(classes)); 542 objArrayHandle classes_array_h(THREAD, ca); 543 |