< prev index next >

src/share/vm/prims/jvm.cpp

Print this page




 545 
 546 
 547 JVM_ENTRY(jint, JVM_MoreStackWalk(JNIEnv *env, jobject stackStream, jlong mode, jlong anchor,
 548                                   jint frame_count, jint start_index,
 549                                   jobjectArray frames))
 550   JVMWrapper("JVM_MoreStackWalk");
 551   JavaThread* jt = (JavaThread*) THREAD;
 552 
 553   // frames array is a Class<?>[] array when only getting caller reference,
 554   // and a StackFrameInfo[] array (or derivative) otherwise. It should never
 555   // be null.
 556   objArrayOop fa = objArrayOop(JNIHandles::resolve_non_null(frames));
 557   objArrayHandle frames_array_h(THREAD, fa);
 558 
 559   int limit = start_index+frame_count;
 560   if (frames_array_h->length() < limit) {
 561     THROW_MSG_0(vmSymbols::java_lang_IllegalArgumentException(), "not enough space in buffers");
 562   }
 563 
 564   Handle stackStream_h(THREAD, JNIHandles::resolve_non_null(stackStream));
 565   return StackWalk::moreFrames(stackStream_h, mode, anchor, frame_count,
 566                                start_index, frames_array_h, THREAD);
 567 JVM_END
 568 
 569 JVM_ENTRY(void, JVM_ToStackTraceElement(JNIEnv *env, jobject frame, jobject stack))
 570   JVMWrapper("JVM_ToStackTraceElement");
 571   Handle stack_frame_info(THREAD, JNIHandles::resolve_non_null(frame));
 572   Handle stack_trace_element(THREAD, JNIHandles::resolve_non_null(stack));
 573   java_lang_StackFrameInfo::to_stack_trace_element(stack_frame_info, stack_trace_element, THREAD);
 574 JVM_END
 575 
 576 // java.lang.Object ///////////////////////////////////////////////
 577 
 578 
 579 JVM_ENTRY(jint, JVM_IHashCode(JNIEnv* env, jobject handle))
 580   JVMWrapper("JVM_IHashCode");
 581   // as implemented in the classic virtual machine; return 0 if object is NULL
 582   return handle == NULL ? 0 : ObjectSynchronizer::FastHashCode (THREAD, JNIHandles::resolve_non_null(handle)) ;
 583 JVM_END
 584 
 585 




 545 
 546 
 547 JVM_ENTRY(jint, JVM_MoreStackWalk(JNIEnv *env, jobject stackStream, jlong mode, jlong anchor,
 548                                   jint frame_count, jint start_index,
 549                                   jobjectArray frames))
 550   JVMWrapper("JVM_MoreStackWalk");
 551   JavaThread* jt = (JavaThread*) THREAD;
 552 
 553   // frames array is a Class<?>[] array when only getting caller reference,
 554   // and a StackFrameInfo[] array (or derivative) otherwise. It should never
 555   // be null.
 556   objArrayOop fa = objArrayOop(JNIHandles::resolve_non_null(frames));
 557   objArrayHandle frames_array_h(THREAD, fa);
 558 
 559   int limit = start_index+frame_count;
 560   if (frames_array_h->length() < limit) {
 561     THROW_MSG_0(vmSymbols::java_lang_IllegalArgumentException(), "not enough space in buffers");
 562   }
 563 
 564   Handle stackStream_h(THREAD, JNIHandles::resolve_non_null(stackStream));
 565   return StackWalk::fetchNextBatch(stackStream_h, mode, anchor, frame_count,
 566                                    start_index, frames_array_h, THREAD);
 567 JVM_END
 568 
 569 JVM_ENTRY(void, JVM_ToStackTraceElement(JNIEnv *env, jobject frame, jobject stack))
 570   JVMWrapper("JVM_ToStackTraceElement");
 571   Handle stack_frame_info(THREAD, JNIHandles::resolve_non_null(frame));
 572   Handle stack_trace_element(THREAD, JNIHandles::resolve_non_null(stack));
 573   java_lang_StackFrameInfo::to_stack_trace_element(stack_frame_info, stack_trace_element, THREAD);
 574 JVM_END
 575 
 576 // java.lang.Object ///////////////////////////////////////////////
 577 
 578 
 579 JVM_ENTRY(jint, JVM_IHashCode(JNIEnv* env, jobject handle))
 580   JVMWrapper("JVM_IHashCode");
 581   // as implemented in the classic virtual machine; return 0 if object is NULL
 582   return handle == NULL ? 0 : ObjectSynchronizer::FastHashCode (THREAD, JNIHandles::resolve_non_null(handle)) ;
 583 JVM_END
 584 
 585 


< prev index next >