Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_hotspot
提交
eae55855
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看板
提交
eae55855
编写于
2月 25, 2010
作者:
N
never
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
6915557: assert(_gvn.type(l)->higher_equal(type),"must constrain OSR typestate") with debug build
Reviewed-by: kvn
上级
9c7bbeac
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
14 addition
and
4 deletion
+14
-4
src/share/vm/opto/parse1.cpp
src/share/vm/opto/parse1.cpp
+14
-4
未找到文件。
src/share/vm/opto/parse1.cpp
浏览文件 @
eae55855
/*
* Copyright 1997-20
09
Sun Microsystems, Inc. All Rights Reserved.
* Copyright 1997-20
10
Sun Microsystems, Inc. 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
...
...
@@ -237,7 +237,6 @@ void Parse::load_interpreter_state(Node* osr_buf) {
C
->
record_method_not_compilable
(
"OSR in empty or breakpointed method"
);
return
;
}
MethodLivenessResult
raw_live_locals
=
method
()
->
raw_liveness_at_bci
(
osr_bci
());
// Extract the needed locals from the interpreter frame.
Node
*
locals_addr
=
basic_plus_adr
(
osr_buf
,
osr_buf
,
(
max_locals
-
1
)
*
wordSize
);
...
...
@@ -306,6 +305,7 @@ void Parse::load_interpreter_state(Node* osr_buf) {
SafePointNode
*
bad_type_exit
=
clone_map
();
bad_type_exit
->
set_control
(
new
(
C
,
1
)
RegionNode
(
1
));
assert
(
osr_block
->
flow
()
->
jsrs
()
->
size
()
==
0
,
"should be no jsrs live at osr point"
);
for
(
index
=
0
;
index
<
max_locals
;
index
++
)
{
if
(
stopped
())
break
;
Node
*
l
=
local
(
index
);
...
...
@@ -317,8 +317,18 @@ void Parse::load_interpreter_state(Node* osr_buf) {
continue
;
}
}
if
(
type
->
basic_type
()
==
T_ADDRESS
&&
!
raw_live_locals
.
at
(
index
))
{
// Skip type check for dead address locals
if
(
type
->
basic_type
()
==
T_ADDRESS
)
{
// In our current system it's illegal for jsr addresses to be
// live into an OSR entry point because the compiler performs
// inlining of jsrs. ciTypeFlow has a bailout that detect this
// case and aborts the compile if addresses are live into an OSR
// entry point. Because of that we can assume that any address
// locals at the OSR entry point are dead. Method liveness
// isn't precise enought to figure out that they are dead in all
// cases so simply skip checking address locals all
// together. Any type check is guaranteed to fail since the
// interpreter type is the result of a load which might have any
// value and the expected type is a constant.
continue
;
}
set_local
(
index
,
check_interpreter_type
(
l
,
type
,
bad_type_exit
));
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录