OpenJDK / jdk / hs
changeset 42748:fca460b63839
Merge
author | ddehaven |
---|---|
date | Mon, 12 Dec 2016 20:54:41 -0800 |
parents | 807791cafb87 00cbf376c532 |
children | 91fb907a8732 |
files | hotspot/test/runtime/modules/JVMCanReadModule.java hotspot/test/runtime/modules/JVMIsExportedToModule.java hotspot/test/serviceability/jdwp/JdwpCanReadCmd.java hotspot/test/serviceability/jdwp/JdwpCanReadReply.java jdk/THIRD_PARTY_README jdk/src/java.base/share/classes/javax/crypto/JceSecurity.java jdk/src/java.httpclient/share/classes/java/net/http/AsyncConnection.java jdk/src/java.httpclient/share/classes/java/net/http/AsyncEvent.java jdk/src/java.httpclient/share/classes/java/net/http/AsyncSSLConnection.java jdk/src/java.httpclient/share/classes/java/net/http/AsyncSSLDelegate.java jdk/src/java.httpclient/share/classes/java/net/http/AuthenticationFilter.java jdk/src/java.httpclient/share/classes/java/net/http/BufferHandler.java jdk/src/java.httpclient/share/classes/java/net/http/ByteBufferConsumer.java jdk/src/java.httpclient/share/classes/java/net/http/ByteBufferGenerator.java jdk/src/java.httpclient/share/classes/java/net/http/CharsetToolkit.java jdk/src/java.httpclient/share/classes/java/net/http/ConnectionPool.java jdk/src/java.httpclient/share/classes/java/net/http/ContinuationFrame.java jdk/src/java.httpclient/share/classes/java/net/http/CookieFilter.java jdk/src/java.httpclient/share/classes/java/net/http/DataFrame.java jdk/src/java.httpclient/share/classes/java/net/http/ErrorFrame.java jdk/src/java.httpclient/share/classes/java/net/http/Exchange.java jdk/src/java.httpclient/share/classes/java/net/http/ExchangeImpl.java jdk/src/java.httpclient/share/classes/java/net/http/ExecutorWrapper.java jdk/src/java.httpclient/share/classes/java/net/http/FilterFactory.java jdk/src/java.httpclient/share/classes/java/net/http/FrameReader.java jdk/src/java.httpclient/share/classes/java/net/http/GoAwayFrame.java jdk/src/java.httpclient/share/classes/java/net/http/HeaderFilter.java jdk/src/java.httpclient/share/classes/java/net/http/HeaderFrame.java jdk/src/java.httpclient/share/classes/java/net/http/HeaderParser.java jdk/src/java.httpclient/share/classes/java/net/http/HeadersFrame.java jdk/src/java.httpclient/share/classes/java/net/http/Http1Exchange.java jdk/src/java.httpclient/share/classes/java/net/http/Http1Request.java jdk/src/java.httpclient/share/classes/java/net/http/Http1Response.java jdk/src/java.httpclient/share/classes/java/net/http/Http2ClientImpl.java jdk/src/java.httpclient/share/classes/java/net/http/Http2Connection.java jdk/src/java.httpclient/share/classes/java/net/http/Http2Frame.java jdk/src/java.httpclient/share/classes/java/net/http/HttpClient.java jdk/src/java.httpclient/share/classes/java/net/http/HttpClientBuilderImpl.java jdk/src/java.httpclient/share/classes/java/net/http/HttpClientImpl.java jdk/src/java.httpclient/share/classes/java/net/http/HttpConnection.java jdk/src/java.httpclient/share/classes/java/net/http/HttpHeaders.java jdk/src/java.httpclient/share/classes/java/net/http/HttpHeadersImpl.java jdk/src/java.httpclient/share/classes/java/net/http/HttpRedirectImpl.java jdk/src/java.httpclient/share/classes/java/net/http/HttpRequest.java jdk/src/java.httpclient/share/classes/java/net/http/HttpRequestBuilderImpl.java jdk/src/java.httpclient/share/classes/java/net/http/HttpRequestImpl.java jdk/src/java.httpclient/share/classes/java/net/http/HttpResponse.java jdk/src/java.httpclient/share/classes/java/net/http/HttpResponseImpl.java jdk/src/java.httpclient/share/classes/java/net/http/HttpTimeoutException.java jdk/src/java.httpclient/share/classes/java/net/http/ImmutableHeaders.java jdk/src/java.httpclient/share/classes/java/net/http/Log.java jdk/src/java.httpclient/share/classes/java/net/http/MultiExchange.java jdk/src/java.httpclient/share/classes/java/net/http/OutgoingHeaders.java jdk/src/java.httpclient/share/classes/java/net/http/Pair.java jdk/src/java.httpclient/share/classes/java/net/http/PingFrame.java jdk/src/java.httpclient/share/classes/java/net/http/PlainHttpConnection.java jdk/src/java.httpclient/share/classes/java/net/http/PlainProxyConnection.java jdk/src/java.httpclient/share/classes/java/net/http/PlainTunnelingConnection.java jdk/src/java.httpclient/share/classes/java/net/http/PriorityFrame.java jdk/src/java.httpclient/share/classes/java/net/http/PushPromiseFrame.java jdk/src/java.httpclient/share/classes/java/net/http/Queue.java jdk/src/java.httpclient/share/classes/java/net/http/RawChannel.java jdk/src/java.httpclient/share/classes/java/net/http/RawChannelImpl.java jdk/src/java.httpclient/share/classes/java/net/http/RedirectFilter.java jdk/src/java.httpclient/share/classes/java/net/http/ResetFrame.java jdk/src/java.httpclient/share/classes/java/net/http/ResponseContent.java jdk/src/java.httpclient/share/classes/java/net/http/ResponseHeaders.java jdk/src/java.httpclient/share/classes/java/net/http/SSLConnection.java jdk/src/java.httpclient/share/classes/java/net/http/SSLDelegate.java jdk/src/java.httpclient/share/classes/java/net/http/SSLTunnelConnection.java jdk/src/java.httpclient/share/classes/java/net/http/SettingsFrame.java jdk/src/java.httpclient/share/classes/java/net/http/Stream.java jdk/src/java.httpclient/share/classes/java/net/http/TimeoutEvent.java jdk/src/java.httpclient/share/classes/java/net/http/Utils.java jdk/src/java.httpclient/share/classes/java/net/http/WS.java jdk/src/java.httpclient/share/classes/java/net/http/WSBuilder.java jdk/src/java.httpclient/share/classes/java/net/http/WSCharsetToolkit.java jdk/src/java.httpclient/share/classes/java/net/http/WSDisposable.java jdk/src/java.httpclient/share/classes/java/net/http/WSFrame.java jdk/src/java.httpclient/share/classes/java/net/http/WSFrameConsumer.java jdk/src/java.httpclient/share/classes/java/net/http/WSMessageConsumer.java jdk/src/java.httpclient/share/classes/java/net/http/WSMessageSender.java jdk/src/java.httpclient/share/classes/java/net/http/WSOpeningHandshake.java jdk/src/java.httpclient/share/classes/java/net/http/WSOutgoingMessage.java jdk/src/java.httpclient/share/classes/java/net/http/WSProtocolException.java jdk/src/java.httpclient/share/classes/java/net/http/WSReceiver.java jdk/src/java.httpclient/share/classes/java/net/http/WSShared.java jdk/src/java.httpclient/share/classes/java/net/http/WSSharedPool.java jdk/src/java.httpclient/share/classes/java/net/http/WSSignalHandler.java jdk/src/java.httpclient/share/classes/java/net/http/WSTransmitter.java jdk/src/java.httpclient/share/classes/java/net/http/WSUtils.java jdk/src/java.httpclient/share/classes/java/net/http/WSWriter.java jdk/src/java.httpclient/share/classes/java/net/http/WebSocket.java jdk/src/java.httpclient/share/classes/java/net/http/WebSocketHandshakeException.java jdk/src/java.httpclient/share/classes/java/net/http/WindowUpdateFrame.java jdk/src/java.httpclient/share/classes/java/net/http/package-info.java jdk/src/java.httpclient/share/classes/module-info.java jdk/src/java.httpclient/share/classes/sun/net/httpclient/hpack/BinaryRepresentationWriter.java jdk/src/java.httpclient/share/classes/sun/net/httpclient/hpack/BulkSizeUpdateWriter.java jdk/src/java.httpclient/share/classes/sun/net/httpclient/hpack/Decoder.java jdk/src/java.httpclient/share/classes/sun/net/httpclient/hpack/DecodingCallback.java jdk/src/java.httpclient/share/classes/sun/net/httpclient/hpack/Encoder.java jdk/src/java.httpclient/share/classes/sun/net/httpclient/hpack/HeaderTable.java jdk/src/java.httpclient/share/classes/sun/net/httpclient/hpack/Huffman.java jdk/src/java.httpclient/share/classes/sun/net/httpclient/hpack/ISO_8859_1.java jdk/src/java.httpclient/share/classes/sun/net/httpclient/hpack/IndexNameValueWriter.java jdk/src/java.httpclient/share/classes/sun/net/httpclient/hpack/IndexedWriter.java jdk/src/java.httpclient/share/classes/sun/net/httpclient/hpack/IntegerReader.java jdk/src/java.httpclient/share/classes/sun/net/httpclient/hpack/IntegerWriter.java jdk/src/java.httpclient/share/classes/sun/net/httpclient/hpack/LiteralNeverIndexedWriter.java jdk/src/java.httpclient/share/classes/sun/net/httpclient/hpack/LiteralWithIndexingWriter.java jdk/src/java.httpclient/share/classes/sun/net/httpclient/hpack/LiteralWriter.java jdk/src/java.httpclient/share/classes/sun/net/httpclient/hpack/SizeUpdateWriter.java jdk/src/java.httpclient/share/classes/sun/net/httpclient/hpack/StringReader.java jdk/src/java.httpclient/share/classes/sun/net/httpclient/hpack/StringWriter.java jdk/src/java.httpclient/share/classes/sun/net/httpclient/hpack/package-info.java jdk/test/java/net/InetAddress/ptr/lookup.sh jdk/test/java/net/ServerSocket/AcceptCauseFileDescriptorLeak.sh jdk/test/java/net/httpclient/BasicWebSocketAPITest.java jdk/test/java/net/httpclient/HttpUtils.java jdk/test/java/net/httpclient/QuickResponses.java jdk/test/java/net/httpclient/TimeoutTest.java jdk/test/java/net/httpclient/http2/TEST.properties jdk/test/java/net/httpclient/http2/java.httpclient/java/net/http/BodyInputStream.java jdk/test/java/net/httpclient/http2/java.httpclient/java/net/http/BodyOutputStream.java jdk/test/java/net/httpclient/http2/java.httpclient/java/net/http/EchoHandler.java jdk/test/java/net/httpclient/http2/java.httpclient/java/net/http/Http2Handler.java jdk/test/java/net/httpclient/http2/java.httpclient/java/net/http/Http2TestExchange.java jdk/test/java/net/httpclient/http2/java.httpclient/java/net/http/Http2TestServer.java jdk/test/java/net/httpclient/http2/java.httpclient/java/net/http/Http2TestServerConnection.java jdk/test/java/net/httpclient/http2/java.httpclient/java/net/http/OutgoingPushPromise.java jdk/test/java/net/httpclient/http2/java.httpclient/java/net/http/PushHandler.java jdk/test/java/net/httpclient/http2/java.httpclient/java/net/http/TestUtil.java jdk/test/java/net/httpclient/http2/java.httpclient/sun/net/httpclient/hpack/BinaryPrimitivesTest.java jdk/test/java/net/httpclient/http2/java.httpclient/sun/net/httpclient/hpack/BuffersTestingKit.java jdk/test/java/net/httpclient/http2/java.httpclient/sun/net/httpclient/hpack/CircularBufferTest.java jdk/test/java/net/httpclient/http2/java.httpclient/sun/net/httpclient/hpack/DecoderTest.java jdk/test/java/net/httpclient/http2/java.httpclient/sun/net/httpclient/hpack/EncoderTest.java jdk/test/java/net/httpclient/http2/java.httpclient/sun/net/httpclient/hpack/HeaderTableTest.java jdk/test/java/net/httpclient/http2/java.httpclient/sun/net/httpclient/hpack/HuffmanTest.java jdk/test/java/net/httpclient/http2/java.httpclient/sun/net/httpclient/hpack/SpecHelper.java jdk/test/java/net/httpclient/http2/java.httpclient/sun/net/httpclient/hpack/TestHelper.java jdk/test/java/net/httpclient/whitebox/java.httpclient/java/net/http/SelectorTest.java langtools/src/jdk.jdeps/share/classes/com/sun/tools/classfile/ConcealedPackages_attribute.java langtools/src/jdk.jdeps/share/classes/com/sun/tools/classfile/Hashes_attribute.java langtools/src/jdk.jdeps/share/classes/com/sun/tools/classfile/MainClass_attribute.java langtools/src/jdk.jdeps/share/classes/com/sun/tools/classfile/TargetPlatform_attribute.java langtools/src/jdk.jdeps/share/classes/com/sun/tools/classfile/Version_attribute.java langtools/test/tools/javac/diags/examples/DuplicateExports/exported/Class.java langtools/test/tools/javac/diags/examples/DuplicateExports/module-info.java langtools/test/tools/javac/diags/examples/LeaksNotAccessibleNotRequiredPublic/LeaksNotAccessibleNotRequiredPublic.java langtools/test/tools/javac/diags/examples/LeaksNotAccessibleNotRequiredPublic/modulesourcepath/m1/api1/Api1.java langtools/test/tools/javac/diags/examples/LeaksNotAccessibleNotRequiredPublic/modulesourcepath/m1/module-info.java langtools/test/tools/javac/diags/examples/LeaksNotAccessibleNotRequiredPublic/modulesourcepath/m2/api2/Api2.java langtools/test/tools/javac/diags/examples/LeaksNotAccessibleNotRequiredPublic/modulesourcepath/m2/module-info.java langtools/test/tools/javac/modules/RequiresPublicTest.java langtools/test/tools/jdeps/modules/src/m1/module-info.java langtools/test/tools/jdeps/modules/src/m1/p1/Goo.java langtools/test/tools/jdeps/modules/src/m1/p1/Lib.java langtools/test/tools/jdeps/modules/src/m1/p1/S.java langtools/test/tools/jdeps/modules/src/m1/p1/internal/Impl.java langtools/test/tools/jdeps/modules/src/m2/module-info.java langtools/test/tools/jdeps/modules/src/m2/p2/Bar.java langtools/test/tools/jdeps/modules/src/m2/p2/internal/T2.java langtools/test/tools/jdeps/modules/src/m3/module-info.java langtools/test/tools/jdeps/modules/src/m3/p3/Foo.java langtools/test/tools/jdeps/modules/src/m3/p3/Main.java langtools/test/tools/jdeps/modules/src/m6/module-info.java langtools/test/tools/jdeps/modules/src/m6/p6/indirect/UnsafeRef.java langtools/test/tools/jdeps/modules/src/m6/p6/safe/Lib.java langtools/test/tools/jdeps/modules/src/m7/module-info.java langtools/test/tools/jdeps/modules/src/m7/p7/Main.java make/CreateHgtipFiles.gmk nashorn/test/script/currently-failing/JDK-8130127.js nashorn/test/script/currently-failing/JDK-8130127.js.EXPECTED |
diffstat | 1199 files changed, 59775 insertions(+), 43512 deletions(-) [+] |
line wrap: on
line diff
--- a/.hgignore Tue Dec 13 01:34:02 2016 +0000 +++ b/.hgignore Mon Dec 12 20:54:41 2016 -0800 @@ -3,8 +3,7 @@ ^.idea/ nbproject/private/ ^webrev -^.hgtip -^.bridge2 +^.src-rev$ ^.jib/ .DS_Store .metadata/
--- a/.hgtags Tue Dec 13 01:34:02 2016 +0000 +++ b/.hgtags Mon Dec 12 20:54:41 2016 -0800 @@ -389,3 +389,5 @@ 31f5023200d42185b70c4c00ba5672391e4642d0 jdk-9+144 3ee4e7827413fa5c5c4fca58597b0ad89e921bfb jdk-9+145 581331db696a62dd411926ba7fd437252252a71d jdk-9+146 +f4e854a77aa38749bd90f722b06974a56e7233d5 jdk-9+147 +5c71ea43933b6c7e8a85eb1a4eb2213011b95d82 jdk-9+148
--- a/.hgtags-top-repo Tue Dec 13 01:34:02 2016 +0000 +++ b/.hgtags-top-repo Mon Dec 12 20:54:41 2016 -0800 @@ -389,3 +389,5 @@ 8d337fd6333e28c48aa87880144b840aad82baaf jdk-9+144 ff98aa9ec9fae991e426ce5926fc9036d25f5562 jdk-9+145 a22e2671d88f6b22a4aa82e3966986542ed2a381 jdk-9+146 +5f6920274c48eb00d31afee6c034826a754c13d9 jdk-9+147 +3ffc3e886c74736e387f3685e86b557cdea706c8 jdk-9+148
--- a/common/autoconf/boot-jdk.m4 Tue Dec 13 01:34:02 2016 +0000 +++ b/common/autoconf/boot-jdk.m4 Mon Dec 12 20:54:41 2016 -0800 @@ -98,7 +98,7 @@ fi ]) -# Test: Is bootjdk explicitely set by command line arguments? +# Test: Is bootjdk explicitly set by command line arguments? AC_DEFUN([BOOTJDK_CHECK_ARGUMENTS], [ if test "x$with_boot_jdk" != x; then @@ -238,7 +238,7 @@ $1=$BOOT_JDK/bin/$2 if test ! -x [$]$1; then AC_MSG_RESULT(not found) - AC_MSG_NOTICE([Your Boot JDK seems broken. This might be fixed by explicitely setting --with-boot-jdk]) + AC_MSG_NOTICE([Your Boot JDK seems broken. This might be fixed by explicitly setting --with-boot-jdk]) AC_MSG_ERROR([Could not find $2 in the Boot JDK]) fi AC_MSG_RESULT(ok) @@ -262,7 +262,7 @@ # we detected something (if so, the path to the jdk is in BOOT_JDK). But we # must check if this is indeed valid; otherwise we'll continue looking. - # Test: Is bootjdk explicitely set by command line arguments? + # Test: Is bootjdk explicitly set by command line arguments? BOOTJDK_DO_CHECK([BOOTJDK_CHECK_ARGUMENTS]) if test "x$with_boot_jdk" != x && test "x$BOOT_JDK_FOUND" = xno; then # Having specified an argument which is incorrect will produce an instant failure; @@ -286,7 +286,7 @@ if test "x$BOOT_JDK_FOUND" = xno; then HELP_MSG_MISSING_DEPENDENCY([openjdk]) AC_MSG_NOTICE([Could not find a valid Boot JDK. $HELP_MSG]) - AC_MSG_NOTICE([This might be fixed by explicitely setting --with-boot-jdk]) + AC_MSG_NOTICE([This might be fixed by explicitly setting --with-boot-jdk]) AC_MSG_ERROR([Cannot continue]) fi
--- a/common/autoconf/build-performance.m4 Tue Dec 13 01:34:02 2016 +0000 +++ b/common/autoconf/build-performance.m4 Mon Dec 12 20:54:41 2016 -0800 @@ -217,6 +217,13 @@ AC_DEFUN([BPERF_SETUP_CCACHE_USAGE], [ if test "x$CCACHE" != x; then + if test "x$OPENJDK_BUILD_OS" = "xmacosx"; then + HAS_BAD_CCACHE=[`$ECHO $CCACHE_VERSION | \ + $GREP -e '^1\.' -e '^2\.' -e '^3\.0\.' -e '^3\.1\.'`] + if test "x$HAS_BAD_CCACHE" != "x"; then + AC_MSG_ERROR([On macosx, ccache 3.2 or later is required, found $CCACHE_VERSION]) + fi + fi if test "x$USE_PRECOMPILED_HEADER" = "x1"; then HAS_BAD_CCACHE=[`$ECHO $CCACHE_VERSION | \ $GREP -e '^1.*' -e '^2.*' -e '^3\.0.*' -e '^3\.1\.[0123]$'`]
--- a/common/autoconf/buildjdk-spec.gmk.in Tue Dec 13 01:34:02 2016 +0000 +++ b/common/autoconf/buildjdk-spec.gmk.in Mon Dec 12 20:54:41 2016 -0800 @@ -86,73 +86,13 @@ # Save speed and disk space by not enabling debug symbols for the buildjdk ENABLE_DEBUG_SYMBOLS := false -#################################################### -# -# Legacy Hotspot support +# Control wether Hotspot builds gtest tests +BUILD_GTEST := false -# Legacy setting: OPT or DBG -VARIANT := OPT -# Legacy setting: true or false -FASTDEBUG := false -# Legacy setting: debugging the class files? -DEBUG_CLASSFILES := false +JVM_VARIANTS := server # Some users still set EXTRA_*FLAGS on the make command line. Must # make sure to override that when building buildjdk. override EXTRA_CFLAGS := override EXTRA_CXXFLAGS := override EXTRA_LDFLAGS := - -# The HOSTCC/HOSTCXX is Hotspot terminology for the BUILD_CC/BUILD_CXX, i.e. the -# compiler that produces code that can be run on the build platform. -HOSTCC := $(BUILD_CC) -HOSTCXX := $(BUILD_CXX) - -# Old name for OPENJDK_TARGET_OS (aix,bsd,hpux,linux,macosx,solaris,windows etc) -PLATFORM := $(OPENJDK_BUILD_OS) -# 32 or 64 bit -ARCH_DATA_MODEL := $(OPENJDK_BUILD_CPU_BITS) - -ALT_BOOTDIR := $(BOOT_JDK) -# Yet another name for arch used for an extra subdir below the jvm lib. -# Uses i386 and amd64, instead of x86 and x86_64. -LIBARCH := @OPENJDK_BUILD_CPU_LEGACY_LIB@ -# Set the cpu architecture. Some users still set ARCH on the make command line. Must -# make sure to override that when building buildjdk. -override ARCH := $(OPENJDK_BUILD_CPU_ARCH) -# Legacy setting for building for a 64 bit machine. -# If yes then this expands to _LP64 := 1 -ifeq ($(OPENJDK_BUILD_CPU_BITS), 64) - _LP64 := 1 -endif - -ALT_OUTPUTDIR := $(HOTSPOT_OUTPUTDIR) -ALT_EXPORT_PATH := $(HOTSPOT_DIST) - -JVM_INTERPRETER := @JVM_INTERPRETER@ -ifeq ($(JVM_INTERPRETER), cpp) - CC_INTERP=true -endif - -HOTSPOT_MAKE_ARGS := product docs export_product - -# Control wether Hotspot builds gtest tests -BUILD_GTEST := false - -USE_PRECOMPILED_HEADER := @USE_PRECOMPILED_HEADER@ - -# Hotspot expects the variable FULL_DEBUG_SYMBOLS=1/0 to control debug symbols -# creation. -FULL_DEBUG_SYMBOLS := 0 -ZIP_DEBUGINFO_FILES := 0 -# Disable stripping -STRIP_POLICY := none - -JVM_VARIANTS := server -JVM_VARIANT_SERVER := true -JVM_VARIANT_CLIENT := false -JVM_VARIANT_MINIMAL1 := false -JVM_VARIANT_KERNEL := false -JVM_VARIANT_ZERO := false -JVM_VARIANT_ZEROSHARK := false -JVM_VARIANT_CORE := false
--- a/common/autoconf/configure.ac Tue Dec 13 01:34:02 2016 +0000 +++ b/common/autoconf/configure.ac Mon Dec 12 20:54:41 2016 -0800 @@ -182,7 +182,6 @@ # Finally do some processing after the detection phase TOOLCHAIN_SETUP_BUILD_COMPILERS -TOOLCHAIN_SETUP_LEGACY TOOLCHAIN_MISC_CHECKS # Setup the JTReg Regression Test Harness.
--- a/common/autoconf/flags.m4 Tue Dec 13 01:34:02 2016 +0000 +++ b/common/autoconf/flags.m4 Mon Dec 12 20:54:41 2016 -0800 @@ -1378,7 +1378,7 @@ AC_MSG_CHECKING([if native warnings are errors]) if test "x$enable_warnings_as_errors" = "xyes"; then - AC_MSG_RESULT([yes (explicitely set)]) + AC_MSG_RESULT([yes (explicitly set)]) WARNINGS_AS_ERRORS=true elif test "x$enable_warnings_as_errors" = "xno"; then AC_MSG_RESULT([no])
--- a/common/autoconf/generated-configure.sh Tue Dec 13 01:34:02 2016 +0000 +++ b/common/autoconf/generated-configure.sh Mon Dec 12 20:54:41 2016 -0800 @@ -671,6 +671,8 @@ LLVM_LDFLAGS LLVM_CFLAGS LLVM_CONFIG +LIBFFI_LIB_FILE +ENABLE_LIBFFI_BUNDLING LIBFFI_LIBS LIBFFI_CFLAGS ALSA_LIBS @@ -700,8 +702,6 @@ JVM_FEATURES_server INCLUDE_DTRACE GCOV_ENABLED -STRIP_POLICY -DEBUG_BINARIES ZIP_EXTERNAL_DEBUG_SYMBOLS COPY_DEBUG_SYMBOLS COMPILE_WITH_DEBUG_SYMBOLS @@ -791,11 +791,6 @@ HOTSPOT_TOOLCHAIN_TYPE USING_BROKEN_SUSE_LD PACKAGE_PATH -USE_CLANG -HOTSPOT_LD -HOTSPOT_CXX -HOTSPOT_RC -HOTSPOT_MT BUILD_AS BUILD_LDCXX BUILD_LD @@ -1215,6 +1210,7 @@ with_libffi with_libffi_include with_libffi_lib +enable_libffi_bundling with_libjpeg with_giflib with_libpng @@ -1974,8 +1970,8 @@ --enable-debug set the debug level to fastdebug (shorthand for --with-debug-level=fastdebug) [disabled] --enable-headless-only only build headless (no GUI) support [disabled] - --enable-unlimited-crypto - Enable unlimited crypto policy [disabled] + --disable-unlimited-crypto + Disable unlimited crypto policy [enabled] --disable-keep-packaged-modules Do not keep packaged modules in jdk image [enable] --enable-static-build enable static library build [disabled] @@ -1997,6 +1993,9 @@ disable bundling of the freetype library with the build result [enabled on Windows or when using --with-freetype, disabled otherwise] + --enable-libffi-bundling + enable bundling of libffi.so to make the built JDK + runnable on more systems --enable-jtreg-failure-handler forces build of the jtreg failure handler to be enabled, missing dependencies become fatal errors. @@ -3851,7 +3850,7 @@ # $1 A command line (typically autoconf macro) to execute -# Test: Is bootjdk explicitely set by command line arguments? +# Test: Is bootjdk explicitly set by command line arguments? # Test: Is $JAVA_HOME set? @@ -4178,7 +4177,7 @@ ffi) PKGHANDLER_COMMAND="sudo apt-get install libffi-dev" ;; x11) - PKGHANDLER_COMMAND="sudo apt-get install libX11-dev libxext-dev libxrender-dev libxtst-dev libxt-dev" ;; + PKGHANDLER_COMMAND="sudo apt-get install libx11-dev libxext-dev libxrender-dev libxtst-dev libxt-dev" ;; ccache) PKGHANDLER_COMMAND="sudo apt-get install ccache" ;; dtrace) @@ -4911,7 +4910,7 @@ # Minimum supported versions, empty means unspecified TOOLCHAIN_MINIMUM_VERSION_clang="3.2" TOOLCHAIN_MINIMUM_VERSION_gcc="4.3" -TOOLCHAIN_MINIMUM_VERSION_microsoft="" +TOOLCHAIN_MINIMUM_VERSION_microsoft="16.00.30319.01" # VS2010 TOOLCHAIN_MINIMUM_VERSION_solstudio="5.13" TOOLCHAIN_MINIMUM_VERSION_xlc="" @@ -4982,10 +4981,6 @@ # for this, we can only do this after these have been setup. -# Setup legacy variables that are still needed as alternative ways to refer to -# parts of the toolchain. - - # Do some additional checks on the detected tools. @@ -5093,7 +5088,7 @@ #CUSTOM_AUTOCONF_INCLUDE # Do not change or remove the following line, it is needed for consistency checks: -DATE_WHEN_GENERATED=1479997904 +DATE_WHEN_GENERATED=1481104795 ############################################################################### # @@ -15523,7 +15518,7 @@ ;; esac - # ..and setup our own variables. (Do this explicitely to facilitate searching) + # ..and setup our own variables. (Do this explicitly to facilitate searching) OPENJDK_BUILD_OS="$VAR_OS" if test "x$VAR_OS_TYPE" != x; then OPENJDK_BUILD_OS_TYPE="$VAR_OS_TYPE" @@ -15662,7 +15657,7 @@ ;; esac - # ... and setup our own variables. (Do this explicitely to facilitate searching) + # ... and setup our own variables. (Do this explicitly to facilitate searching) OPENJDK_TARGET_OS="$VAR_OS" if test "x$VAR_OS_TYPE" != x; then OPENJDK_TARGET_OS_TYPE="$VAR_OS_TYPE" @@ -24240,7 +24235,7 @@ if test "${enable_unlimited_crypto+set}" = set; then : enableval=$enable_unlimited_crypto; else - enable_unlimited_crypto=no + enable_unlimited_crypto=yes fi if test "x$enable_unlimited_crypto" = "xyes"; then @@ -24400,7 +24395,7 @@ as_fn_error $? "Version string contains + but both 'BUILD' and 'OPT' are missing" "$LINENO" 5 fi # Stop the version part process from setting default values. - # We still allow them to explicitely override though. + # We still allow them to explicitly override though. NO_DEFAULT_VERSION_PARTS=true else as_fn_error $? "--with-version-string fails to parse as a valid version string: $with_version_string" "$LINENO" 5 @@ -24462,11 +24457,10 @@ fi else if test "x$NO_DEFAULT_VERSION_PARTS" != xtrue; then - # Default is to calculate a string like this <timestamp>.<username>.<base dir name> - timestamp=`$DATE '+%Y-%m-%d-%H%M%S'` + # Default is to calculate a string like this 'adhoc.<username>.<base dir name>' # Outer [ ] to quote m4. basedirname=`$BASENAME "$TOPDIR" | $TR -d -c '[a-z][A-Z][0-9].-'` - VERSION_OPT="$timestamp.$USERNAME.$basedirname" + VERSION_OPT="adhoc.$USERNAME.$basedirname" fi fi @@ -24769,7 +24763,7 @@ # we detected something (if so, the path to the jdk is in BOOT_JDK). But we # must check if this is indeed valid; otherwise we'll continue looking. - # Test: Is bootjdk explicitely set by command line arguments? + # Test: Is bootjdk explicitly set by command line arguments? if test "x$BOOT_JDK_FOUND" = xno; then # Now execute the test @@ -29887,8 +29881,8 @@ { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find a valid Boot JDK. $HELP_MSG" >&5 $as_echo "$as_me: Could not find a valid Boot JDK. $HELP_MSG" >&6;} - { $as_echo "$as_me:${as_lineno-$LINENO}: This might be fixed by explicitely setting --with-boot-jdk" >&5 -$as_echo "$as_me: This might be fixed by explicitely setting --with-boot-jdk" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: This might be fixed by explicitly setting --with-boot-jdk" >&5 +$as_echo "$as_me: This might be fixed by explicitly setting --with-boot-jdk" >&6;} as_fn_error $? "Cannot continue" "$LINENO" 5 fi @@ -29910,8 +29904,8 @@ if test ! -x $JAVA; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 $as_echo "not found" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: Your Boot JDK seems broken. This might be fixed by explicitely setting --with-boot-jdk" >&5 -$as_echo "$as_me: Your Boot JDK seems broken. This might be fixed by explicitely setting --with-boot-jdk" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: Your Boot JDK seems broken. This might be fixed by explicitly setting --with-boot-jdk" >&5 +$as_echo "$as_me: Your Boot JDK seems broken. This might be fixed by explicitly setting --with-boot-jdk" >&6;} as_fn_error $? "Could not find java in the Boot JDK" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 @@ -29938,8 +29932,8 @@ if test ! -x $JAVA; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 $as_echo "not found" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: Your Boot JDK seems broken. This might be fixed by explicitely setting --with-boot-jdk" >&5 -$as_echo "$as_me: Your Boot JDK seems broken. This might be fixed by explicitely setting --with-boot-jdk" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: Your Boot JDK seems broken. This might be fixed by explicitly setting --with-boot-jdk" >&5 +$as_echo "$as_me: Your Boot JDK seems broken. This might be fixed by explicitly setting --with-boot-jdk" >&6;} as_fn_error $? "Could not find java in the Boot JDK" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 @@ -30048,8 +30042,8 @@ if test ! -x $JAVAC; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 $as_echo "not found" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: Your Boot JDK seems broken. This might be fixed by explicitely setting --with-boot-jdk" >&5 -$as_echo "$as_me: Your Boot JDK seems broken. This might be fixed by explicitely setting --with-boot-jdk" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: Your Boot JDK seems broken. This might be fixed by explicitly setting --with-boot-jdk" >&5 +$as_echo "$as_me: Your Boot JDK seems broken. This might be fixed by explicitly setting --with-boot-jdk" >&6;} as_fn_error $? "Could not find javac in the Boot JDK" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 @@ -30076,8 +30070,8 @@ if test ! -x $JAVAC; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 $as_echo "not found" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: Your Boot JDK seems broken. This might be fixed by explicitely setting --with-boot-jdk" >&5 -$as_echo "$as_me: Your Boot JDK seems broken. This might be fixed by explicitely setting --with-boot-jdk" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: Your Boot JDK seems broken. This might be fixed by explicitly setting --with-boot-jdk" >&5 +$as_echo "$as_me: Your Boot JDK seems broken. This might be fixed by explicitly setting --with-boot-jdk" >&6;} as_fn_error $? "Could not find javac in the Boot JDK" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 @@ -30186,8 +30180,8 @@ if test ! -x $JAVAH; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 $as_echo "not found" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: Your Boot JDK seems broken. This might be fixed by explicitely setting --with-boot-jdk" >&5 -$as_echo "$as_me: Your Boot JDK seems broken. This might be fixed by explicitely setting --with-boot-jdk" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: Your Boot JDK seems broken. This might be fixed by explicitly setting --with-boot-jdk" >&5 +$as_echo "$as_me: Your Boot JDK seems broken. This might be fixed by explicitly setting --with-boot-jdk" >&6;} as_fn_error $? "Could not find javah in the Boot JDK" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 @@ -30214,8 +30208,8 @@ if test ! -x $JAVAH; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 $as_echo "not found" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: Your Boot JDK seems broken. This might be fixed by explicitely setting --with-boot-jdk" >&5 -$as_echo "$as_me: Your Boot JDK seems broken. This might be fixed by explicitely setting --with-boot-jdk" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: Your Boot JDK seems broken. This might be fixed by explicitly setting --with-boot-jdk" >&5 +$as_echo "$as_me: Your Boot JDK seems broken. This might be fixed by explicitly setting --with-boot-jdk" >&6;} as_fn_error $? "Could not find javah in the Boot JDK" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 @@ -30324,8 +30318,8 @@ if test ! -x $JAR; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 $as_echo "not found" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: Your Boot JDK seems broken. This might be fixed by explicitely setting --with-boot-jdk" >&5 -$as_echo "$as_me: Your Boot JDK seems broken. This might be fixed by explicitely setting --with-boot-jdk" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: Your Boot JDK seems broken. This might be fixed by explicitly setting --with-boot-jdk" >&5 +$as_echo "$as_me: Your Boot JDK seems broken. This might be fixed by explicitly setting --with-boot-jdk" >&6;} as_fn_error $? "Could not find jar in the Boot JDK" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 @@ -30352,8 +30346,8 @@ if test ! -x $JAR; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 $as_echo "not found" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: Your Boot JDK seems broken. This might be fixed by explicitely setting --with-boot-jdk" >&5 -$as_echo "$as_me: Your Boot JDK seems broken. This might be fixed by explicitely setting --with-boot-jdk" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: Your Boot JDK seems broken. This might be fixed by explicitly setting --with-boot-jdk" >&5 +$as_echo "$as_me: Your Boot JDK seems broken. This might be fixed by explicitly setting --with-boot-jdk" >&6;} as_fn_error $? "Could not find jar in the Boot JDK" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 @@ -30462,8 +30456,8 @@ if test ! -x $JARSIGNER; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 $as_echo "not found" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: Your Boot JDK seems broken. This might be fixed by explicitely setting --with-boot-jdk" >&5 -$as_echo "$as_me: Your Boot JDK seems broken. This might be fixed by explicitely setting --with-boot-jdk" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: Your Boot JDK seems broken. This might be fixed by explicitly setting --with-boot-jdk" >&5 +$as_echo "$as_me: Your Boot JDK seems broken. This might be fixed by explicitly setting --with-boot-jdk" >&6;} as_fn_error $? "Could not find jarsigner in the Boot JDK" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 @@ -30490,8 +30484,8 @@ if test ! -x $JARSIGNER; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 $as_echo "not found" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: Your Boot JDK seems broken. This might be fixed by explicitely setting --with-boot-jdk" >&5 -$as_echo "$as_me: Your Boot JDK seems broken. This might be fixed by explicitely setting --with-boot-jdk" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: Your Boot JDK seems broken. This might be fixed by explicitly setting --with-boot-jdk" >&5 +$as_echo "$as_me: Your Boot JDK seems broken. This might be fixed by explicitly setting --with-boot-jdk" >&6;} as_fn_error $? "Could not find jarsigner in the Boot JDK" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 @@ -31198,6 +31192,12 @@ if test -d "$IMPORT_MODULES_TOPDIR/modules_src"; then IMPORT_MODULES_SRC="$IMPORT_MODULES_TOPDIR/modules_src" fi + # Workaround for using different imported module-info.java in Jake due to a + # change in format. Remove once new format is standard in JDK 9 and javafx + # delivers just that. + if test -d "$IMPORT_MODULES_TOPDIR/modules_src_jake"; then + IMPORT_MODULES_SRC="$IMPORT_MODULES_TOPDIR/modules_src_jake $IMPORT_MODULES_SRC" + fi if test -d "$IMPORT_MODULES_TOPDIR/make"; then IMPORT_MODULES_MAKE="$IMPORT_MODULES_TOPDIR/make" fi @@ -33578,9 +33578,11 @@ if test "x$TOOLCHAIN_TYPE" = xsolstudio; then # cc -V output typically looks like # cc: Sun C 5.12 Linux_i386 2011/11/16 + # or + # cc: Studio 12.5 Sun C 5.14 SunOS_sparc 2016/05/31 COMPILER_VERSION_OUTPUT=`$COMPILER -V 2>&1` # Check that this is likely to be the Solaris Studio cc. - $ECHO "$COMPILER_VERSION_OUTPUT" | $GREP "^.*: Sun $COMPILER_NAME" > /dev/null + $ECHO "$COMPILER_VERSION_OUTPUT" | $GREP "^.* Sun $COMPILER_NAME" > /dev/null if test $? -ne 0; then ALT_VERSION_OUTPUT=`$COMPILER --version 2>&1` { $as_echo "$as_me:${as_lineno-$LINENO}: The $COMPILER_NAME compiler (located as $COMPILER) does not seem to be the required $TOOLCHAIN_TYPE compiler." >&5 @@ -34875,9 +34877,11 @@ if test "x$TOOLCHAIN_TYPE" = xsolstudio; then # cc -V output typically looks like # cc: Sun C 5.12 Linux_i386 2011/11/16 + # or + # cc: Studio 12.5 Sun C 5.14 SunOS_sparc 2016/05/31 COMPILER_VERSION_OUTPUT=`$COMPILER -V 2>&1` # Check that this is likely to be the Solaris Studio cc. - $ECHO "$COMPILER_VERSION_OUTPUT" | $GREP "^.*: Sun $COMPILER_NAME" > /dev/null + $ECHO "$COMPILER_VERSION_OUTPUT" | $GREP "^.* Sun $COMPILER_NAME" > /dev/null if test $? -ne 0; then ALT_VERSION_OUTPUT=`$COMPILER --version 2>&1` { $as_echo "$as_me:${as_lineno-$LINENO}: The $COMPILER_NAME compiler (located as $COMPILER) does not seem to be the required $TOOLCHAIN_TYPE compiler." >&5 @@ -35261,9 +35265,9 @@ fi # We only check CC_VERSION_NUMBER since we assume CXX_VERSION_NUMBER is equal. - if [[ "[$]CC_VERSION_NUMBER" =~ (.*\.){3} ]] ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: C compiler version number has more than three parts (X.Y.Z): $CC_VERSION_NUMBER. Comparisons might be wrong." >&5 -$as_echo "$as_me: WARNING: C compiler version number has more than three parts (X.Y.Z): $CC_VERSION_NUMBER. Comparisons might be wrong." >&2;} + if [[ "[$]CC_VERSION_NUMBER" =~ (.*\.){4} ]] ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: C compiler version number has more than four parts (W.X.Y.Z): $CC_VERSION_NUMBER. Comparisons might be wrong." >&5 +$as_echo "$as_me: WARNING: C compiler version number has more than four parts (W.X.Y.Z): $CC_VERSION_NUMBER. Comparisons might be wrong." >&2;} fi if [[ "[$]CC_VERSION_NUMBER" =~ [0-9]{6} ]] ; then @@ -35271,7 +35275,7 @@ $as_echo "$as_me: WARNING: C compiler version number has a part larger than 99999: $CC_VERSION_NUMBER. Comparisons might be wrong." >&2;} fi - COMPARABLE_ACTUAL_VERSION=`$AWK -F. '{ printf("%05d%05d%05d\n", $1, $2, $3) }' <<< "$CC_VERSION_NUMBER"` + COMPARABLE_ACTUAL_VERSION=`$AWK -F. '{ printf("%05d%05d%05d%05d\n", $1, $2, $3, $4) }' <<< "$CC_VERSION_NUMBER"` if test "x$TOOLCHAIN_MINIMUM_VERSION" != x; then @@ -35329,8 +35333,8 @@ # Need to assign to a variable since m4 is blocked from modifying parts in []. REFERENCE_VERSION=$TOOLCHAIN_MINIMUM_VERSION - if [[ "$REFERENCE_VERSION" =~ (.*\.){3} ]] ; then - as_fn_error $? "Internal error: Cannot compare to $TOOLCHAIN_MINIMUM_VERSION, only three parts (X.Y.Z) is supported" "$LINENO" 5 + if [[ "$REFERENCE_VERSION" =~ (.*\.){4} ]] ; then + as_fn_error $? "Internal error: Cannot compare to $TOOLCHAIN_MINIMUM_VERSION, only four parts (W.X.Y.Z) is supported" "$LINENO" 5 fi if [[ "$REFERENCE_VERSION" =~ [0-9]{6} ]] ; then @@ -35338,7 +35342,7 @@ fi # Version comparison method inspired by http://stackoverflow.com/a/24067243 - COMPARABLE_REFERENCE_VERSION=`$AWK -F. '{ printf("%05d%05d%05d\n", $1, $2, $3) }' <<< "$REFERENCE_VERSION"` + COMPARABLE_REFERENCE_VERSION=`$AWK -F. '{ printf("%05d%05d%05d%05d\n", $1, $2, $3, $4) }' <<< "$REFERENCE_VERSION"` if test $COMPARABLE_ACTUAL_VERSION -ge $COMPARABLE_REFERENCE_VERSION ; then : @@ -46956,9 +46960,11 @@ if test "x$TOOLCHAIN_TYPE" = xsolstudio; then # cc -V output typically looks like # cc: Sun C 5.12 Linux_i386 2011/11/16 + # or + # cc: Studio 12.5 Sun C 5.14 SunOS_sparc 2016/05/31 COMPILER_VERSION_OUTPUT=`$COMPILER -V 2>&1` # Check that this is likely to be the Solaris Studio cc. - $ECHO "$COMPILER_VERSION_OUTPUT" | $GREP "^.*: Sun $COMPILER_NAME" > /dev/null + $ECHO "$COMPILER_VERSION_OUTPUT" | $GREP "^.* Sun $COMPILER_NAME" > /dev/null if test $? -ne 0; then ALT_VERSION_OUTPUT=`$COMPILER --version 2>&1` { $as_echo "$as_me:${as_lineno-$LINENO}: The $COMPILER_NAME compiler (located as $COMPILER) does not seem to be the required $TOOLCHAIN_TYPE compiler." >&5 @@ -47076,9 +47082,11 @@ if test "x$TOOLCHAIN_TYPE" = xsolstudio; then # cc -V output typically looks like # cc: Sun C 5.12 Linux_i386 2011/11/16 + # or + # cc: Studio 12.5 Sun C 5.14 SunOS_sparc 2016/05/31 COMPILER_VERSION_OUTPUT=`$COMPILER -V 2>&1` # Check that this is likely to be the Solaris Studio cc. - $ECHO "$COMPILER_VERSION_OUTPUT" | $GREP "^.*: Sun $COMPILER_NAME" > /dev/null + $ECHO "$COMPILER_VERSION_OUTPUT" | $GREP "^.* Sun $COMPILER_NAME" > /dev/null if test $? -ne 0; then ALT_VERSION_OUTPUT=`$COMPILER --version 2>&1` { $as_echo "$as_me:${as_lineno-$LINENO}: The $COMPILER_NAME compiler (located as $COMPILER) does not seem to be the required $TOOLCHAIN_TYPE compiler." >&5 @@ -47198,9 +47206,9 @@ fi # We only check CC_VERSION_NUMBER since we assume CXX_VERSION_NUMBER is equal. - if [[ "[$]BUILD_CC_VERSION_NUMBER" =~ (.*\.){3} ]] ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: C compiler version number has more than three parts (X.Y.Z): $BUILD_CC_VERSION_NUMBER. Comparisons might be wrong." >&5 -$as_echo "$as_me: WARNING: C compiler version number has more than three parts (X.Y.Z): $BUILD_CC_VERSION_NUMBER. Comparisons might be wrong." >&2;} + if [[ "[$]BUILD_CC_VERSION_NUMBER" =~ (.*\.){4} ]] ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: C compiler version number has more than four parts (W.X.Y.Z): $BUILD_CC_VERSION_NUMBER. Comparisons might be wrong." >&5 +$as_echo "$as_me: WARNING: C compiler version number has more than four parts (W.X.Y.Z): $BUILD_CC_VERSION_NUMBER. Comparisons might be wrong." >&2;} fi if [[ "[$]BUILD_CC_VERSION_NUMBER" =~ [0-9]{6} ]] ; then @@ -47208,7 +47216,7 @@ $as_echo "$as_me: WARNING: C compiler version number has a part larger than 99999: $BUILD_CC_VERSION_NUMBER. Comparisons might be wrong." >&2;} fi - OPENJDK_BUILD_COMPARABLE_ACTUAL_VERSION=`$AWK -F. '{ printf("%05d%05d%05d\n", $1, $2, $3) }' <<< "$BUILD_CC_VERSION_NUMBER"` + OPENJDK_BUILD_COMPARABLE_ACTUAL_VERSION=`$AWK -F. '{ printf("%05d%05d%05d%05d\n", $1, $2, $3, $4) }' <<< "$BUILD_CC_VERSION_NUMBER"` else # If we are not cross compiling, use the normal target compilers for @@ -47234,9 +47242,9 @@ fi # We only check CC_VERSION_NUMBER since we assume CXX_VERSION_NUMBER is equal. - if [[ "[$]CC_VERSION_NUMBER" =~ (.*\.){3} ]] ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: C compiler version number has more than three parts (X.Y.Z): $CC_VERSION_NUMBER. Comparisons might be wrong." >&5 -$as_echo "$as_me: WARNING: C compiler version number has more than three parts (X.Y.Z): $CC_VERSION_NUMBER. Comparisons might be wrong." >&2;} + if [[ "[$]CC_VERSION_NUMBER" =~ (.*\.){4} ]] ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: C compiler version number has more than four parts (W.X.Y.Z): $CC_VERSION_NUMBER. Comparisons might be wrong." >&5 +$as_echo "$as_me: WARNING: C compiler version number has more than four parts (W.X.Y.Z): $CC_VERSION_NUMBER. Comparisons might be wrong." >&2;} fi if [[ "[$]CC_VERSION_NUMBER" =~ [0-9]{6} ]] ; then @@ -47244,80 +47252,18 @@ $as_echo "$as_me: WARNING: C compiler version number has a part larger than 99999: $CC_VERSION_NUMBER. Comparisons might be wrong." >&2;} fi - OPENJDK_BUILD_COMPARABLE_ACTUAL_VERSION=`$AWK -F. '{ printf("%05d%05d%05d\n", $1, $2, $3) }' <<< "$CC_VERSION_NUMBER"` - - fi - - - - - - - - - - - - - if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then - # For hotspot, we need these in Windows mixed path, - # so rewrite them all. Need added .exe suffix. - HOTSPOT_CXX="$CXX.exe" - HOTSPOT_LD="$LD.exe" - HOTSPOT_MT="$MT.exe" - HOTSPOT_RC="$RC.exe" - - unix_path="$HOTSPOT_CXX" - if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then - windows_path=`$CYGPATH -m "$unix_path"` - HOTSPOT_CXX="$windows_path" - elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then - windows_path=`cmd //c echo $unix_path` - HOTSPOT_CXX="$windows_path" - fi - - - unix_path="$HOTSPOT_LD" - if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then - windows_path=`$CYGPATH -m "$unix_path"` - HOTSPOT_LD="$windows_path" - elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then - windows_path=`cmd //c echo $unix_path` - HOTSPOT_LD="$windows_path" - fi - - - unix_path="$HOTSPOT_MT" - if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then - windows_path=`$CYGPATH -m "$unix_path"` - HOTSPOT_MT="$windows_path" - elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then - windows_path=`cmd //c echo $unix_path` - HOTSPOT_MT="$windows_path" - fi - - - unix_path="$HOTSPOT_RC" - if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then - windows_path=`$CYGPATH -m "$unix_path"` - HOTSPOT_RC="$windows_path" - elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then - windows_path=`cmd //c echo $unix_path` - HOTSPOT_RC="$windows_path" - fi - - - - else - HOTSPOT_CXX="$CXX" - HOTSPOT_LD="$LD" - fi - - - - if test "x$TOOLCHAIN_TYPE" = xclang; then - USE_CLANG=true - fi + OPENJDK_BUILD_COMPARABLE_ACTUAL_VERSION=`$AWK -F. '{ printf("%05d%05d%05d%05d\n", $1, $2, $3, $4) }' <<< "$CC_VERSION_NUMBER"` + + fi + + + + + + + + + @@ -49914,8 +49860,8 @@ # Need to assign to a variable since m4 is blocked from modifying parts in []. REFERENCE_VERSION=6 - if [[ "$REFERENCE_VERSION" =~ (.*\.){3} ]] ; then - as_fn_error $? "Internal error: Cannot compare to 6, only three parts (X.Y.Z) is supported" "$LINENO" 5 + if [[ "$REFERENCE_VERSION" =~ (.*\.){4} ]] ; then + as_fn_error $? "Internal error: Cannot compare to 6, only four parts (W.X.Y.Z) is supported" "$LINENO" 5 fi if [[ "$REFERENCE_VERSION" =~ [0-9]{6} ]] ; then @@ -49923,7 +49869,7 @@ fi # Version comparison method inspired by http://stackoverflow.com/a/24067243 - COMPARABLE_REFERENCE_VERSION=`$AWK -F. '{ printf("%05d%05d%05d\n", $1, $2, $3) }' <<< "$REFERENCE_VERSION"` + COMPARABLE_REFERENCE_VERSION=`$AWK -F. '{ printf("%05d%05d%05d%05d\n", $1, $2, $3, $4) }' <<< "$REFERENCE_VERSION"` if test $COMPARABLE_ACTUAL_VERSION -ge $COMPARABLE_REFERENCE_VERSION ; then : @@ -50214,8 +50160,8 @@ # Need to assign to a variable since m4 is blocked from modifying parts in []. REFERENCE_VERSION=4.8 - if [[ "$REFERENCE_VERSION" =~ (.*\.){3} ]] ; then - as_fn_error $? "Internal error: Cannot compare to 4.8, only three parts (X.Y.Z) is supported" "$LINENO" 5 + if [[ "$REFERENCE_VERSION" =~ (.*\.){4} ]] ; then + as_fn_error $? "Internal error: Cannot compare to 4.8, only four parts (W.X.Y.Z) is supported" "$LINENO" 5 fi if [[ "$REFERENCE_VERSION" =~ [0-9]{6} ]] ; then @@ -50223,7 +50169,7 @@ fi # Version comparison method inspired by http://stackoverflow.com/a/24067243 - COMPARABLE_REFERENCE_VERSION=`$AWK -F. '{ printf("%05d%05d%05d\n", $1, $2, $3) }' <<< "$REFERENCE_VERSION"` + COMPARABLE_REFERENCE_VERSION=`$AWK -F. '{ printf("%05d%05d%05d%05d\n", $1, $2, $3, $4) }' <<< "$REFERENCE_VERSION"` if test $COMPARABLE_ACTUAL_VERSION -ge $COMPARABLE_REFERENCE_VERSION ; then : @@ -50737,8 +50683,8 @@ # Need to assign to a variable since m4 is blocked from modifying parts in []. REFERENCE_VERSION=6 - if [[ "$REFERENCE_VERSION" =~ (.*\.){3} ]] ; then - as_fn_error $? "Internal error: Cannot compare to 6, only three parts (X.Y.Z) is supported" "$LINENO" 5 + if [[ "$REFERENCE_VERSION" =~ (.*\.){4} ]] ; then + as_fn_error $? "Internal error: Cannot compare to 6, only four parts (W.X.Y.Z) is supported" "$LINENO" 5 fi if [[ "$REFERENCE_VERSION" =~ [0-9]{6} ]] ; then @@ -50746,7 +50692,7 @@ fi # Version comparison method inspired by http://stackoverflow.com/a/24067243 - COMPARABLE_REFERENCE_VERSION=`$AWK -F. '{ printf("%05d%05d%05d\n", $1, $2, $3) }' <<< "$REFERENCE_VERSION"` + COMPARABLE_REFERENCE_VERSION=`$AWK -F. '{ printf("%05d%05d%05d%05d\n", $1, $2, $3, $4) }' <<< "$REFERENCE_VERSION"` if test $OPENJDK_BUILD_COMPARABLE_ACTUAL_VERSION -ge $COMPARABLE_REFERENCE_VERSION ; then : @@ -51037,8 +50983,8 @@ # Need to assign to a variable since m4 is blocked from modifying parts in []. REFERENCE_VERSION=4.8 - if [[ "$REFERENCE_VERSION" =~ (.*\.){3} ]] ; then - as_fn_error $? "Internal error: Cannot compare to 4.8, only three parts (X.Y.Z) is supported" "$LINENO" 5 + if [[ "$REFERENCE_VERSION" =~ (.*\.){4} ]] ; then + as_fn_error $? "Internal error: Cannot compare to 4.8, only four parts (W.X.Y.Z) is supported" "$LINENO" 5 fi if [[ "$REFERENCE_VERSION" =~ [0-9]{6} ]] ; then @@ -51046,7 +50992,7 @@ fi # Version comparison method inspired by http://stackoverflow.com/a/24067243 - COMPARABLE_REFERENCE_VERSION=`$AWK -F. '{ printf("%05d%05d%05d\n", $1, $2, $3) }' <<< "$REFERENCE_VERSION"` + COMPARABLE_REFERENCE_VERSION=`$AWK -F. '{ printf("%05d%05d%05d%05d\n", $1, $2, $3, $4) }' <<< "$REFERENCE_VERSION"` if test $OPENJDK_BUILD_COMPARABLE_ACTUAL_VERSION -ge $COMPARABLE_REFERENCE_VERSION ; then : @@ -51917,8 +51863,8 @@ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if native warnings are errors" >&5 $as_echo_n "checking if native warnings are errors... " >&6; } if test "x$enable_warnings_as_errors" = "xyes"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes (explicitely set)" >&5 -$as_echo "yes (explicitely set)" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes (explicitly set)" >&5 +$as_echo "yes (explicitly set)" >&6; } WARNINGS_AS_ERRORS=true elif test "x$enable_warnings_as_errors" = "xno"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 @@ -52583,28 +52529,14 @@ COMPILE_WITH_DEBUG_SYMBOLS=true COPY_DEBUG_SYMBOLS=true ZIP_EXTERNAL_DEBUG_SYMBOLS=true - - # Hotspot legacy support, not relevant with COPY_DEBUG_SYMBOLS=true - DEBUG_BINARIES=false - STRIP_POLICY=min_strip - elif test "x$NATIVE_DEBUG_SYMBOLS" = xnone; then COMPILE_WITH_DEBUG_SYMBOLS=false COPY_DEBUG_SYMBOLS=false ZIP_EXTERNAL_DEBUG_SYMBOLS=false - - DEBUG_BINARIES=false - STRIP_POLICY=no_strip elif test "x$NATIVE_DEBUG_SYMBOLS" = xinternal; then COMPILE_WITH_DEBUG_SYMBOLS=true COPY_DEBUG_SYMBOLS=false ZIP_EXTERNAL_DEBUG_SYMBOLS=false - - # Hotspot legacy support, will turn on -g when COPY_DEBUG_SYMBOLS=false - DEBUG_BINARIES=true - STRIP_POLICY=no_strip - STRIP="" - elif test "x$NATIVE_DEBUG_SYMBOLS" = xexternal; then if test "x$OPENJDK_TARGET_OS" = xsolaris || test "x$OPENJDK_TARGET_OS" = xlinux; then @@ -52618,10 +52550,6 @@ COMPILE_WITH_DEBUG_SYMBOLS=true COPY_DEBUG_SYMBOLS=true ZIP_EXTERNAL_DEBUG_SYMBOLS=false - - # Hotspot legacy support, not relevant with COPY_DEBUG_SYMBOLS=true - DEBUG_BINARIES=false - STRIP_POLICY=min_strip else as_fn_error $? "Allowed native debug symbols are: none, internal, external, zipped" "$LINENO" 5 fi @@ -52670,10 +52598,6 @@ - # Legacy values - - - # Check whether --enable-native-coverage was given. if test "${enable_native_coverage+set}" = set; then : @@ -53195,7 +53119,7 @@ if test "x$with_msvcr_dll" != x; then - # If given explicitely by user, do not probe. If not present, fail directly. + # If given explicitly by user, do not probe. If not present, fail directly. DLL_NAME="$MSVCR_NAME" POSSIBLE_MSVC_DLL="$with_msvcr_dll" @@ -54544,7 +54468,7 @@ if test "x$MSVCP_NAME" != "x"; then if test "x$with_msvcp_dll" != x; then - # If given explicitely by user, do not probe. If not present, fail directly. + # If given explicitly by user, do not probe. If not present, fail directly. DLL_NAME="$MSVCP_NAME" POSSIBLE_MSVC_DLL="$with_msvcp_dll" @@ -55903,7 +55827,7 @@ if test "x${with_x}" != x && test "x${with_x}" != xyes; then # The user has specified a X11 base directory. Use it for includes and - # libraries, unless explicitely overridden. + # libraries, unless explicitly overridden. if test "x$x_includes" = xNONE; then x_includes="${with_x}/include" fi @@ -62715,6 +62639,11 @@ withval=$with_libffi_lib; fi + # Check whether --enable-libffi-bundling was given. +if test "${enable_libffi_bundling+set}" = set; then : + enableval=$enable_libffi_bundling; +fi + if test "x$NEEDS_LIB_FFI" = xfalse; then if (test "x${with_libffi}" != x && test "x${with_libffi}" != xno) || \ @@ -62733,6 +62662,7 @@ fi if test "x${with_libffi}" != x; then + LIBFFI_LIB_PATH="${with_libffi}/lib" LIBFFI_LIBS="-L${with_libffi}/lib -lffi" LIBFFI_CFLAGS="-I${with_libffi}/include" LIBFFI_FOUND=yes @@ -62742,6 +62672,7 @@ LIBFFI_FOUND=yes fi if test "x${with_libffi_lib}" != x; then + LIBFFI_LIB_PATH="${with_libffi_lib}" LIBFFI_LIBS="-L${with_libffi_lib} -lffi" LIBFFI_FOUND=yes fi @@ -62951,7 +62882,70 @@ as_fn_error $? "Found libffi but could not link and compile with it. $HELP_MSG" "$LINENO" 5 fi - fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libffi should be bundled" >&5 +$as_echo_n "checking if libffi should be bundled... " >&6; } + if test "x$enable_libffi_bundling" = "x"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + ENABLE_LIBFFI_BUNDLING=false + elif test "x$enable_libffi_bundling" = "xno"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, forced" >&5 +$as_echo "no, forced" >&6; } + ENABLE_LIBFFI_BUNDLING=false + elif test "x$enable_libffi_bundling" = "xyes"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes, forced" >&5 +$as_echo "yes, forced" >&6; } + ENABLE_LIBFFI_BUNDLING=true + else + as_fn_error $? "Invalid value for --enable-libffi-bundling" "$LINENO" 5 + fi + + # Find the libffi.so.X to bundle + if test "x${ENABLE_LIBFFI_BUNDLING}" = "xtrue"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libffi lib file location" >&5 +$as_echo_n "checking for libffi lib file location... " >&6; } + if test "x${LIBFFI_LIB_PATH}" != x; then + if test -e ${LIBFFI_LIB_PATH}/libffi.so.?; then + LIBFFI_LIB_FILE="${LIBFFI_LIB_PATH}/libffi.so.?" + else + as_fn_error $? "Could not locate libffi.so.? for bundling in ${LIBFFI_LIB_PATH}" "$LINENO" 5 + fi + else + # If we don't have an explicit path, look in a few obvious places + if test "x${OPENJDK_TARGET_CPU}" = "xx86"; then + if test -e ${SYSROOT}/usr/lib/libffi.so.? ; then + LIBFFI_LIB_FILE="${SYSROOT}/usr/lib/libffi.so.?" + elif test -e ${SYSROOT}/usr/lib/i386-linux-gnu/libffi.so.? ; then + LIBFFI_LIB_FILE="${SYSROOT}/usr/lib/i386-linux-gnu/libffi.so.?" + else + as_fn_error $? "Could not locate libffi.so.? for bundling" "$LINENO" 5 + fi + elif test "x${OPENJDK_TARGET_CPU}" = "xx86_64"; then + if test -e ${SYSROOT}/usr/lib64/libffi.so.? ; then + LIBFFI_LIB_FILE="${SYSROOT}/usr/lib64/libffi.so.?" + elif test -e ${SYSROOT}/usr/lib/x86_64-linux-gnu/libffi.so.? ; then + LIBFFI_LIB_FILE="${SYSROOT}/usr/lib/x86_64-linux-gnu/libffi.so.?" + else + as_fn_error $? "Could not locate libffi.so.? for bundling" "$LINENO" 5 + fi + else + # Fallback on the default /usr/lib dir + if test -e ${SYSROOT}/usr/lib/libffi.so.? ; then + LIBFFI_LIB_FILE="${SYSROOT}/usr/lib/libffi.so.?" + else + as_fn_error $? "Could not locate libffi.so.? for bundling" "$LINENO" 5 + fi + fi + fi + # Make sure the wildcard is evaluated + LIBFFI_LIB_FILE="$(ls ${LIBFFI_LIB_FILE})" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${LIBFFI_LIB_FILE}" >&5 +$as_echo "${LIBFFI_LIB_FILE}" >&6; } + fi + fi + + @@ -65525,6 +65519,13 @@ if test "x$CCACHE" != x; then if test "x$CCACHE" != x; then + if test "x$OPENJDK_BUILD_OS" = "xmacosx"; then + HAS_BAD_CCACHE=`$ECHO $CCACHE_VERSION | \ + $GREP -e '^1\.' -e '^2\.' -e '^3\.0\.' -e '^3\.1\.'` + if test "x$HAS_BAD_CCACHE" != "x"; then + as_fn_error $? "On macosx, ccache 3.2 or later is required, found $CCACHE_VERSION" "$LINENO" 5 + fi + fi if test "x$USE_PRECOMPILED_HEADER" = "x1"; then HAS_BAD_CCACHE=`$ECHO $CCACHE_VERSION | \ $GREP -e '^1.*' -e '^2.*' -e '^3\.0.*' -e '^3\.1\.[0123]$'`
--- a/common/autoconf/help.m4 Tue Dec 13 01:34:02 2016 +0000 +++ b/common/autoconf/help.m4 Mon Dec 12 20:54:41 2016 -0800 @@ -116,7 +116,7 @@ ffi) PKGHANDLER_COMMAND="sudo apt-get install libffi-dev" ;; x11) - PKGHANDLER_COMMAND="sudo apt-get install libX11-dev libxext-dev libxrender-dev libxtst-dev libxt-dev" ;; + PKGHANDLER_COMMAND="sudo apt-get install libx11-dev libxext-dev libxrender-dev libxtst-dev libxt-dev" ;; ccache) PKGHANDLER_COMMAND="sudo apt-get install ccache" ;; dtrace)
--- a/common/autoconf/jdk-options.m4 Tue Dec 13 01:34:02 2016 +0000 +++ b/common/autoconf/jdk-options.m4 Mon Dec 12 20:54:41 2016 -0800 @@ -163,9 +163,9 @@ AC_SUBST(CACERTS_FILE) # Enable or disable unlimited crypto - AC_ARG_ENABLE(unlimited-crypto, [AS_HELP_STRING([--enable-unlimited-crypto], - [Enable unlimited crypto policy @<:@disabled@:>@])],, - [enable_unlimited_crypto=no]) + AC_ARG_ENABLE(unlimited-crypto, [AS_HELP_STRING([--disable-unlimited-crypto], + [Disable unlimited crypto policy @<:@enabled@:>@])],, + [enable_unlimited_crypto=yes]) if test "x$enable_unlimited_crypto" = "xyes"; then UNLIMITED_CRYPTO=true else @@ -265,28 +265,14 @@ COMPILE_WITH_DEBUG_SYMBOLS=true COPY_DEBUG_SYMBOLS=true ZIP_EXTERNAL_DEBUG_SYMBOLS=true - - # Hotspot legacy support, not relevant with COPY_DEBUG_SYMBOLS=true - DEBUG_BINARIES=false - STRIP_POLICY=min_strip - elif test "x$NATIVE_DEBUG_SYMBOLS" = xnone; then COMPILE_WITH_DEBUG_SYMBOLS=false COPY_DEBUG_SYMBOLS=false ZIP_EXTERNAL_DEBUG_SYMBOLS=false - - DEBUG_BINARIES=false - STRIP_POLICY=no_strip elif test "x$NATIVE_DEBUG_SYMBOLS" = xinternal; then COMPILE_WITH_DEBUG_SYMBOLS=true COPY_DEBUG_SYMBOLS=false ZIP_EXTERNAL_DEBUG_SYMBOLS=false - - # Hotspot legacy support, will turn on -g when COPY_DEBUG_SYMBOLS=false - DEBUG_BINARIES=true - STRIP_POLICY=no_strip - STRIP="" - elif test "x$NATIVE_DEBUG_SYMBOLS" = xexternal; then if test "x$OPENJDK_TARGET_OS" = xsolaris || test "x$OPENJDK_TARGET_OS" = xlinux; then @@ -300,10 +286,6 @@ COMPILE_WITH_DEBUG_SYMBOLS=true COPY_DEBUG_SYMBOLS=true ZIP_EXTERNAL_DEBUG_SYMBOLS=false - - # Hotspot legacy support, not relevant with COPY_DEBUG_SYMBOLS=true - DEBUG_BINARIES=false - STRIP_POLICY=min_strip else AC_MSG_ERROR([Allowed native debug symbols are: none, internal, external, zipped]) fi @@ -321,10 +303,6 @@ AC_SUBST(COMPILE_WITH_DEBUG_SYMBOLS) AC_SUBST(COPY_DEBUG_SYMBOLS) AC_SUBST(ZIP_EXTERNAL_DEBUG_SYMBOLS) - - # Legacy values - AC_SUBST(DEBUG_BINARIES) - AC_SUBST(STRIP_POLICY) ]) ################################################################################
--- a/common/autoconf/jdk-version.m4 Tue Dec 13 01:34:02 2016 +0000 +++ b/common/autoconf/jdk-version.m4 Mon Dec 12 20:54:41 2016 -0800 @@ -110,7 +110,7 @@ AC_MSG_ERROR([Version string contains + but both 'BUILD' and 'OPT' are missing]) fi # Stop the version part process from setting default values. - # We still allow them to explicitely override though. + # We still allow them to explicitly override though. NO_DEFAULT_VERSION_PARTS=true else AC_MSG_ERROR([--with-version-string fails to parse as a valid version string: $with_version_string]) @@ -160,11 +160,10 @@ fi else if test "x$NO_DEFAULT_VERSION_PARTS" != xtrue; then - # Default is to calculate a string like this <timestamp>.<username>.<base dir name> - timestamp=`$DATE '+%Y-%m-%d-%H%M%S'` + # Default is to calculate a string like this 'adhoc.<username>.<base dir name>' # Outer [ ] to quote m4. [ basedirname=`$BASENAME "$TOPDIR" | $TR -d -c '[a-z][A-Z][0-9].-'` ] - VERSION_OPT="$timestamp.$USERNAME.$basedirname" + VERSION_OPT="adhoc.$USERNAME.$basedirname" fi fi
--- a/common/autoconf/lib-ffi.m4 Tue Dec 13 01:34:02 2016 +0000 +++ b/common/autoconf/lib-ffi.m4 Mon Dec 12 20:54:41 2016 -0800 @@ -35,6 +35,8 @@ [specify directory for the libffi include files])]) AC_ARG_WITH(libffi-lib, [AS_HELP_STRING([--with-libffi-lib], [specify directory for the libffi library])]) + AC_ARG_ENABLE(libffi-bundling, [AS_HELP_STRING([--enable-libffi-bundling], + [enable bundling of libffi.so to make the built JDK runnable on more systems])]) if test "x$NEEDS_LIB_FFI" = xfalse; then if (test "x${with_libffi}" != x && test "x${with_libffi}" != xno) || \ @@ -52,6 +54,7 @@ fi if test "x${with_libffi}" != x; then + LIBFFI_LIB_PATH="${with_libffi}/lib" LIBFFI_LIBS="-L${with_libffi}/lib -lffi" LIBFFI_CFLAGS="-I${with_libffi}/include" LIBFFI_FOUND=yes @@ -61,6 +64,7 @@ LIBFFI_FOUND=yes fi if test "x${with_libffi_lib}" != x; then + LIBFFI_LIB_PATH="${with_libffi_lib}" LIBFFI_LIBS="-L${with_libffi_lib} -lffi" LIBFFI_FOUND=yes fi @@ -109,8 +113,65 @@ HELP_MSG_MISSING_DEPENDENCY([ffi]) AC_MSG_ERROR([Found libffi but could not link and compile with it. $HELP_MSG]) fi + + AC_MSG_CHECKING([if libffi should be bundled]) + if test "x$enable_libffi_bundling" = "x"; then + AC_MSG_RESULT([no]) + ENABLE_LIBFFI_BUNDLING=false + elif test "x$enable_libffi_bundling" = "xno"; then + AC_MSG_RESULT([no, forced]) + ENABLE_LIBFFI_BUNDLING=false + elif test "x$enable_libffi_bundling" = "xyes"; then + AC_MSG_RESULT([yes, forced]) + ENABLE_LIBFFI_BUNDLING=true + else + AC_MSG_ERROR([Invalid value for --enable-libffi-bundling]) + fi + + # Find the libffi.so.X to bundle + if test "x${ENABLE_LIBFFI_BUNDLING}" = "xtrue"; then + AC_MSG_CHECKING([for libffi lib file location]) + if test "x${LIBFFI_LIB_PATH}" != x; then + if test -e ${LIBFFI_LIB_PATH}/libffi.so.?; then + LIBFFI_LIB_FILE="${LIBFFI_LIB_PATH}/libffi.so.?" + else + AC_MSG_ERROR([Could not locate libffi.so.? for bundling in ${LIBFFI_LIB_PATH}]) + fi + else + # If we don't have an explicit path, look in a few obvious places + if test "x${OPENJDK_TARGET_CPU}" = "xx86"; then + if test -e ${SYSROOT}/usr/lib/libffi.so.? ; then + LIBFFI_LIB_FILE="${SYSROOT}/usr/lib/libffi.so.?" + elif test -e ${SYSROOT}/usr/lib/i386-linux-gnu/libffi.so.? ; then + LIBFFI_LIB_FILE="${SYSROOT}/usr/lib/i386-linux-gnu/libffi.so.?" + else + AC_MSG_ERROR([Could not locate libffi.so.? for bundling]) + fi + elif test "x${OPENJDK_TARGET_CPU}" = "xx86_64"; then + if test -e ${SYSROOT}/usr/lib64/libffi.so.? ; then + LIBFFI_LIB_FILE="${SYSROOT}/usr/lib64/libffi.so.?" + elif test -e ${SYSROOT}/usr/lib/x86_64-linux-gnu/libffi.so.? ; then + LIBFFI_LIB_FILE="${SYSROOT}/usr/lib/x86_64-linux-gnu/libffi.so.?" + else + AC_MSG_ERROR([Could not locate libffi.so.? for bundling]) + fi + else + # Fallback on the default /usr/lib dir + if test -e ${SYSROOT}/usr/lib/libffi.so.? ; then + LIBFFI_LIB_FILE="${SYSROOT}/usr/lib/libffi.so.?" + else + AC_MSG_ERROR([Could not locate libffi.so.? for bundling]) + fi + fi + fi + # Make sure the wildcard is evaluated + LIBFFI_LIB_FILE="$(ls ${LIBFFI_LIB_FILE})" + AC_MSG_RESULT([${LIBFFI_LIB_FILE}]) + fi fi AC_SUBST(LIBFFI_CFLAGS) AC_SUBST(LIBFFI_LIBS) + AC_SUBST(ENABLE_LIBFFI_BUNDLING) + AC_SUBST(LIBFFI_LIB_FILE) ])
--- a/common/autoconf/lib-x11.m4 Tue Dec 13 01:34:02 2016 +0000 +++ b/common/autoconf/lib-x11.m4 Mon Dec 12 20:54:41 2016 -0800 @@ -42,7 +42,7 @@ if test "x${with_x}" != x && test "x${with_x}" != xyes; then # The user has specified a X11 base directory. Use it for includes and - # libraries, unless explicitely overridden. + # libraries, unless explicitly overridden. if test "x$x_includes" = xNONE; then x_includes="${with_x}/include" fi
--- a/common/autoconf/platform.m4 Tue Dec 13 01:34:02 2016 +0000 +++ b/common/autoconf/platform.m4 Mon Dec 12 20:54:41 2016 -0800 @@ -162,7 +162,7 @@ # Convert the autoconf OS/CPU value to our own data, into the VAR_OS/CPU variables. PLATFORM_EXTRACT_VARS_FROM_OS($build_os) PLATFORM_EXTRACT_VARS_FROM_CPU($build_cpu) - # ..and setup our own variables. (Do this explicitely to facilitate searching) + # ..and setup our own variables. (Do this explicitly to facilitate searching) OPENJDK_BUILD_OS="$VAR_OS" if test "x$VAR_OS_TYPE" != x; then OPENJDK_BUILD_OS_TYPE="$VAR_OS_TYPE" @@ -192,7 +192,7 @@ # Convert the autoconf OS/CPU value to our own data, into the VAR_OS/CPU variables. PLATFORM_EXTRACT_VARS_FROM_OS($host_os) PLATFORM_EXTRACT_VARS_FROM_CPU($host_cpu) - # ... and setup our own variables. (Do this explicitely to facilitate searching) + # ... and setup our own variables. (Do this explicitly to facilitate searching) OPENJDK_TARGET_OS="$VAR_OS" if test "x$VAR_OS_TYPE" != x; then OPENJDK_TARGET_OS_TYPE="$VAR_OS_TYPE"
--- a/common/autoconf/source-dirs.m4 Tue Dec 13 01:34:02 2016 +0000 +++ b/common/autoconf/source-dirs.m4 Mon Dec 12 20:54:41 2016 -0800 @@ -126,6 +126,12 @@ if test -d "$IMPORT_MODULES_TOPDIR/modules_src"; then IMPORT_MODULES_SRC="$IMPORT_MODULES_TOPDIR/modules_src" fi + # Workaround for using different imported module-info.java in Jake due to a + # change in format. Remove once new format is standard in JDK 9 and javafx + # delivers just that. + if test -d "$IMPORT_MODULES_TOPDIR/modules_src_jake"; then + IMPORT_MODULES_SRC="$IMPORT_MODULES_TOPDIR/modules_src_jake $IMPORT_MODULES_SRC" + fi if test -d "$IMPORT_MODULES_TOPDIR/make"; then IMPORT_MODULES_MAKE="$IMPORT_MODULES_TOPDIR/make" fi
--- a/common/autoconf/spec.gmk.in Tue Dec 13 01:34:02 2016 +0000 +++ b/common/autoconf/spec.gmk.in Mon Dec 12 20:54:41 2016 -0800 @@ -319,6 +319,8 @@ ALSA_CFLAGS:=@ALSA_CFLAGS@ LIBFFI_LIBS:=@LIBFFI_LIBS@ LIBFFI_CFLAGS:=@LIBFFI_CFLAGS@ +ENABLE_LIBFFI_BUNDLING:=@ENABLE_LIBFFI_BUNDLING@ +LIBFFI_LIB_FILE:=@LIBFFI_LIB_FILE@ PACKAGE_PATH=@PACKAGE_PATH@
--- a/common/autoconf/toolchain.m4 Tue Dec 13 01:34:02 2016 +0000 +++ b/common/autoconf/toolchain.m4 Mon Dec 12 20:54:41 2016 -0800 @@ -53,7 +53,7 @@ # Minimum supported versions, empty means unspecified TOOLCHAIN_MINIMUM_VERSION_clang="3.2" TOOLCHAIN_MINIMUM_VERSION_gcc="4.3" -TOOLCHAIN_MINIMUM_VERSION_microsoft="" +TOOLCHAIN_MINIMUM_VERSION_microsoft="16.00.30319.01" # VS2010 TOOLCHAIN_MINIMUM_VERSION_solstudio="5.13" TOOLCHAIN_MINIMUM_VERSION_xlc="" @@ -69,15 +69,15 @@ fi # We only check CC_VERSION_NUMBER since we assume CXX_VERSION_NUMBER is equal. - if [ [[ "[$]$1CC_VERSION_NUMBER" =~ (.*\.){3} ]] ]; then - AC_MSG_WARN([C compiler version number has more than three parts (X.Y.Z): [$]$1CC_VERSION_NUMBER. Comparisons might be wrong.]) + if [ [[ "[$]$1CC_VERSION_NUMBER" =~ (.*\.){4} ]] ]; then + AC_MSG_WARN([C compiler version number has more than four parts (W.X.Y.Z): [$]$1CC_VERSION_NUMBER. Comparisons might be wrong.]) fi if [ [[ "[$]$1CC_VERSION_NUMBER" =~ [0-9]{6} ]] ]; then AC_MSG_WARN([C compiler version number has a part larger than 99999: [$]$1CC_VERSION_NUMBER. Comparisons might be wrong.]) fi - $2COMPARABLE_ACTUAL_VERSION=`$AWK -F. '{ printf("%05d%05d%05d\n", [$]1, [$]2, [$]3) }' <<< "[$]$1CC_VERSION_NUMBER"` + $2COMPARABLE_ACTUAL_VERSION=`$AWK -F. '{ printf("%05d%05d%05d%05d\n", [$]1, [$]2, [$]3, [$]4) }' <<< "[$]$1CC_VERSION_NUMBER"` ]) # Check if the configured compiler (C and C++) is of a specific version or @@ -94,8 +94,8 @@ # Need to assign to a variable since m4 is blocked from modifying parts in []. REFERENCE_VERSION=ARG_VERSION - if [ [[ "$REFERENCE_VERSION" =~ (.*\.){3} ]] ]; then - AC_MSG_ERROR([Internal error: Cannot compare to ARG_VERSION, only three parts (X.Y.Z) is supported]) + if [ [[ "$REFERENCE_VERSION" =~ (.*\.){4} ]] ]; then + AC_MSG_ERROR([Internal error: Cannot compare to ARG_VERSION, only four parts (W.X.Y.Z) is supported]) fi if [ [[ "$REFERENCE_VERSION" =~ [0-9]{6} ]] ]; then @@ -103,7 +103,7 @@ fi # Version comparison method inspired by http://stackoverflow.com/a/24067243 - COMPARABLE_REFERENCE_VERSION=`$AWK -F. '{ printf("%05d%05d%05d\n", [$]1, [$]2, [$]3) }' <<< "$REFERENCE_VERSION"` + COMPARABLE_REFERENCE_VERSION=`$AWK -F. '{ printf("%05d%05d%05d%05d\n", [$]1, [$]2, [$]3, [$]4) }' <<< "$REFERENCE_VERSION"` if test [$]ARG_PREFIX[COMPARABLE_ACTUAL_VERSION] -ge $COMPARABLE_REFERENCE_VERSION ; then : @@ -333,9 +333,11 @@ if test "x$TOOLCHAIN_TYPE" = xsolstudio; then # cc -V output typically looks like # cc: Sun C 5.12 Linux_i386 2011/11/16 + # or + # cc: Studio 12.5 Sun C 5.14 SunOS_sparc 2016/05/31 COMPILER_VERSION_OUTPUT=`$COMPILER -V 2>&1` # Check that this is likely to be the Solaris Studio cc. - $ECHO "$COMPILER_VERSION_OUTPUT" | $GREP "^.*: Sun $COMPILER_NAME" > /dev/null + $ECHO "$COMPILER_VERSION_OUTPUT" | $GREP "^.* Sun $COMPILER_NAME" > /dev/null if test $? -ne 0; then ALT_VERSION_OUTPUT=`$COMPILER --version 2>&1` AC_MSG_NOTICE([The $COMPILER_NAME compiler (located as $COMPILER) does not seem to be the required $TOOLCHAIN_TYPE compiler.]) @@ -827,7 +829,7 @@ BUILD_SYSROOT_CFLAGS="$SYSROOT_CFLAGS" BUILD_SYSROOT_LDFLAGS="$SYSROOT_LDFLAGS" BUILD_AR="$AR" - + TOOLCHAIN_PREPARE_FOR_VERSION_COMPARISONS([], [OPENJDK_BUILD_]) fi @@ -842,36 +844,6 @@ AC_SUBST(BUILD_AR) ]) -# Setup legacy variables that are still needed as alternative ways to refer to -# parts of the toolchain. -AC_DEFUN_ONCE([TOOLCHAIN_SETUP_LEGACY], -[ - if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then - # For hotspot, we need these in Windows mixed path, - # so rewrite them all. Need added .exe suffix. - HOTSPOT_CXX="$CXX.exe" - HOTSPOT_LD="$LD.exe" - HOTSPOT_MT="$MT.exe" - HOTSPOT_RC="$RC.exe" - BASIC_WINDOWS_REWRITE_AS_WINDOWS_MIXED_PATH(HOTSPOT_CXX) - BASIC_WINDOWS_REWRITE_AS_WINDOWS_MIXED_PATH(HOTSPOT_LD) - BASIC_WINDOWS_REWRITE_AS_WINDOWS_MIXED_PATH(HOTSPOT_MT) - BASIC_WINDOWS_REWRITE_AS_WINDOWS_MIXED_PATH(HOTSPOT_RC) - AC_SUBST(HOTSPOT_MT) - AC_SUBST(HOTSPOT_RC) - else - HOTSPOT_CXX="$CXX" - HOTSPOT_LD="$LD" - fi - AC_SUBST(HOTSPOT_CXX) - AC_SUBST(HOTSPOT_LD) - - if test "x$TOOLCHAIN_TYPE" = xclang; then - USE_CLANG=true - fi - AC_SUBST(USE_CLANG) -]) - # Do some additional checks on the detected tools. AC_DEFUN_ONCE([TOOLCHAIN_MISC_CHECKS], [
--- a/common/autoconf/toolchain_windows.m4 Tue Dec 13 01:34:02 2016 +0000 +++ b/common/autoconf/toolchain_windows.m4 Mon Dec 12 20:54:41 2016 -0800 @@ -566,7 +566,7 @@ [path to microsoft C runtime dll (msvcr*.dll) (Windows only) @<:@probed@:>@])]) if test "x$with_msvcr_dll" != x; then - # If given explicitely by user, do not probe. If not present, fail directly. + # If given explicitly by user, do not probe. If not present, fail directly. TOOLCHAIN_CHECK_POSSIBLE_MSVC_DLL($MSVCR_NAME, [$with_msvcr_dll], [--with-msvcr-dll]) if test "x$MSVC_DLL" = x; then AC_MSG_ERROR([Could not find a proper $MSVCR_NAME as specified by --with-msvcr-dll]) @@ -589,7 +589,7 @@ if test "x$MSVCP_NAME" != "x"; then if test "x$with_msvcp_dll" != x; then - # If given explicitely by user, do not probe. If not present, fail directly. + # If given explicitly by user, do not probe. If not present, fail directly. TOOLCHAIN_CHECK_POSSIBLE_MSVC_DLL($MSVCP_NAME, [$with_msvcp_dll], [--with-msvcp-dll]) if test "x$MSVC_DLL" = x; then AC_MSG_ERROR([Could not find a proper $MSVCP_NAME as specified by --with-msvcp-dll])
--- a/common/bin/compare.sh Tue Dec 13 01:34:02 2016 +0000 +++ b/common/bin/compare.sh Mon Dec 12 20:54:41 2016 -0800 @@ -1295,8 +1295,8 @@ OTHER_JDK="$OTHER/images/jdk" OTHER_JRE="$OTHER/images/jre" echo "Selecting jdk images for compare" - elif [ -d "$(ls -d $THIS/licensee-src/build/*/images/jdk)" ] \ - && [ -d "$(ls -d $OTHER/licensee-src/build/*/images/jdk)" ] + elif [ -d "$(ls -d $THIS/licensee-src/build/*/images/jdk 2> /dev/null)" ] \ + && [ -d "$(ls -d $OTHER/licensee-src/build/*/images/jdk 2> /dev/null)" ] then echo "Selecting licensee images for compare" # Simply override the THIS and OTHER dir with the build dir from
--- a/common/conf/jib-profiles.js Tue Dec 13 01:34:02 2016 +0000 +++ b/common/conf/jib-profiles.js Mon Dec 12 20:54:41 2016 -0800 @@ -346,6 +346,35 @@ // Generate debug profiles for the open jprt profiles profiles = concatObjects(profiles, generateDebugProfiles(common, openOnlyProfiles)); + // Profiles for building the zero jvm variant. These are used for verification + // in JPRT. + var zeroProfiles = { + "linux-x64-zero": { + target_os: "linux", + target_cpu: "x64", + dependencies: concat(common.dependencies, "devkit"), + configure_args: concat(common.configure_args, + "--with-zlib=system", + "--with-jvm-variants=zero", + "--enable-libffi-bundling"), + default_make_targets: common.default_make_targets + }, + + "linux-x86-zero": { + target_os: "linux", + target_cpu: "x86", + build_cpu: "x64", + dependencies: concat(common.dependencies, "devkit"), + configure_args: concat(common.configure_args, common.configure_args_32bit, + "--with-zlib=system", + "--with-jvm-variants=zero", + "--enable-libffi-bundling"), + default_make_targets: common.default_make_targets + }, + } + profiles = concatObjects(profiles, zeroProfiles); + profiles = concatObjects(profiles, generateDebugProfiles(common, zeroProfiles)); + // Profiles used to run tests. Used in JPRT. var testOnlyProfiles = { @@ -380,7 +409,7 @@ + (input.build_cpu == "x86" ? "i586" : input.build_cpu); var devkit_platform_revisions = { - linux_x64: "gcc4.9.2-OEL6.4+1.0", + linux_x64: "gcc4.9.2-OEL6.4+1.1", macosx_x64: "Xcode6.3-MacOSX10.9+1.0", solaris_x64: "SS12u4-Solaris11u1+1.0", solaris_sparcv9: "SS12u4-Solaris11u1+1.0", @@ -427,7 +456,7 @@ jtreg: { server: "javare", revision: "4.2", - build_number: "b03", + build_number: "b04", checksum_file: "MD5_VALUES", file: "jtreg_bin-4.2.zip", environment_name: "JT_HOME",
--- a/corba/.hgignore Tue Dec 13 01:34:02 2016 +0000 +++ b/corba/.hgignore Mon Dec 12 20:54:41 2016 -0800 @@ -2,5 +2,4 @@ ^dist/ ^webrev /nbproject/private/ -^.hgtip .DS_Store
--- a/corba/.hgtags Tue Dec 13 01:34:02 2016 +0000 +++ b/corba/.hgtags Mon Dec 12 20:54:41 2016 -0800 @@ -389,3 +389,5 @@ d4f1dae174098e799c48948e866054c52e11a186 jdk-9+144 a44b156ae7f06bf41b9bece30df7775e482395dd jdk-9+145 ecd74b41ab65bf228837b5bdf99690638d55425c jdk-9+146 +dc49e0922a8e4387cbf8670bbe1dc51c9874b74b jdk-9+147 +f95cc86b6ac22ec1ade5d4f825dc7782adeea228 jdk-9+148
--- a/corba/src/java.corba/share/classes/module-info.java Tue Dec 13 01:34:02 2016 +0000 +++ b/corba/src/java.corba/share/classes/module-info.java Mon Dec 12 20:54:41 2016 -0800 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -26,9 +26,10 @@ /** * Defines the Java binding of the OMG CORBA APIs, and the RMI-IIOP API. */ +@Deprecated(since="9", forRemoval=true) module java.corba { - requires public java.desktop; - requires public java.rmi; + requires transitive java.desktop; + requires transitive java.rmi; requires java.logging; requires java.naming; requires java.transaction; @@ -65,14 +66,13 @@ exports org.omg.PortableServer.portable; exports org.omg.SendingContext; exports org.omg.stub.java.rmi; - exports com.sun.corba.se.impl.util to - jdk.rmic; - exports com.sun.jndi.cosnaming to - java.naming; - exports com.sun.jndi.url.corbaname to - java.naming; - exports com.sun.jndi.url.iiop to - java.naming; - exports com.sun.jndi.url.iiopname to - java.naming; + + // rmic --iiop + exports com.sun.corba.se.impl.util to jdk.rmic; + + // JNDI CosNaming provider + opens com.sun.jndi.cosnaming to java.naming; // jndiprovider.properties + exports com.sun.jndi.url.corbaname to java.naming; + exports com.sun.jndi.url.iiop to java.naming; + exports com.sun.jndi.url.iiopname to java.naming; }
--- a/hotspot/.hgignore Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/.hgignore Mon Dec 12 20:54:41 2016 -0800 @@ -8,7 +8,6 @@ ^src/share/tools/IdealGraphVisualizer/dist/ ^src/share/tools/IdealGraphVisualizer/nbplatform/ .igv.log -^.hgtip .DS_Store ^\.mx.jvmci/env ^\.mx.jvmci/.*\.pyc
--- a/hotspot/.hgtags Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/.hgtags Mon Dec 12 20:54:41 2016 -0800 @@ -549,3 +549,5 @@ 6187b582d02aee38341dc8ce4011906e9b364e9f jdk-9+144 61e7ea56312351657e69198c503a6f7bf865af83 jdk-9+145 a82cb5350cad96a0b4de496afebe3ded89f27efa jdk-9+146 +132a72c782071cc11ab25cc7c9ee167c3632fea4 jdk-9+147 +5e4e893520ecdbd517c6ed6375f0885664fe62c4 jdk-9+148
--- a/hotspot/make/copy/Copy-java.base.gmk Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/make/copy/Copy-java.base.gmk Mon Dec 12 20:54:41 2016 -0800 @@ -65,3 +65,17 @@ #TARGETS += $(INCLUDE_DST_DIR)/$(JNI_MD_SUBDIR)/jni_md.h ################################################################################ +# Optionally copy libffi.so.? into the the image + +ifeq ($(ENABLE_LIBFFI_BUNDLING), true) + $(eval $(call SetupCopyFiles, COPY_LIBFFI, \ + FILES := $(LIBFFI_LIB_FILE), \ + DEST := $(call FindLibDirForModule, $(MODULE)), \ + FLATTEN := true, \ + MACRO := install-file-nolink, \ + )) + + TARGETS += $(COPY_LIBFFI) +endif + +################################################################################
--- a/hotspot/make/symbols/symbols-unix Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/make/symbols/symbols-unix Mon Dec 12 20:54:41 2016 -0800 @@ -190,8 +190,6 @@ JVM_AddModuleExportsToAllUnnamed JVM_AddModulePackage JVM_AddReadsModule -JVM_CanReadModule JVM_DefineModule -JVM_IsExportedToModule JVM_SetBootLoaderUnnamedModule JVM_GetModuleByPackageName
--- a/hotspot/make/test/JtregNative.gmk Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/make/test/JtregNative.gmk Mon Dec 12 20:54:41 2016 -0800 @@ -55,6 +55,9 @@ $(HOTSPOT_TOPDIR)/test/compiler/calls \ $(HOTSPOT_TOPDIR)/test/compiler/native \ $(HOTSPOT_TOPDIR)/test/serviceability/jvmti/GetNamedModule \ + $(HOTSPOT_TOPDIR)/test/serviceability/jvmti/AddModuleReads \ + $(HOTSPOT_TOPDIR)/test/serviceability/jvmti/AddModuleExportsAndOpens \ + $(HOTSPOT_TOPDIR)/test/serviceability/jvmti/AddModuleUsesAndProvides \ $(HOTSPOT_TOPDIR)/test/testlibrary/jvmti \ $(HOTSPOT_TOPDIR)/test/compiler/jvmci/jdk.vm.ci.code.test \ $(HOTSPOT_TOPDIR)/test/serviceability/jvmti/GetModulesInfo \ @@ -81,6 +84,9 @@ BUILD_HOTSPOT_JTREG_LIBRARIES_LIBS_liboverflow := -lc BUILD_HOTSPOT_JTREG_LIBRARIES_LIBS_libSimpleClassFileLoadHook := -lc BUILD_HOTSPOT_JTREG_LIBRARIES_LIBS_libGetNamedModuleTest := -lc + BUILD_HOTSPOT_JTREG_LIBRARIES_LDFLAGS_libAddModuleReadsTest := -lc + BUILD_HOTSPOT_JTREG_LIBRARIES_LDFLAGS_libAddModuleExportsAndOpensTest := -lc + BUILD_HOTSPOT_JTREG_LIBRARIES_LDFLAGS_libAddModuleUsesAndProvidesTest := -lc BUILD_HOTSPOT_JTREG_LIBRARIES_LIBS_libMAAClassFileLoadHook := -lc BUILD_HOTSPOT_JTREG_LIBRARIES_LIBS_libMAAClassLoadPrepare := -lc BUILD_HOTSPOT_JTREG_LIBRARIES_LIBS_libMAAThreadStart := -lc
--- a/hotspot/src/jdk.vm.ci/share/classes/module-info.java Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/src/jdk.vm.ci/share/classes/module-info.java Mon Dec 12 20:54:41 2016 -0800 @@ -30,9 +30,7 @@ uses jdk.vm.ci.hotspot.HotSpotJVMCIBackendFactory; provides jdk.vm.ci.hotspot.HotSpotJVMCIBackendFactory with - jdk.vm.ci.hotspot.aarch64.AArch64HotSpotJVMCIBackendFactory; - provides jdk.vm.ci.hotspot.HotSpotJVMCIBackendFactory with - jdk.vm.ci.hotspot.amd64.AMD64HotSpotJVMCIBackendFactory; - provides jdk.vm.ci.hotspot.HotSpotJVMCIBackendFactory with + jdk.vm.ci.hotspot.aarch64.AArch64HotSpotJVMCIBackendFactory, + jdk.vm.ci.hotspot.amd64.AMD64HotSpotJVMCIBackendFactory, jdk.vm.ci.hotspot.sparc.SPARCHotSpotJVMCIBackendFactory; }
--- a/hotspot/src/share/vm/classfile/moduleEntry.hpp Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/src/share/vm/classfile/moduleEntry.hpp Mon Dec 12 20:54:41 2016 -0800 @@ -36,6 +36,8 @@ #include "utilities/ostream.hpp" #define UNNAMED_MODULE "Unnamed Module" +#define JAVAPKG "java/" +#define JAVAPKG_LEN 5 class ModuleClosure;
--- a/hotspot/src/share/vm/classfile/modules.cpp Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/src/share/vm/classfile/modules.cpp Mon Dec 12 20:54:41 2016 -0800 @@ -34,6 +34,7 @@ #include "classfile/packageEntry.hpp" #include "classfile/stringTable.hpp" #include "classfile/symbolTable.hpp" +#include "classfile/systemDictionary.hpp" #include "classfile/vmSymbols.hpp" #include "logging/log.hpp" #include "memory/resourceArea.hpp" @@ -44,6 +45,7 @@ #include "runtime/handles.inline.hpp" #include "runtime/javaCalls.hpp" #include "runtime/reflection.hpp" +#include "utilities/stringUtils.hpp" #include "utilities/utf8.hpp" static bool verify_module_name(char *module_name) { @@ -290,6 +292,14 @@ const char* module_version = get_module_version(version); + oop loader = java_lang_reflect_Module::loader(module_handle()); + // Make sure loader is not the jdk.internal.reflect.DelegatingClassLoader. + if (loader != java_lang_ClassLoader::non_reflection_class_loader(loader)) { + THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(), + "Class loader is an invalid delegating class loader"); + } + Handle h_loader = Handle(THREAD, loader); + objArrayOop packages_oop = objArrayOop(JNIHandles::resolve(packages)); objArrayHandle packages_h(THREAD, packages_oop); int num_packages = (packages_h == NULL ? 0 : packages_h->length()); @@ -310,6 +320,21 @@ err_msg("Invalid package name: %s for module: %s", package_name, module_name)); } + + // Only modules defined to either the boot or platform class loader, can define a "java/" package. + if (!h_loader.is_null() && + !SystemDictionary::is_platform_class_loader(h_loader) && + strncmp(package_name, JAVAPKG, JAVAPKG_LEN) == 0) { + const char* class_loader_name = SystemDictionary::loader_name(h_loader()); + StringUtils::replace_no_expand(package_name, "/", "."); + const char* msg_text1 = "Class loader (instance of): "; + const char* msg_text2 = " tried to define prohibited package name: "; + size_t len = strlen(msg_text1) + strlen(class_loader_name) + strlen(msg_text2) + strlen(package_name) + 1; + char* message = NEW_RESOURCE_ARRAY_IN_THREAD(THREAD, char, len); + jio_snprintf(message, len, "%s%s%s%s", msg_text1, class_loader_name, msg_text2, package_name); + THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(), message); + } + Symbol* pkg_symbol = SymbolTable::new_symbol(package_name, CHECK); // append_if_missing() returns FALSE if entry already exists. if (!pkg_list->append_if_missing(pkg_symbol)) { @@ -319,20 +344,6 @@ } } - oop loader = java_lang_reflect_Module::loader(module_handle()); - // Make sure loader is not the sun.reflect.DelegatingClassLoader. - if (loader != java_lang_ClassLoader::non_reflection_class_loader(loader)) { - THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(), - "Class loader is an invalid delegating class loader"); - } - Handle h_loader = Handle(THREAD, loader); - - // Check that loader is a subclass of java.lang.ClassLoader. - if (loader != NULL && !java_lang_ClassLoader::is_subclass(h_loader->klass())) { - THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(), - "Class loader is not a subclass of java.lang.ClassLoader"); - } - ModuleEntryTable* module_table = get_module_entry_table(h_loader, CHECK); assert(module_table != NULL, "module entry table shouldn't be null"); @@ -595,122 +606,6 @@ } } -jboolean Modules::can_read_module(jobject asking_module, jobject target_module, TRAPS) { - if (asking_module == NULL) { - THROW_MSG_(vmSymbols::java_lang_NullPointerException(), - "asking_module is null", JNI_FALSE); - } - - ModuleEntry* asking_module_entry = get_module_entry(asking_module, CHECK_false); - if (asking_module_entry == NULL) { - THROW_MSG_(vmSymbols::java_lang_IllegalArgumentException(), - "asking_module is invalid", JNI_FALSE); - } - - // Calling can_read_all_unnamed() with NULL tests if a module is loose. - if (target_module == NULL) { - return asking_module_entry->can_read_all_unnamed(); - } - - ModuleEntry* target_module_entry = get_module_entry(target_module, CHECK_false); - if (target_module_entry == NULL) { - THROW_MSG_(vmSymbols::java_lang_IllegalArgumentException(), - "target_module is invalid", JNI_FALSE); - } - - ResourceMark rm(THREAD); - log_debug(modules)("can_read_module(): module %s trying to read module %s, allowed = %s", - asking_module_entry->is_named() ? - asking_module_entry->name()->as_C_string() : UNNAMED_MODULE, - target_module_entry->is_named() ? - target_module_entry->name()->as_C_string() : UNNAMED_MODULE, - BOOL_TO_STR(asking_module_entry == target_module_entry || - (asking_module_entry->can_read_all_unnamed() && - !target_module_entry->is_named()) || - asking_module_entry->can_read(target_module_entry))); - - // Return true if: - // 1. the modules are the same, or - // 2. the asking_module is unnamed (because unnamed modules read everybody), or - // 3. the asking_module is loose and the target module is unnamed, or - // 4. if can_read() returns true. - if (asking_module_entry == target_module_entry || - (asking_module_entry->can_read_all_unnamed() && !target_module_entry->is_named())) { - return true; - } - return asking_module_entry->can_read(target_module_entry); -} - -jboolean Modules::is_exported_to_module(jobject from_module, jstring package, - jobject to_module, TRAPS) { - if (package == NULL) { - THROW_MSG_(vmSymbols::java_lang_NullPointerException(), - "package is null", JNI_FALSE); - } - if (from_module == NULL) { - THROW_MSG_(vmSymbols::java_lang_NullPointerException(), - "from_module is null", JNI_FALSE); - } - ModuleEntry* from_module_entry = get_module_entry(from_module, CHECK_false); - if (from_module_entry == NULL) { - THROW_MSG_(vmSymbols::java_lang_IllegalArgumentException(), - "from_module is invalid", JNI_FALSE); - } - ModuleEntry* to_module_entry; - if (to_module == NULL) { - THROW_MSG_(vmSymbols::java_lang_NullPointerException(), - "to_module is null", JNI_FALSE); - } - to_module_entry = get_module_entry(to_module, CHECK_false); - if (to_module_entry == NULL) { - THROW_MSG_(vmSymbols::java_lang_IllegalArgumentException(), - "to_module is invalid", JNI_FALSE); - } - - PackageEntry *package_entry = get_package_entry(from_module_entry, package, - CHECK_false); - ResourceMark rm(THREAD); - if (package_entry == NULL) { - THROW_MSG_(vmSymbols::java_lang_IllegalArgumentException(), - err_msg("Package not found in from_module: %s", - from_module_entry->is_named() ? - from_module_entry->name()->as_C_string() : UNNAMED_MODULE), - JNI_FALSE); - } - if (package_entry->module() != from_module_entry) { - THROW_MSG_(vmSymbols::java_lang_IllegalArgumentException(), - err_msg("Package: %s found in module %s, not in from_module: %s", - package_entry->name()->as_C_string(), - package_entry->module()->is_named() ? - package_entry->module()->name()->as_C_string() : UNNAMED_MODULE, - from_module_entry->is_named() ? - from_module_entry->name()->as_C_string() : UNNAMED_MODULE), - JNI_FALSE); - } - - log_debug(modules)("is_exported_to_module: package %s from module %s checking" - " if exported to module %s, exported? = %s", - package_entry->name()->as_C_string(), - from_module_entry->is_named() ? - from_module_entry->name()->as_C_string() : UNNAMED_MODULE, - to_module_entry->is_named() ? - to_module_entry->name()->as_C_string() : UNNAMED_MODULE, - BOOL_TO_STR(!from_module_entry->is_named() || - package_entry->is_unqual_exported() || - from_module_entry == to_module_entry || - package_entry->is_qexported_to(to_module_entry))); - - // Return true if: - // 1. from_module is unnamed because unnamed modules export all their packages (by default), or - // 2. if the package is unqualifiedly exported, or - // 3. if the modules are the same, or - // 4. if the package is exported to to_module - return (!from_module_entry->is_named() || - package_entry->is_unqual_exported() || - from_module_entry == to_module_entry || - package_entry->is_qexported_to(to_module_entry)); -} - // This method is called by JFR and JNI. jobject Modules::get_module(jclass clazz, TRAPS) { assert(ModuleEntryTable::javabase_defined(), "Attempt to call get_module before java.base is defined"); @@ -860,11 +755,27 @@ err_msg("Invalid package name: %s", package_name)); } + ClassLoaderData *loader_data = module_entry->loader_data(); + + // Only modules defined to either the boot or platform class loader, can define a "java/" package. + if (!loader_data->is_the_null_class_loader_data() && + !loader_data->is_platform_class_loader_data() && + strncmp(package_name, JAVAPKG, JAVAPKG_LEN) == 0) { + const char* class_loader_name = SystemDictionary::loader_name(loader_data); + StringUtils::replace_no_expand(package_name, "/", "."); + const char* msg_text1 = "Class loader (instance of): "; + const char* msg_text2 = " tried to define prohibited package name: "; + size_t len = strlen(msg_text1) + strlen(class_loader_name) + strlen(msg_text2) + strlen(package_name) + 1; + char* message = NEW_RESOURCE_ARRAY_IN_THREAD(THREAD, char, len); + jio_snprintf(message, len, "%s%s%s%s", msg_text1, class_loader_name, msg_text2, package_name); + THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(), message); + } + log_debug(modules)("add_module_package(): Adding package %s to module %s", package_name, module_entry->name()->as_C_string()); TempNewSymbol pkg_symbol = SymbolTable::new_symbol(package_name, CHECK); - PackageEntryTable* package_table = module_entry->loader_data()->packages(); + PackageEntryTable* package_table = loader_data->packages(); assert(package_table != NULL, "Missing package_table"); bool pkg_exists = false;
--- a/hotspot/src/share/vm/classfile/modules.hpp Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/src/share/vm/classfile/modules.hpp Mon Dec 12 20:54:41 2016 -0800 @@ -93,24 +93,6 @@ // module does not exist. static void add_reads_module(jobject from_module, jobject to_module, TRAPS); - // can_read_module returns TRUE if module asking_module can read module target_module, - // or if they are the same module, or if the asking_module is loose and target_module - // is null. - // - // Throws IllegalArgumentException if: - // * either asking_module or target_module is not a java.lang.reflect.Module - static jboolean can_read_module(jobject asking_module, jobject target_module, TRAPS); - - // If package is valid then this returns TRUE if module from_module exports - // package to module to_module, if from_module and to_module are the same - // module, or if package is exported without qualification. - // - // IllegalArgumentException is throw if: - // * Either to_module or from_module does not exist - // * package is syntactically incorrect - // * package is not in from_module - static jboolean is_exported_to_module(jobject from_module, jstring package, jobject to_module, TRAPS); - // Return the java.lang.reflect.Module object for this class object. static jobject get_module(jclass clazz, TRAPS);
--- a/hotspot/src/share/vm/classfile/vmSymbols.hpp Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/src/share/vm/classfile/vmSymbols.hpp Mon Dec 12 20:54:41 2016 -0800 @@ -451,8 +451,6 @@ template(loader_name, "loader") \ template(module_name, "module") \ template(getModule_name, "getModule") \ - template(addReads_name, "addReads") \ - template(addReads_signature, "(Ljava/lang/reflect/Module;Ljava/lang/reflect/Module;)V") \ template(input_stream_void_signature, "(Ljava/io/InputStream;)V") \ template(definePackage_name, "definePackage") \ template(definePackage_signature, "(Ljava/lang/String;Ljava/lang/reflect/Module;)Ljava/lang/Package;") \ @@ -645,6 +643,15 @@ /* JVMTI/java.lang.instrument support and VM Attach mechanism */ \ template(jdk_internal_module_Modules, "jdk/internal/module/Modules") \ template(jdk_internal_vm_VMSupport, "jdk/internal/vm/VMSupport") \ + template(addReads_name, "addReads") \ + template(addReads_signature, "(Ljava/lang/reflect/Module;Ljava/lang/reflect/Module;)V") \ + template(addExports_name, "addExports") \ + template(addOpens_name, "addOpens") \ + template(addExports_signature, "(Ljava/lang/reflect/Module;Ljava/lang/String;Ljava/lang/reflect/Module;)V") \ + template(addUses_name, "addUses") \ + template(addUses_signature, "(Ljava/lang/reflect/Module;Ljava/lang/Class;)V") \ + template(addProvides_name, "addProvides") \ + template(addProvides_signature, "(Ljava/lang/reflect/Module;Ljava/lang/Class;Ljava/lang/Class;)V") \ template(transformedByAgent_name, "transformedByAgent") \ template(transformedByAgent_signature, "(Ljava/lang/reflect/Module;)V") \ template(appendToClassPathForInstrumentation_name, "appendToClassPathForInstrumentation") \
--- a/hotspot/src/share/vm/oops/instanceKlass.cpp Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/src/share/vm/oops/instanceKlass.cpp Mon Dec 12 20:54:41 2016 -0800 @@ -26,6 +26,7 @@ #include "classfile/classFileParser.hpp" #include "classfile/classFileStream.hpp" #include "classfile/javaClasses.hpp" +#include "classfile/moduleEntry.hpp" #include "classfile/systemDictionary.hpp" #include "classfile/systemDictionaryShared.hpp" #include "classfile/verifier.hpp" @@ -2383,18 +2384,17 @@ // Only boot and platform class loaders can define classes in "java/" packages. void InstanceKlass::check_prohibited_package(Symbol* class_name, - Handle class_loader, - TRAPS) { - const char* javapkg = "java/"; + Handle class_loader, + TRAPS) { ResourceMark rm(THREAD); if (!class_loader.is_null() && !SystemDictionary::is_platform_class_loader(class_loader) && class_name != NULL && - strncmp(class_name->as_C_string(), javapkg, strlen(javapkg)) == 0) { + strncmp(class_name->as_C_string(), JAVAPKG, JAVAPKG_LEN) == 0) { TempNewSymbol pkg_name = InstanceKlass::package_from_name(class_name, CHECK); assert(pkg_name != NULL, "Error in parsing package name starting with 'java/'"); char* name = pkg_name->as_C_string(); - const char* class_loader_name = InstanceKlass::cast(class_loader()->klass())->name()->as_C_string(); + const char* class_loader_name = SystemDictionary::loader_name(class_loader()); StringUtils::replace_no_expand(name, "/", "."); const char* msg_text1 = "Class loader (instance of): "; const char* msg_text2 = " tried to load prohibited package name: ";
--- a/hotspot/src/share/vm/prims/jni.cpp Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/src/share/vm/prims/jni.cpp Mon Dec 12 20:54:41 2016 -0800 @@ -3475,40 +3475,6 @@ JNI_END -JNI_ENTRY(void, jni_AddModuleReads(JNIEnv* env, jobject m1, jobject m2)) - JNIWrapper("AddModuleReads"); - if (m1 == NULL || m2 == NULL) { - THROW(vmSymbols::java_lang_NullPointerException()); - } - JavaValue result(T_VOID); - Handle m1_h(THREAD, JNIHandles::resolve(m1)); - if (!java_lang_reflect_Module::is_instance(m1_h())) { - THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(), "Bad m1 object"); - } - Handle m2_h(THREAD, JNIHandles::resolve(m2)); - if (!java_lang_reflect_Module::is_instance(m2_h())) { - THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(), "Bad m2 object"); - } - JavaCalls::call_static(&result, - KlassHandle(THREAD, SystemDictionary::module_Modules_klass()), - vmSymbols::addReads_name(), - vmSymbols::addReads_signature(), - m1_h, - m2_h, - THREAD); -JNI_END - - -JNI_ENTRY(jboolean, jni_CanReadModule(JNIEnv* env, jobject m1, jobject m2)) - JNIWrapper("CanReadModule"); - if (m1 == NULL || m2 == NULL) { - THROW_(vmSymbols::java_lang_NullPointerException(), JNI_FALSE); - } - jboolean res = Modules::can_read_module(m1, m2, CHECK_false); - return res; -JNI_END - - // Structure containing all jni functions struct JNINativeInterface_ jni_NativeInterface = { NULL, @@ -3792,9 +3758,7 @@ // Module features - jni_GetModule, - jni_AddModuleReads, - jni_CanReadModule + jni_GetModule };
--- a/hotspot/src/share/vm/prims/jni.h Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/src/share/vm/prims/jni.h Mon Dec 12 20:54:41 2016 -0800 @@ -770,12 +770,6 @@ jobject (JNICALL *GetModule) (JNIEnv* env, jclass clazz); - - void (JNICALL *AddModuleReads) - (JNIEnv* env, jobject m1, jobject m2); - - jboolean (JNICALL *CanReadModule) - (JNIEnv* env, jobject m1, jobject m2); }; /* @@ -1874,14 +1868,6 @@ return functions->GetModule(this, clazz); } - void AddModuleReads(jobject fromModule, jobject sourceModule) { - functions->AddModuleReads(this, fromModule, sourceModule); - } - - jboolean CanReadModule(jobject askingModule, jobject sourceModule) { - return functions->CanReadModule(this, askingModule, sourceModule); - } - #endif /* __cplusplus */ };
--- a/hotspot/src/share/vm/prims/jniCheck.cpp Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/src/share/vm/prims/jniCheck.cpp Mon Dec 12 20:54:41 2016 -0800 @@ -2001,37 +2001,6 @@ return result; JNI_END -JNI_ENTRY_CHECKED(void, - checked_jni_AddModuleReads(JNIEnv *env, - jobject fromModule, - jobject sourceModule)) - functionEnter(thr); - IN_VM( - jniCheck::validate_object(thr, fromModule); - if (sourceModule != NULL) { - jniCheck::validate_object(thr, sourceModule); - } - ) - UNCHECKED()->AddModuleReads(env,fromModule,sourceModule); - functionExit(thr); -JNI_END - -JNI_ENTRY_CHECKED(jboolean, - checked_jni_CanReadModule(JNIEnv *env, - jobject askingModule, - jobject sourceModule)) - functionEnter(thr); - IN_VM( - jniCheck::validate_object(thr, askingModule); - if (sourceModule != NULL) { - jniCheck::validate_object(thr, sourceModule); - } - ) - jboolean result = UNCHECKED()->CanReadModule(env,askingModule,sourceModule); - functionExit(thr); - return result; -JNI_END - /* * Structure containing all checked jni functions */ @@ -2317,9 +2286,7 @@ // Module Features - checked_jni_GetModule, - checked_jni_AddModuleReads, - checked_jni_CanReadModule + checked_jni_GetModule };
--- a/hotspot/src/share/vm/prims/jvm.cpp Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/src/share/vm/prims/jvm.cpp Mon Dec 12 20:54:41 2016 -0800 @@ -1008,8 +1008,8 @@ // Module support ////////////////////////////////////////////////////////////////////////////// -JVM_ENTRY(void, JVM_DefineModule(JNIEnv *env, jobject module, jstring version, jstring location, - jobjectArray packages)) +JVM_ENTRY(void, JVM_DefineModule(JNIEnv *env, jobject module, jboolean is_open, jstring version, + jstring location, jobjectArray packages)) JVMWrapper("JVM_DefineModule"); Modules::define_module(module, version, location, packages, CHECK); JVM_END @@ -1039,16 +1039,6 @@ Modules::add_reads_module(from_module, source_module, CHECK); JVM_END -JVM_ENTRY(jboolean, JVM_CanReadModule(JNIEnv *env, jobject asking_module, jobject source_module)) - JVMWrapper("JVM_CanReadModule"); - return Modules::can_read_module(asking_module, source_module, THREAD); -JVM_END - -JVM_ENTRY(jboolean, JVM_IsExportedToModule(JNIEnv *env, jobject from_module, jstring package, jobject to_module)) - JVMWrapper("JVM_IsExportedToModule"); - return Modules::is_exported_to_module(from_module, package, to_module, THREAD); -JVM_END - JVM_ENTRY (void, JVM_AddModulePackage(JNIEnv *env, jobject module, jstring package)) JVMWrapper("JVM_AddModulePackage"); Modules::add_module_package(module, package, CHECK);
--- a/hotspot/src/share/vm/prims/jvm.h Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/src/share/vm/prims/jvm.h Mon Dec 12 20:54:41 2016 -0800 @@ -413,8 +413,8 @@ */ JNIEXPORT void JNICALL -JVM_DefineModule(JNIEnv *env, jobject module, jstring version, jstring location, - jobjectArray packages); +JVM_DefineModule(JNIEnv *env, jobject module, jboolean is_open, jstring version, + jstring location, jobjectArray packages); JNIEXPORT void JNICALL JVM_SetBootLoaderUnnamedModule(JNIEnv *env, jobject module); @@ -431,12 +431,6 @@ JNIEXPORT void JNICALL JVM_AddReadsModule(JNIEnv *env, jobject from_module, jobject source_module); -JNIEXPORT jboolean JNICALL -JVM_CanReadModule(JNIEnv *env, jobject asking_module, jobject source_module); - -JNIEXPORT jboolean JNICALL -JVM_IsExportedToModule(JNIEnv *env, jobject from_module, jstring package, jobject to_module); - JNIEXPORT void JNICALL JVM_AddModulePackage(JNIEnv* env, jobject module, jstring package);
--- a/hotspot/src/share/vm/prims/jvmti.xml Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/src/share/vm/prims/jvmti.xml Mon Dec 12 20:54:41 2016 -0800 @@ -863,14 +863,12 @@ </intro> <intro id="bcimodules" label="Bytecode Instrumentation of code in modules"> - Agents that instrument code in named modules may need to arrange for those - modules to read other modules. If code is instrumented to invoke a method - in a support class in another module, then the module of the instrumented - code should read the module of the supporting class. Furthermore, the - supporting class will only be accessible to the instrumented code if - it is <code>public</code> and in a package that is exported by its module. - Agents can use the JNI functions <code>CanReadModule</code> and - <code>AddModuleReads</code> to test and update a module to read another. + Agents can use the functions <functionlink id="AddModuleReads"/>, + <functionlink id="AddModuleExports"/>, <functionlink id="AddModuleOpens"/>, + <functionlink id="AddModuleUses"/> and <functionlink id="AddModuleProvides"/> + to update a module to expand the set of modules that it reads, the set of + packages that it exports or opens to other modules, or the services that it + uses and provides. <p/> As an aid to agents that deploy supporting classes on the search path of the bootstrap class loader, or the search path of the class loader that @@ -6561,6 +6559,227 @@ </error> </errors> </function> + + <function id="AddModuleReads" num="94" since="9"> + <synopsis>Add Module Reads</synopsis> + <description> + Update a module to read another module. This function is a no-op + when <paramlink id="module"></paramlink> is an unnamed module. + This function facilitates the instrumentation of code + in named modules where that instrumentation requires + expanding the set of modules that a module reads. + </description> + <origin>new</origin> + <capabilities> + </capabilities> + <parameters> + <param id="module"> + <ptrtype><jobject/></ptrtype> + <description> + The module to update. + </description> + </param> + <param id="to_module"> + <ptrtype><jobject/></ptrtype> + <description> + The additional module to read. + </description> + </param> + </parameters> + <errors> + <error id="JVMTI_ERROR_INVALID_MODULE"> + If <paramlink id="module"></paramlink> is not a module object. + </error> + <error id="JVMTI_ERROR_INVALID_MODULE"> + If <paramlink id="to_module"></paramlink> is not a module object. + </error> + </errors> + </function> + + <function id="AddModuleExports" num="95" since="9"> + <synopsis>Add Module Exports</synopsis> + <description> + Update a module to export a package to another module. + This function is a no-op when <paramlink id="module"></paramlink> + is an unnamed module or an open module. + This function facilitates the instrumentation of code + in named modules where that instrumentation requires + expanding the set of packages that a module exports. + </description> + <origin>new</origin> + <capabilities> + </capabilities> + <parameters> + <param id="module"> + <ptrtype><jobject/></ptrtype> + <description> + The module to update. + </description> + </param> + <param id="pkg_name"> + <inbuf><char/></inbuf> + <description> + The exported package name. + </description> + </param> + <param id="to_module"> + <ptrtype><jobject/></ptrtype> + <description> + The module the package is exported to. + If the <code>to_module</code> is not a subclass of + <code>java.lang.reflect.Module</code> this function returns + <errorlink id="JVMTI_ERROR_INVALID_MODULE"></errorlink>. + </description> + </param> + </parameters> + <errors> + <error id="JVMTI_ERROR_INVALID_MODULE"> + If <paramlink id="module"></paramlink> is not a module object. + </error> + <error id="JVMTI_ERROR_INVALID_MODULE"> + If <paramlink id="to_modules"></paramlink> is not a module object. + </error> + <error id="JVMTI_ERROR_ILLEGAL_ARGUMENT"> + If the package <paramlink id="pkg_name"></paramlink> + does not belong to the module. + </error> + </errors> + </function> + + <function id="AddModuleOpens" num="96" since="9"> + <synopsis>Add Module Opens</synopsis> + <description> + Update a module to open a package to another module. + This function is a no-op when <paramlink id="module"></paramlink> + is an unnamed module or an open module. + This function facilitates the instrumentation of code + in modules where that instrumentation requires + expanding the set of packages that a module opens to + other modules. + </description> + <origin>new</origin> + <capabilities> + </capabilities> + <parameters> + <param id="module"> + <ptrtype><jobject/></ptrtype> + <description> + The module to update. + </description> + </param> + <param id="pkg_name"> + <inbuf><char/></inbuf> + <description> + The package name of the package to open. + </description> + </param> + <param id="to_module"> + <ptrtype><jobject/></ptrtype> + <description> + The module with the package to open. + If the <code>to_module</code> is not a subclass of + <code>java.lang.reflect.Module</code> this function returns + <errorlink id="JVMTI_ERROR_INVALID_MODULE"></errorlink>. + </description> + </param> + </parameters> + <errors> + <error id="JVMTI_ERROR_INVALID_MODULE"> + If <paramlink id="module"></paramlink> is not a module object. + </error> + <error id="JVMTI_ERROR_INVALID_MODULE"> + If <paramlink id="to_modules"></paramlink> is not a module object. + </error> + <error id="JVMTI_ERROR_ILLEGAL_ARGUMENT"> + If the package <paramlink id="pkg_name"></paramlink> + does not belong to the module. + </error> + </errors> + </function> + + <function id="AddModuleUses" num="97" since="9"> + <synopsis>Add Module Uses</synopsis> + <description> + Updates a module to add a service to the set of services that + a module uses. This function is a no-op when the module + is an unnamed module. + This function facilitates the instrumentation of code + in named modules where that instrumentation requires + expanding the set of services that a module is using. + </description> + <origin>new</origin> + <capabilities> + </capabilities> + <parameters> + <param id="module"> + <ptrtype><jobject/></ptrtype> + <description> + The module to update. + </description> + </param> + <param id="service"> + <ptrtype><jclass/></ptrtype> + <description> + The service to use. + </description> + </param> + </parameters> + <errors> + <error id="JVMTI_ERROR_INVALID_MODULE"> + If <paramlink id="module"></paramlink> is not a module object. + </error> + <error id="JVMTI_ERROR_INVALID_CLASS"> + If <paramlink id="service"></paramlink> is not a class object. + </error> + </errors> + </function> + + <function id="AddModuleProvides" num="98" since="9"> + <synopsis>Add Module Provides</synopsis> + <description> + Updates a module to add a service to the set of services that + a module provides. This function is a no-op when the module + is an unnamed module. + This function facilitates the instrumentation of code + in named modules where that instrumentation requires + changes to the services that are provided. + </description> + <origin>new</origin> + <capabilities> + </capabilities> + <parameters> + <param id="module"> + <ptrtype><jobject/></ptrtype> + <description> + The module to update. + </description> + </param> + <param id="service"> + <ptrtype><jclass/></ptrtype> + <description> + The service to provide. + </description> + </param> + <param id="impl_class"> + <ptrtype><jclass/></ptrtype> + <description> + The implementation class for the provided service. + </description> + </param> + </parameters> + <errors> + <error id="JVMTI_ERROR_INVALID_MODULE"> + If <paramlink id="module"></paramlink> is not a module object. + </error> + <error id="JVMTI_ERROR_INVALID_CLASS"> + If <paramlink id="service"></paramlink> is not a class object. + </error> + <error id="JVMTI_ERROR_INVALID_CLASS"> + If <paramlink id="impl_class"></paramlink> is not a class object. + </error> + </errors> + </function> + </category> <category id="class" label="Class"> @@ -11371,6 +11590,9 @@ <errorid id="JVMTI_ERROR_INVALID_FIELDID" num="25"> Invalid field. </errorid> + <errorid id="JVMTI_ERROR_INVALID_MODULE" num="26"> + Invalid module. + </errorid> <errorid id="JVMTI_ERROR_INVALID_METHODID" num="23"> Invalid method. </errorid> @@ -14492,17 +14714,17 @@ <change date="19 June 2013" version="1.2.3"> Added support for statically linked agents. </change> - <change date="5 July 2016" version="9.0.0"> + <change date="13 October 2016" version="9.0.0"> Support for modules: - The majorversion is 9 now - The ClassFileLoadHook events are not sent during the primordial phase anymore. - - Add new function GetAllModules - - Add new capability can_generate_early_vmstart - Allow CompiledMethodLoad events at start phase - - Add new capability can_generate_early_class_hook_events - - Add new function GetNamedModule - </change> - <change date="16 August 2016" version="9.0.0"> + - Add new capabilities: + - can_generate_early_vmstart + - can_generate_early_class_hook_events + - Add new functions: + - GetAllModules + - AddModuleReads, AddModuleExports, AddModuleOpens, AddModuleUses, AddModuleProvides Clarified can_redefine_any_classes, can_retransform_any_classes and IsModifiableClass API to disallow some implementation defined classes. </change>
--- a/hotspot/src/share/vm/prims/jvmtiEnv.cpp Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/src/share/vm/prims/jvmtiEnv.cpp Mon Dec 12 20:54:41 2016 -0800 @@ -227,6 +227,119 @@ } /* end GetNamedModule */ +// module - pre-checked for NULL +// to_module - pre-checked for NULL +jvmtiError +JvmtiEnv::AddModuleReads(jobject module, jobject to_module) { + JavaThread* THREAD = JavaThread::current(); + + // check module + Handle h_module(THREAD, JNIHandles::resolve(module)); + if (!java_lang_reflect_Module::is_instance(h_module())) { + return JVMTI_ERROR_INVALID_MODULE; + } + // check to_module + Handle h_to_module(THREAD, JNIHandles::resolve(to_module)); + if (!java_lang_reflect_Module::is_instance(h_to_module())) { + return JVMTI_ERROR_INVALID_MODULE; + } + return JvmtiExport::add_module_reads(h_module, h_to_module, THREAD); +} /* end AddModuleReads */ + + +// module - pre-checked for NULL +// pkg_name - pre-checked for NULL +// to_module - pre-checked for NULL +jvmtiError +JvmtiEnv::AddModuleExports(jobject module, const char* pkg_name, jobject to_module) { + JavaThread* THREAD = JavaThread::current(); + Handle h_pkg = java_lang_String::create_from_str(pkg_name, THREAD); + + // check module + Handle h_module(THREAD, JNIHandles::resolve(module)); + if (!java_lang_reflect_Module::is_instance(h_module())) { + return JVMTI_ERROR_INVALID_MODULE; + } + // check to_module + Handle h_to_module(THREAD, JNIHandles::resolve(to_module)); + if (!java_lang_reflect_Module::is_instance(h_to_module())) { + return JVMTI_ERROR_INVALID_MODULE; + } + return JvmtiExport::add_module_exports(h_module, h_pkg, h_to_module, THREAD); +} /* end AddModuleExports */ + + +// module - pre-checked for NULL +// pkg_name - pre-checked for NULL +// to_module - pre-checked for NULL +jvmtiError +JvmtiEnv::AddModuleOpens(jobject module, const char* pkg_name, jobject to_module) { + JavaThread* THREAD = JavaThread::current(); + Handle h_pkg = java_lang_String::create_from_str(pkg_name, THREAD); + + // check module + Handle h_module(THREAD, JNIHandles::resolve(module)); + if (!java_lang_reflect_Module::is_instance(h_module())) { + return JVMTI_ERROR_INVALID_MODULE; + } + // check to_module + Handle h_to_module(THREAD, JNIHandles::resolve(to_module)); + if (!java_lang_reflect_Module::is_instance(h_to_module())) { + return JVMTI_ERROR_INVALID_MODULE; + } + return JvmtiExport::add_module_opens(h_module, h_pkg, h_to_module, THREAD); +} /* end AddModuleOpens */ + + +// module - pre-checked for NULL +// service - pre-checked for NULL +jvmtiError +JvmtiEnv::AddModuleUses(jobject module, jclass service) { + JavaThread* THREAD = JavaThread::current(); + + // check module + Handle h_module(THREAD, JNIHandles::resolve(module)); + if (!java_lang_reflect_Module::is_instance(h_module())) { + return JVMTI_ERROR_INVALID_MODULE; + } + // check service + Handle h_service(THREAD, JNIHandles::resolve_external_guard(service)); + if (!java_lang_Class::is_instance(h_service()) || + java_lang_Class::is_primitive(h_service())) { + return JVMTI_ERROR_INVALID_CLASS; + } + return JvmtiExport::add_module_uses(h_module, h_service, THREAD); +} /* end AddModuleUses */ + + +// module - pre-checked for NULL +// service - pre-checked for NULL +// impl_class - pre-checked for NULL +jvmtiError +JvmtiEnv::AddModuleProvides(jobject module, jclass service, jclass impl_class) { + JavaThread* THREAD = JavaThread::current(); + + // check module + Handle h_module(THREAD, JNIHandles::resolve(module)); + if (!java_lang_reflect_Module::is_instance(h_module())) { + return JVMTI_ERROR_INVALID_MODULE; + } + // check service + Handle h_service(THREAD, JNIHandles::resolve_external_guard(service)); + if (!java_lang_Class::is_instance(h_service()) || + java_lang_Class::is_primitive(h_service())) { + return JVMTI_ERROR_INVALID_CLASS; + } + // check impl_class + Handle h_impl_class(THREAD, JNIHandles::resolve_external_guard(impl_class)); + if (!java_lang_Class::is_instance(h_impl_class()) || + java_lang_Class::is_primitive(h_impl_class())) { + return JVMTI_ERROR_INVALID_CLASS; + } + return JvmtiExport::add_module_provides(h_module, h_service, h_impl_class, THREAD); +} /* end AddModuleProvides */ + + // // Class functions //
--- a/hotspot/src/share/vm/prims/jvmtiExport.cpp Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/src/share/vm/prims/jvmtiExport.cpp Mon Dec 12 20:54:41 2016 -0800 @@ -434,6 +434,165 @@ } } +jvmtiError +JvmtiExport::add_module_reads(Handle module, Handle to_module, TRAPS) { + if (!Universe::is_module_initialized()) { + return JVMTI_ERROR_NONE; // extra safety + } + assert(!module.is_null(), "module should always be set"); + assert(!to_module.is_null(), "to_module should always be set"); + + // Invoke the addReads method + JavaValue result(T_VOID); + JavaCalls::call_static(&result, + SystemDictionary::module_Modules_klass(), + vmSymbols::addReads_name(), + vmSymbols::addReads_signature(), + module, + to_module, + THREAD); + + if (HAS_PENDING_EXCEPTION) { + LogTarget(Trace, jvmti) log; + LogStreamCHeap log_stream(log); + java_lang_Throwable::print(PENDING_EXCEPTION, &log_stream); + log_stream.cr(); + CLEAR_PENDING_EXCEPTION; + return JVMTI_ERROR_INTERNAL; + } + return JVMTI_ERROR_NONE; +} + +jvmtiError +JvmtiExport::add_module_exports(Handle module, Handle pkg_name, Handle to_module, TRAPS) { + if (!Universe::is_module_initialized()) { + return JVMTI_ERROR_NONE; // extra safety + } + assert(!module.is_null(), "module should always be set"); + assert(!to_module.is_null(), "to_module should always be set"); + assert(!pkg_name.is_null(), "pkg_name should always be set"); + + // Invoke the addExports method + JavaValue result(T_VOID); + JavaCalls::call_static(&result, + SystemDictionary::module_Modules_klass(), + vmSymbols::addExports_name(), + vmSymbols::addExports_signature(), + module, + pkg_name, + to_module, + THREAD); + + if (HAS_PENDING_EXCEPTION) { + Symbol* ex_name = PENDING_EXCEPTION->klass()->name(); + LogTarget(Trace, jvmti) log; + LogStreamCHeap log_stream(log); + java_lang_Throwable::print(PENDING_EXCEPTION, &log_stream); + log_stream.cr(); + CLEAR_PENDING_EXCEPTION; + if (ex_name == vmSymbols::java_lang_IllegalArgumentException()) { + return JVMTI_ERROR_ILLEGAL_ARGUMENT; + } + return JVMTI_ERROR_INTERNAL; + } + return JVMTI_ERROR_NONE; +} + +jvmtiError +JvmtiExport::add_module_opens(Handle module, Handle pkg_name, Handle to_module, TRAPS) { + if (!Universe::is_module_initialized()) { + return JVMTI_ERROR_NONE; // extra safety + } + assert(!module.is_null(), "module should always be set"); + assert(!to_module.is_null(), "to_module should always be set"); + assert(!pkg_name.is_null(), "pkg_name should always be set"); + + // Invoke the addOpens method + JavaValue result(T_VOID); + JavaCalls::call_static(&result, + SystemDictionary::module_Modules_klass(), + vmSymbols::addOpens_name(), + vmSymbols::addExports_signature(), + module, + pkg_name, + to_module, + THREAD); + + if (HAS_PENDING_EXCEPTION) { + Symbol* ex_name = PENDING_EXCEPTION->klass()->name(); + LogTarget(Trace, jvmti) log; + LogStreamCHeap log_stream(log); + java_lang_Throwable::print(PENDING_EXCEPTION, &log_stream); + log_stream.cr(); + CLEAR_PENDING_EXCEPTION; + if (ex_name == vmSymbols::java_lang_IllegalArgumentException()) { + return JVMTI_ERROR_ILLEGAL_ARGUMENT; + } + return JVMTI_ERROR_INTERNAL; + } + return JVMTI_ERROR_NONE; +} + +jvmtiError +JvmtiExport::add_module_uses(Handle module, Handle service, TRAPS) { + if (!Universe::is_module_initialized()) { + return JVMTI_ERROR_NONE; // extra safety + } + assert(!module.is_null(), "module should always be set"); + assert(!service.is_null(), "service should always be set"); + + // Invoke the addUses method + JavaValue result(T_VOID); + JavaCalls::call_static(&result, + SystemDictionary::module_Modules_klass(), + vmSymbols::addUses_name(), + vmSymbols::addUses_signature(), + module, + service, + THREAD); + + if (HAS_PENDING_EXCEPTION) { + LogTarget(Trace, jvmti) log; + LogStreamCHeap log_stream(log); + java_lang_Throwable::print(PENDING_EXCEPTION, &log_stream); + log_stream.cr(); + CLEAR_PENDING_EXCEPTION; + return JVMTI_ERROR_INTERNAL; + } + return JVMTI_ERROR_NONE; +} + +jvmtiError +JvmtiExport::add_module_provides(Handle module, Handle service, Handle impl_class, TRAPS) { + if (!Universe::is_module_initialized()) { + return JVMTI_ERROR_NONE; // extra safety + } + assert(!module.is_null(), "module should always be set"); + assert(!service.is_null(), "service should always be set"); + assert(!impl_class.is_null(), "impl_class should always be set"); + + // Invoke the addProvides method + JavaValue result(T_VOID); + JavaCalls::call_static(&result, + SystemDictionary::module_Modules_klass(), + vmSymbols::addProvides_name(), + vmSymbols::addProvides_signature(), + module, + service, + impl_class, + THREAD); + + if (HAS_PENDING_EXCEPTION) { + LogTarget(Trace, jvmti) log; + LogStreamCHeap log_stream(log); + java_lang_Throwable::print(PENDING_EXCEPTION, &log_stream); + log_stream.cr(); + CLEAR_PENDING_EXCEPTION; + return JVMTI_ERROR_INTERNAL; + } + return JVMTI_ERROR_NONE; +} + void JvmtiExport::decode_version_values(jint version, int * major, int * minor, int * micro) {
--- a/hotspot/src/share/vm/prims/jvmtiExport.hpp Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/src/share/vm/prims/jvmtiExport.hpp Mon Dec 12 20:54:41 2016 -0800 @@ -218,6 +218,21 @@ // Add read edges to the unnamed modules of the bootstrap and app class loaders static void add_default_read_edges(Handle h_module, TRAPS) NOT_JVMTI_RETURN; + // Add a read edge to the module + static jvmtiError add_module_reads(Handle module, Handle to_module, TRAPS); + + // Updates a module to export a package + static jvmtiError add_module_exports(Handle module, Handle pkg_name, Handle to_module, TRAPS); + + // Updates a module to open a package + static jvmtiError add_module_opens(Handle module, Handle pkg_name, Handle to_module, TRAPS); + + // Add a used service to the module + static jvmtiError add_module_uses(Handle module, Handle service, TRAPS); + + // Add a service provider to the module + static jvmtiError add_module_provides(Handle module, Handle service, Handle impl_class, TRAPS); + // let JVMTI know that the JVM_OnLoad code is running static void enter_onload_phase() NOT_JVMTI_RETURN;
--- a/hotspot/src/share/vm/prims/whitebox.cpp Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/src/share/vm/prims/whitebox.cpp Mon Dec 12 20:54:41 2016 -0800 @@ -1415,14 +1415,6 @@ Modules::add_reads_module(from_module, source_module, CHECK); WB_END -WB_ENTRY(jboolean, WB_CanReadModule(JNIEnv* env, jobject o, jobject asking_module, jobject source_module)) - return Modules::can_read_module(asking_module, source_module, THREAD); -WB_END - -WB_ENTRY(jboolean, WB_IsExportedToModule(JNIEnv* env, jobject o, jobject from_module, jstring package, jobject to_module)) - return Modules::is_exported_to_module(from_module, package, to_module, THREAD); -WB_END - WB_ENTRY(void, WB_AddModulePackage(JNIEnv* env, jobject o, jclass module, jstring package)) Modules::add_module_package(module, package, CHECK); WB_END @@ -1866,10 +1858,6 @@ (void*)&WB_AddModuleExports }, {CC"AddReadsModule", CC"(Ljava/lang/Object;Ljava/lang/Object;)V", (void*)&WB_AddReadsModule }, - {CC"CanReadModule", CC"(Ljava/lang/Object;Ljava/lang/Object;)Z", - (void*)&WB_CanReadModule }, - {CC"IsExportedToModule", CC"(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/Object;)Z", - (void*)&WB_IsExportedToModule }, {CC"AddModulePackage", CC"(Ljava/lang/Object;Ljava/lang/String;)V", (void*)&WB_AddModulePackage }, {CC"GetModuleByPackageName", CC"(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;",
--- a/hotspot/src/share/vm/runtime/arguments.cpp Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/src/share/vm/runtime/arguments.cpp Mon Dec 12 20:54:41 2016 -0800 @@ -170,6 +170,8 @@ #define ADDEXPORTS_LEN 10 #define ADDREADS "addreads" #define ADDREADS_LEN 8 +#define ADDOPENS "addopens" +#define ADDOPENS_LEN 8 #define PATCH "patch" #define PATCH_LEN 5 #define ADDMODS "addmods" @@ -196,6 +198,7 @@ const char* property_suffix = property + MODULE_PROPERTY_PREFIX_LEN; if (matches_property_suffix(property_suffix, ADDEXPORTS, ADDEXPORTS_LEN) || matches_property_suffix(property_suffix, ADDREADS, ADDREADS_LEN) || + matches_property_suffix(property_suffix, ADDOPENS, ADDOPENS_LEN) || matches_property_suffix(property_suffix, PATCH, PATCH_LEN) || matches_property_suffix(property_suffix, ADDMODS, ADDMODS_LEN) || matches_property_suffix(property_suffix, LIMITMODS, LIMITMODS_LEN) || @@ -2555,6 +2558,7 @@ unsigned int addreads_count = 0; unsigned int addexports_count = 0; +unsigned int addopens_count = 0; unsigned int addmods_count = 0; unsigned int patch_mod_count = 0; @@ -2809,6 +2813,10 @@ if (!create_numbered_property("jdk.module.addexports", tail, addexports_count++)) { return JNI_ENOMEM; } + } else if (match_option(option, "--add-opens=", &tail)) { + if (!create_numbered_property("jdk.module.addopens", tail, addopens_count++)) { + return JNI_ENOMEM; + } } else if (match_option(option, "--add-modules=", &tail)) { if (!create_numbered_property("jdk.module.addmods", tail, addmods_count++)) { return JNI_ENOMEM;
--- a/hotspot/src/share/vm/runtime/javaCalls.cpp Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/src/share/vm/runtime/javaCalls.cpp Mon Dec 12 20:54:41 2016 -0800 @@ -285,6 +285,14 @@ } +void JavaCalls::call_static(JavaValue* result, KlassHandle klass, Symbol* name, Symbol* signature, Handle arg1, Handle arg2, Handle arg3, TRAPS) { + JavaCallArguments args; // One oop argument + args.push_oop(arg1); + args.push_oop(arg2); + args.push_oop(arg3); + call_static(result, klass, name, signature, &args, CHECK); +} + // ------------------------------------------------- // Implementation of JavaCalls (low level)
--- a/hotspot/src/share/vm/runtime/javaCalls.hpp Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/src/share/vm/runtime/javaCalls.hpp Mon Dec 12 20:54:41 2016 -0800 @@ -210,6 +210,7 @@ static void call_static(JavaValue* result, KlassHandle klass, Symbol* name, Symbol* signature, TRAPS); static void call_static(JavaValue* result, KlassHandle klass, Symbol* name, Symbol* signature, Handle arg1, TRAPS); static void call_static(JavaValue* result, KlassHandle klass, Symbol* name, Symbol* signature, Handle arg1, Handle arg2, TRAPS); + static void call_static(JavaValue* result, KlassHandle klass, Symbol* name, Symbol* signature, Handle arg1, Handle arg2, Handle arg3, TRAPS); // Low-level interface static void call(JavaValue* result, const methodHandle& method, JavaCallArguments* args, TRAPS);
--- a/hotspot/test/Makefile Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/test/Makefile Mon Dec 12 20:54:41 2016 -0800 @@ -4,7 +4,9 @@ # # 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. +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle 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 @@ -22,262 +24,59 @@ # # -# -# Makefile to run various hotspot tests -# +NATIVE_TEST_PATH := hotspot/jtreg/native -ALT_MAKE ?= closed +TREAT_EXIT_CODE_1_AS_0 := true -GETMIXEDPATH=echo +CLEAN_BEFORE_PREP := true -# Utilities used -AWK = awk -CAT = cat -CD = cd -CHMOD = chmod -CP = cp -CUT = cut -DIRNAME = dirname -ECHO = echo -EGREP = egrep -EXPAND = expand -FIND = find -MKDIR = mkdir -PWD = pwd -SED = sed -SORT = sort -TEE = tee -UNAME = uname -UNIQ = uniq -WC = wc -ZIPEXE = zip +USE_JTREG_VERSION := 4.1 + +USE_JTREG_ASSERT := false -define NEWLINE +LIMIT_JTREG_VM_MEMORY := false - -endef +IGNORE_MARKED_TESTS := true # Get OS name from uname (Cygwin inexplicably adds _NT-5.1) -UNAME_S := $(shell $(UNAME) -s | $(CUT) -f1 -d_) +UNAME_S := $(shell uname -s | cut -f1 -d_) + ifeq ($(UNAME_S), SunOS) - PLATFORM = solaris - SLASH_JAVA = /java - ARCH = $(shell uname -p) - ifeq ($(ARCH), i386) - ARCH=i586 - endif NUM_CORES := $(shell LC_MESSAGES=C /usr/sbin/psrinfo -v | grep -c on-line) endif ifeq ($(UNAME_S), Linux) - PLATFORM = linux - SLASH_JAVA = /java - ARCH = $(shell uname -m) - ifeq ($(ARCH), i386) - ARCH = i586 - endif NUM_CORES := $(shell cat /proc/cpuinfo | grep -c processor) endif ifeq ($(UNAME_S), Darwin) - PLATFORM = bsd - SLASH_JAVA = /java - ARCH = $(shell uname -m) - ifeq ($(ARCH), i386) - ARCH = i586 - endif NUM_CORES := $(shell /usr/sbin/sysctl -n hw.ncpu) endif -ifeq ($(findstring BSD,$(UNAME_S)), BSD) - PLATFORM = bsd - SLASH_JAVA = /java - ARCH = $(shell uname -m) - ifeq ($(ARCH), i386) - ARCH = i586 - endif -endif -ifeq ($(PLATFORM),) - # detect whether we're running in MKS or cygwin - ifeq ($(UNAME_S), Windows_NT) # MKS - GETMIXEDPATH=dosname -s - endif - ifeq ($(findstring CYGWIN,$(UNAME_S)), CYGWIN) - GETMIXEDPATH=cygpath -m - endif - PLATFORM = windows - SLASH_JAVA = J: - ifeq ($(word 1, $(PROCESSOR_IDENTIFIER)),ia64) - ARCH = ia64 - else - ifeq ($(word 1, $(PROCESSOR_IDENTIFIER)),AMD64) - ARCH = x64 - else - ifeq ($(word 1, $(PROCESSOR_IDENTIFIER)),EM64T) - ARCH = x64 - else - ARCH = i586 - endif - endif - endif - EXESUFFIX = .exe +ifeq ($(findstring CYGWIN,$(UNAME_S)), CYGWIN) ifneq ($(NUMBER_OF_PROCESSORS), ) NUM_CORES := $(NUMBER_OF_PROCESSORS) else ifneq ($(HOTSPOT_BUILD_JOBS), ) NUM_CORES := $(HOTSPOT_BUILD_JOBS) + else + NUM_CORES := 1 # fallback endif endif endif -ifdef ALT_SLASH_JAVA - SLASH_JAVA = $(ALT_SLASH_JAVA) -endif - -# Root of this test area (important to use full paths in some places) -TEST_ROOT := $(shell pwd) - -# Root of all test results -ifdef TEST_OUTPUT_DIR - $(shell $(MKDIR) -p $(TEST_OUTPUT_DIR)/jtreg) - ABS_TEST_OUTPUT_DIR := \ - $(shell $(CD) $(TEST_OUTPUT_DIR)/jtreg && $(PWD)) -else - ifdef ALT_OUTPUTDIR - ABS_OUTPUTDIR = $(shell $(CD) $(ALT_OUTPUTDIR) && $(PWD)) - else - ABS_OUTPUTDIR = $(shell $(CD) $(TEST_ROOT)/.. && $(PWD)) - endif - - ABS_PLATFORM_BUILD_ROOT = $(ABS_OUTPUTDIR) - ABS_TEST_OUTPUT_DIR := $(ABS_PLATFORM_BUILD_ROOT)/testoutput/$(UNIQUE_DIR) -endif - -# Expect JPRT to set PRODUCT_HOME (the product or jdk in this case to test) -ifndef PRODUCT_HOME - # Try to use images/jdk if it exists - ABS_JDK_IMAGE = $(ABS_PLATFORM_BUILD_ROOT)/images/jdk - PRODUCT_HOME := \ - $(shell \ - if [ -d $(ABS_JDK_IMAGE) ] ; then \ - $(ECHO) "$(ABS_JDK_IMAGE)"; \ - else \ - $(ECHO) "$(ABS_PLATFORM_BUILD_ROOT)"; \ - fi) - PRODUCT_HOME := $(PRODUCT_HOME) -endif - -# Expect JPRT to set JAVA_ARGS (e.g. -server etc.) -JAVA_OPTIONS = -ifdef JAVA_ARGS - JAVA_OPTIONS = $(JAVA_ARGS) -endif - -# jtreg -nativepath <dir> -# -# Local make tests will be TEST_IMAGE_DIR and JPRT with jprt.use.reg.test.bundle=true -# should be JPRT_TESTNATIVE_PATH -ifdef TEST_IMAGE_DIR - TESTNATIVE_DIR = $(TEST_IMAGE_DIR) -else ifdef JPRT_TESTNATIVE_PATH - TESTNATIVE_DIR = $(JPRT_TESTNATIVE_PATH) -endif -ifdef TESTNATIVE_DIR - JTREG_NATIVE_PATH = -nativepath:$(shell $(GETMIXEDPATH) "$(TESTNATIVE_DIR)/hotspot/jtreg/native") -endif - -# jtreg failure handler config -ifeq ($(FAILURE_HANDLER_DIR), ) - ifneq ($(TESTNATIVE_DIR), ) - FAILURE_HANDLER_DIR := $(TESTNATIVE_DIR)/failure_handler - endif -endif -ifneq ($(FAILURE_HANDLER_DIR), ) - FAILURE_HANDLER_DIR_MIXED := $(shell $(GETMIXEDPATH) "$(FAILURE_HANDLER_DIR)") - JTREG_FAILURE_HANDLER_OPTIONS := \ - -timeoutHandlerDir:$(FAILURE_HANDLER_DIR_MIXED)/jtregFailureHandler.jar \ - -observerDir:$(FAILURE_HANDLER_DIR_MIXED)/jtregFailureHandler.jar \ - -timeoutHandler:jdk.test.failurehandler.jtreg.GatherProcessInfoTimeoutHandler \ - -observer:jdk.test.failurehandler.jtreg.GatherDiagnosticInfoObserver \ - -timeoutHandlerTimeout:0 - ifeq ($(PLATFORM), windows) - JTREG_FAILURE_HANDLER_OPTIONS += -J-Djava.library.path="$(FAILURE_HANDLER_DIR_MIXED)" - endif +# Concurrency based on min(cores / 2, 12) +CONCURRENCY := $(shell expr $(NUM_CORES) / 2) +ifeq ($(CONCURRENCY), 0) + CONCURRENCY := 1 +else ifeq ($(shell expr $(CONCURRENCY) \> 12), 1) + CONCURRENCY := 12 endif -# Expect JPRT to set JPRT_ARCHIVE_BUNDLE (path to zip bundle for results) -ARCHIVE_BUNDLE = $(ABS_TEST_OUTPUT_DIR)/ARCHIVE_BUNDLE.zip -ifdef JPRT_ARCHIVE_BUNDLE - ARCHIVE_BUNDLE = $(JPRT_ARCHIVE_BUNDLE) -endif - -# How to create the test bundle (pass or fail, we want to create this) -# Follow command with ";$(BUNDLE_UP_AND_EXIT)", so it always gets executed. -ZIP_UP_RESULTS = ( $(MKDIR) -p `$(DIRNAME) $(ARCHIVE_BUNDLE)` \ - && $(CD) $(ABS_TEST_OUTPUT_DIR) \ - && $(CHMOD) -R a+r . \ - && $(ZIPEXE) -q -r $(ARCHIVE_BUNDLE) . ) - -# important results files -SUMMARY_TXT = $(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)/JTreport/text/summary.txt") -STATS_TXT_NAME = Stats.txt -STATS_TXT = $(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)/$(STATS_TXT_NAME)") -RUNLIST = $(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)/runlist.txt") -PASSLIST = $(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)/passlist.txt") -FAILLIST = $(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)/faillist.txt") -EXITCODE = $(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)/exitcode.txt") - -TESTEXIT = \ - if [ ! -s $(EXITCODE) ] ; then \ - $(ECHO) "ERROR: EXITCODE file not filled in."; \ - $(ECHO) "1" > $(EXITCODE); \ - fi ; \ - testExitCode=`$(CAT) $(EXITCODE)`; \ - $(ECHO) "EXIT CODE: $${testExitCode}"; \ - exit $${testExitCode} +# Make sure MaxRAMFraction is high enough to not cause OOM or swapping since we may end up with a lot of JVM's +JTREG_BASIC_OPTIONS += -vmoption:-XX:MaxRAMFraction=$(shell expr $(CONCURRENCY) \* 4) -BUNDLE_UP_AND_EXIT = \ -( \ - jtregExitCode=$$? && \ - _summary="$(SUMMARY_TXT)"; \ - if [ $${jtregExitCode} = 1 ] ; then \ - jtregExitCode=0; \ - fi; \ - $(RM) -f $(STATS_TXT) $(RUNLIST) $(PASSLIST) $(FAILLIST) $(EXITCODE); \ - $(ECHO) "$${jtregExitCode}" > $(EXITCODE); \ - if [ -r "$${_summary}" ] ; then \ - $(ECHO) "Summary: $(UNIQUE_DIR)" > $(STATS_TXT); \ - $(EXPAND) $${_summary} | $(EGREP) -v ' Not run\.' > $(RUNLIST); \ - $(EGREP) ' Passed\.' $(RUNLIST) \ - | $(EGREP) -v ' Error\.' \ - | $(EGREP) -v ' Failed\.' > $(PASSLIST); \ - ( $(EGREP) ' Failed\.' $(RUNLIST); \ - $(EGREP) ' Error\.' $(RUNLIST); \ - $(EGREP) -v ' Passed\.' $(RUNLIST) ) \ - | $(SORT) | $(UNIQ) > $(FAILLIST); \ - if [ $${jtregExitCode} != 0 -o -s $(FAILLIST) ] ; then \ - $(EXPAND) $(FAILLIST) \ - | $(CUT) -d' ' -f1 \ - | $(SED) -e 's@^@FAILED: @' >> $(STATS_TXT); \ - if [ $${jtregExitCode} = 0 ] ; then \ - jtregExitCode=1; \ - fi; \ - fi; \ - runc="`$(CAT) $(RUNLIST) | $(WC) -l | $(AWK) '{print $$1;}'`"; \ - passc="`$(CAT) $(PASSLIST) | $(WC) -l | $(AWK) '{print $$1;}'`"; \ - failc="`$(CAT) $(FAILLIST) | $(WC) -l | $(AWK) '{print $$1;}'`"; \ - exclc="FIXME CODETOOLS-7900176"; \ - $(ECHO) "TEST STATS: name=$(UNIQUE_DIR) run=$${runc} pass=$${passc} fail=$${failc}" \ - >> $(STATS_TXT); \ - else \ - $(ECHO) "Missing file: $${_summary}" >> $(STATS_TXT); \ - fi; \ - if [ -f $(STATS_TXT) ] ; then \ - $(CAT) $(STATS_TXT); \ - fi; \ - $(ZIP_UP_RESULTS) ; \ - $(TESTEXIT) \ -) +# Include the common base file with most of the logic +include ../../test/TestCommon.gmk ################################################################ - # Default make rule (runs jtreg_tests) all: hotspot_all @$(ECHO) "Testing completed successfully" @@ -292,106 +91,10 @@ hotspot_internal: $(ALT_OUTPUTDIR)/jdk/bin/java -XX:+ExecuteInternalVMTests -XX:+ShowMessageBoxOnError -version -# Prep for output -prep: clean - @$(MKDIR) -p $(ABS_TEST_OUTPUT_DIR) - @$(MKDIR) -p `dirname $(ARCHIVE_BUNDLE)` - -# Cleanup -clean: - @$(RM) -r $(ABS_TEST_OUTPUT_DIR) - @$(RM) $(ARCHIVE_BUNDLE) - ################################################################ - -# jtreg tests - -# Expect JT_HOME to be set for jtreg tests. (home for jtreg) -ifndef JT_HOME - JT_HOME = $(SLASH_JAVA)/re/jtreg/4.1/promoted/latest/binaries/jtreg - ifdef JPRT_JTREG_HOME - JT_HOME = $(JPRT_JTREG_HOME) - endif -endif - -# When called from JPRT the TESTDIRS variable is set to the jtreg tests to run -ifdef TESTDIRS - TEST_SELECTION = $(TESTDIRS) -endif - -# Concurrency based on min(cores / 2, 12) -ifdef NUM_CORES - CONCURRENCY := $(shell expr $(NUM_CORES) / 2) - ifeq ($(CONCURRENCY), 0) - CONCURRENCY := 1 - else ifeq ($(shell expr $(CONCURRENCY) \> 12), 1) - CONCURRENCY := 12 - endif -else - CONCURRENCY := 1 -endif -JTREG_BASIC_OPTIONS += -concurrency:$(CONCURRENCY) - -# Make sure MaxRAMFraction is high enough to not cause OOM or swapping since we may end up with a lot of JVM's -JTREG_BASIC_OPTIONS += -vmoption:-XX:MaxRAMFraction=$(shell expr $(CONCURRENCY) \* 4) - -ifdef EXTRA_JTREG_OPTIONS - JTREG_BASIC_OPTIONS += $(EXTRA_JTREG_OPTIONS) -endif - -# Default JTREG to run -JTREG = $(JT_HOME)/bin/jtreg - -# Use agent mode -JTREG_BASIC_OPTIONS += -agentvm -# Only run automatic tests -JTREG_BASIC_OPTIONS += -a -# Report details on all failed or error tests, times too -JTREG_BASIC_OPTIONS += -v:fail,error,time -# Retain all files for failing tests -JTREG_BASIC_OPTIONS += -retain:fail,error -# Ignore tests are not run and completely silent about it -JTREG_IGNORE_OPTION = -ignore:quiet -JTREG_BASIC_OPTIONS += $(JTREG_IGNORE_OPTION) -# Multiply by 4 the timeout factor -JTREG_TIMEOUT_OPTION = -timeoutFactor:4 -JTREG_BASIC_OPTIONS += $(JTREG_TIMEOUT_OPTION) -# Set other vm and test options -JTREG_TEST_OPTIONS = $(JAVA_ARGS:%=-javaoptions:%) $(JAVA_OPTIONS:%=-vmoption:%) $(JAVA_VM_ARGS:%=-vmoption:%) - -# Option to tell jtreg to not run tests marked with "ignore" -ifeq ($(PLATFORM), windows) - JTREG_KEY_OPTION = -k:!ignore -else - JTREG_KEY_OPTION = -k:\!ignore -endif -JTREG_BASIC_OPTIONS += $(JTREG_KEY_OPTION) - +ALT_MAKE ?= closed -include $(ALT_MAKE)/Makefile -# Make sure jtreg exists -$(JTREG): $(JT_HOME) - -jtreg_tests: prep $(PRODUCT_HOME) $(JTREG) - ( \ - ( JT_HOME=$(shell $(GETMIXEDPATH) "$(JT_HOME)"); \ - export JT_HOME; \ - $(shell $(GETMIXEDPATH) "$(JTREG)") \ - $(JTREG_BASIC_OPTIONS) \ - -r:$(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)/JTreport") \ - -w:$(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)/JTwork") \ - -jdk:$(shell $(GETMIXEDPATH) "$(PRODUCT_HOME)") \ - $(JTREG_NATIVE_PATH) \ - $(JTREG_FAILURE_HANDLER_OPTIONS) \ - $(JTREG_EXCLUSIONS) \ - $(JTREG_TEST_OPTIONS) \ - $(TEST_SELECTION) \ - ) ; \ - $(BUNDLE_UP_AND_EXIT) \ - ) 2>&1 | $(TEE) $(ABS_TEST_OUTPUT_DIR)/output.txt ; $(TESTEXIT) - -PHONY_LIST += jtreg_tests - # flags used to execute java in test targets TEST_FLAGS += -version -Xinternalversion -X -help @@ -471,6 +174,12 @@ # Run the native gtest tests from the test image +define NEWLINE + + +endef + + hotspot_gtest: $(foreach v, $(JVM_VARIANTS), \ $(MAKE) hotspot_gtest$v $(NEWLINE) ) @@ -481,9 +190,3 @@ PHONY_LIST += hotspot_gtest hotspot_gtestserver hotspot_gtestclient \ hotspot_gtestminimal - -################################################################ -# Phony targets (e.g. these are not filenames) -.PHONY: all clean prep $(PHONY_LIST) - -################################################################
--- a/hotspot/test/TEST.ROOT Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/test/TEST.ROOT Mon Dec 12 20:54:41 2016 -0800 @@ -47,8 +47,8 @@ vm.gc.ConcMarkSweep \ vm.debug -# Tests using jtreg 4.2 b03 features -requiredVersion=4.2 b03 +# Tests using jtreg 4.2 b04 features +requiredVersion=4.2 b04 # Path to libraries in the topmost test directory. This is needed so @library # does not need ../../ notation to reach them
--- a/hotspot/test/compiler/c2/Test7190310_unsafe.java Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/test/compiler/c2/Test7190310_unsafe.java Mon Dec 12 20:54:41 2016 -0800 @@ -25,7 +25,8 @@ * @test * @bug 7190310 * @summary Inlining WeakReference.get(), and hoisting $referent may lead to non-terminating loops - * @modules java.base/jdk.internal.misc + * @modules java.base/jdk.internal.misc:+open + * @modules java.base/java.lang.ref:open * * @run main/othervm -Xbatch compiler.c2.Test7190310_unsafe */
--- a/hotspot/test/compiler/codegen/Test8011901.java Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/test/compiler/codegen/Test8011901.java Mon Dec 12 20:54:41 2016 -0800 @@ -25,7 +25,7 @@ * @test * @bug 8011901 * @summary instruct xaddL_no_res shouldn't allow 64 bit constants. - * @modules java.base/jdk.internal.misc + * @modules java.base/jdk.internal.misc:+open * * @run main/othervm -XX:-BackgroundCompilation compiler.codegen.Test8011901 */
--- a/hotspot/test/compiler/escapeAnalysis/TestUnsafePutAddressNullObjMustNotEscape.java Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/test/compiler/escapeAnalysis/TestUnsafePutAddressNullObjMustNotEscape.java Mon Dec 12 20:54:41 2016 -0800 @@ -25,7 +25,7 @@ * @test * @bug 8038048 * @summary assert(null_obj->escape_state() == PointsToNode::NoEscape,etc) - * @modules java.base/jdk.internal.misc + * @modules java.base/jdk.internal.misc:+open * * @run main/othervm -XX:+IgnoreUnrecognizedVMOptions -XX:+DoEscapeAnalysis * -XX:-TieredCompilation -Xbatch
--- a/hotspot/test/compiler/intrinsics/bigInteger/MontgomeryMultiplyTest.java Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/test/compiler/intrinsics/bigInteger/MontgomeryMultiplyTest.java Mon Dec 12 20:54:41 2016 -0800 @@ -27,7 +27,8 @@ * @bug 8130150 8131779 8139907 * @summary Verify that the Montgomery multiply and square intrinsic works and correctly checks their arguments. * @requires vm.flavor == "server" - * @modules java.base/jdk.internal.misc + * @modules java.base/jdk.internal.misc:open + * @modules java.base/java.math:open * @library /test/lib * * @build sun.hotspot.WhiteBox
--- a/hotspot/test/compiler/intrinsics/unsafe/AllocateUninitializedArray.java Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/test/compiler/intrinsics/unsafe/AllocateUninitializedArray.java Mon Dec 12 20:54:41 2016 -0800 @@ -25,7 +25,7 @@ * @test * @bug 8150465 * @summary Unsafe methods to produce uninitialized arrays - * @modules java.base/jdk.internal.misc + * @modules java.base/jdk.internal.misc:+open * * @run main/othervm -ea -Diters=200 -Xint * compiler.intrinsics.unsafe.AllocateUninitializedArray
--- a/hotspot/test/compiler/intrinsics/unsafe/TestUnsafeUnalignedMismatchedAccesses.java Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/test/compiler/intrinsics/unsafe/TestUnsafeUnalignedMismatchedAccesses.java Mon Dec 12 20:54:41 2016 -0800 @@ -25,7 +25,7 @@ * @test * @bug 8136473 * @summary Mismatched stores on same slice possible with Unsafe.Put*Unaligned methods - * @modules java.base/jdk.internal.misc + * @modules java.base/jdk.internal.misc:+open * * @run main/othervm -XX:-UseOnStackReplacement -XX:-BackgroundCompilation * compiler.intrinsics.unsafe.TestUnsafeUnalignedMismatchedAccesses
--- a/hotspot/test/compiler/intrinsics/unsafe/UnsafeGetAddressTest.java Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/test/compiler/intrinsics/unsafe/UnsafeGetAddressTest.java Mon Dec 12 20:54:41 2016 -0800 @@ -25,7 +25,7 @@ * @test * @bug 6653795 * @summary C2 intrinsic for Unsafe.getAddress performs pointer sign extension on 32-bit systems - * @modules java.base/jdk.internal.misc + * @modules java.base/jdk.internal.misc:+open * * @run main compiler.intrinsics.unsafe.UnsafeGetAddressTest */
--- a/hotspot/test/compiler/intrinsics/unsafe/UnsafeTwoCASLong.java Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/test/compiler/intrinsics/unsafe/UnsafeTwoCASLong.java Mon Dec 12 20:54:41 2016 -0800 @@ -25,7 +25,7 @@ * @test * @bug 8143930 * @summary C1 LinearScan asserts when compiling two back-to-back CompareAndSwapLongs - * @modules java.base/jdk.internal.misc + * @modules java.base/jdk.internal.misc:+open * * @run testng/othervm -Diters=200000 -XX:TieredStopAtLevel=1 * compiler.intrinsics.unsafe.UnsafeTwoCASLong
--- a/hotspot/test/compiler/jsr292/RedefineMethodUsedByMultipleMethodHandles.java Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/test/compiler/jsr292/RedefineMethodUsedByMultipleMethodHandles.java Mon Dec 12 20:54:41 2016 -0800 @@ -30,6 +30,7 @@ * java.compiler * java.instrument * java.management + * jdk.attach * * @run main/othervm compiler.jsr292.RedefineMethodUsedByMultipleMethodHandles */ @@ -42,7 +43,6 @@ import jdk.internal.org.objectweb.asm.MethodVisitor; import jdk.internal.org.objectweb.asm.Opcodes; -import javax.tools.ToolProvider; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; @@ -132,7 +132,7 @@ int p = vmName.indexOf('@'); assert p != -1 : "VM name not in <pid>@<host> format: " + vmName; String pid = vmName.substring(0, p); - ClassLoader cl = ToolProvider.getSystemToolClassLoader(); + ClassLoader cl = ClassLoader.getSystemClassLoader(); Class<?> c = Class.forName("com.sun.tools.attach.VirtualMachine", true, cl); Method attach = c.getDeclaredMethod("attach", String.class); Method loadAgent = c.getDeclaredMethod("loadAgent", String.class);
--- a/hotspot/test/compiler/jvmci/compilerToVM/GetResolvedJavaMethodTest.java Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/test/compiler/jvmci/compilerToVM/GetResolvedJavaMethodTest.java Mon Dec 12 20:54:41 2016 -0800 @@ -27,8 +27,8 @@ * @requires (vm.simpleArch == "x64" | vm.simpleArch == "sparcv9" | vm.simpleArch == "aarch64") * @library / /test/lib * @library ../common/patches - * @modules java.base/jdk.internal.misc - * @modules jdk.vm.ci/jdk.vm.ci.hotspot + * @modules java.base/jdk.internal.misc:+open + * @modules jdk.vm.ci/jdk.vm.ci.hotspot:+open * * @build jdk.vm.ci/jdk.vm.ci.hotspot.CompilerToVMHelper * jdk.vm.ci/jdk.vm.ci.hotspot.PublicMetaspaceWrapperObject
--- a/hotspot/test/compiler/jvmci/compilerToVM/GetSymbolTest.java Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/test/compiler/jvmci/compilerToVM/GetSymbolTest.java Mon Dec 12 20:54:41 2016 -0800 @@ -27,10 +27,10 @@ * @requires (vm.simpleArch == "x64" | vm.simpleArch == "sparcv9" | vm.simpleArch == "aarch64") * @library / /test/lib * @library ../common/patches - * @modules java.base/jdk.internal.misc + * @modules java.base/jdk.internal.misc:+open * @modules java.base/jdk.internal.org.objectweb.asm * java.base/jdk.internal.org.objectweb.asm.tree - * jdk.vm.ci/jdk.vm.ci.hotspot + * @modules jdk.vm.ci/jdk.vm.ci.hotspot:+open * jdk.vm.ci/jdk.vm.ci.code * jdk.vm.ci/jdk.vm.ci.meta * @build jdk.vm.ci/jdk.vm.ci.hotspot.CompilerToVMHelper
--- a/hotspot/test/compiler/jvmci/compilerToVM/JVM_RegisterJVMCINatives.java Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/test/compiler/jvmci/compilerToVM/JVM_RegisterJVMCINatives.java Mon Dec 12 20:54:41 2016 -0800 @@ -26,8 +26,8 @@ * @bug 8136421 * @requires (vm.simpleArch == "x64" | vm.simpleArch == "sparcv9" | vm.simpleArch == "aarch64") * @library /test/lib / - * @modules java.base/jdk.internal.misc - * @modules jdk.vm.ci/jdk.vm.ci.hotspot + * @modules java.base/jdk.internal.misc:open + * @modules jdk.vm.ci/jdk.vm.ci.hotspot:open * jdk.vm.ci/jdk.vm.ci.runtime * @run main/othervm -XX:+UnlockExperimentalVMOptions * -Dcompiler.jvmci.compilerToVM.JVM_RegisterJVMCINatives.positive=true
--- a/hotspot/test/compiler/jvmci/jdk.vm.ci.hotspot.test/src/jdk/vm/ci/hotspot/test/MethodHandleAccessProviderTest.java Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/test/compiler/jvmci/jdk.vm.ci.hotspot.test/src/jdk/vm/ci/hotspot/test/MethodHandleAccessProviderTest.java Mon Dec 12 20:54:41 2016 -0800 @@ -27,9 +27,10 @@ * @bug 8161068 * @requires (vm.simpleArch == "x64" | vm.simpleArch == "sparcv9" | vm.simpleArch == "aarch64") * @library /test/lib /compiler/jvmci/jdk.vm.ci.hotspot.test/src + * @modules java.base/java.lang.invoke:+open * @modules jdk.vm.ci/jdk.vm.ci.meta * jdk.vm.ci/jdk.vm.ci.runtime - * jdk.vm.ci/jdk.vm.ci.hotspot + * @modules jdk.vm.ci/jdk.vm.ci.hotspot:+open * @run testng/othervm -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI * jdk.vm.ci.hotspot.test.MethodHandleAccessProviderTest */
--- a/hotspot/test/compiler/jvmci/jdk.vm.ci.runtime.test/src/jdk/vm/ci/runtime/test/RedefineClassTest.java Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/test/compiler/jvmci/jdk.vm.ci.runtime.test/src/jdk/vm/ci/runtime/test/RedefineClassTest.java Mon Dec 12 20:54:41 2016 -0800 @@ -27,6 +27,7 @@ * @library ../../../../../ * @modules jdk.vm.ci/jdk.vm.ci.meta * jdk.vm.ci/jdk.vm.ci.runtime + * jdk.attach * java.base/jdk.internal.misc * @run junit/othervm -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI jdk.vm.ci.runtime.test.RedefineClassTest */ @@ -37,7 +38,6 @@ import org.junit.Assert; import org.junit.Test; -import javax.tools.ToolProvider; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; @@ -137,7 +137,7 @@ int p = vmName.indexOf('@'); assumeTrue(p != -1); String pid = vmName.substring(0, p); - ClassLoader cl = ToolProvider.getSystemToolClassLoader(); + ClassLoader cl = ClassLoader.getSystemClassLoader(); Class<?> c = Class.forName("com.sun.tools.attach.VirtualMachine", true, cl); Method attach = c.getDeclaredMethod("attach", String.class); Method loadAgent = c.getDeclaredMethod("loadAgent", String.class, String.class);
--- a/hotspot/test/compiler/rangechecks/TestExplicitRangeChecks.java Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/test/compiler/rangechecks/TestExplicitRangeChecks.java Mon Dec 12 20:54:41 2016 -0800 @@ -26,7 +26,7 @@ * @bug 8073480 * @summary explicit range checks should be recognized by C2 * @library /test/lib / - * @modules java.base/jdk.internal.misc + * @modules java.base/jdk.internal.misc:+open * @build sun.hotspot.WhiteBox * @run driver ClassFileInstaller sun.hotspot.WhiteBox * @run main/othervm -ea -Xmixed -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI
--- a/hotspot/test/compiler/runtime/Test8010927.java Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/test/compiler/runtime/Test8010927.java Mon Dec 12 20:54:41 2016 -0800 @@ -26,7 +26,7 @@ * @bug 8010927 * @summary Kitchensink crashed with SIGSEGV, Problematic frame: v ~StubRoutines::checkcast_arraycopy * @library /test/lib - * @modules java.base/jdk.internal.misc + * @modules java.base/jdk.internal.misc:+open * @build sun.hotspot.WhiteBox * @run driver ClassFileInstaller sun.hotspot.WhiteBox * sun.hotspot.WhiteBox$WhiteBoxPermission
--- a/hotspot/test/compiler/unsafe/GetUnsafeObjectG1PreBarrier.java Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/test/compiler/unsafe/GetUnsafeObjectG1PreBarrier.java Mon Dec 12 20:54:41 2016 -0800 @@ -26,7 +26,7 @@ * @bug 8016474 * @summary The bug only happens with C1 and G1 using a different ObjectAlignmentInBytes than KlassAlignmentInBytes (which is 8) * - * @modules java.base/jdk.internal.misc + * @modules java.base/jdk.internal.misc:+open * @run main/othervm -Xbatch -XX:+IgnoreUnrecognizedVMOptions -XX:ObjectAlignmentInBytes=32 * compiler.unsafe.GetUnsafeObjectG1PreBarrier */
--- a/hotspot/test/compiler/unsafe/JdkInternalMiscUnsafeAccessTestBoolean.java Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/test/compiler/unsafe/JdkInternalMiscUnsafeAccessTestBoolean.java Mon Dec 12 20:54:41 2016 -0800 @@ -26,7 +26,7 @@ * @bug 8143628 * @summary Test unsafe access for boolean * - * @modules java.base/jdk.internal.misc + * @modules java.base/jdk.internal.misc:+open * @run testng/othervm -Diters=100 -Xint compiler.unsafe.JdkInternalMiscUnsafeAccessTestBoolean * @run testng/othervm -Diters=20000 -XX:TieredStopAtLevel=1 compiler.unsafe.JdkInternalMiscUnsafeAccessTestBoolean * @run testng/othervm -Diters=20000 -XX:-TieredCompilation compiler.unsafe.JdkInternalMiscUnsafeAccessTestBoolean
--- a/hotspot/test/compiler/unsafe/JdkInternalMiscUnsafeAccessTestByte.java Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/test/compiler/unsafe/JdkInternalMiscUnsafeAccessTestByte.java Mon Dec 12 20:54:41 2016 -0800 @@ -26,7 +26,7 @@ * @bug 8143628 * @summary Test unsafe access for byte * - * @modules java.base/jdk.internal.misc + * @modules java.base/jdk.internal.misc:+open * @run testng/othervm -Diters=100 -Xint compiler.unsafe.JdkInternalMiscUnsafeAccessTestByte * @run testng/othervm -Diters=20000 -XX:TieredStopAtLevel=1 compiler.unsafe.JdkInternalMiscUnsafeAccessTestByte * @run testng/othervm -Diters=20000 -XX:-TieredCompilation compiler.unsafe.JdkInternalMiscUnsafeAccessTestByte
--- a/hotspot/test/compiler/unsafe/JdkInternalMiscUnsafeAccessTestChar.java Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/test/compiler/unsafe/JdkInternalMiscUnsafeAccessTestChar.java Mon Dec 12 20:54:41 2016 -0800 @@ -26,7 +26,7 @@ * @bug 8143628 * @summary Test unsafe access for char * - * @modules java.base/jdk.internal.misc + * @modules java.base/jdk.internal.misc:+open * @run testng/othervm -Diters=100 -Xint compiler.unsafe.JdkInternalMiscUnsafeAccessTestChar * @run testng/othervm -Diters=20000 -XX:TieredStopAtLevel=1 compiler.unsafe.JdkInternalMiscUnsafeAccessTestChar * @run testng/othervm -Diters=20000 -XX:-TieredCompilation compiler.unsafe.JdkInternalMiscUnsafeAccessTestChar
--- a/hotspot/test/compiler/unsafe/JdkInternalMiscUnsafeAccessTestDouble.java Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/test/compiler/unsafe/JdkInternalMiscUnsafeAccessTestDouble.java Mon Dec 12 20:54:41 2016 -0800 @@ -26,7 +26,7 @@ * @bug 8143628 * @summary Test unsafe access for double * - * @modules java.base/jdk.internal.misc + * @modules java.base/jdk.internal.misc:+open * @run testng/othervm -Diters=100 -Xint compiler.unsafe.JdkInternalMiscUnsafeAccessTestDouble * @run testng/othervm -Diters=20000 -XX:TieredStopAtLevel=1 compiler.unsafe.JdkInternalMiscUnsafeAccessTestDouble * @run testng/othervm -Diters=20000 -XX:-TieredCompilation compiler.unsafe.JdkInternalMiscUnsafeAccessTestDouble
--- a/hotspot/test/compiler/unsafe/JdkInternalMiscUnsafeAccessTestFloat.java Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/test/compiler/unsafe/JdkInternalMiscUnsafeAccessTestFloat.java Mon Dec 12 20:54:41 2016 -0800 @@ -26,7 +26,7 @@ * @bug 8143628 * @summary Test unsafe access for float * - * @modules java.base/jdk.internal.misc + * @modules java.base/jdk.internal.misc:+open * @run testng/othervm -Diters=100 -Xint compiler.unsafe.JdkInternalMiscUnsafeAccessTestFloat * @run testng/othervm -Diters=20000 -XX:TieredStopAtLevel=1 compiler.unsafe.JdkInternalMiscUnsafeAccessTestFloat * @run testng/othervm -Diters=20000 -XX:-TieredCompilation compiler.unsafe.JdkInternalMiscUnsafeAccessTestFloat
--- a/hotspot/test/compiler/unsafe/JdkInternalMiscUnsafeAccessTestInt.java Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/test/compiler/unsafe/JdkInternalMiscUnsafeAccessTestInt.java Mon Dec 12 20:54:41 2016 -0800 @@ -26,7 +26,7 @@ * @bug 8143628 * @summary Test unsafe access for int * - * @modules java.base/jdk.internal.misc + * @modules java.base/jdk.internal.misc:+open * @run testng/othervm -Diters=100 -Xint compiler.unsafe.JdkInternalMiscUnsafeAccessTestInt * @run testng/othervm -Diters=20000 -XX:TieredStopAtLevel=1 compiler.unsafe.JdkInternalMiscUnsafeAccessTestInt * @run testng/othervm -Diters=20000 -XX:-TieredCompilation compiler.unsafe.JdkInternalMiscUnsafeAccessTestInt
--- a/hotspot/test/compiler/unsafe/JdkInternalMiscUnsafeAccessTestLong.java Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/test/compiler/unsafe/JdkInternalMiscUnsafeAccessTestLong.java Mon Dec 12 20:54:41 2016 -0800 @@ -26,7 +26,7 @@ * @bug 8143628 * @summary Test unsafe access for long * - * @modules java.base/jdk.internal.misc + * @modules java.base/jdk.internal.misc:+open * @run testng/othervm -Diters=100 -Xint compiler.unsafe.JdkInternalMiscUnsafeAccessTestLong * @run testng/othervm -Diters=20000 -XX:TieredStopAtLevel=1 compiler.unsafe.JdkInternalMiscUnsafeAccessTestLong * @run testng/othervm -Diters=20000 -XX:-TieredCompilation compiler.unsafe.JdkInternalMiscUnsafeAccessTestLong
--- a/hotspot/test/compiler/unsafe/JdkInternalMiscUnsafeAccessTestObject.java Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/test/compiler/unsafe/JdkInternalMiscUnsafeAccessTestObject.java Mon Dec 12 20:54:41 2016 -0800 @@ -26,7 +26,7 @@ * @bug 8143628 * @summary Test unsafe access for Object * - * @modules java.base/jdk.internal.misc + * @modules java.base/jdk.internal.misc:+open * @run testng/othervm -Diters=100 -Xint compiler.unsafe.JdkInternalMiscUnsafeAccessTestObject * @run testng/othervm -Diters=20000 -XX:TieredStopAtLevel=1 compiler.unsafe.JdkInternalMiscUnsafeAccessTestObject * @run testng/othervm -Diters=20000 -XX:-TieredCompilation compiler.unsafe.JdkInternalMiscUnsafeAccessTestObject
--- a/hotspot/test/compiler/unsafe/JdkInternalMiscUnsafeAccessTestShort.java Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/test/compiler/unsafe/JdkInternalMiscUnsafeAccessTestShort.java Mon Dec 12 20:54:41 2016 -0800 @@ -26,7 +26,7 @@ * @bug 8143628 * @summary Test unsafe access for short * - * @modules java.base/jdk.internal.misc + * @modules java.base/jdk.internal.misc:+open * @run testng/othervm -Diters=100 -Xint compiler.unsafe.JdkInternalMiscUnsafeAccessTestShort * @run testng/othervm -Diters=20000 -XX:TieredStopAtLevel=1 compiler.unsafe.JdkInternalMiscUnsafeAccessTestShort * @run testng/othervm -Diters=20000 -XX:-TieredCompilation compiler.unsafe.JdkInternalMiscUnsafeAccessTestShort
--- a/hotspot/test/compiler/unsafe/JdkInternalMiscUnsafeUnalignedAccess.java Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/test/compiler/unsafe/JdkInternalMiscUnsafeUnalignedAccess.java Mon Dec 12 20:54:41 2016 -0800 @@ -25,7 +25,7 @@ * @test * @bug 8158260 * @summary Test unaligned Unsafe accesses - * @modules java.base/jdk.internal.misc + * @modules java.base/jdk.internal.misc:+open * * @run main/othervm -Diters=20000 -XX:-UseOnStackReplacement -XX:-BackgroundCompilation * compiler.unsafe.JdkInternalMiscUnsafeUnalignedAccess
--- a/hotspot/test/compiler/unsafe/TestUnsafeLoadControl.java Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/test/compiler/unsafe/TestUnsafeLoadControl.java Mon Dec 12 20:54:41 2016 -0800 @@ -25,7 +25,7 @@ * @test * @bug 8077504 * @summary Unsafe load can loose control dependency and cause crash - * @modules java.base/jdk.internal.misc + * @modules java.base/jdk.internal.misc:+open * * @run main/othervm -XX:-BackgroundCompilation -XX:-UseOnStackReplacement * compiler.unsafe.TestUnsafeLoadControl
--- a/hotspot/test/gc/g1/TestStringDeduplicationAgeThreshold.java Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/test/gc/g1/TestStringDeduplicationAgeThreshold.java Mon Dec 12 20:54:41 2016 -0800 @@ -28,7 +28,8 @@ * @key gc * @requires vm.gc.G1 * @library /test/lib - * @modules java.base/jdk.internal.misc + * @modules java.base/jdk.internal.misc:open + * @modules java.base/java.lang:open * java.management */
--- a/hotspot/test/gc/g1/TestStringDeduplicationFullGC.java Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/test/gc/g1/TestStringDeduplicationFullGC.java Mon Dec 12 20:54:41 2016 -0800 @@ -28,7 +28,8 @@ * @key gc * @requires vm.gc.G1 * @library /test/lib - * @modules java.base/jdk.internal.misc + * @modules java.base/jdk.internal.misc:open + * @modules java.base/java.lang:open * java.management */
--- a/hotspot/test/gc/g1/TestStringDeduplicationInterned.java Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/test/gc/g1/TestStringDeduplicationInterned.java Mon Dec 12 20:54:41 2016 -0800 @@ -28,7 +28,8 @@ * @key gc * @requires vm.gc.G1 * @library /test/lib - * @modules java.base/jdk.internal.misc + * @modules java.base/jdk.internal.misc:open + * @modules java.base/java.lang:open * java.management */
--- a/hotspot/test/gc/g1/TestStringDeduplicationPrintOptions.java Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/test/gc/g1/TestStringDeduplicationPrintOptions.java Mon Dec 12 20:54:41 2016 -0800 @@ -28,7 +28,8 @@ * @key gc * @requires vm.gc.G1 * @library /test/lib - * @modules java.base/jdk.internal.misc + * @modules java.base/jdk.internal.misc:open + * @modules java.base/java.lang:open * java.management */
--- a/hotspot/test/gc/g1/TestStringDeduplicationTableRehash.java Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/test/gc/g1/TestStringDeduplicationTableRehash.java Mon Dec 12 20:54:41 2016 -0800 @@ -28,7 +28,8 @@ * @key gc * @requires vm.gc.G1 * @library /test/lib - * @modules java.base/jdk.internal.misc + * @modules java.base/jdk.internal.misc:open + * @modules java.base/java.lang:open * java.management */
--- a/hotspot/test/gc/g1/TestStringDeduplicationTableResize.java Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/test/gc/g1/TestStringDeduplicationTableResize.java Mon Dec 12 20:54:41 2016 -0800 @@ -28,7 +28,8 @@ * @key gc * @requires vm.gc.G1 * @library /test/lib - * @modules java.base/jdk.internal.misc + * @modules java.base/jdk.internal.misc:open + * @modules java.base/java.lang:open * java.management */
--- a/hotspot/test/gc/g1/TestStringDeduplicationTools.java Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/test/gc/g1/TestStringDeduplicationTools.java Mon Dec 12 20:54:41 2016 -0800 @@ -190,6 +190,7 @@ "-Xmx" + Xmx + "m", "-XX:+UseG1GC", "-XX:+UnlockDiagnosticVMOptions", + "--add-opens=java.base/java.lang=ALL-UNNAMED", "-XX:+VerifyAfterGC" // Always verify after GC };
--- a/hotspot/test/gc/g1/TestStringDeduplicationYoungGC.java Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/test/gc/g1/TestStringDeduplicationYoungGC.java Mon Dec 12 20:54:41 2016 -0800 @@ -28,7 +28,8 @@ * @key gc * @requires vm.gc.G1 * @library /test/lib - * @modules java.base/jdk.internal.misc + * @modules java.base/jdk.internal.misc:open + * @modules java.base/java.lang:open * java.management */
--- a/hotspot/test/gc/stress/gcbasher/TestGCBasher.java Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/test/gc/stress/gcbasher/TestGCBasher.java Mon Dec 12 20:54:41 2016 -0800 @@ -38,7 +38,8 @@ FileSystem fs = FileSystems.getFileSystem(URI.create("jrt:/")); Stream<Path> s = Files.walk(fs.getPath("/")); for (Path p : (Iterable<Path>)s::iterator) { - if (p.toString().endsWith(".class")) { + if (p.toString().endsWith(".class") && + !p.getFileName().toString().equals("module-info.class")) { byte[] data = Files.readAllBytes(p); Decompiler d = new Decompiler(data); ClassInfo ci = d.getClassInfo();
--- a/hotspot/test/runtime/LocalLong/LocalLongTest.java Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/test/runtime/LocalLong/LocalLongTest.java Mon Dec 12 20:54:41 2016 -0800 @@ -39,6 +39,10 @@ public static void main(String... args) throws Exception { if (Platform.is64bit()) { ProcessBuilder pb = ProcessTools.createJavaProcessBuilder("-Xint", + "--add-opens", + "java.base/java.lang=ALL-UNNAMED", + "--add-opens", + "java.base/java.lang.invoke=ALL-UNNAMED", "LocalLongHelper"); OutputAnalyzer o = new OutputAnalyzer(pb.start()); o.shouldHaveExitValue(0);
--- a/hotspot/test/runtime/Throwable/StackTraceLogging.java Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/test/runtime/Throwable/StackTraceLogging.java Mon Dec 12 20:54:41 2016 -0800 @@ -52,6 +52,8 @@ public static void main(String[] args) throws Exception { ProcessBuilder pb = ProcessTools.createJavaProcessBuilder("-Xlog:stacktrace=info", "-XX:MaxJavaStackTraceDepth=1024", + "--add-opens", + "java.base/java.lang=ALL-UNNAMED", "TestThrowable"); analyzeOutputOn(pb); }
--- a/hotspot/test/runtime/Throwable/TestThrowable.java Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/test/runtime/Throwable/TestThrowable.java Mon Dec 12 20:54:41 2016 -0800 @@ -25,7 +25,8 @@ * @test * @bug 8150778 * @summary Test exception depths, and code to get stack traces - * @modules java.base/jdk.internal.misc + * @modules java.base/jdk.internal.misc:open + * @modules java.base/java.lang:open * @library /test/lib * @run main/othervm -XX:MaxJavaStackTraceDepth=1024 TestThrowable */
--- a/hotspot/test/runtime/Throwable/ThrowableIntrospectionSegfault.java Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/test/runtime/Throwable/ThrowableIntrospectionSegfault.java Mon Dec 12 20:54:41 2016 -0800 @@ -25,7 +25,8 @@ * @test * @bug 8033735 * @summary check backtrace field introspection - * @modules java.base/jdk.internal.misc + * @modules java.base/jdk.internal.misc:open + * @modules java.base/java.lang:open * @run main ThrowableIntrospectionSegfault */
--- a/hotspot/test/runtime/getSysPackage/GetSysPkgTest.java Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/test/runtime/getSysPackage/GetSysPkgTest.java Mon Dec 12 20:54:41 2016 -0800 @@ -100,7 +100,7 @@ ClassFileInstaller.writeClassToDisk("GetSysPkg_package/GetSysClass", klassbuf); ProcessBuilder pb = ProcessTools.createJavaProcessBuilder("-Xbootclasspath/a:bl_dir", - "--add-exports=java.base/jdk.internal.loader=ALL-UNNAMED", "-cp", "." + File.pathSeparator + + "--add-opens=java.base/jdk.internal.loader=ALL-UNNAMED", "-cp", "." + File.pathSeparator + System.getProperty("test.classes"), "GetSysPkgTest", "do_tests"); OutputAnalyzer output = new OutputAnalyzer(pb.start()); output.shouldHaveExitValue(0);
--- a/hotspot/test/runtime/modules/AccessCheck/CheckRead.java Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/test/runtime/modules/AccessCheck/CheckRead.java Mon Dec 12 20:54:41 2016 -0800 @@ -69,7 +69,7 @@ // Packages: p1 // Packages exported: p1 is exported unqualifiedly ModuleDescriptor descriptor_m1 = - new ModuleDescriptor.Builder("m1") + ModuleDescriptor.module("m1") .requires("java.base") .requires("m3") .exports("p1") @@ -80,9 +80,9 @@ // Packages: p2 // Packages exported: p2 is exported to m1 ModuleDescriptor descriptor_m2 = - new ModuleDescriptor.Builder("m2") + ModuleDescriptor.module("m2") .requires("java.base") - .exports("p2", "m1") + .exports("p2", Set.of("m1")) .build(); // Define module: m3 @@ -90,10 +90,10 @@ // Packages: p3 // Packages exported: none ModuleDescriptor descriptor_m3 = - new ModuleDescriptor.Builder("m3") + ModuleDescriptor.module("m3") .requires("java.base") .requires("m2") - .conceals("p3") + .contains("p3") .build(); // Set up a ModuleFinder containing all modules for this layer.
--- a/hotspot/test/runtime/modules/AccessCheck/DiffCL_CheckRead.java Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/test/runtime/modules/AccessCheck/DiffCL_CheckRead.java Mon Dec 12 20:54:41 2016 -0800 @@ -69,7 +69,7 @@ // Packages: p1 // Packages exported: p1 is exported unqualifiedly ModuleDescriptor descriptor_m1 = - new ModuleDescriptor.Builder("m1") + ModuleDescriptor.module("m1") .requires("java.base") .requires("m3") .exports("p1") @@ -80,9 +80,9 @@ // Packages: p2 // Packages exported: p2 is exported to m1 ModuleDescriptor descriptor_m2 = - new ModuleDescriptor.Builder("m2") + ModuleDescriptor.module("m2") .requires("java.base") - .exports("p2", "m1") + .exports("p2", Set.of("m1")) .build(); // Define module: m3 @@ -90,10 +90,10 @@ // Packages: p3 // Packages exported: none ModuleDescriptor descriptor_m3 = - new ModuleDescriptor.Builder("m3") + ModuleDescriptor.module("m3") .requires("java.base") .requires("m2") - .conceals("p3") + .contains("p3") .build(); // Set up a ModuleFinder containing all modules for this layer.
--- a/hotspot/test/runtime/modules/AccessCheck/DiffCL_ExpQualOther.java Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/test/runtime/modules/AccessCheck/DiffCL_ExpQualOther.java Mon Dec 12 20:54:41 2016 -0800 @@ -70,7 +70,7 @@ // Packages: p1 // Packages exported: p1 is exported unqualifiedly ModuleDescriptor descriptor_m1 = - new ModuleDescriptor.Builder("m1") + ModuleDescriptor.module("m1") .requires("java.base") .requires("m2") .requires("m3") @@ -82,9 +82,9 @@ // Packages: p2 // Packages exported: p2 is exported to m3 ModuleDescriptor descriptor_m2 = - new ModuleDescriptor.Builder("m2") + ModuleDescriptor.module("m2") .requires("java.base") - .exports("p2", "m3") + .exports("p2", Set.of("m3")) .build(); // Define module: m3 @@ -92,10 +92,10 @@ // Packages: p3 // Packages exported: none ModuleDescriptor descriptor_m3 = - new ModuleDescriptor.Builder("m3") + ModuleDescriptor.module("m3") .requires("java.base") .requires("m2") - .conceals("p3") + .contains("p3") .build(); // Set up a ModuleFinder containing all modules for this layer.
--- a/hotspot/test/runtime/modules/AccessCheck/DiffCL_ExpQualToM1.java Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/test/runtime/modules/AccessCheck/DiffCL_ExpQualToM1.java Mon Dec 12 20:54:41 2016 -0800 @@ -68,7 +68,7 @@ // Packages: p1 // Packages exported: p1 is exported to unqualifiedly ModuleDescriptor descriptor_m1 = - new ModuleDescriptor.Builder("m1") + ModuleDescriptor.module("m1") .requires("java.base") .requires("m2") .exports("p1") @@ -79,9 +79,9 @@ // Packages: p2 // Packages exported: package p2 is exported to m1 ModuleDescriptor descriptor_m2 = - new ModuleDescriptor.Builder("m2") + ModuleDescriptor.module("m2") .requires("java.base") - .exports("p2", "m1") + .exports("p2", Set.of("m1")) .build(); // Set up a ModuleFinder containing all modules for this layer.
--- a/hotspot/test/runtime/modules/AccessCheck/DiffCL_ExpUnqual.java Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/test/runtime/modules/AccessCheck/DiffCL_ExpUnqual.java Mon Dec 12 20:54:41 2016 -0800 @@ -69,7 +69,7 @@ // Packages: p1 // Packages exported: p1 is exported unqualifiedly ModuleDescriptor descriptor_m1 = - new ModuleDescriptor.Builder("m1") + ModuleDescriptor.module("m1") .requires("java.base") .requires("m2") .exports("p1") @@ -80,7 +80,7 @@ // Packages: p2 // Packages exported: package p2 is exported to m1 ModuleDescriptor descriptor_m2 = - new ModuleDescriptor.Builder("m2") + ModuleDescriptor.module("m2") .requires("java.base") .exports("p2") .build();
--- a/hotspot/test/runtime/modules/AccessCheck/DiffCL_PkgNotExp.java Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/test/runtime/modules/AccessCheck/DiffCL_PkgNotExp.java Mon Dec 12 20:54:41 2016 -0800 @@ -68,7 +68,7 @@ // Packages: p1 // Packages exported: p1 is exported unqualifiedly ModuleDescriptor descriptor_m1 = - new ModuleDescriptor.Builder("m1") + ModuleDescriptor.module("m1") .requires("java.base") .requires("m2") .exports("p1") @@ -79,9 +79,9 @@ // Packages: p2 // Packages exported: none ModuleDescriptor descriptor_m2 = - new ModuleDescriptor.Builder("m2") + ModuleDescriptor.module("m2") .requires("java.base") - .conceals("p2") + .contains("p2") .build(); // Set up a ModuleFinder containing all modules for this layer.
--- a/hotspot/test/runtime/modules/AccessCheck/DiffCL_Umod.java Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/test/runtime/modules/AccessCheck/DiffCL_Umod.java Mon Dec 12 20:54:41 2016 -0800 @@ -80,7 +80,7 @@ // Packages: p1 // Packages exported: p1 is exported unqualifiedly ModuleDescriptor descriptor_m1 = - new ModuleDescriptor.Builder("m1") + ModuleDescriptor.module("m1") .requires("java.base") .exports("p1") .build(); @@ -129,7 +129,7 @@ // Packages: p1 // Packages exported: p1 is exported unqualifiedly ModuleDescriptor descriptor_m1 = - new ModuleDescriptor.Builder("m1") + ModuleDescriptor.module("m1") .requires("java.base") .exports("p1") .build(); @@ -178,7 +178,7 @@ // Packages: p1 // Packages exported: p1 is exported unqualifiedly ModuleDescriptor descriptor_m1 = - new ModuleDescriptor.Builder("m1") + ModuleDescriptor.module("m1") .requires("java.base") .exports("p1") .build();
--- a/hotspot/test/runtime/modules/AccessCheck/DiffCL_UmodUpkg.java Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/test/runtime/modules/AccessCheck/DiffCL_UmodUpkg.java Mon Dec 12 20:54:41 2016 -0800 @@ -75,7 +75,7 @@ // Packages: p3 // Packages exported: p3 is exported unqualifiedly ModuleDescriptor descriptor_m1 = - new ModuleDescriptor.Builder("m1") + ModuleDescriptor.module("m1") .requires("java.base") .exports("p3") .build(); @@ -124,7 +124,7 @@ // Packages: p3 // Packages exported: p3 is exported unqualifiedly ModuleDescriptor descriptor_m1 = - new ModuleDescriptor.Builder("m1") + ModuleDescriptor.module("m1") .requires("java.base") .exports("p3") .build();
--- a/hotspot/test/runtime/modules/AccessCheck/ExpQualOther.java Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/test/runtime/modules/AccessCheck/ExpQualOther.java Mon Dec 12 20:54:41 2016 -0800 @@ -70,7 +70,7 @@ // Packages: p1 // Packages exported: p1 is exported unqualifiedly ModuleDescriptor descriptor_m1 = - new ModuleDescriptor.Builder("m1") + ModuleDescriptor.module("m1") .requires("java.base") .requires("m2") .requires("m3") @@ -82,9 +82,9 @@ // Packages: p2 // Packages exported: p2 is exported to m3 ModuleDescriptor descriptor_m2 = - new ModuleDescriptor.Builder("m2") + ModuleDescriptor.module("m2") .requires("java.base") - .exports("p2", "m3") + .exports("p2", Set.of("m3")) .build(); // Define module: m3 @@ -92,10 +92,10 @@ // Packages: p3 // Packages exported: none ModuleDescriptor descriptor_m3 = - new ModuleDescriptor.Builder("m3") + ModuleDescriptor.module("m3") .requires("java.base") .requires("m2") - .conceals("p3") + .contains("p3") .build(); // Set up a ModuleFinder containing all modules for this layer.
--- a/hotspot/test/runtime/modules/AccessCheck/ExpQualToM1.java Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/test/runtime/modules/AccessCheck/ExpQualToM1.java Mon Dec 12 20:54:41 2016 -0800 @@ -58,7 +58,7 @@ // Packages: p1 // Packages exported: p1 is exported unqualifiedly ModuleDescriptor descriptor_m1 = - new ModuleDescriptor.Builder("m1") + ModuleDescriptor.module("m1") .requires("java.base") .requires("m2") .exports("p1") @@ -69,9 +69,9 @@ // Packages: p2 // Packages exported: p2 is exported qualifiedly to m1 ModuleDescriptor descriptor_m2 = - new ModuleDescriptor.Builder("m2") + ModuleDescriptor.module("m2") .requires("java.base") - .exports("p2", "m1") + .exports("p2", Set.of("m1")) .build(); // Set up a ModuleFinder containing all modules for this layer.
--- a/hotspot/test/runtime/modules/AccessCheck/ExpUnqual.java Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/test/runtime/modules/AccessCheck/ExpUnqual.java Mon Dec 12 20:54:41 2016 -0800 @@ -58,7 +58,7 @@ // Packages: p1 // Packages exported: p1 is exported unqualifiedly ModuleDescriptor descriptor_m1 = - new ModuleDescriptor.Builder("m1") + ModuleDescriptor.module("m1") .requires("java.base") .requires("m2") .exports("p1") @@ -69,7 +69,7 @@ // Packages: p2 // Packages exported: p2 is exported unqualifiedly ModuleDescriptor descriptor_m2 = - new ModuleDescriptor.Builder("m2") + ModuleDescriptor.module("m2") .requires("java.base") .exports("p2") .build();
--- a/hotspot/test/runtime/modules/AccessCheck/ExportAllUnnamed.java Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/test/runtime/modules/AccessCheck/ExportAllUnnamed.java Mon Dec 12 20:54:41 2016 -0800 @@ -71,7 +71,7 @@ // Packages: none // Packages exported: none ModuleDescriptor descriptor_m1 = - new ModuleDescriptor.Builder("m1") + ModuleDescriptor.module("m1") .requires("java.base") .requires("m2") .build(); @@ -81,9 +81,9 @@ // Packages: p2 // Packages exported: p2 is exported unqualifiedly ModuleDescriptor descriptor_m2 = - new ModuleDescriptor.Builder("m2") + ModuleDescriptor.module("m2") .requires("java.base") - .exports("p2", "m1") + .exports("p2", Set.of("m1")) .build(); // Set up a ModuleFinder containing all modules for this layer.
--- a/hotspot/test/runtime/modules/AccessCheck/PkgNotExp.java Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/test/runtime/modules/AccessCheck/PkgNotExp.java Mon Dec 12 20:54:41 2016 -0800 @@ -68,7 +68,7 @@ // Packages: p1 // Packages exported: p1 is exported unqualifiedly ModuleDescriptor descriptor_m1 = - new ModuleDescriptor.Builder("m1") + ModuleDescriptor.module("m1") .requires("java.base") .requires("m2") .exports("p1") @@ -79,9 +79,9 @@ // Packages: p2 // Packages exported: none ModuleDescriptor descriptor_m2 = - new ModuleDescriptor.Builder("m2") + ModuleDescriptor.module("m2") .requires("java.base") - .conceals("p2") + .contains("p2") .build(); // Set up a ModuleFinder containing all modules for this layer.
--- a/hotspot/test/runtime/modules/AccessCheck/Umod.java Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/test/runtime/modules/AccessCheck/Umod.java Mon Dec 12 20:54:41 2016 -0800 @@ -80,7 +80,7 @@ // Packages: p1 // Packages exported: p1 is exported unqualifiedly ModuleDescriptor descriptor_m1 = - new ModuleDescriptor.Builder("m1") + ModuleDescriptor.module("m1") .requires("java.base") .exports("p1") .build(); @@ -126,7 +126,7 @@ // Packages: p1 // Packages exported: p1 is exported unqualifiedly ModuleDescriptor descriptor_m1 = - new ModuleDescriptor.Builder("m1") + ModuleDescriptor.module("m1") .requires("java.base") .exports("p1") .build(); @@ -172,7 +172,7 @@ // Packages: p1 // Packages exported: p1 is exported unqualifiedly ModuleDescriptor descriptor_m1 = - new ModuleDescriptor.Builder("m1") + ModuleDescriptor.module("m1") .requires("java.base") .exports("p1") .build();
--- a/hotspot/test/runtime/modules/AccessCheck/UmodDiffCL_ExpQualOther.java Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/test/runtime/modules/AccessCheck/UmodDiffCL_ExpQualOther.java Mon Dec 12 20:54:41 2016 -0800 @@ -70,7 +70,7 @@ // Packages: none // Packages exported: none ModuleDescriptor descriptor_m1 = - new ModuleDescriptor.Builder("m1") + ModuleDescriptor.module("m1") .requires("java.base") .requires("m2") .build(); @@ -80,9 +80,9 @@ // Packages: p2 // Packages exported: none ModuleDescriptor descriptor_m2 = - new ModuleDescriptor.Builder("m2") + ModuleDescriptor.module("m2") .requires("java.base") - .exports("p2", "m1") + .exports("p2", Set.of("m1")) .build(); // Set up a ModuleFinder containing all modules for this layer.
--- a/hotspot/test/runtime/modules/AccessCheck/UmodDiffCL_ExpUnqual.java Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/test/runtime/modules/AccessCheck/UmodDiffCL_ExpUnqual.java Mon Dec 12 20:54:41 2016 -0800 @@ -70,7 +70,7 @@ // Packages: none // Packages exported: none ModuleDescriptor descriptor_m1 = - new ModuleDescriptor.Builder("m1") + ModuleDescriptor.module("m1") .requires("java.base") .requires("m2") .build(); @@ -80,7 +80,7 @@ // Packages: p2 // Packages exported: none ModuleDescriptor descriptor_m2 = - new ModuleDescriptor.Builder("m2") + ModuleDescriptor.module("m2") .requires("java.base") .exports("p2") .build();
--- a/hotspot/test/runtime/modules/AccessCheck/UmodDiffCL_PkgNotExp.java Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/test/runtime/modules/AccessCheck/UmodDiffCL_PkgNotExp.java Mon Dec 12 20:54:41 2016 -0800 @@ -69,7 +69,7 @@ // Packages: none // Packages exported: none ModuleDescriptor descriptor_m1 = - new ModuleDescriptor.Builder("m1") + ModuleDescriptor.module("m1") .requires("java.base") .requires("m2") .build(); @@ -79,9 +79,9 @@ // Packages: p2 // Packages exported: none ModuleDescriptor descriptor_m2 = - new ModuleDescriptor.Builder("m2") + ModuleDescriptor.module("m2") .requires("java.base") - .conceals("p2") + .contains("p2") .build(); // Set up a ModuleFinder containing all modules for this layer.
--- a/hotspot/test/runtime/modules/AccessCheck/UmodUPkg.java Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/test/runtime/modules/AccessCheck/UmodUPkg.java Mon Dec 12 20:54:41 2016 -0800 @@ -75,7 +75,7 @@ // Packages: p3 // Packages exported: p3 is exported unqualifiedly ModuleDescriptor descriptor_m1 = - new ModuleDescriptor.Builder("m1") + ModuleDescriptor.module("m1") .requires("java.base") .exports("p3") .build(); @@ -121,7 +121,7 @@ // Packages: p3 // Packages exported: p3 is exported unqualifiedly ModuleDescriptor descriptor_m1 = - new ModuleDescriptor.Builder("m1") + ModuleDescriptor.module("m1") .requires("java.base") .exports("p3") .build();
--- a/hotspot/test/runtime/modules/AccessCheck/UmodUpkgDiffCL_ExpQualOther.java Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/test/runtime/modules/AccessCheck/UmodUpkgDiffCL_ExpQualOther.java Mon Dec 12 20:54:41 2016 -0800 @@ -70,7 +70,7 @@ // Packages: none // Packages exported: none ModuleDescriptor descriptor_m1 = - new ModuleDescriptor.Builder("m1") + ModuleDescriptor.module("m1") .requires("java.base") .requires("m2") .build(); @@ -80,9 +80,9 @@ // Packages: p6 // Packages exported: p6 exported to m1 ModuleDescriptor descriptor_m2 = - new ModuleDescriptor.Builder("m2") + ModuleDescriptor.module("m2") .requires("java.base") - .exports("p6", "m1") + .exports("p6", Set.of("m1")) .build(); // Set up a ModuleFinder containing all modules for this layer.
--- a/hotspot/test/runtime/modules/AccessCheck/UmodUpkgDiffCL_NotExp.java Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/test/runtime/modules/AccessCheck/UmodUpkgDiffCL_NotExp.java Mon Dec 12 20:54:41 2016 -0800 @@ -69,7 +69,7 @@ // Packages: none // Packages exported: none ModuleDescriptor descriptor_m1 = - new ModuleDescriptor.Builder("m1") + ModuleDescriptor.module("m1") .requires("java.base") .requires("m2") .build(); @@ -79,9 +79,9 @@ // Packages: p6 // Packages exported: none ModuleDescriptor descriptor_m2 = - new ModuleDescriptor.Builder("m2") + ModuleDescriptor.module("m2") .requires("java.base") - .conceals("p6") + .contains("p6") .build(); // Set up a ModuleFinder containing all modules for this layer.
--- a/hotspot/test/runtime/modules/AccessCheck/UmodUpkg_ExpQualOther.java Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/test/runtime/modules/AccessCheck/UmodUpkg_ExpQualOther.java Mon Dec 12 20:54:41 2016 -0800 @@ -69,7 +69,7 @@ // Packages: none // Packages exported: none ModuleDescriptor descriptor_m1 = - new ModuleDescriptor.Builder("m1") + ModuleDescriptor.module("m1") .requires("java.base") .requires("m2") .requires("m3") @@ -80,9 +80,9 @@ // Packages: p6 // Packages exported: p6 is exported to m3 ModuleDescriptor descriptor_m2 = - new ModuleDescriptor.Builder("m2") + ModuleDescriptor.module("m2") .requires("java.base") - .exports("p6", "m3") + .exports("p6", Set.of("m3")) .build(); // Define module: m3 @@ -90,7 +90,7 @@ // Packages: p3 // Packages exported: none ModuleDescriptor descriptor_m3 = - new ModuleDescriptor.Builder("m3") + ModuleDescriptor.module("m3") .requires("java.base") .build();
--- a/hotspot/test/runtime/modules/AccessCheck/UmodUpkg_NotExp.java Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/test/runtime/modules/AccessCheck/UmodUpkg_NotExp.java Mon Dec 12 20:54:41 2016 -0800 @@ -67,7 +67,7 @@ // Packages: none // Packages exported: none ModuleDescriptor descriptor_m1 = - new ModuleDescriptor.Builder("m1") + ModuleDescriptor.module("m1") .requires("java.base") .requires("m2") .build(); @@ -77,9 +77,9 @@ // Packages: p6 // Packages exported: none ModuleDescriptor descriptor_m2 = - new ModuleDescriptor.Builder("m2") + ModuleDescriptor.module("m2") .requires("java.base") - .conceals("p6") + .contains("p6") .build(); // Set up a ModuleFinder containing all modules for this layer.
--- a/hotspot/test/runtime/modules/AccessCheck/Umod_ExpQualOther.java Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/test/runtime/modules/AccessCheck/Umod_ExpQualOther.java Mon Dec 12 20:54:41 2016 -0800 @@ -69,7 +69,7 @@ // Packages: none // Packages exported: none ModuleDescriptor descriptor_m1 = - new ModuleDescriptor.Builder("m1") + ModuleDescriptor.module("m1") .requires("java.base") .requires("m2") .requires("m3") @@ -80,9 +80,9 @@ // Packages: p2 // Packages exported: p2 is exported to m3 ModuleDescriptor descriptor_m2 = - new ModuleDescriptor.Builder("m2") + ModuleDescriptor.module("m2") .requires("java.base") - .exports("p2", "m3") + .exports("p2", Set.of("m3")) .build(); // Define module: m3 @@ -90,7 +90,7 @@ // Packages: p3 // Packages exported: none ModuleDescriptor descriptor_m3 = - new ModuleDescriptor.Builder("m3") + ModuleDescriptor.module("m3") .requires("java.base") .build();
--- a/hotspot/test/runtime/modules/AccessCheck/Umod_ExpUnqual.java Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/test/runtime/modules/AccessCheck/Umod_ExpUnqual.java Mon Dec 12 20:54:41 2016 -0800 @@ -69,7 +69,7 @@ // Packages: none // Packages exported: none ModuleDescriptor descriptor_m1 = - new ModuleDescriptor.Builder("m1") + ModuleDescriptor.module("m1") .requires("java.base") .requires("m2") .build(); @@ -79,7 +79,7 @@ // Packages: p2 // Packages exported: p2 is exported unqualifiedly ModuleDescriptor descriptor_m2 = - new ModuleDescriptor.Builder("m2") + ModuleDescriptor.module("m2") .requires("java.base") .exports("p2") .build();
--- a/hotspot/test/runtime/modules/AccessCheck/Umod_PkgNotExp.java Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/test/runtime/modules/AccessCheck/Umod_PkgNotExp.java Mon Dec 12 20:54:41 2016 -0800 @@ -67,7 +67,7 @@ // Packages: none // Packages exported: none ModuleDescriptor descriptor_m1 = - new ModuleDescriptor.Builder("m1") + ModuleDescriptor.module("m1") .requires("java.base") .requires("m2") .build(); @@ -77,9 +77,9 @@ // Packages: p2 // Packages exported: none ModuleDescriptor descriptor_m2 = - new ModuleDescriptor.Builder("m2") + ModuleDescriptor.module("m2") .requires("java.base") - .conceals("p2") + .contains("p2") .build(); // Set up a ModuleFinder containing all modules for this layer.
--- a/hotspot/test/runtime/modules/IgnoreModulePropertiesTest.java Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/test/runtime/modules/IgnoreModulePropertiesTest.java Mon Dec 12 20:54:41 2016 -0800 @@ -72,6 +72,6 @@ testOption("--add-reads", "xyzz=yyzd", "jdk.module.addreads.0", "WARNING: Unknown module: xyzz"); testOption("--add-exports", "java.base/xyzz=yyzd", "jdk.module.addexports.0", "WARNING: package xyzz not in java.base"); - testOption("--patch-module", "=d", "jdk.module.patch.0", "IllegalArgumentException"); + testOption("--patch-module", "=d", "jdk.module.patch.0", "Missing module name"); } }
--- a/hotspot/test/runtime/modules/JVMAddModulePackage.java Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/test/runtime/modules/JVMAddModulePackage.java Mon Dec 12 20:54:41 2016 -0800 @@ -33,6 +33,7 @@ */ import static jdk.test.lib.Asserts.*; +import java.sql.Time; public class JVMAddModulePackage { @@ -123,6 +124,29 @@ // Expected } + // Add package named "java" to an module defined to a class loader other than the boot or platform loader. + try { + // module1 is defined to a MyClassLoader class loader. + ModuleHelper.AddModulePackage(module1, "java/foo"); + throw new RuntimeException("Failed to get the expected IAE"); + } catch(IllegalArgumentException e) { + if (!e.getMessage().contains("prohibited package name")) { + throw new RuntimeException("Failed to get expected IAE message for prohibited package name: " + e.getMessage()); + } + } + + // Package "javabar" should be ok + ModuleHelper.AddModulePackage(module1, "javabar"); + + // Package named "java" defined to the boot class loader, should be ok + Object module_javabase = module1.getClass().getModule(); + ModuleHelper.AddModulePackage(module_javabase, "java/foo"); + + // Package named "java" defined to the platform class loader, should be ok + // The module java.sql is defined to the platform class loader. + java.sql.Time jst = new java.sql.Time(45000); // milliseconds + Object module_javasql = jst.getClass().getModule(); + ModuleHelper.AddModulePackage(module_javasql, "java/foo"); } static class MyClassLoader extends ClassLoader { }
--- a/hotspot/test/runtime/modules/JVMCanReadModule.java Tue Dec 13 01:34:02 2016 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,97 +0,0 @@ -/* - * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/* - * @test - * @modules java.base/jdk.internal.misc - * @library /test/lib .. - * @build sun.hotspot.WhiteBox - * @compile/module=java.base java/lang/reflect/ModuleHelper.java - * @run main ClassFileInstaller sun.hotspot.WhiteBox - * sun.hotspot.WhiteBox$WhiteBoxPermission - * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI JVMCanReadModule - */ - -import static jdk.test.lib.Asserts.*; - -public class JVMCanReadModule { - - public static void main(String args[]) throws Throwable { - MyClassLoader asking_cl = new MyClassLoader(); - MyClassLoader target_cl = new MyClassLoader(); - Object asking_module, target_module; - boolean result; - - asking_module = ModuleHelper.ModuleObject("asking_module", asking_cl, new String[] { "mypackage" }); - assertNotNull(asking_module, "Module should not be null"); - ModuleHelper.DefineModule(asking_module, "9.0", "asking_module/here", new String[] { "mypackage" }); - target_module = ModuleHelper.ModuleObject("target_module", target_cl, new String[] { "yourpackage" }); - assertNotNull(target_module, "Module should not be null"); - ModuleHelper.DefineModule(target_module, "9.0", "target_module/here", new String[] { "yourpackage" }); - - // Set up relationship - ModuleHelper.AddReadsModule(asking_module, target_module); - - // Null asking_module argument, expect an NPE - try { - result = ModuleHelper.CanReadModule(null, target_module); - throw new RuntimeException("Failed to get the expected NPE"); - } catch(NullPointerException e) { - // Expected - } - - // Bad asking_module argument, expect an IAE - try { - result = ModuleHelper.CanReadModule(asking_cl, target_module); - throw new RuntimeException("Failed to get the expected IAE"); - } catch(IllegalArgumentException e) { - // Expected - } - - // Bad target_module argument, expect an IAE - try { - result = ModuleHelper.CanReadModule(asking_module, asking_cl); - throw new RuntimeException("Failed to get the expected IAE"); - } catch(IllegalArgumentException e) { - // Expected - } - - // Verify strict modules can not read the unnamed module - result = ModuleHelper.CanReadModule(target_module, null); - assertFalse(result, "target_module can not read unnamed module"); - - // Verify asking_module can read itself - result = ModuleHelper.CanReadModule(asking_module, asking_module); - assertTrue(result, "asking_module can read itself"); - - // Verify asking_module can read target_module - result = ModuleHelper.CanReadModule(asking_module, target_module); - assertTrue(result, "asking_module can read target_module"); - - // Verify target_module cannot read asking_module - result = ModuleHelper.CanReadModule(target_module, asking_module); - assertTrue(!result, "target_module cannot read asking_module"); - } - - static class MyClassLoader extends ClassLoader { } -}
--- a/hotspot/test/runtime/modules/JVMDefineModule.java Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/test/runtime/modules/JVMDefineModule.java Mon Dec 12 20:54:41 2016 -0800 @@ -33,6 +33,7 @@ */ import static jdk.test.lib.Asserts.*; +import java.sql.Time; public class JVMDefineModule { @@ -238,6 +239,39 @@ } } + // Package named "java" defined to a class loader other than the boot or platform class loader, expect an IAE + m = ModuleHelper.ModuleObject("modulejavapkg1", cl, new String[] { "java/foo" }); + try { + // module m is defined to an instance of MyClassLoader class loader + ModuleHelper.DefineModule(m, "9.0", "modulejavapkg1", new String[] { "java/foo" }); + throw new RuntimeException("Failed to get expected IAE for package java/foo"); + } catch(IllegalArgumentException e) { + if (!e.getMessage().contains("prohibited package name")) { + throw new RuntimeException("Failed to get expected IAE message for prohibited package name: " + e.getMessage()); + } + } + + // Package named "javabar" defined to a class loader other than the boot or platform class loader, should be ok + m = ModuleHelper.ModuleObject("modulejavapkg2", cl, new String[] { "javabar" }); + assertNotNull(m, "Module should not be null"); + ModuleHelper.DefineModule(m, "9.0", "modulejavapkg2", new String[] { "javabar" }); + + // Package named "java" defined to the boot class loader, should be ok + // m's type is a java.lang.Object, module is java.base + // java.base module is defined to the boot loader + ClassLoader boot_loader = m.getClass().getClassLoader(); + m = ModuleHelper.ModuleObject("modulejavapkg3", boot_loader, new String[] { "java/foo" }); + assertNotNull(m, "Module should not be null"); + ModuleHelper.DefineModule(m, "9.0", "modulejavapkg3", new String[] { "java/foo" }); + + // Package named "java" defined to the platform class loader, should be ok + // java.sql module defined to the platform class loader. + java.sql.Time jst = new java.sql.Time(45 * 1000); + ClassLoader platform_loader = jst.getClass().getClassLoader(); + m = ModuleHelper.ModuleObject("modulejavapkg4", platform_loader, new String[] { "java/foo" }); + assertNotNull(m, "Module should not be null"); + ModuleHelper.DefineModule(m, "9.0", "modulejavapkg4", new String[] { "java/foo" }); + // module version that is null, should be okay m = ModuleHelper.ModuleObject("module8", cl, new String[] { "a_package_8" }); assertNotNull(m, "Module should not be null");
--- a/hotspot/test/runtime/modules/JVMIsExportedToModule.java Tue Dec 13 01:34:02 2016 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,124 +0,0 @@ -/* - * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/* - * @test - * @modules java.base/jdk.internal.misc - * @library /test/lib .. - * @build sun.hotspot.WhiteBox - * @compile/module=java.base java/lang/reflect/ModuleHelper.java - * @run main ClassFileInstaller sun.hotspot.WhiteBox - * sun.hotspot.WhiteBox$WhiteBoxPermission - * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI JVMIsExportedToModule - */ - -import static jdk.test.lib.Asserts.*; - -public class JVMIsExportedToModule { - - public static void main(String args[]) throws Throwable { - MyClassLoader from_cl = new MyClassLoader(); - MyClassLoader to_cl = new MyClassLoader(); - Object from_module, to_module; - boolean result; - - from_module = ModuleHelper.ModuleObject("from_module", from_cl, new String[] { "mypackage", "this/package" }); - assertNotNull(from_module, "Module from_module should not be null"); - ModuleHelper.DefineModule(from_module, "9.0", "from_module/here", new String[] { "mypackage", "this/package" }); - to_module = ModuleHelper.ModuleObject("to_module", to_cl, new String[] { "yourpackage", "that/package" }); - assertNotNull(to_module, "Module to_module should not be null"); - ModuleHelper.DefineModule(to_module, "9.0", "to_module/here", new String[] { "yourpackage", "that/package" }); - - Object unnamed_module = JVMIsExportedToModule.class.getModule(); - assertNotNull(unnamed_module, "Module unnamed_module should not be null"); - - // Null from_module argument, expect an NPE - try { - result = ModuleHelper.IsExportedToModule(null, "mypackage", to_module); - throw new RuntimeException("Failed to get the expected NPE for null from_module"); - } catch(NullPointerException e) { - // Expected - } - - // Null to_module argument, expect an NPE - try { - result = ModuleHelper.IsExportedToModule(from_module, "mypackage", null); - throw new RuntimeException("Failed to get expected NPE for null to_module"); - } catch(NullPointerException e) { - // Expected - } - - // Null package argument, expect an NPE - try { - result = ModuleHelper.IsExportedToModule(from_module, null, to_module); - throw new RuntimeException("Failed to get the expected NPE for null package"); - } catch(NullPointerException e) { - // Expected - } - - // Bad from_module argument, expect an IAE - try { - result = ModuleHelper.IsExportedToModule(to_cl, "mypackage", to_module); - throw new RuntimeException("Failed to get the expected IAE for bad from_module"); - } catch(IllegalArgumentException e) { - // Expected - } - - // Bad to_module argument, expect an IAE - try { - result = ModuleHelper.IsExportedToModule(from_module, "mypackage", from_cl); - throw new RuntimeException("Failed to get the expected IAE"); - } catch(IllegalArgumentException e) { - // Expected - } - - // Check that package is exported to its own module - result = ModuleHelper.IsExportedToModule(from_module, "mypackage", from_module); - assertTrue(result, "Package is always exported to itself"); - - // Package is not in to_module, expect an IAE - try { - result = ModuleHelper.IsExportedToModule(from_module, "yourpackage", from_cl); - throw new RuntimeException("Failed to get the expected IAE for package not in to_module"); - } catch(IllegalArgumentException e) { - // Expected - } - - // Package is accessible when exported to unnamed module - ModuleHelper.AddModuleExportsToAll(from_module, "mypackage"); - result = ModuleHelper.IsExportedToModule(from_module, "mypackage", to_module); - assertTrue(result, "Package exported to unnamed module is visible to named module"); - - result = ModuleHelper.IsExportedToModule(from_module, "mypackage", unnamed_module); - assertTrue(result, "Package exported to unnamed module is visible to unnamed module"); - - // Package is accessible only to named module when exported to named module - ModuleHelper.AddModuleExports(from_module, "this/package", to_module); - result = ModuleHelper.IsExportedToModule(from_module, "this/package", to_module); - assertTrue(result, "Package exported to named module is visible to named module"); - result = ModuleHelper.IsExportedToModule(from_module, "this/package", unnamed_module); - assertTrue(!result, "Package exported to named module is not visible to unnamed module"); - } - - static class MyClassLoader extends ClassLoader { } -}
--- a/hotspot/test/runtime/modules/ModuleHelper.java Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/test/runtime/modules/ModuleHelper.java Mon Dec 12 20:54:41 2016 -0800 @@ -73,17 +73,6 @@ java.lang.reflect.ModuleHelper.addExportsNoSync((Module)m, pkg, (Module)null); } - public static boolean CanReadModule(Object from, Object to) throws Throwable { - WhiteBox wb = WhiteBox.getWhiteBox(); - return wb.CanReadModule(from, to); - } - - public static boolean IsExportedToModule(Object from, String pkg, - Object to) throws Throwable { - WhiteBox wb = WhiteBox.getWhiteBox(); - return wb.IsExportedToModule(from, pkg, to); - } - public static Module ModuleObject(String name, ClassLoader loader, String[] pkgs) throws Throwable { Set<String> pkg_set = new HashSet<>(); if (pkgs != null) { @@ -95,7 +84,7 @@ } ModuleDescriptor descriptor = - new ModuleDescriptor.Builder(name).conceals(pkg_set).build(); + ModuleDescriptor.module(name).contains(pkg_set).build(); URI uri = URI.create("module:/" + name); return java.lang.reflect.ModuleHelper.newModule(loader, descriptor);
--- a/hotspot/test/runtime/modules/ModuleStress/ModuleNonBuiltinCLMain.java Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/test/runtime/modules/ModuleStress/ModuleNonBuiltinCLMain.java Mon Dec 12 20:54:41 2016 -0800 @@ -57,7 +57,7 @@ // Packages: p1 // Packages exported: p1 is exported to unqualifiedly ModuleDescriptor descriptor_m1 = - new ModuleDescriptor.Builder("m1") + ModuleDescriptor.module("m1") .requires("java.base") .requires("m2") .exports("p1") @@ -71,7 +71,7 @@ targets.add("m1"); targets.add("m3"); ModuleDescriptor descriptor_m2 = - new ModuleDescriptor.Builder("m2") + ModuleDescriptor.module("m2") .requires("java.base") .requires("m3") .exports("p2", targets) @@ -82,7 +82,7 @@ // Packages: p3 // Packages exported: none ModuleDescriptor descriptor_m3 = - new ModuleDescriptor.Builder("m3") + ModuleDescriptor.module("m3") .requires("java.base") .build();
--- a/hotspot/test/runtime/modules/ModuleStress/ModuleSameCLMain.java Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/test/runtime/modules/ModuleStress/ModuleSameCLMain.java Mon Dec 12 20:54:41 2016 -0800 @@ -55,7 +55,7 @@ // Packages: p1 // Packages exported: p1 is exported to unqualifiedly ModuleDescriptor descriptor_m1 = - new ModuleDescriptor.Builder("m1") + ModuleDescriptor.module("m1") .requires("java.base") .requires("m2") .exports("p1") @@ -66,9 +66,9 @@ // Packages: p2 // Packages exported: package p2 is exported to m1 ModuleDescriptor descriptor_m2 = - new ModuleDescriptor.Builder("m2") + ModuleDescriptor.module("m2") .requires("java.base") - .exports("p2", "m1") + .exports("p2", Set.of("m1")) .build(); // Set up a ModuleFinder containing all modules for this layer.
--- a/hotspot/test/runtime/modules/getModuleJNI/GetModule.java Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/test/runtime/modules/getModuleJNI/GetModule.java Mon Dec 12 20:54:41 2016 -0800 @@ -35,10 +35,6 @@ } static native Object callGetModule(java.lang.Class clazz); - static native void callAddModuleReads(java.lang.reflect.Module from_module, - java.lang.reflect.Module source_module); - static native boolean callCanReadModule(java.lang.reflect.Module asking_module, - java.lang.reflect.Module source_module); public static void main(String[] args) { Module module; @@ -144,71 +140,6 @@ } catch(NullPointerException e) { // Expected } - - - // Tests for JNI_AddModuleReads() // - - Module javaScriptingModule = javax.script.Bindings.class.getModule(); - if (javaScriptingModule == null) { - throw new RuntimeException("Failed to get java.scripting module"); - } - Module javaLoggingModule = java.util.logging.Level.class.getModule(); - if (javaLoggingModule == null) { - throw new RuntimeException("Failed to get java.logging module"); - } - - if (callCanReadModule(javaLoggingModule, javaScriptingModule)) { - throw new RuntimeException( - "Expected FALSE because javaLoggingModule cannot read javaScriptingModule"); - } - - callAddModuleReads(javaLoggingModule, javaScriptingModule); - callAddModuleReads(javaScriptingModule, GetModule.class.getModule()); // unnamed module - - try { - callAddModuleReads(null, javaLoggingModule); - throw new RuntimeException( - "Expected NullPointerException for bad from_module not thrown"); - } catch(NullPointerException e) { - // expected - } - - try { - callAddModuleReads(javaLoggingModule, null); - throw new RuntimeException( - "Expected NullPointerException for bad source_module not thrown"); - } catch(NullPointerException e) { - // expected - } - - - // Tests for JNI_CanReadModule() // - - if (!callCanReadModule(javaLoggingModule, javaScriptingModule)) { - throw new RuntimeException( - "Expected TRUE because javaLoggingModule can read javaScriptingModule"); - } - - if (callCanReadModule(javaBaseModule, javaScriptingModule)) { - throw new RuntimeException( - "Expected FALSE because javaBaseModule cannnot read javaScriptingModule"); - } - - try { - callCanReadModule(javaLoggingModule, null); - throw new RuntimeException( - "Expected NullPointerException for bad sourceModule not thrown"); - } catch(NullPointerException e) { - // expected - } - - try { - callCanReadModule(null, javaScriptingModule); - throw new RuntimeException( - "Expected NullPointerException for bad asking_module not thrown"); - } catch(NullPointerException e) { - // expected - } } static class MyClassLoader extends ClassLoader { }
--- a/hotspot/test/runtime/modules/getModuleJNI/libGetModule.c Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/test/runtime/modules/getModuleJNI/libGetModule.c Mon Dec 12 20:54:41 2016 -0800 @@ -28,15 +28,3 @@ jobject res = (jobject)((*env)->GetModule(env, clazz)); return res; } - -JNIEXPORT void JNICALL -Java_GetModule_callAddModuleReads(JNIEnv *env, jclass unused, jobject from_module, jobject source_module) { - (*env)->AddModuleReads(env, from_module, source_module); -} - -JNIEXPORT jboolean JNICALL -Java_GetModule_callCanReadModule(JNIEnv *env, jclass unused, jobject asking_module, jobject source_module) { - jboolean res = (*env)->CanReadModule(env, asking_module, source_module); - return res; -} -
--- a/hotspot/test/serviceability/attach/AttachWithStalePidFile.java Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/test/serviceability/attach/AttachWithStalePidFile.java Mon Dec 12 20:54:41 2016 -0800 @@ -26,7 +26,8 @@ * @bug 7162400 * @key regression * @summary Regression test for attach issue where stale pid files in /tmp lead to connection issues - * @modules java.base/jdk.internal.misc + * @modules java.base/jdk.internal.misc:open + * @modules java.base/java.lang:open * @modules jdk.attach/sun.tools.attach * @library /test/lib * @run main AttachWithStalePidFile
--- a/hotspot/test/serviceability/jdwp/AllModulesCommandTest.java Tue Dec 13 01:34:02 2016 +0000 +++ b/hotspot/test/serviceability/jdwp/AllModulesCommandTest.java Mon Dec 12 20:54:41 2016 -0800 @@ -32,7 +32,7 @@ * @test * @summary Tests the modules-related JDWP commands * @library /test/lib - * @ignore 8168478 + * @ignore 8170541 * @modules jdk.jdwp.agent * @modules java.base/jdk.internal.misc * @compile AllModulesCommandTestDebuggee.java @@ -96,8 +96,7 @@ if (modName != null) { // JDWP reports unnamed modules, ignore them jdwpModuleNames.add(modName); } - // Assert the JDWP CANREAD and CLASSLOADER commands - assertCanRead(modId, modName); + // Assert the CLASSLOADER commands assertClassLoader(modId, modName); } @@ -134,13 +133,6 @@ } } - private void assertCanRead(long modId, String modName) throws IOException { - // Simple assert for the CANREAD command - JdwpCanReadReply reply = new JdwpCanReadCmd(modId, modId).send(channel); - assertReply(reply); - assertTrue(reply.canRead(), "canRead() reports false for reading from the same module '" + modName + "', moduleId=" + modId); - } - private void assertClassLoader(long modId, String modName) throws IOException { // Verify that the module classloader id is valid JdwpClassLoaderReply reply = new JdwpClassLoaderCmd(modId).send(channel);
--- a/hotspot/test/serviceability/jdwp/JdwpCanReadCmd.java Tue Dec 13 01:34:02 2016 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,35 +0,0 @@ -/* - * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/** - * The JDWP CANREAD command - */ -public class JdwpCanReadCmd extends JdwpCmd<JdwpCanReadReply> { - - public JdwpCanReadCmd(long modId, long srcModId) { - super(3, 18, JdwpCanReadReply.class, 2 * refLen()); - putRefId(modId); - putRefId(srcModId); - } - -}
--- a/hotspot/test/serviceability/jdwp/JdwpCanReadReply.java Tue Dec 13 01:34:02 2016 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,41 +0,0 @@ -/* - * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ -import java.io.DataInputStream; -import java.io.IOException; - -/** - * The reply to the JDWP CANREAD command - */ -public class JdwpCanReadReply extends JdwpReply { - - private boolean canRead; - - protected void parseData(DataInputStream ds) throws IOException { - canRead = (ds.read() != 0); - } - - public boolean canRead() { - return canRead; - } - -}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/hotspot/test/serviceability/jvmti/AddModuleExportsAndOpens/MyPackage/AddModuleExportsAndOpensTest.java Mon Dec 12 20:54:41 2016 -0800 @@ -0,0 +1,59 @@ +/* + * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package MyPackage; + +/** + * @test + * @summary Verifies the JVMTI AddModuleExports and AddModuleOpens API + * @compile AddModuleExportsAndOpensTest.java + * @run main/othervm/native -agentlib:AddModuleExportsAndOpensTest MyPackage.AddModuleExportsAndOpensTest + */ + +import java.io.PrintStream; +import java.lang.reflect.Module; + +public class AddModuleExportsAndOpensTest { + + static { + try { + System.loadLibrary("AddModuleExportsAndOpensTest"); + } catch (UnsatisfiedLinkError ule) { + System.err.println("Could not load AddModuleExportsAndOpensTest library"); + System.err.println("java.library.path: " + + System.getProperty("java.library.path")); + throw ule; + } + } + + native static int check(Module baseModule, Module thisModule); + + public static void main(String args[]) { + Module baseModule = Object.class.getModule(); + Module thisModule = AddModuleExportsAndOpensTest.class.getClassLoader().getUnnamedModule(); + int status = check(baseModule, thisModule); + if (status != 0) { + throw new RuntimeException("Non-zero status returned from the agent: " + status); + } + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/hotspot/test/serviceability/jvmti/AddModuleExportsAndOpens/libAddModuleExportsAndOpensTest.c Mon Dec 12 20:54:41 2016 -0800 @@ -0,0 +1,298 @@ +/* + * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +#include <stdio.h> +#include <string.h> +#include "jvmti.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef JNI_ENV_ARG + +#ifdef __cplusplus +#define JNI_ENV_ARG(x, y) y +#define JNI_ENV_PTR(x) x +#else +#define JNI_ENV_ARG(x,y) x, y +#define JNI_ENV_PTR(x) (*x) +#endif + +#endif + +#define TranslateError(err) "JVMTI error" + +#define PASSED 0 +#define FAILED 2 + +static const char *EXC_CNAME = "java/lang/Exception"; +static const char* MOD_CNAME = "Ljava/lang/reflect/Module;"; + +static jvmtiEnv *jvmti = NULL; +static jint result = PASSED; + +static jint Agent_Initialize(JavaVM *jvm, char *options, void *reserved); + +JNIEXPORT +jint JNICALL Agent_OnLoad(JavaVM *jvm, char *options, void *reserved) { + return Agent_Initialize(jvm, options, reserved); +} + +JNIEXPORT +jint JNICALL Agent_OnAttach(JavaVM *jvm, char *options, void *reserved) { + return Agent_Initialize(jvm, options, reserved); +} + +JNIEXPORT +jint JNICALL JNI_OnLoad(JavaVM *jvm, void *reserved) { + return JNI_VERSION_1_8; +} + +static +jint Agent_Initialize(JavaVM *jvm, char *options, void *reserved) { + jint res = JNI_ENV_PTR(jvm)->GetEnv(JNI_ENV_ARG(jvm, (void **) &jvmti), + JVMTI_VERSION_9); + if (res != JNI_OK || jvmti == NULL) { + printf(" Error: wrong result of a valid call to GetEnv!\n"); + return JNI_ERR; + } + + return JNI_OK; +} + +static +jint throw_exc(JNIEnv *env, char *msg) { + jclass exc_class = JNI_ENV_PTR(env)->FindClass(JNI_ENV_ARG(env, EXC_CNAME)); + + if (exc_class == NULL) { + printf("throw_exc: Error in FindClass(env, %s)\n", EXC_CNAME); + return -1; + } + return JNI_ENV_PTR(env)->ThrowNew(JNI_ENV_ARG(env, exc_class), msg); +} + +static +jclass jlrM(JNIEnv *env) { + jclass cls = NULL; + + cls = JNI_ENV_PTR(env)->FindClass(JNI_ENV_ARG(env, MOD_CNAME)); + if (cls == NULL) { + printf(" Error in JNI FindClass: %s\n", MOD_CNAME); + } + return cls; +} + +jmethodID +get_method(JNIEnv *env, jclass clazz, const char * name, const char *sig) { + jmethodID method = NULL; + + method = JNI_ENV_PTR(env)->GetMethodID(JNI_ENV_ARG(env, clazz), name, sig); + if (method == NULL) { + printf(" Error in JNI GetMethodID %s with signature %s", name, sig); + } + return method; +} + +static +jboolean is_exported(JNIEnv *env, jobject module, const char* pkg, jboolean open) { + static jmethodID mIsExported = NULL; + jstring jstr = NULL; + jboolean res = JNI_FALSE; + + if (mIsExported == NULL) { + const char* sign = "(Ljava/lang/String;)Z"; + const char* name = open ? "isOpen" : "isExported"; + mIsExported = get_method(env, jlrM(env), name, sign); + } + jstr = JNI_ENV_PTR(env)->NewStringUTF(JNI_ENV_ARG(env, pkg)); + res = JNI_ENV_PTR(env)->CallBooleanMethod(JNI_ENV_ARG(env, module), + mIsExported, jstr); + return res; +} + +static +jboolean is_exported_to(JNIEnv *env, jobject module, const char* pkg, jobject to_module, + jboolean open) { + static jmethodID mIsExportedTo = NULL; + jstring jstr = NULL; + jboolean res = JNI_FALSE; + + if (mIsExportedTo == NULL) { + const char* sign = "(Ljava/lang/String;Ljava/lang/reflect/Module;)Z"; + const char* name = open ? "isOpen" : "isExported"; + mIsExportedTo = get_method(env, jlrM(env), name, sign); + } + jstr = JNI_ENV_PTR(env)->NewStringUTF(JNI_ENV_ARG(env, pkg)); + res = JNI_ENV_PTR(env)->CallBooleanMethod(JNI_ENV_ARG(env, module), + mIsExportedTo, jstr, to_module); + return res; +} + +static +jvmtiError add_module_exports(jobject baseModule, const char* pkg, jobject thisModule, + jboolean open) { + jvmtiError err = JVMTI_ERROR_NONE; + if (open) { + err = (*jvmti)->AddModuleOpens(jvmti, baseModule, pkg, thisModule); + } else { + err = (*jvmti)->AddModuleExports(jvmti, baseModule, pkg, thisModule); + } + return err; +} + +static +jint check_add_module_exports(JNIEnv *env, + jclass cls, + jobject baseModule, + jobject thisModule, + jboolean open) {