Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_hotspot
提交
a884225b
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看板
提交
a884225b
编写于
4月 03, 2013
作者:
M
mgerdin
浏览文件
操作
浏览文件
下载
差异文件
Merge
上级
533b70e1
9619ec5d
变更
64
隐藏空白更改
内联
并排
Showing
64 changed file
with
693 addition
and
636 deletion
+693
-636
.hgtags
.hgtags
+2
-0
make/bsd/makefiles/mapfile-vers-debug
make/bsd/makefiles/mapfile-vers-debug
+2
-0
make/bsd/makefiles/mapfile-vers-product
make/bsd/makefiles/mapfile-vers-product
+2
-0
make/excludeSrc.make
make/excludeSrc.make
+2
-1
make/hotspot_version
make/hotspot_version
+1
-1
make/linux/makefiles/mapfile-vers-debug
make/linux/makefiles/mapfile-vers-debug
+2
-0
make/linux/makefiles/mapfile-vers-product
make/linux/makefiles/mapfile-vers-product
+2
-0
make/solaris/makefiles/mapfile-vers
make/solaris/makefiles/mapfile-vers
+2
-0
make/windows/build.make
make/windows/build.make
+3
-5
make/windows/create.bat
make/windows/create.bat
+2
-2
make/windows/makefiles/compile.make
make/windows/makefiles/compile.make
+0
-7
make/windows/makefiles/product.make
make/windows/makefiles/product.make
+0
-8
make/windows/makefiles/vm.make
make/windows/makefiles/vm.make
+0
-4
make/windows/projectfiles/kernel/Makefile
make/windows/projectfiles/kernel/Makefile
+0
-27
make/windows/projectfiles/kernel/vm.def
make/windows/projectfiles/kernel/vm.def
+0
-7
make/windows/projectfiles/kernel/vm.dsw
make/windows/projectfiles/kernel/vm.dsw
+0
-29
src/os/linux/vm/os_linux.cpp
src/os/linux/vm/os_linux.cpp
+19
-13
src/os/linux/vm/os_linux.hpp
src/os/linux/vm/os_linux.hpp
+2
-1
src/os_cpu/bsd_x86/vm/globals_bsd_x86.hpp
src/os_cpu/bsd_x86/vm/globals_bsd_x86.hpp
+1
-1
src/os_cpu/bsd_zero/vm/globals_bsd_zero.hpp
src/os_cpu/bsd_zero/vm/globals_bsd_zero.hpp
+1
-1
src/os_cpu/linux_sparc/vm/globals_linux_sparc.hpp
src/os_cpu/linux_sparc/vm/globals_linux_sparc.hpp
+1
-1
src/os_cpu/linux_x86/vm/globals_linux_x86.hpp
src/os_cpu/linux_x86/vm/globals_linux_x86.hpp
+1
-1
src/os_cpu/linux_zero/vm/globals_linux_zero.hpp
src/os_cpu/linux_zero/vm/globals_linux_zero.hpp
+1
-1
src/os_cpu/solaris_sparc/vm/globals_solaris_sparc.hpp
src/os_cpu/solaris_sparc/vm/globals_solaris_sparc.hpp
+1
-1
src/os_cpu/solaris_x86/vm/globals_solaris_x86.hpp
src/os_cpu/solaris_x86/vm/globals_solaris_x86.hpp
+1
-1
src/os_cpu/windows_x86/vm/globals_windows_x86.hpp
src/os_cpu/windows_x86/vm/globals_windows_x86.hpp
+1
-1
src/share/tools/ProjectCreator/BuildConfig.java
src/share/tools/ProjectCreator/BuildConfig.java
+0
-30
src/share/tools/ProjectCreator/WinGammaPlatform.java
src/share/tools/ProjectCreator/WinGammaPlatform.java
+0
-6
src/share/vm/classfile/classFileParser.cpp
src/share/vm/classfile/classFileParser.cpp
+1
-2
src/share/vm/classfile/verifier.cpp
src/share/vm/classfile/verifier.cpp
+14
-17
src/share/vm/memory/filemap.cpp
src/share/vm/memory/filemap.cpp
+1
-1
src/share/vm/memory/metaspace.cpp
src/share/vm/memory/metaspace.cpp
+6
-17
src/share/vm/prims/jvm.cpp
src/share/vm/prims/jvm.cpp
+65
-17
src/share/vm/prims/jvm.h
src/share/vm/prims/jvm.h
+8
-0
src/share/vm/runtime/arguments.cpp
src/share/vm/runtime/arguments.cpp
+1
-0
src/share/vm/runtime/globals.hpp
src/share/vm/runtime/globals.hpp
+12
-5
src/share/vm/runtime/os.cpp
src/share/vm/runtime/os.cpp
+36
-3
src/share/vm/services/memTracker.cpp
src/share/vm/services/memTracker.cpp
+15
-0
src/share/vm/services/memTracker.hpp
src/share/vm/services/memTracker.hpp
+15
-0
src/share/vm/services/nmtDCmd.cpp
src/share/vm/services/nmtDCmd.cpp
+16
-8
src/share/vm/services/nmtDCmd.hpp
src/share/vm/services/nmtDCmd.hpp
+1
-0
test/compiler/5091921/Test6890943.sh
test/compiler/5091921/Test6890943.sh
+7
-17
test/compiler/5091921/Test7005594.sh
test/compiler/5091921/Test7005594.sh
+6
-17
test/compiler/6857159/Test6857159.sh
test/compiler/6857159/Test6857159.sh
+6
-17
test/compiler/7068051/Test7068051.sh
test/compiler/7068051/Test7068051.sh
+9
-13
test/compiler/7070134/Test7070134.sh
test/compiler/7070134/Test7070134.sh
+6
-17
test/compiler/7200264/Test7200264.sh
test/compiler/7200264/Test7200264.sh
+6
-41
test/gc/6941923/test6941923.sh
test/gc/6941923/test6941923.sh
+13
-26
test/runtime/6626217/Test6626217.sh
test/runtime/6626217/Test6626217.sh
+10
-59
test/runtime/6878713/Test6878713.sh
test/runtime/6878713/Test6878713.sh
+117
-51
test/runtime/6929067/Test6929067.sh
test/runtime/6929067/Test6929067.sh
+12
-14
test/runtime/7020373/Test7020373.sh
test/runtime/7020373/Test7020373.sh
+6
-46
test/runtime/7051189/Xchecksig.sh
test/runtime/7051189/Xchecksig.sh
+6
-18
test/runtime/7107135/Test7107135.sh
test/runtime/7107135/Test7107135.sh
+7
-14
test/runtime/7110720/Test7110720.sh
test/runtime/7110720/Test7110720.sh
+5
-14
test/runtime/7158804/Test7158804.sh
test/runtime/7158804/Test7158804.sh
+6
-5
test/runtime/7162488/Test7162488.sh
test/runtime/7162488/Test7162488.sh
+5
-19
test/runtime/8010389/VMThreadDlopen.java
test/runtime/8010389/VMThreadDlopen.java
+15
-15
test/runtime/CommandLine/BooleanFlagWithInvalidValue.java
test/runtime/CommandLine/BooleanFlagWithInvalidValue.java
+4
-4
test/runtime/CommandLine/FlagWithInvalidValue.java
test/runtime/CommandLine/FlagWithInvalidValue.java
+2
-2
test/runtime/CommandLine/NonBooleanFlagWithInvalidBooleanPrefix.java
...e/CommandLine/NonBooleanFlagWithInvalidBooleanPrefix.java
+4
-4
test/runtime/NMT/BaselineWithParameter.java
test/runtime/NMT/BaselineWithParameter.java
+1
-1
test/runtime/NMT/PrintNMTStatistics.java
test/runtime/NMT/PrintNMTStatistics.java
+7
-3
test/test_env.sh
test/test_env.sh
+193
-0
未找到文件。
.hgtags
浏览文件 @
a884225b
...
...
@@ -326,3 +326,5 @@ dd6350b4abc4a6c19c89dd982cc0e4f3d119885c hs25-b22
0631ebcc45f05c73b09a56c2586685af1f781c1d hs25-b23
3db4ab0e12f437fe374817de346b2b0c6b4a5b31 jdk8-b82
e3a41fc0234895eba4f272b984f7dacff495f8eb hs25-b24
1c8db54ee9f315e20d6d5d9bf0b5c10349e9d301 jdk8-b83
8d0f263a370c5f3e61791bb06054560804117288 hs25-b25
make/bsd/makefiles/mapfile-vers-debug
浏览文件 @
a884225b
...
...
@@ -135,6 +135,7 @@ SUNWprivate_1.1 {
JVM_GetEnclosingMethodInfo;
JVM_GetFieldAnnotations;
JVM_GetFieldIxModifiers;
JVM_GetFieldTypeAnnotations;
JVM_GetHostName;
JVM_GetInheritedAccessControlContext;
JVM_GetInterfaceVersion;
...
...
@@ -156,6 +157,7 @@ SUNWprivate_1.1 {
JVM_GetMethodIxSignatureUTF;
JVM_GetMethodParameterAnnotations;
JVM_GetMethodParameters;
JVM_GetMethodTypeAnnotations;
JVM_GetPrimitiveArrayElement;
JVM_GetProtectionDomain;
JVM_GetSockName;
...
...
make/bsd/makefiles/mapfile-vers-product
浏览文件 @
a884225b
...
...
@@ -135,6 +135,7 @@ SUNWprivate_1.1 {
JVM_GetEnclosingMethodInfo;
JVM_GetFieldAnnotations;
JVM_GetFieldIxModifiers;
JVM_GetFieldTypeAnnotations;
JVM_GetHostName;
JVM_GetInheritedAccessControlContext;
JVM_GetInterfaceVersion;
...
...
@@ -156,6 +157,7 @@ SUNWprivate_1.1 {
JVM_GetMethodIxSignatureUTF;
JVM_GetMethodParameterAnnotations;
JVM_GetMethodParameters;
JVM_GetMethodTypeAnnotations;
JVM_GetPrimitiveArrayElement;
JVM_GetProtectionDomain;
JVM_GetSockName;
...
...
make/excludeSrc.make
浏览文件 @
a884225b
...
...
@@ -28,7 +28,8 @@ ifeq ($(INCLUDE_JVMTI), false)
Src_Files_EXCLUDE
+=
jvmtiGetLoadedClasses.cpp forte.cpp jvmtiThreadState.cpp jvmtiExtensions.cpp
\
jvmtiImpl.cpp jvmtiManageCapabilities.cpp jvmtiRawMonitor.cpp jvmtiUtil.cpp jvmtiTrace.cpp
\
jvmtiCodeBlobEvents.cpp jvmtiEnv.cpp jvmtiRedefineClasses.cpp jvmtiEnvBase.cpp jvmtiEnvThreadState.cpp
\
jvmtiTagMap.cpp jvmtiEventController.cpp evmCompat.cpp jvmtiEnter.xsl jvmtiExport.cpp
jvmtiTagMap.cpp jvmtiEventController.cpp evmCompat.cpp jvmtiEnter.xsl jvmtiExport.cpp
\
jvmtiClassFileReconstituter.cpp
endif
ifeq
($(INCLUDE_FPROF), false)
...
...
make/hotspot_version
浏览文件 @
a884225b
...
...
@@ -35,7 +35,7 @@ HOTSPOT_VM_COPYRIGHT=Copyright 2013
HS_MAJOR_VER=25
HS_MINOR_VER=0
HS_BUILD_NUMBER=2
5
HS_BUILD_NUMBER=2
6
JDK_MAJOR_VER=1
JDK_MINOR_VER=8
...
...
make/linux/makefiles/mapfile-vers-debug
浏览文件 @
a884225b
...
...
@@ -131,6 +131,7 @@ SUNWprivate_1.1 {
JVM_GetEnclosingMethodInfo;
JVM_GetFieldAnnotations;
JVM_GetFieldIxModifiers;
JVM_GetFieldTypeAnnotations;
JVM_GetHostName;
JVM_GetInheritedAccessControlContext;
JVM_GetInterfaceVersion;
...
...
@@ -152,6 +153,7 @@ SUNWprivate_1.1 {
JVM_GetMethodIxSignatureUTF;
JVM_GetMethodParameterAnnotations;
JVM_GetMethodParameters;
JVM_GetMethodTypeAnnotations;
JVM_GetPrimitiveArrayElement;
JVM_GetProtectionDomain;
JVM_GetSockName;
...
...
make/linux/makefiles/mapfile-vers-product
浏览文件 @
a884225b
...
...
@@ -131,6 +131,7 @@ SUNWprivate_1.1 {
JVM_GetEnclosingMethodInfo;
JVM_GetFieldAnnotations;
JVM_GetFieldIxModifiers;
JVM_GetFieldTypeAnnotations;
JVM_GetHostName;
JVM_GetInheritedAccessControlContext;
JVM_GetInterfaceVersion;
...
...
@@ -152,6 +153,7 @@ SUNWprivate_1.1 {
JVM_GetMethodIxSignatureUTF;
JVM_GetMethodParameterAnnotations;
JVM_GetMethodParameters;
JVM_GetMethodTypeAnnotations;
JVM_GetPrimitiveArrayElement;
JVM_GetProtectionDomain;
JVM_GetSockName;
...
...
make/solaris/makefiles/mapfile-vers
浏览文件 @
a884225b
...
...
@@ -131,6 +131,7 @@ SUNWprivate_1.1 {
JVM_GetEnclosingMethodInfo;
JVM_GetFieldAnnotations;
JVM_GetFieldIxModifiers;
JVM_GetFieldTypeAnnotations;
JVM_GetHostName;
JVM_GetInheritedAccessControlContext;
JVM_GetInterfaceVersion;
...
...
@@ -152,6 +153,7 @@ SUNWprivate_1.1 {
JVM_GetMethodIxSignatureUTF;
JVM_GetMethodParameterAnnotations;
JVM_GetMethodParameters;
JVM_GetMethodTypeAnnotations;
JVM_GetPrimitiveArrayElement;
JVM_GetProtectionDomain;
JVM_GetSockName;
...
...
make/windows/build.make
浏览文件 @
a884225b
...
...
@@ -110,8 +110,6 @@ VARIANT_TEXT=Server
!
endif
!elseif
"$(Variant)"
==
"tiered"
VARIANT_TEXT
=
Tiered
!elseif
"$(Variant)"
==
"kernel"
VARIANT_TEXT
=
Kernel
!
endif
#########################################################################
...
...
@@ -305,9 +303,9 @@ $(variantDir)\local.make: checks
checks
:
checkVariant checkWorkSpace checkSA
checkVariant
:
@
if
"
$(Variant)
"
==
""
echo
Need to specify
"Variant=[tiered|compiler2|compiler1|
kernel|
core]"
&&
false
@
if
"
$(Variant)
"
NEQ
"tiered"
if
"
$(Variant)
"
NEQ
"compiler2"
if
"
$(Variant)
"
NEQ
"compiler1"
if
"
$(Variant)
"
NEQ
"
kernel"
if
"
$(Variant)
"
NEQ
"
core"
\
echo
Need to specify
"Variant=[tiered|compiler2|compiler1|
kernel|
core]"
&&
false
@
if
"
$(Variant)
"
==
""
echo
Need to specify
"Variant=[tiered|compiler2|compiler1|core]"
&&
false
@
if
"
$(Variant)
"
NEQ
"tiered"
if
"
$(Variant)
"
NEQ
"compiler2"
if
"
$(Variant)
"
NEQ
"compiler1"
if
"
$(Variant)
"
NEQ
"core"
\
echo
Need to specify
"Variant=[tiered|compiler2|compiler1|core]"
&&
false
checkWorkSpace
:
@
if
"
$(WorkSpace)
"
==
""
echo
Need to specify
"WorkSpace=..."
&&
false
...
...
make/windows/create.bat
浏览文件 @
a884225b
...
...
@@ -148,7 +148,7 @@ echo HotSpotJDKDist=%HotSpotJDKDist%
REM This is now safe to do.
:copyfiles
for
/D
%%i
in
(
compiler1
,
compiler2
,
tiered
,
core
,
kernel
)
do
(
for
/D
%%i
in
(
compiler1
,
compiler2
,
tiered
,
core
)
do
(
if
NOT
EXIST
%HotSpotBuildSpace%
\
%%i
\generated
mkdir
%HotSpotBuildSpace%
\
%%i
\generated
copy
%HotSpotWorkSpace%
\make\windows\projectfiles\
%%i
\
*
%HotSpotBuildSpace%
\
%%i
\generated
>
NUL
)
...
...
@@ -156,7 +156,7 @@ copy %HotSpotWorkSpace%\make\windows\projectfiles\%%i\* %HotSpotBuildSpace%\%%i\
REM force regneration of ProjectFile
if
exist
%ProjectFile%
del
%ProjectFile%
for
/D
%%i
in
(
compiler1
,
compiler2
,
tiered
,
core
,
kernel
)
do
(
for
/D
%%i
in
(
compiler1
,
compiler2
,
tiered
,
core
)
do
(
echo
--
%%i
--
echo
#
Generated
file
!
>
%HotSpotBuildSpace%
\
%%i
\local.make
echo
#
Changing
a
variable
below
and
then
deleting
%ProjectFile%
will
cause
>>
%HotSpotBuildSpace%
\
%%i
\local.make
...
...
make/windows/makefiles/compile.make
浏览文件 @
a884225b
...
...
@@ -221,13 +221,6 @@ LD_FLAGS = /SAFESEH $(LD_FLAGS)
!
endif
!
endif
# Compile for space above time.
!if
"$(Variant)"
==
"kernel"
PRODUCT_OPT_OPTION
=
/O1 /Oy-
FASTDEBUG_OPT_OPTION
=
/O1 /Oy-
DEBUG_OPT_OPTION
=
/Od
!
endif
# If NO_OPTIMIZATIONS is defined in the environment, turn everything off
!
ifdef
NO_OPTIMIZATIONS
PRODUCT_OPT_OPTION
=
$(DEBUG_OPT_OPTION)
...
...
make/windows/makefiles/product.make
浏览文件 @
a884225b
...
...
@@ -51,13 +51,6 @@ HS_BUILD_ID=$(HS_BUILD_VER)
# Force resources to be rebuilt every time
$(Res_Files)
:
FORCE
# Kernel doesn't need exported vtbl symbols.
!if
"$(Variant)"
==
"kernel"
$(AOUT)
:
$(Res_Files) $(Obj_Files)
$(LD)
@<<
$(LD_FLAGS) /out
:
$@ /implib:$*.lib $(Obj_Files) $(Res_Files)
<<
!
else
vm.def
:
$(Obj_Files)
sh
$(WorkSpace)
/make/windows/build_vm_def.sh
...
...
@@ -65,7 +58,6 @@ $(AOUT): $(Res_Files) $(Obj_Files) vm.def
$(LD)
@<<
$(LD_FLAGS) /out
:
$@ /implib:$*.lib /def:vm.def $(Obj_Files) $(Res_Files)
<<
!
endif
!if
"$(MT)"
!=
""
# The previous link command created a .manifest file that we want to
# insert into the linked artifact so we do not need to track it
...
...
make/windows/makefiles/vm.make
浏览文件 @
a884225b
...
...
@@ -89,12 +89,8 @@ STACK_SIZE=
# AsyncGetCallTrace is not supported on IA64 yet
AGCT_EXPORT
=
!
else
!if
"$(Variant)"
==
"kernel"
AGCT_EXPORT
=
!
else
AGCT_EXPORT
=
/export:AsyncGetCallTrace
!
endif
!
endif
# If you modify exports below please do the corresponding changes in
# src/share/tools/ProjectCreator/WinGammaPlatformVC7.java
...
...
make/windows/projectfiles/kernel/Makefile
已删除
100644 → 0
浏览文件 @
533b70e1
#
# Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 2 only, as
# published by the Free Software Foundation.
#
# This code is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
# version 2 for more details (a copy is included in the LICENSE file that
# accompanied this code).
#
# You should have received a copy of the GNU General Public License version
# 2 along with this work; if not, write to the Free Software Foundation,
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
#
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
# or visit www.oracle.com if you need additional information or have any
# questions.
#
#
!
include
../local.make
!
include
$(HOTSPOTWORKSPACE)/make/windows/projectfiles/common/Makefile
make/windows/projectfiles/kernel/vm.def
已删除
100644 → 0
浏览文件 @
533b70e1
;
; This .DEF file is a placeholder for one which is automatically
; generated during the build process. See
; make\windows\build_vm_def.sh and
; make\windows\makefiles\projectcreator.make (esp. the "-prelink"
; options).
;
make/windows/projectfiles/kernel/vm.dsw
已删除
100644 → 0
浏览文件 @
533b70e1
Microsoft Developer Studio Workspace File, Format Version 6.00
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
###############################################################################
Project: "vm"=.\vm.dsp - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
}}}
###############################################################################
Global:
Package=<5>
{{{
}}}
Package=<3>
{{{
}}}
###############################################################################
src/os/linux/vm/os_linux.cpp
浏览文件 @
a884225b
...
...
@@ -1797,13 +1797,15 @@ bool os::Linux::_stack_is_executable = false;
class
VM_LinuxDllLoad
:
public
VM_Operation
{
private:
const
char
*
_filename
;
char
*
_ebuf
;
int
_ebuflen
;
void
*
_lib
;
public:
VM_LinuxDllLoad
(
const
char
*
fn
)
:
_filename
(
fn
),
_lib
(
NULL
)
{}
VM_LinuxDllLoad
(
const
char
*
fn
,
char
*
ebuf
,
int
ebuflen
)
:
_filename
(
fn
),
_
ebuf
(
ebuf
),
_ebuflen
(
ebuflen
),
_
lib
(
NULL
)
{}
VMOp_Type
type
()
const
{
return
VMOp_LinuxDllLoad
;
}
void
doit
()
{
_lib
=
os
::
Linux
::
dll_load_in
ner
(
_filename
);
_lib
=
os
::
Linux
::
dll_load_in
_vmthread
(
_filename
,
_ebuf
,
_ebuflen
);
os
::
Linux
::
_stack_is_executable
=
true
;
}
void
*
loaded_library
()
{
return
_lib
;
}
...
...
@@ -1851,13 +1853,13 @@ void * os::dll_load(const char *filename, char *ebuf, int ebuflen)
// This is for the case where the DLL has an static
// constructor function that executes JNI code. We cannot
// load such DLLs in the VMThread.
result
=
::
dlopen
(
filename
,
RTLD_LAZY
);
result
=
os
::
Linux
::
dlopen_helper
(
filename
,
ebuf
,
ebuflen
);
}
ThreadInVMfromNative
tiv
(
jt
);
debug_only
(
VMNativeEntryWrapper
vew
;)
VM_LinuxDllLoad
op
(
filename
);
VM_LinuxDllLoad
op
(
filename
,
ebuf
,
ebuflen
);
VMThread
::
execute
(
&
op
);
if
(
LoadExecStackDllInVMThread
)
{
result
=
op
.
loaded_library
();
...
...
@@ -1869,7 +1871,7 @@ void * os::dll_load(const char *filename, char *ebuf, int ebuflen)
}
if
(
!
load_attempted
)
{
result
=
::
dlopen
(
filename
,
RTLD_LAZY
);
result
=
os
::
Linux
::
dlopen_helper
(
filename
,
ebuf
,
ebuflen
);
}
if
(
result
!=
NULL
)
{
...
...
@@ -1878,11 +1880,6 @@ void * os::dll_load(const char *filename, char *ebuf, int ebuflen)
}
Elf32_Ehdr
elf_head
;
// Read system error message into ebuf
// It may or may not be overwritten below
::
strncpy
(
ebuf
,
::
dlerror
(),
ebuflen
-
1
);
ebuf
[
ebuflen
-
1
]
=
'\0'
;
int
diag_msg_max_length
=
ebuflen
-
strlen
(
ebuf
);
char
*
diag_msg_buf
=
ebuf
+
strlen
(
ebuf
);
...
...
@@ -2025,10 +2022,19 @@ void * os::dll_load(const char *filename, char *ebuf, int ebuflen)
return
NULL
;
}
void
*
os
::
Linux
::
dll_load_inner
(
const
char
*
filename
)
{
void
*
os
::
Linux
::
dlopen_helper
(
const
char
*
filename
,
char
*
ebuf
,
int
ebuflen
)
{
void
*
result
=
::
dlopen
(
filename
,
RTLD_LAZY
);
if
(
result
==
NULL
)
{
::
strncpy
(
ebuf
,
::
dlerror
(),
ebuflen
-
1
);
ebuf
[
ebuflen
-
1
]
=
'\0'
;
}
return
result
;
}
void
*
os
::
Linux
::
dll_load_in_vmthread
(
const
char
*
filename
,
char
*
ebuf
,
int
ebuflen
)
{
void
*
result
=
NULL
;
if
(
LoadExecStackDllInVMThread
)
{
result
=
::
dlopen
(
filename
,
RTLD_LAZY
);
result
=
dlopen_helper
(
filename
,
ebuf
,
ebuflen
);
}
// Since 7019808, libjvm.so is linked with -noexecstack. If the VM loads a
...
...
src/os/linux/vm/os_linux.hpp
浏览文件 @
a884225b
...
...
@@ -95,7 +95,8 @@ class Linux {
public:
static
bool
_stack_is_executable
;
static
void
*
dll_load_inner
(
const
char
*
name
);
static
void
*
dlopen_helper
(
const
char
*
name
,
char
*
ebuf
,
int
ebuflen
);
static
void
*
dll_load_in_vmthread
(
const
char
*
name
,
char
*
ebuf
,
int
ebuflen
);
static
void
init_thread_fpu_state
();
static
int
get_fpu_control_word
();
...
...
src/os_cpu/bsd_x86/vm/globals_bsd_x86.hpp
浏览文件 @
a884225b
...
...
@@ -46,7 +46,7 @@ define_pd_global(uintx, SurvivorRatio, 8);
define_pd_global
(
uintx
,
JVMInvokeMethodSlack
,
8192
);
// Used on 64 bit platforms for UseCompressedOops base address
or CDS
// Used on 64 bit platforms for UseCompressedOops base address
define_pd_global
(
uintx
,
HeapBaseMinAddress
,
2
*
G
);
#endif // OS_CPU_BSD_X86_VM_GLOBALS_BSD_X86_HPP
src/os_cpu/bsd_zero/vm/globals_bsd_zero.hpp
浏览文件 @
a884225b
...
...
@@ -41,7 +41,7 @@ define_pd_global(intx, VMThreadStackSize, 512);
define_pd_global
(
intx
,
CompilerThreadStackSize
,
0
);
define_pd_global
(
uintx
,
JVMInvokeMethodSlack
,
8192
);
// Used on 64 bit platforms for UseCompressedOops base address
or CDS
// Used on 64 bit platforms for UseCompressedOops base address
define_pd_global
(
uintx
,
HeapBaseMinAddress
,
2
*
G
);
#endif // OS_CPU_BSD_ZERO_VM_GLOBALS_BSD_ZERO_HPP
src/os_cpu/linux_sparc/vm/globals_linux_sparc.hpp
浏览文件 @
a884225b
...
...
@@ -33,7 +33,7 @@
define_pd_global
(
uintx
,
JVMInvokeMethodSlack
,
12288
);
define_pd_global
(
intx
,
CompilerThreadStackSize
,
0
);
// Used on 64 bit platforms for UseCompressedOops base address
or CDS
// Used on 64 bit platforms for UseCompressedOops base address
define_pd_global
(
uintx
,
HeapBaseMinAddress
,
CONST64
(
4
)
*
G
);
#endif // OS_CPU_LINUX_SPARC_VM_GLOBALS_LINUX_SPARC_HPP
src/os_cpu/linux_x86/vm/globals_linux_x86.hpp
浏览文件 @
a884225b
...
...
@@ -44,7 +44,7 @@ define_pd_global(intx, CompilerThreadStackSize, 0);
define_pd_global
(
uintx
,
JVMInvokeMethodSlack
,
8192
);
// Used on 64 bit platforms for UseCompressedOops base address
or CDS
// Used on 64 bit platforms for UseCompressedOops base address
define_pd_global
(
uintx
,
HeapBaseMinAddress
,
2
*
G
);
#endif // OS_CPU_LINUX_X86_VM_GLOBALS_LINUX_X86_HPP
src/os_cpu/linux_zero/vm/globals_linux_zero.hpp
浏览文件 @
a884225b
...
...
@@ -41,7 +41,7 @@ define_pd_global(intx, VMThreadStackSize, 512);
define_pd_global
(
intx
,
CompilerThreadStackSize
,
0
);
define_pd_global
(
uintx
,
JVMInvokeMethodSlack
,
8192
);
// Used on 64 bit platforms for UseCompressedOops base address
or CDS
// Used on 64 bit platforms for UseCompressedOops base address
define_pd_global
(
uintx
,
HeapBaseMinAddress
,
2
*
G
);
#endif // OS_CPU_LINUX_ZERO_VM_GLOBALS_LINUX_ZERO_HPP
src/os_cpu/solaris_sparc/vm/globals_solaris_sparc.hpp
浏览文件 @
a884225b
...
...
@@ -33,7 +33,7 @@
define_pd_global
(
uintx
,
JVMInvokeMethodSlack
,
12288
);
define_pd_global
(
intx
,
CompilerThreadStackSize
,
0
);
// Used on 64 bit platforms for UseCompressedOops base address
or CDS
// Used on 64 bit platforms for UseCompressedOops base address
#ifdef _LP64
define_pd_global
(
uintx
,
HeapBaseMinAddress
,
CONST64
(
4
)
*
G
);
#else
...
...
src/os_cpu/solaris_x86/vm/globals_solaris_x86.hpp
浏览文件 @
a884225b
...
...
@@ -43,7 +43,7 @@ define_pd_global(uintx,JVMInvokeMethodSlack, 10*K);
define_pd_global
(
intx
,
CompilerThreadStackSize
,
0
);
// Used on 64 bit platforms for UseCompressedOops base address
or CDS
// Used on 64 bit platforms for UseCompressedOops base address
define_pd_global
(
uintx
,
HeapBaseMinAddress
,
256
*
M
);
#endif // OS_CPU_SOLARIS_X86_VM_GLOBALS_SOLARIS_X86_HPP
src/os_cpu/windows_x86/vm/globals_windows_x86.hpp
浏览文件 @
a884225b
...
...
@@ -45,7 +45,7 @@ define_pd_global(intx, CompilerThreadStackSize, 0);
define_pd_global
(
uintx
,
JVMInvokeMethodSlack
,
8192
);
// Used on 64 bit platforms for UseCompressedOops base address
or CDS
// Used on 64 bit platforms for UseCompressedOops base address
define_pd_global
(
uintx
,
HeapBaseMinAddress
,
2
*
G
);
#endif // OS_CPU_WINDOWS_X86_VM_GLOBALS_WINDOWS_X86_HPP
src/share/tools/ProjectCreator/BuildConfig.java
浏览文件 @
a884225b
...
...
@@ -568,36 +568,6 @@ class CoreProductConfig extends ProductConfig {
}
}
class
KernelDebugConfig
extends
GenericDebugConfig
{
String
getOptFlag
()
{
return
getCI
().
getNoOptFlag
();
}
KernelDebugConfig
()
{
initNames
(
"kernel"
,
"debug"
,
"jvm.dll"
);
init
(
getIncludes
(),
getDefines
());
}
}
class
KernelFastDebugConfig
extends
GenericDebugConfig
{
String
getOptFlag
()
{
return
getCI
().
getOptFlag
();
}
KernelFastDebugConfig
()
{
initNames
(
"kernel"
,
"fastdebug"
,
"jvm.dll"
);
init
(
getIncludes
(),
getDefines
());
}
}
class
KernelProductConfig
extends
ProductConfig
{
KernelProductConfig
()
{
initNames
(
"kernel"
,
"product"
,
"jvm.dll"
);
init
(
getIncludes
(),
getDefines
());
}
}
abstract
class
CompilerInterface
{
abstract
Vector
getBaseCompilerFlags
(
Vector
defines
,
Vector
includes
,
String
outDir
);
...
...
src/share/tools/ProjectCreator/WinGammaPlatform.java
浏览文件 @
a884225b
...
...
@@ -564,12 +564,6 @@ public abstract class WinGammaPlatform {
allConfigs
.
add
(
new
CoreFastDebugConfig
());
allConfigs
.
add
(
new
CoreProductConfig
());
if
(
platform
.
equals
(
"Win32"
))
{
allConfigs
.
add
(
new
KernelDebugConfig
());
allConfigs
.
add
(
new
KernelFastDebugConfig
());
allConfigs
.
add
(
new
KernelProductConfig
());
}
return
allConfigs
;
}
...
...
src/share/vm/classfile/classFileParser.cpp
浏览文件 @
a884225b
...
...
@@ -2196,8 +2196,7 @@ methodHandle ClassFileParser::parse_method(bool is_interface,
true
,
// is LVTT
CHECK_
(
nullHandle
));
lvtt_cnt
++
;
}
else
if
(
UseSplitVerifier
&&
_major_version
>=
Verifier
::
STACKMAP_ATTRIBUTE_MAJOR_VERSION
&&
}
else
if
(
_major_version
>=
Verifier
::
STACKMAP_ATTRIBUTE_MAJOR_VERSION
&&
_cp
->
symbol_at
(
code_attribute_name_index
)
==
vmSymbols
::
tag_stack_map_table
())
{
// Stack map is only needed by the new verifier in JDK1.5.
if
(
parsed_stackmap_attribute
)
{
...
...
src/share/vm/classfile/verifier.cpp
浏览文件 @
a884225b
...
...
@@ -61,8 +61,8 @@
# include "bytes_ppc.hpp"
#endif
#define NOFAILOVER_MAJOR_VERSION 51
#define
STATIC_METHOD_IN_INTERFACE_MAJOR_VERSION 52
#define NOFAILOVER_MAJOR_VERSION
51
#define
NONZERO_PADDING_BYTES_IN_SWITCH_MAJOR_VERSION 51
// Access to external entry for VerifyClassCodes - old byte code verifier
...
...
@@ -127,8 +127,7 @@ bool Verifier::verify(instanceKlassHandle klass, Verifier::Mode mode, bool shoul
if
(
TraceClassInitialization
)
{
tty
->
print_cr
(
"Start class verification for: %s"
,
klassName
);
}
if
(
UseSplitVerifier
&&
klass
->
major_version
()
>=
STACKMAP_ATTRIBUTE_MAJOR_VERSION
)
{
if
(
klass
->
major_version
()
>=
STACKMAP_ATTRIBUTE_MAJOR_VERSION
)
{
ClassVerifier
split_verifier
(
klass
,
THREAD
);
split_verifier
.
verify_class
(
THREAD
);
exception_name
=
split_verifier
.
result
();
...
...
@@ -2027,16 +2026,19 @@ void ClassVerifier::verify_switch(
address
bcp
=
bcs
->
bcp
();
address
aligned_bcp
=
(
address
)
round_to
((
intptr_t
)(
bcp
+
1
),
jintSize
);
// 4639449 & 4647081: padding bytes must be 0
u2
padding_offset
=
1
;
while
((
bcp
+
padding_offset
)
<
aligned_bcp
)
{
if
(
*
(
bcp
+
padding_offset
)
!=
0
)
{
verify_error
(
ErrorContext
::
bad_code
(
bci
),
"Nonzero padding byte in lookswitch or tableswitch"
);
return
;
if
(
_klass
->
major_version
()
<
NONZERO_PADDING_BYTES_IN_SWITCH_MAJOR_VERSION
)
{
// 4639449 & 4647081: padding bytes must be 0
u2
padding_offset
=
1
;
while
((
bcp
+
padding_offset
)
<
aligned_bcp
)
{
if
(
*
(
bcp
+
padding_offset
)
!=
0
)
{
verify_error
(
ErrorContext
::
bad_code
(
bci
),
"Nonzero padding byte in lookswitch or tableswitch"
);
return
;
}
padding_offset
++
;
}
padding_offset
++
;
}
int
default_offset
=
(
int
)
Bytes
::
get_Java_u4
(
aligned_bcp
);
int
keys
,
delta
;
current_frame
->
pop_stack
(
...
...
@@ -2318,11 +2320,6 @@ void ClassVerifier::verify_invoke_instructions(
types
=
(
1
<<
JVM_CONSTANT_InterfaceMethodref
)
|
(
1
<<
JVM_CONSTANT_Methodref
);
break
;
case
Bytecodes
::
_invokestatic
:
types
=
(
_klass
->
major_version
()
<
STATIC_METHOD_IN_INTERFACE_MAJOR_VERSION
)
?
(
1
<<
JVM_CONSTANT_Methodref
)
:
((
1
<<
JVM_CONSTANT_InterfaceMethodref
)
|
(
1
<<
JVM_CONSTANT_Methodref
));
break
;
default:
types
=
1
<<
JVM_CONSTANT_Methodref
;
}
...
...
src/share/vm/memory/filemap.cpp
浏览文件 @
a884225b
...
...
@@ -372,7 +372,7 @@ ReservedSpace FileMapInfo::reserve_shared_memory() {
// other reserved memory (like the code cache).
ReservedSpace
rs
(
size
,
alignment
,
false
,
requested_addr
);
if
(
!
rs
.
is_reserved
())
{
fail_continue
(
err_msg
(
"Unable to reserve
d
shared space at required address "
INTPTR_FORMAT
,
requested_addr
));
fail_continue
(
err_msg
(
"Unable to reserve shared space at required address "
INTPTR_FORMAT
,
requested_addr
));
return
rs
;
}
// the reserved virtual memory is for mapping class data sharing archive
...
...
src/share/vm/memory/metaspace.cpp
浏览文件 @
a884225b
...
...
@@ -337,27 +337,16 @@ VirtualSpaceNode::VirtualSpaceNode(size_t byte_size) : _top(NULL), _next(NULL),
// align up to vm allocation granularity
byte_size
=
align_size_up
(
byte_size
,
os
::
vm_allocation_granularity
());
// This allocates memory with mmap. For DumpSharedspaces, allocate the
// space at low memory so that other shared images don't conflict.
// This is the same address as memory needed for UseCompressedOops but
// compressed oops don't work with CDS (offsets in metadata are wrong), so
// borrow the same address.
// This allocates memory with mmap. For DumpSharedspaces, try to reserve
// configurable address, generally at the top of the Java heap so other
// memory addresses don't conflict.
if
(
DumpSharedSpaces
)
{
char
*
shared_base
=
(
char
*
)
HeapBaseMin
Address
;
char
*
shared_base
=
(
char
*
)
SharedBase
Address
;
_rs
=
ReservedSpace
(
byte_size
,
0
,
false
,
shared_base
,
0
);
if
(
_rs
.
is_reserved
())
{
assert
(
_rs
.
base
()
==
shared_base
,
"should match"
);
assert
(
shared_base
==
0
||
_rs
.
base
()
==
shared_base
,
"should match"
);
}
else
{
// If we are dumping the heap, then allocate a wasted block of address
// space in order to push the heap to a lower address. This extra
// address range allows for other (or larger) libraries to be loaded
// without them occupying the space required for the shared spaces.
uintx
reserved
=
0
;
uintx
block_size
=
64
*
1024
*
1024
;
while
(
reserved
<
SharedDummyBlockSize
)
{
char
*
dummy
=
os
::
reserve_memory
(
block_size
);
reserved
+=
block_size
;
}
// Get a mmap region anywhere if the SharedBaseAddress fails.
_rs
=
ReservedSpace
(
byte_size
);
}
MetaspaceShared
::
set_shared_rs
(
&
_rs
);
...
...
src/share/vm/prims/jvm.cpp
浏览文件 @
a884225b
...
...
@@ -1457,7 +1457,7 @@ JVM_END
JVM_ENTRY
(
jbyteArray
,
JVM_GetClassAnnotations
(
JNIEnv
*
env
,
jclass
cls
))
assert
(
cls
!=
NULL
,
"illegal class"
);
JVMWrapper
(
"JVM_GetClassAnnotations"
);
ResourceMark
rm
(
THREAD
);
// Return null for arrays and primitives
if
(
!
java_lang_Class
::
is_primitive
(
JNIHandles
::
resolve
(
cls
)))
{
Klass
*
k
=
java_lang_Class
::
as_Klass
(
JNIHandles
::
resolve
(
cls
));
...
...
@@ -1470,20 +1470,15 @@ JVM_ENTRY(jbyteArray, JVM_GetClassAnnotations(JNIEnv *env, jclass cls))
JVM_END
JVM_ENTRY
(
jbyteArray
,
JVM_GetFieldAnnotations
(
JNIEnv
*
env
,
jobject
field
))
assert
(
field
!=
NULL
,
"illegal field"
);
JVMWrapper
(
"JVM_GetFieldAnnotations"
);
static
bool
jvm_get_field_common
(
jobject
field
,
fieldDescriptor
&
fd
,
TRAPS
)
{
// some of this code was adapted from from jni_FromReflectedField
// field is a handle to a java.lang.reflect.Field object
oop
reflected
=
JNIHandles
::
resolve_non_null
(
field
);
oop
mirror
=
java_lang_reflect_Field
::
clazz
(
reflected
);
Klass
*
k
=
java_lang_Class
::
as_Klass
(
mirror
);
int
slot
=
java_lang_reflect_Field
::
slot
(
reflected
);
int
modifiers
=
java_lang_reflect_Field
::
modifiers
(
reflected
);
fieldDescriptor
fd
;
KlassHandle
kh
(
THREAD
,
k
);
intptr_t
offset
=
InstanceKlass
::
cast
(
kh
())
->
field_offset
(
slot
);
...
...
@@ -1491,16 +1486,29 @@ JVM_ENTRY(jbyteArray, JVM_GetFieldAnnotations(JNIEnv *env, jobject field))
// for static fields we only look in the current class
if
(
!
InstanceKlass
::
cast
(
kh
())
->
find_local_field_from_offset
(
offset
,
true
,
&
fd
))
{
assert
(
false
,
"cannot find static field"
);
return
NULL
;
// robustness
return
false
;
}
}
else
{
// for instance fields we start with the current class and work
// our way up through the superclass chain
if
(
!
InstanceKlass
::
cast
(
kh
())
->
find_field_from_offset
(
offset
,
false
,
&
fd
))
{
assert
(
false
,
"cannot find instance field"
);
return
NULL
;
// robustness
return
false
;
}
}
return
true
;
}
JVM_ENTRY
(
jbyteArray
,
JVM_GetFieldAnnotations
(
JNIEnv
*
env
,
jobject
field
))
// field is a handle to a java.lang.reflect.Field object
assert
(
field
!=
NULL
,
"illegal field"
);
JVMWrapper
(
"JVM_GetFieldAnnotations"
);
fieldDescriptor
fd
;
bool
gotFd
=
jvm_get_field_common
(
field
,
fd
,
CHECK_NULL
);
if
(
!
gotFd
)
{
return
NULL
;
}
return
(
jbyteArray
)
JNIHandles
::
make_local
(
env
,
Annotations
::
make_java_array
(
fd
.
annotations
(),
THREAD
));
JVM_END
...
...
@@ -1525,12 +1533,8 @@ static Method* jvm_get_method_common(jobject method) {
Klass
*
k
=
java_lang_Class
::
as_Klass
(
mirror
);
Method
*
m
=
InstanceKlass
::
cast
(
k
)
->
method_with_idnum
(
slot
);
if
(
m
==
NULL
)
{
assert
(
false
,
"cannot find method"
);
return
NULL
;
// robustness
}
return
m
;
assert
(
m
!=
NULL
,
"cannot find method"
);
return
m
;
// caller has to deal with NULL in product mode
}
...
...
@@ -1539,6 +1543,10 @@ JVM_ENTRY(jbyteArray, JVM_GetMethodAnnotations(JNIEnv *env, jobject method))
// method is a handle to a java.lang.reflect.Method object
Method
*
m
=
jvm_get_method_common
(
method
);
if
(
m
==
NULL
)
{
return
NULL
;
}
return
(
jbyteArray
)
JNIHandles
::
make_local
(
env
,
Annotations
::
make_java_array
(
m
->
annotations
(),
THREAD
));
JVM_END
...
...
@@ -1549,6 +1557,10 @@ JVM_ENTRY(jbyteArray, JVM_GetMethodDefaultAnnotationValue(JNIEnv *env, jobject m
// method is a handle to a java.lang.reflect.Method object
Method
*
m
=
jvm_get_method_common
(
method
);
if
(
m
==
NULL
)
{
return
NULL
;
}
return
(
jbyteArray
)
JNIHandles
::
make_local
(
env
,
Annotations
::
make_java_array
(
m
->
annotation_default
(),
THREAD
));
JVM_END
...
...
@@ -1559,6 +1571,10 @@ JVM_ENTRY(jbyteArray, JVM_GetMethodParameterAnnotations(JNIEnv *env, jobject met
// method is a handle to a java.lang.reflect.Method object
Method
*
m
=
jvm_get_method_common
(
method
);
if
(
m
==
NULL
)
{
return
NULL
;
}
return
(
jbyteArray
)
JNIHandles
::
make_local
(
env
,
Annotations
::
make_java_array
(
m
->
parameter_annotations
(),
THREAD
));
JVM_END
...
...
@@ -1583,6 +1599,38 @@ JVM_ENTRY(jbyteArray, JVM_GetClassTypeAnnotations(JNIEnv *env, jclass cls))
return
NULL
;
JVM_END
JVM_ENTRY
(
jbyteArray
,
JVM_GetMethodTypeAnnotations
(
JNIEnv
*
env
,
jobject
method
))
assert
(
method
!=
NULL
,
"illegal method"
);
JVMWrapper
(
"JVM_GetMethodTypeAnnotations"
);
// method is a handle to a java.lang.reflect.Method object
Method
*
m
=
jvm_get_method_common
(
method
);
if
(
m
==
NULL
)
{
return
NULL
;
}
AnnotationArray
*
type_annotations
=
m
->
type_annotations
();
if
(
type_annotations
!=
NULL
)
{
typeArrayOop
a
=
Annotations
::
make_java_array
(
type_annotations
,
CHECK_NULL
);
return
(
jbyteArray
)
JNIHandles
::
make_local
(
env
,
a
);
}
return
NULL
;
JVM_END
JVM_ENTRY
(
jbyteArray
,
JVM_GetFieldTypeAnnotations
(
JNIEnv
*
env
,
jobject
field
))
assert
(
field
!=
NULL
,
"illegal field"
);
JVMWrapper
(
"JVM_GetFieldTypeAnnotations"
);
fieldDescriptor
fd
;
bool
gotFd
=
jvm_get_field_common
(
field
,
fd
,
CHECK_NULL
);
if
(
!
gotFd
)
{
return
NULL
;
}
return
(
jbyteArray
)
JNIHandles
::
make_local
(
env
,
Annotations
::
make_java_array
(
fd
.
type_annotations
(),
THREAD
));
JVM_END
static
void
bounds_check
(
constantPoolHandle
cp
,
jint
index
,
TRAPS
)
{
if
(
!
cp
->
is_within_bounds
(
index
))
{
THROW_MSG
(
vmSymbols
::
java_lang_IllegalArgumentException
(),
"Constant pool index out of bounds"
);
...
...
@@ -1722,7 +1770,7 @@ JVM_ENTRY(jobjectArray, JVM_GetClassDeclaredMethods(JNIEnv *env, jclass ofClass,
int
i
;
for
(
i
=
0
;
i
<
methods_length
;
i
++
)
{
methodHandle
method
(
THREAD
,
methods
->
at
(
i
));
if
(
!
method
->
is_initializer
())
{
if
(
!
method
->
is_initializer
()
&&
!
method
->
is_overpass
()
)
{
if
(
!
publicOnly
||
method
->
is_public
())
{
++
num_methods
;
}
...
...
@@ -1736,7 +1784,7 @@ JVM_ENTRY(jobjectArray, JVM_GetClassDeclaredMethods(JNIEnv *env, jclass ofClass,
int
out_idx
=
0
;
for
(
i
=
0
;
i
<
methods_length
;
i
++
)
{
methodHandle
method
(
THREAD
,
methods
->
at
(
i
));
if
(
!
method
->
is_initializer
())
{
if
(
!
method
->
is_initializer
()
&&
!
method
->
is_overpass
()
)
{
if
(
!
publicOnly
||
method
->
is_public
())
{
oop
m
=
Reflection
::
new_method
(
method
,
UseNewReflection
,
false
,
CHECK_NULL
);
result
->
obj_at_put
(
out_idx
,
m
);
...
...
src/share/vm/prims/jvm.h
浏览文件 @
a884225b
...
...
@@ -523,6 +523,14 @@ JVM_GetMethodParameterAnnotations(JNIEnv *env, jobject method);
JNIEXPORT
jbyteArray
JNICALL
JVM_GetClassTypeAnnotations
(
JNIEnv
*
env
,
jclass
cls
);
// field is a handle to a java.lang.reflect.Field object
JNIEXPORT
jbyteArray
JNICALL
JVM_GetFieldTypeAnnotations
(
JNIEnv
*
env
,
jobject
field
);
// method is a handle to a java.lang.reflect.Method object
JNIEXPORT
jbyteArray
JNICALL
JVM_GetMethodTypeAnnotations
(
JNIEnv
*
env
,
jobject
method
);
/*
* New (JDK 1.4) reflection implementation
*/
...
...
src/share/vm/runtime/arguments.cpp
浏览文件 @
a884225b
...
...
@@ -260,6 +260,7 @@ static ObsoleteFlag obsolete_jvm_flags[] = {
{
"CMSRevisitStackSize"
,
JDK_Version
::
jdk
(
8
),
JDK_Version
::
jdk
(
9
)
},
{
"PrintRevisitStats"
,
JDK_Version
::
jdk
(
8
),
JDK_Version
::
jdk
(
9
)
},
{
"UseVectoredExceptions"
,
JDK_Version
::
jdk
(
8
),
JDK_Version
::
jdk
(
9
)
},
{
"UseSplitVerifier"
,
JDK_Version
::
jdk
(
8
),
JDK_Version
::
jdk
(
9
)
},
#ifdef PRODUCT
{
"DesiredMethodLimit"
,
JDK_Version
::
jdk_update
(
7
,
2
),
JDK_Version
::
jdk
(
8
)
},
...
...
src/share/vm/runtime/globals.hpp
浏览文件 @
a884225b
...
...
@@ -679,9 +679,6 @@ class CommandLineFlags {
product(bool, UseCompilerSafepoints, true, \
"Stop at safepoints in compiled code") \
\
product(bool, UseSplitVerifier, true, \
"use split verifier with StackMapTable attributes") \
\
product(bool, FailOverToOldVerifier, true, \
"fail over to old verifier when split verifier fails") \
\
...
...
@@ -869,6 +866,11 @@ class CommandLineFlags {
diagnostic(bool, PrintNMTStatistics, false, \
"Print native memory tracking summary data if it is on") \
\
diagnostic(bool, AutoShutdownNMT, true, \
"Automatically shutdown native memory tracking under stress " \
"situation. When set to false, native memory tracking tries to " \
"stay alive at the expense of JVM performance") \
\
diagnostic(bool, LogCompilation, false, \
"Log compilation activity in detail to hotspot.log or LogFile") \
\
...
...
@@ -2913,6 +2915,10 @@ class CommandLineFlags {
"if non-zero, start verifying C heap after Nth call to " \
"malloc/realloc/free") \
\
diagnostic(uintx, MallocMaxTestWords, 0, \
"if non-zero, max # of Words that malloc/realloc can allocate " \
"(for testing only)") \
\
product(intx, TypeProfileWidth, 2, \
"number of receiver types to record in call/cast profile") \
\
...
...
@@ -3577,8 +3583,9 @@ class CommandLineFlags {
product(uintx, SharedMiscCodeSize, 120*K, \
"Size of the shared miscellaneous code area (in bytes)") \
\
product(uintx, SharedDummyBlockSize, 0, \
"Size of dummy block used to shift heap addresses (in bytes)") \
product(uintx, SharedBaseAddress, LP64_ONLY(32*G) \
NOT_LP64(LINUX_ONLY(2*G) NOT_LINUX(0)), \
"Address to allocate shared memory region for class data") \
\
diagnostic(bool, EnableInvokeDynamic, true, \
"support JSR 292 (method handles, invokedynamic, " \
...
...
src/share/vm/runtime/os.cpp
浏览文件 @
a884225b
/*
* Copyright (c) 1997, 201
2
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1997, 201
3
, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
...
...
@@ -80,6 +80,8 @@ julong os::num_frees = 0; // # of calls to free
julong
os
::
free_bytes
=
0
;
// # of bytes freed
#endif
static
juint
cur_malloc_words
=
0
;
// current size for MallocMaxTestWords
void
os_init_globals
()
{
// Called from init_globals().
// See Threads::create_vm() in thread.cpp, and init.cpp.
...
...
@@ -570,6 +572,26 @@ void verify_block(void* memblock) {
}
#endif
//
// This function supports testing of the malloc out of memory
// condition without really running the system out of memory.
//
static
u_char
*
testMalloc
(
size_t
alloc_size
)
{
assert
(
MallocMaxTestWords
>
0
,
"sanity check"
);
if
((
cur_malloc_words
+
(
alloc_size
/
BytesPerWord
))
>
MallocMaxTestWords
)
{
return
NULL
;
}
u_char
*
ptr
=
(
u_char
*
)
::
malloc
(
alloc_size
);
if
(
ptr
!=
NULL
)
{
Atomic
::
add
(((
jint
)
(
alloc_size
/
BytesPerWord
)),
(
volatile
jint
*
)
&
cur_malloc_words
);
}
return
ptr
;
}
void
*
os
::
malloc
(
size_t
size
,
MEMFLAGS
memflags
,
address
caller
)
{
NOT_PRODUCT
(
inc_stat_counter
(
&
num_mallocs
,
1
));
NOT_PRODUCT
(
inc_stat_counter
(
&
alloc_bytes
,
size
));
...
...
@@ -579,11 +601,22 @@ void* os::malloc(size_t size, MEMFLAGS memflags, address caller) {
// if NULL is returned the calling functions assume out of memory.
size
=
1
;
}
if
(
size
>
size
+
space_before
+
space_after
)
{
// Check for rollover.
const
size_t
alloc_size
=
size
+
space_before
+
space_after
;
if
(
size
>
alloc_size
)
{
// Check for rollover.
return
NULL
;
}
NOT_PRODUCT
(
if
(
MallocVerifyInterval
>
0
)
check_heap
());
u_char
*
ptr
=
(
u_char
*
)
::
malloc
(
size
+
space_before
+
space_after
);
u_char
*
ptr
;
if
(
MallocMaxTestWords
>
0
)
{
ptr
=
testMalloc
(
alloc_size
);
}
else
{
ptr
=
(
u_char
*
)
::
malloc
(
alloc_size
);
}
#ifdef ASSERT
if
(
ptr
==
NULL
)
return
NULL
;
...
...
src/share/vm/services/memTracker.cpp
浏览文件 @
a884225b
...
...
@@ -68,6 +68,7 @@ int MemTracker::_thread_count = 255;
volatile
jint
MemTracker
::
_pooled_recorder_count
=
0
;
volatile
unsigned
long
MemTracker
::
_processing_generation
=
0
;
volatile
bool
MemTracker
::
_worker_thread_idle
=
false
;
volatile
bool
MemTracker
::
_slowdown_calling_thread
=
false
;
debug_only
(
intx
MemTracker
::
_main_thread_tid
=
0
;)
NOT_PRODUCT
(
volatile
jint
MemTracker
::
_pending_recorder_count
=
0
;)
...
...
@@ -364,6 +365,12 @@ void MemTracker::create_memory_record(address addr, MEMFLAGS flags,
}
if
(
thread
!=
NULL
)
{
// slow down all calling threads except NMT worker thread, so it
// can catch up.
if
(
_slowdown_calling_thread
&&
thread
!=
_worker_thread
)
{
os
::
yield_all
();
}
if
(
thread
->
is_Java_thread
()
&&
((
JavaThread
*
)
thread
)
->
is_safepoint_visible
())
{
JavaThread
*
java_thread
=
(
JavaThread
*
)
thread
;
JavaThreadState
state
=
java_thread
->
thread_state
();
...
...
@@ -442,6 +449,7 @@ void MemTracker::enqueue_pending_recorder(MemRecorder* rec) {
#define MAX_SAFEPOINTS_TO_SKIP 128
#define SAFE_SEQUENCE_THRESHOLD 30
#define HIGH_GENERATION_THRESHOLD 60
#define MAX_RECORDER_THREAD_RATIO 30
void
MemTracker
::
sync
()
{
assert
(
_tracking_level
>
NMT_off
,
"NMT is not enabled"
);
...
...
@@ -487,6 +495,13 @@ void MemTracker::sync() {
pending_recorders
=
_global_recorder
;
_global_recorder
=
NULL
;
}
// see if NMT has too many outstanding recorder instances, it usually
// means that worker thread is lagging behind in processing them.
if
(
!
AutoShutdownNMT
)
{
_slowdown_calling_thread
=
(
MemRecorder
::
_instance_count
>
MAX_RECORDER_THREAD_RATIO
*
_thread_count
);
}
// check _worker_thread with lock to avoid racing condition
if
(
_worker_thread
!=
NULL
)
{
_worker_thread
->
at_sync_point
(
pending_recorders
,
InstanceKlass
::
number_of_instance_classes
());
...
...
src/share/vm/services/memTracker.hpp
浏览文件 @
a884225b
...
...
@@ -84,6 +84,7 @@ class MemTracker : AllStatic {
static
inline
bool
baseline
()
{
return
false
;
}
static
inline
bool
has_baseline
()
{
return
false
;
}
static
inline
void
set_autoShutdown
(
bool
value
)
{
}
static
void
shutdown
(
ShutdownReason
reason
)
{
}
static
inline
bool
shutdown_in_progress
()
{
}
static
bool
print_memory_usage
(
BaselineOutputer
&
out
,
size_t
unit
,
...
...
@@ -238,6 +239,16 @@ class MemTracker : AllStatic {
// if native memory tracking tracks callsite
static
inline
bool
track_callsite
()
{
return
_tracking_level
==
NMT_detail
;
}
// NMT automatically shuts itself down under extreme situation by default.
// When the value is set to false, NMT will try its best to stay alive,
// even it has to slow down VM.
static
inline
void
set_autoShutdown
(
bool
value
)
{
AutoShutdownNMT
=
value
;
if
(
AutoShutdownNMT
&&
_slowdown_calling_thread
)
{
_slowdown_calling_thread
=
false
;
}
}
// shutdown native memory tracking capability. Native memory tracking
// can be shutdown by VM when it encounters low memory scenarios.
// Memory tracker should gracefully shutdown itself, and preserve the
...
...
@@ -507,6 +518,10 @@ class MemTracker : AllStatic {
// although NMT is still procesing current generation, but
// there is not more recorder to process, set idle state
static
volatile
bool
_worker_thread_idle
;
// if NMT should slow down calling thread to allow
// worker thread to catch up
static
volatile
bool
_slowdown_calling_thread
;
};
#endif // !INCLUDE_NMT
...
...
src/share/vm/services/nmtDCmd.cpp
浏览文件 @
a884225b
...
...
@@ -49,6 +49,9 @@ NMTDCmd::NMTDCmd(outputStream* output,
_shutdown
(
"shutdown"
,
"request runtime to shutdown itself and free the "
\
"memory used by runtime."
,
"BOOLEAN"
,
false
,
"false"
),
_auto_shutdown
(
"autoShutdown"
,
"automatically shutdown itself under "
\
"stress situation"
,
"BOOLEAN"
,
true
,
"true"
),
#ifndef PRODUCT
_debug
(
"debug"
,
"print tracker statistics. Debug only, not thread safe"
,
\
"BOOLEAN"
,
false
,
"false"
),
...
...
@@ -61,6 +64,7 @@ NMTDCmd::NMTDCmd(outputStream* output,
_dcmdparser
.
add_dcmd_option
(
&
_summary_diff
);
_dcmdparser
.
add_dcmd_option
(
&
_detail_diff
);
_dcmdparser
.
add_dcmd_option
(
&
_shutdown
);
_dcmdparser
.
add_dcmd_option
(
&
_auto_shutdown
);
#ifndef PRODUCT
_dcmdparser
.
add_dcmd_option
(
&
_debug
);
#endif
...
...
@@ -84,17 +88,19 @@ void NMTDCmd::execute(TRAPS) {
}
int
nopt
=
0
;
if
(
_summary
.
is_set
()
&&
_summary
.
value
())
{
++
nopt
;
}
if
(
_detail
.
is_set
()
&&
_detail
.
value
())
{
++
nopt
;
}
if
(
_baseline
.
is_set
()
&&
_baseline
.
value
())
{
++
nopt
;
}
if
(
_summary_diff
.
is_set
()
&&
_summary_diff
.
value
())
{
++
nopt
;
}
if
(
_detail_diff
.
is_set
()
&&
_detail_diff
.
value
())
{
++
nopt
;
}
if
(
_shutdown
.
is_set
()
&&
_shutdown
.
value
())
{
++
nopt
;
}
if
(
_summary
.
is_set
()
&&
_summary
.
value
())
{
++
nopt
;
}
if
(
_detail
.
is_set
()
&&
_detail
.
value
())
{
++
nopt
;
}
if
(
_baseline
.
is_set
()
&&
_baseline
.
value
())
{
++
nopt
;
}
if
(
_summary_diff
.
is_set
()
&&
_summary_diff
.
value
())
{
++
nopt
;
}
if
(
_detail_diff
.
is_set
()
&&
_detail_diff
.
value
())
{
++
nopt
;
}
if
(
_shutdown
.
is_set
()
&&
_shutdown
.
value
())
{
++
nopt
;
}
if
(
_auto_shutdown
.
is_set
())
{
++
nopt
;
}
#ifndef PRODUCT
if
(
_debug
.
is_set
()
&&
_debug
.
value
())
{
++
nopt
;
}
if
(
_debug
.
is_set
()
&&
_debug
.
value
())
{
++
nopt
;
}
#endif
if
(
nopt
>
1
)
{
if
(
nopt
>
1
)
{
output
()
->
print_cr
(
"At most one of the following option can be specified: "
\
"summary, detail, baseline, summary.diff, detail.diff, shutdown"
#ifndef PRODUCT
...
...
@@ -156,6 +162,8 @@ void NMTDCmd::execute(TRAPS) {
MemTracker
::
shutdown
(
MemTracker
::
NMT_shutdown_user
);
output
()
->
print_cr
(
"Shutdown is in progress, it will take a few moments to "
\
"completely shutdown"
);
}
else
if
(
_auto_shutdown
.
is_set
())
{
MemTracker
::
set_autoShutdown
(
_auto_shutdown
.
value
());
}
else
{
ShouldNotReachHere
();
output
()
->
print_cr
(
"Unknown command"
);
...
...
src/share/vm/services/nmtDCmd.hpp
浏览文件 @
a884225b
...
...
@@ -39,6 +39,7 @@ class NMTDCmd: public DCmdWithParser {
DCmdArgument
<
bool
>
_summary_diff
;
DCmdArgument
<
bool
>
_detail_diff
;
DCmdArgument
<
bool
>
_shutdown
;
DCmdArgument
<
bool
>
_auto_shutdown
;
#ifndef PRODUCT
DCmdArgument
<
bool
>
_debug
;
#endif
...
...
test/compiler/5091921/Test6890943.sh
浏览文件 @
a884225b
...
...
@@ -22,26 +22,16 @@
# questions.
#
#
## some tests require path to find test source dir
if
[
"
${
TESTSRC
}
"
=
""
]
then
echo
"TESTSRC not set. Test cannot execute. Failed."
e
xit
1
TESTSRC
=
${
PWD
}
e
cho
"TESTSRC not set. Using "
${
TESTSRC
}
" as default"
fi
echo
"TESTSRC=
${
TESTSRC
}
"
if
[
"
${
TESTJAVA
}
"
=
""
]
then
echo
"TESTJAVA not set. Test cannot execute. Failed."
exit
1
fi
echo
"TESTJAVA=
${
TESTJAVA
}
"
if
[
"
${
TESTCLASSES
}
"
=
""
]
then
echo
"TESTCLASSES not set. Test cannot execute. Failed."
exit
1
fi
echo
"TESTCLASSES=
${
TESTCLASSES
}
"
echo
"CLASSPATH=
${
CLASSPATH
}
"
## Adding common setup Variables for running shell tests.
.
${
TESTSRC
}
/../../test_env.sh
set
-x
...
...
@@ -50,7 +40,7 @@ cp ${TESTSRC}/input6890943.txt .
cp
${
TESTSRC
}
/output6890943.txt
.
cp
${
TESTSRC
}
/Test6890943.sh
.
${
TESTJAVA
}
/bin/javac
-d
.
Test6890943.java
${
COMPILEJAVA
}
/bin/javac
${
TESTJAVACOPTS
}
-d
.
Test6890943.java
${
TESTJAVA
}
/bin/java
-XX
:-PrintVMOptions
-XX
:+IgnoreUnrecognizedVMOptions
${
TESTVMOPTS
}
Test6890943 < input6890943.txt
>
pretest.out 2>&1
...
...
test/compiler/5091921/Test7005594.sh
浏览文件 @
a884225b
...
...
@@ -22,26 +22,15 @@
# questions.
#
#
## some tests require path to find test source dir
if
[
"
${
TESTSRC
}
"
=
""
]
then
echo
"TESTSRC not set. Test cannot execute. Failed."
e
xit
1
TESTSRC
=
${
PWD
}
e
cho
"TESTSRC not set. Using "
${
TESTSRC
}
" as default"
fi
echo
"TESTSRC=
${
TESTSRC
}
"
if
[
"
${
TESTJAVA
}
"
=
""
]
then
echo
"TESTJAVA not set. Test cannot execute. Failed."
exit
1
fi
echo
"TESTJAVA=
${
TESTJAVA
}
"
if
[
"
${
TESTCLASSES
}
"
=
""
]
then
echo
"TESTCLASSES not set. Test cannot execute. Failed."
exit
1
fi
echo
"TESTCLASSES=
${
TESTCLASSES
}
"
echo
"CLASSPATH=
${
CLASSPATH
}
"
## Adding common setup Variables for running shell tests.
.
${
TESTSRC
}
/../../test_env.sh
# Amount of physical memory in megabytes
MEM
=
0
...
...
@@ -87,7 +76,7 @@ set -x
cp
${
TESTSRC
}
/Test7005594.java
.
cp
${
TESTSRC
}
/Test7005594.sh
.
${
TESTJAVA
}
/bin/javac
-d
.
Test7005594.java
${
COMPILEJAVA
}
/bin/javac
${
TESTJAVACOPTS
}
-d
.
Test7005594.java
${
TESTJAVA
}
/bin/java
${
TESTVMOPTS
}
-Xms1600m
-XX
:+IgnoreUnrecognizedVMOptions
-XX
:-ZapUnusedHeapArea
-Xcomp
-XX
:CompileOnly
=
Test7005594.test Test7005594
>
test.out 2>&1
...
...
test/compiler/6857159/Test6857159.sh
浏览文件 @
a884225b
...
...
@@ -22,33 +22,22 @@
# questions.
#
#
## some tests require path to find test source dir
if
[
"
${
TESTSRC
}
"
=
""
]
then
echo
"TESTSRC not set. Test cannot execute. Failed."
e
xit
1
TESTSRC
=
${
PWD
}
e
cho
"TESTSRC not set. Using "
${
TESTSRC
}
" as default"
fi
echo
"TESTSRC=
${
TESTSRC
}
"
if
[
"
${
TESTJAVA
}
"
=
""
]
then
echo
"TESTJAVA not set. Test cannot execute. Failed."
exit
1
fi
echo
"TESTJAVA=
${
TESTJAVA
}
"
if
[
"
${
TESTCLASSES
}
"
=
""
]
then
echo
"TESTCLASSES not set. Test cannot execute. Failed."
exit
1
fi
echo
"TESTCLASSES=
${
TESTCLASSES
}
"
echo
"CLASSPATH=
${
CLASSPATH
}
"
## Adding common setup Variables for running shell tests.
.
${
TESTSRC
}
/../../test_env.sh
set
-x
cp
${
TESTSRC
}
/Test6857159.java
.
cp
${
TESTSRC
}
/Test6857159.sh
.
${
TESTJAVA
}
/bin/javac
-d
.
Test6857159.java
${
COMPILEJAVA
}
/bin/javac
${
TESTJAVACOPTS
}
-d
.
Test6857159.java
${
TESTJAVA
}
/bin/java
${
TESTVMOPTS
}
-Xbatch
-XX
:+PrintCompilation
-XX
:CompileOnly
=
Test6857159
\$
ct.run Test6857159
>
test.out 2>&1
...
...
test/compiler/7068051/Test7068051.sh
浏览文件 @
a884225b
...
...
@@ -22,28 +22,24 @@
# questions.
#
#
## some tests require path to find test source dir
if
[
"
${
TESTSRC
}
"
=
""
]
then
echo
"TESTSRC not set. Test cannot execute. Failed."
e
xit
1
TESTSRC
=
${
PWD
}
e
cho
"TESTSRC not set. Using "
${
TESTSRC
}
" as default"
fi
echo
"TESTSRC=
${
TESTSRC
}
"
if
[
"
${
TESTJAVA
}
"
=
""
]
then
echo
"TESTJAVA not set. Test cannot execute. Failed."
exit
1
fi
echo
"TESTJAVA=
${
TESTJAVA
}
"
## Adding common setup Variables for running shell tests.
.
${
TESTSRC
}
/../../test_env.sh
set
-x
${
TESTJAVA
}
/bin/jar xf
${
TEST
JAVA
}
/jre/lib/javaws.jar
${
TEST
JAVA
}
/bin/jar cf foo.jar
*
${
COMPILEJAVA
}
/bin/jar xf
${
COMPILE
JAVA
}
/jre/lib/javaws.jar
${
COMPILE
JAVA
}
/bin/jar cf foo.jar
*
cp
${
TESTSRC
}
/Test7068051.java ./
${
TEST
JAVA
}
/bin/jar
-uf0
foo.jar Test7068051.java
${
COMPILE
JAVA
}
/bin/jar
-uf0
foo.jar Test7068051.java
${
TESTJAVA
}
/bin/javac
-d
.
Test7068051.java
${
COMPILEJAVA
}
/bin/javac
${
TESTJAVACOPTS
}
-d
.
Test7068051.java
${
TESTJAVA
}
/bin/java
${
TESTVMOPTS
}
-showversion
-Xbatch
Test7068051 foo.jar
test/compiler/7070134/Test7070134.sh
浏览文件 @
a884225b
...
...
@@ -22,33 +22,22 @@
# questions.
#
#
## some tests require path to find test source dir
if
[
"
${
TESTSRC
}
"
=
""
]
then
echo
"TESTSRC not set. Test cannot execute. Failed."
e
xit
1
TESTSRC
=
${
PWD
}
e
cho
"TESTSRC not set. Using "
${
TESTSRC
}
" as default"
fi
echo
"TESTSRC=
${
TESTSRC
}
"
if
[
"
${
TESTJAVA
}
"
=
""
]
then
echo
"TESTJAVA not set. Test cannot execute. Failed."
exit
1
fi
echo
"TESTJAVA=
${
TESTJAVA
}
"
if
[
"
${
TESTCLASSES
}
"
=
""
]
then
echo
"TESTCLASSES not set. Test cannot execute. Failed."
exit
1
fi
echo
"TESTCLASSES=
${
TESTCLASSES
}
"
echo
"CLASSPATH=
${
CLASSPATH
}
"
## Adding common setup Variables for running shell tests.
.
${
TESTSRC
}
/../../test_env.sh
set
-x
cp
${
TESTSRC
}
/Stemmer.java
.
cp
${
TESTSRC
}
/words
.
${
TESTJAVA
}
/bin/javac
-d
.
Stemmer.java
${
COMPILEJAVA
}
/bin/javac
${
TESTJAVACOPTS
}
-d
.
Stemmer.java
${
TESTJAVA
}
/bin/java
${
TESTVMOPTS
}
-Xbatch
Stemmer words
>
test.out 2>&1
...
...
test/compiler/7200264/Test7200264.sh
浏览文件 @
a884225b
...
...
@@ -23,50 +23,15 @@
#
#
## some tests require path to find test source dir
if
[
"
${
TESTSRC
}
"
=
""
]
then
echo
"TESTSRC not set. Test cannot execute. Failed."
e
xit
1
TESTSRC
=
${
PWD
}
e
cho
"TESTSRC not set. Using "
${
TESTSRC
}
" as default"
fi
echo
"TESTSRC=
${
TESTSRC
}
"
if
[
"
${
TESTJAVA
}
"
=
""
]
then
echo
"TESTJAVA not set. Test cannot execute. Failed."
exit
1
fi
echo
"TESTJAVA=
${
TESTJAVA
}
"
if
[
"
${
TESTCLASSES
}
"
=
""
]
then
echo
"TESTCLASSES not set. Test cannot execute. Failed."
exit
1
fi
echo
"TESTCLASSES=
${
TESTCLASSES
}
"
echo
"CLASSPATH=
${
CLASSPATH
}
"
# set platform-dependent variables
OS
=
`
uname
-s
`
case
"
$OS
"
in
SunOS
|
Linux
|
Darwin
)
NULL
=
/dev/null
PS
=
":"
FS
=
"/"
;;
Windows_
*
)
NULL
=
NUL
PS
=
";"
FS
=
"
\\
"
;;
CYGWIN_
*
)
NULL
=
/dev/null
PS
=
";"
FS
=
"/"
;;
*
)
echo
"Unrecognized system!"
exit
1
;
;;
esac
## Adding common setup Variables for running shell tests.
.
${
TESTSRC
}
/../../test_env.sh
${
TESTJAVA
}${
FS
}
bin
${
FS
}
java
${
TESTVMOPTS
}
-Xinternalversion
|
sed
's/amd64/x86/'
|
grep
"x86"
|
grep
"Server VM"
|
grep
"debug"
...
...
@@ -88,7 +53,7 @@ else
fi
cp
${
TESTSRC
}${
FS
}
TestIntVect.java
.
${
TESTJAVA
}${
FS
}
bin
${
FS
}
javac
-d
.
TestIntVect.java
${
COMPILEJAVA
}${
FS
}
bin
${
FS
}
javac
${
TESTJAVACOPTS
}
-d
.
TestIntVect.java
${
TESTJAVA
}${
FS
}
bin
${
FS
}
java
${
TESTVMOPTS
}
-Xbatch
-XX
:-TieredCompilation
-XX
:CICompilerCount
=
1
-XX
:+PrintCompilation
-XX
:+TraceNewVectors TestIntVect
>
test.out 2>&1
...
...
test/gc/6941923/test6941923.sh
浏览文件 @
a884225b
...
...
@@ -5,38 +5,25 @@
## @author yqi
## @run shell test6941923.sh
##
## some tests require path to find test source dir
if
[
"
${
TESTSRC
}
"
=
""
]
then
TESTSRC
=
${
PWD
}
echo
"TESTSRC not set. Using "
${
TESTSRC
}
" as default"
fi
echo
"TESTSRC=
${
TESTSRC
}
"
## Adding common setup Variables for running shell tests.
.
${
TESTSRC
}
/../../test_env.sh
## skip on windows
OS
=
`
uname
-s
`
case
"
$OS
"
in
SunOS
|
Linux
|
Darwin
)
NULL
=
/dev/null
PS
=
":"
FS
=
"/"
;;
Windows_
*
|
CYGWIN_
*
)
echo
"Test skipped for Windows"
exit
0
;;
*
)
echo
"Unrecognized system!"
exit
1
;
;;
esac
if
[
"
${
JAVA_HOME
}
"
=
""
]
then
echo
"JAVA_HOME not set"
exit
0
fi
$JAVA_HOME
/bin/java
${
TESTVMOPTS
}
-version
>
$NULL
2>&1
if
[
$?
!=
0
]
;
then
echo
"Wrong JAVA_HOME? JAVA_HOME:
$JAVA_HOME
"
exit
$?
fi
# create a small test case
testname
=
"Test"
if
[
-e
${
testname
}
.java
]
;
then
...
...
@@ -96,10 +83,10 @@ msgsuccess="succeeded"
msgfail
=
"failed"
gclogsize
=
"16K"
filesize
=
$((
16
*
1024
))
$
JAVA_HOME
/bin/javac
${
testname
}
.java
>
$NULL
2>&1
$
{
COMPILEJAVA
}
/bin/javac
${
TESTJAVACOPTS
}
${
testname
}
.java
>
$NULL
2>&1
if
[
$?
!=
0
]
;
then
echo
"
$
JAVA_HOME
/bin/javac
${
testname
}
.java
$fail
"
echo
"
$
{
COMPILEJAVA
}
/bin/javac
${
testname
}
.java
$fail
"
exit
-1
fi
...
...
@@ -119,7 +106,7 @@ fi
options
=
"-Xloggc:
$logfile
-XX:+UseConcMarkSweepGC -XX:+PrintGC -XX:+PrintGCDetails -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=1 -XX:GCLogFileSize=
$gclogsize
"
echo
"Test gc log rotation in same file, wait for
$tts
minutes ...."
$
JAVA_HOME
/bin/java
${
TESTVMOPTS
}
$options
$testname
$tts
$
{
TESTJAVA
}
/bin/java
$options
$testname
$tts
if
[
$?
!=
0
]
;
then
echo
"
$msgfail
"
exit
-1
...
...
@@ -148,7 +135,7 @@ fi
numoffiles
=
3
options
=
"-Xloggc:
$logfile
-XX:+UseConcMarkSweepGC -XX:+PrintGC -XX:+PrintGCDetails -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=
$numoffiles
-XX:GCLogFileSize=
$gclogsize
"
echo
"Test gc log rotation in
$numoffiles
files, wait for
$tts
minutes ...."
$
JAVA_HOME
/bin/java
${
TESTVMOPTS
}
$options
$testname
$tts
$
{
TESTJAVA
}
/bin/java
$options
$testname
$tts
if
[
$?
!=
0
]
;
then
echo
"
$msgfail
"
exit
-1
...
...
test/runtime/6626217/Test6626217.sh
浏览文件 @
a884225b
...
...
@@ -27,78 +27,29 @@
# @summary Loader-constraint table allows arrays instead of only the base-classes
# @run shell Test6626217.sh
#
## some tests require path to find test source dir
if
[
"
${
TESTSRC
}
"
=
""
]
then
TESTSRC
=
.
fi
if
[
"
${
TESTJAVA
}
"
=
""
]
then
PARENT
=
`
dirname
\`
which java
\`
`
TESTJAVA
=
`
dirname
${
PARENT
}
`
echo
"TESTJAVA not set, selecting "
${
TESTJAVA
}
echo
"If this is incorrect, try setting the variable manually."
fi
if
[
"
${
TESTCLASSES
}
"
=
""
]
then
echo
"TESTCLASSES not set. Test cannot execute. Failed."
e
xit
1
TESTSRC
=
${
PWD
}
e
cho
"TESTSRC not set. Using "
${
TESTSRC
}
" as default"
fi
# set platform-dependent variables
OS
=
`
uname
-s
`
case
"
$OS
"
in
SunOS
|
Linux
|
Darwin
)
NULL
=
/dev/null
PS
=
":"
FS
=
"/"
RM
=
/bin/rm
CP
=
/bin/cp
MV
=
/bin/mv
;;
Windows_
*
)
NULL
=
NUL
PS
=
";"
FS
=
"
\\
"
RM
=
rm
CP
=
cp
MV
=
mv
;;
CYGWIN_
*
)
NULL
=
/dev/null
PS
=
";"
FS
=
"/"
RM
=
rm
CP
=
cp
MV
=
mv
;;
*
)
echo
"Unrecognized system!"
exit
1
;
;;
esac
JEMMYPATH
=
${
CPAPPEND
}
CLASSPATH
=
.
${
PS
}${
TESTCLASSES
}${
PS
}${
JEMMYPATH
}
;
export
CLASSPATH
THIS_DIR
=
`
pwd
`
echo
"TESTSRC=
${
TESTSRC
}
"
## Adding common setup Variables for running shell tests.
.
${
TESTSRC
}
/../../test_env.sh
JAVA
=
${
TESTJAVA
}${
FS
}
bin
${
FS
}
java
JAVAC
=
${
TESTJAVA
}${
FS
}
bin
${
FS
}
javac
${
JAVA
}
${
TESTVMOPTS
}
-version
JAVAC
=
${
COMPILEJAVA
}${
FS
}
bin
${
FS
}
javac
# Current directory is scratch directory, copy all the test source there
# (for the subsequent moves to work).
${
CP
}
${
TESTSRC
}${
FS
}*
${
THIS_DIR
}
${
CP
}
${
TESTSRC
}${
FS
}*
${
THIS_DIR
}
# A Clean Compile: this line will probably fail within jtreg as have a clean dir:
${
RM
}
-f
*
.class
*
.impl many_loader.java
# Compile all the usual suspects, including the default 'many_loader'
${
CP
}
many_loader1.java.foo many_loader.java
${
JAVAC
}
-source
1.4
-target
1.4
-Xlint
*
.java
${
JAVAC
}
${
TESTJAVACOPTS
}
-source
1.4
-target
1.4
-Xlint
*
.java
# Rename the class files, so the custom loader (and not the system loader) will find it
${
MV
}
from_loader2.class from_loader2.impl2
...
...
@@ -106,7 +57,7 @@ ${MV} from_loader2.class from_loader2.impl2
# Compile the next version of 'many_loader'
${
MV
}
many_loader.class many_loader.impl1
${
CP
}
many_loader2.java.foo many_loader.java
${
JAVAC
}
-source
1.4
-target
1.4
-Xlint
many_loader.java
${
JAVAC
}
${
TESTJAVACOPTS
}
-source
1.4
-target
1.4
-Xlint
many_loader.java
# Rename the class file, so the custom loader (and not the system loader) will find it
${
MV
}
many_loader.class many_loader.impl2
...
...
test/runtime/6878713/Test6878713.sh
浏览文件 @
a884225b
#!/bin/sh
#
# Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 2 only, as
# published by the Free Software Foundation.
#
# This code is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
# version 2 for more details (a copy is included in the LICENSE file that
# accompanied this code).
#
# You should have received a copy of the GNU General Public License version
# 2 along with this work; if not, write to the Free Software Foundation,
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
#
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
# or visit www.oracle.com if you need additional information or have any
# questions.
#
##
## @test
## @bug 6878713
## @bug 7030610
## @bug 7037122
## @bug 7123945
## @summary Verifier heap corruption, relating to backward jsrs
## @run shell
/timeout=120
Test6878713.sh
## @run shell Test6878713.sh
##
## some tests require path to find test source dir
if
[
"
${
TESTSRC
}
"
=
""
]
then
TESTSRC
=
.
fi
if
[
"
${
TESTJAVA
}
"
=
""
]
then
PARENT
=
`
dirname
\`
which java
\`
`
TESTJAVA
=
`
dirname
${
PARENT
}
`
echo
"TESTJAVA not set, selecting "
${
TESTJAVA
}
echo
"If this is incorrect, try setting the variable manually."
TESTSRC
=
${
PWD
}
echo
"TESTSRC not set. Using "
${
TESTSRC
}
" as default"
fi
echo
"TESTSRC=
${
TESTSRC
}
"
## Adding common setup Variables for running shell tests.
.
${
TESTSRC
}
/../../test_env.sh
if
[
"
${
TESTCLASSES
}
"
=
""
]
then
echo
"TESTCLASSES not set. Test cannot execute. Failed."
exit
1
fi
TARGET_CLASS
=
OOMCrashClass1960_2
# set platform-dependent variables
OS
=
`
uname
-s
`
case
"
$OS
"
in
SunOS
|
Linux
|
Darwin
)
NULL
=
/dev/null
PS
=
":"
FS
=
"/"
;;
Windows_
*
)
NULL
=
NUL
PS
=
";"
FS
=
"
\\
"
;;
CYGWIN_
*
)
NULL
=
/dev/null
PS
=
";"
FS
=
"/"
;;
*
)
echo
"Unrecognized system!"
exit
1
;
;;
esac
echo
"INFO: extracting the target class."
${
COMPILEJAVA
}${
FS
}
bin
${
FS
}
jar xvf
\
${
TESTSRC
}${
FS
}
testcase.jar
${
TARGET_CLASS
}
.class
JEMMYPATH
=
${
CPAPPEND
}
CLASSPATH
=
.
${
PS
}${
TESTCLASSES
}${
PS
}${
JEMMYPATH
}
;
export
CLASSPATH
# remove any hs_err_pid that might exist here
rm
-f
hs_err_pid
*
.log
THIS_DIR
=
`
pwd
`
echo
"INFO: checking for 32-bit versus 64-bit VM."
${
TESTJAVA
}${
FS
}
bin
${
FS
}
java
${
TESTVMOPTS
}
-version
2>&1
\
|
grep
"64-Bit [^ ][^ ]* VM"
>
/dev/null 2>&1
status
=
"
$?
"
if
[
"
$status
"
=
0
]
;
then
echo
"INFO: testing a 64-bit VM."
is_64_bit
=
true
else
echo
"INFO: testing a 32-bit VM."
fi
${
TESTJAVA
}${
FS
}
bin
${
FS
}
java
${
TESTVMOPTS
}
-version
if
[
"
$is_64_bit
"
=
true
]
;
then
# limit is 768MB in 8-byte words (1024 * 1024 * 768 / 8) == 100663296
MALLOC_MAX
=
100663296
else
# limit is 768MB in 4-byte words (1024 * 1024 * 768 / 4) == 201326592
MALLOC_MAX
=
201326592
fi
echo
"INFO: MALLOC_MAX=
$MALLOC_MAX
"
${
TESTJAVA
}${
FS
}
bin
${
FS
}
jar xvf
${
TESTSRC
}${
FS
}
testcase.jar
echo
"INFO: executing the target class."
# -XX:+PrintCommandLineFlags for debugging purposes
# -XX:+IgnoreUnrecognizedVMOptions so test will run on a VM without
# the new -XX:MallocMaxTestWords option
# -XX:+UnlockDiagnosticVMOptions so we can use -XX:MallocMaxTestWords
# -XX:MallocMaxTestWords limits malloc to $MALLOC_MAX
${
TESTJAVA
}${
FS
}
bin
${
FS
}
java
\
-XX
:+PrintCommandLineFlags
\
-XX
:+IgnoreUnrecognizedVMOptions
\
-XX
:+UnlockDiagnosticVMOptions
\
-XX
:MallocMaxTestWords
=
$MALLOC_MAX
\
${
TESTVMOPTS
}
${
TARGET_CLASS
}
>
test.out 2>&1
${
TESTJAVA
}${
FS
}
bin
${
FS
}
java
${
TESTVMOPTS
}
OOMCrashClass1960_2
>
test.out 2>&1
echo
"INFO: begin contents of test.out:"
cat
test.out
echo
"INFO: end contents of test.out."
if
[
-s
core
-o
-s
"hs_*.log"
]
then
cat
hs
*
.log
echo
"Test Failed"
exit
1
echo
"INFO: checking for memory allocation error message."
# We are looking for this specific memory allocation failure mesg so
# we know we exercised the right allocation path with the test class:
MESG1
=
"Native memory allocation (malloc) failed to allocate 25696531[0-9][0-9] bytes"
grep
"
$MESG1
"
test.out
status
=
"
$?
"
if
[
"
$status
"
=
0
]
;
then
echo
"INFO: found expected memory allocation error message."
else
echo
"Test Passed"
exit
0
echo
"INFO: did not find expected memory allocation error message."
# If we didn't find MESG1 above, then there are several scenarios:
# 1) -XX:MallocMaxTestWords is not supported by the current VM and we
# didn't fail TARGET_CLASS's memory allocation attempt; instead
# we failed to find TARGET_CLASS's main() method. The TARGET_CLASS
# is designed to provoke a memory allocation failure during class
# loading; we actually don't care about running the class which is
# why it doesn't have a main() method.
# 2) we failed a memory allocation, but not the one we were looking
# so it might be that TARGET_CLASS no longer tickles the same
# memory allocation code path
# 3) TARGET_CLASS reproduces the failure mode (SIGSEGV) fixed by
# 6878713 because the test is running on a pre-fix VM.
echo
"INFO: checking for no main() method message."
MESG2
=
"Error: Main method not found in class"
grep
"
$MESG2
"
test.out
status
=
"
$?
"
if
[
"
$status
"
=
0
]
;
then
echo
"INFO: found no main() method message."
else
echo
"FAIL: did not find no main() method message."
# status is non-zero for exit below
if
[
-s
hs_err_pid
*
.log
]
;
then
echo
"INFO: begin contents of hs_err_pid file:"
cat
hs_err_pid
*
.log
echo
"INFO: end contents of hs_err_pid file."
fi
fi
fi
if
[
"
$status
"
=
0
]
;
then
echo
"PASS: test found one of the expected messages."
fi
exit
"
$status
"
test/runtime/6929067/Test6929067.sh
浏览文件 @
a884225b
...
...
@@ -7,18 +7,15 @@
## @compile T.java
## @run shell Test6929067.sh
##
set
-x
if
[
"
${
TESTSRC
}
"
=
""
]
then
TESTSRC
=
.
fi
if
[
"
${
TESTJAVA
}
"
=
""
]
then
PARENT
=
`
dirname
\`
which java
\`
`
TESTJAVA
=
`
dirname
${
PARENT
}
`
echo
"TESTJAVA not set, selecting "
${
TESTJAVA
}
echo
"If this is incorrect, try setting the variable manually."
TESTSRC
=
${
PWD
}
echo
"TESTSRC not set. Using "
${
TESTSRC
}
" as default"
fi
echo
"TESTSRC=
${
TESTSRC
}
"
## Adding common setup Variables for running shell tests.
.
${
TESTSRC
}
/../../test_env.sh
# set platform-dependent variables
OS
=
`
uname
-s
`
...
...
@@ -107,7 +104,7 @@ then
fi
LD_LIBRARY_PATH
=
.:
${
TEST
JAVA
}
/jre/lib/
${
ARCH
}
/
${
VMTYPE
}
:/usr/lib:
$LD_LIBRARY_PATH
LD_LIBRARY_PATH
=
.:
${
COMPILE
JAVA
}
/jre/lib/
${
ARCH
}
/
${
VMTYPE
}
:/usr/lib:
$LD_LIBRARY_PATH
export
LD_LIBRARY_PATH
cp
${
TESTSRC
}${
FS
}
invoke.c
.
...
...
@@ -115,15 +112,16 @@ cp ${TESTSRC}${FS}invoke.c .
# Copy the result of our @compile action:
cp
${
TESTCLASSES
}${
FS
}
T.class
.
${
TESTJAVA
}${
FS
}
bin
${
FS
}
java
${
TESTVMOPTS
}
-fullversion
echo
"Architecture:
${
ARCH
}
"
echo
"Compilation flag:
${
COMP_FLAG
}
"
echo
"VM type:
${
VMTYPE
}
"
# Note pthread may not be found thus invoke creation will fail to be created.
# Check to ensure you have a /usr/lib/libpthread.so if you don't please look
# for /usr/lib/`uname -m`-linux-gnu version ensure to add that path to below compilation.
gcc
-DLINUX
${
COMP_FLAG
}
-o
invoke
\
-I
${
TESTJAVA
}
/include
-I
${
TEST
JAVA
}
/include/linux
\
-L
${
TEST
JAVA
}
/jre/lib/
${
ARCH
}
/
${
VMTYPE
}
\
-I
${
COMPILEJAVA
}
/include
-I
${
COMPILE
JAVA
}
/include/linux
\
-L
${
COMPILE
JAVA
}
/jre/lib/
${
ARCH
}
/
${
VMTYPE
}
\
-ljvm
-lpthread
invoke.c
./invoke
...
...
test/runtime/7020373/Test7020373.sh
浏览文件 @
a884225b
...
...
@@ -10,55 +10,15 @@
##
if
[
"
${
TESTSRC
}
"
=
""
]
then
TESTSRC
=
.
fi
if
[
"
${
TESTJAVA
}
"
=
""
]
then
PARENT
=
`
dirname
\`
which java
\`
`
TESTJAVA
=
`
dirname
${
PARENT
}
`
echo
"TESTJAVA not set, selecting "
${
TESTJAVA
}
echo
"If this is incorrect, try setting the variable manually."
fi
if
[
"
${
TESTCLASSES
}
"
=
""
]
then
echo
"TESTCLASSES not set. Test cannot execute. Failed."
e
xit
1
TESTSRC
=
${
PWD
}
e
cho
"TESTSRC not set. Using "
${
TESTSRC
}
" as default"
fi
echo
"TESTSRC=
${
TESTSRC
}
"
## Adding common setup Variables for running shell tests.
.
${
TESTSRC
}
/../../test_env.sh
# set platform-dependent variables
OS
=
`
uname
-s
`
case
"
$OS
"
in
SunOS
|
Linux
|
Darwin
)
NULL
=
/dev/null
PS
=
":"
FS
=
"/"
;;
Windows_
*
)
NULL
=
NUL
PS
=
";"
FS
=
"
\\
"
;;
CYGWIN_
*
)
NULL
=
/dev/null
PS
=
";"
FS
=
"/"
;;
*
)
echo
"Unrecognized system!"
exit
1
;
;;
esac
JEMMYPATH
=
${
CPAPPEND
}
CLASSPATH
=
.
${
PS
}${
TESTCLASSES
}${
PS
}${
JEMMYPATH
}
;
export
CLASSPATH
THIS_DIR
=
`
pwd
`
${
TESTJAVA
}${
FS
}
bin
${
FS
}
java
${
TESTVMOPTS
}
-version
${
TESTJAVA
}${
FS
}
bin
${
FS
}
jar xvf
${
TESTSRC
}${
FS
}
testcase.jar
${
COMPILEJAVA
}${
FS
}
bin
${
FS
}
jar xvf
${
TESTSRC
}${
FS
}
testcase.jar
${
TESTJAVA
}${
FS
}
bin
${
FS
}
java
${
TESTVMOPTS
}
OOMCrashClass4000_1
>
test.out 2>&1
...
...
test/runtime/7051189/Xchecksig.sh
浏览文件 @
a884225b
...
...
@@ -29,34 +29,22 @@
#
if
[
"
${
TESTSRC
}
"
=
""
]
then
TESTSRC
=
.
fi
if
[
"
${
TESTJAVA
}
"
=
""
]
then
PARENT
=
`
dirname
\`
which java
\`
`
TESTJAVA
=
`
dirname
${
PARENT
}
`
printf
"TESTJAVA not set, selecting "
${
TESTJAVA
}
printf
" If this is incorrect, try setting the variable manually.
\n
"
TESTSRC
=
${
PWD
}
echo
"TESTSRC not set. Using "
${
TESTSRC
}
" as default"
fi
echo
"TESTSRC=
${
TESTSRC
}
"
## Adding common setup Variables for running shell tests.
.
${
TESTSRC
}
/../../test_env.sh
OS
=
`
uname
-s
`
case
"
$OS
"
in
SunOS
|
Linux
|
Darwin
)
FS
=
"/"
;;
Windows_
*
|
CYGWIN_
*
)
printf
"Not testing libjsig.so on Windows. PASSED.
\n
"
exit
0
;;
*
)
printf
"Not testing libjsig.so on unrecognised system. PASSED.
\n
"
exit
0
;;
esac
JAVA
=
${
TESTJAVA
}${
FS
}
bin
${
FS
}
java
# LD_PRELOAD arch needs to match the binary we run, so run the java
...
...
@@ -97,7 +85,7 @@ case $ARCH in
;;
esac
LIBJSIG
=
${
TEST
JAVA
}${
FS
}
jre
${
FS
}
lib
${
FS
}${
ARCH
}${
FS
}
libjsig.so
LIBJSIG
=
${
COMPILE
JAVA
}${
FS
}
jre
${
FS
}
lib
${
FS
}${
ARCH
}${
FS
}
libjsig.so
# If libjsig and binary do not match, skip test.
...
...
test/runtime/7107135/Test7107135.sh
浏览文件 @
a884225b
...
...
@@ -32,26 +32,19 @@
##
if
[
"
${
TESTSRC
}
"
=
""
]
then
TESTSRC
=
.
fi
if
[
"
${
TESTJAVA
}
"
=
""
]
then
PARENT
=
`
dirname
\`
which java
\`
`
TESTJAVA
=
`
dirname
${
PARENT
}
`
echo
"TESTJAVA not set, selecting "
${
TESTJAVA
}
echo
"If this is incorrect, try setting the variable manually."
TESTSRC
=
${
PWD
}
echo
"TESTSRC not set. Using "
${
TESTSRC
}
" as default"
fi
BIT_FLAG
=
""
echo
"TESTSRC=
${
TESTSRC
}
"
## Adding common setup Variables for running shell tests.
.
${
TESTSRC
}
/../../test_env.sh
# set platform-dependent variables
OS
=
`
uname
-s
`
case
"
$OS
"
in
Linux
)
NULL
=
/dev/null
PS
=
":"
FS
=
"/"
echo
"Testing on Linux"
;;
*
)
NULL
=
NUL
...
...
@@ -64,7 +57,7 @@ esac
ARCH
=
`
uname
-m
`
THIS_DIR
=
`
pwd
`
THIS_DIR
=
.
cp
${
TESTSRC
}${
FS
}*
.java
${
THIS_DIR
}
${
TESTJAVA
}${
FS
}
bin
${
FS
}
javac
*
.java
...
...
test/runtime/7110720/Test7110720.sh
浏览文件 @
a884225b
...
...
@@ -12,22 +12,13 @@
#
if
[
"
${
TESTSRC
}
"
=
""
]
then
TESTSRC
=
.
fi
if
[
"
${
TESTJAVA
}
"
=
""
]
then
PARENT
=
`
dirname
\`
which java
\`
`
TESTJAVA
=
`
dirname
${
PARENT
}
`
echo
"TESTJAVA not set, selecting "
${
TESTJAVA
}
echo
"If this is incorrect, try setting the variable manually."
fi
if
[
"
${
TESTCLASSES
}
"
=
""
]
then
echo
"TESTCLASSES not set. Test cannot execute. Failed."
e
xit
1
TESTSRC
=
${
PWD
}
e
cho
"TESTSRC not set. Using "
${
TESTSRC
}
" as default"
fi
echo
"TESTSRC=
${
TESTSRC
}
"
## Adding common setup Variables for running shell tests.
.
${
TESTSRC
}
/../../test_env.sh
# Jtreg sets TESTVMOPTS which may include -d64 which is
# required to test a 64-bit JVM on some platforms.
...
...
test/runtime/7158804/Test7158804.sh
浏览文件 @
a884225b
...
...
@@ -10,13 +10,14 @@
## @summary Improve config file parsing
## @run shell Test7158804.sh
##
if
[
"
${
TESTJAVA
}
"
=
""
]
if
[
"
${
TESTSRC
}
"
=
""
]
then
echo
"TESTJAVA not set. Test cannot execute. Failed."
e
xit
1
TESTSRC
=
${
PWD
}
e
cho
"TESTSRC not set. Using "
${
TESTSRC
}
" as default"
fi
echo
"TESTJAVA=
${
TESTJAVA
}
"
echo
"TESTSRC=
${
TESTSRC
}
"
## Adding common setup Variables for running shell tests.
.
${
TESTSRC
}
/../../test_env.sh
rm
-f
.hotspotrc
echo
-XX
:+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
>
.hotspotrc
...
...
test/runtime/7162488/Test7162488.sh
浏览文件 @
a884225b
...
...
@@ -29,27 +29,13 @@
#
if
[
"
${
TESTSRC
}
"
=
""
]
then
TESTSRC
=
.
fi
if
[
"
${
TESTJAVA
}
"
=
""
]
then
PARENT
=
`
dirname
\`
which java
\`
`
TESTJAVA
=
`
dirname
${
PARENT
}
`
printf
"TESTJAVA not set, selecting "
${
TESTJAVA
}
printf
" If this is incorrect, try setting the variable manually.
\n
"
TESTSRC
=
${
PWD
}
echo
"TESTSRC not set. Using "
${
TESTSRC
}
" as default"
fi
# set platform-dependent variables
OS
=
`
uname
-s
`
case
"
$OS
"
in
Windows_
*
)
FS
=
"
\\
"
;;
*
)
FS
=
"/"
;;
esac
echo
"TESTSRC=
${
TESTSRC
}
"
## Adding common setup Variables for running shell tests.
.
${
TESTSRC
}
/../../test_env.sh
JAVA
=
${
TESTJAVA
}${
FS
}
bin
${
FS
}
java
...
...
test/runtime/80
07736/TestStaticIF
.java
→
test/runtime/80
10389/VMThreadDlopen
.java
浏览文件 @
a884225b
...
...
@@ -19,26 +19,26 @@
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*
*/
import
java.io.File
;
/*
* @test
* @
bug 8007736
* @
summary Test static interface method.
* @run main/othervm -
Xverify:all TestStaticIF
* @
key regression
* @
bug 8010389
* @run main/othervm -
Djava.library.path=. VMThreadDlopen
*/
public
class
TestStaticIF
implements
StaticMethodInInterface
{
public
static
void
main
(
String
[]
args
)
{
System
.
out
.
printf
(
"main: %s%n"
,
StaticMethodInInterface
.
get
());
}
}
interface
StaticMethodInInterface
{
public
static
String
get
()
{
return
"Hello from StaticMethodInInterface.get()"
;
public
class
VMThreadDlopen
{
public
static
void
main
(
String
[]
args
)
throws
Exception
{
File
file
=
new
File
(
"libbroken.so"
);
file
.
createNewFile
();
try
{
System
.
loadLibrary
(
"broken"
);
}
catch
(
UnsatisfiedLinkError
e
)
{
e
.
printStackTrace
();
// expected
}
}
}
test/runtime/CommandLine/BooleanFlagWithInvalidValue.java
浏览文件 @
a884225b
...
...
@@ -33,17 +33,17 @@ import com.oracle.java.testlibrary.*;
public
class
BooleanFlagWithInvalidValue
{
public
static
void
main
(
String
[]
args
)
throws
Exception
{
ProcessBuilder
pb
=
ProcessTools
.
createJavaProcessBuilder
(
"-XX:+
UseLargePage
s=8"
,
"-version"
);
"-XX:+
PrintWarning
s=8"
,
"-version"
);
OutputAnalyzer
output
=
new
OutputAnalyzer
(
pb
.
start
());
output
.
shouldContain
(
"Improperly specified VM option '
UseLargePage
s=8'"
);
output
.
shouldContain
(
"Improperly specified VM option '
PrintWarning
s=8'"
);
output
.
shouldHaveExitValue
(
1
);
pb
=
ProcessTools
.
createJavaProcessBuilder
(
"-XX:-
UseLargePage
s=8"
,
"-version"
);
"-XX:-
PrintWarning
s=8"
,
"-version"
);
output
=
new
OutputAnalyzer
(
pb
.
start
());
output
.
shouldContain
(
"Improperly specified VM option '
UseLargePage
s=8'"
);
output
.
shouldContain
(
"Improperly specified VM option '
PrintWarning
s=8'"
);
output
.
shouldHaveExitValue
(
1
);
}
}
test/runtime/CommandLine/FlagWithInvalidValue.java
浏览文件 @
a884225b
...
...
@@ -33,10 +33,10 @@ import com.oracle.java.testlibrary.*;
public
class
FlagWithInvalidValue
{
public
static
void
main
(
String
[]
args
)
throws
Exception
{
ProcessBuilder
pb
=
ProcessTools
.
createJavaProcessBuilder
(
"-XX:
ObjectAlignmentInBytes
=v"
,
"-version"
);
"-XX:
MaxRAMFraction
=v"
,
"-version"
);
OutputAnalyzer
output
=
new
OutputAnalyzer
(
pb
.
start
());
output
.
shouldContain
(
"Improperly specified VM option '
ObjectAlignmentInBytes
=v'"
);
output
.
shouldContain
(
"Improperly specified VM option '
MaxRAMFraction
=v'"
);
output
.
shouldHaveExitValue
(
1
);
}
}
test/runtime/CommandLine/NonBooleanFlagWithInvalidBooleanPrefix.java
浏览文件 @
a884225b
...
...
@@ -33,17 +33,17 @@ import com.oracle.java.testlibrary.*;
public
class
NonBooleanFlagWithInvalidBooleanPrefix
{
public
static
void
main
(
String
[]
args
)
throws
Exception
{
ProcessBuilder
pb
=
ProcessTools
.
createJavaProcessBuilder
(
"-XX:-
ObjectAlignmentInBytes
=16"
,
"-version"
);
"-XX:-
MaxRAMFraction
=16"
,
"-version"
);
OutputAnalyzer
output
=
new
OutputAnalyzer
(
pb
.
start
());
output
.
shouldContain
(
"Unexpected +/- setting in VM option '
ObjectAlignmentInBytes
=16'"
);
output
.
shouldContain
(
"Unexpected +/- setting in VM option '
MaxRAMFraction
=16'"
);
output
.
shouldHaveExitValue
(
1
);
pb
=
ProcessTools
.
createJavaProcessBuilder
(
"-XX:+
ObjectAlignmentInBytes
=16"
,
"-version"
);
"-XX:+
MaxRAMFraction
=16"
,
"-version"
);
output
=
new
OutputAnalyzer
(
pb
.
start
());
output
.
shouldContain
(
"Unexpected +/- setting in VM option '
ObjectAlignmentInBytes
=16'"
);
output
.
shouldContain
(
"Unexpected +/- setting in VM option '
MaxRAMFraction
=16'"
);
output
.
shouldHaveExitValue
(
1
);
}
...
...
test/runtime/NMT/BaselineWithParameter.java
浏览文件 @
a884225b
...
...
@@ -43,7 +43,7 @@ public class BaselineWithParameter {
// Run 'jcmd <pid> VM.native_memory baseline=false'
pb
.
command
(
new
String
[]
{
JDKToolFinder
.
getJDKTool
(
"jcmd"
),
pid
,
"VM.native_memory"
,
"baseline=false"
});
pb
.
start
();
pb
.
start
()
.
waitFor
()
;
// Run 'jcmd <pid> VM.native_memory summary=false'
pb
.
command
(
new
String
[]
{
JDKToolFinder
.
getJDKTool
(
"jcmd"
),
pid
,
"VM.native_memory"
,
"summary=false"
});
...
...
test/runtime/NMT/PrintNMTStatistics.java
浏览文件 @
a884225b
...
...
@@ -27,7 +27,9 @@
* @bug 8005936
* @summary Make sure PrintNMTStatistics works on normal JVM exit
* @library /testlibrary /testlibrary/whitebox
* @run compile PrintNMTStatistics.java
* @build PrintNMTStatistics
* @run main ClassFileInstaller sun.hotspot.WhiteBox
* @run main PrintNMTStatistics
*/
import
com.oracle.java.testlibrary.*
;
...
...
@@ -52,13 +54,15 @@ public class PrintNMTStatistics {
ProcessBuilder
pb
=
ProcessTools
.
createJavaProcessBuilder
(
"-XX:+UnlockDiagnosticVMOptions"
,
"-Xbootclasspath/a:."
,
"-XX:+WhiteBoxAPI"
,
"-XX:NativeMemoryTracking=summary"
,
"
+
XX:+PrintNMTStatistics"
,
"
-
XX:+PrintNMTStatistics"
,
"PrintNMTStatistics"
,
"test"
);
OutputAnalyzer
output
=
new
OutputAnalyzer
(
pb
.
start
());
output
.
shouldContain
(
"Java Heap
(reserved="
);
output
.
shouldContain
(
"Java Heap (reserved="
);
output
.
shouldNotContain
(
"error"
);
output
.
shouldNotContain
(
"warning"
);
output
.
shouldHaveExitValue
(
0
);
...
...
test/test_env.sh
0 → 100644
浏览文件 @
a884225b
#!/bin/sh
#
# Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 2 only, as
# published by the Free Software Foundation.
#
# This code is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
# version 2 for more details (a copy is included in the LICENSE file that
# accompanied this code).
#
# You should have received a copy of the GNU General Public License version
# 2 along with this work; if not, write to the Free Software Foundation,
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
#
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
# or visit www.oracle.com if you need additional information or have any
# questions.
#
#
# This Environment script was written to capture typically used environment
# setup for a given shell test.
#
# TESTJAVA can be a JDK or JRE. If JRE you need to set COMPILEJAVA
if
[
"
${
TESTJAVA
}
"
=
""
]
then
echo
"TESTJAVA not set. Test cannot execute. Failed."
exit
1
fi
echo
"TESTJAVA=
${
TESTJAVA
}
"
# COMPILEJAVA requires a JDK, some shell test use javac,jar,etc
if
[
"
${
COMPILEJAVA
}
"
=
""
]
then
echo
"COMPILEJAVA not set. Using TESTJAVA as default"
COMPILEJAVA
=
${
TESTJAVA
}
fi
echo
"COMPILEJAVA=
${
COMPILEJAVA
}
"
if
[
"
${
TESTCLASSES
}
"
=
""
]
then
echo
"TESTCLASES not set. Using "
.
" as default"
TESTCLASSES
=
.
fi
echo
"TESTCLASSES=
${
TESTCLASSES
}
"
# set platform-dependent variables
OS
=
`
uname
-s
`
case
"
$OS
"
in
SunOS
|
Linux
|
Darwin
)
NULL
=
/dev/null
PS
=
":"
FS
=
"/"
RM
=
/bin/rm
CP
=
/bin/cp
MV
=
/bin/mv
;;
Windows_
*
)
NULL
=
NUL
PS
=
";"
FS
=
"
\\
"
RM
=
rm
CP
=
cp
MV
=
mv
;;
CYGWIN_
*
)
NULL
=
/dev/null
PS
=
";"
FS
=
"/"
RM
=
rm
CP
=
cp
MV
=
mv
;;
*
)
echo
"Unrecognized system!"
exit
1
;
;;
esac
export
NULL PS FS RM CP MV
echo
"NULL =
${
NULL
}
"
echo
"PS =
${
PS
}
"
echo
"FS =
${
FS
}
"
echo
"RM =
${
RM
}
"
echo
"CP =
${
CP
}
"
echo
"MV =
${
MV
}
"
# jtreg -classpathappend:<path>
JEMMYPATH
=
${
CPAPPEND
}
CLASSPATH
=
.
${
PS
}${
TESTCLASSES
}${
PS
}${
JEMMYPATH
}
;
export
CLASSPATH
echo
"CLASSPATH =
${
CLASSPATH
}
"
# Current directory is scratch directory
THIS_DIR
=
.
echo
"THIS_DIR=
${
THIS_DIR
}
"
# Check to ensure the java defined actually works
${
TESTJAVA
}${
FS
}
bin
${
FS
}
java
${
TESTVMOPTS
}
-version
if
[
$?
!=
0
]
;
then
echo
"Wrong TESTJAVA or TESTVMOPTS:"
echo
$TESTJAVA
TESTVMOPTS
exit
1
fi
${
TESTJAVA
}${
FS
}
bin
${
FS
}
java
${
TESTVMOPTS
}
-Xinternalversion
>
vm_version.out 2>&1
VM_TYPE
=
"unknown"
grep
"Server"
vm_version.out
>
${
NULL
}
if
[
$?
=
0
]
then
VM_TYPE
=
"server"
fi
grep
"Client"
vm_version.out
>
${
NULL
}
if
[
$?
=
0
]
then
VM_TYPE
=
"client"
fi
VM_BITS
=
"32"
grep
"64-Bit"
vm_version.out
>
${
NULL
}
if
[
$?
=
0
]
then
VM_BITS
=
"64"
fi
VM_OS
=
"unknown"
grep
"solaris"
vm_version.out
>
${
NULL
}
if
[
$?
=
0
]
then
VM_OS
=
"solaris"
fi
grep
"linux"
vm_version.out
>
${
NULL
}
if
[
$?
=
0
]
then
VM_OS
=
"linux"
fi
grep
"windows"
vm_version.out
>
${
NULL
}
if
[
$?
=
0
]
then
VM_OS
=
"windows"
fi
grep
"bsd"
vm_version.out
>
${
NULL
}
if
[
$?
=
0
]
then
VM_OS
=
"bsd"
fi
VM_CPU
=
"unknown"
grep
"sparc"
vm_version.out
>
${
NULL
}
if
[
$?
=
0
]
then
VM_CPU
=
"sparc"
if
[
$VM_BITS
=
"64"
]
then
VM_CPU
=
"sparcv9"
fi
fi
grep
"x86"
vm_version.out
>
${
NULL
}
if
[
$?
=
0
]
then
VM_CPU
=
"i386"
fi
grep
"amd64"
vm_version.out
>
${
NULL
}
if
[
$?
=
0
]
then
VM_CPU
=
"amd64"
fi
grep
"arm"
vm_version.out
>
${
NULL
}
if
[
$?
=
0
]
then
VM_CPU
=
"arm"
fi
grep
"ppc"
vm_version.out
>
${
NULL
}
if
[
$?
=
0
]
then
VM_CPU
=
"ppc"
fi
grep
"ia64"
vm_version.out
>
${
NULL
}
if
[
$?
=
0
]
then
VM_CPU
=
"ia64"
fi
export
VM_TYPE VM_BITS VM_OS VM_CPU
echo
"VM_TYPE=
${
VM_TYPE
}
"
echo
"VM_BITS=
${
VM_BITS
}
"
echo
"VM_OS=
${
VM_OS
}
"
echo
"VM_CPU=
${
VM_CPU
}
"
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录