# HG changeset patch # User chegar # Date 1458833677 0 # Node ID 07d6492e286cd77957f752b88e898bb90f59e607 # Parent 7ab530dd6f107af167a276b748c033cf767a881f# Parent 7b3c93ca87854aeffe7d50e439b0297a681dd99c Merge diff -r 7ab530dd6f10 -r 07d6492e286c jdk/make/gensrc/GensrcMisc.gmk --- a/jdk/make/gensrc/GensrcMisc.gmk Thu Mar 24 15:32:54 2016 +0000 +++ b/jdk/make/gensrc/GensrcMisc.gmk Thu Mar 24 15:34:37 2016 +0000 @@ -23,7 +23,7 @@ # questions. # -########################################################################################## +################################################################################ # Install the launcher name, release version string, full version # string and the runtime name into the VersionProps.java file. @@ -39,110 +39,68 @@ GENSRC_JAVA_BASE += $(BUILD_VERSION_JAVA) -########################################################################################## - -GENSRC_JAVA_BASE += $(SUPPORT_OUTPUTDIR)/gensrc/java.base/sun/nio/ch/SocketOptionRegistry.java - -GENSRC_SOR_SRC := $(JDK_TOPDIR)/make/src/native/genconstants/ch -GENSRC_SOR_SRC_FILE := genSocketOptionRegistry.c -GENSRC_SOR_BIN := $(BUILDTOOLS_OUTPUTDIR)/native/genSocketOptionRegistry - -SOR_COPYRIGHT_YEARS = $(shell $(CAT) $(GENSRC_SOR_SRC)/$(GENSRC_SOR_SRC_FILE) | \ - $(NAWK) '/^.*Copyright.*Oracle/ { printf "%s %s",$$4,$$5 }') +################################################################################ -$(eval $(call SetupNativeCompilation, BUILD_GENSRC_SOR_EXE, \ - SRC := $(GENSRC_SOR_SRC), \ - INCLUDE_FILES := $(GENSRC_SOR_SRC_FILE), \ - CFLAGS_windows := -nologo, \ - LDFLAGS_windows := -nologo, \ - TOOLCHAIN := TOOLCHAIN_BUILD, \ - OBJECT_DIR := $(GENSRC_SOR_BIN), \ - OUTPUT_DIR := $(GENSRC_SOR_BIN), \ - PROGRAM := genSocketOptionRegistry)) - -SOR_PREGEN_FILE := $(JDK_TOPDIR)/src/closed/java.base/$(OPENJDK_TARGET_OS)/classes/sun/nio/ch/SocketOptionRegistry-$(OPENJDK_TARGET_OS)-$(OPENJDK_TARGET_CPU_ARCH).java.template - -ifeq ($(wildcard $(SOR_PREGEN_FILE)), ) - $(SUPPORT_OUTPUTDIR)/gensrc/java.base/sun/nio/ch/SocketOptionRegistry.java: $(BUILD_GENSRC_SOR_EXE_TARGET) - $(MKDIR) -p $(@D) - $(RM) $@ $@.tmp - NAWK="$(NAWK)" SH="$(SH)" $(SH) -e \ - $(JDK_TOPDIR)/make/scripts/addNotices.sh "$(SOR_COPYRIGHT_YEARS)" > $@.tmp - $(BUILD_GENSRC_SOR_EXE_TARGET) >> $@.tmp - $(MV) $@.tmp $@ -else - $(SUPPORT_OUTPUTDIR)/gensrc/java.base/sun/nio/ch/SocketOptionRegistry.java: $(SOR_PREGEN_FILE) - $(call install-file) +ifneq ($(filter $(TOOLCHAIN_TYPE), gcc clang), ) + # Need to specify language since the template file has a non standard + # extension. + CPP_FLAGS += -x c +else ifeq ($(TOOLCHAIN_TYPE), microsoft) + CPP_FLAGS += -nologo endif -########################################################################################## +# Generate a java source file from a template through the C preprocessor for the +# target system. First extract the copyright notice at the start of the file. +# Run the preprocessor. Filter out the default compiler stderr output on +# Windows. Filter out all the header files output. Remove all "PREFIX_" strings +# that were added to variable references in the template files to avoid being +# matched by the preprocessor. Remove any #line directives left by the +# preprocessor. +define generate-preproc-src + $(call MakeDir, $(@D)) + ( $(NAWK) '/@@END_COPYRIGHT@@/{exit}1' $< && \ + $(CPP) $(CPP_FLAGS) $(SYSROOT_CFLAGS) $< \ + 2> >($(GREP) -v '^$(&2) \ + | $(NAWK) '/@@START_HERE@@/,0' \ + | $(SED) -e 's/@@START_HERE@@/\/\/ AUTOMATICALLY GENERATED FILE - DO NOT EDIT/' \ + -e 's/PREFIX_//' -e 's/^#.*//' \ + ) > $@ +endef + +GENSRC_SOR_FILE += $(SUPPORT_OUTPUTDIR)/gensrc/java.base/sun/nio/ch/SocketOptionRegistry.java + +$(GENSRC_SOR_FILE): \ + $(JDK_TOPDIR)/src/java.base/share/classes/sun/nio/ch/SocketOptionRegistry.java.template + $(generate-preproc-src) + +GENSRC_JAVA_BASE += $(GENSRC_SOR_FILE) + +################################################################################ ifneq ($(OPENJDK_TARGET_OS), windows) - GENSRC_JAVA_BASE += $(SUPPORT_OUTPUTDIR)/gensrc/java.base/sun/nio/fs/UnixConstants.java - - GENSRC_UC_SRC := $(JDK_TOPDIR)/make/src/native/genconstants/fs - GENSRC_UC_SRC_FILE := genUnixConstants.c - GENSRC_UC_BIN := $(BUILDTOOLS_OUTPUTDIR)/native/genUnixConstants - - UC_COPYRIGHT_YEARS = $(shell $(CAT) $(GENSRC_UC_SRC)/$(GENSRC_UC_SRC_FILE) | \ - $(NAWK) '/^.*Copyright.*Oracle/ { printf "%s %s",$$4,$$5 }') + GENSRC_UC_FILE := $(SUPPORT_OUTPUTDIR)/gensrc/java.base/sun/nio/fs/UnixConstants.java - $(eval $(call SetupNativeCompilation, BUILD_GENSRC_UC_EXE, \ - SRC := $(GENSRC_UC_SRC), \ - INCLUDE_FILES := $(GENSRC_UC_SRC_FILE), \ - TOOLCHAIN := TOOLCHAIN_BUILD, \ - OBJECT_DIR := $(GENSRC_UC_BIN), \ - OUTPUT_DIR := $(GENSRC_UC_BIN), \ - PROGRAM := genUnixConstants)) - - UC_PREGEN_FILE := $(JDK_TOPDIR)/src/closed/java.base/$(OPENJDK_TARGET_OS)/classes/sun/nio/fs/UnixConstants-$(OPENJDK_TARGET_OS)-$(OPENJDK_TARGET_CPU_ARCH).java.template + $(GENSRC_UC_FILE): \ + $(JDK_TOPDIR)/src/java.base/unix/classes/sun/nio/fs/UnixConstants.java.template + $(generate-preproc-src) - ifeq ($(wildcard $(UC_PREGEN_FILE)), ) - $(SUPPORT_OUTPUTDIR)/gensrc/java.base/sun/nio/fs/UnixConstants.java: $(BUILD_GENSRC_UC_EXE_TARGET) - $(MKDIR) -p $(@D) - $(RM) $@ $@.tmp - NAWK="$(NAWK)" SH="$(SH)" $(SH) -e \ - $(JDK_TOPDIR)/make/scripts/addNotices.sh "$(UC_COPYRIGHT_YEARS)" > $@.tmp - $(BUILD_GENSRC_UC_EXE_TARGET) >> $@.tmp - $(MV) $@.tmp $@ - else - $(SUPPORT_OUTPUTDIR)/gensrc/java.base/sun/nio/fs/UnixConstants.java: $(UC_PREGEN_FILE) - $(call install-file) - endif + GENSRC_JAVA_BASE += $(GENSRC_UC_FILE) endif -########################################################################################## +################################################################################ ifeq ($(OPENJDK_TARGET_OS), solaris) - GENSRC_JAVA_BASE += $(SUPPORT_OUTPUTDIR)/gensrc/java.base/sun/nio/fs/SolarisConstants.java - - GENSRC_SOL_SRC := $(JDK_TOPDIR)/make/src/native/genconstants/fs - GENSRC_SOL_SRC_FILE := genSolarisConstants.c - GENSRC_SOL_BIN := $(BUILDTOOLS_OUTPUTDIR)/native/genSolarisConstants - - SOL_COPYRIGHT_YEARS = $(shell $(CAT) $(GENSRC_SOL_SRC)/$(GENSRC_SOL_SRC_FILE) | \ - $(NAWK) '/^.*Copyright.*Oracle/ { printf "%s %s",$$4,$$5 }') + GENSRC_SC_FILE := $(SUPPORT_OUTPUTDIR)/gensrc/java.base/sun/nio/fs/SolarisConstants.java - $(eval $(call SetupNativeCompilation, BUILD_GENSRC_SOL_EXE, \ - SRC := $(GENSRC_SOL_SRC), \ - INCLUDE_FILES := $(GENSRC_SOL_SRC_FILE), \ - TOOLCHAIN := TOOLCHAIN_BUILD, \ - OBJECT_DIR := $(GENSRC_SOL_BIN), \ - OUTPUT_DIR := $(GENSRC_SOL_BIN), \ - PROGRAM := genSolarisConstants)) + $(GENSRC_SC_FILE): \ + $(JDK_TOPDIR)/src/java.base/solaris/classes/sun/nio/fs/SolarisConstants.java.template + $(generate-preproc-src) - $(SUPPORT_OUTPUTDIR)/gensrc/java.base/sun/nio/fs/SolarisConstants.java: $(BUILD_GENSRC_SOL_EXE_TARGET) - $(MKDIR) -p $(@D) - $(RM) $@ $@.tmp - NAWK="$(NAWK)" SH="$(SH)" $(SH) -e \ - $(JDK_TOPDIR)/make/scripts/addNotices.sh "$(SOL_COPYRIGHT_YEARS)" > $@.tmp - $(BUILD_GENSRC_SOL_EXE_TARGET) >> $@.tmp - $(MV) $@.tmp $@ - + GENSRC_JAVA_BASE += $(GENSRC_SC_FILE) endif -########################################################################################## +################################################################################ diff -r 7ab530dd6f10 -r 07d6492e286c jdk/make/src/native/genconstants/ch/genSocketOptionRegistry.c --- a/jdk/make/src/native/genconstants/ch/genSocketOptionRegistry.c Thu Mar 24 15:32:54 2016 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,147 +0,0 @@ -/* - * Copyright (c) 2008, 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. 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 - * 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 -#ifdef _WIN32 -#include -#include -#else -#include -#include -#include -#include -#endif - -/* Defines SO_REUSEPORT */ -#if !defined(SO_REUSEPORT) -#ifdef _WIN32 -#define SO_REUSEPORT 0 -#elif __linux__ -#define SO_REUSEPORT 15 -#elif __solaris__ -#define SO_REUSEPORT 0x100e -#elif defined(AIX) || defined(MACOSX) -#define SO_REUSEPORT 0x0200 -#else -#define SO_REUSEPORT 0 -#endif -#endif - -/** - * Generates sun.nio.ch.SocketOptionRegistry, a class that maps Java-level - * socket options to the platform specific level and option. - */ - -static void out(char* s) { - printf("%s\n", s); -} - -static void emit(const char *name, char * family, int level, int optname) { - printf(" map.put(new RegistryKey(%s, %s),", name, family); - printf(" new OptionKey(%d, %d));\n", level, optname); -} - -static void emit_unspec(const char *name, int level, int optname) { - emit(name, "Net.UNSPEC", level, optname); -} - -static void emit_inet(const char *name, int level, int optname) { - emit(name, "StandardProtocolFamily.INET", level, optname); -} - -static void emit_inet6(const char *name, int level, int optname) { - emit(name, "StandardProtocolFamily.INET6", level, optname); -} - -int main(int argc, const char* argv[]) { - out("// AUTOMATICALLY GENERATED FILE - DO NOT EDIT "); - out("package sun.nio.ch; "); - out("import java.net.SocketOption; "); - out("import java.net.StandardSocketOptions; "); - out("import java.net.ProtocolFamily; "); - out("import java.net.StandardProtocolFamily; "); - out("import java.util.Map; "); - out("import java.util.HashMap; "); - out("class SocketOptionRegistry { "); - out(" private SocketOptionRegistry() { } "); - out(" private static class RegistryKey { "); - out(" private final SocketOption name; "); - out(" private final ProtocolFamily family; "); - out(" RegistryKey(SocketOption name, ProtocolFamily family) { "); - out(" this.name = name; "); - out(" this.family = family; "); - out(" } "); - out(" public int hashCode() { "); - out(" return name.hashCode() + family.hashCode(); "); - out(" } "); - out(" public boolean equals(Object ob) { "); - out(" if (ob == null) return false; "); - out(" if (!(ob instanceof RegistryKey)) return false; "); - out(" RegistryKey other = (RegistryKey)ob; "); - out(" if (this.name != other.name) return false; "); - out(" if (this.family != other.family) return false; "); - out(" return true; "); - out(" } "); - out(" } "); - out(" private static class LazyInitialization { "); - out(" static final Map options = options(); "); - out(" private static Map options() { "); - out(" Map map = "); - out(" new HashMap(); "); - - emit_unspec("StandardSocketOptions.SO_BROADCAST", SOL_SOCKET, SO_BROADCAST); - emit_unspec("StandardSocketOptions.SO_KEEPALIVE", SOL_SOCKET, SO_KEEPALIVE); - emit_unspec("StandardSocketOptions.SO_LINGER", SOL_SOCKET, SO_LINGER); - emit_unspec("StandardSocketOptions.SO_SNDBUF", SOL_SOCKET, SO_SNDBUF); - emit_unspec("StandardSocketOptions.SO_RCVBUF", SOL_SOCKET, SO_RCVBUF); - emit_unspec("StandardSocketOptions.SO_REUSEADDR", SOL_SOCKET, SO_REUSEADDR); - emit_unspec("StandardSocketOptions.SO_REUSEPORT", SOL_SOCKET, SO_REUSEPORT); - emit_unspec("StandardSocketOptions.TCP_NODELAY", IPPROTO_TCP, TCP_NODELAY); - - emit_inet("StandardSocketOptions.IP_TOS", IPPROTO_IP, IP_TOS); - emit_inet("StandardSocketOptions.IP_MULTICAST_IF", IPPROTO_IP, IP_MULTICAST_IF); - emit_inet("StandardSocketOptions.IP_MULTICAST_TTL", IPPROTO_IP, IP_MULTICAST_TTL); - emit_inet("StandardSocketOptions.IP_MULTICAST_LOOP", IPPROTO_IP, IP_MULTICAST_LOOP); - -#ifdef AF_INET6 - emit_inet6("StandardSocketOptions.IP_TOS", IPPROTO_IPV6, IPV6_TCLASS); - emit_inet6("StandardSocketOptions.IP_MULTICAST_IF", IPPROTO_IPV6, IPV6_MULTICAST_IF); - emit_inet6("StandardSocketOptions.IP_MULTICAST_TTL", IPPROTO_IPV6, IPV6_MULTICAST_HOPS); - emit_inet6("StandardSocketOptions.IP_MULTICAST_LOOP", IPPROTO_IPV6, IPV6_MULTICAST_LOOP); -#endif - - emit_unspec("ExtendedSocketOption.SO_OOBINLINE", SOL_SOCKET, SO_OOBINLINE); - - out(" return map; "); - out(" } "); - out(" } "); - out(" public static OptionKey findOption(SocketOption name, ProtocolFamily family) { "); - out(" RegistryKey key = new RegistryKey(name, family); "); - out(" return LazyInitialization.options.get(key); "); - out(" } "); - out("} "); - - return 0; -} diff -r 7ab530dd6f10 -r 07d6492e286c jdk/make/src/native/genconstants/fs/genSolarisConstants.c --- a/jdk/make/src/native/genconstants/fs/genSolarisConstants.c Thu Mar 24 15:32:54 2016 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,105 +0,0 @@ -/* - * Copyright (c) 2008, 2011, 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. 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 - * 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 -#include -#include -#include -#include -#include - -/** - * Generates sun.nio.fs.SolarisConstants - */ - -static void out(char* s) { - printf("%s\n", s); -} - -static void emit(char* name, int value) { - printf(" static final int %s = %d;\n", name, value); -} - -static void emitX(char* name, int value) { - printf(" static final int %s = 0x%x;\n", name, value); -} - -#define DEF(X) emit(#X, X); -#define DEFX(X) emitX(#X, X); - -int main(int argc, const char* argv[]) { - out("// AUTOMATICALLY GENERATED FILE - DO NOT EDIT "); - out("package sun.nio.fs; "); - out("class SolarisConstants { "); - out(" private SolarisConstants() { } "); - - // extended attributes - DEFX(O_XATTR); - DEF(_PC_XATTR_ENABLED); - - // ACL configuration - DEF(_PC_ACL_ENABLED); - DEFX(_ACL_ACE_ENABLED); - - // ACL commands - DEFX(ACE_GETACL); - DEFX(ACE_SETACL); - - // ACL mask/flags/types - emitX("ACE_ACCESS_ALLOWED_ACE_TYPE", 0x0000); - emitX("ACE_ACCESS_DENIED_ACE_TYPE", 0x0001); - emitX("ACE_SYSTEM_AUDIT_ACE_TYPE", 0x0002); - emitX("ACE_SYSTEM_ALARM_ACE_TYPE", 0x0003); - emitX("ACE_READ_DATA", 0x00000001); - emitX("ACE_LIST_DIRECTORY", 0x00000001); - emitX("ACE_WRITE_DATA", 0x00000002); - emitX("ACE_ADD_FILE", 0x00000002); - emitX("ACE_APPEND_DATA", 0x00000004); - emitX("ACE_ADD_SUBDIRECTORY", 0x00000004); - emitX("ACE_READ_NAMED_ATTRS", 0x00000008); - emitX("ACE_WRITE_NAMED_ATTRS", 0x00000010); - emitX("ACE_EXECUTE", 0x00000020); - emitX("ACE_DELETE_CHILD", 0x00000040); - emitX("ACE_READ_ATTRIBUTES", 0x00000080); - emitX("ACE_WRITE_ATTRIBUTES", 0x00000100); - emitX("ACE_DELETE", 0x00010000); - emitX("ACE_READ_ACL", 0x00020000); - emitX("ACE_WRITE_ACL", 0x00040000); - emitX("ACE_WRITE_OWNER", 0x00080000); - emitX("ACE_SYNCHRONIZE", 0x00100000); - emitX("ACE_FILE_INHERIT_ACE", 0x0001); - emitX("ACE_DIRECTORY_INHERIT_ACE", 0x0002); - emitX("ACE_NO_PROPAGATE_INHERIT_ACE", 0x0004); - emitX("ACE_INHERIT_ONLY_ACE", 0x0008); - emitX("ACE_SUCCESSFUL_ACCESS_ACE_FLAG", 0x0010); - emitX("ACE_FAILED_ACCESS_ACE_FLAG", 0x0020); - emitX("ACE_IDENTIFIER_GROUP", 0x0040); - emitX("ACE_OWNER", 0x1000); - emitX("ACE_GROUP", 0x2000); - emitX("ACE_EVERYONE", 0x4000); - - out("} "); - return 0; -} diff -r 7ab530dd6f10 -r 07d6492e286c jdk/make/src/native/genconstants/fs/genUnixConstants.c --- a/jdk/make/src/native/genconstants/fs/genUnixConstants.c Thu Mar 24 15:32:54 2016 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,142 +0,0 @@ -/* - * Copyright (c) 2008, 2015, 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. 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 - * 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 -#include -#include -#include -#include - -/** - * Generates sun.nio.fs.UnixConstants - */ - -static void out(char* s) { - printf("%s\n", s); -} - -static void emit(char* name, int value) { - printf(" static final int %s = %d;\n", name, value); -} - -static void emitX(char* name, int value) { - printf(" static final int %s = 0x%x;\n", name, value); -} - -#define DEF(X) emit(#X, X); -#define DEFX(X) emitX(#X, X); - -int main(int argc, const char* argv[]) { - out("// AUTOMATICALLY GENERATED FILE - DO NOT EDIT "); - out("package sun.nio.fs; "); - out("class UnixConstants { "); - out(" private UnixConstants() { } "); - - // open flags - DEF(O_RDONLY); - DEF(O_WRONLY); - DEF(O_RDWR); - DEFX(O_APPEND); - DEFX(O_CREAT); - DEFX(O_EXCL); - DEFX(O_TRUNC); - DEFX(O_SYNC); -#ifndef O_DSYNC - // At least FreeBSD doesn't define O_DSYNC - emit("O_DSYNC", O_SYNC); -#else - DEFX(O_DSYNC); -#endif -#ifdef O_NOFOLLOW - DEFX(O_NOFOLLOW); -#else - // not supported (dummy values will not be used at runtime). - emitX("O_NOFOLLOW", 0x0); -#endif - - // mode masks - emitX("S_IAMB", - (S_IRUSR|S_IWUSR|S_IXUSR|S_IRGRP|S_IWGRP|S_IXGRP|S_IROTH|S_IWOTH|S_IXOTH)); - DEF(S_IRUSR); - DEF(S_IWUSR); - DEF(S_IXUSR); - DEF(S_IRGRP); - DEF(S_IWGRP); - DEF(S_IXGRP); - DEF(S_IROTH); - DEF(S_IWOTH); - DEF(S_IXOTH); - DEFX(S_IFMT); - DEFX(S_IFREG); - DEFX(S_IFDIR); - DEFX(S_IFLNK); - DEFX(S_IFCHR); - DEFX(S_IFBLK); - DEFX(S_IFIFO); - - // access modes - DEF(R_OK); - DEF(W_OK); - DEF(X_OK); - DEF(F_OK); - - // errors - DEF(ENOENT); - DEF(ENXIO); - DEF(EACCES); - DEF(EEXIST); - DEF(ENOTDIR); - DEF(EINVAL); - DEF(EXDEV); - DEF(EISDIR); - DEF(ENOTEMPTY); - DEF(ENOSPC); - DEF(EAGAIN); - DEF(ENOSYS); - DEF(ELOOP); - DEF(EROFS); -#ifndef ENODATA - // Only used in Linux java source, provide any value so it compiles - emit("ENODATA", ELAST); -#else - DEF(ENODATA); -#endif - DEF(ERANGE); - DEF(EMFILE); - - // flags used with openat/unlinkat/etc. -#if defined(AT_SYMLINK_NOFOLLOW) && defined(AT_REMOVEDIR) - DEFX(AT_SYMLINK_NOFOLLOW) - DEFX(AT_REMOVEDIR); -#else - // not supported (dummy values will not be used at runtime). - emitX("AT_SYMLINK_NOFOLLOW", 0x0); - emitX("AT_REMOVEDIR", 0x0); -#endif - - out("} "); - - return 0; -} diff -r 7ab530dd6f10 -r 07d6492e286c jdk/src/java.base/share/classes/java/math/BigDecimal.java --- a/jdk/src/java.base/share/classes/java/math/BigDecimal.java Thu Mar 24 15:32:54 2016 +0000 +++ b/jdk/src/java.base/share/classes/java/math/BigDecimal.java Thu Mar 24 15:34:37 2016 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1996, 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1996, 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 @@ -286,7 +286,7 @@ private static final BigDecimal ZERO_THROUGH_TEN[] = { new BigDecimal(BigInteger.ZERO, 0, 0, 1), new BigDecimal(BigInteger.ONE, 1, 0, 1), - new BigDecimal(BigInteger.valueOf(2), 2, 0, 1), + new BigDecimal(BigInteger.TWO, 2, 0, 1), new BigDecimal(BigInteger.valueOf(3), 3, 0, 1), new BigDecimal(BigInteger.valueOf(4), 4, 0, 1), new BigDecimal(BigInteger.valueOf(5), 5, 0, 1), @@ -936,7 +936,7 @@ rb = BigInteger.valueOf(5).pow(-exponent).multiply(compactVal); scl = -exponent; } else { // (exponent > 0) - rb = BigInteger.valueOf(2).pow(exponent).multiply(compactVal); + rb = BigInteger.TWO.pow(exponent).multiply(compactVal); } compactVal = compactValFor(rb); } diff -r 7ab530dd6f10 -r 07d6492e286c jdk/src/java.base/share/classes/java/math/BigInteger.java --- a/jdk/src/java.base/share/classes/java/math/BigInteger.java Thu Mar 24 15:32:54 2016 +0000 +++ b/jdk/src/java.base/share/classes/java/math/BigInteger.java Thu Mar 24 15:34:37 2016 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1996, 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1996, 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 @@ -1266,9 +1266,11 @@ public static final BigInteger ONE = valueOf(1); /** - * The BigInteger constant two. (Not exported.) + * The BigInteger constant two. + * + * @since 9 */ - private static final BigInteger TWO = valueOf(2); + public static final BigInteger TWO = valueOf(2); /** * The BigInteger constant -1. (Not exported.) diff -r 7ab530dd6f10 -r 07d6492e286c jdk/src/java.base/share/classes/module-info.java --- a/jdk/src/java.base/share/classes/module-info.java Thu Mar 24 15:32:54 2016 +0000 +++ b/jdk/src/java.base/share/classes/module-info.java Thu Mar 24 15:34:37 2016 +0000 @@ -274,7 +274,6 @@ jdk.localedata; exports sun.util.logging to java.desktop, - java.httpclient, java.logging, java.prefs; diff -r 7ab530dd6f10 -r 07d6492e286c jdk/src/java.base/share/classes/sun/nio/ch/SocketOptionRegistry.java.template --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/src/java.base/share/classes/sun/nio/ch/SocketOptionRegistry.java.template Thu Mar 24 15:34:37 2016 +0000 @@ -0,0 +1,154 @@ +/* + * Copyright (c) 2008, 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. 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 + * 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. + * + */ +@@END_COPYRIGHT@@ + +#include +#ifdef _WIN32 +#include +#include +#else +#include +#include +#include +#include +#endif + +/* Defines SO_REUSEPORT */ +#if !defined(SO_REUSEPORT) +#ifdef _WIN32 +#define SO_REUSEPORT 0 +#elif __linux__ +#define SO_REUSEPORT 15 +#elif __solaris__ +#define SO_REUSEPORT 0x100e +#elif defined(AIX) || defined(MACOSX) +#define SO_REUSEPORT 0x0200 +#else +#define SO_REUSEPORT 0 +#endif +#endif + +/* On Solaris, "sun" is defined as a macro. Undefine to make package + declaration valid */ +#undef sun + +/* To be able to name the Java constants the same as the C constants without + having the preprocessor rewrite those identifiers, add PREFIX_ to all + identifiers matching a C constant. The PREFIX_ is filtered out in the + makefile. */ + +@@START_HERE@@ + +package sun.nio.ch; +import java.net.SocketOption; +import java.net.StandardSocketOptions; +import java.net.ProtocolFamily; +import java.net.StandardProtocolFamily; +import java.util.Map; +import java.util.HashMap; +class SocketOptionRegistry { + + private SocketOptionRegistry() { } + + private static class RegistryKey { + private final SocketOption name; + private final ProtocolFamily family; + RegistryKey(SocketOption name, ProtocolFamily family) { + this.name = name; + this.family = family; + } + public int hashCode() { + return name.hashCode() + family.hashCode(); + } + public boolean equals(Object ob) { + if (ob == null) return false; + if (!(ob instanceof RegistryKey)) return false; + RegistryKey other = (RegistryKey)ob; + if (this.name != other.name) return false; + if (this.family != other.family) return false; + return true; + } + } + + private static class LazyInitialization { + + static final Map options = options(); + + private static Map options() { + Map map = + new HashMap(); + map.put(new RegistryKey(StandardSocketOptions.PREFIX_SO_BROADCAST, + Net.UNSPEC), new OptionKey(SOL_SOCKET, SO_BROADCAST)); + map.put(new RegistryKey(StandardSocketOptions.PREFIX_SO_KEEPALIVE, + Net.UNSPEC), new OptionKey(SOL_SOCKET, SO_KEEPALIVE)); + map.put(new RegistryKey(StandardSocketOptions.PREFIX_SO_LINGER, + Net.UNSPEC), new OptionKey(SOL_SOCKET, SO_LINGER)); + map.put(new RegistryKey(StandardSocketOptions.PREFIX_SO_SNDBUF, + Net.UNSPEC), new OptionKey(SOL_SOCKET, SO_SNDBUF)); + map.put(new RegistryKey(StandardSocketOptions.PREFIX_SO_RCVBUF, + Net.UNSPEC), new OptionKey(SOL_SOCKET, SO_RCVBUF)); + map.put(new RegistryKey(StandardSocketOptions.PREFIX_SO_REUSEADDR, + Net.UNSPEC), new OptionKey(SOL_SOCKET, SO_REUSEADDR)); + map.put(new RegistryKey(StandardSocketOptions.PREFIX_SO_REUSEPORT, + Net.UNSPEC), new OptionKey(SOL_SOCKET, SO_REUSEPORT)); + // IPPROTO_TCP is 6 + map.put(new RegistryKey(StandardSocketOptions.PREFIX_TCP_NODELAY, + Net.UNSPEC), new OptionKey(6, TCP_NODELAY)); + + // IPPROTO_IP is 0 + map.put(new RegistryKey(StandardSocketOptions.PREFIX_IP_TOS, + StandardProtocolFamily.INET), new OptionKey(0, IP_TOS)); + map.put(new RegistryKey(StandardSocketOptions.PREFIX_IP_MULTICAST_IF, + StandardProtocolFamily.INET), new OptionKey(0, IP_MULTICAST_IF)); + map.put(new RegistryKey(StandardSocketOptions.PREFIX_IP_MULTICAST_TTL, + StandardProtocolFamily.INET), new OptionKey(0, IP_MULTICAST_TTL)); + map.put(new RegistryKey(StandardSocketOptions.PREFIX_IP_MULTICAST_LOOP, + StandardProtocolFamily.INET), new OptionKey(0, IP_MULTICAST_LOOP)); + +#ifdef AF_INET6 + // IPPROTO_IPV6 is 41 + map.put(new RegistryKey(StandardSocketOptions.PREFIX_IP_TOS, + StandardProtocolFamily.INET6), new OptionKey(41, IPV6_TCLASS)); + map.put(new RegistryKey(StandardSocketOptions.PREFIX_IP_MULTICAST_IF, + StandardProtocolFamily.INET6), new OptionKey(41, IPV6_MULTICAST_IF)); + map.put(new RegistryKey(StandardSocketOptions.PREFIX_IP_MULTICAST_TTL, + StandardProtocolFamily.INET6), new OptionKey(41, IPV6_MULTICAST_HOPS)); + map.put(new RegistryKey(StandardSocketOptions.PREFIX_IP_MULTICAST_LOOP, + StandardProtocolFamily.INET6), new OptionKey(41, IPV6_MULTICAST_LOOP)); +#endif + + map.put(new RegistryKey(ExtendedSocketOption.PREFIX_SO_OOBINLINE, + Net.UNSPEC), new OptionKey(SOL_SOCKET, SO_OOBINLINE)); + return map; + } + } + + public static OptionKey findOption(SocketOption name, ProtocolFamily family) { + RegistryKey key = new RegistryKey(name, family); + return LazyInitialization.options.get(key); + } +} diff -r 7ab530dd6f10 -r 07d6492e286c jdk/src/java.base/solaris/classes/sun/nio/fs/SolarisConstants.java.template --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/src/java.base/solaris/classes/sun/nio/fs/SolarisConstants.java.template Thu Mar 24 15:34:37 2016 +0000 @@ -0,0 +1,89 @@ +/* + * Copyright (c) 2008, 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. 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 + * 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. + */ + +@@END_COPYRIGHT@@ + +#include +#include +#include +#include +#include +#include + +/* On Solaris, "sun" is defined as a macro. Undefine to make package + declaration valid */ +#undef sun + +/* To be able to name the Java constants the same as the C constants without + having the preprocessor rewrite those identifiers, add PREFIX_ to all + identifiers matching a C constant. The PREFIX_ is filtered out in the + makefile. */ + +@@START_HERE@@ + +package sun.nio.fs; +class SolarisConstants { + + private SolarisConstants() { } + + static final int PREFIX_O_XATTR = O_XATTR; + static final int PREFIX__PC_XATTR_ENABLED = _PC_XATTR_ENABLED; + static final int PREFIX__PC_ACL_ENABLED = _PC_ACL_ENABLED; + static final int PREFIX__ACL_ACE_ENABLED = _ACL_ACE_ENABLED; + static final int PREFIX_ACE_GETACL = ACE_GETACL; + static final int PREFIX_ACE_SETACL = ACE_SETACL; + static final int PREFIX_ACE_ACCESS_ALLOWED_ACE_TYPE = ACE_ACCESS_ALLOWED_ACE_TYPE; + static final int PREFIX_ACE_ACCESS_DENIED_ACE_TYPE = ACE_ACCESS_DENIED_ACE_TYPE; + static final int PREFIX_ACE_SYSTEM_AUDIT_ACE_TYPE = ACE_SYSTEM_AUDIT_ACE_TYPE; + static final int PREFIX_ACE_SYSTEM_ALARM_ACE_TYPE = ACE_SYSTEM_ALARM_ACE_TYPE; + static final int PREFIX_ACE_READ_DATA = ACE_READ_DATA; + static final int PREFIX_ACE_LIST_DIRECTORY = ACE_LIST_DIRECTORY; + static final int PREFIX_ACE_WRITE_DATA = ACE_WRITE_DATA; + static final int PREFIX_ACE_ADD_FILE = ACE_ADD_FILE; + static final int PREFIX_ACE_APPEND_DATA = ACE_APPEND_DATA; + static final int PREFIX_ACE_ADD_SUBDIRECTORY = ACE_ADD_SUBDIRECTORY; + static final int PREFIX_ACE_READ_NAMED_ATTRS = ACE_READ_NAMED_ATTRS; + static final int PREFIX_ACE_WRITE_NAMED_ATTRS = ACE_WRITE_NAMED_ATTRS; + static final int PREFIX_ACE_EXECUTE = ACE_EXECUTE; + static final int PREFIX_ACE_DELETE_CHILD = ACE_DELETE_CHILD; + static final int PREFIX_ACE_READ_ATTRIBUTES = ACE_READ_ATTRIBUTES; + static final int PREFIX_ACE_WRITE_ATTRIBUTES = ACE_WRITE_ATTRIBUTES; + static final int PREFIX_ACE_DELETE = ACE_DELETE; + static final int PREFIX_ACE_READ_ACL = ACE_READ_ACL; + static final int PREFIX_ACE_WRITE_ACL = ACE_WRITE_ACL; + static final int PREFIX_ACE_WRITE_OWNER = ACE_WRITE_OWNER; + static final int PREFIX_ACE_SYNCHRONIZE = ACE_SYNCHRONIZE; + static final int PREFIX_ACE_FILE_INHERIT_ACE = ACE_FILE_INHERIT_ACE; + static final int PREFIX_ACE_DIRECTORY_INHERIT_ACE = ACE_DIRECTORY_INHERIT_ACE; + static final int PREFIX_ACE_NO_PROPAGATE_INHERIT_ACE = ACE_NO_PROPAGATE_INHERIT_ACE; + static final int PREFIX_ACE_INHERIT_ONLY_ACE = ACE_INHERIT_ONLY_ACE; + static final int PREFIX_ACE_SUCCESSFUL_ACCESS_ACE_FLAG = ACE_SUCCESSFUL_ACCESS_ACE_FLAG; + static final int PREFIX_ACE_FAILED_ACCESS_ACE_FLAG = ACE_FAILED_ACCESS_ACE_FLAG; + static final int PREFIX_ACE_IDENTIFIER_GROUP = ACE_IDENTIFIER_GROUP; + static final int PREFIX_ACE_OWNER = ACE_OWNER; + static final int PREFIX_ACE_GROUP = ACE_GROUP; + static final int PREFIX_ACE_EVERYONE = ACE_EVERYONE; +} diff -r 7ab530dd6f10 -r 07d6492e286c jdk/src/java.base/unix/classes/sun/nio/fs/UnixConstants.java.template --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/src/java.base/unix/classes/sun/nio/fs/UnixConstants.java.template Thu Mar 24 15:34:37 2016 +0000 @@ -0,0 +1,132 @@ +/* + * Copyright (c) 2008, 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. 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 + * 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. + * + */ + +@@END_COPYRIGHT@@ + +#include +#include +#include +#include +#include + +/* On Solaris, "sun" is defined as a macro. Undefine to make package + declaration valid */ +#undef sun + +/* To be able to name the Java constants the same as the C constants without + having the preprocessor rewrite those identifiers, add PREFIX_ to all + identifiers matching a C constant. The PREFIX_ is filtered out in the + makefile. */ + +@@START_HERE@@ + +package sun.nio.fs; +class UnixConstants { + private UnixConstants() { } + static final int PREFIX_O_RDONLY = O_RDONLY; + static final int PREFIX_O_WRONLY = O_WRONLY; + static final int PREFIX_O_RDWR = O_RDWR; + static final int PREFIX_O_APPEND = O_APPEND; + static final int PREFIX_O_CREAT = O_CREAT; + static final int PREFIX_O_EXCL = O_EXCL; + static final int PREFIX_O_TRUNC = O_TRUNC; + static final int PREFIX_O_SYNC = O_SYNC; + +#ifndef O_DSYNC + // At least FreeBSD doesn't define O_DSYNC + static final int PREFIX_O_DSYNC = O_SYNC; +#else + static final int PREFIX_O_DSYNC = O_DSYNC; +#endif + +#ifdef O_NOFOLLOW + static final int PREFIX_O_NOFOLLOW = O_NOFOLLOW; +#else + // not supported (dummy values will not be used at runtime). + static final int PREFIX_O_NOFOLLOW = 00; +#endif + + + static final int PREFIX_S_IAMB = + (S_IRUSR|S_IWUSR|S_IXUSR|S_IRGRP|S_IWGRP|S_IXGRP|S_IROTH|S_IWOTH|S_IXOTH); + static final int PREFIX_S_IRUSR = S_IRUSR; + static final int PREFIX_S_IWUSR = S_IWUSR; + static final int PREFIX_S_IXUSR = S_IXUSR; + static final int PREFIX_S_IRGRP = S_IRGRP; + static final int PREFIX_S_IWGRP = S_IWGRP; + static final int PREFIX_S_IXGRP = S_IXGRP; + static final int PREFIX_S_IROTH = S_IROTH; + static final int PREFIX_S_IWOTH = S_IWOTH; + static final int PREFIX_S_IXOTH = S_IXOTH; + + static final int PREFIX_S_IFMT = S_IFMT; + static final int PREFIX_S_IFREG = S_IFREG; + static final int PREFIX_S_IFDIR = S_IFDIR; + static final int PREFIX_S_IFLNK = S_IFLNK; + static final int PREFIX_S_IFCHR = S_IFCHR; + static final int PREFIX_S_IFBLK = S_IFBLK; + static final int PREFIX_S_IFIFO = S_IFIFO; + static final int PREFIX_R_OK = R_OK; + static final int PREFIX_W_OK = W_OK; + static final int PREFIX_X_OK = X_OK; + static final int PREFIX_F_OK = F_OK; + static final int PREFIX_ENOENT = ENOENT; + static final int PREFIX_ENXIO = ENXIO; + static final int PREFIX_EACCES = EACCES; + static final int PREFIX_EEXIST = EEXIST; + static final int PREFIX_ENOTDIR = ENOTDIR; + static final int PREFIX_EINVAL = EINVAL; + static final int PREFIX_EXDEV = EXDEV; + static final int PREFIX_EISDIR = EISDIR; + static final int PREFIX_ENOTEMPTY = ENOTEMPTY; + static final int PREFIX_ENOSPC = ENOSPC; + static final int PREFIX_EAGAIN = EAGAIN; + static final int PREFIX_ENOSYS = ENOSYS; + static final int PREFIX_ELOOP = ELOOP; + static final int PREFIX_EROFS = EROFS; + +#ifndef ENODATA + // Only used in Linux java source, provide any value so it compiles + static final int PREFIX_ENODATA = ELAST; +#else + static final int PREFIX_ENODATA = ENODATA; +#endif + + static final int PREFIX_ERANGE = ERANGE; + static final int PREFIX_EMFILE = EMFILE; + + // flags used with openat/unlinkat/etc. +#if defined(AT_SYMLINK_NOFOLLOW) && defined(AT_REMOVEDIR) + static final int PREFIX_AT_SYMLINK_NOFOLLOW = AT_SYMLINK_NOFOLLOW; + static final int PREFIX_AT_REMOVEDIR = AT_REMOVEDIR; +#else + // not supported (dummy values will not be used at runtime). + static final int PREFIX_AT_SYMLINK_NOFOLLOW = 00; + static final int PREFIX_AT_REMOVEDIR = 00; +#endif + +}