Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell11
提交
30a9cf90
D
dragonwell11
项目概览
openanolis
/
dragonwell11
通知
7
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
dragonwell11
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
30a9cf90
编写于
5月 14, 2020
作者:
F
fyang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
8244407: JVM crashes after transformation in C2 IdealLoopTree::split_fall_in
Reviewed-by: thartmann, kvn Contributed-by: zhouyong44@huawei.com
上级
b1f8ee4a
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
91 addition
and
2 deletion
+91
-2
src/hotspot/share/opto/loopnode.cpp
src/hotspot/share/opto/loopnode.cpp
+10
-2
test/hotspot/jtreg/compiler/loopopts/TestBeautifyLoops_2.java
.../hotspot/jtreg/compiler/loopopts/TestBeautifyLoops_2.java
+81
-0
未找到文件。
src/hotspot/share/opto/loopnode.cpp
浏览文件 @
30a9cf90
...
...
@@ -2092,10 +2092,18 @@ bool IdealLoopTree::beautify_loops( PhaseIdealLoop *phase ) {
// If I am a shared header (multiple backedges), peel off the many
// backedges into a private merge point and use the merge point as
// the one true backedge.
if
(
_head
->
req
()
>
3
&&
!
_irreducible
)
{
if
(
_head
->
req
()
>
3
)
{
// Merge the many backedges into a single backedge but leave
// the hottest backedge as separate edge for the following peel.
merge_many_backedges
(
phase
);
if
(
!
_irreducible
)
{
merge_many_backedges
(
phase
);
}
// When recursively beautify my children, split_fall_in can change
// loop tree structure when I am an irreducible loop. Then the head
// of my children has a req() not bigger than 3. Here we need to set
// result to true to catch that case in order to tell the caller to
// rebuild loop tree. See issue JDK-8244407 for details.
result
=
true
;
}
...
...
test/hotspot/jtreg/compiler/loopopts/TestBeautifyLoops_2.java
0 → 100644
浏览文件 @
30a9cf90
/*
* Copyright (c) 2020, Huawei Technologies Co. Ltd. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/**
* @test
* @bug 8244407
* @summary JVM crashes after transformation in C2 IdealLoopTree::split_fall_in
*
* @run main/othervm -Xcomp -XX:-BackgroundCompilation
* -XX:CompileCommand=compileonly,compiler.loopopts.TestBeautifyLoops_2::testMethod
* compiler.loopopts.TestBeautifyLoops_2
*/
package
compiler.loopopts
;
public
class
TestBeautifyLoops_2
{
private
class
X
{
public
int
x
()
{
return
-
1
;
}
}
private
int
mI
=
0
;
private
float
mF
=
0
;
private
boolean
mZ
=
false
;
private
X
mX
=
new
X
();
private
long
[]
mArray
=
new
long
[
331
];
private
void
testMethod
()
{
double
d
=
0
;
for
(
int
i
=
0
;
i
<
331
;
i
++)
{
if
(
mZ
)
{
continue
;
}
try
{
for
(
int
j
=
mArray
.
length
-
1
;
j
>=
0
;
j
--)
{
for
(
int
k
=
0
;
k
<
331
;
k
++)
{
d
+=
((
double
)
new
Double
(
d
));
switch
(
267
)
{
case
256
:
default
:
{
mF
+=
(
mX
.
x
());
break
;
}
}
}
}
}
catch
(
Exception
ignore
)
{
}
}
}
public
static
void
main
(
String
[]
args
)
{
TestBeautifyLoops_2
obj
=
new
TestBeautifyLoops_2
();
obj
.
testMethod
();
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录