Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_hotspot
提交
33c85b23
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看板
提交
33c85b23
编写于
4月 25, 2011
作者:
N
never
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
7030715: JSR 292 JRuby test/test_super_call_site_caching.rb asserts with +DoEscapeAnalysis
Reviewed-by: twisti
上级
bbe882e5
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
20 addition
and
14 deletion
+20
-14
src/share/vm/ci/bcEscapeAnalyzer.cpp
src/share/vm/ci/bcEscapeAnalyzer.cpp
+1
-8
src/share/vm/ci/ciMethod.hpp
src/share/vm/ci/ciMethod.hpp
+18
-1
src/share/vm/opto/graphKit.cpp
src/share/vm/opto/graphKit.cpp
+1
-5
未找到文件。
src/share/vm/ci/bcEscapeAnalyzer.cpp
浏览文件 @
33c85b23
...
...
@@ -232,14 +232,7 @@ void BCEscapeAnalyzer::invoke(StateInfo &state, Bytecodes::Code code, ciMethod*
}
// compute size of arguments
int
arg_size
=
target
->
arg_size
();
if
(
code
==
Bytecodes
::
_invokedynamic
)
{
assert
(
!
target
->
is_static
(),
"receiver explicit in method"
);
arg_size
--
;
// implicit, not really on stack
}
if
(
!
target
->
is_loaded
()
&&
code
==
Bytecodes
::
_invokestatic
)
{
arg_size
--
;
}
int
arg_size
=
target
->
invoke_arg_size
(
code
);
int
arg_base
=
MAX2
(
state
.
_stack_height
-
arg_size
,
0
);
// direct recursive calls are skipped if they can be bound statically without introducing
...
...
src/share/vm/ci/ciMethod.hpp
浏览文件 @
33c85b23
...
...
@@ -127,7 +127,24 @@ class ciMethod : public ciObject {
ciSignature
*
signature
()
const
{
return
_signature
;
}
ciType
*
return_type
()
const
{
return
_signature
->
return_type
();
}
int
arg_size_no_receiver
()
const
{
return
_signature
->
size
();
}
int
arg_size
()
const
{
return
_signature
->
size
()
+
(
_flags
.
is_static
()
?
0
:
1
);
}
// Can only be used on loaded ciMethods
int
arg_size
()
const
{
check_is_loaded
();
return
_signature
->
size
()
+
(
_flags
.
is_static
()
?
0
:
1
);
}
// Report the number of elements on stack when invoking this method.
// This is different than the regular arg_size because invokdynamic
// has an implicit receiver.
int
invoke_arg_size
(
Bytecodes
::
Code
code
)
const
{
int
arg_size
=
_signature
->
size
();
// Add a receiver argument, maybe:
if
(
code
!=
Bytecodes
::
_invokestatic
&&
code
!=
Bytecodes
::
_invokedynamic
)
{
arg_size
++
;
}
return
arg_size
;
}
// Method code and related information.
address
code
()
{
if
(
_code
==
NULL
)
load_code
();
return
_code
;
}
...
...
src/share/vm/opto/graphKit.cpp
浏览文件 @
33c85b23
...
...
@@ -1033,14 +1033,10 @@ bool GraphKit::compute_stack_effects(int& inputs, int& depth) {
iter
.
reset_to_bci
(
bci
());
iter
.
next
();
ciMethod
*
method
=
iter
.
get_method
(
ignore
);
inputs
=
method
->
arg_size_no_receiver
();
// Add a receiver argument, maybe:
if
(
code
!=
Bytecodes
::
_invokestatic
&&
code
!=
Bytecodes
::
_invokedynamic
)
inputs
+=
1
;
// (Do not use ciMethod::arg_size(), because
// it might be an unloaded method, which doesn't
// know whether it is static or not.)
inputs
=
method
->
invoke_arg_size
(
code
);
int
size
=
method
->
return_type
()
->
size
();
depth
=
size
-
inputs
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录