mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-28 07:14:30 +02:00
8214442: Improve stack walk API by adding handle marks
Add the missing handle marks. Reviewed-by: zgu, mchung
This commit is contained in:
parent
467ba83c79
commit
a1ff367f4b
2 changed files with 7 additions and 2 deletions
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1997, 2019, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
|
@ -2600,6 +2600,7 @@ void java_lang_StackTraceElement::fill_in(Handle element,
|
||||||
}
|
}
|
||||||
|
|
||||||
Method* java_lang_StackFrameInfo::get_method(Handle stackFrame, InstanceKlass* holder, TRAPS) {
|
Method* java_lang_StackFrameInfo::get_method(Handle stackFrame, InstanceKlass* holder, TRAPS) {
|
||||||
|
HandleMark hm(THREAD);
|
||||||
Handle mname(THREAD, stackFrame->obj_field(_memberName_offset));
|
Handle mname(THREAD, stackFrame->obj_field(_memberName_offset));
|
||||||
Method* method = (Method*)java_lang_invoke_MemberName::vmtarget(mname());
|
Method* method = (Method*)java_lang_invoke_MemberName::vmtarget(mname());
|
||||||
// we should expand MemberName::name when Throwable uses StackTrace
|
// we should expand MemberName::name when Throwable uses StackTrace
|
||||||
|
@ -2609,6 +2610,7 @@ Method* java_lang_StackFrameInfo::get_method(Handle stackFrame, InstanceKlass* h
|
||||||
|
|
||||||
void java_lang_StackFrameInfo::set_method_and_bci(Handle stackFrame, const methodHandle& method, int bci, TRAPS) {
|
void java_lang_StackFrameInfo::set_method_and_bci(Handle stackFrame, const methodHandle& method, int bci, TRAPS) {
|
||||||
// set Method* or mid/cpref
|
// set Method* or mid/cpref
|
||||||
|
HandleMark hm(THREAD);
|
||||||
Handle mname(Thread::current(), stackFrame->obj_field(_memberName_offset));
|
Handle mname(Thread::current(), stackFrame->obj_field(_memberName_offset));
|
||||||
InstanceKlass* ik = method->method_holder();
|
InstanceKlass* ik = method->method_holder();
|
||||||
CallInfo info(method(), ik, CHECK);
|
CallInfo info(method(), ik, CHECK);
|
||||||
|
@ -2623,6 +2625,7 @@ void java_lang_StackFrameInfo::set_method_and_bci(Handle stackFrame, const metho
|
||||||
|
|
||||||
void java_lang_StackFrameInfo::to_stack_trace_element(Handle stackFrame, Handle stack_trace_element, TRAPS) {
|
void java_lang_StackFrameInfo::to_stack_trace_element(Handle stackFrame, Handle stack_trace_element, TRAPS) {
|
||||||
ResourceMark rm(THREAD);
|
ResourceMark rm(THREAD);
|
||||||
|
HandleMark hm(THREAD);
|
||||||
Handle mname(THREAD, stackFrame->obj_field(java_lang_StackFrameInfo::_memberName_offset));
|
Handle mname(THREAD, stackFrame->obj_field(java_lang_StackFrameInfo::_memberName_offset));
|
||||||
Klass* clazz = java_lang_Class::as_Klass(java_lang_invoke_MemberName::clazz(mname()));
|
Klass* clazz = java_lang_Class::as_Klass(java_lang_invoke_MemberName::clazz(mname()));
|
||||||
InstanceKlass* holder = InstanceKlass::cast(clazz);
|
InstanceKlass* holder = InstanceKlass::cast(clazz);
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2015, 2019, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
|
@ -163,6 +163,7 @@ int StackWalk::fill_in_frames(jlong mode, BaseFrameStream& stream,
|
||||||
// Fill in the LiveStackFrameInfo at the given index in frames_array
|
// Fill in the LiveStackFrameInfo at the given index in frames_array
|
||||||
void LiveFrameStream::fill_frame(int index, objArrayHandle frames_array,
|
void LiveFrameStream::fill_frame(int index, objArrayHandle frames_array,
|
||||||
const methodHandle& method, TRAPS) {
|
const methodHandle& method, TRAPS) {
|
||||||
|
HandleMark hm(THREAD);
|
||||||
Handle stackFrame(THREAD, frames_array->obj_at(index));
|
Handle stackFrame(THREAD, frames_array->obj_at(index));
|
||||||
fill_live_stackframe(stackFrame, method, CHECK);
|
fill_live_stackframe(stackFrame, method, CHECK);
|
||||||
}
|
}
|
||||||
|
@ -171,6 +172,7 @@ void LiveFrameStream::fill_frame(int index, objArrayHandle frames_array,
|
||||||
void JavaFrameStream::fill_frame(int index, objArrayHandle frames_array,
|
void JavaFrameStream::fill_frame(int index, objArrayHandle frames_array,
|
||||||
const methodHandle& method, TRAPS) {
|
const methodHandle& method, TRAPS) {
|
||||||
if (_need_method_info) {
|
if (_need_method_info) {
|
||||||
|
HandleMark hm(THREAD);
|
||||||
Handle stackFrame(THREAD, frames_array->obj_at(index));
|
Handle stackFrame(THREAD, frames_array->obj_at(index));
|
||||||
fill_stackframe(stackFrame, method, CHECK);
|
fill_stackframe(stackFrame, method, CHECK);
|
||||||
} else {
|
} else {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue