Merge jdk-9+95
authorduke
Wed, 05 Jul 2017 21:04:26 +0200
changeset 34096 5ac6287ec71a
parent 34095 b3d5141d1142 (diff)
parent 33924 9dcddcfb3855 (current diff)
child 34097 2d5f186969ce
child 34098 6844225f48e9
child 34120 313fb07f49a6
child 34124 b0eef1f629f0
child 34319 9d6dd3c5ca23
child 34322 6d253e35a68b
child 34389 63708161c21b
child 34442 9b37c8a452b5
child 34444 89f3140bd3ce
child 34456 84eaea8d0574
child 34460 8042a0a66aee
child 34462 ce5b18ce2ed5
child 34466 b7db4226c36e
child 34468 97117dc89b8f
child 34471 bb836644836b
child 34478 ded7db333ff1
Merge
--- a/.hgtags-top-repo	Wed Jul 05 21:02:33 2017 +0200
+++ b/.hgtags-top-repo	Wed Jul 05 21:04:26 2017 +0200
@@ -336,3 +336,4 @@
 122142a185381ce5cea959bf13b923d8cc333628 jdk9-b91
 106c06398f7ab330eef9e335fbd3a5a8ead23b77 jdk9-b92
 331fda57dfd323c61804ba0472776790de572937 jdk9-b93
+349488425abcaf3ff62f580007860b4b56875d10 jdk9-b94
--- a/common/autoconf/boot-jdk.m4	Wed Jul 05 21:02:33 2017 +0200
+++ b/common/autoconf/boot-jdk.m4	Wed Jul 05 21:04:26 2017 +0200
@@ -77,7 +77,7 @@
           BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | head -n 1`
 
           # Extra M4 quote needed to protect [] in grep expression.
-          [FOUND_CORRECT_VERSION=`echo $BOOT_JDK_VERSION | grep  '\"1\.[89]\.'`]
+          [FOUND_CORRECT_VERSION=`$ECHO $BOOT_JDK_VERSION | $EGREP '\"9([\.+-].*)?\"|(1\.[89]\.)'`]
           if test "x$FOUND_CORRECT_VERSION" = x; then
             AC_MSG_NOTICE([Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring])
             AC_MSG_NOTICE([(Your Boot JDK must be version 8 or 9)])
--- a/common/autoconf/configure.ac	Wed Jul 05 21:02:33 2017 +0200
+++ b/common/autoconf/configure.ac	Wed Jul 05 21:04:26 2017 +0200
@@ -45,6 +45,7 @@
 m4_include([flags.m4])
 m4_include([help.m4])
 m4_include([jdk-options.m4])
+m4_include([jdk-version.m4])
 m4_include([libraries.m4])
 m4_include([platform.m4])
 m4_include([source-dirs.m4])
@@ -128,7 +129,7 @@
 
 # We need build & target for this.
 JDKOPT_SETUP_JDK_OPTIONS
-JDKOPT_SETUP_JDK_VERSION_NUMBERS
+JDKVER_SETUP_JDK_VERSION_NUMBERS
 
 ###############################################################################
 #
--- a/common/autoconf/flags.m4	Wed Jul 05 21:02:33 2017 +0200
+++ b/common/autoconf/flags.m4	Wed Jul 05 21:04:26 2017 +0200
@@ -191,13 +191,13 @@
     # The \$ are escaped to the shell, and the $(...) variables
     # are evaluated by make.
     RC_FLAGS="$RC_FLAGS \
-        -D\"JDK_BUILD_ID=\$(FULL_VERSION)\" \
+        -D\"JDK_VERSION_STRING=\$(VERSION_STRING)\" \
         -D\"JDK_COMPANY=\$(COMPANY_NAME)\" \
         -D\"JDK_COMPONENT=\$(PRODUCT_NAME) \$(JDK_RC_PLATFORM_NAME) binary\" \
-        -D\"JDK_VER=\$(JDK_MINOR_VERSION).\$(JDK_MICRO_VERSION).\$(if \$(JDK_UPDATE_VERSION),\$(JDK_UPDATE_VERSION),0).\$(COOKED_BUILD_NUMBER)\" \
+        -D\"JDK_VER=\$(VERSION_NUMBER)\" \
         -D\"JDK_COPYRIGHT=Copyright \xA9 $COPYRIGHT_YEAR\" \
-        -D\"JDK_NAME=\$(PRODUCT_NAME) \$(JDK_RC_PLATFORM_NAME) \$(JDK_MINOR_VERSION) \$(JDK_UPDATE_META_TAG)\" \
-        -D\"JDK_FVER=\$(JDK_MINOR_VERSION),\$(JDK_MICRO_VERSION),\$(if \$(JDK_UPDATE_VERSION),\$(JDK_UPDATE_VERSION),0),\$(COOKED_BUILD_NUMBER)\""
+        -D\"JDK_NAME=\$(PRODUCT_NAME) \$(JDK_RC_PLATFORM_NAME) \$(VERSION_MAJOR)\" \
+        -D\"JDK_FVER=\$(subst .,\$(COMMA),\$(VERSION_NUMBER_FOUR_POSITIONS))\""
   fi
   AC_SUBST(RC_FLAGS)
 
@@ -666,10 +666,6 @@
     COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DDEBUG"
   fi
 
-  # Setup release name
-  COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DRELEASE='\"\$(RELEASE)\"'"
-
-
   # Set some additional per-OS defines.
   if test "x$OPENJDK_TARGET_OS" = xmacosx; then
     COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -D_ALLBSD_SOURCE -D_DARWIN_UNLIMITED_SELECT"
--- a/common/autoconf/generated-configure.sh	Wed Jul 05 21:02:33 2017 +0200
+++ b/common/autoconf/generated-configure.sh	Wed Jul 05 21:04:26 2017 +0200
@@ -825,9 +825,18 @@
 BOOT_JDK
 JAVA_CHECK
 JAVAC_CHECK
-COOKED_BUILD_NUMBER
-JDK_VERSION
-COPYRIGHT_YEAR
+VERSION_IS_GA
+VERSION_SHORT
+VERSION_STRING
+VERSION_NUMBER_FOUR_POSITIONS
+VERSION_NUMBER
+VERSION_OPT
+VERSION_BUILD
+VERSION_PRE
+VERSION_PATCH
+VERSION_SECURITY
+VERSION_MINOR
+VERSION_MAJOR
 MACOSX_BUNDLE_ID_BASE
 MACOSX_BUNDLE_NAME_BASE
 COMPANY_NAME
@@ -835,13 +844,7 @@
 PRODUCT_SUFFIX
 PRODUCT_NAME
 LAUNCHER_NAME
-MILESTONE
-JDK_BUILD_NUMBER
-JDK_UPDATE_VERSION
-JDK_MICRO_VERSION
-JDK_MINOR_VERSION
-JDK_MAJOR_VERSION
-USER_RELEASE_SUFFIX
+COPYRIGHT_YEAR
 COMPRESS_JARS
 UNLIMITED_CRYPTO
 CACERTS_FILE
@@ -1058,11 +1061,19 @@
 enable_hotspot_test_in_build
 with_cacerts_file
 enable_unlimited_crypto
+with_copyright_year
 with_milestone
 with_update_version
 with_user_release_suffix
 with_build_number
-with_copyright_year
+with_version_string
+with_version_pre
+with_version_opt
+with_version_build
+with_version_major
+with_version_minor
+with_version_security
+with_version_patch
 with_boot_jdk
 with_add_source_root
 with_override_source_root
@@ -1906,13 +1917,31 @@
   --with-output-sync      set make output sync type if supported by make.
                           [recurse]
   --with-cacerts-file     specify alternative cacerts file
-  --with-milestone        Set milestone value for build [internal]
-  --with-update-version   Set update version value for build [b00]
+  --with-copyright-year   Set copyright year value for build [current year]
+  --with-milestone        Deprecated. Option is kept for backwards
+                          compatibility and is ignored
+  --with-update-version   Deprecated. Option is kept for backwards
+                          compatibility and is ignored
   --with-user-release-suffix
-                          Add a custom string to the version string if build
-                          number is not set.[username_builddateb00]
-  --with-build-number     Set build number value for build [b00]
-  --with-copyright-year   Set copyright year value for build [current year]
+                          Deprecated. Option is kept for backwards
+                          compatibility and is ignored
+  --with-build-number     Deprecated. Option is kept for backwards
+                          compatibility and is ignored
+  --with-version-string   Set version string [calculated]
+  --with-version-pre      Set the base part of the version 'PRE' field
+                          (pre-release identifier) ['internal']
+  --with-version-opt      Set version 'OPT' field (build metadata)
+                          [<timestamp>.<user>.<dirname>]
+  --with-version-build    Set version 'BUILD' field (build number) [not
+                          specified]
+  --with-version-major    Set version 'MAJOR' field (first number) [current
+                          source value]
+  --with-version-minor    Set version 'MINOR' field (second number) [current
+                          source value]
+  --with-version-security Set version 'SECURITY' field (third number) [current
+                          source value]
+  --with-version-patch    Set version 'PATCH' field (fourth number) [not
+                          specified]
   --with-boot-jdk         path to Boot JDK (used to bootstrap build) [probed]
   --with-add-source-root  Deprecated. Option is kept for backwards
                           compatibility and is ignored
@@ -3976,11 +4005,12 @@
 
 
 
+
+
 ###############################################################################
 #
-# Setup version numbers
-#
-
+# Enable or disable the elliptic curve crypto implementation
+#
 
 
 
@@ -3992,6 +4022,45 @@
 #
 
 
+#
+# Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+###############################################################################
+#
+# Setup version numbers
+#
+
+# Verify that a given string represents a valid version number, and assign it
+# to a variable.
+
+# Argument 1: the variable to assign to
+# Argument 2: the value given by the user
+
+
+
+
 ################################################################################
 #
 # Static build support.  When enabled will generate static
@@ -4610,7 +4679,7 @@
 #CUSTOM_AUTOCONF_INCLUDE
 
 # Do not change or remove the following line, it is needed for consistency checks:
-DATE_WHEN_GENERATED=1446762265
+DATE_WHEN_GENERATED=1447737510
 
 ###############################################################################
 #
@@ -23047,106 +23116,13 @@
 
   ###############################################################################
   #
-  # Enable or disable the elliptic curve crypto implementation
-  #
-
-
-  ###############################################################################
-  #
   # Compress jars
   #
   COMPRESS_JARS=false
 
 
 
-
-  # Source the version numbers
-  . $AUTOCONF_DIR/version-numbers
-
-  # Get the settings from parameters
-
-# Check whether --with-milestone was given.
-if test "${with_milestone+set}" = set; then :
-  withval=$with_milestone;
-fi
-
-  if test "x$with_milestone" = xyes; then
-    as_fn_error $? "Milestone must have a value" "$LINENO" 5
-  elif test "x$with_milestone" != x; then
-    MILESTONE="$with_milestone"
-  fi
-  if test "x$MILESTONE" = x; then
-    MILESTONE=internal
-  fi
-
-
-# Check whether --with-update-version was given.
-if test "${with_update_version+set}" = set; then :
-  withval=$with_update_version;
-fi
-
-  if test "x$with_update_version" = xyes; then
-    as_fn_error $? "Update version must have a value" "$LINENO" 5
-  elif test "x$with_update_version" != x; then
-    JDK_UPDATE_VERSION="$with_update_version"
-    # On macosx 10.7, it's not possible to set --with-update-version=0X due
-    # to a bug in expr (which reduces it to just X). To work around this, we
-    # always add a 0 to one digit update versions.
-    if test "${#JDK_UPDATE_VERSION}" = "1"; then
-      JDK_UPDATE_VERSION="0${JDK_UPDATE_VERSION}"
-    fi
-  fi
-
-
-# Check whether --with-user-release-suffix was given.
-if test "${with_user_release_suffix+set}" = set; then :
-  withval=$with_user_release_suffix;
-fi
-
-  if test "x$with_user_release_suffix" = xyes; then
-    as_fn_error $? "Release suffix must have a value" "$LINENO" 5
-  elif test "x$with_user_release_suffix" != x; then
-    USER_RELEASE_SUFFIX="$with_user_release_suffix"
-  fi
-
-
-# Check whether --with-build-number was given.
-if test "${with_build_number+set}" = set; then :
-  withval=$with_build_number;
-fi
-
-  if test "x$with_build_number" = xyes; then
-    as_fn_error $? "Build number must have a value" "$LINENO" 5
-  elif test "x$with_build_number" != x; then
-    JDK_BUILD_NUMBER="$with_build_number"
-  fi
-  # Define default USER_RELEASE_SUFFIX if BUILD_NUMBER and USER_RELEASE_SUFFIX are not set
-  if test "x$JDK_BUILD_NUMBER" = x; then
-    JDK_BUILD_NUMBER=b00
-    if test "x$USER_RELEASE_SUFFIX" = x; then
-      BUILD_DATE=`date '+%Y_%m_%d_%H_%M'`
-      # Avoid [:alnum:] since it depends on the locale.
-      CLEAN_USERNAME=`echo "$USER" | $TR -d -c 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'`
-      USER_RELEASE_SUFFIX=`echo "${CLEAN_USERNAME}_${BUILD_DATE}" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
-    fi
-  fi
-
-  # Now set the JDK version, milestone, build number etc.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+  # Setup default copyright year. Mostly overridden when building close to a new year.
 
 # Check whether --with-copyright-year was given.
 if test "${with_copyright_year+set}" = set; then :
@@ -23162,14 +23138,442 @@
   fi
 
 
-  if test "x$JDK_UPDATE_VERSION" != x; then
-    JDK_VERSION="${JDK_MAJOR_VERSION}.${JDK_MINOR_VERSION}.${JDK_MICRO_VERSION}_${JDK_UPDATE_VERSION}"
-  else
-    JDK_VERSION="${JDK_MAJOR_VERSION}.${JDK_MINOR_VERSION}.${JDK_MICRO_VERSION}"
-  fi
-
-
-  COOKED_BUILD_NUMBER=`$ECHO $JDK_BUILD_NUMBER | $SED -e 's/^b//' -e 's/^0//'`
+
+  # Warn user that old version arguments are deprecated.
+
+
+# Check whether --with-milestone was given.
+if test "${with_milestone+set}" = set; then :
+  withval=$with_milestone; { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Option --with-milestone is deprecated and will be ignored." >&5
+$as_echo "$as_me: WARNING: Option --with-milestone is deprecated and will be ignored." >&2;}
+fi
+
+
+
+
+# Check whether --with-update-version was given.
+if test "${with_update_version+set}" = set; then :
+  withval=$with_update_version; { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Option --with-update-version is deprecated and will be ignored." >&5
+$as_echo "$as_me: WARNING: Option --with-update-version is deprecated and will be ignored." >&2;}
+fi
+
+
+
+
+# Check whether --with-user-release-suffix was given.
+if test "${with_user_release_suffix+set}" = set; then :
+  withval=$with_user_release_suffix; { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Option --with-user-release-suffix is deprecated and will be ignored." >&5
+$as_echo "$as_me: WARNING: Option --with-user-release-suffix is deprecated and will be ignored." >&2;}
+fi
+
+
+
+
+# Check whether --with-build-number was given.
+if test "${with_build_number+set}" = set; then :
+  withval=$with_build_number; { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Option --with-build-number is deprecated and will be ignored." >&5
+$as_echo "$as_me: WARNING: Option --with-build-number is deprecated and will be ignored." >&2;}
+fi
+
+
+
+  # Source the version numbers file
+  . $AUTOCONF_DIR/version-numbers
+
+  # Some non-version number information is set in that file
+
+
+
+
+
+
+
+
+  # Override version from arguments
+
+  # If --with-version-string is set, process it first. It is possible to
+  # override parts with more specific flags, since these are processed later.
+
+# Check whether --with-version-string was given.
+if test "${with_version_string+set}" = set; then :
+  withval=$with_version_string;
+fi
+
+  if test "x$with_version_string" = xyes; then
+    as_fn_error $? "--with-version-string must have a value" "$LINENO" 5
+  elif test "x$with_version_string" != x; then
+    # Additional [] needed to keep m4 from mangling shell constructs.
+    if  [[ $with_version_string =~ ^([0-9]+)(\.([0-9]+))?(\.([0-9]+))?(\.([0-9]+))?(-([a-zA-Z]+))?((\+)([0-9]+)?(-([-a-zA-Z0-9.]+))?)?$ ]] ; then
+      VERSION_MAJOR=${BASH_REMATCH[1]}
+      VERSION_MINOR=${BASH_REMATCH[3]}
+      VERSION_SECURITY=${BASH_REMATCH[5]}
+      VERSION_PATCH=${BASH_REMATCH[7]}
+      VERSION_PRE=${BASH_REMATCH[9]}
+      version_plus_separator=${BASH_REMATCH[11]}
+      VERSION_BUILD=${BASH_REMATCH[12]}
+      VERSION_OPT=${BASH_REMATCH[14]}
+      # Unspecified numerical fields are interpreted as 0.
+      if test "x$VERSION_MINOR" = x; then
+        VERSION_MINOR=0
+      fi
+      if test "x$VERSION_SECURITY" = x; then
+        VERSION_SECURITY=0
+      fi
+      if test "x$VERSION_PATCH" = x; then
+        VERSION_PATCH=0
+      fi
+      if test "x$version_plus_separator" != x \
+          && test "x$VERSION_BUILD$VERSION_OPT" = x; then
+        as_fn_error $? "Version string contains + but both 'BUILD' and 'OPT' are missing" "$LINENO" 5
+      fi
+      # Stop the version part process from setting default values.
+      # We still allow them to explicitely override though.
+      NO_DEFAULT_VERSION_PARTS=true
+    else
+      as_fn_error $? "--with-version-string fails to parse as a valid version string: $with_version_string" "$LINENO" 5
+    fi
+  fi
+
+
+# Check whether --with-version-pre was given.
+if test "${with_version_pre+set}" = set; then :
+  withval=$with_version_pre; with_version_pre_present=true
+else
+  with_version_pre_present=false
+fi
+
+
+  if test "x$with_version_pre_present" = xtrue; then
+    if test "x$with_version_pre" = xyes; then
+      as_fn_error $? "--with-version-pre must have a value" "$LINENO" 5
+    elif test "x$with_version_pre" = xno; then
+      # Interpret --without-* as empty string instead of the literal "no"
+      VERSION_PRE=
+    else
+      # Only [a-zA-Z] is allowed in the VERSION_PRE. Outer [ ] to quote m4.
+       VERSION_PRE=`$ECHO "$with_version_pre" | $TR -c -d '[a-z][A-Z]'`
+      if test "x$VERSION_PRE" != "x$with_version_pre"; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: --with-version-pre value has been sanitized from '$with_version_pre' to '$VERSION_PRE'" >&5
+$as_echo "$as_me: WARNING: --with-version-pre value has been sanitized from '$with_version_pre' to '$VERSION_PRE'" >&2;}
+      fi
+    fi
+  else
+    if test "x$NO_DEFAULT_VERSION_PARTS" != xtrue; then
+      # Default is to use "internal" as pre
+      VERSION_PRE="internal"
+    fi
+  fi
+
+
+# Check whether --with-version-opt was given.
+if test "${with_version_opt+set}" = set; then :
+  withval=$with_version_opt; with_version_opt_present=true
+else
+  with_version_opt_present=false
+fi
+
+
+  if test "x$with_version_opt_present" = xtrue; then
+    if test "x$with_version_opt" = xyes; then
+      as_fn_error $? "--with-version-opt must have a value" "$LINENO" 5
+    elif test "x$with_version_opt" = xno; then
+      # Interpret --without-* as empty string instead of the literal "no"
+      VERSION_OPT=
+    else
+      # Only [-.a-zA-Z0-9] is allowed in the VERSION_OPT. Outer [ ] to quote m4.
+       VERSION_OPT=`$ECHO "$with_version_opt" | $TR -c -d '[a-z][A-Z][0-9].-'`
+      if test "x$VERSION_OPT" != "x$with_version_opt"; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: --with-version-opt value has been sanitized from '$with_version_opt' to '$VERSION_OPT'" >&5
+$as_echo "$as_me: WARNING: --with-version-opt value has been sanitized from '$with_version_opt' to '$VERSION_OPT'" >&2;}
+      fi
+    fi
+  else
+    if test "x$NO_DEFAULT_VERSION_PARTS" != xtrue; then
+      # Default is to calculate a string like this <timestamp>.<username>.<base dir name>
+      timestamp=`$DATE '+%Y-%m-%d-%H%M%S'`
+      # Outer [ ] to quote m4.
+       username=`$ECHO "$USER" | $TR -d -c '[a-z][A-Z][0-9]'`
+       basedirname=`$BASENAME "$TOPDIR" | $TR -d -c '[a-z][A-Z][0-9].-'`
+      VERSION_OPT="$timestamp.$username.$basedirname"
+    fi
+  fi
+
+
+# Check whether --with-version-build was given.
+if test "${with_version_build+set}" = set; then :
+  withval=$with_version_build; with_version_build_present=true
+else
+  with_version_build_present=false
+fi
+
+
+  if test "x$with_version_build_present" = xtrue; then
+    if test "x$with_version_build" = xyes; then
+      as_fn_error $? "--with-version-build must have a value" "$LINENO" 5
+    elif test "x$with_version_build" = xno; then
+      # Interpret --without-* as empty string instead of the literal "no"
+      VERSION_BUILD=
+    elif test "x$with_version_build" = x; then
+      VERSION_BUILD=
+    else
+
+  # Additional [] needed to keep m4 from mangling shell constructs.
+  if  ! [[ "$with_version_build" =~ ^0*([1-9][0-9]*)|(0)$ ]]  ; then
+    as_fn_error $? "\"$with_version_build\" is not a valid numerical value for VERSION_BUILD" "$LINENO" 5
+  fi
+  # Extract the version number without leading zeros.
+  cleaned_value=${BASH_REMATCH[1]}
+  if test "x$cleaned_value" = x; then
+    # Special case for zero
+    cleaned_value=${BASH_REMATCH[2]}
+  fi
+
+  if test $cleaned_value -gt 255; then
+    as_fn_error $? "VERSION_BUILD is given as $with_version_build. This is greater than 255 which is not allowed." "$LINENO" 5
+  fi
+  if test "x$cleaned_value" != "x$with_version_build"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Value for VERSION_BUILD has been sanitized from '$with_version_build' to '$cleaned_value'" >&5
+$as_echo "$as_me: WARNING: Value for VERSION_BUILD has been sanitized from '$with_version_build' to '$cleaned_value'" >&2;}
+  fi
+  VERSION_BUILD=$cleaned_value
+
+    fi
+  else
+    if test "x$NO_DEFAULT_VERSION_PARTS" != xtrue; then
+      # Default is to not have a build number.
+      VERSION_BUILD=""
+      # FIXME: Until all code can cope with an empty VERSION_BUILD, set it to 0.
+      VERSION_BUILD=0
+    fi
+  fi
+
+
+# Check whether --with-version-major was given.
+if test "${with_version_major+set}" = set; then :
+  withval=$with_version_major; with_version_major_present=true
+else
+  with_version_major_present=false
+fi
+
+
+  if test "x$with_version_major_present" = xtrue; then
+    if test "x$with_version_major" = xyes; then
+      as_fn_error $? "--with-version-major must have a value" "$LINENO" 5
+    else
+
+  # Additional [] needed to keep m4 from mangling shell constructs.
+  if  ! [[ "$with_version_major" =~ ^0*([1-9][0-9]*)|(0)$ ]]  ; then
+    as_fn_error $? "\"$with_version_major\" is not a valid numerical value for VERSION_MAJOR" "$LINENO" 5
+  fi
+  # Extract the version number without leading zeros.
+  cleaned_value=${BASH_REMATCH[1]}
+  if test "x$cleaned_value" = x; then
+    # Special case for zero
+    cleaned_value=${BASH_REMATCH[2]}
+  fi
+
+  if test $cleaned_value -gt 255; then
+    as_fn_error $? "VERSION_MAJOR is given as $with_version_major. This is greater than 255 which is not allowed." "$LINENO" 5
+  fi
+  if test "x$cleaned_value" != "x$with_version_major"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Value for VERSION_MAJOR has been sanitized from '$with_version_major' to '$cleaned_value'" >&5
+$as_echo "$as_me: WARNING: Value for VERSION_MAJOR has been sanitized from '$with_version_major' to '$cleaned_value'" >&2;}
+  fi
+  VERSION_MAJOR=$cleaned_value
+
+    fi
+  else
+    if test "x$NO_DEFAULT_VERSION_PARTS" != xtrue; then
+      # Default is to get value from version-numbers
+      VERSION_MAJOR="$DEFAULT_VERSION_MAJOR"
+    fi
+  fi
+
+
+# Check whether --with-version-minor was given.
+if test "${with_version_minor+set}" = set; then :
+  withval=$with_version_minor; with_version_minor_present=true
+else
+  with_version_minor_present=false
+fi
+
+
+  if test "x$with_version_minor_present" = xtrue; then
+    if test "x$with_version_minor" = xyes; then
+      as_fn_error $? "--with-version-minor must have a value" "$LINENO" 5
+    elif test "x$with_version_minor" = xno; then
+      # Interpret --without-* as empty string (i.e. 0) instead of the literal "no"
+      VERSION_MINOR=0
+    elif test "x$with_version_minor" = x; then
+      VERSION_MINOR=0
+    else
+
+  # Additional [] needed to keep m4 from mangling shell constructs.
+  if  ! [[ "$with_version_minor" =~ ^0*([1-9][0-9]*)|(0)$ ]]  ; then
+    as_fn_error $? "\"$with_version_minor\" is not a valid numerical value for VERSION_MINOR" "$LINENO" 5
+  fi
+  # Extract the version number without leading zeros.
+  cleaned_value=${BASH_REMATCH[1]}
+  if test "x$cleaned_value" = x; then
+    # Special case for zero
+    cleaned_value=${BASH_REMATCH[2]}
+  fi
+
+  if test $cleaned_value -gt 255; then
+    as_fn_error $? "VERSION_MINOR is given as $with_version_minor. This is greater than 255 which is not allowed." "$LINENO" 5
+  fi
+  if test "x$cleaned_value" != "x$with_version_minor"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Value for VERSION_MINOR has been sanitized from '$with_version_minor' to '$cleaned_value'" >&5
+$as_echo "$as_me: WARNING: Value for VERSION_MINOR has been sanitized from '$with_version_minor' to '$cleaned_value'" >&2;}
+  fi
+  VERSION_MINOR=$cleaned_value
+
+    fi
+  else
+    if test "x$NO_DEFAULT_VERSION_PARTS" != xtrue; then
+      # Default is 0, if unspecified
+      VERSION_MINOR=0
+    fi
+  fi
+
+
+# Check whether --with-version-security was given.
+if test "${with_version_security+set}" = set; then :
+  withval=$with_version_security; with_version_security_present=true
+else
+  with_version_security_present=false
+fi
+
+
+  if test "x$with_version_security_present" = xtrue; then
+    if test "x$with_version_security" = xyes; then
+      as_fn_error $? "--with-version-security must have a value" "$LINENO" 5
+    elif test "x$with_version_security" = xno; then
+      # Interpret --without-* as empty string (i.e. 0) instead of the literal "no"
+      VERSION_SECURITY=0
+    elif test "x$with_version_security" = x; then
+      VERSION_SECURITY=0
+    else
+
+  # Additional [] needed to keep m4 from mangling shell constructs.
+  if  ! [[ "$with_version_security" =~ ^0*([1-9][0-9]*)|(0)$ ]]  ; then
+    as_fn_error $? "\"$with_version_security\" is not a valid numerical value for VERSION_SECURITY" "$LINENO" 5
+  fi
+  # Extract the version number without leading zeros.
+  cleaned_value=${BASH_REMATCH[1]}
+  if test "x$cleaned_value" = x; then
+    # Special case for zero
+    cleaned_value=${BASH_REMATCH[2]}
+  fi
+
+  if test $cleaned_value -gt 255; then
+    as_fn_error $? "VERSION_SECURITY is given as $with_version_security. This is greater than 255 which is not allowed." "$LINENO" 5
+  fi
+  if test "x$cleaned_value" != "x$with_version_security"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Value for VERSION_SECURITY has been sanitized from '$with_version_security' to '$cleaned_value'" >&5
+$as_echo "$as_me: WARNING: Value for VERSION_SECURITY has been sanitized from '$with_version_security' to '$cleaned_value'" >&2;}
+  fi
+  VERSION_SECURITY=$cleaned_value
+
+    fi
+  else
+    if test "x$NO_DEFAULT_VERSION_PARTS" != xtrue; then
+      # Default is 0, if unspecified
+      VERSION_SECURITY=0
+    fi
+  fi
+
+
+# Check whether --with-version-patch was given.
+if test "${with_version_patch+set}" = set; then :
+  withval=$with_version_patch; with_version_patch_present=true
+else
+  with_version_patch_present=false
+fi
+
+
+  if test "x$with_version_patch_present" = xtrue; then
+    if test "x$with_version_patch" = xyes; then
+      as_fn_error $? "--with-version-patch must have a value" "$LINENO" 5
+    elif test "x$with_version_patch" = xno; then
+      # Interpret --without-* as empty string (i.e. 0) instead of the literal "no"
+      VERSION_PATCH=0
+    elif test "x$with_version_patch" = x; then
+      VERSION_PATCH=0
+    else
+
+  # Additional [] needed to keep m4 from mangling shell constructs.
+  if  ! [[ "$with_version_patch" =~ ^0*([1-9][0-9]*)|(0)$ ]]  ; then
+    as_fn_error $? "\"$with_version_patch\" is not a valid numerical value for VERSION_PATCH" "$LINENO" 5
+  fi
+  # Extract the version number without leading zeros.
+  cleaned_value=${BASH_REMATCH[1]}
+  if test "x$cleaned_value" = x; then
+    # Special case for zero
+    cleaned_value=${BASH_REMATCH[2]}
+  fi
+
+  if test $cleaned_value -gt 255; then
+    as_fn_error $? "VERSION_PATCH is given as $with_version_patch. This is greater than 255 which is not allowed." "$LINENO" 5
+  fi
+  if test "x$cleaned_value" != "x$with_version_patch"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Value for VERSION_PATCH has been sanitized from '$with_version_patch' to '$cleaned_value'" >&5
+$as_echo "$as_me: WARNING: Value for VERSION_PATCH has been sanitized from '$with_version_patch' to '$cleaned_value'" >&2;}
+  fi
+  VERSION_PATCH=$cleaned_value
+
+    fi
+  else
+    if test "x$NO_DEFAULT_VERSION_PARTS" != xtrue; then
+      # Default is 0, if unspecified
+      VERSION_PATCH=0
+    fi
+  fi
+
+  # Calculate derived version properties
+
+  # Set VERSION_IS_GA based on if VERSION_PRE has a value
+  if test "x$VERSION_PRE" = x; then
+    VERSION_IS_GA=true
+  else
+    VERSION_IS_GA=false
+  fi
+
+  # VERSION_NUMBER but always with exactly 4 positions, with 0 for empty positions.
+  VERSION_NUMBER_FOUR_POSITIONS=$VERSION_MAJOR.$VERSION_MINOR.$VERSION_SECURITY.$VERSION_PATCH
+
+  stripped_version_number=$VERSION_NUMBER_FOUR_POSITIONS
+  # Strip trailing zeroes from stripped_version_number
+  for i in 1 2 3 ; do stripped_version_number=${stripped_version_number%.0} ; done
+  VERSION_NUMBER=$stripped_version_number
+
+  # The complete version string, with additional build information
+  if test "x$VERSION_BUILD$VERSION_OPT" = x; then
+    VERSION_STRING=$VERSION_NUMBER${VERSION_PRE:+-$VERSION_PRE}
+  else
+    # If either build or opt is set, we need a + separator
+    VERSION_STRING=$VERSION_NUMBER${VERSION_PRE:+-$VERSION_PRE}+$VERSION_BUILD${VERSION_OPT:+-$VERSION_OPT}
+  fi
+
+  # The short version string, just VERSION_NUMBER and PRE, if present.
+  VERSION_SHORT=$VERSION_NUMBER${VERSION_PRE:+-$VERSION_PRE}
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for version string" >&5
+$as_echo_n "checking for version string... " >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $VERSION_STRING" >&5
+$as_echo "$VERSION_STRING" >&6; }
+
+
+
+
+
+
+
+
+
+
+
+
 
 
 
@@ -23226,7 +23630,7 @@
           BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | head -n 1`
 
           # Extra M4 quote needed to protect [] in grep expression.
-          FOUND_CORRECT_VERSION=`echo $BOOT_JDK_VERSION | grep  '\"1\.[89]\.'`
+          FOUND_CORRECT_VERSION=`$ECHO $BOOT_JDK_VERSION | $EGREP '\"9([\.+-].*)?\"|(1\.[89]\.)'`
           if test "x$FOUND_CORRECT_VERSION" = x; then
             { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&5
 $as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&6;}
@@ -23422,7 +23826,7 @@
           BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | head -n 1`
 
           # Extra M4 quote needed to protect [] in grep expression.
-          FOUND_CORRECT_VERSION=`echo $BOOT_JDK_VERSION | grep  '\"1\.[89]\.'`
+          FOUND_CORRECT_VERSION=`$ECHO $BOOT_JDK_VERSION | $EGREP '\"9([\.+-].*)?\"|(1\.[89]\.)'`
           if test "x$FOUND_CORRECT_VERSION" = x; then
             { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&5
 $as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&6;}
@@ -23606,7 +24010,7 @@
           BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | head -n 1`
 
           # Extra M4 quote needed to protect [] in grep expression.
-          FOUND_CORRECT_VERSION=`echo $BOOT_JDK_VERSION | grep  '\"1\.[89]\.'`
+          FOUND_CORRECT_VERSION=`$ECHO $BOOT_JDK_VERSION | $EGREP '\"9([\.+-].*)?\"|(1\.[89]\.)'`
           if test "x$FOUND_CORRECT_VERSION" = x; then
             { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&5
 $as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&6;}
@@ -23789,7 +24193,7 @@
           BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | head -n 1`
 
           # Extra M4 quote needed to protect [] in grep expression.
-          FOUND_CORRECT_VERSION=`echo $BOOT_JDK_VERSION | grep  '\"1\.[89]\.'`
+          FOUND_CORRECT_VERSION=`$ECHO $BOOT_JDK_VERSION | $EGREP '\"9([\.+-].*)?\"|(1\.[89]\.)'`
           if test "x$FOUND_CORRECT_VERSION" = x; then
             { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&5
 $as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&6;}
@@ -23972,7 +24376,7 @@
           BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | head -n 1`
 
           # Extra M4 quote needed to protect [] in grep expression.
-          FOUND_CORRECT_VERSION=`echo $BOOT_JDK_VERSION | grep  '\"1\.[89]\.'`
+          FOUND_CORRECT_VERSION=`$ECHO $BOOT_JDK_VERSION | $EGREP '\"9([\.+-].*)?\"|(1\.[89]\.)'`
           if test "x$FOUND_CORRECT_VERSION" = x; then
             { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&5
 $as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&6;}
@@ -24146,7 +24550,7 @@
           BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | head -n 1`
 
           # Extra M4 quote needed to protect [] in grep expression.
-          FOUND_CORRECT_VERSION=`echo $BOOT_JDK_VERSION | grep  '\"1\.[89]\.'`
+          FOUND_CORRECT_VERSION=`$ECHO $BOOT_JDK_VERSION | $EGREP '\"9([\.+-].*)?\"|(1\.[89]\.)'`
           if test "x$FOUND_CORRECT_VERSION" = x; then
             { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&5
 $as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&6;}
@@ -24465,7 +24869,7 @@
           BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | head -n 1`
 
           # Extra M4 quote needed to protect [] in grep expression.
-          FOUND_CORRECT_VERSION=`echo $BOOT_JDK_VERSION | grep  '\"1\.[89]\.'`
+          FOUND_CORRECT_VERSION=`$ECHO $BOOT_JDK_VERSION | $EGREP '\"9([\.+-].*)?\"|(1\.[89]\.)'`
           if test "x$FOUND_CORRECT_VERSION" = x; then
             { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&5
 $as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&6;}
@@ -24790,7 +25194,7 @@
           BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | head -n 1`
 
           # Extra M4 quote needed to protect [] in grep expression.
-          FOUND_CORRECT_VERSION=`echo $BOOT_JDK_VERSION | grep  '\"1\.[89]\.'`
+          FOUND_CORRECT_VERSION=`$ECHO $BOOT_JDK_VERSION | $EGREP '\"9([\.+-].*)?\"|(1\.[89]\.)'`
           if test "x$FOUND_CORRECT_VERSION" = x; then
             { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&5
 $as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&6;}
@@ -25002,7 +25406,7 @@
           BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | head -n 1`
 
           # Extra M4 quote needed to protect [] in grep expression.
-          FOUND_CORRECT_VERSION=`echo $BOOT_JDK_VERSION | grep  '\"1\.[89]\.'`
+          FOUND_CORRECT_VERSION=`$ECHO $BOOT_JDK_VERSION | $EGREP '\"9([\.+-].*)?\"|(1\.[89]\.)'`
           if test "x$FOUND_CORRECT_VERSION" = x; then
             { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&5
 $as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&6;}
@@ -25179,7 +25583,7 @@
           BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | head -n 1`
 
           # Extra M4 quote needed to protect [] in grep expression.
-          FOUND_CORRECT_VERSION=`echo $BOOT_JDK_VERSION | grep  '\"1\.[89]\.'`
+          FOUND_CORRECT_VERSION=`$ECHO $BOOT_JDK_VERSION | $EGREP '\"9([\.+-].*)?\"|(1\.[89]\.)'`
           if test "x$FOUND_CORRECT_VERSION" = x; then
             { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&5
 $as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&6;}
@@ -25384,7 +25788,7 @@
           BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | head -n 1`
 
           # Extra M4 quote needed to protect [] in grep expression.
-          FOUND_CORRECT_VERSION=`echo $BOOT_JDK_VERSION | grep  '\"1\.[89]\.'`
+          FOUND_CORRECT_VERSION=`$ECHO $BOOT_JDK_VERSION | $EGREP '\"9([\.+-].*)?\"|(1\.[89]\.)'`
           if test "x$FOUND_CORRECT_VERSION" = x; then
             { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&5
 $as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&6;}
@@ -25561,7 +25965,7 @@
           BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | head -n 1`
 
           # Extra M4 quote needed to protect [] in grep expression.
-          FOUND_CORRECT_VERSION=`echo $BOOT_JDK_VERSION | grep  '\"1\.[89]\.'`
+          FOUND_CORRECT_VERSION=`$ECHO $BOOT_JDK_VERSION | $EGREP '\"9([\.+-].*)?\"|(1\.[89]\.)'`
           if test "x$FOUND_CORRECT_VERSION" = x; then
             { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&5
 $as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&6;}
@@ -25766,7 +26170,7 @@
           BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | head -n 1`
 
           # Extra M4 quote needed to protect [] in grep expression.
-          FOUND_CORRECT_VERSION=`echo $BOOT_JDK_VERSION | grep  '\"1\.[89]\.'`
+          FOUND_CORRECT_VERSION=`$ECHO $BOOT_JDK_VERSION | $EGREP '\"9([\.+-].*)?\"|(1\.[89]\.)'`
           if test "x$FOUND_CORRECT_VERSION" = x; then
             { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&5
 $as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&6;}
@@ -25943,7 +26347,7 @@
           BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | head -n 1`
 
           # Extra M4 quote needed to protect [] in grep expression.
-          FOUND_CORRECT_VERSION=`echo $BOOT_JDK_VERSION | grep  '\"1\.[89]\.'`
+          FOUND_CORRECT_VERSION=`$ECHO $BOOT_JDK_VERSION | $EGREP '\"9([\.+-].*)?\"|(1\.[89]\.)'`
           if test "x$FOUND_CORRECT_VERSION" = x; then
             { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&5
 $as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&6;}
@@ -26148,7 +26552,7 @@
           BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | head -n 1`
 
           # Extra M4 quote needed to protect [] in grep expression.
-          FOUND_CORRECT_VERSION=`echo $BOOT_JDK_VERSION | grep  '\"1\.[89]\.'`
+          FOUND_CORRECT_VERSION=`$ECHO $BOOT_JDK_VERSION | $EGREP '\"9([\.+-].*)?\"|(1\.[89]\.)'`
           if test "x$FOUND_CORRECT_VERSION" = x; then
             { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&5
 $as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&6;}
@@ -26325,7 +26729,7 @@
           BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | head -n 1`
 
           # Extra M4 quote needed to protect [] in grep expression.
-          FOUND_CORRECT_VERSION=`echo $BOOT_JDK_VERSION | grep  '\"1\.[89]\.'`
+          FOUND_CORRECT_VERSION=`$ECHO $BOOT_JDK_VERSION | $EGREP '\"9([\.+-].*)?\"|(1\.[89]\.)'`
           if test "x$FOUND_CORRECT_VERSION" = x; then
             { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&5
 $as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&6;}
@@ -26517,7 +26921,7 @@
           BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | head -n 1`
 
           # Extra M4 quote needed to protect [] in grep expression.
-          FOUND_CORRECT_VERSION=`echo $BOOT_JDK_VERSION | grep  '\"1\.[89]\.'`
+          FOUND_CORRECT_VERSION=`$ECHO $BOOT_JDK_VERSION | $EGREP '\"9([\.+-].*)?\"|(1\.[89]\.)'`
           if test "x$FOUND_CORRECT_VERSION" = x; then
             { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&5
 $as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&6;}
@@ -26692,7 +27096,7 @@
           BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | head -n 1`
 
           # Extra M4 quote needed to protect [] in grep expression.
-          FOUND_CORRECT_VERSION=`echo $BOOT_JDK_VERSION | grep  '\"1\.[89]\.'`
+          FOUND_CORRECT_VERSION=`$ECHO $BOOT_JDK_VERSION | $EGREP '\"9([\.+-].*)?\"|(1\.[89]\.)'`
           if test "x$FOUND_CORRECT_VERSION" = x; then
             { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&5
 $as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&6;}
@@ -26885,7 +27289,7 @@
           BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | head -n 1`
 
           # Extra M4 quote needed to protect [] in grep expression.
-          FOUND_CORRECT_VERSION=`echo $BOOT_JDK_VERSION | grep  '\"1\.[89]\.'`
+          FOUND_CORRECT_VERSION=`$ECHO $BOOT_JDK_VERSION | $EGREP '\"9([\.+-].*)?\"|(1\.[89]\.)'`
           if test "x$FOUND_CORRECT_VERSION" = x; then
             { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&5
 $as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&6;}
@@ -27060,7 +27464,7 @@
           BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | head -n 1`
 
           # Extra M4 quote needed to protect [] in grep expression.
-          FOUND_CORRECT_VERSION=`echo $BOOT_JDK_VERSION | grep  '\"1\.[89]\.'`
+          FOUND_CORRECT_VERSION=`$ECHO $BOOT_JDK_VERSION | $EGREP '\"9([\.+-].*)?\"|(1\.[89]\.)'`
           if test "x$FOUND_CORRECT_VERSION" = x; then
             { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&5
 $as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&6;}
@@ -27252,7 +27656,7 @@
           BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | head -n 1`
 
           # Extra M4 quote needed to protect [] in grep expression.
-          FOUND_CORRECT_VERSION=`echo $BOOT_JDK_VERSION | grep  '\"1\.[89]\.'`
+          FOUND_CORRECT_VERSION=`$ECHO $BOOT_JDK_VERSION | $EGREP '\"9([\.+-].*)?\"|(1\.[89]\.)'`
           if test "x$FOUND_CORRECT_VERSION" = x; then
             { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&5
 $as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&6;}
@@ -27427,7 +27831,7 @@
           BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | head -n 1`
 
           # Extra M4 quote needed to protect [] in grep expression.
-          FOUND_CORRECT_VERSION=`echo $BOOT_JDK_VERSION | grep  '\"1\.[89]\.'`
+          FOUND_CORRECT_VERSION=`$ECHO $BOOT_JDK_VERSION | $EGREP '\"9([\.+-].*)?\"|(1\.[89]\.)'`
           if test "x$FOUND_CORRECT_VERSION" = x; then
             { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&5
 $as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&6;}
@@ -27620,7 +28024,7 @@
           BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | head -n 1`
 
           # Extra M4 quote needed to protect [] in grep expression.
-          FOUND_CORRECT_VERSION=`echo $BOOT_JDK_VERSION | grep  '\"1\.[89]\.'`
+          FOUND_CORRECT_VERSION=`$ECHO $BOOT_JDK_VERSION | $EGREP '\"9([\.+-].*)?\"|(1\.[89]\.)'`
           if test "x$FOUND_CORRECT_VERSION" = x; then
             { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&5
 $as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&6;}
@@ -27795,7 +28199,7 @@
           BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | head -n 1`
 
           # Extra M4 quote needed to protect [] in grep expression.
-          FOUND_CORRECT_VERSION=`echo $BOOT_JDK_VERSION | grep  '\"1\.[89]\.'`
+          FOUND_CORRECT_VERSION=`$ECHO $BOOT_JDK_VERSION | $EGREP '\"9([\.+-].*)?\"|(1\.[89]\.)'`
           if test "x$FOUND_CORRECT_VERSION" = x; then
             { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&5
 $as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&6;}
@@ -27969,7 +28373,7 @@
           BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | head -n 1`
 
           # Extra M4 quote needed to protect [] in grep expression.
-          FOUND_CORRECT_VERSION=`echo $BOOT_JDK_VERSION | grep  '\"1\.[89]\.'`
+          FOUND_CORRECT_VERSION=`$ECHO $BOOT_JDK_VERSION | $EGREP '\"9([\.+-].*)?\"|(1\.[89]\.)'`
           if test "x$FOUND_CORRECT_VERSION" = x; then
             { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&5
 $as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&6;}
@@ -43706,13 +44110,13 @@
     # The \$ are escaped to the shell, and the $(...) variables
     # are evaluated by make.
     RC_FLAGS="$RC_FLAGS \
-        -D\"JDK_BUILD_ID=\$(FULL_VERSION)\" \
+        -D\"JDK_VERSION_STRING=\$(VERSION_STRING)\" \
         -D\"JDK_COMPANY=\$(COMPANY_NAME)\" \
         -D\"JDK_COMPONENT=\$(PRODUCT_NAME) \$(JDK_RC_PLATFORM_NAME) binary\" \
-        -D\"JDK_VER=\$(JDK_MINOR_VERSION).\$(JDK_MICRO_VERSION).\$(if \$(JDK_UPDATE_VERSION),\$(JDK_UPDATE_VERSION),0).\$(COOKED_BUILD_NUMBER)\" \
+        -D\"JDK_VER=\$(VERSION_NUMBER)\" \
         -D\"JDK_COPYRIGHT=Copyright \xA9 $COPYRIGHT_YEAR\" \
-        -D\"JDK_NAME=\$(PRODUCT_NAME) \$(JDK_RC_PLATFORM_NAME) \$(JDK_MINOR_VERSION) \$(JDK_UPDATE_META_TAG)\" \
-        -D\"JDK_FVER=\$(JDK_MINOR_VERSION),\$(JDK_MICRO_VERSION),\$(if \$(JDK_UPDATE_VERSION),\$(JDK_UPDATE_VERSION),0),\$(COOKED_BUILD_NUMBER)\""
+        -D\"JDK_NAME=\$(PRODUCT_NAME) \$(JDK_RC_PLATFORM_NAME) \$(VERSION_MAJOR)\" \
+        -D\"JDK_FVER=\$(subst .,\$(COMMA),\$(VERSION_NUMBER_FOUR_POSITIONS))\""
   fi
 
 
@@ -44845,10 +45249,6 @@
     COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DDEBUG"
   fi
 
-  # Setup release name
-  COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DRELEASE='\"\$(RELEASE)\"'"
-
-
   # Set some additional per-OS defines.
   if test "x$OPENJDK_TARGET_OS" = xmacosx; then
     COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -D_ALLBSD_SOURCE -D_DARWIN_UNLIMITED_SELECT"
@@ -54488,18 +54888,18 @@
 
 
 
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if elliptic curve crypto implementation is present" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if elliptic curve crypto implementation is present" >&5
 $as_echo_n "checking if elliptic curve crypto implementation is present... " >&6; }
 
-    if test -d "${SRC_ROOT}/jdk/src/jdk.crypto.ec/share/native/libsunec/impl"; then
-      ENABLE_INTREE_EC=yes
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+  if test -d "${SRC_ROOT}/jdk/src/jdk.crypto.ec/share/native/libsunec/impl"; then
+    ENABLE_INTREE_EC=yes
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
-    else
-      ENABLE_INTREE_EC=no
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-    fi
+  else
+    ENABLE_INTREE_EC=no
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+  fi
 
 
 
@@ -56628,6 +57028,7 @@
   printf "* JDK variant:    $JDK_VARIANT\n"
   printf "* JVM variants:   $with_jvm_variants\n"
   printf "* OpenJDK target: OS: $OPENJDK_TARGET_OS, CPU architecture: $OPENJDK_TARGET_CPU_ARCH, address length: $OPENJDK_TARGET_CPU_BITS\n"
+  printf "* Version string: $VERSION_STRING ($VERSION_SHORT)\n"
 
   printf "\n"
   printf "Tools summary:\n"
--- a/common/autoconf/help.m4	Wed Jul 05 21:02:33 2017 +0200
+++ b/common/autoconf/help.m4	Wed Jul 05 21:04:26 2017 +0200
@@ -202,6 +202,7 @@
   printf "* JDK variant:    $JDK_VARIANT\n"
   printf "* JVM variants:   $with_jvm_variants\n"
   printf "* OpenJDK target: OS: $OPENJDK_TARGET_OS, CPU architecture: $OPENJDK_TARGET_CPU_ARCH, address length: $OPENJDK_TARGET_CPU_BITS\n"
+  printf "* Version string: $VERSION_STRING ($VERSION_SHORT)\n"
 
   printf "\n"
   printf "Tools summary:\n"
--- a/common/autoconf/jdk-options.m4	Wed Jul 05 21:02:33 2017 +0200
+++ b/common/autoconf/jdk-options.m4	Wed Jul 05 21:04:26 2017 +0200
@@ -436,109 +436,13 @@
 
   ###############################################################################
   #
-  # Enable or disable the elliptic curve crypto implementation
-  #
-  AC_DEFUN_ONCE([JDKOPT_DETECT_INTREE_EC],
-  [
-    AC_MSG_CHECKING([if elliptic curve crypto implementation is present])
-
-    if test -d "${SRC_ROOT}/jdk/src/jdk.crypto.ec/share/native/libsunec/impl"; then
-      ENABLE_INTREE_EC=yes
-      AC_MSG_RESULT([yes])
-    else
-      ENABLE_INTREE_EC=no
-      AC_MSG_RESULT([no])
-    fi
-
-    AC_SUBST(ENABLE_INTREE_EC)
-  ])
-
-  ###############################################################################
-  #
   # Compress jars
   #
   COMPRESS_JARS=false
 
   AC_SUBST(COMPRESS_JARS)
-])
 
-###############################################################################
-#
-# Setup version numbers
-#
-AC_DEFUN_ONCE([JDKOPT_SETUP_JDK_VERSION_NUMBERS],
-[
-  # Source the version numbers
-  . $AUTOCONF_DIR/version-numbers
-
-  # Get the settings from parameters
-  AC_ARG_WITH(milestone, [AS_HELP_STRING([--with-milestone],
-      [Set milestone value for build @<:@internal@:>@])])
-  if test "x$with_milestone" = xyes; then
-    AC_MSG_ERROR([Milestone must have a value])
-  elif test "x$with_milestone" != x; then
-    MILESTONE="$with_milestone"
-  fi
-  if test "x$MILESTONE" = x; then
-    MILESTONE=internal
-  fi
-
-  AC_ARG_WITH(update-version, [AS_HELP_STRING([--with-update-version],
-      [Set update version value for build @<:@b00@:>@])])
-  if test "x$with_update_version" = xyes; then
-    AC_MSG_ERROR([Update version must have a value])
-  elif test "x$with_update_version" != x; then
-    JDK_UPDATE_VERSION="$with_update_version"
-    # On macosx 10.7, it's not possible to set --with-update-version=0X due
-    # to a bug in expr (which reduces it to just X). To work around this, we
-    # always add a 0 to one digit update versions.
-    if test "${#JDK_UPDATE_VERSION}" = "1"; then
-      JDK_UPDATE_VERSION="0${JDK_UPDATE_VERSION}"
-    fi
-  fi
-
-  AC_ARG_WITH(user-release-suffix, [AS_HELP_STRING([--with-user-release-suffix],
-      [Add a custom string to the version string if build number is not set.@<:@username_builddateb00@:>@])])
-  if test "x$with_user_release_suffix" = xyes; then
-    AC_MSG_ERROR([Release suffix must have a value])
-  elif test "x$with_user_release_suffix" != x; then
-    USER_RELEASE_SUFFIX="$with_user_release_suffix"
-  fi
-
-  AC_ARG_WITH(build-number, [AS_HELP_STRING([--with-build-number],
-      [Set build number value for build @<:@b00@:>@])])
-  if test "x$with_build_number" = xyes; then
-    AC_MSG_ERROR([Build number must have a value])
-  elif test "x$with_build_number" != x; then
-    JDK_BUILD_NUMBER="$with_build_number"
-  fi
-  # Define default USER_RELEASE_SUFFIX if BUILD_NUMBER and USER_RELEASE_SUFFIX are not set
-  if test "x$JDK_BUILD_NUMBER" = x; then
-    JDK_BUILD_NUMBER=b00
-    if test "x$USER_RELEASE_SUFFIX" = x; then
-      BUILD_DATE=`date '+%Y_%m_%d_%H_%M'`
-      # Avoid [:alnum:] since it depends on the locale.
-      CLEAN_USERNAME=`echo "$USER" | $TR -d -c 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'`
-      USER_RELEASE_SUFFIX=`echo "${CLEAN_USERNAME}_${BUILD_DATE}" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
-    fi
-  fi
-
-  # Now set the JDK version, milestone, build number etc.
-  AC_SUBST(USER_RELEASE_SUFFIX)
-  AC_SUBST(JDK_MAJOR_VERSION)
-  AC_SUBST(JDK_MINOR_VERSION)
-  AC_SUBST(JDK_MICRO_VERSION)
-  AC_SUBST(JDK_UPDATE_VERSION)
-  AC_SUBST(JDK_BUILD_NUMBER)
-  AC_SUBST(MILESTONE)
-  AC_SUBST(LAUNCHER_NAME)
-  AC_SUBST(PRODUCT_NAME)
-  AC_SUBST(PRODUCT_SUFFIX)
-  AC_SUBST(JDK_RC_PLATFORM_NAME)
-  AC_SUBST(COMPANY_NAME)
-  AC_SUBST(MACOSX_BUNDLE_NAME_BASE)
-  AC_SUBST(MACOSX_BUNDLE_ID_BASE)
-
+  # Setup default copyright year. Mostly overridden when building close to a new year.
   AC_ARG_WITH(copyright-year, [AS_HELP_STRING([--with-copyright-year],
       [Set copyright year value for build @<:@current year@:>@])])
   if test "x$with_copyright_year" = xyes; then
@@ -549,16 +453,6 @@
     COPYRIGHT_YEAR=`date +'%Y'`
   fi
   AC_SUBST(COPYRIGHT_YEAR)
-
-  if test "x$JDK_UPDATE_VERSION" != x; then
-    JDK_VERSION="${JDK_MAJOR_VERSION}.${JDK_MINOR_VERSION}.${JDK_MICRO_VERSION}_${JDK_UPDATE_VERSION}"
-  else
-    JDK_VERSION="${JDK_MAJOR_VERSION}.${JDK_MINOR_VERSION}.${JDK_MICRO_VERSION}"
-  fi
-  AC_SUBST(JDK_VERSION)
-
-  COOKED_BUILD_NUMBER=`$ECHO $JDK_BUILD_NUMBER | $SED -e 's/^b//' -e 's/^0//'`
-  AC_SUBST(COOKED_BUILD_NUMBER)
 ])
 
 AC_DEFUN_ONCE([JDKOPT_SETUP_BUILD_TWEAKS],
@@ -574,6 +468,26 @@
   AC_SUBST(SALIB_NAME)
 ])
 
+###############################################################################
+#
+# Enable or disable the elliptic curve crypto implementation
+#
+AC_DEFUN_ONCE([JDKOPT_DETECT_INTREE_EC],
+[
+  AC_MSG_CHECKING([if elliptic curve crypto implementation is present])
+
+  if test -d "${SRC_ROOT}/jdk/src/jdk.crypto.ec/share/native/libsunec/impl"; then
+    ENABLE_INTREE_EC=yes
+    AC_MSG_RESULT([yes])
+  else
+    ENABLE_INTREE_EC=no
+    AC_MSG_RESULT([no])
+  fi
+
+  AC_SUBST(ENABLE_INTREE_EC)
+])
+
+
 AC_DEFUN_ONCE([JDKOPT_SETUP_DEBUG_SYMBOLS],
 [
   #
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/common/autoconf/jdk-version.m4	Wed Jul 05 21:04:26 2017 +0200
@@ -0,0 +1,321 @@
+#
+# Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+###############################################################################
+#
+# Setup version numbers
+#
+
+# Verify that a given string represents a valid version number, and assign it
+# to a variable.
+
+# Argument 1: the variable to assign to
+# Argument 2: the value given by the user
+AC_DEFUN([JDKVER_CHECK_AND_SET_NUMBER],
+[
+  # Additional [] needed to keep m4 from mangling shell constructs.
+  if [ ! [[ "$2" =~ ^0*([1-9][0-9]*)|(0)$ ]] ] ; then
+    AC_MSG_ERROR(["$2" is not a valid numerical value for $1])
+  fi
+  # Extract the version number without leading zeros.
+  cleaned_value=${BASH_REMATCH[[1]]}
+  if test "x$cleaned_value" = x; then
+    # Special case for zero
+    cleaned_value=${BASH_REMATCH[[2]]}
+  fi
+
+  if test $cleaned_value -gt 255; then
+    AC_MSG_ERROR([$1 is given as $2. This is greater than 255 which is not allowed.])
+  fi
+  if test "x$cleaned_value" != "x$2"; then
+    AC_MSG_WARN([Value for $1 has been sanitized from '$2' to '$cleaned_value'])
+  fi
+  $1=$cleaned_value
+])
+
+AC_DEFUN_ONCE([JDKVER_SETUP_JDK_VERSION_NUMBERS],
+[
+  # Warn user that old version arguments are deprecated.
+  BASIC_DEPRECATED_ARG_WITH([milestone])
+  BASIC_DEPRECATED_ARG_WITH([update-version])
+  BASIC_DEPRECATED_ARG_WITH([user-release-suffix])
+  BASIC_DEPRECATED_ARG_WITH([build-number])
+
+  # Source the version numbers file
+  . $AUTOCONF_DIR/version-numbers
+
+  # Some non-version number information is set in that file
+  AC_SUBST(LAUNCHER_NAME)
+  AC_SUBST(PRODUCT_NAME)
+  AC_SUBST(PRODUCT_SUFFIX)
+  AC_SUBST(JDK_RC_PLATFORM_NAME)
+  AC_SUBST(COMPANY_NAME)
+  AC_SUBST(MACOSX_BUNDLE_NAME_BASE)
+  AC_SUBST(MACOSX_BUNDLE_ID_BASE)
+
+  # Override version from arguments
+
+  # If --with-version-string is set, process it first. It is possible to
+  # override parts with more specific flags, since these are processed later.
+  AC_ARG_WITH(version-string, [AS_HELP_STRING([--with-version-string],
+      [Set version string @<:@calculated@:>@])])
+  if test "x$with_version_string" = xyes; then
+    AC_MSG_ERROR([--with-version-string must have a value])
+  elif test "x$with_version_string" != x; then
+    # Additional [] needed to keep m4 from mangling shell constructs.
+    if [ [[ $with_version_string =~ ^([0-9]+)(\.([0-9]+))?(\.([0-9]+))?(\.([0-9]+))?(-([a-zA-Z]+))?((\+)([0-9]+)?(-([-a-zA-Z0-9.]+))?)?$ ]] ]; then
+      VERSION_MAJOR=${BASH_REMATCH[[1]]}
+      VERSION_MINOR=${BASH_REMATCH[[3]]}
+      VERSION_SECURITY=${BASH_REMATCH[[5]]}
+      VERSION_PATCH=${BASH_REMATCH[[7]]}
+      VERSION_PRE=${BASH_REMATCH[[9]]}
+      version_plus_separator=${BASH_REMATCH[[11]]}
+      VERSION_BUILD=${BASH_REMATCH[[12]]}
+      VERSION_OPT=${BASH_REMATCH[[14]]}
+      # Unspecified numerical fields are interpreted as 0.
+      if test "x$VERSION_MINOR" = x; then
+        VERSION_MINOR=0
+      fi
+      if test "x$VERSION_SECURITY" = x; then
+        VERSION_SECURITY=0
+      fi
+      if test "x$VERSION_PATCH" = x; then
+        VERSION_PATCH=0
+      fi
+      if test "x$version_plus_separator" != x \
+          && test "x$VERSION_BUILD$VERSION_OPT" = x; then
+        AC_MSG_ERROR([Version string contains + but both 'BUILD' and 'OPT' are missing])
+      fi
+      # Stop the version part process from setting default values.
+      # We still allow them to explicitely override though.
+      NO_DEFAULT_VERSION_PARTS=true
+    else
+      AC_MSG_ERROR([--with-version-string fails to parse as a valid version string: $with_version_string])
+    fi
+  fi
+
+  AC_ARG_WITH(version-pre, [AS_HELP_STRING([--with-version-pre],
+      [Set the base part of the version 'PRE' field (pre-release identifier) @<:@'internal'@:>@])],
+      [with_version_pre_present=true], [with_version_pre_present=false])
+
+  if test "x$with_version_pre_present" = xtrue; then
+    if test "x$with_version_pre" = xyes; then
+      AC_MSG_ERROR([--with-version-pre must have a value])
+    elif test "x$with_version_pre" = xno; then
+      # Interpret --without-* as empty string instead of the literal "no"
+      VERSION_PRE=
+    else
+      # Only [a-zA-Z] is allowed in the VERSION_PRE. Outer [ ] to quote m4.
+      [ VERSION_PRE=`$ECHO "$with_version_pre" | $TR -c -d '[a-z][A-Z]'` ]
+      if test "x$VERSION_PRE" != "x$with_version_pre"; then
+        AC_MSG_WARN([--with-version-pre value has been sanitized from '$with_version_pre' to '$VERSION_PRE'])
+      fi
+    fi
+  else
+    if test "x$NO_DEFAULT_VERSION_PARTS" != xtrue; then
+      # Default is to use "internal" as pre
+      VERSION_PRE="internal"
+    fi
+  fi
+
+  AC_ARG_WITH(version-opt, [AS_HELP_STRING([--with-version-opt],
+      [Set version 'OPT' field (build metadata) @<:@<timestamp>.<user>.<dirname>@:>@])],
+      [with_version_opt_present=true], [with_version_opt_present=false])
+
+  if test "x$with_version_opt_present" = xtrue; then
+    if test "x$with_version_opt" = xyes; then
+      AC_MSG_ERROR([--with-version-opt must have a value])
+    elif test "x$with_version_opt" = xno; then
+      # Interpret --without-* as empty string instead of the literal "no"
+      VERSION_OPT=
+    else
+      # Only [-.a-zA-Z0-9] is allowed in the VERSION_OPT. Outer [ ] to quote m4.
+      [ VERSION_OPT=`$ECHO "$with_version_opt" | $TR -c -d '[a-z][A-Z][0-9].-'` ]
+      if test "x$VERSION_OPT" != "x$with_version_opt"; then
+        AC_MSG_WARN([--with-version-opt value has been sanitized from '$with_version_opt' to '$VERSION_OPT'])
+      fi
+    fi
+  else
+    if test "x$NO_DEFAULT_VERSION_PARTS" != xtrue; then
+      # Default is to calculate a string like this <timestamp>.<username>.<base dir name>
+      timestamp=`$DATE '+%Y-%m-%d-%H%M%S'`
+      # Outer [ ] to quote m4.
+      [ username=`$ECHO "$USER" | $TR -d -c '[a-z][A-Z][0-9]'` ]
+      [ basedirname=`$BASENAME "$TOPDIR" | $TR -d -c '[a-z][A-Z][0-9].-'` ]
+      VERSION_OPT="$timestamp.$username.$basedirname"
+    fi
+  fi
+
+  AC_ARG_WITH(version-build, [AS_HELP_STRING([--with-version-build],
+      [Set version 'BUILD' field (build number) @<:@not specified@:>@])],
+      [with_version_build_present=true], [with_version_build_present=false])
+
+  if test "x$with_version_build_present" = xtrue; then
+    if test "x$with_version_build" = xyes; then
+      AC_MSG_ERROR([--with-version-build must have a value])
+    elif test "x$with_version_build" = xno; then
+      # Interpret --without-* as empty string instead of the literal "no"
+      VERSION_BUILD=
+    elif test "x$with_version_build" = x; then
+      VERSION_BUILD=
+    else
+      JDKVER_CHECK_AND_SET_NUMBER(VERSION_BUILD, $with_version_build)
+    fi
+  else
+    if test "x$NO_DEFAULT_VERSION_PARTS" != xtrue; then
+      # Default is to not have a build number.
+      VERSION_BUILD=""
+      # FIXME: Until all code can cope with an empty VERSION_BUILD, set it to 0.
+      VERSION_BUILD=0
+    fi
+  fi
+
+  AC_ARG_WITH(version-major, [AS_HELP_STRING([--with-version-major],
+      [Set version 'MAJOR' field (first number) @<:@current source value@:>@])],
+      [with_version_major_present=true], [with_version_major_present=false])
+
+  if test "x$with_version_major_present" = xtrue; then
+    if test "x$with_version_major" = xyes; then
+      AC_MSG_ERROR([--with-version-major must have a value])
+    else
+      JDKVER_CHECK_AND_SET_NUMBER(VERSION_MAJOR, $with_version_major)
+    fi
+  else
+    if test "x$NO_DEFAULT_VERSION_PARTS" != xtrue; then
+      # Default is to get value from version-numbers
+      VERSION_MAJOR="$DEFAULT_VERSION_MAJOR"
+    fi
+  fi
+
+  AC_ARG_WITH(version-minor, [AS_HELP_STRING([--with-version-minor],
+      [Set version 'MINOR' field (second number) @<:@current source value@:>@])],
+      [with_version_minor_present=true], [with_version_minor_present=false])
+
+  if test "x$with_version_minor_present" = xtrue; then
+    if test "x$with_version_minor" = xyes; then
+      AC_MSG_ERROR([--with-version-minor must have a value])
+    elif test "x$with_version_minor" = xno; then
+      # Interpret --without-* as empty string (i.e. 0) instead of the literal "no"
+      VERSION_MINOR=0
+    elif test "x$with_version_minor" = x; then
+      VERSION_MINOR=0
+    else
+      JDKVER_CHECK_AND_SET_NUMBER(VERSION_MINOR, $with_version_minor)
+    fi
+  else
+    if test "x$NO_DEFAULT_VERSION_PARTS" != xtrue; then
+      # Default is 0, if unspecified
+      VERSION_MINOR=0
+    fi
+  fi
+
+  AC_ARG_WITH(version-security, [AS_HELP_STRING([--with-version-security],
+      [Set version 'SECURITY' field (third number) @<:@current source value@:>@])],
+      [with_version_security_present=true], [with_version_security_present=false])
+
+  if test "x$with_version_security_present" = xtrue; then
+    if test "x$with_version_security" = xyes; then
+      AC_MSG_ERROR([--with-version-security must have a value])
+    elif test "x$with_version_security" = xno; then
+      # Interpret --without-* as empty string (i.e. 0) instead of the literal "no"
+      VERSION_SECURITY=0
+    elif test "x$with_version_security" = x; then
+      VERSION_SECURITY=0
+    else
+      JDKVER_CHECK_AND_SET_NUMBER(VERSION_SECURITY, $with_version_security)
+    fi
+  else
+    if test "x$NO_DEFAULT_VERSION_PARTS" != xtrue; then
+      # Default is 0, if unspecified
+      VERSION_SECURITY=0
+    fi
+  fi
+
+  AC_ARG_WITH(version-patch, [AS_HELP_STRING([--with-version-patch],
+      [Set version 'PATCH' field (fourth number) @<:@not specified@:>@])],
+      [with_version_patch_present=true], [with_version_patch_present=false])
+
+  if test "x$with_version_patch_present" = xtrue; then
+    if test "x$with_version_patch" = xyes; then
+      AC_MSG_ERROR([--with-version-patch must have a value])
+    elif test "x$with_version_patch" = xno; then
+      # Interpret --without-* as empty string (i.e. 0) instead of the literal "no"
+      VERSION_PATCH=0
+    elif test "x$with_version_patch" = x; then
+      VERSION_PATCH=0
+    else
+      JDKVER_CHECK_AND_SET_NUMBER(VERSION_PATCH, $with_version_patch)
+    fi
+  else
+    if test "x$NO_DEFAULT_VERSION_PARTS" != xtrue; then
+      # Default is 0, if unspecified
+      VERSION_PATCH=0
+    fi
+  fi
+
+  # Calculate derived version properties
+
+  # Set VERSION_IS_GA based on if VERSION_PRE has a value
+  if test "x$VERSION_PRE" = x; then
+    VERSION_IS_GA=true
+  else
+    VERSION_IS_GA=false
+  fi
+
+  # VERSION_NUMBER but always with exactly 4 positions, with 0 for empty positions.
+  VERSION_NUMBER_FOUR_POSITIONS=$VERSION_MAJOR.$VERSION_MINOR.$VERSION_SECURITY.$VERSION_PATCH
+
+  stripped_version_number=$VERSION_NUMBER_FOUR_POSITIONS
+  # Strip trailing zeroes from stripped_version_number
+  for i in 1 2 3 ; do stripped_version_number=${stripped_version_number%.0} ; done
+  VERSION_NUMBER=$stripped_version_number
+
+  # The complete version string, with additional build information
+  if test "x$VERSION_BUILD$VERSION_OPT" = x; then
+    VERSION_STRING=$VERSION_NUMBER${VERSION_PRE:+-$VERSION_PRE}
+  else
+    # If either build or opt is set, we need a + separator
+    VERSION_STRING=$VERSION_NUMBER${VERSION_PRE:+-$VERSION_PRE}+$VERSION_BUILD${VERSION_OPT:+-$VERSION_OPT}
+  fi
+
+  # The short version string, just VERSION_NUMBER and PRE, if present.
+  VERSION_SHORT=$VERSION_NUMBER${VERSION_PRE:+-$VERSION_PRE}
+
+  AC_MSG_CHECKING([for version string])
+  AC_MSG_RESULT([$VERSION_STRING])
+
+  AC_SUBST(VERSION_MAJOR)
+  AC_SUBST(VERSION_MINOR)
+  AC_SUBST(VERSION_SECURITY)
+  AC_SUBST(VERSION_PATCH)
+  AC_SUBST(VERSION_PRE)
+  AC_SUBST(VERSION_BUILD)
+  AC_SUBST(VERSION_OPT)
+  AC_SUBST(VERSION_NUMBER)
+  AC_SUBST(VERSION_NUMBER_FOUR_POSITIONS)
+  AC_SUBST(VERSION_STRING)
+  AC_SUBST(VERSION_SHORT)
+  AC_SUBST(VERSION_IS_GA)
+])
--- a/common/autoconf/spec.gmk.in	Wed Jul 05 21:02:33 2017 +0200
+++ b/common/autoconf/spec.gmk.in	Wed Jul 05 21:04:26 2017 +0200
@@ -130,13 +130,53 @@
 NASHORN_TOPDIR:=@NASHORN_TOPDIR@
 COPYRIGHT_YEAR:=@COPYRIGHT_YEAR@
 
-# Information gathered from the version.numbers file.
-JDK_MAJOR_VERSION:=@JDK_MAJOR_VERSION@
-JDK_MINOR_VERSION:=@JDK_MINOR_VERSION@
-JDK_MICRO_VERSION:=@JDK_MICRO_VERSION@
-JDK_UPDATE_VERSION:=@JDK_UPDATE_VERSION@
-JDK_BUILD_NUMBER:=@JDK_BUILD_NUMBER@
-MILESTONE:=@MILESTONE@
+# New (JEP-223) version information
+
+## Building blocks of the version string
+# First three version numbers, with well-specified meanings (numerical)
+VERSION_MAJOR := @VERSION_MAJOR@
+VERSION_MINOR := @VERSION_MINOR@
+VERSION_SECURITY := @VERSION_SECURITY@
+# Optional fourth element for use by OpenJDK consumers (numerical)
+VERSION_PATCH := @VERSION_PATCH@
+# The pre-release identifier (string)
+VERSION_PRE := @VERSION_PRE@
+# The build number (numerical)
+VERSION_BUILD := @VERSION_BUILD@
+# Optional build information (string)
+VERSION_OPT := @VERSION_OPT@
+
+## Composite variables
+# The version number as a dot separated sequence of numbers, e.g. 9.0.1
+VERSION_NUMBER := @VERSION_NUMBER@
+# VERSION_NUMBER but always with exactly 4 positions, with 0 for empty positions.
+VERSION_NUMBER_FOUR_POSITIONS := @VERSION_NUMBER_FOUR_POSITIONS@
+# The complete version string, with additional build information
+VERSION_STRING := @VERSION_STRING@
+# The short version string, without trailing zeroes and just PRE, if present.
+VERSION_SHORT := @VERSION_SHORT@
+# The Java specification version. It should be equal to version number.
+VERSION_SPECIFICATION := @VERSION_NUMBER@
+# A GA version is defined by the PRE string being empty. Rather than testing for
+# that, this variable defines it with true/false.
+VERSION_IS_GA := @VERSION_IS_GA@
+
+# Convenience CFLAGS settings for passing version information into native programs.
+VERSION_CFLAGS := \
+    -DVERSION_MAJOR=$(VERSION_MAJOR) \
+    -DVERSION_MINOR=$(VERSION_MINOR) \
+    -DVERSION_SECURITY=$(VERSION_SECURITY) \
+    -DVERSION_PATCH=$(VERSION_PATCH) \
+    -DVERSION_PRE='"$(VERSION_PRE)"' \
+    -DVERSION_BUILD=$(VERSION_BUILD) \
+    -DVERSION_OPT='"$(VERSION_OPT)"' \
+    -DVERSION_NUMBER='"$(VERSION_NUMBER)"' \
+    -DVERSION_STRING='"$(VERSION_STRING)"' \
+    -DVERSION_SHORT='"$(VERSION_SHORT)"' \
+    -DVERSION_SPECIFICATION='"$(VERSION_SPECIFICATION)"' \
+    #
+
+# Platform naming variables
 LAUNCHER_NAME:=@LAUNCHER_NAME@
 PRODUCT_NAME:=@PRODUCT_NAME@
 PRODUCT_SUFFIX:=@PRODUCT_SUFFIX@
@@ -144,27 +184,9 @@
 COMPANY_NAME:=@COMPANY_NAME@
 MACOSX_BUNDLE_NAME_BASE=@MACOSX_BUNDLE_NAME_BASE@
 MACOSX_BUNDLE_ID_BASE=@MACOSX_BUNDLE_ID_BASE@
-USER_RELEASE_SUFFIX=@USER_RELEASE_SUFFIX@
 
-# Different version strings generated from the above information.
-JDK_VERSION:=@JDK_VERSION@
+# Different naming strings generated from the above information.
 RUNTIME_NAME=$(PRODUCT_NAME) $(PRODUCT_SUFFIX)
-COOKED_BUILD_NUMBER:=@COOKED_BUILD_NUMBER@
-# These variables need to be generated here so that MILESTONE and
-# JDK_BUILD_NUMBER can be overridden on the make command line.
-ifeq ($(MILESTONE), fcs)
-  RELEASE=$(JDK_VERSION)$(BUILD_VARIANT_RELEASE)
-else
-  RELEASE=$(JDK_VERSION)-$(MILESTONE)$(BUILD_VARIANT_RELEASE)
-endif
-
-ifneq ($(USER_RELEASE_SUFFIX), )
-  FULL_VERSION=$(RELEASE)-$(USER_RELEASE_SUFFIX)-$(JDK_BUILD_NUMBER)
-else
-  FULL_VERSION=$(RELEASE)-$(JDK_BUILD_NUMBER)
-endif
-JRE_RELEASE_VERSION:=$(FULL_VERSION)
-JDK_VERSION_FOR_MANIFEST := $(JDK_MINOR_VERSION).$(JDK_MICRO_VERSION).$(if $(JDK_UPDATE_VERSION),$(JDK_UPDATE_VERSION),0).$(COOKED_BUILD_NUMBER)
 
 # How to compile the code: release, fastdebug or slowdebug
 DEBUG_LEVEL:=@DEBUG_LEVEL@
@@ -641,8 +663,8 @@
 SYMBOLS_IMAGE_DIR=$(IMAGES_OUTPUTDIR)/$(SYMBOLS_IMAGE_SUBDIR)
 
 # Macosx bundles directory definitions
-JDK_MACOSX_BUNDLE_SUBDIR=jdk-bundle/jdk$(JDK_VERSION).jdk/Contents
-JRE_MACOSX_BUNDLE_SUBDIR=jre-bundle/jre$(JDK_VERSION).jre/Contents
+JDK_MACOSX_BUNDLE_SUBDIR=jdk-bundle/jdk-$(VERSION_NUMBER).jdk/Contents
+JRE_MACOSX_BUNDLE_SUBDIR=jre-bundle/jre-$(VERSION_NUMBER).jre/Contents
 JDK_MACOSX_BUNDLE_DIR=$(IMAGES_OUTPUTDIR)/$(JDK_MACOSX_BUNDLE_SUBDIR)
 JRE_MACOSX_BUNDLE_DIR=$(IMAGES_OUTPUTDIR)/$(JRE_MACOSX_BUNDLE_SUBDIR)
 
--- a/common/autoconf/version-numbers	Wed Jul 05 21:02:33 2017 +0200
+++ b/common/autoconf/version-numbers	Wed Jul 05 21:04:26 2017 +0200
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -23,10 +23,10 @@
 # questions.
 #
 
-JDK_MAJOR_VERSION=1
-JDK_MINOR_VERSION=9
-JDK_MICRO_VERSION=0
-JDK_UPDATE_VERSION=
+# Default version numbers to use unless overridden by configure
+
+DEFAULT_VERSION_MAJOR=9
+
 LAUNCHER_NAME=openjdk
 PRODUCT_NAME=OpenJDK
 PRODUCT_SUFFIX="Runtime Environment"
--- a/common/bin/test_builds.sh	Wed Jul 05 21:02:33 2017 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,183 +0,0 @@
-#!/bin/bash
-
-set -x
-set -e
-
-options="$*"
-option="$1"
-
-tmp=/tmp/test_builds.$$
-rm -f -r ${tmp}
-mkdir -p ${tmp}
-
-errMessages=${tmp}/error_messages.txt
-
-#######
-# Error function
-error() # message
-{
-   echo "ERROR: $1" | tee -a ${errMessages}
-}
-# Check errors
-checkErrors()
-{
-    if [ -s ${errMessages} ] ; then
-        cat ${errMessages}
-	exit 1
-    fi
-}
-#######
-
-os="`uname -s`"
-arch="`uname -p`"
-make=make
-
-if [ "${os}" = "SunOS" ] ; then
-  make=gmake
-  export J7="/opt/java/jdk1.7.0"
-elif [ "${os}" = "Darwin" ] ; then
-  export J7="/Library/Java/JavaVirtualMachines/1.7.0.jdk/Contents/Home"
-elif [ "${os}" = "Linux" -a "${arch}" = "x86_64" ] ; then
-  export J7="/usr/lib/jvm/java-7-openjdk-amd64/"
-else
-  echo "What os/arch is this: ${os}/${arch}"
-  exit 1
-fi
-
-# Must have a jdk7
-if [ ! -d ${J7} ] ; then
-  echo "No JDK7 found at: ${J7}"
-  exit 1
-fi
-
-# What sources we use
-fromroot="http://hg.openjdk.java.net/build-infra/jdk8"
-
-# Where we do it
-root="testbuilds"
-mkdir -p ${root}
-
-# Three areas, last three are cloned from first to insure sameness
-t0=${root}/t0
-t1=${root}/t1
-t2=${root}/t2
-t3=${root}/t3
-repolist="${t0} ${t1} ${t2} ${t3}"
-
-# Optional complete clobber
-if [ "${option}" = "clobber" ] ; then
-  for i in ${repolist} ; do
-    rm -f -r ${i}
-  done
-fi
-
-# Get top repos
-if [ ! -d ${t0}/.hg ] ; then
-  rm -f -r ${t0}
-  hg clone ${fromroot} ${t0}
-fi
-for i in ${t1} ${t2} ${t3} ; do
-  if [ ! -d ${i}/.hg ] ; then
-    hg clone ${t0} ${i}
-  fi
-done
-
-# Get repos updated
-for i in ${repolist} ; do
-  ( \
-    set -e \
-    && cd ${i} \
-    && sh ./get_source.sh \
-    || error "Cannot get source" \
-  ) 2>&1 | tee ${i}.get_source.txt
-  checkErrors
-done
-
-# Optional clean
-if [ "${option}" = "clean" ] ; then
-  for i in ${repolist} ; do
-    rm -f -r ${i}/build
-    rm -f -r ${i}/*/build
-    rm -f -r ${i}/*/dist
-  done
-fi
-
-# Check changes on working set files
-for i in ${repolist} ; do
-  ( \
-    set -e \
-    && cd ${i} \
-    && sh ./make/scripts/hgforest.sh status \
-    || error "Cannot check status" \
-  ) 2>&1 | tee ${i}.hg.status.txt
-  checkErrors
-done
-
-# Configure for build-infra building
-for i in ${t1} ${t2} ; do
-  ( \
-    set -e \
-    && cd ${i}/common/makefiles \
-    && sh ../autoconf/configure --with-boot-jdk=${J7} \
-    || error "Cannot configure" \
-  ) 2>&1 | tee ${i}.config.txt
-  checkErrors
-done
-
-# Do build-infra builds
-for i in ${t1} ${t2} ; do
-  ( \
-    set -e \
-    && cd ${i}/common/makefiles \
-    && ${make}  \
-      FULL_VERSION:=1.8.0-internal-b00 \
-      JRE_RELEASE_VERSION:=1.8.0-internal-b00 \
-      USER_RELEASE_SUFFIX:=compare \
-      RELEASE:=1.8.0-internal \
-      VERBOSE= \
-      LIBARCH= \
-         all images \
-    || error "Cannot build" \
-  ) 2>&1 | tee ${i}.build.txt
-  checkErrors
-done
-
-# Compare build-infra builds
-( \
-  sh ${t0}/common/bin/compareimage.sh \
-    ${t1}/build/*/images/j2sdk-image \
-    ${t2}/build/*/images/j2sdk-image \
-    || error "Cannot compare" \
-) 2>&1 | tee ${root}/build-infra-comparison.txt
-checkErrors
-
-# Do old build
-unset JAVA_HOME
-export ALT_BOOTDIR="${J7}"
-( \
-  cd ${t3} \
-  && ${make} FULL_VERSION='"1.8.0-internal" sanity \
-  || error "Cannot sanity" \
-) 2>&1 | tee ${t3}.sanity.txt
-checkErrors
-( \
-  cd ${t3} \
-  && ${make} \
-      FULL_VERSION='"1.8.0-internal" \
-      JRE_RELEASE_VERSION:=1.8.0-internal-b00 \
-      USER_RELEASE_SUFFIX:=compare \
-      RELEASE:=1.8.0-internal \
-  || error "Cannot build old way" \
-) 2>&1 | tee ${t3}.build.txt
-checkErrors
-
-# Compare old build to build-infra build
-( \
-  sh ${t0}/common/bin/compareimage.sh \
-    ${t3}/build/*/j2sdk-image \
-    ${t1}/build/*/images/j2sdk-image \
-    || error "Cannot compare" \
-) 2>&1 | tee ${root}/build-comparison.txt
-checkErrors
-
-exit 0
--- a/common/nb_native/nbproject/configurations.xml	Wed Jul 05 21:02:33 2017 +0200
+++ b/common/nb_native/nbproject/configurations.xml	Wed Jul 05 21:04:26 2017 +0200
@@ -1911,15 +1911,9 @@
           <Elem>IDE_ALT_BOOTDIR</Elem>
         </envVariables>
         <transientMacros>
-          <Elem>FULL_VERSION="version"</Elem>
           <Elem>HOTSPOT_BUILD_TARGET="target"</Elem>
           <Elem>HOTSPOT_BUILD_USER="user"</Elem>
           <Elem>HOTSPOT_RELEASE_VERSION="version"</Elem>
-          <Elem>JDK_BUILD_NUMBER="nn"</Elem>
-          <Elem>JDK_MAJOR_VERSION="version"</Elem>
-          <Elem>JDK_MICRO_VERSION="version"</Elem>
-          <Elem>JDK_MINOR_VERSION="minor"</Elem>
-          <Elem>JRE_RELEASE_VERSION="version"</Elem>
         </transientMacros>
       </codeAssistance>
       <makefileType>
@@ -4534,7 +4528,6 @@
             flavor2="0">
         <ccTool>
           <preprocessorList>
-            <Elem>JRE_RELEASE_VERSION="version"</Elem>
           </preprocessorList>
         </ccTool>
       </item>
@@ -4857,15 +4850,12 @@
           <preprocessorList>
             <Elem>AMD64</Elem>
             <Elem>ARCH="amd64"</Elem>
-            <Elem>FULL_VERSION="version"</Elem>
             <Elem>GAMMA</Elem>
             <Elem>HOTSPOT_BUILD_TARGET="target"</Elem>
             <Elem>HOTSPOT_BUILD_USER="user"</Elem>
             <Elem>HOTSPOT_LIB_ARCH="amd64"</Elem>
             <Elem>HOTSPOT_RELEASE_VERSION="version"</Elem>
             <Elem>HOTSPOT_VM_DISTRO="OpenJDK"</Elem>
-            <Elem>JDK_MAJOR_VERSION="version"</Elem>
-            <Elem>JDK_MINOR_VERSION="minor"</Elem>
             <Elem>LAUNCHER_TYPE="gamma"</Elem>
             <Elem>LINK_INTO_LIBJVM</Elem>
             <Elem>PRODUCT</Elem>
@@ -5346,10 +5336,6 @@
           </incDir>
           <preprocessorList>
             <Elem>ARCHPROPNAME="amd64"</Elem>
-            <Elem>JDK_BUILD_NUMBER="nn"</Elem>
-            <Elem>JDK_MAJOR_VERSION="version"</Elem>
-            <Elem>JDK_MICRO_VERSION="version"</Elem>
-            <Elem>JDK_MINOR_VERSION="minor"</Elem>
           </preprocessorList>
         </cTool>
       </folder>
@@ -5399,10 +5385,6 @@
           </incDir>
           <preprocessorList>
             <Elem>ARCHPROPNAME="amd64"</Elem>
-            <Elem>JDK_BUILD_NUMBER="nn"</Elem>
-            <Elem>JDK_MAJOR_VERSION="version"</Elem>
-            <Elem>JDK_MICRO_VERSION="version"</Elem>
-            <Elem>JDK_MINOR_VERSION="minor"</Elem>
             <Elem>THIS_FILE="Finalizer.c"</Elem>
           </preprocessorList>
         </cTool>
@@ -5429,10 +5411,6 @@
           </incDir>
           <preprocessorList>
             <Elem>ARCHPROPNAME="amd64"</Elem>
-            <Elem>JDK_BUILD_NUMBER="nn"</Elem>
-            <Elem>JDK_MAJOR_VERSION="version"</Elem>
-            <Elem>JDK_MICRO_VERSION="version"</Elem>
-            <Elem>JDK_MINOR_VERSION="minor"</Elem>
             <Elem>THIS_FILE="Array.c"</Elem>
           </preprocessorList>
         </cTool>
@@ -5488,10 +5466,6 @@
           </incDir>
           <preprocessorList>
             <Elem>ARCHPROPNAME="amd64"</Elem>
-            <Elem>JDK_BUILD_NUMBER="nn"</Elem>
-            <Elem>JDK_MAJOR_VERSION="version"</Elem>
-            <Elem>JDK_MICRO_VERSION="version"</Elem>
-            <Elem>JDK_MINOR_VERSION="minor"</Elem>
             <Elem>THIS_FILE="Bits.c"</Elem>
           </preprocessorList>
         </cTool>
@@ -5525,10 +5499,6 @@
           </incDir>
           <preprocessorList>
             <Elem>ARCHPROPNAME="amd64"</Elem>
-            <Elem>JDK_BUILD_NUMBER="nn"</Elem>
-            <Elem>JDK_MAJOR_VERSION="version"</Elem>
-            <Elem>JDK_MICRO_VERSION="version"</Elem>
-            <Elem>JDK_MINOR_VERSION="minor"</Elem>
             <Elem>THIS_FILE="AccessController.c"</Elem>
           </preprocessorList>
         </cTool>
@@ -5569,10 +5539,6 @@
           </incDir>
           <preprocessorList>
             <Elem>ARCHPROPNAME="amd64"</Elem>
-            <Elem>JDK_BUILD_NUMBER="nn"</Elem>
-            <Elem>JDK_MAJOR_VERSION="version"</Elem>
-            <Elem>JDK_MICRO_VERSION="version"</Elem>
-            <Elem>JDK_MINOR_VERSION="minor"</Elem>
           </preprocessorList>
         </cTool>
       </folder>
@@ -6141,10 +6107,6 @@
           <preprocessorList>
             <Elem>ARCH="amd64"</Elem>
             <Elem>ARCHPROPNAME="amd64"</Elem>
-            <Elem>JDK_BUILD_NUMBER="nn"</Elem>
-            <Elem>JDK_MAJOR_VERSION="version"</Elem>
-            <Elem>JDK_MICRO_VERSION="version"</Elem>
-            <Elem>JDK_MINOR_VERSION="minor"</Elem>
             <Elem>LINUX</Elem>
             <Elem>NDEBUG</Elem>
             <Elem>RELEASE=""</Elem>
@@ -6198,10 +6160,6 @@
           <preprocessorList>
             <Elem>ARCH="amd64"</Elem>
             <Elem>ARCHPROPNAME="amd64"</Elem>
-            <Elem>JDK_BUILD_NUMBER="nn"</Elem>
-            <Elem>JDK_MAJOR_VERSION="version"</Elem>
-            <Elem>JDK_MICRO_VERSION="version"</Elem>
-            <Elem>JDK_MINOR_VERSION="minor"</Elem>
             <Elem>LINUX</Elem>
             <Elem>NDEBUG</Elem>
             <Elem>RELEASE=""</Elem>
@@ -6577,10 +6535,6 @@
           </incDir>
           <preprocessorList>
             <Elem>ARCHPROPNAME="amd64"</Elem>
-            <Elem>JDK_BUILD_NUMBER="nn"</Elem>
-            <Elem>JDK_MAJOR_VERSION="version"</Elem>
-            <Elem>JDK_MICRO_VERSION="version"</Elem>
-            <Elem>JDK_MINOR_VERSION="minor"</Elem>
             <Elem>THIS_FILE="jdk_util_md.c"</Elem>
           </preprocessorList>
         </cTool>
@@ -6623,10 +6577,6 @@
           </incDir>
           <preprocessorList>
             <Elem>ARCHPROPNAME="amd64"</Elem>
-            <Elem>JDK_BUILD_NUMBER="nn"</Elem>
-            <Elem>JDK_MAJOR_VERSION="version"</Elem>
-            <Elem>JDK_MICRO_VERSION="version"</Elem>
-            <Elem>JDK_MINOR_VERSION="minor"</Elem>
           </preprocessorList>
         </cTool>
       </folder>
@@ -6652,10 +6602,6 @@
           </incDir>
           <preprocessorList>
             <Elem>ARCHPROPNAME="amd64"</Elem>
-            <Elem>JDK_BUILD_NUMBER="nn"</Elem>
-            <Elem>JDK_MAJOR_VERSION="version"</Elem>
-            <Elem>JDK_MICRO_VERSION="version"</Elem>
-            <Elem>JDK_MINOR_VERSION="minor"</Elem>
             <Elem>THIS_FILE="ProcessEnvironment_md.c"</Elem>
           </preprocessorList>
         </cTool>
@@ -6711,10 +6657,6 @@
           </incDir>
           <preprocessorList>
             <Elem>ARCHPROPNAME="amd64"</Elem>
-            <Elem>JDK_BUILD_NUMBER="nn"</Elem>
-            <Elem>JDK_MAJOR_VERSION="version"</Elem>
-            <Elem>JDK_MICRO_VERSION="version"</Elem>
-            <Elem>JDK_MINOR_VERSION="minor"</Elem>
             <Elem>THIS_FILE="FileSystemPreferences.c"</Elem>
           </preprocessorList>
         </cTool>
@@ -7037,10 +6979,6 @@
           </incDir>
           <preprocessorList>
             <Elem>ARCHPROPNAME="amd64"</Elem>
-            <Elem>JDK_BUILD_NUMBER="nn"</Elem>
-            <Elem>JDK_MAJOR_VERSION="version"</Elem>
-            <Elem>JDK_MICRO_VERSION="version"</Elem>
-            <Elem>JDK_MINOR_VERSION="minor"</Elem>
             <Elem>THIS_FILE="HostLocaleProviderAdapter_md.c"</Elem>
           </preprocessorList>
         </cTool>
@@ -7135,15 +7073,9 @@
           <Elem>IDE_ALT_BOOTDIR</Elem>
         </envVariables>
         <transientMacros>
-          <Elem>FULL_VERSION="version"</Elem>
           <Elem>HOTSPOT_BUILD_TARGET="target"</Elem>
           <Elem>HOTSPOT_BUILD_USER="user"</Elem>
           <Elem>HOTSPOT_RELEASE_VERSION="version"</Elem>
-          <Elem>JDK_BUILD_NUMBER="nn"</Elem>
-          <Elem>JDK_MAJOR_VERSION="version"</Elem>
-          <Elem>JDK_MICRO_VERSION="version"</Elem>
-          <Elem>JDK_MINOR_VERSION="minor"</Elem>
-          <Elem>JRE_RELEASE_VERSION="version"</Elem>
         </transientMacros>
       </codeAssistance>
       <makefileType>
@@ -9822,7 +9754,6 @@
             flavor2="0">
         <ccTool>
           <preprocessorList>
-            <Elem>JRE_RELEASE_VERSION="version"</Elem>
           </preprocessorList>
         </ccTool>
       </item>
@@ -10483,10 +10414,7 @@
           </incDir>
           <preprocessorList>
             <Elem>EXPAND_CLASSPATH_WILDCARDS</Elem>
-            <Elem>FULL_VERSION="version"</Elem>
             <Elem>JAVA_ARGS={ "-J-ms8m", "com.sun.tools.javac.Main", }</Elem>
-            <Elem>JDK_MAJOR_VERSION="version"</Elem>
-            <Elem>JDK_MINOR_VERSION="minor"</Elem>
             <Elem>LAUNCHER_NAME="openjdk"</Elem>
             <Elem>NEVER_ACT_AS_SERVER_CLASS_MACHINE</Elem>
             <Elem>PROGNAME="javac"</Elem>
@@ -11349,10 +11277,6 @@
           </incDir>
           <preprocessorList>
             <Elem>ARCHPROPNAME="amd64"</Elem>
-            <Elem>JDK_BUILD_NUMBER="nn"</Elem>
-            <Elem>JDK_MAJOR_VERSION="version"</Elem>
-            <Elem>JDK_MICRO_VERSION="version"</Elem>
-            <Elem>JDK_MINOR_VERSION="minor"</Elem>
             <Elem>THIS_FILE="check_version.c"</Elem>
           </preprocessorList>
         </cTool>
@@ -11382,10 +11306,6 @@
           </incDir>
           <preprocessorList>
             <Elem>ARCHPROPNAME="amd64"</Elem>
-            <Elem>JDK_BUILD_NUMBER="nn"</Elem>
-            <Elem>JDK_MAJOR_VERSION="version"</Elem>
-            <Elem>JDK_MICRO_VERSION="version"</Elem>
-            <Elem>JDK_MINOR_VERSION="minor"</Elem>
             <Elem>THIS_FILE="jdk_util.c"</Elem>
           </preprocessorList>
         </cTool>
@@ -11415,10 +11335,6 @@
           </incDir>
           <preprocessorList>
             <Elem>ARCHPROPNAME="amd64"</Elem>
-            <Elem>JDK_BUILD_NUMBER="nn"</Elem>
-            <Elem>JDK_MAJOR_VERSION="version"</Elem>
-            <Elem>JDK_MICRO_VERSION="version"</Elem>
-            <Elem>JDK_MINOR_VERSION="minor"</Elem>
             <Elem>THIS_FILE="jio.c"</Elem>
           </preprocessorList>
         </cTool>
@@ -11448,10 +11364,6 @@
           </incDir>
           <preprocessorList>
             <Elem>ARCHPROPNAME="amd64"</Elem>
-            <Elem>JDK_BUILD_NUMBER="nn"</Elem>
-            <Elem>JDK_MAJOR_VERSION="version"</Elem>
-            <Elem>JDK_MICRO_VERSION="version"</Elem>
-            <Elem>JDK_MINOR_VERSION="minor"</Elem>
             <Elem>THIS_FILE="jni_util.c"</Elem>
           </preprocessorList>
         </cTool>
@@ -11481,10 +11393,6 @@
           </incDir>
           <preprocessorList>
             <Elem>ARCHPROPNAME="amd64"</Elem>
-            <Elem>JDK_BUILD_NUMBER="nn"</Elem>
-            <Elem>JDK_MAJOR_VERSION="version"</Elem>
-            <Elem>JDK_MICRO_VERSION="version"</Elem>
-            <Elem>JDK_MINOR_VERSION="minor"</Elem>
             <Elem>THIS_FILE="verify_stub.c"</Elem>
           </preprocessorList>
         </cTool>
@@ -11569,10 +11477,6 @@
           </incDir>
           <preprocessorList>
             <Elem>ARCHPROPNAME="amd64"</Elem>
-            <Elem>JDK_BUILD_NUMBER="nn"</Elem>
-            <Elem>JDK_MAJOR_VERSION="version"</Elem>
-            <Elem>JDK_MICRO_VERSION="version"</Elem>
-            <Elem>JDK_MINOR_VERSION="minor"</Elem>
             <Elem>THIS_FILE="Class.c"</Elem>
           </preprocessorList>
         </cTool>
@@ -11602,10 +11506,6 @@
           </incDir>
           <preprocessorList>
             <Elem>ARCHPROPNAME="amd64"</Elem>
-            <Elem>JDK_BUILD_NUMBER="nn"</Elem>
-            <Elem>JDK_MAJOR_VERSION="version"</Elem>
-            <Elem>JDK_MICRO_VERSION="version"</Elem>
-            <Elem>JDK_MINOR_VERSION="minor"</Elem>
             <Elem>THIS_FILE="ClassLoader.c"</Elem>
           </preprocessorList>
         </cTool>
@@ -11635,10 +11535,6 @@
           </incDir>
           <preprocessorList>
             <Elem>ARCHPROPNAME="amd64"</Elem>
-            <Elem>JDK_BUILD_NUMBER="nn"</Elem>
-            <Elem>JDK_MAJOR_VERSION="version"</Elem>
-            <Elem>JDK_MICRO_VERSION="version"</Elem>
-            <Elem>JDK_MINOR_VERSION="minor"</Elem>
             <Elem>THIS_FILE="Compiler.c"</Elem>
           </preprocessorList>
         </cTool>
@@ -11668,10 +11564,6 @@
           </incDir>
           <preprocessorList>
             <Elem>ARCHPROPNAME="amd64"</Elem>
-            <Elem>JDK_BUILD_NUMBER="nn"</Elem>
-            <Elem>JDK_MAJOR_VERSION="version"</Elem>
-            <Elem>JDK_MICRO_VERSION="version"</Elem>
-            <Elem>JDK_MINOR_VERSION="minor"</Elem>
             <Elem>THIS_FILE="Double.c"</Elem>
           </preprocessorList>
         </cTool>
@@ -11701,10 +11593,6 @@
           </incDir>
           <preprocessorList>
             <Elem>ARCHPROPNAME="amd64"</Elem>
-            <Elem>JDK_BUILD_NUMBER="nn"</Elem>
-            <Elem>JDK_MAJOR_VERSION="version"</Elem>
-            <Elem>JDK_MICRO_VERSION="version"</Elem>
-            <Elem>JDK_MINOR_VERSION="minor"</Elem>
             <Elem>THIS_FILE="Float.c"</Elem>
           </preprocessorList>
         </cTool>
@@ -11734,10 +11622,6 @@
           </incDir>
           <preprocessorList>
             <Elem>ARCHPROPNAME="amd64"</Elem>
-            <Elem>JDK_BUILD_NUMBER="nn"</Elem>
-            <Elem>JDK_MAJOR_VERSION="version"</Elem>
-            <Elem>JDK_MICRO_VERSION="version"</Elem>
-            <Elem>JDK_MINOR_VERSION="minor"</Elem>
             <Elem>THIS_FILE="Object.c"</Elem>
           </preprocessorList>
         </cTool>
@@ -11767,10 +11651,6 @@
           </incDir>
           <preprocessorList>
             <Elem>ARCHPROPNAME="amd64"</Elem>
-            <Elem>JDK_BUILD_NUMBER="nn"</Elem>
-            <Elem>JDK_MAJOR_VERSION="version"</Elem>
-            <Elem>JDK_MICRO_VERSION="version"</Elem>
-            <Elem>JDK_MINOR_VERSION="minor"</Elem>
             <Elem>THIS_FILE="Package.c"</Elem>
           </preprocessorList>
         </cTool>
@@ -11800,10 +11680,6 @@
           </incDir>
           <preprocessorList>
             <Elem>ARCHPROPNAME="amd64"</Elem>
-            <Elem>JDK_BUILD_NUMBER="nn"</Elem>
-            <Elem>JDK_MAJOR_VERSION="version"</Elem>
-            <Elem>JDK_MICRO_VERSION="version"</Elem>
-            <Elem>JDK_MINOR_VERSION="minor"</Elem>
             <Elem>THIS_FILE="ResourceBundle.c"</Elem>
           </preprocessorList>
         </cTool>
@@ -11833,10 +11709,6 @@
           </incDir>
           <preprocessorList>
             <Elem>ARCHPROPNAME="amd64"</Elem>
-            <Elem>JDK_BUILD_NUMBER="nn"</Elem>
-            <Elem>JDK_MAJOR_VERSION="version"</Elem>
-            <Elem>JDK_MICRO_VERSION="version"</Elem>
-            <Elem>JDK_MINOR_VERSION="minor"</Elem>
             <Elem>THIS_FILE="Runtime.c"</Elem>
           </preprocessorList>
         </cTool>
@@ -11866,10 +11738,6 @@
           </incDir>
           <preprocessorList>
             <Elem>ARCHPROPNAME="amd64"</Elem>
-            <Elem>JDK_BUILD_NUMBER="nn"</Elem>
-            <Elem>JDK_MAJOR_VERSION="version"</Elem>
-            <Elem>JDK_MICRO_VERSION="version"</Elem>
-            <Elem>JDK_MINOR_VERSION="minor"</Elem>
             <Elem>THIS_FILE="SecurityManager.c"</Elem>
           </preprocessorList>
         </cTool>
@@ -11899,10 +11767,6 @@
           </incDir>
           <preprocessorList>
             <Elem>ARCHPROPNAME="amd64"</Elem>
-            <Elem>JDK_BUILD_NUMBER="nn"</Elem>
-            <Elem>JDK_MAJOR_VERSION="version"</Elem>
-            <Elem>JDK_MICRO_VERSION="version"</Elem>
-            <Elem>JDK_MINOR_VERSION="minor"</Elem>
             <Elem>THIS_FILE="Shutdown.c"</Elem>
           </preprocessorList>
         </cTool>
@@ -11932,10 +11796,6 @@
           </incDir>
           <preprocessorList>
             <Elem>ARCHPROPNAME="amd64"</Elem>
-            <Elem>JDK_BUILD_NUMBER="nn"</Elem>
-            <Elem>JDK_MAJOR_VERSION="version"</Elem>
-            <Elem>JDK_MICRO_VERSION="version"</Elem>
-            <Elem>JDK_MINOR_VERSION="minor"</Elem>
             <Elem>THIS_FILE="StrictMath.c"</Elem>
           </preprocessorList>
         </cTool>
@@ -11965,10 +11825,6 @@
           </incDir>
           <preprocessorList>
             <Elem>ARCHPROPNAME="amd64"</Elem>
-            <Elem>JDK_BUILD_NUMBER="nn"</Elem>
-            <Elem>JDK_MAJOR_VERSION="version"</Elem>
-            <Elem>JDK_MICRO_VERSION="version"</Elem>
-            <Elem>JDK_MINOR_VERSION="minor"</Elem>
             <Elem>THIS_FILE="String.c"</Elem>
           </preprocessorList>
         </cTool>
@@ -11998,10 +11854,6 @@
           </incDir>
           <preprocessorList>
             <Elem>ARCHPROPNAME="amd64"</Elem>
-            <Elem>JDK_BUILD_NUMBER="nn"</Elem>
-            <Elem>JDK_MAJOR_VERSION="version"</Elem>
-            <Elem>JDK_MICRO_VERSION="version"</Elem>
-            <Elem>JDK_MINOR_VERSION="minor"</Elem>
             <Elem>THIS_FILE="System.c"</Elem>
           </preprocessorList>
         </cTool>
@@ -12031,10 +11883,6 @@
           </incDir>
           <preprocessorList>
             <Elem>ARCHPROPNAME="amd64"</Elem>
-            <Elem>JDK_BUILD_NUMBER="nn"</Elem>
-            <Elem>JDK_MAJOR_VERSION="version"</Elem>
-            <Elem>JDK_MICRO_VERSION="version"</Elem>
-            <Elem>JDK_MINOR_VERSION="minor"</Elem>
             <Elem>THIS_FILE="Thread.c"</Elem>
           </preprocessorList>
         </cTool>
@@ -12064,10 +11912,6 @@
           </incDir>
           <preprocessorList>
             <Elem>ARCHPROPNAME="amd64"</Elem>
-            <Elem>JDK_BUILD_NUMBER="nn"</Elem>
-            <Elem>JDK_MAJOR_VERSION="version"</Elem>
-            <Elem>JDK_MICRO_VERSION="version"</Elem>
-            <Elem>JDK_MINOR_VERSION="minor"</Elem>
             <Elem>THIS_FILE="Throwable.c"</Elem>
           </preprocessorList>
         </cTool>
@@ -12804,10 +12648,6 @@
           </incDir>
           <preprocessorList>
             <Elem>ARCHPROPNAME="amd64"</Elem>
-            <Elem>JDK_BUILD_NUMBER="nn"</Elem>
-            <Elem>JDK_MAJOR_VERSION="version"</Elem>
-            <Elem>JDK_MICRO_VERSION="version"</Elem>
-            <Elem>JDK_MINOR_VERSION="minor"</Elem>
             <Elem>THIS_FILE="TimeZone.c"</Elem>
           </preprocessorList>
         </cTool>
@@ -20853,15 +20693,12 @@
           <preprocessorList>
             <Elem>AMD64</Elem>
             <Elem>ARCH="amd64"</Elem>
-            <Elem>FULL_VERSION="version"</Elem>
             <Elem>GAMMA</Elem>
             <Elem>HOTSPOT_BUILD_TARGET="target"</Elem>
             <Elem>HOTSPOT_BUILD_USER="user"</Elem>
             <Elem>HOTSPOT_LIB_ARCH="amd64"</Elem>
             <Elem>HOTSPOT_RELEASE_VERSION="version"</Elem>
             <Elem>HOTSPOT_VM_DISTRO="OpenJDK"</Elem>
-            <Elem>JDK_MAJOR_VERSION="version"</Elem>
-            <Elem>JDK_MINOR_VERSION="minor"</Elem>
             <Elem>LAUNCHER_TYPE="gamma"</Elem>
             <Elem>LINK_INTO_LIBJVM</Elem>
             <Elem>LINUX</Elem>
@@ -20919,15 +20756,12 @@
           <preprocessorList>
             <Elem>AMD64</Elem>
             <Elem>ARCH="amd64"</Elem>
-            <Elem>FULL_VERSION="version"</Elem>
             <Elem>GAMMA</Elem>
             <Elem>HOTSPOT_BUILD_TARGET="target"</Elem>
             <Elem>HOTSPOT_BUILD_USER="user"</Elem>
             <Elem>HOTSPOT_LIB_ARCH="amd64"</Elem>
             <Elem>HOTSPOT_RELEASE_VERSION="version"</Elem>
             <Elem>HOTSPOT_VM_DISTRO="OpenJDK"</Elem>
-            <Elem>JDK_MAJOR_VERSION="version"</Elem>
-            <Elem>JDK_MINOR_VERSION="minor"</Elem>
             <Elem>LAUNCHER_TYPE="gamma"</Elem>
             <Elem>LINK_INTO_LIBJVM</Elem>
             <Elem>LINUX</Elem>
@@ -21824,10 +21658,6 @@
           </incDir>
           <preprocessorList>
             <Elem>ARCHPROPNAME="amd64"</Elem>
-            <Elem>JDK_BUILD_NUMBER="nn"</Elem>
-            <Elem>JDK_MAJOR_VERSION="version"</Elem>
-            <Elem>JDK_MICRO_VERSION="version"</Elem>
-            <Elem>JDK_MINOR_VERSION="minor"</Elem>
           </preprocessorList>
         </cTool>
       </folder>
@@ -21877,10 +21707,6 @@
           </incDir>
           <preprocessorList>
             <Elem>ARCHPROPNAME="amd64"</Elem>
-            <Elem>JDK_BUILD_NUMBER="nn"</Elem>
-            <Elem>JDK_MAJOR_VERSION="version"</Elem>
-            <Elem>JDK_MICRO_VERSION="version"</Elem>
-            <Elem>JDK_MINOR_VERSION="minor"</Elem>
             <Elem>THIS_FILE="Finalizer.c"</Elem>
           </preprocessorList>
         </cTool>
@@ -21907,10 +21733,6 @@
           </incDir>
           <preprocessorList>
             <Elem>ARCHPROPNAME="amd64"</Elem>
-            <Elem>JDK_BUILD_NUMBER="nn"</Elem>
-            <Elem>JDK_MAJOR_VERSION="version"</Elem>
-            <Elem>JDK_MICRO_VERSION="version"</Elem>
-            <Elem>JDK_MINOR_VERSION="minor"</Elem>
             <Elem>THIS_FILE="Array.c"</Elem>
           </preprocessorList>
         </cTool>
@@ -21966,10 +21788,6 @@
           </incDir>
           <preprocessorList>
             <Elem>ARCHPROPNAME="amd64"</Elem>
-            <Elem>JDK_BUILD_NUMBER="nn"</Elem>
-            <Elem>JDK_MAJOR_VERSION="version"</Elem>
-            <Elem>JDK_MICRO_VERSION="version"</Elem>
-            <Elem>JDK_MINOR_VERSION="minor"</Elem>
             <Elem>THIS_FILE="Bits.c"</Elem>
           </preprocessorList>
         </cTool>
@@ -22003,10 +21821,6 @@
           </incDir>
           <preprocessorList>
             <Elem>ARCHPROPNAME="amd64"</Elem>
-            <Elem>JDK_BUILD_NUMBER="nn"</Elem>
-            <Elem>JDK_MAJOR_VERSION="version"</Elem>
-            <Elem>JDK_MICRO_VERSION="version"</Elem>
-            <Elem>JDK_MINOR_VERSION="minor"</Elem>
             <Elem>THIS_FILE="AccessController.c"</Elem>
           </preprocessorList>
         </cTool>
@@ -22047,10 +21861,6 @@
           </incDir>
           <preprocessorList>
             <Elem>ARCHPROPNAME="amd64"</Elem>
-            <Elem>JDK_BUILD_NUMBER="nn"</Elem>
-            <Elem>JDK_MAJOR_VERSION="version"</Elem>
-            <Elem>JDK_MICRO_VERSION="version"</Elem>
-            <Elem>JDK_MINOR_VERSION="minor"</Elem>
           </preprocessorList>
         </cTool>
       </folder>
@@ -22619,10 +22429,6 @@
           <preprocessorList>
             <Elem>ARCH="amd64"</Elem>
             <Elem>ARCHPROPNAME="amd64"</Elem>
-            <Elem>JDK_BUILD_NUMBER="nn"</Elem>
-            <Elem>JDK_MAJOR_VERSION="version"</Elem>
-            <Elem>JDK_MICRO_VERSION="version"</Elem>
-            <Elem>JDK_MINOR_VERSION="minor"</Elem>
             <Elem>LINUX</Elem>
             <Elem>NDEBUG</Elem>
             <Elem>RELEASE=""</Elem>
@@ -22676,10 +22482,6 @@
           <preprocessorList>
             <Elem>ARCH="amd64"</Elem>
             <Elem>ARCHPROPNAME="amd64"</Elem>
-            <Elem>JDK_BUILD_NUMBER="nn"</Elem>
-            <Elem>JDK_MAJOR_VERSION="version"</Elem>
-            <Elem>JDK_MICRO_VERSION="version"</Elem>
-            <Elem>JDK_MINOR_VERSION="minor"</Elem>
             <Elem>LINUX</Elem>
             <Elem>NDEBUG</Elem>
             <Elem>RELEASE=""</Elem>
@@ -23055,10 +22857,6 @@
           </incDir>
           <preprocessorList>
             <Elem>ARCHPROPNAME="amd64"</Elem>
-            <Elem>JDK_BUILD_NUMBER="nn"</Elem>
-            <Elem>JDK_MAJOR_VERSION="version"</Elem>
-            <Elem>JDK_MICRO_VERSION="version"</Elem>
-            <Elem>JDK_MINOR_VERSION="minor"</Elem>
             <Elem>THIS_FILE="jdk_util_md.c"</Elem>
           </preprocessorList>
         </cTool>
@@ -23101,10 +22899,6 @@
           </incDir>
           <preprocessorList>
             <Elem>ARCHPROPNAME="amd64"</Elem>
-            <Elem>JDK_BUILD_NUMBER="nn"</Elem>
-            <Elem>JDK_MAJOR_VERSION="version"</Elem>
-            <Elem>JDK_MICRO_VERSION="version"</Elem>
-            <Elem>JDK_MINOR_VERSION="minor"</Elem>
           </preprocessorList>
         </cTool>
       </folder>
@@ -23130,10 +22924,6 @@
           </incDir>
           <preprocessorList>
             <Elem>ARCHPROPNAME="amd64"</Elem>
-            <Elem>JDK_BUILD_NUMBER="nn"</Elem>
-            <Elem>JDK_MAJOR_VERSION="version"</Elem>
-            <Elem>JDK_MICRO_VERSION="version"</Elem>
-            <Elem>JDK_MINOR_VERSION="minor"</Elem>
             <Elem>THIS_FILE="ProcessEnvironment_md.c"</Elem>
           </preprocessorList>
         </cTool>
@@ -23189,10 +22979,6 @@
           </incDir>
           <preprocessorList>
             <Elem>ARCHPROPNAME="amd64"</Elem>
-            <Elem>JDK_BUILD_NUMBER="nn"</Elem>
-            <Elem>JDK_MAJOR_VERSION="version"</Elem>
-            <Elem>JDK_MICRO_VERSION="version"</Elem>
-            <Elem>JDK_MINOR_VERSION="minor"</Elem>
             <Elem>THIS_FILE="FileSystemPreferences.c"</Elem>
           </preprocessorList>
         </cTool>
@@ -23515,10 +23301,6 @@
           </incDir>
           <preprocessorList>
             <Elem>ARCHPROPNAME="amd64"</Elem>
-            <Elem>JDK_BUILD_NUMBER="nn"</Elem>
-            <Elem>JDK_MAJOR_VERSION="version"</Elem>
-            <Elem>JDK_MICRO_VERSION="version"</Elem>
-            <Elem>JDK_MINOR_VERSION="minor"</Elem>
             <Elem>THIS_FILE="HostLocaleProviderAdapter_md.c"</Elem>
           </preprocessorList>
         </cTool>
@@ -23613,15 +23395,9 @@
           <Elem>IDE_ALT_BOOTDIR</Elem>
         </envVariables>
         <transientMacros>
-          <Elem>FULL_VERSION="version"</Elem>
           <Elem>HOTSPOT_BUILD_TARGET="target"</Elem>
           <Elem>HOTSPOT_BUILD_USER="user"</Elem>
           <Elem>HOTSPOT_RELEASE_VERSION="version"</Elem>
-          <Elem>JDK_BUILD_NUMBER="nn"</Elem>
-          <Elem>JDK_MAJOR_VERSION="version"</Elem>
-          <Elem>JDK_MICRO_VERSION="version"</Elem>
-          <Elem>JDK_MINOR_VERSION="minor"</Elem>
-          <Elem>JRE_RELEASE_VERSION="version"</Elem>
         </transientMacros>
       </codeAssistance>
       <makefileType>
@@ -27454,7 +27230,6 @@
             flavor2="0">
         <ccTool>
           <preprocessorList>
-            <Elem>JRE_RELEASE_VERSION="version"</Elem>
           </preprocessorList>
         </ccTool>
       </item>
@@ -28130,11 +27905,8 @@
           </incDir>
           <preprocessorList>
             <Elem>EXPAND_CLASSPATH_WILDCARDS</Elem>
-            <Elem>FULL_VERSION="version"</Elem>
             <Elem>HAVE_GETHRTIME</Elem>
             <Elem>JAVA_ARGS={ "-J-ms8m", "com.sun.tools.javac.Main", }</Elem>
-            <Elem>JDK_MAJOR_VERSION="version"</Elem>
-            <Elem>JDK_MINOR_VERSION="minor"</Elem>
             <Elem>LAUNCHER_NAME="openjdk"</Elem>
             <Elem>NEVER_ACT_AS_SERVER_CLASS_MACHINE</Elem>
             <Elem>PROGNAME="javac"</Elem>
@@ -28961,10 +28733,6 @@
           </incDir>
           <preprocessorList>
             <Elem>ARCHPROPNAME="amd64"</Elem>
-            <Elem>JDK_BUILD_NUMBER="nn"</Elem>
-            <Elem>JDK_MAJOR_VERSION="version"</Elem>
-            <Elem>JDK_MICRO_VERSION="version"</Elem>
-            <Elem>JDK_MINOR_VERSION="minor"</Elem>
             <Elem>THIS_FILE="check_version.c"</Elem>
           </preprocessorList>
         </cTool>
@@ -28994,10 +28762,6 @@
           </incDir>
           <preprocessorList>
             <Elem>ARCHPROPNAME="amd64"</Elem>
-            <Elem>JDK_BUILD_NUMBER="nn"</Elem>
-            <Elem>JDK_MAJOR_VERSION="version"</Elem>
-            <Elem>JDK_MICRO_VERSION="version"</Elem>
-            <Elem>JDK_MINOR_VERSION="minor"</Elem>
             <Elem>THIS_FILE="jdk_util.c"</Elem>
           </preprocessorList>
         </cTool>
@@ -29027,10 +28791,6 @@
           </incDir>
           <preprocessorList>
             <Elem>ARCHPROPNAME="amd64"</Elem>
-            <Elem>JDK_BUILD_NUMBER="nn"</Elem>
-            <Elem>JDK_MAJOR_VERSION="version"</Elem>
-            <Elem>JDK_MICRO_VERSION="version"</Elem>
-            <Elem>JDK_MINOR_VERSION="minor"</Elem>
             <Elem>THIS_FILE="jio.c"</Elem>
           </preprocessorList>
         </cTool>
@@ -29060,10 +28820,6 @@
           </incDir>
           <preprocessorList>
             <Elem>ARCHPROPNAME="amd64"</Elem>
-            <Elem>JDK_BUILD_NUMBER="nn"</Elem>
-            <Elem>JDK_MAJOR_VERSION="version"</Elem>
-            <Elem>JDK_MICRO_VERSION="version"</Elem>
-            <Elem>JDK_MINOR_VERSION="minor"</Elem>
             <Elem>THIS_FILE="jni_util.c"</Elem>
           </preprocessorList>
         </cTool>
@@ -29093,10 +28849,6 @@
           </incDir>
           <preprocessorList>
             <Elem>ARCHPROPNAME="amd64"</Elem>
-            <Elem>JDK_BUILD_NUMBER="nn"</Elem>
-            <Elem>JDK_MAJOR_VERSION="version"</Elem>
-            <Elem>JDK_MICRO_VERSION="version"</Elem>
-            <Elem>JDK_MINOR_VERSION="minor"</Elem>
             <Elem>THIS_FILE="verify_stub.c"</Elem>
           </preprocessorList>
         </cTool>
@@ -29181,10 +28933,6 @@
           </incDir>
           <preprocessorList>
             <Elem>ARCHPROPNAME="amd64"</Elem>
-            <Elem>JDK_BUILD_NUMBER="nn"</Elem>
-            <Elem>JDK_MAJOR_VERSION="version"</Elem>
-            <Elem>JDK_MICRO_VERSION="version"</Elem>
-            <Elem>JDK_MINOR_VERSION="minor"</Elem>
             <Elem>THIS_FILE="Class.c"</Elem>
           </preprocessorList>
         </cTool>
@@ -29214,10 +28962,6 @@
           </incDir>
           <preprocessorList>
             <Elem>ARCHPROPNAME="amd64"</Elem>
-            <Elem>JDK_BUILD_NUMBER="nn"</Elem>
-            <Elem>JDK_MAJOR_VERSION="version"</Elem>
-            <Elem>JDK_MICRO_VERSION="version"</Elem>
-            <Elem>JDK_MINOR_VERSION="minor"</Elem>
             <Elem>THIS_FILE="ClassLoader.c"</Elem>
           </preprocessorList>
         </cTool>
@@ -29247,10 +28991,6 @@
           </incDir>
           <preprocessorList>
             <Elem>ARCHPROPNAME="amd64"</Elem>
-            <Elem>JDK_BUILD_NUMBER="nn"</Elem>
-            <Elem>JDK_MAJOR_VERSION="version"</Elem>
-            <Elem>JDK_MICRO_VERSION="version"</Elem>
-            <Elem>JDK_MINOR_VERSION="minor"</Elem>
             <Elem>THIS_FILE="Compiler.c"</Elem>
           </preprocessorList>
         </cTool>
@@ -29280,10 +29020,6 @@
           </incDir>
           <preprocessorList>
             <Elem>ARCHPROPNAME="amd64"</Elem>
-            <Elem>JDK_BUILD_NUMBER="nn"</Elem>
-            <Elem>JDK_MAJOR_VERSION="version"</Elem>
-            <Elem>JDK_MICRO_VERSION="version"</Elem>
-            <Elem>JDK_MINOR_VERSION="minor"</Elem>
             <Elem>THIS_FILE="Double.c"</Elem>
           </preprocessorList>
         </cTool>
@@ -29313,10 +29049,6 @@
           </incDir>
           <preprocessorList>
             <Elem>ARCHPROPNAME="amd64"</Elem>
-            <Elem>JDK_BUILD_NUMBER="nn"</Elem>
-            <Elem>JDK_MAJOR_VERSION="version"</Elem>
-            <Elem>JDK_MICRO_VERSION="version"</Elem>
-            <Elem>JDK_MINOR_VERSION="minor"</Elem>
             <Elem>THIS_FILE="Float.c"</Elem>
           </preprocessorList>
         </cTool>
@@ -29346,10 +29078,6 @@
           </incDir>
           <preprocessorList>
             <Elem>ARCHPROPNAME="amd64"</Elem>
-            <Elem>JDK_BUILD_NUMBER="nn"</Elem>
-            <Elem>JDK_MAJOR_VERSION="version"</Elem>
-            <Elem>JDK_MICRO_VERSION="version"</Elem>
-            <Elem>JDK_MINOR_VERSION="minor"</Elem>
             <Elem>THIS_FILE="Object.c"</Elem>
           </preprocessorList>
         </cTool>
@@ -29379,10 +29107,6 @@
           </incDir>
           <preprocessorList>
             <Elem>ARCHPROPNAME="amd64"</Elem>
-            <Elem>JDK_BUILD_NUMBER="nn"</Elem>
-            <Elem>JDK_MAJOR_VERSION="version"</Elem>
-            <Elem>JDK_MICRO_VERSION="version"</Elem>
-            <Elem>JDK_MINOR_VERSION="minor"</Elem>
             <Elem>THIS_FILE="Package.c"</Elem>
           </preprocessorList>
         </cTool>
@@ -29412,10 +29136,6 @@
           </incDir>
           <preprocessorList>
             <Elem>ARCHPROPNAME="amd64"</Elem>
-            <Elem>JDK_BUILD_NUMBER="nn"</Elem>
-            <Elem>JDK_MAJOR_VERSION="version"</Elem>
-            <Elem>JDK_MICRO_VERSION="version"</Elem>
-            <Elem>JDK_MINOR_VERSION="minor"</Elem>
             <Elem>THIS_FILE="ResourceBundle.c"</Elem>
           </preprocessorList>
         </cTool>
@@ -29445,10 +29165,6 @@
           </incDir>
           <preprocessorList>
             <Elem>ARCHPROPNAME="amd64"</Elem>
-            <Elem>JDK_BUILD_NUMBER="nn"</Elem>
-            <Elem>JDK_MAJOR_VERSION="version"</Elem>
-            <Elem>JDK_MICRO_VERSION="version"</Elem>
-            <Elem>JDK_MINOR_VERSION="minor"</Elem>
             <Elem>THIS_FILE="Runtime.c"</Elem>
           </preprocessorList>
         </cTool>
@@ -29478,10 +29194,6 @@
           </incDir>
           <preprocessorList>
             <Elem>ARCHPROPNAME="amd64"</Elem>
-            <Elem>JDK_BUILD_NUMBER="nn"</Elem>
-            <Elem>JDK_MAJOR_VERSION="version"</Elem>
-            <Elem>JDK_MICRO_VERSION="version"</Elem>
-            <Elem>JDK_MINOR_VERSION="minor"</Elem>
             <Elem>THIS_FILE="SecurityManager.c"</Elem>
           </preprocessorList>
         </cTool>
@@ -29511,10 +29223,6 @@
           </incDir>
           <preprocessorList>
             <Elem>ARCHPROPNAME="amd64"</Elem>
-            <Elem>JDK_BUILD_NUMBER="nn"</Elem>
-            <Elem>JDK_MAJOR_VERSION="version"</Elem>
-            <Elem>JDK_MICRO_VERSION="version"</Elem>
-            <Elem>JDK_MINOR_VERSION="minor"</Elem>
             <Elem>THIS_FILE="Shutdown.c"</Elem>
           </preprocessorList>
         </cTool>
@@ -29544,10 +29252,6 @@
           </incDir>
           <preprocessorList>
             <Elem>ARCHPROPNAME="amd64"</Elem>
-            <Elem>JDK_BUILD_NUMBER="nn"</Elem>
-            <Elem>JDK_MAJOR_VERSION="version"</Elem>
-            <Elem>JDK_MICRO_VERSION="version"</Elem>
-            <Elem>JDK_MINOR_VERSION="minor"</Elem>
             <Elem>THIS_FILE="StrictMath.c"</Elem>
           </preprocessorList>
         </cTool>
@@ -29577,10 +29281,6 @@
           </incDir>
           <preprocessorList>
             <Elem>ARCHPROPNAME="amd64"</Elem>
-            <Elem>JDK_BUILD_NUMBER="nn"</Elem>
-            <Elem>JDK_MAJOR_VERSION="version"</Elem>
-            <Elem>JDK_MICRO_VERSION="version"</Elem>
-            <Elem>JDK_MINOR_VERSION="minor"</Elem>
             <Elem>THIS_FILE="String.c"</Elem>
           </preprocessorList>
         </cTool>
@@ -29610,10 +29310,6 @@
           </incDir>
           <preprocessorList>
             <Elem>ARCHPROPNAME="amd64"</Elem>
-            <Elem>JDK_BUILD_NUMBER="nn"</Elem>
-            <Elem>JDK_MAJOR_VERSION="version"</Elem>
-            <Elem>JDK_MICRO_VERSION="version"</Elem>
-            <Elem>JDK_MINOR_VERSION="minor"</Elem>
             <Elem>THIS_FILE="System.c"</Elem>
           </preprocessorList>
         </cTool>
@@ -29643,10 +29339,6 @@
           </incDir>
           <preprocessorList>
             <Elem>ARCHPROPNAME="amd64"</Elem>
-            <Elem>JDK_BUILD_NUMBER="nn"</Elem>
-            <Elem>JDK_MAJOR_VERSION="version"</Elem>
-            <Elem>JDK_MICRO_VERSION="version"</Elem>
-            <Elem>JDK_MINOR_VERSION="minor"</Elem>
             <Elem>THIS_FILE="Thread.c"</Elem>
           </preprocessorList>
         </cTool>
@@ -29676,10 +29368,6 @@
           </incDir>
           <preprocessorList>
             <Elem>ARCHPROPNAME="amd64"</Elem>
-            <Elem>JDK_BUILD_NUMBER="nn"</Elem>
-            <Elem>JDK_MAJOR_VERSION="version"</Elem>
-            <Elem>JDK_MICRO_VERSION="version"</Elem>
-            <Elem>JDK_MINOR_VERSION="minor"</Elem>
             <Elem>THIS_FILE="Throwable.c"</Elem>
           </preprocessorList>
         </cTool>
@@ -30416,10 +30104,6 @@
           </incDir>
           <preprocessorList>
             <Elem>ARCHPROPNAME="amd64"</Elem>
-            <Elem>JDK_BUILD_NUMBER="nn"</Elem>
-            <Elem>JDK_MAJOR_VERSION="version"</Elem>
-            <Elem>JDK_MICRO_VERSION="version"</Elem>
-            <Elem>JDK_MINOR_VERSION="minor"</Elem>
             <Elem>THIS_FILE="TimeZone.c"</Elem>
           </preprocessorList>
         </cTool>
@@ -38550,15 +38234,12 @@
           <preprocessorList>
             <Elem>AMD64</Elem>
             <Elem>ARCH="amd64"</Elem>
-            <Elem>FULL_VERSION="version"</Elem>
             <Elem>GAMMA</Elem>
             <Elem>HOTSPOT_BUILD_TARGET="target"</Elem>
             <Elem>HOTSPOT_BUILD_USER="user"</Elem>
             <Elem>HOTSPOT_LIB_ARCH="amd64"</Elem>
             <Elem>HOTSPOT_RELEASE_VERSION="version"</Elem>
             <Elem>HOTSPOT_VM_DISTRO="OpenJDK"</Elem>
-            <Elem>JDK_MAJOR_VERSION="version"</Elem>
-            <Elem>JDK_MINOR_VERSION="minor"</Elem>
             <Elem>LAUNCHER_TYPE="gamma"</Elem>
             <Elem>LINK_INTO_LIBJVM</Elem>
             <Elem>PRODUCT</Elem>
@@ -38723,15 +38404,12 @@
           <preprocessorList>
             <Elem>AMD64</Elem>
             <Elem>ARCH="amd64"</Elem>
-            <Elem>FULL_VERSION="version"</Elem>
             <Elem>GAMMA</Elem>
             <Elem>HOTSPOT_BUILD_TARGET="target"</Elem>
             <Elem>HOTSPOT_BUILD_USER="user"</Elem>
             <Elem>HOTSPOT_LIB_ARCH="amd64"</Elem>
             <Elem>HOTSPOT_RELEASE_VERSION="version"</Elem>
             <Elem>HOTSPOT_VM_DISTRO="OpenJDK"</Elem>
-            <Elem>JDK_MAJOR_VERSION="version"</Elem>
-            <Elem>JDK_MINOR_VERSION="minor"</Elem>
             <Elem>LAUNCHER_TYPE="gamma"</Elem>
             <Elem>LINK_INTO_LIBJVM</Elem>
             <Elem>PRODUCT</Elem>
@@ -39575,10 +39253,6 @@
           </incDir>
           <preprocessorList>
             <Elem>ARCHPROPNAME="amd64"</Elem>
-            <Elem>JDK_BUILD_NUMBER="nn"</Elem>
-            <Elem>JDK_MAJOR_VERSION="version"</Elem>
-            <Elem>JDK_MICRO_VERSION="version"</Elem>
-            <Elem>JDK_MINOR_VERSION="minor"</Elem>
           </preprocessorList>
         </cTool>
       </folder>
@@ -39628,10 +39302,6 @@
           </incDir>
           <preprocessorList>
             <Elem>ARCHPROPNAME="amd64"</Elem>
-            <Elem>JDK_BUILD_NUMBER="nn"</Elem>
-            <Elem>JDK_MAJOR_VERSION="version"</Elem>
-            <Elem>JDK_MICRO_VERSION="version"</Elem>
-            <Elem>JDK_MINOR_VERSION="minor"</Elem>
             <Elem>THIS_FILE="Finalizer.c"</Elem>
           </preprocessorList>
         </cTool>
@@ -39658,10 +39328,6 @@
           </incDir>
           <preprocessorList>
             <Elem>ARCHPROPNAME="amd64"</Elem>
-            <Elem>JDK_BUILD_NUMBER="nn"</Elem>
-            <Elem>JDK_MAJOR_VERSION="version"</Elem>
-            <Elem>JDK_MICRO_VERSION="version"</Elem>
-            <Elem>JDK_MINOR_VERSION="minor"</Elem>
             <Elem>THIS_FILE="Array.c"</Elem>
           </preprocessorList>
         </cTool>
@@ -39717,10 +39383,6 @@
           </incDir>
           <preprocessorList>
             <Elem>ARCHPROPNAME="amd64"</Elem>
-            <Elem>JDK_BUILD_NUMBER="nn"</Elem>
-            <Elem>JDK_MAJOR_VERSION="version"</Elem>
-            <Elem>JDK_MICRO_VERSION="version"</Elem>
-            <Elem>JDK_MINOR_VERSION="minor"</Elem>
             <Elem>THIS_FILE="Bits.c"</Elem>
           </preprocessorList>
         </cTool>
@@ -39754,10 +39416,6 @@
           </incDir>
           <preprocessorList>
             <Elem>ARCHPROPNAME="amd64"</Elem>
-            <Elem>JDK_BUILD_NUMBER="nn"</Elem>
-            <Elem>JDK_MAJOR_VERSION="version"</Elem>
-            <Elem>JDK_MICRO_VERSION="version"</Elem>
-            <Elem>JDK_MINOR_VERSION="minor"</Elem>
             <Elem>THIS_FILE="AccessController.c"</Elem>
           </preprocessorList>
         </cTool>
@@ -39798,10 +39456,6 @@
           </incDir>
           <preprocessorList>
             <Elem>ARCHPROPNAME="amd64"</Elem>
-            <Elem>JDK_BUILD_NUMBER="nn"</Elem>
-            <Elem>JDK_MAJOR_VERSION="version"</Elem>
-            <Elem>JDK_MICRO_VERSION="version"</Elem>
-            <Elem>JDK_MINOR_VERSION="minor"</Elem>
           </preprocessorList>
         </cTool>
       </folder>
@@ -40381,10 +40035,6 @@
             <Elem>ARCH="amd64"</Elem>
             <Elem>ARCHPROPNAME="amd64"</Elem>
             <Elem>BREAKPTS</Elem>
-            <Elem>JDK_BUILD_NUMBER="nn"</Elem>
-            <Elem>JDK_MAJOR_VERSION="version"</Elem>
-            <Elem>JDK_MICRO_VERSION="version"</Elem>
-            <Elem>JDK_MINOR_VERSION="minor"</Elem>
             <Elem>MACRO_MEMSYS_OPS</Elem>
             <Elem>NDEBUG</Elem>
             <Elem>RELEASE=""</Elem>
@@ -40441,10 +40091,6 @@
             <Elem>ARCH="amd64"</Elem>
             <Elem>ARCHPROPNAME="amd64"</Elem>
             <Elem>BREAKPTS</Elem>
-            <Elem>JDK_BUILD_NUMBER="nn"</Elem>
-            <Elem>JDK_MAJOR_VERSION="version"</Elem>
-            <Elem>JDK_MICRO_VERSION="version"</Elem>
-            <Elem>JDK_MINOR_VERSION="minor"</Elem>
             <Elem>MACRO_MEMSYS_OPS</Elem>
             <Elem>NDEBUG</Elem>
             <Elem>RELEASE=""</Elem>
@@ -40916,10 +40562,6 @@
             <Elem>ARCH="amd64"</Elem>
             <Elem>ARCHPROPNAME="amd64"</Elem>
             <Elem>BREAKPTS</Elem>
-            <Elem>JDK_BUILD_NUMBER="nn"</Elem>
-            <Elem>JDK_MAJOR_VERSION="version"</Elem>
-            <Elem>JDK_MICRO_VERSION="version"</Elem>
-            <Elem>JDK_MINOR_VERSION="minor"</Elem>
             <Elem>MACRO_MEMSYS_OPS</Elem>
             <Elem>NDEBUG</Elem>
             <Elem>RELEASE=""</Elem>
@@ -40986,10 +40628,6 @@
           </incDir>
           <preprocessorList>
             <Elem>ARCHPROPNAME="amd64"</Elem>
-            <Elem>JDK_BUILD_NUMBER="nn"</Elem>
-            <Elem>JDK_MAJOR_VERSION="version"</Elem>
-            <Elem>JDK_MICRO_VERSION="version"</Elem>
-            <Elem>JDK_MINOR_VERSION="minor"</Elem>
           </preprocessorList>
         </cTool>
       </folder>
@@ -41015,10 +40653,6 @@
           </incDir>
           <preprocessorList>
             <Elem>ARCHPROPNAME="amd64"</Elem>
-            <Elem>JDK_BUILD_NUMBER="nn"</Elem>
-            <Elem>JDK_MAJOR_VERSION="version"</Elem>
-            <Elem>JDK_MICRO_VERSION="version"</Elem>
-            <Elem>JDK_MINOR_VERSION="minor"</Elem>
             <Elem>THIS_FILE="ProcessEnvironment_md.c"</Elem>
           </preprocessorList>
         </cTool>
@@ -41074,10 +40708,6 @@
           </incDir>
           <preprocessorList>
             <Elem>ARCHPROPNAME="amd64"</Elem>
-            <Elem>JDK_BUILD_NUMBER="nn"</Elem>
-            <Elem>JDK_MAJOR_VERSION="version"</Elem>
-            <Elem>JDK_MICRO_VERSION="version"</Elem>
-            <Elem>JDK_MINOR_VERSION="minor"</Elem>
             <Elem>THIS_FILE="FileSystemPreferences.c"</Elem>
           </preprocessorList>
         </cTool>
@@ -41528,10 +41158,6 @@
             <Elem>ARCH="amd64"</Elem>
             <Elem>ARCHPROPNAME="amd64"</Elem>
             <Elem>BREAKPTS</Elem>
-            <Elem>JDK_BUILD_NUMBER="nn"</Elem>
-            <Elem>JDK_MAJOR_VERSION="version"</Elem>
-            <Elem>JDK_MICRO_VERSION="version"</Elem>
-            <Elem>JDK_MINOR_VERSION="minor"</Elem>
             <Elem>MACRO_MEMSYS_OPS</Elem>
             <Elem>NDEBUG</Elem>
             <Elem>RELEASE=""</Elem>
--- a/corba/.hgtags	Wed Jul 05 21:02:33 2017 +0200
+++ b/corba/.hgtags	Wed Jul 05 21:04:26 2017 +0200
@@ -336,3 +336,4 @@
 75843e0a9371d445a3c9b440bab85e50b5dc287c jdk9-b91
 f7d70caad89ad0c43bb057bca0aad6f17ce05a6a jdk9-b92
 27e9c8d8091e2447ea7ef3e3103e9b7dd286e03a jdk9-b93
+61e9f509be0f78f0961477960f372b0533214bb8 jdk9-b94
--- a/hotspot/.hgtags	Wed Jul 05 21:02:33 2017 +0200
+++ b/hotspot/.hgtags	Wed Jul 05 21:04:26 2017 +0200
@@ -496,3 +496,4 @@
 3fd5c2ca4c20c183628b6dbeb8df821a961419e3 jdk9-b91
 53cb98d68a1aeb08d29c89d6da748de60c448e37 jdk9-b92
 d8b24776484cc4dfd19f50b23eaa18a80a161371 jdk9-b93
+a22b7c80529f5f05c847e932e017456e83c46233 jdk9-b94
--- a/hotspot/make/Makefile	Wed Jul 05 21:02:33 2017 +0200
+++ b/hotspot/make/Makefile	Wed Jul 05 21:04:26 2017 +0200
@@ -48,17 +48,14 @@
 #                             Set ALT_BUILD_WIN_SA=1 to enable building SA on
 #                             Windows.
 # Version strings and numbers:
-#  JDK_VERSION                Current JDK version (e.g. 1.6.0)
-#  PREVIOUS_JDK_VERSION       Previous (bootdir) JDK version (e.g. 1.5.0)
-#  FULL_VERSION               Full version string to use (e.g. "1.6.0-ea-b42")
-#
-# Version strings and numbers especially needed on Windows:
-#  COOKED_JDK_UPDATE_VERSION  Just the update release number (e.g. 02)
-#  COOKED_BUILD_NUMBER        Just the build number (e.g. 42)
-#  JDK_MKTG_VERSION           Marketing JDK version (e.g. 6.0)
-#  JDK_MAJOR_VERSION          Major number for version (e.g. 1) always 1?
-#  JDK_MINOR_VERSION          Minor number for version (e.g. 6)
-#  JDK_MICRO_VERSION          Micro number for version (e.g. 0)
+#  VERSION_SHORT      Current JDK version (e.g. 9.0.0)
+#  JDK_PREVIOUS_VERSION Previous (bootdir) JDK version (e.g. 1.5.0) (Only needed
+#  to facilitate standalone build.)
+#  VERSION_STRING     Full version string to use (e.g. "9.0.0-ea-b42")
+#  VERSION_MAJOR Major number for version (e.g. 9)
+#  VERSION_MINOR Minor number for version (e.g. 0)
+#  VERSION_SECURITY Security number for version (e.g. 0)
+#  VERSION_PATCH Patch number for version (e.g. 0)
 #
 
 # Default is build both product fastdebug and create export area
@@ -855,9 +852,9 @@
 	@$(ECHO) \
 "  $(MAKE) world"
 	@$(ECHO) \
-"  $(MAKE) ALT_BOOTDIR=/opt/java/jdk$(PREVIOUS_JDK_VERSION)"
+"  $(MAKE) ALT_BOOTDIR=/opt/java/jdk$(JDK_PREVIOUS_VERSION)"
 	@$(ECHO) \
-"  $(MAKE) ALT_JDK_IMPORT_PATH=/opt/java/jdk$(JDK_VERSION)"
+"  $(MAKE) ALT_JDK_IMPORT_PATH=/opt/java/jdk$(VERSION_STRING)"
 
 # Universal build support
 ifeq ($(OS_VENDOR), Darwin)
--- a/hotspot/make/aix/Makefile	Wed Jul 05 21:02:33 2017 +0200
+++ b/hotspot/make/aix/Makefile	Wed Jul 05 21:04:26 2017 +0200
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1999, 2015, Oracle and/or its affiliates. All rights reserved.
 # Copyright 2012, 2013 SAP AG. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
@@ -210,7 +210,7 @@
 
 BUILDTREE_MAKE    = $(GAMMADIR)/make/$(OSNAME)/makefiles/buildtree.make
 BUILDTREE_VARS    = GAMMADIR=$(GAMMADIR) OS_FAMILY=$(OSNAME) SRCARCH=$(SRCARCH) BUILDARCH=$(BUILDARCH) LIBARCH=$(LIBARCH)
-BUILDTREE_VARS   += HOTSPOT_RELEASE_VERSION=$(HOTSPOT_RELEASE_VERSION) HOTSPOT_BUILD_VERSION=$(HOTSPOT_BUILD_VERSION) JRE_RELEASE_VERSION=$(JRE_RELEASE_VERSION)
+BUILDTREE_VARS   += HOTSPOT_VERSION_STRING=$(HOTSPOT_VERSION_STRING) VERSION_STRING=$(VERSION_STRING)
 BUILDTREE_VARS   += ENABLE_FULL_DEBUG_SYMBOLS=$(ENABLE_FULL_DEBUG_SYMBOLS) OBJCOPY=$(OBJCOPY) STRIP_POLICY=$(STRIP_POLICY) ZIP_DEBUGINFO_FILES=$(ZIP_DEBUGINFO_FILES) ZIPEXE=$(ZIPEXE)
 
 BUILDTREE         = $(MAKE) -f $(BUILDTREE_MAKE) $(BUILDTREE_VARS)
--- a/hotspot/make/aix/makefiles/buildtree.make	Wed Jul 05 21:02:33 2017 +0200
+++ b/hotspot/make/aix/makefiles/buildtree.make	Wed Jul 05 21:04:26 2017 +0200
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved.
 # Copyright 2012, 2013 SAP AG. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
@@ -37,9 +37,8 @@
 # GAMMADIR	- top of workspace
 # OS_FAMILY	- operating system
 # VARIANT	- core, compiler1, compiler2, or tiered
-# HOTSPOT_RELEASE_VERSION - <major_ver>.<minor_ver>.<micro_ver>[-<identifier>][-<debug_target>][-b<nn>]
-# HOTSPOT_BUILD_VERSION   - internal, internal-$(USER_RELEASE_SUFFIX) or empty
-# JRE_RELEASE_VERSION     - <major>.<minor>.<micro> (1.7.0)
+# VERSION_STRING - the JDK version string as specified by JEP-223
+# HOTSPOT_VERSION_STRING - the same as VERSION_STRING, unless overridden by a standalone build
 #
 # Builds the directory trees with makefiles plus some convenience files in
 # each directory:
@@ -132,11 +131,7 @@
 
 # Define variables to be set in flags.make.
 # Default values are set in make/defs.make.
-ifeq ($(HOTSPOT_BUILD_VERSION),)
-  HS_BUILD_VER=$(HOTSPOT_RELEASE_VERSION)
-else
-  HS_BUILD_VER=$(HOTSPOT_RELEASE_VERSION)-$(HOTSPOT_BUILD_VERSION)
-endif
+
 # Set BUILD_USER from system-dependent hints:  $LOGNAME, $(whoami)
 ifndef HOTSPOT_BUILD_USER
   HOTSPOT_BUILD_USER := $(shell echo $$LOGNAME)
@@ -161,7 +156,7 @@
   endif
 endif
 
-BUILDTREE_VARS += HOTSPOT_RELEASE_VERSION=$(HS_BUILD_VER) HOTSPOT_BUILD_VERSION=  JRE_RELEASE_VERSION=$(JRE_RELEASE_VERSION)
+BUILDTREE_VARS += HOTSPOT_VERSION_STRING=$(HOTSPOT_VERSION_STRING) VERSION_STRING=$(VERSION_STRING)
 
 BUILDTREE	= \
 	$(MAKE) -f $(BUILDTREE_MAKE) $(BUILDTREE_TARGETS) $(BUILDTREE_VARS)
@@ -210,9 +205,9 @@
 	echo "BUILDARCH = $(BUILDARCH)"; \
 	echo "LIBARCH = $(LIBARCH)"; \
 	echo "TARGET = $(TARGET)"; \
-	echo "HS_BUILD_VER = $(HS_BUILD_VER)"; \
-	echo "JRE_RELEASE_VER = $(JRE_RELEASE_VERSION)"; \
-	echo "SA_BUILD_VERSION = $(HS_BUILD_VER)"; \
+	echo "HOTSPOT_VERSION_STRING = $(HOTSPOT_VERSION_STRING)"; \
+	echo "VERSION_STRING = $(VERSION_STRING)"; \
+	echo "SA_BUILD_VERSION = $(HOTSPOT_VERSION_STRING)"; \
 	echo "HOTSPOT_BUILD_USER = $(HOTSPOT_BUILD_USER)"; \
 	echo "HOTSPOT_VM_DISTRO = $(HOTSPOT_VM_DISTRO)"; \
 	echo "OPENJDK = $(OPENJDK)"; \
--- a/hotspot/make/aix/makefiles/defs.make	Wed Jul 05 21:02:33 2017 +0200
+++ b/hotspot/make/aix/makefiles/defs.make	Wed Jul 05 21:04:26 2017 +0200
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2006, 2013, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2006, 2015, Oracle and/or its affiliates. All rights reserved.
 # Copyright 2012, 2013 SAP AG. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
@@ -79,102 +79,85 @@
   endif
 endif
 
-# determine if HotSpot is being built in JDK6 or earlier version
-JDK6_OR_EARLIER=0
-ifeq "$(shell expr \( '$(JDK_MAJOR_VERSION)' != '' \& '$(JDK_MINOR_VERSION)' != '' \& '$(JDK_MICRO_VERSION)' != '' \))" "1"
-  # if the longer variable names (newer build style) are set, then check those
-  ifeq "$(shell expr \( $(JDK_MAJOR_VERSION) = 1 \& $(JDK_MINOR_VERSION) \< 7 \))" "1"
-    JDK6_OR_EARLIER=1
-  endif
-else
-  # the longer variables aren't set so check the shorter variable names
-  ifeq "$(shell expr \( '$(JDK_MAJOR_VER)' = 1 \& '$(JDK_MINOR_VER)' \< 7 \))" "1"
-    JDK6_OR_EARLIER=1
-  endif
-endif
+# The Full Debug Symbols (FDS) default for BUILD_FLAVOR == product
+# builds is enabled with debug info files ZIP'ed to save space. For
+# BUILD_FLAVOR != product builds, FDS is always enabled, after all a
+# debug build without debug info isn't very useful.
+# The ZIP_DEBUGINFO_FILES option only has meaning when FDS is enabled.
+#
+# If you invoke a build with FULL_DEBUG_SYMBOLS=0, then FDS will be
+# disabled for a BUILD_FLAVOR == product build.
+#
+# Note: Use of a different variable name for the FDS override option
+# versus the FDS enabled check is intentional (FULL_DEBUG_SYMBOLS
+# versus ENABLE_FULL_DEBUG_SYMBOLS). For auto build systems that pass
+# in options via environment variables, use of distinct variables
+# prevents strange behaviours. For example, in a BUILD_FLAVOR !=
+# product build, the FULL_DEBUG_SYMBOLS environment variable will be
+# 0, but the ENABLE_FULL_DEBUG_SYMBOLS make variable will be 1. If
+# the same variable name is used, then different values can be picked
+# up by different parts of the build. Just to be clear, we only need
+# two variable names because the incoming option value can be
+# overridden in some situations, e.g., a BUILD_FLAVOR != product
+# build.
 
-ifeq ($(JDK6_OR_EARLIER),0)
-  # Full Debug Symbols is supported on JDK7 or newer.
-  # The Full Debug Symbols (FDS) default for BUILD_FLAVOR == product
-  # builds is enabled with debug info files ZIP'ed to save space. For
-  # BUILD_FLAVOR != product builds, FDS is always enabled, after all a
-  # debug build without debug info isn't very useful.
-  # The ZIP_DEBUGINFO_FILES option only has meaning when FDS is enabled.
-  #
-  # If you invoke a build with FULL_DEBUG_SYMBOLS=0, then FDS will be
-  # disabled for a BUILD_FLAVOR == product build.
-  #
-  # Note: Use of a different variable name for the FDS override option
-  # versus the FDS enabled check is intentional (FULL_DEBUG_SYMBOLS
-  # versus ENABLE_FULL_DEBUG_SYMBOLS). For auto build systems that pass
-  # in options via environment variables, use of distinct variables
-  # prevents strange behaviours. For example, in a BUILD_FLAVOR !=
-  # product build, the FULL_DEBUG_SYMBOLS environment variable will be
-  # 0, but the ENABLE_FULL_DEBUG_SYMBOLS make variable will be 1. If
-  # the same variable name is used, then different values can be picked
-  # up by different parts of the build. Just to be clear, we only need
-  # two variable names because the incoming option value can be
-  # overridden in some situations, e.g., a BUILD_FLAVOR != product
-  # build.
+# Due to the multiple sub-make processes that occur this logic gets
+# executed multiple times. We reduce the noise by at least checking that
+# BUILD_FLAVOR has been set.
+ifneq ($(BUILD_FLAVOR),)
+  ifeq ($(BUILD_FLAVOR), product)
+    FULL_DEBUG_SYMBOLS ?= 1
+    ENABLE_FULL_DEBUG_SYMBOLS = $(FULL_DEBUG_SYMBOLS)
+  else
+    # debug variants always get Full Debug Symbols (if available)
+    ENABLE_FULL_DEBUG_SYMBOLS = 1
+  endif
+  $(eval $(call print_info, "ENABLE_FULL_DEBUG_SYMBOLS=$(ENABLE_FULL_DEBUG_SYMBOLS)"))
+  # since objcopy is optional, we set ZIP_DEBUGINFO_FILES later
 
-  # Due to the multiple sub-make processes that occur this logic gets
-  # executed multiple times. We reduce the noise by at least checking that
-  # BUILD_FLAVOR has been set.
-  ifneq ($(BUILD_FLAVOR),)
-    ifeq ($(BUILD_FLAVOR), product)
-      FULL_DEBUG_SYMBOLS ?= 1
-      ENABLE_FULL_DEBUG_SYMBOLS = $(FULL_DEBUG_SYMBOLS)
+  ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
+    # Default OBJCOPY comes from GNU Binutils on Linux
+    ifeq ($(CROSS_COMPILE_ARCH),)
+      DEF_OBJCOPY=/usr/bin/objcopy
     else
-      # debug variants always get Full Debug Symbols (if available)
-      ENABLE_FULL_DEBUG_SYMBOLS = 1
+      # Assume objcopy is part of the cross-compilation toolset
+      ifneq ($(ALT_COMPILER_PATH),)
+        DEF_OBJCOPY=$(ALT_COMPILER_PATH)/objcopy
+      endif
     endif
-    $(eval $(call print_info, "ENABLE_FULL_DEBUG_SYMBOLS=$(ENABLE_FULL_DEBUG_SYMBOLS)"))
-    # since objcopy is optional, we set ZIP_DEBUGINFO_FILES later
+    OBJCOPY=$(shell test -x $(DEF_OBJCOPY) && echo $(DEF_OBJCOPY))
+    ifneq ($(ALT_OBJCOPY),)
+      $(eval $(call print_info, "ALT_OBJCOPY=$(ALT_OBJCOPY)"))
+      OBJCOPY=$(shell test -x $(ALT_OBJCOPY) && echo $(ALT_OBJCOPY))
+    endif
 
-    ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
-      # Default OBJCOPY comes from GNU Binutils on Linux
-      ifeq ($(CROSS_COMPILE_ARCH),)
-        DEF_OBJCOPY=/usr/bin/objcopy
-      else
-        # Assume objcopy is part of the cross-compilation toolset
-        ifneq ($(ALT_COMPILER_PATH),)
-          DEF_OBJCOPY=$(ALT_COMPILER_PATH)/objcopy
-        endif
-      endif
-      OBJCOPY=$(shell test -x $(DEF_OBJCOPY) && echo $(DEF_OBJCOPY))
-      ifneq ($(ALT_OBJCOPY),)
-        $(eval $(call print_info, "ALT_OBJCOPY=$(ALT_OBJCOPY)"))
-        OBJCOPY=$(shell test -x $(ALT_OBJCOPY) && echo $(ALT_OBJCOPY))
-      endif
+    ifeq ($(OBJCOPY),)
+      $(eval $(call print_info, "no objcopy cmd found so cannot create .debuginfo files. You may need to set ALT_OBJCOPY."))
+      ENABLE_FULL_DEBUG_SYMBOLS=0
+      $(eval $(call print_info, "ENABLE_FULL_DEBUG_SYMBOLS=$(ENABLE_FULL_DEBUG_SYMBOLS)"))
+    else
+      $(eval $(call print_info, "$(OBJCOPY) cmd found so will create .debuginfo files."))
 
-      ifeq ($(OBJCOPY),)
-        $(eval $(call print_info, "no objcopy cmd found so cannot create .debuginfo files. You may need to set ALT_OBJCOPY."))
-        ENABLE_FULL_DEBUG_SYMBOLS=0
-        $(eval $(call print_info, "ENABLE_FULL_DEBUG_SYMBOLS=$(ENABLE_FULL_DEBUG_SYMBOLS)"))
-      else
-        $(eval $(call print_info, "$(OBJCOPY) cmd found so will create .debuginfo files."))
+      # Library stripping policies for .debuginfo configs:
+      #   all_strip - strips everything from the library
+      #   min_strip - strips most stuff from the library; leaves minimum symbols
+      #   no_strip  - does not strip the library at all
+      #
+      # Oracle security policy requires "all_strip". A waiver was granted on
+      # 2011.09.01 that permits using "min_strip" in the Java JDK and Java JRE.
+      #
+      # Currently, STRIP_POLICY is only used when Full Debug Symbols is enabled.
+      #
+      STRIP_POLICY ?= min_strip
 
-        # Library stripping policies for .debuginfo configs:
-        #   all_strip - strips everything from the library
-        #   min_strip - strips most stuff from the library; leaves minimum symbols
-        #   no_strip  - does not strip the library at all
-        #
-        # Oracle security policy requires "all_strip". A waiver was granted on
-        # 2011.09.01 that permits using "min_strip" in the Java JDK and Java JRE.
-        #
-        # Currently, STRIP_POLICY is only used when Full Debug Symbols is enabled.
-        #
-        STRIP_POLICY ?= min_strip
+      $(eval $(call print_info, "STRIP_POLICY=$(STRIP_POLICY)"))
+
+      ZIP_DEBUGINFO_FILES ?= 1
 
-        $(eval $(call print_info, "STRIP_POLICY=$(STRIP_POLICY)"))
-
-        ZIP_DEBUGINFO_FILES ?= 1
-
-        $(eval $(call print_info, "ZIP_DEBUGINFO_FILES=$(ZIP_DEBUGINFO_FILES)"))
-      endif
-    endif # ENABLE_FULL_DEBUG_SYMBOLS=1
-  endif # BUILD_FLAVOR
-endif # JDK_6_OR_EARLIER
+      $(eval $(call print_info, "ZIP_DEBUGINFO_FILES=$(ZIP_DEBUGINFO_FILES)"))
+    endif
+  endif # ENABLE_FULL_DEBUG_SYMBOLS=1
+endif # BUILD_FLAVOR
 
 # unused JDK_INCLUDE_SUBDIR=aix
 
--- a/hotspot/make/aix/makefiles/vm.make	Wed Jul 05 21:02:33 2017 +0200
+++ b/hotspot/make/aix/makefiles/vm.make	Wed Jul 05 21:04:26 2017 +0200
@@ -74,12 +74,14 @@
 endif
 
 # The following variables are defined in the generated flags.make file.
-JDK_VER_DEFS  = -DJDK_MAJOR_VERSION="\"$(JDK_MAJOR_VERSION)\"" \
-		-DJDK_MINOR_VERSION="\"$(JDK_MINOR_VERSION)\"" \
-		-DJDK_MICRO_VERSION="\"$(JDK_MICRO_VERSION)\"" \
-		-DJDK_BUILD_NUMBER="\"$(JDK_BUILD_NUMBER)\""
-VM_VER_DEFS   = -DHOTSPOT_RELEASE_VERSION="\"$(HS_BUILD_VER)\"" \
-		-DJRE_RELEASE_VERSION="\"$(JRE_RELEASE_VER)\""  \
+JDK_VER_DEFS  = -DVERSION_MAJOR=$(VERSION_MAJOR) \
+		-DVERSION_MINOR=$(VERSION_MINOR) \
+		-DVERSION_SECURITY=$(VERSION_SECURITY) \
+	        -DVERSION_PATCH=$(VERSION_PATCH) \
+		-DVERSION_BUILD=$(VERSION_BUILD)
+VM_VER_DEFS   = -DHOTSPOT_VERSION_STRING="\"$(HOTSPOT_VERSION_STRING)\"" \
+		-DVERSION_STRING="\"$(VERSION_STRING)\""  \
+	        -DDEBUG_LEVEL="\"$(DEBUG_LEVEL)\"" \
 		$(JDK_VER_DEFS)
 HS_LIB_ARCH   = -DHOTSPOT_LIB_ARCH=\"$(LIBARCH)\"
 BUILD_USER    = -DHOTSPOT_BUILD_USER="\"$(HOTSPOT_BUILD_USER)\""
--- a/hotspot/make/bsd/Makefile	Wed Jul 05 21:02:33 2017 +0200
+++ b/hotspot/make/bsd/Makefile	Wed Jul 05 21:04:26 2017 +0200
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1999, 2015, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -203,7 +203,7 @@
 
 BUILDTREE_MAKE    = $(GAMMADIR)/make/$(OSNAME)/makefiles/buildtree.make
 BUILDTREE_VARS    = GAMMADIR=$(GAMMADIR) OS_FAMILY=$(OSNAME) SRCARCH=$(SRCARCH) BUILDARCH=$(BUILDARCH) LIBARCH=$(LIBARCH) LIBRARY_SUFFIX=$(LIBRARY_SUFFIX)
-BUILDTREE_VARS   += HOTSPOT_RELEASE_VERSION=$(HOTSPOT_RELEASE_VERSION) HOTSPOT_BUILD_VERSION=$(HOTSPOT_BUILD_VERSION) JRE_RELEASE_VERSION=$(JRE_RELEASE_VERSION)
+BUILDTREE_VARS   += HOTSPOT_VERSION_STRING=$(HOTSPOT_VERSION_STRING) VERSION_STRING=$(VERSION_STRING)
 BUILDTREE_VARS   += ENABLE_FULL_DEBUG_SYMBOLS=$(ENABLE_FULL_DEBUG_SYMBOLS) OBJCOPY=$(OBJCOPY) STRIP_POLICY=$(STRIP_POLICY) ZIP_DEBUGINFO_FILES=$(ZIP_DEBUGINFO_FILES) ZIPEXE=$(ZIPEXE)
 
 BUILDTREE         = $(MAKE) -f $(BUILDTREE_MAKE) $(BUILDTREE_VARS)
--- a/hotspot/make/bsd/makefiles/buildtree.make	Wed Jul 05 21:02:33 2017 +0200
+++ b/hotspot/make/bsd/makefiles/buildtree.make	Wed Jul 05 21:04:26 2017 +0200
@@ -36,9 +36,8 @@
 # GAMMADIR	- top of workspace
 # OS_FAMILY	- operating system
 # VARIANT	- core, compiler1, compiler2, or tiered
-# HOTSPOT_RELEASE_VERSION - <major_ver>.<minor_ver>.<micro_ver>[-<identifier>][-<debug_target>][-b<nn>]
-# HOTSPOT_BUILD_VERSION   - internal, internal-$(USER_RELEASE_SUFFIX) or empty
-# JRE_RELEASE_VERSION     - <major>.<minor>.<micro> (1.7.0)
+# VERSION_STRING - the JDK version string as specified by JEP-223
+# HOTSPOT_VERSION_STRING - the same as VERSION_STRING, unless overridden by a standalone build
 #
 # Builds the directory trees with makefiles plus some convenience files in
 # each directory:
@@ -137,11 +136,7 @@
 
 # Define variables to be set in flags.make.
 # Default values are set in make/defs.make.
-ifeq ($(HOTSPOT_BUILD_VERSION),)
-  HS_BUILD_VER=$(HOTSPOT_RELEASE_VERSION)
-else
-  HS_BUILD_VER=$(HOTSPOT_RELEASE_VERSION)-$(HOTSPOT_BUILD_VERSION)
-endif
+
 # Set BUILD_USER from system-dependent hints:  $LOGNAME, $(whoami)
 ifndef HOTSPOT_BUILD_USER
   HOTSPOT_BUILD_USER := $(shell echo $$LOGNAME)
@@ -166,7 +161,7 @@
   endif
 endif
 
-BUILDTREE_VARS += HOTSPOT_RELEASE_VERSION=$(HS_BUILD_VER) HOTSPOT_BUILD_VERSION=  JRE_RELEASE_VERSION=$(JRE_RELEASE_VERSION)
+BUILDTREE_VARS += HOTSPOT_VERSION_STRING=$(HOTSPOT_VERSION_STRING) VERSION_STRING=$(VERSION_STRING)
 
 BUILDTREE	= \
 	$(MAKE) -f $(BUILDTREE_MAKE) $(BUILDTREE_TARGETS) $(BUILDTREE_VARS)
@@ -216,9 +211,9 @@
 	echo "BUILDARCH = $(BUILDARCH)"; \
 	echo "LIBARCH = $(LIBARCH)"; \
 	echo "TARGET = $(TARGET)"; \
-	echo "HS_BUILD_VER = $(HS_BUILD_VER)"; \
-	echo "JRE_RELEASE_VER = $(JRE_RELEASE_VERSION)"; \
-	echo "SA_BUILD_VERSION = $(HS_BUILD_VER)"; \
+	echo "HOTSPOT_VERSION_STRING = $(HOTSPOT_VERSION_STRING)"; \
+	echo "VERSION_STRING = $(VERSION_STRING)"; \
+	echo "SA_BUILD_VERSION = $(HOTSPOT_VERSION_STRING)"; \
 	echo "HOTSPOT_BUILD_USER = $(HOTSPOT_BUILD_USER)"; \
 	echo "HOTSPOT_VM_DISTRO = $(HOTSPOT_VM_DISTRO)"; \
 	echo "OPENJDK = $(OPENJDK)"; \
--- a/hotspot/make/bsd/makefiles/defs.make	Wed Jul 05 21:02:33 2017 +0200
+++ b/hotspot/make/bsd/makefiles/defs.make	Wed Jul 05 21:04:26 2017 +0200
@@ -144,117 +144,100 @@
 
 OS_VENDOR:=$(shell uname -s)
 
-# determine if HotSpot is being built in JDK6 or earlier version
-JDK6_OR_EARLIER=0
-ifeq "$(shell expr \( '$(JDK_MAJOR_VERSION)' != '' \& '$(JDK_MINOR_VERSION)' != '' \& '$(JDK_MICRO_VERSION)' != '' \))" "1"
-  # if the longer variable names (newer build style) are set, then check those
-  ifeq "$(shell expr \( $(JDK_MAJOR_VERSION) = 1 \& $(JDK_MINOR_VERSION) \< 7 \))" "1"
-    JDK6_OR_EARLIER=1
-  endif
-else
-  # the longer variables aren't set so check the shorter variable names
-  ifeq "$(shell expr \( '$(JDK_MAJOR_VER)' = 1 \& '$(JDK_MINOR_VER)' \< 7 \))" "1"
-    JDK6_OR_EARLIER=1
-  endif
-endif
+# The Full Debug Symbols (FDS) default for BUILD_FLAVOR == product
+# builds is enabled with debug info files ZIP'ed to save space. For
+# BUILD_FLAVOR != product builds, FDS is always enabled, after all a
+# debug build without debug info isn't very useful.
+# The ZIP_DEBUGINFO_FILES option only has meaning when FDS is enabled.
+#
+# If you invoke a build with FULL_DEBUG_SYMBOLS=0, then FDS will be
+# disabled for a BUILD_FLAVOR == product build.
+#
+# Note: Use of a different variable name for the FDS override option
+# versus the FDS enabled check is intentional (FULL_DEBUG_SYMBOLS
+# versus ENABLE_FULL_DEBUG_SYMBOLS). For auto build systems that pass
+# in options via environment variables, use of distinct variables
+# prevents strange behaviours. For example, in a BUILD_FLAVOR !=
+# product build, the FULL_DEBUG_SYMBOLS environment variable will be
+# 0, but the ENABLE_FULL_DEBUG_SYMBOLS make variable will be 1. If
+# the same variable name is used, then different values can be picked
+# up by different parts of the build. Just to be clear, we only need
+# two variable names because the incoming option value can be
+# overridden in some situations, e.g., a BUILD_FLAVOR != product
+# build.
 
-ifeq ($(JDK6_OR_EARLIER),0)
-  # Full Debug Symbols is supported on JDK7 or newer.
-  # The Full Debug Symbols (FDS) default for BUILD_FLAVOR == product
-  # builds is enabled with debug info files ZIP'ed to save space. For
-  # BUILD_FLAVOR != product builds, FDS is always enabled, after all a
-  # debug build without debug info isn't very useful.
-  # The ZIP_DEBUGINFO_FILES option only has meaning when FDS is enabled.
-  #
-  # If you invoke a build with FULL_DEBUG_SYMBOLS=0, then FDS will be
-  # disabled for a BUILD_FLAVOR == product build.
-  #
-  # Note: Use of a different variable name for the FDS override option
-  # versus the FDS enabled check is intentional (FULL_DEBUG_SYMBOLS
-  # versus ENABLE_FULL_DEBUG_SYMBOLS). For auto build systems that pass
-  # in options via environment variables, use of distinct variables
-  # prevents strange behaviours. For example, in a BUILD_FLAVOR !=
-  # product build, the FULL_DEBUG_SYMBOLS environment variable will be
-  # 0, but the ENABLE_FULL_DEBUG_SYMBOLS make variable will be 1. If
-  # the same variable name is used, then different values can be picked
-  # up by different parts of the build. Just to be clear, we only need
-  # two variable names because the incoming option value can be
-  # overridden in some situations, e.g., a BUILD_FLAVOR != product
-  # build.
-
-  # Due to the multiple sub-make processes that occur this logic gets
-  # executed multiple times. We reduce the noise by at least checking that
-  # BUILD_FLAVOR has been set.
-  ifneq ($(BUILD_FLAVOR),)
-    # FULL_DEBUG_SYMBOLS not created for individual static libraries
-    ifeq ($(STATIC_BUILD),false)
-      ifeq ($(BUILD_FLAVOR), product)
-        FULL_DEBUG_SYMBOLS ?= 1
-        ENABLE_FULL_DEBUG_SYMBOLS = $(FULL_DEBUG_SYMBOLS)
-      else
-        # debug variants always get Full Debug Symbols (if available)
-        ENABLE_FULL_DEBUG_SYMBOLS = 1
-      endif
-     endif
-    $(eval $(call print_info, "ENABLE_FULL_DEBUG_SYMBOLS=$(ENABLE_FULL_DEBUG_SYMBOLS)"))
-    # since objcopy is optional, we set ZIP_DEBUGINFO_FILES later
+# Due to the multiple sub-make processes that occur this logic gets
+# executed multiple times. We reduce the noise by at least checking that
+# BUILD_FLAVOR has been set.
+ifneq ($(BUILD_FLAVOR),)
+  # FULL_DEBUG_SYMBOLS not created for individual static libraries
+  ifeq ($(STATIC_BUILD),false)
+    ifeq ($(BUILD_FLAVOR), product)
+      FULL_DEBUG_SYMBOLS ?= 1
+      ENABLE_FULL_DEBUG_SYMBOLS = $(FULL_DEBUG_SYMBOLS)
+    else
+      # debug variants always get Full Debug Symbols (if available)
+      ENABLE_FULL_DEBUG_SYMBOLS = 1
+    endif
+  endif
+  $(eval $(call print_info, "ENABLE_FULL_DEBUG_SYMBOLS=$(ENABLE_FULL_DEBUG_SYMBOLS)"))
+  # since objcopy is optional, we set ZIP_DEBUGINFO_FILES later
 
-    ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
-      ifeq ($(OS_VENDOR), Darwin)
-          # MacOS X doesn't use OBJCOPY or STRIP_POLICY
-          OBJCOPY=
-          STRIP_POLICY=
-          ZIP_DEBUGINFO_FILES ?= 1
+  ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
+    ifeq ($(OS_VENDOR), Darwin)
+        # MacOS X doesn't use OBJCOPY or STRIP_POLICY
+        OBJCOPY=
+        STRIP_POLICY=
+        ZIP_DEBUGINFO_FILES ?= 1
+    else
+      # Default OBJCOPY comes from GNU Binutils on BSD
+      ifeq ($(CROSS_COMPILE_ARCH),)
+        DEF_OBJCOPY=/usr/bin/objcopy
       else
-        # Default OBJCOPY comes from GNU Binutils on BSD
-        ifeq ($(CROSS_COMPILE_ARCH),)
-          DEF_OBJCOPY=/usr/bin/objcopy
-        else
-          # Assume objcopy is part of the cross-compilation toolset
-          ifneq ($(ALT_COMPILER_PATH),)
-            DEF_OBJCOPY=$(ALT_COMPILER_PATH)/objcopy
-          endif
+        # Assume objcopy is part of the cross-compilation toolset
+        ifneq ($(ALT_COMPILER_PATH),)
+          DEF_OBJCOPY=$(ALT_COMPILER_PATH)/objcopy
         endif
-        OBJCOPY=$(shell test -x $(DEF_OBJCOPY) && echo $(DEF_OBJCOPY))
-        ifneq ($(ALT_OBJCOPY),)
-          $(eval $(call print_info, "ALT_OBJCOPY=$(ALT_OBJCOPY)"))
-          OBJCOPY=$(shell test -x $(ALT_OBJCOPY) && echo $(ALT_OBJCOPY))
-        endif
+      endif
+      OBJCOPY=$(shell test -x $(DEF_OBJCOPY) && echo $(DEF_OBJCOPY))
+      ifneq ($(ALT_OBJCOPY),)
+        $(eval $(call print_info, "ALT_OBJCOPY=$(ALT_OBJCOPY)"))
+        OBJCOPY=$(shell test -x $(ALT_OBJCOPY) && echo $(ALT_OBJCOPY))
+      endif
 
-        ifeq ($(OBJCOPY),)
-          $(eval $(call print_info, "no objcopy cmd found so cannot create .debuginfo" \
-              "files. You may need to set ALT_OBJCOPY."))
-          ENABLE_FULL_DEBUG_SYMBOLS=0
-          $(eval $(call print_info, "ENABLE_FULL_DEBUG_SYMBOLS=$(ENABLE_FULL_DEBUG_SYMBOLS)"))
-        else
-          $(eval $(call print_info, "$(OBJCOPY) cmd found so will create .debuginfo" \
-              "files."))
+      ifeq ($(OBJCOPY),)
+        $(eval $(call print_info, "no objcopy cmd found so cannot create .debuginfo" \
+            "files. You may need to set ALT_OBJCOPY."))
+        ENABLE_FULL_DEBUG_SYMBOLS=0
+        $(eval $(call print_info, "ENABLE_FULL_DEBUG_SYMBOLS=$(ENABLE_FULL_DEBUG_SYMBOLS)"))
+      else
+        $(eval $(call print_info, "$(OBJCOPY) cmd found so will create .debuginfo" \
+            "files."))
 
-          # Library stripping policies for .debuginfo configs:
-          #   all_strip - strips everything from the library
-          #   min_strip - strips most stuff from the library; leaves
-          #               minimum symbols
-          #   no_strip  - does not strip the library at all
-          #
-          # Oracle security policy requires "all_strip". A waiver was
-          # granted on 2011.09.01 that permits using "min_strip" in the
-          # Java JDK and Java JRE.
-          #
-          # Currently, STRIP_POLICY is only used when Full Debug Symbols
-          # is enabled.
-          #
-          STRIP_POLICY ?= min_strip
+        # Library stripping policies for .debuginfo configs:
+        #   all_strip - strips everything from the library
+        #   min_strip - strips most stuff from the library; leaves
+        #               minimum symbols
+        #   no_strip  - does not strip the library at all
+        #
+        # Oracle security policy requires "all_strip". A waiver was
+        # granted on 2011.09.01 that permits using "min_strip" in the
+        # Java JDK and Java JRE.
+        #
+        # Currently, STRIP_POLICY is only used when Full Debug Symbols
+        # is enabled.
+        #
+        STRIP_POLICY ?= min_strip
 
-          $(eval $(call print_info, "STRIP_POLICY=$(STRIP_POLICY)"))
+        $(eval $(call print_info, "STRIP_POLICY=$(STRIP_POLICY)"))
 
-          ZIP_DEBUGINFO_FILES ?= 1
-        endif
+        ZIP_DEBUGINFO_FILES ?= 1
+      endif
 
-        $(eval $(call print_info, "ZIP_DEBUGINFO_FILES=$(ZIP_DEBUGINFO_FILES)"))
-      endif
-    endif # ENABLE_FULL_DEBUG_SYMBOLS=1
-  endif # BUILD_FLAVOR
-endif # JDK_6_OR_EARLIER
+      $(eval $(call print_info, "ZIP_DEBUGINFO_FILES=$(ZIP_DEBUGINFO_FILES)"))
+    endif
+  endif # ENABLE_FULL_DEBUG_SYMBOLS=1
+endif # BUILD_FLAVOR
 
 JDK_INCLUDE_SUBDIR=bsd
 
@@ -274,7 +257,7 @@
 
 # jsig library not needed for static builds
 ifneq ($(STATIC_BUILD),true)
-# client and server subdirectories have symbolic links to ../libjsig.so
+  # client and server subdirectories have symbolic links to ../libjsig.so
   EXPORT_LIST += $(EXPORT_LIB_ARCH_DIR)/libjsig.$(LIBRARY_SUFFIX)
 endif
 
--- a/hotspot/make/bsd/makefiles/vm.make	Wed Jul 05 21:02:33 2017 +0200
+++ b/hotspot/make/bsd/makefiles/vm.make	Wed Jul 05 21:04:26 2017 +0200
@@ -73,12 +73,14 @@
 endif
 
 # The following variables are defined in the generated flags.make file.
-JDK_VER_DEFS  = -DJDK_MAJOR_VERSION="\"$(JDK_MAJOR_VERSION)\"" \
-		-DJDK_MINOR_VERSION="\"$(JDK_MINOR_VERSION)\"" \
-		-DJDK_MICRO_VERSION="\"$(JDK_MICRO_VERSION)\"" \
-		-DJDK_BUILD_NUMBER="\"$(JDK_BUILD_NUMBER)\""
-VM_VER_DEFS   = -DHOTSPOT_RELEASE_VERSION="\"$(HS_BUILD_VER)\"" \
-		-DJRE_RELEASE_VERSION="\"$(JRE_RELEASE_VER)\""  \
+JDK_VER_DEFS  = -DVERSION_MAJOR=$(VERSION_MAJOR) \
+		-DVERSION_MINOR=$(VERSION_MINOR) \
+		-DVERSION_SECURITY=$(VERSION_SECURITY) \
+	        -DVERSION_PATCH=$(VERSION_PATCH) \
+		-DVERSION_BUILD=$(VERSION_BUILD)
+VM_VER_DEFS   = -DHOTSPOT_VERSION_STRING="\"$(HOTSPOT_VERSION_STRING)\"" \
+		-DVERSION_STRING="\"$(VERSION_STRING)\""  \
+	        -DDEBUG_LEVEL="\"$(DEBUG_LEVEL)\"" \
 		$(JDK_VER_DEFS)
 HS_LIB_ARCH   = -DHOTSPOT_LIB_ARCH=\"$(LIBARCH)\"
 BUILD_USER    = -DHOTSPOT_BUILD_USER="\"$(HOTSPOT_BUILD_USER)\""
--- a/hotspot/make/defs.make	Wed Jul 05 21:02:33 2017 +0200
+++ b/hotspot/make/defs.make	Wed Jul 05 21:04:26 2017 +0200
@@ -122,58 +122,49 @@
 # hotspot version definitions
 include $(GAMMADIR)/make/jdk_version
 
-# Java versions needed
-ifeq ($(PREVIOUS_JDK_VERSION),)
-  PREVIOUS_JDK_VERSION=$(JDK_PREVIOUS_VERSION)
+# JDK_PREVIOUS_VERSION is only needed to facilitate standalone builds
+ifeq ($(JDK_PREVIOUS_VERSION),)
+  JDK_PREVIOUS_VERSION=$(STANDALONE_JDK_PREVIOUS_VERSION)
 endif
-ifeq ($(JDK_MAJOR_VERSION),)
-  JDK_MAJOR_VERSION=$(JDK_MAJOR_VER)
+# Java versions needed
+ifeq ($(VERSION_MAJOR),)
+  VERSION_MAJOR=$(STANDALONE_JDK_MAJOR_VER)
 endif
-ifeq ($(JDK_MINOR_VERSION),)
-  JDK_MINOR_VERSION=$(JDK_MINOR_VER)
-endif
-ifeq ($(JDK_MICRO_VERSION),)
-  JDK_MICRO_VERSION=$(JDK_MICRO_VER)
+ifeq ($(VERSION_MINOR),)
+  VERSION_MINOR=$(STANDALONE_JDK_MINOR_VER)
 endif
-ifeq ($(JDK_BUILD_NUMBER),)
-  JDK_BUILD_NUMBER=0
+ifeq ($(VERSION_SECURITY),)
+  VERSION_SECURITY=$(STANDALONE_JDK_SECURITY_VER)
 endif
-ifeq ($(JDK_MKTG_VERSION),)
-  JDK_MKTG_VERSION=$(JDK_MINOR_VERSION).$(JDK_MICRO_VERSION)
+ifeq ($(VERSION_PATCH),)
+  VERSION_PATCH=$(STANDALONE_JDK_PATCH_VER)
 endif
-ifeq ($(JDK_VERSION),)  
-  ifeq ($(BUILD_FLAVOR), product)
-    JDK_VERSION=$(JDK_MAJOR_VERSION).$(JDK_MINOR_VERSION).$(JDK_MICRO_VERSION)
-  else
-    JDK_VERSION=$(JDK_MAJOR_VERSION).$(JDK_MINOR_VERSION).$(JDK_MICRO_VERSION)-$(BUILD_FLAVOR)
-  endif
+ifeq ($(VERSION_BUILD),)
+  VERSION_BUILD=0
 endif
-ifeq ($(FULL_VERSION),)
-  FULL_VERSION="$(JDK_VERSION)"
+ifeq ($(VERSION_SHORT),)
+  VERSION_SHORT=$(VERSION_MAJOR).$(VERSION_MINOR).$(VERSION_SECURITY)
+endif
+ifeq ($(VERSION_STRING),)
+  # Note that this is an extremely rough and incorrect approximation of a correct version string.
+  VERSION_STRING=$(VERSION_MAJOR).$(VERSION_MINOR).$(VERSION_SECURITY)-internal
 endif
 
-# FULL_VERSION is only used to define JRE_RELEASE_VERSION which is used
-# as JRE version in VM -Xinternalversion output.
-ifndef JRE_RELEASE_VERSION
-  JRE_RELEASE_VERSION=$(FULL_VERSION)
-endif
-
-ifndef HOTSPOT_RELEASE_VERSION
-  HOTSPOT_RELEASE_VERSION=$(FULL_VERSION)
+ifneq ($(HOTSPOT_RELEASE_VERSION),)
+  # Allow old command-line overrides
+  HOTSPOT_VERSION_STRING := $(HOTSPOT_RELEASE_VERSION)
+else
+  # Normally get from surrounding JDK build
+  HOTSPOT_VERSION_STRING := $(VERSION_STRING)
 endif
 
-ifdef HOTSPOT_BUILD_VERSION
-# specified in command line
+ifneq ($(HOTSPOT_BUILD_VERSION),)
+  # If old command-lines variable exists, append to version string
+  HOTSPOT_VERSION_STRING := $(HOTSPOT_VERSION_STRING)-$(HOTSPOT_BUILD_VERSION)
 else
-  ifdef COOKED_BUILD_NUMBER
-# JRE build
-    HOTSPOT_BUILD_VERSION=
-  else
-    ifdef USER_RELEASE_SUFFIX
-      HOTSPOT_BUILD_VERSION=internal-$(USER_RELEASE_SUFFIX)
-    else
-      HOTSPOT_BUILD_VERSION=internal
-    endif
+  ifeq ($(SPEC),)
+    # If building standalone, add -internal.
+    HOTSPOT_VERSION_STRING := $(HOTSPOT_VERSION_STRING)-internal
   endif
 endif
 
@@ -233,7 +224,7 @@
 endif
 
 # Find latest promoted JDK area
-JDK_IMPORT_PATH=$(SLASH_JAVA)/re/j2se/$(JDK_VERSION)/promoted/latest/binaries/$(PLATFORM)
+JDK_IMPORT_PATH=$(SLASH_JAVA)/re/j2se/$(VERSION_STRING)/promoted/latest/binaries/$(PLATFORM)
 ifneq ($(ALT_JDK_IMPORT_PATH),)
   JDK_IMPORT_PATH=$(ALT_JDK_IMPORT_PATH)
 endif
@@ -246,7 +237,7 @@
 endif
 
 # Find JDK used for javac compiles
-BOOTDIR=$(SLASH_JAVA)/re/j2se/$(PREVIOUS_JDK_VERSION)/latest/binaries/$(PLATFORM)
+BOOTDIR=$(SLASH_JAVA)/re/j2se/$(JDK_PREVIOUS_VERSION)/latest/binaries/$(PLATFORM)
 ifneq ($(ALT_BOOTDIR),)
   BOOTDIR=$(ALT_BOOTDIR)
 endif
@@ -337,12 +328,7 @@
 MAKE_ARGS += OUTPUTDIR=$(ABS_OUTPUTDIR)
 MAKE_ARGS += GAMMADIR=$(ABS_GAMMADIR)
 MAKE_ARGS += MAKE_VERBOSE=$(MAKE_VERBOSE)
-MAKE_ARGS += JRE_RELEASE_VERSION=$(JRE_RELEASE_VERSION)
-
-# Pass HOTSPOT_BUILD_VERSION as argument to OS specific Makefile
-# to overwrite the default definition since OS specific Makefile also
-# includes this make/defs.make file.
-MAKE_ARGS += HOTSPOT_BUILD_VERSION=$(HOTSPOT_BUILD_VERSION)
+MAKE_ARGS += VERSION_STRING=$(VERSION_STRING)
 
 MAKE_ARGS += BOOT_JDK_SOURCETARGET="$(BOOT_JDK_SOURCETARGET)"
 
--- a/hotspot/make/jdk6_hotspot_distro	Wed Jul 05 21:02:33 2017 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,32 +0,0 @@
-# 
-# Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# 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.
-# 
-
-#
-# This file format must remain compatible with both
-# GNU Makefile and Microsoft nmake formats.
-#
-
-# Don't put quotes (fail windows build).
-HOTSPOT_VM_DISTRO=Java HotSpot(TM)
-COMPANY_NAME=Sun Microsystems, Inc.
-PRODUCT_NAME=Java(TM) Platform SE
--- a/hotspot/make/jdk_version	Wed Jul 05 21:02:33 2017 +0200
+++ b/hotspot/make/jdk_version	Wed Jul 05 21:04:26 2017 +0200
@@ -1,5 +1,5 @@
-# 
-# Copyright (c) 2006, 2014, Oracle and/or its affiliates. All rights reserved.
+#
+# Copyright (c) 2006, 2015, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -26,11 +26,12 @@
 #
 
 # Don't put quotes (fail windows build).
-HOTSPOT_VM_COPYRIGHT=Copyright 2014
+HOTSPOT_VM_COPYRIGHT=Copyright 2015
 
-JDK_MAJOR_VER=1
-JDK_MINOR_VER=9
-JDK_MICRO_VER=0
+STANDALONE_JDK_MAJOR_VER=9
+STANDALONE_JDK_MINOR_VER=0
+STANDALONE_JDK_SECURITY_VER=0
+STANDALONE_JDK_PATCH_VER=0
 
 # Previous (bootdir) JDK version
-JDK_PREVIOUS_VERSION=1.8.0
+STANDALONE_JDK_PREVIOUS_VERSION=1.8.0
--- a/hotspot/make/linux/Makefile	Wed Jul 05 21:02:33 2017 +0200
+++ b/hotspot/make/linux/Makefile	Wed Jul 05 21:04:26 2017 +0200
@@ -210,7 +210,7 @@
 
 BUILDTREE_MAKE    = $(GAMMADIR)/make/$(OSNAME)/makefiles/buildtree.make
 BUILDTREE_VARS    = GAMMADIR=$(GAMMADIR) OS_FAMILY=$(OSNAME) SRCARCH=$(SRCARCH) BUILDARCH=$(BUILDARCH) LIBARCH=$(LIBARCH)
-BUILDTREE_VARS   += HOTSPOT_RELEASE_VERSION=$(HOTSPOT_RELEASE_VERSION) HOTSPOT_BUILD_VERSION=$(HOTSPOT_BUILD_VERSION) JRE_RELEASE_VERSION=$(JRE_RELEASE_VERSION)
+BUILDTREE_VARS   += HOTSPOT_VERSION_STRING=$(HOTSPOT_VERSION_STRING) VERSION_STRING=$(VERSION_STRING)
 BUILDTREE_VARS   += ENABLE_FULL_DEBUG_SYMBOLS=$(ENABLE_FULL_DEBUG_SYMBOLS) OBJCOPY=$(OBJCOPY) STRIP_POLICY=$(STRIP_POLICY) ZIP_DEBUGINFO_FILES=$(ZIP_DEBUGINFO_FILES) ZIPEXE=$(ZIPEXE)
 
 BUILDTREE         = $(MAKE) -f $(BUILDTREE_MAKE) $(BUILDTREE_VARS)
--- a/hotspot/make/linux/makefiles/buildtree.make	Wed Jul 05 21:02:33 2017 +0200
+++ b/hotspot/make/linux/makefiles/buildtree.make	Wed Jul 05 21:04:26 2017 +0200
@@ -36,9 +36,8 @@
 # GAMMADIR	- top of workspace
 # OS_FAMILY	- operating system
 # VARIANT	- core, compiler1, compiler2, or tiered
-# HOTSPOT_RELEASE_VERSION - <major_ver>.<minor_ver>.<micro_ver>[-<identifier>][-<debug_target>][-b<nn>]
-# HOTSPOT_BUILD_VERSION   - internal, internal-$(USER_RELEASE_SUFFIX) or empty
-# JRE_RELEASE_VERSION     - <major>.<minor>.<micro> (1.7.0)
+# VERSION_STRING - the JDK version string as specified by JEP-223
+# HOTSPOT_VERSION_STRING - the same as VERSION_STRING, unless overridden by a standalone build
 #
 # Builds the directory trees with makefiles plus some convenience files in
 # each directory:
@@ -134,11 +133,7 @@
 
 # Define variables to be set in flags.make.
 # Default values are set in make/defs.make.
-ifeq ($(HOTSPOT_BUILD_VERSION),)
-  HS_BUILD_VER=$(HOTSPOT_RELEASE_VERSION)
-else
-  HS_BUILD_VER=$(HOTSPOT_RELEASE_VERSION)-$(HOTSPOT_BUILD_VERSION)
-endif
+
 # Set BUILD_USER from system-dependent hints:  $LOGNAME, $(whoami)
 ifndef HOTSPOT_BUILD_USER
   HOTSPOT_BUILD_USER := $(shell echo $$LOGNAME)
@@ -163,7 +158,7 @@
   endif
 endif
 
-BUILDTREE_VARS += HOTSPOT_RELEASE_VERSION=$(HS_BUILD_VER) HOTSPOT_BUILD_VERSION=  JRE_RELEASE_VERSION=$(JRE_RELEASE_VERSION)
+BUILDTREE_VARS += HOTSPOT_VERSION_STRING=$(HOTSPOT_VERSION_STRING) VERSION_STRING=$(VERSION_STRING)
 
 BUILDTREE	= \
 	$(MAKE) -f $(BUILDTREE_MAKE) $(BUILDTREE_TARGETS) $(BUILDTREE_VARS)
@@ -217,9 +212,9 @@
 	echo "BUILDARCH = $(BUILDARCH)"; \
 	echo "LIBARCH = $(LIBARCH)"; \
 	echo "TARGET = $(TARGET)"; \
-	echo "HS_BUILD_VER = $(HS_BUILD_VER)"; \
-	echo "JRE_RELEASE_VER = $(JRE_RELEASE_VERSION)"; \
-	echo "SA_BUILD_VERSION = $(HS_BUILD_VER)"; \
+	echo "HOTSPOT_VERSION_STRING = $(HOTSPOT_VERSION_STRING)"; \
+	echo "VERSION_STRING = $(VERSION_STRING)"; \
+	echo "SA_BUILD_VERSION = $(HOTSPOT_VERSION_STRING)"; \
 	echo "HOTSPOT_BUILD_USER = $(HOTSPOT_BUILD_USER)"; \
 	echo "HOTSPOT_VM_DISTRO = $(HOTSPOT_VM_DISTRO)"; \
 	echo "OPENJDK = $(OPENJDK)"; \
--- a/hotspot/make/linux/makefiles/defs.make	Wed Jul 05 21:02:33 2017 +0200
+++ b/hotspot/make/linux/makefiles/defs.make	Wed Jul 05 21:04:26 2017 +0200
@@ -139,102 +139,85 @@
   endif
 endif
 
-# determine if HotSpot is being built in JDK6 or earlier version
-JDK6_OR_EARLIER=0
-ifeq "$(shell expr \( '$(JDK_MAJOR_VERSION)' != '' \& '$(JDK_MINOR_VERSION)' != '' \& '$(JDK_MICRO_VERSION)' != '' \))" "1"
-  # if the longer variable names (newer build style) are set, then check those
-  ifeq "$(shell expr \( $(JDK_MAJOR_VERSION) = 1 \& $(JDK_MINOR_VERSION) \< 7 \))" "1"
-    JDK6_OR_EARLIER=1
-  endif
-else
-  # the longer variables aren't set so check the shorter variable names
-  ifeq "$(shell expr \( '$(JDK_MAJOR_VER)' = 1 \& '$(JDK_MINOR_VER)' \< 7 \))" "1"
-    JDK6_OR_EARLIER=1
-  endif
-endif
+# The Full Debug Symbols (FDS) default for BUILD_FLAVOR == product
+# builds is enabled with debug info files ZIP'ed to save space. For
+# BUILD_FLAVOR != product builds, FDS is always enabled, after all a
+# debug build without debug info isn't very useful.
+# The ZIP_DEBUGINFO_FILES option only has meaning when FDS is enabled.
+#
+# If you invoke a build with FULL_DEBUG_SYMBOLS=0, then FDS will be
+# disabled for a BUILD_FLAVOR == product build.
+#
+# Note: Use of a different variable name for the FDS override option
+# versus the FDS enabled check is intentional (FULL_DEBUG_SYMBOLS
+# versus ENABLE_FULL_DEBUG_SYMBOLS). For auto build systems that pass
+# in options via environment variables, use of distinct variables
+# prevents strange behaviours. For example, in a BUILD_FLAVOR !=
+# product build, the FULL_DEBUG_SYMBOLS environment variable will be
+# 0, but the ENABLE_FULL_DEBUG_SYMBOLS make variable will be 1. If
+# the same variable name is used, then different values can be picked
+# up by different parts of the build. Just to be clear, we only need
+# two variable names because the incoming option value can be
+# overridden in some situations, e.g., a BUILD_FLAVOR != product
+# build.
 
-ifeq ($(JDK6_OR_EARLIER),0)
-  # Full Debug Symbols is supported on JDK7 or newer.
-  # The Full Debug Symbols (FDS) default for BUILD_FLAVOR == product
-  # builds is enabled with debug info files ZIP'ed to save space. For
-  # BUILD_FLAVOR != product builds, FDS is always enabled, after all a
-  # debug build without debug info isn't very useful.
-  # The ZIP_DEBUGINFO_FILES option only has meaning when FDS is enabled.
-  #
-  # If you invoke a build with FULL_DEBUG_SYMBOLS=0, then FDS will be
-  # disabled for a BUILD_FLAVOR == product build.
-  #
-  # Note: Use of a different variable name for the FDS override option
-  # versus the FDS enabled check is intentional (FULL_DEBUG_SYMBOLS
-  # versus ENABLE_FULL_DEBUG_SYMBOLS). For auto build systems that pass
-  # in options via environment variables, use of distinct variables
-  # prevents strange behaviours. For example, in a BUILD_FLAVOR !=
-  # product build, the FULL_DEBUG_SYMBOLS environment variable will be
-  # 0, but the ENABLE_FULL_DEBUG_SYMBOLS make variable will be 1. If
-  # the same variable name is used, then different values can be picked
-  # up by different parts of the build. Just to be clear, we only need
-  # two variable names because the incoming option value can be
-  # overridden in some situations, e.g., a BUILD_FLAVOR != product
-  # build.
+# Due to the multiple sub-make processes that occur this logic gets
+# executed multiple times. We reduce the noise by at least checking that
+# BUILD_FLAVOR has been set.
+ifneq ($(BUILD_FLAVOR),)
+  ifeq ($(BUILD_FLAVOR), product)
+    FULL_DEBUG_SYMBOLS ?= 1
+    ENABLE_FULL_DEBUG_SYMBOLS = $(FULL_DEBUG_SYMBOLS)
+  else
+    # debug variants always get Full Debug Symbols (if available)
+    ENABLE_FULL_DEBUG_SYMBOLS = 1
+  endif
+  $(eval $(call print_info, "ENABLE_FULL_DEBUG_SYMBOLS=$(ENABLE_FULL_DEBUG_SYMBOLS)"))
+  # since objcopy is optional, we set ZIP_DEBUGINFO_FILES later
 
-  # Due to the multiple sub-make processes that occur this logic gets
-  # executed multiple times. We reduce the noise by at least checking that
-  # BUILD_FLAVOR has been set.
-  ifneq ($(BUILD_FLAVOR),)
-    ifeq ($(BUILD_FLAVOR), product)
-      FULL_DEBUG_SYMBOLS ?= 1
-      ENABLE_FULL_DEBUG_SYMBOLS = $(FULL_DEBUG_SYMBOLS)
+  ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
+    # Default OBJCOPY comes from GNU Binutils on Linux
+    ifeq ($(CROSS_COMPILE_ARCH),)
+      DEF_OBJCOPY=/usr/bin/objcopy
     else
-      # debug variants always get Full Debug Symbols (if available)
-      ENABLE_FULL_DEBUG_SYMBOLS = 1
+      # Assume objcopy is part of the cross-compilation toolset
+      ifneq ($(ALT_COMPILER_PATH),)
+        DEF_OBJCOPY=$(ALT_COMPILER_PATH)/objcopy
+      endif
     endif
-    $(eval $(call print_info, "ENABLE_FULL_DEBUG_SYMBOLS=$(ENABLE_FULL_DEBUG_SYMBOLS)"))
-    # since objcopy is optional, we set ZIP_DEBUGINFO_FILES later
+    OBJCOPY=$(shell test -x $(DEF_OBJCOPY) && echo $(DEF_OBJCOPY))
+    ifneq ($(ALT_OBJCOPY),)
+      $(eval $(call print_info, "ALT_OBJCOPY=$(ALT_OBJCOPY)"))
+      OBJCOPY=$(shell test -x $(ALT_OBJCOPY) && echo $(ALT_OBJCOPY))
+    endif
 
-    ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
-      # Default OBJCOPY comes from GNU Binutils on Linux
-      ifeq ($(CROSS_COMPILE_ARCH),)
-        DEF_OBJCOPY=/usr/bin/objcopy
-      else
-        # Assume objcopy is part of the cross-compilation toolset
-        ifneq ($(ALT_COMPILER_PATH),)
-          DEF_OBJCOPY=$(ALT_COMPILER_PATH)/objcopy
-        endif
-      endif
-      OBJCOPY=$(shell test -x $(DEF_OBJCOPY) && echo $(DEF_OBJCOPY))
-      ifneq ($(ALT_OBJCOPY),)
-        $(eval $(call print_info, "ALT_OBJCOPY=$(ALT_OBJCOPY)"))
-        OBJCOPY=$(shell test -x $(ALT_OBJCOPY) && echo $(ALT_OBJCOPY))
-      endif
+    ifeq ($(OBJCOPY),)
+      $(eval $(call print_info, "no objcopy cmd found so cannot create .debuginfo files. You may need to set ALT_OBJCOPY."))
+      ENABLE_FULL_DEBUG_SYMBOLS=0
+      $(eval $(call print_info, "ENABLE_FULL_DEBUG_SYMBOLS=$(ENABLE_FULL_DEBUG_SYMBOLS)"))
+    else
+      $(eval $(call print_info, "$(OBJCOPY) cmd found so will create .debuginfo files."))
 
-      ifeq ($(OBJCOPY),)
-        $(eval $(call print_info, "no objcopy cmd found so cannot create .debuginfo files. You may need to set ALT_OBJCOPY."))
-        ENABLE_FULL_DEBUG_SYMBOLS=0
-        $(eval $(call print_info, "ENABLE_FULL_DEBUG_SYMBOLS=$(ENABLE_FULL_DEBUG_SYMBOLS)"))
-      else
-        $(eval $(call print_info, "$(OBJCOPY) cmd found so will create .debuginfo files."))
+      # Library stripping policies for .debuginfo configs:
+      #   all_strip - strips everything from the library
+      #   min_strip - strips most stuff from the library; leaves minimum symbols
+      #   no_strip  - does not strip the library at all
+      #
+      # Oracle security policy requires "all_strip". A waiver was granted on
+      # 2011.09.01 that permits using "min_strip" in the Java JDK and Java JRE.
+      #
+      # Currently, STRIP_POLICY is only used when Full Debug Symbols is enabled.
+      #
+      STRIP_POLICY ?= min_strip
 
-        # Library stripping policies for .debuginfo configs:
-        #   all_strip - strips everything from the library
-        #   min_strip - strips most stuff from the library; leaves minimum symbols
-        #   no_strip  - does not strip the library at all
-        #
-        # Oracle security policy requires "all_strip". A waiver was granted on
-        # 2011.09.01 that permits using "min_strip" in the Java JDK and Java JRE.
-        #
-        # Currently, STRIP_POLICY is only used when Full Debug Symbols is enabled.
-        #
-        STRIP_POLICY ?= min_strip
+      $(eval $(call print_info, "STRIP_POLICY=$(STRIP_POLICY)"))
+
+      ZIP_DEBUGINFO_FILES ?= 1
 
-        $(eval $(call print_info, "STRIP_POLICY=$(STRIP_POLICY)"))
-
-        ZIP_DEBUGINFO_FILES ?= 1
-
-        $(eval $(call print_info, "ZIP_DEBUGINFO_FILES=$(ZIP_DEBUGINFO_FILES)"))
-      endif
-    endif # ENABLE_FULL_DEBUG_SYMBOLS=1
-  endif # BUILD_FLAVOR
-endif # JDK_6_OR_EARLIER
+      $(eval $(call print_info, "ZIP_DEBUGINFO_FILES=$(ZIP_DEBUGINFO_FILES)"))
+    endif
+  endif # ENABLE_FULL_DEBUG_SYMBOLS=1
+endif # BUILD_FLAVOR
 
 JDK_INCLUDE_SUBDIR=linux
 
--- a/hotspot/make/linux/makefiles/vm.make	Wed Jul 05 21:02:33 2017 +0200
+++ b/hotspot/make/linux/makefiles/vm.make	Wed Jul 05 21:04:26 2017 +0200
@@ -75,12 +75,14 @@
 endif
 
 # The following variables are defined in the generated flags.make file.
-JDK_VER_DEFS  = -DJDK_MAJOR_VERSION="\"$(JDK_MAJOR_VERSION)\"" \
-		-DJDK_MINOR_VERSION="\"$(JDK_MINOR_VERSION)\"" \
-		-DJDK_MICRO_VERSION="\"$(JDK_MICRO_VERSION)\"" \
-		-DJDK_BUILD_NUMBER="\"$(JDK_BUILD_NUMBER)\""
-VM_VER_DEFS   = -DHOTSPOT_RELEASE_VERSION="\"$(HS_BUILD_VER)\"" \
-		-DJRE_RELEASE_VERSION="\"$(JRE_RELEASE_VER)\""  \
+JDK_VER_DEFS  = -DVERSION_MAJOR=$(VERSION_MAJOR) \
+		-DVERSION_MINOR=$(VERSION_MINOR) \
+		-DVERSION_SECURITY=$(VERSION_SECURITY) \
+	        -DVERSION_PATCH=$(VERSION_PATCH) \
+		-DVERSION_BUILD=$(VERSION_BUILD)
+VM_VER_DEFS   = -DHOTSPOT_VERSION_STRING="\"$(HOTSPOT_VERSION_STRING)\"" \
+		-DVERSION_STRING="\"$(VERSION_STRING)\""  \
+	        -DDEBUG_LEVEL="\"$(DEBUG_LEVEL)\"" \
 		$(JDK_VER_DEFS)
 HS_LIB_ARCH   = -DHOTSPOT_LIB_ARCH=\"$(LIBARCH)\"
 BUILD_USER    = -DHOTSPOT_BUILD_USER="\"$(HOTSPOT_BUILD_USER)\""
--- a/hotspot/make/solaris/Makefile	Wed Jul 05 21:02:33 2017 +0200
+++ b/hotspot/make/solaris/Makefile	Wed Jul 05 21:04:26 2017 +0200
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1998, 2015, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -157,7 +157,7 @@
 
 BUILDTREE_MAKE    = $(GAMMADIR)/make/$(OSNAME)/makefiles/buildtree.make
 BUILDTREE_VARS    = GAMMADIR=$(GAMMADIR) OS_FAMILY=$(OSNAME) ARCH=$(SRCARCH) BUILDARCH=$(BUILDARCH) LIBARCH=$(LIBARCH)
-BUILDTREE_VARS   += HOTSPOT_RELEASE_VERSION=$(HOTSPOT_RELEASE_VERSION) HOTSPOT_BUILD_VERSION=$(HOTSPOT_BUILD_VERSION) JRE_RELEASE_VERSION=$(JRE_RELEASE_VERSION)
+BUILDTREE_VARS   += HOTSPOT_VERSION_STRING=$(HOTSPOT_VERSION_STRING) VERSION_STRING=$(VERSION_STRING)
 BUILDTREE_VARS   += ENABLE_FULL_DEBUG_SYMBOLS=$(ENABLE_FULL_DEBUG_SYMBOLS) OBJCOPY=$(OBJCOPY) STRIP_POLICY=$(STRIP_POLICY) ZIP_DEBUGINFO_FILES=$(ZIP_DEBUGINFO_FILES) ZIPEXE=$(ZIPEXE)
 
 BUILDTREE         = $(MAKE) -f $(BUILDTREE_MAKE) $(BUILDTREE_VARS)
--- a/hotspot/make/solaris/makefiles/buildtree.make	Wed Jul 05 21:02:33 2017 +0200
+++ b/hotspot/make/solaris/makefiles/buildtree.make	Wed Jul 05 21:04:26 2017 +0200
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -36,9 +36,8 @@
 # GAMMADIR	- top of workspace
 # OS_FAMILY	- operating system
 # VARIANT	- core, compiler1, compiler2, or tiered
-# HOTSPOT_RELEASE_VERSION - <major_ver>.<minor_ver>.<micro_ver>[-<identifier>][-<debug_target>][-b<nn>]
-# HOTSPOT_BUILD_VERSION   - internal, internal-$(USER_RELEASE_SUFFIX) or empty
-# JRE_RELEASE_VERSION     - <major>.<minor>.<micro> (1.7.0)
+# VERSION_STRING - the JDK version string as specified by JEP-223
+# HOTSPOT_VERSION_STRING - the same as VERSION_STRING, unless overridden by a standalone build
 #
 # Builds the directory trees with makefiles plus some convenience files in
 # each directory:
@@ -124,11 +123,7 @@
 
 # Define variables to be set in flags.make.
 # Default values are set in make/defs.make.
-ifeq ($(HOTSPOT_BUILD_VERSION),)
-  HS_BUILD_VER=$(HOTSPOT_RELEASE_VERSION)
-else
-  HS_BUILD_VER=$(HOTSPOT_RELEASE_VERSION)-$(HOTSPOT_BUILD_VERSION)
-endif
+
 # Set BUILD_USER from system-dependent hints:  $LOGNAME, $(whoami)
 ifndef HOTSPOT_BUILD_USER
   HOTSPOT_BUILD_USER := $(shell echo $$LOGNAME)
@@ -153,7 +148,7 @@
   endif
 endif
 
-BUILDTREE_VARS += HOTSPOT_RELEASE_VERSION=$(HS_BUILD_VER) HOTSPOT_BUILD_VERSION= JRE_RELEASE_VERSION=$(JRE_RELEASE_VERSION)
+BUILDTREE_VARS += HOTSPOT_VERSION_STRING=$(HOTSPOT_VERSION_STRING) VERSION_STRING=$(VERSION_STRING)
 
 BUILDTREE	= \
 	$(MAKE) -f $(BUILDTREE_MAKE) $(BUILDTREE_TARGETS) $(BUILDTREE_VARS)
@@ -203,9 +198,9 @@
 	echo "BUILDARCH = $(BUILDARCH)"; \
 	echo "LIBARCH = $(LIBARCH)"; \
 	echo "TARGET = $(TARGET)"; \
-	echo "HS_BUILD_VER = $(HS_BUILD_VER)"; \
-	echo "JRE_RELEASE_VER = $(JRE_RELEASE_VERSION)"; \
-	echo "SA_BUILD_VERSION = $(HS_BUILD_VER)"; \
+	echo "HOTSPOT_VERSION_STRING = $(HOTSPOT_VERSION_STRING)"; \
+	echo "VERSION_STRING = $(VERSION_STRING)"; \
+	echo "SA_BUILD_VERSION = $(HOTSPOT_VERSION_STRING)"; \
 	echo "HOTSPOT_BUILD_USER = $(HOTSPOT_BUILD_USER)"; \
 	echo "HOTSPOT_VM_DISTRO = $(HOTSPOT_VM_DISTRO)"; \
 	echo "OPENJDK = $(OPENJDK)"; \
--- a/hotspot/make/solaris/makefiles/defs.make	Wed Jul 05 21:02:33 2017 +0200
+++ b/hotspot/make/solaris/makefiles/defs.make	Wed Jul 05 21:04:26 2017 +0200
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2006, 2014, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2006, 2015, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -77,144 +77,127 @@
   endif
 endif
 
-# determine if HotSpot is being built in JDK6 or earlier version
-JDK6_OR_EARLIER=0
-ifeq "$(shell expr \( '$(JDK_MAJOR_VERSION)' != '' \& '$(JDK_MINOR_VERSION)' != '' \& '$(JDK_MICRO_VERSION)' != '' \))" "1"
-  # if the longer variable names (newer build style) are set, then check those
-  ifeq "$(shell expr \( $(JDK_MAJOR_VERSION) = 1 \& $(JDK_MINOR_VERSION) \< 7 \))" "1"
-    JDK6_OR_EARLIER=1
-  endif
-else
-  # the longer variables aren't set so check the shorter variable names
-  ifeq "$(shell expr \( '$(JDK_MAJOR_VER)' = 1 \& '$(JDK_MINOR_VER)' \< 7 \))" "1"
-    JDK6_OR_EARLIER=1
-  endif
-endif
+# The Full Debug Symbols (FDS) default for BUILD_FLAVOR == product
+# builds is enabled with debug info files ZIP'ed to save space. For
+# BUILD_FLAVOR != product builds, FDS is always enabled, after all a
+# debug build without debug info isn't very useful.
+# The ZIP_DEBUGINFO_FILES option only has meaning when FDS is enabled.
+#
+# If you invoke a build with FULL_DEBUG_SYMBOLS=0, then FDS will be
+# disabled for a BUILD_FLAVOR == product build.
+#
+# Note: Use of a different variable name for the FDS override option
+# versus the FDS enabled check is intentional (FULL_DEBUG_SYMBOLS
+# versus ENABLE_FULL_DEBUG_SYMBOLS). For auto build systems that pass
+# in options via environment variables, use of distinct variables
+# prevents strange behaviours. For example, in a BUILD_FLAVOR !=
+# product build, the FULL_DEBUG_SYMBOLS environment variable will be
+# 0, but the ENABLE_FULL_DEBUG_SYMBOLS make variable will be 1. If
+# the same variable name is used, then different values can be picked
+# up by different parts of the build. Just to be clear, we only need
+# two variable names because the incoming option value can be
+# overridden in some situations, e.g., a BUILD_FLAVOR != product
+# build.
 
-ifeq ($(JDK6_OR_EARLIER),0)
-  # Full Debug Symbols is supported on JDK7 or newer.
-  # The Full Debug Symbols (FDS) default for BUILD_FLAVOR == product
-  # builds is enabled with debug info files ZIP'ed to save space. For
-  # BUILD_FLAVOR != product builds, FDS is always enabled, after all a
-  # debug build without debug info isn't very useful.
-  # The ZIP_DEBUGINFO_FILES option only has meaning when FDS is enabled.
-  #
-  # If you invoke a build with FULL_DEBUG_SYMBOLS=0, then FDS will be
-  # disabled for a BUILD_FLAVOR == product build.
-  #
-  # Note: Use of a different variable name for the FDS override option
-  # versus the FDS enabled check is intentional (FULL_DEBUG_SYMBOLS
-  # versus ENABLE_FULL_DEBUG_SYMBOLS). For auto build systems that pass
-  # in options via environment variables, use of distinct variables
-  # prevents strange behaviours. For example, in a BUILD_FLAVOR !=
-  # product build, the FULL_DEBUG_SYMBOLS environment variable will be
-  # 0, but the ENABLE_FULL_DEBUG_SYMBOLS make variable will be 1. If
-  # the same variable name is used, then different values can be picked
-  # up by different parts of the build. Just to be clear, we only need
-  # two variable names because the incoming option value can be
-  # overridden in some situations, e.g., a BUILD_FLAVOR != product
-  # build.
+# Due to the multiple sub-make processes that occur this logic gets
+# executed multiple times. We reduce the noise by at least checking that
+# BUILD_FLAVOR has been set.
+ifneq ($(BUILD_FLAVOR),)
+  ifeq ($(BUILD_FLAVOR), product)
+    FULL_DEBUG_SYMBOLS ?= 1
+    ENABLE_FULL_DEBUG_SYMBOLS = $(FULL_DEBUG_SYMBOLS)
+  else
+    # debug variants always get Full Debug Symbols (if available)
+    ENABLE_FULL_DEBUG_SYMBOLS = 1
+  endif
+  $(eval $(call print_info, "ENABLE_FULL_DEBUG_SYMBOLS=$(ENABLE_FULL_DEBUG_SYMBOLS)"))
+  # since objcopy is optional, we set ZIP_DEBUGINFO_FILES later
 
-  # Due to the multiple sub-make processes that occur this logic gets
-  # executed multiple times. We reduce the noise by at least checking that
-  # BUILD_FLAVOR has been set.
-  ifneq ($(BUILD_FLAVOR),)
-    ifeq ($(BUILD_FLAVOR), product)
-      FULL_DEBUG_SYMBOLS ?= 1
-      ENABLE_FULL_DEBUG_SYMBOLS = $(FULL_DEBUG_SYMBOLS)
-    else
-      # debug variants always get Full Debug Symbols (if available)
-      ENABLE_FULL_DEBUG_SYMBOLS = 1
+  ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
+    # Default OBJCOPY comes from the SUNWbinutils package:
+    DEF_OBJCOPY=/usr/sfw/bin/gobjcopy
+    OBJCOPY=$(shell test -x $(DEF_OBJCOPY) && echo $(DEF_OBJCOPY))
+    ifneq ($(ALT_OBJCOPY),)
+      $(eval $(call print_info, "ALT_OBJCOPY=$(ALT_OBJCOPY)"))
+      OBJCOPY=$(shell test -x $(ALT_OBJCOPY) && echo $(ALT_OBJCOPY))
     endif
-    $(eval $(call print_info, "ENABLE_FULL_DEBUG_SYMBOLS=$(ENABLE_FULL_DEBUG_SYMBOLS)"))
-    # since objcopy is optional, we set ZIP_DEBUGINFO_FILES later
-
-    ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
-      # Default OBJCOPY comes from the SUNWbinutils package:
-      DEF_OBJCOPY=/usr/sfw/bin/gobjcopy
-      OBJCOPY=$(shell test -x $(DEF_OBJCOPY) && echo $(DEF_OBJCOPY))
-      ifneq ($(ALT_OBJCOPY),)
-        $(eval $(call print_info, "ALT_OBJCOPY=$(ALT_OBJCOPY)"))
-        OBJCOPY=$(shell test -x $(ALT_OBJCOPY) && echo $(ALT_OBJCOPY))
-      endif
 
-      ifneq ($(OBJCOPY),)
-        # OBJCOPY version check:
-        # - version number is last blank separate word on first line
-        # - version number formats that have been seen:
-        #   - <major>.<minor>
-        #   - <major>.<minor>.<micro>
-        #
-        # Full Debug Symbols on Solaris needs version 2.21.1 or newer.
-        #
-        OBJCOPY_VERS_CHK := $(shell \
-          $(OBJCOPY) --version \
-            | sed -n \
-                  -e 's/.* //' \
-                  -e '/^[01]\./b bad' \
-                  -e '/^2\./{' \
-                  -e '  s/^2\.//' \
-                  -e '  /^[0-9]$$/b bad' \
-                  -e '  /^[0-9]\./b bad' \
-                  -e '  /^1[0-9]$$/b bad' \
-                  -e '  /^1[0-9]\./b bad' \
-                  -e '  /^20\./b bad' \
-                  -e '  /^21\.0$$/b bad' \
-                  -e '  /^21\.0\./b bad' \
-                  -e '}' \
-                  -e ':good' \
-                  -e 's/.*/VALID_VERSION/p' \
-                  -e 'q' \
-                  -e ':bad' \
-                  -e 's/.*/BAD_VERSION/p' \
-                  -e 'q' \
+    ifneq ($(OBJCOPY),)
+      # OBJCOPY version check:
+      # - version number is last blank separate word on first line
+      # - version number formats that have been seen:
+      #   - <major>.<minor>
+      #   - <major>.<minor>.<micro>
+      #
+      # Full Debug Symbols on Solaris needs version 2.21.1 or newer.
+      #
+      OBJCOPY_VERS_CHK := $(shell \
+        $(OBJCOPY) --version \
+          | sed -n \
+                -e 's/.* //' \
+                -e '/^[01]\./b bad' \
+                -e '/^2\./{' \
+                -e '  s/^2\.//' \
+                -e '  /^[0-9]$$/b bad' \
+                -e '  /^[0-9]\./b bad' \
+                -e '  /^1[0-9]$$/b bad' \
+                -e '  /^1[0-9]\./b bad' \
+                -e '  /^20\./b bad' \
+                -e '  /^21\.0$$/b bad' \
+                -e '  /^21\.0\./b bad' \
+                -e '}' \
+                -e ':good' \
+                -e 's/.*/VALID_VERSION/p' \
+                -e 'q' \
+                -e ':bad' \
+                -e 's/.*/BAD_VERSION/p' \
+                -e 'q' \
+        )
+      ifeq ($(OBJCOPY_VERS_CHK),BAD_VERSION)
+        _JUNK_ := $(shell \
+          echo >&2 "WARNING: $(OBJCOPY) --version info:"; \
+          $(OBJCOPY) --version | sed -n -e 's/^/WARNING: /p' -e 'q' >&2; \
+          echo >&2 "WARNING: an objcopy version of 2.21.1 or newer" \
+            "is needed to create valid .debuginfo files."; \
+          echo >&2 "WARNING: ignoring above objcopy command."; \
+          echo >&2 "WARNING: patch 149063-01 or newer contains the" \
+            "correct Solaris 10 SPARC version."; \
+          echo >&2 "WARNING: patch 149064-01 or newer contains the" \
+            "correct Solaris 10 X86 version."; \
+          echo >&2 "WARNING: Solaris 11 Update 1 contains the" \
+            "correct version."; \
           )
-        ifeq ($(OBJCOPY_VERS_CHK),BAD_VERSION)
-          _JUNK_ := $(shell \
-            echo >&2 "WARNING: $(OBJCOPY) --version info:"; \
-            $(OBJCOPY) --version | sed -n -e 's/^/WARNING: /p' -e 'q' >&2; \
-            echo >&2 "WARNING: an objcopy version of 2.21.1 or newer" \
-              "is needed to create valid .debuginfo files."; \
-            echo >&2 "WARNING: ignoring above objcopy command."; \
-            echo >&2 "WARNING: patch 149063-01 or newer contains the" \
-              "correct Solaris 10 SPARC version."; \
-            echo >&2 "WARNING: patch 149064-01 or newer contains the" \
-              "correct Solaris 10 X86 version."; \
-            echo >&2 "WARNING: Solaris 11 Update 1 contains the" \
-              "correct version."; \
-            )
-          OBJCOPY=
-        endif
+        OBJCOPY=
       endif
+    endif
+
+    ifeq ($(OBJCOPY),)
+      $(eval $(call print_info, "no objcopy cmd found so cannot create .debuginfo files."))
+      ENABLE_FULL_DEBUG_SYMBOLS=0
+      $(eval $(call print_info, "ENABLE_FULL_DEBUG_SYMBOLS=$(ENABLE_FULL_DEBUG_SYMBOLS)"))
+    else
+      $(eval $(call print_info, "$(OBJCOPY) cmd found so will create .debuginfo files."))
 
-      ifeq ($(OBJCOPY),)
-        $(eval $(call print_info, "no objcopy cmd found so cannot create .debuginfo files."))
-        ENABLE_FULL_DEBUG_SYMBOLS=0
-        $(eval $(call print_info, "ENABLE_FULL_DEBUG_SYMBOLS=$(ENABLE_FULL_DEBUG_SYMBOLS)"))
-      else
-        $(eval $(call print_info, "$(OBJCOPY) cmd found so will create .debuginfo files."))
+      # Library stripping policies for .debuginfo configs:
+      #   all_strip - strips everything from the library
+      #   min_strip - strips most stuff from the library; leaves minimum symbols
+      #   no_strip  - does not strip the library at all
+      #
+      # Oracle security policy requires "all_strip". A waiver was granted on
+      # 2011.09.01 that permits using "min_strip" in the Java JDK and Java JRE.
+      #
+      # Currently, STRIP_POLICY is only used when Full Debug Symbols is enabled.
+      #
+      STRIP_POLICY ?= min_strip
 
-        # Library stripping policies for .debuginfo configs:
-        #   all_strip - strips everything from the library
-        #   min_strip - strips most stuff from the library; leaves minimum symbols
-        #   no_strip  - does not strip the library at all
-        #
-        # Oracle security policy requires "all_strip". A waiver was granted on
-        # 2011.09.01 that permits using "min_strip" in the Java JDK and Java JRE.
-        #
-        # Currently, STRIP_POLICY is only used when Full Debug Symbols is enabled.
-        #
-        STRIP_POLICY ?= min_strip
+      $(eval $(call print_info, "STRIP_POLICY=$(STRIP_POLICY)"))
+
+      ZIP_DEBUGINFO_FILES ?= 1
 
-        $(eval $(call print_info, "STRIP_POLICY=$(STRIP_POLICY)"))
-
-        ZIP_DEBUGINFO_FILES ?= 1
-
-        $(eval $(call print_info, "ZIP_DEBUGINFO_FILES=$(ZIP_DEBUGINFO_FILES)"))
-      endif
-    endif # ENABLE_FULL_DEBUG_SYMBOLS=1
-  endif # BUILD_FLAVOR
-endif # JDK_6_OR_EARLIER
+      $(eval $(call print_info, "ZIP_DEBUGINFO_FILES=$(ZIP_DEBUGINFO_FILES)"))
+    endif
+  endif # ENABLE_FULL_DEBUG_SYMBOLS=1
+endif # BUILD_FLAVOR
 
 JDK_INCLUDE_SUBDIR=solaris
 
--- a/hotspot/make/solaris/makefiles/sparcWorks.make	Wed Jul 05 21:02:33 2017 +0200
+++ b/hotspot/make/solaris/makefiles/sparcWorks.make	Wed Jul 05 21:04:26 2017 +0200
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1998, 2014, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1998, 2015, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -19,7 +19,7 @@
 # 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.
-#  
+#
 #
 
 # If a SPEC is not set already, then use these defaults.
@@ -39,7 +39,7 @@
   STRIP	= /usr/ccs/bin/strip
 endif
 
-# Check for the versions of C++ and C compilers ($CXX and $CC) used. 
+# Check for the versions of C++ and C compilers ($CXX and $CC) used.
 
 # Get the last thing on the line that looks like x.x+ (x is a digit).
 COMPILER_REV := \
@@ -48,15 +48,9 @@
 $(shell $(CC) -V 2>&1 | sed -n 's/^.*[ ,\t]C[ ,\t]\([1-9]\.[0-9][0-9]*\).*/\1/p')
 
 # Pick which compiler is validated
-ifeq ($(JRE_RELEASE_VER),1.6.0)
-  # Validated compiler for JDK6 is SS11 (5.8)
-  VALIDATED_COMPILER_REVS   := 5.8
-  VALIDATED_CC_COMPILER_REVS := 5.8
-else
-  # Validated compiler for JDK9 is SS12.3 (5.12)
-  VALIDATED_COMPILER_REVS   := 5.12
-  VALIDATED_CC_COMPILER_REVS := 5.12
-endif
+# Validated compiler for JDK9 is SS12.3 (5.12)
+VALIDATED_COMPILER_REVS   := 5.12
+VALIDATED_CC_COMPILER_REVS := 5.12
 
 # Warning messages about not using the above validated versions
 ENFORCE_COMPILER_REV${ENFORCE_COMPILER_REV} := $(strip ${VALIDATED_COMPILER_REVS})
@@ -237,7 +231,7 @@
 CFLAGS/NOEX=-features=no%except
 
 
-# avoid compilation problems arising from fact that C++ compiler tries 
+# avoid compilation problems arising from fact that C++ compiler tries
 # to search for external template definition by just compiling additional
 # source files in th same context
 CFLAGS +=  -template=no%extdef
@@ -245,7 +239,7 @@
 # Reduce code bloat by reverting back to 5.0 behavior for static initializers
 CFLAGS += -features=no%split_init
 
-# Use -D_Crun_inline_placement so we don't get references to 
+# Use -D_Crun_inline_placement so we don't get references to
 #    __1c2n6FIpv_0_ or   void*operator new(unsigned,void*)
 #  This avoids the hard requirement of the newer Solaris C++ runtime patches.
 #  NOTE: This is an undocumented feature of the SS10 compiler. See 6306698.
--- a/hotspot/make/solaris/makefiles/vm.make	Wed Jul 05 21:02:33 2017 +0200
+++ b/hotspot/make/solaris/makefiles/vm.make	Wed Jul 05 21:04:26 2017 +0200
@@ -69,12 +69,14 @@
 endif
 
 # The following variables are defined in the generated flags.make file.
-JDK_VER_DEFS  = -DJDK_MAJOR_VERSION="\"$(JDK_MAJOR_VERSION)\"" \
-		-DJDK_MINOR_VERSION="\"$(JDK_MINOR_VERSION)\"" \
-		-DJDK_MICRO_VERSION="\"$(JDK_MICRO_VERSION)\"" \
-		-DJDK_BUILD_NUMBER="\"$(JDK_BUILD_NUMBER)\""
-VM_VER_DEFS   = -DHOTSPOT_RELEASE_VERSION="\"$(HS_BUILD_VER)\"" \
-		-DJRE_RELEASE_VERSION="\"$(JRE_RELEASE_VER)\""  \
+JDK_VER_DEFS  = -DVERSION_MAJOR=$(VERSION_MAJOR) \
+		-DVERSION_MINOR=$(VERSION_MINOR) \
+		-DVERSION_SECURITY=$(VERSION_SECURITY) \
+	        -DVERSION_PATCH=$(VERSION_PATCH) \
+		-DVERSION_BUILD=$(VERSION_BUILD)
+VM_VER_DEFS   = -DHOTSPOT_VERSION_STRING="\"$(HOTSPOT_VERSION_STRING)\"" \
+		-DVERSION_STRING="\"$(VERSION_STRING)\""  \
+	        -DDEBUG_LEVEL="\"$(DEBUG_LEVEL)\"" \
 		$(JDK_VER_DEFS)
 HS_LIB_ARCH   = -DHOTSPOT_LIB_ARCH=\"$(LIBARCH)\"
 BUILD_USER    = -DHOTSPOT_BUILD_USER="\"$(HOTSPOT_BUILD_USER)\""
--- a/hotspot/make/windows/build.make	Wed Jul 05 21:02:33 2017 +0200
+++ b/hotspot/make/windows/build.make	Wed Jul 05 21:04:26 2017 +0200
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1998, 2014, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1998, 2015, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -123,38 +123,12 @@
 # or make/hotspot_distro.
 !ifndef HOTSPOT_VM_DISTRO
 !if exists($(WorkSpace)\src\closed)
-
-# if the build is for JDK6 or earlier version, it should include jdk6_hotspot_distro,
-# instead of hotspot_distro.
-JDK6_OR_EARLIER=0
-!if "$(JDK_MAJOR_VERSION)" != "" && "$(JDK_MINOR_VERSION)" != "" && "$(JDK_MICRO_VERSION)" != ""
-!if $(JDK_MAJOR_VERSION) == 1 && $(JDK_MINOR_VERSION) < 7
-JDK6_OR_EARLIER=1
-!endif
-!else
-!if $(JDK_MAJOR_VER) == 1 && $(JDK_MINOR_VER) < 7
-JDK6_OR_EARLIER=1
-!endif
-!endif
-
-!if $(JDK6_OR_EARLIER) == 1
-!include $(WorkSpace)\make\jdk6_hotspot_distro
-!else
 !include $(WorkSpace)\make\hotspot_distro
-!endif
 !else
 !include $(WorkSpace)\make\openjdk_distro
 !endif
 !endif
 
-# Following the Web Start / Plugin model here....
-# We can have update versions like "01a", but Windows requires
-# we use only integers in the file version field.  So:
-# JDK_UPDATE_VER = JDK_UPDATE_VERSION * 10 + EXCEPTION_VERSION
-#
-JDK_UPDATE_VER=0
-JDK_BUILD_NUMBER=0
-
 HS_FILEDESC=$(HOTSPOT_VM_DISTRO) $(ARCH_TEXT) $(VARIANT_TEXT) VM
 
 # JDK ProductVersion:
@@ -163,34 +137,27 @@
 #       1.6.0-b01     will be 6.0.0.1
 #       1.6.0_01a-b02 will be 6.0.11.2
 #
-# JDK_* variables are defined in make/jdk_version or on command line
+# STANDALONE_JDK_* variables are defined in make/jdk_version or on command line
 #
-JDK_VER=$(JDK_MINOR_VER),$(JDK_MICRO_VER),$(JDK_UPDATE_VER),$(JDK_BUILD_NUMBER)
-JDK_DOTVER=$(JDK_MINOR_VER).$(JDK_MICRO_VER).$(JDK_UPDATE_VER).$(JDK_BUILD_NUMBER)
-!if "$(JRE_RELEASE_VERSION)" == ""
-JRE_RELEASE_VER=$(JDK_MAJOR_VER).$(JDK_MINOR_VER).$(JDK_MICRO_VER)
-!else
-JRE_RELEASE_VER=$(JRE_RELEASE_VERSION)
+!if "$(JDK_VER)" == ""
+JDK_VER=$(STANDALONE_JDK_MAJOR_VER),$(STANDALONE_JDK_MINOR_VER),$(STANDALONE_JDK_SECURITY_VER),$(STANDALONE_JDK_PATCH_VER)
 !endif
-!if "$(JDK_MKTG_VERSION)" == ""
-JDK_MKTG_VERSION=$(JDK_MINOR_VER).$(JDK_MICRO_VER)
+!if "$(JDK_DOTVER)" == ""
+JDK_DOTVER=$(STANDALONE_JDK_MAJOR_VER).$(STANDALONE_JDK_MINOR_VER).$(STANDALONE_JDK_SECURITY_VER).$(STANDALONE_JDK_PATCH_VER)
+!endif
+!if "$(VERSION_SHORT)" == ""
+VERSION_SHORT=$(STANDALONE_JDK_MAJOR_VER).$(STANDALONE_JDK_MINOR_VER).$(STANDALONE_JDK_SECURITY_VER)
 !endif
 
-# Hotspot Express VM FileVersion:
-# 10.0-b<yz> will have DLL version 10.0.0.yz (need 4 numbers).
-#
-#
 HS_VER=$(JDK_VER)
 HS_DOTVER=$(JDK_DOTVER)
 
 !if "$(HOTSPOT_RELEASE_VERSION)" == ""
-HOTSPOT_RELEASE_VERSION=$(JRE_RELEASE_VERSION)
+HOTSPOT_RELEASE_VERSION=$(VERSION_STRING)
 !endif
 
-!if "$(HOTSPOT_BUILD_VERSION)" == ""
-HS_BUILD_VER=$(HOTSPOT_RELEASE_VERSION)
-!else
-HS_BUILD_VER=$(HOTSPOT_RELEASE_VERSION)-$(HOTSPOT_BUILD_VERSION)
+!if "$(HOTSPOT_VERSION_STRING)" == ""
+HOTSPOT_VERSION_STRING=$(HOTSPOT_RELEASE_VERSION)
 !endif
 
 # End VERSIONINFO parameters
@@ -280,15 +247,15 @@
 	@ echo HOTSPOT_VM_DISTRO=$(HOTSPOT_VM_DISTRO)		>> $@
 	@ if "$(OPENJDK)" NEQ "" echo OPENJDK=$(OPENJDK)	>> $@
 	@ echo HS_COPYRIGHT=$(HOTSPOT_VM_COPYRIGHT)		>> $@
-	@ echo HS_NAME=$(PRODUCT_NAME) $(JDK_MKTG_VERSION)	>> $@
-	@ echo HS_BUILD_VER=$(HS_BUILD_VER)			>> $@
+	@ echo HS_NAME=$(PRODUCT_NAME) $(VERSION_SHORT)		>> $@
+	@ echo HOTSPOT_VERSION_STRING=$(HOTSPOT_VERSION_STRING)	>> $@
 	@ echo BUILD_WIN_SA=$(BUILD_WIN_SA)    			>> $@
-	@ echo SA_BUILD_VERSION=$(HS_BUILD_VER)                 >> $@
+	@ echo SA_BUILD_VERSION=$(HOTSPOT_VERSION_STRING)       >> $@
 	@ echo SA_INCLUDE=$(SA_INCLUDE)      			>> $@
 	@ echo SA_LIB=$(SA_LIB)         			>> $@
 	@ echo JDK_VER=$(JDK_VER)				>> $@
 	@ echo JDK_DOTVER=$(JDK_DOTVER)				>> $@
-	@ echo JRE_RELEASE_VER=$(JRE_RELEASE_VER)		>> $@
+	@ echo VERSION_STRING=$(VERSION_STRING)			>> $@
 	@ echo BUILDARCH=$(BUILDARCH)         			>> $@
 	@ echo Platform_arch=$(Platform_arch)        		>> $@
 	@ echo Platform_arch_model=$(Platform_arch_model)	>> $@
--- a/hotspot/make/windows/makefiles/debug.make	Wed Jul 05 21:02:33 2017 +0200
+++ b/hotspot/make/windows/makefiles/debug.make	Wed Jul 05 21:04:26 2017 +0200
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -19,7 +19,7 @@
 # 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.
-#  
+#
 #
 
 HS_INTERNAL_NAME=jvm
@@ -44,7 +44,7 @@
 !include $(WorkSpace)/make/windows/makefiles/vm.make
 !include local.make
 
-HS_BUILD_ID=$(HS_BUILD_VER)-debug
+HS_BUILD_ID=$(HOTSPOT_VERSION_STRING)-debug
 
 # Force resources to be rebuilt every time
 $(Res_Files): FORCE
--- a/hotspot/make/windows/makefiles/defs.make	Wed Jul 05 21:02:33 2017 +0200
+++ b/hotspot/make/windows/makefiles/defs.make	Wed Jul 05 21:04:26 2017 +0200
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2006, 2014, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2006, 2015, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -179,24 +179,19 @@
 # Library suffix
 LIBRARY_SUFFIX=dll
 
-# HOTSPOT_RELEASE_VERSION and HOTSPOT_BUILD_VERSION are defined
-# and added to MAKE_ARGS list in $(GAMMADIR)/make/defs.make.
-
 # next parameters are defined in $(GAMMADIR)/make/defs.make.
-MAKE_ARGS += JDK_MKTG_VERSION=$(JDK_MKTG_VERSION)
-MAKE_ARGS += JDK_MAJOR_VERSION=$(JDK_MAJOR_VERSION)
-MAKE_ARGS += JDK_MINOR_VERSION=$(JDK_MINOR_VERSION)
-MAKE_ARGS += JDK_MICRO_VERSION=$(JDK_MICRO_VERSION)
+MAKE_ARGS += VERSION_SHORT=$(VERSION_SHORT)
+MAKE_ARGS += VERSION_MAJOR=$(VERSION_MAJOR)
+MAKE_ARGS += VERSION_MINOR=$(VERSION_MINOR)
+MAKE_ARGS += VERSION_SECURITY=$(VERSION_SECURITY)
+MAKE_ARGS += VERSION_PATCH=$(VERSION_PATCH)
+MAKE_ARGS += VERSION_BUILD=$(VERSION_BUILD)
+MAKE_ARGS += DEBUG_LEVEL=$(DEBUG_LEVEL)
 
-ifdef COOKED_JDK_UPDATE_VERSION
-  MAKE_ARGS += JDK_UPDATE_VER=$(COOKED_JDK_UPDATE_VERSION)
-endif
-
-# COOKED_BUILD_NUMBER should only be set if we have a numeric
-# build number.  It must not be zero padded.
-ifdef COOKED_BUILD_NUMBER
-  MAKE_ARGS += JDK_BUILD_NUMBER=$(COOKED_BUILD_NUMBER)
-endif
+# JDK_DOTVER and JDK_VER are needed in Windows RC files
+COMMA:=,
+MAKE_ARGS += JDK_DOTVER=$(VERSION_NUMBER_FOUR_POSITIONS)
+MAKE_ARGS += JDK_VER=$(subst .,$(COMMA),$(VERSION_NUMBER_FOUR_POSITIONS))
 
 NMAKE= MAKEFLAGS= MFLAGS= EXTRA_CFLAGS="$(EXTRA_CFLAGS)" nmake -NOLOGO
 ifndef SYSTEM_UNAME
--- a/hotspot/make/windows/makefiles/fastdebug.make	Wed Jul 05 21:02:33 2017 +0200
+++ b/hotspot/make/windows/makefiles/fastdebug.make	Wed Jul 05 21:04:26 2017 +0200
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -19,7 +19,7 @@
 # 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.
-#  
+#
 #
 
 HS_INTERNAL_NAME=jvm
@@ -43,7 +43,7 @@
 !include $(WorkSpace)/make/windows/makefiles/vm.make
 !include local.make
 
-HS_BUILD_ID=$(HS_BUILD_VER)-fastdebug
+HS_BUILD_ID=$(HOTSPOT_VERSION_STRING)-fastdebug
 
 # Force resources to be rebuilt every time
 $(Res_Files): FORCE
--- a/hotspot/make/windows/makefiles/product.make	Wed Jul 05 21:02:33 2017 +0200
+++ b/hotspot/make/windows/makefiles/product.make	Wed Jul 05 21:04:26 2017 +0200
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -19,7 +19,7 @@
 # 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.
-#  
+#
 #
 
 HS_INTERNAL_NAME=jvm
@@ -46,7 +46,7 @@
 !include $(WorkSpace)/make/windows/makefiles/vm.make
 !include local.make
 
-HS_BUILD_ID=$(HS_BUILD_VER)
+HS_BUILD_ID=$(HOTSPOT_VERSION_STRING)
 
 # Force resources to be rebuilt every time
 $(Res_Files): FORCE
--- a/hotspot/make/windows/makefiles/vm.make	Wed Jul 05 21:02:33 2017 +0200
+++ b/hotspot/make/windows/makefiles/vm.make	Wed Jul 05 21:04:26 2017 +0200
@@ -58,12 +58,14 @@
 !endif
 
 # The following variables are defined in the generated local.make file.
-CXX_FLAGS=$(CXX_FLAGS) /D "HOTSPOT_RELEASE_VERSION=\"$(HS_BUILD_VER)\""
-CXX_FLAGS=$(CXX_FLAGS) /D "JDK_MAJOR_VERSION=\"$(JDK_MAJOR_VERSION)\""
-CXX_FLAGS=$(CXX_FLAGS) /D "JDK_MINOR_VERSION=\"$(JDK_MINOR_VERSION)\""
-CXX_FLAGS=$(CXX_FLAGS) /D "JDK_MICRO_VERSION=\"$(JDK_MICRO_VERSION)\""
-CXX_FLAGS=$(CXX_FLAGS) /D "JDK_BUILD_NUMBER=\"$(JDK_BUILD_NUMBER)\""
-CXX_FLAGS=$(CXX_FLAGS) /D "JRE_RELEASE_VERSION=\"$(JRE_RELEASE_VER)\""
+CXX_FLAGS=$(CXX_FLAGS) /D "HOTSPOT_VERSION_STRING=\"$(HOTSPOT_VERSION_STRING)\""
+CXX_FLAGS=$(CXX_FLAGS) /D "VERSION_MAJOR=$(VERSION_MAJOR)"
+CXX_FLAGS=$(CXX_FLAGS) /D "VERSION_MINOR=$(VERSION_MINOR)"
+CXX_FLAGS=$(CXX_FLAGS) /D "VERSION_SECURITY=$(VERSION_SECURITY)"
+CXX_FLAGS=$(CXX_FLAGS) /D "VERSION_PATCH=$(VERSION_PATCH)"
+CXX_FLAGS=$(CXX_FLAGS) /D "VERSION_BUILD=$(VERSION_BUILD)"
+CXX_FLAGS=$(CXX_FLAGS) /D "VERSION_STRING=\"$(VERSION_STRING)\""
+CXX_FLAGS=$(CXX_FLAGS) /D "DEBUG_LEVEL=\"$(DEBUG_LEVEL)\""
 CXX_FLAGS=$(CXX_FLAGS) /D "HOTSPOT_LIB_ARCH=\"$(HOTSPOT_LIB_ARCH)\""
 CXX_FLAGS=$(CXX_FLAGS) /D "HOTSPOT_BUILD_TARGET=\"$(BUILD_FLAVOR)\""
 CXX_FLAGS=$(CXX_FLAGS) /D "HOTSPOT_BUILD_USER=\"$(BuildUser)\""
@@ -414,4 +416,3 @@
 
 vm.def: $(Obj_Files)
 	sh $(WorkSpace)/make/windows/build_vm_def.sh $(BUILD_VM_DEF_FLAG)
-
--- a/hotspot/make/windows/projectfiles/common/Makefile	Wed Jul 05 21:02:33 2017 +0200
+++ b/hotspot/make/windows/projectfiles/common/Makefile	Wed Jul 05 21:04:26 2017 +0200
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1999, 2014, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1999, 2015, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -19,7 +19,7 @@
 # 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.
-#  
+#
 #
 
 !ifdef LOCAL_MAKE
@@ -80,15 +80,15 @@
 
 !include $(HOTSPOTWORKSPACE)/make/jdk_version
 
-!if "$(USER_RELEASE_SUFFIX)" != ""
-HOTSPOT_BUILD_VERSION = internal-$(USER_RELEASE_SUFFIX)
+!if "$(VERSION_OPT)" != ""
+HOTSPOT_BUILD_VERSION = internal-$(VERSION_OPT)
 !else
 HOTSPOT_BUILD_VERSION = internal
 !endif
-!if "$(JRE_RELEASE_VERSION)" != ""
-JRE_RELEASE_VERSION="\\\"$(JRE_RELEASE_VERSION)\\\""
+!if "$(VERSION_STRING)" != ""
+JRE_RELEASE_VERSION="\\\"$(VERSION_STRING)\\\""
 !else
-JRE_RELEASE_VERSION="\\\"$(JDK_MAJOR_VER).$(JDK_MINOR_VER).$(JDK_MICRO_VER)\\\""
+JRE_RELEASE_VERSION="\\\"$(STANDALONE_JDK_MAJOR_VER).$(STANDALONE_JDK_MINOR_VER).$(STANDALONE_JDK_SECURITY_VER)\\\""
 !endif
 !if "$(HOTSPOT_RELEASE_VERSION)" != ""
 HOTSPOT_RELEASE_VERSION="\\\"$(HOTSPOT_RELEASE_VERSION)\\\""
@@ -105,18 +105,17 @@
 !else
 HOTSPOT_VM_DISTRO="\\\"OpenJDK\\\""
 !endif
-!if "$(JDK_BUILD_NUMBER)" != ""
-JDK_BUILD_NUMBER="\\\"$(JDK_BUILD_NUMBER)\\\""
-!else
-JDK_BUILD_NUMBER="\\\"00\\\""
+!if "$(VERSION_BUILD)" == ""
+VERSION_BUILD=0
 !endif
 !endif
 
-JDK_MAJOR_VERSION="\\\"$(JDK_MAJOR_VER)\\\""
-JDK_MINOR_VERSION="\\\"$(JDK_MINOR_VER)\\\""
-JDK_MICRO_VERSION="\\\"$(JDK_MICRO_VER)\\\""
+VERSION_MAJOR=$(STANDALONE_JDK_MAJOR_VER)
+VERSION_MINOR=$(STANDALONE_JDK_MINOR_VER)
+VERSION_SECURITY=$(STANDALONE_JDK_SECURITY_VER)
+VERSION_PATCH=$(STANDALONE_JDK_PATCH_VER)
 
-ReleaseOptions = -define HOTSPOT_RELEASE_VERSION=$(HOTSPOT_RELEASE_VERSION) -define JRE_RELEASE_VERSION=$(JRE_RELEASE_VERSION) -define HOTSPOT_VM_DISTRO=$(HOTSPOT_VM_DISTRO) -define JDK_MAJOR_VERSION=$(JDK_MAJOR_VERSION) -define JDK_MINOR_VERSION=$(JDK_MINOR_VERSION) -define JDK_MICRO_VERSION=$(JDK_MICRO_VERSION) -define JDK_BUILD_NUMBER=$(JDK_BUILD_NUMBER) -define VISUAL_STUDIO_BUILD=true
+ReleaseOptions = -define HOTSPOT_RELEASE_VERSION=$(HOTSPOT_RELEASE_VERSION) -define JRE_RELEASE_VERSION=$(JRE_RELEASE_VERSION) -define HOTSPOT_VM_DISTRO=$(HOTSPOT_VM_DISTRO) -define VERSION_MAJOR=$(VERSION_MAJOR) -define VERSION_MINOR=$(VERSION_MINOR) -define VERSION_SECURITY=$(VERSION_SECURITY) -define VERSION_PATCH=$(VERSION_PATCH) -define DEBUG_LEVEL=$(DEBUG_LEVEL) -define VISUAL_STUDIO_BUILD=true
 ProjectCreatorIDEOptions = $(ProjectCreatorIDEOptions) $(ReleaseOptions)
 
 $(HOTSPOTBUILDSPACE)/$(ProjectFile): $(HOTSPOTBUILDSPACE)/classes/ProjectCreator.class
--- a/hotspot/src/share/vm/classfile/classLoader.cpp	Wed Jul 05 21:02:33 2017 +0200
+++ b/hotspot/src/share/vm/classfile/classLoader.cpp	Wed Jul 05 21:04:26 2017 +0200
@@ -155,7 +155,7 @@
   static char version_string[10] = "";
   if (version_string[0] == '\0') {
     jio_snprintf(version_string, sizeof(version_string), "%d.%d",
-                 Abstract_VM_Version::vm_minor_version(), Abstract_VM_Version::vm_micro_version());
+                 Abstract_VM_Version::vm_major_version(), Abstract_VM_Version::vm_minor_version());
   }
   return (const char*)version_string;
 }
--- a/hotspot/src/share/vm/memory/universe.cpp	Wed Jul 05 21:02:33 2017 +0200
+++ b/hotspot/src/share/vm/memory/universe.cpp	Wed Jul 05 21:04:26 2017 +0200
@@ -354,37 +354,6 @@
   // Have already been initialized.
   _objectArrayKlassObj->append_to_sibling_list();
 
-  // Compute is_jdk version flags.
-  // Only 1.3 or later has the java.lang.Shutdown class.
-  // Only 1.4 or later has the java.lang.CharSequence interface.
-  // Only 1.5 or later has the java.lang.management.MemoryUsage class.
-  if (JDK_Version::is_partially_initialized()) {
-    uint8_t jdk_version;
-    Klass* k = SystemDictionary::resolve_or_null(
-        vmSymbols::java_lang_management_MemoryUsage(), THREAD);
-    CLEAR_PENDING_EXCEPTION; // ignore exceptions
-    if (k == NULL) {
-      k = SystemDictionary::resolve_or_null(
-          vmSymbols::java_lang_CharSequence(), THREAD);
-      CLEAR_PENDING_EXCEPTION; // ignore exceptions
-      if (k == NULL) {
-        k = SystemDictionary::resolve_or_null(
-            vmSymbols::java_lang_Shutdown(), THREAD);
-        CLEAR_PENDING_EXCEPTION; // ignore exceptions
-        if (k == NULL) {
-          jdk_version = 2;
-        } else {
-          jdk_version = 3;
-        }
-      } else {
-        jdk_version = 4;
-      }
-    } else {
-      jdk_version = 5;
-    }
-    JDK_Version::fully_initialize(jdk_version);
-  }
-
   #ifdef ASSERT
   if (FullGCALot) {
     // Allocate an array of dummy objects.
--- a/hotspot/src/share/vm/prims/jvm.cpp	Wed Jul 05 21:02:33 2017 +0200
+++ b/hotspot/src/share/vm/prims/jvm.cpp	Wed Jul 05 21:04:26 2017 +0200
@@ -3652,8 +3652,7 @@
   memset(info, 0, info_size);
 
   info->jvm_version = Abstract_VM_Version::jvm_version();
-  info->update_version = 0;          /* 0 in HotSpot Express VM */
-  info->special_update_version = 0;  /* 0 in HotSpot Express VM */
+  info->patch_version = Abstract_VM_Version::vm_patch_version();
 
   // when we add a new capability in the jvm_version_info struct, we should also
   // consider to expose this new capability in the sun.rt.jvmCapabilities jvmstat
--- a/hotspot/src/share/vm/prims/jvm.h	Wed Jul 05 21:02:33 2017 +0200
+++ b/hotspot/src/share/vm/prims/jvm.h	Wed Jul 05 21:04:26 2017 +0200
@@ -1184,10 +1184,9 @@
  * ==========================================================================
  */
 typedef struct {
-    /* VM version string: follows the JDK release version naming convention    */
-    unsigned int jvm_version; /* <major_ver>.<minor_ver>.<micro_ver>[-<identifier>][-<debug_target>][-b<nn>]  */
-    unsigned int update_version : 8;
-    unsigned int special_update_version : 8;
+    unsigned int jvm_version; /* Encoded $VNUM as defined by JEP-223 */
+    unsigned int patch_version : 8; /* JEP-223 patch version */
+    unsigned int reserved3 : 8;
     unsigned int reserved1 : 16;
     unsigned int reserved2;
 
@@ -1206,18 +1205,16 @@
 
 #define JVM_VERSION_MAJOR(version) ((version & 0xFF000000) >> 24)
 #define JVM_VERSION_MINOR(version) ((version & 0x00FF0000) >> 16)
-#define JVM_VERSION_MICRO(version) ((version & 0x0000FF00) >> 8)
+#define JVM_VERSION_SECURITY(version) ((version & 0x0000FF00) >> 8)
 #define JVM_VERSION_BUILD(version) ((version & 0x000000FF))
 
 JNIEXPORT void JNICALL
 JVM_GetVersionInfo(JNIEnv* env, jvm_version_info* info, size_t info_size);
 
 typedef struct {
-    // Naming convention of RE build version string: n.n.n[_uu[c]][-<identifier>]-bxx
-    unsigned int jdk_version;   /* Consists of major, minor, micro (n.n.n) */
-                                /* and build number (xx) */
-    unsigned int update_version : 8;         /* Update release version (uu) */
-    unsigned int special_update_version : 8; /* Special update release version (c)*/
+    unsigned int jdk_version; /* Encoded $VNUM as defined by JEP-223 */
+    unsigned int patch_version : 8; /* JEP-223 patch version */
+    unsigned int reserved3 : 8;
     unsigned int reserved1 : 16;
     unsigned int reserved2;
 
@@ -1238,11 +1235,7 @@
 
 #define JDK_VERSION_MAJOR(version) ((version & 0xFF000000) >> 24)
 #define JDK_VERSION_MINOR(version) ((version & 0x00FF0000) >> 16)
-#define JDK_VERSION_MICRO(version) ((version & 0x0000FF00) >> 8)
-
-/* Build number is available only for RE build (i.e. JDK_BUILD_NUMBER is set to bNN)
- * It will be zero for internal builds.
- */
+#define JDK_VERSION_SECURITY(version) ((version & 0x0000FF00) >> 8)
 #define JDK_VERSION_BUILD(version) ((version & 0x000000FF))
 
 /*
--- a/hotspot/src/share/vm/runtime/arguments.cpp	Wed Jul 05 21:02:33 2017 +0200
+++ b/hotspot/src/share/vm/runtime/arguments.cpp	Wed Jul 05 21:04:26 2017 +0200
@@ -197,6 +197,7 @@
   PropertyList_add(&_system_properties, new SystemProperty("java.vm.version", VM_Version::vm_release(),  false));
   PropertyList_add(&_system_properties, new SystemProperty("java.vm.name", VM_Version::vm_name(),  false));
   PropertyList_add(&_system_properties, new SystemProperty("java.vm.info", VM_Version::vm_info_string(),  true));
+  PropertyList_add(&_system_properties, new SystemProperty("jdk.debug", VM_Version::jdk_debug_level(),  false));
 
   // Following are JVMTI agent writable properties.
   // Properties values are set to NULL and they are
@@ -228,7 +229,7 @@
   const char* spec_vendor = "Oracle Corporation";
   uint32_t spec_version = JDK_Version::current().major_version();
 
-  jio_snprintf(buffer, bufsz, "1." UINT32_FORMAT, spec_version);
+  jio_snprintf(buffer, bufsz, UINT32_FORMAT, spec_version);
 
   PropertyList_add(&_system_properties,
       new SystemProperty("java.vm.specification.vendor",  spec_vendor, false));
--- a/hotspot/src/share/vm/runtime/java.cpp	Wed Jul 05 21:02:33 2017 +0200
+++ b/hotspot/src/share/vm/runtime/java.cpp	Wed Jul 05 21:04:26 2017 +0200
@@ -651,47 +651,23 @@
   jdk_version_info_fn_t func = CAST_TO_FN_PTR(jdk_version_info_fn_t,
      os::dll_lookup(lib_handle, "JDK_GetVersionInfo0"));
 
-  if (func == NULL) {
-    // JDK older than 1.6
-    _current._partially_initialized = true;
-  } else {
-    (*func)(&info, sizeof(info));
+  assert(func != NULL, "Support for JDK 1.5 or older has been removed after JEP-223");
+
+  (*func)(&info, sizeof(info));
+
+  int major = JDK_VERSION_MAJOR(info.jdk_version);
+  int minor = JDK_VERSION_MINOR(info.jdk_version);
+  int security = JDK_VERSION_SECURITY(info.jdk_version);
+  int build = JDK_VERSION_BUILD(info.jdk_version);
 
-    int major = JDK_VERSION_MAJOR(info.jdk_version);
-    int minor = JDK_VERSION_MINOR(info.jdk_version);
-    int micro = JDK_VERSION_MICRO(info.jdk_version);
-    int build = JDK_VERSION_BUILD(info.jdk_version);
-    if (major == 1 && minor > 4) {
-      // We represent "1.5.0" as "5.0", but 1.4.2 as itself.
-      major = minor;
-      minor = micro;
-      micro = 0;
-    }
-    // Incompatible with pre-4243978 JDK.
-    if (info.pending_list_uses_discovered_field == 0) {
-      vm_exit_during_initialization(
-        "Incompatible JDK is not using Reference.discovered field for pending list");
-    }
-    _current = JDK_Version(major, minor, micro, info.update_version,
-                           info.special_update_version, build,
-                           info.thread_park_blocker == 1,
-                           info.post_vm_init_hook_enabled == 1);
+  // Incompatible with pre-4243978 JDK.
+  if (info.pending_list_uses_discovered_field == 0) {
+    vm_exit_during_initialization(
+      "Incompatible JDK is not using Reference.discovered field for pending list");
   }
-}
-
-void JDK_Version::fully_initialize(
-    uint8_t major, uint8_t minor, uint8_t micro, uint8_t update) {
-  // This is only called when current is less than 1.6 and we've gotten
-  // far enough in the initialization to determine the exact version.
-  assert(major < 6, "not needed for JDK version >= 6");
-  assert(is_partially_initialized(), "must not initialize");
-  if (major < 5) {
-    // JDK verison sequence: 1.2.x, 1.3.x, 1.4.x, 5.0.x, 6.0.x, etc.
-    micro = minor;
-    minor = major;
-    major = 1;
-  }
-  _current = JDK_Version(major, minor, micro, update);
+  _current = JDK_Version(major, minor, security, info.patch_version, build,
+                         info.thread_park_blocker == 1,
+                         info.post_vm_init_hook_enabled == 1);
 }
 
 void JDK_Version_init() {
@@ -700,29 +676,18 @@
 
 static int64_t encode_jdk_version(const JDK_Version& v) {
   return
-    ((int64_t)v.major_version()          << (BitsPerByte * 5)) |
-    ((int64_t)v.minor_version()          << (BitsPerByte * 4)) |
-    ((int64_t)v.micro_version()          << (BitsPerByte * 3)) |
-    ((int64_t)v.update_version()         << (BitsPerByte * 2)) |
-    ((int64_t)v.special_update_version() << (BitsPerByte * 1)) |
+    ((int64_t)v.major_version()          << (BitsPerByte * 4)) |
+    ((int64_t)v.minor_version()          << (BitsPerByte * 3)) |
+    ((int64_t)v.security_version()       << (BitsPerByte * 2)) |
+    ((int64_t)v.patch_version()          << (BitsPerByte * 1)) |
     ((int64_t)v.build_number()           << (BitsPerByte * 0));
 }
 
 int JDK_Version::compare(const JDK_Version& other) const {
   assert(is_valid() && other.is_valid(), "Invalid version (uninitialized?)");
-  if (!is_partially_initialized() && other.is_partially_initialized()) {
-    return -(other.compare(*this)); // flip the comparators
-  }
-  assert(!other.is_partially_initialized(), "Not initialized yet");
-  if (is_partially_initialized()) {
-    assert(other.major_version() >= 6,
-           "Invalid JDK version comparison during initialization");
-    return -1;
-  } else {
-    uint64_t e = encode_jdk_version(*this);
-    uint64_t o = encode_jdk_version(other);
-    return (e > o) ? 1 : ((e == o) ? 0 : -1);
-  }
+  uint64_t e = encode_jdk_version(*this);
+  uint64_t o = encode_jdk_version(other);
+  return (e > o) ? 1 : ((e == o) ? 0 : -1);
 }
 
 void JDK_Version::to_string(char* buffer, size_t buflen) const {
@@ -731,28 +696,21 @@
 
   if (!is_valid()) {
     jio_snprintf(buffer, buflen, "%s", "(uninitialized)");
-  } else if (is_partially_initialized()) {
-    jio_snprintf(buffer, buflen, "%s", "(uninitialized) pre-1.6.0");
   } else {
     int rc = jio_snprintf(
         &buffer[index], buflen - index, "%d.%d", _major, _minor);
     if (rc == -1) return;
     index += rc;
-    if (_micro > 0) {
-      rc = jio_snprintf(&buffer[index], buflen - index, ".%d", _micro);
+    if (_security > 0) {
+      rc = jio_snprintf(&buffer[index], buflen - index, ".%d", _security);
     }
-    if (_update > 0) {
-      rc = jio_snprintf(&buffer[index], buflen - index, "_%02d", _update);
-      if (rc == -1) return;
-      index += rc;
-    }
-    if (_special > 0) {
-      rc = jio_snprintf(&buffer[index], buflen - index, "%c", _special);
+    if (_patch > 0) {
+      rc = jio_snprintf(&buffer[index], buflen - index, ".%d", _patch);
       if (rc == -1) return;
       index += rc;
     }
     if (_build > 0) {
-      rc = jio_snprintf(&buffer[index], buflen - index, "-b%02d", _build);
+      rc = jio_snprintf(&buffer[index], buflen - index, "+%d", _build);
       if (rc == -1) return;
       index += rc;
     }
--- a/hotspot/src/share/vm/runtime/java.hpp	Wed Jul 05 21:02:33 2017 +0200
+++ b/hotspot/src/share/vm/runtime/java.hpp	Wed Jul 05 21:04:26 2017 +0200
@@ -51,18 +51,9 @@
 extern void vm_shutdown_during_initialization(const char* error, const char* message = NULL);
 
 /**
- * Discovering the JDK_Version during initialization is tricky when the
- * running JDK is less than JDK6.  For JDK6 and greater, a "GetVersion"
- * function exists in libjava.so and we simply call it during the
- * 'initialize()' call to find the version.  For JDKs with version < 6, no
- * such call exists and we have to probe the JDK in order to determine
- * the exact version.  This probing cannot happen during late in
- * the VM initialization process so there's a period of time during
- * initialization when we don't know anything about the JDK version other than
- * that it less than version 6.  This is the "partially initialized" time,
- * when we can answer only certain version queries (such as, is the JDK
- * version greater than 5?  Answer: no).  Once the JDK probing occurs, we
- * know the version and are considered fully initialized.
+ * With the integration of the changes to handle the version string
+ * as defined by JEP-223, most of the code related to handle the version
+ * string prior to JDK 1.6 was removed (partial initialization)
  */
 class JDK_Version VALUE_OBJ_CLASS_SPEC {
   friend class VMStructs;
@@ -74,53 +65,32 @@
   static const char* _runtime_name;
   static const char* _runtime_version;
 
-  // In this class, we promote the minor version of release to be the
-  // major version for releases >= 5 in anticipation of the JDK doing the
-  // same thing.  For example, we represent "1.5.0" as major version 5 (we
-  // drop the leading 1 and use 5 as the 'major').
-
   uint8_t _major;
   uint8_t _minor;
-  uint8_t _micro;
-  uint8_t _update;
-  uint8_t _special;
+  uint8_t _security;
+  uint8_t _patch;
   uint8_t _build;
 
-  // If partially initialized, the above fields are invalid and we know
-  // that we're less than major version 6.
-  bool _partially_initialized;
-
   bool _thread_park_blocker;
   bool _post_vm_init_hook_enabled;
 
   bool is_valid() const {
-    return (_major != 0 || _partially_initialized);
+    return (_major != 0);
   }
 
   // initializes or partially initializes the _current static field
   static void initialize();
 
-  // Completes initialization for a pre-JDK6 version.
-  static void fully_initialize(uint8_t major, uint8_t minor = 0,
-                               uint8_t micro = 0, uint8_t update = 0);
-
  public:
 
-  // Returns true if the the current version has only been partially initialized
-  static bool is_partially_initialized() {
-    return _current._partially_initialized;
-  }
-
-  JDK_Version() : _major(0), _minor(0), _micro(0), _update(0),
-                  _special(0), _build(0), _partially_initialized(false),
+  JDK_Version() : _major(0), _minor(0), _security(0), _patch(0), _build(0),
                   _thread_park_blocker(false), _post_vm_init_hook_enabled(false)
                   {}
 
-  JDK_Version(uint8_t major, uint8_t minor = 0, uint8_t micro = 0,
-              uint8_t update = 0, uint8_t special = 0, uint8_t build = 0,
+  JDK_Version(uint8_t major, uint8_t minor = 0, uint8_t security = 0,
+              uint8_t patch = 0, uint8_t build = 0,
               bool thread_park_blocker = false, bool post_vm_init_hook_enabled = false) :
-      _major(major), _minor(minor), _micro(micro), _update(update),
-      _special(special), _build(build), _partially_initialized(false),
+      _major(major), _minor(minor), _security(security), _patch(patch), _build(build),
       _thread_park_blocker(thread_park_blocker),
       _post_vm_init_hook_enabled(post_vm_init_hook_enabled)
       {}
@@ -133,23 +103,18 @@
     return JDK_Version(m);
   }
 
-  static JDK_Version jdk_update(uint8_t major, uint8_t update_number) {
-    return JDK_Version(major, 0, 0, update_number);
-  }
-
   static JDK_Version undefined() {
     return JDK_Version(0);
   }
 
   bool is_undefined() const {
-    return (_major == 0);
+    return _major == 0;
   }
 
   uint8_t major_version() const          { return _major; }
   uint8_t minor_version() const          { return _minor; }
-  uint8_t micro_version() const          { return _micro; }
-  uint8_t update_version() const         { return _update; }
-  uint8_t special_update_version() const { return _special; }
+  uint8_t security_version() const       { return _security; }
+  uint8_t patch_version() const          { return _patch; }
   uint8_t build_number() const           { return _build; }
 
   bool supports_thread_park_blocker() const {
@@ -159,7 +124,7 @@
     return _post_vm_init_hook_enabled;
   }
 
-  // Performs a full ordering comparison using all fields (update, build, etc.)
+  // Performs a full ordering comparison using all fields (patch, build, etc.)
   int compare(const JDK_Version& other) const;
 
   /**
@@ -168,16 +133,7 @@
    * equal, and a positive value if it is greater.
    */
   int compare_major(int version) const {
-    if (_partially_initialized) {
-      if (version >= 6) {
-        return -1;
-      } else {
-        assert(false, "Can't make this comparison during init time");
-        return -1; // conservative
-      }
-    } else {
       return major_version() - version;
-    }
   }
 
   void to_string(char* buffer, size_t buflen) const;
--- a/hotspot/src/share/vm/runtime/statSampler.cpp	Wed Jul 05 21:02:33 2017 +0200
+++ b/hotspot/src/share/vm/runtime/statSampler.cpp	Wed Jul 05 21:04:26 2017 +0200
@@ -223,6 +223,7 @@
   "java.vm.name",
   "java.vm.vendor",
   "java.vm.info",
+  "jdk.debug",
   "java.library.path",
   "java.class.path",
   "java.version",
--- a/hotspot/src/share/vm/runtime/vmStructs.cpp	Wed Jul 05 21:02:33 2017 +0200
+++ b/hotspot/src/share/vm/runtime/vmStructs.cpp	Wed Jul 05 21:04:26 2017 +0200
@@ -1313,12 +1313,11 @@
      static_field(Abstract_VM_Version,         _s_internal_vm_info_string,                    const char*)                           \
      static_field(Abstract_VM_Version,         _vm_major_version,                             int)                                   \
      static_field(Abstract_VM_Version,         _vm_minor_version,                             int)                                   \
-     static_field(Abstract_VM_Version,         _vm_micro_version,                             int)                                   \
+     static_field(Abstract_VM_Version,         _vm_security_version,                          int)                                   \
      static_field(Abstract_VM_Version,         _vm_build_number,                              int)                                   \
      static_field(Abstract_VM_Version,         _reserve_for_allocation_prefetch,              int)                                   \
                                                                                                                                      \
      static_field(JDK_Version,                 _current,                                      JDK_Version)                           \
-  nonstatic_field(JDK_Version,                 _partially_initialized,                        bool)                                  \
   nonstatic_field(JDK_Version,                 _major,                                        unsigned char)                         \
                                                                                                                                      \
   /*************************/                                                                                                        \
--- a/hotspot/src/share/vm/runtime/vm_version.cpp	Wed Jul 05 21:02:33 2017 +0200
+++ b/hotspot/src/share/vm/runtime/vm_version.cpp	Wed Jul 05 21:04:26 2017 +0200
@@ -40,78 +40,54 @@
 unsigned int Abstract_VM_Version::_L1_data_cache_line_size = 0;
 int Abstract_VM_Version::_reserve_for_allocation_prefetch = 0;
 
-#ifndef HOTSPOT_RELEASE_VERSION
-  #error HOTSPOT_RELEASE_VERSION must be defined
+#ifndef HOTSPOT_VERSION_STRING
+  #error HOTSPOT_VERSION_STRING must be defined
 #endif
 
-#ifndef JDK_MAJOR_VERSION
-  #error JDK_MAJOR_VERSION must be defined
+#ifndef VERSION_MAJOR
+  #error VERSION_MAJOR must be defined
 #endif
-#ifndef JDK_MINOR_VERSION
-  #error JDK_MINOR_VERSION must be defined
+#ifndef VERSION_MINOR
+  #error VERSION_MINOR must be defined
 #endif
-#ifndef JDK_MICRO_VERSION
-  #error JDK_MICRO_VERSION must be defined
+#ifndef VERSION_SECURITY
+  #error VERSION_SECURITY must be defined
 #endif
-#ifndef JDK_BUILD_NUMBER
-  #error JDK_BUILD_NUMBER must be defined
+#ifndef VERSION_PATCH
+  #error VERSION_PATCH must be defined
+#endif
+#ifndef VERSION_BUILD
+  #error VERSION_BUILD must be defined
 #endif
 
-#ifndef JRE_RELEASE_VERSION
-  #error JRE_RELEASE_VERSION must be defined
+#ifndef VERSION_STRING
+  #error VERSION_STRING must be defined
+#endif
+
+#ifndef DEBUG_LEVEL
+  #error DEBUG_LEVEL must be defined
 #endif
 
 // NOTE: Builds within Visual Studio do not define the build target in
-//       HOTSPOT_RELEASE_VERSION, so it must be done here
+//       HOTSPOT_VERSION_STRING, so it must be done here
 #if defined(VISUAL_STUDIO_BUILD) && !defined(PRODUCT)
   #ifndef HOTSPOT_BUILD_TARGET
     #error HOTSPOT_BUILD_TARGET must be defined
   #endif
-  #define VM_RELEASE HOTSPOT_RELEASE_VERSION "-" HOTSPOT_BUILD_TARGET
+  #define VM_RELEASE HOTSPOT_VERSION_STRING "-" HOTSPOT_BUILD_TARGET
 #else
-  #define VM_RELEASE HOTSPOT_RELEASE_VERSION
-#endif
-
-// HOTSPOT_RELEASE_VERSION follows the JDK release version naming convention
-// <major_ver>.<minor_ver>.<micro_ver>[-<identifier>][-<debug_target>][-b<nn>]
-int Abstract_VM_Version::_vm_major_version = 0;
-int Abstract_VM_Version::_vm_minor_version = 0;
-int Abstract_VM_Version::_vm_micro_version = 0;
-int Abstract_VM_Version::_vm_build_number = 0;
-bool Abstract_VM_Version::_initialized = false;
-unsigned int Abstract_VM_Version::_parallel_worker_threads = 0;
-bool Abstract_VM_Version::_parallel_worker_threads_initialized = false;
-
-#ifdef ASSERT
-static void assert_digits(const char * s, const char * message) {
-  for (int i = 0; s[i] != '\0'; i++) {
-    assert(isdigit(s[i]), "%s", message);
-  }
-}
+  #define VM_RELEASE HOTSPOT_VERSION_STRING
 #endif
 
-static void set_version_field(int * version_field, const char * version_str,
-                              const char * const assert_msg) {
-  if (version_str != NULL && *version_str != '\0') {
-    DEBUG_ONLY(assert_digits(version_str, assert_msg));
-    *version_field = atoi(version_str);
-  }
-}
-
-void Abstract_VM_Version::initialize() {
-  if (_initialized) {
-    return;
-  }
-
-  set_version_field(&_vm_major_version, JDK_MAJOR_VERSION, "bad major version");
-  set_version_field(&_vm_minor_version, JDK_MINOR_VERSION, "bad minor version");
-  set_version_field(&_vm_micro_version, JDK_MICRO_VERSION, "bad micro version");
-  int offset = (JDK_BUILD_NUMBER != NULL && JDK_BUILD_NUMBER[0] == 'b') ? 1 : 0;
-  set_version_field(&_vm_build_number, &JDK_BUILD_NUMBER[offset],
-                    "bad build number");
-
-  _initialized = true;
-}
+// HOTSPOT_VERSION_STRING equals the JDK VERSION_STRING (unless overridden
+// in a standalone build).
+int Abstract_VM_Version::_vm_major_version = VERSION_MAJOR;
+int Abstract_VM_Version::_vm_minor_version = VERSION_MINOR;
+int Abstract_VM_Version::_vm_security_version = VERSION_SECURITY;
+int Abstract_VM_Version::_vm_patch_version = VERSION_PATCH;
+int Abstract_VM_Version::_vm_build_number = VERSION_BUILD;
+unsigned int Abstract_VM_Version::_parallel_worker_threads = 0;
+bool Abstract_VM_Version::_parallel_worker_threads_initialized = false;
 
 #if defined(_LP64)
   #define VMLP "64-Bit "
@@ -154,6 +130,7 @@
 #endif
 }
 
+
 const char* Abstract_VM_Version::vm_info_string() {
   if (CodeCacheExtensions::use_pregenerated_interpreter()) {
     return "interpreted mode, pregenerated";
@@ -181,7 +158,7 @@
 //       fatal error handlers. if the crash is in native thread,
 //       stringStream cannot get resource allocated and will SEGV.
 const char* Abstract_VM_Version::jre_release_version() {
-  return JRE_RELEASE_VERSION;
+  return VERSION_STRING;
 }
 
 #define OS       LINUX_ONLY("linux")             \
@@ -262,7 +239,7 @@
   #endif
 
   return VMNAME " (" VM_RELEASE ") for " OS "-" CPU FLOAT_ARCH_STR
-         " JRE (" JRE_RELEASE_VERSION "), built on " __DATE__ " " __TIME__
+         " JRE (" VERSION_STRING "), built on " __DATE__ " " __TIME__
          " by " XSTR(HOTSPOT_BUILD_USER) " with " HOTSPOT_BUILD_COMPILER;
 }
 
@@ -270,10 +247,14 @@
   return HOTSPOT_BUILD_USER;
 }
 
+const char *Abstract_VM_Version::jdk_debug_level() {
+  return DEBUG_LEVEL;
+}
+
 unsigned int Abstract_VM_Version::jvm_version() {
   return ((Abstract_VM_Version::vm_major_version() & 0xFF) << 24) |
          ((Abstract_VM_Version::vm_minor_version() & 0xFF) << 16) |
-         ((Abstract_VM_Version::vm_micro_version() & 0xFF) << 8) |
+         ((Abstract_VM_Version::vm_security_version() & 0xFF) << 8) |
          (Abstract_VM_Version::vm_build_number() & 0xFF);
 }
 
--- a/hotspot/src/share/vm/runtime/vm_version.hpp	Wed Jul 05 21:02:33 2017 +0200
+++ b/hotspot/src/share/vm/runtime/vm_version.hpp	Wed Jul 05 21:04:26 2017 +0200
@@ -45,9 +45,9 @@
   static unsigned int _L1_data_cache_line_size;
   static int          _vm_major_version;
   static int          _vm_minor_version;
-  static int          _vm_micro_version;
+  static int          _vm_security_version;
+  static int          _vm_patch_version;
   static int          _vm_build_number;
-  static bool         _initialized;
   static unsigned int _parallel_worker_threads;
   static bool         _parallel_worker_threads_initialized;
   static int          _reserve_for_allocation_prefetch;
@@ -75,10 +75,11 @@
   static const char* vm_platform_string();
   static const char* vm_build_user();
 
-  static int vm_major_version()               { assert(_initialized, "not initialized"); return _vm_major_version; }
-  static int vm_minor_version()               { assert(_initialized, "not initialized"); return _vm_minor_version; }
-  static int vm_micro_version()               { assert(_initialized, "not initialized"); return _vm_micro_version; }
-  static int vm_build_number()                { assert(_initialized, "not initialized"); return _vm_build_number; }
+  static int vm_major_version()               { return _vm_major_version; }
+  static int vm_minor_version()               { return _vm_minor_version; }
+  static int vm_security_version()            { return _vm_security_version; }
+  static int vm_patch_version()               { return _vm_patch_version; }
+  static int vm_build_number()                { return _vm_build_number; }
 
   // Gets the jvm_version_info.jvm_version defined in jvm.h
   static unsigned int jvm_version();
@@ -86,6 +87,7 @@
   // Internal version providing additional build information
   static const char* internal_vm_info_string();
   static const char* jre_release_version();
+  static const char* jdk_debug_level();
 
   // does HW support an 8-byte compare-exchange operation?
   static bool supports_cx8()  {
--- a/hotspot/src/share/vm/services/diagnosticCommand.cpp	Wed Jul 05 21:02:33 2017 +0200
+++ b/hotspot/src/share/vm/services/diagnosticCommand.cpp	Wed Jul 05 21:04:26 2017 +0200
@@ -179,12 +179,13 @@
   output()->print_cr("%s version %s", Abstract_VM_Version::vm_name(),
           Abstract_VM_Version::vm_release());
   JDK_Version jdk_version = JDK_Version::current();
-  if (jdk_version.update_version() > 0) {
-    output()->print_cr("JDK %d.%d_%02d", jdk_version.major_version(),
-            jdk_version.minor_version(), jdk_version.update_version());
+  if (jdk_version.patch_version() > 0) {
+    output()->print_cr("JDK %d.%d.%d.%d", jdk_version.major_version(),
+            jdk_version.minor_version(), jdk_version.security_version(),
+            jdk_version.patch_version());
   } else {
-    output()->print_cr("JDK %d.%d", jdk_version.major_version(),
-            jdk_version.minor_version());
+    output()->print_cr("JDK %d.%d.%d", jdk_version.major_version(),
+            jdk_version.minor_version(), jdk_version.security_version());
   }
 }
 
--- a/hotspot/src/share/vm/services/management.cpp	Wed Jul 05 21:02:33 2017 +0200
+++ b/hotspot/src/share/vm/services/management.cpp	Wed Jul 05 21:04:26 2017 +0200
@@ -84,10 +84,6 @@
   ClassLoadingService::init();
 #else
   ThreadService::init();
-  // Make sure the VM version is initialized
-  // This is normally called by RuntimeService::init().
-  // Since that is conditionalized out, we need to call it here.
-  Abstract_VM_Version::initialize();
 #endif // INCLUDE_MANAGEMENT
 }
 
--- a/hotspot/src/share/vm/services/runtimeService.cpp	Wed Jul 05 21:02:33 2017 +0200
+++ b/hotspot/src/share/vm/services/runtimeService.cpp	Wed Jul 05 21:04:26 2017 +0200
@@ -42,8 +42,6 @@
 double RuntimeService::_last_safepoint_sync_time_sec = 0.0;
 
 void RuntimeService::init() {
-  // Make sure the VM version is initialized
-  Abstract_VM_Version::initialize();
 
   if (UsePerfData) {
     EXCEPTION_MARK;
--- a/hotspot/test/runtime/6981737/Test6981737.java	Wed Jul 05 21:02:33 2017 +0200
+++ b/hotspot/test/runtime/6981737/Test6981737.java	Wed Jul 05 21:04:26 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -38,12 +38,13 @@
      */
     public static void main(String[] args) throws Exception {
 
-        String version = verifyProperty("java.version", "[0-9]+\\.[0-9]+\\..*");
-        String major_version_spec = version.split("\\.")[1];
+        String version = verifyProperty("java.version", "[0-9]+[\\\\.[0-9]+]*\\-.*");
+        String version_tokens[] = version.split("-|\\.");
+        String major_version_spec = version_tokens[0];
         int major_version = new Integer(major_version_spec).intValue();
 
         String vendor_re = "Oracle Corporation";
-        String vm_spec_version_re = "1\\." + major_version_spec;
+        String vm_spec_version_re = major_version_spec;
         if (major_version < 7) {
             vendor_re = "Sun Microsystems Inc\\.";
             vm_spec_version_re = "1\\.0";
--- a/hotspot/test/testlibrary/jdk/test/lib/Platform.java	Wed Jul 05 21:02:33 2017 +0200
+++ b/hotspot/test/testlibrary/jdk/test/lib/Platform.java	Wed Jul 05 21:04:26 2017 +0200
@@ -29,7 +29,7 @@
     private static final String osName      = System.getProperty("os.name");
     private static final String dataModel   = System.getProperty("sun.arch.data.model");
     private static final String vmVersion   = System.getProperty("java.vm.version");
-    private static final String javaVersion = System.getProperty("java.version");
+    private static final String jdkDebug    = System.getProperty("jdk.debug");
     private static final String osArch      = System.getProperty("os.arch");
     private static final String vmName      = System.getProperty("java.vm.name");
     private static final String userName    = System.getProperty("user.name");
@@ -100,8 +100,7 @@
     }
 
     public static boolean isDebugBuild() {
-        return (vmVersion.toLowerCase().contains("debug") ||
-                javaVersion.toLowerCase().contains("debug"));
+        return (jdkDebug.toLowerCase().contains("debug"));
     }
 
     public static String getVMVersion() {
--- a/jaxp/.hgtags	Wed Jul 05 21:02:33 2017 +0200
+++ b/jaxp/.hgtags	Wed Jul 05 21:04:26 2017 +0200
@@ -336,3 +336,4 @@
 ffaff3d0ad0e0ca1e632b80826afa8729ee72a48 jdk9-b91
 fcabfb3c38ac1da99394e821902537d92e45222d jdk9-b92
 b9c50c63305cf1120263f6b7c6993021b53c2c40 jdk9-b93
+5e75b8a9c01bca09c56dec7539e44dc82090c7c2 jdk9-b94
--- a/jaxp/src/java.xml/share/classes/com/sun/org/apache/xalan/internal/XalanConstants.java	Wed Jul 05 21:02:33 2017 +0200
+++ b/jaxp/src/java.xml/share/classes/com/sun/org/apache/xalan/internal/XalanConstants.java	Wed Jul 05 21:04:26 2017 +0200
@@ -227,24 +227,21 @@
     public static final boolean IS_JDK8_OR_ABOVE = isJavaVersionAtLeast(8);
 
     /*
-     * Check the version of the current JDK against that specified in the
-     * parameter
+     * Check the major version of the current JDK against that specified
+     * in the parameter
      *
-     * There is a proposal to change the java version string to:
-     * MAJOR.MINOR.FU.CPU.PSU-BUILDNUMBER_BUGIDNUMBER_OPTIONAL
-     * This method would work with both the current format and that proposed
+     * In JDK9 the java version string was changed to comply with JEP-223
+     * so this method was modified to handle that new format as well
      *
-     * @param compareTo a JDK version to be compared to
-     * @return true if the current version is the same or above that represented
-     * by the parameter
+     * @param compareTo a JDK major version to be compared to
+     * @return true if the current major version is the same or above
+     * that represented by the parameter
      */
     public static boolean isJavaVersionAtLeast(int compareTo) {
         String javaVersion = SecuritySupport.getSystemProperty("java.version");
-        String versions[] = javaVersion.split("\\.", 3);
-        if (Integer.parseInt(versions[0]) >= compareTo ||
-            Integer.parseInt(versions[1]) >= compareTo) {
-            return true;
-        }
-        return false;
+        javaVersion = (javaVersion.matches("[1-9][0-9]*(\\.(0|[1-9][0-9]*))*\\-.*")) ?
+                          javaVersion.split("-|\\.")[0] :
+                          javaVersion.split("\\.", 3)[1];
+        return Integer.parseInt(javaVersion) >= compareTo;
     }
 } // class Constants
--- a/jaxp/src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/Constants.java	Wed Jul 05 21:02:33 2017 +0200
+++ b/jaxp/src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/Constants.java	Wed Jul 05 21:04:26 2017 +0200
@@ -857,25 +857,22 @@
     } // getXercesProperties():Enumeration
 
     /*
-     * Check the version of the current JDK against that specified in the
-     * parameter
+     * Check the major version of the current JDK against that specified
+     * in the parameter
      *
-     * There is a proposal to change the java version string to:
-     * MAJOR.MINOR.FU.CPU.PSU-BUILDNUMBER_BUGIDNUMBER_OPTIONAL
-     * This method would work with both the current format and that proposed
+     * In JDK9 the java version string was changed to comply with JEP-223
+     * so this method was modified to handle that new format as well
      *
-     * @param compareTo a JDK version to be compared to
-     * @return true if the current version is the same or above that represented
-     * by the parameter
+     * @param compareTo a JDK major version to be compared to
+     * @return true if the current major version is the same or above
+     * that represented by the parameter
      */
     public static boolean isJavaVersionAtLeast(int compareTo) {
         String javaVersion = SecuritySupport.getSystemProperty("java.version");
-        String versions[] = javaVersion.split("\\.", 3);
-        if (Integer.parseInt(versions[0]) >= compareTo ||
-            Integer.parseInt(versions[1]) >= compareTo) {
-            return true;
-        }
-        return false;
+        javaVersion = (javaVersion.matches("[1-9][0-9]*(\\.(0|[1-9][0-9]*))*\\-.*")) ?
+                          javaVersion.split("-|\\.")[0] :
+                          javaVersion.split("\\.", 3)[1];
+        return Integer.parseInt(javaVersion) >= compareTo;
     }
 
     //
--- a/jaxws/.hgtags	Wed Jul 05 21:02:33 2017 +0200
+++ b/jaxws/.hgtags	Wed Jul 05 21:04:26 2017 +0200
@@ -339,3 +339,4 @@
 3b2a3cb658e41618bd152a7598d12e1f0c10e8f7 jdk9-b91
 fe772cbc64f4e0418c5bf694e9e7123f02e1808f jdk9-b92
 5e94fbbb7032b3bba8254ddb1af8fc45a4d1448b jdk9-b93
+e8d15c61400c1682a7873e053d7b39efde0b79be jdk9-b94
--- a/jdk/.hgtags	Wed Jul 05 21:02:33 2017 +0200
+++ b/jdk/.hgtags	Wed Jul 05 21:04:26 2017 +0200
@@ -336,3 +336,4 @@
 97624df5026a2fb191793697dbd2c604c4d5c66e jdk9-b91
 6a5c99506f44538b879d8635a3979849ed587130 jdk9-b92
 2f12392d0dde768150c83087cdbdd0d33a4d866c jdk9-b93
+559b626b01179420a94feb9c3d0f246970d2e3fa jdk9-b94
--- a/jdk/make/CompileDemos.gmk	Wed Jul 05 21:02:33 2017 +0200
+++ b/jdk/make/CompileDemos.gmk	Wed Jul 05 21:04:26 2017 +0200
@@ -58,7 +58,8 @@
   SOURCE_FILES := $(JDK_TOPDIR)/make/data/mainmanifest/manifest.mf, \
   OUTPUT_FILE := $(DEMO_MANIFEST), \
   REPLACEMENTS := \
-      @@RELEASE@@ => $(RELEASE) ; \
+      @@VERSION_SPECIFICATION@@ => $(VERSION_SPECIFICATION) ; \
+      @@VERSION_SHORT@@ => $(VERSION_SHORT) ; \
       @@COMPANY_NAME@@ => $(COMPANY_NAME) , \
 ))
 
--- a/jdk/make/data/mainmanifest/manifest.mf	Wed Jul 05 21:02:33 2017 +0200
+++ b/jdk/make/data/mainmanifest/manifest.mf	Wed Jul 05 21:04:26 2017 +0200
@@ -1,7 +1,7 @@
 Manifest-Version: 1.0
 Specification-Title: Java Platform API Specification
-Specification-Version: 1.9
+Specification-Version: @@VERSION_SPECIFICATION@@
 Specification-Vendor: Oracle Corporation
 Implementation-Title: Java Runtime Environment
-Implementation-Version: @@RELEASE@@
+Implementation-Version: @@VERSION_SHORT@@
 Implementation-Vendor: @@COMPANY_NAME@@
--- a/jdk/make/gensrc/GensrcMisc.gmk	Wed Jul 05 21:02:33 2017 +0200
+++ b/jdk/make/gensrc/GensrcMisc.gmk	Wed Jul 05 21:04:26 2017 +0200
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -26,28 +26,18 @@
 ##########################################################################################
 # Install the launcher name, release version string, full version
 # string and the runtime name into the Version.java file.
-# To be printed by java -version
-
-# These dependencies should ideally be added to prerequesites for Version.java
-# but skip for now until we have better incremental build for java.
-#    $(call DependOnVariable, LAUNCHER_NAME) \
-#    $(call DependOnVariable, RELEASE) \
-#    $(call DependOnVariable, FULL_VERSION) \
-#    $(call DependOnVariable, RUNTIME_VERSION)
 
-$(SUPPORT_OUTPUTDIR)/gensrc/java.base/sun/misc/Version.java: \
-    $(JDK_TOPDIR)/src/java.base/share/classes/sun/misc/Version.java.template
-	$(MKDIR) -p $(@D)
-	$(RM) $@ $@.tmp
-	$(ECHO) Generating sun/misc/Version.java
-	$(SED) -e 's/@@launcher_name@@/$(LAUNCHER_NAME)/g' \
-	    -e 's/@@java_version@@/$(RELEASE)/g' \
-	    -e 's/@@java_runtime_version@@/$(FULL_VERSION)/g' \
-	    -e 's/@@java_runtime_name@@/$(RUNTIME_NAME)/g' \
-	    $< > $@.tmp
-	$(MV) $@.tmp $@
+$(eval $(call SetupTextFileProcessing, BUILD_VERSION_JAVA, \
+    SOURCE_FILES := $(JDK_TOPDIR)/src/java.base/share/classes/sun/misc/Version.java.template, \
+    OUTPUT_FILE := $(SUPPORT_OUTPUTDIR)/gensrc/java.base/sun/misc/Version.java, \
+    REPLACEMENTS := \
+        @@LAUNCHER_NAME@@ => $(LAUNCHER_NAME) ; \
+        @@RUNTIME_NAME@@ => $(RUNTIME_NAME) ; \
+        @@VERSION_SHORT@@ => $(VERSION_SHORT) ; \
+        @@VERSION_STRING@@ => $(VERSION_STRING), \
+))
 
-GENSRC_JAVA_BASE += $(SUPPORT_OUTPUTDIR)/gensrc/java.base/sun/misc/Version.java
+GENSRC_JAVA_BASE += $(BUILD_VERSION_JAVA)
 
 ##########################################################################################
 
--- a/jdk/make/launcher/Launcher-jdk.accessibility.gmk	Wed Jul 05 21:02:33 2017 +0200
+++ b/jdk/make/launcher/Launcher-jdk.accessibility.gmk	Wed Jul 05 21:04:26 2017 +0200
@@ -52,7 +52,7 @@
           -D "JDK_INTERNAL_NAME=jabswitch" \
           -D "JDK_FTYPE=0x01L", \
       MANIFEST := $(JABSWITCH_SRC)/jabswitch.manifest, \
-      MANIFEST_VERSION := $(JDK_VERSION_FOR_MANIFEST), \
+      MANIFEST_VERSION := $(VERSION_NUMBER_FOUR_POSITIONS), \
   ))
 
   TARGETS += $(BUILD_JABSWITCH)
--- a/jdk/make/launcher/Launcher-jdk.pack200.gmk	Wed Jul 05 21:02:33 2017 +0200
+++ b/jdk/make/launcher/Launcher-jdk.pack200.gmk	Wed Jul 05 21:04:26 2017 +0200
@@ -103,7 +103,7 @@
         -D "JDK_FTYPE=0x1L", \
     DEBUG_SYMBOLS := true, \
     MANIFEST := $(JDK_TOPDIR)/src/jdk.pack200/windows/native/unpack200/unpack200_proto.exe.manifest, \
-    MANIFEST_VERSION := $(JDK_VERSION_FOR_MANIFEST), \
+    MANIFEST_VERSION := $(VERSION_NUMBER_FOUR_POSITIONS), \
 ))
 
 ifneq ($(USE_EXTERNAL_LIBZ), true)
--- a/jdk/make/launcher/LauncherCommon.gmk	Wed Jul 05 21:02:33 2017 +0200
+++ b/jdk/make/launcher/LauncherCommon.gmk	Wed Jul 05 21:04:26 2017 +0200
@@ -183,9 +183,7 @@
       OPTIMIZATION := $$($1_OPTIMIZATION), \
       CFLAGS := $$($1_CFLAGS) \
           $(LAUNCHER_CFLAGS) \
-          -DFULL_VERSION='"$(FULL_VERSION)"' \
-          -DJDK_MAJOR_VERSION='"$(JDK_MAJOR_VERSION)"' \
-          -DJDK_MINOR_VERSION='"$(JDK_MINOR_VERSION)"' \
+          $(VERSION_CFLAGS) \
           -DLAUNCHER_NAME='"$(LAUNCHER_NAME)"' \
           -DPROGNAME='"$1"' \
           $$($1_CFLAGS), \
@@ -221,7 +219,7 @@
           -D "JDK_FTYPE=0x1L" \
           $$($1_RC_FLAGS), \
       MANIFEST := $(JAVA_MANIFEST), \
-      MANIFEST_VERSION := $(JDK_VERSION_FOR_MANIFEST), \
+      MANIFEST_VERSION := $(VERSION_NUMBER_FOUR_POSITIONS), \
       CODESIGN := $$($1_CODESIGN), \
   ))
 
--- a/jdk/make/lib/CoreLibraries.gmk	Wed Jul 05 21:02:33 2017 +0200
+++ b/jdk/make/lib/CoreLibraries.gmk	Wed Jul 05 21:04:26 2017 +0200
@@ -119,15 +119,6 @@
     -I$(SUPPORT_OUTPUTDIR)/headers/java.base \
     -DARCHPROPNAME='"$(OPENJDK_TARGET_CPU_OSARCH)"'
 
-LIBJAVA_CFLAGS += -DJDK_MAJOR_VERSION='"$(JDK_MAJOR_VERSION)"' \
-    -DJDK_MINOR_VERSION='"$(JDK_MINOR_VERSION)"' \
-    -DJDK_MICRO_VERSION='"$(JDK_MICRO_VERSION)"' \
-     -DJDK_BUILD_NUMBER='"$(JDK_BUILD_NUMBER)"'
-
-ifneq (, $(JDK_UPDATE_VERSION))
-  LIBJAVA_CFLAGS += -DJDK_UPDATE_VERSION='"$(JDK_UPDATE_VERSION)"'
-endif
-
 ifeq ($(OPENJDK_TARGET_OS), macosx)
   BUILD_LIBJAVA_java_props_md.c_CFLAGS := -x objective-c
   BUILD_LIBJAVA_java_props_macosx.c_CFLAGS := -x objective-c
@@ -152,6 +143,8 @@
     OPTIMIZATION := HIGH, \
     CFLAGS := $(CFLAGS_JDKLIB) \
         $(LIBJAVA_CFLAGS), \
+    System.c_CFLAGS := $(VERSION_CFLAGS), \
+    jdk_util.c_CFLAGS := $(VERSION_CFLAGS), \
     DISABLED_WARNINGS_solstudio := E_STATEMENT_NOT_REACHED, \
     MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libjava/mapfile-vers, \
     LDFLAGS := $(LDFLAGS_JDKLIB) \
--- a/jdk/make/mapfiles/libjava/mapfile-vers	Wed Jul 05 21:02:33 2017 +0200
+++ b/jdk/make/mapfiles/libjava/mapfile-vers	Wed Jul 05 21:04:26 2017 +0200
@@ -268,9 +268,7 @@
 		Java_sun_reflect_Reflection_getCallerClass__I;
 		Java_sun_reflect_Reflection_getClassAccessFlags;
                 Java_sun_misc_Version_getJdkVersionInfo;
-                Java_sun_misc_Version_getJdkSpecialVersion;
                 Java_sun_misc_Version_getJvmVersionInfo;
-                Java_sun_misc_Version_getJvmSpecialVersion;
 		Java_sun_misc_VM_latestUserDefinedLoader;
                 Java_sun_misc_VM_getuid;
                 Java_sun_misc_VM_geteuid;
--- a/jdk/src/java.base/macosx/classes/apple/security/AppleProvider.java	Wed Jul 05 21:02:33 2017 +0200
+++ b/jdk/src/java.base/macosx/classes/apple/security/AppleProvider.java	Wed Jul 05 21:04:26 2017 +0200
@@ -74,7 +74,7 @@
 
     public AppleProvider() {
         /* We are the Apple provider */
-        super("Apple", 1.9d, info);
+        super("Apple", 9.0d, info);
 
         final Provider p = this;
         AccessController.doPrivileged(new PrivilegedAction<Void>() {
--- a/jdk/src/java.base/share/classes/com/sun/crypto/provider/SunJCE.java	Wed Jul 05 21:02:33 2017 +0200
+++ b/jdk/src/java.base/share/classes/com/sun/crypto/provider/SunJCE.java	Wed Jul 05 21:04:26 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -104,7 +104,7 @@
 
     public SunJCE() {
         /* We are the "SunJCE" provider */
-        super("SunJCE", 1.9d, info);
+        super("SunJCE", 9.0d, info);
 
         final String BLOCK_MODES = "ECB|CBC|PCBC|CTR|CTS|CFB|OFB" +
             "|CFB8|CFB16|CFB24|CFB32|CFB40|CFB48|CFB56|CFB64" +
--- a/jdk/src/java.base/share/classes/sun/misc/Version.java.template	Wed Jul 05 21:02:33 2017 +0200
+++ b/jdk/src/java.base/share/classes/sun/misc/Version.java.template	Wed Jul 05 21:04:26 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -30,16 +30,16 @@
 
 
     private static final String launcher_name =
-        "@@launcher_name@@";
+        "@@LAUNCHER_NAME@@";
 
     private static final String java_version =
-        "@@java_version@@";
+        "@@VERSION_SHORT@@";
 
     private static final String java_runtime_name =
-        "@@java_runtime_name@@";
+        "@@RUNTIME_NAME@@";
 
     private static final String java_runtime_version =
-        "@@java_runtime_version@@";
+        "@@VERSION_STRING@@";
 
     static {
         init();
@@ -54,16 +54,14 @@
     private static boolean versionsInitialized = false;
     private static int jvm_major_version = 0;
     private static int jvm_minor_version = 0;
-    private static int jvm_micro_version = 0;
-    private static int jvm_update_version = 0;
+    private static int jvm_security_version = 0;
+    private static int jvm_patch_version = 0;
     private static int jvm_build_number = 0;
-    private static String jvm_special_version = null;
     private static int jdk_major_version = 0;
     private static int jdk_minor_version = 0;
-    private static int jdk_micro_version = 0;
-    private static int jdk_update_version = 0;
+    private static int jdk_security_version = 0;
+    private static int jdk_patch_version = 0;
     private static int jdk_build_number = 0;
-    private static String jdk_special_version = null;
 
     /**
      * In case you were wondering this method is called by java -version.
@@ -100,7 +98,15 @@
 
         /* Second line: runtime version (ie, libraries). */
 
-        ps.print(java_runtime_name + " (build " + java_runtime_version);
+        String jdk_debug_level = System.getProperty("jdk.debug", "release");
+        /* Debug level is not printed for "release" builds */
+        if ("release".equals(jdk_debug_level)) {
+            jdk_debug_level = "";
+        } else {
+            jdk_debug_level = jdk_debug_level + " ";
+        }
+
+        ps.print(java_runtime_name + " (" + jdk_debug_level + "build " + java_runtime_version);
 
         if (java_runtime_name.indexOf("Embedded") != -1 && isHeadless) {
             // embedded builds report headless state
@@ -112,16 +118,14 @@
         String java_vm_name    = System.getProperty("java.vm.name");
         String java_vm_version = System.getProperty("java.vm.version");
         String java_vm_info    = System.getProperty("java.vm.info");
-        ps.println(java_vm_name + " (build " + java_vm_version + ", " +
+        ps.println(java_vm_name + " (" + jdk_debug_level + "build " + java_vm_version + ", " +
                    java_vm_info + ")");
     }
 
 
     /**
-     * Returns the major version of the running JVM if it's 1.6 or newer
-     * or any RE VM build. It will return 0 if it's an internal 1.5 or
-     * 1.4.x build.
-     *
+     * Returns the major version of the running JVM.
+     * @return the major version of the running JVM
      * @since 1.6
      */
     public static synchronized int jvmMajorVersion() {
@@ -132,9 +136,8 @@
     }
 
     /**
-     * Returns the minor version of the running JVM if it's 1.6 or newer
-     * or any RE VM build. It will return 0 if it's an internal 1.5 or
-     * 1.4.x build.
+     * Returns the minor version of the running JVM.
+     * @return the minor version of the running JVM
      * @since 1.6
      */
     public static synchronized int jvmMinorVersion() {
@@ -146,44 +149,32 @@
 
 
     /**
-     * Returns the micro version of the running JVM if it's 1.6 or newer
-     * or any RE VM build. It will return 0 if it's an internal 1.5 or
-     * 1.4.x build.
-     * @since 1.6
+     * Returns the security version of the running JVM.
+     * @return the security version of the running JVM
+     * @since 9
      */
-    public static synchronized int jvmMicroVersion() {
+    public static synchronized int jvmSecurityVersion() {
         if (!versionsInitialized) {
             initVersions();
         }
-        return jvm_micro_version;
+        return jvm_security_version;
     }
 
     /**
-     * Returns the update release version of the running JVM if it's
-     * a RE build. It will return 0 if it's an internal build.
-     * @since 1.6
+     * Returns the patch release version of the running JVM.
+     * @return the patch release version of the running JVM
+     * @since 9
      */
-    public static synchronized int jvmUpdateVersion() {
+    public static synchronized int jvmPatchVersion() {
         if (!versionsInitialized) {
             initVersions();
         }
-        return jvm_update_version;
+        return jvm_patch_version;
     }
 
-    public static synchronized String jvmSpecialVersion() {
-        if (!versionsInitialized) {
-            initVersions();
-        }
-        if (jvm_special_version == null) {
-            jvm_special_version = getJvmSpecialVersion();
-        }
-        return jvm_special_version;
-    }
-    public static native String getJvmSpecialVersion();
-
     /**
-     * Returns the build number of the running JVM if it's a RE build
-     * It will return 0 if it's an internal build.
+     * Returns the build number of the running JVM.
+     * @return the build number of the running JVM
      * @since 1.6
      */
     public static synchronized int jvmBuildNumber() {
@@ -195,7 +186,7 @@
 
     /**
      * Returns the major version of the running JDK.
-     *
+     * @return the major version of the running JDK
      * @since 1.6
      */
     public static synchronized int jdkMajorVersion() {
@@ -207,6 +198,7 @@
 
     /**
      * Returns the minor version of the running JDK.
+     * @return the minor version of the running JDK
      * @since 1.6
      */
     public static synchronized int jdkMinorVersion() {
@@ -217,42 +209,32 @@
     }
 
     /**
-     * Returns the micro version of the running JDK.
-     * @since 1.6
+     * Returns the security version of the running JDK.
+     * @return the security version of the running JDK
+     * @since 9
      */
-    public static synchronized int jdkMicroVersion() {
+    public static synchronized int jdkSecurityVersion() {
         if (!versionsInitialized) {
             initVersions();
         }
-        return jdk_micro_version;
+        return jdk_security_version;
     }
 
     /**
-     * Returns the update release version of the running JDK if it's
-     * a RE build. It will return 0 if it's an internal build.
-     * @since 1.6
+     * Returns the patch release version of the running JDK.
+     * @return the patch release version of the running JDK
+     * @since 9
      */
-    public static synchronized int jdkUpdateVersion() {
+    public static synchronized int jdkPatchVersion() {
         if (!versionsInitialized) {
             initVersions();
         }
-        return jdk_update_version;
+        return jdk_patch_version;
     }
 
-    public static synchronized String jdkSpecialVersion() {
-        if (!versionsInitialized) {
-            initVersions();
-        }
-        if (jdk_special_version == null) {
-            jdk_special_version = getJdkSpecialVersion();
-        }
-        return jdk_special_version;
-    }
-    public static native String getJdkSpecialVersion();
-
     /**
-     * Returns the build number of the running JDK if it's a RE build
-     * It will return 0 if it's an internal build.
+     * Returns the build number of the running JDK.
+     * @return the build number of the running JDK
      * @since 1.6
      */
     public static synchronized int jdkBuildNumber() {
@@ -262,64 +244,12 @@
         return jdk_build_number;
     }
 
-    // true if JVM exports the version info including the capabilities
-    private static boolean jvmVersionInfoAvailable;
     private static synchronized void initVersions() {
         if (versionsInitialized) {
             return;
         }
-        jvmVersionInfoAvailable = getJvmVersionInfo();
-        if (!jvmVersionInfoAvailable) {
-            // parse java.vm.version for older JVM before the
-            // new JVM_GetVersionInfo is added.
-            // valid format of the version string is:
-            // n.n.n[_uu[c]][-<identifer>]-bxx
-            CharSequence cs = System.getProperty("java.vm.version");
-            if (cs.length() >= 5 &&
-                Character.isDigit(cs.charAt(0)) && cs.charAt(1) == '.' &&
-                Character.isDigit(cs.charAt(2)) && cs.charAt(3) == '.' &&
-                Character.isDigit(cs.charAt(4))) {
-                jvm_major_version = Character.digit(cs.charAt(0), 10);
-                jvm_minor_version = Character.digit(cs.charAt(2), 10);
-                jvm_micro_version = Character.digit(cs.charAt(4), 10);
-                cs = cs.subSequence(5, cs.length());
-                if (cs.charAt(0) == '_' && cs.length() >= 3 &&
-                    Character.isDigit(cs.charAt(1)) &&
-                    Character.isDigit(cs.charAt(2))) {
-                    int nextChar = 3;
-                    try {
-                        String uu = cs.subSequence(1, 3).toString();
-                        jvm_update_version = Integer.valueOf(uu).intValue();
-                        if (cs.length() >= 4) {
-                            char c = cs.charAt(3);
-                            if (c >= 'a' && c <= 'z') {
-                                jvm_special_version = Character.toString(c);
-                                nextChar++;
-                            }
-                        }
-                    } catch (NumberFormatException e) {
-                        // not conforming to the naming convention
-                        return;
-                    }
-                    cs = cs.subSequence(nextChar, cs.length());
-                }
-                if (cs.charAt(0) == '-') {
-                    // skip the first character
-                    // valid format: <identifier>-bxx or bxx
-                    // non-product VM will have -debug|-release appended
-                    cs = cs.subSequence(1, cs.length());
-                    String[] res = cs.toString().split("-");
-                    for (String s : res) {
-                        if (s.charAt(0) == 'b' && s.length() == 3 &&
-                            Character.isDigit(s.charAt(1)) &&
-                            Character.isDigit(s.charAt(2))) {
-                            jvm_build_number =
-                                Integer.valueOf(s.substring(1, 3)).intValue();
-                            break;
-                        }
-                    }
-                }
-            }
+        if (!getJvmVersionInfo()) {
+            throw new InternalError("Unable to obtain JVM version info");
         }
         getJdkVersionInfo();
         versionsInitialized = true;
@@ -327,8 +257,6 @@
 
     // Gets the JVM version info if available and sets the jvm_*_version fields
     // and its capabilities.
-    //
-    // Return false if not available which implies an old VM (Tiger or before).
     private static native boolean getJvmVersionInfo();
     private static native void getJdkVersionInfo();
 }
--- a/jdk/src/java.base/share/classes/sun/security/provider/MD4.java	Wed Jul 05 21:02:33 2017 +0200
+++ b/jdk/src/java.base/share/classes/sun/security/provider/MD4.java	Wed Jul 05 21:04:26 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -65,7 +65,7 @@
     private static final Provider md4Provider;
 
     static {
-        md4Provider = new Provider("MD4Provider", 1.9d, "MD4 MessageDigest") {
+        md4Provider = new Provider("MD4Provider", 9.0d, "MD4 MessageDigest") {
             private static final long serialVersionUID = -8850464997518327965L;
         };
         AccessController.doPrivileged(new PrivilegedAction<Void>() {
--- a/jdk/src/java.base/share/classes/sun/security/provider/Sun.java	Wed Jul 05 21:02:33 2017 +0200
+++ b/jdk/src/java.base/share/classes/sun/security/provider/Sun.java	Wed Jul 05 21:04:26 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -47,7 +47,7 @@
 
     public Sun() {
         /* We are the SUN provider */
-        super("SUN", 1.9d, INFO);
+        super("SUN", 9.0d, INFO);
 
         // if there is no security manager installed, put directly into
         // the provider. Otherwise, create a temporary map and use a
--- a/jdk/src/java.base/share/classes/sun/security/provider/VerificationProvider.java	Wed Jul 05 21:02:33 2017 +0200
+++ b/jdk/src/java.base/share/classes/sun/security/provider/VerificationProvider.java	Wed Jul 05 21:04:26 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -61,7 +61,7 @@
     }
 
     public VerificationProvider() {
-        super("SunJarVerification", 1.9d, "Jar Verification Provider");
+        super("SunJarVerification", 9.0d, "Jar Verification Provider");
         // register all algorithms normally registered by the Sun and SunRsaSign
         // providers, but only if they are missing
         if (ACTIVE == false) {
--- a/jdk/src/java.base/share/classes/sun/security/rsa/SunRsaSign.java	Wed Jul 05 21:02:33 2017 +0200
+++ b/jdk/src/java.base/share/classes/sun/security/rsa/SunRsaSign.java	Wed Jul 05 21:04:26 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -43,7 +43,7 @@
     private static final long serialVersionUID = 866040293550393045L;
 
     public SunRsaSign() {
-        super("SunRsaSign", 1.9d, "Sun RSA signature provider");
+        super("SunRsaSign", 9.0d, "Sun RSA signature provider");
 
         // if there is no security manager installed, put directly into
         // the provider. Otherwise, create a temporary map and use a
--- a/jdk/src/java.base/share/classes/sun/security/ssl/JsseJce.java	Wed Jul 05 21:02:33 2017 +0200
+++ b/jdk/src/java.base/share/classes/sun/security/ssl/JsseJce.java	Wed Jul 05 21:04:26 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -95,7 +95,7 @@
         private static final long serialVersionUID = -3284138292032213752L;
 
         SunCertificates(final Provider p) {
-            super("SunCertificates", 1.9d, "SunJSSE internal");
+            super("SunCertificates", 9.0d, "SunJSSE internal");
             AccessController.doPrivileged(new PrivilegedAction<Object>() {
                 @Override
                 public Object run() {
--- a/jdk/src/java.base/share/classes/sun/security/ssl/SunJSSE.java	Wed Jul 05 21:02:33 2017 +0200
+++ b/jdk/src/java.base/share/classes/sun/security/ssl/SunJSSE.java	Wed Jul 05 21:04:26 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -104,7 +104,7 @@
 
     // standard constructor
     protected SunJSSE() {
-        super("SunJSSE", 1.9d, info);
+        super("SunJSSE", 9.0d, info);
         subclassCheck();
         if (Boolean.TRUE.equals(fips)) {
             throw new ProviderException
@@ -132,7 +132,7 @@
 
     private SunJSSE(java.security.Provider cryptoProvider,
             String providerName) {
-        super("SunJSSE", 1.9d, fipsInfo + providerName + ")");
+        super("SunJSSE", 9.0d, fipsInfo + providerName + ")");
         subclassCheck();
         if (cryptoProvider == null) {
             // Calling Security.getProvider() will cause other providers to be
--- a/jdk/src/java.base/share/native/include/jvm.h	Wed Jul 05 21:02:33 2017 +0200
+++ b/jdk/src/java.base/share/native/include/jvm.h	Wed Jul 05 21:04:26 2017 +0200
@@ -49,7 +49,7 @@
  * These functions allow the verifier and format checker to be written
  * in a VM-independent way.
  *
- * Third, this file contains various I/O and nerwork operations needed
+ * Third, this file contains various I/O and network operations needed
  * by the standard Java I/O and network APIs.
  */
 
@@ -1127,11 +1127,9 @@
  * ==========================================================================
  */
 typedef struct {
-    /* Naming convention of RE build version string: n.n.n[_uu[c]][-<identifier>]-bxx */
-    unsigned int jvm_version;   /* Consists of major, minor, micro (n.n.n) */
-                                /* and build number (xx) */
-    unsigned int update_version : 8;         /* Update release version (uu) */
-    unsigned int special_update_version : 8; /* Special update release version (c)*/
+    unsigned int jvm_version;  /* Encoded $VNUM as specified by JEP-223 */
+    unsigned int patch_version : 8; /* JEP-223 patch version */
+    unsigned int reserved3 : 8;
     unsigned int reserved1 : 16;
     unsigned int reserved2;
 
@@ -1150,22 +1148,16 @@
 
 #define JVM_VERSION_MAJOR(version) ((version & 0xFF000000) >> 24)
 #define JVM_VERSION_MINOR(version) ((version & 0x00FF0000) >> 16)
-#define JVM_VERSION_MICRO(version) ((version & 0x0000FF00) >> 8)
-
-/* Build number is available only for RE builds.
- * It will be zero for internal builds.
- */
+#define JVM_VERSION_SECURITY(version) ((version & 0x0000FF00) >> 8)
 #define JVM_VERSION_BUILD(version) ((version & 0x000000FF))
 
 JNIEXPORT void JNICALL
 JVM_GetVersionInfo(JNIEnv* env, jvm_version_info* info, size_t info_size);
 
 typedef struct {
-    // Naming convention of RE build version string: n.n.n[_uu[c]][-<identifier>]-bxx
-    unsigned int jdk_version;   /* Consists of major, minor, micro (n.n.n) */
-                                /* and build number (xx) */
-    unsigned int update_version : 8;         /* Update release version (uu) */
-    unsigned int special_update_version : 8; /* Special update release version (c)*/
+    unsigned int jdk_version; /* Encoded $VNUM as specified by JEP-223 */
+    unsigned int patch_version : 8; /* JEP-223 patch version */
+    unsigned int reserved3 : 8;
     unsigned int reserved1 : 16;
     unsigned int reserved2;
 
@@ -1186,11 +1178,7 @@
 
 #define JDK_VERSION_MAJOR(version) ((version & 0xFF000000) >> 24)
 #define JDK_VERSION_MINOR(version) ((version & 0x00FF0000) >> 16)
-#define JDK_VERSION_MICRO(version) ((version & 0x0000FF00) >> 8)
-
-/* Build number is available only for RE build (i.e. JDK_BUILD_NUMBER is set to bNN)
- * It will be zero for internal builds.
- */
+#define JDK_VERSION_SECURITY(version) ((version & 0x0000FF00) >> 8)
 #define JDK_VERSION_BUILD(version) ((version & 0x000000FF))
 
 /*
--- a/jdk/src/java.base/share/native/launcher/defines.h	Wed Jul 05 21:02:33 2017 +0200
+++ b/jdk/src/java.base/share/native/launcher/defines.h	Wed Jul 05 21:04:26 2017 +0200
@@ -28,22 +28,20 @@
 
 #include "java.h"
 
+#define STR_HELPER(x) #x
+#define STR(x) STR_HELPER(x)
+
 /*
  * This file contains commonly defined constants used only by main.c
  * and should not be included by another file.
  */
-#ifndef FULL_VERSION
+#ifndef VERSION_STRING
 /* make sure the compilation fails */
-#error "FULL_VERSION must be defined"
+#error "VERSION_STRING must be defined"
 #endif
 
-#if defined(JDK_MAJOR_VERSION) && defined(JDK_MINOR_VERSION)
-#define DOT_VERSION JDK_MAJOR_VERSION "." JDK_MINOR_VERSION
-#else
-/* make sure the compilation fails */
-#error "JDK_MAJOR_VERSION and JDK_MINOR_VERSION must be defined"
-#endif
-
+/* Unused, but retained for JLI_Launch compatibility*/
+#define DOT_VERSION "0.0"
 
 #ifdef JAVA_ARGS
 #define HAS_JAVA_ARGS JNI_TRUE
--- a/jdk/src/java.base/share/native/launcher/main.c	Wed Jul 05 21:02:33 2017 +0200
+++ b/jdk/src/java.base/share/native/launcher/main.c	Wed Jul 05 21:04:26 2017 +0200
@@ -151,7 +151,7 @@
     return JLI_Launch(margc, margv,
                    sizeof(const_jargs) / sizeof(char *), const_jargs,
                    sizeof(const_appclasspath) / sizeof(char *), const_appclasspath,
-                   FULL_VERSION,
+                   VERSION_STRING,
                    DOT_VERSION,
                    (const_progname != NULL) ? const_progname : *margv,
                    (const_launcher != NULL) ? const_launcher : *margv,
--- a/jdk/src/java.base/share/native/libjava/System.c	Wed Jul 05 21:02:33 2017 +0200
+++ b/jdk/src/java.base/share/native/libjava/System.c	Wed Jul 05 21:04:26 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1994, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1994, 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -208,13 +208,13 @@
     CHECK_NULL_RETURN(getPropID, NULL);
 
     PUTPROP(props, "java.specification.version",
-            JDK_MAJOR_VERSION "." JDK_MINOR_VERSION);
+            VERSION_SPECIFICATION);
     PUTPROP(props, "java.specification.name",
             "Java Platform API Specification");
     PUTPROP(props, "java.specification.vendor",
             JAVA_SPECIFICATION_VENDOR);
 
-    PUTPROP(props, "java.version", RELEASE);
+    PUTPROP(props, "java.version", VERSION_SHORT);
     PUTPROP(props, "java.vendor", VENDOR);
     PUTPROP(props, "java.vendor.url", VENDOR_URL);
     PUTPROP(props, "java.vendor.url.bug", VENDOR_URL_BUG);
--- a/jdk/src/java.base/share/native/libjava/Version.c	Wed Jul 05 21:02:33 2017 +0200
+++ b/jdk/src/java.base/share/native/libjava/Version.c	Wed Jul 05 21:04:26 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -30,8 +30,6 @@
 
 #include "sun_misc_Version.h"
 
-char jvm_special_version = '\0';
-char jdk_special_version = '\0';
 static void setStaticIntField(JNIEnv* env, jclass cls, const char* name, jint value)
 {
     jfieldID fid;
@@ -63,27 +61,16 @@
     JNU_CHECK_EXCEPTION_RETURN(env, JNI_FALSE);
     setStaticIntField(env, cls, "jvm_minor_version", JVM_VERSION_MINOR(info.jvm_version));
     JNU_CHECK_EXCEPTION_RETURN(env, JNI_FALSE);
-    setStaticIntField(env, cls, "jvm_micro_version", JVM_VERSION_MICRO(info.jvm_version));
+    setStaticIntField(env, cls, "jvm_security_version", JVM_VERSION_SECURITY(info.jvm_version));
     JNU_CHECK_EXCEPTION_RETURN(env, JNI_FALSE);
     setStaticIntField(env, cls, "jvm_build_number", JVM_VERSION_BUILD(info.jvm_version));
     JNU_CHECK_EXCEPTION_RETURN(env, JNI_FALSE);
-    setStaticIntField(env, cls, "jvm_update_version", info.update_version);
+    setStaticIntField(env, cls, "jvm_patch_version", info.patch_version);
     JNU_CHECK_EXCEPTION_RETURN(env, JNI_FALSE);
-    jvm_special_version = info.special_update_version;
 
     return JNI_TRUE;
 }
 
-JNIEXPORT jstring JNICALL
-Java_sun_misc_Version_getJvmSpecialVersion(JNIEnv *env, jclass cls) {
-    char s[2];
-    jstring special;
-    s[0] = jvm_special_version;
-    s[1] = '\0';
-    special = (*env)->NewStringUTF(env, s);
-    return special;
-}
-
 JNIEXPORT void JNICALL
 Java_sun_misc_Version_getJdkVersionInfo(JNIEnv *env, jclass cls)
 {
@@ -94,21 +81,10 @@
     JNU_CHECK_EXCEPTION(env);
     setStaticIntField(env, cls, "jdk_minor_version", JDK_VERSION_MINOR(info.jdk_version));
     JNU_CHECK_EXCEPTION(env);
-    setStaticIntField(env, cls, "jdk_micro_version", JDK_VERSION_MICRO(info.jdk_version));
+    setStaticIntField(env, cls, "jdk_security_version", JDK_VERSION_SECURITY(info.jdk_version));
     JNU_CHECK_EXCEPTION(env);
     setStaticIntField(env, cls, "jdk_build_number", JDK_VERSION_BUILD(info.jdk_version));
     JNU_CHECK_EXCEPTION(env);
-    setStaticIntField(env, cls, "jdk_update_version", info.update_version);
+    setStaticIntField(env, cls, "jdk_patch_version", info.patch_version);
     JNU_CHECK_EXCEPTION(env);
-    jdk_special_version = info.special_update_version;
 }
-
-JNIEXPORT jstring JNICALL
-Java_sun_misc_Version_getJdkSpecialVersion(JNIEnv *env, jclass cls) {
-    char s[2];
-    jstring special;
-    s[0] = jdk_special_version;
-    s[1] = '\0';
-    special = (*env)->NewStringUTF(env, s);
-    return special;
-}
--- a/jdk/src/java.base/share/native/libjava/jdk_util.c	Wed Jul 05 21:02:33 2017 +0200
+++ b/jdk/src/java.base/share/native/libjava/jdk_util.c	Wed Jul 05 21:04:26 2017 +0200
@@ -31,72 +31,21 @@
 #include "jvm.h"
 #include "jdk_util.h"
 
-#ifndef JDK_UPDATE_VERSION
-   /* if not defined set to 00 */
-   #define JDK_UPDATE_VERSION "00"
-#endif
-
 JNIEXPORT void
 JDK_GetVersionInfo0(jdk_version_info* info, size_t info_size) {
-    /* These JDK_* macros are set at Makefile or the command line */
-    const unsigned int jdk_major_version =
-        (unsigned int) atoi(JDK_MAJOR_VERSION);
-    const unsigned int jdk_minor_version =
-        (unsigned int) atoi(JDK_MINOR_VERSION);
-    const unsigned int jdk_micro_version =
-        (unsigned int) atoi(JDK_MICRO_VERSION);
-
-    const char* jdk_build_string = JDK_BUILD_NUMBER;
-    char build_number[4];
-    unsigned int jdk_build_number = 0;
-
-    const char* jdk_update_string = JDK_UPDATE_VERSION;
-    unsigned int jdk_update_version = 0;
-    char update_ver[3];
-    char jdk_special_version = '\0';
-
-    /* If the JDK_BUILD_NUMBER is of format bXX and XX is an integer
-     * XX is the jdk_build_number.
-     */
-    size_t len = strlen(jdk_build_string);
-    if (jdk_build_string[0] == 'b' && len >= 2) {
-        size_t i = 0;
-        for (i = 1; i < len; i++) {
-            if (isdigit(jdk_build_string[i])) {
-                build_number[i-1] = jdk_build_string[i];
-            } else {
-                // invalid build number
-                i = -1;
-                break;
-            }
-        }
-        if (i == len) {
-            build_number[len-1] = '\0';
-            jdk_build_number = (unsigned int) atoi(build_number) ;
-        }
-    }
-
-    assert(jdk_build_number <= 255);
-
-    if (strlen(jdk_update_string) == 2 || strlen(jdk_update_string) == 3) {
-        if (isdigit(jdk_update_string[0]) && isdigit(jdk_update_string[1])) {
-            update_ver[0] = jdk_update_string[0];
-            update_ver[1] = jdk_update_string[1];
-            update_ver[2] = '\0';
-            jdk_update_version = (unsigned int) atoi(update_ver);
-            if (strlen(jdk_update_string) == 3) {
-                jdk_special_version = jdk_update_string[2];
-            }
-        }
-    }
+    /* These VERSION_* macros are given by the build system */
+    const unsigned int version_major = VERSION_MAJOR;
+    const unsigned int version_minor = VERSION_MINOR;
+    const unsigned int version_security = VERSION_SECURITY;
+    const unsigned int version_patch = VERSION_PATCH;
+    const unsigned int version_build = VERSION_BUILD;
 
     memset(info, 0, info_size);
-    info->jdk_version = ((jdk_major_version & 0xFF) << 24) |
-                        ((jdk_minor_version & 0xFF) << 16) |
-                        ((jdk_micro_version & 0xFF) << 8)  |
-                        (jdk_build_number & 0xFF);
-    info->update_version = jdk_update_version;
-    info->special_update_version = (unsigned int) jdk_special_version;
+    info->jdk_version = ((version_major & 0xFF) << 24) |
+                        ((version_minor & 0xFF) << 16) |
+                        ((version_security & 0xFF) << 8)  |
+                        (version_build & 0xFF);
+    info->patch_version = version_patch;
     info->thread_park_blocker = 1;
     // Advertise presence of sun.misc.PostVMInitHook:
     // future optimization: detect if this is enabled.
--- a/jdk/src/java.base/share/native/libjli/java.c	Wed Jul 05 21:02:33 2017 +0200
+++ b/jdk/src/java.base/share/native/libjli/java.c	Wed Jul 05 21:04:26 2017 +0200
@@ -74,7 +74,6 @@
 static const char *_launcher_name;
 static jboolean _is_java_args = JNI_FALSE;
 static const char *_fVersion;
-static const char *_dVersion;
 static jboolean _wc_enabled = JNI_FALSE;
 static jint _ergo_policy = DEFAULT_POLICY;
 
@@ -183,7 +182,7 @@
         int jargc, const char** jargv,          /* java args */
         int appclassc, const char** appclassv,  /* app classpath */
         const char* fullversion,                /* full version defined */
-        const char* dotversion,                 /* dot version defined */
+        const char* dotversion,                 /* UNUSED dot version defined */
         const char* pname,                      /* program name */
         const char* lname,                      /* launcher name */
         jboolean javaargs,                      /* JAVA_ARGS */
@@ -204,7 +203,6 @@
     char jvmcfg[MAXPATHLEN];
 
     _fVersion = fullversion;
-    _dVersion = dotversion;
     _launcher_name = lname;
     _program_name = pname;
     _is_java_args = javaargs;
@@ -1877,12 +1875,6 @@
 }
 
 const char*
-GetDotVersion()
-{
-    return _dVersion;
-}
-
-const char*
 GetFullVersion()
 {
     return _fVersion;
@@ -1970,7 +1962,6 @@
     printf("\tlauncher name:%s\n", GetLauncherName());
     printf("\tjavaw:%s\n", (IsJavaw() == JNI_TRUE) ? "on" : "off");
     printf("\tfullversion:%s\n", GetFullVersion());
-    printf("\tdotversion:%s\n", GetDotVersion());
     printf("\tergo_policy:");
     switch(GetErgoPolicy()) {
         case NEVER_SERVER_CLASS:
--- a/jdk/src/java.base/share/native/libjli/java.h	Wed Jul 05 21:02:33 2017 +0200
+++ b/jdk/src/java.base/share/native/libjli/java.h	Wed Jul 05 21:04:26 2017 +0200
@@ -169,7 +169,6 @@
 };
 
 const char* GetProgramName();
-const char* GetDotVersion();
 const char* GetFullVersion();
 jboolean IsJavaArgs();
 jboolean IsJavaw();
--- a/jdk/src/java.base/windows/native/common/version.rc	Wed Jul 05 21:02:33 2017 +0200
+++ b/jdk/src/java.base/windows/native/common/version.rc	Wed Jul 05 21:04:26 2017 +0200
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
+// Copyright (c) 2004, 2015, Oracle and/or its affiliates. All rights reserved.
 // DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 //
 // This code is free software; you can redistribute it and/or modify it
@@ -58,7 +58,7 @@
             VALUE "CompanyName",      XSTR(JDK_COMPANY)       "\0"
             VALUE "FileDescription",  XSTR(JDK_COMPONENT)     "\0"
             VALUE "FileVersion",      XSTR(JDK_VER)           "\0"
-            VALUE "Full Version",     XSTR(JDK_BUILD_ID)      "\0"
+            VALUE "Full Version",     XSTR(JDK_VERSION_STRING) "\0"
 	    VALUE "InternalName",     XSTR(JDK_INTERNAL_NAME) "\0"
             VALUE "LegalCopyright",   XSTR(JDK_COPYRIGHT)     "\0"
             VALUE "OriginalFilename", XSTR(JDK_FNAME)         "\0"
--- a/jdk/src/java.desktop/windows/native/libawt/windows/awt.rc	Wed Jul 05 21:02:33 2017 +0200
+++ b/jdk/src/java.desktop/windows/native/libawt/windows/awt.rc	Wed Jul 05 21:04:26 2017 +0200
@@ -68,7 +68,7 @@
             VALUE "CompanyName",      XSTR(JDK_COMPANY)       "\0"
             VALUE "FileDescription",  XSTR(JDK_COMPONENT)     "\0"
             VALUE "FileVersion",      XSTR(JDK_VER)           "\0"
-            VALUE "Full Version",     XSTR(JDK_BUILD_ID)      "\0"
+            VALUE "Full Version",     XSTR(JDK_VERSION_STRING) "\0"
 	    VALUE "InternalName",     XSTR(JDK_INTERNAL_NAME) "\0"
             VALUE "LegalCopyright",   XSTR(JDK_COPYRIGHT)     "\0"
             VALUE "OriginalFilename", XSTR(JDK_FNAME)         "\0"
--- a/jdk/src/java.naming/share/classes/sun/security/provider/certpath/ldap/JdkLDAP.java	Wed Jul 05 21:02:33 2017 +0200
+++ b/jdk/src/java.naming/share/classes/sun/security/provider/certpath/ldap/JdkLDAP.java	Wed Jul 05 21:04:26 2017 +0200
@@ -69,7 +69,7 @@
     }
 
     public JdkLDAP() {
-        super("JdkLDAP", 1.9d, "JdkLDAP Provider (implements LDAP CertStore)");
+        super("JdkLDAP", 9.0d, "JdkLDAP Provider (implements LDAP CertStore)");
 
         final Provider p = this;
         AccessController.doPrivileged(new PrivilegedAction<Void>() {
--- a/jdk/src/java.security.jgss/share/classes/sun/security/jgss/SunProvider.java	Wed Jul 05 21:02:33 2017 +0200
+++ b/jdk/src/java.security.jgss/share/classes/sun/security/jgss/SunProvider.java	Wed Jul 05 21:04:26 2017 +0200
@@ -101,7 +101,7 @@
 
     public SunProvider() {
         /* We are the Sun JGSS provider */
-        super("SunJGSS", 1.9d, INFO);
+        super("SunJGSS", 9.0d, INFO);
 
         final Provider p = this;
         AccessController.doPrivileged(new PrivilegedAction<Void>() {
--- a/jdk/src/java.security.jgss/share/classes/sun/security/jgss/wrapper/SunNativeProvider.java	Wed Jul 05 21:02:33 2017 +0200
+++ b/jdk/src/java.security.jgss/share/classes/sun/security/jgss/wrapper/SunNativeProvider.java	Wed Jul 05 21:04:26 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -120,7 +120,7 @@
 
     public SunNativeProvider() {
         /* We are the Sun NativeGSS provider */
-        super(NAME, 1.9d, INFO);
+        super(NAME, 9.0d, INFO);
 
         if (MECH_MAP != null) {
             AccessController.doPrivileged(new PutAllAction(this, MECH_MAP));
--- a/jdk/src/java.security.sasl/share/classes/com/sun/security/sasl/Provider.java	Wed Jul 05 21:02:33 2017 +0200
+++ b/jdk/src/java.security.sasl/share/classes/com/sun/security/sasl/Provider.java	Wed Jul 05 21:04:26 2017 +0200
@@ -98,7 +98,7 @@
     }
 
     public Provider() {
-        super("SunSASL", 1.9d, info);
+        super("SunSASL", 9.0d, info);
 
         final Provider p = this;
         AccessController.doPrivileged(new PrivilegedAction<Void>() {
--- a/jdk/src/java.smartcardio/share/classes/sun/security/smartcardio/SunPCSC.java	Wed Jul 05 21:02:33 2017 +0200
+++ b/jdk/src/java.smartcardio/share/classes/sun/security/smartcardio/SunPCSC.java	Wed Jul 05 21:04:26 2017 +0200
@@ -65,7 +65,7 @@
     }
 
     public SunPCSC() {
-        super("SunPCSC", 1.9d, "Sun PC/SC provider");
+        super("SunPCSC", 9.0d, "Sun PC/SC provider");
 
         final Provider p = this;
         AccessController.doPrivileged(new PrivilegedAction<Void>() {
--- a/jdk/src/java.xml.crypto/share/classes/org/jcp/xml/dsig/internal/dom/XMLDSigRI.java	Wed Jul 05 21:02:33 2017 +0200
+++ b/jdk/src/java.xml.crypto/share/classes/org/jcp/xml/dsig/internal/dom/XMLDSigRI.java	Wed Jul 05 21:04:26 2017 +0200
@@ -28,7 +28,7 @@
  * ===========================================================================
  */
 /*
- * Copyright (c) 2005, 2015 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved.
  */
 /*
  * $Id: XMLDSigRI.java 1400021 2012-10-19 10:16:04Z coheigea $
@@ -129,7 +129,7 @@
 
     public XMLDSigRI() {
         /* We are the XMLDSig provider */
-        super("XMLDSig", 1.9d, INFO);
+        super("XMLDSig", 9.0d, INFO);
 
         final Provider p = this;
         AccessController.doPrivileged(new PrivilegedAction<Void>() {
--- a/jdk/src/jdk.accessibility/windows/native/common/AccessBridgeStatusWindow.RC	Wed Jul 05 21:02:33 2017 +0200
+++ b/jdk/src/jdk.accessibility/windows/native/common/AccessBridgeStatusWindow.RC	Wed Jul 05 21:04:26 2017 +0200
@@ -44,7 +44,7 @@
     LTEXT           "Status:",IDC_STATIC,11,149,23,8
     EDITTEXT        cWindowsID,67,39,121,13,ES_READONLY
     LTEXT           "Windows ID:",IDC_STATIC,21,41,42,8
-    EDITTEXT        cCallInfo,12,65,184,75,ES_MULTILINE | ES_AUTOVSCROLL | 
+    EDITTEXT        cCallInfo,12,65,184,75,ES_MULTILINE | ES_AUTOVSCROLL |
                     ES_AUTOHSCROLL | ES_READONLY | WS_VSCROLL
     GROUPBOX        "Call info",IDC_STATIC,4,55,197,90
     EDITTEXT        cInvokedByText,67,1,121,13,ES_READONLY
@@ -67,12 +67,12 @@
 // TEXTINCLUDE
 //
 
-1 TEXTINCLUDE DISCARDABLE 
+1 TEXTINCLUDE DISCARDABLE
 BEGIN
     "resource.h\0"
 END
 
-2 TEXTINCLUDE DISCARDABLE 
+2 TEXTINCLUDE DISCARDABLE
 BEGIN
     "#define APSTUDIO_HIDDEN_SYMBOLS\r\n"
     "#include ""windows.h""\r\n"
@@ -80,7 +80,7 @@
     "\0"
 END
 
-3 TEXTINCLUDE DISCARDABLE 
+3 TEXTINCLUDE DISCARDABLE
 BEGIN
     "\r\n"
     "\0"
@@ -95,7 +95,7 @@
 //
 
 #ifdef APSTUDIO_INVOKED
-GUIDELINES DESIGNINFO DISCARDABLE 
+GUIDELINES DESIGNINFO DISCARDABLE
 BEGIN
     "ACCESSBRIDGESTATUSWINDOW", DIALOG
     BEGIN
@@ -142,7 +142,7 @@
             VALUE "CompanyName", XSTR(JDK_COMPANY) "\0"
             VALUE "FileDescription", XSTR(JDK_COMPONENT) "\0"
             VALUE "FileVersion", XSTR(JDK_VER) "\0"
-            VALUE "Full Version", XSTR(JDK_BUILD_ID) "\0"
+            VALUE "Full Version", XSTR(JDK_VERSION_STRING) "\0"
             VALUE "InternalName", XSTR(JDK_INTERNAL_NAME) "\0"
             VALUE "LegalCopyright", XSTR(JDK_COPYRIGHT) "\0"
             VALUE "OriginalFilename", XSTR(JDK_FNAME) "\0"
@@ -172,4 +172,3 @@
 
 /////////////////////////////////////////////////////////////////////////////
 #endif    // not APSTUDIO_INVOKED
-
--- a/jdk/src/jdk.crypto.ec/share/classes/sun/security/ec/SunEC.java	Wed Jul 05 21:02:33 2017 +0200
+++ b/jdk/src/jdk.crypto.ec/share/classes/sun/security/ec/SunEC.java	Wed Jul 05 21:04:26 2017 +0200
@@ -142,7 +142,7 @@
     }
 
     public SunEC() {
-        super("SunEC", 1.9d, "Sun Elliptic Curve provider (EC, ECDSA, ECDH)");
+        super("SunEC", 9.0d, "Sun Elliptic Curve provider (EC, ECDSA, ECDH)");
         AccessController.doPrivileged(new PrivilegedAction<Void>() {
             public Void run() {
                 putEntries(useFullImplementation);
--- a/jdk/src/jdk.crypto.mscapi/windows/classes/sun/security/mscapi/SunMSCAPI.java	Wed Jul 05 21:02:33 2017 +0200
+++ b/jdk/src/jdk.crypto.mscapi/windows/classes/sun/security/mscapi/SunMSCAPI.java	Wed Jul 05 21:04:26 2017 +0200
@@ -124,7 +124,7 @@
     }
 
     public SunMSCAPI() {
-        super("SunMSCAPI", 1.9d, INFO);
+        super("SunMSCAPI", 9.0d, INFO);
 
         final Provider p = this;
         AccessController.doPrivileged(new PrivilegedAction<Void>() {
--- a/jdk/src/jdk.crypto.pkcs11/share/classes/sun/security/pkcs11/SunPKCS11.java	Wed Jul 05 21:02:33 2017 +0200
+++ b/jdk/src/jdk.crypto.pkcs11/share/classes/sun/security/pkcs11/SunPKCS11.java	Wed Jul 05 21:04:26 2017 +0200
@@ -90,7 +90,7 @@
     }
 
     public SunPKCS11() {
-        super("SunPKCS11", 1.9d, "Unconfigured and unusable PKCS11 provider");
+        super("SunPKCS11", 9.0d, "Unconfigured and unusable PKCS11 provider");
         p11 = null;
         config = null;
         slotID = 0;
@@ -133,7 +133,7 @@
 
     // Used by Secmod
     SunPKCS11(Config c) {
-        super("SunPKCS11-" + c.getName(), 1.9d, c.getDescription());
+        super("SunPKCS11-" + c.getName(), 9.0d, c.getDescription());
         this.config = c;
 
         if (debug != null) {
--- a/jdk/src/jdk.crypto.ucrypto/solaris/classes/com/oracle/security/ucrypto/UcryptoProvider.java	Wed Jul 05 21:02:33 2017 +0200
+++ b/jdk/src/jdk.crypto.ucrypto/solaris/classes/com/oracle/security/ucrypto/UcryptoProvider.java	Wed Jul 05 21:04:26 2017 +0200
@@ -224,7 +224,7 @@
     }
 
     public UcryptoProvider() {
-        super("OracleUcrypto", 1.9d, "Provider using Oracle Ucrypto API");
+        super("OracleUcrypto", 9.0d, "Provider using Oracle Ucrypto API");
 
         AccessController.doPrivileged(new PrivilegedAction<>() {
             public Void run() {
--- a/jdk/src/jdk.security.jgss/share/classes/com/sun/security/sasl/gsskerb/JdkSASL.java	Wed Jul 05 21:02:33 2017 +0200
+++ b/jdk/src/jdk.security.jgss/share/classes/com/sun/security/sasl/gsskerb/JdkSASL.java	Wed Jul 05 21:04:26 2017 +0200
@@ -73,7 +73,7 @@
     }
 
     public JdkSASL() {
-        super("JdkSASL", 1.9d, info);
+        super("JdkSASL", 9.0d, info);
 
         final Provider p = this;
         AccessController.doPrivileged(new PrivilegedAction<Void>() {
--- a/jdk/test/java/security/Provider/ProviderVersionCheck.java	Wed Jul 05 21:02:33 2017 +0200
+++ b/jdk/test/java/security/Provider/ProviderVersionCheck.java	Wed Jul 05 21:04:26 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -27,7 +27,7 @@
 
 /*
  * @test
- * @bug 8030823
+ * @bug 8030823 8130696
  * @run main/othervm ProviderVersionCheck
  * @summary Verify all providers in the default Providers list have the proper
  * version for the release
@@ -42,7 +42,7 @@
 
         for (Provider p: Security.getProviders()) {
             System.out.print(p.getName() + " ");
-            if (p.getVersion() != 1.9d) {
+            if (p.getVersion() != 9.0d) {
                 System.out.println("failed. " + "Version received was " +
                         p.getVersion());
                 failure = true;
--- a/jdk/test/javax/management/remote/mandatory/notif/NotSerializableNotifTest.java	Wed Jul 05 21:02:33 2017 +0200
+++ b/jdk/test/javax/management/remote/mandatory/notif/NotSerializableNotifTest.java	Wed Jul 05 21:04:26 2017 +0200
@@ -24,7 +24,7 @@
 /*
  * @test
  * @summary Tests to send a not serializable notification.
- * @bug 5022196
+ * @bug 5022196 8132003
  * @author Shanliang JIANG
  * @modules java.management
  * @run clean NotSerializableNotifTest
@@ -53,22 +53,13 @@
     private static final MBeanServer mbeanServer = MBeanServerFactory.createMBeanServer();
     private static ObjectName emitter;
 
-    private static String[] protocols;
+    private static String[] protocols = new String[] {"rmi", "iiop", "jmxmp"};
 
     private static final int sentNotifs = 10;
 
     public static void main(String[] args) throws Exception {
         System.out.println(">>> Test to send a not serializable notification");
 
-        // IIOP fails on JDK1.4, see 5034318
-        final String v = System.getProperty("java.version");
-        float f = Float.parseFloat(v.substring(0, 3));
-        if (f<1.5) {
-            protocols = new String[] {"rmi", "jmxmp"};
-        } else {
-            protocols = new String[] {"rmi", "iiop", "jmxmp"};
-        }
-
         emitter = new ObjectName("Default:name=NotificationEmitter");
         mbeanServer.registerMBean(new NotificationEmitter(), emitter);
 
--- a/jdk/test/lib/testlibrary/jdk/testlibrary/Platform.java	Wed Jul 05 21:02:33 2017 +0200
+++ b/jdk/test/lib/testlibrary/jdk/testlibrary/Platform.java	Wed Jul 05 21:04:26 2017 +0200
@@ -31,7 +31,7 @@
     private static final String osName      = System.getProperty("os.name");
     private static final String dataModel   = System.getProperty("sun.arch.data.model");
     private static final String vmVersion   = System.getProperty("java.vm.version");
-    private static final String javaVersion = System.getProperty("java.version");
+    private static final String jdkDebug    = System.getProperty("jdk.debug");
     private static final String osArch      = System.getProperty("os.arch");
     private static final String vmName      = System.getProperty("java.vm.name");
     private static final String userName    = System.getProperty("user.name");
@@ -99,8 +99,7 @@
     }
 
     public static boolean isDebugBuild() {
-        return (vmVersion.toLowerCase().contains("debug") ||
-                javaVersion.toLowerCase().contains("debug"));
+        return (jdkDebug.toLowerCase().contains("debug"));
     }
 
     public static String getVMVersion() {
--- a/jdk/test/sun/misc/Version/Version.java	Wed Jul 05 21:02:33 2017 +0200
+++ b/jdk/test/sun/misc/Version/Version.java	Wed Jul 05 21:04:26 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -22,24 +22,27 @@
  */
 
 /* @test
- * @bug 6994413
+ * @bug 6994413 8134365
  * @summary Check the JDK and JVM version returned by sun.misc.Version
- *          matches the versions defined in the system properties
+ *          matches the versions defined in the system properties.
+ *          Should use the API described in JDK-8136651 when available
  * @modules java.base/sun.misc
  * @compile -XDignore.symbol.file Version.java
  * @run main Version
  */
 
 import static sun.misc.Version.*;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
 public class Version {
 
     public static void main(String[] args) throws Exception {
         VersionInfo jdk = newVersionInfo(System.getProperty("java.runtime.version"));
         VersionInfo v1 = new VersionInfo(jdkMajorVersion(),
                                          jdkMinorVersion(),
-                                         jdkMicroVersion(),
-                                         jdkUpdateVersion(),
-                                         jdkSpecialVersion(),
+                                         jdkSecurityVersion(),
+                                         jdkPatchVersion(),
                                          jdkBuildNumber());
         System.out.println("JDK version = " + jdk + "  " + v1);
         if (!jdk.equals(v1)) {
@@ -48,9 +51,8 @@
         VersionInfo jvm = newVersionInfo(System.getProperty("java.vm.version"));
         VersionInfo v2 = new VersionInfo(jvmMajorVersion(),
                                          jvmMinorVersion(),
-                                         jvmMicroVersion(),
-                                         jvmUpdateVersion(),
-                                         jvmSpecialVersion(),
+                                         jvmSecurityVersion(),
+                                         jvmPatchVersion(),
                                          jvmBuildNumber());
         System.out.println("JVM version = " + jvm + " " + v2);
         if (!jvm.equals(v2)) {
@@ -61,108 +63,76 @@
     static class VersionInfo {
         final int major;
         final int minor;
-        final int micro;
-        final int update;
-        final String special;
+        final int security;
+        final int patch;
         final int build;
-        VersionInfo(int major, int minor, int micro,
-                    int update, String special, int build) {
+        VersionInfo(int major, int minor, int security,
+                    int patch, int build) {
             this.major = major;
             this.minor = minor;
-            this.micro = micro;
-            this.update = update;
-            this.special = special;
+            this.security = security;
+            this.patch = patch;
             this.build = build;
         }
 
+        VersionInfo(int[] fields) {
+            this.major = fields[0];
+            this.minor = fields[1];
+            this.security = fields[2];
+            this.patch = fields[3];
+            this.build = fields[4];
+        }
+
         public boolean equals(VersionInfo v) {
             return (this.major == v.major && this.minor == v.minor &&
-                    this.micro == v.micro && this.update == v.update &&
-                    this.special.equals(v.special) && this.build == v.build);
+                    this.security == v.security && this.patch == v.patch &&
+                    this.build == v.build);
         }
 
         public String toString() {
             StringBuilder sb = new StringBuilder();
-            sb.append(major + "." + minor + "." + micro);
-            if (update > 0) {
-                sb.append("_" + update);
+            // Do not include trailing zeros
+            if (patch > 0) {
+                sb.insert(0, "." + patch);
             }
+            if (security > 0 || sb.length() > 0) {
+                sb.insert(0, "." + security);
+            }
+            if (minor > 0 || sb.length() > 0) {
+                sb.insert(0, "." + minor);
+            }
+            sb.insert(0, major);
 
-            if (!special.isEmpty()) {
-                sb.append(special);
-            }
-            sb.append("-b" + build);
+            if (build >= 0)
+                sb.append("+" + build);
+
             return sb.toString();
         }
     }
 
     private static VersionInfo newVersionInfo(String version) throws Exception {
-        // valid format of the version string is:
-        // n.n.n[_uu[c]][-<identifer>]-bxx
-        int major = 0;
-        int minor = 0;
-        int micro = 0;
-        int update = 0;
-        String special = "";
-        int build = 0;
-        CharSequence cs = version;
-        if (cs.length() >= 5) {
-            if (Character.isDigit(cs.charAt(0)) && cs.charAt(1) == '.' &&
-                Character.isDigit(cs.charAt(2)) && cs.charAt(3) == '.' &&
-                Character.isDigit(cs.charAt(4))) {
-                major = Character.digit(cs.charAt(0), 10);
-                minor = Character.digit(cs.charAt(2), 10);
-                micro = Character.digit(cs.charAt(4), 10);
-                cs = cs.subSequence(5, cs.length());
-            } else if (Character.isDigit(cs.charAt(0)) &&
-                       Character.isDigit(cs.charAt(1)) && cs.charAt(2) == '.' &&
-                       Character.isDigit(cs.charAt(3))) {
-                // HSX has nn.n[n] (major.minor) version
-                major = Integer.valueOf(version.substring(0, 2)).intValue();
-                if (Character.isDigit(cs.charAt(4))) {
-                    minor = Integer.valueOf(version.substring(3, 5)).intValue();
-                    cs = cs.subSequence(5, cs.length());
-                }
-                else {
-                    minor = Character.digit(cs.charAt(3), 10);
-                    cs = cs.subSequence(4, cs.length());
-                }
-            }
-            if (cs.charAt(0) == '_' && cs.length() >= 3 &&
-                Character.isDigit(cs.charAt(1)) &&
-                Character.isDigit(cs.charAt(2))) {
-                int nextChar = 3;
-                String uu = cs.subSequence(1, 3).toString();
-                update = Integer.valueOf(uu).intValue();
-                if (cs.length() >= 4) {
-                    char c = cs.charAt(3);
-                    if (c >= 'a' && c <= 'z') {
-                        special = Character.toString(c);
-                        nextChar++;
-                    }
-                }
-                cs = cs.subSequence(nextChar, cs.length());
-            }
-            if (cs.charAt(0) == '-') {
-                // skip the first character
-                // valid format: <identifier>-bxx or bxx
-                // non-product VM will have -debug|-release appended
-                cs = cs.subSequence(1, cs.length());
-                String[] res = cs.toString().split("-");
-                for (int i = res.length - 1; i >= 0; i--) {
-                    String s = res[i];
-                    if (s.charAt(0) == 'b') {
-                        try {
-                            build = Integer.parseInt(s.substring(1, s.length()));
-                            break;
-                        } catch (NumberFormatException nfe) {
-                            // ignore
-                        }
-                    }
-                }
+        // Version string fromat as defined by JEP-223
+        String jep223Pattern =
+                "^([0-9]+)(\\.([0-9]+))?(\\.([0-9]+))?(\\.([0-9]+))?" + // $VNUM
+                "(-([a-zA-Z]+))?(\\.([a-zA-Z]+))?" + // $PRE
+                "(\\+([0-9]+))?" +                   // Build Number
+                "(([-a-zA-Z0-9.]+))?$";              // $OPT
+
+        // Pattern group index for: Major, Minor, Security, Patch, Build
+        int[] groups = {1, 3, 5, 7, 13};
+        // Default values for Major, Minor, Security, Patch, Build
+        int[] versionFields = {0, 0, 0, 0, 0};
+
+        Pattern pattern = Pattern.compile(jep223Pattern);
+        Matcher matcher = pattern.matcher(version);
+        if (matcher.matches()) {
+            for (int i = 0; i < versionFields.length; i++) {
+                String field = matcher.group(groups[i]);
+                versionFields[i] = (field != null) ? Integer.parseInt(field) : 0;
             }
         }
-        VersionInfo vi = new VersionInfo(major, minor, micro, update, special, build);
+
+        VersionInfo vi = new VersionInfo(versionFields);
         System.out.printf("newVersionInfo: input=%s output=%s\n", version, vi);
         return vi;
     }
--- a/jdk/test/sun/security/util/Oid/S11N.java	Wed Jul 05 21:02:33 2017 +0200
+++ b/jdk/test/sun/security/util/Oid/S11N.java	Wed Jul 05 21:04:26 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,7 +23,7 @@
 
 /*
  * @test
- * @bug 4811968 6908628 8006564
+ * @bug 4811968 6908628 8006564 8130696
  * @modules java.base/sun.misc
  *          java.base/sun.security.util
  * @run main S11N check
@@ -66,8 +66,11 @@
 
     public static void main(String[] args) throws Exception {
         if (args[0].equals("check")) {
-            int version = Integer.valueOf(System.getProperty("java.version")
-                    .split("\\.")[1]);
+            String jv = System.getProperty("java.version");
+            // java.version format: $VNUM\-$PRE
+            String [] va = (jv.split("-")[0]).split("\\.");
+            String v = (va.length == 1 || !va[0].equals("1")) ? va[0] : va[1];
+            int version = Integer.valueOf(v);
             System.out.println("version is " + version);
             if (version >= 7) {
                 for (String oid: SMALL) {
--- a/jdk/test/tools/launcher/VersionCheck.java	Wed Jul 05 21:02:33 2017 +0200
+++ b/jdk/test/tools/launcher/VersionCheck.java	Wed Jul 05 21:04:26 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,7 +23,7 @@
 
 /**
  * @test
- * @bug 6545058 6611182 8016209
+ * @bug 6545058 6611182 8016209 8139986
  * @summary validate and test -version, -fullversion, and internal, as well as
  *          sanity checks if a tool can be launched.
  * @compile VersionCheck.java
@@ -115,12 +115,20 @@
     static String refVersion;
     static String refFullVersion;
 
+    static String getAllVersionLines(String... argv) {
+        return getVersion0(true, argv);
+    }
+
     static String getVersion(String... argv) {
+        return getVersion0(false, argv);
+    }
+
+    static String getVersion0(boolean allLines, String... argv) {
         TestHelper.TestResult tr = doExec(argv);
         StringBuilder out = new StringBuilder();
         // remove the HotSpot line
         for (String x : tr.testOutput) {
-            if (!x.matches(".*Client.*VM.*|.*Server.*VM.*")) {
+            if (allLines || !x.matches(".*Client.*VM.*|.*Server.*VM.*")) {
                 out = out.append(x + "\n");
             }
         }
@@ -183,13 +191,6 @@
                                            "build".length() + 1,
                                            refVersion.lastIndexOf(")"));
 
-        String[] vStr = bStr.split("\\.|-|_");
-        String jdkMajor = vStr[0];
-        String jdkMinor = vStr[1];
-        String jdkMicro = vStr[2];
-        String jdkBuild = vStr[vStr.length - 1];
-
-        String expectedDotVersion = "dotversion:" + jdkMajor + "." + jdkMinor;
         String expectedFullVersion = "fullversion:" + bStr;
 
         Map<String, String> envMap = new HashMap<>();
@@ -200,10 +201,6 @@
         for (String x : tr.testOutput) {
             alist.add(x.trim());
         }
-        if (!alist.contains(expectedDotVersion)) {
-            System.out.println("Error: could not find " + expectedDotVersion);
-            failcount++;
-        }
 
         if (!alist.contains(expectedFullVersion)) {
             System.out.println("Error: could not find " + expectedFullVersion);
@@ -213,6 +210,28 @@
         return failcount == 0;
     }
 
+    static boolean testDebugVersion() {
+        String jdkType = System.getProperty("jdk.debug", "release");
+        String versionLines = getAllVersionLines(javaCmd, "-version");
+        if ("release".equals(jdkType)) {
+            jdkType = "";
+        } else {
+            jdkType = jdkType + " ";
+        }
+        String tofind = "(" + jdkType + "build";
+        int idx = versionLines.indexOf(tofind);
+        if (idx < 0) {
+            System.out.println("Did not find first instance of " + tofind);
+            return false;
+        }
+        idx =  versionLines.indexOf(tofind, idx + 1);
+        if (idx < 0) {
+            System.out.println("Did not find first instance of " + tofind);
+            return false;
+        }
+        return true;
+    }
+
     // Initialize
     static void init() {
         refVersion = getVersion(javaCmd, "-version");
@@ -223,7 +242,8 @@
         init();
         if (compareJVersionStrings() &&
                 compareInternalStrings() &&
-                testToolVersion()) {
+                testToolVersion() &&
+                testDebugVersion()) {
             System.out.println("All Version string comparisons: PASS");
         } else {
             throw new AssertionError("Some tests failed");
@@ -231,7 +251,7 @@
     }
 
     static class ToolFilter implements FileFilter {
-        final Iterable<String> exclude ;
+        final Iterable<String> exclude;
         protected ToolFilter(String... exclude) {
             List<String> tlist = new ArrayList<>();
             this.exclude = tlist;
--- a/langtools/.hgtags	Wed Jul 05 21:02:33 2017 +0200
+++ b/langtools/.hgtags	Wed Jul 05 21:04:26 2017 +0200
@@ -336,3 +336,4 @@
 79501a97ca5720af846509f4bf3c6c04d7bdf82a jdk9-b91
 a3415b57507c928af8f2ad1c771eebafcd00c6c7 jdk9-b92
 7f880f98506c9046f8fb69597a41762ea1b7d042 jdk9-b93
+8356d7a909a29f321e3eaf9d3c2bbc71648529e2 jdk9-b94
--- a/langtools/make/gensrc/GensrcCommon.gmk	Wed Jul 05 21:02:33 2017 +0200
+++ b/langtools/make/gensrc/GensrcCommon.gmk	Wed Jul 05 21:04:26 2017 +0200
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -50,7 +50,7 @@
 define SetupVersionProperties
   $(SUPPORT_OUTPUTDIR)/gensrc/$(MODULE)/$$(strip $2):
 	$(MKDIR) -p $$(@D)
-	$(PRINTF) "jdk=$(JDK_VERSION)\nfull=$(FULL_VERSION)\nrelease=$(RELEASE)\n" \
+	$(PRINTF) "jdk=$(VERSION_NUMBER)\nfull=$(VERSION_STRING)\nrelease=$(VERSION_SHORT)\n" \
 	    > $$@
 
   $$(strip $1) += $(SUPPORT_OUTPUTDIR)/gensrc/$(MODULE)/$$(strip $2)
@@ -68,7 +68,7 @@
 
   # Convert .../src/<module>/share/classes/com/sun/tools/javac/resources/javac_zh_CN.properties
   # to .../langtools/gensrc/<module>/com/sun/tools/javac/resources/javac_zh_CN.java
-  # Strip away prefix and suffix, leaving for example only: 
+  # Strip away prefix and suffix, leaving for example only:
   # "<module>/share/classes/com/sun/tools/javac/resources/javac_zh_CN"
   PROPJAVAS := $$(patsubst $(LANGTOOLS_TOPDIR)/src/%, \
       $(SUPPORT_OUTPUTDIR)/gensrc/%, \
--- a/langtools/src/java.compiler/share/classes/javax/lang/model/SourceVersion.java	Wed Jul 05 21:02:33 2017 +0200
+++ b/langtools/src/java.compiler/share/classes/javax/lang/model/SourceVersion.java	Wed Jul 05 21:04:26 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -168,6 +168,7 @@
             String specVersion = System.getProperty("java.specification.version");
 
             switch (specVersion) {
+                case "9":
                 case "1.9":
                     return RELEASE_9;
                 case "1.8":
--- a/langtools/src/jdk.jshell/share/classes/jdk/jshell/TaskFactory.java	Wed Jul 05 21:02:33 2017 +0200
+++ b/langtools/src/jdk.jshell/share/classes/jdk/jshell/TaskFactory.java	Wed Jul 05 21:04:26 2017 +0200
@@ -80,7 +80,7 @@
         if (compiler == null) {
             throw new UnsupportedOperationException("Compiler not available, must be run with full JDK 9.");
         }
-        if (!System.getProperty("java.specification.version").equals("1.9"))  {
+        if (!System.getProperty("java.specification.version").equals("9"))  {
             throw new UnsupportedOperationException("Wrong compiler, must be run with full JDK 9.");
         }
         this.fileManager = new MemoryFileManager(
--- a/langtools/test/tools/javac/options/modes/InfoOptsTest.java	Wed Jul 05 21:02:33 2017 +0200
+++ b/langtools/test/tools/javac/options/modes/InfoOptsTest.java	Wed Jul 05 21:04:26 2017 +0200
@@ -48,7 +48,7 @@
 
         String specVersion = System.getProperty("java.specification.version");
         testInfoOpt("-version", "javac", specVersion);
-        testInfoOpt("-fullversion", "javac", specVersion, "-b");
+        testInfoOpt("-fullversion", "javac", specVersion, "+");
     }
 
     void testInfoOpt(String opt, String... expect) {
--- a/langtools/test/tools/javac/options/modes/SourceTargetTest.java	Wed Jul 05 21:02:33 2017 +0200
+++ b/langtools/test/tools/javac/options/modes/SourceTargetTest.java	Wed Jul 05 21:04:26 2017 +0200
@@ -45,7 +45,10 @@
     @Test
     void testSourceTarget() throws IOException {
         String v = System.getProperty("java.specification.version");
-        String latest = v.substring(v.lastIndexOf(".") + 1);
+        String[] va = v.split("\\.");
+        int major = Integer.parseInt(va[0]);
+        boolean newVersion = major > 8;
+        String latest = (newVersion) ? va[0] : va[1];
         String prev = String.valueOf(Integer.valueOf(latest) - 1);
 
         writeFile("C.java", "class C { }");
--- a/make/Images.gmk	Wed Jul 05 21:02:33 2017 +0200
+++ b/make/Images.gmk	Wed Jul 05 21:04:26 2017 +0200
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2014, 2015 Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -363,13 +363,14 @@
 
 # Param 1 - The file containing the MODULES list
 define create-info-file
-  $(call info-file-item, "JAVA_VERSION", "$(JDK_VERSION)")
+  $(call info-file-item, "JAVA_VERSION", "$(VERSION_NUMBER)")
+  $(call info-file-item, "JAVA_FULL_VERSION", "$(VERSION_STRING)")
   $(call info-file-item, "OS_NAME", "$(REQUIRED_OS_NAME)")
   $(call info-file-item, "OS_VERSION", "$(REQUIRED_OS_VERSION)")
   $(call info-file-item, "OS_ARCH", "$(OPENJDK_TARGET_CPU_LEGACY)")
   $(if $(JDK_ARCH_ABI_PROP_NAME), \
     $(call info-file-item, "SUN_ARCH_ABI", "$(JDK_ARCH_ABI_PROP_NAME)"))
-  $(call info-file-item, "SOURCE", "$(ALL_SOURCE_TIPS)")
+  $(call info-file-item, "SOURCE", "$(strip $(ALL_SOURCE_TIPS))")
   $(call info-file-item, "MODULES", "`$(CAT) $1`")
 endef
 
--- a/make/Install.gmk	Wed Jul 05 21:02:33 2017 +0200
+++ b/make/Install.gmk	Wed Jul 05 21:04:26 2017 +0200
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -28,7 +28,7 @@
 include $(SPEC)
 
 BINARIES := $(notdir $(wildcard $(JDK_IMAGE_DIR)/bin/*))
-INSTALLDIR := openjdk-$(RELEASE)
+INSTALLDIR := openjdk-$(VERSION_SHORT)
 
 # Install the jdk image, in a very crude way. Not taking into
 # account, how to install properly on macosx or windows etc.
--- a/make/Javadoc.gmk	Wed Jul 05 21:02:33 2017 +0200
+++ b/make/Javadoc.gmk	Wed Jul 05 21:04:26 2017 +0200
@@ -49,8 +49,6 @@
 
 HOTSPOT_DOCS_IMPORT_PATH=$(HOTSPOT_OUTPUTDIR)/docs
 
-BUILD_NUMBER=$(JDK_BUILD_NUMBER)
-
 JAVADOC_CMD = $(JAVA) \
     -Djava.awt.headless=true \
     $(NEW_JAVADOC)
@@ -122,11 +120,8 @@
 BUG_SUBMIT_LINE = <a href="$(BUG_SUBMIT_URL)">Submit a bug or feature</a>
 
 # Url to devdocs page
-# Was: http://java.sun.com/javase/6/webnotes/devdocs-vs-specs.html
-DEV_DOCS_URL-7 = http://download.oracle.com/javase/7/docs/index.html
-DEV_DOCS_URL-8 = http://download.oracle.com/javase/8/docs/index.html
-DEV_DOCS_URL = $(DEV_DOCS_URL-$(JDK_MINOR_VERSION))
-DOCS_BASE_URL = http://download.oracle.com/javase/7/docs
+DOCS_BASE_URL = http://docs.oracle.com/javase/$(VERSION_SPECIFICATION)/docs
+DEV_DOCS_URL = $(DOCS_BASE_URL)/index.html
 
 # Common Java trademark line
 JAVA_TRADEMARK_LINE = Java is a trademark or registered trademark of \
@@ -313,14 +308,13 @@
 
 
 
-# Draft used for non-fcs documents
-DRAFT_HEADER =
-ifneq ($(MILESTONE), fcs)
-  DRAFT_HEADER = <br><strong>DRAFT&nbsp;$(MILESTONE)-$(BUILD_NUMBER)</strong>
-  DRAFT_BOTTOM = <br><strong>DRAFT&nbsp;$(MILESTONE)-$(BUILD_NUMBER)</strong>
-  DRAFT_WINTITLE = $(BUILD_NUMBER)
+# Assume we need a draft format when the version string is not a GA version.
+ifeq ($(VERSION_IS_GA), false)
+  DRAFT_HEADER := <br><strong>DRAFT&nbsp;$(VERSION_STRING)</strong>
+  DRAFT_BOTTOM := <br><strong>DRAFT&nbsp;$(VERSION_STRING)</strong>
+  DRAFT_WINTITLE := $(VERSION_BUILD)
   # Early access top text (not used in FCS releases)
-  COREAPI_TOP_EARLYACCESS = \
+  COREAPI_TOP_EARLYACCESS := \
 <div style="background-color: \#EEEEEE"> \
 <div style="padding: 6px; margin-top: 2px; margin-bottom: 6px; \
 margin-left: 6px; margin-right: 6px; text-align: justify; \
@@ -331,7 +325,11 @@
 The information is being made available to you solely for purpose of \
 evaluation. \
 </div> </div>
-
+else
+  DRAFT_HEADER :=
+  DRAFT_BOTTOM :=
+  DRAFT_WINTITLE :=
+  COREAPI_TOP_EARLYACCESS :=
 endif
 
 #################################################################
@@ -351,39 +349,15 @@
 all: docs
 docs: coredocs otherdocs
 
-#################################################################
-# Production Targets -- USE THESE TARGETS WHEN:
-# a) You're generating docs outside of release engineering's
-#    standard control build.
-# b) The docs will be pushed to the web and/or included in
-#    the downloaded doc bundle.
-#
-# See: Notes.html#releaseTargets
-# Note: Spaces precede ifdef/ifndef indents. Tabs precede target commands (!)
-#
-
-sanitycheckcoredocs:
-	@$(ECHO) ""
-	@$(ECHO) "Building core api docs with these values:"
-	@$(ECHO) "    BUILD_NUMBER = $(BUILD_NUMBER)"
-	@$(ECHO) "    MILESTONE = $(MILESTONE)"
-	@$(ECHO) ""
-        ifeq ($(BUILD_NUMBER), b00)
-	  @$(ECHO) "ERROR: Build number must be defined"
-	  @$(ECHO) "MILESTONE is set to $(MILESTONE)"
-	  @$(ECHO) ""
-	  exit 1
-        endif
-
 #############################################################
 #
 # coredocs
 #
 COREAPI_DOCTITLE = Java$(TRADEMARK) Platform, Standard Edition \
-$(JDK_MINOR_VERSION)<br>API Specification
-COREAPI_WINDOWTITLE = Java Platform SE $(JDK_MINOR_VERSION)
+$(VERSION_SPECIFICATION)<br>API Specification
+COREAPI_WINDOWTITLE = Java Platform SE $(VERSION_SPECIFICATION)
 COREAPI_HEADER = \
-<strong>Java$(TRADEMARK)&nbsp;Platform<br>Standard&nbsp;Ed.&nbsp;$(JDK_MINOR_VERSION)</strong>
+<strong>Java$(TRADEMARK)&nbsp;Platform<br>Standard&nbsp;Ed.&nbsp;$(VERSION_SPECIFICATION)</strong>
 
 # Overview file for core apis
 COREAPI_OVERVIEW = $(JDK_TOPDIR)/src/java.base/share/classes/overview-core.html
@@ -1338,55 +1312,9 @@
 	$(prep-target)
 	$(call PackageFilter,$(JDKNET_PKGS))
 
-#############################################################
-#release version of core packages ########
-
-# The rel-coredocs and rel-docs targets were added by Eric Armstrong. rel-coredocs
-# assumes the kind of large, 32-bit machine used in the javapubs group's docs-release
-# process. It specifies memory settings accordingly to maximize performance.
-#
-# The performance settings, like the sanity check, are most important for the core
-# docs--the platform APIs. Running javadoc on those APIs takes a significant amount
-# of time and memory. Setting the initial heap size as large as possible is important
-# to prevent thrashing as the heap grows. Setting the maximum as large as necessary
-# is also important to keep the job from failing.
-#
-#    -J-Xmx512 sets a maximum of 512, which became necessary in 6.0
-#    -J-Xms256 sets starting size to 256 (default is 8)
-#
-# rel-coredocs also includes a sanity check to help ensure that BUILD_NUMBER and
-# MILESTONE are specified properly when docs are built outside of the normal release
-# engineering process, with the intention of releasing them on the web or in a downloaded
-# docs bundle. (When invoked in release engineering's control build, the values are always
-# set properly. But when the targets are run by themselves, they default to b00 and
-# "internal"--which silently sabotage the result of a build that can take many hours
-# to complete.
-
-# Maximize performance and ensure that build number & milestone are set.
-
-rel-coredocs: sanitycheckcoredocs
-	$(MAKE) coredocs
-
-rel-docs: rel-coredocs $(ALL_OTHER_TARGETS)
-#
-# end of production targets
 
 otherdocs: $(ALL_OTHER_TARGETS)
 
-clean:
-	$(RM) -r $(DOCSDIR) $(DOCSTMPDIR)
-
 #############################################################
-# DEBUG TARGET
-# List the values defined in the makefile hierarchy, to make sure everything
-# is set properly, and to help identify values we can use instead of making new ones.
-# (Most of them come from common/shared/Defs.gmk)
-#
-# Notes:
-# * BUILD_NUMBER defaults to b00 if not set on command line with BUILD_NUMBER=<value>
-# * MILESTONE defaults to internal unless set to beta, rc, or fcs on command line
-#
-
-#############################################################
-.PHONY: all docs coredocs rel-docs otherdocs rel-coredocs \
-    sanitycheckcoredocs $(ALL_OTHER_TARGETS)
+.PHONY: all docs coredocs otherdocs \
+     $(ALL_OTHER_TARGETS)
--- a/make/JrtfsJar.gmk	Wed Jul 05 21:02:33 2017 +0200
+++ b/make/JrtfsJar.gmk	Wed Jul 05 21:04:26 2017 +0200
@@ -35,7 +35,8 @@
   SOURCE_FILES := $(JDK_TOPDIR)/make/data/mainmanifest/manifest.mf, \
   OUTPUT_FILE := $(SUPPORT_OUTPUTDIR)/java-main-manifest.mf, \
   REPLACEMENTS := \
-      @@RELEASE@@ => $(RELEASE) ; \
+      @@VERSION_SPECIFICATION@@ => $(VERSION_SPECIFICATION) ; \
+      @@VERSION_SHORT@@ => $(VERSION_SHORT) ; \
       @@COMPANY_NAME@@ => $(COMPANY_NAME) , \
 ))
 
--- a/make/MacBundles.gmk	Wed Jul 05 21:02:33 2017 +0200
+++ b/make/MacBundles.gmk	Wed Jul 05 21:04:26 2017 +0200
@@ -38,11 +38,11 @@
 
   MACOSX_PLIST_SRC := $(JDK_TOPDIR)/make/data/bundle
 
-    BUNDLE_ID := $(MACOSX_BUNDLE_ID_BASE).$(JDK_MINOR_VERSION)u$(JDK_UPDATE_VERSION)
-  BUNDLE_NAME := $(MACOSX_BUNDLE_NAME_BASE) $(JDK_MINOR_VERSION)
-    BUNDLE_INFO := $(MACOSX_BUNDLE_NAME_BASE) $(JDK_VERSION)
-  BUNDLE_PLATFORM_VERSION := $(JDK_MAJOR_VERSION).$(JDK_MINOR_VERSION)
-  BUNDLE_VERSION := $(JDK_VERSION)
+  BUNDLE_ID := $(MACOSX_BUNDLE_ID_BASE).$(VERSION_SHORT)
+  BUNDLE_NAME := $(MACOSX_BUNDLE_NAME_BASE) $(VERSION_SHORT)
+  BUNDLE_INFO := $(MACOSX_BUNDLE_NAME_BASE) $(VERSION_STRING)
+  BUNDLE_PLATFORM_VERSION := $(VERSION_MAJOR).$(VERSION_MINOR)
+  BUNDLE_VERSION := $(VERSION_NUMBER)
   ifeq ($(COMPANY_NAME), N/A)
     BUNDLE_VENDOR := UNDEFINED
   else
--- a/make/jprt.properties	Wed Jul 05 21:02:33 2017 +0200
+++ b/make/jprt.properties	Wed Jul 05 21:04:26 2017 +0200
@@ -90,10 +90,11 @@
 # Configure args common to all builds
 # Also allows for additional, testset specific configure arguments to be set
 jprt.build.configure.args=						\
-    --with-output-sync=recurse 						\
-    --with-boot-jdk=$ALT_BOOTDIR 					\
-    --with-jobs=$ALT_PARALLEL_COMPILE_JOBS 				\
-    MAKE=$JPRT_MAKE							\
+    --with-output-sync=recurse						\
+    --with-boot-jdk=$ALT_BOOTDIR					\
+    --with-jobs=$ALT_PARALLEL_COMPILE_JOBS				\
+    --with-version-opt=$JPRT_JOB_ID				 	\
+    MAKE=$JPRT_MAKE                                                     \
     ${my.additional.build.configure.args.${jprt.test.set}}		\
     ${my.custom.build.configure.args}
 
--- a/nashorn/.hgtags	Wed Jul 05 21:02:33 2017 +0200
+++ b/nashorn/.hgtags	Wed Jul 05 21:04:26 2017 +0200
@@ -327,3 +327,4 @@
 fee4d2015e24ced4f28f4dcf93076a4fbd03844d jdk9-b91
 34b77a618e98c5da59a760341f43af6aefc56efb jdk9-b92
 e13533f7bb78da49bbd909fdf22e13e0e2538146 jdk9-b93
+328932975c749ba7ae40cd5b63e3a7983b564936 jdk9-b94
--- a/nashorn/make/BuildNashorn.gmk	Wed Jul 05 21:02:33 2017 +0200
+++ b/nashorn/make/BuildNashorn.gmk	Wed Jul 05 21:04:26 2017 +0200
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2010, 2015, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -31,19 +31,12 @@
 include JarArchive.gmk
 include JavaCompilation.gmk
 include SetupJavaCompilers.gmk
+include TextFileProcessing.gmk
 
 JDK_CLASSES := $(call PathList, $(strip $(addprefix $(JDK_OUTPUTDIR)/modules/, \
       java.base java.logging java.scripting)))
 
 NASHORN_JAR := $(IMAGES_OUTPUTDIR)/nashorn.jar
-NASHORN_VERSION := $(JDK_VERSION)
-NASHORN_FULL_VERSION := $(FULL_VERSION)
-
-ifdef MILESTONE
-  ifeq ($(MILESTONE), internal)
-    NASHORN_VERSION = $(FULL_VERSION)
-  endif
-endif
 
 # Need to use source and target 8 for nasgen to work.
 $(eval $(call SetupJavaCompiler,GENERATE_NEWBYTECODE_DEBUG, \
@@ -93,25 +86,23 @@
 	$(TOUCH) $@
 
 # Version file needs to be processed with version numbers
-VERSION_FILE := $(JDK_OUTPUTDIR)/modules/jdk.scripting.nashorn/jdk/nashorn/internal/runtime/resources/version.properties
-VERSION_SRC := $(NASHORN_TOPDIR)/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/resources/version.properties-template
+$(eval $(call SetupTextFileProcessing, BUILD_VERSION_FILE, \
+  SOURCE_FILES := $(NASHORN_TOPDIR)/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/resources/version.properties.template, \
+  OUTPUT_FILE := $(JDK_OUTPUTDIR)/modules/jdk.scripting.nashorn/jdk/nashorn/internal/runtime/resources/version.properties, \
+  REPLACEMENTS := \
+      @@VERSION_STRING@@ => $(VERSION_STRING) ; \
+      @@VERSION_SHORT@@ => $(VERSION_SHORT) , \
+))
 
-# Needs to happen after nasgen run since nasgen run deletes it
-$(VERSION_FILE): $(NASGEN_RUN_FILE)
-$(VERSION_FILE): $(VERSION_SRC)
-	$(ECHO) Creating version.properties
-	$(MKDIR) -p $(@D)
-	$(CAT) $< | $(SED) -e 's/$$(FULL_VERSION)/$(NASHORN_FULL_VERSION)/g' \
-	    -e 's/$$(RELEASE)/$(NASHORN_VERSION)/g' \
-	    -e '/^#.*$$/d' -e '/^$$/d'  > $@
+# Version processing needs to happen after nasgen run since nasgen run deletes it
+$(BUILD_VERSION_FILE): $(NASGEN_RUN_FILE)
 
 
-MANIFEST_ATTRIBUTES := Name: jdk/nashorn/\nImplementation-Title: Oracle Nashorn\nImplementation-Version: $(NASHORN_FULL_VERSION)
+MANIFEST_ATTRIBUTES := Name: jdk/nashorn/\nImplementation-Title: Oracle Nashorn\nImplementation-Version: $(VERSION_SHORT)
 
 # Create nashorn.jar from the final classes dir
-$(eval $(call SetupJarArchive, BUILD_NASHORN_JAR, \
-    DEPENDENCIES := $(NASGEN_RUN_FILE) \
-        $(VERSION_FILE), \
+$(eval $(call SetupJarArchive,BUILD_NASHORN_JAR, \
+    DEPENDENCIES := $(NASGEN_RUN_FILE) $(BUILD_VERSION_FILE), \
     SRCS := $(NASHORN_CLASSES_DIR), \
     SUFFIXES := .class .js .properties Factory, \
     MANIFEST := $(NASHORN_TOPDIR)/src/jdk.scripting.nashorn/share/classes/META-INF/MANIFEST.MF, \
@@ -120,7 +111,7 @@
     JAR := $(NASHORN_JAR), \
 ))
 
-compile: $(NASHORN_RUN_FILE) $(VERSION_FILE)
+compile: $(NASHORN_RUN_FILE) $(BUILD_VERSION_FILE)
 all: $(NASHORN_JAR)
 
 .PHONY: compile all
--- a/nashorn/make/build.xml	Wed Jul 05 21:02:33 2017 +0200
+++ b/nashorn/make/build.xml	Wed Jul 05 21:04:26 2017 +0200
@@ -158,9 +158,9 @@
     <copy file="${nashorn.module.src.dir}/jdk/internal/dynalink/support/messages.properties" todir="${build.classes.dir}/jdk/internal/dynalink/support"/>
     <copy file="${nashorn.module.src.dir}/jdk/nashorn/internal/codegen/anchor.properties" todir="${build.classes.dir}/jdk/nashorn/internal/codegen"/>
 
-    <echo message="full=${nashorn.fullversion}" file="${build.classes.dir}/jdk/nashorn/internal/runtime/resources/version.properties"/>
+    <echo message="version_string=${nashorn.fullversion}" file="${build.classes.dir}/jdk/nashorn/internal/runtime/resources/version.properties"/>
     <echo file="${build.classes.dir}/jdk/nashorn/internal/runtime/resources/version.properties" append="true">${line.separator}</echo>
-    <echo message="release=${nashorn.version}" file="${build.classes.dir}/jdk/nashorn/internal/runtime/resources/version.properties" append="true"/>
+    <echo message="version_short=${nashorn.version}" file="${build.classes.dir}/jdk/nashorn/internal/runtime/resources/version.properties" append="true"/>
   </target>
 
   <target name="jar" depends="compile, run-nasgen, generate-cc-template" description="Creates nashorn.jar" unless="compile.suppress.jar">
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/Version.java	Wed Jul 05 21:02:33 2017 +0200
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/Version.java	Wed Jul 05 21:04:26 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -41,7 +41,7 @@
      * @return version string
      */
     public static String version() {
-        return version("release");  // mm.nn.oo[-milestone]
+        return version("version_short");  // E.g. "9-internal" or "9.1.2"
     }
 
     /**
@@ -49,7 +49,7 @@
      * @return full version string
      */
     public static String fullVersion() {
-        return version("full"); // mm.mm.oo[-milestone]-build
+        return version("version_string"); // E.g. "9.1.2.3-ea-4+nashorn-testing"
     }
 
     private static final String   VERSION_RB_NAME = "jdk.nashorn.internal.runtime.resources.version";
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/resources/version.properties-template	Wed Jul 05 21:02:33 2017 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
-#
-# Copyright (c) 2010, 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.
-#
-
-full=$(FULL_VERSION)
-release=$(RELEASE)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/resources/version.properties.template	Wed Jul 05 21:04:26 2017 +0200
@@ -0,0 +1,27 @@
+#
+# Copyright (c) 2010, 2015, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+version_short=@@VERSION_SHORT@@
+version_string=@@VERSION_STRING@@