Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_hotspot
提交
80280245
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看板
提交
80280245
编写于
6月 23, 2014
作者:
R
rbackman
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
8046289: compiler/6340864/TestLongVect.java timeout with
Reviewed-by: iveresov, vlivanov
上级
402f8371
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
14 addition
and
5 deletion
+14
-5
src/share/vm/opto/parse.hpp
src/share/vm/opto/parse.hpp
+3
-2
src/share/vm/opto/parse2.cpp
src/share/vm/opto/parse2.cpp
+11
-3
未找到文件。
src/share/vm/opto/parse.hpp
浏览文件 @
80280245
...
@@ -551,8 +551,9 @@ class Parse : public GraphKit {
...
@@ -551,8 +551,9 @@ class Parse : public GraphKit {
float
dynamic_branch_prediction
(
float
&
cnt
);
float
dynamic_branch_prediction
(
float
&
cnt
);
float
branch_prediction
(
float
&
cnt
,
BoolTest
::
mask
btest
,
int
target_bci
);
float
branch_prediction
(
float
&
cnt
,
BoolTest
::
mask
btest
,
int
target_bci
);
bool
seems_never_taken
(
float
prob
);
bool
seems_never_taken
(
float
prob
)
const
;
bool
seems_stable_comparison
(
BoolTest
::
mask
btest
,
Node
*
c
);
bool
path_is_suitable_for_uncommon_trap
(
float
prob
)
const
;
bool
seems_stable_comparison
()
const
;
void
do_ifnull
(
BoolTest
::
mask
btest
,
Node
*
c
);
void
do_ifnull
(
BoolTest
::
mask
btest
,
Node
*
c
);
void
do_if
(
BoolTest
::
mask
btest
,
Node
*
c
);
void
do_if
(
BoolTest
::
mask
btest
,
Node
*
c
);
...
...
src/share/vm/opto/parse2.cpp
浏览文件 @
80280245
...
@@ -884,7 +884,7 @@ float Parse::branch_prediction(float& cnt,
...
@@ -884,7 +884,7 @@ float Parse::branch_prediction(float& cnt,
// some branches (e.g., _213_javac.Assembler.eliminate) validly produce
// some branches (e.g., _213_javac.Assembler.eliminate) validly produce
// very small but nonzero probabilities, which if confused with zero
// very small but nonzero probabilities, which if confused with zero
// counts would keep the program recompiling indefinitely.
// counts would keep the program recompiling indefinitely.
bool
Parse
::
seems_never_taken
(
float
prob
)
{
bool
Parse
::
seems_never_taken
(
float
prob
)
const
{
return
prob
<
PROB_MIN
;
return
prob
<
PROB_MIN
;
}
}
...
@@ -896,7 +896,7 @@ bool Parse::seems_never_taken(float prob) {
...
@@ -896,7 +896,7 @@ bool Parse::seems_never_taken(float prob) {
// already acting in a stable fashion. If the comparison
// already acting in a stable fashion. If the comparison
// seems stable, we will put an expensive uncommon trap
// seems stable, we will put an expensive uncommon trap
// on the untaken path.
// on the untaken path.
bool
Parse
::
seems_stable_comparison
(
BoolTest
::
mask
btest
,
Node
*
cmp
)
{
bool
Parse
::
seems_stable_comparison
(
)
const
{
if
(
C
->
too_many_traps
(
method
(),
bci
(),
Deoptimization
::
Reason_unstable_if
))
{
if
(
C
->
too_many_traps
(
method
(),
bci
(),
Deoptimization
::
Reason_unstable_if
))
{
return
false
;
return
false
;
}
}
...
@@ -1125,6 +1125,14 @@ void Parse::do_if(BoolTest::mask btest, Node* c) {
...
@@ -1125,6 +1125,14 @@ void Parse::do_if(BoolTest::mask btest, Node* c) {
}
}
}
}
bool
Parse
::
path_is_suitable_for_uncommon_trap
(
float
prob
)
const
{
// Don't want to speculate on uncommon traps when running with -Xcomp
if
(
!
UseInterpreter
)
{
return
false
;
}
return
(
seems_never_taken
(
prob
)
&&
seems_stable_comparison
());
}
//----------------------------adjust_map_after_if------------------------------
//----------------------------adjust_map_after_if------------------------------
// Adjust the JVM state to reflect the result of taking this path.
// Adjust the JVM state to reflect the result of taking this path.
// Basically, it means inspecting the CmpNode controlling this
// Basically, it means inspecting the CmpNode controlling this
...
@@ -1138,7 +1146,7 @@ void Parse::adjust_map_after_if(BoolTest::mask btest, Node* c, float prob,
...
@@ -1138,7 +1146,7 @@ void Parse::adjust_map_after_if(BoolTest::mask btest, Node* c, float prob,
bool
is_fallthrough
=
(
path
==
successor_for_bci
(
iter
().
next_bci
()));
bool
is_fallthrough
=
(
path
==
successor_for_bci
(
iter
().
next_bci
()));
if
(
seems_never_taken
(
prob
)
&&
seems_stable_comparison
(
btest
,
c
))
{
if
(
path_is_suitable_for_uncommon_trap
(
prob
))
{
repush_if_args
();
repush_if_args
();
uncommon_trap
(
Deoptimization
::
Reason_unstable_if
,
uncommon_trap
(
Deoptimization
::
Reason_unstable_if
,
Deoptimization
::
Action_reinterpret
,
Deoptimization
::
Action_reinterpret
,
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录