Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_hotspot
提交
921fdff2
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看板
提交
921fdff2
编写于
9月 17, 2008
作者:
A
apetrusenko
浏览文件
操作
浏览文件
下载
差异文件
Merge
上级
cc329237
bd4ba6be
变更
10
隐藏空白更改
内联
并排
Showing
10 changed file
with
174 addition
and
187 deletion
+174
-187
make/jprt.properties
make/jprt.properties
+6
-0
src/cpu/x86/vm/c1_LIRAssembler_x86.cpp
src/cpu/x86/vm/c1_LIRAssembler_x86.cpp
+2
-2
src/share/vm/opto/addnode.cpp
src/share/vm/opto/addnode.cpp
+2
-0
src/share/vm/opto/compile.cpp
src/share/vm/opto/compile.cpp
+1
-1
src/share/vm/opto/loopopts.cpp
src/share/vm/opto/loopopts.cpp
+1
-1
src/share/vm/runtime/arguments.cpp
src/share/vm/runtime/arguments.cpp
+7
-0
src/share/vm/runtime/globals.hpp
src/share/vm/runtime/globals.hpp
+3
-0
src/share/vm/runtime/thread.cpp
src/share/vm/runtime/thread.cpp
+11
-7
src/share/vm/runtime/virtualspace.cpp
src/share/vm/runtime/virtualspace.cpp
+4
-2
test/Makefile
test/Makefile
+137
-174
未找到文件。
make/jprt.properties
浏览文件 @
921fdff2
...
@@ -295,3 +295,9 @@ jprt.test.targets = \
...
@@ -295,3 +295,9 @@ jprt.test.targets = \
${jprt.my.windows.i586.test.targets},
\
${jprt.my.windows.i586.test.targets},
\
${jprt.my.windows.x64.test.targets}
${jprt.my.windows.x64.test.targets}
# The default test/Makefile targets that should be run
# Example:
# jprt.make.rule.test.targets=*-*-*-packtest
#jprt.make.rule.test.targets=*-product-*-packtest
src/cpu/x86/vm/c1_LIRAssembler_x86.cpp
浏览文件 @
921fdff2
...
@@ -1129,8 +1129,8 @@ void LIR_Assembler::stack2stack(LIR_Opr src, LIR_Opr dest, BasicType type) {
...
@@ -1129,8 +1129,8 @@ void LIR_Assembler::stack2stack(LIR_Opr src, LIR_Opr dest, BasicType type) {
#else
#else
__
pushl
(
frame_map
()
->
address_for_slot
(
src
->
double_stack_ix
(),
0
));
__
pushl
(
frame_map
()
->
address_for_slot
(
src
->
double_stack_ix
(),
0
));
// push and pop the part at src + wordSize, adding wordSize for the previous push
// push and pop the part at src + wordSize, adding wordSize for the previous push
__
pushl
(
frame_map
()
->
address_for_slot
(
src
->
double_stack_ix
(),
wordSize
));
__
pushl
(
frame_map
()
->
address_for_slot
(
src
->
double_stack_ix
(),
2
*
wordSize
));
__
popl
(
frame_map
()
->
address_for_slot
(
dest
->
double_stack_ix
(),
wordSize
));
__
popl
(
frame_map
()
->
address_for_slot
(
dest
->
double_stack_ix
(),
2
*
wordSize
));
__
popl
(
frame_map
()
->
address_for_slot
(
dest
->
double_stack_ix
(),
0
));
__
popl
(
frame_map
()
->
address_for_slot
(
dest
->
double_stack_ix
(),
0
));
#endif // _LP64
#endif // _LP64
...
...
src/share/vm/opto/addnode.cpp
浏览文件 @
921fdff2
...
@@ -157,6 +157,7 @@ Node *AddNode::Ideal(PhaseGVN *phase, bool can_reshape) {
...
@@ -157,6 +157,7 @@ Node *AddNode::Ideal(PhaseGVN *phase, bool can_reshape) {
Node
*
a12
=
add1
->
in
(
2
);
Node
*
a12
=
add1
->
in
(
2
);
const
Type
*
t12
=
phase
->
type
(
a12
);
const
Type
*
t12
=
phase
->
type
(
a12
);
if
(
t12
->
singleton
()
&&
t12
!=
Type
::
TOP
&&
(
add1
!=
add1
->
in
(
1
))
)
{
if
(
t12
->
singleton
()
&&
t12
!=
Type
::
TOP
&&
(
add1
!=
add1
->
in
(
1
))
)
{
assert
(
add1
->
in
(
1
)
!=
this
,
"dead loop in AddNode::Ideal"
);
add2
=
add1
->
clone
();
add2
=
add1
->
clone
();
add2
->
set_req
(
2
,
in
(
2
));
add2
->
set_req
(
2
,
in
(
2
));
add2
=
phase
->
transform
(
add2
);
add2
=
phase
->
transform
(
add2
);
...
@@ -173,6 +174,7 @@ Node *AddNode::Ideal(PhaseGVN *phase, bool can_reshape) {
...
@@ -173,6 +174,7 @@ Node *AddNode::Ideal(PhaseGVN *phase, bool can_reshape) {
Node
*
a22
=
add2
->
in
(
2
);
Node
*
a22
=
add2
->
in
(
2
);
const
Type
*
t22
=
phase
->
type
(
a22
);
const
Type
*
t22
=
phase
->
type
(
a22
);
if
(
t22
->
singleton
()
&&
t22
!=
Type
::
TOP
&&
(
add2
!=
add2
->
in
(
1
))
)
{
if
(
t22
->
singleton
()
&&
t22
!=
Type
::
TOP
&&
(
add2
!=
add2
->
in
(
1
))
)
{
assert
(
add2
->
in
(
1
)
!=
this
,
"dead loop in AddNode::Ideal"
);
Node
*
addx
=
add2
->
clone
();
Node
*
addx
=
add2
->
clone
();
addx
->
set_req
(
1
,
in
(
1
));
addx
->
set_req
(
1
,
in
(
1
));
addx
->
set_req
(
2
,
add2
->
in
(
1
));
addx
->
set_req
(
2
,
add2
->
in
(
1
));
...
...
src/share/vm/opto/compile.cpp
浏览文件 @
921fdff2
...
@@ -2082,7 +2082,7 @@ static void final_graph_reshaping_impl( Node *n, Final_Reshape_Counts &fpu ) {
...
@@ -2082,7 +2082,7 @@ static void final_graph_reshaping_impl( Node *n, Final_Reshape_Counts &fpu ) {
in2
=
n
->
in
(
2
)
->
in
(
1
);
in2
=
n
->
in
(
2
)
->
in
(
1
);
}
else
if
(
n
->
in
(
2
)
->
Opcode
()
==
Op_ConP
)
{
}
else
if
(
n
->
in
(
2
)
->
Opcode
()
==
Op_ConP
)
{
const
Type
*
t
=
n
->
in
(
2
)
->
bottom_type
();
const
Type
*
t
=
n
->
in
(
2
)
->
bottom_type
();
if
(
t
==
TypePtr
::
NULL_PTR
)
{
if
(
t
==
TypePtr
::
NULL_PTR
&&
UseImplicitNullCheckForNarrowOop
)
{
Node
*
in1
=
n
->
in
(
1
);
Node
*
in1
=
n
->
in
(
1
);
if
(
Matcher
::
clone_shift_expressions
)
{
if
(
Matcher
::
clone_shift_expressions
)
{
// x86, ARM and friends can handle 2 adds in addressing mode.
// x86, ARM and friends can handle 2 adds in addressing mode.
...
...
src/share/vm/opto/loopopts.cpp
浏览文件 @
921fdff2
...
@@ -932,7 +932,7 @@ void PhaseIdealLoop::split_if_with_blocks_post( Node *n ) {
...
@@ -932,7 +932,7 @@ void PhaseIdealLoop::split_if_with_blocks_post( Node *n ) {
// to fold a StoreP and an AddP together (as part of an
// to fold a StoreP and an AddP together (as part of an
// address expression) and the AddP and StoreP have
// address expression) and the AddP and StoreP have
// different controls.
// different controls.
if
(
!
x
->
is_Load
()
)
_igvn
.
_worklist
.
yank
(
x
);
if
(
!
x
->
is_Load
()
&&
!
x
->
is_DecodeN
()
)
_igvn
.
_worklist
.
yank
(
x
);
}
}
_igvn
.
remove_dead_node
(
n
);
_igvn
.
remove_dead_node
(
n
);
}
}
...
...
src/share/vm/runtime/arguments.cpp
浏览文件 @
921fdff2
...
@@ -1205,6 +1205,13 @@ void Arguments::set_ergonomics_flags() {
...
@@ -1205,6 +1205,13 @@ void Arguments::set_ergonomics_flags() {
warning
(
" UseCompressedOops does not currently work with UseG1GC; switching off UseCompressedOops. "
);
warning
(
" UseCompressedOops does not currently work with UseG1GC; switching off UseCompressedOops. "
);
FLAG_SET_DEFAULT
(
UseCompressedOops
,
false
);
FLAG_SET_DEFAULT
(
UseCompressedOops
,
false
);
}
}
#ifdef _WIN64
if
(
UseLargePages
&&
UseCompressedOops
)
{
// Cannot allocate guard pages for implicit checks in indexed addressing
// mode, when large pages are specified on windows.
FLAG_SET_DEFAULT
(
UseImplicitNullCheckForNarrowOop
,
false
);
}
#endif // _WIN64
}
else
{
}
else
{
if
(
UseCompressedOops
&&
!
FLAG_IS_DEFAULT
(
UseCompressedOops
))
{
if
(
UseCompressedOops
&&
!
FLAG_IS_DEFAULT
(
UseCompressedOops
))
{
warning
(
"Max heap size too large for Compressed Oops"
);
warning
(
"Max heap size too large for Compressed Oops"
);
...
...
src/share/vm/runtime/globals.hpp
浏览文件 @
921fdff2
...
@@ -306,6 +306,9 @@ class CommandLineFlags {
...
@@ -306,6 +306,9 @@ class CommandLineFlags {
lp64_product(bool, CheckCompressedOops, trueInDebug, \
lp64_product(bool, CheckCompressedOops, trueInDebug, \
"generate checks in encoding/decoding code") \
"generate checks in encoding/decoding code") \
\
\
product(bool, UseImplicitNullCheckForNarrowOop, true, \
"generate implicit null check in indexed addressing mode.") \
\
/* UseMembar is theoretically a temp flag used for memory barrier \
/* UseMembar is theoretically a temp flag used for memory barrier \
* removal testing. It was supposed to be removed before FCS but has \
* removal testing. It was supposed to be removed before FCS but has \
* been re-added (see 6401008) */
\
* been re-added (see 6401008) */
\
...
...
src/share/vm/runtime/thread.cpp
浏览文件 @
921fdff2
...
@@ -2777,13 +2777,17 @@ void Threads::threads_do(ThreadClosure* tc) {
...
@@ -2777,13 +2777,17 @@ void Threads::threads_do(ThreadClosure* tc) {
// For now, just manually iterate through them.
// For now, just manually iterate through them.
tc
->
do_thread
(
VMThread
::
vm_thread
());
tc
->
do_thread
(
VMThread
::
vm_thread
());
Universe
::
heap
()
->
gc_threads_do
(
tc
);
Universe
::
heap
()
->
gc_threads_do
(
tc
);
{
WatcherThread
*
wt
=
WatcherThread
::
watcher_thread
();
// Grab the Terminator_lock to prevent watcher_thread from being terminated.
// Strictly speaking, the following NULL check isn't sufficient to make sure
MutexLockerEx
mu
(
Terminator_lock
,
Mutex
::
_no_safepoint_check_flag
);
// the data for WatcherThread is still valid upon being examined. However,
WatcherThread
*
wt
=
WatcherThread
::
watcher_thread
();
// considering that WatchThread terminates when the VM is on the way to
if
(
wt
!=
NULL
)
// exit at safepoint, the chance of the above is extremely small. The right
tc
->
do_thread
(
wt
);
// way to prevent termination of WatcherThread would be to acquire
}
// Terminator_lock, but we can't do that without violating the lock rank
// checking in some cases.
if
(
wt
!=
NULL
)
tc
->
do_thread
(
wt
);
// If CompilerThreads ever become non-JavaThreads, add them here
// If CompilerThreads ever become non-JavaThreads, add them here
}
}
...
...
src/share/vm/runtime/virtualspace.cpp
浏览文件 @
921fdff2
...
@@ -372,7 +372,8 @@ ReservedHeapSpace::ReservedHeapSpace(size_t size, size_t alignment,
...
@@ -372,7 +372,8 @@ ReservedHeapSpace::ReservedHeapSpace(size_t size, size_t alignment,
bool
large
,
char
*
requested_address
)
:
bool
large
,
char
*
requested_address
)
:
ReservedSpace
(
size
,
alignment
,
large
,
ReservedSpace
(
size
,
alignment
,
large
,
requested_address
,
requested_address
,
UseCompressedOops
?
lcm
(
os
::
vm_page_size
(),
alignment
)
:
0
)
{
UseCompressedOops
&&
UseImplicitNullCheckForNarrowOop
?
lcm
(
os
::
vm_page_size
(),
alignment
)
:
0
)
{
// Only reserved space for the java heap should have a noaccess_prefix
// Only reserved space for the java heap should have a noaccess_prefix
// if using compressed oops.
// if using compressed oops.
protect_noaccess_prefix
(
size
);
protect_noaccess_prefix
(
size
);
...
@@ -383,7 +384,8 @@ ReservedHeapSpace::ReservedHeapSpace(const size_t prefix_size,
...
@@ -383,7 +384,8 @@ ReservedHeapSpace::ReservedHeapSpace(const size_t prefix_size,
const
size_t
suffix_size
,
const
size_t
suffix_size
,
const
size_t
suffix_align
)
:
const
size_t
suffix_align
)
:
ReservedSpace
(
prefix_size
,
prefix_align
,
suffix_size
,
suffix_align
,
ReservedSpace
(
prefix_size
,
prefix_align
,
suffix_size
,
suffix_align
,
UseCompressedOops
?
lcm
(
os
::
vm_page_size
(),
prefix_align
)
:
0
)
{
UseCompressedOops
&&
UseImplicitNullCheckForNarrowOop
?
lcm
(
os
::
vm_page_size
(),
prefix_align
)
:
0
)
{
protect_noaccess_prefix
(
prefix_size
+
suffix_size
);
protect_noaccess_prefix
(
prefix_size
+
suffix_size
);
}
}
...
...
test/Makefile
浏览文件 @
921fdff2
#
#
# Copyright
2006
Sun Microsystems, Inc. All Rights Reserved.
# Copyright
1995-2008
Sun Microsystems, Inc. All Rights Reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
#
# This code is free software; you can redistribute it and/or modify it
# This code is free software; you can redistribute it and/or modify it
...
@@ -19,17 +19,18 @@
...
@@ -19,17 +19,18 @@
# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
# CA 95054 USA or visit www.sun.com if you need additional information or
# CA 95054 USA or visit www.sun.com if you need additional information or
# have any questions.
# have any questions.
#
#
#
#
#
#
# Makefile to run
jtreg
# Makefile to run
various jdk tests
#
#
# Get OS/ARCH specifics
OSNAME
=
$(
shell
uname
-s
)
OSNAME
=
$(
shell
uname
-s
)
SLASH_JAVA
=
/java
ifeq
($(OSNAME), SunOS)
ifeq
($(OSNAME), SunOS)
PLATFORM
=
solaris
PLATFORM
=
solaris
JCT_PLATFORM
=
solaris
ARCH
=
$(
shell
uname
-p
)
ARCH
=
$(
shell
uname
-p
)
ifeq
($(ARCH), i386)
ifeq
($(ARCH), i386)
ARCH
=
i586
ARCH
=
i586
...
@@ -37,203 +38,165 @@ ifeq ($(OSNAME), SunOS)
...
@@ -37,203 +38,165 @@ ifeq ($(OSNAME), SunOS)
endif
endif
ifeq
($(OSNAME), Linux)
ifeq
($(OSNAME), Linux)
PLATFORM
=
linux
PLATFORM
=
linux
JCT_PLATFORM
=
linux
ARCH
=
$(
shell
uname
-m
)
ARCH
=
$(
shell
uname
-m
)
ifeq
($(ARCH), i386)
ifeq
($(ARCH), i386)
ARCH
=
i586
ARCH
=
i586
endif
endif
endif
endif
ifeq
($(OSNAME), Windows_NT)
ifeq
($(OSNAME), Windows_NT)
PLATFORM
=
windows
PLATFORM
=
windows
JCT_PLATFORM
=
win32
SLASH_JAVA
=
J:
ifeq
($(word 1, $(PROCESSOR_IDENTIFIER)),ia64)
ifeq
($(word 1, $(PROCESSOR_IDENTIFIER)),ia64)
ARCH
=
ia64
ARCH
=
ia64
else
else
ifeq
($(word 1, $(PROCESSOR_IDENTIFIER)),AMD64)
ifeq
($(word 1, $(PROCESSOR_IDENTIFIER)),AMD64)
ARCH
=
x64
ARCH
=
x64
else
else
ifeq
($(word 1, $(PROCESSOR_IDENTIFIER)),EM64T)
ifeq
($(word 1, $(PROCESSOR_IDENTIFIER)),EM64T)
ARCH
=
x64
ARCH
=
x64
else
else
ARCH
=
i586
ARCH
=
i586
endif
endif
endif
endif
endif
endif
EXESUFFIX
=
.exe
endif
endif
# Default bundle of all test results (passed or not)
# Utilities used
JPRT_ARCHIVE_BUNDLE
=
$(TEST_ROOT)
/JPRT_ARCHIVE_BUNDLE.zip
CD
=
cd
CP
=
cp
ECHO
=
echo
MKDIR
=
mkdir
ZIP
=
zip
# Default home for JTREG
# Root of this test area (important to use full paths in some places)
ifeq
($(PLATFORM), windows)
TEST_ROOT
:=
$(
shell
pwd
)
JT_HOME
=
J:/svc/jct-tools3.2.2_01
else
# Root of all test results
JT_HOME
=
/java/svc/jct-tools3.2.2_01
ABS_BUILD_ROOT
=
$(TEST_ROOT)
/../build/
$(PLATFORM)
-
$(ARCH)
ABS_TEST_OUTPUT_DIR
=
$(ABS_BUILD_ROOT)
/testoutput
# Expect JPRT to set PRODUCT_HOME (the product or jdk in this case to test)
ifndef
PRODUCT_HOME
# Try to use j2sdk-image if it exists
ABS_JDK_IMAGE
=
$(ABS_BUILD_ROOT)
/j2sdk-image
PRODUCT_HOME
:=
\
$(
shell
\
if
[
-d
$(ABS_JDK_IMAGE)
]
;
then
\
$(ECHO)
"
$(ABS_JDK_IMAGE)
"
;
\
else
\
$(ECHO)
"
$(ABS_BUILD_ROOT)
"
;
\
fi
)
endif
endif
# Default JTREG to run
# Expect JPRT to set JAVA_ARGS (e.g. -server etc.)
JTREG
=
$(JT_HOME)
/
$(JCT_PLATFORM)
/bin/jtreg
JAVA_OPTIONS
=
ifdef
JAVA_ARGS
JAVA_OPTIONS
=
$(JAVA_ARGS)
endif
# Root of this test area
# Expect JPRT to set JPRT_ARCHIVE_BUNDLE (path to zip bundle for results)
TEST_ROOT
:=
$(
shell
pwd
)
ARCHIVE_BUNDLE
=
$(ABS_TEST_OUTPUT_DIR)
/ARCHIVE_BUNDLE.zip
ifdef
JPRT_ARCHIVE_BUNDLE
ARCHIVE_BUNDLE
=
$(JPRT_ARCHIVE_BUNDLE)
endif
# Default JDK to test
# How to create the test bundle (pass or fail, we want to create this)
JAVA_HOME
=
$(TEST_ROOT)
/../build/
$(PLATFORM)
-
$(ARCH)
BUNDLE_UP
=
(
$(MKDIR)
-p
`
dirname
$(ARCHIVE_BUNDLE)
`
\
&&
$(CD)
$(ABS_TEST_OUTPUT_DIR)
\
&&
$(ZIP)
-q
-r
$(ARCHIVE_BUNDLE)
.
)
BUNDLE_UP_FAILED
=
(
exitCode
=
$$
?
&&
$(BUNDLE_UP)
&&
exit
$
${exitCode}
)
# The test directories to run
################################################################
DEFAULT_TESTDIRS
=
serviceability
TESTDIRS
=
$(DEFAULT_TESTDIRS)
# Files that hold total passed and failed counts (passed==0 is bad)
# Default make rule (runs jtreg_tests)
JTREG_TOTALS_DIR
=
$(TEST_ROOT)
/JTREG_TOTALS_
$(PLATFORM)
_
$(ARCH)
all
:
jtreg_tests
JTREG_FAILED
=
$(JTREG_TOTALS_DIR)
/failed_count
@
$(ECHO)
"Testing completed successfully"
JTREG_PASSED
=
$(JTREG_TOTALS_DIR)
/passed_count
# Root of all test results
# Prep for output
JTREG_ALL_OUTPUT_DIRNAME
=
JTREG_OUTPUT_
$(PLATFORM)
_
$(ARCH)
prep
:
clean
JTREG_ALL_OUTPUT_DIR
=
$(TEST_ROOT)
/
$(JTREG_ALL_OUTPUT_DIRNAME)
@
$(MKDIR)
-p
$(ABS_TEST_OUTPUT_DIR)
@
$(MKDIR)
-p
`
dirname
$(ARCHIVE_BUNDLE)
`
# Test results for one test directory
JTREG_TEST_OUTPUT_DIR
=
$(JTREG_ALL_OUTPUT_DIR)
/
$@
JTREG_TEST_REPORT_DIR
=
$(JTREG_TEST_OUTPUT_DIR)
/JTreport
JTREG_TEST_WORK_DIR
=
$(JTREG_TEST_OUTPUT_DIR)
/JTwork
JTREG_TEST_SUMMARY
=
$(JTREG_TEST_REPORT_DIR)
/summary.txt
# Temp files used by this Makefile
JTREG_TEST_TEMP_DIR
=
$(JTREG_ALL_OUTPUT_DIR)
/
$@
/temp
JTREG_TEMP_PASSED
=
$(JTREG_TEST_TEMP_DIR)
/passed
JTREG_TEMP_FAILED
=
$(JTREG_TEST_TEMP_DIR)
/failed
JTREG_TEMP_OUTPUT
=
$(JTREG_TEST_TEMP_DIR)
/output
JTREG_TEMP_RESULTS
=
$(JTREG_TEST_TEMP_DIR)
/results
# JTREG options (different for 2.1.6 and 3.2.2_01)
JTREG_COMMON_OPTIONS
=
-r
:
$(JTREG_TEST_REPORT_DIR)
\
-w
:
$(JTREG_TEST_WORK_DIR)
\
-testjdk
:
$(JAVA_HOME)
\
-automatic
\
-verbose
:all
JTREG_216_OPTIONS
=
$(JTREG_COMMON_OPTIONS)
$@
$(JAVA_ARGS)
JTREG_322_OPTIONS
=
$(JTREG_COMMON_OPTIONS)
$
(
JAVA_ARGS:%
=
-vmoption
:%
)
$@
# Default make rule
all
:
clean check tests
# Chaeck to make sure these directories exist
check
:
$(JT_HOME) $(JAVA_HOME) $(JTREG)
# Prime the test run
primecounts
:
FRC
@
rm
-f
-r
$(JTREG_TOTALS_DIR)
@
mkdir
-p
$(JTREG_TOTALS_DIR)
@
echo
"0"
>
$(JTREG_FAILED)
@
echo
"0"
>
$(JTREG_PASSED)
# Run the tests and determine the 'make' command exit status
# Ultimately we determine the make exit code based on the passed/failed count
tests
:
primecounts $(TESTDIRS)
@
echo
"JTREG TOTAL: passed=
`
cat
$(JTREG_PASSED)
`
failed=
`
cat
$(JTREG_FAILED)
`
"
zip
-q
-r
$(JPRT_ARCHIVE_BUNDLE)
$(JTREG_ALL_OUTPUT_DIRNAME)
@
if
[
`
cat
$(JTREG_FAILED)
`
-ne
0
-o
\
`
cat
$(JTREG_PASSED)
`
-le
0
]
;
then
\
echo
"JTREG FAILED"
;
\
exit
1
;
\
else
\
echo
"JTREG PASSED"
;
\
exit
0
;
\
fi
# Just make sure these directires exist
$(JT_HOME) $(JAVA_HOME)
:
FRC
@
if
[
!
-d
$@
]
;
then
\
echo
"ERROR: Directory
$@
does not exist"
;
\
exit
1
;
\
fi
# Make sure this file exists
$(JTREG)
:
FRC
@
if
[
!
-f
$@
]
;
then
\
echo
"ERROR: File
$@
does not exist"
;
\
exit
1
;
\
fi
# Process each test directory one by one, this rule always completes.
# Note that the use of 'tee' tosses the jtreg process exit status, this
# is as expected because even if jtreg fails, we need to save the
# output. So we update the JTREG_PASSED and JTREG_FAILED count files.
# Note that missing the 'results:' line in the last few lines of output
# will indicate a failure (or a bump by one of the JTREG_FAILED file.
# Note that passed: 0 or no passed: indication means a failure.
# Note that any indication of the word 'failed' indicates failure.
# Ultimately if the contents of JTREG_FAILED is not 0, we have failed
# tests, and if the contents of JTREG_PASSED is 0, we consider that a
# failure.
$(TESTDIRS)
:
FRC
@
if
[
!
-d
$@
]
;
then
\
echo
"ERROR: Directory
$@
does not exist"
;
\
exit
1
;
\
fi
@
echo
"---------------------------------------------------"
@
rm
-f
-r
$(JTREG_TEST_OUTPUT_DIR)
@
mkdir
-p
$(JTREG_TEST_OUTPUT_DIR)
@
mkdir
-p
$(JTREG_TEST_WORK_DIR)
@
mkdir
-p
$(JTREG_TEST_WORK_DIR)
/scratch
@
mkdir
-p
$(JTREG_TEST_REPORT_DIR)
@
mkdir
-p
$(JTREG_TEST_TEMP_DIR)
@
echo
"Testing
$@
"
@
echo
"Using JAVA_HOME=
$(JAVA_HOME)
"
@
echo
"Using JAVA_ARGS=
$(JAVA_ARGS)
"
@
if
[
"
`
$(JTREG)
-help
2>&1 | fgrep
--
-vmoption
`
"
!=
""
]
;
then
\
echo
"Assume we are using jtreg 3.2.2_01 or newer"
;
\
echo
"
$(JTREG)
$(JTREG_322_OPTIONS)
"
;
\
$(JTREG)
$(JTREG_322_OPTIONS)
2>&1 |
tee
$(JTREG_TEMP_OUTPUT)
;
\
else
\
echo
"Assume we are using jtreg 2.1.6"
;
\
echo
"
$(JTREG)
$(JTREG_216_OPTIONS)
"
;
\
$(JTREG)
$(JTREG_216_OPTIONS)
2>&1 |
tee
$(JTREG_TEMP_OUTPUT)
;
\
fi
@
echo
"---------------------------------------------------"
@
echo
"Extracting passed and failed counts from jtreg output"
@
tail
-10
$(JTREG_TEMP_OUTPUT)
| fgrep
-i
'results:'
|
\
tail
-1
|
tee
$(JTREG_TEMP_RESULTS)
@
sed
-e
's@.*\ passed:\ \([1-9][0-9]*\).*@\1@'
$(JTREG_TEMP_RESULTS)
\
>
$(JTREG_TEMP_PASSED)
@
if
[
"
`
cat
$(JTREG_TEMP_PASSED)
`
"
=
""
]
;
then
\
echo
"ERROR: No passed indication in results"
;
\
expr
`
cat
$(JTREG_FAILED)
`
'+'
1
>
$(JTREG_FAILED)
;
\
elif
[
`
cat
$(JTREG_TEMP_PASSED)
`
-le
0
]
;
then
\
echo
"ERROR: Passed count appears to be 0"
;
\
expr
`
cat
$(JTREG_FAILED)
`
'+'
1
>
$(JTREG_FAILED)
;
\
elif
[
"
`
fgrep
-i
failed
$(JTREG_TEMP_RESULTS)
`
"
=
""
]
;
then
\
echo
"No indication anything failed"
;
\
expr
`
cat
$(JTREG_PASSED)
`
'+'
`
cat
$(JTREG_TEMP_PASSED)
`
\
>
$(JTREG_PASSED)
;
\
else
\
sed
-e
's@.*\ failed:\ \([1-9][0-9]*\).*@\1@'
$(JTREG_TEMP_FAILED)
\
>
$(JTREG_TEMP_FAILED)
;
\
if
[
"
`
cat
$(JTREG_TEMP_FAILED)
`
"
=
""
]
;
then
\
echo
"ERROR: Failed pattern but no failed count in results"
;
\
expr
`
cat
$(JTREG_FAILED)
`
'+'
1
>
$(JTREG_FAILED)
;
\
elif
[
`
cat
$(JTREG_TEMP_FAILED)
`
-le
0
]
;
then
\
echo
"ERROR: Failed count is 0, did something failed or not?"
;
\
expr
`
cat
$(JTREG_FAILED)
`
'+'
1
>
$(JTREG_FAILED)
;
\
else
\
expr
`
cat
$(JTREG_FAILED)
`
'+'
`
cat
$(JTREG_TEMP_FAILED)
`
\
>
$(JTREG_FAILED)
;
\
fi
;
\
fi
@
echo
"---------------------------------------------------"
@
echo
"Summary: "
@
if
[
-f
$(JTREG_TEST_SUMMARY)
]
;
then
\
cat
$(JTREG_TEST_SUMMARY)
;
\
else
\
echo
"ERROR: Missing
$(JTREG_TEST_SUMMARY)
"
;
\
fi
@
echo
"---------------------------------------------------"
# Cleanup
# Cleanup
clean
:
clean
:
rm
-f
-r
$(JTREG_ALL_OUTPUT_DIR)
$(RM)
-r
$(ABS_TEST_OUTPUT_DIR)
rm
-f
$(JPRT_ARCHIVE_BUNDLE)
$(RM)
$(ARCHIVE_BUNDLE)
################################################################
# jtreg tests
# Expect JT_HOME to be set for jtreg tests. (home for jtreg)
JT_HOME
=
$(SLASH_JAVA)
/re/jtreg/4.0/promoted/latest/binaries/jtreg
ifdef
JPRT_JTREG_HOME
JT_HOME
=
$(JPRT_JTREG_HOME)
endif
# Expect JPRT to set TESTDIRS to the jtreg test dirs
JTREG_TESTDIRS
=
demo/jvmti/gctest demo/jvmti/hprof
ifdef
TESTDIRS
JTREG_TESTDIRS
=
$(TESTDIRS)
endif
# Default JTREG to run (win32 script works for everybody)
JTREG
=
$(JT_HOME)
/win32/bin/jtreg
# Option to tell jtreg to not run tests marked with "ignore"
ifeq
($(PLATFORM), windows)
JTREG_KEY_OPTION
=
-k
:!ignore
else
JTREG_KEY_OPTION
=
-k
:
\!
ignore
endif
#EXTRA_JTREG_OPTIONS =
jtreg_tests
:
prep $(JT_HOME) $(PRODUCT_HOME) $(JTREG)
$(JTREG)
-a
-v
:fail,error
\
$(JTREG_KEY_OPTION)
\
$(EXTRA_JTREG_OPTIONS)
\
-r
:
$(ABS_TEST_OUTPUT_DIR)
/JTreport
\
-w
:
$(ABS_TEST_OUTPUT_DIR)
/JTwork
\
-jdk
:
$(PRODUCT_HOME)
\
$
(
JAVA_OPTIONS:%
=
-vmoption
:%
)
\
$(JTREG_TESTDIRS)
\
||
$(BUNDLE_UP_FAILED)
$(BUNDLE_UP)
PHONY_LIST
+=
jtreg_tests
################################################################
# packtest
# Expect JPRT to set JPRT_PACKTEST_HOME.
PACKTEST_HOME
=
/net/jprt-web.sfbay.sun.com/jprt/allproducts/packtest
ifdef
JPRT_PACKTEST_HOME
PACKTEST_HOME
=
$(JPRT_PACKTEST_HOME)
endif
#EXTRA_PACKTEST_OPTIONS =
packtest
:
prep $(PACKTEST_HOME)/ptest $(PRODUCT_HOME)
(
$(CD)
$(PACKTEST_HOME)
&&
\
$(PACKTEST_HOME)
/ptest
\
-t
"
$(PRODUCT_HOME)
"
\
$(PACKTEST_STRESS_OPTION)
\
$(EXTRA_PACKTEST_OPTIONS)
\
-W
$(ABS_TEST_OUTPUT_DIR)
\
$
(
JAVA_OPTIONS:%
=
-J
%
)
\
)
||
$(BUNDLE_UP_FAILED)
$(BUNDLE_UP)
packtest_stress
:
PACKTEST_STRESS_OPTION=-s
packtest_stress
:
packtest
PHONY_LIST
+=
packtest packtest_stress
################################################################
# Phony targets (e.g. these are not filenames)
.PHONY
:
all clean prep $(PHONY_LIST)
FRC
:
################################################################
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录