Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_hotspot
提交
330543aa
D
dragonwell8_hotspot
项目概览
openanolis
/
dragonwell8_hotspot
通知
2
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
dragonwell8_hotspot
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
330543aa
编写于
4月 01, 2010
作者:
N
never
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
6936709: AsyncGetCallTrace doesn't handle inexact stack walking properly
Reviewed-by: kvn
上级
357affb3
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
35 addition
and
32 deletion
+35
-32
src/share/vm/prims/forte.cpp
src/share/vm/prims/forte.cpp
+35
-32
未找到文件。
src/share/vm/prims/forte.cpp
浏览文件 @
330543aa
...
...
@@ -55,8 +55,7 @@ class vframeStreamForte : public vframeStreamCommon {
};
static
void
is_decipherable_compiled_frame
(
frame
*
fr
,
RegisterMap
*
map
,
bool
*
is_compiled_p
,
bool
*
is_walkable_p
);
static
bool
is_decipherable_compiled_frame
(
JavaThread
*
thread
,
frame
*
fr
,
nmethod
*
nm
);
static
bool
is_decipherable_interpreted_frame
(
JavaThread
*
thread
,
frame
*
fr
,
methodOop
*
method_p
,
...
...
@@ -122,26 +121,30 @@ void vframeStreamForte::forte_next() {
// Determine if 'fr' is a decipherable compiled frame. We are already
// assured that fr is for a java nmethod.
static
bool
is_decipherable_compiled_frame
(
frame
*
fr
)
{
assert
(
fr
->
cb
()
!=
NULL
&&
fr
->
cb
()
->
is_nmethod
(),
"invariant"
);
nmethod
*
nm
=
(
nmethod
*
)
fr
->
cb
();
static
bool
is_decipherable_compiled_frame
(
JavaThread
*
thread
,
frame
*
fr
,
nmethod
*
nm
)
{
assert
(
nm
->
is_java_method
(),
"invariant"
);
// First try and find an exact PcDesc
if
(
thread
->
has_last_Java_frame
()
&&
thread
->
last_Java_pc
()
==
fr
->
pc
())
{
// We're stopped at a call into the JVM so look for a PcDesc with
// the actual pc reported by the frame.
PcDesc
*
pc_desc
=
nm
->
pc_desc_at
(
fr
->
pc
());
// Did we find a useful PcDesc?
if
(
pc_desc
!=
NULL
&&
pc_desc
->
scope_decode_offset
()
==
DebugInformationRecorder
::
serialized_null
)
{
pc_desc
->
scope_decode_offset
()
!=
DebugInformationRecorder
::
serialized_null
)
{
return
true
;
}
}
address
probe_pc
=
fr
->
pc
()
+
1
;
pc_desc
=
nm
->
pc_desc_near
(
probe_pc
);
// We're at some random pc in the nmethod so search for the PcDesc
// whose pc is greater than the current PC. It's done this way
// because the extra PcDescs that are recorded for improved debug
// info record the end of the region covered by the ScopeDesc
// instead of the beginning.
PcDesc
*
pc_desc
=
nm
->
pc_desc_near
(
fr
->
pc
()
+
1
);
// Now do we have a useful PcDesc?
if
(
pc_desc
!=
NULL
&&
if
(
pc_desc
==
NULL
||
pc_desc
->
scope_decode_offset
()
==
DebugInformationRecorder
::
serialized_null
)
{
// No debug information available for this pc
// vframeStream would explode if we try and walk the frames.
...
...
@@ -150,13 +153,11 @@ static bool is_decipherable_compiled_frame(frame* fr) {
// This PcDesc is useful however we must adjust the frame's pc
// so that the vframeStream lookups will use this same pc
fr
->
set_pc
(
pc_desc
->
real_pc
(
nm
));
}
return
true
;
}
// Determine if 'fr' is a walkable interpreted frame. Returns false
// if it is not. *method_p, and *bci_p are not set when false is
// returned. *method_p is non-NULL if frame was executing a Java
...
...
@@ -323,13 +324,15 @@ static bool find_initial_Java_frame(JavaThread* thread,
// have a PCDesc that can get us a bci however we did find
// a method
if
(
!
is_decipherable_compiled_frame
(
&
candidate
))
{
if
(
!
is_decipherable_compiled_frame
(
thread
,
&
candidate
,
nm
))
{
return
false
;
}
// is_decipherable_compiled_frame may modify candidate's pc
*
initial_frame_p
=
candidate
;
assert
(
nm
->
pc_desc_at
(
candidate
.
pc
())
!=
NULL
,
"if it's decipherable then pc must be valid"
);
return
true
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录