Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_hotspot
提交
fdead1eb
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看板
体验新版 GitCode,发现更多精彩内容 >>
提交
fdead1eb
编写于
10月 02, 2012
作者:
K
kvn
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
7199742: A lot of C2 OSR compilations of the same method's bci
Summary: Don't clone head of OSR loop. Reviewed-by: jrose, twisti
上级
61fd6604
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
60 addition
and
1 deletion
+60
-1
src/share/vm/ci/ciTypeFlow.cpp
src/share/vm/ci/ciTypeFlow.cpp
+4
-0
src/share/vm/opto/parse1.cpp
src/share/vm/opto/parse1.cpp
+2
-1
test/compiler/7199742/Test7199742.java
test/compiler/7199742/Test7199742.java
+54
-0
未找到文件。
src/share/vm/ci/ciTypeFlow.cpp
浏览文件 @
fdead1eb
...
@@ -2194,6 +2194,10 @@ bool ciTypeFlow::clone_loop_heads(Loop* lp, StateVector* temp_vector, JsrSet* te
...
@@ -2194,6 +2194,10 @@ bool ciTypeFlow::clone_loop_heads(Loop* lp, StateVector* temp_vector, JsrSet* te
if
(
head
->
backedge_copy_count
()
!=
0
)
if
(
head
->
backedge_copy_count
()
!=
0
)
continue
;
continue
;
// Don't clone head of OSR loop to get correct types in start block.
if
(
is_osr_flow
()
&&
head
->
start
()
==
start_bci
())
continue
;
// check _no_ shared head below us
// check _no_ shared head below us
Loop
*
ch
;
Loop
*
ch
;
for
(
ch
=
lp
->
child
();
ch
!=
NULL
&&
ch
->
head
()
!=
head
;
ch
=
ch
->
sibling
());
for
(
ch
=
lp
->
child
();
ch
!=
NULL
&&
ch
->
head
()
!=
head
;
ch
=
ch
->
sibling
());
...
...
src/share/vm/opto/parse1.cpp
浏览文件 @
fdead1eb
...
@@ -372,7 +372,8 @@ void Parse::load_interpreter_state(Node* osr_buf) {
...
@@ -372,7 +372,8 @@ void Parse::load_interpreter_state(Node* osr_buf) {
// in the CFG, which typeflow had previously ignored.
// in the CFG, which typeflow had previously ignored.
// E.g., Object x = coldAtFirst() && notReached()? "str": new Integer(123).
// E.g., Object x = coldAtFirst() && notReached()? "str": new Integer(123).
// This x will be typed as Integer if notReached is not yet linked.
// This x will be typed as Integer if notReached is not yet linked.
uncommon_trap
(
Deoptimization
::
Reason_unreached
,
// It could also happen due to a problem in ciTypeFlow analysis.
uncommon_trap
(
Deoptimization
::
Reason_constraint
,
Deoptimization
::
Action_reinterpret
);
Deoptimization
::
Action_reinterpret
);
set_map
(
types_are_good
);
set_map
(
types_are_good
);
}
}
...
...
test/compiler/7199742/Test7199742.java
0 → 100644
浏览文件 @
fdead1eb
/*
* Copyright (c) 2012, Oracle and/or its affiliates. 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 7199742
* @summary A lot of C2 OSR compilations of the same method's bci
*
* @run main/othervm -Xmx32m -Xbatch Test7199742
*/
public
class
Test7199742
{
private
static
final
int
ITERS
=
10000000
;
public
static
void
main
(
String
args
[])
{
Test7199742
t
=
new
Test7199742
();
for
(
int
i
=
0
;
i
<
10
;
i
++)
{
test
(
t
,
7
);
}
}
static
Test7199742
test
(
Test7199742
t
,
int
m
)
{
int
i
=
-(
ITERS
/
2
);
if
(
i
==
0
)
return
null
;
Test7199742
v
=
null
;
while
(
i
<
ITERS
)
{
if
((
i
&
m
)
==
0
)
{
v
=
t
;
}
i
++;
}
return
v
;
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录