Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_hotspot
提交
17531575
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看板
提交
17531575
编写于
2月 15, 2017
作者:
R
roland
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
8174164: SafePointNode::_replaced_nodes breaks with irreducible loops
Reviewed-by: kvn
上级
929d2d38
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
11 addition
and
7 deletion
+11
-7
src/share/vm/opto/callnode.hpp
src/share/vm/opto/callnode.hpp
+2
-2
src/share/vm/opto/parse1.cpp
src/share/vm/opto/parse1.cpp
+2
-2
src/share/vm/opto/replacednodes.cpp
src/share/vm/opto/replacednodes.cpp
+6
-2
src/share/vm/opto/replacednodes.hpp
src/share/vm/opto/replacednodes.hpp
+1
-1
未找到文件。
src/share/vm/opto/callnode.hpp
浏览文件 @
17531575
...
...
@@ -449,8 +449,8 @@ public:
void
delete_replaced_nodes
()
{
_replaced_nodes
.
reset
();
}
void
apply_replaced_nodes
()
{
_replaced_nodes
.
apply
(
this
);
void
apply_replaced_nodes
(
uint
idx
)
{
_replaced_nodes
.
apply
(
this
,
idx
);
}
void
merge_replaced_nodes_with
(
SafePointNode
*
sfpt
)
{
_replaced_nodes
.
merge_with
(
sfpt
->
_replaced_nodes
);
...
...
src/share/vm/opto/parse1.cpp
浏览文件 @
17531575
...
...
@@ -1048,7 +1048,7 @@ void Parse::do_exits() {
kit
.
make_dtrace_method_exit
(
method
());
}
if
(
_replaced_nodes_for_exceptions
)
{
kit
.
map
()
->
apply_replaced_nodes
();
kit
.
map
()
->
apply_replaced_nodes
(
_new_idx
);
}
// Done with exception-path processing.
ex_map
=
kit
.
make_exception_state
(
ex_oop
);
...
...
@@ -1069,7 +1069,7 @@ void Parse::do_exits() {
_exits
.
add_exception_state
(
ex_map
);
}
}
_exits
.
map
()
->
apply_replaced_nodes
();
_exits
.
map
()
->
apply_replaced_nodes
(
_new_idx
);
}
//-----------------------------create_entry_map-------------------------------
...
...
src/share/vm/opto/replacednodes.cpp
浏览文件 @
17531575
...
...
@@ -91,13 +91,17 @@ void ReplacedNodes::reset() {
}
// Perfom node replacement (used when returning to caller)
void
ReplacedNodes
::
apply
(
Node
*
n
)
{
void
ReplacedNodes
::
apply
(
Node
*
n
,
uint
idx
)
{
if
(
is_empty
())
{
return
;
}
for
(
int
i
=
0
;
i
<
_replaced_nodes
->
length
();
i
++
)
{
ReplacedNode
replaced
=
_replaced_nodes
->
at
(
i
);
n
->
replace_edge
(
replaced
.
initial
(),
replaced
.
improved
());
// Only apply if improved node was created in a callee to avoid
// issues with irreducible loops in the caller
if
(
replaced
.
improved
()
->
_idx
>=
idx
)
{
n
->
replace_edge
(
replaced
.
initial
(),
replaced
.
improved
());
}
}
}
...
...
src/share/vm/opto/replacednodes.hpp
浏览文件 @
17531575
...
...
@@ -71,7 +71,7 @@ class ReplacedNodes VALUE_OBJ_CLASS_SPEC {
void
record
(
Node
*
initial
,
Node
*
improved
);
void
transfer_from
(
const
ReplacedNodes
&
other
,
uint
idx
);
void
reset
();
void
apply
(
Node
*
n
);
void
apply
(
Node
*
n
,
uint
idx
);
void
merge_with
(
const
ReplacedNodes
&
other
);
bool
is_empty
()
const
;
void
dump
(
outputStream
*
st
)
const
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录