Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_hotspot
提交
b4b6ecc4
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看板
提交
b4b6ecc4
编写于
2月 05, 2010
作者:
N
never
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
6920293: OptimizeStringConcat causing core dumps
Reviewed-by: kvn, twisti
上级
1fd703e1
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
19 addition
and
11 deletion
+19
-11
src/os_cpu/solaris_x86/vm/os_solaris_x86.cpp
src/os_cpu/solaris_x86/vm/os_solaris_x86.cpp
+4
-3
src/share/vm/code/nmethod.cpp
src/share/vm/code/nmethod.cpp
+4
-1
src/share/vm/opto/stringopts.cpp
src/share/vm/opto/stringopts.cpp
+5
-4
src/share/vm/runtime/sharedRuntime.cpp
src/share/vm/runtime/sharedRuntime.cpp
+6
-3
未找到文件。
src/os_cpu/solaris_x86/vm/os_solaris_x86.cpp
浏览文件 @
b4b6ecc4
/*
/*
* Copyright 1999-20
09
Sun Microsystems, Inc. All Rights Reserved.
* Copyright 1999-20
10
Sun Microsystems, Inc. All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
*
* This code is free software; you can redistribute it and/or modify it
* This code is free software; you can redistribute it and/or modify it
...
@@ -730,11 +730,12 @@ void os::print_context(outputStream *st, void *context) {
...
@@ -730,11 +730,12 @@ void os::print_context(outputStream *st, void *context) {
st
->
print
(
", RSI="
INTPTR_FORMAT
,
uc
->
uc_mcontext
.
gregs
[
REG_RSI
]);
st
->
print
(
", RSI="
INTPTR_FORMAT
,
uc
->
uc_mcontext
.
gregs
[
REG_RSI
]);
st
->
print
(
", RDI="
INTPTR_FORMAT
,
uc
->
uc_mcontext
.
gregs
[
REG_RDI
]);
st
->
print
(
", RDI="
INTPTR_FORMAT
,
uc
->
uc_mcontext
.
gregs
[
REG_RDI
]);
st
->
cr
();
st
->
cr
();
st
->
print
(
",
R8="
INTPTR_FORMAT
,
uc
->
uc_mcontext
.
gregs
[
REG_R8
]);
st
->
print
(
"
R8="
INTPTR_FORMAT
,
uc
->
uc_mcontext
.
gregs
[
REG_R8
]);
st
->
print
(
", R9="
INTPTR_FORMAT
,
uc
->
uc_mcontext
.
gregs
[
REG_R9
]);
st
->
print
(
", R9="
INTPTR_FORMAT
,
uc
->
uc_mcontext
.
gregs
[
REG_R9
]);
st
->
print
(
", R10="
INTPTR_FORMAT
,
uc
->
uc_mcontext
.
gregs
[
REG_R10
]);
st
->
print
(
", R10="
INTPTR_FORMAT
,
uc
->
uc_mcontext
.
gregs
[
REG_R10
]);
st
->
print
(
", R11="
INTPTR_FORMAT
,
uc
->
uc_mcontext
.
gregs
[
REG_R11
]);
st
->
print
(
", R11="
INTPTR_FORMAT
,
uc
->
uc_mcontext
.
gregs
[
REG_R11
]);
st
->
print
(
", R12="
INTPTR_FORMAT
,
uc
->
uc_mcontext
.
gregs
[
REG_R12
]);
st
->
cr
();
st
->
print
(
"R12="
INTPTR_FORMAT
,
uc
->
uc_mcontext
.
gregs
[
REG_R12
]);
st
->
print
(
", R13="
INTPTR_FORMAT
,
uc
->
uc_mcontext
.
gregs
[
REG_R13
]);
st
->
print
(
", R13="
INTPTR_FORMAT
,
uc
->
uc_mcontext
.
gregs
[
REG_R13
]);
st
->
print
(
", R14="
INTPTR_FORMAT
,
uc
->
uc_mcontext
.
gregs
[
REG_R14
]);
st
->
print
(
", R14="
INTPTR_FORMAT
,
uc
->
uc_mcontext
.
gregs
[
REG_R14
]);
st
->
print
(
", R15="
INTPTR_FORMAT
,
uc
->
uc_mcontext
.
gregs
[
REG_R15
]);
st
->
print
(
", R15="
INTPTR_FORMAT
,
uc
->
uc_mcontext
.
gregs
[
REG_R15
]);
...
...
src/share/vm/code/nmethod.cpp
浏览文件 @
b4b6ecc4
...
@@ -2010,7 +2010,10 @@ address nmethod::continuation_for_implicit_exception(address pc) {
...
@@ -2010,7 +2010,10 @@ address nmethod::continuation_for_implicit_exception(address pc) {
print_pcs
();
print_pcs
();
}
}
#endif
#endif
guarantee
(
cont_offset
!=
0
,
"unhandled implicit exception in compiled code"
);
if
(
cont_offset
==
0
)
{
// Let the normal error handling report the exception
return
NULL
;
}
return
instructions_begin
()
+
cont_offset
;
return
instructions_begin
()
+
cont_offset
;
}
}
...
...
src/share/vm/opto/stringopts.cpp
浏览文件 @
b4b6ecc4
/*
/*
* Copyright 2009 Sun Microsystems, Inc. All Rights Reserved.
* Copyright 2009
-2010
Sun Microsystems, Inc. All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
*
* This code is free software; you can redistribute it and/or modify it
* This code is free software; you can redistribute it and/or modify it
...
@@ -1073,7 +1073,7 @@ void PhaseStringOpts::int_getChars(GraphKit& kit, Node* arg, Node* char_array, N
...
@@ -1073,7 +1073,7 @@ void PhaseStringOpts::int_getChars(GraphKit& kit, Node* arg, Node* char_array, N
kit
.
set_control
(
head
);
kit
.
set_control
(
head
);
kit
.
set_memory
(
mem
,
char_adr_idx
);
kit
.
set_memory
(
mem
,
char_adr_idx
);
Node
*
q
=
__
DivI
(
kit
.
null
()
,
i_phi
,
__
intcon
(
10
));
Node
*
q
=
__
DivI
(
NULL
,
i_phi
,
__
intcon
(
10
));
Node
*
r
=
__
SubI
(
i_phi
,
__
AddI
(
__
LShiftI
(
q
,
__
intcon
(
3
)),
Node
*
r
=
__
SubI
(
i_phi
,
__
AddI
(
__
LShiftI
(
q
,
__
intcon
(
3
)),
__
LShiftI
(
q
,
__
intcon
(
1
))));
__
LShiftI
(
q
,
__
intcon
(
1
))));
Node
*
m1
=
__
SubI
(
charPos
,
__
intcon
(
1
));
Node
*
m1
=
__
SubI
(
charPos
,
__
intcon
(
1
));
...
@@ -1270,14 +1270,15 @@ void PhaseStringOpts::replace_string_concat(StringConcat* sc) {
...
@@ -1270,14 +1270,15 @@ void PhaseStringOpts::replace_string_concat(StringConcat* sc) {
// length = length + (s.count - s.offset);
// length = length + (s.count - s.offset);
RegionNode
*
r
=
new
(
C
,
3
)
RegionNode
(
3
);
RegionNode
*
r
=
new
(
C
,
3
)
RegionNode
(
3
);
kit
.
gvn
().
set_type
(
r
,
Type
::
CONTROL
);
kit
.
gvn
().
set_type
(
r
,
Type
::
CONTROL
);
Node
*
phi
=
new
(
C
,
3
)
PhiNode
(
r
,
type
->
join
(
TypeInstPtr
::
NOTNULL
)
);
Node
*
phi
=
new
(
C
,
3
)
PhiNode
(
r
,
type
);
kit
.
gvn
().
set_type
(
phi
,
phi
->
bottom_type
());
kit
.
gvn
().
set_type
(
phi
,
phi
->
bottom_type
());
Node
*
p
=
__
Bool
(
__
CmpP
(
arg
,
kit
.
null
()),
BoolTest
::
ne
);
Node
*
p
=
__
Bool
(
__
CmpP
(
arg
,
kit
.
null
()),
BoolTest
::
ne
);
IfNode
*
iff
=
kit
.
create_and_map_if
(
kit
.
control
(),
p
,
PROB_MIN
,
COUNT_UNKNOWN
);
IfNode
*
iff
=
kit
.
create_and_map_if
(
kit
.
control
(),
p
,
PROB_MIN
,
COUNT_UNKNOWN
);
Node
*
notnull
=
__
IfTrue
(
iff
);
Node
*
notnull
=
__
IfTrue
(
iff
);
Node
*
isnull
=
__
IfFalse
(
iff
);
Node
*
isnull
=
__
IfFalse
(
iff
);
kit
.
set_control
(
notnull
);
// set control for the cast_not_null
r
->
init_req
(
1
,
notnull
);
r
->
init_req
(
1
,
notnull
);
phi
->
init_req
(
1
,
arg
);
phi
->
init_req
(
1
,
kit
.
cast_not_null
(
arg
,
false
)
);
r
->
init_req
(
2
,
isnull
);
r
->
init_req
(
2
,
isnull
);
phi
->
init_req
(
2
,
null_string
);
phi
->
init_req
(
2
,
null_string
);
kit
.
set_control
(
r
);
kit
.
set_control
(
r
);
...
...
src/share/vm/runtime/sharedRuntime.cpp
浏览文件 @
b4b6ecc4
...
@@ -607,7 +607,9 @@ address SharedRuntime::continuation_for_implicit_exception(JavaThread* thread,
...
@@ -607,7 +607,9 @@ address SharedRuntime::continuation_for_implicit_exception(JavaThread* thread,
_implicit_null_throws
++
;
_implicit_null_throws
++
;
#endif
#endif
target_pc
=
nm
->
continuation_for_implicit_exception
(
pc
);
target_pc
=
nm
->
continuation_for_implicit_exception
(
pc
);
guarantee
(
target_pc
!=
0
,
"must have a continuation point"
);
// If there's an unexpected fault, target_pc might be NULL,
// in which case we want to fall through into the normal
// error handling code.
}
}
break
;
// fall through
break
;
// fall through
...
@@ -621,14 +623,15 @@ address SharedRuntime::continuation_for_implicit_exception(JavaThread* thread,
...
@@ -621,14 +623,15 @@ address SharedRuntime::continuation_for_implicit_exception(JavaThread* thread,
_implicit_div0_throws
++
;
_implicit_div0_throws
++
;
#endif
#endif
target_pc
=
nm
->
continuation_for_implicit_exception
(
pc
);
target_pc
=
nm
->
continuation_for_implicit_exception
(
pc
);
guarantee
(
target_pc
!=
0
,
"must have a continuation point"
);
// If there's an unexpected fault, target_pc might be NULL,
// in which case we want to fall through into the normal
// error handling code.
break
;
// fall through
break
;
// fall through
}
}
default:
ShouldNotReachHere
();
default:
ShouldNotReachHere
();
}
}
guarantee
(
target_pc
!=
NULL
,
"must have computed destination PC for implicit exception"
);
assert
(
exception_kind
==
IMPLICIT_NULL
||
exception_kind
==
IMPLICIT_DIVIDE_BY_ZERO
,
"wrong implicit exception kind"
);
assert
(
exception_kind
==
IMPLICIT_NULL
||
exception_kind
==
IMPLICIT_DIVIDE_BY_ZERO
,
"wrong implicit exception kind"
);
// for AbortVMOnException flag
// for AbortVMOnException flag
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录