Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_hotspot
提交
bbf41108
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看板
提交
bbf41108
编写于
2月 23, 2011
作者:
K
kvn
浏览文件
操作
浏览文件
下载
差异文件
Merge
上级
53a43ae4
c37af898
变更
3
展开全部
显示空白变更内容
内联
并排
Showing
3 changed file
with
297 addition
and
259 deletion
+297
-259
src/cpu/sparc/vm/stubGenerator_sparc.cpp
src/cpu/sparc/vm/stubGenerator_sparc.cpp
+156
-127
src/cpu/x86/vm/stubGenerator_x86_32.cpp
src/cpu/x86/vm/stubGenerator_x86_32.cpp
+18
-13
src/cpu/x86/vm/stubGenerator_x86_64.cpp
src/cpu/x86/vm/stubGenerator_x86_64.cpp
+123
-119
未找到文件。
src/cpu/sparc/vm/stubGenerator_sparc.cpp
浏览文件 @
bbf41108
此差异已折叠。
点击以展开。
src/cpu/x86/vm/stubGenerator_x86_32.cpp
浏览文件 @
bbf41108
...
@@ -945,6 +945,12 @@ class StubGenerator: public StubCodeGenerator {
...
@@ -945,6 +945,12 @@ class StubGenerator: public StubCodeGenerator {
__
movptr
(
from
,
Address
(
rsp
,
12
+
4
));
__
movptr
(
from
,
Address
(
rsp
,
12
+
4
));
__
movptr
(
to
,
Address
(
rsp
,
12
+
8
));
__
movptr
(
to
,
Address
(
rsp
,
12
+
8
));
__
movl
(
count
,
Address
(
rsp
,
12
+
12
));
__
movl
(
count
,
Address
(
rsp
,
12
+
12
));
if
(
entry
!=
NULL
)
{
*
entry
=
__
pc
();
// Entry point from conjoint arraycopy stub.
BLOCK_COMMENT
(
"Entry:"
);
}
if
(
t
==
T_OBJECT
)
{
if
(
t
==
T_OBJECT
)
{
__
testl
(
count
,
count
);
__
testl
(
count
,
count
);
__
jcc
(
Assembler
::
zero
,
L_0_count
);
__
jcc
(
Assembler
::
zero
,
L_0_count
);
...
@@ -952,9 +958,6 @@ class StubGenerator: public StubCodeGenerator {
...
@@ -952,9 +958,6 @@ class StubGenerator: public StubCodeGenerator {
__
mov
(
saved_to
,
to
);
// save 'to'
__
mov
(
saved_to
,
to
);
// save 'to'
}
}
*
entry
=
__
pc
();
// Entry point from conjoint arraycopy stub.
BLOCK_COMMENT
(
"Entry:"
);
__
subptr
(
to
,
from
);
// to --> to_from
__
subptr
(
to
,
from
);
// to --> to_from
__
cmpl
(
count
,
2
<<
shift
);
// Short arrays (< 8 bytes) copy by element
__
cmpl
(
count
,
2
<<
shift
);
// Short arrays (< 8 bytes) copy by element
__
jcc
(
Assembler
::
below
,
L_copy_4_bytes
);
// use unsigned cmp
__
jcc
(
Assembler
::
below
,
L_copy_4_bytes
);
// use unsigned cmp
...
@@ -1108,23 +1111,17 @@ class StubGenerator: public StubCodeGenerator {
...
@@ -1108,23 +1111,17 @@ class StubGenerator: public StubCodeGenerator {
__
movptr
(
src
,
Address
(
rsp
,
12
+
4
));
// from
__
movptr
(
src
,
Address
(
rsp
,
12
+
4
));
// from
__
movptr
(
dst
,
Address
(
rsp
,
12
+
8
));
// to
__
movptr
(
dst
,
Address
(
rsp
,
12
+
8
));
// to
__
movl2ptr
(
count
,
Address
(
rsp
,
12
+
12
));
// count
__
movl2ptr
(
count
,
Address
(
rsp
,
12
+
12
));
// count
if
(
t
==
T_OBJECT
)
{
gen_write_ref_array_pre_barrier
(
dst
,
count
);
}
if
(
entry
!=
NULL
)
{
if
(
entry
!=
NULL
)
{
*
entry
=
__
pc
();
// Entry point from generic arraycopy stub.
*
entry
=
__
pc
();
// Entry point from generic arraycopy stub.
BLOCK_COMMENT
(
"Entry:"
);
BLOCK_COMMENT
(
"Entry:"
);
}
}
if
(
t
==
T_OBJECT
)
{
// nooverlap_target expects arguments in rsi and rdi.
__
testl
(
count
,
count
);
__
jcc
(
Assembler
::
zero
,
L_0_count
);
}
__
mov
(
from
,
src
);
__
mov
(
from
,
src
);
__
mov
(
to
,
dst
);
__
mov
(
to
,
dst
);
// arrays overlap test
// arrays overlap test
: dispatch to disjoint stub if necessary.
RuntimeAddress
nooverlap
(
nooverlap_target
);
RuntimeAddress
nooverlap
(
nooverlap_target
);
__
cmpptr
(
dst
,
src
);
__
cmpptr
(
dst
,
src
);
__
lea
(
end
,
Address
(
src
,
count
,
sf
,
0
));
// src + count * elem_size
__
lea
(
end
,
Address
(
src
,
count
,
sf
,
0
));
// src + count * elem_size
...
@@ -1132,6 +1129,12 @@ class StubGenerator: public StubCodeGenerator {
...
@@ -1132,6 +1129,12 @@ class StubGenerator: public StubCodeGenerator {
__
cmpptr
(
dst
,
end
);
__
cmpptr
(
dst
,
end
);
__
jump_cc
(
Assembler
::
aboveEqual
,
nooverlap
);
__
jump_cc
(
Assembler
::
aboveEqual
,
nooverlap
);
if
(
t
==
T_OBJECT
)
{
__
testl
(
count
,
count
);
__
jcc
(
Assembler
::
zero
,
L_0_count
);
gen_write_ref_array_pre_barrier
(
dst
,
count
);
}
// copy from high to low
// copy from high to low
__
cmpl
(
count
,
2
<<
shift
);
// Short arrays (< 8 bytes) copy by element
__
cmpl
(
count
,
2
<<
shift
);
// Short arrays (< 8 bytes) copy by element
__
jcc
(
Assembler
::
below
,
L_copy_4_bytes
);
// use unsigned cmp
__
jcc
(
Assembler
::
below
,
L_copy_4_bytes
);
// use unsigned cmp
...
@@ -1451,8 +1454,10 @@ class StubGenerator: public StubCodeGenerator {
...
@@ -1451,8 +1454,10 @@ class StubGenerator: public StubCodeGenerator {
__
movptr
(
to
,
to_arg
);
__
movptr
(
to
,
to_arg
);
__
movl2ptr
(
length
,
length_arg
);
__
movl2ptr
(
length
,
length_arg
);
if
(
entry
!=
NULL
)
{
*
entry
=
__
pc
();
// Entry point from generic arraycopy stub.
*
entry
=
__
pc
();
// Entry point from generic arraycopy stub.
BLOCK_COMMENT
(
"Entry:"
);
BLOCK_COMMENT
(
"Entry:"
);
}
//---------------------------------------------------------------
//---------------------------------------------------------------
// Assembler stub will be used for this call to arraycopy
// Assembler stub will be used for this call to arraycopy
...
...
src/cpu/x86/vm/stubGenerator_x86_64.cpp
浏览文件 @
bbf41108
此差异已折叠。
点击以展开。
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录