Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_hotspot
提交
25dcc190
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看板
提交
25dcc190
编写于
11月 18, 2013
作者:
S
sla
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
8027630: SIGSEGV in const char*Klass::external_name()
Reviewed-by: coleenp, sspitsyn, mgronlun
上级
15af8326
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
44 addition
and
1 deletion
+44
-1
src/share/vm/classfile/metadataOnStackMark.cpp
src/share/vm/classfile/metadataOnStackMark.cpp
+2
-0
src/share/vm/services/threadService.cpp
src/share/vm/services/threadService.cpp
+33
-0
src/share/vm/services/threadService.hpp
src/share/vm/services/threadService.hpp
+9
-1
未找到文件。
src/share/vm/classfile/metadataOnStackMark.cpp
浏览文件 @
25dcc190
...
...
@@ -30,6 +30,7 @@
#include "prims/jvmtiImpl.hpp"
#include "runtime/synchronizer.hpp"
#include "runtime/thread.hpp"
#include "services/threadService.hpp"
#include "utilities/growableArray.hpp"
...
...
@@ -50,6 +51,7 @@ MetadataOnStackMark::MetadataOnStackMark() {
CodeCache
::
alive_nmethods_do
(
nmethod
::
mark_on_stack
);
CompileBroker
::
mark_on_stack
();
JvmtiCurrentBreakpoints
::
metadata_do
(
Metadata
::
mark_on_stack
);
ThreadService
::
metadata_do
(
Metadata
::
mark_on_stack
);
}
MetadataOnStackMark
::~
MetadataOnStackMark
()
{
...
...
src/share/vm/services/threadService.cpp
浏览文件 @
25dcc190
...
...
@@ -200,6 +200,12 @@ void ThreadService::oops_do(OopClosure* f) {
}
}
void
ThreadService
::
metadata_do
(
void
f
(
Metadata
*
))
{
for
(
ThreadDumpResult
*
dump
=
_threaddump_list
;
dump
!=
NULL
;
dump
=
dump
->
next
())
{
dump
->
metadata_do
(
f
);
}
}
void
ThreadService
::
add_thread_dump
(
ThreadDumpResult
*
dump
)
{
MutexLocker
ml
(
Management_lock
);
if
(
_threaddump_list
==
NULL
)
{
...
...
@@ -451,9 +457,16 @@ void ThreadDumpResult::oops_do(OopClosure* f) {
}
}
void
ThreadDumpResult
::
metadata_do
(
void
f
(
Metadata
*
))
{
for
(
ThreadSnapshot
*
ts
=
_snapshots
;
ts
!=
NULL
;
ts
=
ts
->
next
())
{
ts
->
metadata_do
(
f
);
}
}
StackFrameInfo
::
StackFrameInfo
(
javaVFrame
*
jvf
,
bool
with_lock_info
)
{
_method
=
jvf
->
method
();
_bci
=
jvf
->
bci
();
_class_holder
=
_method
->
method_holder
()
->
klass_holder
();
_locked_monitors
=
NULL
;
if
(
with_lock_info
)
{
ResourceMark
rm
;
...
...
@@ -477,6 +490,11 @@ void StackFrameInfo::oops_do(OopClosure* f) {
f
->
do_oop
((
oop
*
)
_locked_monitors
->
adr_at
(
i
));
}
}
f
->
do_oop
(
&
_class_holder
);
}
void
StackFrameInfo
::
metadata_do
(
void
f
(
Metadata
*
))
{
f
(
_method
);
}
void
StackFrameInfo
::
print_on
(
outputStream
*
st
)
const
{
...
...
@@ -620,6 +638,14 @@ void ThreadStackTrace::oops_do(OopClosure* f) {
}
}
void
ThreadStackTrace
::
metadata_do
(
void
f
(
Metadata
*
))
{
int
length
=
_frames
->
length
();
for
(
int
i
=
0
;
i
<
length
;
i
++
)
{
_frames
->
at
(
i
)
->
metadata_do
(
f
);
}
}
ConcurrentLocksDump
::~
ConcurrentLocksDump
()
{
if
(
_retain_map_on_free
)
{
return
;
...
...
@@ -823,6 +849,13 @@ void ThreadSnapshot::oops_do(OopClosure* f) {
}
}
void
ThreadSnapshot
::
metadata_do
(
void
f
(
Metadata
*
))
{
if
(
_stack_trace
!=
NULL
)
{
_stack_trace
->
metadata_do
(
f
);
}
}
DeadlockCycle
::
DeadlockCycle
()
{
_is_deadlock
=
false
;
_threads
=
new
(
ResourceObj
::
C_HEAP
,
mtInternal
)
GrowableArray
<
JavaThread
*>
(
INITIAL_ARRAY_SIZE
,
true
);
...
...
src/share/vm/services/threadService.hpp
浏览文件 @
25dcc190
...
...
@@ -113,6 +113,7 @@ public:
// GC support
static
void
oops_do
(
OopClosure
*
f
);
static
void
metadata_do
(
void
f
(
Metadata
*
));
};
// Per-thread Statistics for synchronization
...
...
@@ -242,6 +243,7 @@ public:
void
dump_stack_at_safepoint
(
int
max_depth
,
bool
with_locked_monitors
);
void
set_concurrent_locks
(
ThreadConcurrentLocks
*
l
)
{
_concurrent_locks
=
l
;
}
void
oops_do
(
OopClosure
*
f
);
void
metadata_do
(
void
f
(
Metadata
*
));
};
class
ThreadStackTrace
:
public
CHeapObj
<
mtInternal
>
{
...
...
@@ -265,6 +267,7 @@ class ThreadStackTrace : public CHeapObj<mtInternal> {
void
dump_stack_at_safepoint
(
int
max_depth
);
Handle
allocate_fill_stack_trace_element_array
(
TRAPS
);
void
oops_do
(
OopClosure
*
f
);
void
metadata_do
(
void
f
(
Metadata
*
));
GrowableArray
<
oop
>*
jni_locked_monitors
()
{
return
_jni_locked_monitors
;
}
int
num_jni_locked_monitors
()
{
return
(
_jni_locked_monitors
!=
NULL
?
_jni_locked_monitors
->
length
()
:
0
);
}
...
...
@@ -280,6 +283,9 @@ class StackFrameInfo : public CHeapObj<mtInternal> {
Method
*
_method
;
int
_bci
;
GrowableArray
<
oop
>*
_locked_monitors
;
// list of object monitors locked by this frame
// We need to save the mirrors in the backtrace to keep the class
// from being unloaded while we still have this stack trace.
oop
_class_holder
;
public:
...
...
@@ -289,9 +295,10 @@ class StackFrameInfo : public CHeapObj<mtInternal> {
delete
_locked_monitors
;
}
};
Method
*
method
()
const
{
return
_method
;
}
Method
*
method
()
const
{
return
_method
;
}
int
bci
()
const
{
return
_bci
;
}
void
oops_do
(
OopClosure
*
f
);
void
metadata_do
(
void
f
(
Metadata
*
));
int
num_locked_monitors
()
{
return
(
_locked_monitors
!=
NULL
?
_locked_monitors
->
length
()
:
0
);
}
GrowableArray
<
oop
>*
locked_monitors
()
{
return
_locked_monitors
;
}
...
...
@@ -354,6 +361,7 @@ class ThreadDumpResult : public StackObj {
int
num_snapshots
()
{
return
_num_snapshots
;
}
ThreadSnapshot
*
snapshots
()
{
return
_snapshots
;
}
void
oops_do
(
OopClosure
*
f
);
void
metadata_do
(
void
f
(
Metadata
*
));
};
class
DeadlockCycle
:
public
CHeapObj
<
mtInternal
>
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录