Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_hotspot
提交
05c0e659
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看板
提交
05c0e659
编写于
3月 02, 2012
作者:
N
never
浏览文件
操作
浏览文件
下载
差异文件
Merge
上级
bec7495c
3f530dcc
变更
45
隐藏空白更改
内联
并排
Showing
45 changed file
with
676 addition
and
128 deletion
+676
-128
.hgtags
.hgtags
+4
-0
agent/src/share/classes/sun/jvm/hotspot/oops/ConstantPool.java
.../src/share/classes/sun/jvm/hotspot/oops/ConstantPool.java
+6
-1
make/bsd/makefiles/buildtree.make
make/bsd/makefiles/buildtree.make
+3
-0
make/bsd/makefiles/gcc.make
make/bsd/makefiles/gcc.make
+45
-41
make/bsd/makefiles/sparcWorks.make
make/bsd/makefiles/sparcWorks.make
+9
-6
make/defs.make
make/defs.make
+5
-0
make/hotspot_version
make/hotspot_version
+1
-1
make/linux/makefiles/buildtree.make
make/linux/makefiles/buildtree.make
+3
-0
make/linux/makefiles/gcc.make
make/linux/makefiles/gcc.make
+18
-19
make/linux/makefiles/ppc.make
make/linux/makefiles/ppc.make
+3
-0
make/linux/makefiles/sparcWorks.make
make/linux/makefiles/sparcWorks.make
+9
-6
make/solaris/makefiles/buildtree.make
make/solaris/makefiles/buildtree.make
+3
-0
make/solaris/makefiles/gcc.make
make/solaris/makefiles/gcc.make
+7
-5
make/solaris/makefiles/sparcWorks.make
make/solaris/makefiles/sparcWorks.make
+13
-12
make/windows/build.make
make/windows/build.make
+4
-0
make/windows/makefiles/compile.make
make/windows/makefiles/compile.make
+12
-0
make/windows/makefiles/defs.make
make/windows/makefiles/defs.make
+16
-0
src/cpu/sparc/vm/c1_LIRAssembler_sparc.cpp
src/cpu/sparc/vm/c1_LIRAssembler_sparc.cpp
+20
-0
src/cpu/x86/vm/c1_LIRAssembler_x86.cpp
src/cpu/x86/vm/c1_LIRAssembler_x86.cpp
+19
-0
src/cpu/x86/vm/vm_version_x86.cpp
src/cpu/x86/vm/vm_version_x86.cpp
+5
-5
src/os/bsd/vm/osThread_bsd.cpp
src/os/bsd/vm/osThread_bsd.cpp
+5
-1
src/os/bsd/vm/osThread_bsd.hpp
src/os/bsd/vm/osThread_bsd.hpp
+22
-3
src/os/bsd/vm/os_bsd.cpp
src/os/bsd/vm/os_bsd.cpp
+37
-3
src/os_cpu/bsd_x86/vm/vmStructs_bsd_x86.hpp
src/os_cpu/bsd_x86/vm/vmStructs_bsd_x86.hpp
+9
-3
src/share/vm/c1/c1_Canonicalizer.cpp
src/share/vm/c1/c1_Canonicalizer.cpp
+1
-0
src/share/vm/c1/c1_Canonicalizer.hpp
src/share/vm/c1/c1_Canonicalizer.hpp
+1
-0
src/share/vm/c1/c1_GraphBuilder.cpp
src/share/vm/c1/c1_GraphBuilder.cpp
+17
-1
src/share/vm/c1/c1_IR.cpp
src/share/vm/c1/c1_IR.cpp
+1
-0
src/share/vm/c1/c1_IR.hpp
src/share/vm/c1/c1_IR.hpp
+3
-0
src/share/vm/c1/c1_Instruction.hpp
src/share/vm/c1/c1_Instruction.hpp
+19
-0
src/share/vm/c1/c1_InstructionPrinter.cpp
src/share/vm/c1/c1_InstructionPrinter.cpp
+16
-0
src/share/vm/c1/c1_InstructionPrinter.hpp
src/share/vm/c1/c1_InstructionPrinter.hpp
+1
-0
src/share/vm/c1/c1_LIR.cpp
src/share/vm/c1/c1_LIR.cpp
+8
-0
src/share/vm/c1/c1_LIR.hpp
src/share/vm/c1/c1_LIR.hpp
+8
-0
src/share/vm/c1/c1_LIRAssembler.cpp
src/share/vm/c1/c1_LIRAssembler.cpp
+16
-0
src/share/vm/c1/c1_LIRAssembler.hpp
src/share/vm/c1/c1_LIRAssembler.hpp
+4
-0
src/share/vm/c1/c1_LIRGenerator.cpp
src/share/vm/c1/c1_LIRGenerator.cpp
+17
-0
src/share/vm/c1/c1_LIRGenerator.hpp
src/share/vm/c1/c1_LIRGenerator.hpp
+1
-0
src/share/vm/c1/c1_Optimizer.cpp
src/share/vm/c1/c1_Optimizer.cpp
+2
-0
src/share/vm/c1/c1_ValueMap.hpp
src/share/vm/c1/c1_ValueMap.hpp
+1
-0
src/share/vm/classfile/vmSymbols.hpp
src/share/vm/classfile/vmSymbols.hpp
+4
-1
src/share/vm/oops/cpCacheOop.cpp
src/share/vm/oops/cpCacheOop.cpp
+9
-9
src/share/vm/services/diagnosticCommand.cpp
src/share/vm/services/diagnosticCommand.cpp
+188
-1
src/share/vm/services/diagnosticCommand.hpp
src/share/vm/services/diagnosticCommand.hpp
+79
-1
src/share/vm/utilities/globalDefinitions_gcc.hpp
src/share/vm/utilities/globalDefinitions_gcc.hpp
+2
-9
未找到文件。
.hgtags
浏览文件 @
05c0e659
...
...
@@ -222,3 +222,7 @@ b22de824749922986ce4d442bed029916b832807 hs23-b13
d71e662fe03741b6de498ca2077220148405a978 hs23-b15
fd3060701216a11c0df6dcd053c6fd7c2b17a42c jdk8-b26
f92a171cf0071ca6c3fa8231d7d570377f8b2f4d hs23-b16
f92a171cf0071ca6c3fa8231d7d570377f8b2f4d hs23-b16
931e5f39e365a0d550d79148ff87a7f9e864d2e1 hs23-b16
3b24e7e01d20ca590d0f86b1222bb7c3f1a2aa2d jdk8-b27
975c4105f1e2ef1190a75b77124033f1fd4290b5 hs24-b01
agent/src/share/classes/sun/jvm/hotspot/oops/ConstantPool.java
浏览文件 @
05c0e659
...
...
@@ -648,7 +648,12 @@ public class ConstantPool extends Oop implements ClassConstants {
}
public
void
printValueOn
(
PrintStream
tty
)
{
tty
.
print
(
"ConstantPool for "
+
getPoolHolder
().
getName
().
asString
());
Oop
holder
=
poolHolder
.
getValue
(
this
);
if
(
holder
instanceof
Klass
)
{
tty
.
print
(
"ConstantPool for "
+
((
Klass
)
holder
).
getName
().
asString
());
}
else
{
tty
.
print
(
"ConstantPool for partially loaded class"
);
}
}
public
long
getObjectSize
()
{
...
...
make/bsd/makefiles/buildtree.make
浏览文件 @
05c0e659
...
...
@@ -58,6 +58,7 @@
# needs to be set here since this Makefile doesn't include defs.make
OS_VENDOR
:=
$(
shell
uname
-s
)
-include
$(SPEC)
include
$(GAMMADIR)/make/scm.make
include
$(GAMMADIR)/make/altsrc.make
...
...
@@ -247,6 +248,8 @@ flags.make: $(BUILDTREE_MAKE) ../shared_dirs.lst
echo
"HOTSPOT_EXTRA_SYSDEFS
\$
$(HOTSPOT_EXTRA_SYSDEFS)
=
$(HOTSPOT_EXTRA_SYSDEFS)
"
&&
\
echo
"SYSDEFS +=
\$
$(HOTSPOT_EXTRA_SYSDEFS)
"
;
\
echo
;
\
[
-n
"
$(SPEC)
"
]
&&
\
echo
"include
$(SPEC)
"
;
\
echo
"include
\$
$(GAMMADIR)
/make/
$(OS_FAMILY)
/makefiles/
$(VARIANT)
.make"
;
\
echo
"include
\$
$(GAMMADIR)
/make/
$(OS_FAMILY)
/makefiles/
$(COMPILER)
.make"
;
\
)
>
$@
...
...
make/bsd/makefiles/gcc.make
浏览文件 @
05c0e659
...
...
@@ -27,53 +27,57 @@ OS_VENDOR = $(shell uname -s)
#------------------------------------------------------------------------
# CC, CXX & AS
# When cross-compiling the ALT_COMPILER_PATH points
# to the cross-compilation toolset
ifdef
CROSS_COMPILE_ARCH
CXX
=
$(ALT_COMPILER_PATH)
/g++
CC
=
$(ALT_COMPILER_PATH)
/gcc
HOSTCXX
=
g++
HOSTCC
=
gcc
else
ifneq
($(OS_VENDOR), Darwin)
CXX
=
g++
CC
=
gcc
HOSTCXX
=
$(CXX)
HOSTCC
=
$(CC)
endif
# i486 hotspot requires -mstackrealign on Darwin.
# llvm-gcc supports this in Xcode 3.2.6 and 4.0.
# gcc-4.0 supports this on earlier versions.
# Prefer llvm-gcc where available.
ifeq
($(OS_VENDOR), Darwin)
ifeq
($(origin CXX), default)
CXX
=
llvm-g++
endif
ifeq
($(origin CC), default)
CC
=
llvm-gcc
# If a SPEC is not set already, then use these defaults.
ifeq
($(SPEC),)
# When cross-compiling the ALT_COMPILER_PATH points
# to the cross-compilation toolset
ifdef
CROSS_COMPILE_ARCH
CXX
=
$(ALT_COMPILER_PATH)
/g++
CC
=
$(ALT_COMPILER_PATH)
/gcc
HOSTCXX
=
g++
HOSTCC
=
gcc
else
ifneq
($(OS_VENDOR), Darwin)
CXX
=
g++
CC
=
gcc
HOSTCXX
=
$(CXX)
HOSTCC
=
$(CC)
endif
ifeq
($(ARCH), i486)
LLVM_SUPPORTS_STACKREALIGN
:=
$(
shell
\
[
"0"
`
llvm-gcc
-v
2>&1 |
grep
LLVM |
sed
-E
"s/.*LLVM build ([0-9]+
)
.*/
\1
/"
`
-gt
"2333"
]
\
&&
echo true
||
echo false
)
ifeq
($(LLVM_SUPPORTS_STACKREALIGN), true)
CXX32
?=
llvm-g++
CC32
?=
llvm-gcc
else
CXX32
?=
g++-4.0
CC32
?=
gcc-4.0
endif
CXX
=
$(CXX32)
CC
=
$(CC32)
# i486 hotspot requires -mstackrealign on Darwin.
# llvm-gcc supports this in Xcode 3.2.6 and 4.0.
# gcc-4.0 supports this on earlier versions.
# Prefer llvm-gcc where available.
ifeq
($(OS_VENDOR), Darwin)
ifeq
($(origin CXX), default)
CXX
=
llvm-g++
endif
ifeq
($(origin CC), default)
CC
=
llvm-gcc
endif
ifeq
($(ARCH), i486)
LLVM_SUPPORTS_STACKREALIGN
:=
$(
shell
\
[
"0"
`
llvm-gcc
-v
2>&1 |
grep
LLVM |
sed
-E
"s/.*LLVM build ([0-9]+
)
.*/
\1
/"
`
-gt
"2333"
]
\
&&
echo true
||
echo false
)
ifeq
($(LLVM_SUPPORTS_STACKREALIGN), true)
CXX32
?=
llvm-g++
CC32
?=
llvm-gcc
else
CXX32
?=
g++-4.0
CC32
?=
gcc-4.0
endif
CXX
=
$(CXX32)
CC
=
$(CC32)
endif
HOSTCXX
=
$(CXX)
HOSTCC
=
$(CC)
endif
HOSTCXX
=
$(CXX)
HOSTCC
=
$(CC)
AS
=
$(CC)
-c
-x
assembler-with-cpp
endif
AS
=
$(CC)
-c
-x
assembler-with-cpp
# -dumpversion in gcc-2.91 shows "egcs-2.91.66". In later version, it only
# prints the numbers (e.g. "2.95", "3.2.1")
...
...
make/bsd/makefiles/sparcWorks.make
浏览文件 @
05c0e659
...
...
@@ -25,12 +25,15 @@
#------------------------------------------------------------------------
# CC, CXX & AS
CXX
=
CC
CC
=
cc
AS
=
$(CC)
-c
HOSTCXX
=
$(CXX)
HOSTCC
=
$(CC)
# If a SPEC is not set already, then use these defaults.
ifeq
($(SPEC),)
CXX
=
CC
CC
=
cc
AS
=
$(CC)
-c
HOSTCXX
=
$(CXX)
HOSTCC
=
$(CC)
endif
ARCHFLAG
=
$
(
ARCHFLAG/
$(BUILDARCH)
)
ARCHFLAG/
i486
=
-m32
...
...
make/defs.make
浏览文件 @
05c0e659
...
...
@@ -24,6 +24,11 @@
# The common definitions for hotspot builds.
# Optionally include SPEC file generated by configure.
ifneq
($(SPEC),)
include
$(SPEC)
endif
# Default to verbose build logs (show all compile lines):
MAKE_VERBOSE
=
y
...
...
make/hotspot_version
浏览文件 @
05c0e659
...
...
@@ -35,7 +35,7 @@ HOTSPOT_VM_COPYRIGHT=Copyright 2011
HS_MAJOR_VER=24
HS_MINOR_VER=0
HS_BUILD_NUMBER=0
1
HS_BUILD_NUMBER=0
2
JDK_MAJOR_VER=1
JDK_MINOR_VER=8
...
...
make/linux/makefiles/buildtree.make
浏览文件 @
05c0e659
...
...
@@ -55,6 +55,7 @@
# The makefiles are split this way so that "make foo" will run faster by not
# having to read the dependency files for the vm.
-include
$(SPEC)
include
$(GAMMADIR)/make/scm.make
include
$(GAMMADIR)/make/altsrc.make
...
...
@@ -244,6 +245,8 @@ flags.make: $(BUILDTREE_MAKE) ../shared_dirs.lst
echo
"HOTSPOT_EXTRA_SYSDEFS
\$
$(HOTSPOT_EXTRA_SYSDEFS)
=
$(HOTSPOT_EXTRA_SYSDEFS)
"
&&
\
echo
"SYSDEFS +=
\$
$(HOTSPOT_EXTRA_SYSDEFS)
"
;
\
echo
;
\
[
-n
"
$(SPEC)
"
]
&&
\
echo
"include
$(SPEC)
"
;
\
echo
"include
\$
$(GAMMADIR)
/make/
$(OS_FAMILY)
/makefiles/
$(VARIANT)
.make"
;
\
echo
"include
\$
$(GAMMADIR)
/make/
$(OS_FAMILY)
/makefiles/
$(COMPILER)
.make"
;
\
)
>
$@
...
...
make/linux/makefiles/gcc.make
浏览文件 @
05c0e659
...
...
@@ -25,21 +25,26 @@
#------------------------------------------------------------------------
# CC, CXX & AS
# When cross-compiling the ALT_COMPILER_PATH points
# to the cross-compilation toolset
ifdef
CROSS_COMPILE_ARCH
CXX
=
$(ALT_COMPILER_PATH)
/g++
CC
=
$(ALT_COMPILER_PATH)
/gcc
HOSTCXX
=
g++
HOSTCC
=
gcc
else
CXX
=
g++
CC
=
gcc
HOSTCXX
=
$(CXX)
HOSTCC
=
$(CC)
# If a SPEC is not set already, then use these defaults.
ifeq
($(SPEC),)
# When cross-compiling the ALT_COMPILER_PATH points
# to the cross-compilation toolset
ifdef
CROSS_COMPILE_ARCH
CXX
=
$(ALT_COMPILER_PATH)
/g++
CC
=
$(ALT_COMPILER_PATH)
/gcc
HOSTCXX
=
g++
HOSTCC
=
gcc
STRIP
=
$(ALT_COMPILER_PATH)
/strip
else
CXX
=
g++
CC
=
gcc
HOSTCXX
=
$(CXX)
HOSTCC
=
$(CC)
STRIP
=
strip
endif
AS
=
$(CC)
-c
endif
AS
=
$(CC)
-c
# -dumpversion in gcc-2.91 shows "egcs-2.91.66". In later version, it only
# prints the numbers (e.g. "2.95", "3.2.1")
...
...
@@ -261,9 +266,3 @@ endif
ifdef
MINIMIZE_RAM_USAGE
CFLAGS
+=
-DMINIMIZE_RAM_USAGE
endif
ifdef
CROSS_COMPILE_ARCH
STRIP
=
$(ALT_COMPILER_PATH)
/strip
else
STRIP
=
strip
endif
make/linux/makefiles/ppc.make
浏览文件 @
05c0e659
...
...
@@ -28,3 +28,6 @@ OPT_CFLAGS/sharedRuntimeTrig.o = $(OPT_CFLAGS/NOOPT)
# Must also specify if CPU is big endian
CFLAGS
+=
-DVM_BIG_ENDIAN
ifdef
E500V2
ASFLAGS
+=
-Wa
,-mspe
-Wa
,--defsym
-Wa
,E500V2
=
1
endif
make/linux/makefiles/sparcWorks.make
浏览文件 @
05c0e659
...
...
@@ -25,12 +25,15 @@
#------------------------------------------------------------------------
# CC, CXX & AS
CXX
=
CC
CC
=
cc
AS
=
$(CC)
-c
HOSTCXX
=
$(CXX)
HOSTCC
=
$(CC)
# If a SPEC is not set already, then use these defaults.
ifeq
($(SPEC),)
CXX
=
CC
CC
=
cc
AS
=
$(CC)
-c
HOSTCXX
=
$(CXX)
HOSTCC
=
$(CC)
endif
ARCHFLAG
=
$
(
ARCHFLAG/
$(BUILDARCH)
)
ARCHFLAG/
i486
=
-m32
...
...
make/solaris/makefiles/buildtree.make
浏览文件 @
05c0e659
...
...
@@ -55,6 +55,7 @@
# The makefiles are split this way so that "make foo" will run faster by not
# having to read the dependency files for the vm.
-include
$(SPEC)
include
$(GAMMADIR)/make/scm.make
include
$(GAMMADIR)/make/altsrc.make
...
...
@@ -237,6 +238,8 @@ flags.make: $(BUILDTREE_MAKE) ../shared_dirs.lst
echo
"HOTSPOT_EXTRA_SYSDEFS
\$
$(HOTSPOT_EXTRA_SYSDEFS)
=
$(HOTSPOT_EXTRA_SYSDEFS)
"
&&
\
echo
"SYSDEFS +=
\$
$(HOTSPOT_EXTRA_SYSDEFS)
"
;
\
echo
;
\
[
-n
"
$(SPEC)
"
]
&&
\
echo
"include
$(SPEC)
"
;
\
echo
"include
\$
$(GAMMADIR)
/make/
$(OS_FAMILY)
/makefiles/
$(VARIANT)
.make"
;
\
echo
"include
\$
$(GAMMADIR)
/make/
$(OS_FAMILY)
/makefiles/
$(COMPILER)
.make"
;
\
)
>
$@
...
...
make/solaris/makefiles/gcc.make
浏览文件 @
05c0e659
...
...
@@ -25,9 +25,13 @@
#------------------------------------------------------------------------
# CC, CXX & AS
CXX
=
g++
CC
=
gcc
AS
=
$(CC)
-c
# If a SPEC is not set already, then use these defaults.
ifeq
($(SPEC),)
CXX
=
g++
CC
=
gcc
AS
=
$(CC)
-c
MCS
=
/usr/ccs/bin/mcs
endif
Compiler
=
gcc
...
...
@@ -193,5 +197,3 @@ DEBUG_CFLAGS += $(DEBUG_CFLAGS/$(BUILDARCH))
ifeq
($(DEBUG_CFLAGS/$(BUILDARCH)),)
DEBUG_CFLAGS
+=
-gstabs
endif
MCS
=
/usr/ccs/bin/mcs
make/solaris/makefiles/sparcWorks.make
浏览文件 @
05c0e659
...
...
@@ -22,18 +22,22 @@
#
#
# Compiler-specific flags for sparcworks.
# If a SPEC is not set already, then use these defaults.
ifeq
($(SPEC),)
# Compiler-specific flags for sparcworks.
CC
=
cc
CXX
=
CC
# tell make which C and C++ compilers to use
CC
=
cc
CXX
=
CC
# Note that this 'as' is an older version of the Sun Studio 'fbe', and will
# use the older style options. The 'fbe' options will match 'cc' and 'CC'.
AS
=
/usr/ccs/bin/as
# Note that this 'as' is an older version of the Sun Studio 'fbe', and will
# use the older style options. The 'fbe' options will match 'cc' and 'CC'.
AS
=
/usr/ccs/bin/as
NM
=
/usr/ccs/bin/nm
NAWK
=
/bin/nawk
NM
=
/usr/ccs/bin/nm
NAWK
=
/bin/nawk
MCS
=
/usr/ccs/bin/mcs
STRIP
=
/usr/ccs/bin/strip
endif
REORDER_FLAG
=
-xF
...
...
@@ -557,9 +561,6 @@ else
#LINK_INTO = LIBJVM
endif
MCS
=
/usr/ccs/bin/mcs
STRIP
=
/usr/ccs/bin/strip
# Solaris platforms collect lots of redundant file-ident lines,
# to the point of wasting a significant percentage of file space.
# (The text is stored in ELF .comment sections, contributed by
...
...
make/windows/build.make
浏览文件 @
05c0e659
...
...
@@ -297,6 +297,10 @@ $(variantDir)\local.make: checks
@
echo
BUILDARCH
=
$(BUILDARCH)
>>
$@
@
echo
Platform_arch
=
$(Platform_arch)
>>
$@
@
echo
Platform_arch_model
=
$(Platform_arch_model)
>>
$@
@
echo
CXX
=
$(CXX)
>>
$@
@
echo
LD
=
$(LD)
>>
$@
@
echo
MT
=
$(MT)
>>
$@
@
echo
RC
=
$(RC)
>>
$@
@
sh
$(WorkSpace)
/make/windows/get_msc_ver.sh
>>
$@
checks
:
checkVariant checkWorkSpace checkSA
...
...
make/windows/makefiles/compile.make
浏览文件 @
05c0e659
...
...
@@ -23,7 +23,9 @@
#
# Generic compiler settings
!if
"x$(CXX)"
==
"x"
CXX
=
cl.exe
!
endif
# CXX Flags: (these vary slightly from VC6->VS2003->VS2005 compilers)
# /nologo Supress copyright message at every cl.exe startup
...
...
@@ -183,8 +185,10 @@ BUFFEROVERFLOWLIB = bufferoverflowU.lib
LD_FLAGS
=
/manifest
$(LD_FLAGS)
$(BUFFEROVERFLOWLIB)
# Manifest Tool - used in VS2005 and later to adjust manifests stored
# as resources inside build artifacts.
!if
"x$(MT)"
==
"x"
MT
=
mt.exe
!
endif
!
endif
!if
"$(COMPILER_NAME)"
==
"VS2008"
PRODUCT_OPT_OPTION
=
/O2 /Oy-
...
...
@@ -194,8 +198,10 @@ GX_OPTION = /EHsc
LD_FLAGS
=
/manifest
$(LD_FLAGS)
# Manifest Tool - used in VS2005 and later to adjust manifests stored
# as resources inside build artifacts.
!if
"x$(MT)"
==
"x"
MT
=
mt.exe
!
endif
!
endif
!if
"$(COMPILER_NAME)"
==
"VS2010"
PRODUCT_OPT_OPTION
=
/O2 /Oy-
...
...
@@ -205,7 +211,9 @@ GX_OPTION = /EHsc
LD_FLAGS
=
/manifest
$(LD_FLAGS)
# Manifest Tool - used in VS2005 and later to adjust manifests stored
# as resources inside build artifacts.
!if
"x$(MT)"
==
"x"
MT
=
mt.exe
!
endif
!if
"$(BUILDARCH)"
==
"i486"
LD_FLAGS
=
/SAFESEH
$(LD_FLAGS)
!
endif
...
...
@@ -225,7 +233,9 @@ FASTDEBUG_OPT_OPTION = $(DEBUG_OPT_OPTION)
!
endif
# Generic linker settings
!if
"x$(LD)"
==
"x"
LD
=
link.exe
!
endif
LD_FLAGS
=
$(LD_FLAGS)
kernel32.lib user32.lib gdi32.lib winspool.lib
\
comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib
\
uuid.lib Wsock32.lib winmm.lib /nologo /machine:
$(MACHINE)
/opt:REF
\
...
...
@@ -237,7 +247,9 @@ LD_FLAGS= $(LD_FLAGS) psapi.lib
!
endif
# Resource compiler settings
!if
"x$(RC)"
==
"x"
RC
=
rc.exe
!
endif
RC_FLAGS
=
/D
"HS_VER=
$(HS_VER)
"
\
/D
"HS_DOTVER=
$(HS_DOTVER)
"
\
/D
"HS_BUILD_ID=
$(HS_BUILD_ID)
"
\
...
...
make/windows/makefiles/defs.make
浏览文件 @
05c0e659
...
...
@@ -202,3 +202,19 @@ ifeq ($(BUILD_WIN_SA), 1)
# Must pass this down to nmake.
MAKE_ARGS
+=
BUILD_WIN_SA
=
1
endif
# Propagate compiler and tools paths from configure to nmake.
# Need to make sure they contain \\ and not /.
ifneq
($(SPEC),)
ifeq
($(USING_CYGWIN), true)
MAKE_ARGS
+=
CXX
=
"
$(
subst
/,
\\
,
$(
shell
/bin/cygpath -s -m -a
$(CXX)
))
"
MAKE_ARGS
+=
LD
=
"
$(
subst
/,
\\
,
$(
shell
/bin/cygpath -s -m -a
$(LD)
))
"
MAKE_ARGS
+=
RC
=
"
$(
subst
/,
\\
,
$(
shell
/bin/cygpath -s -m -a
$(RC)
))
"
MAKE_ARGS
+=
MT
=
"
$(
subst
/,
\\
,
$(
shell
/bin/cygpath -s -m -a
$(MT)
))
"
else
MAKE_ARGS
+=
CXX
=
"
$(
subst
/,
\\
,
$(CXX)
)
"
MAKE_ARGS
+=
LD
=
"
$(
subst
/,
\\
,
$(LD)
)
"
MAKE_ARGS
+=
RC
=
"
$(
subst
/,
\\
,
$(RC)
)
"
MAKE_ARGS
+=
MT
=
"
$(
subst
/,
\\
,
$(MT)
)
"
endif
endif
src/cpu/sparc/vm/c1_LIRAssembler_sparc.cpp
浏览文件 @
05c0e659
...
...
@@ -3231,6 +3231,26 @@ void LIR_Assembler::membar_release() {
// no-op on TSO
}
void
LIR_Assembler
::
membar_loadload
()
{
// no-op
//__ membar(Assembler::Membar_mask_bits(Assembler::loadload));
}
void
LIR_Assembler
::
membar_storestore
()
{
// no-op
//__ membar(Assembler::Membar_mask_bits(Assembler::storestore));
}
void
LIR_Assembler
::
membar_loadstore
()
{
// no-op
//__ membar(Assembler::Membar_mask_bits(Assembler::loadstore));
}
void
LIR_Assembler
::
membar_storeload
()
{
__
membar
(
Assembler
::
Membar_mask_bits
(
Assembler
::
StoreLoad
));
}
// Pack two sequential registers containing 32 bit values
// into a single 64 bit register.
// src and src->successor() are packed into dst
...
...
src/cpu/x86/vm/c1_LIRAssembler_x86.cpp
浏览文件 @
05c0e659
...
...
@@ -3713,6 +3713,25 @@ void LIR_Assembler::membar_release() {
// __ store_fence();
}
void
LIR_Assembler
::
membar_loadload
()
{
// no-op
//__ membar(Assembler::Membar_mask_bits(Assembler::loadload));
}
void
LIR_Assembler
::
membar_storestore
()
{
// no-op
//__ membar(Assembler::Membar_mask_bits(Assembler::storestore));
}
void
LIR_Assembler
::
membar_loadstore
()
{
// no-op
//__ membar(Assembler::Membar_mask_bits(Assembler::loadstore));
}
void
LIR_Assembler
::
membar_storeload
()
{
__
membar
(
Assembler
::
Membar_mask_bits
(
Assembler
::
StoreLoad
));
}
void
LIR_Assembler
::
get_thread
(
LIR_Opr
result_reg
)
{
assert
(
result_reg
->
is_register
(),
"check"
);
#ifdef _LP64
...
...
src/cpu/x86/vm/vm_version_x86.cpp
浏览文件 @
05c0e659
/*
* Copyright (c) 1997, 201
1
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1997, 201
2
, 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
...
...
@@ -65,8 +65,8 @@ class VM_Version_StubGenerator: public StubCodeGenerator {
address
generate_getPsrInfo
()
{
// Flags to test CPU type.
const
uint32_t
EFL_AC
=
0x40000
;
const
uint32_t
EFL_ID
=
0x200000
;
const
uint32_t
HS_
EFL_AC
=
0x40000
;
const
uint32_t
HS_
EFL_ID
=
0x200000
;
// Values for when we don't have a CPUID instruction.
const
int
CPU_FAMILY_SHIFT
=
8
;
const
uint32_t
CPU_FAMILY_386
=
(
3
<<
CPU_FAMILY_SHIFT
);
...
...
@@ -100,7 +100,7 @@ class VM_Version_StubGenerator: public StubCodeGenerator {
//
// if we are unable to change the AC flag, we have a 386
//
__
xorl
(
rax
,
EFL_AC
);
__
xorl
(
rax
,
HS_
EFL_AC
);
__
push
(
rax
);
__
popf
();
__
pushf
();
...
...
@@ -118,7 +118,7 @@ class VM_Version_StubGenerator: public StubCodeGenerator {
//
__
bind
(
detect_486
);
__
mov
(
rax
,
rcx
);
__
xorl
(
rax
,
EFL_ID
);
__
xorl
(
rax
,
HS_
EFL_ID
);
__
push
(
rax
);
__
popf
();
__
pushf
();
...
...
src/os/bsd/vm/osThread_bsd.cpp
浏览文件 @
05c0e659
/*
* Copyright (c) 1999, 201
1
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1999, 201
2
, 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
...
...
@@ -49,7 +49,11 @@
void
OSThread
::
pd_initialize
()
{
assert
(
this
!=
NULL
,
"check"
);
#ifdef __APPLE__
_thread_id
=
0
;
#else
_thread_id
=
NULL
;
#endif
_pthread_id
=
NULL
;
_siginfo
=
NULL
;
_ucontext
=
NULL
;
...
...
src/os/bsd/vm/osThread_bsd.hpp
浏览文件 @
05c0e659
/*
* Copyright (c) 1999, 201
0
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1999, 201
2
, 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
...
...
@@ -40,10 +40,17 @@
private
:
#ifdef _ALLBSD_SOURCE
// _thread_id and _pthread_id are the same on BSD
// keep both to minimize code divergence in os_bsd.cpp
#ifdef __APPLE__
thread_t
_thread_id
;
#else
pthread_t
_thread_id
;
#endif
// _pthread_id is the pthread id, which is used by library calls
// (e.g. pthread_kill).
pthread_t
_pthread_id
;
#else
// _thread_id is kernel thread id (similar to LWP id on Solaris). Each
// thread has a unique thread_id (BsdThreads or NPTL). It can be used
...
...
@@ -64,9 +71,15 @@
void
set_caller_sigmask
(
sigset_t
sigmask
)
{
_caller_sigmask
=
sigmask
;
}
#ifdef _ALLBSD_SOURCE
#ifdef __APPLE__
thread_t
thread_id
()
const
{
return
_thread_id
;
}
#else
pthread_t
thread_id
()
const
{
return
_thread_id
;
}
#endif
#else
pid_t
thread_id
()
const
{
return
_thread_id
;
...
...
@@ -84,9 +97,15 @@
}
#endif // ASSERT
#ifdef _ALLBSD_SOURCE
#ifdef __APPLE__
void
set_thread_id
(
thread_t
id
)
{
_thread_id
=
id
;
}
#else
void
set_thread_id
(
pthread_t
id
)
{
_thread_id
=
id
;
}
#endif
#else
void
set_thread_id
(
pid_t
id
)
{
_thread_id
=
id
;
...
...
src/os/bsd/vm/os_bsd.cpp
浏览文件 @
05c0e659
...
...
@@ -568,6 +568,25 @@ void os::init_system_properties_values() {
sprintf
(
ld_library_path
,
"%s:%s"
,
v
,
t
);
free
(
t
);
}
#ifdef __APPLE__
// Apple's Java6 has "." at the beginning of java.library.path.
// OpenJDK on Windows has "." at the end of java.library.path.
// OpenJDK on Linux and Solaris don't have "." in java.library.path
// at all. To ease the transition from Apple's Java6 to OpenJDK7,
// "." is appended to the end of java.library.path. Yes, this
// could cause a change in behavior, but Apple's Java6 behavior
// can be achieved by putting "." at the beginning of the
// JAVA_LIBRARY_PATH environment variable.
{
char
*
t
=
ld_library_path
;
// that's +3 for appending ":." and the trailing '\0'
ld_library_path
=
(
char
*
)
malloc
(
strlen
(
t
)
+
3
);
sprintf
(
ld_library_path
,
"%s:%s"
,
t
,
"."
);
free
(
t
);
}
#endif
Arguments
::
set_library_path
(
ld_library_path
);
}
...
...
@@ -979,8 +998,13 @@ static void *java_start(Thread *thread) {
}
#ifdef _ALLBSD_SOURCE
#ifdef __APPLE__
// thread_id is mach thread on macos
osthread
->
set_thread_id
(
::
mach_thread_self
());
#else
// thread_id is pthread_id on BSD
osthread
->
set_thread_id
(
::
pthread_self
());
#endif
#else
// thread_id is kernel thread id (similar to Solaris LWP id)
osthread
->
set_thread_id
(
os
::
Bsd
::
gettid
());
...
...
@@ -1171,7 +1195,11 @@ bool os::create_attached_thread(JavaThread* thread) {
// Store pthread info into the OSThread
#ifdef _ALLBSD_SOURCE
#ifdef __APPLE__
osthread
->
set_thread_id
(
::
mach_thread_self
());
#else
osthread
->
set_thread_id
(
::
pthread_self
());
#endif
#else
osthread
->
set_thread_id
(
os
::
Bsd
::
gettid
());
#endif
...
...
@@ -1788,7 +1816,13 @@ size_t os::lasterror(char *buf, size_t len) {
return
n
;
}
intx
os
::
current_thread_id
()
{
return
(
intx
)
pthread_self
();
}
intx
os
::
current_thread_id
()
{
#ifdef __APPLE__
return
(
intx
)
::
mach_thread_self
();
#else
return
(
intx
)
::
pthread_self
();
#endif
}
int
os
::
current_process_id
()
{
// Under the old bsd thread library, bsd gives each thread
...
...
@@ -5133,9 +5167,9 @@ jlong os::thread_cpu_time(Thread *thread, bool user_sys_cpu_time) {
struct
thread_basic_info
tinfo
;
mach_msg_type_number_t
tcount
=
THREAD_INFO_MAX
;
kern_return_t
kr
;
mach_port
_t
mach_thread
;
thread
_t
mach_thread
;
mach_thread
=
pthread_mach_thread_np
(
thread
->
osthread
()
->
thread_id
()
);
mach_thread
=
thread
->
osthread
()
->
thread_id
(
);
kr
=
thread_info
(
mach_thread
,
THREAD_BASIC_INFO
,
(
thread_info_t
)
&
tinfo
,
&
tcount
);
if
(
kr
!=
KERN_SUCCESS
)
return
-
1
;
...
...
src/os_cpu/bsd_x86/vm/vmStructs_bsd_x86.hpp
浏览文件 @
05c0e659
/*
* Copyright (c) 2000, 201
0
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2000, 201
2
, 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
...
...
@@ -29,12 +29,18 @@
// constants required by the Serviceability Agent. This file is
// referenced by vmStructs.cpp.
#ifdef __APPLE__
#define OS_THREAD_ID_TYPE thread_t
#else
#define OS_THREAD_ID_TYPE pthread_t
#endif
#define VM_STRUCTS_OS_CPU(nonstatic_field, static_field, unchecked_nonstatic_field, volatile_nonstatic_field, nonproduct_nonstatic_field, c2_nonstatic_field, unchecked_c1_static_field, unchecked_c2_static_field, last_entry) \
\
/******************************/
\
/* Threads (NOTE: incomplete) */
\
/******************************/
\
nonstatic_field(OSThread, _thread_id,
pthread_t)
\
nonstatic_field(OSThread, _thread_id,
OS_THREAD_ID_TYPE)
\
nonstatic_field(OSThread, _pthread_id, pthread_t) \
/* This must be the last entry, and must be present */
\
last_entry()
...
...
@@ -46,7 +52,7 @@
/* Posix Thread IDs */
\
/**********************/
\
\
declare_
integer_type(pid_t)
\
declare_
unsigned_integer_type(thread_t)
\
declare_unsigned_integer_type(pthread_t) \
\
/* This must be the last entry, and must be present */
\
...
...
src/share/vm/c1/c1_Canonicalizer.cpp
浏览文件 @
05c0e659
...
...
@@ -908,3 +908,4 @@ void Canonicalizer::do_UnsafePrefetchWrite(UnsafePrefetchWrite* x) {}
void
Canonicalizer
::
do_ProfileCall
(
ProfileCall
*
x
)
{}
void
Canonicalizer
::
do_ProfileInvoke
(
ProfileInvoke
*
x
)
{}
void
Canonicalizer
::
do_RuntimeCall
(
RuntimeCall
*
x
)
{}
void
Canonicalizer
::
do_MemBar
(
MemBar
*
x
)
{}
src/share/vm/c1/c1_Canonicalizer.hpp
浏览文件 @
05c0e659
...
...
@@ -104,6 +104,7 @@ class Canonicalizer: InstructionVisitor {
virtual
void
do_ProfileCall
(
ProfileCall
*
x
);
virtual
void
do_ProfileInvoke
(
ProfileInvoke
*
x
);
virtual
void
do_RuntimeCall
(
RuntimeCall
*
x
);
virtual
void
do_MemBar
(
MemBar
*
x
);
};
#endif // SHARE_VM_C1_C1_CANONICALIZER_HPP
src/share/vm/c1/c1_GraphBuilder.cpp
浏览文件 @
05c0e659
...
...
@@ -1418,6 +1418,12 @@ void GraphBuilder::method_return(Value x) {
call_register_finalizer
();
}
bool
need_mem_bar
=
false
;
if
(
method
()
->
name
()
==
ciSymbol
::
object_initializer_name
()
&&
scope
()
->
wrote_final
())
{
need_mem_bar
=
true
;
}
// Check to see whether we are inlining. If so, Return
// instructions become Gotos to the continuation point.
if
(
continuation
()
!=
NULL
)
{
...
...
@@ -1437,6 +1443,10 @@ void GraphBuilder::method_return(Value x) {
monitorexit
(
state
()
->
lock_at
(
0
),
SynchronizationEntryBCI
);
}
if
(
need_mem_bar
)
{
append
(
new
MemBar
(
lir_membar_storestore
));
}
// State at end of inlined method is the state of the caller
// without the method parameters on stack, including the
// return value, if any, of the inlined method on operand stack.
...
...
@@ -1456,7 +1466,6 @@ void GraphBuilder::method_return(Value x) {
// the continuation point.
append_with_bci
(
goto_callee
,
scope_data
()
->
continuation
()
->
bci
());
incr_num_returns
();
return
;
}
...
...
@@ -1472,6 +1481,10 @@ void GraphBuilder::method_return(Value x) {
append_split
(
new
MonitorExit
(
receiver
,
state
()
->
unlock
()));
}
if
(
need_mem_bar
)
{
append
(
new
MemBar
(
lir_membar_storestore
));
}
append
(
new
Return
(
x
));
}
...
...
@@ -1504,6 +1517,9 @@ void GraphBuilder::access_field(Bytecodes::Code code) {
}
}
if
(
field
->
is_final
()
&&
(
code
==
Bytecodes
::
_putfield
))
{
scope
()
->
set_wrote_final
();
}
const
int
offset
=
!
needs_patching
?
field
->
offset
()
:
-
1
;
switch
(
code
)
{
...
...
src/share/vm/c1/c1_IR.cpp
浏览文件 @
05c0e659
...
...
@@ -141,6 +141,7 @@ IRScope::IRScope(Compilation* compilation, IRScope* caller, int caller_bci, ciMe
_xhandlers
=
new
XHandlers
(
method
);
_number_of_locks
=
0
;
_monitor_pairing_ok
=
method
->
has_balanced_monitors
();
_wrote_final
=
false
;
_start
=
NULL
;
if
(
osr_bci
==
-
1
)
{
...
...
src/share/vm/c1/c1_IR.hpp
浏览文件 @
05c0e659
...
...
@@ -149,6 +149,7 @@ class IRScope: public CompilationResourceObj {
XHandlers
*
_xhandlers
;
// the exception handlers
int
_number_of_locks
;
// the number of monitor lock slots needed
bool
_monitor_pairing_ok
;
// the monitor pairing info
bool
_wrote_final
;
// has written final field
BlockBegin
*
_start
;
// the start block, successsors are method entries
BitMap
_requires_phi_function
;
// bit is set if phi functions at loop headers are necessary for a local variable
...
...
@@ -181,6 +182,8 @@ class IRScope: public CompilationResourceObj {
void
set_min_number_of_locks
(
int
n
)
{
if
(
n
>
_number_of_locks
)
_number_of_locks
=
n
;
}
bool
monitor_pairing_ok
()
const
{
return
_monitor_pairing_ok
;
}
BlockBegin
*
start
()
const
{
return
_start
;
}
void
set_wrote_final
()
{
_wrote_final
=
true
;
}
bool
wrote_final
()
const
{
return
_wrote_final
;
}
};
...
...
src/share/vm/c1/c1_Instruction.hpp
浏览文件 @
05c0e659
...
...
@@ -107,6 +107,7 @@ class UnsafePrefetchWrite;
class
ProfileCall
;
class
ProfileInvoke
;
class
RuntimeCall
;
class
MemBar
;
// A Value is a reference to the instruction creating the value
typedef
Instruction
*
Value
;
...
...
@@ -204,6 +205,7 @@ class InstructionVisitor: public StackObj {
virtual
void
do_ProfileCall
(
ProfileCall
*
x
)
=
0
;
virtual
void
do_ProfileInvoke
(
ProfileInvoke
*
x
)
=
0
;
virtual
void
do_RuntimeCall
(
RuntimeCall
*
x
)
=
0
;
virtual
void
do_MemBar
(
MemBar
*
x
)
=
0
;
};
...
...
@@ -2351,6 +2353,23 @@ LEAF(ProfileInvoke, Instruction)
virtual
void
state_values_do
(
ValueVisitor
*
);
}
;
LEAF
(
MemBar
,
Instruction
)
private
:
LIR_Code
_code
;
public
:
MemBar
(
LIR_Code
code
)
:
Instruction
(
voidType
)
,
_code
(
code
)
{
pin
();
}
LIR_Code
code
()
{
return
_code
;
}
virtual
void
input_values_do
(
ValueVisitor
*
)
{}
}
;
class
BlockPair
:
public
CompilationResourceObj
{
private:
BlockBegin
*
_from
;
...
...
src/share/vm/c1/c1_InstructionPrinter.cpp
浏览文件 @
05c0e659
...
...
@@ -855,4 +855,20 @@ void InstructionPrinter::do_RuntimeCall(RuntimeCall* x) {
output
()
->
put
(
')'
);
}
void
InstructionPrinter
::
do_MemBar
(
MemBar
*
x
)
{
if
(
os
::
is_MP
())
{
LIR_Code
code
=
x
->
code
();
switch
(
code
)
{
case
lir_membar_acquire
:
output
()
->
print
(
"membar_acquire"
);
break
;
case
lir_membar_release
:
output
()
->
print
(
"membar_release"
);
break
;
case
lir_membar
:
output
()
->
print
(
"membar"
);
break
;
case
lir_membar_loadload
:
output
()
->
print
(
"membar_loadload"
);
break
;
case
lir_membar_storestore
:
output
()
->
print
(
"membar_storestore"
);
break
;
case
lir_membar_loadstore
:
output
()
->
print
(
"membar_loadstore"
);
break
;
case
lir_membar_storeload
:
output
()
->
print
(
"membar_storeload"
);
break
;
default
:
ShouldNotReachHere
();
break
;
}
}
}
#endif // PRODUCT
src/share/vm/c1/c1_InstructionPrinter.hpp
浏览文件 @
05c0e659
...
...
@@ -132,6 +132,7 @@ class InstructionPrinter: public InstructionVisitor {
virtual
void
do_ProfileCall
(
ProfileCall
*
x
);
virtual
void
do_ProfileInvoke
(
ProfileInvoke
*
x
);
virtual
void
do_RuntimeCall
(
RuntimeCall
*
x
);
virtual
void
do_MemBar
(
MemBar
*
x
);
};
#endif // PRODUCT
...
...
src/share/vm/c1/c1_LIR.cpp
浏览文件 @
05c0e659
...
...
@@ -464,6 +464,10 @@ void LIR_OpVisitState::visit(LIR_Op* op) {
case
lir_membar
:
// result and info always invalid
case
lir_membar_acquire
:
// result and info always invalid
case
lir_membar_release
:
// result and info always invalid
case
lir_membar_loadload
:
// result and info always invalid
case
lir_membar_storestore
:
// result and info always invalid
case
lir_membar_loadstore
:
// result and info always invalid
case
lir_membar_storeload
:
// result and info always invalid
{
assert
(
op
->
as_Op0
()
!=
NULL
,
"must be"
);
assert
(
op
->
_info
==
NULL
,
"info not used by this instruction"
);
...
...
@@ -1607,6 +1611,10 @@ const char * LIR_Op::name() const {
case
lir_membar
:
s
=
"membar"
;
break
;
case
lir_membar_acquire
:
s
=
"membar_acquire"
;
break
;
case
lir_membar_release
:
s
=
"membar_release"
;
break
;
case
lir_membar_loadload
:
s
=
"membar_loadload"
;
break
;
case
lir_membar_storestore
:
s
=
"membar_storestore"
;
break
;
case
lir_membar_loadstore
:
s
=
"membar_loadstore"
;
break
;
case
lir_membar_storeload
:
s
=
"membar_storeload"
;
break
;
case
lir_word_align
:
s
=
"word_align"
;
break
;
case
lir_label
:
s
=
"label"
;
break
;
case
lir_nop
:
s
=
"nop"
;
break
;
...
...
src/share/vm/c1/c1_LIR.hpp
浏览文件 @
05c0e659
...
...
@@ -866,6 +866,10 @@ enum LIR_Code {
,
lir_membar
,
lir_membar_acquire
,
lir_membar_release
,
lir_membar_loadload
,
lir_membar_storestore
,
lir_membar_loadstore
,
lir_membar_storeload
,
lir_get_thread
,
end_op0
,
begin_op1
...
...
@@ -1918,6 +1922,10 @@ class LIR_List: public CompilationResourceObj {
void
membar
()
{
append
(
new
LIR_Op0
(
lir_membar
));
}
void
membar_acquire
()
{
append
(
new
LIR_Op0
(
lir_membar_acquire
));
}
void
membar_release
()
{
append
(
new
LIR_Op0
(
lir_membar_release
));
}
void
membar_loadload
()
{
append
(
new
LIR_Op0
(
lir_membar_loadload
));
}
void
membar_storestore
()
{
append
(
new
LIR_Op0
(
lir_membar_storestore
));
}
void
membar_loadstore
()
{
append
(
new
LIR_Op0
(
lir_membar_loadstore
));
}
void
membar_storeload
()
{
append
(
new
LIR_Op0
(
lir_membar_storeload
));
}
void
nop
()
{
append
(
new
LIR_Op0
(
lir_nop
));
}
void
build_frame
()
{
append
(
new
LIR_Op0
(
lir_build_frame
));
}
...
...
src/share/vm/c1/c1_LIRAssembler.cpp
浏览文件 @
05c0e659
...
...
@@ -664,6 +664,22 @@ void LIR_Assembler::emit_op0(LIR_Op0* op) {
membar_release
();
break
;
case
lir_membar_loadload
:
membar_loadload
();
break
;
case
lir_membar_storestore
:
membar_storestore
();
break
;
case
lir_membar_loadstore
:
membar_loadstore
();
break
;
case
lir_membar_storeload
:
membar_storeload
();
break
;
case
lir_get_thread
:
get_thread
(
op
->
result_opr
());
break
;
...
...
src/share/vm/c1/c1_LIRAssembler.hpp
浏览文件 @
05c0e659
...
...
@@ -241,6 +241,10 @@ class LIR_Assembler: public CompilationResourceObj {
void
membar
();
void
membar_acquire
();
void
membar_release
();
void
membar_loadload
();
void
membar_storestore
();
void
membar_loadstore
();
void
membar_storeload
();
void
get_thread
(
LIR_Opr
result
);
void
verify_oop_map
(
CodeEmitInfo
*
info
);
...
...
src/share/vm/c1/c1_LIRGenerator.cpp
浏览文件 @
05c0e659
...
...
@@ -3165,3 +3165,20 @@ LIR_Opr LIRGenerator::call_runtime(BasicTypeArray* signature, LIRItemList* args,
}
return
result
;
}
void
LIRGenerator
::
do_MemBar
(
MemBar
*
x
)
{
if
(
os
::
is_MP
())
{
LIR_Code
code
=
x
->
code
();
switch
(
code
)
{
case
lir_membar_acquire
:
__
membar_acquire
();
break
;
case
lir_membar_release
:
__
membar_release
();
break
;
case
lir_membar
:
__
membar
();
break
;
case
lir_membar_loadload
:
__
membar_loadload
();
break
;
case
lir_membar_storestore
:
__
membar_storestore
();
break
;
case
lir_membar_loadstore
:
__
membar_loadstore
();
break
;
case
lir_membar_storeload
:
__
membar_storeload
();
break
;
default
:
ShouldNotReachHere
();
break
;
}
}
}
src/share/vm/c1/c1_LIRGenerator.hpp
浏览文件 @
05c0e659
...
...
@@ -525,6 +525,7 @@ class LIRGenerator: public InstructionVisitor, public BlockClosure {
virtual
void
do_ProfileCall
(
ProfileCall
*
x
);
virtual
void
do_ProfileInvoke
(
ProfileInvoke
*
x
);
virtual
void
do_RuntimeCall
(
RuntimeCall
*
x
);
virtual
void
do_MemBar
(
MemBar
*
x
);
};
...
...
src/share/vm/c1/c1_Optimizer.cpp
浏览文件 @
05c0e659
...
...
@@ -509,6 +509,7 @@ public:
void
do_ProfileCall
(
ProfileCall
*
x
);
void
do_ProfileInvoke
(
ProfileInvoke
*
x
);
void
do_RuntimeCall
(
RuntimeCall
*
x
);
void
do_MemBar
(
MemBar
*
x
);
};
...
...
@@ -678,6 +679,7 @@ void NullCheckVisitor::do_UnsafePrefetchWrite(UnsafePrefetchWrite* x) {}
void
NullCheckVisitor
::
do_ProfileCall
(
ProfileCall
*
x
)
{
nce
()
->
clear_last_explicit_null_check
();
}
void
NullCheckVisitor
::
do_ProfileInvoke
(
ProfileInvoke
*
x
)
{}
void
NullCheckVisitor
::
do_RuntimeCall
(
RuntimeCall
*
x
)
{}
void
NullCheckVisitor
::
do_MemBar
(
MemBar
*
x
)
{}
void
NullCheckEliminator
::
visit
(
Value
*
p
)
{
...
...
src/share/vm/c1/c1_ValueMap.hpp
浏览文件 @
05c0e659
...
...
@@ -200,6 +200,7 @@ class ValueNumberingVisitor: public InstructionVisitor {
void
do_ProfileCall
(
ProfileCall
*
x
)
{
/* nothing to do */
}
void
do_ProfileInvoke
(
ProfileInvoke
*
x
)
{
/* nothing to do */
};
void
do_RuntimeCall
(
RuntimeCall
*
x
)
{
/* nothing to do */
};
void
do_MemBar
(
MemBar
*
x
)
{
/* nothing to do */
};
};
...
...
src/share/vm/classfile/vmSymbols.hpp
浏览文件 @
05c0e659
/*
* Copyright (c) 1997, 201
1
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1997, 201
2
, 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
...
...
@@ -509,6 +509,9 @@
template(clear_name, "clear") \
template(trigger_method_signature, "(ILjava/lang/management/MemoryUsage;)V") \
template(startAgent_name, "startAgent") \
template(startRemoteAgent_name, "startRemoteManagementAgent") \
template(startLocalAgent_name, "startLocalManagementAgent") \
template(stopRemoteAgent_name, "stopRemoteManagementAgent") \
template(java_lang_management_ThreadInfo_constructor_signature, "(Ljava/lang/Thread;ILjava/lang/Object;Ljava/lang/Thread;JJJJ[Ljava/lang/StackTraceElement;)V") \
template(java_lang_management_ThreadInfo_with_locks_constructor_signature, "(Ljava/lang/Thread;ILjava/lang/Object;Ljava/lang/Thread;JJJJ[Ljava/lang/StackTraceElement;[Ljava/lang/Object;[I[Ljava/lang/Object;)V") \
template(long_long_long_long_void_signature, "(JJJJ)V") \
...
...
src/share/vm/oops/cpCacheOop.cpp
浏览文件 @
05c0e659
/*
* Copyright (c) 1998, 201
1
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1998, 201
2
, 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
...
...
@@ -504,17 +504,17 @@ bool ConstantPoolCacheEntry::is_interesting_method_entry(klassOop k) {
void
ConstantPoolCacheEntry
::
print
(
outputStream
*
st
,
int
index
)
const
{
// print separator
if
(
index
==
0
)
tty
->
print_cr
(
" -------------"
);
if
(
index
==
0
)
st
->
print_cr
(
" -------------"
);
// print entry
tty
->
print
(
"%3d ("
PTR_FORMAT
") "
,
index
,
(
intptr_t
)
this
);
st
->
print
(
"%3d ("
PTR_FORMAT
") "
,
index
,
(
intptr_t
)
this
);
if
(
is_secondary_entry
())
tty
->
print_cr
(
"[%5d|secondary]"
,
main_entry_index
());
st
->
print_cr
(
"[%5d|secondary]"
,
main_entry_index
());
else
tty
->
print_cr
(
"[%02x|%02x|%5d]"
,
bytecode_2
(),
bytecode_1
(),
constant_pool_index
());
tty
->
print_cr
(
" [ "
PTR_FORMAT
"]"
,
(
intptr_t
)(
oop
)
_f1
);
tty
->
print_cr
(
" [ "
PTR_FORMAT
"]"
,
(
intptr_t
)
_f2
);
tty
->
print_cr
(
" [ "
PTR_FORMAT
"]"
,
(
intptr_t
)
_flags
);
tty
->
print_cr
(
" -------------"
);
st
->
print_cr
(
"[%02x|%02x|%5d]"
,
bytecode_2
(),
bytecode_1
(),
constant_pool_index
());
st
->
print_cr
(
" [ "
PTR_FORMAT
"]"
,
(
intptr_t
)(
oop
)
_f1
);
st
->
print_cr
(
" [ "
PTR_FORMAT
"]"
,
(
intptr_t
)
_f2
);
st
->
print_cr
(
" [ "
PTR_FORMAT
"]"
,
(
intptr_t
)
_flags
);
st
->
print_cr
(
" -------------"
);
}
void
ConstantPoolCacheEntry
::
verify
(
outputStream
*
st
)
const
{
...
...
src/share/vm/services/diagnosticCommand.cpp
浏览文件 @
05c0e659
/*
* Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2011,
2012,
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
...
...
@@ -49,6 +49,11 @@ void DCmdRegistrant::register_dcmds(){
DCmdFactory
::
register_DCmdFactory
(
new
DCmdFactoryImpl
<
ClassHistogramDCmd
>
(
true
,
false
));
DCmdFactory
::
register_DCmdFactory
(
new
DCmdFactoryImpl
<
ThreadDumpDCmd
>
(
true
,
false
));
//Enhanced JMX Agent Support
DCmdFactory
::
register_DCmdFactory
(
new
DCmdFactoryImpl
<
JMXStartRemoteDCmd
>
(
true
,
false
));
DCmdFactory
::
register_DCmdFactory
(
new
DCmdFactoryImpl
<
JMXStartLocalDCmd
>
(
true
,
false
));
DCmdFactory
::
register_DCmdFactory
(
new
DCmdFactoryImpl
<
JMXStopRemoteDCmd
>
(
true
,
false
));
}
#ifndef HAVE_EXTRA_DCMD
...
...
@@ -344,3 +349,185 @@ int ThreadDumpDCmd::num_arguments() {
return
0
;
}
}
// Enhanced JMX Agent support
JMXStartRemoteDCmd
::
JMXStartRemoteDCmd
(
outputStream
*
output
,
bool
heap_allocated
)
:
DCmdWithParser
(
output
,
heap_allocated
),
_config_file
(
"config.file"
,
"set com.sun.management.config.file"
,
"STRING"
,
false
),
_jmxremote_port
(
"jmxremote.port"
,
"set com.sun.management.jmxremote.port"
,
"STRING"
,
false
),
_jmxremote_rmi_port
(
"jmxremote.rmi.port"
,
"set com.sun.management.jmxremote.rmi.port"
,
"STRING"
,
false
),
_jmxremote_ssl
(
"jmxremote.ssl"
,
"set com.sun.management.jmxremote.ssl"
,
"STRING"
,
false
),
_jmxremote_registry_ssl
(
"jmxremote.registry.ssl"
,
"set com.sun.management.jmxremote.registry.ssl"
,
"STRING"
,
false
),
_jmxremote_authenticate
(
"jmxremote.authenticate"
,
"set com.sun.management.jmxremote.authenticate"
,
"STRING"
,
false
),
_jmxremote_password_file
(
"jmxremote.password.file"
,
"set com.sun.management.jmxremote.password.file"
,
"STRING"
,
false
),
_jmxremote_access_file
(
"jmxremote.access.file"
,
"set com.sun.management.jmxremote.access.file"
,
"STRING"
,
false
),
_jmxremote_login_config
(
"jmxremote.login.config"
,
"set com.sun.management.jmxremote.login.config"
,
"STRING"
,
false
),
_jmxremote_ssl_enabled_cipher_suites
(
"jmxremote.ssl.enabled.cipher.suites"
,
"set com.sun.management.jmxremote.ssl.enabled.cipher.suite"
,
"STRING"
,
false
),
_jmxremote_ssl_enabled_protocols
(
"jmxremote.ssl.enabled.protocols"
,
"set com.sun.management.jmxremote.ssl.enabled.protocols"
,
"STRING"
,
false
),
_jmxremote_ssl_need_client_auth
(
"jmxremote.ssl.need.client.auth"
,
"set com.sun.management.jmxremote.need.client.auth"
,
"STRING"
,
false
),
_jmxremote_ssl_config_file
(
"jmxremote.ssl.config.file"
,
"set com.sun.management.jmxremote.ssl_config_file"
,
"STRING"
,
false
)
{
_dcmdparser
.
add_dcmd_option
(
&
_config_file
);
_dcmdparser
.
add_dcmd_option
(
&
_jmxremote_port
);
_dcmdparser
.
add_dcmd_option
(
&
_jmxremote_rmi_port
);
_dcmdparser
.
add_dcmd_option
(
&
_jmxremote_ssl
);
_dcmdparser
.
add_dcmd_option
(
&
_jmxremote_registry_ssl
);
_dcmdparser
.
add_dcmd_option
(
&
_jmxremote_authenticate
);
_dcmdparser
.
add_dcmd_option
(
&
_jmxremote_password_file
);
_dcmdparser
.
add_dcmd_option
(
&
_jmxremote_access_file
);
_dcmdparser
.
add_dcmd_option
(
&
_jmxremote_login_config
);
_dcmdparser
.
add_dcmd_option
(
&
_jmxremote_ssl_enabled_cipher_suites
);
_dcmdparser
.
add_dcmd_option
(
&
_jmxremote_ssl_enabled_protocols
);
_dcmdparser
.
add_dcmd_option
(
&
_jmxremote_ssl_need_client_auth
);
_dcmdparser
.
add_dcmd_option
(
&
_jmxremote_ssl_config_file
);
}
int
JMXStartRemoteDCmd
::
num_arguments
()
{
ResourceMark
rm
;
JMXStartRemoteDCmd
*
dcmd
=
new
JMXStartRemoteDCmd
(
NULL
,
false
);
if
(
dcmd
!=
NULL
)
{
DCmdMark
mark
(
dcmd
);
return
dcmd
->
_dcmdparser
.
num_arguments
();
}
else
{
return
0
;
}
}
void
JMXStartRemoteDCmd
::
execute
(
TRAPS
)
{
ResourceMark
rm
(
THREAD
);
HandleMark
hm
(
THREAD
);
// Load and initialize the sun.management.Agent class
// invoke startRemoteManagementAgent(string) method to start
// the remote management server.
// throw java.lang.NoSuchMethodError if the method doesn't exist
Handle
loader
=
Handle
(
THREAD
,
SystemDictionary
::
java_system_loader
());
klassOop
k
=
SystemDictionary
::
resolve_or_fail
(
vmSymbols
::
sun_management_Agent
(),
loader
,
Handle
(),
true
,
CHECK
);
instanceKlassHandle
ik
(
THREAD
,
k
);
JavaValue
result
(
T_VOID
);
// Pass all command line arguments to java as key=value,...
// All checks are done on java side
int
len
=
0
;
stringStream
options
;
char
comma
[
2
]
=
{
0
,
0
};
// Leave default values on Agent.class side and pass only
// agruments explicitly set by user. All arguments passed
// to jcmd override properties with the same name set by
// command line with -D or by managmenent.properties
// file.
#define PUT_OPTION(a) \
if ( (a).is_set() ){ \
options.print("%scom.sun.management.%s=%s", comma, (a).name(), (a).value()); \
comma[0] = ','; \
}
PUT_OPTION
(
_config_file
);
PUT_OPTION
(
_jmxremote_port
);
PUT_OPTION
(
_jmxremote_rmi_port
);
PUT_OPTION
(
_jmxremote_ssl
);
PUT_OPTION
(
_jmxremote_registry_ssl
);
PUT_OPTION
(
_jmxremote_authenticate
);
PUT_OPTION
(
_jmxremote_password_file
);
PUT_OPTION
(
_jmxremote_access_file
);
PUT_OPTION
(
_jmxremote_login_config
);
PUT_OPTION
(
_jmxremote_ssl_enabled_cipher_suites
);
PUT_OPTION
(
_jmxremote_ssl_enabled_protocols
);
PUT_OPTION
(
_jmxremote_ssl_need_client_auth
);
PUT_OPTION
(
_jmxremote_ssl_config_file
);
#undef PUT_OPTION
Handle
str
=
java_lang_String
::
create_from_str
(
options
.
as_string
(),
CHECK
);
JavaCalls
::
call_static
(
&
result
,
ik
,
vmSymbols
::
startRemoteAgent_name
(),
vmSymbols
::
string_void_signature
(),
str
,
CHECK
);
}
JMXStartLocalDCmd
::
JMXStartLocalDCmd
(
outputStream
*
output
,
bool
heap_allocated
)
:
DCmd
(
output
,
heap_allocated
)
{
// do nothing
}
void
JMXStartLocalDCmd
::
execute
(
TRAPS
)
{
ResourceMark
rm
(
THREAD
);
HandleMark
hm
(
THREAD
);
// Load and initialize the sun.management.Agent class
// invoke startLocalManagementAgent(void) method to start
// the local management server
// throw java.lang.NoSuchMethodError if method doesn't exist
Handle
loader
=
Handle
(
THREAD
,
SystemDictionary
::
java_system_loader
());
klassOop
k
=
SystemDictionary
::
resolve_or_fail
(
vmSymbols
::
sun_management_Agent
(),
loader
,
Handle
(),
true
,
CHECK
);
instanceKlassHandle
ik
(
THREAD
,
k
);
JavaValue
result
(
T_VOID
);
JavaCalls
::
call_static
(
&
result
,
ik
,
vmSymbols
::
startLocalAgent_name
(),
vmSymbols
::
void_method_signature
(),
CHECK
);
}
void
JMXStopRemoteDCmd
::
execute
(
TRAPS
)
{
ResourceMark
rm
(
THREAD
);
HandleMark
hm
(
THREAD
);
// Load and initialize the sun.management.Agent class
// invoke stopRemoteManagementAgent method to stop the
// management server
// throw java.lang.NoSuchMethodError if method doesn't exist
Handle
loader
=
Handle
(
THREAD
,
SystemDictionary
::
java_system_loader
());
klassOop
k
=
SystemDictionary
::
resolve_or_fail
(
vmSymbols
::
sun_management_Agent
(),
loader
,
Handle
(),
true
,
CHECK
);
instanceKlassHandle
ik
(
THREAD
,
k
);
JavaValue
result
(
T_VOID
);
JavaCalls
::
call_static
(
&
result
,
ik
,
vmSymbols
::
stopRemoteAgent_name
(),
vmSymbols
::
void_method_signature
(),
CHECK
);
}
src/share/vm/services/diagnosticCommand.hpp
浏览文件 @
05c0e659
/*
* Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2011,
2012,
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
...
...
@@ -214,4 +214,82 @@ public:
virtual
void
execute
(
TRAPS
);
};
// Enhanced JMX Agent support
class
JMXStartRemoteDCmd
:
public
DCmdWithParser
{
// Explicitly list all properties that could be
// passed to Agent.startRemoteManagementAgent()
// com.sun.management is omitted
DCmdArgument
<
char
*>
_config_file
;
DCmdArgument
<
char
*>
_jmxremote_port
;
DCmdArgument
<
char
*>
_jmxremote_rmi_port
;
DCmdArgument
<
char
*>
_jmxremote_ssl
;
DCmdArgument
<
char
*>
_jmxremote_registry_ssl
;
DCmdArgument
<
char
*>
_jmxremote_authenticate
;
DCmdArgument
<
char
*>
_jmxremote_password_file
;
DCmdArgument
<
char
*>
_jmxremote_access_file
;
DCmdArgument
<
char
*>
_jmxremote_login_config
;
DCmdArgument
<
char
*>
_jmxremote_ssl_enabled_cipher_suites
;
DCmdArgument
<
char
*>
_jmxremote_ssl_enabled_protocols
;
DCmdArgument
<
char
*>
_jmxremote_ssl_need_client_auth
;
DCmdArgument
<
char
*>
_jmxremote_ssl_config_file
;
public:
JMXStartRemoteDCmd
(
outputStream
*
output
,
bool
heap_allocated
);
static
const
char
*
name
()
{
return
"ManagementAgent.start"
;
}
static
const
char
*
description
()
{
return
"Start remote management agent."
;
}
static
int
num_arguments
();
virtual
void
execute
(
TRAPS
);
};
class
JMXStartLocalDCmd
:
public
DCmd
{
// Explicitly request start of local agent,
// it will not be started by start dcmd
public:
JMXStartLocalDCmd
(
outputStream
*
output
,
bool
heap_allocated
);
static
const
char
*
name
()
{
return
"ManagementAgent.start_local"
;
}
static
const
char
*
description
()
{
return
"Start local management agent."
;
}
virtual
void
execute
(
TRAPS
);
};
class
JMXStopRemoteDCmd
:
public
DCmd
{
public:
JMXStopRemoteDCmd
(
outputStream
*
output
,
bool
heap_allocated
)
:
DCmd
(
output
,
heap_allocated
)
{
// Do Nothing
}
static
const
char
*
name
()
{
return
"ManagementAgent.stop"
;
}
static
const
char
*
description
()
{
return
"Stop remote management agent."
;
}
virtual
void
execute
(
TRAPS
);
};
#endif // SHARE_VM_SERVICES_DIAGNOSTICCOMMAND_HPP
src/share/vm/utilities/globalDefinitions_gcc.hpp
浏览文件 @
05c0e659
/*
* Copyright (c) 1998, 201
1
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1998, 201
2
, 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
...
...
@@ -87,14 +87,7 @@
#endif
#ifdef __APPLE__
#include <AvailabilityMacros.h>
#if (MAC_OS_X_VERSION_MAX_ALLOWED <= MAC_OS_X_VERSION_10_4)
// Mac OS X 10.4 defines EFL_AC and EFL_ID,
// which conflict with hotspot variable names.
//
// This has been fixed in Mac OS X 10.5.
#undef EFL_AC
#undef EFL_ID
#endif
#include <mach/mach.h>
#endif
#include <sys/time.h>
#endif // LINUX || _ALLBSD_SOURCE
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录