Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_hotspot
提交
27925402
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看板
提交
27925402
编写于
10月 13, 2010
作者:
T
twisti
浏览文件
操作
浏览文件
下载
差异文件
Merge
上级
d9ff92de
b72f3305
变更
6
显示空白变更内容
内联
并排
Showing
6 changed file
with
23 addition
and
8 deletion
+23
-8
src/cpu/sparc/vm/assembler_sparc.hpp
src/cpu/sparc/vm/assembler_sparc.hpp
+6
-0
src/cpu/sparc/vm/c1_CodeStubs_sparc.cpp
src/cpu/sparc/vm/c1_CodeStubs_sparc.cpp
+14
-4
src/cpu/sparc/vm/c1_LIRGenerator_sparc.cpp
src/cpu/sparc/vm/c1_LIRGenerator_sparc.cpp
+1
-1
src/cpu/x86/vm/c1_LIRAssembler_x86.cpp
src/cpu/x86/vm/c1_LIRAssembler_x86.cpp
+0
-2
src/cpu/x86/vm/c1_LIRGenerator_x86.cpp
src/cpu/x86/vm/c1_LIRGenerator_x86.cpp
+1
-1
src/share/vm/c1/c1_LIRGenerator.cpp
src/share/vm/c1/c1_LIRGenerator.cpp
+1
-0
未找到文件。
src/cpu/sparc/vm/assembler_sparc.hpp
浏览文件 @
27925402
...
...
@@ -825,6 +825,12 @@ class Assembler : public AbstractAssembler {
// test if -4096 <= x <= 4095
static
bool
is_simm13
(
int
x
)
{
return
is_simm
(
x
,
13
);
}
// test if label is in simm16 range in words (wdisp16).
bool
is_in_wdisp16_range
(
Label
&
L
)
{
intptr_t
d
=
intptr_t
(
pc
())
-
intptr_t
(
target
(
L
));
return
is_simm
(
d
,
18
);
}
enum
ASIs
{
// page 72, v9
ASI_PRIMARY
=
0x80
,
ASI_PRIMARY_LITTLE
=
0x88
...
...
src/cpu/sparc/vm/c1_CodeStubs_sparc.cpp
浏览文件 @
27925402
...
...
@@ -425,8 +425,13 @@ void G1PreBarrierStub::emit_code(LIR_Assembler* ce) {
Register
pre_val_reg
=
pre_val
()
->
as_register
();
ce
->
mem2reg
(
addr
(),
pre_val
(),
T_OBJECT
,
patch_code
(),
info
(),
false
);
if
(
__
is_in_wdisp16_range
(
_continuation
))
{
__
br_on_reg_cond
(
Assembler
::
rc_z
,
/*annul*/
false
,
Assembler
::
pt
,
pre_val_reg
,
_continuation
);
}
else
{
__
cmp
(
pre_val_reg
,
G0
);
__
brx
(
Assembler
::
equal
,
false
,
Assembler
::
pn
,
_continuation
);
}
__
delayed
()
->
nop
();
__
call
(
Runtime1
::
entry_for
(
Runtime1
::
Runtime1
::
g1_pre_barrier_slow_id
));
...
...
@@ -452,8 +457,13 @@ void G1PostBarrierStub::emit_code(LIR_Assembler* ce) {
assert
(
new_val
()
->
is_register
(),
"Precondition."
);
Register
addr_reg
=
addr
()
->
as_pointer_register
();
Register
new_val_reg
=
new_val
()
->
as_register
();
if
(
__
is_in_wdisp16_range
(
_continuation
))
{
__
br_on_reg_cond
(
Assembler
::
rc_z
,
/*annul*/
false
,
Assembler
::
pt
,
new_val_reg
,
_continuation
);
}
else
{
__
cmp
(
new_val_reg
,
G0
);
__
brx
(
Assembler
::
equal
,
false
,
Assembler
::
pn
,
_continuation
);
}
__
delayed
()
->
nop
();
__
call
(
Runtime1
::
entry_for
(
Runtime1
::
Runtime1
::
g1_post_barrier_slow_id
));
...
...
src/cpu/sparc/vm/c1_LIRGenerator_sparc.cpp
浏览文件 @
27925402
...
...
@@ -664,7 +664,7 @@ void LIRGenerator::do_CompareAndSwap(Intrinsic* x, ValueType* type) {
// Use temps to avoid kills
LIR_Opr
t1
=
FrameMap
::
G1_opr
;
LIR_Opr
t2
=
FrameMap
::
G3_opr
;
LIR_Opr
addr
=
new_pointer_register
();
LIR_Opr
addr
=
(
type
==
objectType
)
?
new_register
(
T_OBJECT
)
:
new_pointer_register
();
// get address of field
obj
.
load_item
();
...
...
src/cpu/x86/vm/c1_LIRAssembler_x86.cpp
浏览文件 @
27925402
...
...
@@ -1941,8 +1941,6 @@ void LIR_Assembler::emit_compare_and_swap(LIR_OpCompareAndSwap* op) {
__
cmpxchgptr
(
newval
,
Address
(
addr
,
0
));
}
else
if
(
op
->
code
()
==
lir_cas_int
)
{
__
cmpxchgl
(
newval
,
Address
(
addr
,
0
));
}
else
{
LP64_ONLY
(
__
cmpxchgq
(
newval
,
Address
(
addr
,
0
)));
}
#ifdef _LP64
}
else
if
(
op
->
code
()
==
lir_cas_long
)
{
...
...
src/cpu/x86/vm/c1_LIRGenerator_x86.cpp
浏览文件 @
27925402
...
...
@@ -765,7 +765,7 @@ void LIRGenerator::do_CompareAndSwap(Intrinsic* x, ValueType* type) {
ShouldNotReachHere
();
}
LIR_Opr
addr
=
new_pointer_register
();
LIR_Opr
addr
=
(
type
==
objectType
)
?
new_register
(
T_OBJECT
)
:
new_pointer_register
();
LIR_Address
*
a
;
if
(
offset
.
result
()
->
is_constant
())
{
a
=
new
LIR_Address
(
obj
.
result
(),
...
...
src/share/vm/c1/c1_LIRGenerator.cpp
浏览文件 @
27925402
...
...
@@ -1350,6 +1350,7 @@ void LIRGenerator::G1SATBCardTableModRef_post_barrier(LIR_OprDesc* addr, LIR_Opr
addr
=
ptr
;
}
assert
(
addr
->
is_register
(),
"must be a register at this point"
);
assert
(
addr
->
type
()
==
T_OBJECT
,
"addr should point to an object"
);
LIR_Opr
xor_res
=
new_pointer_register
();
LIR_Opr
xor_shift_res
=
new_pointer_register
();
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录