Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_hotspot
提交
38056108
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看板
提交
38056108
编写于
5月 24, 2016
作者:
V
vlivanov
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
8154831: CastII/ConvI2L for a range check is prematurely eliminated
Reviewed-by: kvn, thartmann
上级
376db8da
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
8 addition
and
2 deletion
+8
-2
src/share/vm/opto/connode.cpp
src/share/vm/opto/connode.cpp
+4
-2
src/share/vm/opto/subnode.cpp
src/share/vm/opto/subnode.cpp
+4
-0
未找到文件。
src/share/vm/opto/connode.cpp
浏览文件 @
38056108
...
...
@@ -446,7 +446,9 @@ uint CastIINode::size_of() const {
}
uint
CastIINode
::
cmp
(
const
Node
&
n
)
const
{
return
TypeNode
::
cmp
(
n
)
&&
((
CastIINode
&
)
n
).
_carry_dependency
==
_carry_dependency
;
return
TypeNode
::
cmp
(
n
)
&&
((
CastIINode
&
)
n
).
_carry_dependency
==
_carry_dependency
&&
((
CastIINode
&
)
n
).
_range_check_dependency
==
_range_check_dependency
;
}
Node
*
CastIINode
::
Identity
(
PhaseTransform
*
phase
)
{
...
...
@@ -523,7 +525,7 @@ const Type *CastIINode::Value(PhaseTransform *phase) const {
}
Node
*
CastIINode
::
Ideal_DU_postCCP
(
PhaseCCP
*
ccp
)
{
if
(
_carry_dependency
)
{
if
(
_carry_dependency
||
_range_check_dependency
)
{
return
NULL
;
}
return
ConstraintCastNode
::
Ideal_DU_postCCP
(
ccp
);
...
...
src/share/vm/opto/subnode.cpp
浏览文件 @
38056108
...
...
@@ -547,8 +547,12 @@ const Type *CmpUNode::sub( const Type *t1, const Type *t2 ) const {
// All unsigned values are LE -1 and GE 0.
if
(
lo0
==
0
&&
hi0
==
0
)
{
return
TypeInt
::
CC_LE
;
// 0 <= bot
}
else
if
((
jint
)
lo0
==
-
1
&&
(
jint
)
hi0
==
-
1
)
{
return
TypeInt
::
CC_GE
;
// -1 >= bot
}
else
if
(
lo1
==
0
&&
hi1
==
0
)
{
return
TypeInt
::
CC_GE
;
// bot >= 0
}
else
if
((
jint
)
lo1
==
-
1
&&
(
jint
)
hi1
==
-
1
)
{
return
TypeInt
::
CC_LE
;
// bot <= -1
}
}
else
{
// We can use ranges of the form [lo..hi] if signs are the same.
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录