Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_hotspot
提交
f1dae986
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看板
提交
f1dae986
编写于
6月 25, 2014
作者:
S
stefank
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
8047323: Remove unused _copy_metadata_obj_cl in G1CopyingKeepAliveClosure
Reviewed-by: mgerdin, tschatzl
上级
afffc5eb
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
4 addition
and
19 deletion
+4
-19
src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp
src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp
+4
-19
未找到文件。
src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp
浏览文件 @
f1dae986
...
...
@@ -5124,17 +5124,14 @@ public:
class
G1CopyingKeepAliveClosure
:
public
OopClosure
{
G1CollectedHeap
*
_g1h
;
OopClosure
*
_copy_non_heap_obj_cl
;
OopsInHeapRegionClosure
*
_copy_metadata_obj_cl
;
G1ParScanThreadState
*
_par_scan_state
;
public:
G1CopyingKeepAliveClosure
(
G1CollectedHeap
*
g1h
,
OopClosure
*
non_heap_obj_cl
,
OopsInHeapRegionClosure
*
metadata_obj_cl
,
G1ParScanThreadState
*
pss
)
:
_g1h
(
g1h
),
_copy_non_heap_obj_cl
(
non_heap_obj_cl
),
_copy_metadata_obj_cl
(
metadata_obj_cl
),
_par_scan_state
(
pss
)
{}
...
...
@@ -5167,7 +5164,7 @@ public:
_par_scan_state
->
push_on_queue
(
p
);
}
else
{
assert
(
!
Metaspace
::
contains
((
const
void
*
)
p
),
err_msg
(
"
Otherwise need to call _copy_metadata_obj_cl->do_oop(p)
"
err_msg
(
"
Unexpectedly found a pointer from metadata:
"
PTR_FORMAT
,
p
));
_copy_non_heap_obj_cl
->
do_oop
(
p
);
}
...
...
@@ -5262,22 +5259,18 @@ public:
pss
.
set_evac_failure_closure
(
&
evac_failure_cl
);
G1ParScanExtRootClosure
only_copy_non_heap_cl
(
_g1h
,
&
pss
,
NULL
);
G1ParScanMetadataClosure
only_copy_metadata_cl
(
_g1h
,
&
pss
,
NULL
);
G1ParScanAndMarkExtRootClosure
copy_mark_non_heap_cl
(
_g1h
,
&
pss
,
NULL
);
G1ParScanAndMarkMetadataClosure
copy_mark_metadata_cl
(
_g1h
,
&
pss
,
NULL
);
OopClosure
*
copy_non_heap_cl
=
&
only_copy_non_heap_cl
;
OopsInHeapRegionClosure
*
copy_metadata_cl
=
&
only_copy_metadata_cl
;
if
(
_g1h
->
g1_policy
()
->
during_initial_mark_pause
())
{
// We also need to mark copied objects.
copy_non_heap_cl
=
&
copy_mark_non_heap_cl
;
copy_metadata_cl
=
&
copy_mark_metadata_cl
;
}
// Keep alive closure.
G1CopyingKeepAliveClosure
keep_alive
(
_g1h
,
copy_non_heap_cl
,
copy_metadata_cl
,
&
pss
);
G1CopyingKeepAliveClosure
keep_alive
(
_g1h
,
copy_non_heap_cl
,
&
pss
);
// Complete GC closure
G1ParEvacuateFollowersClosure
drain_queue
(
_g1h
,
&
pss
,
_task_queues
,
_terminator
);
...
...
@@ -5371,18 +5364,14 @@ public:
assert
(
pss
.
queue_is_empty
(),
"both queue and overflow should be empty"
);
G1ParScanExtRootClosure
only_copy_non_heap_cl
(
_g1h
,
&
pss
,
NULL
);
G1ParScanMetadataClosure
only_copy_metadata_cl
(
_g1h
,
&
pss
,
NULL
);
G1ParScanAndMarkExtRootClosure
copy_mark_non_heap_cl
(
_g1h
,
&
pss
,
NULL
);
G1ParScanAndMarkMetadataClosure
copy_mark_metadata_cl
(
_g1h
,
&
pss
,
NULL
);
OopClosure
*
copy_non_heap_cl
=
&
only_copy_non_heap_cl
;
OopsInHeapRegionClosure
*
copy_metadata_cl
=
&
only_copy_metadata_cl
;
if
(
_g1h
->
g1_policy
()
->
during_initial_mark_pause
())
{
// We also need to mark copied objects.
copy_non_heap_cl
=
&
copy_mark_non_heap_cl
;
copy_metadata_cl
=
&
copy_mark_metadata_cl
;
}
// Is alive closure
...
...
@@ -5390,7 +5379,7 @@ public:
// Copying keep alive closure. Applied to referent objects that need
// to be copied.
G1CopyingKeepAliveClosure
keep_alive
(
_g1h
,
copy_non_heap_cl
,
copy_metadata_cl
,
&
pss
);
G1CopyingKeepAliveClosure
keep_alive
(
_g1h
,
copy_non_heap_cl
,
&
pss
);
ReferenceProcessor
*
rp
=
_g1h
->
ref_processor_cm
();
...
...
@@ -5496,22 +5485,18 @@ void G1CollectedHeap::process_discovered_references(uint no_of_gc_workers) {
assert
(
pss
.
queue_is_empty
(),
"pre-condition"
);
G1ParScanExtRootClosure
only_copy_non_heap_cl
(
this
,
&
pss
,
NULL
);
G1ParScanMetadataClosure
only_copy_metadata_cl
(
this
,
&
pss
,
NULL
);
G1ParScanAndMarkExtRootClosure
copy_mark_non_heap_cl
(
this
,
&
pss
,
NULL
);
G1ParScanAndMarkMetadataClosure
copy_mark_metadata_cl
(
this
,
&
pss
,
NULL
);
OopClosure
*
copy_non_heap_cl
=
&
only_copy_non_heap_cl
;
OopsInHeapRegionClosure
*
copy_metadata_cl
=
&
only_copy_metadata_cl
;
if
(
_g1h
->
g1_policy
()
->
during_initial_mark_pause
())
{
// We also need to mark copied objects.
copy_non_heap_cl
=
&
copy_mark_non_heap_cl
;
copy_metadata_cl
=
&
copy_mark_metadata_cl
;
}
// Keep alive closure.
G1CopyingKeepAliveClosure
keep_alive
(
this
,
copy_non_heap_cl
,
copy_metadata_cl
,
&
pss
);
G1CopyingKeepAliveClosure
keep_alive
(
this
,
copy_non_heap_cl
,
&
pss
);
// Serial Complete GC closure
G1STWDrainQueueClosure
drain_queue
(
this
,
&
pss
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录