Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_hotspot
提交
32452f35
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看板
提交
32452f35
编写于
9月 02, 2014
作者:
A
amurillo
浏览文件
操作
浏览文件
下载
差异文件
Merge
上级
3179ede9
2790f05c
变更
14
显示空白变更内容
内联
并排
Showing
14 changed file
with
83 addition
and
27 deletion
+83
-27
.hgtags
.hgtags
+4
-0
make/bsd/makefiles/vm.make
make/bsd/makefiles/vm.make
+9
-2
make/linux/makefiles/vm.make
make/linux/makefiles/vm.make
+9
-2
make/solaris/Makefile
make/solaris/Makefile
+1
-0
make/solaris/makefiles/buildtree.make
make/solaris/makefiles/buildtree.make
+2
-0
make/solaris/makefiles/vm.make
make/solaris/makefiles/vm.make
+9
-1
src/cpu/sparc/vm/c1_LIRGenerator_sparc.cpp
src/cpu/sparc/vm/c1_LIRGenerator_sparc.cpp
+4
-6
src/cpu/x86/vm/c1_LIRGenerator_x86.cpp
src/cpu/x86/vm/c1_LIRGenerator_x86.cpp
+3
-6
src/share/vm/c1/c1_GraphBuilder.cpp
src/share/vm/c1/c1_GraphBuilder.cpp
+1
-1
src/share/vm/c1/c1_Instruction.hpp
src/share/vm/c1/c1_Instruction.hpp
+4
-2
src/share/vm/c1/c1_LIRGenerator.cpp
src/share/vm/c1/c1_LIRGenerator.cpp
+16
-4
src/share/vm/c1/c1_LIRGenerator.hpp
src/share/vm/c1/c1_LIRGenerator.hpp
+4
-2
src/share/vm/runtime/arguments.cpp
src/share/vm/runtime/arguments.cpp
+8
-0
src/share/vm/runtime/arguments.hpp
src/share/vm/runtime/arguments.hpp
+9
-1
未找到文件。
.hgtags
浏览文件 @
32452f35
...
...
@@ -497,6 +497,10 @@ e4a6e7f1b90b85270aee1c54edaca3ef737082f1 hs25.20-b21
f7429096a202cab5c36a0f20dea33c554026010f jdk8u20-b22
7c56530b11496459e66cb9ea933035002311672c hs25.20-b22
f09d1f6a401e25a54dad44bb7bea482e47558af5 jdk8u20-b23
42ddd0bbcb6630fe463ec9bc1893c838d5edff1b jdk8u20-b24
00cf2b6f51b9560b01030e8f4c28c466f0b21fe3 hs25.20-b23
19408d5fd31c25ce60c43dd33e92b96e8df4a4ea jdk8u20-b25
eaa4074a7e3975cd33ec55e6b584586e2ac681bd jdk8u20-b26
4828415ebbf11e205dcc08e97ad5ae7dd03522f9 jdk8u40-b00
d952af8cf67dd1e7ab5fec9a299c6c6dafd1863e hs25.40-b01
f0afba33c928ddaa2d5f003b90d683c143f78ea3 hs25.40-b02
...
...
make/bsd/makefiles/vm.make
浏览文件 @
32452f35
...
...
@@ -243,10 +243,10 @@ JVM_OBJ_FILES = $(Obj_Files)
vm_version.o
:
$(filter-out vm_version.o
,
$(JVM_OBJ_FILES))
mapfile
:
$(MAPFILE) vm.def
mapfile
:
$(MAPFILE) vm.def
mapfile_ext
rm
-f
$@
awk
'{ if ($$0 ~ "INSERT VTABLE SYMBOLS HERE") \
{ system ("cat
vm.def"); }
\
{ system ("cat
mapfile_ext"); system ("cat vm.def"); }
\
else \
{ print $$0 } \
}'
>
$@
<
$(MAPFILE)
...
...
@@ -258,6 +258,13 @@ mapfile_reorder : mapfile $(REORDERFILE)
vm.def
:
$(Res_Files) $(Obj_Files)
sh
$(GAMMADIR)
/make/bsd/makefiles/build_vm_def.sh
*
.o
>
$@
mapfile_ext
:
rm
-f
$@
touch
$@
if
[
-f
$(HS_ALT_MAKE)
/bsd/makefiles/mapfile-ext
]
;
then
\
cat
$(HS_ALT_MAKE)
/bsd/makefiles/mapfile-ext
>
$@
;
\
fi
STATIC_CXX
=
false
ifeq
($(LINK_INTO),AOUT)
...
...
make/linux/makefiles/vm.make
浏览文件 @
32452f35
...
...
@@ -233,10 +233,10 @@ JVM_OBJ_FILES = $(Obj_Files)
vm_version.o
:
$(filter-out vm_version.o
,
$(JVM_OBJ_FILES))
mapfile
:
$(MAPFILE) vm.def
mapfile
:
$(MAPFILE) vm.def
mapfile_ext
rm
-f
$@
awk
'{ if ($$0 ~ "INSERT VTABLE SYMBOLS HERE") \
{ system ("cat
vm.def"); }
\
{ system ("cat
mapfile_ext"); system ("cat vm.def"); }
\
else \
{ print $$0 } \
}'
>
$@
<
$(MAPFILE)
...
...
@@ -248,6 +248,13 @@ mapfile_reorder : mapfile $(REORDERFILE)
vm.def
:
$(Res_Files) $(Obj_Files)
sh
$(GAMMADIR)
/make/linux/makefiles/build_vm_def.sh
*
.o
>
$@
mapfile_ext
:
rm
-f
$@
touch
$@
if
[
-f
$(HS_ALT_MAKE)
/linux/makefiles/mapfile-ext
]
;
then
\
cat
$(HS_ALT_MAKE)
/linux/makefiles/mapfile-ext
>
$@
;
\
fi
ifeq
($(JVM_VARIANT_ZEROSHARK), true)
STATIC_CXX
=
false
else
...
...
make/solaris/Makefile
浏览文件 @
32452f35
...
...
@@ -159,6 +159,7 @@ BUILDTREE_MAKE = $(GAMMADIR)/make/$(OSNAME)/makefiles/buildtree.make
BUILDTREE_VARS
=
GAMMADIR
=
$(GAMMADIR)
OS_FAMILY
=
$(OSNAME)
ARCH
=
$(SRCARCH)
BUILDARCH
=
$(BUILDARCH)
LIBARCH
=
$(LIBARCH)
BUILDTREE_VARS
+=
HOTSPOT_RELEASE_VERSION
=
$(HOTSPOT_RELEASE_VERSION)
HOTSPOT_BUILD_VERSION
=
$(HOTSPOT_BUILD_VERSION)
JRE_RELEASE_VERSION
=
$(JRE_RELEASE_VERSION)
BUILDTREE_VARS
+=
ENABLE_FULL_DEBUG_SYMBOLS
=
$(ENABLE_FULL_DEBUG_SYMBOLS)
OBJCOPY
=
$(OBJCOPY)
STRIP_POLICY
=
$(STRIP_POLICY)
ZIP_DEBUGINFO_FILES
=
$(ZIP_DEBUGINFO_FILES)
ZIPEXE
=
$(ZIPEXE)
BUILDTREE_VARS
+=
HS_ALT_MAKE
=
$(HS_ALT_MAKE)
BUILDTREE
=
$(MAKE)
-f
$(BUILDTREE_MAKE)
$(BUILDTREE_VARS)
...
...
make/solaris/makefiles/buildtree.make
浏览文件 @
32452f35
...
...
@@ -258,6 +258,8 @@ flags.make: $(BUILDTREE_MAKE) ../shared_dirs.lst
echo
&&
echo
"ZIP_DEBUGINFO_FILES =
$(ZIP_DEBUGINFO_FILES)
"
;
\
[
-n
"
$(ZIPEXE)
"
]
&&
\
echo
&&
echo
"ZIPEXE =
$(ZIPEXE)
"
;
\
[
-n
"
$(HS_ALT_MAKE)
"
]
&&
\
echo
&&
echo
"HS_ALT_MAKE =
$(HS_ALT_MAKE)
"
;
\
[
-n
"
$(HOTSPOT_EXTRA_SYSDEFS)
"
]
&&
\
echo
&&
\
echo
"HOTSPOT_EXTRA_SYSDEFS
\$
$(HOTSPOT_EXTRA_SYSDEFS)
=
$(HOTSPOT_EXTRA_SYSDEFS)
"
&&
\
...
...
make/solaris/makefiles/vm.make
浏览文件 @
32452f35
...
...
@@ -247,11 +247,12 @@ JVM_OBJ_FILES = $(Obj_Files) $(DTRACE_OBJS)
vm_version.o
:
$(filter-out vm_version.o
,
$(JVM_OBJ_FILES))
mapfile
:
$(MAPFILE) $(MAPFILE_DTRACE_OPT) vm.def
mapfile
:
$(MAPFILE) $(MAPFILE_DTRACE_OPT) vm.def
mapfile_ext
rm
-f
$@
cat
$(MAPFILE)
$(MAPFILE_DTRACE_OPT)
\
|
$(NAWK)
'{ \
if ($$0 ~ "INSERT VTABLE SYMBOLS HERE") { \
system ("cat mapfile_ext"); \
system ("cat vm.def"); \
} else { \
print $$0; \
...
...
@@ -265,6 +266,13 @@ mapfile_extended : mapfile $(MAPFILE_DTRACE_OPT)
vm.def
:
$(Obj_Files)
sh
$(GAMMADIR)
/make/solaris/makefiles/build_vm_def.sh
*
.o
>
$@
mapfile_ext
:
rm
-f
$@
touch
$@
if
[
-f
$(HS_ALT_MAKE)
/solaris/makefiles/mapfile-ext
]
;
then
\
cat
$(HS_ALT_MAKE)
/solaris/makefiles/mapfile-ext
>
$@
;
\
fi
ifeq
($(LINK_INTO),AOUT)
LIBJVM.o
=
LIBJVM_MAPFILE
=
...
...
src/cpu/sparc/vm/c1_LIRGenerator_sparc.cpp
浏览文件 @
32452f35
...
...
@@ -872,21 +872,19 @@ void LIRGenerator::do_Convert(Convert* x) {
void
LIRGenerator
::
do_NewInstance
(
NewInstance
*
x
)
{
print_if_not_loaded
(
x
);
// This instruction can be deoptimized in the slow path : use
// O0 as result register.
const
LIR_Opr
reg
=
result_register_for
(
x
->
type
());
#ifndef PRODUCT
if
(
PrintNotLoaded
&&
!
x
->
klass
()
->
is_loaded
())
{
tty
->
print_cr
(
" ###class not loaded at new bci %d"
,
x
->
printable_bci
());
}
#endif
CodeEmitInfo
*
info
=
state_for
(
x
,
x
->
state
());
LIR_Opr
tmp1
=
FrameMap
::
G1_oop_opr
;
LIR_Opr
tmp2
=
FrameMap
::
G3_oop_opr
;
LIR_Opr
tmp3
=
FrameMap
::
G4_oop_opr
;
LIR_Opr
tmp4
=
FrameMap
::
O1_oop_opr
;
LIR_Opr
klass_reg
=
FrameMap
::
G5_metadata_opr
;
new_instance
(
reg
,
x
->
klass
(),
tmp1
,
tmp2
,
tmp3
,
tmp4
,
klass_reg
,
info
);
new_instance
(
reg
,
x
->
klass
(),
x
->
is_unresolved
(),
tmp1
,
tmp2
,
tmp3
,
tmp4
,
klass_reg
,
info
);
LIR_Opr
result
=
rlock_result
(
x
);
__
move
(
reg
,
result
);
}
...
...
src/cpu/x86/vm/c1_LIRGenerator_x86.cpp
浏览文件 @
32452f35
...
...
@@ -1085,14 +1085,11 @@ void LIRGenerator::do_Convert(Convert* x) {
void
LIRGenerator
::
do_NewInstance
(
NewInstance
*
x
)
{
#ifndef PRODUCT
if
(
PrintNotLoaded
&&
!
x
->
klass
()
->
is_loaded
())
{
tty
->
print_cr
(
" ###class not loaded at new bci %d"
,
x
->
printable_bci
());
}
#endif
print_if_not_loaded
(
x
);
CodeEmitInfo
*
info
=
state_for
(
x
,
x
->
state
());
LIR_Opr
reg
=
result_register_for
(
x
->
type
());
new_instance
(
reg
,
x
->
klass
(),
new_instance
(
reg
,
x
->
klass
(),
x
->
is_unresolved
(),
FrameMap
::
rcx_oop_opr
,
FrameMap
::
rdi_oop_opr
,
FrameMap
::
rsi_oop_opr
,
...
...
src/share/vm/c1/c1_GraphBuilder.cpp
浏览文件 @
32452f35
...
...
@@ -2061,7 +2061,7 @@ void GraphBuilder::new_instance(int klass_index) {
bool
will_link
;
ciKlass
*
klass
=
stream
()
->
get_klass
(
will_link
);
assert
(
klass
->
is_instance_klass
(),
"must be an instance klass"
);
NewInstance
*
new_instance
=
new
NewInstance
(
klass
->
as_instance_klass
(),
state_before
);
NewInstance
*
new_instance
=
new
NewInstance
(
klass
->
as_instance_klass
(),
state_before
,
stream
()
->
is_unresolved_klass
()
);
_memory
->
new_instance
(
new_instance
);
apush
(
append_split
(
new_instance
));
}
...
...
src/share/vm/c1/c1_Instruction.hpp
浏览文件 @
32452f35
...
...
@@ -1291,16 +1291,18 @@ LEAF(Invoke, StateSplit)
LEAF
(
NewInstance
,
StateSplit
)
private
:
ciInstanceKlass
*
_klass
;
bool
_is_unresolved
;
public
:
// creation
NewInstance
(
ciInstanceKlass
*
klass
,
ValueStack
*
state_before
)
NewInstance
(
ciInstanceKlass
*
klass
,
ValueStack
*
state_before
,
bool
is_unresolved
)
:
StateSplit
(
instanceType
,
state_before
)
,
_klass
(
klass
)
,
_klass
(
klass
)
,
_is_unresolved
(
is_unresolved
)
{}
// accessors
ciInstanceKlass
*
klass
()
const
{
return
_klass
;
}
bool
is_unresolved
()
const
{
return
_is_unresolved
;
}
virtual
bool
needs_exception_state
()
const
{
return
false
;
}
...
...
src/share/vm/c1/c1_LIRGenerator.cpp
浏览文件 @
32452f35
...
...
@@ -466,8 +466,11 @@ CodeEmitInfo* LIRGenerator::state_for(Instruction* x) {
}
void
LIRGenerator
::
klass2reg_with_patching
(
LIR_Opr
r
,
ciMetadata
*
obj
,
CodeEmitInfo
*
info
)
{
if
(
!
obj
->
is_loaded
()
||
PatchALot
)
{
void
LIRGenerator
::
klass2reg_with_patching
(
LIR_Opr
r
,
ciMetadata
*
obj
,
CodeEmitInfo
*
info
,
bool
need_resolve
)
{
/* C2 relies on constant pool entries being resolved (ciTypeFlow), so if TieredCompilation
* is active and the class hasn't yet been resolved we need to emit a patch that resolves
* the class. */
if
((
TieredCompilation
&&
need_resolve
)
||
!
obj
->
is_loaded
()
||
PatchALot
)
{
assert
(
info
!=
NULL
,
"info must be set if class is not loaded"
);
__
klass2reg_patch
(
NULL
,
r
,
info
);
}
else
{
...
...
@@ -660,9 +663,18 @@ void LIRGenerator::monitor_exit(LIR_Opr object, LIR_Opr lock, LIR_Opr new_hdr, L
__
unlock_object
(
hdr
,
object
,
lock
,
scratch
,
slow_path
);
}
#ifndef PRODUCT
void
LIRGenerator
::
print_if_not_loaded
(
const
NewInstance
*
new_instance
)
{
if
(
PrintNotLoaded
&&
!
new_instance
->
klass
()
->
is_loaded
())
{
tty
->
print_cr
(
" ###class not loaded at new bci %d"
,
new_instance
->
printable_bci
());
}
else
if
(
PrintNotLoaded
&&
(
TieredCompilation
&&
new_instance
->
is_unresolved
()))
{
tty
->
print_cr
(
" ###class not resolved at new bci %d"
,
new_instance
->
printable_bci
());
}
}
#endif
void
LIRGenerator
::
new_instance
(
LIR_Opr
dst
,
ciInstanceKlass
*
klass
,
LIR_Opr
scratch1
,
LIR_Opr
scratch2
,
LIR_Opr
scratch3
,
LIR_Opr
scratch4
,
LIR_Opr
klass_reg
,
CodeEmitInfo
*
info
)
{
klass2reg_with_patching
(
klass_reg
,
klass
,
info
);
void
LIRGenerator
::
new_instance
(
LIR_Opr
dst
,
ciInstanceKlass
*
klass
,
bool
is_unresolved
,
LIR_Opr
scratch1
,
LIR_Opr
scratch2
,
LIR_Opr
scratch3
,
LIR_Opr
scratch4
,
LIR_Opr
klass_reg
,
CodeEmitInfo
*
info
)
{
klass2reg_with_patching
(
klass_reg
,
klass
,
info
,
is_unresolved
);
// If klass is not loaded we do not know if the klass has finalizers:
if
(
UseFastNewInstance
&&
klass
->
is_loaded
()
&&
!
Klass
::
layout_helper_needs_slow_path
(
klass
->
layout_helper
()))
{
...
...
src/share/vm/c1/c1_LIRGenerator.hpp
浏览文件 @
32452f35
...
...
@@ -169,6 +169,8 @@ class LIRGenerator: public InstructionVisitor, public BlockClosure {
return
this
;
}
void
print_if_not_loaded
(
const
NewInstance
*
new_instance
)
PRODUCT_RETURN
;
#ifdef ASSERT
LIR_List
*
lir
(
const
char
*
file
,
int
line
)
const
{
_lir
->
set_file_and_line
(
file
,
line
);
...
...
@@ -307,7 +309,7 @@ class LIRGenerator: public InstructionVisitor, public BlockClosure {
void
store_stack_parameter
(
LIR_Opr
opr
,
ByteSize
offset_from_sp_in_bytes
);
void
klass2reg_with_patching
(
LIR_Opr
r
,
ciMetadata
*
obj
,
CodeEmitInfo
*
info
);
void
klass2reg_with_patching
(
LIR_Opr
r
,
ciMetadata
*
obj
,
CodeEmitInfo
*
info
,
bool
need_resolve
=
false
);
// this loads the length and compares against the index
void
array_range_check
(
LIR_Opr
array
,
LIR_Opr
index
,
CodeEmitInfo
*
null_check_info
,
CodeEmitInfo
*
range_check_info
);
...
...
@@ -325,7 +327,7 @@ class LIRGenerator: public InstructionVisitor, public BlockClosure {
void
monitor_enter
(
LIR_Opr
object
,
LIR_Opr
lock
,
LIR_Opr
hdr
,
LIR_Opr
scratch
,
int
monitor_no
,
CodeEmitInfo
*
info_for_exception
,
CodeEmitInfo
*
info
);
void
monitor_exit
(
LIR_Opr
object
,
LIR_Opr
lock
,
LIR_Opr
hdr
,
LIR_Opr
scratch
,
int
monitor_no
);
void
new_instance
(
LIR_Opr
dst
,
ciInstanceKlass
*
klass
,
LIR_Opr
scratch1
,
LIR_Opr
scratch2
,
LIR_Opr
scratch3
,
LIR_Opr
scratch4
,
LIR_Opr
klass_reg
,
CodeEmitInfo
*
info
);
void
new_instance
(
LIR_Opr
dst
,
ciInstanceKlass
*
klass
,
bool
is_unresolved
,
LIR_Opr
scratch1
,
LIR_Opr
scratch2
,
LIR_Opr
scratch3
,
LIR_Opr
scratch4
,
LIR_Opr
klass_reg
,
CodeEmitInfo
*
info
);
// machine dependent
void
cmp_mem_int
(
LIR_Condition
condition
,
LIR_Opr
base
,
int
disp
,
int
c
,
CodeEmitInfo
*
info
);
...
...
src/share/vm/runtime/arguments.cpp
浏览文件 @
32452f35
...
...
@@ -98,6 +98,8 @@ const char* Arguments::_gc_log_filename = NULL;
bool
Arguments
::
_has_profile
=
false
;
size_t
Arguments
::
_conservative_max_heap_alignment
=
0
;
uintx
Arguments
::
_min_heap_size
=
0
;
uintx
Arguments
::
_min_heap_free_ratio
=
0
;
uintx
Arguments
::
_max_heap_free_ratio
=
0
;
Arguments
::
Mode
Arguments
::
_mode
=
_mixed
;
bool
Arguments
::
_java_compiler
=
false
;
bool
Arguments
::
_xdebug_mode
=
false
;
...
...
@@ -1597,9 +1599,11 @@ void Arguments::set_parallel_gc_flags() {
// unless the user actually sets these flags.
if
(
FLAG_IS_DEFAULT
(
MinHeapFreeRatio
))
{
FLAG_SET_DEFAULT
(
MinHeapFreeRatio
,
0
);
_min_heap_free_ratio
=
MinHeapFreeRatio
;
}
if
(
FLAG_IS_DEFAULT
(
MaxHeapFreeRatio
))
{
FLAG_SET_DEFAULT
(
MaxHeapFreeRatio
,
100
);
_max_heap_free_ratio
=
MaxHeapFreeRatio
;
}
}
...
...
@@ -1974,6 +1978,8 @@ bool Arguments::verify_MinHeapFreeRatio(FormatBuffer<80>& err_msg, uintx min_hea
MaxHeapFreeRatio
);
return
false
;
}
// This does not set the flag itself, but stores the value in a safe place for later usage.
_min_heap_free_ratio
=
min_heap_free_ratio
;
return
true
;
}
...
...
@@ -1988,6 +1994,8 @@ bool Arguments::verify_MaxHeapFreeRatio(FormatBuffer<80>& err_msg, uintx max_hea
MinHeapFreeRatio
);
return
false
;
}
// This does not set the flag itself, but stores the value in a safe place for later usage.
_max_heap_free_ratio
=
max_heap_free_ratio
;
return
true
;
}
...
...
src/share/vm/runtime/arguments.hpp
浏览文件 @
32452f35
...
...
@@ -286,6 +286,10 @@ class Arguments : AllStatic {
static
uintx
_min_heap_size
;
// Used to store original flag values
static
uintx
_min_heap_free_ratio
;
static
uintx
_max_heap_free_ratio
;
// -Xrun arguments
static
AgentLibraryList
_libraryList
;
static
void
add_init_library
(
const
char
*
name
,
char
*
options
)
...
...
@@ -514,6 +518,10 @@ class Arguments : AllStatic {
static
uintx
min_heap_size
()
{
return
_min_heap_size
;
}
static
void
set_min_heap_size
(
uintx
v
)
{
_min_heap_size
=
v
;
}
// Returns the original values of -XX:MinHeapFreeRatio and -XX:MaxHeapFreeRatio
static
uintx
min_heap_free_ratio
()
{
return
_min_heap_free_ratio
;
}
static
uintx
max_heap_free_ratio
()
{
return
_max_heap_free_ratio
;
}
// -Xrun
static
AgentLibrary
*
libraries
()
{
return
_libraryList
.
first
();
}
static
bool
init_libraries_at_startup
()
{
return
!
_libraryList
.
is_empty
();
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录