Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell11
提交
74e1e065
D
dragonwell11
项目概览
openanolis
/
dragonwell11
通知
7
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
dragonwell11
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
74e1e065
编写于
7月 05, 2017
作者:
D
duke
浏览文件
操作
浏览文件
下载
差异文件
Merge
上级
afb72b42
fe430430
变更
259
展开全部
隐藏空白更改
内联
并排
Showing
259 changed file
with
3935 addition
and
1108 deletion
+3935
-1108
.hgtags-top-repo
.hgtags-top-repo
+1
-0
corba/.hgtags
corba/.hgtags
+1
-0
hotspot/.hgtags
hotspot/.hgtags
+1
-0
hotspot/make/hotspot_version
hotspot/make/hotspot_version
+1
-1
hotspot/src/cpu/sparc/vm/interpreter_sparc.cpp
hotspot/src/cpu/sparc/vm/interpreter_sparc.cpp
+6
-1
hotspot/src/cpu/sparc/vm/stubGenerator_sparc.cpp
hotspot/src/cpu/sparc/vm/stubGenerator_sparc.cpp
+4
-1
hotspot/src/cpu/x86/vm/stubGenerator_x86_32.cpp
hotspot/src/cpu/x86/vm/stubGenerator_x86_32.cpp
+51
-1
hotspot/src/cpu/x86/vm/stubGenerator_x86_64.cpp
hotspot/src/cpu/x86/vm/stubGenerator_x86_64.cpp
+76
-1
hotspot/src/cpu/x86/vm/templateInterpreter_x86_32.cpp
hotspot/src/cpu/x86/vm/templateInterpreter_x86_32.cpp
+18
-1
hotspot/src/cpu/x86/vm/templateInterpreter_x86_64.cpp
hotspot/src/cpu/x86/vm/templateInterpreter_x86_64.cpp
+18
-1
hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp
hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp
+16
-2
hotspot/src/share/vm/c1/c1_LIR.hpp
hotspot/src/share/vm/c1/c1_LIR.hpp
+2
-2
hotspot/src/share/vm/ci/ciField.cpp
hotspot/src/share/vm/ci/ciField.cpp
+13
-1
hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp
...pot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp
+1
-0
hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp
...pot/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp
+4
-0
hotspot/src/share/vm/gc_implementation/g1/ptrQueue.cpp
hotspot/src/share/vm/gc_implementation/g1/ptrQueue.cpp
+35
-1
hotspot/src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.cpp
..._implementation/parallelScavenge/parallelScavengeHeap.cpp
+2
-4
hotspot/src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.hpp
..._implementation/parallelScavenge/parallelScavengeHeap.hpp
+4
-1
hotspot/src/share/vm/gc_interface/collectedHeap.cpp
hotspot/src/share/vm/gc_interface/collectedHeap.cpp
+59
-42
hotspot/src/share/vm/gc_interface/collectedHeap.hpp
hotspot/src/share/vm/gc_interface/collectedHeap.hpp
+32
-15
hotspot/src/share/vm/includeDB_compiler2
hotspot/src/share/vm/includeDB_compiler2
+1
-0
hotspot/src/share/vm/interpreter/abstractInterpreter.hpp
hotspot/src/share/vm/interpreter/abstractInterpreter.hpp
+3
-1
hotspot/src/share/vm/memory/genCollectedHeap.cpp
hotspot/src/share/vm/memory/genCollectedHeap.cpp
+3
-0
hotspot/src/share/vm/memory/genCollectedHeap.hpp
hotspot/src/share/vm/memory/genCollectedHeap.hpp
+4
-0
hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp
hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp
+1
-1
hotspot/src/share/vm/memory/threadLocalAllocBuffer.inline.hpp
...pot/src/share/vm/memory/threadLocalAllocBuffer.inline.hpp
+8
-3
hotspot/src/share/vm/opto/c2_globals.hpp
hotspot/src/share/vm/opto/c2_globals.hpp
+6
-0
hotspot/src/share/vm/opto/compile.cpp
hotspot/src/share/vm/opto/compile.cpp
+26
-4
hotspot/src/share/vm/opto/compile.hpp
hotspot/src/share/vm/opto/compile.hpp
+16
-0
hotspot/src/share/vm/opto/graphKit.cpp
hotspot/src/share/vm/opto/graphKit.cpp
+4
-3
hotspot/src/share/vm/opto/loopTransform.cpp
hotspot/src/share/vm/opto/loopTransform.cpp
+584
-7
hotspot/src/share/vm/opto/loopnode.cpp
hotspot/src/share/vm/opto/loopnode.cpp
+77
-4
hotspot/src/share/vm/opto/loopnode.hpp
hotspot/src/share/vm/opto/loopnode.hpp
+50
-10
hotspot/src/share/vm/opto/parse.hpp
hotspot/src/share/vm/opto/parse.hpp
+6
-1
hotspot/src/share/vm/opto/parse1.cpp
hotspot/src/share/vm/opto/parse1.cpp
+35
-0
hotspot/src/share/vm/opto/parse2.cpp
hotspot/src/share/vm/opto/parse2.cpp
+33
-3
hotspot/src/share/vm/opto/runtime.cpp
hotspot/src/share/vm/opto/runtime.cpp
+4
-4
hotspot/src/share/vm/opto/runtime.hpp
hotspot/src/share/vm/opto/runtime.hpp
+3
-2
hotspot/src/share/vm/opto/split_if.cpp
hotspot/src/share/vm/opto/split_if.cpp
+1
-0
hotspot/src/share/vm/opto/subnode.cpp
hotspot/src/share/vm/opto/subnode.cpp
+8
-14
hotspot/src/share/vm/runtime/compilationPolicy.cpp
hotspot/src/share/vm/runtime/compilationPolicy.cpp
+11
-1
hotspot/src/share/vm/runtime/deoptimization.cpp
hotspot/src/share/vm/runtime/deoptimization.cpp
+2
-1
hotspot/src/share/vm/runtime/deoptimization.hpp
hotspot/src/share/vm/runtime/deoptimization.hpp
+1
-0
hotspot/src/share/vm/runtime/globals.hpp
hotspot/src/share/vm/runtime/globals.hpp
+7
-0
hotspot/src/share/vm/runtime/stubRoutines.cpp
hotspot/src/share/vm/runtime/stubRoutines.cpp
+9
-1
hotspot/src/share/vm/runtime/stubRoutines.hpp
hotspot/src/share/vm/runtime/stubRoutines.hpp
+44
-1
hotspot/src/share/vm/runtime/thread.cpp
hotspot/src/share/vm/runtime/thread.cpp
+2
-3
hotspot/src/share/vm/runtime/vmStructs.cpp
hotspot/src/share/vm/runtime/vmStructs.cpp
+1
-0
hotspot/test/compiler/6877254/Test.java
hotspot/test/compiler/6877254/Test.java
+1
-1
hotspot/test/compiler/6895383/Test.java
hotspot/test/compiler/6895383/Test.java
+3
-0
hotspot/test/compiler/6896727/Test.java
hotspot/test/compiler/6896727/Test.java
+1
-1
jaxp/.hgtags
jaxp/.hgtags
+1
-0
jdk/.hgtags
jdk/.hgtags
+1
-0
jdk/make/com/sun/crypto/provider/Makefile
jdk/make/com/sun/crypto/provider/Makefile
+1
-1
jdk/make/com/sun/java/pack/Makefile
jdk/make/com/sun/java/pack/Makefile
+6
-1
jdk/make/com/sun/java/pack/prop/Makefile
jdk/make/com/sun/java/pack/prop/Makefile
+1
-0
jdk/make/com/sun/jndi/cosnaming/Makefile
jdk/make/com/sun/jndi/cosnaming/Makefile
+1
-0
jdk/make/com/sun/jndi/dns/Makefile
jdk/make/com/sun/jndi/dns/Makefile
+1
-0
jdk/make/com/sun/jndi/ldap/Makefile
jdk/make/com/sun/jndi/ldap/Makefile
+1
-0
jdk/make/com/sun/jndi/rmi/registry/Makefile
jdk/make/com/sun/jndi/rmi/registry/Makefile
+1
-0
jdk/make/com/sun/nio/sctp/FILES_java.gmk
jdk/make/com/sun/nio/sctp/FILES_java.gmk
+1
-2
jdk/make/com/sun/nio/sctp/Makefile
jdk/make/com/sun/nio/sctp/Makefile
+1
-0
jdk/make/com/sun/nio/sctp/mapfile-vers
jdk/make/com/sun/nio/sctp/mapfile-vers
+5
-0
jdk/make/com/sun/org/apache/xml/Makefile
jdk/make/com/sun/org/apache/xml/Makefile
+1
-0
jdk/make/com/sun/rowset/Makefile
jdk/make/com/sun/rowset/Makefile
+1
-0
jdk/make/com/sun/script/Makefile
jdk/make/com/sun/script/Makefile
+1
-0
jdk/make/com/sun/security/auth/module/Makefile
jdk/make/com/sun/security/auth/module/Makefile
+1
-0
jdk/make/com/sun/servicetag/Makefile
jdk/make/com/sun/servicetag/Makefile
+2
-1
jdk/make/com/sun/tools/attach/Makefile
jdk/make/com/sun/tools/attach/Makefile
+2
-0
jdk/make/common/Defs.gmk
jdk/make/common/Defs.gmk
+99
-7
jdk/make/common/Demo.gmk
jdk/make/common/Demo.gmk
+2
-0
jdk/make/common/Library.gmk
jdk/make/common/Library.gmk
+12
-0
jdk/make/common/Modules.gmk
jdk/make/common/Modules.gmk
+48
-9
jdk/make/common/Program.gmk
jdk/make/common/Program.gmk
+3
-16
jdk/make/common/internal/BinaryPlugs.gmk
jdk/make/common/internal/BinaryPlugs.gmk
+2
-2
jdk/make/common/internal/Resources.gmk
jdk/make/common/internal/Resources.gmk
+1
-1
jdk/make/common/shared/Sanity.gmk
jdk/make/common/shared/Sanity.gmk
+2
-2
jdk/make/java/awt/Makefile
jdk/make/java/awt/Makefile
+1
-0
jdk/make/java/fdlibm/Makefile
jdk/make/java/fdlibm/Makefile
+1
-0
jdk/make/java/hpi/native/Makefile
jdk/make/java/hpi/native/Makefile
+1
-0
jdk/make/java/hpi/windows/Makefile
jdk/make/java/hpi/windows/Makefile
+3
-2
jdk/make/java/instrument/Makefile
jdk/make/java/instrument/Makefile
+1
-0
jdk/make/java/java/Makefile
jdk/make/java/java/Makefile
+6
-4
jdk/make/java/java_crw_demo/Makefile
jdk/make/java/java_crw_demo/Makefile
+2
-0
jdk/make/java/java_hprof_demo/Makefile
jdk/make/java/java_hprof_demo/Makefile
+1
-0
jdk/make/java/jli/Makefile
jdk/make/java/jli/Makefile
+1
-0
jdk/make/java/jvm/Makefile
jdk/make/java/jvm/Makefile
+19
-3
jdk/make/java/logging/Makefile
jdk/make/java/logging/Makefile
+1
-0
jdk/make/java/main/java/Makefile
jdk/make/java/main/java/Makefile
+1
-0
jdk/make/java/main/javaw/Makefile
jdk/make/java/main/javaw/Makefile
+1
-0
jdk/make/java/management/Makefile
jdk/make/java/management/Makefile
+2
-1
jdk/make/java/net/Makefile
jdk/make/java/net/Makefile
+2
-2
jdk/make/java/nio/Makefile
jdk/make/java/nio/Makefile
+2
-1
jdk/make/java/npt/Makefile
jdk/make/java/npt/Makefile
+3
-0
jdk/make/java/redist/Makefile
jdk/make/java/redist/Makefile
+16
-91
jdk/make/java/redist/fonts/Makefile
jdk/make/java/redist/fonts/Makefile
+56
-1
jdk/make/java/redist/sajdi/Makefile
jdk/make/java/redist/sajdi/Makefile
+87
-0
jdk/make/java/security/Makefile
jdk/make/java/security/Makefile
+3
-12
jdk/make/java/sql/Makefile
jdk/make/java/sql/Makefile
+1
-0
jdk/make/java/text/Makefile
jdk/make/java/text/Makefile
+1
-1
jdk/make/java/verify/Makefile
jdk/make/java/verify/Makefile
+1
-0
jdk/make/java/zip/Makefile
jdk/make/java/zip/Makefile
+1
-0
jdk/make/javax/crypto/Makefile
jdk/make/javax/crypto/Makefile
+19
-6
jdk/make/javax/imageio/Makefile
jdk/make/javax/imageio/Makefile
+1
-0
jdk/make/javax/print/Makefile
jdk/make/javax/print/Makefile
+1
-0
jdk/make/javax/sound/Makefile
jdk/make/javax/sound/Makefile
+1
-0
jdk/make/javax/sound/jsoundalsa/Makefile
jdk/make/javax/sound/jsoundalsa/Makefile
+1
-0
jdk/make/javax/sound/jsoundds/Makefile
jdk/make/javax/sound/jsoundds/Makefile
+1
-0
jdk/make/javax/sql/Makefile
jdk/make/javax/sql/Makefile
+1
-0
jdk/make/javax/swing/Makefile
jdk/make/javax/swing/Makefile
+1
-0
jdk/make/javax/swing/plaf/Makefile
jdk/make/javax/swing/plaf/Makefile
+1
-0
jdk/make/jpda/back/Makefile
jdk/make/jpda/back/Makefile
+1
-0
jdk/make/jpda/transport/Makefile
jdk/make/jpda/transport/Makefile
+1
-0
jdk/make/jpda/transport/shmem/Makefile
jdk/make/jpda/transport/shmem/Makefile
+1
-0
jdk/make/jpda/transport/socket/Makefile
jdk/make/jpda/transport/socket/Makefile
+1
-0
jdk/make/jpda/tty/Makefile
jdk/make/jpda/tty/Makefile
+1
-0
jdk/make/launchers/Makefile
jdk/make/launchers/Makefile
+18
-35
jdk/make/mkdemo/jvmti/Makefile
jdk/make/mkdemo/jvmti/Makefile
+1
-0
jdk/make/mkdemo/management/Makefile
jdk/make/mkdemo/management/Makefile
+1
-0
jdk/make/mksample/dtrace/Makefile
jdk/make/mksample/dtrace/Makefile
+1
-0
jdk/make/mksample/jmx/jmx-scandir/Makefile
jdk/make/mksample/jmx/jmx-scandir/Makefile
+1
-0
jdk/make/mksample/nbproject/Makefile
jdk/make/mksample/nbproject/Makefile
+1
-0
jdk/make/mksample/nio/file/Makefile
jdk/make/mksample/nio/file/Makefile
+1
-0
jdk/make/mksample/nio/multicast/Makefile
jdk/make/mksample/nio/multicast/Makefile
+1
-0
jdk/make/mksample/nio/server/Makefile
jdk/make/mksample/nio/server/Makefile
+1
-0
jdk/make/mksample/scripting/scriptpad/Makefile
jdk/make/mksample/scripting/scriptpad/Makefile
+1
-0
jdk/make/mksample/webservices/EbayClient/Makefile
jdk/make/mksample/webservices/EbayClient/Makefile
+1
-0
jdk/make/mksample/webservices/EbayServer/Makefile
jdk/make/mksample/webservices/EbayServer/Makefile
+1
-0
jdk/make/modules/Makefile
jdk/make/modules/Makefile
+72
-83
jdk/make/modules/modules.config
jdk/make/modules/modules.config
+104
-33
jdk/make/modules/optional.depconfig
jdk/make/modules/optional.depconfig
+25
-0
jdk/make/modules/tools/Makefile
jdk/make/modules/tools/Makefile
+99
-29
jdk/make/modules/tools/build.xml
jdk/make/modules/tools/build.xml
+20
-24
jdk/make/modules/tools/nbproject/project.properties
jdk/make/modules/tools/nbproject/project.properties
+17
-23
jdk/make/modules/tools/nbproject/project.xml
jdk/make/modules/tools/nbproject/project.xml
+23
-29
jdk/make/modules/tools/src/com/sun/classanalyzer/Module.java
jdk/make/modules/tools/src/com/sun/classanalyzer/Module.java
+3
-3
jdk/make/sun/applet/Makefile
jdk/make/sun/applet/Makefile
+1
-0
jdk/make/sun/awt/Makefile
jdk/make/sun/awt/Makefile
+6
-4
jdk/make/sun/cmm/Makefile
jdk/make/sun/cmm/Makefile
+11
-20
jdk/make/sun/cmm/kcms/Makefile
jdk/make/sun/cmm/kcms/Makefile
+1
-0
jdk/make/sun/cmm/lcms/Makefile
jdk/make/sun/cmm/lcms/Makefile
+1
-0
jdk/make/sun/dcpr/Makefile
jdk/make/sun/dcpr/Makefile
+1
-0
jdk/make/sun/font/Makefile
jdk/make/sun/font/Makefile
+11
-6
jdk/make/sun/font/t2k/Makefile
jdk/make/sun/font/t2k/Makefile
+1
-0
jdk/make/sun/headless/Makefile
jdk/make/sun/headless/Makefile
+1
-0
jdk/make/sun/image/generic/Makefile
jdk/make/sun/image/generic/Makefile
+1
-0
jdk/make/sun/image/vis/Makefile
jdk/make/sun/image/vis/Makefile
+1
-0
jdk/make/sun/jar/Makefile
jdk/make/sun/jar/Makefile
+1
-0
jdk/make/sun/javazic/Makefile
jdk/make/sun/javazic/Makefile
+2
-0
jdk/make/sun/jawt/Makefile
jdk/make/sun/jawt/Makefile
+1
-0
jdk/make/sun/jconsole/Makefile
jdk/make/sun/jconsole/Makefile
+2
-1
jdk/make/sun/jdbc/Makefile
jdk/make/sun/jdbc/Makefile
+1
-0
jdk/make/sun/jdga/Makefile
jdk/make/sun/jdga/Makefile
+1
-0
jdk/make/sun/jkernel/Makefile
jdk/make/sun/jkernel/Makefile
+1
-0
jdk/make/sun/jpeg/Makefile
jdk/make/sun/jpeg/Makefile
+1
-0
jdk/make/sun/launcher/Makefile
jdk/make/sun/launcher/Makefile
+1
-0
jdk/make/sun/management/Makefile
jdk/make/sun/management/Makefile
+6
-4
jdk/make/sun/native2ascii/Makefile
jdk/make/sun/native2ascii/Makefile
+1
-0
jdk/make/sun/net/others/Makefile
jdk/make/sun/net/others/Makefile
+1
-0
jdk/make/sun/net/spi/nameservice/dns/Makefile
jdk/make/sun/net/spi/nameservice/dns/Makefile
+3
-0
jdk/make/sun/nio/Makefile
jdk/make/sun/nio/Makefile
+4
-80
jdk/make/sun/nio/cs/FILES_java.gmk
jdk/make/sun/nio/cs/FILES_java.gmk
+0
-0
jdk/make/sun/nio/cs/Makefile
jdk/make/sun/nio/cs/Makefile
+112
-0
jdk/make/sun/org/mozilla/javascript/Makefile
jdk/make/sun/org/mozilla/javascript/Makefile
+1
-0
jdk/make/sun/pisces/Makefile
jdk/make/sun/pisces/Makefile
+1
-0
jdk/make/sun/rmi/cgi/Makefile
jdk/make/sun/rmi/cgi/Makefile
+2
-0
jdk/make/sun/rmi/oldtools/Makefile
jdk/make/sun/rmi/oldtools/Makefile
+1
-0
jdk/make/sun/rmi/registry/Makefile
jdk/make/sun/rmi/registry/Makefile
+5
-0
jdk/make/sun/rmi/rmi/Makefile
jdk/make/sun/rmi/rmi/Makefile
+2
-1
jdk/make/sun/rmi/rmic/Makefile
jdk/make/sun/rmi/rmic/Makefile
+1
-0
jdk/make/sun/rmi/rmid/Makefile
jdk/make/sun/rmi/rmid/Makefile
+4
-2
jdk/make/sun/security/ec/Makefile
jdk/make/sun/security/ec/Makefile
+2
-1
jdk/make/sun/security/jgss/wrapper/Makefile
jdk/make/sun/security/jgss/wrapper/Makefile
+1
-0
jdk/make/sun/security/krb5/Makefile
jdk/make/sun/security/krb5/Makefile
+8
-0
jdk/make/sun/security/mscapi/Makefile
jdk/make/sun/security/mscapi/Makefile
+2
-1
jdk/make/sun/security/pkcs11/Makefile
jdk/make/sun/security/pkcs11/Makefile
+20
-3
jdk/make/sun/security/smartcardio/Makefile
jdk/make/sun/security/smartcardio/Makefile
+1
-0
jdk/make/sun/security/tools/Makefile
jdk/make/sun/security/tools/Makefile
+5
-0
jdk/make/sun/serialver/Makefile
jdk/make/sun/serialver/Makefile
+1
-0
jdk/make/sun/splashscreen/Makefile
jdk/make/sun/splashscreen/Makefile
+1
-0
jdk/make/sun/text/Makefile
jdk/make/sun/text/Makefile
+1
-0
jdk/make/sun/tools/Makefile
jdk/make/sun/tools/Makefile
+1
-0
jdk/make/sun/tracing/dtrace/Makefile
jdk/make/sun/tracing/dtrace/Makefile
+1
-0
jdk/make/sun/xawt/Makefile
jdk/make/sun/xawt/Makefile
+1
-0
jdk/src/share/classes/java/lang/Deprecated.java
jdk/src/share/classes/java/lang/Deprecated.java
+2
-0
jdk/src/share/classes/java/lang/Error.java
jdk/src/share/classes/java/lang/Error.java
+11
-7
jdk/src/share/classes/java/lang/Exception.java
jdk/src/share/classes/java/lang/Exception.java
+12
-4
jdk/src/share/classes/java/lang/RuntimeException.java
jdk/src/share/classes/java/lang/RuntimeException.java
+9
-7
jdk/src/share/classes/java/lang/SuppressWarnings.java
jdk/src/share/classes/java/lang/SuppressWarnings.java
+1
-2
jdk/src/share/classes/java/lang/Throwable.java
jdk/src/share/classes/java/lang/Throwable.java
+6
-0
jdk/src/share/classes/java/util/NavigableMap.java
jdk/src/share/classes/java/util/NavigableMap.java
+1
-1
jdk/src/share/classes/java/util/NavigableSet.java
jdk/src/share/classes/java/util/NavigableSet.java
+1
-1
jdk/src/share/classes/sun/nio/fs/AbstractPath.java
jdk/src/share/classes/sun/nio/fs/AbstractPath.java
+18
-6
jdk/src/share/classes/sun/nio/fs/AbstractWatchKey.java
jdk/src/share/classes/sun/nio/fs/AbstractWatchKey.java
+15
-17
jdk/src/share/classes/sun/security/krb5/internal/ktab/KeyTabEntry.java
.../classes/sun/security/krb5/internal/ktab/KeyTabEntry.java
+1
-1
jdk/src/share/classes/sun/security/provider/certpath/OCSPResponse.java
.../classes/sun/security/provider/certpath/OCSPResponse.java
+9
-1
jdk/src/solaris/classes/sun/nio/ch/SctpChannelImpl.java
jdk/src/solaris/classes/sun/nio/ch/SctpChannelImpl.java
+19
-22
jdk/src/solaris/classes/sun/nio/ch/SctpMultiChannelImpl.java
jdk/src/solaris/classes/sun/nio/ch/SctpMultiChannelImpl.java
+17
-18
jdk/src/solaris/classes/sun/nio/ch/SctpNet.java
jdk/src/solaris/classes/sun/nio/ch/SctpNet.java
+38
-1
jdk/src/solaris/classes/sun/nio/ch/SctpServerChannelImpl.java
...src/solaris/classes/sun/nio/ch/SctpServerChannelImpl.java
+5
-10
jdk/src/solaris/classes/sun/nio/ch/SctpSocketDispatcher.java
jdk/src/solaris/classes/sun/nio/ch/SctpSocketDispatcher.java
+0
-68
jdk/src/solaris/native/sun/nio/ch/SctpNet.c
jdk/src/solaris/native/sun/nio/ch/SctpNet.c
+124
-2
jdk/src/windows/classes/sun/nio/ch/WindowsAsynchronousFileChannelImpl.java
...lasses/sun/nio/ch/WindowsAsynchronousFileChannelImpl.java
+19
-30
jdk/src/windows/native/sun/nio/ch/WindowsAsynchronousFileChannelImpl.c
...ws/native/sun/nio/ch/WindowsAsynchronousFileChannelImpl.c
+6
-8
jdk/test/com/sun/jdi/ProcessAttachTest.sh
jdk/test/com/sun/jdi/ProcessAttachTest.sh
+20
-9
jdk/test/com/sun/jdi/connect/spi/JdiLoadedByCustomLoader.sh
jdk/test/com/sun/jdi/connect/spi/JdiLoadedByCustomLoader.sh
+2
-2
jdk/test/com/sun/nio/sctp/SctpChannel/Connect.java
jdk/test/com/sun/nio/sctp/SctpChannel/Connect.java
+12
-0
jdk/test/com/sun/nio/sctp/SctpChannel/Send.java
jdk/test/com/sun/nio/sctp/SctpChannel/Send.java
+47
-3
jdk/test/com/sun/nio/sctp/SctpChannel/SocketOptionTests.java
jdk/test/com/sun/nio/sctp/SctpChannel/SocketOptionTests.java
+2
-0
jdk/test/com/sun/nio/sctp/SctpMultiChannel/Send.java
jdk/test/com/sun/nio/sctp/SctpMultiChannel/Send.java
+45
-0
jdk/test/com/sun/tools/attach/ApplicationSetup.sh
jdk/test/com/sun/tools/attach/ApplicationSetup.sh
+6
-2
jdk/test/com/sun/tools/attach/BasicTests.sh
jdk/test/com/sun/tools/attach/BasicTests.sh
+1
-1
jdk/test/com/sun/tools/attach/CommonSetup.sh
jdk/test/com/sun/tools/attach/CommonSetup.sh
+6
-0
jdk/test/com/sun/tools/attach/PermissionTests.sh
jdk/test/com/sun/tools/attach/PermissionTests.sh
+2
-2
jdk/test/com/sun/tools/attach/ProviderTests.sh
jdk/test/com/sun/tools/attach/ProviderTests.sh
+1
-1
jdk/test/java/beans/Introspector/Test5102804.java
jdk/test/java/beans/Introspector/Test5102804.java
+1
-0
jdk/test/java/io/File/Basic.java
jdk/test/java/io/File/Basic.java
+2
-2
jdk/test/java/io/File/basic.sh
jdk/test/java/io/File/basic.sh
+2
-2
jdk/test/java/io/Serializable/evolution/RenamePackage/run.sh
jdk/test/java/io/Serializable/evolution/RenamePackage/run.sh
+5
-5
jdk/test/java/io/Serializable/serialver/classpath/run.sh
jdk/test/java/io/Serializable/serialver/classpath/run.sh
+1
-1
jdk/test/java/io/Serializable/serialver/nested/run.sh
jdk/test/java/io/Serializable/serialver/nested/run.sh
+1
-1
jdk/test/java/lang/ClassLoader/deadlock/TestOneWayDelegate.sh
...test/java/lang/ClassLoader/deadlock/TestOneWayDelegate.sh
+1
-1
jdk/test/java/lang/StringCoding/CheckEncodings.sh
jdk/test/java/lang/StringCoding/CheckEncodings.sh
+1
-1
jdk/test/java/lang/System/finalization/FinExit.sh
jdk/test/java/lang/System/finalization/FinExit.sh
+3
-1
jdk/test/java/lang/annotation/loaderLeak/LoaderLeak.sh
jdk/test/java/lang/annotation/loaderLeak/LoaderLeak.sh
+5
-0
jdk/test/java/lang/instrument/appendToClassLoaderSearch/CommonSetup.sh
.../lang/instrument/appendToClassLoaderSearch/CommonSetup.sh
+7
-1
jdk/test/java/nio/channels/AsynchronousFileChannel/LotsOfWrites.java
...va/nio/channels/AsynchronousFileChannel/LotsOfWrites.java
+162
-0
jdk/test/java/nio/channels/Selector/lots_of_updates.sh
jdk/test/java/nio/channels/Selector/lots_of_updates.sh
+1
-1
jdk/test/java/nio/channels/spi/AsynchronousChannelProvider/custom_provider.sh
...annels/spi/AsynchronousChannelProvider/custom_provider.sh
+1
-1
jdk/test/java/nio/file/Files/walk_file_tree.sh
jdk/test/java/nio/file/Files/walk_file_tree.sh
+1
-1
jdk/test/java/nio/file/Path/CopyAndMove.java
jdk/test/java/nio/file/Path/CopyAndMove.java
+139
-117
jdk/test/java/nio/file/Path/PassThroughFileSystem.java
jdk/test/java/nio/file/Path/PassThroughFileSystem.java
+554
-0
jdk/test/java/nio/file/Path/delete_on_close.sh
jdk/test/java/nio/file/Path/delete_on_close.sh
+1
-1
jdk/test/java/nio/file/TestUtil.java
jdk/test/java/nio/file/TestUtil.java
+7
-4
jdk/test/java/nio/file/WatchService/OverflowEventIsLoner.java
...test/java/nio/file/WatchService/OverflowEventIsLoner.java
+122
-0
jdk/test/java/security/Provider/Turkish.java
jdk/test/java/security/Provider/Turkish.java
+1
-0
jdk/test/java/util/Currency/PropertiesTest.sh
jdk/test/java/util/Currency/PropertiesTest.sh
+1
-1
jdk/test/java/util/PluggableLocale/ExecTest.sh
jdk/test/java/util/PluggableLocale/ExecTest.sh
+1
-1
jdk/test/java/util/ResourceBundle/Bug6299235Test.sh
jdk/test/java/util/ResourceBundle/Bug6299235Test.sh
+2
-2
jdk/test/java/util/ResourceBundle/Control/ExpirationTest.sh
jdk/test/java/util/ResourceBundle/Control/ExpirationTest.sh
+1
-1
jdk/test/java/util/ServiceLoader/basic.sh
jdk/test/java/util/ServiceLoader/basic.sh
+3
-3
jdk/test/javax/imageio/stream/StreamCloserLeak/run_test.sh
jdk/test/javax/imageio/stream/StreamCloserLeak/run_test.sh
+1
-1
jdk/test/javax/script/CommonSetup.sh
jdk/test/javax/script/CommonSetup.sh
+6
-0
jdk/test/javax/script/ProviderTest.sh
jdk/test/javax/script/ProviderTest.sh
+1
-1
jdk/test/sun/jvmstat/testlibrary/utils.sh
jdk/test/sun/jvmstat/testlibrary/utils.sh
+2
-2
jdk/test/sun/management/jmxremote/bootstrap/GeneratePropertyPassword.sh
...anagement/jmxremote/bootstrap/GeneratePropertyPassword.sh
+1
-1
jdk/test/sun/misc/URLClassPath/ClassnameCharTest.sh
jdk/test/sun/misc/URLClassPath/ClassnameCharTest.sh
+2
-2
jdk/test/sun/security/krb5/ktab/KeyString.java
jdk/test/sun/security/krb5/ktab/KeyString.java
+15
-17
jdk/test/sun/tools/common/ApplicationSetup.sh
jdk/test/sun/tools/common/ApplicationSetup.sh
+5
-1
jdk/test/sun/tools/common/CommonSetup.sh
jdk/test/sun/tools/common/CommonSetup.sh
+5
-0
jdk/test/sun/tools/jps/jps-help.sh
jdk/test/sun/tools/jps/jps-help.sh
+2
-2
jdk/test/sun/tools/jstat/jstatHelp.sh
jdk/test/sun/tools/jstat/jstatHelp.sh
+2
-2
jdk/test/sun/tools/jstat/jstatOptions1.sh
jdk/test/sun/tools/jstat/jstatOptions1.sh
+1
-1
jdk/test/sun/tools/jstatd/jstatdUsage1.sh
jdk/test/sun/tools/jstatd/jstatdUsage1.sh
+2
-2
jdk/test/sun/tools/native2ascii/Native2AsciiTests.sh
jdk/test/sun/tools/native2ascii/Native2AsciiTests.sh
+6
-4
jdk/test/tools/launcher/ChangeDataModel.sh
jdk/test/tools/launcher/ChangeDataModel.sh
+9
-6
jdk/test/tools/launcher/ClassPathWildCard.sh
jdk/test/tools/launcher/ClassPathWildCard.sh
+1
-1
jdk/test/tools/launcher/DefaultLocaleTest.sh
jdk/test/tools/launcher/DefaultLocaleTest.sh
+17
-1
jdk/test/tools/launcher/UnicodeTest.sh
jdk/test/tools/launcher/UnicodeTest.sh
+1
-1
未找到文件。
.hgtags-top-repo
浏览文件 @
74e1e065
...
...
@@ -54,3 +54,4 @@ c8b63075403d53a208104a8a6ea5072c1cb66aab jdk7-b76
1f17ca8353babb13f4908c1f87d11508232518c8 jdk7-b77
ab4ae8f4514693a9fe17ca2fec0239d8f8450d2c jdk7-b78
20aeeb51713990dbea6929a2e100a8bbf5df70d4 jdk7-b79
a3242906c7747b5d9bcc3d118c7c3c69aa40f4b7 jdk7-b80
corba/.hgtags
浏览文件 @
74e1e065
...
...
@@ -54,3 +54,4 @@ b751c528c55560cf2adeaeef24b39ca1f4d1cbf7 jdk7-b73
6881f0383f623394b5ec73f27a5f329ff55d0467 jdk7-b77
a7f7276b48cd74d8eb1baa83fbf3d1ef4a2603c8 jdk7-b78
ec0421b5703b677e2226cf4bf7ae4eaafd8061c5 jdk7-b79
0336e70ca0aeabc783cc01658f36cb6e27ea7934 jdk7-b80
hotspot/.hgtags
浏览文件 @
74e1e065
...
...
@@ -54,3 +54,4 @@ d8dd291a362acb656026a9c0a9da48501505a1e7 jdk7-b75
455105fc81d941482f8f8056afaa7aa0949c9300 jdk7-b77
e703499b4b51e3af756ae77c3d5e8b3058a14e4e jdk7-b78
a5a6adfca6ecefb5894a848debabfe442ff50e25 jdk7-b79
3003ddd1d4330b06cb4691ae74d600d3685899eb jdk7-b80
hotspot/make/hotspot_version
浏览文件 @
74e1e065
...
...
@@ -35,7 +35,7 @@ HOTSPOT_VM_COPYRIGHT=Copyright 2009
HS_MAJOR_VER=17
HS_MINOR_VER=0
HS_BUILD_NUMBER=0
7
HS_BUILD_NUMBER=0
8
JDK_MAJOR_VER=1
JDK_MINOR_VER=7
...
...
hotspot/src/cpu/sparc/vm/interpreter_sparc.cpp
浏览文件 @
74e1e065
/*
* Copyright 1997-20
09
Sun Microsystems, Inc. All Rights Reserved.
* Copyright 1997-20
10
Sun Microsystems, Inc. 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
...
...
@@ -394,6 +394,11 @@ address AbstractInterpreterGenerator::generate_method_entry(AbstractInterpreter:
}
bool
AbstractInterpreter
::
can_be_compiled
(
methodHandle
m
)
{
// No special entry points that preclude compilation
return
true
;
}
// This method tells the deoptimizer how big an interpreted frame must be:
int
AbstractInterpreter
::
size_activation
(
methodOop
method
,
int
tempcount
,
...
...
hotspot/src/cpu/sparc/vm/stubGenerator_sparc.cpp
浏览文件 @
74e1e065
/*
* Copyright 1997-20
09
Sun Microsystems, Inc. All Rights Reserved.
* Copyright 1997-20
10
Sun Microsystems, Inc. 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
...
...
@@ -2862,6 +2862,9 @@ class StubGenerator: public StubCodeGenerator {
// arraycopy stubs used by compilers
generate_arraycopy_stubs
();
// Don't initialize the platform math functions since sparc
// doesn't have intrinsics for these operations.
}
...
...
hotspot/src/cpu/x86/vm/stubGenerator_x86_32.cpp
浏览文件 @
74e1e065
/*
* Copyright 1999-20
09
Sun Microsystems, Inc. All Rights Reserved.
* Copyright 1999-20
10
Sun Microsystems, Inc. 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
...
...
@@ -2030,6 +2030,54 @@ class StubGenerator: public StubCodeGenerator {
entry_checkcast_arraycopy
);
}
void
generate_math_stubs
()
{
{
StubCodeMark
mark
(
this
,
"StubRoutines"
,
"log"
);
StubRoutines
::
_intrinsic_log
=
(
double
(
*
)(
double
))
__
pc
();
__
fld_d
(
Address
(
rsp
,
4
));
__
flog
();
__
ret
(
0
);
}
{
StubCodeMark
mark
(
this
,
"StubRoutines"
,
"log10"
);
StubRoutines
::
_intrinsic_log10
=
(
double
(
*
)(
double
))
__
pc
();
__
fld_d
(
Address
(
rsp
,
4
));
__
flog10
();
__
ret
(
0
);
}
{
StubCodeMark
mark
(
this
,
"StubRoutines"
,
"sin"
);
StubRoutines
::
_intrinsic_sin
=
(
double
(
*
)(
double
))
__
pc
();
__
fld_d
(
Address
(
rsp
,
4
));
__
trigfunc
(
's'
);
__
ret
(
0
);
}
{
StubCodeMark
mark
(
this
,
"StubRoutines"
,
"cos"
);
StubRoutines
::
_intrinsic_cos
=
(
double
(
*
)(
double
))
__
pc
();
__
fld_d
(
Address
(
rsp
,
4
));
__
trigfunc
(
'c'
);
__
ret
(
0
);
}
{
StubCodeMark
mark
(
this
,
"StubRoutines"
,
"tan"
);
StubRoutines
::
_intrinsic_tan
=
(
double
(
*
)(
double
))
__
pc
();
__
fld_d
(
Address
(
rsp
,
4
));
__
trigfunc
(
't'
);
__
ret
(
0
);
}
// The intrinsic version of these seem to return the same value as
// the strict version.
StubRoutines
::
_intrinsic_exp
=
SharedRuntime
::
dexp
;
StubRoutines
::
_intrinsic_pow
=
SharedRuntime
::
dpow
;
}
public:
// Information about frame layout at time of blocking runtime call.
// Note that we only have to preserve callee-saved registers since
...
...
@@ -2228,6 +2276,8 @@ class StubGenerator: public StubCodeGenerator {
MethodHandles
::
generate_method_handle_stub
(
_masm
,
ek
);
}
}
generate_math_stubs
();
}
...
...
hotspot/src/cpu/x86/vm/stubGenerator_x86_64.cpp
浏览文件 @
74e1e065
/*
* Copyright 2003-20
09
Sun Microsystems, Inc. All Rights Reserved.
* Copyright 2003-20
10
Sun Microsystems, Inc. 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
...
...
@@ -2731,6 +2731,79 @@ class StubGenerator: public StubCodeGenerator {
StubRoutines
::
_arrayof_oop_arraycopy
=
StubRoutines
::
_oop_arraycopy
;
}
void
generate_math_stubs
()
{
{
StubCodeMark
mark
(
this
,
"StubRoutines"
,
"log"
);
StubRoutines
::
_intrinsic_log
=
(
double
(
*
)(
double
))
__
pc
();
__
subq
(
rsp
,
8
);
__
movdbl
(
Address
(
rsp
,
0
),
xmm0
);
__
fld_d
(
Address
(
rsp
,
0
));
__
flog
();
__
fstp_d
(
Address
(
rsp
,
0
));
__
movdbl
(
xmm0
,
Address
(
rsp
,
0
));
__
addq
(
rsp
,
8
);
__
ret
(
0
);
}
{
StubCodeMark
mark
(
this
,
"StubRoutines"
,
"log10"
);
StubRoutines
::
_intrinsic_log10
=
(
double
(
*
)(
double
))
__
pc
();
__
subq
(
rsp
,
8
);
__
movdbl
(
Address
(
rsp
,
0
),
xmm0
);
__
fld_d
(
Address
(
rsp
,
0
));
__
flog10
();
__
fstp_d
(
Address
(
rsp
,
0
));
__
movdbl
(
xmm0
,
Address
(
rsp
,
0
));
__
addq
(
rsp
,
8
);
__
ret
(
0
);
}
{
StubCodeMark
mark
(
this
,
"StubRoutines"
,
"sin"
);
StubRoutines
::
_intrinsic_sin
=
(
double
(
*
)(
double
))
__
pc
();
__
subq
(
rsp
,
8
);
__
movdbl
(
Address
(
rsp
,
0
),
xmm0
);
__
fld_d
(
Address
(
rsp
,
0
));
__
trigfunc
(
's'
);
__
fstp_d
(
Address
(
rsp
,
0
));
__
movdbl
(
xmm0
,
Address
(
rsp
,
0
));
__
addq
(
rsp
,
8
);
__
ret
(
0
);
}
{
StubCodeMark
mark
(
this
,
"StubRoutines"
,
"cos"
);
StubRoutines
::
_intrinsic_cos
=
(
double
(
*
)(
double
))
__
pc
();
__
subq
(
rsp
,
8
);
__
movdbl
(
Address
(
rsp
,
0
),
xmm0
);
__
fld_d
(
Address
(
rsp
,
0
));
__
trigfunc
(
'c'
);
__
fstp_d
(
Address
(
rsp
,
0
));
__
movdbl
(
xmm0
,
Address
(
rsp
,
0
));
__
addq
(
rsp
,
8
);
__
ret
(
0
);
}
{
StubCodeMark
mark
(
this
,
"StubRoutines"
,
"tan"
);
StubRoutines
::
_intrinsic_tan
=
(
double
(
*
)(
double
))
__
pc
();
__
subq
(
rsp
,
8
);
__
movdbl
(
Address
(
rsp
,
0
),
xmm0
);
__
fld_d
(
Address
(
rsp
,
0
));
__
trigfunc
(
't'
);
__
fstp_d
(
Address
(
rsp
,
0
));
__
movdbl
(
xmm0
,
Address
(
rsp
,
0
));
__
addq
(
rsp
,
8
);
__
ret
(
0
);
}
// The intrinsic version of these seem to return the same value as
// the strict version.
StubRoutines
::
_intrinsic_exp
=
SharedRuntime
::
dexp
;
StubRoutines
::
_intrinsic_pow
=
SharedRuntime
::
dpow
;
}
#undef __
#define __ masm->
...
...
@@ -2945,6 +3018,8 @@ class StubGenerator: public StubCodeGenerator {
MethodHandles
::
generate_method_handle_stub
(
_masm
,
ek
);
}
}
generate_math_stubs
();
}
public:
...
...
hotspot/src/cpu/x86/vm/templateInterpreter_x86_32.cpp
浏览文件 @
74e1e065
/*
* Copyright 1997-20
09
Sun Microsystems, Inc. All Rights Reserved.
* Copyright 1997-20
10
Sun Microsystems, Inc. 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
...
...
@@ -1431,6 +1431,23 @@ address AbstractInterpreterGenerator::generate_method_entry(AbstractInterpreter:
}
// These should never be compiled since the interpreter will prefer
// the compiled version to the intrinsic version.
bool
AbstractInterpreter
::
can_be_compiled
(
methodHandle
m
)
{
switch
(
method_kind
(
m
))
{
case
Interpreter
::
java_lang_math_sin
:
// fall thru
case
Interpreter
::
java_lang_math_cos
:
// fall thru
case
Interpreter
::
java_lang_math_tan
:
// fall thru
case
Interpreter
::
java_lang_math_abs
:
// fall thru
case
Interpreter
::
java_lang_math_log
:
// fall thru
case
Interpreter
::
java_lang_math_log10
:
// fall thru
case
Interpreter
::
java_lang_math_sqrt
:
return
false
;
default:
return
true
;
}
}
// How much stack a method activation needs in words.
int
AbstractInterpreter
::
size_top_interpreter_activation
(
methodOop
method
)
{
...
...
hotspot/src/cpu/x86/vm/templateInterpreter_x86_64.cpp
浏览文件 @
74e1e065
/*
* Copyright 2003-20
09
Sun Microsystems, Inc. All Rights Reserved.
* Copyright 2003-20
10
Sun Microsystems, Inc. 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
...
...
@@ -1456,6 +1456,23 @@ address AbstractInterpreterGenerator::generate_method_entry(
generate_normal_entry
(
synchronized
);
}
// These should never be compiled since the interpreter will prefer
// the compiled version to the intrinsic version.
bool
AbstractInterpreter
::
can_be_compiled
(
methodHandle
m
)
{
switch
(
method_kind
(
m
))
{
case
Interpreter
::
java_lang_math_sin
:
// fall thru
case
Interpreter
::
java_lang_math_cos
:
// fall thru
case
Interpreter
::
java_lang_math_tan
:
// fall thru
case
Interpreter
::
java_lang_math_abs
:
// fall thru
case
Interpreter
::
java_lang_math_log
:
// fall thru
case
Interpreter
::
java_lang_math_log10
:
// fall thru
case
Interpreter
::
java_lang_math_sqrt
:
return
false
;
default:
return
true
;
}
}
// How much stack a method activation needs in words.
int
AbstractInterpreter
::
size_top_interpreter_activation
(
methodOop
method
)
{
const
int
entry_size
=
frame
::
interpreter_frame_monitor_size
();
...
...
hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp
浏览文件 @
74e1e065
/*
* Copyright 2003-2007 Sun Microsystems, Inc. All Rights Reserved.
* Copyright 2007, 2008 Red Hat, Inc.
* Copyright 2007, 2008
, 2009, 2010
Red Hat, Inc.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
...
...
@@ -239,7 +239,21 @@ void os::Linux::set_fpu_control_word(int fpu) {
}
bool
os
::
is_allocatable
(
size_t
bytes
)
{
ShouldNotCallThis
();
#ifdef _LP64
return
true
;
#else
if
(
bytes
<
2
*
G
)
{
return
true
;
}
char
*
addr
=
reserve_memory
(
bytes
,
NULL
);
if
(
addr
!=
NULL
)
{
release_memory
(
addr
,
bytes
);
}
return
addr
!=
NULL
;
#endif // _LP64
}
///////////////////////////////////////////////////////////////////////////////
...
...
hotspot/src/share/vm/c1/c1_LIR.hpp
浏览文件 @
74e1e065
/*
* Copyright 2000-20
08
Sun Microsystems, Inc. All Rights Reserved.
* Copyright 2000-20
10
Sun Microsystems, Inc. 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
...
...
@@ -2000,7 +2000,7 @@ class LIR_OpVisitState: public StackObj {
typedef
enum
{
inputMode
,
firstMode
=
inputMode
,
tempMode
,
outputMode
,
numModes
,
invalidMode
=
-
1
}
OprMode
;
enum
{
maxNumberOfOperands
=
1
4
,
maxNumberOfOperands
=
1
6
,
maxNumberOfInfos
=
4
};
...
...
hotspot/src/share/vm/ci/ciField.cpp
浏览文件 @
74e1e065
...
...
@@ -161,6 +161,18 @@ ciField::ciField(fieldDescriptor *fd): _known_to_link_with(NULL) {
"bootstrap classes must not create & cache unshared fields"
);
}
static
bool
trust_final_non_static_fields
(
ciInstanceKlass
*
holder
)
{
if
(
holder
==
NULL
)
return
false
;
if
(
holder
->
name
()
==
ciSymbol
::
java_lang_System
())
// Never trust strangely unstable finals: System.out, etc.
return
false
;
// Even if general trusting is disabled, trust system-built closures in these packages.
if
(
holder
->
is_in_package
(
"java/dyn"
)
||
holder
->
is_in_package
(
"sun/dyn"
))
return
true
;
return
TrustFinalNonStaticFields
;
}
void
ciField
::
initialize_from
(
fieldDescriptor
*
fd
)
{
// Get the flags, offset, and canonical holder of the field.
_flags
=
ciFlags
(
fd
->
access_flags
());
...
...
@@ -172,7 +184,7 @@ void ciField::initialize_from(fieldDescriptor* fd) {
if
(
!
this
->
is_static
())
{
// A field can be constant if it's a final static field or if it's
// a final non-static field of a trusted class ({java,sun}.dyn).
if
(
_holder
->
is_in_package
(
"java/dyn"
)
||
_holder
->
is_in_package
(
"sun/dyn"
))
{
if
(
trust_final_non_static_fields
(
_holder
))
{
_is_constant
=
true
;
return
;
}
...
...
hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp
浏览文件 @
74e1e065
...
...
@@ -1441,6 +1441,7 @@ G1CollectedHeap::G1CollectedHeap(G1CollectorPolicy* policy_) :
}
jint
G1CollectedHeap
::
initialize
()
{
CollectedHeap
::
pre_initialize
();
os
::
enable_vtime
();
// Necessary to satisfy locking discipline assertions.
...
...
hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp
浏览文件 @
74e1e065
...
...
@@ -1007,6 +1007,10 @@ public:
return
true
;
}
virtual
bool
card_mark_must_follow_store
()
const
{
return
true
;
}
bool
is_in_young
(
oop
obj
)
{
HeapRegion
*
hr
=
heap_region_containing
(
obj
);
return
hr
!=
NULL
&&
hr
->
is_young
();
...
...
hotspot/src/share/vm/gc_implementation/g1/ptrQueue.cpp
浏览文件 @
74e1e065
...
...
@@ -73,7 +73,12 @@ void PtrQueue::enqueue_known_active(void* ptr) {
void
PtrQueue
::
locking_enqueue_completed_buffer
(
void
**
buf
)
{
assert
(
_lock
->
owned_by_self
(),
"Required."
);
// We have to unlock _lock (which may be Shared_DirtyCardQ_lock) before
// we acquire DirtyCardQ_CBL_mon inside enqeue_complete_buffer as they
// have the same rank and we may get the "possible deadlock" message
_lock
->
unlock
();
qset
()
->
enqueue_complete_buffer
(
buf
);
// We must relock only because the caller will unlock, for the normal
// case.
...
...
@@ -140,7 +145,36 @@ void PtrQueue::handle_zero_index() {
// holding the lock if there is one).
if
(
_buf
!=
NULL
)
{
if
(
_lock
)
{
locking_enqueue_completed_buffer
(
_buf
);
assert
(
_lock
->
owned_by_self
(),
"Required."
);
// The current PtrQ may be the shared dirty card queue and
// may be being manipulated by more than one worker thread
// during a pause. Since the enqueuing of the completed
// buffer unlocks the Shared_DirtyCardQ_lock more than one
// worker thread can 'race' on reading the shared queue attributes
// (_buf and _index) and multiple threads can call into this
// routine for the same buffer. This will cause the completed
// buffer to be added to the CBL multiple times.
// We "claim" the current buffer by caching value of _buf in
// a local and clearing the field while holding _lock. When
// _lock is released (while enqueueing the completed buffer)
// the thread that acquires _lock will skip this code,
// preventing the subsequent the multiple enqueue, and
// install a newly allocated buffer below.
void
**
buf
=
_buf
;
// local pointer to completed buffer
_buf
=
NULL
;
// clear shared _buf field
locking_enqueue_completed_buffer
(
buf
);
// enqueue completed buffer
// While the current thread was enqueuing the buffer another thread
// may have a allocated a new buffer and inserted it into this pointer
// queue. If that happens then we just return so that the current
// thread doesn't overwrite the buffer allocated by the other thread
// and potentially losing some dirtied cards.
if
(
_buf
!=
NULL
)
return
;
}
else
{
if
(
qset
()
->
process_or_enqueue_complete_buffer
(
_buf
))
{
// Recycle the buffer. No allocation.
...
...
hotspot/src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.cpp
浏览文件 @
74e1e065
...
...
@@ -51,6 +51,8 @@ static void trace_gen_sizes(const char* const str,
}
jint
ParallelScavengeHeap
::
initialize
()
{
CollectedHeap
::
pre_initialize
();
// Cannot be initialized until after the flags are parsed
GenerationSizer
flag_parser
;
...
...
@@ -717,10 +719,6 @@ HeapWord* ParallelScavengeHeap::allocate_new_tlab(size_t size) {
return
young_gen
()
->
allocate
(
size
,
true
);
}
void
ParallelScavengeHeap
::
fill_all_tlabs
(
bool
retire
)
{
CollectedHeap
::
fill_all_tlabs
(
retire
);
}
void
ParallelScavengeHeap
::
accumulate_statistics_all_tlabs
()
{
CollectedHeap
::
accumulate_statistics_all_tlabs
();
}
...
...
hotspot/src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.hpp
浏览文件 @
74e1e065
...
...
@@ -54,7 +54,6 @@ class ParallelScavengeHeap : public CollectedHeap {
protected:
static
inline
size_t
total_invocations
();
HeapWord
*
allocate_new_tlab
(
size_t
size
);
void
fill_all_tlabs
(
bool
retire
);
public:
ParallelScavengeHeap
()
:
CollectedHeap
()
{
...
...
@@ -191,6 +190,10 @@ class ParallelScavengeHeap : public CollectedHeap {
return
true
;
}
virtual
bool
card_mark_must_follow_store
()
const
{
return
false
;
}
// Return true if we don't we need a store barrier for
// initializing stores to an object at this address.
virtual
bool
can_elide_initializing_store_barrier
(
oop
new_obj
);
...
...
hotspot/src/share/vm/gc_interface/collectedHeap.cpp
浏览文件 @
74e1e065
...
...
@@ -59,8 +59,18 @@ CollectedHeap::CollectedHeap()
PerfDataManager
::
create_string_variable
(
SUN_GC
,
"lastCause"
,
80
,
GCCause
::
to_string
(
_gc_lastcause
),
CHECK
);
}
_defer_initial_card_mark
=
false
;
// strengthened by subclass in pre_initialize() below.
}
void
CollectedHeap
::
pre_initialize
()
{
// Used for ReduceInitialCardMarks (when COMPILER2 is used);
// otherwise remains unused.
#ifdef COMPLER2
_defer_initial_card_mark
=
ReduceInitialCardMarks
&&
(
DeferInitialCardMark
||
card_mark_must_follow_store
());
#else
assert
(
_defer_initial_card_mark
==
false
,
"Who would set it?"
);
#endif
}
#ifndef PRODUCT
void
CollectedHeap
::
check_for_bad_heap_word_value
(
HeapWord
*
addr
,
size_t
size
)
{
...
...
@@ -140,12 +150,13 @@ HeapWord* CollectedHeap::allocate_from_tlab_slow(Thread* thread, size_t size) {
void
CollectedHeap
::
flush_deferred_store_barrier
(
JavaThread
*
thread
)
{
MemRegion
deferred
=
thread
->
deferred_card_mark
();
if
(
!
deferred
.
is_empty
())
{
assert
(
_defer_initial_card_mark
,
"Otherwise should be empty"
);
{
// Verify that the storage points to a parsable object in heap
DEBUG_ONLY
(
oop
old_obj
=
oop
(
deferred
.
start
());)
assert
(
is_in
(
old_obj
),
"Not in allocated heap"
);
assert
(
!
can_elide_initializing_store_barrier
(
old_obj
),
"Else should have been filtered in
defer_sto
re_barrier()"
);
"Else should have been filtered in
new_store_p
re_barrier()"
);
assert
(
!
is_in_permanent
(
old_obj
),
"Sanity: not expected"
);
assert
(
old_obj
->
is_oop
(
true
),
"Not an oop"
);
assert
(
old_obj
->
is_parsable
(),
"Will not be concurrently parsable"
);
...
...
@@ -174,9 +185,7 @@ void CollectedHeap::flush_deferred_store_barrier(JavaThread* thread) {
// so long as the card-mark is completed before the next
// scavenge. For all these cases, we can do a card mark
// at the point at which we do a slow path allocation
// in the old gen. For uniformity, however, we end
// up using the same scheme (see below) for all three
// cases (deferring the card-mark appropriately).
// in the old gen, i.e. in this call.
// (b) GenCollectedHeap(ConcurrentMarkSweepGeneration) requires
// in addition that the card-mark for an old gen allocated
// object strictly follow any associated initializing stores.
...
...
@@ -199,12 +208,13 @@ void CollectedHeap::flush_deferred_store_barrier(JavaThread* thread) {
// but, like in CMS, because of the presence of concurrent refinement
// (much like CMS' precleaning), must strictly follow the oop-store.
// Thus, using the same protocol for maintaining the intended
// invariants turns out, serendepitously, to be the same for
all
//
three collectors/heap types above
.
// invariants turns out, serendepitously, to be the same for
both
//
G1 and CMS
.
//
// For each future collector, this should be reexamined with
// that specific collector in mind.
oop
CollectedHeap
::
defer_store_barrier
(
JavaThread
*
thread
,
oop
new_obj
)
{
// For any future collector, this code should be reexamined with
// that specific collector in mind, and the documentation above suitably
// extended and updated.
oop
CollectedHeap
::
new_store_pre_barrier
(
JavaThread
*
thread
,
oop
new_obj
)
{
// If a previous card-mark was deferred, flush it now.
flush_deferred_store_barrier
(
thread
);
if
(
can_elide_initializing_store_barrier
(
new_obj
))
{
...
...
@@ -212,10 +222,17 @@ oop CollectedHeap::defer_store_barrier(JavaThread* thread, oop new_obj) {
// following the flush above.
assert
(
thread
->
deferred_card_mark
().
is_empty
(),
"Error"
);
}
else
{
// Remember info for the newly deferred store barrier
MemRegion
deferred
=
MemRegion
((
HeapWord
*
)
new_obj
,
new_obj
->
size
());
assert
(
!
deferred
.
is_empty
(),
"Error"
);
thread
->
set_deferred_card_mark
(
deferred
);
MemRegion
mr
((
HeapWord
*
)
new_obj
,
new_obj
->
size
());
assert
(
!
mr
.
is_empty
(),
"Error"
);
if
(
_defer_initial_card_mark
)
{
// Defer the card mark
thread
->
set_deferred_card_mark
(
mr
);
}
else
{
// Do the card mark
BarrierSet
*
bs
=
barrier_set
();
assert
(
bs
->
has_write_region_opt
(),
"No write_region() on BarrierSet"
);
bs
->
write_region
(
mr
);
}
}
return
new_obj
;
}
...
...
@@ -241,9 +258,9 @@ void CollectedHeap::fill_args_check(HeapWord* start, size_t words)
assert
(
Universe
::
heap
()
->
is_in_reserved
(
start
+
words
-
1
),
"not in heap"
);
}
void
CollectedHeap
::
zap_filler_array
(
HeapWord
*
start
,
size_t
words
)
void
CollectedHeap
::
zap_filler_array
(
HeapWord
*
start
,
size_t
words
,
bool
zap
)
{
if
(
ZapFillerObjects
)
{
if
(
ZapFillerObjects
&&
zap
)
{
Copy
::
fill_to_words
(
start
+
filler_array_hdr_size
(),
words
-
filler_array_hdr_size
(),
0XDEAFBABE
);
}
...
...
@@ -251,7 +268,7 @@ void CollectedHeap::zap_filler_array(HeapWord* start, size_t words)
#endif // ASSERT
void
CollectedHeap
::
fill_with_array
(
HeapWord
*
start
,
size_t
words
)
CollectedHeap
::
fill_with_array
(
HeapWord
*
start
,
size_t
words
,
bool
zap
)
{
assert
(
words
>=
filler_array_min_size
(),
"too small for an array"
);
assert
(
words
<=
filler_array_max_size
(),
"too big for a single object"
);
...
...
@@ -262,16 +279,16 @@ CollectedHeap::fill_with_array(HeapWord* start, size_t words)
// Set the length first for concurrent GC.
((
arrayOop
)
start
)
->
set_length
((
int
)
len
);
post_allocation_setup_common
(
Universe
::
intArrayKlassObj
(),
start
,
words
);
DEBUG_ONLY
(
zap_filler_array
(
start
,
words
);)
DEBUG_ONLY
(
zap_filler_array
(
start
,
words
,
zap
);)
}
void
CollectedHeap
::
fill_with_object_impl
(
HeapWord
*
start
,
size_t
words
)
CollectedHeap
::
fill_with_object_impl
(
HeapWord
*
start
,
size_t
words
,
bool
zap
)
{
assert
(
words
<=
filler_array_max_size
(),
"too big for a single object"
);
if
(
words
>=
filler_array_min_size
())
{
fill_with_array
(
start
,
words
);
fill_with_array
(
start
,
words
,
zap
);
}
else
if
(
words
>
0
)
{
assert
(
words
==
min_fill_size
(),
"unaligned size"
);
post_allocation_setup_common
(
SystemDictionary
::
Object_klass
(),
start
,
...
...
@@ -279,14 +296,14 @@ CollectedHeap::fill_with_object_impl(HeapWord* start, size_t words)
}
}
void
CollectedHeap
::
fill_with_object
(
HeapWord
*
start
,
size_t
words
)
void
CollectedHeap
::
fill_with_object
(
HeapWord
*
start
,
size_t
words
,
bool
zap
)
{
DEBUG_ONLY
(
fill_args_check
(
start
,
words
);)
HandleMark
hm
;
// Free handles before leaving.
fill_with_object_impl
(
start
,
words
);
fill_with_object_impl
(
start
,
words
,
zap
);
}
void
CollectedHeap
::
fill_with_objects
(
HeapWord
*
start
,
size_t
words
)
void
CollectedHeap
::
fill_with_objects
(
HeapWord
*
start
,
size_t
words
,
bool
zap
)
{
DEBUG_ONLY
(
fill_args_check
(
start
,
words
);)
HandleMark
hm
;
// Free handles before leaving.
...
...
@@ -299,13 +316,13 @@ void CollectedHeap::fill_with_objects(HeapWord* start, size_t words)
const
size_t
max
=
filler_array_max_size
();
while
(
words
>
max
)
{
const
size_t
cur
=
words
-
max
>=
min
?
max
:
max
-
min
;
fill_with_array
(
start
,
cur
);
fill_with_array
(
start
,
cur
,
zap
);
start
+=
cur
;
words
-=
cur
;
}
#endif
fill_with_object_impl
(
start
,
words
);
fill_with_object_impl
(
start
,
words
,
zap
);
}
HeapWord
*
CollectedHeap
::
allocate_new_tlab
(
size_t
size
)
{
...
...
@@ -313,22 +330,6 @@ HeapWord* CollectedHeap::allocate_new_tlab(size_t size) {
return
NULL
;
}
void
CollectedHeap
::
fill_all_tlabs
(
bool
retire
)
{
assert
(
UseTLAB
,
"should not reach here"
);
// See note in ensure_parsability() below.
assert
(
SafepointSynchronize
::
is_at_safepoint
()
||
!
is_init_completed
(),
"should only fill tlabs at safepoint"
);
// The main thread starts allocating via a TLAB even before it
// has added itself to the threads list at vm boot-up.
assert
(
Threads
::
first
()
!=
NULL
,
"Attempt to fill tlabs before main thread has been added"
" to threads list is doomed to failure!"
);
for
(
JavaThread
*
thread
=
Threads
::
first
();
thread
;
thread
=
thread
->
next
())
{
thread
->
tlab
().
make_parsable
(
retire
);
}
}
void
CollectedHeap
::
ensure_parsability
(
bool
retire_tlabs
)
{
// The second disjunct in the assertion below makes a concession
// for the start-up verification done while the VM is being
...
...
@@ -343,8 +344,24 @@ void CollectedHeap::ensure_parsability(bool retire_tlabs) {
"Should only be called at a safepoint or at start-up"
" otherwise concurrent mutator activity may make heap "
" unparsable again"
);
if
(
UseTLAB
)
{
fill_all_tlabs
(
retire_tlabs
);
const
bool
use_tlab
=
UseTLAB
;
const
bool
deferred
=
_defer_initial_card_mark
;
// The main thread starts allocating via a TLAB even before it
// has added itself to the threads list at vm boot-up.
assert
(
!
use_tlab
||
Threads
::
first
()
!=
NULL
,
"Attempt to fill tlabs before main thread has been added"
" to threads list is doomed to failure!"
);
for
(
JavaThread
*
thread
=
Threads
::
first
();
thread
;
thread
=
thread
->
next
())
{
if
(
use_tlab
)
thread
->
tlab
().
make_parsable
(
retire_tlabs
);
#ifdef COMPILER2
// The deferred store barriers must all have been flushed to the
// card-table (or other remembered set structure) before GC starts
// processing the card-table (or other remembered set).
if
(
deferred
)
flush_deferred_store_barrier
(
thread
);
#else
assert
(
!
deferred
,
"Should be false"
);
assert
(
thread
->
deferred_card_mark
().
is_empty
(),
"Should be empty"
);
#endif
}
}
...
...
hotspot/src/share/vm/gc_interface/collectedHeap.hpp
浏览文件 @
74e1e065
...
...
@@ -51,6 +51,9 @@ class CollectedHeap : public CHeapObj {
// Used for filler objects (static, but initialized in ctor).
static
size_t
_filler_array_max_size
;
// Used in support of ReduceInitialCardMarks; only consulted if COMPILER2 is being used
bool
_defer_initial_card_mark
;
protected:
MemRegion
_reserved
;
BarrierSet
*
_barrier_set
;
...
...
@@ -70,13 +73,16 @@ class CollectedHeap : public CHeapObj {
// Constructor
CollectedHeap
();
// Do common initializations that must follow instance construction,
// for example, those needing virtual calls.
// This code could perhaps be moved into initialize() but would
// be slightly more awkward because we want the latter to be a
// pure virtual.
void
pre_initialize
();
// Create a new tlab
virtual
HeapWord
*
allocate_new_tlab
(
size_t
size
);
// Fix up tlabs to make the heap well-formed again,
// optionally retiring the tlabs.
virtual
void
fill_all_tlabs
(
bool
retire
);
// Accumulate statistics on all tlabs.
virtual
void
accumulate_statistics_all_tlabs
();
...
...
@@ -127,14 +133,14 @@ class CollectedHeap : public CHeapObj {
static
inline
size_t
filler_array_max_size
();
DEBUG_ONLY
(
static
void
fill_args_check
(
HeapWord
*
start
,
size_t
words
);)
DEBUG_ONLY
(
static
void
zap_filler_array
(
HeapWord
*
start
,
size_t
words
);)
DEBUG_ONLY
(
static
void
zap_filler_array
(
HeapWord
*
start
,
size_t
words
,
bool
zap
=
true
);)
// Fill with a single array; caller must ensure filler_array_min_size() <=
// words <= filler_array_max_size().
static
inline
void
fill_with_array
(
HeapWord
*
start
,
size_t
words
);
static
inline
void
fill_with_array
(
HeapWord
*
start
,
size_t
words
,
bool
zap
=
true
);
// Fill with a single object (either an int array or a java.lang.Object).
static
inline
void
fill_with_object_impl
(
HeapWord
*
start
,
size_t
words
);
static
inline
void
fill_with_object_impl
(
HeapWord
*
start
,
size_t
words
,
bool
zap
=
true
);
// Verification functions
virtual
void
check_for_bad_heap_word_value
(
HeapWord
*
addr
,
size_t
size
)
...
...
@@ -338,14 +344,14 @@ class CollectedHeap : public CHeapObj {
return
size_t
(
align_object_size
(
oopDesc
::
header_size
()));
}
static
void
fill_with_objects
(
HeapWord
*
start
,
size_t
words
);
static
void
fill_with_objects
(
HeapWord
*
start
,
size_t
words
,
bool
zap
=
true
);
static
void
fill_with_object
(
HeapWord
*
start
,
size_t
words
);
static
void
fill_with_object
(
MemRegion
region
)
{
fill_with_object
(
region
.
start
(),
region
.
word_size
());
static
void
fill_with_object
(
HeapWord
*
start
,
size_t
words
,
bool
zap
=
true
);
static
void
fill_with_object
(
MemRegion
region
,
bool
zap
=
true
)
{
fill_with_object
(
region
.
start
(),
region
.
word_size
()
,
zap
);
}
static
void
fill_with_object
(
HeapWord
*
start
,
HeapWord
*
end
)
{
fill_with_object
(
start
,
pointer_delta
(
end
,
start
));
static
void
fill_with_object
(
HeapWord
*
start
,
HeapWord
*
end
,
bool
zap
=
true
)
{
fill_with_object
(
start
,
pointer_delta
(
end
,
start
)
,
zap
);
}
// Some heaps may offer a contiguous region for shared non-blocking
...
...
@@ -431,14 +437,25 @@ class CollectedHeap : public CHeapObj {
// promises to call this function on such a slow-path-allocated
// object before performing initializations that have elided
// store barriers. Returns new_obj, or maybe a safer copy thereof.
virtual
oop
defer_sto
re_barrier
(
JavaThread
*
thread
,
oop
new_obj
);
virtual
oop
new_store_p
re_barrier
(
JavaThread
*
thread
,
oop
new_obj
);
// Answers whether an initializing store to a new object currently
// allocated at the given address doesn't need a
(deferred)
store
// allocated at the given address doesn't need a store
// barrier. Returns "true" if it doesn't need an initializing
// store barrier; answers "false" if it does.
virtual
bool
can_elide_initializing_store_barrier
(
oop
new_obj
)
=
0
;
// If a compiler is eliding store barriers for TLAB-allocated objects,
// we will be informed of a slow-path allocation by a call
// to new_store_pre_barrier() above. Such a call precedes the
// initialization of the object itself, and no post-store-barriers will
// be issued. Some heap types require that the barrier strictly follows
// the initializing stores. (This is currently implemented by deferring the
// barrier until the next slow-path allocation or gc-related safepoint.)
// This interface answers whether a particular heap type needs the card
// mark to be thus strictly sequenced after the stores.
virtual
bool
card_mark_must_follow_store
()
const
=
0
;
// If the CollectedHeap was asked to defer a store barrier above,
// this informs it to flush such a deferred store barrier to the
// remembered set.
...
...
hotspot/src/share/vm/includeDB_compiler2
浏览文件 @
74e1e065
...
...
@@ -601,6 +601,7 @@ locknode.hpp subnode.hpp
loopTransform.cpp addnode.hpp
loopTransform.cpp allocation.inline.hpp
loopTransform.cpp callnode.hpp
loopTransform.cpp connode.hpp
loopTransform.cpp compileLog.hpp
loopTransform.cpp divnode.hpp
...
...
hotspot/src/share/vm/interpreter/abstractInterpreter.hpp
浏览文件 @
74e1e065
/*
* Copyright 1997-20
09
Sun Microsystems, Inc. All Rights Reserved.
* Copyright 1997-20
10
Sun Microsystems, Inc. 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
...
...
@@ -109,6 +109,8 @@ class AbstractInterpreter: AllStatic {
static
void
print_method_kind
(
MethodKind
kind
)
PRODUCT_RETURN
;
static
bool
can_be_compiled
(
methodHandle
m
);
// Runtime support
// length = invoke bytecode length (to advance to next bytecode)
...
...
hotspot/src/share/vm/memory/genCollectedHeap.cpp
浏览文件 @
74e1e065
...
...
@@ -51,6 +51,8 @@ GenCollectedHeap::GenCollectedHeap(GenCollectorPolicy *policy) :
}
jint
GenCollectedHeap
::
initialize
()
{
CollectedHeap
::
pre_initialize
();
int
i
;
_n_gens
=
gen_policy
()
->
number_of_generations
();
...
...
@@ -129,6 +131,7 @@ jint GenCollectedHeap::initialize() {
_rem_set
=
collector_policy
()
->
create_rem_set
(
_reserved
,
n_covered_regions
);
set_barrier_set
(
rem_set
()
->
bs
());
_gch
=
this
;
for
(
i
=
0
;
i
<
_n_gens
;
i
++
)
{
...
...
hotspot/src/share/vm/memory/genCollectedHeap.hpp
浏览文件 @
74e1e065
...
...
@@ -260,6 +260,10 @@ public:
return
true
;
}
virtual
bool
card_mark_must_follow_store
()
const
{
return
UseConcMarkSweepGC
;
}
// We don't need barriers for stores to objects in the
// young gen and, a fortiori, for initializing stores to
// objects therein. This applies to {DefNew,ParNew}+{Tenured,CMS}
...
...
hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp
浏览文件 @
74e1e065
...
...
@@ -100,7 +100,7 @@ void ThreadLocalAllocBuffer::accumulate_statistics() {
void
ThreadLocalAllocBuffer
::
make_parsable
(
bool
retire
)
{
if
(
end
()
!=
NULL
)
{
invariants
();
CollectedHeap
::
fill_with_object
(
top
(),
hard_end
());
CollectedHeap
::
fill_with_object
(
top
(),
hard_end
()
,
retire
);
if
(
retire
||
ZeroTLAB
)
{
// "Reset" the TLAB
set_start
(
NULL
);
...
...
hotspot/src/share/vm/memory/threadLocalAllocBuffer.inline.hpp
浏览文件 @
74e1e065
/*
* Copyright 1999-200
7
Sun Microsystems, Inc. All Rights Reserved.
* Copyright 1999-200
9
Sun Microsystems, Inc. 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
...
...
@@ -27,8 +27,13 @@ inline HeapWord* ThreadLocalAllocBuffer::allocate(size_t size) {
HeapWord
*
obj
=
top
();
if
(
pointer_delta
(
end
(),
obj
)
>=
size
)
{
// successful thread-local allocation
DEBUG_ONLY
(
Copy
::
fill_to_words
(
obj
,
size
,
badHeapWordVal
));
#ifdef ASSERT
// Skip mangling the space corresponding to the object header to
// ensure that the returned space is not considered parsable by
// any concurrent GC thread.
size_t
hdr_size
=
CollectedHeap
::
min_fill_size
();
Copy
::
fill_to_words
(
obj
+
hdr_size
,
size
-
hdr_size
,
badHeapWordVal
);
#endif // ASSERT
// This addition is safe because we know that top is
// at least size below end, so the add can't wrap.
set_top
(
obj
+
size
);
...
...
hotspot/src/share/vm/opto/c2_globals.hpp
浏览文件 @
74e1e065
...
...
@@ -154,6 +154,12 @@
notproduct(bool, TraceProfileTripCount, false, \
"Trace profile loop trip count information") \
\
product(bool, UseLoopPredicate, true, \
"Generate a predicate to select fast/slow loop versions") \
\
develop(bool, TraceLoopPredicate, false, \
"Trace generation of loop predicates") \
\
develop(bool, OptoCoalesce, true, \
"Use Conservative Copy Coalescing in the Register Allocator") \
\
...
...
hotspot/src/share/vm/opto/compile.cpp
浏览文件 @
74e1e065
...
...
@@ -932,6 +932,7 @@ void Compile::Init(int aliaslevel) {
_intrinsics
=
NULL
;
_macro_nodes
=
new
GrowableArray
<
Node
*>
(
comp_arena
(),
8
,
0
,
NULL
);
_predicate_opaqs
=
new
GrowableArray
<
Node
*>
(
comp_arena
(),
8
,
0
,
NULL
);
register_library_intrinsics
();
}
...
...
@@ -1553,6 +1554,19 @@ void Compile::Finish_Warm() {
}
}
//---------------------cleanup_loop_predicates-----------------------
// Remove the opaque nodes that protect the predicates so that all unused
// checks and uncommon_traps will be eliminated from the ideal graph
void
Compile
::
cleanup_loop_predicates
(
PhaseIterGVN
&
igvn
)
{
if
(
predicate_count
()
==
0
)
return
;
for
(
int
i
=
predicate_count
();
i
>
0
;
i
--
)
{
Node
*
n
=
predicate_opaque1_node
(
i
-
1
);
assert
(
n
->
Opcode
()
==
Op_Opaque1
,
"must be"
);
igvn
.
replace_node
(
n
,
n
->
in
(
1
));
}
assert
(
predicate_count
()
==
0
,
"should be clean!"
);
igvn
.
optimize
();
}
//------------------------------Optimize---------------------------------------
// Given a graph, optimize it.
...
...
@@ -1594,7 +1608,7 @@ void Compile::Optimize() {
if
((
loop_opts_cnt
>
0
)
&&
(
has_loops
()
||
has_split_ifs
()))
{
{
TracePhase
t2
(
"idealLoop"
,
&
_t_idealLoop
,
true
);
PhaseIdealLoop
ideal_loop
(
igvn
,
true
);
PhaseIdealLoop
ideal_loop
(
igvn
,
true
,
UseLoopPredicate
);
loop_opts_cnt
--
;
if
(
major_progress
())
print_method
(
"PhaseIdealLoop 1"
,
2
);
if
(
failing
())
return
;
...
...
@@ -1602,7 +1616,7 @@ void Compile::Optimize() {
// Loop opts pass if partial peeling occurred in previous pass
if
(
PartialPeelLoop
&&
major_progress
()
&&
(
loop_opts_cnt
>
0
))
{
TracePhase
t3
(
"idealLoop"
,
&
_t_idealLoop
,
true
);
PhaseIdealLoop
ideal_loop
(
igvn
,
false
);
PhaseIdealLoop
ideal_loop
(
igvn
,
false
,
UseLoopPredicate
);
loop_opts_cnt
--
;
if
(
major_progress
())
print_method
(
"PhaseIdealLoop 2"
,
2
);
if
(
failing
())
return
;
...
...
@@ -1610,7 +1624,7 @@ void Compile::Optimize() {
// Loop opts pass for loop-unrolling before CCP
if
(
major_progress
()
&&
(
loop_opts_cnt
>
0
))
{
TracePhase
t4
(
"idealLoop"
,
&
_t_idealLoop
,
true
);
PhaseIdealLoop
ideal_loop
(
igvn
,
false
);
PhaseIdealLoop
ideal_loop
(
igvn
,
false
,
UseLoopPredicate
);
loop_opts_cnt
--
;
if
(
major_progress
())
print_method
(
"PhaseIdealLoop 3"
,
2
);
}
...
...
@@ -1648,13 +1662,21 @@ void Compile::Optimize() {
// peeling, unrolling, etc.
if
(
loop_opts_cnt
>
0
)
{
debug_only
(
int
cnt
=
0
;
);
bool
loop_predication
=
UseLoopPredicate
;
while
(
major_progress
()
&&
(
loop_opts_cnt
>
0
))
{
TracePhase
t2
(
"idealLoop"
,
&
_t_idealLoop
,
true
);
assert
(
cnt
++
<
40
,
"infinite cycle in loop optimization"
);
PhaseIdealLoop
ideal_loop
(
igvn
,
true
);
PhaseIdealLoop
ideal_loop
(
igvn
,
true
,
loop_predication
);
loop_opts_cnt
--
;
if
(
major_progress
())
print_method
(
"PhaseIdealLoop iterations"
,
2
);
if
(
failing
())
return
;
// Perform loop predication optimization during first iteration after CCP.
// After that switch it off and cleanup unused loop predicates.
if
(
loop_predication
)
{
loop_predication
=
false
;
cleanup_loop_predicates
(
igvn
);
if
(
failing
())
return
;
}
}
}
...
...
hotspot/src/share/vm/opto/compile.hpp
浏览文件 @
74e1e065
...
...
@@ -38,6 +38,7 @@ class Node_Notes;
class
OptoReg
;
class
PhaseCFG
;
class
PhaseGVN
;
class
PhaseIterGVN
;
class
PhaseRegAlloc
;
class
PhaseCCP
;
class
PhaseCCP_DCE
;
...
...
@@ -172,6 +173,7 @@ class Compile : public Phase {
const
char
*
_failure_reason
;
// for record_failure/failing pattern
GrowableArray
<
CallGenerator
*>*
_intrinsics
;
// List of intrinsics.
GrowableArray
<
Node
*>*
_macro_nodes
;
// List of nodes which need to be expanded before matching.
GrowableArray
<
Node
*>*
_predicate_opaqs
;
// List of Opaque1 nodes for the loop predicates.
ConnectionGraph
*
_congraph
;
#ifndef PRODUCT
IdealGraphPrinter
*
_printer
;
...
...
@@ -351,7 +353,9 @@ class Compile : public Phase {
}
int
macro_count
()
{
return
_macro_nodes
->
length
();
}
int
predicate_count
()
{
return
_predicate_opaqs
->
length
();}
Node
*
macro_node
(
int
idx
)
{
return
_macro_nodes
->
at
(
idx
);
}
Node
*
predicate_opaque1_node
(
int
idx
)
{
return
_predicate_opaqs
->
at
(
idx
);}
ConnectionGraph
*
congraph
()
{
return
_congraph
;}
void
add_macro_node
(
Node
*
n
)
{
//assert(n->is_macro(), "must be a macro node");
...
...
@@ -363,7 +367,19 @@ class Compile : public Phase {
// that the node is in the array before attempting to remove it
if
(
_macro_nodes
->
contains
(
n
))
_macro_nodes
->
remove
(
n
);
// remove from _predicate_opaqs list also if it is there
if
(
predicate_count
()
>
0
&&
_predicate_opaqs
->
contains
(
n
)){
_predicate_opaqs
->
remove
(
n
);
}
}
void
add_predicate_opaq
(
Node
*
n
)
{
assert
(
!
_predicate_opaqs
->
contains
(
n
),
" duplicate entry in predicate opaque1"
);
assert
(
_macro_nodes
->
contains
(
n
),
"should have already been in macro list"
);
_predicate_opaqs
->
append
(
n
);
}
// remove the opaque nodes that protect the predicates so that the unused checks and
// uncommon traps will be eliminated from the graph.
void
cleanup_loop_predicates
(
PhaseIterGVN
&
igvn
);
// Compilation environment.
Arena
*
comp_arena
()
{
return
&
_comp_arena
;
}
...
...
hotspot/src/share/vm/opto/graphKit.cpp
浏览文件 @
74e1e065
...
...
@@ -3259,9 +3259,10 @@ void GraphKit::write_barrier_post(Node* oop_store,
if
(
use_ReduceInitialCardMarks
()
&&
obj
==
just_allocated_object
(
control
()))
{
// We can skip marks on a freshly-allocated object in Eden.
// Keep this code in sync with maybe_defer_card_mark() in runtime.cpp.
// That routine informs GC to take appropriate compensating steps
// so as to make this card-mark elision safe.
// Keep this code in sync with new_store_pre_barrier() in runtime.cpp.
// That routine informs GC to take appropriate compensating steps,
// upon a slow-path allocation, so as to make this card-mark
// elision safe.
return
;
}
...
...
hotspot/src/share/vm/opto/loopTransform.cpp
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
hotspot/src/share/vm/opto/loopnode.cpp
浏览文件 @
74e1e065
...
...
@@ -1420,11 +1420,57 @@ static void log_loop_tree(IdealLoopTree* root, IdealLoopTree* loop, CompileLog*
}
}
//---------------------collect_potentially_useful_predicates-----------------------
// Helper function to collect potentially useful predicates to prevent them from
// being eliminated by PhaseIdealLoop::eliminate_useless_predicates
void
PhaseIdealLoop
::
collect_potentially_useful_predicates
(
IdealLoopTree
*
loop
,
Unique_Node_List
&
useful_predicates
)
{
if
(
loop
->
_child
)
{
// child
collect_potentially_useful_predicates
(
loop
->
_child
,
useful_predicates
);
}
// self (only loops that we can apply loop predication may use their predicates)
if
(
loop
->
_head
->
is_Loop
()
&&
!
loop
->
_irreducible
&&
!
loop
->
tail
()
->
is_top
())
{
LoopNode
*
lpn
=
loop
->
_head
->
as_Loop
();
Node
*
entry
=
lpn
->
in
(
LoopNode
::
EntryControl
);
ProjNode
*
predicate_proj
=
find_predicate_insertion_point
(
entry
);
if
(
predicate_proj
!=
NULL
)
{
// right pattern that can be used by loop predication
assert
(
entry
->
in
(
0
)
->
in
(
1
)
->
in
(
1
)
->
Opcode
()
==
Op_Opaque1
,
"must be"
);
useful_predicates
.
push
(
entry
->
in
(
0
)
->
in
(
1
)
->
in
(
1
));
// good one
}
}
if
(
loop
->
_next
)
{
// sibling
collect_potentially_useful_predicates
(
loop
->
_next
,
useful_predicates
);
}
}
//------------------------eliminate_useless_predicates-----------------------------
// Eliminate all inserted predicates if they could not be used by loop predication.
void
PhaseIdealLoop
::
eliminate_useless_predicates
()
{
if
(
C
->
predicate_count
()
==
0
)
return
;
// no predicate left
Unique_Node_List
useful_predicates
;
// to store useful predicates
if
(
C
->
has_loops
())
{
collect_potentially_useful_predicates
(
_ltree_root
->
_child
,
useful_predicates
);
}
for
(
int
i
=
C
->
predicate_count
();
i
>
0
;
i
--
)
{
Node
*
n
=
C
->
predicate_opaque1_node
(
i
-
1
);
assert
(
n
->
Opcode
()
==
Op_Opaque1
,
"must be"
);
if
(
!
useful_predicates
.
member
(
n
))
{
// not in the useful list
_igvn
.
replace_node
(
n
,
n
->
in
(
1
));
}
}
}
//=============================================================================
//----------------------------build_and_optimize-------------------------------
// Create a PhaseLoop. Build the ideal Loop tree. Map each Ideal Node to
// its corresponding LoopNode. If 'optimize' is true, do some loop cleanups.
void
PhaseIdealLoop
::
build_and_optimize
(
bool
do_split_ifs
)
{
void
PhaseIdealLoop
::
build_and_optimize
(
bool
do_split_ifs
,
bool
do_loop_pred
)
{
int
old_progress
=
C
->
major_progress
();
// Reset major-progress flag for the driver's heuristics
...
...
@@ -1577,6 +1623,12 @@ void PhaseIdealLoop::build_and_optimize(bool do_split_ifs) {
return
;
}
// some parser-inserted loop predicates could never be used by loop
// predication. Eliminate them before loop optimization
if
(
UseLoopPredicate
)
{
eliminate_useless_predicates
();
}
// clear out the dead code
while
(
_deadlist
.
size
())
{
_igvn
.
remove_globally_dead_node
(
_deadlist
.
pop
());
...
...
@@ -1603,7 +1655,7 @@ void PhaseIdealLoop::build_and_optimize(bool do_split_ifs) {
// Because RCE opportunities can be masked by split_thru_phi,
// look for RCE candidates and inhibit split_thru_phi
// on just their loop-phi's for this pass of loop opts
if
(
SplitIfBlocks
&&
do_split_ifs
)
{
if
(
SplitIfBlocks
&&
do_split_ifs
)
{
if
(
lpt
->
policy_range_check
(
this
))
{
lpt
->
_rce_candidate
=
1
;
// = true
}
...
...
@@ -1619,12 +1671,17 @@ void PhaseIdealLoop::build_and_optimize(bool do_split_ifs) {
NOT_PRODUCT
(
if
(
VerifyLoopOptimizations
)
verify
();
);
}
// Perform loop predication before iteration splitting
if
(
do_loop_pred
&&
C
->
has_loops
()
&&
!
C
->
major_progress
())
{
_ltree_root
->
_child
->
loop_predication
(
this
);
}
// Perform iteration-splitting on inner loops. Split iterations to avoid
// range checks or one-shot null checks.
// If split-if's didn't hack the graph too bad (no CFG changes)
// then do loop opts.
if
(
C
->
has_loops
()
&&
!
C
->
major_progress
()
)
{
if
(
C
->
has_loops
()
&&
!
C
->
major_progress
()
)
{
memset
(
worklist
.
adr
(),
0
,
worklist
.
Size
()
*
sizeof
(
Node
*
)
);
_ltree_root
->
_child
->
iteration_split
(
this
,
worklist
);
// No verify after peeling! GCM has hoisted code out of the loop.
...
...
@@ -1636,7 +1693,7 @@ void PhaseIdealLoop::build_and_optimize(bool do_split_ifs) {
// Do verify graph edges in any case
NOT_PRODUCT
(
C
->
verify_graph_edges
();
);
if
(
!
do_split_ifs
)
{
if
(
!
do_split_ifs
)
{
// We saw major progress in Split-If to get here. We forced a
// pass with unrolling and not split-if, however more split-if's
// might make progress. If the unrolling didn't make progress
...
...
@@ -2763,6 +2820,22 @@ void PhaseIdealLoop::build_loop_late_post( Node *n ) {
Node
*
legal
=
LCA
;
// Walk 'legal' up the IDOM chain
Node
*
least
=
legal
;
// Best legal position so far
while
(
early
!=
legal
)
{
// While not at earliest legal
#ifdef ASSERT
if
(
legal
->
is_Start
()
&&
!
early
->
is_Root
())
{
// Bad graph. Print idom path and fail.
tty
->
print_cr
(
"Bad graph detected in build_loop_late"
);
tty
->
print
(
"n: "
);
n
->
dump
();
tty
->
cr
();
tty
->
print
(
"early: "
);
early
->
dump
();
tty
->
cr
();
int
ct
=
0
;
Node
*
dbg_legal
=
LCA
;
while
(
!
dbg_legal
->
is_Start
()
&&
ct
<
100
)
{
tty
->
print
(
"idom[%d] "
,
ct
);
dbg_legal
->
dump
();
tty
->
cr
();
ct
++
;
dbg_legal
=
idom
(
dbg_legal
);
}
assert
(
false
,
"Bad graph detected in build_loop_late"
);
}
#endif
// Find least loop nesting depth
legal
=
idom
(
legal
);
// Bump up the IDOM tree
// Check for lower nesting depth
...
...
hotspot/src/share/vm/opto/loopnode.hpp
浏览文件 @
74e1e065
...
...
@@ -30,6 +30,7 @@ class LoopNode;
class
Node
;
class
PhaseIdealLoop
;
class
VectorSet
;
class
Invariance
;
struct
small_cache
;
//
...
...
@@ -325,6 +326,10 @@ public:
// Returns TRUE if loop tree is structurally changed.
bool
beautify_loops
(
PhaseIdealLoop
*
phase
);
// Perform optimization to use the loop predicates for null checks and range checks.
// Applies to any loop level (not just the innermost one)
bool
loop_predication
(
PhaseIdealLoop
*
phase
);
// Perform iteration-splitting on inner loops. Split iterations to
// avoid range checks or one-shot null checks. Returns false if the
// current round of loop opts should stop.
...
...
@@ -395,6 +400,9 @@ public:
// into longer memory ops, we may want to increase alignment.
bool
policy_align
(
PhaseIdealLoop
*
phase
)
const
;
// Return TRUE if "iff" is a range check.
bool
is_range_check_if
(
IfNode
*
iff
,
PhaseIdealLoop
*
phase
,
Invariance
&
invar
)
const
;
// Compute loop trip count from profile data
void
compute_profile_trip_cnt
(
PhaseIdealLoop
*
phase
);
...
...
@@ -521,9 +529,6 @@ class PhaseIdealLoop : public PhaseTransform {
}
Node
*
dom_lca_for_get_late_ctrl_internal
(
Node
*
lca
,
Node
*
n
,
Node
*
tag
);
// true if CFG node d dominates CFG node n
bool
is_dominator
(
Node
*
d
,
Node
*
n
);
// Helper function for directing control inputs away from CFG split
// points.
Node
*
find_non_split_ctrl
(
Node
*
ctrl
)
const
{
...
...
@@ -572,6 +577,17 @@ public:
assert
(
n
==
find_non_split_ctrl
(
n
),
"must return legal ctrl"
);
return
n
;
}
// true if CFG node d dominates CFG node n
bool
is_dominator
(
Node
*
d
,
Node
*
n
);
// return get_ctrl for a data node and self(n) for a CFG node
Node
*
ctrl_or_self
(
Node
*
n
)
{
if
(
has_ctrl
(
n
))
return
get_ctrl
(
n
);
else
{
assert
(
n
->
is_CFG
(),
"must be a CFG node"
);
return
n
;
}
}
private:
Node
*
get_ctrl_no_update
(
Node
*
i
)
const
{
...
...
@@ -600,7 +616,7 @@ private:
// Lazy-dazy update of 'get_ctrl' and 'idom_at' mechanisms. Replace
// the 'old_node' with 'new_node'. Kill old-node. Add a reference
// from old_node to new_node to support the lazy update. Reference
// replaces loop reference, since that is not neede for dead node.
// replaces loop reference, since that is not neede
d
for dead node.
public:
void
lazy_update
(
Node
*
old_node
,
Node
*
new_node
)
{
assert
(
old_node
!=
new_node
,
"no cycles please"
);
...
...
@@ -679,11 +695,11 @@ private:
_dom_lca_tags
(
C
->
comp_arena
()),
_verify_me
(
NULL
),
_verify_only
(
true
)
{
build_and_optimize
(
false
);
build_and_optimize
(
false
,
false
);
}
// build the loop tree and perform any requested optimizations
void
build_and_optimize
(
bool
do_split_if
);
void
build_and_optimize
(
bool
do_split_if
,
bool
do_loop_pred
);
public:
// Dominators for the sea of nodes
...
...
@@ -694,13 +710,13 @@ public:
Node
*
dom_lca_internal
(
Node
*
n1
,
Node
*
n2
)
const
;
// Compute the Ideal Node to Loop mapping
PhaseIdealLoop
(
PhaseIterGVN
&
igvn
,
bool
do_split_ifs
)
:
PhaseIdealLoop
(
PhaseIterGVN
&
igvn
,
bool
do_split_ifs
,
bool
do_loop_pred
)
:
PhaseTransform
(
Ideal_Loop
),
_igvn
(
igvn
),
_dom_lca_tags
(
C
->
comp_arena
()),
_verify_me
(
NULL
),
_verify_only
(
false
)
{
build_and_optimize
(
do_split_ifs
);
build_and_optimize
(
do_split_ifs
,
do_loop_pred
);
}
// Verify that verify_me made the same decisions as a fresh run.
...
...
@@ -710,7 +726,7 @@ public:
_dom_lca_tags
(
C
->
comp_arena
()),
_verify_me
(
verify_me
),
_verify_only
(
false
)
{
build_and_optimize
(
false
);
build_and_optimize
(
false
,
false
);
}
// Build and verify the loop tree without modifying the graph. This
...
...
@@ -790,6 +806,30 @@ public:
// Return true if exp is a scaled induction var plus (or minus) constant
bool
is_scaled_iv_plus_offset
(
Node
*
exp
,
Node
*
iv
,
int
*
p_scale
,
Node
**
p_offset
,
int
depth
=
0
);
// Return true if proj is for "proj->[region->..]call_uct"
bool
is_uncommon_trap_proj
(
ProjNode
*
proj
,
bool
must_reason_predicate
=
false
);
// Return true for "if(test)-> proj -> ...
// |
// V
// other_proj->[region->..]call_uct"
bool
is_uncommon_trap_if_pattern
(
ProjNode
*
proj
,
bool
must_reason_predicate
=
false
);
// Create a new if above the uncommon_trap_if_pattern for the predicate to be promoted
ProjNode
*
create_new_if_for_predicate
(
ProjNode
*
cont_proj
);
// Find a good location to insert a predicate
ProjNode
*
find_predicate_insertion_point
(
Node
*
start_c
);
// Construct a range check for a predicate if
BoolNode
*
rc_predicate
(
Node
*
ctrl
,
int
scale
,
Node
*
offset
,
Node
*
init
,
Node
*
limit
,
Node
*
stride
,
Node
*
range
);
// Implementation of the loop predication to promote checks outside the loop
bool
loop_predication_impl
(
IdealLoopTree
*
loop
);
// Helper function to collect predicate for eliminating the useless ones
void
collect_potentially_useful_predicates
(
IdealLoopTree
*
loop
,
Unique_Node_List
&
predicate_opaque1
);
void
eliminate_useless_predicates
();
// Eliminate range-checks and other trip-counter vs loop-invariant tests.
void
do_range_check
(
IdealLoopTree
*
loop
,
Node_List
&
old_new
);
...
...
@@ -906,7 +946,6 @@ private:
const
TypeInt
*
filtered_type_from_dominators
(
Node
*
val
,
Node
*
val_ctrl
);
// Helper functions
void
register_new_node
(
Node
*
n
,
Node
*
blk
);
Node
*
spinup
(
Node
*
iff
,
Node
*
new_false
,
Node
*
new_true
,
Node
*
region
,
Node
*
phi
,
small_cache
*
cache
);
Node
*
find_use_block
(
Node
*
use
,
Node
*
def
,
Node
*
old_false
,
Node
*
new_false
,
Node
*
old_true
,
Node
*
new_true
);
void
handle_use
(
Node
*
use
,
Node
*
def
,
small_cache
*
cache
,
Node
*
region_dom
,
Node
*
new_false
,
Node
*
new_true
,
Node
*
old_false
,
Node
*
old_true
);
...
...
@@ -918,6 +957,7 @@ private:
public:
void
set_created_loop_node
()
{
_created_loop_node
=
true
;
}
bool
created_loop_node
()
{
return
_created_loop_node
;
}
void
register_new_node
(
Node
*
n
,
Node
*
blk
);
#ifndef PRODUCT
void
dump
(
)
const
;
...
...
hotspot/src/share/vm/opto/parse.hpp
浏览文件 @
74e1e065
...
...
@@ -430,6 +430,11 @@ class Parse : public GraphKit {
}
}
// Return true if the parser should add a loop predicate
bool
should_add_predicate
(
int
target_bci
);
// Insert a loop predicate into the graph
void
add_predicate
();
// Note: Intrinsic generation routines may be found in library_call.cpp.
// Helper function to setup Ideal Call nodes
...
...
@@ -491,7 +496,7 @@ class Parse : public GraphKit {
void
do_ifnull
(
BoolTest
::
mask
btest
,
Node
*
c
);
void
do_if
(
BoolTest
::
mask
btest
,
Node
*
c
);
void
repush_if_args
();
int
repush_if_args
();
void
adjust_map_after_if
(
BoolTest
::
mask
btest
,
Node
*
c
,
float
prob
,
Block
*
path
,
Block
*
other_path
);
IfNode
*
jump_if_fork_int
(
Node
*
a
,
Node
*
b
,
BoolTest
::
mask
mask
);
...
...
hotspot/src/share/vm/opto/parse1.cpp
浏览文件 @
74e1e065
...
...
@@ -1383,6 +1383,10 @@ void Parse::do_one_block() {
set_parse_bci
(
iter
().
cur_bci
());
if
(
bci
()
==
block
()
->
limit
())
{
// insert a predicate if it falls through to a loop head block
if
(
should_add_predicate
(
bci
())){
add_predicate
();
}
// Do not walk into the next block until directed by do_all_blocks.
merge
(
bci
());
break
;
...
...
@@ -2083,6 +2087,37 @@ void Parse::add_safepoint() {
}
}
//------------------------------should_add_predicate--------------------------
bool
Parse
::
should_add_predicate
(
int
target_bci
)
{
if
(
!
UseLoopPredicate
)
return
false
;
Block
*
target
=
successor_for_bci
(
target_bci
);
if
(
target
!=
NULL
&&
target
->
is_loop_head
()
&&
block
()
->
rpo
()
<
target
->
rpo
())
{
return
true
;
}
return
false
;
}
//------------------------------add_predicate---------------------------------
void
Parse
::
add_predicate
()
{
assert
(
UseLoopPredicate
,
"use only for loop predicate"
);
Node
*
cont
=
_gvn
.
intcon
(
1
);
Node
*
opq
=
_gvn
.
transform
(
new
(
C
,
2
)
Opaque1Node
(
C
,
cont
));
Node
*
bol
=
_gvn
.
transform
(
new
(
C
,
2
)
Conv2BNode
(
opq
));
IfNode
*
iff
=
create_and_map_if
(
control
(),
bol
,
PROB_MAX
,
COUNT_UNKNOWN
);
Node
*
iffalse
=
_gvn
.
transform
(
new
(
C
,
1
)
IfFalseNode
(
iff
));
C
->
add_predicate_opaq
(
opq
);
{
PreserveJVMState
pjvms
(
this
);
set_control
(
iffalse
);
uncommon_trap
(
Deoptimization
::
Reason_predicate
,
Deoptimization
::
Action_maybe_recompile
);
}
Node
*
iftrue
=
_gvn
.
transform
(
new
(
C
,
1
)
IfTrueNode
(
iff
));
set_control
(
iftrue
);
}
#ifndef PRODUCT
//------------------------show_parse_info--------------------------------------
void
Parse
::
show_parse_info
()
{
...
...
hotspot/src/share/vm/opto/parse2.cpp
浏览文件 @
74e1e065
...
...
@@ -278,6 +278,11 @@ void Parse::do_tableswitch() {
if
(
len
<
1
)
{
// If this is a backward branch, add safepoint
maybe_add_safepoint
(
default_dest
);
if
(
should_add_predicate
(
default_dest
)){
_sp
+=
1
;
// set original stack for use by uncommon_trap
add_predicate
();
_sp
-=
1
;
}
merge
(
default_dest
);
return
;
}
...
...
@@ -324,6 +329,11 @@ void Parse::do_lookupswitch() {
if
(
len
<
1
)
{
// If this is a backward branch, add safepoint
maybe_add_safepoint
(
default_dest
);
if
(
should_add_predicate
(
default_dest
)){
_sp
+=
1
;
// set original stack for use by uncommon_trap
add_predicate
();
_sp
-=
1
;
}
merge
(
default_dest
);
return
;
}
...
...
@@ -731,6 +741,9 @@ void Parse::do_jsr() {
push
(
_gvn
.
makecon
(
ret_addr
));
// Flow to the jsr.
if
(
should_add_predicate
(
jsr_bci
)){
add_predicate
();
}
merge
(
jsr_bci
);
}
...
...
@@ -881,7 +894,7 @@ bool Parse::seems_never_taken(float prob) {
//-------------------------------repush_if_args--------------------------------
// Push arguments of an "if" bytecode back onto the stack by adjusting _sp.
inline
void
Parse
::
repush_if_args
()
{
inline
int
Parse
::
repush_if_args
()
{
#ifndef PRODUCT
if
(
PrintOpto
&&
WizardMode
)
{
tty
->
print
(
"defending against excessive implicit null exceptions on %s @%d in "
,
...
...
@@ -895,6 +908,7 @@ inline void Parse::repush_if_args() {
assert
(
argument
(
0
)
!=
NULL
,
"must exist"
);
assert
(
bc_depth
==
1
||
argument
(
1
)
!=
NULL
,
"two must exist"
);
_sp
+=
bc_depth
;
return
bc_depth
;
}
//----------------------------------do_ifnull----------------------------------
...
...
@@ -954,8 +968,14 @@ void Parse::do_ifnull(BoolTest::mask btest, Node *c) {
// Update method data
profile_taken_branch
(
target_bci
);
adjust_map_after_if
(
btest
,
c
,
prob
,
branch_block
,
next_block
);
if
(
!
stopped
())
if
(
!
stopped
())
{
if
(
should_add_predicate
(
target_bci
)){
// add a predicate if it branches to a loop
int
nargs
=
repush_if_args
();
// set original stack for uncommon_trap
add_predicate
();
_sp
-=
nargs
;
}
merge
(
target_bci
);
}
}
}
...
...
@@ -1076,8 +1096,14 @@ void Parse::do_if(BoolTest::mask btest, Node* c) {
// Update method data
profile_taken_branch
(
target_bci
);
adjust_map_after_if
(
taken_btest
,
c
,
prob
,
branch_block
,
next_block
);
if
(
!
stopped
())
if
(
!
stopped
())
{
if
(
should_add_predicate
(
target_bci
)){
// add a predicate if it branches to a loop
int
nargs
=
repush_if_args
();
// set original stack for the uncommon_trap
add_predicate
();
_sp
-=
nargs
;
}
merge
(
target_bci
);
}
}
}
...
...
@@ -2080,6 +2106,10 @@ void Parse::do_one_bytecode() {
// Update method data
profile_taken_branch
(
target_bci
);
// Add loop predicate if it goes to a loop
if
(
should_add_predicate
(
target_bci
)){
add_predicate
();
}
// Merge the current control into the target basic block
merge
(
target_bci
);
...
...
hotspot/src/share/vm/opto/runtime.cpp
浏览文件 @
74e1e065
...
...
@@ -143,7 +143,7 @@ const char* OptoRuntime::stub_name(address entry) {
// We failed the fast-path allocation. Now we need to do a scavenge or GC
// and try allocation again.
void
OptoRuntime
::
maybe_defer_card_mark
(
JavaThread
*
thread
)
{
void
OptoRuntime
::
new_store_pre_barrier
(
JavaThread
*
thread
)
{
// After any safepoint, just before going back to compiled code,
// we inform the GC that we will be doing initializing writes to
// this object in the future without emitting card-marks, so
...
...
@@ -156,7 +156,7 @@ void OptoRuntime::maybe_defer_card_mark(JavaThread* thread) {
assert
(
Universe
::
heap
()
->
can_elide_tlab_store_barriers
(),
"compiler must check this first"
);
// GC may decide to give back a safer copy of new_obj.
new_obj
=
Universe
::
heap
()
->
defer_sto
re_barrier
(
thread
,
new_obj
);
new_obj
=
Universe
::
heap
()
->
new_store_p
re_barrier
(
thread
,
new_obj
);
thread
->
set_vm_result
(
new_obj
);
}
...
...
@@ -200,7 +200,7 @@ JRT_BLOCK_ENTRY(void, OptoRuntime::new_instance_C(klassOopDesc* klass, JavaThrea
if
(
GraphKit
::
use_ReduceInitialCardMarks
())
{
// inform GC that we won't do card marks for initializing writes.
maybe_defer_card_mark
(
thread
);
new_store_pre_barrier
(
thread
);
}
JRT_END
...
...
@@ -239,7 +239,7 @@ JRT_BLOCK_ENTRY(void, OptoRuntime::new_array_C(klassOopDesc* array_type, int len
if
(
GraphKit
::
use_ReduceInitialCardMarks
())
{
// inform GC that we won't do card marks for initializing writes.
maybe_defer_card_mark
(
thread
);
new_store_pre_barrier
(
thread
);
}
JRT_END
...
...
hotspot/src/share/vm/opto/runtime.hpp
浏览文件 @
74e1e065
...
...
@@ -133,8 +133,9 @@ class OptoRuntime : public AllStatic {
// Allocate storage for a objArray or typeArray
static
void
new_array_C
(
klassOopDesc
*
array_klass
,
int
len
,
JavaThread
*
thread
);
// Post-slow-path-allocation step for implementing ReduceInitialCardMarks:
static
void
maybe_defer_card_mark
(
JavaThread
*
thread
);
// Post-slow-path-allocation, pre-initializing-stores step for
// implementing ReduceInitialCardMarks
static
void
new_store_pre_barrier
(
JavaThread
*
thread
);
// Allocate storage for a multi-dimensional arrays
// Note: needs to be fixed for arbitrary number of dimensions
...
...
hotspot/src/share/vm/opto/split_if.cpp
浏览文件 @
74e1e065
...
...
@@ -219,6 +219,7 @@ bool PhaseIdealLoop::split_up( Node *n, Node *blk1, Node *blk2 ) {
//------------------------------register_new_node------------------------------
void
PhaseIdealLoop
::
register_new_node
(
Node
*
n
,
Node
*
blk
)
{
assert
(
!
n
->
is_CFG
(),
"must be data node"
);
_igvn
.
register_new_node_with_optimizer
(
n
);
set_ctrl
(
n
,
blk
);
IdealLoopTree
*
loop
=
get_loop
(
blk
);
...
...
hotspot/src/share/vm/opto/subnode.cpp
浏览文件 @
74e1e065
/*
* Copyright 1997-20
09
Sun Microsystems, Inc. All Rights Reserved.
* Copyright 1997-20
10
Sun Microsystems, Inc. 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
...
...
@@ -1244,8 +1244,7 @@ const Type *CosDNode::Value( PhaseTransform *phase ) const {
if
(
t1
==
Type
::
TOP
)
return
Type
::
TOP
;
if
(
t1
->
base
()
!=
Type
::
DoubleCon
)
return
Type
::
DOUBLE
;
double
d
=
t1
->
getd
();
if
(
d
<
0.0
)
return
Type
::
DOUBLE
;
return
TypeD
::
make
(
SharedRuntime
::
dcos
(
d
)
);
return
TypeD
::
make
(
StubRoutines
::
intrinsic_cos
(
d
)
);
}
//=============================================================================
...
...
@@ -1256,8 +1255,7 @@ const Type *SinDNode::Value( PhaseTransform *phase ) const {
if
(
t1
==
Type
::
TOP
)
return
Type
::
TOP
;
if
(
t1
->
base
()
!=
Type
::
DoubleCon
)
return
Type
::
DOUBLE
;
double
d
=
t1
->
getd
();
if
(
d
<
0.0
)
return
Type
::
DOUBLE
;
return
TypeD
::
make
(
SharedRuntime
::
dsin
(
d
)
);
return
TypeD
::
make
(
StubRoutines
::
intrinsic_sin
(
d
)
);
}
//=============================================================================
...
...
@@ -1268,8 +1266,7 @@ const Type *TanDNode::Value( PhaseTransform *phase ) const {
if
(
t1
==
Type
::
TOP
)
return
Type
::
TOP
;
if
(
t1
->
base
()
!=
Type
::
DoubleCon
)
return
Type
::
DOUBLE
;
double
d
=
t1
->
getd
();
if
(
d
<
0.0
)
return
Type
::
DOUBLE
;
return
TypeD
::
make
(
SharedRuntime
::
dtan
(
d
)
);
return
TypeD
::
make
(
StubRoutines
::
intrinsic_tan
(
d
)
);
}
//=============================================================================
...
...
@@ -1280,8 +1277,7 @@ const Type *LogDNode::Value( PhaseTransform *phase ) const {
if
(
t1
==
Type
::
TOP
)
return
Type
::
TOP
;
if
(
t1
->
base
()
!=
Type
::
DoubleCon
)
return
Type
::
DOUBLE
;
double
d
=
t1
->
getd
();
if
(
d
<
0.0
)
return
Type
::
DOUBLE
;
return
TypeD
::
make
(
SharedRuntime
::
dlog
(
d
)
);
return
TypeD
::
make
(
StubRoutines
::
intrinsic_log
(
d
)
);
}
//=============================================================================
...
...
@@ -1292,8 +1288,7 @@ const Type *Log10DNode::Value( PhaseTransform *phase ) const {
if
(
t1
==
Type
::
TOP
)
return
Type
::
TOP
;
if
(
t1
->
base
()
!=
Type
::
DoubleCon
)
return
Type
::
DOUBLE
;
double
d
=
t1
->
getd
();
if
(
d
<
0.0
)
return
Type
::
DOUBLE
;
return
TypeD
::
make
(
SharedRuntime
::
dlog10
(
d
)
);
return
TypeD
::
make
(
StubRoutines
::
intrinsic_log10
(
d
)
);
}
//=============================================================================
...
...
@@ -1304,8 +1299,7 @@ const Type *ExpDNode::Value( PhaseTransform *phase ) const {
if
(
t1
==
Type
::
TOP
)
return
Type
::
TOP
;
if
(
t1
->
base
()
!=
Type
::
DoubleCon
)
return
Type
::
DOUBLE
;
double
d
=
t1
->
getd
();
if
(
d
<
0.0
)
return
Type
::
DOUBLE
;
return
TypeD
::
make
(
SharedRuntime
::
dexp
(
d
)
);
return
TypeD
::
make
(
StubRoutines
::
intrinsic_exp
(
d
)
);
}
...
...
@@ -1323,5 +1317,5 @@ const Type *PowDNode::Value( PhaseTransform *phase ) const {
double
d2
=
t2
->
getd
();
if
(
d1
<
0.0
)
return
Type
::
DOUBLE
;
if
(
d2
<
0.0
)
return
Type
::
DOUBLE
;
return
TypeD
::
make
(
S
haredRuntime
::
d
pow
(
d1
,
d2
)
);
return
TypeD
::
make
(
S
tubRoutines
::
intrinsic_
pow
(
d1
,
d2
)
);
}
hotspot/src/share/vm/runtime/compilationPolicy.cpp
浏览文件 @
74e1e065
/*
* Copyright 2000-20
07
Sun Microsystems, Inc. All Rights Reserved.
* Copyright 2000-20
10
Sun Microsystems, Inc. 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
...
...
@@ -74,6 +74,16 @@ bool CompilationPolicy::canBeCompiled(methodHandle m) {
if
(
m
->
is_abstract
())
return
false
;
if
(
DontCompileHugeMethods
&&
m
->
code_size
()
>
HugeMethodLimit
)
return
false
;
// Math intrinsics should never be compiled as this can lead to
// monotonicity problems because the interpreter will prefer the
// compiled code to the intrinsic version. This can't happen in
// production because the invocation counter can't be incremented
// but we shouldn't expose the system to this problem in testing
// modes.
if
(
!
AbstractInterpreter
::
can_be_compiled
(
m
))
{
return
false
;
}
return
!
m
->
is_not_compilable
();
}
...
...
hotspot/src/share/vm/runtime/deoptimization.cpp
浏览文件 @
74e1e065
...
...
@@ -1672,7 +1672,8 @@ const char* Deoptimization::_trap_reason_name[Reason_LIMIT] = {
"unhandled"
,
"constraint"
,
"div0_check"
,
"age"
"age"
,
"predicate"
};
const
char
*
Deoptimization
::
_trap_action_name
[
Action_LIMIT
]
=
{
// Note: Keep this in sync. with enum DeoptAction.
...
...
hotspot/src/share/vm/runtime/deoptimization.hpp
浏览文件 @
74e1e065
...
...
@@ -46,6 +46,7 @@ class Deoptimization : AllStatic {
Reason_constraint
,
// arbitrary runtime constraint violated
Reason_div0_check
,
// a null_check due to division by zero
Reason_age
,
// nmethod too old; tier threshold reached
Reason_predicate
,
// compiler generated predicate failed
Reason_LIMIT
,
// Note: Keep this enum in sync. with _trap_reason_name.
Reason_RECORDED_LIMIT
=
Reason_unloaded
// some are not recorded per bc
...
...
hotspot/src/share/vm/runtime/globals.hpp
浏览文件 @
74e1e065
...
...
@@ -2012,6 +2012,10 @@ class CommandLineFlags {
diagnostic(bool, GCParallelVerificationEnabled, true, \
"Enable parallel memory system verification") \
\
diagnostic(bool, DeferInitialCardMark, false, \
"When +ReduceInitialCardMarks, explicitly defer any that " \
"may arise from new_pre_store_barrier") \
\
diagnostic(bool, VerifyRememberedSets, false, \
"Verify GC remembered sets") \
\
...
...
@@ -3456,6 +3460,9 @@ class CommandLineFlags {
diagnostic(bool, OptimizeMethodHandles, true, \
"when constructing method handles, try to improve them") \
\
experimental(bool, TrustFinalNonStaticFields, false, \
"trust final non-static declarations for constant folding") \
\
experimental(bool, EnableInvokeDynamic, false, \
"recognize the invokedynamic instruction") \
\
...
...
hotspot/src/share/vm/runtime/stubRoutines.cpp
浏览文件 @
74e1e065
/*
* Copyright 1997-20
07
Sun Microsystems, Inc. All Rights Reserved.
* Copyright 1997-20
10
Sun Microsystems, Inc. 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
...
...
@@ -97,6 +97,14 @@ address StubRoutines::_checkcast_arraycopy = NULL;
address
StubRoutines
::
_unsafe_arraycopy
=
NULL
;
address
StubRoutines
::
_generic_arraycopy
=
NULL
;
double
(
*
StubRoutines
::
_intrinsic_log
)(
double
)
=
NULL
;
double
(
*
StubRoutines
::
_intrinsic_log10
)(
double
)
=
NULL
;
double
(
*
StubRoutines
::
_intrinsic_exp
)(
double
)
=
NULL
;
double
(
*
StubRoutines
::
_intrinsic_pow
)(
double
,
double
)
=
NULL
;
double
(
*
StubRoutines
::
_intrinsic_sin
)(
double
)
=
NULL
;
double
(
*
StubRoutines
::
_intrinsic_cos
)(
double
)
=
NULL
;
double
(
*
StubRoutines
::
_intrinsic_tan
)(
double
)
=
NULL
;
// Initialization
//
// Note: to break cycle with universe initialization, stubs are generated in two phases.
...
...
hotspot/src/share/vm/runtime/stubRoutines.hpp
浏览文件 @
74e1e065
/*
* Copyright 1997-20
07
Sun Microsystems, Inc. All Rights Reserved.
* Copyright 1997-20
10
Sun Microsystems, Inc. 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
...
...
@@ -148,6 +148,20 @@ class StubRoutines: AllStatic {
static
address
_unsafe_arraycopy
;
static
address
_generic_arraycopy
;
// These are versions of the java.lang.Math methods which perform
// the same operations as the intrinsic version. They are used for
// constant folding in the compiler to ensure equivalence. If the
// intrinsic version returns the same result as the strict version
// then they can be set to the appropriate function from
// SharedRuntime.
static
double
(
*
_intrinsic_log
)(
double
);
static
double
(
*
_intrinsic_log10
)(
double
);
static
double
(
*
_intrinsic_exp
)(
double
);
static
double
(
*
_intrinsic_pow
)(
double
,
double
);
static
double
(
*
_intrinsic_sin
)(
double
);
static
double
(
*
_intrinsic_cos
)(
double
);
static
double
(
*
_intrinsic_tan
)(
double
);
public:
// Initialization/Testing
static
void
initialize1
();
// must happen before universe::genesis
...
...
@@ -245,6 +259,35 @@ class StubRoutines: AllStatic {
static
address
unsafe_arraycopy
()
{
return
_unsafe_arraycopy
;
}
static
address
generic_arraycopy
()
{
return
_generic_arraycopy
;
}
static
double
intrinsic_log
(
double
d
)
{
assert
(
_intrinsic_log
!=
NULL
,
"must be defined"
);
return
_intrinsic_log
(
d
);
}
static
double
intrinsic_log10
(
double
d
)
{
assert
(
_intrinsic_log
!=
NULL
,
"must be defined"
);
return
_intrinsic_log10
(
d
);
}
static
double
intrinsic_exp
(
double
d
)
{
assert
(
_intrinsic_exp
!=
NULL
,
"must be defined"
);
return
_intrinsic_exp
(
d
);
}
static
double
intrinsic_pow
(
double
d
,
double
d2
)
{
assert
(
_intrinsic_pow
!=
NULL
,
"must be defined"
);
return
_intrinsic_pow
(
d
,
d2
);
}
static
double
intrinsic_sin
(
double
d
)
{
assert
(
_intrinsic_sin
!=
NULL
,
"must be defined"
);
return
_intrinsic_sin
(
d
);
}
static
double
intrinsic_cos
(
double
d
)
{
assert
(
_intrinsic_cos
!=
NULL
,
"must be defined"
);
return
_intrinsic_cos
(
d
);
}
static
double
intrinsic_tan
(
double
d
)
{
assert
(
_intrinsic_tan
!=
NULL
,
"must be defined"
);
return
_intrinsic_tan
(
d
);
}
//
// Default versions of the above arraycopy functions for platforms which do
// not have specialized versions
...
...
hotspot/src/share/vm/runtime/thread.cpp
浏览文件 @
74e1e065
...
...
@@ -2357,9 +2357,8 @@ public:
};
void
JavaThread
::
oops_do
(
OopClosure
*
f
,
CodeBlobClosure
*
cf
)
{
// Flush deferred store-barriers, if any, associated with
// initializing stores done by this JavaThread in the current epoch.
Universe
::
heap
()
->
flush_deferred_store_barrier
(
this
);
// Verify that the deferred card marks have been flushed.
assert
(
deferred_card_mark
().
is_empty
(),
"Should be empty during GC"
);
// The ThreadProfiler oops_do is done from FlatProfiler::oops_do
// since there may be more than one thread using each ThreadProfiler.
...
...
hotspot/src/share/vm/runtime/vmStructs.cpp
浏览文件 @
74e1e065
...
...
@@ -309,6 +309,7 @@ static inline uint64_t cast_uint64_t(size_t x)
nonstatic_field(CollectedHeap, _reserved, MemRegion) \
nonstatic_field(SharedHeap, _perm_gen, PermGen*) \
nonstatic_field(CollectedHeap, _barrier_set, BarrierSet*) \
nonstatic_field(CollectedHeap, _defer_initial_card_mark, bool) \
nonstatic_field(CollectedHeap, _is_gc_active, bool) \
nonstatic_field(CompactibleSpace, _compaction_top, HeapWord*) \
nonstatic_field(CompactibleSpace, _first_dead, HeapWord*) \
...
...
hotspot/test/compiler/6877254/Test.java
浏览文件 @
74e1e065
...
...
@@ -26,7 +26,7 @@
* @bug 6877254
* @summary Implement StoreCMNode::Ideal to promote its OopStore above the MergeMem
*
* @run main/othervm -
server -Xcomp -XX:+UseConcMarkSweepGC
Test
* @run main/othervm -
Xcomp
Test
*/
public
class
Test
{
...
...
hotspot/test/compiler/6895383/Test.java
浏览文件 @
74e1e065
...
...
@@ -30,6 +30,9 @@
* @run main/othervm -Xcomp Test
*/
import
java.util.*
;
import
java.util.concurrent.*
;
public
class
Test
{
public
static
void
main
(
String
argv
[])
{
Test
test
=
new
Test
();
...
...
hotspot/test/compiler/6896727/Test.java
浏览文件 @
74e1e065
...
...
@@ -26,7 +26,7 @@
* @test
* @bug 6896727
* @summary nsk/logging/LoggingPermission/LoggingPermission/logperm002 fails with G1, EscapeAnalisys w/o COOPs
* @run main/othervm -XX:+IgnoreUnrecognizedVMOptions -Xcomp -XX:+DoEscapeAnalysis
-XX:+UnlockExperimentalVMOptions -XX:+UseG1GC
Test
* @run main/othervm -XX:+IgnoreUnrecognizedVMOptions -Xcomp -XX:+DoEscapeAnalysis Test
*/
public
class
Test
{
...
...
jaxp/.hgtags
浏览文件 @
74e1e065
...
...
@@ -54,3 +54,4 @@ ea7b88c676dd8b269bc858a4a17c14dc96c8aed1 jdk7-b74
bfadab8c7b1bf806a49d3e1bc19ec919717f057a jdk7-b77
7a12d3789e1b07a560fc79568b991818d617ede2 jdk7-b78
b1005c504358c18694c84e95fec16b28cdce7ae1 jdk7-b79
9219574db5936367114b0f31469837f27d5a375a jdk7-b80
jdk/.hgtags
浏览文件 @
74e1e065
...
...
@@ -54,3 +54,4 @@ eacb36e30327e7ae33baa068e82ddccbd91eaae2 jdk7-b74
e6a5d095c356a547cf5b3c8885885aca5e91e09b jdk7-b77
1143e498f813b8223b5e3a696d79da7ff7c25354 jdk7-b78
918920710d65432a2d54fdf407c1524a5571c4ad jdk7-b79
049cfaaa9a7374e3768a79969a799e8b59ad52fa jdk7-b80
jdk/make/com/sun/crypto/provider/Makefile
浏览文件 @
74e1e065
...
...
@@ -249,7 +249,7 @@ $(JAR_DESTFILE): $(UNSIGNED_DIR)/sunjce_provider.jar
else
$(JAR_DESTFILE)
:
$(SIGNED_DIR)/sunjce_provider.jar
endif
$
(
install-file
)
$
(
install-
non-module-
file
)
ifndef
OPENJDK
install-prebuilt
:
...
...
jdk/make/com/sun/java/pack/Makefile
浏览文件 @
74e1e065
...
...
@@ -28,6 +28,7 @@
#
BUILDDIR
=
../../../..
MODULE
=
pack200
PACKAGE
=
com.sun.java.util.jar.pack
LIBRARY
=
unpack
PRODUCT
=
sun
...
...
@@ -123,11 +124,14 @@ COBJDIR = $(strip $(subst unpack,unpack-cmd,$(OBJDIR)))
all
:
build
build
:
prop
build
:
prop
pack200-tool
prop
:
$(MAKE)
-C
prop
pack200-tool
:
$(
call
make-launcher, pack200, com.sun.java.util.jar.pack.Driver, ,
--pack
)
unpacker
:
$(MAKE)
$(UNPACK_EXE)
STANDALONE
=
true
LDMAPFLAGS_OPT
=
LDMAPFLAGS_DBG
=
...
...
@@ -151,6 +155,7 @@ ifdef MT
$(MT)
/manifest
$(TEMPDIR)
/unpack200
$(EXE_SUFFIX)
.manifest /outputresource:
$(TEMPDIR)
/unpack200
$(EXE_SUFFIX)
;
#1
endif
$(CP)
$(TEMPDIR)
/unpack200
$(EXE_SUFFIX)
$(UNPACK_EXE)
$
(
install-module-file
)
ifeq
($(PLATFORM), windows)
$(RES)
::
$(VERSIONINFO_RESOURCE)
...
...
jdk/make/com/sun/java/pack/prop/Makefile
浏览文件 @
74e1e065
...
...
@@ -29,6 +29,7 @@
# to a collision of rules with Classes.gmk and Library.gmk
BUILDDIR
=
../../../../..
MODULE
=
pack200
PACKAGE
=
com.sun.java.util.jar.pack
PRODUCT
=
sun
include
$(BUILDDIR)/common/Defs.gmk
...
...
jdk/make/com/sun/jndi/cosnaming/Makefile
浏览文件 @
74e1e065
...
...
@@ -28,6 +28,7 @@
#
BUILDDIR
=
../../../..
MODULE
=
jndi-cosnaming
PACKAGE
=
com.sun.jndi.cosnaming
PRODUCT
=
sun
include
$(BUILDDIR)/common/Defs.gmk
...
...
jdk/make/com/sun/jndi/dns/Makefile
浏览文件 @
74e1e065
...
...
@@ -28,6 +28,7 @@
#
BUILDDIR
=
../../../..
MODULE
=
jndi-dns
PACKAGE
=
com.sun.jndi.dns
PRODUCT
=
sun
include
$(BUILDDIR)/common/Defs.gmk
...
...
jdk/make/com/sun/jndi/ldap/Makefile
浏览文件 @
74e1e065
...
...
@@ -28,6 +28,7 @@
#
BUILDDIR
=
../../../..
MODULE
=
jndi-ldap
PACKAGE
=
com.sun.jndi.ldap
PRODUCT
=
sun
include
$(BUILDDIR)/common/Defs.gmk
...
...
jdk/make/com/sun/jndi/rmi/registry/Makefile
浏览文件 @
74e1e065
...
...
@@ -28,6 +28,7 @@
#
BUILDDIR
=
../../../../..
MODULE
=
jndi-rmiregistry
PACKAGE
=
com.sun.jndi.rmi.registry
PRODUCT
=
sun
include
$(BUILDDIR)/common/Defs.gmk
...
...
jdk/make/com/sun/nio/sctp/FILES_java.gmk
浏览文件 @
74e1e065
...
...
@@ -57,8 +57,7 @@ FILES_java += \
sun/nio/ch/SctpResultContainer.java \
sun/nio/ch/SctpSendFailed.java \
sun/nio/ch/SctpServerChannelImpl.java \
sun/nio/ch/SctpShutdown.java \
sun/nio/ch/SctpSocketDispatcher.java
sun/nio/ch/SctpShutdown.java
else
FILES_java += \
sun/nio/ch/SctpChannelImpl.java \
...
...
jdk/make/com/sun/nio/sctp/Makefile
浏览文件 @
74e1e065
...
...
@@ -28,6 +28,7 @@
#
BUILDDIR
=
../../../..
MODULE
=
sctp
PACKAGE
=
com.sun.nio.sctp
LIBRARY
=
sctp
PRODUCT
=
sun
...
...
jdk/make/com/sun/nio/sctp/mapfile-vers
浏览文件 @
74e1e065
...
...
@@ -25,9 +25,14 @@
SUNWprivate_1.1 {
global:
Java_sun_nio_ch_SctpNet_init;
Java_sun_nio_ch_SctpNet_socket0;
Java_sun_nio_ch_SctpNet_bindx;
Java_sun_nio_ch_SctpNet_branch0;
Java_sun_nio_ch_SctpNet_listen0;
Java_sun_nio_ch_SctpNet_connect0;
Java_sun_nio_ch_SctpNet_close0;
Java_sun_nio_ch_SctpNet_preClose0;
Java_sun_nio_ch_SctpNet_getLocalAddresses0;
Java_sun_nio_ch_SctpNet_getRemoteAddresses0;
Java_sun_nio_ch_SctpNet_getPrimAddrOption0;
...
...
jdk/make/com/sun/org/apache/xml/Makefile
浏览文件 @
74e1e065
...
...
@@ -28,6 +28,7 @@
#
BUILDDIR
=
../../../../..
MODULE
=
security-xmldsig
PACKAGE
=
com.sun.org.apache.xml
PRODUCT
=
xml
include
$(BUILDDIR)/common/Defs.gmk
...
...
jdk/make/com/sun/rowset/Makefile
浏览文件 @
74e1e065
...
...
@@ -28,6 +28,7 @@
#
BUILDDIR
=
../../..
MODULE
=
jdbc-enterprise
PACKAGE
=
com.sun.rowset
PRODUCT
=
sun
include
$(BUILDDIR)/common/Defs.gmk
...
...
jdk/make/com/sun/script/Makefile
浏览文件 @
74e1e065
...
...
@@ -25,6 +25,7 @@
BUILDDIR
=
../../..
MODULE
=
scripting-rhino
PACKAGE
=
com.sun.script
PRODUCT
=
sun
include
$(BUILDDIR)/common/Defs.gmk
...
...
jdk/make/com/sun/security/auth/module/Makefile
浏览文件 @
74e1e065
...
...
@@ -26,6 +26,7 @@
# Makefile for building auth modules.
BUILDDIR
=
../../../../..
MODULE
=
security-auth
PACKAGE
=
com.sun.security.auth.module
PRODUCT
=
sun
...
...
jdk/make/com/sun/servicetag/Makefile
浏览文件 @
74e1e065
...
...
@@ -22,6 +22,7 @@
# have any questions.
BUILDDIR
=
../../..
MODULE
=
servicetag
PACKAGE
=
com.sun.servicetag
PRODUCT
=
sun
include
$(BUILDDIR)/common/Defs.gmk
...
...
@@ -68,7 +69,7 @@ $(CLASSBINDIR)/%: $(SHARE_SRC)/classes/%
$(SERVICETAG_LIBDIR)/jdk_header.png
:
$(SHARE_SRC)/classes/com/sun/servicetag/resources/jdk_header.png
$
(
install-file
)
$(
CHMOD)
444
$@
$(
call
chmod-file, 444
)
install-servicetag-lib
:
@
$(RM)
-rf
$(SERVICETAG_LIBDIR)
...
...
jdk/make/com/sun/tools/attach/Makefile
浏览文件 @
74e1e065
...
...
@@ -25,6 +25,7 @@
BUILDDIR
=
../../../..
MODULE
=
attach
PACKAGE
=
com.sun.tools.attach
LIBRARY
=
attach
PRODUCT
=
sun
...
...
@@ -65,6 +66,7 @@ $(SERVICEDIR)/%: $(SHARE_SRC)/classes/sun/tools/attach/META-INF/services/%
@
$(MKDIR)
-p
$
(
@D
)
@
$(RM)
$@
@
$(CAT)
$<
|
$(SED)
-e
"s/^#
\[
$(PLATFORM)
\]
//"
>
$@
@
$
(
install-module-file
)
.PHONY
:
copy-files
...
...
jdk/make/common/Defs.gmk
浏览文件 @
74e1e065
...
...
@@ -225,12 +225,6 @@ DEVTOOLS_FT_DIR_EXISTS = $(shell \
endif
endif
ifeq ($(PLATFORM), windows)
FREETYPE_LIB = $(FREETYPE_LIB_PATH)/freetype.lib
else
FREETYPE_LIB = -L$(FREETYPE_LIB_PATH) -lfreetype
endif
ifdef ALT_FREETYPE_HEADERS_PATH
FREETYPE_HEADERS_PATH = $(ALT_FREETYPE_HEADERS_PATH)
else
...
...
@@ -313,6 +307,9 @@ INCLUDEDIR = $(OUTPUTDIR)/include
# for generated class files
CLASSBINDIR = $(OUTPUTDIR)/classes
DEMOCLASSDIR = $(OUTPUTDIR)/democlasses
# for modules
MODULES_DIR = $(OUTPUTDIR)/modules
ABS_MODULES_DIR = $(ABS_OUTPUTDIR)/modules
# for generated tool class files
BUILDTOOLCLASSDIR = $(OUTPUTDIR)/btclasses
# for build tool jar files
...
...
@@ -388,6 +385,22 @@ ifneq ($(THREADDIR),)
UNIQUE_LOCATION_STRING += /$(THREADDIR)
endif
#
# Build units may or may not define MODULE. Default to "other".
#
# MODULE variable defines the lowest-level module name that
# might or might not be the name of the modules created in
# the modules build (see make/modules/modules.config and
# modules.group).
#
MODULES_TEMPDIR = $(OUTPUTDIR)/tmp/modules
ABS_MODULES_TEMPDIR = $(ABS_OUTPUTDIR)/tmp/modules
ifndef MODULE
MODULE = other
endif
override MODULE_DEST_DIR = $(MODULES_TEMPDIR)/$(MODULE)
# the use of += above makes a space separated list which we need to
# remove for filespecs.
#
...
...
@@ -497,6 +510,58 @@ PKGDIR = $(subst .,/,$(PACKAGE))
#
include $(JDK_MAKE_SHARED_DIR)/Defs-java.gmk
#
# Macros to find the module that $@ belongs to
#
UNIQUE_PATH_PATTERN = $(subst /,.,$(UNIQUE_PATH))
MODULE_PATH_PATTERN = -e 's%.*\/classes\/%classes\/%' \
-e 's%.*\/$(UNIQUE_PATH_PATTERN)\/%classes\/%' \
-e 's%.*\/lib\/%lib\/%' \
-e 's%.*\/bin\/%bin\/%' \
-e 's%.*\/include\/%include\/%' \
-e 's%.*\/demo\/%demo\/%' \
-e 's%.*\/sample\/%sample\/%'
# Install a file to its module
define install-module-file
dest=`echo $(@D)/ | $(SED) $(MODULE_PATH_PATTERN)` ; \
$(MKDIR) -p $(MODULE_DEST_DIR)/$$dest; \
$(CP) -f $@ $(MODULE_DEST_DIR)/$$dest
endef
# Install all files from the directory to its module
define install-module-dir
dest=`echo $(@D)/ | $(SED) $(MODULE_PATH_PATTERN)` ; \
$(MKDIR) -p $(MODULE_DEST_DIR)/$$dest; \
$(CP) -rf $(@D)/* $(MODULE_DEST_DIR)/$$dest
endef
# chmod the file in its module
define chmod-module-file
dest=`echo $@ | $(SED) $(MODULE_PATH_PATTERN)` ; \
$(CHMOD) $1 $(MODULE_DEST_DIR)/$$dest
endef
# install a sym link in its module
define install-module-sym-link
dest=`echo $@ | $(SED) $(MODULE_PATH_PATTERN)` ; \
$(LN) -sf $1 $(MODULE_DEST_DIR)/$$dest
endef
# Run MAKE $@ for a launcher:
# $(call make-launcher, name, mainclass, java-args, main-args)
define make-launcher
$(CD) $(BUILDDIR)/launchers && \
$(MAKE) -f Makefile.launcher \
MODULE=$(MODULE) \
PROGRAM=$(strip $1) \
MAIN_CLASS=$(strip $2) \
MAIN_JAVA_ARGS="$(strip $3)" \
MAIN_ARGS="$(strip $4)"
endef
#
# Convenient macros
#
...
...
@@ -511,6 +576,28 @@ endef
define install-file
$(prep-target)
$(CP) $< $@
$(install-module-file)
endef
define chmod-file
$(CHMOD) $1 $@
$(call chmod-module-file, $1)
endef
define install-sym-link
$(LN) -s $1 $@
$(call install-module-sym-link, $1)
endef
#
# Marcos for files not belonging to any module
define install-non-module-file
$(prep-target)
$(CP) $< $@
endef
define install-manifest-file
$(install-non-module-file)
endef
# Cleanup rule for after debug java run (hotspot.log file is left around)
...
...
@@ -712,7 +799,7 @@ else
endif
# Install of imported file (JDK_IMPORT_PATH, or some other external location)
define install-import-file
define install-import
only
-file
@$(ECHO) "ASSEMBLY_IMPORT: $@"
$(prep-target)
$(CP) $< $@
...
...
@@ -730,4 +817,9 @@ $(CP) $< $@
fi
endef
define install-import-file
$(install-importonly-file)
$(install-module-file)
endef
.PHONY: all build clean clobber
jdk/make/common/Demo.gmk
浏览文件 @
74e1e065
...
...
@@ -25,6 +25,8 @@
# JDK Demo building jar file.
MODULE = demos
# Some names are defined with LIBRARY inside the Defs.gmk file
LIBRARY=$(DEMONAME)
OBJDIR=$(TEMPDIR)/$(DEMONAME)
...
...
jdk/make/common/Library.gmk
浏览文件 @
74e1e065
...
...
@@ -193,9 +193,18 @@ ifdef MT
$(MT) /manifest $(OBJDIR)/$(@F).manifest /outputresource:$(OBJDIR)/$(@F);#2
endif
$(CP) $(OBJDIR)/$(@F) $@
$(install-module-file)
$(CP) $(OBJDIR)/$(LIBRARY).map $(@D)
$(CP) $(OBJDIR)/$(LIBRARY).pdb $(@D)
$(ACTUAL_LIBRARY):: $(ACTUAL_LIBRARY_DIR)/$(LIBRARY).map $(ACTUAL_LIBRARY_DIR)/$(LIBRARY).pdb
$(ACTUAL_LIBRARY_DIR)/%.map: FORCE
$(install-module-file)
$(ACTUAL_LIBRARY_DIR)/%.pdb: FORCE
$(install-module-file)
endif # LIBRARY
$(OBJDIR)/$(LIBRARY).lcf: $(OBJDIR)/$(LIBRARY).res $(COMPILE_FILES_o) $(FILES_m)
...
...
@@ -250,6 +259,7 @@ ifeq ($(LIBRARY), fdlibm)
$(AR) -r $@ $(FILES_o)
else # LIBRARY
$(LINKER) $(SHARED_LIBRARY_FLAG) -o $@ $(FILES_o) $(LDLIBS)
$(install-module-file)
ifeq ($(WRITE_LIBVERSION),true)
$(MCS) -d -a "$(FULL_VERSION)" $@
endif # WRITE_LIBVERSION
...
...
@@ -353,5 +363,7 @@ fastdebug:
openjdk:
$(MAKE) OPENJDK=true build
FORCE:
.PHONY: all build debug fastdebug
jdk/make/common/Modules.gmk
浏览文件 @
74e1e065
...
...
@@ -34,12 +34,10 @@ JRE_MODULE_IMAGE_DIR = $(ABS_OUTPUTDIR)/jre-module-image
#
# Open issues that need further investigation:
# 1. Classes in jre/lib/ext/dnsns.jar are currently put in jre/lib/jndi-dns
# module.
# module.
META-INF/services file is not installed.
# 2. Signed jars
# For JDK build, signed jars are copied to the build.
# All jars in the module image are unsigned.
# 3. jre/lib/security/US_export_policy.jar and local_policy.jar
# are not included in the module image yet.
MODULE_IMAGEBINDIR = bin
...
...
@@ -63,7 +61,8 @@ process-module-image-jre process-module-image-jdk ::
@$(ECHO) ">>>Making "$@" @ `$(DATE)` ..."
# Order is important here, trim jre after jdk image is created
modules:: sanity-module-images post-sanity-module-images \
modules:: gen-modules \
sanity-module-images post-sanity-module-images \
$(INITIAL_MODULE_IMAGE_JRE) $(INITIAL_MODULE_IMAGE_JDK) \
trim-module-image-jre trim-module-image-jdk \
process-module-image-jre process-module-image-jdk
...
...
@@ -122,8 +121,33 @@ endif
# JRE Image
######################################################
MODULES_TEMPDIR=$(ABS_TEMPDIR)/modules
MODULES_LIB = $(ABS_OUTPUTDIR)/modules
MODULES_LIST = $(MODULES_TEMPDIR)/classlist/modules.list
# Modules in the jre/lib/security directory
POLICY_MODULES = US_export_policy local_policy
# Modules in the modules/ext directory
EXT_MODULES = localedata security-sunec security-sunjce
# Build PKCS#11 on all platforms except 64-bit Windows.
PKCS11 = security-sunpkcs11
ifeq ($(ARCH_DATA_MODEL), 64)
ifeq ($(PLATFORM), windows)
PKCS11 =
endif
endif
EXT_MODULES += $(PKCS11)
# Build Microsoft CryptoAPI provider only on (non-64-bit) Windows platform.
ifeq ($(PLATFORM), windows)
ifneq ($(ARCH_DATA_MODEL), 64)
EXT_MODULES += security-sunmscapi
endif
endif
# Modules for JDK only
JDK_MODULES = tools
gen-modules:
$(CD) modules; $(MAKE) all
...
...
@@ -151,7 +175,6 @@ initial-module-image-jre-sol64:: initial-module-image-jre-setup \
# Construct an initial jre image (initial jdk jre) no trimming or stripping
initial-module-image-jre:: initial-module-image-jre-setup \
$(JRE_LICENSES) $(JRE_MODULE_DOCFILES) \
gen-modules \
$(BUILDMETAINDEX_JARFILE)
@# Copy in bin directory
$(CD) $(OUTPUTDIR) && $(FIND) bin -depth | $(CPIO) -pdum $(JRE_MODULE_IMAGE_DIR)
...
...
@@ -162,7 +185,21 @@ initial-module-image-jre:: initial-module-image-jre-setup \
@#
@# copy modules to jre/lib
@#
$(CP) -rf $(MODULES_LIB)/jre/lib/* $(JRE_MODULE_IMAGE_DIR)/lib
for m in `$(NAWK) '{print $$1}' $(MODULES_LIST)` ; do \
$(CP) $(MODULES_DIR)/$$m/lib/$$m.jar $(JRE_MODULE_IMAGE_DIR)/lib ; \
done
$(MKDIR) -p $(JRE_MODULE_IMAGE_DIR)/lib/ext
for m in $(EXT_MODULES) ; do \
$(MV) $(JRE_MODULE_IMAGE_DIR)/lib/$$m.jar $(JRE_MODULE_IMAGE_DIR)/lib/ext ; \
done
for m in $(POLICY_MODULES) ; do \
$(MV) $(JRE_MODULE_IMAGE_DIR)/lib/$$m.jar $(JRE_MODULE_IMAGE_DIR)/lib/security; \
done
@# Remove jdk modules
for m in $(JDK_MODULES) ; do \
$(RM) $(JRE_MODULE_IMAGE_DIR)/lib/$$m.jar ; \
done
@# Make sure all directories are read/execute for everyone
$(CHMOD) a+rx `$(FIND) $(JRE_MODULE_IMAGE_DIR) -type d`
@# Remove some files from the jre area
...
...
@@ -304,7 +341,9 @@ initial-module-image-jdk:: initial-module-image-jdk-setup \
@# copy jdk modules to jdk/lib
@#
$(MKDIR) -p $(JDK_MODULE_IMAGE_DIR)/lib
$(CP) -rf $(MODULES_LIB)/lib/* $(JDK_MODULE_IMAGE_DIR)/lib
for m in $(JDK_MODULES) ; do \
$(CP) $(MODULES_DIR)/$$m/lib/$$m.jar $(JDK_MODULE_IMAGE_DIR)/lib ; \
done
ifeq ($(PLATFORM), windows)
@#
@# lib/
...
...
jdk/make/common/Program.gmk
浏览文件 @
74e1e065
...
...
@@ -50,8 +50,6 @@ ACTUAL_PROGRAM_NAME = $(PROGRAM)$(EXE_SUFFIX)
ACTUAL_PROGRAM_DIR = $(BINDIR)
ACTUAL_PROGRAM = $(ACTUAL_PROGRAM_DIR)/$(ACTUAL_PROGRAM_NAME)
JVMCFG = $(LIBDIR)/$(LIBARCH)/jvm.cfg
# Make sure the default rule is all
program_default_rule: all
...
...
@@ -116,7 +114,7 @@ endif
ifeq ($(COMPILE_IT),true)
$(ACTUAL_PROGRAM):: classes $(
JVMCFG) $(
INIT)
$(ACTUAL_PROGRAM):: classes $(INIT)
#
# Windows only
...
...
@@ -190,12 +188,13 @@ $(ACTUAL_PROGRAM):: $(FILES_o)
@$(MKDIR) -p $(TEMPDIR)
$(LINK_PRE_CMD) $(CC) $(CC_OBJECT_OUTPUT_FLAG)$@ $(LDFLAGS) \
$(FILES_o) $(THREADLIBS) $(LDLIBS)
$(install-module-file)
endif # PLATFORM
else # COMPILE_IT
$(ACTUAL_PROGRAM)::
$(JVMCFG)
$(ACTUAL_PROGRAM)::
# Copies in the file from the JDK_IMPORT_PATH area
$(ACTUAL_PROGRAM_DIR)/%: $(JDK_IMPORT_PATH)/jre/bin/%
...
...
@@ -271,18 +270,6 @@ $(OBJDIR)/main.$(OBJECT_SUFFIX): $(LAUNCHER_SHARE_SRC)/bin/main.c
$(COMPILE.c) $(CC_OBJECT_OUTPUT_FLAG)$(OBJDIR)/main.$(OBJECT_SUFFIX) \
$(VERSION_DEFINES) $<
#
# How to install jvm.cfg.
#
ifeq ($(ZERO_BUILD), true)
JVMCFG_ARCH = zero
else
JVMCFG_ARCH = $(ARCH)
endif
$(JVMCFG): $(LAUNCHER_PLATFORM_SRC)/bin/$(JVMCFG_ARCH)/jvm.cfg
$(install-file)
#
# Default dependencies
#
...
...
jdk/make/common/internal/BinaryPlugs.gmk
浏览文件 @
74e1e065
...
...
@@ -116,7 +116,7 @@ PLUG_IMPORT_JARFILE=$(BINARY_PLUGS_JARFILE)
define import-binary-plug-file
@$(ECHO) "PLUG IMPORT: $(@F)"
$(install-file)
$(install-
non-module-
file)
endef # import-binary-plug-file
# Import classes command
...
...
@@ -184,7 +184,7 @@ PLUG_EXPORT_JARFILE=$(PLUG_EXPORT_DIR)/jre/lib/$(BINARY_PLUGS_JARNAME)
define export-binary-plug-file
@$(ECHO) "PLUG EXPORT: $(@F)"
$(install-file)
$(install-
non-module-
file)
endef # export-binary-plug-file
# OpenJDK Binary Plug License
...
...
jdk/make/common/internal/Resources.gmk
浏览文件 @
74e1e065
...
...
@@ -139,7 +139,7 @@ STRIP_PROP_FILES = $(PROPERTIES_FILES:%=$(CLASSDESTDIR)/%)
STRIP_PROP_options=$(TEMPDIR)/strip_prop_options
define install-properties-file
$(install-file)
$(
CHMOD) a+rw $@
$(
call chmod-file, a+rw)
@$(ECHO) "# Adding to strip properties list: $@"
$(ECHO) "$@" >> $(STRIP_PROP_options)
endef
...
...
jdk/make/common/shared/Sanity.gmk
浏览文件 @
74e1e065
...
...
@@ -1117,7 +1117,7 @@ TMP_SDK_INCLUDE_GET_FULL_VERSION= $(TMP_SDK_INCLUDE_FIND_VERSION) | \
# be checked when this represents a full control build (i.e. the
# HOTSPOT_IMPORT_PATH includes these files in it's 'include' directory).
$(TEMPDIR)/%.h: $(SHARE_SRC)/javavm/export/%.h
@$(install-file)
@$(install-
non-module-
file)
@$(RM) $@.IMPORT
@if [ -r $(HOTSPOT_IMPORT_PATH)/include/$(@F) ]; then \
$(CP) $(HOTSPOT_IMPORT_PATH)/include/$(@F) $@.IMPORT ; \
...
...
@@ -1131,7 +1131,7 @@ $(TEMPDIR)/%.h: $(SHARE_SRC)/javavm/export/%.h
fi
$(TEMPDIR)/%.h: $(PLATFORM_SRC)/javavm/export/%.h
@$(install-file)
@$(install-
non-module-
file)
@$(RM) $@.IMPORT
@if [ -r $(HOTSPOT_IMPORT_PATH)/include/$(PLATFORM_INCLUDE_NAME)/$(@F) ]; then \
$(CP) $(HOTSPOT_IMPORT_PATH)/include/$(PLATFORM_INCLUDE_NAME)/$(@F) $@.IMPORT ; \
...
...
jdk/make/java/awt/Makefile
浏览文件 @
74e1e065
...
...
@@ -24,6 +24,7 @@
#
BUILDDIR
=
../..
MODULE
=
awt
PACKAGE
=
java.awt
PRODUCT
=
sun
include
$(BUILDDIR)/common/Defs.gmk
...
...
jdk/make/java/fdlibm/Makefile
浏览文件 @
74e1e065
...
...
@@ -31,6 +31,7 @@
#
BUILDDIR
=
../..
MODULE
=
base
LIBRARY
=
fdlibm
PRODUCT
=
java
...
...
jdk/make/java/hpi/native/Makefile
浏览文件 @
74e1e065
...
...
@@ -28,6 +28,7 @@
#
BUILDDIR
=
../../..
MODULE
=
base
LIBRARY
=
hpi
PRODUCT
=
java
THREADDIR
=
native_threads
...
...
jdk/make/java/hpi/windows/Makefile
浏览文件 @
74e1e065
...
...
@@ -26,8 +26,9 @@
#
# Makefile for Windows HPI DLL
#
BUILDDIR
=
../../..
LIBRARY
=
hpi
BUILDDIR
=
../../..
MODULE
=
base
LIBRARY
=
hpi
PRODUCT
=
java
THREADDIR
=
windows_threads
LIB_LOCATION
=
$(BINDIR)
...
...
jdk/make/java/instrument/Makefile
浏览文件 @
74e1e065
...
...
@@ -27,6 +27,7 @@
# agent, supporting java.lang.instrument
BUILDDIR
=
../..
MODULE
=
instrument
PACKAGE
=
sun.instrument
LIBRARY
=
instrument
PRODUCT
=
sun
...
...
jdk/make/java/java/Makefile
浏览文件 @
74e1e065
...
...
@@ -29,6 +29,7 @@
#
BUILDDIR
=
../..
MODULE
=
base
PACKAGE
=
java.lang
LIBRARY
=
java
PRODUCT
=
java
...
...
@@ -241,7 +242,7 @@ ifneq ($(PLATFORM),windows)
$(GENSRCDIR)/java/lang/UNIXProcess.java
:
\
$(PLATFORM_SRC)/classes/java/lang/UNIXProcess.java.$(PLATFORM)
$
(
install-file
)
$
(
install-
non-module-
file
)
clean
::
$(RM)
$(GENSRCDIR)
/java/lang/UNIXProcess.java
...
...
@@ -285,7 +286,7 @@ TZMAPFILE = $(PLATFORM_SRC)/lib/tzmappings
$(TZMAP)
:
$(TZMAPFILE)
$
(
install-file
)
$(
CHMOD)
444
$@
$(
call
chmod-file, 444
)
endif
build
:
$(LIBDIR)/$(PROPS) $(LIBDIR)/$(CAL_PROPS) $(TZMAP)
...
...
@@ -315,7 +316,8 @@ $(CURDATA): \
$(BOOT_JAVA_CMD)
-jar
$(GENERATECURRENCYDATA_JARFILE)
-o
$@
.temp
\
<
$(SHARE_SRC)
/classes/java/util/CurrencyData.properties
$(MV)
$@
.temp
$@
$(CHMOD)
444
$@
$
(
install-module-file
)
$(
call
chmod-file, 444
)
clean
::
$(RM)
$(CURDATA)
...
...
@@ -369,7 +371,7 @@ $(GENSRCDIR)/java/lang/CharacterDataLatin1.java \
-usecharforbyte
11 4 1
$(GENSRCDIR)/java/lang/%.java
:
$(CHARACTERDATA)/%.java.template
$
(
install-file
)
$
(
install-
non-module-
file
)
clean
::
$(RM)
$(GENSRCDIR)
/java/lang/CharacterDataLatin1.java
...
...
jdk/make/java/java_crw_demo/Makefile
浏览文件 @
74e1e065
...
...
@@ -24,6 +24,8 @@
#
BUILDDIR
=
../..
MODULE
=
demos
LIBRARY
=
java_crw_demo
PRODUCT
=
sun
LIBRARY_OUTPUT
=
java_crw_demo
...
...
jdk/make/java/java_hprof_demo/Makefile
浏览文件 @
74e1e065
...
...
@@ -24,6 +24,7 @@
#
BUILDDIR
=
../..
MODULE
=
instrument
LIBRARY
=
hprof
PRODUCT
=
sun
LIBRARY_OUTPUT
=
hprof_jvmti
...
...
jdk/make/java/jli/Makefile
浏览文件 @
74e1e065
...
...
@@ -30,6 +30,7 @@
# its manifestations (java, javaw, javac, ...).
#
BUILDDIR
=
../..
MODULE
=
base
LIBRARY
=
jli
PRODUCT
=
java
...
...
jdk/make/java/jvm/Makefile
浏览文件 @
74e1e065
...
...
@@ -24,6 +24,8 @@
#
BUILDDIR
=
../..
MODULE
=
base
include
$(BUILDDIR)/common/Defs.gmk
#
...
...
@@ -36,15 +38,29 @@ FILES_h = $(INCLUDEDIR)/jni.h \
$(INCLUDEDIR)
/classfile_constants.h
$(INCLUDEDIR)/%.h
:
$(SHARE_SRC)/javavm/export/%.h
$
(
install-file
)
$
(
install-
non-module-
file
)
$(PLATFORM_INCLUDE)/%.h
:
$(PLATFORM_SRC)/javavm/export/%.h
$
(
install-non-module-file
)
JVMCFG
=
$(LIBDIR)
/
$(LIBARCH)
/jvm.cfg
#
# How to install jvm.cfg.
#
ifeq
($(ZERO_BUILD), true)
JVMCFG_ARCH
=
zero
else
JVMCFG_ARCH
=
$(ARCH)
endif
$(JVMCFG)
:
$(PLATFORM_SRC)/bin/$(JVMCFG_ARCH)/jvm.cfg
$
(
install-file
)
all
:
build
build
:
$(FILES_h)
build
:
$(FILES_h)
$(JVMCFG)
clean clobber
::
$(RM)
$(FILES_h)
$(RM)
$(FILES_h)
$(JVMCFG)
jdk/make/java/logging/Makefile
浏览文件 @
74e1e065
...
...
@@ -24,6 +24,7 @@
#
BUILDDIR
=
../..
MODULE
=
logging
PACKAGE
=
java.util.logging
PRODUCT
=
java
include
$(BUILDDIR)/common/Defs.gmk
...
...
jdk/make/java/main/java/Makefile
浏览文件 @
74e1e065
...
...
@@ -24,6 +24,7 @@
#
BUILDDIR
=
../../..
MODULE
=
base
PROGRAM
=
java
PRODUCT
=
java
...
...
jdk/make/java/main/javaw/Makefile
浏览文件 @
74e1e065
...
...
@@ -28,6 +28,7 @@
#
BUILDDIR
=
../../..
MODULE
=
base
PROGRAM
=
javaw
PRODUCT
=
java
...
...
jdk/make/java/management/Makefile
浏览文件 @
74e1e065
...
...
@@ -24,6 +24,7 @@
#
BUILDDIR
=
../..
MODULE
=
management
PACKAGE
=
java.lang.management
LIBRARY
=
management
PRODUCT
=
java
...
...
@@ -99,7 +100,7 @@ $(AGENTJAR): $(LIBDIR) $(TEMPDIR)/manifest
@
$
(
java-vm-cleanup
)
$(TEMPDIR)/manifest
:
$(MANIFEST)
$
(
install-file
)
$
(
install-
manifest-
file
)
build
:
$(AGENTJAR)
...
...
jdk/make/java/net/Makefile
浏览文件 @
74e1e065
...
...
@@ -24,6 +24,7 @@
#
BUILDDIR
=
../..
MODULE
=
base
PACKAGE
=
java.net
LIBRARY
=
net
PRODUCT
=
sun
...
...
@@ -111,8 +112,7 @@ LOCALE_SET_DEFINITION = jre
MISC_FILES
=
$(LIBDIR)
$(LIBDIR)
/net.properties
$(LIBDIR)/net.properties
:
$(SHARE_SRC)/lib/net.properties
@
$(RM)
$@
$(CP)
$<
$@
$
(
install-file
)
#
# SDP configuration template
...
...
jdk/make/java/nio/Makefile
浏览文件 @
74e1e065
...
...
@@ -28,6 +28,7 @@
#
BUILDDIR
=
../..
MODULE
=
nio
PACKAGE
=
java.nio
LIBRARY
=
nio
PRODUCT
=
java
...
...
@@ -816,7 +817,7 @@ SOR_COPYRIGHT_YEARS = $(shell $(CAT) $(GENSOR_SRC) | \
$(NAWK)
'/^.*Copyright.*Sun/ { print $$3
}
'
)
$(TEMPDIR)/$(GENSOR_SRC)
:
$(GENSOR_SRC)
$
(
install-file
)
$
(
install-
non-module-
file
)
$(GENSOR_EXE)
:
$(TEMPDIR)/$(GENSOR_SRC)
$
(
prep-target
)
...
...
jdk/make/java/npt/Makefile
浏览文件 @
74e1e065
...
...
@@ -24,6 +24,9 @@
#
BUILDDIR
=
../..
# It's currently used by jpda and hprof. Put it in base module for now.
MODULE
=
base
LIBRARY
=
npt
PRODUCT
=
sun
LIBRARY_OUTPUT
=
npt
...
...
jdk/make/java/redist/Makefile
浏览文件 @
74e1e065
...
...
@@ -35,6 +35,7 @@
#
BUILDDIR
=
../..
MODULE
=
base
PRODUCT
=
java
include
$(BUILDDIR)/common/Defs.gmk
...
...
@@ -61,7 +62,11 @@ CLASSSHARINGDATA_DIR = $(BUILDDIR)/tools/sharing
# Needed to do file copy
ABS_BUILDDIR
:=
$(
call
FullPath,
$(BUILDDIR)
)
all
:
build
SUBDIRS
=
fonts sajdi
all clean clobber
::
$
(
SUBDIRS-loop
)
all
::
build
# List of files created here or coming from BUILDDIR area (this workspace)
INTERNAL_IMPORT_LIST
=
$(LIBDIR)
/classlist
...
...
@@ -70,30 +75,6 @@ INTERNAL_IMPORT_LIST = $(LIBDIR)/classlist
IMPORT_LIST
=
$(LIB_LOCATION)
/
$(SERVER_LOCATION)
/
$(JVM_NAME)
\
$(LIB_LOCATION)
/
$(SERVER_LOCATION)
/Xusage.txt
# INCLUDE_SA is false on platforms where SA is not supported.
# On platforms where it is supported, we want to allow it to
# not be present, at least temporarily. So,
# if the SA files (well, just sa-jdi.jar) do not exist
# in the HOTSPOT_IMPORT_PATH, then we won't build SA.
SA_EXISTS
:=
$(
shell
if
[
-r
$(HOTSPOT_IMPORT_PATH)
/lib/sa-jdi.jar
]
;
then
\
$(ECHO)
true
;
\
else
\
$(ECHO)
false
;
\
fi
)
ifeq
($(SA_EXISTS), false)
INCLUDE_SA
:=
false
endif
ifeq
($(INCLUDE_SA), true)
IMPORT_LIST
+=
$(LIBDIR)
/sa-jdi.jar
\
$(LIB_LOCATION)
/
$(SALIB_NAME)
ifeq
($(PLATFORM), windows)
IMPORT_LIST
+=
$(LIB_LOCATION)
/
$(SAMAP_NAME)
\
$(LIB_LOCATION)
/
$(SAPDB_NAME)
endif
endif
# INCLUDE_SA
# Hotspot client is only available on 32-bit non-Zero builds
ifneq
($(ZERO_BUILD), true)
ifeq
($(ARCH_DATA_MODEL), 32)
...
...
@@ -110,10 +91,10 @@ IMPORT_LIST += $(MS_RUNTIME_LIBRARIES:%=$(BINDIR)/%)
# NOTE: These might actually come from BUILDDIR, depends on the settings.
$(BINDIR)/msvcrt.dll
:
$(MSVCRT_DLL_PATH)/msvcrt.dll
$
(
install-import-file
)
$(
CHMOD)
a+x
$@
$(
call
chmod-file, a+x
)
$(BINDIR)/$(MSVCRNN_DLL)
:
$(MSVCRNN_DLL_PATH)/$(MSVCRNN_DLL)
$
(
install-import-file
)
$(
CHMOD)
a+x
$@
$(
call
chmod-file, a+x
)
# Get the hotspot .map and .pdb files for client and server
IMPORT_LIST
+=
\
...
...
@@ -140,26 +121,32 @@ $(LIBDIR)/$(JVMLIB_NAME): $(HOTSPOT_LIB_PATH)/$(JVMLIB_NAME)
$(LIB_LOCATION)/$(CLIENT_LOCATION)/$(JVMMAP_NAME)
:
@
$
(
prep-target
)
-
$(CP)
$(HOTSPOT_CLIENT_PATH)
/
$(JVMMAP_NAME)
$@
@
$
(
install-module-file
)
$(LIB_LOCATION)/$(KERNEL_LOCATION)/$(JVMMAP_NAME)
:
@
$
(
prep-target
)
-
$(CP)
$(HOTSPOT_KERNEL_PATH)
/
$(JVMMAP_NAME)
$@
@
$
(
install-module-file
)
$(LIB_LOCATION)/$(SERVER_LOCATION)/$(JVMMAP_NAME)
:
@
$
(
prep-target
)
-
$(CP)
$(HOTSPOT_SERVER_PATH)
/
$(JVMMAP_NAME)
$@
@
$
(
install-module-file
)
$(LIB_LOCATION)/$(CLIENT_LOCATION)/$(JVMPDB_NAME)
:
@
$
(
prep-target
)
-
$(CP)
$(HOTSPOT_CLIENT_PATH)
/
$(JVMPDB_NAME)
$@
@
$
(
install-module-file
)
$(LIB_LOCATION)/$(KERNEL_LOCATION)/$(JVMPDB_NAME)
:
@
$
(
prep-target
)
-
$(CP)
$(HOTSPOT_KERNEL_PATH)
/
$(JVMPDB_NAME)
$@
@
$
(
install-module-file
)
$(LIB_LOCATION)/$(SERVER_LOCATION)/$(JVMPDB_NAME)
:
@
$
(
prep-target
)
-
$(CP)
$(HOTSPOT_SERVER_PATH)
/
$(JVMPDB_NAME)
$@
@
$
(
install-module-file
)
# Windows ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Windows
else
# PLATFORM
...
...
@@ -220,7 +207,7 @@ $(LIB_LOCATION)/$(LIBJSIG_NAME): $(HOTSPOT_IMPORT_PATH)/$(ARCH_VM_SUBDIR)/$(LIBJ
$(LIB_LOCATION)/$(CLIENT_LOCATION)/$(LIBJSIG_NAME)
\
$(LIB_LOCATION)/$(SERVER_LOCATION)/$(LIBJSIG_NAME)
:
@
$
(
prep-target
)
$(
LN)
-s
../
$(LIBJSIG_NAME)
$@
$(
call
install-sym-link, ../
$(LIBJSIG_NAME)
)
$(LIB_LOCATION)/$(CLIENT_LOCATION)/$(JVMDB_NAME)
:
$(HOTSPOT_CLIENT_PATH)/$(JVMDB_NAME)
$
(
install-import-file
)
...
...
@@ -246,28 +233,6 @@ $(LIB_LOCATION)/$(CLIENT_LOCATION)/Xusage.txt : $(HOTSPOT_CLIENT_PATH)/Xusage.tx
$(LIB_LOCATION)/$(KERNEL_LOCATION)/Xusage.txt
:
$(HOTSPOT_KERNEL_PATH)/Xusage.txt
$
(
install-file
)
ifeq
($(INCLUDE_SA), true)
# The Serviceability Agent is built in the Hotspot workspace.
# It contains two files:
# - sa-jdi.jar: This goes into the same dir as tools.jar.
# - a shared library: sawindbg.dll on windows / libproc.sa on unix
# This goes into the same dir as the other
# shared libs, eg. libjdwp.so.
$(LIBDIR)/sa-jdi.jar
:
$(HOTSPOT_IMPORT_PATH)/lib/sa-jdi.jar
$
(
install-import-file
)
$(LIB_LOCATION)/$(SALIB_NAME)
:
$(HOTSPOT_SALIB_PATH)/$(SALIB_NAME)
$
(
install-import-file
)
ifeq
($(PLATFORM), windows)
$(LIB_LOCATION)/$(SAPDB_NAME)
:
$(HOTSPOT_SALIB_PATH)/$(SAPDB_NAME)
$
(
install-import-file
)
$(LIB_LOCATION)/$(SAMAP_NAME)
:
$(HOTSPOT_SALIB_PATH)/$(SAMAP_NAME)
$
(
install-import-file
)
endif
# windows
endif
# INCLUDE_SA
#
# Specific to OpenJDK building
#
...
...
@@ -288,7 +253,7 @@ INTERNAL_IMPORT_LIST += \
$(LIBDIR)/jce.jar
:
\
$(BUILDDIR)/closed/tools/crypto/jce/jce.jar
$
(
install-file
)
$
(
install-
non-module-
file
)
$(LIBDIR)/security/US_export_policy.jar
:
\
$(BUILDDIR)/closed/tools/crypto/jce/US_export_policy.jar
$
(
install-file
)
...
...
@@ -310,46 +275,6 @@ $(LIBDIR)/classlist: \
$(CLASSSHARINGDATA_DIR)
/classlist.
$(PLATFORM)
$@
.temp
$(MV)
$@
.temp
$@
ifndef
OPENJDK
# Lucida font files are not included in the OpenJDK distribution.
# Get names of font files
include
FILES.gmk
# Copy font files into OUTPUTDIR area
FONTFILES
=
$(SHARED_FONTFILES)
FONTSDIR
=
$(LIBDIR)
/fonts
FONTSDIRFILE
=
$(FONTSDIR)
/fonts.dir
INTERNAL_IMPORT_LIST
+=
$(FONTFILES)
ifneq
($(PLATFORM), windows)
INTERNAL_IMPORT_LIST
+=
$(FONTSDIRFILE)
endif
$(LIBDIR)/fonts/%.ttf
:
$(CLOSED_SRC)/share/lib/fonts/%.ttf
$
(
install-file
)
$(FONTSDIRFILE)
:
$(PLATFORM_SRC)/classes/sun/awt/motif/java.fonts.dir
$
(
install-file
)
ifeq
($(PLATFORM), linux)
# The oblique fonts are only needed/wanted on Linux.
OBLFONTSDIR
=
$(LIBDIR)
/oblique-fonts
OBLFONTSDIRFILE
=
$(OBLFONTSDIR)
/fonts.dir
INTERNAL_IMPORT_LIST
+=
$(OBLIQUE_FONTFILES)
$(OBLFONTSDIRFILE)
$(LIBDIR)/oblique-fonts/%.ttf
:
$(CLOSED_SRC)/share/lib/fonts/oblique/%.ttf
$
(
install-file
)
$(OBLFONTSDIRFILE)
:
$(PLATFORM_SRC)/classes/sun/awt/motif/java.oblique-fonts.dir
$
(
install-file
)
endif
# linux
endif
# !OPENJDK
# Import internal files (ones that are stashed in this source tree)
import_internal_files
:
$(INTERNAL_IMPORT_LIST)
...
...
jdk/make/java/redist/
FILES.gmk
→
jdk/make/java/redist/
fonts/Makefile
浏览文件 @
74e1e065
#
# Copyright
1998-2003
Sun Microsystems, Inc. All Rights Reserved.
# Copyright
2009
Sun Microsystems, Inc. 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
...
...
@@ -23,6 +23,12 @@
# have any questions.
#
BUILDDIR
=
../../..
MODULE
=
font
PRODUCT
=
java
include
$(BUILDDIR)/common/Defs.gmk
#
# List of lucida font files that we redistribute.
#
...
...
@@ -54,3 +60,52 @@ OBLIQUE_FONTFILES = \
$(LIBDIR)
/oblique-fonts/LucidaSansDemiOblique.ttf
\
endif
ifndef
OPENJDK
# Lucida font files are not included in the OpenJDK distribution.
# Get names of font files
# Copy font files into OUTPUTDIR area
FONTFILES
=
$(SHARED_FONTFILES)
FONTSDIR
=
$(LIBDIR)
/fonts
FONTSDIRFILE
=
$(FONTSDIR)
/fonts.dir
INTERNAL_IMPORT_LIST
=
$(FONTFILES)
ifneq
($(PLATFORM), windows)
INTERNAL_IMPORT_LIST
+=
$(FONTSDIRFILE)
endif
$(LIBDIR)/fonts/%.ttf
:
$(CLOSED_SRC)/share/lib/fonts/%.ttf
$
(
install-file
)
$(FONTSDIRFILE)
:
$(PLATFORM_SRC)/classes/sun/awt/motif/java.fonts.dir
$
(
install-file
)
ifeq
($(PLATFORM), linux)
# The oblique fonts are only needed/wanted on Linux.
OBLFONTSDIR
=
$(LIBDIR)
/oblique-fonts
OBLFONTSDIRFILE
=
$(OBLFONTSDIR)
/fonts.dir
INTERNAL_IMPORT_LIST
+=
$(OBLIQUE_FONTFILES)
$(OBLFONTSDIRFILE)
$(LIBDIR)/oblique-fonts/%.ttf
:
$(CLOSED_SRC)/share/lib/fonts/oblique/%.ttf
$
(
install-file
)
$(OBLFONTSDIRFILE)
:
$(PLATFORM_SRC)/classes/sun/awt/motif/java.oblique-fonts.dir
$
(
install-file
)
endif
# linux
all build
:
$(INTERNAL_IMPORT_LIST)
clean clobber
::
$(RM)
$(INTERNAL_IMPORT_LIST)
else
all build clean clobber
:
endif
# !OPENJDK
jdk/make/java/redist/sajdi/Makefile
0 → 100644
浏览文件 @
74e1e065
#
# Copyright 1997-2009 Sun Microsystems, Inc. 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. Sun designates this
# particular file as subject to the "Classpath" exception as provided
# by Sun in the LICENSE file that accompanied this code.
#
# 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
# CA 95054 USA or visit www.sun.com if you need additional information or
# have any questions.
#
BUILDDIR
=
../../..
MODULE
=
sajdi
PRODUCT
=
java
include
$(BUILDDIR)/common/Defs.gmk
ifeq
($(PLATFORM), windows)
LIB_LOCATION
=
$(BINDIR)
else
LIB_LOCATION
=
$(LIBDIR)
/
$(LIBARCH)
endif
# INCLUDE_SA is false on platforms where SA is not supported.
# On platforms where it is supported, we want to allow it to
# not be present, at least temporarily. So,
# if the SA files (well, just sa-jdi.jar) do not exist
# in the HOTSPOT_IMPORT_PATH, then we won't build SA.
SA_EXISTS
:=
$(
shell
if
[
-r
$(HOTSPOT_IMPORT_PATH)
/lib/sa-jdi.jar
]
;
then
\
$(ECHO)
true
;
\
else
\
$(ECHO)
false
;
\
fi
)
ifeq
($(SA_EXISTS), false)
INCLUDE_SA
:=
false
endif
IMPORT_LIST
=
ifeq
($(INCLUDE_SA), true)
IMPORT_LIST
+=
$(LIBDIR)
/sa-jdi.jar
\
$(LIB_LOCATION)
/
$(SALIB_NAME)
ifeq
($(PLATFORM), windows)
IMPORT_LIST
+=
$(LIB_LOCATION)
/
$(SAMAP_NAME)
\
$(LIB_LOCATION)
/
$(SAPDB_NAME)
endif
endif
# INCLUDE_SA
ifeq
($(INCLUDE_SA), true)
# The Serviceability Agent is built in the Hotspot workspace.
# It contains two files:
# - sa-jdi.jar: This goes into the same dir as tools.jar.
# - a shared library: sawindbg.dll on windows / libproc.sa on unix
# This goes into the same dir as the other
# shared libs, eg. libjdwp.so.
$(LIBDIR)/sa-jdi.jar
:
$(HOTSPOT_IMPORT_PATH)/lib/sa-jdi.jar
$
(
install-importonly-file
)
$(LIB_LOCATION)/$(SALIB_NAME)
:
$(HOTSPOT_SALIB_PATH)/$(SALIB_NAME)
$
(
install-import-file
)
ifeq
($(PLATFORM), windows)
$(LIB_LOCATION)/$(SAPDB_NAME)
:
$(HOTSPOT_SALIB_PATH)/$(SAPDB_NAME)
$
(
install-import-file
)
$(LIB_LOCATION)/$(SAMAP_NAME)
:
$(HOTSPOT_SALIB_PATH)/$(SAMAP_NAME)
$
(
install-import-file
)
endif
# windows
endif
# INCLUDE_SA
all
:
$(IMPORT_LIST)
clean clobber
::
jdk/make/java/security/Makefile
浏览文件 @
74e1e065
...
...
@@ -24,6 +24,7 @@
#
BUILDDIR
=
../..
MODULE
=
base
PACKAGE
=
java.security
PRODUCT
=
sun
include
$(BUILDDIR)/common/Defs.gmk
...
...
@@ -38,11 +39,9 @@ AUTO_FILES_JAVA_DIRS = java/security
#
PROPS_SRC
=
$(TOPDIR)
/src/share/lib/security/java.security
SUNPKCS11
=
ifeq
($(PLATFORM), solaris)
PROPS_SRC
=
$(TOPDIR)
/src/share/lib/security/java.security-solaris
SUNPKCS11
=
sunpkcs11
else
# PLATFORM
...
...
@@ -57,9 +56,6 @@ endif # PLATFORM
PROPS_BUILD
=
$(LIBDIR)
/security/java.security
SUNPKCS11_SRC
=
$(TOPDIR)
/src/share/lib/security/sunpkcs11-solaris.cfg
SUNPKCS11_BUILD
=
$(LIBDIR)
/security/sunpkcs11-solaris.cfg
POLICY_SRC
=
$(TOPDIR)
/src/share/lib/security/java.policy
POLICY_BUILD
=
$(LIBDIR)
/security/java.policy
...
...
@@ -73,14 +69,12 @@ FILES_class = $(FILES_java:%.java=$(CLASSBINDIR)/%.class)
#
include
$(BUILDDIR)/common/Rules.gmk
build
:
properties
$(SUNPKCS11)
policy cacerts
build
:
properties policy cacerts
install
:
all
properties
:
classes $(PROPS_BUILD)
sunpkcs11
:
classes $(SUNPKCS11_BUILD)
policy
:
classes $(POLICY_BUILD)
cacerts
:
classes $(CACERTS_BUILD)
...
...
@@ -88,9 +82,6 @@ cacerts: classes $(CACERTS_BUILD)
$(PROPS_BUILD)
:
$(PROPS_SRC)
$
(
install-file
)
$(SUNPKCS11_BUILD)
:
$(SUNPKCS11_SRC)
$
(
install-file
)
$(POLICY_BUILD)
:
$(POLICY_SRC)
$
(
install-file
)
...
...
@@ -99,7 +90,7 @@ $(CACERTS_BUILD): $(CACERTS_SRC)
clean clobber
::
.delete.classlist
$(RM)
-r
$(CLASSBINDIR)
/java/security
$(RM)
$(PROPS_BUILD)
$(POLICY_BUILD)
$(CACERTS_BUILD)
$(SUNPKCS11_BUILD)
$(RM)
$(PROPS_BUILD)
$(POLICY_BUILD)
$(CACERTS_BUILD)
# Additional Rule for building sun.security.util
$(CLASSBINDIR)/%.class
:
$(SHARE_SRC)/sun/%.java
...
...
jdk/make/java/sql/Makefile
浏览文件 @
74e1e065
...
...
@@ -28,6 +28,7 @@
#
BUILDDIR
=
../..
MODULE
=
jdbc-base
PACKAGE
=
java.sql
PRODUCT
=
sun
include
$(BUILDDIR)/common/Defs.gmk
...
...
jdk/make/java/text/Makefile
浏览文件 @
74e1e065
...
...
@@ -24,7 +24,7 @@
#
BUILDDIR
=
../..
MODULE
=
base
PACKAGE
=
java.text
PRODUCT
=
sun
...
...
jdk/make/java/verify/Makefile
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/make/java/zip/Makefile
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/make/javax/crypto/Makefile
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/make/javax/imageio/Makefile
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/make/javax/print/Makefile
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/make/javax/sound/Makefile
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/make/javax/sound/jsoundalsa/Makefile
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/make/javax/sound/jsoundds/Makefile
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/make/javax/sql/Makefile
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/make/javax/swing/Makefile
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/make/javax/swing/plaf/Makefile
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/make/jpda/back/Makefile
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/make/jpda/transport/Makefile
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/make/jpda/transport/shmem/Makefile
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/make/jpda/transport/socket/Makefile
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/make/jpda/tty/Makefile
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/make/launchers/Makefile
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/make/mkdemo/jvmti/Makefile
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/make/mkdemo/management/Makefile
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/make/mksample/dtrace/Makefile
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/make/mksample/jmx/jmx-scandir/Makefile
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/make/mksample/nbproject/Makefile
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/make/mksample/nio/file/Makefile
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/make/mksample/nio/multicast/Makefile
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/make/mksample/nio/server/Makefile
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/make/mksample/scripting/scriptpad/Makefile
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/make/mksample/webservices/EbayClient/Makefile
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/make/mksample/webservices/EbayServer/Makefile
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/make/modules/Makefile
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/make/modules/modules.config
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/make/modules/optional.depconfig
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/make/modules/tools/Makefile
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/make/modules/tools/build.xml
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/make/modules/tools/nbproject/project.properties
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/make/modules/tools/nbproject/project.xml
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/make/modules/tools/src/com/sun/classanalyzer/Module.java
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/make/sun/applet/Makefile
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/make/sun/awt/Makefile
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/make/sun/cmm/Makefile
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/make/sun/cmm/kcms/Makefile
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/make/sun/cmm/lcms/Makefile
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/make/sun/dcpr/Makefile
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/make/sun/font/Makefile
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/make/sun/font/t2k/Makefile
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/make/sun/headless/Makefile
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/make/sun/image/generic/Makefile
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/make/sun/image/vis/Makefile
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/make/sun/jar/Makefile
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/make/sun/javazic/Makefile
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/make/sun/jawt/Makefile
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/make/sun/jconsole/Makefile
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/make/sun/jdbc/Makefile
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/make/sun/jdga/Makefile
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/make/sun/jkernel/Makefile
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/make/sun/jpeg/Makefile
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/make/sun/launcher/Makefile
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/make/sun/management/Makefile
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/make/sun/native2ascii/Makefile
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/make/sun/net/others/Makefile
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/make/sun/net/spi/nameservice/dns/Makefile
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/make/sun/nio/Makefile
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/make/sun/nio/FILES_java.gmk
→
jdk/make/sun/nio/
cs/
FILES_java.gmk
浏览文件 @
74e1e065
文件已移动
jdk/make/sun/nio/cs/Makefile
0 → 100644
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/make/sun/org/mozilla/javascript/Makefile
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/make/sun/pisces/Makefile
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/make/sun/rmi/cgi/Makefile
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/make/sun/rmi/oldtools/Makefile
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/make/sun/rmi/registry/Makefile
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/make/sun/rmi/rmi/Makefile
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/make/sun/rmi/rmic/Makefile
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/make/sun/rmi/rmid/Makefile
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/make/sun/security/ec/Makefile
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/make/sun/security/jgss/wrapper/Makefile
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/make/sun/security/krb5/Makefile
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/make/sun/security/mscapi/Makefile
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/make/sun/security/pkcs11/Makefile
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/make/sun/security/smartcardio/Makefile
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/make/sun/security/tools/Makefile
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/make/sun/serialver/Makefile
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/make/sun/splashscreen/Makefile
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/make/sun/text/Makefile
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/make/sun/tools/Makefile
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/make/sun/tracing/dtrace/Makefile
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/make/sun/xawt/Makefile
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/src/share/classes/java/lang/Deprecated.java
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/src/share/classes/java/lang/Error.java
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/src/share/classes/java/lang/Exception.java
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/src/share/classes/java/lang/RuntimeException.java
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/src/share/classes/java/lang/SuppressWarnings.java
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/src/share/classes/java/lang/Throwable.java
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/src/share/classes/java/util/NavigableMap.java
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/src/share/classes/java/util/NavigableSet.java
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/src/share/classes/sun/nio/fs/AbstractPath.java
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/src/share/classes/sun/nio/fs/AbstractWatchKey.java
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/src/share/classes/sun/security/krb5/internal/ktab/KeyTabEntry.java
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/src/share/classes/sun/security/provider/certpath/OCSPResponse.java
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/src/solaris/classes/sun/nio/ch/SctpChannelImpl.java
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/src/solaris/classes/sun/nio/ch/SctpMultiChannelImpl.java
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/src/solaris/classes/sun/nio/ch/SctpNet.java
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/src/solaris/classes/sun/nio/ch/SctpServerChannelImpl.java
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/src/solaris/classes/sun/nio/ch/SctpSocketDispatcher.java
已删除
100644 → 0
浏览文件 @
afb72b42
此差异已折叠。
点击以展开。
jdk/src/solaris/native/sun/nio/ch/SctpNet.c
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/src/windows/classes/sun/nio/ch/WindowsAsynchronousFileChannelImpl.java
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/src/windows/native/sun/nio/ch/WindowsAsynchronousFileChannelImpl.c
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/test/com/sun/jdi/ProcessAttachTest.sh
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/test/com/sun/jdi/connect/spi/JdiLoadedByCustomLoader.sh
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/test/com/sun/nio/sctp/SctpChannel/Connect.java
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/test/com/sun/nio/sctp/SctpChannel/Send.java
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/test/com/sun/nio/sctp/SctpChannel/SocketOptionTests.java
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/test/com/sun/nio/sctp/SctpMultiChannel/Send.java
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/test/com/sun/tools/attach/ApplicationSetup.sh
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/test/com/sun/tools/attach/BasicTests.sh
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/test/com/sun/tools/attach/CommonSetup.sh
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/test/com/sun/tools/attach/PermissionTests.sh
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/test/com/sun/tools/attach/ProviderTests.sh
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/test/java/beans/Introspector/Test5102804.java
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/test/java/io/File/Basic.java
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/test/java/io/File/basic.sh
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/test/java/io/Serializable/evolution/RenamePackage/run.sh
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/test/java/io/Serializable/serialver/classpath/run.sh
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/test/java/io/Serializable/serialver/nested/run.sh
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/test/java/lang/ClassLoader/deadlock/TestOneWayDelegate.sh
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/test/java/lang/StringCoding/CheckEncodings.sh
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/test/java/lang/System/finalization/FinExit.sh
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/test/java/lang/annotation/loaderLeak/LoaderLeak.sh
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/test/java/lang/instrument/appendToClassLoaderSearch/CommonSetup.sh
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/test/java/nio/channels/AsynchronousFileChannel/LotsOfWrites.java
0 → 100644
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/test/java/nio/channels/Selector/lots_of_updates.sh
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/test/java/nio/channels/spi/AsynchronousChannelProvider/custom_provider.sh
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/test/java/nio/file/Files/walk_file_tree.sh
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/test/java/nio/file/Path/CopyAndMove.java
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/test/java/nio/file/Path/PassThroughFileSystem.java
0 → 100644
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/test/java/nio/file/Path/delete_on_close.sh
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/test/java/nio/file/TestUtil.java
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/test/java/nio/file/WatchService/OverflowEventIsLoner.java
0 → 100644
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/test/java/security/Provider/Turkish.java
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/test/java/util/Currency/PropertiesTest.sh
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/test/java/util/PluggableLocale/ExecTest.sh
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/test/java/util/ResourceBundle/Bug6299235Test.sh
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/test/java/util/ResourceBundle/Control/ExpirationTest.sh
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/test/java/util/ServiceLoader/basic.sh
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/test/javax/imageio/stream/StreamCloserLeak/run_test.sh
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/test/javax/script/CommonSetup.sh
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/test/javax/script/ProviderTest.sh
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/test/sun/jvmstat/testlibrary/utils.sh
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/test/sun/management/jmxremote/bootstrap/GeneratePropertyPassword.sh
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/test/sun/misc/URLClassPath/ClassnameCharTest.sh
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
hotspot/src/share/vm/gc_implementation/g1/ptrQueue.inline.hpp
→
jdk/test/sun/security/krb5/ktab/KeyString.java
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/test/sun/tools/common/ApplicationSetup.sh
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/test/sun/tools/common/CommonSetup.sh
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/test/sun/tools/jps/jps-help.sh
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/test/sun/tools/jstat/jstatHelp.sh
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/test/sun/tools/jstat/jstatOptions1.sh
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/test/sun/tools/jstatd/jstatdUsage1.sh
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/test/sun/tools/native2ascii/Native2AsciiTests.sh
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/test/tools/launcher/ChangeDataModel.sh
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/test/tools/launcher/ClassPathWildCard.sh
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/test/tools/launcher/DefaultLocaleTest.sh
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
jdk/test/tools/launcher/UnicodeTest.sh
浏览文件 @
74e1e065
此差异已折叠。
点击以展开。
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录