Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_hotspot
提交
a034425d
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看板
体验新版 GitCode,发现更多精彩内容 >>
提交
a034425d
编写于
2月 23, 2012
作者:
B
bpittore
浏览文件
操作
浏览文件
下载
差异文件
Merge
上级
03902729
4b25e166
变更
19
隐藏空白更改
内联
并排
Showing
19 changed file
with
158 addition
and
1 deletion
+158
-1
make/linux/makefiles/ppc.make
make/linux/makefiles/ppc.make
+3
-0
src/cpu/sparc/vm/c1_LIRAssembler_sparc.cpp
src/cpu/sparc/vm/c1_LIRAssembler_sparc.cpp
+20
-0
src/cpu/x86/vm/c1_LIRAssembler_x86.cpp
src/cpu/x86/vm/c1_LIRAssembler_x86.cpp
+19
-0
src/share/vm/c1/c1_Canonicalizer.cpp
src/share/vm/c1/c1_Canonicalizer.cpp
+1
-0
src/share/vm/c1/c1_Canonicalizer.hpp
src/share/vm/c1/c1_Canonicalizer.hpp
+1
-0
src/share/vm/c1/c1_GraphBuilder.cpp
src/share/vm/c1/c1_GraphBuilder.cpp
+17
-1
src/share/vm/c1/c1_IR.cpp
src/share/vm/c1/c1_IR.cpp
+1
-0
src/share/vm/c1/c1_IR.hpp
src/share/vm/c1/c1_IR.hpp
+3
-0
src/share/vm/c1/c1_Instruction.hpp
src/share/vm/c1/c1_Instruction.hpp
+19
-0
src/share/vm/c1/c1_InstructionPrinter.cpp
src/share/vm/c1/c1_InstructionPrinter.cpp
+16
-0
src/share/vm/c1/c1_InstructionPrinter.hpp
src/share/vm/c1/c1_InstructionPrinter.hpp
+1
-0
src/share/vm/c1/c1_LIR.cpp
src/share/vm/c1/c1_LIR.cpp
+8
-0
src/share/vm/c1/c1_LIR.hpp
src/share/vm/c1/c1_LIR.hpp
+8
-0
src/share/vm/c1/c1_LIRAssembler.cpp
src/share/vm/c1/c1_LIRAssembler.cpp
+16
-0
src/share/vm/c1/c1_LIRAssembler.hpp
src/share/vm/c1/c1_LIRAssembler.hpp
+4
-0
src/share/vm/c1/c1_LIRGenerator.cpp
src/share/vm/c1/c1_LIRGenerator.cpp
+17
-0
src/share/vm/c1/c1_LIRGenerator.hpp
src/share/vm/c1/c1_LIRGenerator.hpp
+1
-0
src/share/vm/c1/c1_Optimizer.cpp
src/share/vm/c1/c1_Optimizer.cpp
+2
-0
src/share/vm/c1/c1_ValueMap.hpp
src/share/vm/c1/c1_ValueMap.hpp
+1
-0
未找到文件。
make/linux/makefiles/ppc.make
浏览文件 @
a034425d
...
...
@@ -28,3 +28,6 @@ OPT_CFLAGS/sharedRuntimeTrig.o = $(OPT_CFLAGS/NOOPT)
# Must also specify if CPU is big endian
CFLAGS
+=
-DVM_BIG_ENDIAN
ifdef
E500V2
ASFLAGS
+=
-Wa
,-mspe
-Wa
,--defsym
-Wa
,E500V2
=
1
endif
src/cpu/sparc/vm/c1_LIRAssembler_sparc.cpp
浏览文件 @
a034425d
...
...
@@ -3231,6 +3231,26 @@ void LIR_Assembler::membar_release() {
// no-op on TSO
}
void
LIR_Assembler
::
membar_loadload
()
{
// no-op
//__ membar(Assembler::Membar_mask_bits(Assembler::loadload));
}
void
LIR_Assembler
::
membar_storestore
()
{
// no-op
//__ membar(Assembler::Membar_mask_bits(Assembler::storestore));
}
void
LIR_Assembler
::
membar_loadstore
()
{
// no-op
//__ membar(Assembler::Membar_mask_bits(Assembler::loadstore));
}
void
LIR_Assembler
::
membar_storeload
()
{
__
membar
(
Assembler
::
Membar_mask_bits
(
Assembler
::
StoreLoad
));
}
// Pack two sequential registers containing 32 bit values
// into a single 64 bit register.
// src and src->successor() are packed into dst
...
...
src/cpu/x86/vm/c1_LIRAssembler_x86.cpp
浏览文件 @
a034425d
...
...
@@ -3713,6 +3713,25 @@ void LIR_Assembler::membar_release() {
// __ store_fence();
}
void
LIR_Assembler
::
membar_loadload
()
{
// no-op
//__ membar(Assembler::Membar_mask_bits(Assembler::loadload));
}
void
LIR_Assembler
::
membar_storestore
()
{
// no-op
//__ membar(Assembler::Membar_mask_bits(Assembler::storestore));
}
void
LIR_Assembler
::
membar_loadstore
()
{
// no-op
//__ membar(Assembler::Membar_mask_bits(Assembler::loadstore));
}
void
LIR_Assembler
::
membar_storeload
()
{
__
membar
(
Assembler
::
Membar_mask_bits
(
Assembler
::
StoreLoad
));
}
void
LIR_Assembler
::
get_thread
(
LIR_Opr
result_reg
)
{
assert
(
result_reg
->
is_register
(),
"check"
);
#ifdef _LP64
...
...
src/share/vm/c1/c1_Canonicalizer.cpp
浏览文件 @
a034425d
...
...
@@ -908,3 +908,4 @@ void Canonicalizer::do_UnsafePrefetchWrite(UnsafePrefetchWrite* x) {}
void
Canonicalizer
::
do_ProfileCall
(
ProfileCall
*
x
)
{}
void
Canonicalizer
::
do_ProfileInvoke
(
ProfileInvoke
*
x
)
{}
void
Canonicalizer
::
do_RuntimeCall
(
RuntimeCall
*
x
)
{}
void
Canonicalizer
::
do_MemBar
(
MemBar
*
x
)
{}
src/share/vm/c1/c1_Canonicalizer.hpp
浏览文件 @
a034425d
...
...
@@ -104,6 +104,7 @@ class Canonicalizer: InstructionVisitor {
virtual
void
do_ProfileCall
(
ProfileCall
*
x
);
virtual
void
do_ProfileInvoke
(
ProfileInvoke
*
x
);
virtual
void
do_RuntimeCall
(
RuntimeCall
*
x
);
virtual
void
do_MemBar
(
MemBar
*
x
);
};
#endif // SHARE_VM_C1_C1_CANONICALIZER_HPP
src/share/vm/c1/c1_GraphBuilder.cpp
浏览文件 @
a034425d
...
...
@@ -1418,6 +1418,12 @@ void GraphBuilder::method_return(Value x) {
call_register_finalizer
();
}
bool
need_mem_bar
=
false
;
if
(
method
()
->
name
()
==
ciSymbol
::
object_initializer_name
()
&&
scope
()
->
wrote_final
())
{
need_mem_bar
=
true
;
}
// Check to see whether we are inlining. If so, Return
// instructions become Gotos to the continuation point.
if
(
continuation
()
!=
NULL
)
{
...
...
@@ -1437,6 +1443,10 @@ void GraphBuilder::method_return(Value x) {
monitorexit
(
state
()
->
lock_at
(
0
),
SynchronizationEntryBCI
);
}
if
(
need_mem_bar
)
{
append
(
new
MemBar
(
lir_membar_storestore
));
}
// State at end of inlined method is the state of the caller
// without the method parameters on stack, including the
// return value, if any, of the inlined method on operand stack.
...
...
@@ -1456,7 +1466,6 @@ void GraphBuilder::method_return(Value x) {
// the continuation point.
append_with_bci
(
goto_callee
,
scope_data
()
->
continuation
()
->
bci
());
incr_num_returns
();
return
;
}
...
...
@@ -1472,6 +1481,10 @@ void GraphBuilder::method_return(Value x) {
append_split
(
new
MonitorExit
(
receiver
,
state
()
->
unlock
()));
}
if
(
need_mem_bar
)
{
append
(
new
MemBar
(
lir_membar_storestore
));
}
append
(
new
Return
(
x
));
}
...
...
@@ -1504,6 +1517,9 @@ void GraphBuilder::access_field(Bytecodes::Code code) {
}
}
if
(
field
->
is_final
()
&&
(
code
==
Bytecodes
::
_putfield
))
{
scope
()
->
set_wrote_final
();
}
const
int
offset
=
!
needs_patching
?
field
->
offset
()
:
-
1
;
switch
(
code
)
{
...
...
src/share/vm/c1/c1_IR.cpp
浏览文件 @
a034425d
...
...
@@ -141,6 +141,7 @@ IRScope::IRScope(Compilation* compilation, IRScope* caller, int caller_bci, ciMe
_xhandlers
=
new
XHandlers
(
method
);
_number_of_locks
=
0
;
_monitor_pairing_ok
=
method
->
has_balanced_monitors
();
_wrote_final
=
false
;
_start
=
NULL
;
if
(
osr_bci
==
-
1
)
{
...
...
src/share/vm/c1/c1_IR.hpp
浏览文件 @
a034425d
...
...
@@ -149,6 +149,7 @@ class IRScope: public CompilationResourceObj {
XHandlers
*
_xhandlers
;
// the exception handlers
int
_number_of_locks
;
// the number of monitor lock slots needed
bool
_monitor_pairing_ok
;
// the monitor pairing info
bool
_wrote_final
;
// has written final field
BlockBegin
*
_start
;
// the start block, successsors are method entries
BitMap
_requires_phi_function
;
// bit is set if phi functions at loop headers are necessary for a local variable
...
...
@@ -181,6 +182,8 @@ class IRScope: public CompilationResourceObj {
void
set_min_number_of_locks
(
int
n
)
{
if
(
n
>
_number_of_locks
)
_number_of_locks
=
n
;
}
bool
monitor_pairing_ok
()
const
{
return
_monitor_pairing_ok
;
}
BlockBegin
*
start
()
const
{
return
_start
;
}
void
set_wrote_final
()
{
_wrote_final
=
true
;
}
bool
wrote_final
()
const
{
return
_wrote_final
;
}
};
...
...
src/share/vm/c1/c1_Instruction.hpp
浏览文件 @
a034425d
...
...
@@ -107,6 +107,7 @@ class UnsafePrefetchWrite;
class
ProfileCall
;
class
ProfileInvoke
;
class
RuntimeCall
;
class
MemBar
;
// A Value is a reference to the instruction creating the value
typedef
Instruction
*
Value
;
...
...
@@ -204,6 +205,7 @@ class InstructionVisitor: public StackObj {
virtual
void
do_ProfileCall
(
ProfileCall
*
x
)
=
0
;
virtual
void
do_ProfileInvoke
(
ProfileInvoke
*
x
)
=
0
;
virtual
void
do_RuntimeCall
(
RuntimeCall
*
x
)
=
0
;
virtual
void
do_MemBar
(
MemBar
*
x
)
=
0
;
};
...
...
@@ -2351,6 +2353,23 @@ LEAF(ProfileInvoke, Instruction)
virtual
void
state_values_do
(
ValueVisitor
*
);
}
;
LEAF
(
MemBar
,
Instruction
)
private
:
LIR_Code
_code
;
public
:
MemBar
(
LIR_Code
code
)
:
Instruction
(
voidType
)
,
_code
(
code
)
{
pin
();
}
LIR_Code
code
()
{
return
_code
;
}
virtual
void
input_values_do
(
ValueVisitor
*
)
{}
}
;
class
BlockPair
:
public
CompilationResourceObj
{
private:
BlockBegin
*
_from
;
...
...
src/share/vm/c1/c1_InstructionPrinter.cpp
浏览文件 @
a034425d
...
...
@@ -855,4 +855,20 @@ void InstructionPrinter::do_RuntimeCall(RuntimeCall* x) {
output
()
->
put
(
')'
);
}
void
InstructionPrinter
::
do_MemBar
(
MemBar
*
x
)
{
if
(
os
::
is_MP
())
{
LIR_Code
code
=
x
->
code
();
switch
(
code
)
{
case
lir_membar_acquire
:
output
()
->
print
(
"membar_acquire"
);
break
;
case
lir_membar_release
:
output
()
->
print
(
"membar_release"
);
break
;
case
lir_membar
:
output
()
->
print
(
"membar"
);
break
;
case
lir_membar_loadload
:
output
()
->
print
(
"membar_loadload"
);
break
;
case
lir_membar_storestore
:
output
()
->
print
(
"membar_storestore"
);
break
;
case
lir_membar_loadstore
:
output
()
->
print
(
"membar_loadstore"
);
break
;
case
lir_membar_storeload
:
output
()
->
print
(
"membar_storeload"
);
break
;
default
:
ShouldNotReachHere
();
break
;
}
}
}
#endif // PRODUCT
src/share/vm/c1/c1_InstructionPrinter.hpp
浏览文件 @
a034425d
...
...
@@ -132,6 +132,7 @@ class InstructionPrinter: public InstructionVisitor {
virtual
void
do_ProfileCall
(
ProfileCall
*
x
);
virtual
void
do_ProfileInvoke
(
ProfileInvoke
*
x
);
virtual
void
do_RuntimeCall
(
RuntimeCall
*
x
);
virtual
void
do_MemBar
(
MemBar
*
x
);
};
#endif // PRODUCT
...
...
src/share/vm/c1/c1_LIR.cpp
浏览文件 @
a034425d
...
...
@@ -464,6 +464,10 @@ void LIR_OpVisitState::visit(LIR_Op* op) {
case
lir_membar
:
// result and info always invalid
case
lir_membar_acquire
:
// result and info always invalid
case
lir_membar_release
:
// result and info always invalid
case
lir_membar_loadload
:
// result and info always invalid
case
lir_membar_storestore
:
// result and info always invalid
case
lir_membar_loadstore
:
// result and info always invalid
case
lir_membar_storeload
:
// result and info always invalid
{
assert
(
op
->
as_Op0
()
!=
NULL
,
"must be"
);
assert
(
op
->
_info
==
NULL
,
"info not used by this instruction"
);
...
...
@@ -1607,6 +1611,10 @@ const char * LIR_Op::name() const {
case
lir_membar
:
s
=
"membar"
;
break
;
case
lir_membar_acquire
:
s
=
"membar_acquire"
;
break
;
case
lir_membar_release
:
s
=
"membar_release"
;
break
;
case
lir_membar_loadload
:
s
=
"membar_loadload"
;
break
;
case
lir_membar_storestore
:
s
=
"membar_storestore"
;
break
;
case
lir_membar_loadstore
:
s
=
"membar_loadstore"
;
break
;
case
lir_membar_storeload
:
s
=
"membar_storeload"
;
break
;
case
lir_word_align
:
s
=
"word_align"
;
break
;
case
lir_label
:
s
=
"label"
;
break
;
case
lir_nop
:
s
=
"nop"
;
break
;
...
...
src/share/vm/c1/c1_LIR.hpp
浏览文件 @
a034425d
...
...
@@ -866,6 +866,10 @@ enum LIR_Code {
,
lir_membar
,
lir_membar_acquire
,
lir_membar_release
,
lir_membar_loadload
,
lir_membar_storestore
,
lir_membar_loadstore
,
lir_membar_storeload
,
lir_get_thread
,
end_op0
,
begin_op1
...
...
@@ -1918,6 +1922,10 @@ class LIR_List: public CompilationResourceObj {
void
membar
()
{
append
(
new
LIR_Op0
(
lir_membar
));
}
void
membar_acquire
()
{
append
(
new
LIR_Op0
(
lir_membar_acquire
));
}
void
membar_release
()
{
append
(
new
LIR_Op0
(
lir_membar_release
));
}
void
membar_loadload
()
{
append
(
new
LIR_Op0
(
lir_membar_loadload
));
}
void
membar_storestore
()
{
append
(
new
LIR_Op0
(
lir_membar_storestore
));
}
void
membar_loadstore
()
{
append
(
new
LIR_Op0
(
lir_membar_loadstore
));
}
void
membar_storeload
()
{
append
(
new
LIR_Op0
(
lir_membar_storeload
));
}
void
nop
()
{
append
(
new
LIR_Op0
(
lir_nop
));
}
void
build_frame
()
{
append
(
new
LIR_Op0
(
lir_build_frame
));
}
...
...
src/share/vm/c1/c1_LIRAssembler.cpp
浏览文件 @
a034425d
...
...
@@ -664,6 +664,22 @@ void LIR_Assembler::emit_op0(LIR_Op0* op) {
membar_release
();
break
;
case
lir_membar_loadload
:
membar_loadload
();
break
;
case
lir_membar_storestore
:
membar_storestore
();
break
;
case
lir_membar_loadstore
:
membar_loadstore
();
break
;
case
lir_membar_storeload
:
membar_storeload
();
break
;
case
lir_get_thread
:
get_thread
(
op
->
result_opr
());
break
;
...
...
src/share/vm/c1/c1_LIRAssembler.hpp
浏览文件 @
a034425d
...
...
@@ -241,6 +241,10 @@ class LIR_Assembler: public CompilationResourceObj {
void
membar
();
void
membar_acquire
();
void
membar_release
();
void
membar_loadload
();
void
membar_storestore
();
void
membar_loadstore
();
void
membar_storeload
();
void
get_thread
(
LIR_Opr
result
);
void
verify_oop_map
(
CodeEmitInfo
*
info
);
...
...
src/share/vm/c1/c1_LIRGenerator.cpp
浏览文件 @
a034425d
...
...
@@ -3165,3 +3165,20 @@ LIR_Opr LIRGenerator::call_runtime(BasicTypeArray* signature, LIRItemList* args,
}
return
result
;
}
void
LIRGenerator
::
do_MemBar
(
MemBar
*
x
)
{
if
(
os
::
is_MP
())
{
LIR_Code
code
=
x
->
code
();
switch
(
code
)
{
case
lir_membar_acquire
:
__
membar_acquire
();
break
;
case
lir_membar_release
:
__
membar_release
();
break
;
case
lir_membar
:
__
membar
();
break
;
case
lir_membar_loadload
:
__
membar_loadload
();
break
;
case
lir_membar_storestore
:
__
membar_storestore
();
break
;
case
lir_membar_loadstore
:
__
membar_loadstore
();
break
;
case
lir_membar_storeload
:
__
membar_storeload
();
break
;
default
:
ShouldNotReachHere
();
break
;
}
}
}
src/share/vm/c1/c1_LIRGenerator.hpp
浏览文件 @
a034425d
...
...
@@ -525,6 +525,7 @@ class LIRGenerator: public InstructionVisitor, public BlockClosure {
virtual
void
do_ProfileCall
(
ProfileCall
*
x
);
virtual
void
do_ProfileInvoke
(
ProfileInvoke
*
x
);
virtual
void
do_RuntimeCall
(
RuntimeCall
*
x
);
virtual
void
do_MemBar
(
MemBar
*
x
);
};
...
...
src/share/vm/c1/c1_Optimizer.cpp
浏览文件 @
a034425d
...
...
@@ -509,6 +509,7 @@ public:
void
do_ProfileCall
(
ProfileCall
*
x
);
void
do_ProfileInvoke
(
ProfileInvoke
*
x
);
void
do_RuntimeCall
(
RuntimeCall
*
x
);
void
do_MemBar
(
MemBar
*
x
);
};
...
...
@@ -678,6 +679,7 @@ void NullCheckVisitor::do_UnsafePrefetchWrite(UnsafePrefetchWrite* x) {}
void
NullCheckVisitor
::
do_ProfileCall
(
ProfileCall
*
x
)
{
nce
()
->
clear_last_explicit_null_check
();
}
void
NullCheckVisitor
::
do_ProfileInvoke
(
ProfileInvoke
*
x
)
{}
void
NullCheckVisitor
::
do_RuntimeCall
(
RuntimeCall
*
x
)
{}
void
NullCheckVisitor
::
do_MemBar
(
MemBar
*
x
)
{}
void
NullCheckEliminator
::
visit
(
Value
*
p
)
{
...
...
src/share/vm/c1/c1_ValueMap.hpp
浏览文件 @
a034425d
...
...
@@ -200,6 +200,7 @@ class ValueNumberingVisitor: public InstructionVisitor {
void
do_ProfileCall
(
ProfileCall
*
x
)
{
/* nothing to do */
}
void
do_ProfileInvoke
(
ProfileInvoke
*
x
)
{
/* nothing to do */
};
void
do_RuntimeCall
(
RuntimeCall
*
x
)
{
/* nothing to do */
};
void
do_MemBar
(
MemBar
*
x
)
{
/* nothing to do */
};
};
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录