summaryrefslogtreecommitdiff
path: root/java/openjdk8/files/patch-bsd
diff options
context:
space:
mode:
Diffstat (limited to 'java/openjdk8/files/patch-bsd')
-rw-r--r--java/openjdk8/files/patch-bsd5699
1 files changed, 4806 insertions, 893 deletions
diff --git a/java/openjdk8/files/patch-bsd b/java/openjdk8/files/patch-bsd
index fa4bb71fc78c..e1eb27e46983 100644
--- a/java/openjdk8/files/patch-bsd
+++ b/java/openjdk8/files/patch-bsd
@@ -1,58 +1,190 @@
---- common/autoconf/build-performance.m4
-+++ common/autoconf/build-performance.m4
+--- ./.hgtags Wed Sep 17 11:23:18 2014 -0700
++++ ./.hgtags Wed Nov 05 15:01:08 2014 -0800
+@@ -331,3 +331,4 @@
+ 4429ea47ee6eca6b8a1dbda1950566ee821ba19d jdk8u25-b14
+ 09eaef69f384ecf8ec0342b87a8b150740941140 jdk8u25-b15
+ f0a48c214c46b7351ff8e6d6b6dc533463a4be21 jdk8u25-b16
++d117f01bfb4f34668ac216c9837e88acead14dce jdk8u25-b17
+--- ./common/autoconf/build-performance.m4 Wed Sep 17 11:23:18 2014 -0700
++++ ./common/autoconf/build-performance.m4 Wed Nov 05 15:01:08 2014 -0800
@@ -41,6 +41,10 @@
# Looks like a MacOSX system
NUM_CORES=`/usr/sbin/system_profiler -detailLevel full SPHardwareDataType | grep 'Cores' | awk '{print [$]5}'`
FOUND_CORES=yes
-+ elif test "x$OPENJDK_BUILD_OS" = xbsd && test "x$(uname -s)" = xFreeBSD; then
-+ # Looks like a FreeBSD system
-+ NUM_CORES=`/sbin/sysctl -n kern.smp.cpus`
++ elif test "x$OPENJDK_BUILD_OS" = xbsd && test "x$(uname -s | grep -o BSD)" = xBSD; then
++ # Looks like a BSD system
++ NUM_CORES=`/sbin/sysctl -n hw.ncpu`
+ FOUND_CORES=yes
- elif test -n "$NUMBER_OF_PROCESSORS"; then
- # On windows, look in the env
- NUM_CORES=$NUMBER_OF_PROCESSORS
-@@ -76,6 +80,11 @@
+ elif test "x$OPENJDK_BUILD_OS" = xaix ; then
+ NUM_CORES=`/usr/sbin/prtconf | grep "^Number Of Processors" | awk '{ print [$]4 }'`
+ FOUND_CORES=yes
+@@ -79,6 +83,11 @@
MEMORY_SIZE=`/usr/sbin/system_profiler -detailLevel full SPHardwareDataType | grep 'Memory' | awk '{print [$]2}'`
MEMORY_SIZE=`expr $MEMORY_SIZE \* 1024`
FOUND_MEM=yes
-+ elif test "x$OPENJDK_BUILD_OS" = xbsd && test "x$(uname -s)" = xFreeBSD; then
-+ # Looks like a FreeBSD system
++ elif test "x$OPENJDK_BUILD_OS" = xbsd && test "x$(uname -s | grep -o BSD)" = xBSD; then
++ # Looks like a BSD system
+ MEMORY_SIZE=`/sbin/sysctl -n hw.physmem`
+ MEMORY_SIZE=`expr $MEMORY_SIZE / 1024 / 1024`
+ FOUND_MEM=yes
elif test "x$OPENJDK_BUILD_OS" = xwindows; then
# Windows, but without cygwin
MEMORY_SIZE=`wmic computersystem get totalphysicalmemory -value | grep = | cut -d "=" -f 2-`
---- common/autoconf/libraries.m4
-+++ common/autoconf/libraries.m4
-@@ -63,9 +63,9 @@
+--- ./common/autoconf/generated-configure.sh Wed Sep 17 11:23:18 2014 -0700
++++ ./common/autoconf/generated-configure.sh Wed Nov 05 15:01:08 2014 -0800
+@@ -1045,6 +1045,7 @@
+ with_extra_cflags
+ with_extra_cxxflags
+ with_extra_ldflags
++with_package_path
+ enable_debug_symbols
+ enable_zip_debug_info
+ enable_macosx_runtime_support
+@@ -1814,6 +1815,8 @@
+ --with-extra-cflags extra flags to be used when compiling jdk c-files
+ --with-extra-cxxflags extra flags to be used when compiling jdk c++-files
+ --with-extra-ldflags extra flags to be used when linking jdk
++ --with-package-path package path to be used for location of third party
++ packages
+ --with-x use the X Window System
+ --with-cups specify prefix directory for the cups package
+ (expecting the headers under PATH/include)
+@@ -6800,7 +6803,7 @@
+
+ # First argument is the cpu name from the trip/quad
+ case "$build_cpu" in
+- x86_64)
++ amd64|x86_64)
+ VAR_CPU=x86_64
+ VAR_CPU_ARCH=x86
+ VAR_CPU_BITS=64
+@@ -6931,7 +6934,7 @@
+
+ # First argument is the cpu name from the trip/quad
+ case "$host_cpu" in
+- x86_64)
++ amd64|x86_64)
+ VAR_CPU=x86_64
+ VAR_CPU_ARCH=x86
+ VAR_CPU_BITS=64
+@@ -20136,7 +20139,7 @@
+ else
+ COMPILER_VERSION_TEST=`$COMPILER --version 2>&1 | $HEAD -n 1`
+ # Check that this is likely to be GCC.
+- $COMPILER --version 2>&1 | $GREP "Free Software Foundation" > /dev/null
++ $COMPILER --version 2>&1 | $GREP -E "(Free Software Foundation|clang)" > /dev/null
+ if test $? -ne 0; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The $COMPILER_NAME compiler (located as $COMPILER) does not seem to be the required GCC compiler." >&5
+ $as_echo "$as_me: The $COMPILER_NAME compiler (located as $COMPILER) does not seem to be the required GCC compiler." >&6;}
+@@ -21737,7 +21740,7 @@
+ else
+ COMPILER_VERSION_TEST=`$COMPILER --version 2>&1 | $HEAD -n 1`
+ # Check that this is likely to be GCC.
+- $COMPILER --version 2>&1 | $GREP "Free Software Foundation" > /dev/null
++ $COMPILER --version 2>&1 | $GREP -E "(Free Software Foundation|clang)" > /dev/null
+ if test $? -ne 0; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The $COMPILER_NAME compiler (located as $COMPILER) does not seem to be the required GCC compiler." >&5
+ $as_echo "$as_me: The $COMPILER_NAME compiler (located as $COMPILER) does not seem to be the required GCC compiler." >&6;}
+@@ -27701,7 +27704,7 @@
+
+ # objcopy is used for moving debug symbols to separate files when
+ # full debug symbols are enabled.
+- if test "x$OPENJDK_TARGET_OS" = xsolaris || test "x$OPENJDK_TARGET_OS" = xlinux; then
++ if test "x$OPENJDK_TARGET_OS" = xsolaris || test "x$OPENJDK_TARGET_OS" = xlinux || test "x$OPENJDK_TARGET_OS" = xbsd ; then
+ if test -n "$ac_tool_prefix"; then
+ for ac_prog in gobjcopy objcopy
+ do
+@@ -29367,8 +29370,10 @@
+ SET_SHARED_LIBRARY_NAME='-Xlinker -install_name -Xlinker @rpath/$1'
+ SET_SHARED_LIBRARY_MAPFILE=''
+ SET_SHARED_LIBRARY_ORIGIN='-Xlinker -rpath -Xlinker @loader_path/.'
++ POST_STRIP_CMD="$STRIP -S"
++ fi
++ if test "x$OPENJDK_TARGET_OS" = xbsd || test "x$OPENJDK_TARGET_OS" = xmacosx; then
+ SET_EXECUTABLE_ORIGIN="$SET_SHARED_LIBRARY_ORIGIN"
+- POST_STRIP_CMD="$STRIP -S"
+ fi
+ else
+ if test "x$OPENJDK_TARGET_OS" = xsolaris; then
+@@ -29794,22 +29799,37 @@
+ CCXXFLAGS_JDK="$CCXXFLAGS_JDK $ADD_LP64"
+
+ # The package path is used only on macosx?
+- PACKAGE_PATH=/opt/local
++
++# Check whether --with-package-path was given.
++if test "${with_package_path+set}" = set; then :
++ withval=$with_package_path;
++fi
++
++ PACKAGE_PATH="$with_package_path"
++ if test "x$PACKAGE_PATH" = x; then
++ if test "`uname -s`" = "Darwin"; then
++ PACKAGE_PATH=/opt/local
++ fi
++
++ if test "`uname -s`" = "FreeBSD"; then
++ PACKAGE_PATH=/usr/local
++ fi
++
++ if test "`uname -s`" = "NetBSD"; then
++ PACKAGE_PATH=/usr/pkg
++ fi
++
++ if test "`uname -s`" = "OpenBSD"; then
++ PACKAGE_PATH=/usr/local
++ fi
++ fi
++
+
+
+ if test "x$OPENJDK_TARGET_CPU_ENDIAN" = xlittle; then
+- # The macro _LITTLE_ENDIAN needs to be defined the same to avoid the
+- # Sun C compiler warning message: warning: macro redefined: _LITTLE_ENDIAN
+- # (The Solaris X86 system defines this in file /usr/include/sys/isa_defs.h).
+- # Note: -Dmacro is the same as #define macro 1
+- # -Dmacro= is the same as #define macro
+- if test "x$OPENJDK_TARGET_OS" = xsolaris; then
+- CCXXFLAGS_JDK="$CCXXFLAGS_JDK -D_LITTLE_ENDIAN="
+- else
+- CCXXFLAGS_JDK="$CCXXFLAGS_JDK -D_LITTLE_ENDIAN"
+- fi
+- else
+- CCXXFLAGS_JDK="$CCXXFLAGS_JDK -D_BIG_ENDIAN"
++ CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DVM_LITTLE_ENDIAN"
++ else
++ CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DVM_BIG_ENDIAN"
+ fi
+ if test "x$OPENJDK_TARGET_OS" = xlinux; then
+ CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DLINUX"
+@@ -30308,11 +30328,11 @@
fi
if test "x$OPENJDK_TARGET_OS" = xbsd; then
-- AC_MSG_CHECKING([what is not needed on bsd?])
+- { $as_echo "$as_me:${as_lineno-$LINENO}: checking what is not needed on bsd?" >&5
+-$as_echo_n "checking what is not needed on bsd?... " >&6; }
- ALSA_NOT_NEEDED=yes
-- AC_MSG_RESULT([alsa])
-+ AC_MSG_CHECKING([what is not needed on BSD?])
+- { $as_echo "$as_me:${as_lineno-$LINENO}: result: alsa" >&5
+-$as_echo "alsa" >&6; }
++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking what is not needed on BSD?" >&5
++$as_echo_n "checking what is not needed on BSD?... " >&6; }
+ PULSE_NOT_NEEDED=yes
-+ AC_MSG_RESULT([pulse])
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: pulse" >&5
++$as_echo "pulse" >&6; }
fi
if test "x$OPENJDK" = "xfalse"; then
-@@ -554,7 +554,7 @@
- fi
+@@ -34581,7 +34601,7 @@
- if test "x${with_alsa}" != x; then
-- ALSA_LIBS="-L${with_alsa}/lib -lalsa"
-+ ALSA_LIBS="-L${with_alsa}/lib"
- ALSA_CFLAGS="-I${with_alsa}/include"
- ALSA_FOUND=yes
- fi
-@@ -563,9 +563,14 @@
- ALSA_FOUND=yes
- fi
- if test "x${with_alsa_lib}" != x; then
-- ALSA_LIBS="-L${with_alsa_lib} -lalsa"
-+ ALSA_LIBS="-L${with_alsa_lib}"
+ ###############################################################################
+ #
+- # Check for alsa headers and libraries. Used on Linux/GNU systems.
++ # Check for alsa headers and libraries. Used on Linux/GNU and BSD systems.
+ #
+
+ # Check whether --with-alsa was given.
+@@ -34629,6 +34649,11 @@
+ ALSA_LIBS="-L${with_alsa_lib} -lasound"
ALSA_FOUND=yes
fi
+ if test "x$OPENJDK_TARGET_OS" = xbsd; then
@@ -61,9 +193,68 @@
+ ALSA_LIBS="$ALSA_LIBS -lalsa"
+ fi
if test "x$ALSA_FOUND" = xno; then
- BDEPS_CHECK_MODULE(ALSA, alsa, xxx, [ALSA_FOUND=yes], [ALSA_FOUND=no])
- fi
-@@ -877,5 +882,10 @@
+
+
+@@ -35619,6 +35644,11 @@
+ LIBCXX="-lstdc++"
+ fi
+
++ # TODO better (platform agnostic) test
++ if test "x$OPENJDK_TARGET_OS" = xbsd && test "x$LIBCXX" = x && test "x$GCC" = xyes; then
++ LIBCXX="-lstdc++"
++ fi
++
+
+
+
+@@ -35692,6 +35722,10 @@
+ # Looks like a MacOSX system
+ NUM_CORES=`/usr/sbin/system_profiler -detailLevel full SPHardwareDataType | grep 'Cores' | awk '{print $5}'`
+ FOUND_CORES=yes
++ elif test "x$OPENJDK_BUILD_OS" = xbsd && test "x$(uname -s | grep -o BSD)" = xBSD; then
++ # Looks like a BSD system
++ NUM_CORES=`/sbin/sysctl -n hw.ncpu`
++ FOUND_CORES=yes
+ elif test "x$OPENJDK_BUILD_OS" = xaix ; then
+ NUM_CORES=`/usr/sbin/prtconf | grep "^Number Of Processors" | awk '{ print $4 }'`
+ FOUND_CORES=yes
+@@ -35747,6 +35781,11 @@
+ MEMORY_SIZE=`/usr/sbin/system_profiler -detailLevel full SPHardwareDataType | grep 'Memory' | awk '{print $2}'`
+ MEMORY_SIZE=`expr $MEMORY_SIZE \* 1024`
+ FOUND_MEM=yes
++ elif test "x$OPENJDK_BUILD_OS" = xbsd && test "x$(uname -s | grep -o BSD)" = xBSD; then
++ # Looks like a BSD system
++ MEMORY_SIZE=`/sbin/sysctl -n hw.physmem`
++ MEMORY_SIZE=`expr $MEMORY_SIZE / 1024 / 1024`
++ FOUND_MEM=yes
+ elif test "x$OPENJDK_BUILD_OS" = xwindows; then
+ # Windows, but without cygwin
+ MEMORY_SIZE=`wmic computersystem get totalphysicalmemory -value | grep = | cut -d "=" -f 2-`
+--- ./common/autoconf/libraries.m4 Wed Sep 17 11:23:18 2014 -0700
++++ ./common/autoconf/libraries.m4 Wed Nov 05 15:01:08 2014 -0800
+@@ -71,9 +71,9 @@
+ fi
+
+ if test "x$OPENJDK_TARGET_OS" = xbsd; then
+- AC_MSG_CHECKING([what is not needed on bsd?])
+- ALSA_NOT_NEEDED=yes
+- AC_MSG_RESULT([alsa])
++ AC_MSG_CHECKING([what is not needed on BSD?])
++ PULSE_NOT_NEEDED=yes
++ AC_MSG_RESULT([pulse])
+ fi
+
+ if test "x$OPENJDK" = "xfalse"; then
+@@ -538,7 +538,7 @@
+
+ ###############################################################################
+ #
+- # Check for alsa headers and libraries. Used on Linux/GNU systems.
++ # Check for alsa headers and libraries. Used on Linux/GNU and BSD systems.
+ #
+ AC_ARG_WITH(alsa, [AS_HELP_STRING([--with-alsa],
+ [specify prefix directory for the alsa package
+@@ -885,5 +885,10 @@
LIBCXX="-lstdc++"
fi
@@ -74,8 +265,8 @@
+
AC_SUBST(LIBCXX)
])
---- common/autoconf/platform.m4
-+++ common/autoconf/platform.m4
+--- ./common/autoconf/platform.m4 Wed Sep 17 11:23:18 2014 -0700
++++ ./common/autoconf/platform.m4 Wed Nov 05 15:01:08 2014 -0800
@@ -30,7 +30,7 @@
[
# First argument is the cpu name from the trip/quad
@@ -85,32 +276,31 @@
VAR_CPU=x86_64
VAR_CPU_ARCH=x86
VAR_CPU_BITS=64
-@@ -291,8 +291,8 @@
+@@ -302,8 +302,8 @@
# Setup OPENJDK_TARGET_CPU_OSARCH, which is used to set the os.arch Java system property
OPENJDK_TARGET_CPU_OSARCH="$OPENJDK_TARGET_CPU"
- if test "x$OPENJDK_TARGET_OS" = xlinux && test "x$OPENJDK_TARGET_CPU" = xx86; then
- # On linux only, we replace x86 with i386.
+ if test "x$OPENJDK_TARGET_OS" = xbsd -o "x$OPENJDK_TARGET_OS" = xlinux && test "x$OPENJDK_TARGET_CPU" = xx86; then
-+ # On bsd and linux only, we replace x86 with i386.
++ # On Linux and BSD, we replace x86 with i386.
OPENJDK_TARGET_CPU_OSARCH="i386"
elif test "x$OPENJDK_TARGET_OS" != xmacosx && test "x$OPENJDK_TARGET_CPU" = xx86_64; then
# On all platforms except macosx, we replace x86_64 with amd64.
-@@ -336,9 +336,9 @@
-
- if test "x$OPENJDK_TARGET_CPU_BITS" = x64; then
- A_LP64="LP64:="
-- # -D_LP64=1 is only set on linux and mac. Setting on windows causes diff in
-+ # -D_LP64=1 is only set on bsd, linux and mac. Setting on windows causes diff in
- # unpack200.exe
-- if test "x$OPENJDK_TARGET_OS" = xlinux || test "x$OPENJDK_TARGET_OS" = xmacosx; then
-+ if test "x$OPENJDK_TARGET_OS" = xbsd -o "x$OPENJDK_TARGET_OS" = xlinux -o "x$OPENJDK_TARGET_OS" = xmacosx; then
- ADD_LP64="-D_LP64=1"
- fi
- fi
---- common/autoconf/toolchain.m4
-+++ common/autoconf/toolchain.m4
-@@ -63,7 +63,7 @@
+--- ./common/autoconf/spec.gmk.in Wed Sep 17 11:23:18 2014 -0700
++++ ./common/autoconf/spec.gmk.in Wed Nov 05 15:01:08 2014 -0800
+@@ -276,7 +276,7 @@
+ ALSA_LIBS:=@ALSA_LIBS@
+ ALSA_CFLAGS:=@ALSA_CFLAGS@
+
+-PACKAGE_PATH=@PACKAGE_PATH@
++PACKAGE_PATH:=@PACKAGE_PATH@
+
+ # Source file for cacerts
+ CACERTS_FILE=@CACERTS_FILE@
+--- ./common/autoconf/toolchain.m4 Wed Sep 17 11:23:18 2014 -0700
++++ ./common/autoconf/toolchain.m4 Wed Nov 05 15:01:08 2014 -0800
+@@ -72,7 +72,7 @@
else
COMPILER_VERSION_TEST=`$COMPILER --version 2>&1 | $HEAD -n 1`
# Check that this is likely to be GCC.
@@ -119,7 +309,7 @@
if test $? -ne 0; then
AC_MSG_NOTICE([The $COMPILER_NAME compiler (located as $COMPILER) does not seem to be the required GCC compiler.])
AC_MSG_NOTICE([The result from running with --version was: "$COMPILER_VERSION_TEST"])
-@@ -458,7 +458,7 @@
+@@ -487,7 +487,7 @@
# objcopy is used for moving debug symbols to separate files when
# full debug symbols are enabled.
@@ -128,20 +318,44 @@
AC_CHECK_TOOLS(OBJCOPY, [gobjcopy objcopy])
# Only call fixup if objcopy was found.
if test -n "$OBJCOPY"; then
-@@ -526,9 +526,11 @@
+@@ -555,8 +555,10 @@
SET_SHARED_LIBRARY_NAME='-Xlinker -install_name -Xlinker @rpath/[$]1'
SET_SHARED_LIBRARY_MAPFILE=''
SET_SHARED_LIBRARY_ORIGIN='-Xlinker -rpath -Xlinker @loader_path/.'
-- SET_EXECUTABLE_ORIGIN="$SET_SHARED_LIBRARY_ORIGIN"
- POST_STRIP_CMD="$STRIP -S"
- fi
-+ if test "x$OPENJDK_TARGET_OS" = xbsd || test "x$OPENJDK_TARGET_OS" = xmacosx; then
-+ SET_EXECUTABLE_ORIGIN="$SET_SHARED_LIBRARY_ORIGIN"
++ POST_STRIP_CMD="$STRIP -S"
+ fi
++ if test "x$OPENJDK_TARGET_OS" = xbsd || test "x$OPENJDK_TARGET_OS" = xmacosx; then
+ SET_EXECUTABLE_ORIGIN="$SET_SHARED_LIBRARY_ORIGIN"
+- POST_STRIP_CMD="$STRIP -S"
+ fi
else
if test "x$OPENJDK_TARGET_OS" = xsolaris; then
- # If it is not gcc, then assume it is the Oracle Solaris Studio Compiler
-@@ -887,18 +889,9 @@
+@@ -960,22 +962,33 @@
+ CCXXFLAGS_JDK="$CCXXFLAGS_JDK $ADD_LP64"
+
+ # The package path is used only on macosx?
+- PACKAGE_PATH=/opt/local
++ AC_ARG_WITH(package-path, [AS_HELP_STRING([--with-package-path],
++ [package path to be used for location of third party packages])])
++ PACKAGE_PATH="$with_package_path"
++ if test "x$PACKAGE_PATH" = x; then
++ if test "`uname -s`" = "Darwin"; then
++ PACKAGE_PATH=/opt/local
++ fi
++
++ if test "`uname -s`" = "FreeBSD"; then
++ PACKAGE_PATH=/usr/local
++ fi
++
++ if test "`uname -s`" = "NetBSD"; then
++ PACKAGE_PATH=/usr/pkg
++ fi
++
++ if test "`uname -s`" = "OpenBSD"; then
++ PACKAGE_PATH=/usr/local
++ fi
++ fi
++
AC_SUBST(PACKAGE_PATH)
if test "x$OPENJDK_TARGET_CPU_ENDIAN" = xlittle; then
@@ -162,8 +376,91 @@
fi
if test "x$OPENJDK_TARGET_OS" = xlinux; then
CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DLINUX"
---- hotspot/make/bsd/makefiles/build_vm_def.sh
-+++ hotspot/make/bsd/makefiles/build_vm_def.sh
+--- ./configure Wed Sep 17 11:23:18 2014 -0700
++++ ./configure Wed Nov 05 15:01:08 2014 -0800
+@@ -1,4 +1,4 @@
+-#!/bin/bash
++#!/bin/sh
+ #
+ # Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+--- ./make/Main.gmk Wed Sep 17 11:23:18 2014 -0700
++++ ./make/Main.gmk Wed Nov 05 15:01:08 2014 -0800
+@@ -58,7 +58,11 @@
+
+ # Setup number of jobs to use. -jN is unfortunately not available for us to parse from the command line,
+ # hence this workaround.
++ifdef JOBS
++ifneq ($(JOBS),0)
+ MAKE_ARGS:=$(MAKE_ARGS) -j$(JOBS)
++endif
++endif
+
+ ### Main targets
+
+--- ./make/common/MakeBase.gmk Wed Sep 17 11:23:18 2014 -0700
++++ ./make/common/MakeBase.gmk Wed Nov 05 15:01:08 2014 -0800
+@@ -338,7 +338,7 @@
+ # (and causing a crash on Cygwin).
+ # Default shell seems to always be /bin/sh. Must override with bash to get this to work on Solaris.
+ # Only use time if it's GNU time which supports format and output file.
+- WRAPPER_SHELL:=/bin/bash $$(SRC_ROOT)/common/bin/shell-tracer.sh $$(if $$(findstring yes,$$(IS_GNU_TIME)),$$(TIME),-) $$(OUTPUT_ROOT)/build-trace-time.log /bin/bash
++ WRAPPER_SHELL:=bash $$(SRC_ROOT)/common/bin/shell-tracer.sh $$(if $$(findstring yes,$$(IS_GNU_TIME)),$$(TIME),-) $$(OUTPUT_ROOT)/build-trace-time.log bash
+ SHELL=$$(warning $$(if $$@,Building $$@,Running shell command) $$(if $$<, (from $$<))$$(if $$?, ($$(wordlist 1, 20, $$?) $$(if $$(wordlist 21, 22, $$?), ... [in total $$(words $$?) files]) newer)))$$(WRAPPER_SHELL)
+ endif
+ # Never remove warning messages; this is just for completeness
+@@ -365,8 +365,8 @@
+
+ # This is to be called by all SetupFoo macros
+ define LogSetupMacroEntry
+- $(if $(27),$(error Internal makefile error: Too many arguments to LogSetupMacroEntry, please update MakeBase.gmk))
+- $(if $(findstring $(LOG_LEVEL),debug trace), $(info $1 $(foreach i,2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26,$(if $($i),$(NEWLINE) $(strip [$i] $($i))))))
++ $(if $(30),$(error Internal makefile error: Too many arguments to LogSetupMacroEntry, please update MakeBase.gmk))
++ $(if $(findstring $(LOG_LEVEL),debug trace), $(info $1 $(foreach i,2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29,$(if $($i),$(NEWLINE) $(strip [$i] $($i))))))
+ endef
+
+ # Make directory without forking mkdir if not needed
+--- ./make/common/NativeCompilation.gmk Wed Sep 17 11:23:18 2014 -0700
++++ ./make/common/NativeCompilation.gmk Wed Nov 05 15:01:08 2014 -0800
+@@ -151,9 +151,9 @@
+ # CC the compiler to use, default is $(CC)
+ # LDEXE the linker to use for linking executables, default is $(LDEXE)
+ # OPTIMIZATION sets optimization level to NONE, LOW, HIGH, HIGHEST
+- $(foreach i,2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26, $(if $($i),$1_$(strip $($i)))$(NEWLINE))
+- $(call LogSetupMacroEntry,SetupNativeCompilation($1),$2,$3,$4,$5,$6,$7,$8,$9,$(10),$(11),$(12),$(13),$(14),$(15),$(16),$(17),$(18),$(19),$(20),$(21),$(22),$(23),$(24),$(25),$(26))
+- $(if $(27),$(error Internal makefile error: Too many arguments to SetupNativeCompilation, please update NativeCompilation.gmk))
++ $(foreach i,2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29, $(if $($i),$1_$(strip $($i)))$(NEWLINE))
++ $(call LogSetupMacroEntry,SetupNativeCompilation($1),$2,$3,$4,$5,$6,$7,$8,$9,$(10),$(11),$(12),$(13),$(14),$(15),$(16),$(17),$(18),$(19),$(20),$(21),$(22),$(23),$(24),$(25),$(26),$(27),$(28),$(29))
++ $(if $(30),$(error Internal makefile error: Too many arguments to SetupNativeCompilation, please update NativeCompilation.gmk))
+
+ ifneq (,$$($1_BIN))
+ $$(error BIN has been replaced with OBJECT_DIR)
+--- ./corba/.hgtags Mon Sep 08 12:34:37 2014 -0700
++++ ./corba/.hgtags Wed Sep 17 11:55:37 2014 -0700
+@@ -329,3 +329,4 @@
+ 7e9a2027d0214019d66325fa7ca59cf8281fb43e jdk8u25-b14
+ 5b2cb4935667cd02d7974b3b6fb6bf4092b5acae jdk8u25-b15
+ 28d7f90e04e46ce8c633a2fbf0157d9e77db17c3 jdk8u25-b16
++f46df0af2ca8c7d896de375c8edac8ce09318318 jdk8u25-b17
+--- ./hotspot/.hgtags Mon Sep 08 12:35:01 2014 -0700
++++ ./hotspot/.hgtags Wed Nov 05 15:01:44 2014 -0800
+@@ -518,3 +518,4 @@
+ c77d5db189422e2eef0443ee212644e497113b18 jdk8u25-b14
+ e62c06b887310b5bd23be9b817a9a6f0daf0d0e1 jdk8u25-b15
+ 6467bdd4d22d8b140844dc847c43b9ba7cb0bbd1 jdk8u25-b16
++28b50d07f6f8c5a567b6a25e95a423948114a004 jdk8u25-b17
+--- ./hotspot/make/bsd/makefiles/adjust-mflags.sh Mon Sep 08 12:35:01 2014 -0700
++++ ./hotspot/make/bsd/makefiles/adjust-mflags.sh Wed Nov 05 15:01:44 2014 -0800
+@@ -64,7 +64,6 @@
+ echo "$MFLAGS" \
+ | sed '
+ s/^-/ -/
+- s/ -\([^ ][^ ]*\)j/ -\1 -j/
+ s/ -j[0-9][0-9]*/ -j/
+ s/ -j\([^ ]\)/ -j -\1/
+ s/ -j/ -j'${HOTSPOT_BUILD_JOBS:-${default_build_jobs}}'/
+--- ./hotspot/make/bsd/makefiles/build_vm_def.sh Mon Sep 08 12:35:01 2014 -0700
++++ ./hotspot/make/bsd/makefiles/build_vm_def.sh Wed Nov 05 15:01:44 2014 -0800
@@ -1,12 +1,28 @@
#!/bin/sh
@@ -199,8 +496,8 @@
+ if ($3 ~ /^_ZN9Arguments17SharedArchivePathE$/) print "\t" $3 ";"
+ }' | sort -u ;;
+esac
---- hotspot/make/bsd/makefiles/debug.make
-+++ hotspot/make/bsd/makefiles/debug.make
+--- ./hotspot/make/bsd/makefiles/debug.make Mon Sep 08 12:35:01 2014 -0700
++++ ./hotspot/make/bsd/makefiles/debug.make Wed Nov 05 15:01:44 2014 -0800
@@ -35,7 +35,10 @@
# to inhibit the effect of the previous line on CFLAGS.
@@ -213,19 +510,8 @@
VERSION = debug
SYSDEFS += -DASSERT
---- hotspot/make/bsd/makefiles/defs.make
-+++ hotspot/make/bsd/makefiles/defs.make
-@@ -254,7 +254,7 @@
- endif # BUILD_FLAVOR
- endif # JDK_6_OR_EARLIER
-
--JDK_INCLUDE_SUBDIR=bsd
-+JDK_INCLUDE_SUBDIR=$(shell uname -s | ${TR} "[:upper:]" "[:lower:]")
-
- # Library suffix
- ifeq ($(OS_VENDOR),Darwin)
---- hotspot/make/bsd/makefiles/fastdebug.make
-+++ hotspot/make/bsd/makefiles/fastdebug.make
+--- ./hotspot/make/bsd/makefiles/fastdebug.make Mon Sep 08 12:35:01 2014 -0700
++++ ./hotspot/make/bsd/makefiles/fastdebug.make Wed Nov 05 15:01:44 2014 -0800
@@ -56,7 +56,10 @@
# to inhibit the effect of the previous line on CFLAGS.
@@ -238,20 +524,19 @@
VERSION = fastdebug
SYSDEFS += -DASSERT -DCHECK_UNHANDLED_OOPS
---- hotspot/make/bsd/makefiles/gcc.make
-+++ hotspot/make/bsd/makefiles/gcc.make
-@@ -168,6 +168,10 @@
+--- ./hotspot/make/bsd/makefiles/gcc.make Mon Sep 08 12:35:01 2014 -0700
++++ ./hotspot/make/bsd/makefiles/gcc.make Wed Nov 05 15:01:44 2014 -0800
+@@ -168,6 +168,9 @@
CFLAGS += -DDONT_USE_PRECOMPILED_HEADER
endif
-+ifeq ($(OS_VENDOR), FreeBSD)
-+ CFLAGS+= -DPACKAGE_PATH=\"$(PACKAGE_PATH)\"
-+endif
++# Allow for where third party packages are located
++CFLAGS+= -DPACKAGE_PATH=\"$(PACKAGE_PATH)\"
+
#------------------------------------------------------------------------
# Compiler flags
-@@ -201,12 +205,15 @@
+@@ -201,12 +204,15 @@
endif
ifeq ($(USE_CLANG), true)
@@ -273,8 +558,17 @@
endif
endif
---- hotspot/make/bsd/makefiles/launcher.make
-+++ hotspot/make/bsd/makefiles/launcher.make
+@@ -265,7 +271,7 @@
+ ifeq "$(shell expr \( $(CC_VER_MAJOR) \> 4 \) \| \( \( $(CC_VER_MAJOR) = 4 \) \& \( $(CC_VER_MINOR) \>= 3 \) \))" "0"
+ # Since GCC 4.3, -Wconversion has changed its meanings to warn these implicit
+ # conversions which might affect the values. Only enable it in earlier versions.
+- WARNING_FLAGS = -Wunused-function
++# WARNING_FLAGS = -Wunused-function
+ ifeq ($(USE_CLANG),)
+ WARNING_FLAGS += -Wconversion
+ endif
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ ./hotspot/make/bsd/makefiles/launcher.make Wed Nov 05 15:01:44 2014 -0800
@@ -0,0 +1,117 @@
+#
+# Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
@@ -393,30 +687,1490 @@
+ $(QUIETLY) sed -e 's/@@LIBARCH@@/$(LIBARCH)/g' $< > $@
+ $(QUIETLY) chmod +x $@
+
---- hotspot/make/bsd/makefiles/mapfile-vers-debug
-+++ hotspot/make/bsd/makefiles/mapfile-vers-debug
-@@ -242,7 +242,7 @@
- JVM_UnloadLibrary;
- JVM_Write;
- JVM_Yield;
-- JVM_handle_linux_signal;
+--- ./hotspot/make/bsd/makefiles/mapfile-vers-debug Mon Sep 08 12:35:01 2014 -0700
++++ ./hotspot/make/bsd/makefiles/mapfile-vers-debug Wed Nov 05 15:01:44 2014 -0800
+@@ -21,243 +21,251 @@
+ # questions.
+ #
+ #
+-# Only used for OSX/Darwin builds
+
+ # Define public interface.
++
++SUNWprivate_1.1 {
++ global:
+ # _JNI
+- _JNI_CreateJavaVM
+- _JNI_GetCreatedJavaVMs
+- _JNI_GetDefaultJavaVMInitArgs
++ JNI_CreateJavaVM;
++ JNI_GetCreatedJavaVMs;
++ JNI_GetDefaultJavaVMInitArgs;
+
+- # _JVM
+- _JVM_Accept
+- _JVM_ActiveProcessorCount
+- _JVM_AllocateNewArray
+- _JVM_AllocateNewObject
+- _JVM_ArrayCopy
+- _JVM_AssertionStatusDirectives
+- _JVM_Available
+- _JVM_Bind
+- _JVM_ClassDepth
+- _JVM_ClassLoaderDepth
+- _JVM_Clone
+- _JVM_Close
+- _JVM_CX8Field
+- _JVM_CompileClass
+- _JVM_CompileClasses
+- _JVM_CompilerCommand
+- _JVM_Connect
+- _JVM_ConstantPoolGetClassAt
+- _JVM_ConstantPoolGetClassAtIfLoaded
+- _JVM_ConstantPoolGetDoubleAt
+- _JVM_ConstantPoolGetFieldAt
+- _JVM_ConstantPoolGetFieldAtIfLoaded
+- _JVM_ConstantPoolGetFloatAt
+- _JVM_ConstantPoolGetIntAt
+- _JVM_ConstantPoolGetLongAt
+- _JVM_ConstantPoolGetMethodAt
+- _JVM_ConstantPoolGetMethodAtIfLoaded
+- _JVM_ConstantPoolGetMemberRefInfoAt
+- _JVM_ConstantPoolGetSize
+- _JVM_ConstantPoolGetStringAt
+- _JVM_ConstantPoolGetUTF8At
+- _JVM_CountStackFrames
+- _JVM_CurrentClassLoader
+- _JVM_CurrentLoadedClass
+- _JVM_CurrentThread
+- _JVM_CurrentTimeMillis
+- _JVM_DefineClass
+- _JVM_DefineClassWithSource
+- _JVM_DefineClassWithSourceCond
+- _JVM_DesiredAssertionStatus
+- _JVM_DisableCompiler
+- _JVM_DoPrivileged
+- _JVM_DTraceGetVersion
+- _JVM_DTraceActivate
+- _JVM_DTraceIsProbeEnabled
+- _JVM_DTraceIsSupported
+- _JVM_DTraceDispose
+- _JVM_DumpAllStacks
+- _JVM_DumpThreads
+- _JVM_EnableCompiler
+- _JVM_Exit
+- _JVM_FillInStackTrace
+- _JVM_FindClassFromCaller
+- _JVM_FindClassFromClass
+- _JVM_FindClassFromClassLoader
+- _JVM_FindClassFromBootLoader
+- _JVM_FindLibraryEntry
+- _JVM_FindLoadedClass
+- _JVM_FindPrimitiveClass
+- _JVM_FindSignal
+- _JVM_FreeMemory
+- _JVM_GC
+- _JVM_GetAllThreads
+- _JVM_GetArrayElement
+- _JVM_GetArrayLength
+- _JVM_GetCPClassNameUTF
+- _JVM_GetCPFieldClassNameUTF
+- _JVM_GetCPFieldModifiers
+- _JVM_GetCPFieldNameUTF
+- _JVM_GetCPFieldSignatureUTF
+- _JVM_GetCPMethodClassNameUTF
+- _JVM_GetCPMethodModifiers
+- _JVM_GetCPMethodNameUTF
+- _JVM_GetCPMethodSignatureUTF
+- _JVM_GetCallerClass
+- _JVM_GetClassAccessFlags
+- _JVM_GetClassAnnotations
+- _JVM_GetClassCPEntriesCount
+- _JVM_GetClassCPTypes
+- _JVM_GetClassConstantPool
+- _JVM_GetClassContext
+- _JVM_GetClassDeclaredConstructors
+- _JVM_GetClassDeclaredFields
+- _JVM_GetClassDeclaredMethods
+- _JVM_GetClassFieldsCount
+- _JVM_GetClassInterfaces
+- _JVM_GetClassLoader
+- _JVM_GetClassMethodsCount
+- _JVM_GetClassModifiers
+- _JVM_GetClassName
+- _JVM_GetClassNameUTF
+- _JVM_GetClassSignature
+- _JVM_GetClassSigners
+- _JVM_GetClassTypeAnnotations
+- _JVM_GetComponentType
+- _JVM_GetDeclaredClasses
+- _JVM_GetDeclaringClass
+- _JVM_GetEnclosingMethodInfo
+- _JVM_GetFieldAnnotations
+- _JVM_GetFieldIxModifiers
+- _JVM_GetFieldTypeAnnotations
+- _JVM_GetHostName
+- _JVM_GetInheritedAccessControlContext
+- _JVM_GetInterfaceVersion
+- _JVM_GetLastErrorString
+- _JVM_GetManagement
+- _JVM_GetMethodAnnotations
+- _JVM_GetMethodDefaultAnnotationValue
+- _JVM_GetMethodIxArgsSize
+- _JVM_GetMethodIxByteCode
+- _JVM_GetMethodIxByteCodeLength
+- _JVM_GetMethodIxExceptionIndexes
+- _JVM_GetMethodIxExceptionTableEntry
+- _JVM_GetMethodIxExceptionTableLength
+- _JVM_GetMethodIxExceptionsCount
+- _JVM_GetMethodIxLocalsCount
+- _JVM_GetMethodIxMaxStack
+- _JVM_GetMethodIxModifiers
+- _JVM_GetMethodIxNameUTF
+- _JVM_GetMethodIxSignatureUTF
+- _JVM_GetMethodParameterAnnotations
+- _JVM_GetMethodParameters
+- _JVM_GetMethodTypeAnnotations
+- _JVM_GetPrimitiveArrayElement
+- _JVM_GetProtectionDomain
+- _JVM_GetSockName
+- _JVM_GetSockOpt
+- _JVM_GetStackAccessControlContext
+- _JVM_GetStackTraceDepth
+- _JVM_GetStackTraceElement
+- _JVM_GetSystemPackage
+- _JVM_GetSystemPackages
+- _JVM_GetTemporaryDirectory
+- _JVM_GetThreadStateNames
+- _JVM_GetThreadStateValues
+- _JVM_GetVersionInfo
+- _JVM_Halt
+- _JVM_HoldsLock
+- _JVM_IHashCode
+- _JVM_InitAgentProperties
+- _JVM_InitProperties
+- _JVM_InitializeCompiler
+- _JVM_InitializeSocketLibrary
+- _JVM_InternString
+- _JVM_Interrupt
+- _JVM_InvokeMethod
+- _JVM_IsArrayClass
+- _JVM_IsConstructorIx
+- _JVM_IsInterface
+- _JVM_IsInterrupted
+- _JVM_IsNaN
+- _JVM_IsPrimitiveClass
+- _JVM_IsSameClassPackage
+- _JVM_IsSilentCompiler
+- _JVM_IsSupportedJNIVersion
+- _JVM_IsThreadAlive
+- _JVM_IsVMGeneratedMethodIx
+- _JVM_LatestUserDefinedLoader
+- _JVM_Listen
+- _JVM_LoadClass0
+- _JVM_LoadLibrary
+- _JVM_Lseek
+- _JVM_MaxObjectInspectionAge
+- _JVM_MaxMemory
+- _JVM_MonitorNotify
+- _JVM_MonitorNotifyAll
+- _JVM_MonitorWait
+- _JVM_NanoTime
+- _JVM_NativePath
+- _JVM_NewArray
+- _JVM_NewInstanceFromConstructor
+- _JVM_NewMultiArray
+- _JVM_OnExit
+- _JVM_Open
+- _JVM_RaiseSignal
+- _JVM_RawMonitorCreate
+- _JVM_RawMonitorDestroy
+- _JVM_RawMonitorEnter
+- _JVM_RawMonitorExit
+- _JVM_Read
+- _JVM_Recv
+- _JVM_RecvFrom
+- _JVM_RegisterSignal
+- _JVM_ReleaseUTF
+- _JVM_ResolveClass
+- _JVM_ResumeThread
+- _JVM_Send
+- _JVM_SendTo
+- _JVM_SetArrayElement
+- _JVM_SetClassSigners
+- _JVM_SetLength
+- _JVM_SetNativeThreadName
+- _JVM_SetPrimitiveArrayElement
+- _JVM_SetSockOpt
+- _JVM_SetThreadPriority
+- _JVM_Sleep
+- _JVM_Socket
+- _JVM_SocketAvailable
+- _JVM_SocketClose
+- _JVM_SocketShutdown
+- _JVM_StartThread
+- _JVM_StopThread
+- _JVM_SuspendThread
+- _JVM_SupportsCX8
+- _JVM_Sync
+- _JVM_Timeout
+- _JVM_TotalMemory
+- _JVM_TraceInstructions
+- _JVM_TraceMethodCalls
+- _JVM_UnloadLibrary
+- _JVM_Write
+- _JVM_Yield
+- _JVM_handle_bsd_signal
++ # JVM
++ JVM_Accept;
++ JVM_ActiveProcessorCount;
++ JVM_AllocateNewArray;
++ JVM_AllocateNewObject;
++ JVM_ArrayCopy;
++ JVM_AssertionStatusDirectives;
++ JVM_Available;
++ JVM_Bind;
++ JVM_ClassDepth;
++ JVM_ClassLoaderDepth;
++ JVM_Clone;
++ JVM_Close;
++ JVM_CX8Field;
++ JVM_CompileClass;
++ JVM_CompileClasses;
++ JVM_CompilerCommand;
++ JVM_Connect;
++ JVM_ConstantPoolGetClassAt;
++ JVM_ConstantPoolGetClassAtIfLoaded;
++ JVM_ConstantPoolGetDoubleAt;
++ JVM_ConstantPoolGetFieldAt;
++ JVM_ConstantPoolGetFieldAtIfLoaded;
++ JVM_ConstantPoolGetFloatAt;
++ JVM_ConstantPoolGetIntAt;
++ JVM_ConstantPoolGetLongAt;
++ JVM_ConstantPoolGetMethodAt;
++ JVM_ConstantPoolGetMethodAtIfLoaded;
++ JVM_ConstantPoolGetMemberRefInfoAt;
++ JVM_ConstantPoolGetSize;
++ JVM_ConstantPoolGetStringAt;
++ JVM_ConstantPoolGetUTF8At;
++ JVM_CountStackFrames;
++ JVM_CurrentClassLoader;
++ JVM_CurrentLoadedClass;
++ JVM_CurrentThread;
++ JVM_CurrentTimeMillis;
++ JVM_DefineClass;
++ JVM_DefineClassWithSource;
++ JVM_DefineClassWithSourceCond;
++ JVM_DesiredAssertionStatus;
++ JVM_DisableCompiler;
++ JVM_DoPrivileged;
++ JVM_DTraceGetVersion;
++ JVM_DTraceActivate;
++ JVM_DTraceIsProbeEnabled;
++ JVM_DTraceIsSupported;
++ JVM_DTraceDispose;
++ JVM_DumpAllStacks;
++ JVM_DumpThreads;
++ JVM_EnableCompiler;
++ JVM_Exit;
++ JVM_FillInStackTrace;
++ JVM_FindClassFromCaller;
++ JVM_FindClassFromClass;
++ JVM_FindClassFromClassLoader;
++ JVM_FindClassFromBootLoader;
++ JVM_FindLibraryEntry;
++ JVM_FindLoadedClass;
++ JVM_FindPrimitiveClass;
++ JVM_FindSignal;
++ JVM_FreeMemory;
++ JVM_GC;
++ JVM_GetAllThreads;
++ JVM_GetArrayElement;
++ JVM_GetArrayLength;
++ JVM_GetCPClassNameUTF;
++ JVM_GetCPFieldClassNameUTF;
++ JVM_GetCPFieldModifiers;
++ JVM_GetCPFieldNameUTF;
++ JVM_GetCPFieldSignatureUTF;
++ JVM_GetCPMethodClassNameUTF;
++ JVM_GetCPMethodModifiers;
++ JVM_GetCPMethodNameUTF;
++ JVM_GetCPMethodSignatureUTF;
++ JVM_GetCallerClass;
++ JVM_GetClassAccessFlags;
++ JVM_GetClassAnnotations;
++ JVM_GetClassCPEntriesCount;
++ JVM_GetClassCPTypes;
++ JVM_GetClassConstantPool;
++ JVM_GetClassContext;
++ JVM_GetClassDeclaredConstructors;
++ JVM_GetClassDeclaredFields;
++ JVM_GetClassDeclaredMethods;
++ JVM_GetClassFieldsCount;
++ JVM_GetClassInterfaces;
++ JVM_GetClassLoader;
++ JVM_GetClassMethodsCount;
++ JVM_GetClassModifiers;
++ JVM_GetClassName;
++ JVM_GetClassNameUTF;
++ JVM_GetClassSignature;
++ JVM_GetClassSigners;
++ JVM_GetClassTypeAnnotations;
++ JVM_GetComponentType;
++ JVM_GetDeclaredClasses;
++ JVM_GetDeclaringClass;
++ JVM_GetEnclosingMethodInfo;
++ JVM_GetFieldAnnotations;
++ JVM_GetFieldIxModifiers;
++ JVM_GetFieldTypeAnnotations;
++ JVM_GetHostName;
++ JVM_GetInheritedAccessControlContext;
++ JVM_GetInterfaceVersion;
++ JVM_GetLastErrorString;
++ JVM_GetManagement;
++ JVM_GetMethodAnnotations;
++ JVM_GetMethodDefaultAnnotationValue;
++ JVM_GetMethodIxArgsSize;
++ JVM_GetMethodIxByteCode;
++ JVM_GetMethodIxByteCodeLength;
++ JVM_GetMethodIxExceptionIndexes;
++ JVM_GetMethodIxExceptionTableEntry;
++ JVM_GetMethodIxExceptionTableLength;
++ JVM_GetMethodIxExceptionsCount;
++ JVM_GetMethodIxLocalsCount;
++ JVM_GetMethodIxMaxStack;
++ JVM_GetMethodIxModifiers;
++ JVM_GetMethodIxNameUTF;
++ JVM_GetMethodIxSignatureUTF;
++ JVM_GetMethodParameterAnnotations;
++ JVM_GetMethodParameters;
++ JVM_GetMethodTypeAnnotations;
++ JVM_GetPrimitiveArrayElement;
++ JVM_GetProtectionDomain;
++ JVM_GetSockName;
++ JVM_GetSockOpt;
++ JVM_GetStackAccessControlContext;
++ JVM_GetStackTraceDepth;
++ JVM_GetStackTraceElement;
++ JVM_GetSystemPackage;
++ JVM_GetSystemPackages;
++ JVM_GetTemporaryDirectory;
++ JVM_GetThreadStateNames;
++ JVM_GetThreadStateValues;
++ JVM_GetVersionInfo;
++ JVM_Halt;
++ JVM_HoldsLock;
++ JVM_IHashCode;
++ JVM_InitAgentProperties;
++ JVM_InitProperties;
++ JVM_InitializeCompiler;
++ JVM_InitializeSocketLibrary;
++ JVM_InternString;
++ JVM_Interrupt;
++ JVM_InvokeMethod;
++ JVM_IsArrayClass;
++ JVM_IsConstructorIx;
++ JVM_IsInterface;
++ JVM_IsInterrupted;
++ JVM_IsNaN;
++ JVM_IsPrimitiveClass;
++ JVM_IsSameClassPackage;
++ JVM_IsSilentCompiler;
++ JVM_IsSupportedJNIVersion;
++ JVM_IsThreadAlive;
++ JVM_IsVMGeneratedMethodIx;
++ JVM_LatestUserDefinedLoader;
++ JVM_Listen;
++ JVM_LoadClass0;
++ JVM_LoadLibrary;
++ JVM_Lseek;
++ JVM_MaxObjectInspectionAge;
++ JVM_MaxMemory;
++ JVM_MonitorNotify;
++ JVM_MonitorNotifyAll;
++ JVM_MonitorWait;
++ JVM_NanoTime;
++ JVM_NativePath;
++ JVM_NewArray;
++ JVM_NewInstanceFromConstructor;
++ JVM_NewMultiArray;
++ JVM_OnExit;
++ JVM_Open;
++ JVM_RaiseSignal;
++ JVM_RawMonitorCreate;
++ JVM_RawMonitorDestroy;
++ JVM_RawMonitorEnter;
++ JVM_RawMonitorExit;
++ JVM_Read;
++ JVM_Recv;
++ JVM_RecvFrom;
++ JVM_RegisterSignal;
++ JVM_ReleaseUTF;
++ JVM_ResolveClass;
++ JVM_ResumeThread;
++ JVM_Send;
++ JVM_SendTo;
++ JVM_SetArrayElement;
++ JVM_SetClassSigners;
++ JVM_SetLength;
++ JVM_SetNativeThreadName;
++ JVM_SetPrimitiveArrayElement;
++ JVM_SetSockOpt;
++ JVM_SetThreadPriority;
++ JVM_Sleep;
++ JVM_Socket;
++ JVM_SocketAvailable;
++ JVM_SocketClose;
++ JVM_SocketShutdown;
++ JVM_StartThread;
++ JVM_StopThread;
++ JVM_SuspendThread;
++ JVM_SupportsCX8;
++ JVM_Sync;
++ JVM_Timeout;
++ JVM_TotalMemory;
++ JVM_TraceInstructions;
++ JVM_TraceMethodCalls;
++ JVM_UnloadLibrary;
++ JVM_Write;
++ JVM_Yield;
+ JVM_handle_bsd_signal;
- # debug JVM
- JVM_AccessVMBooleanFlag;
---- hotspot/make/bsd/makefiles/mapfile-vers-product
-+++ hotspot/make/bsd/makefiles/mapfile-vers-product
-@@ -242,7 +242,7 @@
- JVM_UnloadLibrary;
- JVM_Write;
- JVM_Yield;
-- JVM_handle_linux_signal;
+- # debug _JVM
+- _JVM_AccessVMBooleanFlag
+- _JVM_AccessVMIntFlag
+- _JVM_VMBreakPoint
++ # debug JVM
++ JVM_AccessVMBooleanFlag;
++ JVM_AccessVMIntFlag;
++ JVM_VMBreakPoint;
+
+ # miscellaneous functions
+- _jio_fprintf
+- _jio_printf
+- _jio_snprintf
+- _jio_vfprintf
+- _jio_vsnprintf
++ jio_fprintf;
++ jio_printf;
++ jio_snprintf;
++ jio_vfprintf;
++ jio_vsnprintf;
++ fork1;
++ numa_warn;
++ numa_error;
+
+ # This is for Forte Analyzer profiling support.
+- _AsyncGetCallTrace
++ AsyncGetCallTrace;
+
+ # INSERT VTABLE SYMBOLS HERE
+
++ local:
++ *;
++};
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ ./hotspot/make/bsd/makefiles/mapfile-vers-debug.macosx Wed Nov 05 15:01:44 2014 -0800
+@@ -0,0 +1,263 @@
++#
++# Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved.
++# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
++#
++# This code is free software; you can redistribute it and/or modify it
++# under the terms of the GNU General Public License version 2 only, as
++# published by the Free Software Foundation.
++#
++# This code is distributed in the hope that it will be useful, but WITHOUT
++# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
++# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
++# version 2 for more details (a copy is included in the LICENSE file that
++# accompanied this code).
++#
++# You should have received a copy of the GNU General Public License version
++# 2 along with this work; if not, write to the Free Software Foundation,
++# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
++#
++# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
++# or visit www.oracle.com if you need additional information or have any
++# questions.
++#
++#
++# Only used for OSX/Darwin builds
++
++# Define public interface.
++ # _JNI
++ _JNI_CreateJavaVM
++ _JNI_GetCreatedJavaVMs
++ _JNI_GetDefaultJavaVMInitArgs
++
++ # _JVM
++ _JVM_Accept
++ _JVM_ActiveProcessorCount
++ _JVM_AllocateNewArray
++ _JVM_AllocateNewObject
++ _JVM_ArrayCopy
++ _JVM_AssertionStatusDirectives
++ _JVM_Available
++ _JVM_Bind
++ _JVM_ClassDepth
++ _JVM_ClassLoaderDepth
++ _JVM_Clone
++ _JVM_Close
++ _JVM_CX8Field
++ _JVM_CompileClass
++ _JVM_CompileClasses
++ _JVM_CompilerCommand
++ _JVM_Connect
++ _JVM_ConstantPoolGetClassAt
++ _JVM_ConstantPoolGetClassAtIfLoaded
++ _JVM_ConstantPoolGetDoubleAt
++ _JVM_ConstantPoolGetFieldAt
++ _JVM_ConstantPoolGetFieldAtIfLoaded
++ _JVM_ConstantPoolGetFloatAt
++ _JVM_ConstantPoolGetIntAt
++ _JVM_ConstantPoolGetLongAt
++ _JVM_ConstantPoolGetMethodAt
++ _JVM_ConstantPoolGetMethodAtIfLoaded
++ _JVM_ConstantPoolGetMemberRefInfoAt
++ _JVM_ConstantPoolGetSize
++ _JVM_ConstantPoolGetStringAt
++ _JVM_ConstantPoolGetUTF8At
++ _JVM_CountStackFrames
++ _JVM_CurrentClassLoader
++ _JVM_CurrentLoadedClass
++ _JVM_CurrentThread
++ _JVM_CurrentTimeMillis
++ _JVM_DefineClass
++ _JVM_DefineClassWithSource
++ _JVM_DefineClassWithSourceCond
++ _JVM_DesiredAssertionStatus
++ _JVM_DisableCompiler
++ _JVM_DoPrivileged
++ _JVM_DTraceGetVersion
++ _JVM_DTraceActivate
++ _JVM_DTraceIsProbeEnabled
++ _JVM_DTraceIsSupported
++ _JVM_DTraceDispose
++ _JVM_DumpAllStacks
++ _JVM_DumpThreads
++ _JVM_EnableCompiler
++ _JVM_Exit
++ _JVM_FillInStackTrace
++ _JVM_FindClassFromCaller
++ _JVM_FindClassFromClass
++ _JVM_FindClassFromClassLoader
++ _JVM_FindClassFromBootLoader
++ _JVM_FindLibraryEntry
++ _JVM_FindLoadedClass
++ _JVM_FindPrimitiveClass
++ _JVM_FindSignal
++ _JVM_FreeMemory
++ _JVM_GC
++ _JVM_GetAllThreads
++ _JVM_GetArrayElement
++ _JVM_GetArrayLength
++ _JVM_GetCPClassNameUTF
++ _JVM_GetCPFieldClassNameUTF
++ _JVM_GetCPFieldModifiers
++ _JVM_GetCPFieldNameUTF
++ _JVM_GetCPFieldSignatureUTF
++ _JVM_GetCPMethodClassNameUTF
++ _JVM_GetCPMethodModifiers
++ _JVM_GetCPMethodNameUTF
++ _JVM_GetCPMethodSignatureUTF
++ _JVM_GetCallerClass
++ _JVM_GetClassAccessFlags
++ _JVM_GetClassAnnotations
++ _JVM_GetClassCPEntriesCount
++ _JVM_GetClassCPTypes
++ _JVM_GetClassConstantPool
++ _JVM_GetClassContext
++ _JVM_GetClassDeclaredConstructors
++ _JVM_GetClassDeclaredFields
++ _JVM_GetClassDeclaredMethods
++ _JVM_GetClassFieldsCount
++ _JVM_GetClassInterfaces
++ _JVM_GetClassLoader
++ _JVM_GetClassMethodsCount
++ _JVM_GetClassModifiers
++ _JVM_GetClassName
++ _JVM_GetClassNameUTF
++ _JVM_GetClassSignature
++ _JVM_GetClassSigners
++ _JVM_GetClassTypeAnnotations
++ _JVM_GetComponentType
++ _JVM_GetDeclaredClasses
++ _JVM_GetDeclaringClass
++ _JVM_GetEnclosingMethodInfo
++ _JVM_GetFieldAnnotations
++ _JVM_GetFieldIxModifiers
++ _JVM_GetFieldTypeAnnotations
++ _JVM_GetHostName
++ _JVM_GetInheritedAccessControlContext
++ _JVM_GetInterfaceVersion
++ _JVM_GetLastErrorString
++ _JVM_GetManagement
++ _JVM_GetMethodAnnotations
++ _JVM_GetMethodDefaultAnnotationValue
++ _JVM_GetMethodIxArgsSize
++ _JVM_GetMethodIxByteCode
++ _JVM_GetMethodIxByteCodeLength
++ _JVM_GetMethodIxExceptionIndexes
++ _JVM_GetMethodIxExceptionTableEntry
++ _JVM_GetMethodIxExceptionTableLength
++ _JVM_GetMethodIxExceptionsCount
++ _JVM_GetMethodIxLocalsCount
++ _JVM_GetMethodIxMaxStack
++ _JVM_GetMethodIxModifiers
++ _JVM_GetMethodIxNameUTF
++ _JVM_GetMethodIxSignatureUTF
++ _JVM_GetMethodParameterAnnotations
++ _JVM_GetMethodParameters
++ _JVM_GetMethodTypeAnnotations
++ _JVM_GetPrimitiveArrayElement
++ _JVM_GetProtectionDomain
++ _JVM_GetSockName
++ _JVM_GetSockOpt
++ _JVM_GetStackAccessControlContext
++ _JVM_GetStackTraceDepth
++ _JVM_GetStackTraceElement
++ _JVM_GetSystemPackage
++ _JVM_GetSystemPackages
++ _JVM_GetTemporaryDirectory
++ _JVM_GetThreadStateNames
++ _JVM_GetThreadStateValues
++ _JVM_GetVersionInfo
++ _JVM_Halt
++ _JVM_HoldsLock
++ _JVM_IHashCode
++ _JVM_InitAgentProperties
++ _JVM_InitProperties
++ _JVM_InitializeCompiler
++ _JVM_InitializeSocketLibrary
++ _JVM_InternString
++ _JVM_Interrupt
++ _JVM_InvokeMethod
++ _JVM_IsArrayClass
++ _JVM_IsConstructorIx
++ _JVM_IsInterface
++ _JVM_IsInterrupted
++ _JVM_IsNaN
++ _JVM_IsPrimitiveClass
++ _JVM_IsSameClassPackage
++ _JVM_IsSilentCompiler
++ _JVM_IsSupportedJNIVersion
++ _JVM_IsThreadAlive
++ _JVM_IsVMGeneratedMethodIx
++ _JVM_LatestUserDefinedLoader
++ _JVM_Listen
++ _JVM_LoadClass0
++ _JVM_LoadLibrary
++ _JVM_Lseek
++ _JVM_MaxObjectInspectionAge
++ _JVM_MaxMemory
++ _JVM_MonitorNotify
++ _JVM_MonitorNotifyAll
++ _JVM_MonitorWait
++ _JVM_NanoTime
++ _JVM_NativePath
++ _JVM_NewArray
++ _JVM_NewInstanceFromConstructor
++ _JVM_NewMultiArray
++ _JVM_OnExit
++ _JVM_Open
++ _JVM_RaiseSignal
++ _JVM_RawMonitorCreate
++ _JVM_RawMonitorDestroy
++ _JVM_RawMonitorEnter
++ _JVM_RawMonitorExit
++ _JVM_Read
++ _JVM_Recv
++ _JVM_RecvFrom
++ _JVM_RegisterSignal
++ _JVM_ReleaseUTF
++ _JVM_ResolveClass
++ _JVM_ResumeThread
++ _JVM_Send
++ _JVM_SendTo
++ _JVM_SetArrayElement
++ _JVM_SetClassSigners
++ _JVM_SetLength
++ _JVM_SetNativeThreadName
++ _JVM_SetPrimitiveArrayElement
++ _JVM_SetSockOpt
++ _JVM_SetThreadPriority
++ _JVM_Sleep
++ _JVM_Socket
++ _JVM_SocketAvailable
++ _JVM_SocketClose
++ _JVM_SocketShutdown
++ _JVM_StartThread
++ _JVM_StopThread
++ _JVM_SuspendThread
++ _JVM_SupportsCX8
++ _JVM_Sync
++ _JVM_Timeout
++ _JVM_TotalMemory
++ _JVM_TraceInstructions
++ _JVM_TraceMethodCalls
++ _JVM_UnloadLibrary
++ _JVM_Write
++ _JVM_Yield
++ _JVM_handle_bsd_signal
++
++ # debug _JVM
++ _JVM_AccessVMBooleanFlag
++ _JVM_AccessVMIntFlag
++ _JVM_VMBreakPoint
++
++ # miscellaneous functions
++ _jio_fprintf
++ _jio_printf
++ _jio_snprintf
++ _jio_vfprintf
++ _jio_vsnprintf
++
++ # This is for Forte Analyzer profiling support.
++ _AsyncGetCallTrace
++
++ # INSERT VTABLE SYMBOLS HERE
++
+--- ./hotspot/make/bsd/makefiles/mapfile-vers-product Mon Sep 08 12:35:01 2014 -0700
++++ ./hotspot/make/bsd/makefiles/mapfile-vers-product Wed Nov 05 15:01:44 2014 -0800
+@@ -21,238 +21,246 @@
+ # questions.
+ #
+ #
+-# Only used for OSX/Darwin builds
+
+ # Define public interface.
++
++SUNWprivate_1.1 {
++ global:
+ # _JNI
+- _JNI_CreateJavaVM
+- _JNI_GetCreatedJavaVMs
+- _JNI_GetDefaultJavaVMInitArgs
++ JNI_CreateJavaVM;
++ JNI_GetCreatedJavaVMs;
++ JNI_GetDefaultJavaVMInitArgs;
+
+- # _JVM
+- _JVM_Accept
+- _JVM_ActiveProcessorCount
+- _JVM_AllocateNewArray
+- _JVM_AllocateNewObject
+- _JVM_ArrayCopy
+- _JVM_AssertionStatusDirectives
+- _JVM_Available
+- _JVM_Bind
+- _JVM_ClassDepth
+- _JVM_ClassLoaderDepth
+- _JVM_Clone
+- _JVM_Close
+- _JVM_CX8Field
+- _JVM_CompileClass
+- _JVM_CompileClasses
+- _JVM_CompilerCommand
+- _JVM_Connect
+- _JVM_ConstantPoolGetClassAt
+- _JVM_ConstantPoolGetClassAtIfLoaded
+- _JVM_ConstantPoolGetDoubleAt
+- _JVM_ConstantPoolGetFieldAt
+- _JVM_ConstantPoolGetFieldAtIfLoaded
+- _JVM_ConstantPoolGetFloatAt
+- _JVM_ConstantPoolGetIntAt
+- _JVM_ConstantPoolGetLongAt
+- _JVM_ConstantPoolGetMethodAt
+- _JVM_ConstantPoolGetMethodAtIfLoaded
+- _JVM_ConstantPoolGetMemberRefInfoAt
+- _JVM_ConstantPoolGetSize
+- _JVM_ConstantPoolGetStringAt
+- _JVM_ConstantPoolGetUTF8At
+- _JVM_CountStackFrames
+- _JVM_CurrentClassLoader
+- _JVM_CurrentLoadedClass
+- _JVM_CurrentThread
+- _JVM_CurrentTimeMillis
+- _JVM_DefineClass
+- _JVM_DefineClassWithSource
+- _JVM_DefineClassWithSourceCond
+- _JVM_DesiredAssertionStatus
+- _JVM_DisableCompiler
+- _JVM_DoPrivileged
+- _JVM_DTraceGetVersion
+- _JVM_DTraceActivate
+- _JVM_DTraceIsProbeEnabled
+- _JVM_DTraceIsSupported
+- _JVM_DTraceDispose
+- _JVM_DumpAllStacks
+- _JVM_DumpThreads
+- _JVM_EnableCompiler
+- _JVM_Exit
+- _JVM_FillInStackTrace
+- _JVM_FindClassFromCaller
+- _JVM_FindClassFromClass
+- _JVM_FindClassFromClassLoader
+- _JVM_FindClassFromBootLoader
+- _JVM_FindLibraryEntry
+- _JVM_FindLoadedClass
+- _JVM_FindPrimitiveClass
+- _JVM_FindSignal
+- _JVM_FreeMemory
+- _JVM_GC
+- _JVM_GetAllThreads
+- _JVM_GetArrayElement
+- _JVM_GetArrayLength
+- _JVM_GetCPClassNameUTF
+- _JVM_GetCPFieldClassNameUTF
+- _JVM_GetCPFieldModifiers
+- _JVM_GetCPFieldNameUTF
+- _JVM_GetCPFieldSignatureUTF
+- _JVM_GetCPMethodClassNameUTF
+- _JVM_GetCPMethodModifiers
+- _JVM_GetCPMethodNameUTF
+- _JVM_GetCPMethodSignatureUTF
+- _JVM_GetCallerClass
+- _JVM_GetClassAccessFlags
+- _JVM_GetClassAnnotations
+- _JVM_GetClassCPEntriesCount
+- _JVM_GetClassCPTypes
+- _JVM_GetClassConstantPool
+- _JVM_GetClassContext
+- _JVM_GetClassDeclaredConstructors
+- _JVM_GetClassDeclaredFields
+- _JVM_GetClassDeclaredMethods
+- _JVM_GetClassFieldsCount
+- _JVM_GetClassInterfaces
+- _JVM_GetClassLoader
+- _JVM_GetClassMethodsCount
+- _JVM_GetClassModifiers
+- _JVM_GetClassName
+- _JVM_GetClassNameUTF
+- _JVM_GetClassSignature
+- _JVM_GetClassSigners
+- _JVM_GetClassTypeAnnotations
+- _JVM_GetComponentType
+- _JVM_GetDeclaredClasses
+- _JVM_GetDeclaringClass
+- _JVM_GetEnclosingMethodInfo
+- _JVM_GetFieldAnnotations
+- _JVM_GetFieldIxModifiers
+- _JVM_GetFieldTypeAnnotations
+- _JVM_GetHostName
+- _JVM_GetInheritedAccessControlContext
+- _JVM_GetInterfaceVersion
+- _JVM_GetLastErrorString
+- _JVM_GetManagement
+- _JVM_GetMethodAnnotations
+- _JVM_GetMethodDefaultAnnotationValue
+- _JVM_GetMethodIxArgsSize
+- _JVM_GetMethodIxByteCode
+- _JVM_GetMethodIxByteCodeLength
+- _JVM_GetMethodIxExceptionIndexes
+- _JVM_GetMethodIxExceptionTableEntry
+- _JVM_GetMethodIxExceptionTableLength
+- _JVM_GetMethodIxExceptionsCount
+- _JVM_GetMethodIxLocalsCount
+- _JVM_GetMethodIxMaxStack
+- _JVM_GetMethodIxModifiers
+- _JVM_GetMethodIxNameUTF
+- _JVM_GetMethodIxSignatureUTF
+- _JVM_GetMethodParameterAnnotations
+- _JVM_GetMethodParameters
+- _JVM_GetMethodTypeAnnotations
+- _JVM_GetPrimitiveArrayElement
+- _JVM_GetProtectionDomain
+- _JVM_GetSockName
+- _JVM_GetSockOpt
+- _JVM_GetStackAccessControlContext
+- _JVM_GetStackTraceDepth
+- _JVM_GetStackTraceElement
+- _JVM_GetSystemPackage
+- _JVM_GetSystemPackages
+- _JVM_GetTemporaryDirectory
+- _JVM_GetThreadStateNames
+- _JVM_GetThreadStateValues
+- _JVM_GetVersionInfo
+- _JVM_Halt
+- _JVM_HoldsLock
+- _JVM_IHashCode
+- _JVM_InitAgentProperties
+- _JVM_InitProperties
+- _JVM_InitializeCompiler
+- _JVM_InitializeSocketLibrary
+- _JVM_InternString
+- _JVM_Interrupt
+- _JVM_InvokeMethod
+- _JVM_IsArrayClass
+- _JVM_IsConstructorIx
+- _JVM_IsInterface
+- _JVM_IsInterrupted
+- _JVM_IsNaN
+- _JVM_IsPrimitiveClass
+- _JVM_IsSameClassPackage
+- _JVM_IsSilentCompiler
+- _JVM_IsSupportedJNIVersion
+- _JVM_IsThreadAlive
+- _JVM_IsVMGeneratedMethodIx
+- _JVM_LatestUserDefinedLoader
+- _JVM_Listen
+- _JVM_LoadClass0
+- _JVM_LoadLibrary
+- _JVM_Lseek
+- _JVM_MaxObjectInspectionAge
+- _JVM_MaxMemory
+- _JVM_MonitorNotify
+- _JVM_MonitorNotifyAll
+- _JVM_MonitorWait
+- _JVM_NanoTime
+- _JVM_NativePath
+- _JVM_NewArray
+- _JVM_NewInstanceFromConstructor
+- _JVM_NewMultiArray
+- _JVM_OnExit
+- _JVM_Open
+- _JVM_RaiseSignal
+- _JVM_RawMonitorCreate
+- _JVM_RawMonitorDestroy
+- _JVM_RawMonitorEnter
+- _JVM_RawMonitorExit
+- _JVM_Read
+- _JVM_Recv
+- _JVM_RecvFrom
+- _JVM_RegisterSignal
+- _JVM_ReleaseUTF
+- _JVM_ResolveClass
+- _JVM_ResumeThread
+- _JVM_Send
+- _JVM_SendTo
+- _JVM_SetArrayElement
+- _JVM_SetClassSigners
+- _JVM_SetLength
+- _JVM_SetNativeThreadName
+- _JVM_SetPrimitiveArrayElement
+- _JVM_SetSockOpt
+- _JVM_SetThreadPriority
+- _JVM_Sleep
+- _JVM_Socket
+- _JVM_SocketAvailable
+- _JVM_SocketClose
+- _JVM_SocketShutdown
+- _JVM_StartThread
+- _JVM_StopThread
+- _JVM_SuspendThread
+- _JVM_SupportsCX8
+- _JVM_Sync
+- _JVM_Timeout
+- _JVM_TotalMemory
+- _JVM_TraceInstructions
+- _JVM_TraceMethodCalls
+- _JVM_UnloadLibrary
+- _JVM_Write
+- _JVM_Yield
+- _JVM_handle_bsd_signal
++ # JVM
++ JVM_Accept;
++ JVM_ActiveProcessorCount;
++ JVM_AllocateNewArray;
++ JVM_AllocateNewObject;
++ JVM_ArrayCopy;
++ JVM_AssertionStatusDirectives;
++ JVM_Available;
++ JVM_Bind;
++ JVM_ClassDepth;
++ JVM_ClassLoaderDepth;
++ JVM_Clone;
++ JVM_Close;
++ JVM_CX8Field;
++ JVM_CompileClass;
++ JVM_CompileClasses;
++ JVM_CompilerCommand;
++ JVM_Connect;
++ JVM_ConstantPoolGetClassAt;
++ JVM_ConstantPoolGetClassAtIfLoaded;
++ JVM_ConstantPoolGetDoubleAt;
++ JVM_ConstantPoolGetFieldAt;
++ JVM_ConstantPoolGetFieldAtIfLoaded;
++ JVM_ConstantPoolGetFloatAt;
++ JVM_ConstantPoolGetIntAt;
++ JVM_ConstantPoolGetLongAt;
++ JVM_ConstantPoolGetMethodAt;
++ JVM_ConstantPoolGetMethodAtIfLoaded;
++ JVM_ConstantPoolGetMemberRefInfoAt;
++ JVM_ConstantPoolGetSize;
++ JVM_ConstantPoolGetStringAt;
++ JVM_ConstantPoolGetUTF8At;
++ JVM_CountStackFrames;
++ JVM_CurrentClassLoader;
++ JVM_CurrentLoadedClass;
++ JVM_CurrentThread;
++ JVM_CurrentTimeMillis;
++ JVM_DefineClass;
++ JVM_DefineClassWithSource;
++ JVM_DefineClassWithSourceCond;
++ JVM_DesiredAssertionStatus;
++ JVM_DisableCompiler;
++ JVM_DoPrivileged;
++ JVM_DTraceGetVersion;
++ JVM_DTraceActivate;
++ JVM_DTraceIsProbeEnabled;
++ JVM_DTraceIsSupported;
++ JVM_DTraceDispose;
++ JVM_DumpAllStacks;
++ JVM_DumpThreads;
++ JVM_EnableCompiler;
++ JVM_Exit;
++ JVM_FillInStackTrace;
++ JVM_FindClassFromCaller;
++ JVM_FindClassFromClass;
++ JVM_FindClassFromClassLoader;
++ JVM_FindClassFromBootLoader;
++ JVM_FindLibraryEntry;
++ JVM_FindLoadedClass;
++ JVM_FindPrimitiveClass;
++ JVM_FindSignal;
++ JVM_FreeMemory;
++ JVM_GC;
++ JVM_GetAllThreads;
++ JVM_GetArrayElement;
++ JVM_GetArrayLength;
++ JVM_GetCPClassNameUTF;
++ JVM_GetCPFieldClassNameUTF;
++ JVM_GetCPFieldModifiers;
++ JVM_GetCPFieldNameUTF;
++ JVM_GetCPFieldSignatureUTF;
++ JVM_GetCPMethodClassNameUTF;
++ JVM_GetCPMethodModifiers;
++ JVM_GetCPMethodNameUTF;
++ JVM_GetCPMethodSignatureUTF;
++ JVM_GetCallerClass;
++ JVM_GetClassAccessFlags;
++ JVM_GetClassAnnotations;
++ JVM_GetClassCPEntriesCount;
++ JVM_GetClassCPTypes;
++ JVM_GetClassConstantPool;
++ JVM_GetClassContext;
++ JVM_GetClassDeclaredConstructors;
++ JVM_GetClassDeclaredFields;
++ JVM_GetClassDeclaredMethods;
++ JVM_GetClassFieldsCount;
++ JVM_GetClassInterfaces;
++ JVM_GetClassLoader;
++ JVM_GetClassMethodsCount;
++ JVM_GetClassModifiers;
++ JVM_GetClassName;
++ JVM_GetClassNameUTF;
++ JVM_GetClassSignature;
++ JVM_GetClassSigners;
++ JVM_GetClassTypeAnnotations;
++ JVM_GetComponentType;
++ JVM_GetDeclaredClasses;
++ JVM_GetDeclaringClass;
++ JVM_GetEnclosingMethodInfo;
++ JVM_GetFieldAnnotations;
++ JVM_GetFieldIxModifiers;
++ JVM_GetFieldTypeAnnotations;
++ JVM_GetHostName;
++ JVM_GetInheritedAccessControlContext;
++ JVM_GetInterfaceVersion;
++ JVM_GetLastErrorString;
++ JVM_GetManagement;
++ JVM_GetMethodAnnotations;
++ JVM_GetMethodDefaultAnnotationValue;
++ JVM_GetMethodIxArgsSize;
++ JVM_GetMethodIxByteCode;
++ JVM_GetMethodIxByteCodeLength;
++ JVM_GetMethodIxExceptionIndexes;
++ JVM_GetMethodIxExceptionTableEntry;
++ JVM_GetMethodIxExceptionTableLength;
++ JVM_GetMethodIxExceptionsCount;
++ JVM_GetMethodIxLocalsCount;
++ JVM_GetMethodIxMaxStack;
++ JVM_GetMethodIxModifiers;
++ JVM_GetMethodIxNameUTF;
++ JVM_GetMethodIxSignatureUTF;
++ JVM_GetMethodParameterAnnotations;
++ JVM_GetMethodParameters;
++ JVM_GetMethodTypeAnnotations;
++ JVM_GetPrimitiveArrayElement;
++ JVM_GetProtectionDomain;
++ JVM_GetSockName;
++ JVM_GetSockOpt;
++ JVM_GetStackAccessControlContext;
++ JVM_GetStackTraceDepth;
++ JVM_GetStackTraceElement;
++ JVM_GetSystemPackage;
++ JVM_GetSystemPackages;
++ JVM_GetTemporaryDirectory;
++ JVM_GetThreadStateNames;
++ JVM_GetThreadStateValues;
++ JVM_GetVersionInfo;
++ JVM_Halt;
++ JVM_HoldsLock;
++ JVM_IHashCode;
++ JVM_InitAgentProperties;
++ JVM_InitProperties;
++ JVM_InitializeCompiler;
++ JVM_InitializeSocketLibrary;
++ JVM_InternString;
++ JVM_Interrupt;
++ JVM_InvokeMethod;
++ JVM_IsArrayClass;
++ JVM_IsConstructorIx;
++ JVM_IsInterface;
++ JVM_IsInterrupted;
++ JVM_IsNaN;
++ JVM_IsPrimitiveClass;
++ JVM_IsSameClassPackage;
++ JVM_IsSilentCompiler;
++ JVM_IsSupportedJNIVersion;
++ JVM_IsThreadAlive;
++ JVM_IsVMGeneratedMethodIx;
++ JVM_LatestUserDefinedLoader;
++ JVM_Listen;
++ JVM_LoadClass0;
++ JVM_LoadLibrary;
++ JVM_Lseek;
++ JVM_MaxObjectInspectionAge;
++ JVM_MaxMemory;
++ JVM_MonitorNotify;
++ JVM_MonitorNotifyAll;
++ JVM_MonitorWait;
++ JVM_NanoTime;
++ JVM_NativePath;
++ JVM_NewArray;
++ JVM_NewInstanceFromConstructor;
++ JVM_NewMultiArray;
++ JVM_OnExit;
++ JVM_Open;
++ JVM_RaiseSignal;
++ JVM_RawMonitorCreate;
++ JVM_RawMonitorDestroy;
++ JVM_RawMonitorEnter;
++ JVM_RawMonitorExit;
++ JVM_Read;
++ JVM_Recv;
++ JVM_RecvFrom;
++ JVM_RegisterSignal;
++ JVM_ReleaseUTF;
++ JVM_ResolveClass;
++ JVM_ResumeThread;
++ JVM_Send;
++ JVM_SendTo;
++ JVM_SetArrayElement;
++ JVM_SetClassSigners;
++ JVM_SetLength;
++ JVM_SetNativeThreadName;
++ JVM_SetPrimitiveArrayElement;
++ JVM_SetSockOpt;
++ JVM_SetThreadPriority;
++ JVM_Sleep;
++ JVM_Socket;
++ JVM_SocketAvailable;
++ JVM_SocketClose;
++ JVM_SocketShutdown;
++ JVM_StartThread;
++ JVM_StopThread;
++ JVM_SuspendThread;
++ JVM_SupportsCX8;
++ JVM_Sync;
++ JVM_Timeout;
++ JVM_TotalMemory;
++ JVM_TraceInstructions;
++ JVM_TraceMethodCalls;
++ JVM_UnloadLibrary;
++ JVM_Write;
++ JVM_Yield;
+ JVM_handle_bsd_signal;
# miscellaneous functions
- jio_fprintf;
---- hotspot/make/bsd/makefiles/optimized.make
-+++ hotspot/make/bsd/makefiles/optimized.make
+- _jio_fprintf
+- _jio_printf
+- _jio_snprintf
+- _jio_vfprintf
+- _jio_vsnprintf
++ jio_fprintf;
++ jio_printf;
++ jio_snprintf;
++ jio_vfprintf;
++ jio_vsnprintf;
++ fork1;
++ numa_warn;
++ numa_error;
+
+ # This is for Forte Analyzer profiling support.
+- _AsyncGetCallTrace
++ AsyncGetCallTrace;
+
+ # INSERT VTABLE SYMBOLS HERE
+
++ local:
++ *;
++};
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ ./hotspot/make/bsd/makefiles/mapfile-vers-product.macosx Wed Nov 05 15:01:44 2014 -0800
+@@ -0,0 +1,258 @@
++#
++# Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved.
++# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
++#
++# This code is free software; you can redistribute it and/or modify it
++# under the terms of the GNU General Public License version 2 only, as
++# published by the Free Software Foundation.
++#
++# This code is distributed in the hope that it will be useful, but WITHOUT
++# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
++# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
++# version 2 for more details (a copy is included in the LICENSE file that
++# accompanied this code).
++#
++# You should have received a copy of the GNU General Public License version
++# 2 along with this work; if not, write to the Free Software Foundation,
++# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
++#
++# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
++# or visit www.oracle.com if you need additional information or have any
++# questions.
++#
++#
++# Only used for OSX/Darwin builds
++
++# Define public interface.
++ # _JNI
++ _JNI_CreateJavaVM
++ _JNI_GetCreatedJavaVMs
++ _JNI_GetDefaultJavaVMInitArgs
++
++ # _JVM
++ _JVM_Accept
++ _JVM_ActiveProcessorCount
++ _JVM_AllocateNewArray
++ _JVM_AllocateNewObject
++ _JVM_ArrayCopy
++ _JVM_AssertionStatusDirectives
++ _JVM_Available
++ _JVM_Bind
++ _JVM_ClassDepth
++ _JVM_ClassLoaderDepth
++ _JVM_Clone
++ _JVM_Close
++ _JVM_CX8Field
++ _JVM_CompileClass
++ _JVM_CompileClasses
++ _JVM_CompilerCommand
++ _JVM_Connect
++ _JVM_ConstantPoolGetClassAt
++ _JVM_ConstantPoolGetClassAtIfLoaded
++ _JVM_ConstantPoolGetDoubleAt
++ _JVM_ConstantPoolGetFieldAt
++ _JVM_ConstantPoolGetFieldAtIfLoaded
++ _JVM_ConstantPoolGetFloatAt
++ _JVM_ConstantPoolGetIntAt
++ _JVM_ConstantPoolGetLongAt
++ _JVM_ConstantPoolGetMethodAt
++ _JVM_ConstantPoolGetMethodAtIfLoaded
++ _JVM_ConstantPoolGetMemberRefInfoAt
++ _JVM_ConstantPoolGetSize
++ _JVM_ConstantPoolGetStringAt
++ _JVM_ConstantPoolGetUTF8At
++ _JVM_CountStackFrames
++ _JVM_CurrentClassLoader
++ _JVM_CurrentLoadedClass
++ _JVM_CurrentThread
++ _JVM_CurrentTimeMillis
++ _JVM_DefineClass
++ _JVM_DefineClassWithSource
++ _JVM_DefineClassWithSourceCond
++ _JVM_DesiredAssertionStatus
++ _JVM_DisableCompiler
++ _JVM_DoPrivileged
++ _JVM_DTraceGetVersion
++ _JVM_DTraceActivate
++ _JVM_DTraceIsProbeEnabled
++ _JVM_DTraceIsSupported
++ _JVM_DTraceDispose
++ _JVM_DumpAllStacks
++ _JVM_DumpThreads
++ _JVM_EnableCompiler
++ _JVM_Exit
++ _JVM_FillInStackTrace
++ _JVM_FindClassFromCaller
++ _JVM_FindClassFromClass
++ _JVM_FindClassFromClassLoader
++ _JVM_FindClassFromBootLoader
++ _JVM_FindLibraryEntry
++ _JVM_FindLoadedClass
++ _JVM_FindPrimitiveClass
++ _JVM_FindSignal
++ _JVM_FreeMemory
++ _JVM_GC
++ _JVM_GetAllThreads
++ _JVM_GetArrayElement
++ _JVM_GetArrayLength
++ _JVM_GetCPClassNameUTF
++ _JVM_GetCPFieldClassNameUTF
++ _JVM_GetCPFieldModifiers
++ _JVM_GetCPFieldNameUTF
++ _JVM_GetCPFieldSignatureUTF
++ _JVM_GetCPMethodClassNameUTF
++ _JVM_GetCPMethodModifiers
++ _JVM_GetCPMethodNameUTF
++ _JVM_GetCPMethodSignatureUTF
++ _JVM_GetCallerClass
++ _JVM_GetClassAccessFlags
++ _JVM_GetClassAnnotations
++ _JVM_GetClassCPEntriesCount
++ _JVM_GetClassCPTypes
++ _JVM_GetClassConstantPool
++ _JVM_GetClassContext
++ _JVM_GetClassDeclaredConstructors
++ _JVM_GetClassDeclaredFields
++ _JVM_GetClassDeclaredMethods
++ _JVM_GetClassFieldsCount
++ _JVM_GetClassInterfaces
++ _JVM_GetClassLoader
++ _JVM_GetClassMethodsCount
++ _JVM_GetClassModifiers
++ _JVM_GetClassName
++ _JVM_GetClassNameUTF
++ _JVM_GetClassSignature
++ _JVM_GetClassSigners
++ _JVM_GetClassTypeAnnotations
++ _JVM_GetComponentType
++ _JVM_GetDeclaredClasses
++ _JVM_GetDeclaringClass
++ _JVM_GetEnclosingMethodInfo
++ _JVM_GetFieldAnnotations
++ _JVM_GetFieldIxModifiers
++ _JVM_GetFieldTypeAnnotations
++ _JVM_GetHostName
++ _JVM_GetInheritedAccessControlContext
++ _JVM_GetInterfaceVersion
++ _JVM_GetLastErrorString
++ _JVM_GetManagement
++ _JVM_GetMethodAnnotations
++ _JVM_GetMethodDefaultAnnotationValue
++ _JVM_GetMethodIxArgsSize
++ _JVM_GetMethodIxByteCode
++ _JVM_GetMethodIxByteCodeLength
++ _JVM_GetMethodIxExceptionIndexes
++ _JVM_GetMethodIxExceptionTableEntry
++ _JVM_GetMethodIxExceptionTableLength
++ _JVM_GetMethodIxExceptionsCount
++ _JVM_GetMethodIxLocalsCount
++ _JVM_GetMethodIxMaxStack
++ _JVM_GetMethodIxModifiers
++ _JVM_GetMethodIxNameUTF
++ _JVM_GetMethodIxSignatureUTF
++ _JVM_GetMethodParameterAnnotations
++ _JVM_GetMethodParameters
++ _JVM_GetMethodTypeAnnotations
++ _JVM_GetPrimitiveArrayElement
++ _JVM_GetProtectionDomain
++ _JVM_GetSockName
++ _JVM_GetSockOpt
++ _JVM_GetStackAccessControlContext
++ _JVM_GetStackTraceDepth
++ _JVM_GetStackTraceElement
++ _JVM_GetSystemPackage
++ _JVM_GetSystemPackages
++ _JVM_GetTemporaryDirectory
++ _JVM_GetThreadStateNames
++ _JVM_GetThreadStateValues
++ _JVM_GetVersionInfo
++ _JVM_Halt
++ _JVM_HoldsLock
++ _JVM_IHashCode
++ _JVM_InitAgentProperties
++ _JVM_InitProperties
++ _JVM_InitializeCompiler
++ _JVM_InitializeSocketLibrary
++ _JVM_InternString
++ _JVM_Interrupt
++ _JVM_InvokeMethod
++ _JVM_IsArrayClass
++ _JVM_IsConstructorIx
++ _JVM_IsInterface
++ _JVM_IsInterrupted
++ _JVM_IsNaN
++ _JVM_IsPrimitiveClass
++ _JVM_IsSameClassPackage
++ _JVM_IsSilentCompiler
++ _JVM_IsSupportedJNIVersion
++ _JVM_IsThreadAlive
++ _JVM_IsVMGeneratedMethodIx
++ _JVM_LatestUserDefinedLoader
++ _JVM_Listen
++ _JVM_LoadClass0
++ _JVM_LoadLibrary
++ _JVM_Lseek
++ _JVM_MaxObjectInspectionAge
++ _JVM_MaxMemory
++ _JVM_MonitorNotify
++ _JVM_MonitorNotifyAll
++ _JVM_MonitorWait
++ _JVM_NanoTime
++ _JVM_NativePath
++ _JVM_NewArray
++ _JVM_NewInstanceFromConstructor
++ _JVM_NewMultiArray
++ _JVM_OnExit
++ _JVM_Open
++ _JVM_RaiseSignal
++ _JVM_RawMonitorCreate
++ _JVM_RawMonitorDestroy
++ _JVM_RawMonitorEnter
++ _JVM_RawMonitorExit
++ _JVM_Read
++ _JVM_Recv
++ _JVM_RecvFrom
++ _JVM_RegisterSignal
++ _JVM_ReleaseUTF
++ _JVM_ResolveClass
++ _JVM_ResumeThread
++ _JVM_Send
++ _JVM_SendTo
++ _JVM_SetArrayElement
++ _JVM_SetClassSigners
++ _JVM_SetLength
++ _JVM_SetNativeThreadName
++ _JVM_SetPrimitiveArrayElement
++ _JVM_SetSockOpt
++ _JVM_SetThreadPriority
++ _JVM_Sleep
++ _JVM_Socket
++ _JVM_SocketAvailable
++ _JVM_SocketClose
++ _JVM_SocketShutdown
++ _JVM_StartThread
++ _JVM_StopThread
++ _JVM_SuspendThread
++ _JVM_SupportsCX8
++ _JVM_Sync
++ _JVM_Timeout
++ _JVM_TotalMemory
++ _JVM_TraceInstructions
++ _JVM_TraceMethodCalls
++ _JVM_UnloadLibrary
++ _JVM_Write
++ _JVM_Yield
++ _JVM_handle_bsd_signal
++
++ # miscellaneous functions
++ _jio_fprintf
++ _jio_printf
++ _jio_snprintf
++ _jio_vfprintf
++ _jio_vsnprintf
++
++ # This is for Forte Analyzer profiling support.
++ _AsyncGetCallTrace
++
++ # INSERT VTABLE SYMBOLS HERE
++
+--- ./hotspot/make/bsd/makefiles/optimized.make Mon Sep 08 12:35:01 2014 -0700
++++ ./hotspot/make/bsd/makefiles/optimized.make Wed Nov 05 15:01:44 2014 -0800
@@ -38,6 +38,9 @@
# to inhibit the effect of the previous line on CFLAGS.
@@ -428,8 +2182,8 @@
+MAPFILE = $(GAMMADIR)/make/bsd/makefiles/mapfile-vers-debug$(MAPSUFX)
VERSION = optimized
---- hotspot/make/bsd/makefiles/product.make
-+++ hotspot/make/bsd/makefiles/product.make
+--- ./hotspot/make/bsd/makefiles/product.make Mon Sep 08 12:35:01 2014 -0700
++++ ./hotspot/make/bsd/makefiles/product.make Wed Nov 05 15:01:44 2014 -0800
@@ -38,7 +38,10 @@
# to inhibit the effect of the previous line on CFLAGS.
@@ -442,8 +2196,8 @@
SYSDEFS += -DPRODUCT
VERSION = optimized
---- hotspot/make/bsd/makefiles/rules.make
-+++ hotspot/make/bsd/makefiles/rules.make
+--- ./hotspot/make/bsd/makefiles/rules.make Mon Sep 08 12:35:01 2014 -0700
++++ ./hotspot/make/bsd/makefiles/rules.make Wed Nov 05 15:01:44 2014 -0800
@@ -34,7 +34,7 @@
CC_COMPILE = $(CC) $(CXXFLAGS) $(CFLAGS)
CXX_COMPILE = $(CXX) $(CXXFLAGS) $(CFLAGS)
@@ -453,22 +2207,8 @@
COMPILE.CC = $(CC_COMPILE) -c
GENASM.CC = $(CC_COMPILE) -S
---- hotspot/src/cpu/x86/vm/globals_x86.hpp
-+++ hotspot/src/cpu/x86/vm/globals_x86.hpp
-@@ -70,11 +70,7 @@
- define_pd_global(bool, RewriteBytecodes, true);
- define_pd_global(bool, RewriteFrequentPairs, true);
-
--#ifdef _ALLBSD_SOURCE
--define_pd_global(bool, UseMembar, true);
--#else
- define_pd_global(bool, UseMembar, false);
--#endif
-
- // GC Ergo Flags
- define_pd_global(uintx, CMSYoungGenPerWorker, 64*M); // default max size of CMS young gen, per GC worker thread
---- hotspot/src/cpu/x86/vm/jni_x86.h
-+++ hotspot/src/cpu/x86/vm/jni_x86.h
+--- ./hotspot/src/cpu/x86/vm/jni_x86.h Mon Sep 08 12:35:01 2014 -0700
++++ ./hotspot/src/cpu/x86/vm/jni_x86.h Wed Nov 05 15:01:44 2014 -0800
@@ -34,7 +34,7 @@
#ifndef __has_attribute
#define __has_attribute(x) 0
@@ -478,34 +2218,8 @@
#define JNIEXPORT __attribute__((visibility("default")))
#define JNIIMPORT __attribute__((visibility("default")))
#else
---- hotspot/src/cpu/x86/vm/templateTable_x86_64.cpp
-+++ hotspot/src/cpu/x86/vm/templateTable_x86_64.cpp
-@@ -107,10 +107,6 @@
- return Address(rsp, Interpreter::expr_offset_in_bytes(2));
- }
-
--static inline Address at_tos_p3() {
-- return Address(rsp, Interpreter::expr_offset_in_bytes(3));
--}
--
- // Condition conversion
- static Assembler::Condition j_not(TemplateTable::Condition cc) {
- switch (cc) {
---- hotspot/src/cpu/x86/vm/x86_32.ad
-+++ hotspot/src/cpu/x86/vm/x86_32.ad
-@@ -1201,8 +1201,9 @@
- if( dst_second_rc == rc_int && src_second_rc == rc_stack )
- return impl_helper(cbuf,do_size,true ,ra_->reg2offset(src_second),dst_second,0x8B,"MOV ",size, st);
-
--
-+ assert(0," foo ");
- Unimplemented();
-+ return 0;
- }
-
- #ifndef PRODUCT
---- hotspot/src/os/bsd/vm/decoder_bsd.cpp
-+++ hotspot/src/os/bsd/vm/decoder_bsd.cpp
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ ./hotspot/src/os/bsd/vm/decoder_bsd.cpp Wed Nov 05 15:01:44 2014 -0800
@@ -0,0 +1,47 @@
+/*
+ * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
@@ -554,25 +2268,22 @@
+ return false;
+}
+#endif
---- hotspot/src/os/bsd/vm/jsig.c
-+++ hotspot/src/os/bsd/vm/jsig.c
-@@ -140,9 +140,13 @@
+--- ./hotspot/src/os/bsd/vm/jsig.c Mon Sep 08 12:35:01 2014 -0700
++++ ./hotspot/src/os/bsd/vm/jsig.c Wed Nov 05 15:01:44 2014 -0800
+@@ -140,9 +140,8 @@
}
sa_handler_t sigset(int sig, sa_handler_t disp) {
-+#ifdef __FreeBSD__
-+ return set_signal(sig, disp, true);
-+#else
- printf("sigset() is not supported by BSD");
- exit(0);
+- printf("sigset() is not supported by BSD");
+- exit(0);
- }
-+#endif
++ return set_signal(sig, disp, true);
+}
static int call_os_sigaction(int sig, const struct sigaction *act,
struct sigaction *oact) {
---- hotspot/src/os/bsd/vm/jvm_bsd.cpp
-+++ hotspot/src/os/bsd/vm/jvm_bsd.cpp
+--- ./hotspot/src/os/bsd/vm/jvm_bsd.cpp Mon Sep 08 12:35:01 2014 -0700
++++ ./hotspot/src/os/bsd/vm/jvm_bsd.cpp Wed Nov 05 15:01:44 2014 -0800
@@ -50,6 +50,7 @@
case INTERRUPT_SIGNAL:
case SIGFPE:
@@ -682,8 +2393,8 @@
+ jio_snprintf(buf, len, "SIG%s", signame);
+ return true;
}
---- hotspot/src/os/bsd/vm/jvm_bsd.h
-+++ hotspot/src/os/bsd/vm/jvm_bsd.h
+--- ./hotspot/src/os/bsd/vm/jvm_bsd.h Mon Sep 08 12:35:01 2014 -0700
++++ ./hotspot/src/os/bsd/vm/jvm_bsd.h Wed Nov 05 15:01:44 2014 -0800
@@ -112,20 +112,6 @@
#define SHUTDOWN2_SIGNAL SIGINT
#define SHUTDOWN3_SIGNAL SIGTERM
@@ -705,8 +2416,8 @@
#endif /* JVM_MD_H */
#endif // OS_BSD_VM_JVM_BSD_H
---- hotspot/src/os/bsd/vm/osThread_bsd.cpp
-+++ hotspot/src/os/bsd/vm/osThread_bsd.cpp
+--- ./hotspot/src/os/bsd/vm/osThread_bsd.cpp Mon Sep 08 12:35:01 2014 -0700
++++ ./hotspot/src/os/bsd/vm/osThread_bsd.cpp Wed Nov 05 15:01:44 2014 -0800
@@ -30,7 +30,7 @@
void OSThread::pd_initialize() {
@@ -716,8 +2427,8 @@
_thread_id = 0;
#else
_thread_id = NULL;
---- hotspot/src/os/bsd/vm/os_bsd.cpp
-+++ hotspot/src/os/bsd/vm/os_bsd.cpp
+--- ./hotspot/src/os/bsd/vm/os_bsd.cpp Mon Sep 08 12:35:01 2014 -0700
++++ ./hotspot/src/os/bsd/vm/os_bsd.cpp Wed Nov 05 15:01:44 2014 -0800
@@ -102,6 +102,16 @@
# include <sys/ioctl.h>
# include <sys/syscall.h>
@@ -735,7 +2446,7 @@
#if defined(__FreeBSD__) || defined(__NetBSD__)
# include <elf.h>
#endif
-@@ -161,6 +171,28 @@
+@@ -168,6 +178,27 @@
// available here means free
julong os::Bsd::available_memory() {
@@ -749,8 +2460,7 @@
+ julong free_pages;
+ u_int i, npages;
+
-+ for (i = 0, free_pages = 0; i < sizeof(vm_stats) / sizeof(vm_stats[0]); i++)
-+{
++ for (i = 0, free_pages = 0; i < sizeof(vm_stats) / sizeof(vm_stats[0]); i++) {
+ size = sizeof(npages);
+ if (sysctlbyname(vm_stats[i], &npages, &size, NULL, 0) == -1) {
+ free_pages = 0;
@@ -764,7 +2474,7 @@
uint64_t available = physical_memory() >> 2;
#ifdef __APPLE__
mach_msg_type_number_t count = HOST_VM_INFO64_COUNT;
-@@ -200,7 +232,7 @@
+@@ -207,7 +238,7 @@
static bool init = false;
static bool privileges = false;
if (!init) {
@@ -773,48 +2483,29 @@
init = true;
}
return privileges;
-@@ -240,6 +272,19 @@
-
-
- void os::Bsd::initialize_system_info() {
-+#ifdef __FreeBSD__
-+ int cpu_val = sysconf(_SC_NPROCESSORS_CONF);
-+ if (cpu_val >= 1)
-+ set_processor_count(cpu_val);
-+ else
-+ set_processor_count(1); // fallback
-+
-+ long phys_pages = sysconf(_SC_PHYS_PAGES);
-+ if (phys_pages > 0)
-+ _physical_memory = (julong)phys_pages * _page_size;
-+ else
-+ _physical_memory = 256*M; // fallback
-+#else
- int mib[2];
- size_t len;
- int cpu_val;
-@@ -289,6 +334,7 @@
- _physical_memory = MIN2(_physical_memory, (julong)limits.rlim_cur);
- }
- #endif
-+#endif
- }
-
- #ifdef __APPLE__
-@@ -434,8 +480,12 @@
- #else
- ld_library_path = (char *) malloc(sizeof(REG_DIR) + sizeof("/lib/") +
- strlen(cpu_arch) + sizeof(DEFAULT_LIBPATH));
-+#ifdef __FreeBSD__
-+ sprintf(ld_library_path, DEFAULT_LIBPATH ":" PACKAGE_PATH "/lib");
+@@ -410,12 +441,21 @@
+ const char *v = ::getenv("LD_LIBRARY_PATH");
+ const char *v_colon = ":";
+ if (v == NULL) { v = ""; v_colon = ""; }
++#ifdef __APPLE__
+ // That's +1 for the colon and +1 for the trailing '\0'.
+ char *ld_library_path = (char *)NEW_C_HEAP_ARRAY(char,
+ strlen(v) + 1 +
+ sizeof(SYS_EXT_DIR) + sizeof("/lib/") + strlen(cpu_arch) + sizeof(DEFAULT_LIBPATH) + 1,
+ mtInternal);
+ sprintf(ld_library_path, "%s%s" SYS_EXT_DIR "/lib/%s:" DEFAULT_LIBPATH, v, v_colon, cpu_arch);
+#else
- sprintf(ld_library_path, REG_DIR "/lib/%s:" DEFAULT_LIBPATH, cpu_arch);
- #endif
++ // That's +1 for the colon and +1 for the trailing '\0'.
++ char *ld_library_path = (char *)NEW_C_HEAP_ARRAY(char,
++ strlen(v) + 1 +
++ sizeof(PACKAGE_PATH) + sizeof("/lib") + 1,
++ mtInternal);
++ sprintf(ld_library_path, "%s%s" PACKAGE_PATH "/lib", v, v_colon);
+#endif
-
- /*
- * Get the user setting of LD_LIBRARY_PATH, and prepended it. It
-@@ -1148,7 +1198,13 @@
+ Arguments::set_library_path(ld_library_path);
+ FREE_C_HEAP_ARRAY(char, ld_library_path, mtInternal);
+ }
+@@ -1197,7 +1237,13 @@
return retval;
#elif __FreeBSD__
@@ -829,7 +2520,7 @@
#elif __OpenBSD__
retval = syscall(SYS_getthrid);
#elif __NetBSD__
-@@ -1158,11 +1214,14 @@
+@@ -1207,11 +1253,14 @@
if (retval == -1) {
return getpid();
}
@@ -845,32 +2536,7 @@
#else
return (intx)::pthread_self();
#endif
-@@ -1562,24 +1621,6 @@
- return dlsym(handle, name);
- }
-
--
--static bool _print_ascii_file(const char* filename, outputStream* st) {
-- int fd = ::open(filename, O_RDONLY);
-- if (fd == -1) {
-- return false;
-- }
--
-- char buf[32];
-- int bytes;
-- while ((bytes = ::read(fd, buf, sizeof(buf))) > 0) {
-- st->print_raw(buf, bytes);
-- }
--
-- ::close(fd);
--
-- return true;
--}
--
- void os::print_dll_info(outputStream *st) {
- st->print_cr("Dynamic libraries:");
- #ifdef RTLD_DI_LINKMAP
-@@ -1629,14 +1670,14 @@
+@@ -1689,14 +1738,14 @@
}
void os::print_os_info_brief(outputStream* st) {
@@ -887,7 +2553,7 @@
os::Posix::print_uname_info(st);
-@@ -1649,6 +1690,29 @@
+@@ -1709,6 +1758,29 @@
// Nothing to do for now.
}
@@ -917,7 +2583,7 @@
void os::print_memory_info(outputStream* st) {
st->print("Memory:");
-@@ -1658,11 +1722,14 @@
+@@ -1718,11 +1790,14 @@
os::physical_memory() >> 10);
st->print("(" UINT64_FORMAT "k free)",
os::available_memory() >> 10);
@@ -937,25 +2603,7 @@
st->cr();
}
-@@ -1675,7 +1742,7 @@
-
- const char *fpe_names[] = { "FPE0", "FPE_INTDIV", "FPE_INTOVF", "FPE_FLTDIV",
- "FPE_FLTOVF", "FPE_FLTUND", "FPE_FLTRES",
-- "FPE_FLTINV", "FPE_FLTSUB", "FPE_FLTDEN" };
-+ "FPE_FLTINV", "FPE_FLTSUB" };
-
- const char *segv_names[] = { "SEGV0", "SEGV_MAPERR", "SEGV_ACCERR" };
-
-@@ -1701,7 +1768,7 @@
- st->print(", si_addr=" PTR_FORMAT, si->si_addr);
- break;
- case SIGFPE:
-- st->print(", si_code=%d (%s)", c, c > 9 ? "" : fpe_names[c]);
-+ st->print(", si_code=%d (%s)", c, c > 8 ? "" : fpe_names[c]);
- st->print(", si_addr=" PTR_FORMAT, si->si_addr);
- break;
- case SIGSEGV:
-@@ -1943,7 +2010,7 @@
+@@ -1958,7 +2033,7 @@
os_semaphore_t _semaphore;
};
@@ -964,7 +2612,7 @@
SEM_INIT(_semaphore, 0);
}
-@@ -2128,7 +2195,7 @@
+@@ -2146,7 +2221,7 @@
if (::write(fd, "", 1) == 1) {
mmap(base, size,
PROT_READ|PROT_WRITE|PROT_EXEC,
@@ -973,7 +2621,7 @@
}
}
::close(fd);
-@@ -2238,7 +2305,7 @@
+@@ -2256,7 +2331,7 @@
return ::mprotect(addr, size, PROT_NONE) == 0;
#else
uintptr_t res = (uintptr_t) ::mmap(addr, size, PROT_NONE,
@@ -982,7 +2630,7 @@
return res != (uintptr_t) MAP_FAILED;
#endif
}
-@@ -2265,7 +2332,7 @@
+@@ -2283,7 +2358,7 @@
char * addr;
int flags;
@@ -991,7 +2639,7 @@
if (fixed) {
assert((uintptr_t)requested_addr % os::Bsd::page_size() == 0, "unaligned address");
flags |= MAP_FIXED;
-@@ -2743,6 +2810,7 @@
+@@ -2770,6 +2845,7 @@
return OS_OK;
#elif defined(__FreeBSD__)
int ret = pthread_setprio(thread->osthread()->pthread_id(), newpri);
@@ -999,7 +2647,7 @@
#elif defined(__APPLE__) || defined(__NetBSD__)
struct sched_param sp;
int policy;
-@@ -3340,18 +3408,6 @@
+@@ -3364,18 +3440,6 @@
}
}
@@ -1018,7 +2666,7 @@
static const char* get_signal_handler_name(address handler,
char* buf, int buflen) {
int offset;
-@@ -3375,9 +3431,6 @@
+@@ -3399,9 +3463,6 @@
sigaction(sig, NULL, &sa);
@@ -1028,7 +2676,7 @@
st->print("%s: ", os::exception_name(sig, buf, buflen));
address handler = (sa.sa_flags & SA_SIGINFO)
-@@ -3398,7 +3451,7 @@
+@@ -3423,7 +3484,7 @@
// May be, handler was resetted by VMError?
if(rh != NULL) {
handler = rh;
@@ -1036,8 +2684,8 @@
+ sa.sa_flags = VMError::get_resetted_sigflags(sig);
}
- st->print(", sa_flags=" PTR32_FORMAT, sa.sa_flags);
-@@ -3473,8 +3526,6 @@
+ st->print(", sa_flags=");
+@@ -3499,8 +3560,6 @@
os_sigaction(sig, (struct sigaction*)NULL, &act);
@@ -1046,7 +2694,7 @@
address thisHandler = (act.sa_flags & SA_SIGINFO)
? CAST_FROM_FN_PTR(address, act.sa_sigaction)
: CAST_FROM_FN_PTR(address, act.sa_handler) ;
-@@ -3534,6 +3585,14 @@
+@@ -3560,6 +3619,14 @@
extern bool signal_name(int signo, char* buf, size_t len);
@@ -1061,7 +2709,7 @@
const char* os::exception_name(int exception_code, char* buf, size_t size) {
if (0 < exception_code && exception_code <= SIGRTMAX) {
// signal
-@@ -3733,6 +3792,19 @@
+@@ -3759,6 +3826,19 @@
};
int os::active_processor_count() {
@@ -1081,7 +2729,7 @@
return _processor_count;
}
-@@ -3943,7 +4015,10 @@
+@@ -3970,7 +4050,10 @@
}
int fd;
int o_delete = (oflag & O_DELETE);
@@ -1093,7 +2741,7 @@
fd = ::open(path, oflag, mode);
if (fd == -1) return -1;
-@@ -3988,7 +4063,7 @@
+@@ -4015,7 +4098,7 @@
* 4843136: (process) pipe file descriptor from Runtime.exec not being closed
* 6339493: (process) Runtime.exec does not close all file descriptors on Solaris 9
*/
@@ -1102,8 +2750,8 @@
{
int flags = ::fcntl(fd, F_GETFD);
if (flags != -1)
---- hotspot/src/os/bsd/vm/vmError_bsd.cpp
-+++ hotspot/src/os/bsd/vm/vmError_bsd.cpp
+--- ./hotspot/src/os/bsd/vm/vmError_bsd.cpp Mon Sep 08 12:35:01 2014 -0700
++++ ./hotspot/src/os/bsd/vm/vmError_bsd.cpp Wed Nov 05 15:01:44 2014 -0800
@@ -44,7 +44,7 @@
jio_snprintf(p, buflen - len,
"\n\n"
@@ -1122,50 +2770,9 @@
os::current_process_id(), os::current_process_id());
os::fork_and_exec(buf);
---- hotspot/src/os_cpu/bsd_x86/vm/globals_bsd_x86.hpp
-+++ hotspot/src/os_cpu/bsd_x86/vm/globals_bsd_x86.hpp
-@@ -42,7 +42,6 @@
- #endif // AMD64
-
- define_pd_global(intx, CompilerThreadStackSize, 0);
--define_pd_global(uintx, SurvivorRatio, 8);
-
- define_pd_global(uintx, JVMInvokeMethodSlack, 8192);
-
---- hotspot/src/share/vm/code/relocInfo.hpp
-+++ hotspot/src/share/vm/code/relocInfo.hpp
-@@ -364,7 +364,7 @@
- // "immediate" in the prefix header word itself. This optimization
- // is invisible outside this module.)
-
-- inline friend relocInfo prefix_relocInfo(int datalen = 0);
-+ inline friend relocInfo prefix_relocInfo(int datalen);
-
- protected:
- // an immediate relocInfo optimizes a prefix with one 10-bit unsigned value
-@@ -459,7 +459,7 @@
- return relocInfo(relocInfo::none, relocInfo::offset_limit() - relocInfo::offset_unit);
- }
-
--inline relocInfo prefix_relocInfo(int datalen) {
-+inline relocInfo prefix_relocInfo(int datalen = 0) {
- assert(relocInfo::fits_into_immediate(datalen), "datalen in limits");
- return relocInfo(relocInfo::data_prefix_tag, relocInfo::RAW_BITS, relocInfo::datalen_tag | datalen);
- }
---- hotspot/src/share/vm/gc_implementation/shared/gcTraceSend.cpp
-+++ hotspot/src/share/vm/gc_implementation/shared/gcTraceSend.cpp
-@@ -110,7 +110,7 @@
- if (e.should_commit()) {
- e.set_gcId(_shared_gc_info.id());
- e.set_data(to_trace_struct(pf_info));
-- e.set_thread(pf_info.thread()->thread_id());
-+ e.set_thread((uintptr_t) pf_info.thread()->thread_id());
- e.commit();
- }
- }
---- hotspot/src/share/vm/opto/node.cpp
-+++ hotspot/src/share/vm/opto/node.cpp
-@@ -285,6 +285,10 @@
+--- ./hotspot/src/share/vm/opto/node.cpp Mon Sep 08 12:35:01 2014 -0700
++++ ./hotspot/src/share/vm/opto/node.cpp Wed Nov 05 15:01:44 2014 -0800
+@@ -286,6 +286,10 @@
#ifdef _MSC_VER // the IDX_INIT hack falls foul of warning C4355
#pragma warning( disable:4355 ) // 'this' : used in base member initializer list
#endif
@@ -1176,7 +2783,7 @@
// Out-of-line code from node constructors.
// Executed only when extra debug info. is being passed around.
-@@ -468,6 +472,10 @@
+@@ -469,6 +473,10 @@
_in[6] = n6; if (n6 != NULL) n6->add_out((Node *)this);
}
@@ -1187,45 +2794,8 @@
//------------------------------clone------------------------------------------
// Clone a Node.
---- hotspot/src/share/vm/prims/jvmtiTagMap.cpp
-+++ hotspot/src/share/vm/prims/jvmtiTagMap.cpp
-@@ -2790,6 +2790,7 @@
- return true;
- }
-
-+#ifdef ASSERT
- // verify that a static oop field is in range
- static inline bool verify_static_oop(InstanceKlass* ik,
- oop mirror, int offset) {
-@@ -2804,6 +2805,7 @@
- return false;
- }
- }
-+#endif // #ifdef ASSERT
-
- // a class references its super class, interfaces, class loader, ...
- // and finally its static fields
---- hotspot/src/share/vm/runtime/mutex.cpp
-+++ hotspot/src/share/vm/runtime/mutex.cpp
-@@ -280,16 +280,6 @@
- return x & 0x7FFFFFFF ;
- }
-
--static inline jint MarsagliaXOR (jint * const a) {
-- jint x = *a ;
-- if (x == 0) x = UNS(a)|1 ;
-- x ^= x << 6;
-- x ^= ((unsigned)x) >> 21;
-- x ^= x << 7 ;
-- *a = x ;
-- return x & 0x7FFFFFFF ;
--}
--
- static int Stall (int its) {
- static volatile jint rv = 1 ;
- volatile int OnFrame = 0 ;
---- hotspot/src/share/vm/utilities/globalDefinitions_gcc.hpp
-+++ hotspot/src/share/vm/utilities/globalDefinitions_gcc.hpp
+--- ./hotspot/src/share/vm/utilities/globalDefinitions_gcc.hpp Mon Sep 08 12:35:01 2014 -0700
++++ ./hotspot/src/share/vm/utilities/globalDefinitions_gcc.hpp Wed Nov 05 15:01:44 2014 -0800
@@ -261,7 +261,7 @@
#endif
@@ -1235,19 +2805,40 @@
#define CAN_USE_NAN_DEFINE 1
#endif
---- jdk/make/CompileDemos.gmk
-+++ jdk/make/CompileDemos.gmk
-@@ -313,7 +313,7 @@
- $(eval $(call SetupJVMTIDemo,heapViewer, agent_util))
+--- ./jaxp/.hgtags Mon Sep 08 12:36:00 2014 -0700
++++ ./jaxp/.hgtags Wed Sep 17 11:56:44 2014 -0700
+@@ -331,3 +331,4 @@
+ 90f3b8b970a8bb3173083111248372afdc61652d jdk8u25-b14
+ f5ac2e242bb95be0a3deddf37362178202086137 jdk8u25-b15
+ df68b132a471ed1e825a79bd1d8acb47d2bcc04f jdk8u25-b16
++7a721e57b38ff6c1d34af0b86f6482540a815d90 jdk8u25-b17
+--- ./jaxws/.hgtags Mon Sep 08 12:36:09 2014 -0700
++++ ./jaxws/.hgtags Wed Sep 17 11:56:51 2014 -0700
+@@ -329,3 +329,4 @@
+ 392a9579cc95d27806c1dde16eee776524a49761 jdk8u25-b14
+ d3a96bbb88521188a3af1a34dd9523f13afa521d jdk8u25-b15
+ 4570a7d00aa9bd3df028f52d6f9d8c434163b689 jdk8u25-b16
++d47a47f961ee423ce03623098f62d79254c6f328 jdk8u25-b17
+--- ./jdk/.hgtags Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/.hgtags Wed Nov 05 12:14:24 2014 -0800
+@@ -332,3 +332,4 @@
+ 0000000000000000000000000000000000000000 jdk8u25-b16
+ 0000000000000000000000000000000000000000 jdk8u25-b16
+ d067890f970f3a712f870f6311d20f3359b6eaf0 jdk8u25-b16
++67b22a82345bfa1ae1492679bdf3c4d54f4eacde jdk8u25-b17
+--- ./jdk/make/CompileDemos.gmk Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/make/CompileDemos.gmk Wed Nov 05 12:14:24 2014 -0800
+@@ -323,7 +323,7 @@
$(eval $(call SetupJVMTIDemo,hprof, java_crw_demo, \
- -I$(JDK_TOPDIR)/src/share/npt -I$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/npt, C, \
-- -ldl, ws2_32.lib winmm.lib, -lsocket -lnsl, -lpthread))
-+ $(LIBDL), ws2_32.lib winmm.lib, -lsocket -lnsl, -lpthread))
+ -I$(JDK_TOPDIR)/src/share/npt -I$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/npt \
+ $(BUILD_LIBHPROF_AIX_EXTRA_CFLAGS), C, \
+- -ldl, ws2_32.lib winmm.lib, -lsocket -lnsl, -lpthread, $(BUILD_LIBHPROF_AIX_EXTRA_SRC)))
++ $(LIBDL), ws2_32.lib winmm.lib, -lsocket -lnsl, -lpthread, $(BUILD_LIBHPROF_AIX_EXTRA_SRC)))
$(eval $(call SetupJVMTIDemo,minst, agent_util java_crw_demo))
$(eval $(call SetupJVMTIDemo,mtrace, agent_util java_crw_demo))
---- jdk/make/CompileJavaClasses.gmk
-+++ jdk/make/CompileJavaClasses.gmk
+--- ./jdk/make/CompileJavaClasses.gmk Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/make/CompileJavaClasses.gmk Wed Nov 05 12:14:24 2014 -0800
@@ -125,23 +125,32 @@
sun/nio/fs/LinuxFileStore.java \
sun/nio/fs/LinuxFileSystem.java \
@@ -1285,19 +2876,19 @@
sun/tools/attach/BsdAttachProvider.java \
sun/tools/attach/BsdVirtualMachine.java
endif
-@@ -217,9 +226,9 @@
+@@ -228,9 +237,9 @@
# Exclude another implicitly not included file.
EXFILES += sun/util/locale/AsciiUtil.java
--ifeq (, $(filter $(OPENJDK_TARGET_OS), solaris macosx))
-+ifeq (, $(filter $(OPENJDK_TARGET_OS), solaris bsd macosx))
+-ifeq (, $(filter $(OPENJDK_TARGET_OS), solaris macosx aix))
++ifeq (, $(filter $(OPENJDK_TARGET_OS), solaris bsd macosx aix))
#
-- # only solaris and macosx
-+ # only solaris and BSD
+- # only solaris, macosx and aix
++ # only solaris, BSD, macosx and aix
#
EXFILES += sun/nio/fs/PollingWatchService.java
endif
-@@ -259,21 +268,26 @@
+@@ -270,21 +279,26 @@
$(JDK_TOPDIR)/src/closed/$(OPENJDK_TARGET_OS_API_DIR)/classes
endif
@@ -1331,16 +2922,15 @@
endif
# The security classes should not end up in the classes directory as that will prevent them
-@@ -312,7 +326,7 @@
- SETUP:=GENERATE_JDKBYTECODE,\
+@@ -334,6 +348,7 @@
SRC:=$(JDK_TOPDIR)/src/share/classes \
$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/classes \
-- $(MACOSX_SRC_DIRS) \
+ $(MACOSX_SRC_DIRS) \
+ $(BSD_SRC_DIRS) \
+ $(AIX_SRC_DIRS) \
$(JDK_OUTPUTDIR)/gensrc \
$(JDK_OUTPUTDIR)/gensrc_no_srczip \
- $(CLOSED_SRC_DIRS),\
-@@ -331,7 +345,7 @@
+@@ -353,7 +368,7 @@
SETUP := GENERATE_JDKBYTECODE, \
SRC := $(JDK_TOPDIR)/src/share/classes \
$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/classes \
@@ -1349,8 +2939,8 @@
$(CLOSED_SRC_DIRS), \
INCLUDES := $(SECURITY_PKGS), \
EXCLUDES := $(EXCLUDES), \
---- jdk/make/CompileLaunchers.gmk
-+++ jdk/make/CompileLaunchers.gmk
+--- ./jdk/make/CompileLaunchers.gmk Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/make/CompileLaunchers.gmk Wed Nov 05 12:14:24 2014 -0800
@@ -49,7 +49,7 @@
ORIGIN_ROOT := /..
endif
@@ -1382,7 +2972,7 @@
ifeq ($(OPENJDK_TARGET_OS), macosx)
$1_PLIST_FILE := Info-cmdline.plist
ifneq ($(11), )
-@@ -147,9 +153,11 @@
+@@ -162,9 +168,11 @@
-DLIBARCHNAME='"$(OPENJDK_TARGET_CPU_LEGACY)"' \
-DLAUNCHER_NAME='"$(LAUNCHER_NAME)"' \
-DPROGNAME='"$1"' $(DPACKAGEPATH) \
@@ -1394,24 +2984,24 @@
LDFLAGS := $(LDFLAGS_JDKEXE) \
$(ORIGIN_ARG) \
$$($1_LDFLAGS), \
-@@ -180,7 +188,7 @@
+@@ -195,7 +203,7 @@
BUILD_LAUNCHERS += $$(BUILD_LAUNCHER_$1)
-- ifeq ($(OPENJDK_TARGET_OS), macosx)
-+ ifneq ($(findstring $(OPENJDK_TARGET_OS), bsd macosx), )
+- ifneq (,$(filter $(OPENJDK_TARGET_OS), macosx aix))
++ ifneq (,$(filter $(OPENJDK_TARGET_OS), bsd macosx aix))
$$(BUILD_LAUNCHER_$1): $(JDK_OUTPUTDIR)/objs/libjli_static.a
endif
-@@ -456,6 +464,7 @@
+@@ -481,6 +489,7 @@
CFLAGS_release := -DPRODUCT, \
CFLAGS_linux := -fPIC, \
CFLAGS_solaris := -KPIC, \
+ CFLAGS_bsd := -fPIC, \
CFLAGS_macosx := -fPIC, \
- MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libunpack/mapfile-vers-unpack200, \
+ MAPFILE := $(UNPACK_MAPFILE),\
LDFLAGS := $(UNPACKEXE_ZIPOBJS), \
-@@ -518,7 +527,7 @@
+@@ -543,7 +552,7 @@
endif
endif
@@ -1420,7 +3010,7 @@
BUILD_JEXEC := 1
endif # OPENJDK_TARGET_OS
-@@ -554,6 +563,7 @@
+@@ -579,6 +588,7 @@
$(BUILD_JEXEC_INC), \
CFLAGS_linux := -fPIC, \
CFLAGS_solaris := -KPIC, \
@@ -1428,7 +3018,7 @@
LDFLAGS := $(LDFLAGS_JDKEXE) \
$(call SET_SHARED_LIBRARY_NAME,$(LIBRARY_PREFIX)$(SHARED_LIBRARY_SUFFIX)), \
OBJECT_DIR := $(JDK_OUTPUTDIR)/objs/jexec_obj, \
-@@ -570,10 +580,7 @@
+@@ -595,10 +605,7 @@
# The java-rmi.cgi script in bin/ only gets delivered in certain situations
#
JAVA_RMI_CGI := $(JDK_OUTPUTDIR)/bin$(OUTPUT_SUBDIR)/java-rmi.cgi
@@ -1440,17 +3030,17 @@
BUILD_LAUNCHERS += $(JAVA_RMI_CGI)
endif
-@@ -601,7 +608,7 @@
+@@ -626,7 +633,7 @@
LINK_JSPAWNHELPER_OBJECTS := $(JDK_OUTPUTDIR)/objs/libjava/childproc.o
LINK_JSPAWNHELPER_FLAGS :=
--ifneq ($(findstring $(OPENJDK_TARGET_OS), macosx solaris), )
-+ifneq ($(findstring $(OPENJDK_TARGET_OS), macosx solaris bsd), )
+-ifneq ($(findstring $(OPENJDK_TARGET_OS), macosx solaris aix), )
++ifneq ($(findstring $(OPENJDK_TARGET_OS), bsd macosx solaris aix), )
BUILD_JSPAWNHELPER := 1
endif
---- jdk/make/CopyFiles.gmk
-+++ jdk/make/CopyFiles.gmk
+--- ./jdk/make/CopyFiles.gmk Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/make/CopyFiles.gmk Wed Nov 05 12:14:24 2014 -0800
@@ -29,6 +29,8 @@
ifeq ($(OPENJDK_TARGET_OS), windows)
@@ -1493,8 +3083,8 @@
endif
endif
endif
---- jdk/make/Images.gmk
-+++ jdk/make/Images.gmk
+--- ./jdk/make/Images.gmk Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/make/Images.gmk Wed Nov 05 12:14:24 2014 -0800
@@ -234,11 +234,11 @@
endif
@@ -1532,7 +3122,7 @@
$(ECHO) $(LOG_INFO) Creating $(patsubst $(OUTPUT_ROOT)/%,%,$@)
$(CD) $(@D) && $(RM) ja && $(LN) -s ja_JP.UTF-8 ja
- endif
--
+
- ifeq ($(OPENJDK_TARGET_OS), macosx)
- $(JRE_IMAGE_DIR)/man/ja:
- $(ECHO) $(LOG_INFO) Creating $(patsubst $(OUTPUT_ROOT)/%,%,$@)
@@ -1542,7 +3132,7 @@
- $(ECHO) $(LOG_INFO) Creating $(patsubst $(OUTPUT_ROOT)/%,%,$@)
- $(CD) $(@D) && $(RM) ja && $(LN) -s ja_JP.UTF-8 ja
- endif
-
+-
- ifeq ($(OPENJDK_TARGET_OS), linux)
JRE_MAN_PAGE_LIST = $(addprefix $(JRE_IMAGE_DIR)/man/man1/, $(JRE_MAN_PAGES)) \
$(addprefix $(JRE_IMAGE_DIR)/man/ja_JP.UTF-8/man1/, $(JRE_MAN_PAGES)) \
@@ -1564,8 +3154,8 @@
endif # Windows
################################################################################
---- jdk/make/data/classlist/classlist.bsd
-+++ jdk/make/data/classlist/classlist.bsd
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ ./jdk/make/data/classlist/classlist.bsd Wed Nov 05 12:14:24 2014 -0800
@@ -0,0 +1,2803 @@
+com/sun/java/swing/SwingUtilities3
+com/sun/java/swing/plaf/windows/WindowsTabbedPaneUI
@@ -4370,10 +5960,10 @@
+sun/util/resources/en/TimeZoneNames_en
+sun/util/spi/CalendarProvider
+# ca392e7ee7285d72
---- jdk/make/gendata/GendataFontConfig.gmk
-+++ jdk/make/gendata/GendataFontConfig.gmk
-@@ -66,6 +66,13 @@
- GENDATA_FONT_CONFIG_SRC_PREFIX := macosx.
+--- ./jdk/make/gendata/GendataFontConfig.gmk Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/make/gendata/GendataFontConfig.gmk Wed Nov 05 12:14:24 2014 -0800
+@@ -73,6 +73,13 @@
+ GENDATA_FONT_CONFIG_SRC_PREFIX := aix.
endif
+ifeq ($(OPENJDK_TARGET_OS), bsd)
@@ -4386,8 +5976,8 @@
###
$(GENDATA_FONT_CONFIG_DST)/%.src: \
---- jdk/make/gensrc/GensrcMisc.gmk
-+++ jdk/make/gensrc/GensrcMisc.gmk
+--- ./jdk/make/gensrc/GensrcMisc.gmk Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/make/gensrc/GensrcMisc.gmk Wed Nov 05 12:14:24 2014 -0800
@@ -64,9 +64,6 @@
ifeq ($(OPENJDK_TARGET_OS_API), posix)
@@ -4398,26 +5988,26 @@
# UNIXProcess.java is different for solaris and linux. We need to copy
# the correct UNIXProcess.java over to $(JDK_OUTPUTDIR)/gensrc/java/lang/.
---- jdk/make/lib/Awt2dLibraries.gmk
-+++ jdk/make/lib/Awt2dLibraries.gmk
-@@ -305,7 +305,7 @@
+--- ./jdk/make/lib/Awt2dLibraries.gmk Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/make/lib/Awt2dLibraries.gmk Wed Nov 05 12:14:24 2014 -0800
+@@ -309,7 +309,7 @@
debug_trace.c \
debug_util.c
--ifneq (, $(filter $(OPENJDK_TARGET_OS), solaris linux))
-+ifneq (, $(filter $(OPENJDK_TARGET_OS), solaris linux bsd))
+-ifneq (, $(filter $(OPENJDK_TARGET_OS), solaris linux aix))
++ifneq (, $(filter $(OPENJDK_TARGET_OS), bsd solaris linux aix))
LIBAWT_FILES += awt_LoadLibrary.c initIDs.c img_colors.c
endif
-@@ -473,6 +473,7 @@
- LDFLAGS_solaris := -R/usr/dt/lib$(OPENJDK_TARGET_CPU_ISADIR) -R$(OPENWIN_LIB)$(OPENJDK_TARGET_CPU_ISADIR), \
+@@ -482,6 +482,7 @@
LDFLAGS_SUFFIX_linux := -ljvm $(LIBM) $(LIBDL) -ljava, \
LDFLAGS_SUFFIX_solaris := -ljvm $(LIBM) $(LIBDL) -ljava -lc, \
+ LDFLAGS_SUFFIX_aix :=-ljvm $(LIBM) $(LIBDL) -ljava -lm,\
+ LDFLAGS_SUFFIX_bsd := -ljvm $(LIBM) -ljava, \
LDFLAGS_SUFFIX_macosx := -lmlib_image -ljvm $(LIBM) \
-framework Cocoa \
-framework OpenGL \
-@@ -550,6 +551,16 @@
+@@ -559,6 +560,16 @@
endif
endif
@@ -4434,7 +6024,7 @@
ifeq ($(MILESTONE), internal)
LIBAWT_XAWT_CFLAGS += -DINTERNAL_BUILD
endif
-@@ -619,6 +630,11 @@
+@@ -628,6 +639,11 @@
LIBAWT_XAWT_LDFLAGS += -lpthread
endif
@@ -4446,23 +6036,23 @@
$(eval $(call SetupNativeCompilation,BUILD_LIBAWT_XAWT, \
LIBRARY := awt_xawt, \
OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \
-@@ -681,6 +697,7 @@
- LDFLAGS_SUFFIX_solaris := -lawt -ljava -ljvm -lc, \
+@@ -691,6 +707,7 @@
LDFLAGS_SUFFIX_macosx := $(LIBM) -lawt -ljava -ljvm, \
LDFLAGS_SUFFIX_linux := -lm -lawt -ljava -ljvm, \
+ LDFLAGS_SUFFIX_aix := -lm -lawt -ljava -ljvm,\
+ LDFLAGS_SUFFIX_bsd := -lm -lawt -ljava -ljvm, \
VERSIONINFO_RESOURCE := $(JDK_TOPDIR)/src/windows/resource/version.rc, \
RC_FLAGS := $(RC_FLAGS) \
-D "JDK_FNAME=lcms.dll" \
-@@ -819,6 +836,7 @@
- LDFLAGS_SUFFIX := $(BUILD_LIBFONTMANAGER_FONTLIB), \
+@@ -830,6 +847,7 @@
LDFLAGS_SUFFIX_linux := -lawt $(LIBM) $(LIBCXX) -ljava -ljvm -lc, \
LDFLAGS_SUFFIX_solaris := -lawt -lawt_xawt -lc $(LIBM) $(LIBCXX) -ljava -ljvm, \
+ LDFLAGS_SUFFIX_aix := -lawt -lawt_xawt $(LIBM) $(LIBCXX) -ljava -ljvm,\
+ LDFLAGS_SUFFIX_bsd := -lawt $(LIBM) $(LIBCXX) -ljava -ljvm -lc, \
LDFLAGS_SUFFIX_macosx := -lawt $(LIBM) $(LIBCXX) -undefined dynamic_lookup \
-ljava -ljvm, \
LDFLAGS_SUFFIX_windows := $(WIN_JAVA_LIB) advapi32.lib user32.lib gdi32.lib \
-@@ -962,6 +980,7 @@
+@@ -973,6 +991,7 @@
OPTIMIZATION := LOW, \
CFLAGS := $(CFLAGS_JDKLIB), \
CFLAGS_linux := $(HEADLESS_CFLAG), \
@@ -4470,34 +6060,43 @@
CFLAGS_macosx := -I$(JDK_TOPDIR)/src/solaris/native/sun/awt, \
MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libjawt/mapfile-vers, \
LDFLAGS := $(LDFLAGS_JDKLIB) \
-@@ -969,6 +988,7 @@
- LDFLAGS_solaris := -L$(OPENWIN_HOME)/sfw/lib$(OPENJDK_TARGET_CPU_ISADIR) -L$(OPENWIN_LIB)$(OPENJDK_TARGET_CPU_ISADIR), \
+@@ -981,6 +1000,7 @@
LDFLAGS_SUFFIX_linux := $(JAWT_LIBS) $(LDFLAGS_JDKLIB_SUFFIX), \
+ LDFLAGS_SUFFIX_aix := $(JAWT_LIBS) $(LDFLAGS_JDKLIB_SUFFIX),\
LDFLAGS_SUFFIX_solaris := $(JAWT_LIBS) $(LDFLAGS_JDKLIB_SUFFIX) -lXrender, \
+ LDFLAGS_SUFFIX_bsd := $(JAWT_LIBS) $(LDFLAGS_JDKLIB_SUFFIX), \
LDFLAGS_SUFFIX_macosx := -Xlinker -rpath -Xlinker @loader_path $(JAWT_LIBS) \
-framework Cocoa $(LDFLAGS_JDKLIB_SUFFIX), \
OBJECT_DIR := $(JDK_OUTPUTDIR)/objs/libjawt, \
-@@ -1169,6 +1189,7 @@
- REORDER := $(LIBAWT_HEADLESS_REORDER), \
+@@ -1182,6 +1202,7 @@
LDFLAGS_SUFFIX_linux := -ljvm -lawt -lm $(LIBDL) -ljava, \
+ LDFLAGS_SUFFIX_aix := -ljvm -lawt -ljava,\
LDFLAGS_SUFFIX_solaris := $(LIBDL) -ljvm -lawt -lm -ljava $(LIBCXX) -lc, \
+ LDFLAGS_SUFFIX_bsd := -ljvm -lawt -lm -ljava, \
OBJECT_DIR := $(JDK_OUTPUTDIR)/objs/libawt_headless, \
DEBUG_SYMBOLS := $(DEBUG_ALL_BINARIES)))
-@@ -1245,6 +1266,8 @@
+@@ -1235,6 +1256,8 @@
+ LIBSPLASHSCREEN_CFLAGS += -DWITH_WIN32
+ else ifeq ($(OPENJDK_TARGET_OS), solaris)
+ LIBSPLASHSCREEN_CFLAGS += -DWITH_X11 -I$(OPENWIN_HOME)/include -I$(OPENWIN_HOME)/include/X11/extensions
++ else ifeq ($(OPENJDK_TARGET_OS), bsd)
++ LIBSPLASHSCREEN_CFLAGS += -DWITH_X11 $(X_CFLAGS) -DLIBICONV_PLUG
+ else
+ LIBSPLASHSCREEN_CFLAGS += -DWITH_X11 $(X_CFLAGS)
+ endif
+@@ -1258,6 +1281,8 @@
else ifeq ($(OPENJDK_TARGET_OS), solaris)
# Solaris still uses OPENWIN_LIB ..
LIBSPLASHSCREEN_LDFLAGS_SUFFIX += -L$(OPENWIN_LIB)$(OPENJDK_TARGET_CPU_ISADIR) -lX11 -lXext $(LIBM) -lpthread
+ else ifeq ($(OPENJDK_TARGET_OS), bsd)
-+ LIBSPLASHSCREEN_LDFLAGS_SUFFIX += $(X_LIBS) -lX11 -lXext $(LIBM) -liconv -pthread
++ LIBSPLASHSCREEN_LDFLAGS_SUFFIX += $(X_LIBS) -lX11 -lXext $(LIBM) -pthread
else # .. all other Unixes can use X_LIBS
LIBSPLASHSCREEN_LDFLAGS_SUFFIX += $(X_LIBS) -lX11 -lXext $(LIBM) -lpthread
endif
---- jdk/make/lib/CoreLibraries.gmk
-+++ jdk/make/lib/CoreLibraries.gmk
-@@ -81,7 +81,7 @@
+--- ./jdk/make/lib/CoreLibraries.gmk Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/make/lib/CoreLibraries.gmk Wed Nov 05 12:14:24 2014 -0800
+@@ -82,7 +82,7 @@
endif
LIBVERIFY_OPTIMIZATION := HIGH
@@ -4506,23 +6105,23 @@
ifeq ($(ENABLE_DEBUG_SYMBOLS), true)
LIBVERIFY_OPTIMIZATION := LOW
endif
-@@ -198,6 +198,7 @@
- LDFLAGS_SUFFIX_posix := -ljvm -lverify, \
+@@ -200,6 +200,7 @@
LDFLAGS_SUFFIX_solaris := -lsocket -lnsl -lscf $(LIBDL) $(BUILD_LIBFDLIBM) -lc, \
LDFLAGS_SUFFIX_linux := $(LIBDL) $(BUILD_LIBFDLIBM), \
+ LDFLAGS_SUFFIX_aix := $(LIBDL) $(BUILD_LIBFDLIBM) -lm,\
+ LDFLAGS_SUFFIX_bsd := $(BUILD_LIBFDLIBM), \
LDFLAGS_SUFFIX_macosx := -L$(JDK_OUTPUTDIR)/objs/ -lfdlibm \
-framework CoreFoundation \
-framework Foundation \
-@@ -266,6 +267,7 @@
- $(WIN_JAVA_LIB), \
+@@ -269,6 +270,7 @@
LDFLAGS_SUFFIX_linux := -ljvm -ljava $(LIBZ), \
LDFLAGS_SUFFIX_solaris := -ljvm -ljava $(LIBZ) -lc, \
+ LDFLAGS_SUFFIX_aix := -ljvm -ljava $(LIBZ),\
+ LDFLAGS_SUFFIX_bsd := -ljvm -ljava $(LIBZ), \
LDFLAGS_SUFFIX_macosx := $(LIBZ) -ljava -ljvm, \
VERSIONINFO_RESOURCE := $(JDK_TOPDIR)/src/windows/resource/version.rc, \
RC_FLAGS := $(RC_FLAGS) \
-@@ -376,7 +378,7 @@
+@@ -379,7 +381,7 @@
# Append defines depending on target platform
LIBJLI_CFLAGS += $(OPENJDK_TARGET_CPU_JLI_CFLAGS)
@@ -4531,7 +6130,7 @@
LIBJLI_CFLAGS += -DPACKAGE_PATH=\"$(PACKAGE_PATH)\"
endif
-@@ -411,10 +413,12 @@
+@@ -414,11 +416,13 @@
$(call SET_SHARED_LIBRARY_ORIGIN), \
LDFLAGS_linux := $(call SET_SHARED_LIBRARY_ORIGIN,/..), \
LDFLAGS_solaris := $(call SET_SHARED_LIBRARY_ORIGIN,/..), \
@@ -4539,12 +6138,13 @@
LDFLAGS_macosx := -framework Cocoa -framework Security -framework ApplicationServices, \
LDFLAGS_SUFFIX_solaris := $(LIBZ) $(LIBDL) -lc, \
LDFLAGS_SUFFIX_linux := $(LIBZ) $(LIBDL) -lc -lpthread, \
+ LDFLAGS_SUFFIX_aix := $(LIBZ) $(LIBDL),\
LDFLAGS_SUFFIX_macosx := $(LIBZ), \
+ LDFLAGS_SUFFIX_bsd := $(LIBZ) -pthread, \
LDFLAGS_SUFFIX_windows := \
-export:JLI_Launch \
-export:JLI_ManifestIterate \
-@@ -458,9 +462,9 @@
+@@ -462,9 +466,9 @@
BUILD_LIBRARIES += $(BUILD_LIBJLI_STATIC)
@@ -4556,16 +6156,20 @@
# code it here...rather than add support to NativeCompilation
# as this is first time I see it
$(eval $(call SetupNativeCompilation,BUILD_LIBJLI_STATIC, \
-@@ -495,6 +499,7 @@
+@@ -512,9 +516,11 @@
+ CFLAGS := $(CFLAGS_JDKLIB) \
+ -I$(JDK_TOPDIR)/src/share/npt \
+ -I$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/npt, \
++ CFLAGS_bsd := -DLIBICONV_PLUG, \
MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libnpt/mapfile-vers, \
LDFLAGS := $(LDFLAGS_JDKLIB) \
$(call SET_SHARED_LIBRARY_ORIGIN), \
-+ LDFLAGS_bsd := -liconv, \
++ LDFLAGS_bsd := , \
LDFLAGS_macosx := -liconv, \
LDFLAGS_SUFFIX_windows := -export:nptInitialize -export:nptTerminate, \
LDFLAGS_SUFFIX_solaris := -lc, \
---- jdk/make/lib/NetworkingLibraries.gmk
-+++ jdk/make/lib/NetworkingLibraries.gmk
+--- ./jdk/make/lib/NetworkingLibraries.gmk Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/make/lib/NetworkingLibraries.gmk Wed Nov 05 12:14:24 2014 -0800
@@ -42,7 +42,7 @@
LIBNET_EXCLUDE_FILES += linux_close.c
endif
@@ -4575,17 +6179,17 @@
LIBNET_EXCLUDE_FILES += bsd_close.c
endif
-@@ -69,6 +69,7 @@
- LDFLAGS_SUFFIX_macosx := -ljvm -ljava, \
+@@ -74,6 +74,7 @@
LDFLAGS_SUFFIX_solaris := -ljvm -ljava -lnsl -lsocket $(LIBDL) -lc, \
LDFLAGS_SUFFIX_linux := $(LIBDL) -ljvm -lpthread -ljava, \
+ LDFLAGS_SUFFIX_aix := $(LIBDL) -ljvm -ljava,\
+ LDFLAGS_SUFFIX_bsd := -ljvm -pthread -ljava, \
LDFLAGS_SUFFIX_windows := ws2_32.lib jvm.lib secur32.lib iphlpapi.lib \
delayimp.lib $(WIN_JAVA_LIB) advapi32.lib \
-DELAYLOAD:secur32.dll -DELAYLOAD:iphlpapi.dll, \
---- jdk/make/lib/NioLibraries.gmk
-+++ jdk/make/lib/NioLibraries.gmk
-@@ -77,9 +77,26 @@
+--- ./jdk/make/lib/NioLibraries.gmk Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/make/lib/NioLibraries.gmk Wed Nov 05 12:14:24 2014 -0800
+@@ -77,9 +77,27 @@
UnixNativeDispatcher.c
endif
@@ -4610,10 +6214,11 @@
ifeq ($(OPENJDK_TARGET_OS), macosx)
BUILD_LIBNIO_MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libnio/mapfile-$(OPENJDK_TARGET_OS)
- BUILD_LIBNIO_SRC += $(JDK_TOPDIR)/src/macosx/native/sun/nio/ch
++ BUILD_LIBNIO_SRC += $(JDK_TOPDIR)/src/bsd/native/sun/nio/ch
BUILD_LIBNIO_FILES += \
InheritedChannel.c \
NativeThread.c \
-@@ -130,6 +147,7 @@
+@@ -149,6 +167,7 @@
LDFLAGS_SUFFIX_windows := jvm.lib ws2_32.lib $(WIN_JAVA_LIB) \
$(JDK_OUTPUTDIR)/objs/libnet/net.lib \
advapi32.lib, \
@@ -4621,7 +6226,7 @@
LDFLAGS_SUFFIX_macosx := -ljava -lnet -pthread -framework CoreFoundation, \
LDFLAGS_SUFFIX :=, \
VERSIONINFO_RESOURCE := $(JDK_TOPDIR)/src/windows/resource/version.rc, \
-@@ -175,6 +193,7 @@
+@@ -194,6 +213,7 @@
LDFLAGS_SUFFIX_linux := -lpthread $(LIBDL) -ljava -ljvm, \
LDFLAGS_SUFFIX_posix := -lnio -lnet, \
LDFLAGS_SUFFIX_solaris := -lsocket -ljava -ljvm -lc, \
@@ -4629,8 +6234,8 @@
LDFLAGS_SUFFIX_macosx := -ljava -ljvm, \
OBJECT_DIR := $(JDK_OUTPUTDIR)/objs/libsctp, \
DEBUG_SYMBOLS := $(DEBUG_ALL_BINARIES)))
---- jdk/make/lib/ServiceabilityLibraries.gmk
-+++ jdk/make/lib/ServiceabilityLibraries.gmk
+--- ./jdk/make/lib/ServiceabilityLibraries.gmk Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/make/lib/ServiceabilityLibraries.gmk Wed Nov 05 12:14:24 2014 -0800
@@ -30,7 +30,7 @@
ifneq ($(OPENJDK_TARGET_OS), linux)
LIBATTACH_EXCLUDE_FILES += LinuxVirtualMachine.c
@@ -4639,8 +6244,8 @@
+ifeq (,$(findstring $(OPENJDK_TARGET_OS), bsd macosx))
LIBATTACH_EXCLUDE_FILES += BsdVirtualMachine.c
endif
-
-@@ -82,6 +82,7 @@
+ ifneq ($(OPENJDK_TARGET_OS),aix)
+@@ -90,6 +90,7 @@
$(call SET_SHARED_LIBRARY_ORIGIN), \
LDFLAGS_SUFFIX_linux := -lpthread, \
LDFLAGS_SUFFIX_solaris := -lnsl -lsocket -lc, \
@@ -4648,7 +6253,14 @@
LDFLAGS_SUFFIX_windows := $(LDFLAGS_JDKLIB_SUFFIX) -export:jdwpTransport_OnLoad ws2_32.lib, \
VERSIONINFO_RESOURCE := $(JDK_TOPDIR)/src/windows/resource/version.rc, \
RC_FLAGS := $(RC_FLAGS) \
-@@ -249,12 +250,15 @@
+@@ -251,12 +252,15 @@
+ CFLAGS := $(LIBINSTRUMENT_CFLAGS), \
+ CFLAGS_debug := -DJPLIS_LOGGING, \
+ CFLAGS_release := -DNO_JPLIS_LOGGING, \
++ CFLAGS_bsd := -DLIBICONV_PLUG, \
+ MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libinstrument/mapfile-vers, \
+ LDFLAGS := $(LDFLAGS_JDKLIB) \
+ $(call SET_SHARED_LIBRARY_ORIGIN) \
$(LIBINSTRUMENT_LDFLAGS), \
LDFLAGS_linux := $(call SET_SHARED_LIBRARY_ORIGIN,/jli), \
LDFLAGS_solaris := $(call SET_SHARED_LIBRARY_ORIGIN,/jli), \
@@ -4657,23 +6269,24 @@
LDFLAGS_macosx := -Xlinker -all_load $(JDK_OUTPUTDIR)/objs/libjli_static.a \
-framework Cocoa -framework Security -framework ApplicationServices, \
LDFLAGS_SUFFIX := $(LIBINSTRUMENT_LDFLAGS_SUFFIX), \
- LDFLAGS_SUFFIX_macosx := -liconv $(LIBZ), \
+@@ -264,6 +268,7 @@
LDFLAGS_SUFFIX_solaris := $(LIBZ) -L $(INSTALL_LIBRARIES_HERE)/jli -ljli $(LIBDL) -lc, \
LDFLAGS_SUFFIX_linux := $(LIBZ) -L $(INSTALL_LIBRARIES_HERE)/jli -ljli $(LIBDL), \
-+ LDFLAGS_SUFFIX_bsd := -liconv $(LIBZ), \
+ LDFLAGS_SUFFIX_aix := $(LIBZ) -L$(JDK_OUTPUTDIR)/objs -ljli_static $(LIBDL),\
++ LDFLAGS_SUFFIX_bsd := $(LIBZ), \
VERSIONINFO_RESOURCE := $(JDK_TOPDIR)/src/windows/resource/version.rc, \
RC_FLAGS := $(RC_FLAGS) \
-D "JDK_FNAME=instrument.dll" \
-@@ -263,7 +267,7 @@
+@@ -272,7 +277,7 @@
OBJECT_DIR := $(LIBINSTRUMENT_DIR), \
DEBUG_SYMBOLS := true))
--ifneq (, $(findstring $(OPENJDK_TARGET_OS), macosx windows))
-+ifneq (, $(findstring $(OPENJDK_TARGET_OS), bsd macosx windows))
+-ifneq (, $(findstring $(OPENJDK_TARGET_OS), macosx windows aix))
++ifneq (, $(findstring $(OPENJDK_TARGET_OS), bsd macosx windows aix))
$(BUILD_LIBINSTRUMENT): $(JDK_OUTPUTDIR)/objs/$(LIBRARY_PREFIX)jli_static$(STATIC_LIBRARY_SUFFIX)
else
$(BUILD_LIBINSTRUMENT): $(INSTALL_LIBRARIES_HERE)/jli/$(LIBRARY_PREFIX)jli$(SHARED_LIBRARY_SUFFIX)
-@@ -289,12 +293,16 @@
+@@ -298,12 +303,16 @@
BUILD_LIBMANAGEMENT_EXCLUDES += LinuxOperatingSystem.c
endif
@@ -4691,7 +6304,7 @@
ifeq ($(ENABLE_DEBUG_SYMBOLS), true)
LIBMANAGEMENT_OPTIMIZATION := LOW
endif
-@@ -337,7 +345,7 @@
+@@ -352,7 +361,7 @@
BUILD_LIBHPROF_LDFLAGS :=
LIBHPROF_OPTIMIZATION := HIGHEST
@@ -4700,11 +6313,11 @@
ifeq ($(ENABLE_DEBUG_SYMBOLS), true)
LIBHPROF_OPTIMIZATION := LOW
endif
---- jdk/make/lib/SoundLibraries.gmk
-+++ jdk/make/lib/SoundLibraries.gmk
-@@ -71,6 +71,11 @@
- LIBJSOUND_CFLAGS += -DX_PLATFORM=X_LINUX
- endif # OPENJDK_TARGET_OS linux
+--- ./jdk/make/lib/SoundLibraries.gmk Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/make/lib/SoundLibraries.gmk Wed Nov 05 12:14:24 2014 -0800
+@@ -75,6 +75,11 @@
+ LIBJSOUND_CFLAGS += -DX_PLATFORM=X_AIX
+ endif # OPENJDK_TARGET_OS aix
+ifeq ($(OPENJDK_TARGET_OS), bsd)
+ EXTRA_SOUND_JNI_LIBS += jsoundalsa
@@ -4714,7 +6327,7 @@
ifeq ($(OPENJDK_TARGET_OS), macosx)
LIBJSOUND_LANG := C++
LIBJSOUND_CFLAGS += -DX_PLATFORM=X_MACOSX \
-@@ -188,12 +193,14 @@
+@@ -196,12 +201,14 @@
CFLAGS := $(CFLAGS_JDKLIB) $(ALSA_CFLAGS) \
$(LIBJSOUND_CFLAGS) \
-DUSE_DAUDIO=TRUE \
@@ -4731,8 +6344,8 @@
LDFLAGS_SUFFIX := $(ALSA_LIBS) -ljava -ljvm, \
OBJECT_DIR := $(JDK_OUTPUTDIR)/objs/libjsoundalsa, \
DEBUG_SYMBOLS := $(DEBUG_ALL_BINARIES)))
---- jdk/make/mapfiles/launchers/mapfile-x86
-+++ jdk/make/mapfiles/launchers/mapfile-x86
+--- ./jdk/make/mapfiles/launchers/mapfile-x86 Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/make/mapfiles/launchers/mapfile-x86 Wed Nov 05 12:14:24 2014 -0800
@@ -33,6 +33,7 @@
environ; # Public symbols and required by Java run time
_environ;
@@ -4741,8 +6354,8 @@
___Argv; # The following are private, but as they are
_start; # exported from ctr1/crtn, the clever hacker
_init; # might know about them. However note, that
---- jdk/make/mapfiles/launchers/mapfile-x86_64
-+++ jdk/make/mapfiles/launchers/mapfile-x86_64
+--- ./jdk/make/mapfiles/launchers/mapfile-x86_64 Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/make/mapfiles/launchers/mapfile-x86_64 Wed Nov 05 12:14:24 2014 -0800
@@ -33,6 +33,7 @@
environ; # Public symbols and required by Java run time
_environ;
@@ -4751,8 +6364,8 @@
local:
*;
---- jdk/make/mapfiles/libattach/mapfile-bsd
-+++ jdk/make/mapfiles/libattach/mapfile-bsd
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ ./jdk/make/mapfiles/libattach/mapfile-bsd Wed Nov 05 12:14:24 2014 -0800
@@ -0,0 +1,42 @@
+#
+# Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
@@ -4796,8 +6409,8 @@
+ local:
+ *;
+};
---- jdk/make/mapfiles/libnio/mapfile-bsd
-+++ jdk/make/mapfiles/libnio/mapfile-bsd
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ ./jdk/make/mapfiles/libnio/mapfile-bsd Wed Nov 05 12:14:24 2014 -0800
@@ -0,0 +1,189 @@
+#
+# Copyright (c) 2001, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -4988,8 +6601,8 @@
+ local:
+ *;
+};
---- jdk/make/mapfiles/libunpack/mapfile-vers-unpack200
-+++ jdk/make/mapfiles/libunpack/mapfile-vers-unpack200
+--- ./jdk/make/mapfiles/libunpack/mapfile-vers-unpack200 Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/make/mapfiles/libunpack/mapfile-vers-unpack200 Wed Nov 05 12:14:24 2014 -0800
@@ -26,6 +26,9 @@
# Define library interface.
@@ -5000,8 +6613,8 @@
local:
*;
};
---- jdk/make/netbeans/common/bsd-sources.ent
-+++ jdk/make/netbeans/common/bsd-sources.ent
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ ./jdk/make/netbeans/common/bsd-sources.ent Wed Nov 05 12:14:24 2014 -0800
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
@@ -5048,8 +6661,8 @@
+ <label>Sources for BSD Platform</label>
+ <location>${root}/src/bsd/classes</location>
+</source-folder>
---- jdk/make/netbeans/common/bsd-view.ent
-+++ jdk/make/netbeans/common/bsd-view.ent
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ ./jdk/make/netbeans/common/bsd-view.ent Wed Nov 05 12:14:24 2014 -0800
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
@@ -5090,8 +6703,8 @@
+ <includes>${includes}</includes>
+ <excludes>${excludes}</excludes>
+</source-folder>
---- jdk/make/netbeans/common/java-data-native.ent
-+++ jdk/make/netbeans/common/java-data-native.ent
+--- ./jdk/make/netbeans/common/java-data-native.ent Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/make/netbeans/common/java-data-native.ent Wed Nov 05 12:14:24 2014 -0800
@@ -34,6 +34,7 @@
<java-data xmlns="http://www.netbeans.org/ns/freeform-project-java/4">
<compilation-unit>
@@ -5100,8 +6713,8 @@
<package-root>${root}/src/macosx/classes</package-root>
<package-root>${root}/src/solaris/classes</package-root>
<package-root>${root}/src/windows/classes</package-root>
---- jdk/make/netbeans/common/make.xml
-+++ jdk/make/netbeans/common/make.xml
+--- ./jdk/make/netbeans/common/make.xml Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/make/netbeans/common/make.xml Wed Nov 05 12:14:24 2014 -0800
@@ -32,16 +32,21 @@
-->
@@ -5136,8 +6749,8 @@
<macrodef name="make-run">
<attribute name="target"/>
<attribute name="dir"/>
---- jdk/make/netbeans/j2se/nbproject/project.xml
-+++ jdk/make/netbeans/j2se/nbproject/project.xml
+--- ./jdk/make/netbeans/j2se/nbproject/project.xml Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/make/netbeans/j2se/nbproject/project.xml Wed Nov 05 12:14:24 2014 -0800
@@ -34,6 +34,7 @@
<!DOCTYPE project [
<!ENTITY properties SYSTEM "../../common/properties.ent">
@@ -5170,8 +6783,8 @@
&macosx-view;
&unix-view;
&windows-view;
---- jdk/make/netbeans/world/nbproject/project.xml
-+++ jdk/make/netbeans/world/nbproject/project.xml
+--- ./jdk/make/netbeans/world/nbproject/project.xml Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/make/netbeans/world/nbproject/project.xml Wed Nov 05 12:14:24 2014 -0800
@@ -34,12 +34,14 @@
<!DOCTYPE project [
<!ENTITY properties SYSTEM "../../common/properties.ent">
@@ -5203,8 +6816,1730 @@
&macosx-view;
&unix-view;
&windows-view;
---- jdk/src/share/bin/jli_util.h
-+++ jdk/src/share/bin/jli_util.h
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ ./jdk/src/bsd/classes/java/net/DefaultInterface.java Wed Nov 05 12:14:24 2014 -0800
+@@ -0,0 +1,97 @@
++/*
++ * Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved.
++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
++ *
++ * This code is free software; you can redistribute it and/or modify it
++ * under the terms of the GNU General Public License version 2 only, as
++ * published by the Free Software Foundation. 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.
++ */
++
++package java.net;
++
++/**
++ * Choose a network interface to be the default for
++ * outgoing IPv6 traffic that does not specify a scope_id (and which needs one).
++ * We choose the first interface that is up and is (in order of preference):
++ * 1. neither loopback nor point to point
++ * 2. point to point
++ * 3. loopback
++ * 4. none.
++ * Platforms that do not require a default interface implement a dummy
++ * that returns null.
++ */
++
++import java.util.Enumeration;
++import java.io.IOException;
++
++class DefaultInterface {
++
++ private final static NetworkInterface defaultInterface =
++ chooseDefaultInterface();
++
++ static NetworkInterface getDefault() {
++ return defaultInterface;
++ }
++
++ /**
++ * Choose a default interface. This method returns an interface that is
++ * both "up" and supports multicast. This method choses an interface in
++ * order of preference:
++ * 1. neither loopback nor point to point
++ * 2. point to point
++ * 3. loopback
++ *
++ * @return the chosen interface or {@code null} if there isn't a suitable
++ * default
++ */
++ private static NetworkInterface chooseDefaultInterface() {
++ Enumeration<NetworkInterface> nifs;
++
++ try {
++ nifs = NetworkInterface.getNetworkInterfaces();
++ } catch (IOException ignore) {
++ // unable to enumate network interfaces
++ return null;
++ }
++
++ NetworkInterface ppp = null;
++ NetworkInterface loopback = null;
++
++ while (nifs.hasMoreElements()) {
++ NetworkInterface ni = nifs.nextElement();
++ try {
++ if (ni.isUp() && ni.supportsMulticast()) {
++ boolean isLoopback = ni.isLoopback();
++ boolean isPPP = ni.isPointToPoint();
++ if (!isLoopback && !isPPP) {
++ // found an interface that is not the loopback or a
++ // point-to-point interface
++ return ni;
++ }
++ if (ppp == null && isPPP)
++ ppp = ni;
++ if (loopback == null && isLoopback)
++ loopback = ni;
++ }
++ } catch (IOException skip) { }
++ }
++
++ return (ppp != null) ? ppp : loopback;
++ }
++}
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ ./jdk/src/bsd/classes/sun/nio/ch/DefaultSelectorProvider.java Wed Nov 05 12:14:24 2014 -0800
+@@ -0,0 +1,48 @@
++/*
++ * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
++ *
++ * This code is free software; you can redistribute it and/or modify it
++ * 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.
++ */
++
++package sun.nio.ch;
++
++import java.nio.channels.spi.SelectorProvider;
++
++/**
++ * Creates this platform's default SelectorProvider
++ */
++
++public class DefaultSelectorProvider {
++
++ /**
++ * Prevent instantiation.
++ */
++ private DefaultSelectorProvider() { }
++
++ /**
++ * Returns the default SelectorProvider.
++ */
++ public static SelectorProvider create() {
++ return new sun.nio.ch.KQueueSelectorProvider();
++ }
++
++}
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ ./jdk/src/bsd/classes/sun/nio/ch/KQueueArrayWrapper.java Wed Nov 05 12:14:24 2014 -0800
+@@ -0,0 +1,213 @@
++/*
++ * Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved.
++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
++ *
++ * This code is free software; you can redistribute it and/or modify it
++ * under the terms of the GNU General Public License version 2 only, as
++ * published by the Free Software Foundation. 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.
++ */
++
++/*
++ * KQueueArrayWrapper.java
++ * Implementation of Selector using FreeBSD / Mac OS X kqueues
++ * Derived from Sun's DevPollArrayWrapper
++ */
++
++package sun.nio.ch;
++
++import sun.misc.*;
++import java.io.IOException;
++import java.io.FileDescriptor;
++import java.util.Iterator;
++import java.util.LinkedList;
++
++/*
++ * struct kevent { // 32-bit 64-bit
++ * uintptr_t ident; // 4 8
++ * short filter; // 2 2
++ * u_short flags; // 2 2
++ * u_int fflags; // 4 4
++ * intptr_t data; // 4 8
++ * void *udata; // 4 8
++ * } // Total: 20 32
++ *
++ * The implementation works in 32-bit and 64-bit world. We do this by calling a
++ * native function that actually sets the sizes and offsets of the fields based
++ * on which mode we're in.
++ */
++
++class KQueueArrayWrapper {
++ // kevent filters
++ static short EVFILT_READ;
++ static short EVFILT_WRITE;
++
++ // kevent struct
++ // These fields are now set by initStructSizes in the static initializer.
++ static short SIZEOF_KEVENT;
++ static short FD_OFFSET;
++ static short FILTER_OFFSET;
++
++ // kevent array size
++ static final int NUM_KEVENTS = 128;
++
++ // Are we in a 64-bit VM?
++ static boolean is64bit = false;
++
++ // The kevent array (used for outcoming events only)
++ private AllocatedNativeObject keventArray = null;
++ private long keventArrayAddress;
++
++ // The kqueue fd
++ private int kq = -1;
++
++ // The fd of the interrupt line going out
++ private int outgoingInterruptFD;
++
++ // The fd of the interrupt line coming in
++ private int incomingInterruptFD;
++
++ static {
++ IOUtil.load();
++ initStructSizes();
++ String datamodel = java.security.AccessController.doPrivileged(
++ new sun.security.action.GetPropertyAction("sun.arch.data.model")
++ );
++ is64bit = datamodel.equals("64");
++ }
++
++ KQueueArrayWrapper() {
++ int allocationSize = SIZEOF_KEVENT * NUM_KEVENTS;
++ keventArray = new AllocatedNativeObject(allocationSize, true);
++ keventArrayAddress = keventArray.address();
++ kq = init();
++ }
++
++ // Used to update file description registrations
++ private static class Update {
++ SelChImpl channel;
++ int events;
++ Update(SelChImpl channel, int events) {
++ this.channel = channel;
++ this.events = events;
++ }
++ }
++
++ private LinkedList<Update> updateList = new LinkedList<Update>();
++
++ void initInterrupt(int fd0, int fd1) {
++ outgoingInterruptFD = fd1;
++ incomingInterruptFD = fd0;
++ register0(kq, fd0, 1, 0);
++ }
++
++ int getReventOps(int index) {
++ int result = 0;
++ int offset = SIZEOF_KEVENT*index + FILTER_OFFSET;
++ short filter = keventArray.getShort(offset);
++
++ // This is all that's necessary based on inspection of usage:
++ // SinkChannelImpl, SourceChannelImpl, DatagramChannelImpl,
++ // ServerSocketChannelImpl, SocketChannelImpl
++ if (filter == EVFILT_READ) {
++ result |= Net.POLLIN;
++ } else if (filter == EVFILT_WRITE) {
++ result |= Net.POLLOUT;
++ }
++
++ return result;
++ }
++
++ int getDescriptor(int index) {
++ int offset = SIZEOF_KEVENT*index + FD_OFFSET;
++ /* The ident field is 8 bytes in 64-bit world, however the API wants us
++ * to return an int. Hence read the 8 bytes but return as an int.
++ */
++ if (is64bit) {
++ long fd = keventArray.getLong(offset);
++ assert fd <= Integer.MAX_VALUE;
++ return (int) fd;
++ } else {
++ return keventArray.getInt(offset);
++ }
++ }
++
++ void setInterest(SelChImpl channel, int events) {
++ synchronized (updateList) {
++ // update existing registration
++ updateList.add(new Update(channel, events));
++ }
++ }
++
++ void release(SelChImpl channel) {
++ synchronized (updateList) {
++ // flush any pending updates
++ for (Iterator<Update> it = updateList.iterator(); it.hasNext();) {
++ if (it.next().channel == channel) {
++ it.remove();
++ }
++ }
++
++ // remove
++ register0(kq, channel.getFDVal(), 0, 0);
++ }
++ }
++
++ void updateRegistrations() {
++ synchronized (updateList) {
++ Update u = null;
++ while ((u = updateList.poll()) != null) {
++ SelChImpl ch = u.channel;
++ if (!ch.isOpen())
++ continue;
++
++ register0(kq, ch.getFDVal(), u.events & Net.POLLIN, u.events & Net.POLLOUT);
++ }
++ }
++ }
++
++
++ void close() throws IOException {
++ if (keventArray != null) {
++ keventArray.free();
++ keventArray = null;
++ }
++ if (kq >= 0) {
++ FileDispatcherImpl.closeIntFD(kq);
++ kq = -1;
++ }
++ }
++
++ int poll(long timeout) {
++ updateRegistrations();
++ int updated = kevent0(kq, keventArrayAddress, NUM_KEVENTS, timeout);
++ return updated;
++ }
++
++ void interrupt() {
++ interrupt(outgoingInterruptFD);
++ }
++
++ private native int init();
++ private static native void initStructSizes();
++
++ private native void register0(int kq, int fd, int read, int write);
++ private native int kevent0(int kq, long keventAddress, int keventCount,
++ long timeout);
++ private static native void interrupt(int fd);
++}
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ ./jdk/src/bsd/classes/sun/nio/ch/KQueueSelectorImpl.java Wed Nov 05 12:14:24 2014 -0800
+@@ -0,0 +1,249 @@
++/*
++ * Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved.
++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
++ *
++ * This code is free software; you can redistribute it and/or modify it
++ * under the terms of the GNU General Public License version 2 only, as
++ * published by the Free Software Foundation. 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.
++ */
++
++/*
++ * KQueueSelectorImpl.java
++ * Implementation of Selector using FreeBSD / Mac OS X kqueues
++ * Derived from Sun's DevPollSelectorImpl
++ */
++
++package sun.nio.ch;
++
++import java.io.IOException;
++import java.io.FileDescriptor;
++import java.nio.channels.*;
++import java.nio.channels.spi.*;
++import java.util.*;
++import sun.misc.*;
++
++class KQueueSelectorImpl
++ extends SelectorImpl
++{
++ // File descriptors used for interrupt
++ protected int fd0;
++ protected int fd1;
++
++ // The kqueue manipulator
++ KQueueArrayWrapper kqueueWrapper;
++
++ // Count of registered descriptors (including interrupt)
++ private int totalChannels;
++
++ // Map from a file descriptor to an entry containing the selection key
++ private HashMap<Integer,MapEntry> fdMap;
++
++ // True if this Selector has been closed
++ private boolean closed = false;
++
++ // Lock for interrupt triggering and clearing
++ private Object interruptLock = new Object();
++ private boolean interruptTriggered = false;
++
++ // used by updateSelectedKeys to handle cases where the same file
++ // descriptor is polled by more than one filter
++ private long updateCount;
++
++ // Used to map file descriptors to a selection key and "update count"
++ // (see updateSelectedKeys for usage).
++ private static class MapEntry {
++ SelectionKeyImpl ski;
++ long updateCount;
++ MapEntry(SelectionKeyImpl ski) {
++ this.ski = ski;
++ }
++ }
++
++ /**
++ * Package private constructor called by factory method in
++ * the abstract superclass Selector.
++ */
++ KQueueSelectorImpl(SelectorProvider sp) {
++ super(sp);
++ long fds = IOUtil.makePipe(false);
++ fd0 = (int)(fds >>> 32);
++ fd1 = (int)fds;
++ kqueueWrapper = new KQueueArrayWrapper();
++ kqueueWrapper.initInterrupt(fd0, fd1);
++ fdMap = new HashMap<>();
++ totalChannels = 1;
++ }
++
++
++ protected int doSelect(long timeout)
++ throws IOException
++ {
++ int entries = 0;
++ if (closed)
++ throw new ClosedSelectorException();
++ processDeregisterQueue();
++ try {
++ begin();
++ entries = kqueueWrapper.poll(timeout);
++ } finally {
++ end();
++ }
++ processDeregisterQueue();
++ return updateSelectedKeys(entries);
++ }
++
++ /**
++ * Update the keys whose fd's have been selected by kqueue.
++ * Add the ready keys to the selected key set.
++ * If the interrupt fd has been selected, drain it and clear the interrupt.
++ */
++ private int updateSelectedKeys(int entries)
++ throws IOException
++ {
++ int numKeysUpdated = 0;
++ boolean interrupted = false;
++
++ // A file descriptor may be registered with kqueue with more than one
++ // filter and so there may be more than one event for a fd. The update
++ // count in the MapEntry tracks when the fd was last updated and this
++ // ensures that the ready ops are updated rather than replaced by a
++ // second or subsequent event.
++ updateCount++;
++
++ for (int i = 0; i < entries; i++) {
++ int nextFD = kqueueWrapper.getDescriptor(i);
++ if (nextFD == fd0) {
++ interrupted = true;
++ } else {
++ MapEntry me = fdMap.get(Integer.valueOf(nextFD));
++
++ // entry is null in the case of an interrupt
++ if (me != null) {
++ int rOps = kqueueWrapper.getReventOps(i);
++ SelectionKeyImpl ski = me.ski;
++ if (selectedKeys.contains(ski)) {
++ // first time this file descriptor has been encountered on this
++ // update?
++ if (me.updateCount != updateCount) {
++ if (ski.channel.translateAndSetReadyOps(rOps, ski)) {
++ numKeysUpdated++;
++ me.updateCount = updateCount;
++ }
++ } else {
++ // ready ops have already been set on this update
++ ski.channel.translateAndUpdateReadyOps(rOps, ski);
++ }
++ } else {
++ ski.channel.translateAndSetReadyOps(rOps, ski);
++ if ((ski.nioReadyOps() & ski.nioInterestOps()) != 0) {
++ selectedKeys.add(ski);
++ numKeysUpdated++;
++ me.updateCount = updateCount;
++ }
++ }
++ }
++ }
++ }
++
++ if (interrupted) {
++ // Clear the wakeup pipe
++ synchronized (interruptLock) {
++ IOUtil.drain(fd0);
++ interruptTriggered = false;
++ }
++ }
++ return numKeysUpdated;
++ }
++
++
++ protected void implClose() throws IOException {
++ if (!closed) {
++ closed = true;
++
++ // prevent further wakeup
++ synchronized (interruptLock) {
++ interruptTriggered = true;
++ }
++
++ FileDispatcherImpl.closeIntFD(fd0);
++ FileDispatcherImpl.closeIntFD(fd1);
++ if (kqueueWrapper != null) {
++ kqueueWrapper.close();
++ kqueueWrapper = null;
++ selectedKeys = null;
++
++ // Deregister channels
++ Iterator<SelectionKey> i = keys.iterator();
++ while (i.hasNext()) {
++ SelectionKeyImpl ski = (SelectionKeyImpl)i.next();
++ deregister(ski);
++ SelectableChannel selch = ski.channel();
++ if (!selch.isOpen() && !selch.isRegistered())
++ ((SelChImpl)selch).kill();
++ i.remove();
++ }
++ totalChannels = 0;
++ }
++ fd0 = -1;
++ fd1 = -1;
++ }
++ }
++
++
++ protected void implRegister(SelectionKeyImpl ski) {
++ if (closed)
++ throw new ClosedSelectorException();
++ int fd = IOUtil.fdVal(ski.channel.getFD());
++ fdMap.put(Integer.valueOf(fd), new MapEntry(ski));
++ totalChannels++;
++ keys.add(ski);
++ }
++
++
++ protected void implDereg(SelectionKeyImpl ski) throws IOException {
++ int fd = ski.channel.getFDVal();
++ fdMap.remove(Integer.valueOf(fd));
++ kqueueWrapper.release(ski.channel);
++ totalChannels--;
++ keys.remove(ski);
++ selectedKeys.remove(ski);
++ deregister((AbstractSelectionKey)ski);
++ SelectableChannel selch = ski.channel();
++ if (!selch.isOpen() && !selch.isRegistered())
++ ((SelChImpl)selch).kill();
++ }
++
++
++ public void putEventOps(SelectionKeyImpl ski, int ops) {
++ if (closed)
++ throw new ClosedSelectorException();
++ kqueueWrapper.setInterest(ski.channel, ops);
++ }
++
++
++ public Selector wakeup() {
++ synchronized (interruptLock) {
++ if (!interruptTriggered) {
++ kqueueWrapper.interrupt();
++ interruptTriggered = true;
++ }
++ }
++ return this;
++ }
++}
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ ./jdk/src/bsd/classes/sun/nio/ch/KQueueSelectorProvider.java Wed Nov 05 12:14:24 2014 -0800
+@@ -0,0 +1,44 @@
++/*
++ * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
++ *
++ * This code is free software; you can redistribute it and/or modify it
++ * 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.
++ */
++
++/*
++ * KQueueSelectorProvider.java
++ * Implementation of Selector using FreeBSD / Mac OS X kqueues
++ * Derived from Sun's DevPollSelectorProvider
++ */
++
++package sun.nio.ch;
++
++import java.io.IOException;
++import java.nio.channels.*;
++import java.nio.channels.spi.*;
++
++public class KQueueSelectorProvider
++extends SelectorProviderImpl
++{
++ public AbstractSelector openSelector() throws IOException {
++ return new KQueueSelectorImpl(this);
++ }
++}
+--- ./jdk/src/bsd/doc/man/javah.1 Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/bsd/doc/man/javah.1 Wed Nov 05 12:14:24 2014 -0800
+@@ -110,7 +110,7 @@
+
+ \&.:\fIyour-path\fR
+
+-Example: \f3\&.:/home/avh/classes:/usr/local/java/classes\fR
++Example: \f3\&.:/home/avh/classes:/usr/local/share/java/classes\fR
+
+ \fIWindows\fR:
+
+--- ./jdk/src/bsd/doc/man/rmic.1 Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/bsd/doc/man/rmic.1 Wed Nov 05 12:14:24 2014 -0800
+@@ -93,7 +93,7 @@
+ .TP
+ -classpath path
+ .br
+-Specifies the path the \f3rmic\fR command uses to look up classes\&. This option overrides the default or the \f3CLASSPATH\fR environment variable when it is set\&. Directories are separated by colons\&. The general format for path is: \f3\&.:<your_path>\fR, for example: \f3\&.:/usr/local/java/classes\fR\&.
++Specifies the path the \f3rmic\fR command uses to look up classes\&. This option overrides the default or the \f3CLASSPATH\fR environment variable when it is set\&. Directories are separated by colons\&. The general format for path is: \f3\&.:<your_path>\fR, for example: \f3\&.:/usr/local/share/java/classes\fR\&.
+ .TP
+ -d \fIdirectory\fR
+ .br
+@@ -207,7 +207,7 @@
+ .SH ENVIRONMENT\ VARIABLES
+ .TP
+ CLASSPATH
+-Used to provide the system a path to user-defined classes\&. Directories are separated by colons, for example: \f3\&.:/usr/local/java/classes\fR\&.
++Used to provide the system a path to user-defined classes\&. Directories are separated by colons, for example: \f3\&.:/usr/local/share/java/classes\fR\&.
+ .SH SEE\ ALSO
+ .TP 0.2i
+ \(bu
+--- ./jdk/src/bsd/doc/man/rmid.1 Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/bsd/doc/man/rmid.1 Wed Nov 05 12:14:24 2014 -0800
+@@ -301,7 +301,7 @@
+ .SH ENVIRONMENT\ VARIABLES
+ .TP
+ CLASSPATH
+-Used to provide the system a path to user-defined classes\&. Directories are separated by colons, for example: \f3\&.:/usr/local/java/classes\fR\&.
++Used to provide the system a path to user-defined classes\&. Directories are separated by colons, for example: \f3\&.:/usr/local/share/java/classes\fR\&.
+ .SH SEE\ ALSO
+ .TP 0.2i
+ \(bu
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ ./jdk/src/bsd/native/sun/nio/ch/KQueueArrayWrapper.c Wed Nov 05 12:14:24 2014 -0800
+@@ -0,0 +1,171 @@
++/*
++ * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
++ *
++ * This code is free software; you can redistribute it and/or modify it
++ * 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.
++ */
++
++/*
++ * KQueueArrayWrapper.c
++ * Implementation of Selector using FreeBSD / Mac OS X kqueues
++ * Derived from Sun's DevPollArrayWrapper
++ */
++
++
++#include "jni.h"
++#include "jni_util.h"
++#include "jvm.h"
++#include "jlong.h"
++
++#include <sys/types.h>
++#include <sys/event.h>
++#include <sys/time.h>
++
++JNIEXPORT void JNICALL
++Java_sun_nio_ch_KQueueArrayWrapper_initStructSizes(JNIEnv *env, jclass clazz)
++{
++#define CHECK_EXCEPTION() { \
++ if ((*env)->ExceptionCheck(env)) { \
++ goto exceptionOccurred; \
++ } \
++}
++
++#define CHECK_ERROR_AND_EXCEPTION(_field) { \
++ if (_field == NULL) { \
++ goto badField; \
++ } \
++ CHECK_EXCEPTION(); \
++}
++
++
++ jfieldID field;
++
++ field = (*env)->GetStaticFieldID(env, clazz, "EVFILT_READ", "S");
++ CHECK_ERROR_AND_EXCEPTION(field);
++ (*env)->SetStaticShortField(env, clazz, field, EVFILT_READ);
++ CHECK_EXCEPTION();
++
++ field = (*env)->GetStaticFieldID(env, clazz, "EVFILT_WRITE", "S");
++ CHECK_ERROR_AND_EXCEPTION(field);
++ (*env)->SetStaticShortField(env, clazz, field, EVFILT_WRITE);
++ CHECK_EXCEPTION();
++
++ field = (*env)->GetStaticFieldID(env, clazz, "SIZEOF_KEVENT", "S");
++ CHECK_ERROR_AND_EXCEPTION(field);
++ (*env)->SetStaticShortField(env, clazz, field, (short) sizeof(struct kevent));
++ CHECK_EXCEPTION();
++
++ field = (*env)->GetStaticFieldID(env, clazz, "FD_OFFSET", "S");
++ CHECK_ERROR_AND_EXCEPTION(field);
++ (*env)->SetStaticShortField(env, clazz, field, (short) offsetof(struct kevent, ident));
++ CHECK_EXCEPTION();
++
++ field = (*env)->GetStaticFieldID(env, clazz, "FILTER_OFFSET", "S");
++ CHECK_ERROR_AND_EXCEPTION(field);
++ (*env)->SetStaticShortField(env, clazz, field, (short) offsetof(struct kevent, filter));
++ CHECK_EXCEPTION();
++ return;
++
++badField:
++ return;
++
++exceptionOccurred:
++ return;
++
++#undef CHECK_EXCEPTION
++#undef CHECK_ERROR_AND_EXCEPTION
++}
++
++JNIEXPORT jint JNICALL
++Java_sun_nio_ch_KQueueArrayWrapper_init(JNIEnv *env, jobject this)
++{
++ int kq = kqueue();
++ if (kq < 0) {
++ JNU_ThrowIOExceptionWithLastError(env, "KQueueArrayWrapper: kqueue() failed");
++ }
++ return kq;
++}
++
++
++JNIEXPORT void JNICALL
++Java_sun_nio_ch_KQueueArrayWrapper_register0(JNIEnv *env, jobject this,
++ jint kq, jint fd, jint r, jint w)
++{
++ struct kevent changes[2];
++ struct kevent errors[2];
++ struct timespec dontBlock = {0, 0};
++
++ // if (r) then { register for read } else { unregister for read }
++ // if (w) then { register for write } else { unregister for write }
++ // Ignore errors - they're probably complaints about deleting non-
++ // added filters - but provide an error array anyway because
++ // kqueue behaves erratically if some of its registrations fail.
++ EV_SET(&changes[0], fd, EVFILT_READ, r ? EV_ADD : EV_DELETE, 0, 0, 0);
++ EV_SET(&changes[1], fd, EVFILT_WRITE, w ? EV_ADD : EV_DELETE, 0, 0, 0);
++ kevent(kq, changes, 2, errors, 2, &dontBlock);
++}
++
++
++JNIEXPORT jint JNICALL
++Java_sun_nio_ch_KQueueArrayWrapper_kevent0(JNIEnv *env, jobject this, jint kq,
++ jlong kevAddr, jint kevCount,
++ jlong timeout)
++{
++ struct kevent *kevs = (struct kevent *)jlong_to_ptr(kevAddr);
++ struct timespec ts;
++ struct timespec *tsp;
++ int result;
++
++ // Java timeout is in milliseconds. Convert to struct timespec.
++ // Java timeout == -1 : wait forever : timespec timeout of NULL
++ // Java timeout == 0 : return immediately : timespec timeout of zero
++ if (timeout >= 0) {
++ ts.tv_sec = timeout / 1000;
++ ts.tv_nsec = (timeout % 1000) * 1000000; //nanosec = 1 million millisec
++ tsp = &ts;
++ } else {
++ tsp = NULL;
++ }
++
++ result = kevent(kq, NULL, 0, kevs, kevCount, tsp);
++
++ if (result < 0) {
++ if (errno == EINTR) {
++ // ignore EINTR, pretend nothing was selected
++ result = 0;
++ } else {
++ JNU_ThrowIOExceptionWithLastError(env, "KQueueArrayWrapper: kqueue failed");
++ }
++ }
++
++ return result;
++}
++
++
++JNIEXPORT void JNICALL
++Java_sun_nio_ch_KQueueArrayWrapper_interrupt(JNIEnv *env, jclass cls, jint fd)
++{
++ char c = 1;
++ if (1 != write(fd, &c, 1)) {
++ JNU_ThrowIOExceptionWithLastError(env, "KQueueArrayWrapper: interrupt failed");
++ }
++}
++
+--- ./jdk/src/macosx/classes/java/net/DefaultInterface.java Tue Sep 09 12:00:58 2014 -0700
++++ /dev/null Thu Jan 01 00:00:00 1970 +0000
+@@ -1,97 +0,0 @@
+-/*
+- * Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved.
+- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+- *
+- * This code is free software; you can redistribute it and/or modify it
+- * under the terms of the GNU General Public License version 2 only, as
+- * published by the Free Software Foundation. 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.
+- */
+-
+-package java.net;
+-
+-/**
+- * Choose a network interface to be the default for
+- * outgoing IPv6 traffic that does not specify a scope_id (and which needs one).
+- * We choose the first interface that is up and is (in order of preference):
+- * 1. neither loopback nor point to point
+- * 2. point to point
+- * 3. loopback
+- * 4. none.
+- * Platforms that do not require a default interface implement a dummy
+- * that returns null.
+- */
+-
+-import java.util.Enumeration;
+-import java.io.IOException;
+-
+-class DefaultInterface {
+-
+- private final static NetworkInterface defaultInterface =
+- chooseDefaultInterface();
+-
+- static NetworkInterface getDefault() {
+- return defaultInterface;
+- }
+-
+- /**
+- * Choose a default interface. This method returns an interface that is
+- * both "up" and supports multicast. This method choses an interface in
+- * order of preference:
+- * 1. neither loopback nor point to point
+- * 2. point to point
+- * 3. loopback
+- *
+- * @return the chosen interface or {@code null} if there isn't a suitable
+- * default
+- */
+- private static NetworkInterface chooseDefaultInterface() {
+- Enumeration<NetworkInterface> nifs;
+-
+- try {
+- nifs = NetworkInterface.getNetworkInterfaces();
+- } catch (IOException ignore) {
+- // unable to enumate network interfaces
+- return null;
+- }
+-
+- NetworkInterface ppp = null;
+- NetworkInterface loopback = null;
+-
+- while (nifs.hasMoreElements()) {
+- NetworkInterface ni = nifs.nextElement();
+- try {
+- if (ni.isUp() && ni.supportsMulticast()) {
+- boolean isLoopback = ni.isLoopback();
+- boolean isPPP = ni.isPointToPoint();
+- if (!isLoopback && !isPPP) {
+- // found an interface that is not the loopback or a
+- // point-to-point interface
+- return ni;
+- }
+- if (ppp == null && isPPP)
+- ppp = ni;
+- if (loopback == null && isLoopback)
+- loopback = ni;
+- }
+- } catch (IOException skip) { }
+- }
+-
+- return (ppp != null) ? ppp : loopback;
+- }
+-}
+--- ./jdk/src/macosx/classes/sun/nio/ch/DefaultSelectorProvider.java Tue Sep 09 12:00:58 2014 -0700
++++ /dev/null Thu Jan 01 00:00:00 1970 +0000
+@@ -1,48 +0,0 @@
+-/*
+- * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
+- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+- *
+- * This code is free software; you can redistribute it and/or modify it
+- * 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.
+- */
+-
+-package sun.nio.ch;
+-
+-import java.nio.channels.spi.SelectorProvider;
+-
+-/**
+- * Creates this platform's default SelectorProvider
+- */
+-
+-public class DefaultSelectorProvider {
+-
+- /**
+- * Prevent instantiation.
+- */
+- private DefaultSelectorProvider() { }
+-
+- /**
+- * Returns the default SelectorProvider.
+- */
+- public static SelectorProvider create() {
+- return new sun.nio.ch.KQueueSelectorProvider();
+- }
+-
+-}
+--- ./jdk/src/macosx/classes/sun/nio/ch/KQueueArrayWrapper.java Tue Sep 09 12:00:58 2014 -0700
++++ /dev/null Thu Jan 01 00:00:00 1970 +0000
+@@ -1,213 +0,0 @@
+-/*
+- * Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved.
+- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+- *
+- * This code is free software; you can redistribute it and/or modify it
+- * under the terms of the GNU General Public License version 2 only, as
+- * published by the Free Software Foundation. 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.
+- */
+-
+-/*
+- * KQueueArrayWrapper.java
+- * Implementation of Selector using FreeBSD / Mac OS X kqueues
+- * Derived from Sun's DevPollArrayWrapper
+- */
+-
+-package sun.nio.ch;
+-
+-import sun.misc.*;
+-import java.io.IOException;
+-import java.io.FileDescriptor;
+-import java.util.Iterator;
+-import java.util.LinkedList;
+-
+-/*
+- * struct kevent { // 32-bit 64-bit
+- * uintptr_t ident; // 4 8
+- * short filter; // 2 2
+- * u_short flags; // 2 2
+- * u_int fflags; // 4 4
+- * intptr_t data; // 4 8
+- * void *udata; // 4 8
+- * } // Total: 20 32
+- *
+- * The implementation works in 32-bit and 64-bit world. We do this by calling a
+- * native function that actually sets the sizes and offsets of the fields based
+- * on which mode we're in.
+- */
+-
+-class KQueueArrayWrapper {
+- // kevent filters
+- static short EVFILT_READ;
+- static short EVFILT_WRITE;
+-
+- // kevent struct
+- // These fields are now set by initStructSizes in the static initializer.
+- static short SIZEOF_KEVENT;
+- static short FD_OFFSET;
+- static short FILTER_OFFSET;
+-
+- // kevent array size
+- static final int NUM_KEVENTS = 128;
+-
+- // Are we in a 64-bit VM?
+- static boolean is64bit = false;
+-
+- // The kevent array (used for outcoming events only)
+- private AllocatedNativeObject keventArray = null;
+- private long keventArrayAddress;
+-
+- // The kqueue fd
+- private int kq = -1;
+-
+- // The fd of the interrupt line going out
+- private int outgoingInterruptFD;
+-
+- // The fd of the interrupt line coming in
+- private int incomingInterruptFD;
+-
+- static {
+- IOUtil.load();
+- initStructSizes();
+- String datamodel = java.security.AccessController.doPrivileged(
+- new sun.security.action.GetPropertyAction("sun.arch.data.model")
+- );
+- is64bit = datamodel.equals("64");
+- }
+-
+- KQueueArrayWrapper() {
+- int allocationSize = SIZEOF_KEVENT * NUM_KEVENTS;
+- keventArray = new AllocatedNativeObject(allocationSize, true);
+- keventArrayAddress = keventArray.address();
+- kq = init();
+- }
+-
+- // Used to update file description registrations
+- private static class Update {
+- SelChImpl channel;
+- int events;
+- Update(SelChImpl channel, int events) {
+- this.channel = channel;
+- this.events = events;
+- }
+- }
+-
+- private LinkedList<Update> updateList = new LinkedList<Update>();
+-
+- void initInterrupt(int fd0, int fd1) {
+- outgoingInterruptFD = fd1;
+- incomingInterruptFD = fd0;
+- register0(kq, fd0, 1, 0);
+- }
+-
+- int getReventOps(int index) {
+- int result = 0;
+- int offset = SIZEOF_KEVENT*index + FILTER_OFFSET;
+- short filter = keventArray.getShort(offset);
+-
+- // This is all that's necessary based on inspection of usage:
+- // SinkChannelImpl, SourceChannelImpl, DatagramChannelImpl,
+- // ServerSocketChannelImpl, SocketChannelImpl
+- if (filter == EVFILT_READ) {
+- result |= Net.POLLIN;
+- } else if (filter == EVFILT_WRITE) {
+- result |= Net.POLLOUT;
+- }
+-
+- return result;
+- }
+-
+- int getDescriptor(int index) {
+- int offset = SIZEOF_KEVENT*index + FD_OFFSET;
+- /* The ident field is 8 bytes in 64-bit world, however the API wants us
+- * to return an int. Hence read the 8 bytes but return as an int.
+- */
+- if (is64bit) {
+- long fd = keventArray.getLong(offset);
+- assert fd <= Integer.MAX_VALUE;
+- return (int) fd;
+- } else {
+- return keventArray.getInt(offset);
+- }
+- }
+-
+- void setInterest(SelChImpl channel, int events) {
+- synchronized (updateList) {
+- // update existing registration
+- updateList.add(new Update(channel, events));
+- }
+- }
+-
+- void release(SelChImpl channel) {
+- synchronized (updateList) {
+- // flush any pending updates
+- for (Iterator<Update> it = updateList.iterator(); it.hasNext();) {
+- if (it.next().channel == channel) {
+- it.remove();
+- }
+- }
+-
+- // remove
+- register0(kq, channel.getFDVal(), 0, 0);
+- }
+- }
+-
+- void updateRegistrations() {
+- synchronized (updateList) {
+- Update u = null;
+- while ((u = updateList.poll()) != null) {
+- SelChImpl ch = u.channel;
+- if (!ch.isOpen())
+- continue;
+-
+- register0(kq, ch.getFDVal(), u.events & Net.POLLIN, u.events & Net.POLLOUT);
+- }
+- }
+- }
+-
+-
+- void close() throws IOException {
+- if (keventArray != null) {
+- keventArray.free();
+- keventArray = null;
+- }
+- if (kq >= 0) {
+- FileDispatcherImpl.closeIntFD(kq);
+- kq = -1;
+- }
+- }
+-
+- int poll(long timeout) {
+- updateRegistrations();
+- int updated = kevent0(kq, keventArrayAddress, NUM_KEVENTS, timeout);
+- return updated;
+- }
+-
+- void interrupt() {
+- interrupt(outgoingInterruptFD);
+- }
+-
+- private native int init();
+- private static native void initStructSizes();
+-
+- private native void register0(int kq, int fd, int read, int write);
+- private native int kevent0(int kq, long keventAddress, int keventCount,
+- long timeout);
+- private static native void interrupt(int fd);
+-}
+--- ./jdk/src/macosx/classes/sun/nio/ch/KQueueSelectorImpl.java Tue Sep 09 12:00:58 2014 -0700
++++ /dev/null Thu Jan 01 00:00:00 1970 +0000
+@@ -1,249 +0,0 @@
+-/*
+- * Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved.
+- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+- *
+- * This code is free software; you can redistribute it and/or modify it
+- * under the terms of the GNU General Public License version 2 only, as
+- * published by the Free Software Foundation. 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.
+- */
+-
+-/*
+- * KQueueSelectorImpl.java
+- * Implementation of Selector using FreeBSD / Mac OS X kqueues
+- * Derived from Sun's DevPollSelectorImpl
+- */
+-
+-package sun.nio.ch;
+-
+-import java.io.IOException;
+-import java.io.FileDescriptor;
+-import java.nio.channels.*;
+-import java.nio.channels.spi.*;
+-import java.util.*;
+-import sun.misc.*;
+-
+-class KQueueSelectorImpl
+- extends SelectorImpl
+-{
+- // File descriptors used for interrupt
+- protected int fd0;
+- protected int fd1;
+-
+- // The kqueue manipulator
+- KQueueArrayWrapper kqueueWrapper;
+-
+- // Count of registered descriptors (including interrupt)
+- private int totalChannels;
+-
+- // Map from a file descriptor to an entry containing the selection key
+- private HashMap<Integer,MapEntry> fdMap;
+-
+- // True if this Selector has been closed
+- private boolean closed = false;
+-
+- // Lock for interrupt triggering and clearing
+- private Object interruptLock = new Object();
+- private boolean interruptTriggered = false;
+-
+- // used by updateSelectedKeys to handle cases where the same file
+- // descriptor is polled by more than one filter
+- private long updateCount;
+-
+- // Used to map file descriptors to a selection key and "update count"
+- // (see updateSelectedKeys for usage).
+- private static class MapEntry {
+- SelectionKeyImpl ski;
+- long updateCount;
+- MapEntry(SelectionKeyImpl ski) {
+- this.ski = ski;
+- }
+- }
+-
+- /**
+- * Package private constructor called by factory method in
+- * the abstract superclass Selector.
+- */
+- KQueueSelectorImpl(SelectorProvider sp) {
+- super(sp);
+- long fds = IOUtil.makePipe(false);
+- fd0 = (int)(fds >>> 32);
+- fd1 = (int)fds;
+- kqueueWrapper = new KQueueArrayWrapper();
+- kqueueWrapper.initInterrupt(fd0, fd1);
+- fdMap = new HashMap<>();
+- totalChannels = 1;
+- }
+-
+-
+- protected int doSelect(long timeout)
+- throws IOException
+- {
+- int entries = 0;
+- if (closed)
+- throw new ClosedSelectorException();
+- processDeregisterQueue();
+- try {
+- begin();
+- entries = kqueueWrapper.poll(timeout);
+- } finally {
+- end();
+- }
+- processDeregisterQueue();
+- return updateSelectedKeys(entries);
+- }
+-
+- /**
+- * Update the keys whose fd's have been selected by kqueue.
+- * Add the ready keys to the selected key set.
+- * If the interrupt fd has been selected, drain it and clear the interrupt.
+- */
+- private int updateSelectedKeys(int entries)
+- throws IOException
+- {
+- int numKeysUpdated = 0;
+- boolean interrupted = false;
+-
+- // A file descriptor may be registered with kqueue with more than one
+- // filter and so there may be more than one event for a fd. The update
+- // count in the MapEntry tracks when the fd was last updated and this
+- // ensures that the ready ops are updated rather than replaced by a
+- // second or subsequent event.
+- updateCount++;
+-
+- for (int i = 0; i < entries; i++) {
+- int nextFD = kqueueWrapper.getDescriptor(i);
+- if (nextFD == fd0) {
+- interrupted = true;
+- } else {
+- MapEntry me = fdMap.get(Integer.valueOf(nextFD));
+-
+- // entry is null in the case of an interrupt
+- if (me != null) {
+- int rOps = kqueueWrapper.getReventOps(i);
+- SelectionKeyImpl ski = me.ski;
+- if (selectedKeys.contains(ski)) {
+- // first time this file descriptor has been encountered on this
+- // update?
+- if (me.updateCount != updateCount) {
+- if (ski.channel.translateAndSetReadyOps(rOps, ski)) {
+- numKeysUpdated++;
+- me.updateCount = updateCount;
+- }
+- } else {
+- // ready ops have already been set on this update
+- ski.channel.translateAndUpdateReadyOps(rOps, ski);
+- }
+- } else {
+- ski.channel.translateAndSetReadyOps(rOps, ski);
+- if ((ski.nioReadyOps() & ski.nioInterestOps()) != 0) {
+- selectedKeys.add(ski);
+- numKeysUpdated++;
+- me.updateCount = updateCount;
+- }
+- }
+- }
+- }
+- }
+-
+- if (interrupted) {
+- // Clear the wakeup pipe
+- synchronized (interruptLock) {
+- IOUtil.drain(fd0);
+- interruptTriggered = false;
+- }
+- }
+- return numKeysUpdated;
+- }
+-
+-
+- protected void implClose() throws IOException {
+- if (!closed) {
+- closed = true;
+-
+- // prevent further wakeup
+- synchronized (interruptLock) {
+- interruptTriggered = true;
+- }
+-
+- FileDispatcherImpl.closeIntFD(fd0);
+- FileDispatcherImpl.closeIntFD(fd1);
+- if (kqueueWrapper != null) {
+- kqueueWrapper.close();
+- kqueueWrapper = null;
+- selectedKeys = null;
+-
+- // Deregister channels
+- Iterator<SelectionKey> i = keys.iterator();
+- while (i.hasNext()) {
+- SelectionKeyImpl ski = (SelectionKeyImpl)i.next();
+- deregister(ski);
+- SelectableChannel selch = ski.channel();
+- if (!selch.isOpen() && !selch.isRegistered())
+- ((SelChImpl)selch).kill();
+- i.remove();
+- }
+- totalChannels = 0;
+- }
+- fd0 = -1;
+- fd1 = -1;
+- }
+- }
+-
+-
+- protected void implRegister(SelectionKeyImpl ski) {
+- if (closed)
+- throw new ClosedSelectorException();
+- int fd = IOUtil.fdVal(ski.channel.getFD());
+- fdMap.put(Integer.valueOf(fd), new MapEntry(ski));
+- totalChannels++;
+- keys.add(ski);
+- }
+-
+-
+- protected void implDereg(SelectionKeyImpl ski) throws IOException {
+- int fd = ski.channel.getFDVal();
+- fdMap.remove(Integer.valueOf(fd));
+- kqueueWrapper.release(ski.channel);
+- totalChannels--;
+- keys.remove(ski);
+- selectedKeys.remove(ski);
+- deregister((AbstractSelectionKey)ski);
+- SelectableChannel selch = ski.channel();
+- if (!selch.isOpen() && !selch.isRegistered())
+- ((SelChImpl)selch).kill();
+- }
+-
+-
+- public void putEventOps(SelectionKeyImpl ski, int ops) {
+- if (closed)
+- throw new ClosedSelectorException();
+- kqueueWrapper.setInterest(ski.channel, ops);
+- }
+-
+-
+- public Selector wakeup() {
+- synchronized (interruptLock) {
+- if (!interruptTriggered) {
+- kqueueWrapper.interrupt();
+- interruptTriggered = true;
+- }
+- }
+- return this;
+- }
+-}
+--- ./jdk/src/macosx/classes/sun/nio/ch/KQueueSelectorProvider.java Tue Sep 09 12:00:58 2014 -0700
++++ /dev/null Thu Jan 01 00:00:00 1970 +0000
+@@ -1,44 +0,0 @@
+-/*
+- * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
+- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+- *
+- * This code is free software; you can redistribute it and/or modify it
+- * 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.
+- */
+-
+-/*
+- * KQueueSelectorProvider.java
+- * Implementation of Selector using FreeBSD / Mac OS X kqueues
+- * Derived from Sun's DevPollSelectorProvider
+- */
+-
+-package sun.nio.ch;
+-
+-import java.io.IOException;
+-import java.nio.channels.*;
+-import java.nio.channels.spi.*;
+-
+-public class KQueueSelectorProvider
+-extends SelectorProviderImpl
+-{
+- public AbstractSelector openSelector() throws IOException {
+- return new KQueueSelectorImpl(this);
+- }
+-}
+--- ./jdk/src/macosx/native/sun/nio/ch/KQueueArrayWrapper.c Tue Sep 09 12:00:58 2014 -0700
++++ /dev/null Thu Jan 01 00:00:00 1970 +0000
+@@ -1,171 +0,0 @@
+-/*
+- * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
+- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+- *
+- * This code is free software; you can redistribute it and/or modify it
+- * 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.
+- */
+-
+-/*
+- * KQueueArrayWrapper.c
+- * Implementation of Selector using FreeBSD / Mac OS X kqueues
+- * Derived from Sun's DevPollArrayWrapper
+- */
+-
+-
+-#include "jni.h"
+-#include "jni_util.h"
+-#include "jvm.h"
+-#include "jlong.h"
+-
+-#include <sys/types.h>
+-#include <sys/event.h>
+-#include <sys/time.h>
+-
+-JNIEXPORT void JNICALL
+-Java_sun_nio_ch_KQueueArrayWrapper_initStructSizes(JNIEnv *env, jclass clazz)
+-{
+-#define CHECK_EXCEPTION() { \
+- if ((*env)->ExceptionCheck(env)) { \
+- goto exceptionOccurred; \
+- } \
+-}
+-
+-#define CHECK_ERROR_AND_EXCEPTION(_field) { \
+- if (_field == NULL) { \
+- goto badField; \
+- } \
+- CHECK_EXCEPTION(); \
+-}
+-
+-
+- jfieldID field;
+-
+- field = (*env)->GetStaticFieldID(env, clazz, "EVFILT_READ", "S");
+- CHECK_ERROR_AND_EXCEPTION(field);
+- (*env)->SetStaticShortField(env, clazz, field, EVFILT_READ);
+- CHECK_EXCEPTION();
+-
+- field = (*env)->GetStaticFieldID(env, clazz, "EVFILT_WRITE", "S");
+- CHECK_ERROR_AND_EXCEPTION(field);
+- (*env)->SetStaticShortField(env, clazz, field, EVFILT_WRITE);
+- CHECK_EXCEPTION();
+-
+- field = (*env)->GetStaticFieldID(env, clazz, "SIZEOF_KEVENT", "S");
+- CHECK_ERROR_AND_EXCEPTION(field);
+- (*env)->SetStaticShortField(env, clazz, field, (short) sizeof(struct kevent));
+- CHECK_EXCEPTION();
+-
+- field = (*env)->GetStaticFieldID(env, clazz, "FD_OFFSET", "S");
+- CHECK_ERROR_AND_EXCEPTION(field);
+- (*env)->SetStaticShortField(env, clazz, field, (short) offsetof(struct kevent, ident));
+- CHECK_EXCEPTION();
+-
+- field = (*env)->GetStaticFieldID(env, clazz, "FILTER_OFFSET", "S");
+- CHECK_ERROR_AND_EXCEPTION(field);
+- (*env)->SetStaticShortField(env, clazz, field, (short) offsetof(struct kevent, filter));
+- CHECK_EXCEPTION();
+- return;
+-
+-badField:
+- return;
+-
+-exceptionOccurred:
+- return;
+-
+-#undef CHECK_EXCEPTION
+-#undef CHECK_ERROR_AND_EXCEPTION
+-}
+-
+-JNIEXPORT jint JNICALL
+-Java_sun_nio_ch_KQueueArrayWrapper_init(JNIEnv *env, jobject this)
+-{
+- int kq = kqueue();
+- if (kq < 0) {
+- JNU_ThrowIOExceptionWithLastError(env, "KQueueArrayWrapper: kqueue() failed");
+- }
+- return kq;
+-}
+-
+-
+-JNIEXPORT void JNICALL
+-Java_sun_nio_ch_KQueueArrayWrapper_register0(JNIEnv *env, jobject this,
+- jint kq, jint fd, jint r, jint w)
+-{
+- struct kevent changes[2];
+- struct kevent errors[2];
+- struct timespec dontBlock = {0, 0};
+-
+- // if (r) then { register for read } else { unregister for read }
+- // if (w) then { register for write } else { unregister for write }
+- // Ignore errors - they're probably complaints about deleting non-
+- // added filters - but provide an error array anyway because
+- // kqueue behaves erratically if some of its registrations fail.
+- EV_SET(&changes[0], fd, EVFILT_READ, r ? EV_ADD : EV_DELETE, 0, 0, 0);
+- EV_SET(&changes[1], fd, EVFILT_WRITE, w ? EV_ADD : EV_DELETE, 0, 0, 0);
+- kevent(kq, changes, 2, errors, 2, &dontBlock);
+-}
+-
+-
+-JNIEXPORT jint JNICALL
+-Java_sun_nio_ch_KQueueArrayWrapper_kevent0(JNIEnv *env, jobject this, jint kq,
+- jlong kevAddr, jint kevCount,
+- jlong timeout)
+-{
+- struct kevent *kevs = (struct kevent *)jlong_to_ptr(kevAddr);
+- struct timespec ts;
+- struct timespec *tsp;
+- int result;
+-
+- // Java timeout is in milliseconds. Convert to struct timespec.
+- // Java timeout == -1 : wait forever : timespec timeout of NULL
+- // Java timeout == 0 : return immediately : timespec timeout of zero
+- if (timeout >= 0) {
+- ts.tv_sec = timeout / 1000;
+- ts.tv_nsec = (timeout % 1000) * 1000000; //nanosec = 1 million millisec
+- tsp = &ts;
+- } else {
+- tsp = NULL;
+- }
+-
+- result = kevent(kq, NULL, 0, kevs, kevCount, tsp);
+-
+- if (result < 0) {
+- if (errno == EINTR) {
+- // ignore EINTR, pretend nothing was selected
+- result = 0;
+- } else {
+- JNU_ThrowIOExceptionWithLastError(env, "KQueueArrayWrapper: kqueue failed");
+- }
+- }
+-
+- return result;
+-}
+-
+-
+-JNIEXPORT void JNICALL
+-Java_sun_nio_ch_KQueueArrayWrapper_interrupt(JNIEnv *env, jclass cls, jint fd)
+-{
+- char c = 1;
+- if (1 != write(fd, &c, 1)) {
+- JNU_ThrowIOExceptionWithLastError(env, "KQueueArrayWrapper: interrupt failed");
+- }
+-}
+-
+--- ./jdk/src/share/bin/jli_util.h Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/bin/jli_util.h Wed Nov 05 12:14:24 2014 -0800
@@ -82,7 +82,7 @@
#define _LARGFILE64_SOURCE
#define JLI_Lseek lseek64
@@ -5213,9 +8548,9 @@
+#ifdef _ALLBSD_SOURCE
#define JLI_Lseek lseek
#endif
- #endif /* _WIN32 */
---- jdk/src/share/classes/sun/awt/FontConfiguration.java
-+++ jdk/src/share/classes/sun/awt/FontConfiguration.java
+ #ifdef _AIX
+--- ./jdk/src/share/classes/sun/awt/FontConfiguration.java Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/classes/sun/awt/FontConfiguration.java Wed Nov 05 12:14:24 2014 -0800
@@ -1146,7 +1146,7 @@
*/
HashMap<String, Boolean> existsMap;
@@ -5225,8 +8560,8 @@
return false;
} else if (existsMap == null) {
existsMap = new HashMap<String, Boolean>();
---- jdk/src/share/classes/sun/awt/OSInfo.java
-+++ jdk/src/share/classes/sun/awt/OSInfo.java
+--- ./jdk/src/share/classes/sun/awt/OSInfo.java Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/classes/sun/awt/OSInfo.java Wed Nov 05 12:14:24 2014 -0800
@@ -39,6 +39,7 @@
WINDOWS,
LINUX,
@@ -5246,8 +8581,8 @@
if (osName.contains("OS X")) {
return MACOSX;
}
---- jdk/src/share/classes/sun/font/FontUtilities.java
-+++ jdk/src/share/classes/sun/font/FontUtilities.java
+--- ./jdk/src/share/classes/sun/font/FontUtilities.java Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/classes/sun/font/FontUtilities.java Wed Nov 05 12:14:24 2014 -0800
@@ -48,6 +48,8 @@
public static boolean isLinux;
@@ -5266,8 +8601,8 @@
isMacOSX = osName.contains("OS X"); // TODO: MacOSX
String t2kStr = System.getProperty("sun.java2d.font.scaler");
---- jdk/src/share/classes/sun/font/SunFontManager.java
-+++ jdk/src/share/classes/sun/font/SunFontManager.java
+--- ./jdk/src/share/classes/sun/font/SunFontManager.java Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/classes/sun/font/SunFontManager.java Wed Nov 05 12:14:24 2014 -0800
@@ -418,7 +418,7 @@
* registerFonts method as on-screen these JRE fonts
* always go through the T2K rasteriser.
@@ -5277,19 +8612,19 @@
/* Linux font configuration uses these fonts */
registerFontDir(jreFontDirName);
}
---- jdk/src/share/classes/sun/nio/cs/ext/ExtendedCharsets.java
-+++ jdk/src/share/classes/sun/nio/cs/ext/ExtendedCharsets.java
+--- ./jdk/src/share/classes/sun/nio/cs/ext/ExtendedCharsets.java Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/classes/sun/nio/cs/ext/ExtendedCharsets.java Wed Nov 05 12:14:24 2014 -0800
@@ -1298,7 +1298,7 @@
String osName = AccessController.doPrivileged(
new GetPropertyAction("os.name"));
- if ("SunOS".equals(osName) || "Linux".equals(osName)
+ if ("SunOS".equals(osName) || "Linux".equals(osName) || "AIX".equals(osName)
- || osName.contains("OS X")) {
+ || osName.endsWith("BSD") || osName.contains("OS X")) {
charset("x-COMPOUND_TEXT", "COMPOUND_TEXT",
new String[] {
"COMPOUND_TEXT", // JDK historical
---- jdk/src/share/classes/sun/print/PSPrinterJob.java
-+++ jdk/src/share/classes/sun/print/PSPrinterJob.java
+--- ./jdk/src/share/classes/sun/print/PSPrinterJob.java Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/classes/sun/print/PSPrinterJob.java Wed Nov 05 12:14:24 2014 -0800
@@ -1587,7 +1587,7 @@
}
@@ -5299,8 +8634,8 @@
execCmd = new String[ncomps];
execCmd[n++] = "/usr/bin/lpr";
if ((pFlags & PRINTER) != 0) {
---- jdk/src/share/classes/sun/security/jgss/GSSManagerImpl.java
-+++ jdk/src/share/classes/sun/security/jgss/GSSManagerImpl.java
+--- ./jdk/src/share/classes/sun/security/jgss/GSSManagerImpl.java Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/classes/sun/security/jgss/GSSManagerImpl.java Wed Nov 05 12:14:24 2014 -0800
@@ -48,6 +48,7 @@
public Boolean run() {
String osname = System.getProperty("os.name");
@@ -5309,8 +8644,8 @@
osname.contains("OS X") ||
osname.startsWith("Linux")) {
return new Boolean(System.getProperty
---- jdk/src/share/classes/sun/security/jgss/wrapper/SunNativeProvider.java
-+++ jdk/src/share/classes/sun/security/jgss/wrapper/SunNativeProvider.java
+--- ./jdk/src/share/classes/sun/security/jgss/wrapper/SunNativeProvider.java Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/classes/sun/security/jgss/wrapper/SunNativeProvider.java Wed Nov 05 12:14:24 2014 -0800
@@ -90,6 +90,12 @@
"libgssapi_krb5.so",
"libgssapi_krb5.so.2",
@@ -5324,8 +8659,8 @@
} else if (osname.contains("OS X")) {
gssLibs = new String[]{
"libgssapi_krb5.dylib",
---- jdk/src/share/classes/sun/security/krb5/internal/ccache/FileCredentialsCache.java
-+++ jdk/src/share/classes/sun/security/krb5/internal/ccache/FileCredentialsCache.java
+--- ./jdk/src/share/classes/sun/security/krb5/internal/ccache/FileCredentialsCache.java Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/classes/sun/security/krb5/internal/ccache/FileCredentialsCache.java Wed Nov 05 12:14:24 2014 -0800
@@ -403,7 +403,8 @@
long uid = 0;
@@ -5336,16 +8671,17 @@
try {
Class<?> c = Class.forName
("com.sun.security.auth.module.UnixSystem");
---- jdk/src/share/classes/sun/tools/attach/META-INF/services/com.sun.tools.attach.spi.AttachProvider
-+++ jdk/src/share/classes/sun/tools/attach/META-INF/services/com.sun.tools.attach.spi.AttachProvider
-@@ -31,3 +31,4 @@
+--- ./jdk/src/share/classes/sun/tools/attach/META-INF/services/com.sun.tools.attach.spi.AttachProvider Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/classes/sun/tools/attach/META-INF/services/com.sun.tools.attach.spi.AttachProvider Wed Nov 05 12:14:24 2014 -0800
+@@ -31,4 +31,5 @@
#[windows]sun.tools.attach.WindowsAttachProvider
#[linux]sun.tools.attach.LinuxAttachProvider
#[macosx]sun.tools.attach.BsdAttachProvider
+#[bsd]sun.tools.attach.BsdAttachProvider
---- jdk/src/share/lib/security/java.security-bsd
-+++ jdk/src/share/lib/security/java.security-bsd
-@@ -0,0 +1,500 @@
+ #[aix]sun.tools.attach.AixAttachProvider
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ ./jdk/src/share/lib/security/java.security-bsd Wed Nov 05 12:14:24 2014 -0800
+@@ -0,0 +1,498 @@
+#
+# This is the "master security properties file".
+#
@@ -5561,7 +8897,6 @@
+ jdk.nashorn.tools.,\
+ com.sun.activation.registries.
+
-+
+#
+# List of comma-separated packages that start with or equal this string
+# will cause a security exception to be thrown when
@@ -5609,7 +8944,6 @@
+ jdk.nashorn.tools.,\
+ com.sun.activation.registries.
+
-+
+#
+# Determines whether this properties file can be appended to
+# or overridden on the command line via -Djava.security.properties
@@ -5846,8 +9180,8 @@
+#
+# Example:
+# jdk.tls.disabledAlgorithms=MD5, SHA1, DSA, RSA keySize < 2048
---- jdk/src/share/native/com/sun/java/util/jar/pack/zip.cpp
-+++ jdk/src/share/native/com/sun/java/util/jar/pack/zip.cpp
+--- ./jdk/src/share/native/com/sun/java/util/jar/pack/zip.cpp Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/native/com/sun/java/util/jar/pack/zip.cpp Wed Nov 05 12:14:24 2014 -0800
@@ -62,7 +62,7 @@
#endif // End of ZLIB
@@ -5857,9 +9191,9 @@
#define SWAP_BYTES(a) \
((((a) << 8) & 0xff00) | 0x00ff) & (((a) >> 8) | 0xff00)
#else
---- jdk/src/share/native/com/sun/media/sound/DirectAudioDevice.c
-+++ jdk/src/share/native/com/sun/media/sound/DirectAudioDevice.c
-@@ -120,7 +120,7 @@
+--- ./jdk/src/share/native/com/sun/media/sound/DirectAudioDevice.c Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/native/com/sun/media/sound/DirectAudioDevice.c Wed Nov 05 12:14:24 2014 -0800
+@@ -121,7 +121,7 @@
}
/* conversion from/to 16 bit signed little endian to native endian samples */
@@ -5868,7 +9202,7 @@
#define MAP_LE_SHORT2SAMPLE(sh) ((MAP_Sample) (sh))
#define MAP_SAMPLE2LE_SHORT(sample) (sample)
#define MAP_SAMPLE2LE_SHORT_CLIP(sample) MAP_ClipAndConvertToShort(sample)
-@@ -131,7 +131,7 @@
+@@ -132,7 +132,7 @@
#endif
/* conversion from/to 16 bit signed big endian to native endian samples */
@@ -5877,7 +9211,7 @@
#define MAP_BE_SHORT2SAMPLE(sh) ((MAP_Sample) (sh))
#define MAP_SAMPLE2BE_SHORT(sample) (sample)
#define MAP_SAMPLE2BE_SHORT_CLIP(sample) MAP_ClipAndConvertToShort(sample)
-@@ -150,7 +150,7 @@
+@@ -151,7 +151,7 @@
#define MAP_SAMPLE2INT8_CLIP(sample) MAP_ClipAndConvertToByte(sample)
/* macros for endian conversion */
@@ -5886,8 +9220,8 @@
#define MAP_NATIVE2LE16(a) (a)
#define MAP_NATIVE2BE16(a) MAP_SWAP16_impl(a)
#define MAP_NATIVE2LE32(a) (a)
---- jdk/src/share/native/com/sun/media/sound/Utilities.c
-+++ jdk/src/share/native/com/sun/media/sound/Utilities.c
+--- ./jdk/src/share/native/com/sun/media/sound/Utilities.c Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/native/com/sun/media/sound/Utilities.c Wed Nov 05 12:14:24 2014 -0800
@@ -28,7 +28,7 @@
@@ -5897,8 +9231,8 @@
return 0;
#else
return 1;
---- jdk/src/share/native/java/lang/fdlibm/include/fdlibm.h
-+++ jdk/src/share/native/java/lang/fdlibm/include/fdlibm.h
+--- ./jdk/src/share/native/java/lang/fdlibm/include/fdlibm.h Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/native/java/lang/fdlibm/include/fdlibm.h Wed Nov 05 12:14:24 2014 -0800
@@ -40,7 +40,7 @@
#endif
#endif
@@ -5908,9 +9242,9 @@
#define __HI(x) *(1+(int*)&x)
#define __LO(x) *(int*)&x
#define __HIp(x) *(1+(int*)x)
---- jdk/src/share/native/sun/awt/image/awt_parseImage.c
-+++ jdk/src/share/native/sun/awt/image/awt_parseImage.c
-@@ -599,7 +599,7 @@
+--- ./jdk/src/share/native/sun/awt/image/awt_parseImage.c Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/native/sun/awt/image/awt_parseImage.c Wed Nov 05 12:14:24 2014 -0800
+@@ -623,7 +623,7 @@
switch(type) {
case java_awt_image_BufferedImage_TYPE_INT_ARGB:
case java_awt_image_BufferedImage_TYPE_INT_ARGB_PRE:
@@ -5919,7 +9253,7 @@
colorOrder[0] = 2;
colorOrder[1] = 1;
colorOrder[2] = 0;
-@@ -612,7 +612,7 @@
+@@ -636,7 +636,7 @@
#endif
break;
case java_awt_image_BufferedImage_TYPE_INT_BGR:
@@ -5928,7 +9262,7 @@
colorOrder[0] = 0;
colorOrder[1] = 1;
colorOrder[2] = 2;
-@@ -623,7 +623,7 @@
+@@ -647,7 +647,7 @@
#endif
break;
case java_awt_image_BufferedImage_TYPE_INT_RGB:
@@ -5937,9 +9271,9 @@
colorOrder[0] = 2;
colorOrder[1] = 1;
colorOrder[2] = 0;
---- jdk/src/share/native/sun/awt/medialib/awt_ImagingLib.c
-+++ jdk/src/share/native/sun/awt/medialib/awt_ImagingLib.c
-@@ -1175,7 +1175,7 @@
+--- ./jdk/src/share/native/sun/awt/medialib/awt_ImagingLib.c Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/native/sun/awt/medialib/awt_ImagingLib.c Wed Nov 05 12:14:24 2014 -0800
+@@ -1176,7 +1176,7 @@
#define NLUT 8
@@ -5948,8 +9282,8 @@
#define INDEXES { 3, 2, 1, 0, 7, 6, 5, 4 }
#else
#define INDEXES { 0, 1, 2, 3, 4, 5, 6, 7 }
---- jdk/src/share/native/sun/awt/medialib/mlib_ImageConv2x2_f.c
-+++ jdk/src/share/native/sun/awt/medialib/mlib_ImageConv2x2_f.c
+--- ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv2x2_f.c Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv2x2_f.c Wed Nov 05 12:14:24 2014 -0800
@@ -86,7 +86,7 @@
#endif /* MLIB_USE_FTOI_CLAMPING */
@@ -5989,8 +9323,8 @@
#endif /* _NO_LONGLONG */
---- jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_16ext.c
-+++ jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_16ext.c
+--- ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_16ext.c Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_16ext.c Wed Nov 05 12:14:24 2014 -0800
@@ -126,7 +126,7 @@
#define D2I(x) CLAMP_S32((x) SAT_OFF)
@@ -6030,8 +9364,8 @@
#endif /* _NO_LONGLONG */
/***************************************************************/
---- jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_16nw.c
-+++ jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_16nw.c
+--- ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_16nw.c Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_16nw.c Wed Nov 05 12:14:24 2014 -0800
@@ -94,7 +94,7 @@
#define D2I(x) CLAMP_S32((x) SAT_OFF)
@@ -6071,8 +9405,8 @@
#endif /* _NO_LONGLONG */
/***************************************************************/
---- jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_8ext.c
-+++ jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_8ext.c
+--- ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_8ext.c Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_8ext.c Wed Nov 05 12:14:24 2014 -0800
@@ -126,7 +126,7 @@
#define D2I(x) CLAMP_S32((x) SAT_OFF)
@@ -6112,8 +9446,8 @@
#endif /* _NO_LONGLONG */
/***************************************************************/
---- jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_8nw.c
-+++ jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_8nw.c
+--- ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_8nw.c Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_8nw.c Wed Nov 05 12:14:24 2014 -0800
@@ -95,7 +95,7 @@
#define D2I(x) CLAMP_S32((x) SAT_OFF)
@@ -6153,8 +9487,8 @@
#endif /* _NO_LONGLONG */
/***************************************************************/
---- jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_u16ext.c
-+++ jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_u16ext.c
+--- ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_u16ext.c Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_u16ext.c Wed Nov 05 12:14:24 2014 -0800
@@ -126,7 +126,7 @@
#define D2I(x) CLAMP_S32((x) SAT_OFF)
@@ -6194,8 +9528,8 @@
#endif /* _NO_LONGLONG */
/***************************************************************/
---- jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_u16nw.c
-+++ jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_u16nw.c
+--- ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_u16nw.c Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_u16nw.c Wed Nov 05 12:14:24 2014 -0800
@@ -94,7 +94,7 @@
#define D2I(x) CLAMP_S32((x) SAT_OFF)
@@ -6235,8 +9569,8 @@
#endif /* _NO_LONGLONG */
/***************************************************************/
---- jdk/src/share/native/sun/awt/medialib/mlib_ImageCopy_Bit.c
-+++ jdk/src/share/native/sun/awt/medialib/mlib_ImageCopy_Bit.c
+--- ./jdk/src/share/native/sun/awt/medialib/mlib_ImageCopy_Bit.c Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageCopy_Bit.c Wed Nov 05 12:14:24 2014 -0800
@@ -95,7 +95,7 @@
dst = dp[0];
if (ld_offset + size < 32) {
@@ -6456,8 +9790,8 @@
}
#else /* _LONGLONG */
---- jdk/src/share/native/sun/awt/medialib/mlib_ImageLookUp_64.c
-+++ jdk/src/share/native/sun/awt/medialib/mlib_ImageLookUp_64.c
+--- ./jdk/src/share/native/sun/awt/medialib/mlib_ImageLookUp_64.c Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageLookUp_64.c Wed Nov 05 12:14:24 2014 -0800
@@ -168,7 +168,7 @@
}
@@ -6738,8 +10072,8 @@
dp[12] = t0;
dp[13] = t1;
dp[14] = t2;
---- jdk/src/share/native/sun/awt/medialib/mlib_ImageLookUp_Bit.c
-+++ jdk/src/share/native/sun/awt/medialib/mlib_ImageLookUp_Bit.c
+--- ./jdk/src/share/native/sun/awt/medialib/mlib_ImageLookUp_Bit.c Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageLookUp_Bit.c Wed Nov 05 12:14:24 2014 -0800
@@ -88,7 +88,7 @@
} d64_2_f32;
@@ -6891,8 +10225,8 @@
((mlib_u32*)lh)[0] = l; ((mlib_u32*)lh)[1] = l;
((mlib_u32*)lh)[2] = l; ((mlib_u32*)lh)[3] = h;
---- jdk/src/share/native/sun/awt/medialib/mlib_ImageUtils.c
-+++ jdk/src/share/native/sun/awt/medialib/mlib_ImageUtils.c
+--- ./jdk/src/share/native/sun/awt/medialib/mlib_ImageUtils.c Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/native/sun/awt/medialib/mlib_ImageUtils.c Wed Nov 05 12:14:24 2014 -0800
@@ -30,7 +30,7 @@
typedef union {
mlib_d64 db;
@@ -6902,8 +10236,8 @@
mlib_s32 int1, int0;
#else
mlib_s32 int0, int1;
---- jdk/src/share/native/sun/awt/medialib/mlib_c_ImageCopy.c
-+++ jdk/src/share/native/sun/awt/medialib/mlib_c_ImageCopy.c
+--- ./jdk/src/share/native/sun/awt/medialib/mlib_c_ImageCopy.c Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/native/sun/awt/medialib/mlib_c_ImageCopy.c Wed Nov 05 12:14:24 2014 -0800
@@ -275,11 +275,11 @@
for (i = 0; j <= (b_size - 4); j += 4, i++) {
src0 = src1;
@@ -7002,8 +10336,8 @@
s0 = s1;
dp += SIZE;
sp += SIZE;
---- jdk/src/share/native/sun/awt/medialib/mlib_c_ImageLookUp_f.c
-+++ jdk/src/share/native/sun/awt/medialib/mlib_c_ImageLookUp_f.c
+--- ./jdk/src/share/native/sun/awt/medialib/mlib_c_ImageLookUp_f.c Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/native/sun/awt/medialib/mlib_c_ImageLookUp_f.c Wed Nov 05 12:14:24 2014 -0800
@@ -120,7 +120,7 @@
} \
}
@@ -8236,8 +11570,8 @@
dp[12] = t0;
dp[13] = t1;
dp[14] = t2;
---- jdk/src/share/native/sun/awt/medialib/mlib_image.h
-+++ jdk/src/share/native/sun/awt/medialib/mlib_image.h
+--- ./jdk/src/share/native/sun/awt/medialib/mlib_image.h Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/native/sun/awt/medialib/mlib_image.h Wed Nov 05 12:14:24 2014 -0800
@@ -27,9 +27,6 @@
#ifndef MLIB_IMAGE_H
#define MLIB_IMAGE_H
@@ -8248,8 +11582,8 @@
#include <mlib_types.h>
#include <mlib_status.h>
#include <mlib_sys.h>
---- jdk/src/share/native/sun/awt/medialib/mlib_sys.c
-+++ jdk/src/share/native/sun/awt/medialib/mlib_sys.c
+--- ./jdk/src/share/native/sun/awt/medialib/mlib_sys.c Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/native/sun/awt/medialib/mlib_sys.c Wed Nov 05 12:14:24 2014 -0800
@@ -29,7 +29,7 @@
#ifdef MACOSX
#include <unistd.h>
@@ -8259,7 +11593,7 @@
#include <malloc.h>
#endif
#include <mlib_types.h>
-@@ -94,6 +94,9 @@
+@@ -97,6 +97,9 @@
return (void *) malloc(size);
#elif defined(MACOSX)
return valloc(size);
@@ -8269,8 +11603,8 @@
#else
return (void *) memalign(8, size);
#endif /* _MSC_VER */
---- jdk/src/share/native/sun/font/layout/LEStandalone.h
-+++ jdk/src/share/native/sun/font/layout/LEStandalone.h
+--- ./jdk/src/share/native/sun/font/layout/LEStandalone.h Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/native/sun/font/layout/LEStandalone.h Wed Nov 05 12:14:24 2014 -0800
@@ -136,7 +136,7 @@
#define U_CAPI extern "C"
@@ -8280,8 +11614,8 @@
#define U_IS_BIG_ENDIAN 0
#endif
#endif
---- jdk/src/share/native/sun/java2d/cmm/lcms/LCMS.c
-+++ jdk/src/share/native/sun/java2d/cmm/lcms/LCMS.c
+--- ./jdk/src/share/native/sun/java2d/cmm/lcms/LCMS.c Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/native/sun/java2d/cmm/lcms/LCMS.c Wed Nov 05 12:14:24 2014 -0800
@@ -182,7 +182,7 @@
return 0L;
}
@@ -8291,8 +11625,8 @@
/* Reversing data packed into int for LE archs */
if (isInIntPacked) {
inFormatter ^= DOSWAP_SH(1);
---- jdk/src/share/native/sun/java2d/cmm/lcms/lcms2.h
-+++ jdk/src/share/native/sun/java2d/cmm/lcms/lcms2.h
+--- ./jdk/src/share/native/sun/java2d/cmm/lcms/lcms2.h Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/native/sun/java2d/cmm/lcms/lcms2.h Wed Nov 05 12:14:24 2014 -0800
@@ -202,7 +202,7 @@
// Try to detect big endian platforms. This list can be endless, so only some checks are performed over here.
// you can pass this toggle to the compiler by using -DCMS_USE_BIG_ENDIAN or something similar
@@ -8302,9 +11636,9 @@
# define CMS_USE_BIG_ENDIAN 1
#endif
---- jdk/src/share/native/sun/management/DiagnosticCommandImpl.c
-+++ jdk/src/share/native/sun/management/DiagnosticCommandImpl.c
-@@ -26,6 +26,7 @@
+--- ./jdk/src/share/native/sun/management/DiagnosticCommandImpl.c Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/share/native/sun/management/DiagnosticCommandImpl.c Wed Nov 05 12:14:24 2014 -0800
+@@ -27,6 +27,7 @@
#include <jni.h>
#include "management.h"
#include "sun_management_DiagnosticCommandImpl.h"
@@ -8312,8 +11646,8 @@
JNIEXPORT void JNICALL Java_sun_management_DiagnosticCommandImpl_setNotificationEnabled
(JNIEnv *env, jobject dummy, jboolean enabled) {
---- jdk/src/solaris/back/util_md.h
-+++ jdk/src/solaris/back/util_md.h
+--- ./jdk/src/solaris/back/util_md.h Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/solaris/back/util_md.h Wed Nov 05 12:14:24 2014 -0800
@@ -51,7 +51,7 @@
/* On little endian machines, convert java big endian numbers. */
@@ -8323,8 +11657,8 @@
#define HOST_TO_JAVA_CHAR(x) (((x & 0xff) << 8) | ((x >> 8) & (0xff)))
#define HOST_TO_JAVA_SHORT(x) (((x & 0xff) << 8) | ((x >> 8) & (0xff)))
---- jdk/src/solaris/bin/ergo_i586.c
-+++ jdk/src/solaris/bin/ergo_i586.c
+--- ./jdk/src/solaris/bin/ergo_i586.c Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/solaris/bin/ergo_i586.c Wed Nov 05 12:14:24 2014 -0800
@@ -106,7 +106,7 @@
#endif /* __solaris__ */
@@ -8334,9 +11668,18 @@
/*
* A utility method for asking the CPU about itself.
---- jdk/src/solaris/bin/java_md_solinux.c
-+++ jdk/src/solaris/bin/java_md_solinux.c
-@@ -297,9 +297,9 @@
+@@ -197,7 +197,7 @@
+ (result == JNI_TRUE ? "true" : "false"));
+ return result;
+ }
+-#endif /* __linux__ */
++#endif /* __linux__ || _ALLBSD_SOURCE */
+
+ /*
+ * Routines shared by solaris-i586 and linux-i586.
+--- ./jdk/src/solaris/bin/java_md_solinux.c Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/solaris/bin/java_md_solinux.c Wed Nov 05 12:14:24 2014 -0800
+@@ -306,9 +306,9 @@
if (llp == NULL && dmllp == NULL) {
return JNI_FALSE;
}
@@ -8348,7 +11691,7 @@
* LD_LIBRARY_PATH to the empty string for security purposes. (In contrast,
* on Solaris the LD_LIBRARY_PATH variable for a privileged binary does not
* lose its settings; but the dynamic linker does apply more scrutiny to the
-@@ -310,12 +310,18 @@
+@@ -319,12 +319,18 @@
* libraries will be handled by the RPATH. In reality, this check is
* redundant, as the previous check for a non-null LD_LIBRARY_PATH will
* return back to the calling function forthwith, it is left here to safe
@@ -8369,7 +11712,7 @@
/*
* Prevent recursions. Since LD_LIBRARY_PATH is the one which will be set by
-@@ -900,8 +906,9 @@
+@@ -919,8 +925,9 @@
* onwards the filename returned in DL_info structure from dladdr is
* an absolute pathname so technically realpath isn't required.
* On Linux we read the executable name from /proc/self/exe.
@@ -8381,7 +11724,7 @@
*/
const char*
SetExecname(char **argv)
-@@ -928,9 +935,13 @@
+@@ -947,9 +954,13 @@
}
}
}
@@ -8396,7 +11739,7 @@
char buf[PATH_MAX+1];
int len = readlink(self, buf, PATH_MAX);
if (len >= 0) {
-@@ -938,7 +949,7 @@
+@@ -957,7 +968,7 @@
exec_path = JLI_StringDup(buf);
}
}
@@ -8405,34 +11748,7 @@
{
/* Not implemented */
}
-@@ -1000,7 +1011,7 @@
- int
- ContinueInNewThread0(int (JNICALL *continuation)(void *), jlong stack_size, void * args) {
- int rslt;
--#ifdef __linux__
-+#ifndef __solaris__
- pthread_t tid;
- pthread_attr_t attr;
- pthread_attr_init(&attr);
-@@ -1025,7 +1036,7 @@
- }
-
- pthread_attr_destroy(&attr);
--#else /* ! __linux__ */
-+#else /* __solaris__ */
- thread_t tid;
- long flags = 0;
- if (thr_create(NULL, stack_size, (void *(*)(void *))continuation, args, flags, &tid) == 0) {
-@@ -1036,7 +1047,7 @@
- /* See above. Continue in current thread if thr_create() failed */
- rslt = continuation(args);
- }
--#endif /* __linux__ */
-+#endif /* ! __solaris__ */
- return rslt;
- }
-
-@@ -1044,13 +1055,13 @@
+@@ -1063,13 +1074,13 @@
#define MAX_PID_STR_SZ 20
void SetJavaLauncherPlatformProps() {
@@ -8449,8 +11765,8 @@
}
int
---- jdk/src/solaris/bin/java_md_solinux.h
-+++ jdk/src/solaris/bin/java_md_solinux.h
+--- ./jdk/src/solaris/bin/java_md_solinux.h Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/solaris/bin/java_md_solinux.h Wed Nov 05 12:14:24 2014 -0800
@@ -26,17 +26,26 @@
#ifndef JAVA_MD_SOLINUX_H
#define JAVA_MD_SOLINUX_H
@@ -8481,31 +11797,18 @@
/* pointer to environment */
extern char **environ;
-@@ -48,16 +57,19 @@
- #ifdef __linux__
- static const char *system_dir = "/usr/java";
- static const char *user_dir = "/java";
+@@ -48,6 +57,9 @@
+ #ifdef __solaris__
+ static const char *system_dir = "/usr/jdk";
+ static const char *user_dir = "/jdk";
+#elif defined(__FreeBSD__)
+static const char *system_dir = PACKAGE_PATH "/openjdk8";
+static const char *user_dir = "/java";
- #else /* Solaris */
- static const char *system_dir = "/usr/jdk";
- static const char *user_dir = "/jdk";
- #endif
-
- #include <dlfcn.h>
--#ifdef __linux__
--#include <pthread.h>
--#else
-+#ifdef __solaris__
- #include <thread.h>
-+#else
-+#include <pthread.h>
- #endif
-
- #define JVM_DLL "libjvm.so"
---- jdk/src/solaris/classes/java/lang/UNIXProcess.java.bsd
-+++ jdk/src/solaris/classes/java/lang/UNIXProcess.java.bsd
+ #else /* !__solaris__, i.e. Linux, AIX,.. */
+ static const char *system_dir = "/usr/java";
+ static const char *user_dir = "/java";
+--- ./jdk/src/solaris/classes/java/lang/UNIXProcess.java.bsd Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/solaris/classes/java/lang/UNIXProcess.java.bsd Wed Nov 05 12:14:24 2014 -0800
@@ -94,8 +94,9 @@
{
public LaunchMechanism run() {
@@ -8517,8 +11820,419 @@
String s = System.getProperty(
"jdk.lang.Process.launchMechanism", "posix_spawn");
---- jdk/src/solaris/classes/sun/awt/X11FontManager.java
-+++ jdk/src/solaris/classes/sun/awt/X11FontManager.java
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ ./jdk/src/solaris/classes/java/lang/UNIXProcess.java.macosx Wed Nov 05 12:14:24 2014 -0800
+@@ -0,0 +1,408 @@
++/*
++ * Copyright (c) 1995, 2013, Oracle and/or its affiliates. All rights reserved.
++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
++ *
++ * This code is free software; you can redistribute it and/or modify it
++ * under the terms of the GNU General Public License version 2 only, as
++ * published by the Free Software Foundation. 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.
++ */
++
++package java.lang;
++
++import java.io.BufferedInputStream;
++import java.io.BufferedOutputStream;
++import java.io.ByteArrayInputStream;
++import java.io.FileDescriptor;
++import java.io.FileInputStream;
++import java.io.FileOutputStream;
++import java.io.IOException;
++import java.io.InputStream;
++import java.io.OutputStream;
++import java.util.Arrays;
++import java.util.concurrent.Executors;
++import java.util.concurrent.Executor;
++import java.util.concurrent.ThreadFactory;
++import java.util.concurrent.TimeUnit;
++import java.security.AccessController;
++import static java.security.AccessController.doPrivileged;
++import java.security.PrivilegedAction;
++import java.security.PrivilegedActionException;
++import java.security.PrivilegedExceptionAction;
++
++/**
++ * java.lang.Process subclass in the UNIX environment.
++ *
++ * @author Mario Wolczko and Ross Knippel.
++ * @author Konstantin Kladko (ported to Bsd)
++ * @author Martin Buchholz
++ */
++final class UNIXProcess extends Process {
++ private static final sun.misc.JavaIOFileDescriptorAccess fdAccess
++ = sun.misc.SharedSecrets.getJavaIOFileDescriptorAccess();
++
++ private final int pid;
++ private int exitcode;
++ private boolean hasExited;
++
++ private /* final */ OutputStream stdin;
++ private /* final */ InputStream stdout;
++ private /* final */ InputStream stderr;
++
++ private static enum LaunchMechanism {
++ FORK(1),
++ POSIX_SPAWN(2);
++
++ private int value;
++ LaunchMechanism(int x) {value = x;}
++ };
++
++ /* On BSD, the default is to spawn */
++ private static final LaunchMechanism launchMechanism;
++ private static byte[] helperpath;
++
++ private static byte[] toCString(String s) {
++ if (s == null)
++ return null;
++ byte[] bytes = s.getBytes();
++ byte[] result = new byte[bytes.length + 1];
++ System.arraycopy(bytes, 0,
++ result, 0,
++ bytes.length);
++ result[result.length-1] = (byte)0;
++ return result;
++ }
++
++ static {
++ launchMechanism = AccessController.doPrivileged(
++ new PrivilegedAction<LaunchMechanism>()
++ {
++ public LaunchMechanism run() {
++ String javahome = System.getProperty("java.home");
++
++ helperpath = toCString(javahome + "/lib/jspawnhelper");
++ String s = System.getProperty(
++ "jdk.lang.Process.launchMechanism", "posix_spawn");
++
++ try {
++ return LaunchMechanism.valueOf(s.toUpperCase());
++ } catch (IllegalArgumentException e) {
++ throw new Error(s + " is not a supported " +
++ "process launch mechanism on this platform.");
++ }
++ }
++ });
++ }
++
++ /* this is for the reaping thread */
++ private native int waitForProcessExit(int pid);
++
++ /**
++ * Create a process. Depending on the mode flag, this is done by
++ * one of the following mechanisms.
++ * - fork(2) and exec(2)
++ * - posix_spawn(2)
++ *
++ * @param fds an array of three file descriptors.
++ * Indexes 0, 1, and 2 correspond to standard input,
++ * standard output and standard error, respectively. On
++ * input, a value of -1 means to create a pipe to connect
++ * child and parent processes. On output, a value which
++ * is not -1 is the parent pipe fd corresponding to the
++ * pipe which has been created. An element of this array
++ * is -1 on input if and only if it is <em>not</em> -1 on
++ * output.
++ * @return the pid of the subprocess
++ */
++ private native int forkAndExec(int mode, byte[] helperpath,
++ byte[] prog,
++ byte[] argBlock, int argc,
++ byte[] envBlock, int envc,
++ byte[] dir,
++ int[] fds,
++ boolean redirectErrorStream)
++ throws IOException;
++
++ /**
++ * The thread factory used to create "process reaper" daemon threads.
++ */
++ private static class ProcessReaperThreadFactory implements ThreadFactory {
++ private final static ThreadGroup group = getRootThreadGroup();
++
++ private static ThreadGroup getRootThreadGroup() {
++ return doPrivileged(new PrivilegedAction<ThreadGroup> () {
++ public ThreadGroup run() {
++ ThreadGroup root = Thread.currentThread().getThreadGroup();
++ while (root.getParent() != null)
++ root = root.getParent();
++ return root;
++ }});
++ }
++
++ public Thread newThread(Runnable grimReaper) {
++ // Our thread stack requirement is quite modest.
++ Thread t = new Thread(group, grimReaper, "process reaper", 32768);
++ t.setDaemon(true);
++ // A small attempt (probably futile) to avoid priority inversion
++ t.setPriority(Thread.MAX_PRIORITY);
++ return t;
++ }
++ }
++
++ /**
++ * The thread pool of "process reaper" daemon threads.
++ */
++ private static final Executor processReaperExecutor =
++ doPrivileged(new PrivilegedAction<Executor>() {
++ public Executor run() {
++ return Executors.newCachedThreadPool
++ (new ProcessReaperThreadFactory());
++ }});
++
++ UNIXProcess(final byte[] prog,
++ final byte[] argBlock, final int argc,
++ final byte[] envBlock, final int envc,
++ final byte[] dir,
++ final int[] fds,
++ final boolean redirectErrorStream)
++ throws IOException {
++
++ pid = forkAndExec(launchMechanism.value,
++ helperpath,
++ prog,
++ argBlock, argc,
++ envBlock, envc,
++ dir,
++ fds,
++ redirectErrorStream);
++
++ try {
++ doPrivileged(new PrivilegedExceptionAction<Void>() {
++ public Void run() throws IOException {
++ initStreams(fds);
++ return null;
++ }});
++ } catch (PrivilegedActionException ex) {
++ throw (IOException) ex.getException();
++ }
++ }
++
++ static FileDescriptor newFileDescriptor(int fd) {
++ FileDescriptor fileDescriptor = new FileDescriptor();
++ fdAccess.set(fileDescriptor, fd);
++ return fileDescriptor;
++ }
++
++ void initStreams(int[] fds) throws IOException {
++ stdin = (fds[0] == -1) ?
++ ProcessBuilder.NullOutputStream.INSTANCE :
++ new ProcessPipeOutputStream(fds[0]);
++
++ stdout = (fds[1] == -1) ?
++ ProcessBuilder.NullInputStream.INSTANCE :
++ new ProcessPipeInputStream(fds[1]);
++
++ stderr = (fds[2] == -1) ?
++ ProcessBuilder.NullInputStream.INSTANCE :
++ new ProcessPipeInputStream(fds[2]);
++
++ processReaperExecutor.execute(new Runnable() {
++ public void run() {
++ int exitcode = waitForProcessExit(pid);
++ UNIXProcess.this.processExited(exitcode);
++ }});
++ }
++
++ void processExited(int exitcode) {
++ synchronized (this) {
++ this.exitcode = exitcode;
++ hasExited = true;
++ notifyAll();
++ }
++
++ if (stdout instanceof ProcessPipeInputStream)
++ ((ProcessPipeInputStream) stdout).processExited();
++
++ if (stderr instanceof ProcessPipeInputStream)
++ ((ProcessPipeInputStream) stderr).processExited();
++
++ if (stdin instanceof ProcessPipeOutputStream)
++ ((ProcessPipeOutputStream) stdin).processExited();
++ }
++
++ public OutputStream getOutputStream() {
++ return stdin;
++ }
++
++ public InputStream getInputStream() {
++ return stdout;
++ }
++
++ public InputStream getErrorStream() {
++ return stderr;
++ }
++
++ public synchronized int waitFor() throws InterruptedException {
++ while (!hasExited) {
++ wait();
++ }
++ return exitcode;
++ }
++
++ @Override
++ public synchronized boolean waitFor(long timeout, TimeUnit unit)
++ throws InterruptedException
++ {
++ if (hasExited) return true;
++ if (timeout <= 0) return false;
++
++ long timeoutAsNanos = unit.toNanos(timeout);
++ long startTime = System.nanoTime();
++ long rem = timeoutAsNanos;
++
++ while (!hasExited && (rem > 0)) {
++ wait(Math.max(TimeUnit.NANOSECONDS.toMillis(rem), 1));
++ rem = timeoutAsNanos - (System.nanoTime() - startTime);
++ }
++ return hasExited;
++ }
++
++ public synchronized int exitValue() {
++ if (!hasExited) {
++ throw new IllegalThreadStateException("process hasn't exited");
++ }
++ return exitcode;
++ }
++
++ private static native void destroyProcess(int pid, boolean force);
++ private void destroy(boolean force) {
++ // There is a risk that pid will be recycled, causing us to
++ // kill the wrong process! So we only terminate processes
++ // that appear to still be running. Even with this check,
++ // there is an unavoidable race condition here, but the window
++ // is very small, and OSes try hard to not recycle pids too
++ // soon, so this is quite safe.
++ synchronized (this) {
++ if (!hasExited)
++ destroyProcess(pid, force);
++ }
++ try { stdin.close(); } catch (IOException ignored) {}
++ try { stdout.close(); } catch (IOException ignored) {}
++ try { stderr.close(); } catch (IOException ignored) {}
++ }
++
++ public void destroy() {
++ destroy(false);
++ }
++
++ @Override
++ public Process destroyForcibly() {
++ destroy(true);
++ return this;
++ }
++
++ @Override
++ public synchronized boolean isAlive() {
++ return !hasExited;
++ }
++
++ private static native void init();
++
++ static {
++ init();
++ }
++
++ /**
++ * A buffered input stream for a subprocess pipe file descriptor
++ * that allows the underlying file descriptor to be reclaimed when
++ * the process exits, via the processExited hook.
++ *
++ * This is tricky because we do not want the user-level InputStream to be
++ * closed until the user invokes close(), and we need to continue to be
++ * able to read any buffered data lingering in the OS pipe buffer.
++ */
++ static class ProcessPipeInputStream extends BufferedInputStream {
++ private final Object closeLock = new Object();
++
++ ProcessPipeInputStream(int fd) {
++ super(new FileInputStream(newFileDescriptor(fd)));
++ }
++ private static byte[] drainInputStream(InputStream in)
++ throws IOException {
++ int n = 0;
++ int j;
++ byte[] a = null;
++ while ((j = in.available()) > 0) {
++ a = (a == null) ? new byte[j] : Arrays.copyOf(a, n + j);
++ n += in.read(a, n, j);
++ }
++ return (a == null || n == a.length) ? a : Arrays.copyOf(a, n);
++ }
++
++ /** Called by the process reaper thread when the process exits. */
++ synchronized void processExited() {
++ synchronized (closeLock) {
++ try {
++ InputStream in = this.in;
++ // this stream is closed if and only if: in == null
++ if (in != null) {
++ byte[] stragglers = drainInputStream(in);
++ in.close();
++ this.in = (stragglers == null) ?
++ ProcessBuilder.NullInputStream.INSTANCE :
++ new ByteArrayInputStream(stragglers);
++ }
++ } catch (IOException ignored) {}
++ }
++ }
++
++ @Override
++ public void close() throws IOException {
++ // BufferedInputStream#close() is not synchronized unlike most other methods.
++ // Synchronizing helps avoid race with processExited().
++ synchronized (closeLock) {
++ super.close();
++ }
++ }
++ }
++
++ /**
++ * A buffered output stream for a subprocess pipe file descriptor
++ * that allows the underlying file descriptor to be reclaimed when
++ * the process exits, via the processExited hook.
++ */
++ static class ProcessPipeOutputStream extends BufferedOutputStream {
++ ProcessPipeOutputStream(int fd) {
++ super(new FileOutputStream(newFileDescriptor(fd)));
++ }
++
++ /** Called by the process reaper thread when the process exits. */
++ synchronized void processExited() {
++ OutputStream out = this.out;
++ if (out != null) {
++ try {
++ out.close();
++ } catch (IOException ignored) {
++ // We know of no reason to get an IOException, but if
++ // we do, there's nothing else to do but carry on.
++ }
++ this.out = ProcessBuilder.NullOutputStream.INSTANCE;
++ }
++ }
++ }
++}
+--- ./jdk/src/solaris/classes/sun/awt/X11FontManager.java Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/solaris/classes/sun/awt/X11FontManager.java Wed Nov 05 12:14:24 2014 -0800
@@ -213,7 +213,7 @@
if (fontID != null) {
fileName = (String)fontNameMap.get(fontID);
@@ -8546,8 +12260,272 @@
(!mFontConfig.foundOsSpecificFile() ||
!mFontConfig.fontFilesArePresent()) ||
(FontUtilities.isSolaris && !mFontConfig.fontFilesArePresent()))) {
---- jdk/src/solaris/classes/sun/net/PortConfig.java
-+++ jdk/src/solaris/classes/sun/net/PortConfig.java
+--- ./jdk/src/solaris/classes/sun/awt/fontconfigs/bsd.fontconfig.properties Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/solaris/classes/sun/awt/fontconfigs/bsd.fontconfig.properties Wed Nov 05 12:14:24 2014 -0800
+@@ -26,134 +26,134 @@
+
+ # Version
+
+-# Uses Fedora Core 6 fonts and file paths.
++# Uses FreeBSD ports Tree fonts and file paths.
+ version=1
+
+ # Component Font Mappings
+
+-dialog.plain.latin-1=DejaVu LGC Sans
++dialog.plain.latin-1=DejaVu Sans
+ dialog.plain.japanese-x0208=Sazanami Gothic
+-dialog.plain.korean=Baekmuk Gulim
+-dialog.plain.chinese-big5=AR PL ShanHeiSun Uni
+-dialog.plain.chinese-gb18030=AR PL ShanHeiSun Uni
++dialog.plain.korean=NanumGothic
++dialog.plain.chinese-big5=AR PL UMing
++dialog.plain.chinese-gb18030=AR PL UMing
+
+-dialog.bold.latin-1=DejaVu LGC Sans Bold
++dialog.bold.latin-1=DejaVu Sans Bold
+ dialog.bold.japanese-x0208=Sazanami Gothic
+-dialog.bold.korean=Baekmuk Gulim
+-dialog.bold.chinese-big5=AR PL ShanHeiSun Uni
+-dialog.bold.chinese-gb18030=AR PL ShanHeiSun Uni
++dialog.bold.korean=NanumGothic Bold
++dialog.bold.chinese-big5=AR PL UMing
++dialog.bold.chinese-gb18030=AR PL UMing
+
+-dialog.italic.latin-1=DejaVu LGC Sans Oblique
++dialog.italic.latin-1=DejaVu Sans Oblique
+ dialog.italic.japanese-x0208=Sazanami Gothic
+-dialog.italic.korean=Baekmuk Gulim
+-dialog.italic.chinese-big5=AR PL ShanHeiSun Uni
+-dialog.italic.chinese-gb18030=AR PL ShanHeiSun Uni
++dialog.italic.korean=NanumGothic
++dialog.italic.chinese-big5=AR PL UMing
++dialog.italic.chinese-gb18030=AR PL UMing
+
+-dialog.bolditalic.latin-1=DejaVu LGC Sans Bold Oblique
++dialog.bolditalic.latin-1=DejaVu Sans Bold Oblique
+ dialog.bolditalic.japanese-x0208=Sazanami Gothic
+-dialog.bolditalic.korean=Baekmuk Gulim
+-dialog.bolditalic.chinese-big5=AR PL ShanHeiSun Uni
+-dialog.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni
++dialog.bolditalic.korean=NanumGothic Bold
++dialog.bolditalic.chinese-big5=AR PL UMing
++dialog.bolditalic.chinese-gb18030=AR PL UMing
+
+
+-sansserif.plain.latin-1=DejaVu LGC Sans
++sansserif.plain.latin-1=DejaVu Sans
+ sansserif.plain.japanese-x0208=Sazanami Gothic
+-sansserif.plain.korean=Baekmuk Gulim
+-sansserif.plain.chinese-big5=AR PL ShanHeiSun Uni
+-sansserif.plain.chinese-gb18030=AR PL ShanHeiSun Uni
++sansserif.plain.korean=NanumGothic
++sansserif.plain.chinese-big5=AR PL UMing
++sansserif.plain.chinese-gb18030=AR PL UMing
+
+-sansserif.bold.latin-1=DejaVu LGC Sans Bold
++sansserif.bold.latin-1=DejaVu Sans Bold
+ sansserif.bold.japanese-x0208=Sazanami Gothic
+-sansserif.bold.korean=Baekmuk Gulim
+-sansserif.bold.chinese-big5=AR PL ShanHeiSun Uni
+-sansserif.bold.chinese-gb18030=AR PL ShanHeiSun Uni
++sansserif.bold.korean=NanumGothic Bold
++sansserif.bold.chinese-big5=AR PL UMing
++sansserif.bold.chinese-gb18030=AR PL UMing
+
+-sansserif.italic.latin-1=DejaVu LGC Sans Oblique
++sansserif.italic.latin-1=DejaVu Sans Oblique
+ sansserif.italic.japanese-x0208=Sazanami Gothic
+-sansserif.italic.korean=Baekmuk Gulim
+-sansserif.italic.chinese-big5=AR PL ShanHeiSun Uni
+-sansserif.italic.chinese-gb18030=AR PL ShanHeiSun Uni
++sansserif.italic.korean=NanumGothic
++sansserif.italic.chinese-big5=AR PL UMing
++sansserif.italic.chinese-gb18030=AR PL UMing
+
+-sansserif.bolditalic.latin-1=DejaVu LGC Sans Bold Oblique
++sansserif.bolditalic.latin-1=DejaVu Sans Bold Oblique
+ sansserif.bolditalic.japanese-x0208=Sazanami Gothic
+-sansserif.bolditalic.korean=Baekmuk Gulim
+-sansserif.bolditalic.chinese-big5=AR PL ShanHeiSun Uni
+-sansserif.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni
++sansserif.bolditalic.korean=NanumGothic Bold
++sansserif.bolditalic.chinese-big5=AR PL UMing
++sansserif.bolditalic.chinese-gb18030=AR PL UMing
+
+
+-serif.plain.latin-1=DejaVu LGC Serif
++serif.plain.latin-1=DejaVu Serif
+ serif.plain.japanese-x0208=Sazanami Mincho
+-serif.plain.korean=Baekmuk Batang
+-serif.plain.chinese-big5=AR PL ZenKai Uni
+-serif.plain.chinese-gb18030=AR PL ZenKai Uni
++serif.plain.korean=NanumMyeongjo
++serif.plain.chinese-big5=AR PL UKai
++serif.plain.chinese-gb18030=AR PL UKai
+
+-serif.bold.latin-1=DejaVu LGC Serif Bold
++serif.bold.latin-1=DejaVu Serif Bold
+ serif.bold.japanese-x0208=Sazanami Mincho
+-serif.bold.korean=Baekmuk Batang
+-serif.bold.chinese-big5=AR PL ZenKai Uni
+-serif.bold.chinese-gb18030=AR PL ZenKai Uni
++serif.bold.korean=NanumMyeongjo Bold
++serif.bold.chinese-big5=AR PL UKai
++serif.bold.chinese-gb18030=AR PL UKai
+
+-serif.italic.latin-1=DejaVu LGC Serif Oblique
++serif.italic.latin-1=DejaVu Serif Italic
+ serif.italic.japanese-x0208=Sazanami Mincho
+-serif.italic.korean=Baekmuk Batang
+-serif.italic.chinese-big5=AR PL ZenKai Uni
+-serif.italic.chinese-gb18030=AR PL ZenKai Uni
++serif.italic.korean=NanumMyeongjo
++serif.italic.chinese-big5=AR PL UKai
++serif.italic.chinese-gb18030=AR PL UKai
+
+-serif.bolditalic.latin-1=DejaVu LGC Serif Bold Oblique
++serif.bolditalic.latin-1=DejaVu Serif Bold Italic
+ serif.bolditalic.japanese-x0208=Sazanami Mincho
+-serif.bolditalic.korean=Baekmuk Batang
+-serif.bolditalic.chinese-big5=AR PL ZenKai Uni
+-serif.bolditalic.chinese-gb18030=AR PL ZenKai Uni
++serif.bolditalic.korean=NanumMyeongjo Bold
++serif.bolditalic.chinese-big5=AR PL UKai
++serif.bolditalic.chinese-gb18030=AR PL UKai
+
+
+-monospaced.plain.latin-1=DejaVu LGC Sans Mono
++monospaced.plain.latin-1=DejaVu Sans Mono
+ monospaced.plain.japanese-x0208=Sazanami Gothic
+-monospaced.plain.korean=Baekmuk Gulim
+-monospaced.plain.chinese-big5=AR PL ShanHeiSun Uni
+-monospaced.plain.chinese-gb18030=AR PL ShanHeiSun Uni
++monospaced.plain.korean=NanumGothic
++monospaced.plain.chinese-big5=AR PL UMing
++monospaced.plain.chinese-gb18030=AR PL UMing
+
+-monospaced.bold.latin-1=DejaVu LGC Sans Mono Bold
++monospaced.bold.latin-1=DejaVu Sans Mono Bold
+ monospaced.bold.japanese-x0208=Sazanami Gothic
+-monospaced.bold.korean=Baekmuk Gulim
+-monospaced.bold.chinese-big5=AR PL ShanHeiSun Uni
+-monospaced.bold.chinese-gb18030=AR PL ShanHeiSun Uni
++monospaced.bold.korean=NanumGothic Bold
++monospaced.bold.chinese-big5=AR PL UMing
++monospaced.bold.chinese-gb18030=AR PL UMing
+
+-monospaced.italic.latin-1=DejaVu LGC Sans Mono Oblique
++monospaced.italic.latin-1=DejaVu Sans Mono Oblique
+ monospaced.italic.japanese-x0208=Sazanami Gothic
+-monospaced.italic.korean=Baekmuk Gulim
+-monospaced.italic.chinese-big5=AR PL ShanHeiSun Uni
+-monospaced.italic.chinese-gb18030=AR PL ShanHeiSun Uni
++monospaced.italic.korean=NanumGothic
++monospaced.italic.chinese-big5=AR PL UMing
++monospaced.italic.chinese-gb18030=AR PL UMing
+
+-monospaced.bolditalic.latin-1=DejaVu LGC Sans Mono Bold Oblique
++monospaced.bolditalic.latin-1=DejaVu Sans Mono Bold Oblique
+ monospaced.bolditalic.japanese-x0208=Sazanami Gothic
+-monospaced.bolditalic.korean=Baekmuk Gulim
+-monospaced.bolditalic.chinese-big5=AR PL ShanHeiSun Uni
+-monospaced.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni
++monospaced.bolditalic.korean=NanumGothic Bold
++monospaced.bolditalic.chinese-big5=AR PL UMing
++monospaced.bolditalic.chinese-gb18030=AR PL UMing
+
+
+-dialoginput.plain.latin-1=DejaVu LGC Sans Mono
++dialoginput.plain.latin-1=DejaVu Sans Mono
+ dialoginput.plain.japanese-x0208=Sazanami Gothic
+-dialoginput.plain.korean=Baekmuk Gulim
+-dialoginput.plain.chinese-big5=AR PL ShanHeiSun Uni
+-dialoginput.plain.chinese-gb18030=AR PL ShanHeiSun Uni
++dialoginput.plain.korean=NanumGothic
++dialoginput.plain.chinese-big5=AR PL UMing
++dialoginput.plain.chinese-gb18030=AR PL UMing
+
+-dialoginput.bold.latin-1=DejaVu LGC Sans Mono Bold
++dialoginput.bold.latin-1=DejaVu Sans Mono Bold
+ dialoginput.bold.japanese-x0208=Sazanami Gothic
+-dialoginput.bold.korean=Baekmuk Gulim
+-dialoginput.bold.chinese-big5=AR PL ShanHeiSun Uni
+-dialoginput.bold.chinese-gb18030=AR PL ShanHeiSun Uni
++dialoginput.bold.korean=NanumGothic Bold
++dialoginput.bold.chinese-big5=AR PL UMing
++dialoginput.bold.chinese-gb18030=AR PL UMing
+
+-dialoginput.italic.latin-1=DejaVu LGC Sans Mono Oblique
++dialoginput.italic.latin-1=DejaVu Sans Mono Oblique
+ dialoginput.italic.japanese-x0208=Sazanami Gothic
+-dialoginput.italic.korean=Baekmuk Gulim
+-dialoginput.italic.chinese-big5=AR PL ShanHeiSun Uni
+-dialoginput.italic.chinese-gb18030=AR PL ShanHeiSun Uni
++dialoginput.italic.korean=NanumGothic
++dialoginput.italic.chinese-big5=AR PL UMing
++dialoginput.italic.chinese-gb18030=AR PL UMing
+
+-dialoginput.bolditalic.latin-1=DejaVu LGC Sans Mono Bold Oblique
++dialoginput.bolditalic.latin-1=DejaVu Sans Mono Bold Oblique
+ dialoginput.bolditalic.japanese-x0208=Sazanami Gothic
+-dialoginput.bolditalic.korean=Baekmuk Gulim
+-dialoginput.bolditalic.chinese-big5=AR PL ShanHeiSun Uni
+-dialoginput.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni
++dialoginput.bolditalic.korean=NanumGothic Bold
++dialoginput.bolditalic.chinese-big5=AR PL UMing
++dialoginput.bolditalic.chinese-gb18030=AR PL UMing
+
+ # Search Sequences
+
+@@ -166,24 +166,27 @@
+
+ # Font File Names
+
+-filename.DejaVu_LGC_Sans=/usr/share/fonts/dejavu-lgc/DejaVuLGCSans.ttf
+-filename.DejaVu_LGC_Sans_Bold=/usr/share/fonts/dejavu-lgc/DejaVuLGCSans-Bold.ttf
+-filename.DejaVu_LGC_Sans_Oblique=/usr/share/fonts/dejavu-lgc/DejaVuLGCSans-Oblique.ttf
+-filename.DejaVu_LGC_Sans_Bold_Oblique=/usr/share/fonts/dejavu-lgc/DejaVuLGCSans-BoldOblique.ttf
++## FIXME: Should not hardcode /usr/local
++filename.DejaVu_Sans=/usr/local/lib/X11/fonts/dejavu/DejaVuSans.ttf
++filename.DejaVu_Sans_Bold=/usr/local/lib/X11/fonts/dejavu/DejaVuSans-Bold.ttf
++filename.DejaVu_Sans_Oblique=/usr/local/lib/X11/fonts/dejavu/DejaVuSans-Oblique.ttf
++filename.DejaVu_Sans_Bold_Oblique=/usr/local/lib/X11/fonts/dejavu/DejaVuSans-BoldOblique.ttf
+
+-filename.DejaVu_LGC_Sans_Mono=/usr/share/fonts/dejavu-lgc/DejaVuLGCSansMono.ttf
+-filename.DejaVu_LGC_Sans_Mono_Bold=/usr/share/fonts/dejavu-lgc/DejaVuLGCSansMono-Bold.ttf
+-filename.DejaVu_LGC_Sans_Mono_Oblique=/usr/share/fonts/dejavu-lgc/DejaVuLGCSansMono-Oblique.ttf
+-filename.DejaVu_LGC_Sans_Mono_Bold_Oblique=/usr/share/fonts/dejavu-lgc/DejaVuLGCSansMono-BoldOblique.ttf
++filename.DejaVu_Sans_Mono=/usr/local/lib/X11/fonts/dejavu/DejaVuSansMono.ttf
++filename.DejaVu_Sans_Mono_Bold=/usr/local/lib/X11/fonts/dejavu/DejaVuSansMono-Bold.ttf
++filename.DejaVu_Sans_Mono_Oblique=/usr/local/lib/X11/fonts/dejavu/DejaVuSansMono-Oblique.ttf
++filename.DejaVu_Sans_Mono_Bold_Oblique=/usr/local/lib/X11/fonts/dejavu/DejaVuSansMono-BoldOblique.ttf
+
+-filename.DejaVu_LGC_Serif=/usr/share/fonts/dejavu-lgc/DejaVuLGCSerif.ttf
+-filename.DejaVu_LGC_Serif_Bold=/usr/share/fonts/dejavu-lgc/DejaVuLGCSerif-Bold.ttf
+-filename.DejaVu_LGC_Serif_Oblique=/usr/share/fonts/dejavu-lgc/DejaVuLGCSerif-Oblique.ttf
+-filename.DejaVu_LGC_Serif_Bold_Oblique=/usr/share/fonts/dejavu-lgc/DejaVuLGCSerif-BoldOblique.ttf
++filename.DejaVu_Serif=/usr/local/lib/X11/fonts/dejavu/DejaVuSerif.ttf
++filename.DejaVu_Serif_Bold=/usr/local/lib/X11/fonts/dejavu/DejaVuSerif-Bold.ttf
++filename.DejaVu_Serif_Italic=/usr/local/lib/X11/fonts/dejavu/DejaVuSerif-Italic.ttf
++filename.DejaVu_Serif_Bold_Italic=/usr/local/lib/X11/fonts/dejavu/DejaVuSerif-BoldItalic.ttf
+
+-filename.Sazanami_Gothic=/usr/share/fonts/japanese/TrueType/sazanami-gothic.ttf
+-filename.Sazanami_Mincho=/usr/share/fonts/japanese/TrueType/sazanami-mincho.ttf
+-filename.AR_PL_ShanHeiSun_Uni=/usr/share/fonts/chinese/TrueType/uming.ttf
+-filename.AR_PL_ZenKai_Uni=/usr/share/fonts/chinese/TrueType/ukai.ttf
+-filename.Baekmuk_Gulim=/usr/share/fonts/korean/TrueType/gulim.ttf
+-filename.Baekmuk_Batang=/usr/share/fonts/korean/TrueType/batang.ttf
++filename.Sazanami_Gothic=/usr/local/share/font-sazanami/sazanami-gothic.ttf
++filename.Sazanami_Mincho=/usr/local/share/font-sazanami/sazanami-mincho.ttf
++filename.AR_PL_ShanHeiSun_Uni=/usr/local/share/fonts/TrueType/uming.ttc
++filename.AR_PL_ZenKai_Uni=/usr/local/share/fonts/TrueType/ukai.ttc
++filename.NanumGothic=/usr/local/lib/X11/fonts/nanum-ttf/NanumGothic.ttf
++filename.NanumGothic_Bold=/usr/local/lib/X11/fonts/nanum-ttf/NanumGothicBold.ttf
++filename.NanumMyeongjo=/usr/local/lib/X11/fonts/nanum-ttf/NanumMyeongjo.ttf
++filename.NanumMyeongjo_Bold=/usr/local/lib/X11/fonts/nanum-ttf/NanumMyeongjoBold.ttf
+--- ./jdk/src/solaris/classes/sun/net/PortConfig.java Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/solaris/classes/sun/net/PortConfig.java Wed Nov 05 12:14:24 2014 -0800
@@ -52,7 +52,7 @@
} else if (os.startsWith("SunOS")) {
defaultLower = 32768;
@@ -8556,9 +12534,9 @@
+ } else if (os.endsWith("BSD") || os.contains("OS X")) {
defaultLower = 49152;
defaultUpper = 65535;
- } else {
---- jdk/src/solaris/classes/sun/nio/ch/DefaultAsynchronousChannelProvider.java
-+++ jdk/src/solaris/classes/sun/nio/ch/DefaultAsynchronousChannelProvider.java
+ } else if (os.startsWith("AIX")) {
+--- ./jdk/src/solaris/classes/sun/nio/ch/DefaultAsynchronousChannelProvider.java Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/solaris/classes/sun/nio/ch/DefaultAsynchronousChannelProvider.java Wed Nov 05 12:14:24 2014 -0800
@@ -66,7 +66,7 @@
return createProvider("sun.nio.ch.SolarisAsynchronousChannelProvider");
if (osname.equals("Linux"))
@@ -8566,10 +12544,10 @@
- if (osname.contains("OS X"))
+ if (osname.endsWith("BSD") || osname.contains("OS X"))
return createProvider("sun.nio.ch.BsdAsynchronousChannelProvider");
- throw new InternalError("platform not recognized");
- }
---- jdk/src/solaris/classes/sun/nio/fs/BsdFileSystemProvider.java
-+++ jdk/src/solaris/classes/sun/nio/fs/BsdFileSystemProvider.java
+ if (osname.equals("AIX"))
+ return createProvider("sun.nio.ch.AixAsynchronousChannelProvider");
+--- ./jdk/src/solaris/classes/sun/nio/fs/BsdFileSystemProvider.java Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/solaris/classes/sun/nio/fs/BsdFileSystemProvider.java Wed Nov 05 12:14:24 2014 -0800
@@ -25,10 +25,14 @@
package sun.nio.fs;
@@ -8603,8 +12581,8 @@
+ new MagicFileTypeDetector());
+ }
}
---- jdk/src/solaris/classes/sun/nio/fs/DefaultFileSystemProvider.java
-+++ jdk/src/solaris/classes/sun/nio/fs/DefaultFileSystemProvider.java
+--- ./jdk/src/solaris/classes/sun/nio/fs/DefaultFileSystemProvider.java Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/solaris/classes/sun/nio/fs/DefaultFileSystemProvider.java Wed Nov 05 12:14:24 2014 -0800
@@ -61,6 +61,8 @@
return createProvider("sun.nio.fs.SolarisFileSystemProvider");
if (osname.equals("Linux"))
@@ -8613,10 +12591,10 @@
+ return createProvider("sun.nio.fs.BsdFileSystemProvider");
if (osname.contains("OS X"))
return createProvider("sun.nio.fs.MacOSXFileSystemProvider");
- throw new AssertionError("Platform not recognized");
---- jdk/src/solaris/classes/sun/print/UnixPrintServiceLookup.java
-+++ jdk/src/solaris/classes/sun/print/UnixPrintServiceLookup.java
-@@ -130,6 +130,7 @@
+ if (osname.equals("AIX"))
+--- ./jdk/src/solaris/classes/sun/print/UnixPrintServiceLookup.java Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/solaris/classes/sun/print/UnixPrintServiceLookup.java Wed Nov 05 12:14:24 2014 -0800
+@@ -161,6 +161,7 @@
static boolean isBSD() {
return (osname.equals("Linux") ||
@@ -8624,7 +12602,7 @@
osname.contains("OS X"));
}
-@@ -140,12 +141,12 @@
+@@ -175,12 +176,12 @@
static int cmdIndex = UNINITIALIZED;
String[] lpcFirstCom = {
@@ -8639,8 +12617,8 @@
"/usr/sbin/lpc status all | grep -E '^[ 0-9a-zA-Z_-]*@' | awk -F'@' '{print $1}' | sort"
};
---- jdk/src/solaris/classes/sun/tools/attach/BsdVirtualMachine.java
-+++ jdk/src/solaris/classes/sun/tools/attach/BsdVirtualMachine.java
+--- ./jdk/src/solaris/classes/sun/tools/attach/BsdVirtualMachine.java Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/solaris/classes/sun/tools/attach/BsdVirtualMachine.java Wed Nov 05 12:14:24 2014 -0800
@@ -266,7 +266,7 @@
try {
b = s.getBytes("UTF-8");
@@ -8650,8 +12628,8 @@
}
BsdVirtualMachine.write(fd, b, 0, b.length);
}
---- jdk/src/solaris/native/com/sun/media/sound/PLATFORM_API_SolarisOS_PCM.c
-+++ jdk/src/solaris/native/com/sun/media/sound/PLATFORM_API_SolarisOS_PCM.c
+--- ./jdk/src/solaris/native/com/sun/media/sound/PLATFORM_API_SolarisOS_PCM.c Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/solaris/native/com/sun/media/sound/PLATFORM_API_SolarisOS_PCM.c Wed Nov 05 12:14:24 2014 -0800
@@ -140,7 +140,7 @@
(float) ((int) sr->samp_rates[s]),
DAUDIO_PCM, /* encoding - let's only do PCM */
@@ -8661,8 +12639,8 @@
FALSE /* little endian */
#else
(bits[b] > 8)?TRUE:FALSE /* big endian */
---- jdk/src/solaris/native/common/jni_util_md.c
-+++ jdk/src/solaris/native/common/jni_util_md.c
+--- ./jdk/src/solaris/native/common/jni_util_md.c Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/solaris/native/common/jni_util_md.c Wed Nov 05 12:14:24 2014 -0800
@@ -28,6 +28,7 @@
#include "jni.h"
#include "jni_util.h"
@@ -8671,8 +12649,8 @@
jstring nativeNewStringPlatform(JNIEnv *env, const char *str) {
return NULL;
---- jdk/src/solaris/native/java/lang/java_props_md.c
-+++ jdk/src/solaris/native/java/lang/java_props_md.c
+--- ./jdk/src/solaris/native/java/lang/java_props_md.c Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/solaris/native/java/lang/java_props_md.c Wed Nov 05 12:14:24 2014 -0800
@@ -151,7 +151,7 @@
lc = setlocale(cat, NULL);
#endif
@@ -8707,8 +12685,8 @@
/* user properties */
{
---- jdk/src/solaris/native/java/net/Inet4AddressImpl.c
-+++ jdk/src/solaris/native/java/net/Inet4AddressImpl.c
+--- ./jdk/src/solaris/native/java/net/Inet4AddressImpl.c Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/solaris/native/java/net/Inet4AddressImpl.c Wed Nov 05 12:14:24 2014 -0800
@@ -36,20 +36,13 @@
#include <stdlib.h>
#include <ctype.h>
@@ -9027,8 +13005,8 @@
#define SET_NONBLOCKING(fd) { \
int flags = fcntl(fd, F_GETFL); \
flags |= O_NONBLOCK; \
---- jdk/src/solaris/native/java/net/Inet6AddressImpl.c
-+++ jdk/src/solaris/native/java/net/Inet6AddressImpl.c
+--- ./jdk/src/solaris/native/java/net/Inet6AddressImpl.c Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/solaris/native/java/net/Inet6AddressImpl.c Wed Nov 05 12:14:24 2014 -0800
@@ -33,7 +33,7 @@
#include <strings.h>
#include <stdlib.h>
@@ -9059,9 +13037,9 @@
/*
* If we're looking up the local machine, attempt to get the address
* from getifaddrs. This ensures we get an IPv6 address for the local
---- jdk/src/solaris/native/java/net/NetworkInterface.c
-+++ jdk/src/solaris/native/java/net/NetworkInterface.c
-@@ -60,14 +60,18 @@
+--- ./jdk/src/solaris/native/java/net/NetworkInterface.c Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/solaris/native/java/net/NetworkInterface.c Wed Nov 05 12:14:24 2014 -0800
+@@ -67,14 +67,18 @@
#include <sys/param.h>
#include <sys/ioctl.h>
#include <sys/sockio.h>
@@ -9082,9 +13060,9 @@
#include "jvm.h"
#include "jni_util.h"
---- jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c
-+++ jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c
-@@ -2176,7 +2176,7 @@
+--- ./jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c Wed Nov 05 12:14:24 2014 -0800
+@@ -2184,7 +2184,7 @@
}
}
#endif
@@ -9093,8 +13071,8 @@
if (family == AF_INET6 && index == 0) {
index = getDefaultScopeID(env);
}
---- jdk/src/solaris/native/java/net/net_util_md.c
-+++ jdk/src/solaris/native/java/net/net_util_md.c
+--- ./jdk/src/solaris/native/java/net/net_util_md.c Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/solaris/native/java/net/net_util_md.c Wed Nov 05 12:14:24 2014 -0800
@@ -87,7 +87,7 @@
void setDefaultScopeID(JNIEnv *env, struct sockaddr *him)
@@ -9104,19 +13082,19 @@
static jclass ni_class = NULL;
static jfieldID ni_defaultIndexID;
if (ni_class == NULL) {
---- jdk/src/solaris/native/java/net/net_util_md.h
-+++ jdk/src/solaris/native/java/net/net_util_md.h
-@@ -37,7 +37,7 @@
- #endif
-
-
--#if defined(__linux__) || defined(MACOSX)
-+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
+--- ./jdk/src/solaris/native/java/net/net_util_md.h Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/solaris/native/java/net/net_util_md.h Wed Nov 05 12:14:24 2014 -0800
+@@ -47,7 +47,7 @@
+ close subroutine does not return until the select call returns.
+ ...
+ */
+-#if defined(__linux__) || defined(MACOSX) || defined (_AIX)
++#if defined(__linux__) || defined(_ALLBSD_SOURCE) || defined (_AIX)
extern int NET_Timeout(int s, long timeout);
extern int NET_Read(int s, void* buf, size_t len);
extern int NET_RecvFrom(int s, void *buf, int len, unsigned int flags,
---- jdk/src/solaris/native/java/util/TimeZone_md.c
-+++ jdk/src/solaris/native/java/util/TimeZone_md.c
+--- ./jdk/src/solaris/native/java/util/TimeZone_md.c Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/solaris/native/java/util/TimeZone_md.c Wed Nov 05 12:14:24 2014 -0800
@@ -52,7 +52,11 @@
#if defined(__linux__) || defined(_ALLBSD_SOURCE)
@@ -9129,16 +13107,16 @@
static const char *ZONEINFO_DIR = "/usr/share/zoneinfo";
static const char *DEFAULT_ZONEINFO_FILE = "/etc/localtime";
#else
-@@ -123,7 +127,7 @@
+@@ -126,7 +130,7 @@
return NULL;
}
--#if defined(__linux__) || defined(MACOSX) || (defined(__solaris__) \
-+#if defined(__linux__) || defined(_ALLBSD_SOURCE) || (defined(__solaris__) \
+-#if defined(_AIX) || defined(__linux__) || defined(MACOSX) || (defined(__solaris__) \
++#if defined(_AIX) || defined(__linux__) || defined(_ALLBSD_SOURCE) || (defined(__solaris__) \
&& (defined(_POSIX_PTHREAD_SEMANTICS) || defined(_LP64)))
while (readdir_r(dirp, entry, &dp) == 0 && dp != NULL) {
#else
-@@ -211,7 +215,7 @@
+@@ -214,7 +218,7 @@
return tz;
}
@@ -9147,16 +13125,16 @@
/*
* Performs Linux specific mapping and returns a zone ID
-@@ -227,7 +231,7 @@
+@@ -230,7 +234,7 @@
char *buf;
size_t size;
-#ifdef __linux__
-+#if defined(__linux__) || defined(__FreeBSD__)
++#if defined(__linux__) || defined(_ALLBSD_SOURCE)
/*
* Try reading the /etc/timezone file for Debian distros. There's
* no spec of the file format available. This parsing assumes that
-@@ -251,7 +255,7 @@
+@@ -254,7 +258,7 @@
return tz;
}
}
@@ -9165,7 +13143,7 @@
/*
* Next, try /etc/localtime to find the zone ID.
-@@ -677,7 +681,7 @@
+@@ -719,7 +723,7 @@
* Returns a GMT-offset-based zone ID. (e.g., "GMT-08:00")
*/
@@ -9174,7 +13152,7 @@
char *
getGMTOffsetID()
-@@ -693,10 +697,10 @@
+@@ -735,10 +739,10 @@
local_tm = localtime(&clock);
if (local_tm->tm_gmtoff >= 0) {
offset = (time_t) local_tm->tm_gmtoff;
@@ -9187,15 +13165,23 @@
}
sprintf(buf, (const char *)"GMT%c%02d:%02d",
sign, (int)(offset/3600), (int)((offset%3600)/60));
-@@ -738,4 +742,4 @@
+@@ -780,7 +784,7 @@
sign, (int)(offset/3600), (int)((offset%3600)/60));
return strdup(buf);
}
-#endif /* MACOSX */
+#endif /* _ALLBSD_SOURCE */
---- jdk/src/solaris/native/sun/awt/awt_Font.c
-+++ jdk/src/solaris/native/sun/awt/awt_Font.c
-@@ -260,7 +260,7 @@
+
+ #ifdef _AIX
+ static char *
+@@ -878,4 +882,3 @@
+ return javatz;
+ }
+ #endif
+-
+--- ./jdk/src/solaris/native/sun/awt/awt_Font.c Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/solaris/native/sun/awt/awt_Font.c Wed Nov 05 12:14:24 2014 -0800
+@@ -255,7 +255,7 @@
if (strcmp(style, "regular") == 0) {
altstyle = "roman";
}
@@ -9204,8 +13190,8 @@
if (!strcmp(family, "lucidasans")) {
family = "lucida";
}
---- jdk/src/solaris/native/sun/awt/awt_GraphicsEnv.c
-+++ jdk/src/solaris/native/sun/awt/awt_GraphicsEnv.c
+--- ./jdk/src/solaris/native/sun/awt/awt_GraphicsEnv.c Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/solaris/native/sun/awt/awt_GraphicsEnv.c Wed Nov 05 12:14:24 2014 -0800
@@ -120,7 +120,7 @@
*/
@@ -9215,7 +13201,7 @@
typedef struct {
int screen_number;
short x_org;
-@@ -423,20 +423,15 @@
+@@ -426,20 +426,15 @@
if (XQueryExtension(awt_display, "RENDER",
&major_opcode, &first_event, &first_error))
{
@@ -9240,7 +13226,7 @@
if (xrenderLibHandle == NULL) {
xrenderLibHandle = dlopen("/usr/sfw/lib/libXrender.so.1",
RTLD_LAZY | RTLD_GLOBAL);
-@@ -580,7 +575,7 @@
+@@ -583,7 +578,7 @@
}
#ifndef HEADLESS
@@ -9249,7 +13235,7 @@
static void xinerama_init_linux()
{
void* libHandle = NULL;
-@@ -631,7 +626,7 @@
+@@ -634,7 +629,7 @@
}
}
#endif
@@ -9258,7 +13244,7 @@
static void xinerama_init_solaris()
{
void* libHandle = NULL;
-@@ -691,11 +686,11 @@
+@@ -694,11 +689,11 @@
}
DTRACE_PRINTLN("Xinerama extension is available");
@@ -9272,7 +13258,7 @@
}
#endif /* HEADLESS */
-@@ -1589,7 +1584,7 @@
+@@ -1592,7 +1587,7 @@
{
jobject point = NULL;
#ifndef HEADLESS /* return NULL in HEADLESS, Linux */
@@ -9281,7 +13267,7 @@
int x,y;
AWT_LOCK();
-@@ -1602,7 +1597,7 @@
+@@ -1605,7 +1600,7 @@
DTRACE_PRINTLN("unable to call XineramaSolarisCenterFunc: symbol is null");
}
AWT_FLUSH_UNLOCK();
@@ -9290,8 +13276,8 @@
#endif /* HEADLESS */
return point;
}
---- jdk/src/solaris/native/sun/awt/awt_InputMethod.c
-+++ jdk/src/solaris/native/sun/awt/awt_InputMethod.c
+--- ./jdk/src/solaris/native/sun/awt/awt_InputMethod.c Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/solaris/native/sun/awt/awt_InputMethod.c Wed Nov 05 12:14:24 2014 -0800
@@ -52,7 +52,7 @@
XIMPreeditDrawCallbackStruct *);
static void PreeditCaretCallback(XIC, XPointer,
@@ -9336,7 +13322,7 @@
StatusWindow *statusWindow; /* our own status window */
#endif
char *lookup_buf; /* buffer used for XmbLookupString */
-@@ -369,7 +369,7 @@
+@@ -370,7 +370,7 @@
static void
freeX11InputMethodData(JNIEnv *env, X11InputMethodData *pX11IMData)
{
@@ -9345,7 +13331,7 @@
if (pX11IMData->statusWindow != NULL){
StatusWindow *sw = pX11IMData->statusWindow;
XFreeGC(awt_display, sw->lightGC);
-@@ -472,7 +472,7 @@
+@@ -473,7 +473,7 @@
pX11IMData = getX11InputMethodData(env, currentX11InputMethodInstance);
if (pX11IMData == NULL) {
@@ -9354,7 +13340,7 @@
return False;
#else
return result;
-@@ -480,7 +480,7 @@
+@@ -481,7 +481,7 @@
}
if ((ic = pX11IMData->current_ic) == (XIC)0){
@@ -9363,7 +13349,7 @@
return False;
#else
return result;
-@@ -572,7 +572,7 @@
+@@ -573,7 +573,7 @@
return result;
}
@@ -9372,7 +13358,7 @@
static StatusWindow *createStatusWindow(
Window parent) {
StatusWindow *statusWindow;
-@@ -885,7 +885,7 @@
+@@ -886,7 +886,7 @@
}
}
}
@@ -9381,7 +13367,7 @@
/*
* Creates two XICs, one for active clients and the other for passive
* clients. All information on those XICs are stored in the
-@@ -929,7 +929,7 @@
+@@ -930,7 +930,7 @@
return FALSE ;
}
@@ -9390,7 +13376,7 @@
on_the_spot_styles |= XIMStatusNothing;
/*kinput does not support XIMPreeditCallbacks and XIMStatusArea
-@@ -942,9 +942,9 @@
+@@ -943,9 +943,9 @@
break;
}
}
@@ -9402,7 +13388,7 @@
for (i = 0; i < im_styles->count_styles; i++) {
active_styles |= im_styles->supported_styles[i] & on_the_spot_styles;
-@@ -992,7 +992,7 @@
+@@ -993,7 +993,7 @@
NULL);
if (preedit == (XVaNestedList)NULL)
goto err;
@@ -9411,7 +13397,7 @@
/*always try XIMStatusCallbacks for active client...*/
{
status = (XVaNestedList)XVaCreateNestedList(0,
-@@ -1014,7 +1014,7 @@
+@@ -1015,7 +1015,7 @@
XFree((void *)status);
XFree((void *)preedit);
}
@@ -9420,7 +13406,7 @@
pX11IMData->ic_active = XCreateIC(X11im,
XNClientWindow, w,
XNFocusWindow, w,
-@@ -1022,7 +1022,7 @@
+@@ -1023,7 +1023,7 @@
XNPreeditAttributes, preedit,
NULL);
XFree((void *)preedit);
@@ -9429,7 +13415,7 @@
pX11IMData->ic_passive = XCreateIC(X11im,
XNClientWindow, w,
XNFocusWindow, w,
-@@ -1181,7 +1181,7 @@
+@@ -1189,7 +1189,7 @@
}
@@ -9438,7 +13424,7 @@
static void
StatusStartCallback(XIC ic, XPointer client_data, XPointer call_data)
{
-@@ -1249,7 +1249,7 @@
+@@ -1257,7 +1257,7 @@
finally:
AWT_UNLOCK();
}
@@ -9447,7 +13433,7 @@
static void CommitStringCallback(XIC ic, XPointer client_data, XPointer call_data) {
JNIEnv *env = GetJNIEnv();
-@@ -1346,14 +1346,14 @@
+@@ -1354,14 +1354,14 @@
/* Use IMInstantiate call back only on Linux, as there is a bug in Solaris
(4768335)
*/
@@ -9464,7 +13450,7 @@
}
#endif
-@@ -1388,9 +1388,9 @@
+@@ -1396,9 +1396,9 @@
globalRef = (*env)->NewGlobalRef(env, this);
pX11IMData->x11inputmethod = globalRef;
@@ -9476,7 +13462,7 @@
pX11IMData->lookup_buf = 0;
pX11IMData->lookup_buf_len = 0;
-@@ -1437,14 +1437,14 @@
+@@ -1448,14 +1448,14 @@
setXICFocus(pX11IMData->current_ic, req);
currentX11InputMethodInstance = pX11IMData->x11inputmethod;
currentFocusWindow = w;
@@ -9493,7 +13479,7 @@
onoffStatusWindow(pX11IMData, 0, False);
if (pX11IMData->current_ic != NULL)
#endif
-@@ -1461,7 +1461,7 @@
+@@ -1472,7 +1472,7 @@
Java_sun_awt_X11InputMethod_turnoffStatusWindow(JNIEnv *env,
jobject this)
{
@@ -9502,7 +13488,7 @@
X11InputMethodData *pX11IMData;
StatusWindow *statusWindow;
-@@ -1629,7 +1629,7 @@
+@@ -1640,7 +1640,7 @@
JNIEXPORT void JNICALL Java_sun_awt_X11_XInputMethod_adjustStatusWindow
(JNIEnv *env, jobject this, jlong window)
{
@@ -9511,8 +13497,8 @@
AWT_LOCK();
adjustStatusWindow(window);
AWT_UNLOCK();
---- jdk/src/solaris/native/sun/awt/awt_Robot.c
-+++ jdk/src/solaris/native/sun/awt/awt_Robot.c
+--- ./jdk/src/solaris/native/sun/awt/awt_Robot.c Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/solaris/native/sun/awt/awt_Robot.c Wed Nov 05 12:14:24 2014 -0800
@@ -45,7 +45,7 @@
#include "wsutils.h"
#include "list.h"
@@ -9522,8 +13508,8 @@
#include <sys/socket.h>
#endif
---- jdk/src/solaris/native/sun/awt/extutil.h
-+++ jdk/src/solaris/native/sun/awt/extutil.h
+--- ./jdk/src/solaris/native/sun/awt/extutil.h Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/solaris/native/sun/awt/extutil.h Wed Nov 05 12:14:24 2014 -0800
@@ -58,7 +58,7 @@
*/
/* $XFree86: xc/include/extensions/extutil.h,v 1.5 2001/01/17 17:53:20 dawes Exp $ */
@@ -9539,8 +13525,8 @@
-#endif /* __linux__ || MACOSX */
+#endif /* __linux__ || _ALLBSD_SOURCE */
---- jdk/src/solaris/native/sun/awt/fontpath.c
-+++ jdk/src/solaris/native/sun/awt/fontpath.c
+--- ./jdk/src/solaris/native/sun/awt/fontpath.c Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/solaris/native/sun/awt/fontpath.c Wed Nov 05 12:14:24 2014 -0800
@@ -23,9 +23,9 @@
* questions.
*/
@@ -9553,19 +13539,18 @@
#include <stdio.h>
#include <stdlib.h>
#include <strings.h>
-@@ -64,7 +64,7 @@
-
- #define MAXFDIRS 512 /* Max number of directories that contain fonts */
-
--#if !defined(__linux__)
-+#if !defined(__linux__) && !defined(_ALLBSD_SOURCE)
- /*
- * This can be set in the makefile to "/usr/X11" if so desired.
- */
-@@ -114,6 +114,21 @@
+@@ -113,7 +113,6 @@
+ OPENWINHOMELIB "locale/ar/X11/fonts/Type1",
+ NULL, /* terminates the list */
+ };
+-
+ #elif defined( __linux__)
+ /* All the known interesting locations we have discovered on
+ * various flavors of Linux
+@@ -140,6 +139,20 @@
+ "/usr/lpp/X11/lib/X11/fonts/TrueType", /* from X11.fnt.ucs.ttf */
NULL, /* terminates the list */
};
-
+#elif defined(_ALLBSD_SOURCE)
+static char *fullBSDFontPath[] = {
+ PACKAGE_PATH "/lib/X11/fonts/TrueType",
@@ -9580,11 +13565,10 @@
+ PACKAGE_PATH "/share/fonts/Type1",
+ NULL, /* terminates the list */
+};
-+
- #else /* __linux */
- /* All the known interesting locations we have discovered on
- * various flavors of Linux
-@@ -370,7 +385,7 @@
+ #endif
+
+ static char **getFontConfigLocations();
+@@ -381,7 +394,7 @@
#endif /* !HEADLESS */
@@ -9593,16 +13577,16 @@
/* from awt_LoadLibrary.c */
JNIEXPORT jboolean JNICALL AWTIsHeadless();
#endif
-@@ -497,6 +512,8 @@
-
- #if defined(__linux__)
- knowndirs = fullLinuxFontPath;
+@@ -512,6 +525,8 @@
+ knowndirs = fullSolarisFontPath;
+ #elif defined(_AIX)
+ knowndirs = fullAixFontPath;
+#elif defined(_ALLBSD_SOURCE)
+ knowndirs = fullBSDFontPath;
- #else /* IF SOLARIS */
- knowndirs = fullSolarisFontPath;
#endif
-@@ -507,8 +524,8 @@
+ /* REMIND: this code requires to be executed when the GraphicsEnvironment
+ * is already initialised. That is always true, but if it were not so,
+@@ -519,8 +534,8 @@
* be initialised.
*/
#ifndef HEADLESS
@@ -9613,7 +13597,7 @@
if (!AWTIsHeadless()) { /* .. so need to call a function to check */
#endif
/* Using the X11 font path to locate font files is now a fallback
-@@ -523,7 +540,7 @@
+@@ -535,7 +550,7 @@
x11dirs = getX11FontPath();
}
AWT_UNLOCK();
@@ -9622,17 +13606,17 @@
}
#endif
#endif /* !HEADLESS */
-@@ -1203,7 +1220,7 @@
+@@ -1230,7 +1245,7 @@
*/
if (fontformat != NULL
&& (strcmp((char*)fontformat, "TrueType") != 0)
--#ifdef __linux__
-+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
+-#if defined(__linux__) || defined(_AIX)
++#if defined(__linux__) || defined(_AIX) || defined(_ALLBSD_SOURCE)
&& (strcmp((char*)fontformat, "Type 1") != 0)
#endif
) {
---- jdk/src/solaris/native/sun/java2d/j2d_md.h
-+++ jdk/src/solaris/native/sun/java2d/j2d_md.h
+--- ./jdk/src/solaris/native/sun/java2d/j2d_md.h Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/solaris/native/sun/java2d/j2d_md.h Wed Nov 05 12:14:24 2014 -0800
@@ -28,11 +28,11 @@
#include <sys/types.h>
@@ -9648,8 +13632,8 @@
typedef unsigned char jubyte;
typedef unsigned short jushort;
---- jdk/src/solaris/native/sun/java2d/loops/mlib_ImageZoom_NN.c
-+++ jdk/src/solaris/native/sun/java2d/loops/mlib_ImageZoom_NN.c
+--- ./jdk/src/solaris/native/sun/java2d/loops/mlib_ImageZoom_NN.c Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/solaris/native/sun/java2d/loops/mlib_ImageZoom_NN.c Wed Nov 05 12:14:24 2014 -0800
@@ -63,9 +63,6 @@
* MLIB_EDGE_SRC_PADDED
*/
@@ -9754,8 +13738,8 @@
LOGIC(da[0], dtmp, dtmp1, |);
}
else { /* aligned */
---- jdk/src/solaris/native/sun/java2d/loops/vis_FuncArray.c
-+++ jdk/src/solaris/native/sun/java2d/loops/vis_FuncArray.c
+--- ./jdk/src/solaris/native/sun/java2d/loops/vis_FuncArray.c Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/solaris/native/sun/java2d/loops/vis_FuncArray.c Wed Nov 05 12:14:24 2014 -0800
@@ -804,7 +804,7 @@
static int initialized;
static int usevis = JNI_TRUE;
@@ -9765,8 +13749,8 @@
# define ULTRA_CHIP "sparc64"
#else
# define ULTRA_CHIP "sun4u"
---- jdk/src/solaris/native/sun/management/OperatingSystemImpl.c
-+++ jdk/src/solaris/native/sun/management/OperatingSystemImpl.c
+--- ./jdk/src/solaris/native/sun/management/OperatingSystemImpl.c Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/solaris/native/sun/management/OperatingSystemImpl.c Wed Nov 05 12:14:24 2014 -0800
@@ -56,6 +56,9 @@
#include <limits.h>
#include <stdlib.h>
@@ -9775,9 +13759,9 @@
+#include <vm/vm_param.h>
+#endif
- static jlong page_size = 0;
-
-@@ -164,6 +167,25 @@
+ #if defined(_AIX)
+ #include <libperfstat.h>
+@@ -168,6 +171,25 @@
throw_internal_error(env, "sysctlbyname failed");
}
return available ? (jlong)vmusage.xsu_avail : (jlong)vmusage.xsu_total;
@@ -9803,7 +13787,7 @@
#else /* _ALLBSD_SOURCE */
/*
* XXXBSD: there's no way available to get swap info in
-@@ -239,11 +261,30 @@
+@@ -243,11 +265,30 @@
throw_internal_error(env, "task_info failed");
}
return t_info.virtual_size;
@@ -9836,7 +13820,7 @@
return (64 * MB);
#endif
}
-@@ -320,11 +361,27 @@
+@@ -324,11 +365,27 @@
return -1;
}
return (jlong)vm_stats.free_count * page_size;
@@ -9864,9 +13848,9 @@
- // throw_internal_error(env, "unimplemented in FreeBSD")
+ // throw_internal_error(env, "unimplemented in BSD")
return (128 * MB);
- #else // solaris / linux
- jlong num_avail_physical_pages = sysconf(_SC_AVPHYS_PAGES);
-@@ -336,13 +393,19 @@
+ #elif defined(_AIX)
+ perfstat_memory_total_t memory_info;
+@@ -346,13 +403,19 @@
Java_sun_management_OperatingSystemImpl_getTotalPhysicalMemorySize
(JNIEnv *env, jobject mbean)
{
@@ -9887,7 +13871,7 @@
rlen = sizeof(result);
if (sysctl(mib, 2, &result, &rlen, NULL, 0) != 0) {
throw_internal_error(env, "sysctl failed");
-@@ -356,6 +419,11 @@
+@@ -372,6 +435,11 @@
}
@@ -9899,7 +13883,7 @@
JNIEXPORT jlong JNICALL
Java_sun_management_OperatingSystemImpl_getOpenFileDescriptorCount
-@@ -405,21 +473,15 @@
+@@ -421,12 +489,6 @@
free(fds);
return nfiles;
@@ -9912,70 +13896,17 @@
#else /* solaris/linux */
DIR *dirp;
struct dirent dbuf;
- struct dirent* dentp;
- jlong fds = 0;
+@@ -444,7 +506,7 @@
-- dirp = opendir("/proc/self/fd");
-+ dirp = opendir(FD_DIR);
+ dirp = opendir(FD_DIR);
if (dirp == NULL) {
- throw_internal_error(env, "Unable to open directory /proc/self/fd");
+ throw_internal_error(env, "Unable to open directory " FD_DIR);
return -1;
}
---- jdk/src/solaris/native/sun/nio/ch/NativeThread.c
-+++ jdk/src/solaris/native/sun/nio/ch/NativeThread.c
-@@ -33,12 +33,20 @@
- #include "nio_util.h"
-
-
--#ifdef __linux__
-+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
-+#if defined(__linux__)
- #include <pthread.h>
- #include <sys/signal.h>
-
- /* Also defined in src/solaris/native/java/net/linux_close.c */
- #define INTERRUPT_SIGNAL (__SIGRTMAX - 2)
-+#else
-+#include <pthread.h>
-+#include <signal.h>
-+
-+/* Also defined in src/solaris/native/java/net/bsd_close.c */
-+#define INTERRUPT_SIGNAL SIGIO
-+#endif
-
- static void
- nullHandler(int sig)
-@@ -51,7 +59,7 @@
- JNIEXPORT void JNICALL
- Java_sun_nio_ch_NativeThread_init(JNIEnv *env, jclass cl)
- {
--#ifdef __linux__
-+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
-
- /* Install the null handler for INTERRUPT_SIGNAL. This might overwrite the
- * handler previously installed by java/net/linux_close.c, but that's okay
-@@ -74,7 +82,7 @@
- JNIEXPORT jlong JNICALL
- Java_sun_nio_ch_NativeThread_current(JNIEnv *env, jclass cl)
- {
--#ifdef __linux__
-+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
- return (long)pthread_self();
- #else
- return -1;
-@@ -84,7 +92,7 @@
- JNIEXPORT void JNICALL
- Java_sun_nio_ch_NativeThread_signal(JNIEnv *env, jclass cl, jlong thread)
- {
--#ifdef __linux__
-+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
- if (pthread_kill((pthread_t)thread, INTERRUPT_SIGNAL))
- JNU_ThrowIOExceptionWithLastError(env, "Thread signal failed");
- #endif
---- jdk/src/solaris/native/sun/nio/ch/sctp/Sctp.h
-+++ jdk/src/solaris/native/sun/nio/ch/sctp/Sctp.h
+--- ./jdk/src/solaris/native/sun/nio/ch/sctp/Sctp.h Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/solaris/native/sun/nio/ch/sctp/Sctp.h Wed Nov 05 12:14:24 2014 -0800
@@ -67,7 +67,7 @@
@@ -10024,8 +13955,8 @@
jboolean loadSocketExtensionFuncs(JNIEnv* env);
#endif /* !SUN_NIO_CH_SCTP_H */
---- jdk/src/solaris/native/sun/nio/ch/sctp/SctpNet.c
-+++ jdk/src/solaris/native/sun/nio/ch/sctp/SctpNet.c
+--- ./jdk/src/solaris/native/sun/nio/ch/sctp/SctpNet.c Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/solaris/native/sun/nio/ch/sctp/SctpNet.c Wed Nov 05 12:14:24 2014 -0800
@@ -58,6 +58,7 @@
*/
jboolean loadSocketExtensionFuncs
@@ -10042,8 +13973,8 @@
funcsLoaded = JNI_TRUE;
return JNI_TRUE;
---- jdk/src/solaris/native/sun/nio/fs/MagicFileTypeDetector.c
-+++ jdk/src/solaris/native/sun/nio/fs/MagicFileTypeDetector.c
+--- ./jdk/src/solaris/native/sun/nio/fs/MagicFileTypeDetector.c Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/solaris/native/sun/nio/fs/MagicFileTypeDetector.c Wed Nov 05 12:14:24 2014 -0800
@@ -31,6 +31,12 @@
#include <dlfcn.h>
#include <string.h>
@@ -10066,8 +13997,8 @@
if (magic_handle == NULL) {
return JNI_FALSE;
}
---- jdk/src/solaris/native/sun/tools/attach/BsdVirtualMachine.c
-+++ jdk/src/solaris/native/sun/tools/attach/BsdVirtualMachine.c
+--- ./jdk/src/solaris/native/sun/tools/attach/BsdVirtualMachine.c Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/solaris/native/sun/tools/attach/BsdVirtualMachine.c Wed Nov 05 12:14:24 2014 -0800
@@ -37,7 +37,9 @@
#include <sys/types.h>
#include <sys/socket.h>
@@ -10078,8 +14009,8 @@
#include <sys/un.h>
#include <fcntl.h>
---- jdk/src/solaris/native/sun/xawt/XWindow.c
-+++ jdk/src/solaris/native/sun/xawt/XWindow.c
+--- ./jdk/src/solaris/native/sun/xawt/XWindow.c Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/solaris/native/sun/xawt/XWindow.c Wed Nov 05 12:14:24 2014 -0800
@@ -886,7 +886,7 @@
{
KeySym originalKeysym = *keysym;
@@ -10089,8 +14020,8 @@
/* The following code on Linux will cause the keypad keys
* not to echo on JTextField when the NumLock is on. The
* keysyms will be 0, because the last parameter 2 is not defined.
---- jdk/src/windows/native/com/sun/media/sound/PLATFORM_API_WinOS_DirectSound.cpp
-+++ jdk/src/windows/native/com/sun/media/sound/PLATFORM_API_WinOS_DirectSound.cpp
+--- ./jdk/src/windows/native/com/sun/media/sound/PLATFORM_API_WinOS_DirectSound.cpp Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/windows/native/com/sun/media/sound/PLATFORM_API_WinOS_DirectSound.cpp Wed Nov 05 12:14:24 2014 -0800
@@ -308,7 +308,7 @@
DAUDIO_PCM,
(bitsArray[bitIndex]==8)?FALSE:TRUE, /* signed */
@@ -10109,45 +14040,27 @@
isBigEndian
#else
!isBigEndian
---- make/Main.gmk
-+++ make/Main.gmk
-@@ -58,7 +58,11 @@
-
- # Setup number of jobs to use. -jN is unfortunately not available for us to parse from the command line,
- # hence this workaround.
-+ifdef JOBS
-+ifneq ($(JOBS),0)
- MAKE_ARGS:=$(MAKE_ARGS) -j$(JOBS)
-+endif
-+endif
-
- ### Main targets
-
---- make/common/MakeBase.gmk
-+++ make/common/MakeBase.gmk
-@@ -365,8 +365,8 @@
-
- # This is to be called by all SetupFoo macros
- define LogSetupMacroEntry
-- $(if $(27),$(error Internal makefile error: Too many arguments to LogSetupMacroEntry, please update MakeBase.gmk))
-- $(if $(findstring $(LOG_LEVEL),debug trace), $(info $1 $(foreach i,2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26,$(if $($i),$(NEWLINE) $(strip [$i] $($i))))))
-+ $(if $(30),$(error Internal makefile error: Too many arguments to LogSetupMacroEntry, please update MakeBase.gmk))
-+ $(if $(findstring $(LOG_LEVEL),debug trace), $(info $1 $(foreach i,2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29,$(if $($i),$(NEWLINE) $(strip [$i] $($i))))))
- endef
-
- # Make directory without forking mkdir if not needed
---- make/common/NativeCompilation.gmk
-+++ make/common/NativeCompilation.gmk
-@@ -151,9 +151,9 @@
- # CC the compiler to use, default is $(CC)
- # LDEXE the linker to use for linking executables, default is $(LDEXE)
- # OPTIMIZATION sets optimization level to NONE, LOW, HIGH, HIGHEST
-- $(foreach i,2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26, $(if $($i),$1_$(strip $($i)))$(NEWLINE))
-- $(call LogSetupMacroEntry,SetupNativeCompilation($1),$2,$3,$4,$5,$6,$7,$8,$9,$(10),$(11),$(12),$(13),$(14),$(15),$(16),$(17),$(18),$(19),$(20),$(21),$(22),$(23),$(24),$(25),$(26))
-- $(if $(27),$(error Internal makefile error: Too many arguments to SetupNativeCompilation, please update NativeCompilation.gmk))
-+ $(foreach i,2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29, $(if $($i),$1_$(strip $($i)))$(NEWLINE))
-+ $(call LogSetupMacroEntry,SetupNativeCompilation($1),$2,$3,$4,$5,$6,$7,$8,$9,$(10),$(11),$(12),$(13),$(14),$(15),$(16),$(17),$(18),$(19),$(20),$(21),$(22),$(23),$(24),$(25),$(26),$(27),$(28),$(29))
-+ $(if $(30),$(error Internal makefile error: Too many arguments to SetupNativeCompilation, please update NativeCompilation.gmk))
-
- ifneq (,$$($1_BIN))
- $$(error BIN has been replaced with OBJECT_DIR)
+--- ./jdk/src/windows/native/sun/windows/awt_Component.cpp Tue Sep 09 12:00:58 2014 -0700
++++ ./jdk/src/windows/native/sun/windows/awt_Component.cpp Wed Nov 05 12:14:24 2014 -0800
+@@ -3960,7 +3960,6 @@
+ DASSERT(stringCls);
+ CHECK_NULL(stringCls);
+ clauseReading = env->NewObjectArray(cClause, stringCls, NULL);
+- env->DeleteLocalRef(stringCls);
+ DASSERT(clauseReading);
+ CHECK_NULL(clauseReading);
+ for (int i=0; i<cClause; i++) env->SetObjectArrayElement(clauseReading, i, rgClauseReading[i]);
+--- ./langtools/.hgtags Mon Sep 08 12:38:00 2014 -0700
++++ ./langtools/.hgtags Wed Nov 05 12:14:12 2014 -0800
+@@ -329,3 +329,4 @@
+ a340d68b020585cad7aa6e38d1aafb19ad0e4e07 jdk8u25-b14
+ 6e0c19cd42d7c4d307bea26840ee831cbd14e2fc jdk8u25-b15
+ 7fa6fa7cc204de988e224c6f8f75e62128fa84cd jdk8u25-b16
++53ca196be1ae098466976c017b166d4ce180c36f jdk8u25-b17
+--- ./nashorn/.hgtags Mon Sep 08 12:38:15 2014 -0700
++++ ./nashorn/.hgtags Wed Nov 05 12:14:13 2014 -0800
+@@ -317,3 +317,4 @@
+ 6a93467eaa36f732b84ecd463e046c4066fef40c jdk8u25-b14
+ 71e8403a2f8279315419adf5f4e9d6b232b6835c jdk8u25-b15
+ 1500138ce513600457be6bfa10979ecce6515aa6 jdk8u25-b16
++4b9cc65dd24d398c4f921c0beccfb8caeaaaf584 jdk8u25-b17