Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_hotspot
提交
aecf487f
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看板
提交
aecf487f
编写于
4月 14, 2011
作者:
I
iveresov
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
7036236: VM crashes assert((!inside_attrs()) || is_error_reported()) failed ...
Summary: Eliminate the race condition. Reviewed-by: kvn
上级
d4e8a041
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
19 addition
and
5 deletion
+19
-5
src/share/vm/code/codeCache.cpp
src/share/vm/code/codeCache.cpp
+0
-2
src/share/vm/compiler/compileBroker.cpp
src/share/vm/compiler/compileBroker.cpp
+7
-1
src/share/vm/runtime/sweeper.cpp
src/share/vm/runtime/sweeper.cpp
+12
-2
未找到文件。
src/share/vm/code/codeCache.cpp
浏览文件 @
aecf487f
...
@@ -971,8 +971,6 @@ size_t CodeCache::largest_free_block() {
...
@@ -971,8 +971,6 @@ size_t CodeCache::largest_free_block() {
if
(
CodeCache_lock
->
owned_by_self
())
{
if
(
CodeCache_lock
->
owned_by_self
())
{
return
_heap
->
largest_free_block
();
return
_heap
->
largest_free_block
();
}
else
{
}
else
{
// Avoid lock ordering problems with ttyLock.
ttyUnlocker
ttyul
;
MutexLockerEx
mu
(
CodeCache_lock
,
Mutex
::
_no_safepoint_check_flag
);
MutexLockerEx
mu
(
CodeCache_lock
,
Mutex
::
_no_safepoint_check_flag
);
return
_heap
->
largest_free_block
();
return
_heap
->
largest_free_block
();
}
}
...
...
src/share/vm/compiler/compileBroker.cpp
浏览文件 @
aecf487f
...
@@ -1736,8 +1736,14 @@ void CompileBroker::handle_full_code_cache() {
...
@@ -1736,8 +1736,14 @@ void CompileBroker::handle_full_code_cache() {
UseInterpreter
=
true
;
UseInterpreter
=
true
;
if
(
UseCompiler
||
AlwaysCompileLoopMethods
)
{
if
(
UseCompiler
||
AlwaysCompileLoopMethods
)
{
if
(
xtty
!=
NULL
)
{
if
(
xtty
!=
NULL
)
{
stringStream
s
;
// Dump code cache state into a buffer before locking the tty,
// because log_state() will use locks causing lock conflicts.
CodeCache
::
log_state
(
&
s
);
// Lock to prevent tearing
ttyLocker
ttyl
;
xtty
->
begin_elem
(
"code_cache_full"
);
xtty
->
begin_elem
(
"code_cache_full"
);
CodeCache
::
log_state
(
xtty
);
xtty
->
print
(
s
.
as_string
()
);
xtty
->
stamp
();
xtty
->
stamp
();
xtty
->
end_elem
();
xtty
->
end_elem
();
}
}
...
...
src/share/vm/runtime/sweeper.cpp
浏览文件 @
aecf487f
...
@@ -418,6 +418,11 @@ void NMethodSweeper::speculative_disconnect_nmethods(bool is_full) {
...
@@ -418,6 +418,11 @@ void NMethodSweeper::speculative_disconnect_nmethods(bool is_full) {
// state of the code cache if it's requested.
// state of the code cache if it's requested.
void
NMethodSweeper
::
log_sweep
(
const
char
*
msg
,
const
char
*
format
,
...)
{
void
NMethodSweeper
::
log_sweep
(
const
char
*
msg
,
const
char
*
format
,
...)
{
if
(
PrintMethodFlushing
)
{
if
(
PrintMethodFlushing
)
{
stringStream
s
;
// Dump code cache state into a buffer before locking the tty,
// because log_state() will use locks causing lock conflicts.
CodeCache
::
log_state
(
&
s
);
ttyLocker
ttyl
;
ttyLocker
ttyl
;
tty
->
print
(
"### sweeper: %s "
,
msg
);
tty
->
print
(
"### sweeper: %s "
,
msg
);
if
(
format
!=
NULL
)
{
if
(
format
!=
NULL
)
{
...
@@ -426,10 +431,15 @@ void NMethodSweeper::log_sweep(const char* msg, const char* format, ...) {
...
@@ -426,10 +431,15 @@ void NMethodSweeper::log_sweep(const char* msg, const char* format, ...) {
tty
->
vprint
(
format
,
ap
);
tty
->
vprint
(
format
,
ap
);
va_end
(
ap
);
va_end
(
ap
);
}
}
CodeCache
::
log_state
(
tty
);
tty
->
cr
(
);
tty
->
print_cr
(
s
.
as_string
()
);
}
}
if
(
LogCompilation
&&
(
xtty
!=
NULL
))
{
if
(
LogCompilation
&&
(
xtty
!=
NULL
))
{
stringStream
s
;
// Dump code cache state into a buffer before locking the tty,
// because log_state() will use locks causing lock conflicts.
CodeCache
::
log_state
(
&
s
);
ttyLocker
ttyl
;
ttyLocker
ttyl
;
xtty
->
begin_elem
(
"sweeper state='%s' traversals='"
INTX_FORMAT
"' "
,
msg
,
(
intx
)
traversal_count
());
xtty
->
begin_elem
(
"sweeper state='%s' traversals='"
INTX_FORMAT
"' "
,
msg
,
(
intx
)
traversal_count
());
if
(
format
!=
NULL
)
{
if
(
format
!=
NULL
)
{
...
@@ -438,7 +448,7 @@ void NMethodSweeper::log_sweep(const char* msg, const char* format, ...) {
...
@@ -438,7 +448,7 @@ void NMethodSweeper::log_sweep(const char* msg, const char* format, ...) {
xtty
->
vprint
(
format
,
ap
);
xtty
->
vprint
(
format
,
ap
);
va_end
(
ap
);
va_end
(
ap
);
}
}
CodeCache
::
log_state
(
xtty
);
xtty
->
print
(
s
.
as_string
()
);
xtty
->
stamp
();
xtty
->
stamp
();
xtty
->
end_elem
();
xtty
->
end_elem
();
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录