Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_hotspot
提交
8af5aec8
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看板
提交
8af5aec8
编写于
9月 28, 2012
作者:
S
stefank
浏览文件
操作
浏览文件
下载
差异文件
Merge
上级
d4611ba6
3b186186
变更
11
隐藏空白更改
内联
并排
Showing
11 changed file
with
17 addition
and
32 deletion
+17
-32
src/share/vm/code/codeCache.cpp
src/share/vm/code/codeCache.cpp
+2
-4
src/share/vm/code/codeCache.hpp
src/share/vm/code/codeCache.hpp
+1
-3
src/share/vm/code/nmethod.cpp
src/share/vm/code/nmethod.cpp
+4
-7
src/share/vm/code/nmethod.hpp
src/share/vm/code/nmethod.hpp
+2
-4
src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp
...ion/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp
+1
-3
src/share/vm/gc_implementation/g1/g1GCPhaseTimes.cpp
src/share/vm/gc_implementation/g1/g1GCPhaseTimes.cpp
+1
-1
src/share/vm/gc_implementation/g1/g1MarkSweep.cpp
src/share/vm/gc_implementation/g1/g1MarkSweep.cpp
+1
-3
src/share/vm/gc_implementation/parallelScavenge/psMarkSweep.cpp
...are/vm/gc_implementation/parallelScavenge/psMarkSweep.cpp
+1
-2
src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp
.../gc_implementation/parallelScavenge/psParallelCompact.cpp
+1
-2
src/share/vm/memory/genMarkSweep.cpp
src/share/vm/memory/genMarkSweep.cpp
+1
-1
src/share/vm/memory/metaspace.cpp
src/share/vm/memory/metaspace.cpp
+2
-2
未找到文件。
src/share/vm/code/codeCache.cpp
浏览文件 @
8af5aec8
...
@@ -309,12 +309,10 @@ int CodeCache::alignment_offset() {
...
@@ -309,12 +309,10 @@ int CodeCache::alignment_offset() {
// Mark nmethods for unloading if they contain otherwise unreachable
// Mark nmethods for unloading if they contain otherwise unreachable
// oops.
// oops.
void
CodeCache
::
do_unloading
(
BoolObjectClosure
*
is_alive
,
void
CodeCache
::
do_unloading
(
BoolObjectClosure
*
is_alive
,
bool
unloading_occurred
)
{
OopClosure
*
keep_alive
,
bool
unloading_occurred
)
{
assert_locked_or_safepoint
(
CodeCache_lock
);
assert_locked_or_safepoint
(
CodeCache_lock
);
FOR_ALL_ALIVE_NMETHODS
(
nm
)
{
FOR_ALL_ALIVE_NMETHODS
(
nm
)
{
nm
->
do_unloading
(
is_alive
,
keep_alive
,
unloading_occurred
);
nm
->
do_unloading
(
is_alive
,
unloading_occurred
);
}
}
}
}
...
...
src/share/vm/code/codeCache.hpp
浏览文件 @
8af5aec8
...
@@ -130,9 +130,7 @@ class CodeCache : AllStatic {
...
@@ -130,9 +130,7 @@ class CodeCache : AllStatic {
// If "unloading_occurred" is true, then unloads (i.e., breaks root links
// If "unloading_occurred" is true, then unloads (i.e., breaks root links
// to) any unmarked codeBlobs in the cache. Sets "marked_for_unloading"
// to) any unmarked codeBlobs in the cache. Sets "marked_for_unloading"
// to "true" iff some code got unloaded.
// to "true" iff some code got unloaded.
static
void
do_unloading
(
BoolObjectClosure
*
is_alive
,
static
void
do_unloading
(
BoolObjectClosure
*
is_alive
,
bool
unloading_occurred
);
OopClosure
*
keep_alive
,
bool
unloading_occurred
);
static
void
oops_do
(
OopClosure
*
f
)
{
static
void
oops_do
(
OopClosure
*
f
)
{
CodeBlobToOopClosure
oopc
(
f
,
/*do_marking=*/
false
);
CodeBlobToOopClosure
oopc
(
f
,
/*do_marking=*/
false
);
blobs_do
(
&
oopc
);
blobs_do
(
&
oopc
);
...
...
src/share/vm/code/nmethod.cpp
浏览文件 @
8af5aec8
...
@@ -1472,9 +1472,7 @@ void nmethod::flush_dependencies(BoolObjectClosure* is_alive) {
...
@@ -1472,9 +1472,7 @@ void nmethod::flush_dependencies(BoolObjectClosure* is_alive) {
// If this oop is not live, the nmethod can be unloaded.
// If this oop is not live, the nmethod can be unloaded.
bool
nmethod
::
can_unload
(
BoolObjectClosure
*
is_alive
,
bool
nmethod
::
can_unload
(
BoolObjectClosure
*
is_alive
,
oop
*
root
,
bool
unloading_occurred
)
{
OopClosure
*
keep_alive
,
oop
*
root
,
bool
unloading_occurred
)
{
assert
(
root
!=
NULL
,
"just checking"
);
assert
(
root
!=
NULL
,
"just checking"
);
oop
obj
=
*
root
;
oop
obj
=
*
root
;
if
(
obj
==
NULL
||
is_alive
->
do_object_b
(
obj
))
{
if
(
obj
==
NULL
||
is_alive
->
do_object_b
(
obj
))
{
...
@@ -1583,8 +1581,7 @@ void nmethod::post_compiled_method_unload() {
...
@@ -1583,8 +1581,7 @@ void nmethod::post_compiled_method_unload() {
// GC to unload an nmethod if it contains otherwise unreachable
// GC to unload an nmethod if it contains otherwise unreachable
// oops.
// oops.
void
nmethod
::
do_unloading
(
BoolObjectClosure
*
is_alive
,
void
nmethod
::
do_unloading
(
BoolObjectClosure
*
is_alive
,
bool
unloading_occurred
)
{
OopClosure
*
keep_alive
,
bool
unloading_occurred
)
{
// Make sure the oop's ready to receive visitors
// Make sure the oop's ready to receive visitors
assert
(
!
is_zombie
()
&&
!
is_unloaded
(),
assert
(
!
is_zombie
()
&&
!
is_unloaded
(),
"should not call follow on zombie or unloaded nmethod"
);
"should not call follow on zombie or unloaded nmethod"
);
...
@@ -1672,7 +1669,7 @@ void nmethod::do_unloading(BoolObjectClosure* is_alive,
...
@@ -1672,7 +1669,7 @@ void nmethod::do_unloading(BoolObjectClosure* is_alive,
(
r
->
oop_addr
()
>=
oops_begin
()
&&
r
->
oop_addr
()
<
oops_end
()),
(
r
->
oop_addr
()
>=
oops_begin
()
&&
r
->
oop_addr
()
<
oops_end
()),
"oop must be found in exactly one place"
);
"oop must be found in exactly one place"
);
if
(
r
->
oop_is_immediate
()
&&
r
->
oop_value
()
!=
NULL
)
{
if
(
r
->
oop_is_immediate
()
&&
r
->
oop_value
()
!=
NULL
)
{
if
(
can_unload
(
is_alive
,
keep_alive
,
r
->
oop_addr
(),
unloading_occurred
))
{
if
(
can_unload
(
is_alive
,
r
->
oop_addr
(),
unloading_occurred
))
{
return
;
return
;
}
}
}
}
...
@@ -1684,7 +1681,7 @@ void nmethod::do_unloading(BoolObjectClosure* is_alive,
...
@@ -1684,7 +1681,7 @@ void nmethod::do_unloading(BoolObjectClosure* is_alive,
// Scopes
// Scopes
for
(
oop
*
p
=
oops_begin
();
p
<
oops_end
();
p
++
)
{
for
(
oop
*
p
=
oops_begin
();
p
<
oops_end
();
p
++
)
{
if
(
*
p
==
Universe
::
non_oop_word
())
continue
;
// skip non-oops
if
(
*
p
==
Universe
::
non_oop_word
())
continue
;
// skip non-oops
if
(
can_unload
(
is_alive
,
keep_alive
,
p
,
unloading_occurred
))
{
if
(
can_unload
(
is_alive
,
p
,
unloading_occurred
))
{
return
;
return
;
}
}
}
}
...
...
src/share/vm/code/nmethod.hpp
浏览文件 @
8af5aec8
...
@@ -556,10 +556,8 @@ public:
...
@@ -556,10 +556,8 @@ public:
void
set_method
(
Method
*
method
)
{
_method
=
method
;
}
void
set_method
(
Method
*
method
)
{
_method
=
method
;
}
// GC support
// GC support
void
do_unloading
(
BoolObjectClosure
*
is_alive
,
OopClosure
*
keep_alive
,
void
do_unloading
(
BoolObjectClosure
*
is_alive
,
bool
unloading_occurred
);
bool
unloading_occurred
);
bool
can_unload
(
BoolObjectClosure
*
is_alive
,
oop
*
root
,
bool
unloading_occurred
);
bool
can_unload
(
BoolObjectClosure
*
is_alive
,
OopClosure
*
keep_alive
,
oop
*
root
,
bool
unloading_occurred
);
void
preserve_callee_argument_oops
(
frame
fr
,
const
RegisterMap
*
reg_map
,
void
preserve_callee_argument_oops
(
frame
fr
,
const
RegisterMap
*
reg_map
,
OopClosure
*
f
);
OopClosure
*
f
);
...
...
src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp
浏览文件 @
8af5aec8
...
@@ -5954,9 +5954,7 @@ void CMSCollector::refProcessingWork(bool asynch, bool clear_all_soft_refs) {
...
@@ -5954,9 +5954,7 @@ void CMSCollector::refProcessingWork(bool asynch, bool clear_all_soft_refs) {
bool
purged_class
=
SystemDictionary
::
do_unloading
(
&
_is_alive_closure
);
bool
purged_class
=
SystemDictionary
::
do_unloading
(
&
_is_alive_closure
);
// Follow CodeCache roots and unload any methods marked for unloading
// Follow CodeCache roots and unload any methods marked for unloading
CodeCache
::
do_unloading
(
&
_is_alive_closure
,
CodeCache
::
do_unloading
(
&
_is_alive_closure
,
purged_class
);
&
cmsKeepAliveClosure
,
purged_class
);
cmsDrainMarkingStackClosure
.
do_void
();
cmsDrainMarkingStackClosure
.
do_void
();
verify_work_stacks_empty
();
verify_work_stacks_empty
();
...
...
src/share/vm/gc_implementation/g1/g1GCPhaseTimes.cpp
浏览文件 @
8af5aec8
...
@@ -129,7 +129,7 @@ void WorkerDataArray<T>::print(int level, const char* title) {
...
@@ -129,7 +129,7 @@ void WorkerDataArray<T>::print(int level, const char* title) {
buf
.
append_and_print_cr
(
"]"
);
buf
.
append_and_print_cr
(
"]"
);
}
}
#if
def ASSER
T
#if
ndef PRODUC
T
template
<
class
T
>
template
<
class
T
>
void
WorkerDataArray
<
T
>::
reset
()
{
void
WorkerDataArray
<
T
>::
reset
()
{
...
...
src/share/vm/gc_implementation/g1/g1MarkSweep.cpp
浏览文件 @
8af5aec8
...
@@ -151,9 +151,7 @@ void G1MarkSweep::mark_sweep_phase1(bool& marked_for_unloading,
...
@@ -151,9 +151,7 @@ void G1MarkSweep::mark_sweep_phase1(bool& marked_for_unloading,
// Follow code cache roots (has to be done after system dictionary,
// Follow code cache roots (has to be done after system dictionary,
// assumes all live klasses are marked)
// assumes all live klasses are marked)
CodeCache
::
do_unloading
(
&
GenMarkSweep
::
is_alive
,
CodeCache
::
do_unloading
(
&
GenMarkSweep
::
is_alive
,
purged_class
);
&
GenMarkSweep
::
keep_alive
,
purged_class
);
GenMarkSweep
::
follow_stack
();
GenMarkSweep
::
follow_stack
();
// Update subklass/sibling/implementor links of live klasses
// Update subklass/sibling/implementor links of live klasses
...
...
src/share/vm/gc_implementation/parallelScavenge/psMarkSweep.cpp
浏览文件 @
8af5aec8
...
@@ -521,8 +521,7 @@ void PSMarkSweep::mark_sweep_phase1(bool clear_all_softrefs) {
...
@@ -521,8 +521,7 @@ void PSMarkSweep::mark_sweep_phase1(bool clear_all_softrefs) {
bool
purged_class
=
SystemDictionary
::
do_unloading
(
is_alive_closure
());
bool
purged_class
=
SystemDictionary
::
do_unloading
(
is_alive_closure
());
// Follow code cache roots
// Follow code cache roots
CodeCache
::
do_unloading
(
is_alive_closure
(),
mark_and_push_closure
(),
CodeCache
::
do_unloading
(
is_alive_closure
(),
purged_class
);
purged_class
);
follow_stack
();
// Flush marking stack
follow_stack
();
// Flush marking stack
// Update subklass/sibling/implementor links of live klasses
// Update subklass/sibling/implementor links of live klasses
...
...
src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp
浏览文件 @
8af5aec8
...
@@ -2375,8 +2375,7 @@ void PSParallelCompact::marking_phase(ParCompactionManager* cm,
...
@@ -2375,8 +2375,7 @@ void PSParallelCompact::marking_phase(ParCompactionManager* cm,
bool
purged_class
=
SystemDictionary
::
do_unloading
(
is_alive_closure
());
bool
purged_class
=
SystemDictionary
::
do_unloading
(
is_alive_closure
());
// Follow code cache roots.
// Follow code cache roots.
CodeCache
::
do_unloading
(
is_alive_closure
(),
&
mark_and_push_closure
,
CodeCache
::
do_unloading
(
is_alive_closure
(),
purged_class
);
purged_class
);
cm
->
follow_marking_stacks
();
// Flush marking stack.
cm
->
follow_marking_stacks
();
// Flush marking stack.
// Update subklass/sibling/implementor links of live klasses
// Update subklass/sibling/implementor links of live klasses
...
...
src/share/vm/memory/genMarkSweep.cpp
浏览文件 @
8af5aec8
...
@@ -291,7 +291,7 @@ void GenMarkSweep::mark_sweep_phase1(int level,
...
@@ -291,7 +291,7 @@ void GenMarkSweep::mark_sweep_phase1(int level,
bool
purged_class
=
SystemDictionary
::
do_unloading
(
&
is_alive
);
bool
purged_class
=
SystemDictionary
::
do_unloading
(
&
is_alive
);
// Follow code cache roots
// Follow code cache roots
CodeCache
::
do_unloading
(
&
is_alive
,
&
keep_alive
,
purged_class
);
CodeCache
::
do_unloading
(
&
is_alive
,
purged_class
);
follow_stack
();
// Flush marking stack
follow_stack
();
// Flush marking stack
// Update subklass/sibling/implementor links of live klasses
// Update subklass/sibling/implementor links of live klasses
...
...
src/share/vm/memory/metaspace.cpp
浏览文件 @
8af5aec8
...
@@ -2518,7 +2518,7 @@ void SpaceManager::dump(outputStream* const out) const {
...
@@ -2518,7 +2518,7 @@ void SpaceManager::dump(outputStream* const out) const {
" waste "
SIZE_FORMAT
,
curr_total
,
used
,
free
,
capacity
,
waste
);
" waste "
SIZE_FORMAT
,
curr_total
,
used
,
free
,
capacity
,
waste
);
}
}
#if
ndef PRODUC
T
#if
def ASSER
T
void
SpaceManager
::
mangle_freed_chunks
()
{
void
SpaceManager
::
mangle_freed_chunks
()
{
for
(
ChunkIndex
index
=
SmallIndex
;
for
(
ChunkIndex
index
=
SmallIndex
;
index
<
NumberOfFreeLists
;
index
<
NumberOfFreeLists
;
...
@@ -2536,7 +2536,7 @@ void SpaceManager::mangle_freed_chunks() {
...
@@ -2536,7 +2536,7 @@ void SpaceManager::mangle_freed_chunks() {
}
}
}
}
}
}
#endif //
PRODUC
T
#endif //
ASSER
T
// MetaspaceAux
// MetaspaceAux
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录