Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_hotspot
提交
9491724a
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看板
提交
9491724a
编写于
9月 22, 2010
作者:
N
never
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
6986028: assert(_base == Int) failed: Not an Int in CmpINode::sub
Reviewed-by: kvn, twisti
上级
cfb3122a
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
9 addition
and
9 deletion
+9
-9
src/share/vm/opto/stringopts.cpp
src/share/vm/opto/stringopts.cpp
+9
-9
未找到文件。
src/share/vm/opto/stringopts.cpp
浏览文件 @
9491724a
...
...
@@ -75,8 +75,7 @@ class StringConcat : public ResourceObj {
for (SimpleDUIterator i(endprojs.resproj); i.has_next(); i.next()) {
CallStaticJavaNode *use = i.get()->isa_CallStaticJava();
if (use != NULL && use->method() != NULL &&
use->method()->holder() == C->env()->String_klass() &&
use->method()->name() == ciSymbol::object_initializer_name() &&
use->method()->intrinsic_id() == vmIntrinsics::_String_String &&
use->in(TypeFunc::Parms + 1) == endprojs.resproj) {
// Found useless new String(sb.toString()) so reuse the newly allocated String
// when creating the result instead of allocating a new one.
...
...
@@ -394,7 +393,9 @@ StringConcat* PhaseStringOpts::build_candidate(CallStaticJavaNode* call) {
Node
*
constructor
=
NULL
;
for
(
SimpleDUIterator
i
(
result
);
i
.
has_next
();
i
.
next
())
{
CallStaticJavaNode
*
use
=
i
.
get
()
->
isa_CallStaticJava
();
if
(
use
!=
NULL
&&
use
->
method
()
!=
NULL
&&
if
(
use
!=
NULL
&&
use
->
method
()
!=
NULL
&&
!
use
->
method
()
->
is_static
()
&&
use
->
method
()
->
name
()
==
ciSymbol
::
object_initializer_name
()
&&
use
->
method
()
->
holder
()
==
m
->
holder
())
{
// Matched the constructor.
...
...
@@ -444,7 +445,8 @@ StringConcat* PhaseStringOpts::build_candidate(CallStaticJavaNode* call) {
}
}
else
if
(
cnode
->
method
()
==
NULL
)
{
break
;
}
else
if
(
cnode
->
method
()
->
holder
()
==
m
->
holder
()
&&
}
else
if
(
!
cnode
->
method
()
->
is_static
()
&&
cnode
->
method
()
->
holder
()
==
m
->
holder
()
&&
cnode
->
method
()
->
name
()
==
ciSymbol
::
append_name
()
&&
(
cnode
->
method
()
->
signature
()
->
as_symbol
()
==
string_sig
||
cnode
->
method
()
->
signature
()
->
as_symbol
()
==
char_sig
||
...
...
@@ -459,8 +461,7 @@ StringConcat* PhaseStringOpts::build_candidate(CallStaticJavaNode* call) {
if
(
arg
->
is_Proj
()
&&
arg
->
in
(
0
)
->
is_CallStaticJava
())
{
CallStaticJavaNode
*
csj
=
arg
->
in
(
0
)
->
as_CallStaticJava
();
if
(
csj
->
method
()
!=
NULL
&&
csj
->
method
()
->
holder
()
==
C
->
env
()
->
Integer_klass
()
&&
csj
->
method
()
->
name
()
==
ciSymbol
::
toString_name
())
{
csj
->
method
()
->
intrinsic_id
()
==
vmIntrinsics
::
_Integer_toString
)
{
sc
->
add_control
(
csj
);
sc
->
push_int
(
csj
->
in
(
TypeFunc
::
Parms
));
continue
;
...
...
@@ -537,9 +538,8 @@ PhaseStringOpts::PhaseStringOpts(PhaseGVN* gvn, Unique_Node_List*):
if
(
arg
->
is_Proj
()
&&
arg
->
in
(
0
)
->
is_CallStaticJava
())
{
CallStaticJavaNode
*
csj
=
arg
->
in
(
0
)
->
as_CallStaticJava
();
if
(
csj
->
method
()
!=
NULL
&&
(
csj
->
method
()
->
holder
()
==
C
->
env
()
->
StringBuffer_klass
()
||
csj
->
method
()
->
holder
()
==
C
->
env
()
->
StringBuilder_klass
())
&&
csj
->
method
()
->
name
()
==
ciSymbol
::
toString_name
())
{
(
csj
->
method
()
->
intrinsic_id
()
==
vmIntrinsics
::
_StringBuilder_toString
||
csj
->
method
()
->
intrinsic_id
()
==
vmIntrinsics
::
_StringBuffer_toString
))
{
for
(
int
o
=
0
;
o
<
concats
.
length
();
o
++
)
{
if
(
c
==
o
)
continue
;
StringConcat
*
other
=
concats
.
at
(
o
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录