Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_hotspot
提交
71ba1a88
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,发现更多精彩内容 >>
提交
71ba1a88
编写于
9月 18, 2009
作者:
K
kvn
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
6820514: meet not symmetric failure in ctw
Summary: Add missing instance_id meet. Reviewed-by: never
上级
9f12cf39
变更
2
显示空白变更内容
内联
并排
Showing
2 changed file
with
17 addition
and
9 deletion
+17
-9
src/share/vm/opto/type.cpp
src/share/vm/opto/type.cpp
+16
-8
src/share/vm/opto/type.hpp
src/share/vm/opto/type.hpp
+1
-1
未找到文件。
src/share/vm/opto/type.cpp
浏览文件 @
71ba1a88
...
...
@@ -296,7 +296,7 @@ void Type::Initialize_shared(Compile* current) {
false
,
0
,
oopDesc
::
mark_offset_in_bytes
());
TypeInstPtr
::
KLASS
=
TypeInstPtr
::
make
(
TypePtr
::
BotPTR
,
current
->
env
()
->
Object_klass
(),
false
,
0
,
oopDesc
::
klass_offset_in_bytes
());
TypeOopPtr
::
BOTTOM
=
TypeOopPtr
::
make
(
TypePtr
::
BotPTR
,
OffsetBot
);
TypeOopPtr
::
BOTTOM
=
TypeOopPtr
::
make
(
TypePtr
::
BotPTR
,
OffsetBot
,
TypeOopPtr
::
InstanceBot
);
TypeNarrowOop
::
NULL_PTR
=
TypeNarrowOop
::
make
(
TypePtr
::
NULL_PTR
);
TypeNarrowOop
::
BOTTOM
=
TypeNarrowOop
::
make
(
TypeInstPtr
::
BOTTOM
);
...
...
@@ -492,8 +492,13 @@ bool Type::is_nan() const {
bool
Type
::
interface_vs_oop
(
const
Type
*
t
)
const
{
bool
result
=
false
;
const
TypeInstPtr
*
this_inst
=
this
->
isa_instptr
();
const
TypeInstPtr
*
t_inst
=
t
->
isa_instptr
();
const
TypePtr
*
this_ptr
=
this
->
make_ptr
();
// In case it is narrow_oop
const
TypePtr
*
t_ptr
=
t
->
make_ptr
();
if
(
this_ptr
==
NULL
||
t_ptr
==
NULL
)
return
result
;
const
TypeInstPtr
*
this_inst
=
this_ptr
->
isa_instptr
();
const
TypeInstPtr
*
t_inst
=
t_ptr
->
isa_instptr
();
if
(
this_inst
&&
this_inst
->
is_loaded
()
&&
t_inst
&&
t_inst
->
is_loaded
()
)
{
bool
this_interface
=
this_inst
->
klass
()
->
is_interface
();
bool
t_interface
=
t_inst
->
klass
()
->
is_interface
();
...
...
@@ -2249,7 +2254,7 @@ const TypeOopPtr *TypeOopPtr::make(PTR ptr,
const
Type
*
TypeOopPtr
::
cast_to_ptr_type
(
PTR
ptr
)
const
{
assert
(
_base
==
OopPtr
,
"subclass must override cast_to_ptr_type"
);
if
(
ptr
==
_ptr
)
return
this
;
return
make
(
ptr
,
_offset
);
return
make
(
ptr
,
_offset
,
_instance_id
);
}
//-----------------------------cast_to_instance_id----------------------------
...
...
@@ -2319,8 +2324,10 @@ const Type *TypeOopPtr::xmeet( const Type *t ) const {
if
(
ptr
==
Null
)
return
TypePtr
::
make
(
AnyPtr
,
ptr
,
offset
);
// else fall through:
case
TopPTR
:
case
AnyNull
:
return
make
(
ptr
,
offset
);
case
AnyNull
:
{
int
instance_id
=
meet_instance_id
(
InstanceTop
);
return
make
(
ptr
,
offset
,
instance_id
);
}
case
BotPTR
:
case
NotNull
:
return
TypePtr
::
make
(
AnyPtr
,
ptr
,
offset
);
...
...
@@ -2593,7 +2600,7 @@ bool TypeOopPtr::singleton(void) const {
//------------------------------add_offset-------------------------------------
const
TypePtr
*
TypeOopPtr
::
add_offset
(
intptr_t
offset
)
const
{
return
make
(
_ptr
,
xadd_offset
(
offset
)
);
return
make
(
_ptr
,
xadd_offset
(
offset
)
,
_instance_id
);
}
//------------------------------meet_instance_id--------------------------------
...
...
@@ -2696,6 +2703,7 @@ const TypeOopPtr *TypeInstPtr::cast_to_instance_id(int instance_id) const {
const
TypeInstPtr
*
TypeInstPtr
::
xmeet_unloaded
(
const
TypeInstPtr
*
tinst
)
const
{
int
off
=
meet_offset
(
tinst
->
offset
());
PTR
ptr
=
meet_ptr
(
tinst
->
ptr
());
int
instance_id
=
meet_instance_id
(
tinst
->
instance_id
());
const
TypeInstPtr
*
loaded
=
is_loaded
()
?
this
:
tinst
;
const
TypeInstPtr
*
unloaded
=
is_loaded
()
?
tinst
:
this
;
...
...
@@ -2716,7 +2724,7 @@ const TypeInstPtr *TypeInstPtr::xmeet_unloaded(const TypeInstPtr *tinst) const {
assert
(
loaded
->
ptr
()
!=
TypePtr
::
Null
,
"insanity check"
);
//
if
(
loaded
->
ptr
()
==
TypePtr
::
TopPTR
)
{
return
unloaded
;
}
else
if
(
loaded
->
ptr
()
==
TypePtr
::
AnyNull
)
{
return
TypeInstPtr
::
make
(
ptr
,
unloaded
->
klass
()
);
}
else
if
(
loaded
->
ptr
()
==
TypePtr
::
AnyNull
)
{
return
TypeInstPtr
::
make
(
ptr
,
unloaded
->
klass
()
,
false
,
NULL
,
off
,
instance_id
);
}
else
if
(
loaded
->
ptr
()
==
TypePtr
::
BotPTR
)
{
return
TypeInstPtr
::
BOTTOM
;
}
else
if
(
loaded
->
ptr
()
==
TypePtr
::
Constant
||
loaded
->
ptr
()
==
TypePtr
::
NotNull
)
{
if
(
unloaded
->
ptr
()
==
TypePtr
::
BotPTR
)
{
return
TypeInstPtr
::
BOTTOM
;
}
...
...
src/share/vm/opto/type.hpp
浏览文件 @
71ba1a88
...
...
@@ -717,7 +717,7 @@ public:
static
const
TypeOopPtr
*
make_from_constant
(
ciObject
*
o
,
bool
require_constant
=
false
);
// Make a generic (unclassed) pointer to an oop.
static
const
TypeOopPtr
*
make
(
PTR
ptr
,
int
offset
,
int
instance_id
=
InstanceBot
);
static
const
TypeOopPtr
*
make
(
PTR
ptr
,
int
offset
,
int
instance_id
);
ciObject
*
const_oop
()
const
{
return
_const_oop
;
}
virtual
ciKlass
*
klass
()
const
{
return
_klass
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录