Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_hotspot
提交
9c769b6c
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看板
提交
9c769b6c
编写于
10月 07, 2010
作者:
N
never
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
6980792: Crash "exception happened outside interpreter, nmethods and vtable stubs (1)"
Reviewed-by: kvn
上级
50ebd6d5
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
19 addition
and
10 deletion
+19
-10
src/cpu/sparc/vm/stubGenerator_sparc.cpp
src/cpu/sparc/vm/stubGenerator_sparc.cpp
+2
-2
src/share/vm/opto/library_call.cpp
src/share/vm/opto/library_call.cpp
+2
-2
src/share/vm/opto/loopTransform.cpp
src/share/vm/opto/loopTransform.cpp
+7
-0
src/share/vm/opto/runtime.cpp
src/share/vm/opto/runtime.cpp
+8
-6
未找到文件。
src/cpu/sparc/vm/stubGenerator_sparc.cpp
浏览文件 @
9c769b6c
...
@@ -2586,6 +2586,8 @@ class StubGenerator: public StubCodeGenerator {
...
@@ -2586,6 +2586,8 @@ class StubGenerator: public StubCodeGenerator {
__
restore
();
__
restore
();
#endif
#endif
assert_clean_int
(
O2_count
,
G1
);
// Make sure 'count' is clean int.
#ifdef ASSERT
#ifdef ASSERT
// caller guarantees that the arrays really are different
// caller guarantees that the arrays really are different
// otherwise, we would have to make conjoint checks
// otherwise, we would have to make conjoint checks
...
@@ -2600,8 +2602,6 @@ class StubGenerator: public StubCodeGenerator {
...
@@ -2600,8 +2602,6 @@ class StubGenerator: public StubCodeGenerator {
}
}
#endif //ASSERT
#endif //ASSERT
assert_clean_int
(
O2_count
,
G1
);
// Make sure 'count' is clean int.
checkcast_copy_entry
=
__
pc
();
checkcast_copy_entry
=
__
pc
();
// caller can pass a 64-bit byte count here (from generic stub)
// caller can pass a 64-bit byte count here (from generic stub)
BLOCK_COMMENT
(
"Entry:"
);
BLOCK_COMMENT
(
"Entry:"
);
...
...
src/share/vm/opto/library_call.cpp
浏览文件 @
9c769b6c
...
@@ -4761,7 +4761,7 @@ LibraryCallKit::generate_arraycopy(const TypePtr* adr_type,
...
@@ -4761,7 +4761,7 @@ LibraryCallKit::generate_arraycopy(const TypePtr* adr_type,
Node
*
cv
=
generate_checkcast_arraycopy
(
adr_type
,
Node
*
cv
=
generate_checkcast_arraycopy
(
adr_type
,
dest_elem_klass
,
dest_elem_klass
,
src
,
src_offset
,
dest
,
dest_offset
,
src
,
src_offset
,
dest
,
dest_offset
,
copy_length
);
ConvI2X
(
copy_length
)
);
if
(
cv
==
NULL
)
cv
=
intcon
(
-
1
);
// failure (no stub available)
if
(
cv
==
NULL
)
cv
=
intcon
(
-
1
);
// failure (no stub available)
checked_control
=
control
();
checked_control
=
control
();
checked_i_o
=
i_o
();
checked_i_o
=
i_o
();
...
@@ -5206,7 +5206,7 @@ LibraryCallKit::generate_checkcast_arraycopy(const TypePtr* adr_type,
...
@@ -5206,7 +5206,7 @@ LibraryCallKit::generate_checkcast_arraycopy(const TypePtr* adr_type,
int
sco_offset
=
Klass
::
super_check_offset_offset_in_bytes
()
+
sizeof
(
oopDesc
);
int
sco_offset
=
Klass
::
super_check_offset_offset_in_bytes
()
+
sizeof
(
oopDesc
);
Node
*
p3
=
basic_plus_adr
(
dest_elem_klass
,
sco_offset
);
Node
*
p3
=
basic_plus_adr
(
dest_elem_klass
,
sco_offset
);
Node
*
n3
=
new
(
C
,
3
)
LoadINode
(
NULL
,
memory
(
p3
),
p3
,
_gvn
.
type
(
p3
)
->
is_ptr
());
Node
*
n3
=
new
(
C
,
3
)
LoadINode
(
NULL
,
memory
(
p3
),
p3
,
_gvn
.
type
(
p3
)
->
is_ptr
());
Node
*
check_offset
=
_gvn
.
transform
(
n3
);
Node
*
check_offset
=
ConvI2X
(
_gvn
.
transform
(
n3
)
);
Node
*
check_value
=
dest_elem_klass
;
Node
*
check_value
=
dest_elem_klass
;
Node
*
src_start
=
array_element_address
(
src
,
src_offset
,
T_OBJECT
);
Node
*
src_start
=
array_element_address
(
src
,
src_offset
,
T_OBJECT
);
...
...
src/share/vm/opto/loopTransform.cpp
浏览文件 @
9c769b6c
...
@@ -2684,7 +2684,14 @@ bool PhaseIdealLoop::intrinsify_fill(IdealLoopTree* lpt) {
...
@@ -2684,7 +2684,14 @@ bool PhaseIdealLoop::intrinsify_fill(IdealLoopTree* lpt) {
fill_name
,
TypeAryPtr
::
get_array_body_type
(
t
));
fill_name
,
TypeAryPtr
::
get_array_body_type
(
t
));
call
->
init_req
(
TypeFunc
::
Parms
+
0
,
from
);
call
->
init_req
(
TypeFunc
::
Parms
+
0
,
from
);
call
->
init_req
(
TypeFunc
::
Parms
+
1
,
store_value
);
call
->
init_req
(
TypeFunc
::
Parms
+
1
,
store_value
);
#ifdef _LP64
len
=
new
(
C
,
2
)
ConvI2LNode
(
len
);
_igvn
.
register_new_node_with_optimizer
(
len
);
#endif
call
->
init_req
(
TypeFunc
::
Parms
+
2
,
len
);
call
->
init_req
(
TypeFunc
::
Parms
+
2
,
len
);
#ifdef _LP64
call
->
init_req
(
TypeFunc
::
Parms
+
3
,
C
->
top
());
#endif
call
->
init_req
(
TypeFunc
::
Control
,
head
->
init_control
());
call
->
init_req
(
TypeFunc
::
Control
,
head
->
init_control
());
call
->
init_req
(
TypeFunc
::
I_O
,
C
->
top
()
)
;
// does no i/o
call
->
init_req
(
TypeFunc
::
I_O
,
C
->
top
()
)
;
// does no i/o
call
->
init_req
(
TypeFunc
::
Memory
,
mem_phi
->
in
(
LoopNode
::
EntryControl
)
);
call
->
init_req
(
TypeFunc
::
Memory
,
mem_phi
->
in
(
LoopNode
::
EntryControl
)
);
...
...
src/share/vm/opto/runtime.cpp
浏览文件 @
9c769b6c
...
@@ -646,12 +646,14 @@ const TypeFunc* OptoRuntime::generic_arraycopy_Type() {
...
@@ -646,12 +646,14 @@ const TypeFunc* OptoRuntime::generic_arraycopy_Type() {
const
TypeFunc
*
OptoRuntime
::
array_fill_Type
()
{
const
TypeFunc
*
OptoRuntime
::
array_fill_Type
()
{
// create input type (domain)
// create input type (domain): pointer, int, size_t
const
Type
**
fields
=
TypeTuple
::
fields
(
3
);
const
Type
**
fields
=
TypeTuple
::
fields
(
3
LP64_ONLY
(
+
1
));
fields
[
TypeFunc
::
Parms
+
0
]
=
TypePtr
::
NOTNULL
;
int
argp
=
TypeFunc
::
Parms
;
fields
[
TypeFunc
::
Parms
+
1
]
=
TypeInt
::
INT
;
fields
[
argp
++
]
=
TypePtr
::
NOTNULL
;
fields
[
TypeFunc
::
Parms
+
2
]
=
TypeInt
::
INT
;
fields
[
argp
++
]
=
TypeInt
::
INT
;
const
TypeTuple
*
domain
=
TypeTuple
::
make
(
TypeFunc
::
Parms
+
3
,
fields
);
fields
[
argp
++
]
=
TypeX_X
;
// size in whatevers (size_t)
LP64_ONLY
(
fields
[
argp
++
]
=
Type
::
HALF
);
// other half of long length
const
TypeTuple
*
domain
=
TypeTuple
::
make
(
argp
,
fields
);
// create result type
// create result type
fields
=
TypeTuple
::
fields
(
1
);
fields
=
TypeTuple
::
fields
(
1
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录