Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_hotspot
提交
9c2a321a
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看板
提交
9c2a321a
编写于
6月 01, 2017
作者:
R
rraghavan
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
8175345: Reported null pointer dereference defect groups
Summary: Added required explicit NULL checks Reviewed-by: thartmann, kvn
上级
ad2270f7
变更
4
显示空白变更内容
内联
并排
Showing
4 changed file
with
13 addition
and
7 deletion
+13
-7
src/share/vm/opto/callnode.cpp
src/share/vm/opto/callnode.cpp
+2
-2
src/share/vm/opto/ifnode.cpp
src/share/vm/opto/ifnode.cpp
+3
-2
src/share/vm/opto/loopTransform.cpp
src/share/vm/opto/loopTransform.cpp
+5
-1
src/share/vm/opto/stringopts.cpp
src/share/vm/opto/stringopts.cpp
+3
-2
未找到文件。
src/share/vm/opto/callnode.cpp
浏览文件 @
9c2a321a
...
...
@@ -743,8 +743,8 @@ bool CallNode::may_modify(const TypeOopPtr *t_oop, PhaseTransform *phase) {
}
// May modify (by reflection) if an boxing object is passed
// as argument or returned.
if
(
returns_pointer
()
&&
(
proj_out
(
TypeFunc
::
Parms
)
!=
NULL
))
{
Node
*
proj
=
proj_out
(
TypeFunc
::
Parms
);
Node
*
proj
=
returns_pointer
()
?
proj_out
(
TypeFunc
::
Parms
)
:
NULL
;
if
(
proj
!=
NULL
)
{
const
TypeInstPtr
*
inst_t
=
phase
->
type
(
proj
)
->
isa_instptr
();
if
((
inst_t
!=
NULL
)
&&
(
!
inst_t
->
klass_is_exact
()
||
(
inst_t
->
klass
()
==
boxing_klass
)))
{
...
...
src/share/vm/opto/ifnode.cpp
浏览文件 @
9c2a321a
...
...
@@ -1081,8 +1081,9 @@ void IfNode::dominated_by( Node *prev_dom, PhaseIterGVN *igvn ) {
// be skipped. For example, range check predicate has two checks
// for lower and upper bounds.
ProjNode
*
unc_proj
=
proj_out
(
1
-
prev_dom
->
as_Proj
()
->
_con
)
->
as_Proj
();
if
(
unc_proj
->
is_uncommon_trap_proj
(
Deoptimization
::
Reason_predicate
))
if
(
(
unc_proj
!=
NULL
)
&&
(
unc_proj
->
is_uncommon_trap_proj
(
Deoptimization
::
Reason_predicate
)))
{
prev_dom
=
idom
;
}
// Now walk the current IfNode's projections.
// Loop ends when 'this' has no more uses.
...
...
src/share/vm/opto/loopTransform.cpp
浏览文件 @
9c2a321a
...
...
@@ -2714,6 +2714,11 @@ bool PhaseIdealLoop::intrinsify_fill(IdealLoopTree* lpt) {
return
false
;
}
Node
*
exit
=
head
->
loopexit
()
->
proj_out
(
0
);
if
(
exit
==
NULL
)
{
return
false
;
}
#ifndef PRODUCT
if
(
TraceLoopOpts
)
{
tty
->
print
(
"ArrayFill "
);
...
...
@@ -2831,7 +2836,6 @@ bool PhaseIdealLoop::intrinsify_fill(IdealLoopTree* lpt) {
*/
// Redirect the old control and memory edges that are outside the loop.
Node
*
exit
=
head
->
loopexit
()
->
proj_out
(
0
);
// Sometimes the memory phi of the head is used as the outgoing
// state of the loop. It's safe in this case to replace it with the
// result_mem.
...
...
src/share/vm/opto/stringopts.cpp
浏览文件 @
9c2a321a
...
...
@@ -891,8 +891,9 @@ bool StringConcat::validate_control_flow() {
ctrl_path
.
push
(
cn
);
ctrl_path
.
push
(
cn
->
proj_out
(
0
));
ctrl_path
.
push
(
cn
->
proj_out
(
0
)
->
unique_out
());
if
(
cn
->
proj_out
(
0
)
->
unique_out
()
->
as_Catch
()
->
proj_out
(
0
)
!=
NULL
)
{
ctrl_path
.
push
(
cn
->
proj_out
(
0
)
->
unique_out
()
->
as_Catch
()
->
proj_out
(
0
));
Node
*
catchproj
=
cn
->
proj_out
(
0
)
->
unique_out
()
->
as_Catch
()
->
proj_out
(
0
);
if
(
catchproj
!=
NULL
)
{
ctrl_path
.
push
(
catchproj
);
}
}
else
{
ShouldNotReachHere
();
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录