提交 402082eb 编写于 作者: M mgronlun

8028412: AsyncGetCallTrace() is broken on x86 in JDK 7u40

Reviewed-by: kvn, sspitsyn
上级 32a94c91
...@@ -94,13 +94,6 @@ bool frame::safe_for_sender(JavaThread *thread) { ...@@ -94,13 +94,6 @@ bool frame::safe_for_sender(JavaThread *thread) {
// other generic buffer blobs are more problematic so we just assume they are // other generic buffer blobs are more problematic so we just assume they are
// ok. adapter blobs never have a frame complete and are never ok. // ok. adapter blobs never have a frame complete and are never ok.
// check for a valid frame_size, otherwise we are unlikely to get a valid sender_pc
if (!Interpreter::contains(_pc) && _cb->frame_size() <= 0) {
//assert(0, "Invalid frame_size");
return false;
}
if (!_cb->is_frame_complete_at(_pc)) { if (!_cb->is_frame_complete_at(_pc)) {
if (_cb->is_nmethod() || _cb->is_adapter_blob() || _cb->is_runtime_stub()) { if (_cb->is_nmethod() || _cb->is_adapter_blob() || _cb->is_runtime_stub()) {
return false; return false;
...@@ -144,6 +137,11 @@ bool frame::safe_for_sender(JavaThread *thread) { ...@@ -144,6 +137,11 @@ bool frame::safe_for_sender(JavaThread *thread) {
// must be some sort of compiled/runtime frame // must be some sort of compiled/runtime frame
// fp does not have to be safe (although it could be check for c1?) // fp does not have to be safe (although it could be check for c1?)
// check for a valid frame_size, otherwise we are unlikely to get a valid sender_pc
if (_cb->frame_size() <= 0) {
return false;
}
sender_sp = _unextended_sp + _cb->frame_size(); sender_sp = _unextended_sp + _cb->frame_size();
// On Intel the return_address is always the word on the stack // On Intel the return_address is always the word on the stack
sender_pc = (address) *(sender_sp-1); sender_pc = (address) *(sender_sp-1);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册