Merge jdk7-b93
authorduke
Wed, 05 Jul 2017 17:11:37 +0200
changeset 5394 b5dab6a313fd
parent 5393 bc047eac43d8 (diff)
parent 5372 48a6707a5805 (current diff)
child 5395 5ac71d831b73
child 5396 164042c4f8e9
child 5398 cb0423be1a9c
child 5400 aa7a3be87799
child 5429 40f5c698a65d
child 5439 d4101ea993e5
child 5442 773ba5bee8fa
child 5475 b1731bdff8c4
child 5478 377c6d2783ab
child 5484 5cb1d1d6eaef
child 5486 5693469198cd
child 5488 9c98e8a8dbb4
child 5493 d9799ef9198d
child 5737 8a2f4c03ab6f
Merge
--- a/.hgtags-top-repo	Wed Jul 05 17:11:12 2017 +0200
+++ b/.hgtags-top-repo	Wed Jul 05 17:11:37 2017 +0200
@@ -66,3 +66,4 @@
 7f1ba4459972bf84b8201dc1cc4f62b1fe1c74f4 jdk7-b89
 425ba3efabbfe0b188105c10aaf7c3c8fa8d1a38 jdk7-b90
 97d8b6c659c29c8493a8b2b72c2796a021a8cf79 jdk7-b91
+5f5c33d417f3a14706b09a4a95e65fa7b6fa54d6 jdk7-b92
--- a/README-builds.html	Wed Jul 05 17:11:12 2017 +0200
+++ b/README-builds.html	Wed Jul 05 17:11:37 2017 +0200
@@ -183,13 +183,13 @@
                     <tr>
                         <td>Windows X86 (32-bit)</td>
                         <td>Windows XP</td>
-                        <td>Microsoft Visual Studio C++ 2008 Standard Edition</td>
+                        <td>Microsoft Visual Studio C++ 2010 Professional Edition</td>
                         <td>JDK 6u14 FCS </td>
                     </tr>
                     <tr>
                         <td>Windows X64 (64-bit)</td>
                         <td>Windows Server 2003 - Enterprise x64 Edition</td>
-                        <td>Microsoft Platform SDK - April 2005</td>
+                        <td>Microsoft Visual Studio C++ 2010 Professional Edition</td>
                         <td>JDK 6u14 FCS </td>
                     </tr>
                 </tbody>
@@ -789,11 +789,7 @@
                 </li>
                 <li>
                     Install the
-                    <a href="#msvc">Microsoft Visual Studio Compilers</a> (32-bit).
-                </li>
-                <li>
-                    Install the
-                    <a href="#mssdk">Microsoft Platform SDK</a>.
+                    <a href="#msvc">Microsoft Visual Studio Compilers</a>).
                 </li>
                 <li>
                     Setup all environment variables for compilers 
@@ -964,13 +960,28 @@
                 </blockquote>
                 <strong><a name="msvc">Windows i586: Microsoft Visual Studio Compilers</a></strong>
                 <blockquote>
+<p>
+<b>BEGIN WARNING</b>: At this time (Spring/Summer 2010) JDK 7 is starting a transition to
+use the newest VS2010 Microsoft compilers. These build instructions are updated
+to show where we are going. We have a QA process to go through before
+official builds actually use VS2010. So for now, official builds are
+still using VS2003. No other compilers are known to build the entire JDK,
+including non-open portions.
+So for now you should be able to build with either VS2003 or VS2010.
+We do not guarantee that VS2008 will work, although there is sufficient
+makefile support to make at least basic JDK builds plausible.
+Visual Studio 2010 Express compilers are likely to be able to build all the
+"open" sources, with only small adjustments, but this has yet to be made
+to work. Also we have not yet seen the 7.1 Windows SDK with the 64 bit
+compilers. <b>END WARNING.</b>
+<p>
                     The 32-bit OpenJDK Windows build
                     requires 
-                    Microsoft Visual Studio C++ 2008 (VS2008) Standard
+                    Microsoft Visual Studio C++ 2010 (VS2010) Professional
                     Edition compiler. 
                     The compiler and other tools are expected to reside
                     in the location defined by the variable 
-                    <tt>VS90COMNTOOLS</tt> which
+                    <tt>VS100COMNTOOLS</tt> which
                     is set by the Microsoft Visual Studio installer.
                     <p> 
                     Once the compiler is installed, 
@@ -982,36 +993,21 @@
                     prior to building the 
                     OpenJDK.
                     The above environment variables <b>MUST</b> be set.
+                    This compiler also contains the Windows SDK v 7.0a,
+                    which is an update to the Windows 7 SDK.
                     <p>
                     <b>WARNING:</b> Make sure you check out the
                     <a href="#cygwin">CYGWIN link.exe WARNING</a>.
                     The path <tt>/usr/bin</tt> must be after the path to the
                     Visual Studio product.
                 </blockquote>
-                <strong><a name="mssdk">Windows: Microsoft Platform SDK</a></strong>
+                <strong><a name="mssdk">Windows x64: Microsoft Visual Studio Compilers</a></strong>
                 <blockquote>
-                    On <b>X64</b>, the Microsoft Platform Software
-                    Development Kit (SDK), April 2005 Edition compiler,
-                    is required for building the OpenJDK
-                    because it contains the C/C++ compiler. 
-                    You will need to minimally install the Core SDK and
-                    the MDAC SDK features of this compiler.
-                    <p>
-                    Once the Platform SDK is installed,
-                    it is recommended that you run <tt>SetEnv.Cmd /X64</tt> 
-                    to set the compiler environment variables
-                    <tt>MSSDK</tt>, 
-                    <tt>MSTOOLS</tt>,
-                    <tt>INCLUDE</tt>,
-                    <tt>LIB</tt>, and
-                    <tt>PATH</tt> 
-                    prior to building the 
-                    OpenJDK.
-                    The above environment variables <b>MUST</b> be set.
-                    <p>
-                    This Platform SDK compiler is only used on X64 builds
-                    but other parts of the Platform SDK may be used 
-                    for the X86 builds.
+                    On <b>X64</b>, the set up is much the same in VS2010
+                    except that you run <tt>amd64\VCVARS64.BAT</tt>
+                    to set the compiler environment variables.
+                    Previously 64 builds had used the 64 bit compiler in
+                    an unbundled Windows SDK but this is no longer necessary.
                 </blockquote>
             </blockquote>
             <!-- ------------------------------------------------------ --> 
@@ -1314,40 +1310,16 @@
                 but it's normally found via the DirectX environment variable
                 <tt>DXSDK_DIR</tt>.
             </blockquote>
-            <strong><a name="msvcrt"><tt>MSVCRT.DLL</tt></a></strong>
+            <strong><a name="msvcrt"><tt>MSVCR100.DLL</tt></a></strong>
             <blockquote> 
-                <strong>i586 only:</strong>
-                The OpenJDK 32-bit build requires access to a redistributable
-                <tt>MSVCRT.DLL</tt>.
-                If the <tt>MSVCRT.DLL</tt> is not installed in 
-                the system32 directory set the 
+                The OpenJDK build requires access to a redistributable
+                <tt>MSVCR100.DLL</tt>.
+                This is usually picked up automatically from the redist
+                directories of Visual Studio 2010.
+                If this cannot be found set the 
                 <a href="#ALT_MSVCRT_DLL_PATH"><tt>ALT_MSVCRT_DLL_PATH</tt></a>
                 variable to the location of this file.
                 <p> 
-                <strong>X64 only:</strong>
-                The OpenJDK 64-bit build requires access to a redistributable
-                <tt>MSVCRT.DLL</tt>, which is
-                usually supplied by the
-                <a href="#mssdk">Platform SDK</a>.
-                If it is not available from the Platform SDK,
-                set the 
-                <a href="#ALT_MSVCRT_DLL_PATH"><tt>ALT_MSVCRT_DLL_PATH</tt></a>
-                variable to the location of this file.
-            </blockquote>
-            <strong><tt><a name="msvcr90">MSVCR90.DLL</a></tt></strong>
-            <blockquote>
-                <strong>i586 only:</strong>
-                The 
-                OpenJDK
-                build requires access to a redistributable
-                <tt>MSVCR90.DLL</tt> which should be
-                supplied by the
-                <a href="#msvc">Visual Studio product</a>.
-                If the <tt>MSVCR90.DLL</tt> is not available from the
-                Visual Studio product
-                set the 
-                <a href="#ALT_MSVCR90_DLL_PATH"><tt>ALT_MSVCR90_DLL_PATH</tt></a>
-                variable to the location of this file.
             </blockquote>
         </blockquote>
         <!-- ------------------------------------------------------ -->
@@ -1623,11 +1595,10 @@
                             The location of the 
                             <a href="#msvcrt"><tt>MSVCRT.DLL</tt></a>. 
                         </dd>
-                        <dt><tt><a name="ALT_MSVCR90_DLL_PATH">ALT_MSVCR90_DLL_PATH</a></tt> </dt>
+                        <dt><tt><a name="ALT_MSVCRNN_DLL_PATH">ALT_MSVCRNN_DLL_PATH</a></tt> </dt>
                         <dd>
-                            <strong>i586 only:</strong>
                             The location of the 
-                            <a href="#msvcr90"><tt>MSVCR90.DLL</tt></a>. 
+                            <a href="#msvcrt"><tt>MSVCR100.DLL</tt></a>. 
                         </dd>
                     </dl>
                 </dd>
--- a/corba/.hgtags	Wed Jul 05 17:11:12 2017 +0200
+++ b/corba/.hgtags	Wed Jul 05 17:11:37 2017 +0200
@@ -66,3 +66,4 @@
 bb4424c5e778b842c064a8b1aa902b35f4397654 jdk7-b89
 56ce07b0eb47b93a98a72adef0f21e602c460623 jdk7-b90
 bcd2fc089227559ac5be927923609fac29f067fa jdk7-b91
+930582f667a13391cd0b3e41e8cb760f55e3a5c0 jdk7-b92
--- a/corba/make/common/Defs-windows.gmk	Wed Jul 05 17:11:12 2017 +0200
+++ b/corba/make/common/Defs-windows.gmk	Wed Jul 05 17:11:37 2017 +0200
@@ -77,6 +77,11 @@
     MSVCPNN_DLL = msvcp90.dll
     MS_RUNTIME_LIBRARIES += $(MSVCRNN_DLL)
   endif
+  ifeq ($(COMPILER_VERSION), VS2010)
+    MSVCRNN_DLL = msvcr100.dll
+    MSVCPNN_DLL = msvcp100.dll
+    MS_RUNTIME_LIBRARIES += $(MSVCRNN_DLL)
+  endif
 endif
 
 # C Compiler flag definitions
@@ -175,6 +180,20 @@
       CC_LOWER_OPT   = -O1
     endif
   endif
+  ifeq ($(COMPILER_VERSION), VS2010)
+    # Automatic precompiled header option to use (if COMPILE_APPROACH=batch)
+    AUTOMATIC_PCH_OPTION =
+    GX_OPTION = -EHsc
+    ifeq ($(ARCH_DATA_MODEL), 32)
+      CC_HIGHEST_OPT = -O2
+      CC_HIGHER_OPT  = -O1
+      CC_LOWER_OPT   = -O1
+    else
+      CC_HIGHEST_OPT = -O2
+      CC_HIGHER_OPT  = -O1
+      CC_LOWER_OPT   = -O1
+    endif
+  endif
   CC_NO_OPT      = -Od
 else # CC_VERSION
   # GCC not supported, but left for historical reference...
--- a/corba/make/common/shared/Compiler-msvc.gmk	Wed Jul 05 17:11:12 2017 +0200
+++ b/corba/make/common/shared/Compiler-msvc.gmk	Wed Jul 05 17:11:37 2017 +0200
@@ -97,6 +97,19 @@
 	COMPILER_PATH := $(error COMPILER_PATH cannot be empty here)
       endif
     endif
+    ifeq ($(CC_MAJORVER), 16)
+      # This should be: CC_VER=16.00.30319.01 LINK_VER=10.00.30319.01
+      REQUIRED_CC_VER = 16.00.30319.01
+      REQUIRED_LINK_VER = 10.00.30319.01
+      COMPILER_NAME=Visual Studio 10
+      COMPILER_VERSION=VS2010
+      #rebase and midl moved out of Visual Studio into the SDK:
+      REBASE     = $(MSDEVTOOLS_PATH)/rebase
+      MTL        = $(MSDEVTOOLS_PATH)/midl.exe
+      ifndef COMPILER_PATH
+	COMPILER_PATH := $(error COMPILER_PATH cannot be empty here)
+      endif
+    endif
   else
     # else ARCH_DATA_MODEL is 64
     ifndef LINK_VER
@@ -144,11 +157,21 @@
       COMPILER_NAME=Windows SDK 6.1 Visual Studio 9
       COMPILER_VERSION=VS2008
       RC = $(MSSDK61)/bin/x64/rc
-      REBASE = $(MSSDK61/bin/x64/rebase
+      REBASE = $(MSSDK61)/bin/x64/rebase
     else
-      # This will cause problems if ALT_COMPILER_PATH is defined to ""
-      # which is a directive to use the PATH.
-      REBASE         = $(COMPILER_PATH)../REBASE
+      ifeq ($(CC_MAJORVER), 16)
+        # This should be: CC_VER=16.00.30319.01 LINK_VER=9.00.30319.01
+        REQUIRED_CC_VER = 16.00.30319.01
+        REQUIRED_LINK_VER = 10.00.30319.01
+        COMPILER_NAME=Microsoft Visual Studio 10
+        COMPILER_VERSION=VS2010
+        RC = $(MSSDK7)/bin/x64/rc
+        REBASE = $(MSSDK7)/bin/x64/rebase
+      else
+        # This will cause problems if ALT_COMPILER_PATH is defined to ""
+        # which is a directive to use the PATH.
+        REBASE         = $(COMPILER_PATH)../REBASE
+      endif
     endif
     ifndef COMPILER_PATH
       COMPILER_PATH := $(error COMPILER_PATH cannot be empty here)
--- a/corba/make/common/shared/Defs-windows.gmk	Wed Jul 05 17:11:12 2017 +0200
+++ b/corba/make/common/shared/Defs-windows.gmk	Wed Jul 05 17:11:37 2017 +0200
@@ -222,6 +222,17 @@
     ifneq ($(subst MSDev98,OLDOLDOLD,$(SHORTMSVCDIR)),$(SHORTMSVCDIR))
       SHORTMSVCDIR     :=
     endif
+    # If we still don't have it, look for VS100COMNTOOLS, setup by installer?
+    ifeq ($(SHORTMSVCDIR),)
+      ifdef VS100COMNTOOLS  # /Common/Tools directory, use ../../Vc
+        xVS100COMNTOOLS :="$(subst \,/,$(VS100COMNTOOLS))"
+        _vs100tools     :=$(call FullPath,$(xVS100COMNTOOLS))
+      endif
+      ifneq ($(_vs100tools),)
+        SHORTMSVCDIR   :=$(_vs100tools)/../../Vc
+      endif
+    endif
+    export SHORTMSVCDIR
     # If we still don't have it, look for VS71COMNTOOLS, setup by installer?
     ifeq ($(SHORTMSVCDIR),)
       ifdef VS71COMNTOOLS  # /Common/Tools directory, use ../../Vc7
@@ -272,24 +283,35 @@
 # Compilers for 64bit are from SDK
 ifeq ($(ARCH_DATA_MODEL), 64)
   ifndef SHORTCOMPILERBIN
-    xMSSDK61 :="C:/Program Files/Microsoft SDKs/Windows/v6.1/"
-    MSSDK61 :=$(call FullPath,$(xMSSDK61))
-    xVS2008 :="C:/Program Files (x86)/Microsoft Visual Studio 9.0/"
-    _vs2008 :=$(call FullPath,$(xVS2008))
-    ifneq ($(_vs2008),)
-      ifeq ($(ARCH), ia64)
-        SHORTCOMPILERBIN :=$(_vs2008)/VC/Bin/x86_ia64
-      endif
-      ifeq ($(ARCH), amd64)
-        SHORTCOMPILERBIN :=$(_vs2008)/VC/Bin/$(ARCH)
-      endif
+    ifdef VS100COMNTOOLS  # /Common7/Tools directory, use ../../Vc
+      xVS100COMNTOOLS :="$(subst \,/,$(VS100COMNTOOLS))"
+      _vs100tools     :=$(call FullPath,$(xVS100COMNTOOLS))
+    endif
+    ifneq ($(_vs100tools),)
+      SHORTCOMPILERBIN :=$(_vs100tools)/../../Vc/bin/amd64
+      xMSSDK70      :="C:/Program Files (x86)/Microsoft SDKs/Windows/v7.0A/"
+      MSSDK7        :=$(call FullPath,$(xMSSDK70))
+      export MSSDK7
     else
-      ifneq ($(SHORTPSDK),)
+      xMSSDK61 :="C:/Program Files/Microsoft SDKs/Windows/v6.1/"
+      MSSDK61 :=$(call FullPath,$(xMSSDK61))
+      xVS2008 :="C:/Program Files (x86)/Microsoft Visual Studio 9.0/"
+      _vs2008 :=$(call FullPath,$(xVS2008))
+      ifneq ($(_vs2008),)
         ifeq ($(ARCH), ia64)
-          SHORTCOMPILERBIN :=$(SHORTPSDK)/Bin/Win64
+          SHORTCOMPILERBIN :=$(_vs2008)/VC/Bin/x86_ia64
         endif
         ifeq ($(ARCH), amd64)
-          SHORTCOMPILERBIN :=$(SHORTPSDK)/Bin/Win64/x86/$(ARCH)
+          SHORTCOMPILERBIN :=$(_vs2008)/VC/Bin/$(ARCH)
+        endif
+      else
+        ifneq ($(SHORTPSDK),)
+          ifeq ($(ARCH), ia64)
+            SHORTCOMPILERBIN :=$(SHORTPSDK)/Bin/Win64
+          endif
+          ifeq ($(ARCH), amd64)
+            SHORTCOMPILERBIN :=$(SHORTPSDK)/Bin/Win64/x86/$(ARCH)
+          endif
         endif
       endif
     endif
--- a/corba/make/common/shared/Platform.gmk	Wed Jul 05 17:11:12 2017 +0200
+++ b/corba/make/common/shared/Platform.gmk	Wed Jul 05 17:11:37 2017 +0200
@@ -333,7 +333,11 @@
   endif
   ARCH_FAMILY = $(ARCH)
   # Where is unwanted output to be delivered?
-  DEV_NULL = NUL
+  ifeq ($(USING_CYGWIN),true)
+    DEV_NULL = /dev/null
+  else
+    DEV_NULL = NUL
+  endif
   export DEV_NULL
   # Classpath separator
   CLASSPATH_SEPARATOR = ;
--- a/hotspot/.hgtags	Wed Jul 05 17:11:12 2017 +0200
+++ b/hotspot/.hgtags	Wed Jul 05 17:11:37 2017 +0200
@@ -92,3 +92,4 @@
 605c9707a766ff518cd841fc04f9bb4b36a3a30b jdk7-b90
 e0a1a502e402dbe7bf2d9102b4084a7e79a99a9b jdk7-b91
 25f53b53aaa3eb8b2d5391a1e8de9a76ae1dd8a2 hs18-b03
+3221d1887d30341bedfdac1dbf365ea41beff20f jdk7-b92
--- a/hotspot/make/windows/build_vm_def.sh	Wed Jul 05 17:11:12 2017 +0200
+++ b/hotspot/make/windows/build_vm_def.sh	Wed Jul 05 17:11:37 2017 +0200
@@ -58,11 +58,11 @@
 fi
 
 if [ "x$LINK_VER" != "x800" -a  "x$LINK_VER" != "x900" ]; then
-$DUMPBIN /symbols *.obj | "$GREP" "??_7.*@@6B@" | "$AWK" '{print $7}' | "$SORT" | "$UNIQ" > vm2.def
+$DUMPBIN /symbols *.obj | "$GREP" "??_7.*@@6B@" | "$GREP" -v "type_info" | "$AWK" '{print $7}' | "$SORT" | "$UNIQ" > vm2.def
 else
 # Can't use pipes when calling cl.exe or link.exe from IDE. Using transit file vm3.def
 $DUMPBIN /OUT:vm3.def /symbols *.obj 
-"$CAT" vm3.def | "$GREP" "??_7.*@@6B@" | "$AWK" '{print $7}' | "$SORT" | "$UNIQ" > vm2.def
+"$CAT" vm3.def | "$GREP" "??_7.*@@6B@" | "$GREP" -v "type_info" | "$AWK" '{print $7}' | "$SORT" | "$UNIQ" > vm2.def
 "$RM" -f vm3.def
 fi
 
--- a/hotspot/make/windows/makefiles/compile.make	Wed Jul 05 17:11:12 2017 +0200
+++ b/hotspot/make/windows/makefiles/compile.make	Wed Jul 05 17:11:37 2017 +0200
@@ -92,6 +92,7 @@
 #      1399 is our fake number for the VS2005 compiler that really isn't 1400
 #      1400 is for VS2005
 #      1500 is for VS2008
+#      1600 is for VS2010
 #    Do not confuse this MSC_VER with the predefined macro _MSC_VER that the
 #    compiler provides, when MSC_VER==1399, _MSC_VER will be 1400.
 #    Normally they are the same, but a pre-release of the VS2005 compilers
@@ -121,6 +122,9 @@
 !if "$(MSC_VER)" == "1500"
 COMPILER_NAME=VS2008
 !endif
+!if "$(MSC_VER)" == "1600"
+COMPILER_NAME=VS2010
+!endif
 !endif
 
 # Add what version of the compiler we think this is to the compile line
@@ -183,6 +187,17 @@
 MT=mt.exe
 !endif
 
+!if "$(COMPILER_NAME)" == "VS2010"
+PRODUCT_OPT_OPTION   = /O2 /Oy-
+FASTDEBUG_OPT_OPTION = /O2 /Oy-
+DEBUG_OPT_OPTION     = /Od
+GX_OPTION = /EHsc
+LINK_FLAGS = /manifest $(LINK_FLAGS)
+# Manifest Tool - used in VS2005 and later to adjust manifests stored
+# as resources inside build artifacts.
+MT=mt.exe
+!endif
+
 # Compile for space above time.
 !if "$(Variant)" == "kernel"
 PRODUCT_OPT_OPTION   = /O1 /Oy-
--- a/hotspot/make/windows/makefiles/defs.make	Wed Jul 05 17:11:12 2017 +0200
+++ b/hotspot/make/windows/makefiles/defs.make	Wed Jul 05 17:11:37 2017 +0200
@@ -55,6 +55,8 @@
   MAKE_ARGS += Platform_arch_model=ia64
 endif
 
+# http://support.microsoft.com/kb/888731 : this can be either
+# AMD64 for AMD, or EM64T for Intel chips.
 ifneq ($(shell $(ECHO) $(PROCESSOR_IDENTIFIER) | $(GREP) AMD64),)
   ARCH_DATA_MODEL=64
   PLATFORM=windows-amd64
@@ -67,6 +69,19 @@
   MAKE_ARGS += Platform_arch_model=x86_64
 endif
 
+# NB later OS versions than 2003 may report "Intel64"
+ifneq ($(shell $(ECHO) $(PROCESSOR_IDENTIFIER) | $(GREP) "EM64T\|Intel64"),)
+  ARCH_DATA_MODEL=64
+  PLATFORM=windows-amd64
+  VM_PLATFORM=windows_amd64
+  HS_ARCH=x86
+  MAKE_ARGS += LP64=1
+  MAKE_ARGS += ARCH=x86
+  MAKE_ARGS += BUILDARCH=amd64
+  MAKE_ARGS += Platform_arch=x86
+  MAKE_ARGS += Platform_arch_model=x86_64
+endif
+
 JDK_INCLUDE_SUBDIR=win32
 
 # HOTSPOT_RELEASE_VERSION and HOTSPOT_BUILD_VERSION are defined
--- a/hotspot/make/windows/makefiles/sanity.make	Wed Jul 05 17:11:12 2017 +0200
+++ b/hotspot/make/windows/makefiles/sanity.make	Wed Jul 05 17:11:37 2017 +0200
@@ -27,9 +27,9 @@
 all: checkCL checkLink
 
 checkCL:
-	@ if "$(MSC_VER)" NEQ "1310" if "$(MSC_VER)" NEQ "1399" if "$(MSC_VER)" NEQ "1400" if "$(MSC_VER)" NEQ "1500" \
+	@ if "$(MSC_VER)" NEQ "1310" if "$(MSC_VER)" NEQ "1399" if "$(MSC_VER)" NEQ "1400" if "$(MSC_VER)" NEQ "1500" if "$(MSC_VER)" NEQ "1600" \
 	echo *** WARNING *** unrecognized cl.exe version $(MSC_VER) ($(RAW_MSC_VER)).  Use FORCE_MSC_VER to override automatic detection.
 
 checkLink:
-	@ if "$(LINK_VER)" NEQ "710" if "$(LINK_VER)" NEQ "800" if "$(LINK_VER)" NEQ "900" \
+	@ if "$(LINK_VER)" NEQ "710" if "$(LINK_VER)" NEQ "800" if "$(LINK_VER)" NEQ "900" if "$(LINK_VER)" NEQ "1000" \
 	echo *** WARNING *** unrecognized link.exe version $(LINK_VER) ($(RAW_LINK_VER)).  Use FORCE_LINK_VER to override automatic detection.
--- a/hotspot/src/share/vm/gc_implementation/g1/heapRegion.cpp	Wed Jul 05 17:11:12 2017 +0200
+++ b/hotspot/src/share/vm/gc_implementation/g1/heapRegion.cpp	Wed Jul 05 17:11:37 2017 +0200
@@ -290,7 +290,7 @@
   // Recalculate the region size to make sure it's a power of
   // 2. This means that region_size is the largest power of 2 that's
   // <= what we've calculated so far.
-  region_size = 1 << region_size_log;
+  region_size = ((uintx)1 << region_size_log);
 
   // Now make sure that we don't go over or under our limits.
   if (region_size < MIN_REGION_SIZE) {
--- a/hotspot/src/share/vm/runtime/sharedRuntimeTrig.cpp	Wed Jul 05 17:11:12 2017 +0200
+++ b/hotspot/src/share/vm/runtime/sharedRuntimeTrig.cpp	Wed Jul 05 17:11:37 2017 +0200
@@ -41,6 +41,26 @@
 # pragma optimize ( "", off )
 #endif
 
+/* The above workaround now causes more problems with the latest MS compiler.
+ * Visual Studio 2010's /GS option tries to guard against buffer overruns.
+ * /GS is on by default if you specify optimizations, which we do globally
+ * via /W3 /O2. However the above selective turning off of optimizations means
+ * that /GS issues a warning "4748". And since we treat warnings as errors (/WX)
+ * then the compilation fails. There are several possible solutions
+ * (1) Remove that pragma above as obsolete with VS2010 - requires testing.
+ * (2) Stop treating warnings as errors - would be a backward step
+ * (3) Disable /GS - may help performance but you lose the security checks
+ * (4) Disable the warning with "#pragma warning( disable : 4748 )"
+ * (5) Disable planting the code with  __declspec(safebuffers)
+ * I've opted for (5) although we should investigate the local performance
+ * benefits of (1) and global performance benefit of (3).
+ */
+#if defined(WIN32) && (defined(_MSC_VER) && (_MSC_VER >= 1600))
+#define SAFEBUF __declspec(safebuffers)
+#else
+#define SAFEBUF
+#endif
+
 #include <math.h>
 
 // VM_LITTLE_ENDIAN is #defined appropriately in the Makefiles
@@ -235,7 +255,7 @@
 two24B  = 1.67772160000000000000e+07, /* 0x41700000, 0x00000000 */
 twon24  = 5.96046447753906250000e-08; /* 0x3E700000, 0x00000000 */
 
-static int __kernel_rem_pio2(double *x, double *y, int e0, int nx, int prec, const int *ipio2) {
+static SAFEBUF int __kernel_rem_pio2(double *x, double *y, int e0, int nx, int prec, const int *ipio2) {
   int jz,jx,jv,jp,jk,carry,n,iq[20],i,j,k,m,q0,ih;
   double z,fw,f[20],fq[20],q[20];
 
@@ -451,7 +471,7 @@
 pio2_3  =  2.02226624871116645580e-21, /* 0x3BA3198A, 0x2E000000 */
 pio2_3t =  8.47842766036889956997e-32; /* 0x397B839A, 0x252049C1 */
 
-static int __ieee754_rem_pio2(double x, double *y) {
+static SAFEBUF int __ieee754_rem_pio2(double x, double *y) {
   double z,w,t,r,fn;
   double tx[3];
   int e0,i,j,nx,n,ix,hx,i0;
--- a/jaxp/.hgtags	Wed Jul 05 17:11:12 2017 +0200
+++ b/jaxp/.hgtags	Wed Jul 05 17:11:37 2017 +0200
@@ -66,3 +66,4 @@
 d2818fd2b036f3b3154a9a7de41afcf4ac679c1b jdk7-b89
 c5d932ee326d6f7fd4634b11c7185ea82d184df2 jdk7-b90
 b89b2c3044a298d542f84a2e9d957202b7d8cdb9 jdk7-b91
+e6a40e4bb10499fb6ee9db71ab5654e5a17ab75b jdk7-b92
--- a/jaxws/.hgtags	Wed Jul 05 17:11:12 2017 +0200
+++ b/jaxws/.hgtags	Wed Jul 05 17:11:37 2017 +0200
@@ -66,3 +66,4 @@
 bf3675aa7f20fc6f241ce95760005aef2a30ff41 jdk7-b89
 ead7c4566a0017bcb44b468b3ac03b60dc5333ce jdk7-b90
 cf4686bf35abd1e573f09fa43cbec66403160ae9 jdk7-b91
+df7c033f6a11c0973ab0e74701b1248aee9b659f jdk7-b92
--- a/jdk/.hgtags	Wed Jul 05 17:11:12 2017 +0200
+++ b/jdk/.hgtags	Wed Jul 05 17:11:37 2017 +0200
@@ -66,3 +66,4 @@
 4a6abb7e224cc8d9a583c23c5782e4668739a119 jdk7-b89
 7f90d0b9dbb7ab4c60d0b0233e4e77fb4fac597c jdk7-b90
 08a31cab971fcad4695e913d0f3be7bde3a90747 jdk7-b91
+f2dce7210cc00453c23e53edeec7156f112ca382 jdk7-b92
--- a/jdk/make/com/sun/java/pack/Makefile	Wed Jul 05 17:11:12 2017 +0200
+++ b/jdk/make/com/sun/java/pack/Makefile	Wed Jul 05 17:11:37 2017 +0200
@@ -152,7 +152,7 @@
 	$(prep-target)
 	$(LINKER)  $(LDDFLAGS) $(UNPACK_EXE_FILES_o) $(RES) $(LIBCXX) $(LDOUTPUT)$(TEMPDIR)/unpack200$(EXE_SUFFIX)
 ifdef MT
-	$(MT) /manifest $(TEMPDIR)/unpack200$(EXE_SUFFIX).manifest /outputresource:$(TEMPDIR)/unpack200$(EXE_SUFFIX);#1
+	$(MT) /manifest $(OBJDIR)/unpack200$(EXE_SUFFIX).manifest /outputresource:$(TEMPDIR)/unpack200$(EXE_SUFFIX);#1
 endif
 	$(CP) $(TEMPDIR)/unpack200$(EXE_SUFFIX) $(UNPACK_EXE)
 	$(install-module-file)
--- a/jdk/make/common/Defs-windows.gmk	Wed Jul 05 17:11:12 2017 +0200
+++ b/jdk/make/common/Defs-windows.gmk	Wed Jul 05 17:11:37 2017 +0200
@@ -86,6 +86,11 @@
     MSVCPNN_DLL = msvcp90.dll
     MS_RUNTIME_LIBRARIES += $(MSVCRNN_DLL)
   endif
+  ifeq ($(COMPILER_VERSION), VS2010)
+    MSVCRNN_DLL = msvcr100.dll
+    MSVCPNN_DLL = msvcp100.dll
+    MS_RUNTIME_LIBRARIES += $(MSVCRNN_DLL)
+  endif
 endif
 
 ifeq ($(ARCH_DATA_MODEL), 64)
@@ -94,6 +99,11 @@
     MSVCPNN_DLL = msvcp90.dll
     MS_RUNTIME_LIBRARIES += $(MSVCRNN_DLL)
   endif
+  ifeq ($(COMPILER_VERSION), VS2010)
+    MSVCRNN_DLL = msvcr100.dll
+    MSVCPNN_DLL = msvcp100.dll
+    MS_RUNTIME_LIBRARIES += $(MSVCRNN_DLL)
+  endif
 endif
 
 EXTRA_LFLAGS += /LIBPATH:$(DXSDK_LIB_PATH)
@@ -155,6 +165,7 @@
     # Automatic precompiled header option to use (if COMPILE_APPROACH=batch)
     AUTOMATIC_PCH_OPTION =
     GX_OPTION = -GX
+    GZ_OPTION = -GZ
     ifeq ($(ARCH_DATA_MODEL), 32)
       CC_OPT/HIGHEST = -Ox -Gy -Os -GB
       CC_OPT/HIGHER  = -Ox -Gy -Os -GB
@@ -171,6 +182,7 @@
     AUTOMATIC_PCH_OPTION = -YX
     # Also known as VC7 compiler
     GX_OPTION = -GX
+    GZ_OPTION = -GZ
     ifeq ($(ARCH_DATA_MODEL), 32)
       # Lowered opt level to try and reduce footprint, dll size especially.
       #     Was: CC_OPT/HIGHEST = -O2 -G6
@@ -190,6 +202,7 @@
     AUTOMATIC_PCH_OPTION =
     # VS2005 compiler, only with Platform SDK right now?
     GX_OPTION = -EHsc
+    GZ_OPTION = -RTC1
     ifeq ($(ARCH_DATA_MODEL), 32)
       CC_OPT/HIGHEST = -O2
       CC_OPT/HIGHER  = -O1
@@ -204,6 +217,23 @@
     # Automatic precompiled header option to use (if COMPILE_APPROACH=batch)
     AUTOMATIC_PCH_OPTION =
     GX_OPTION = -EHsc
+    GZ_OPTION = -RTC1
+    ifeq ($(ARCH_DATA_MODEL), 32)
+      CC_OPT/HIGHEST = -O2
+      CC_OPT/HIGHER  = -O1
+      CC_OPT/LOWER   = -O1
+    else
+      CC_OPT/HIGHEST = -O2
+      CC_OPT/HIGHER  = -O1
+      CC_OPT/LOWER   = -O1
+    endif
+  endif
+
+  ifeq ($(COMPILER_VERSION), VS2010)
+    # Automatic precompiled header option to use (if COMPILE_APPROACH=batch)
+    AUTOMATIC_PCH_OPTION =
+    GX_OPTION = -EHsc
+    GZ_OPTION = -RTC1
     ifeq ($(ARCH_DATA_MODEL), 32)
       CC_OPT/HIGHEST = -O2
       CC_OPT/HIGHER  = -O1
@@ -282,6 +312,13 @@
   CFLAGS_OPT      = $(CC_OPT)
   CFLAGS_DBG      = -Od $(MS_RUNTIME_DEBUG_OPTION)
 
+  # REMIND: I don't see where CFLAGS_VS2005 is used. I suspect its
+  # pulled in as a combined "CFLAGS_$(COMPILER_VERSION)" string
+  # but the lack of this isn't causing any apparent build problems
+  # with VS 2010 but it could be causing compiler warnings.
+  # For now, I  will add it for all cases :
+  CFLAGS_VS2010 += -Zc:wchar_t-
+  #
   # Starting from VS2005 the wchar_t is handled as a built-in C/C++ data type
   # by default. However, we expect the wchar_t to be a typedef to the
   # unsigned short data type. The -Zc:wchar_t- option restores the old
@@ -317,6 +354,7 @@
 
   # VS2008 has bufferoverflow baked in:
   LFLAGS_VS2008 = 
+  LFLAGS_VS2010 = 
 
   # LFLAGS are the flags given to $(LINK) and used to build the actual DLL file
   BASELFLAGS = -nologo /opt:REF /incremental:no
--- a/jdk/make/common/Modules.gmk	Wed Jul 05 17:11:12 2017 +0200
+++ b/jdk/make/common/Modules.gmk	Wed Jul 05 17:11:37 2017 +0200
@@ -357,6 +357,9 @@
 	$(MKDIR) -p $(JDK_MODULE_IMAGE_DIR)/bin
 	$(CP) $(BINDIR)/*$(EXE_SUFFIX) $(JDK_MODULE_IMAGE_DIR)/bin
 	$(CP) $(BINDIR)/jli.$(LIBRARY_SUFFIX) $(JDK_MODULE_IMAGE_DIR)/bin
+    ifeq ($(COMPILER_VERSION), VS2010)
+	$(CP) $(BINDIR)/msvc*100.$(LIBRARY_SUFFIX) $(JDK_MODULE_IMAGE_DIR)/bin
+    endif
     ifeq ($(ARCH_DATA_MODEL), 32)
       ifeq ($(COMPILER_VERSION), VS2003)
 	$(CP) $(BINDIR)/msvc*71.$(LIBRARY_SUFFIX) $(JDK_MODULE_IMAGE_DIR)/bin
--- a/jdk/make/common/Release.gmk	Wed Jul 05 17:11:12 2017 +0200
+++ b/jdk/make/common/Release.gmk	Wed Jul 05 17:11:37 2017 +0200
@@ -749,6 +749,8 @@
 	$(RM) `$(FIND) $(JRE_IMAGE_DIR)/lib -name 'ir.idl'`
 
 # Construct an initial jre image (initial jdk jre) no trimming or stripping
+# See "initial-image-jdk-setup" for an explanation of the rm of
+# drive names like C:
 initial-image-jre:: initial-image-jre-setup \
 		    $(JRE_LICENSES) $(JRE_DOCFILES) \
 		    $(RT_JAR) $(RESOURCES_JAR) $(JSSE_JAR) \
@@ -759,6 +761,10 @@
 	$(MKDIR) -p $(JRE_IMAGE_DIR)/lib/applet
 	@# Copy in lib directory
 	$(CD) $(OUTPUTDIR) && $(FIND) lib -depth | $(CPIO) -pdum $(JRE_IMAGE_DIR)
+  ifeq ($(USING_CYGWIN),true)
+	  $(RM) -rf $(JRE_IMAGE_DIR)/[A-Za-z]:
+	  $(RM) -rf $(OUTPUTDIR)/[A-Za-z]:
+  endif
 	@# Make sure all directories are read/execute for everyone
 	$(CHMOD) a+rx `$(FIND) $(JRE_IMAGE_DIR) -type d`
 	@# Remove some files from the jre area
@@ -858,11 +864,27 @@
 ######################################################
 # Note: cpio ($(CPIO)) sometimes leaves directories without rx access.
 
+# REMIND: the $(RM) calls for patterns like c:, d: following $(CPIO)
+# are because the 1.7.x versions of cygwin's cpio command drops these
+# in the working directory if the output path begins with that pattern
+# The one for the output jre subdirectory gets there because cpio sees its
+# own dropping in the input jre subdirectory. Need to remove both of these.
+# We can remove these RM's if someone figures out how to stop cpio from
+# leaving these there.
+# Note that its a real problem not because this directory can end up in the
+# bundle (I think it won't since it not in bin or lib and those are the
+# only places from which we copy everything), but because the presence
+# of this file causes cygwin's find to bomb out, thus breaking the build
+# in "install".
 initial-image-jdk-setup:
 	$(RM) -r $(JDK_IMAGE_DIR)
 	$(MKDIR) -p $(JDK_IMAGE_DIR)/jre
 	($(CD) $(JRE_IMAGE_DIR) && $(FIND) . -depth -print \
 	      | $(CPIO) -pdum $(JDK_IMAGE_DIR)/jre )
+  ifeq ($(USING_CYGWIN),true)
+	  $(RM) -rf $(JRE_IMAGE_DIR)/[A-Za-z]:
+	  $(RM) -rf $(JDK_IMAGE_DIR)/jre/[A-Za-z]:
+  endif
 	$(RM) -rf $(JDK_IMAGE_DIR)/jre/man
 	$(CHMOD) a+rx `$(FIND) $(JDK_IMAGE_DIR) -type d`
 
@@ -923,6 +945,9 @@
 	$(MKDIR) -p $(JDK_IMAGE_DIR)/bin
 	$(CP) $(BINDIR)/*$(EXE_SUFFIX) $(JDK_IMAGE_DIR)/bin
 	$(CP) $(BINDIR)/jli.$(LIBRARY_SUFFIX) $(JDK_IMAGE_DIR)/bin
+    ifeq ($(COMPILER_VERSION), VS2010)
+	$(CP) $(BINDIR)/msvc*100.$(LIBRARY_SUFFIX) $(JDK_IMAGE_DIR)/bin
+    endif
     ifeq ($(ARCH_DATA_MODEL), 32)
       ifeq ($(COMPILER_VERSION), VS2003)
 	$(CP) $(BINDIR)/msvc*71.$(LIBRARY_SUFFIX) $(JDK_IMAGE_DIR)/bin
--- a/jdk/make/common/shared/Compiler-msvc.gmk	Wed Jul 05 17:11:12 2017 +0200
+++ b/jdk/make/common/shared/Compiler-msvc.gmk	Wed Jul 05 17:11:37 2017 +0200
@@ -67,7 +67,7 @@
       COMPILER_VERSION=VS2005
       REBASE     = $(COMPILER_PATH)../../Common8/Tools/Bin/rebase
       MTL        = $(COMPILER_PATH)../../Common8/Tools/Bin/midl
-      MT         = $(MSDEVTOOLS_PATH)mt
+      MT         = $(MSDEVTOOLS_PATH)/mt
       ifndef COMPILER_PATH
 	COMPILER_PATH := $(error COMPILER_PATH cannot be empty here)
       endif
@@ -83,6 +83,17 @@
 	COMPILER_PATH := $(error COMPILER_PATH cannot be empty here)
       endif
     endif
+    ifeq ($(CC_MAJORVER), 16)
+      COMPILER_NAME=Visual Studio 10
+      COMPILER_VERSION=VS2010
+      #rebase and midl moved out of Visual Studio into the SDK:
+      REBASE     = $(MSDEVTOOLS_PATH)/rebase
+      MTL        = $(MSDEVTOOLS_PATH)/midl.exe
+      MT         = $(MSDEVTOOLS_PATH)mt
+      ifndef COMPILER_PATH
+	COMPILER_PATH := $(error COMPILER_PATH cannot be empty here)
+      endif
+    endif
   else
     # else ARCH_DATA_MODEL is 64
     LINK_VER := $(shell $(LINK) | $(HEAD) -n 1 | $(NAWK) '{print $$6}')
@@ -122,6 +133,15 @@
       COMPILER_VERSION=VS2008
       RC = $(MSSDK61)/Bin/X64/rc.exe
       MT = $(MSSDK61)/Bin/X64/mt.exe
+      MTL = $(MSSDK61)/Bin/X64/midl.exe
+    endif
+    ifeq ($(CC_MAJORVER), 16)
+      COMPILER_NAME=Microsoft Visual Studio 10 (16.00.30319.01)
+      COMPILER_VERSION=VS2010
+      RC = $(MSDEVTOOLS_PATH)/Bin/x64/rc.exe
+      RSC = $(MSDEVTOOLS_PATH)/Bin/x64/rc.exe
+      MT = $(MSDEVTOOLS_PATH)/Bin/x64/mt.exe
+      MTL = $(MSDEVTOOLS_PATH)/Bin/X64/midl.exe
     endif
     # This will cause problems if ALT_COMPILER_PATH is defined to ""
     # which is a directive to use the PATH.
--- a/jdk/make/common/shared/Defs-versions.gmk	Wed Jul 05 17:11:12 2017 +0200
+++ b/jdk/make/common/shared/Defs-versions.gmk	Wed Jul 05 17:11:37 2017 +0200
@@ -165,10 +165,10 @@
   REQUIRED_DXSDK_VER          = 0x0900
   ifeq ($(CC_VERSION),msvc)
     ifeq ($(ARCH_DATA_MODEL), 32)
-      REQUIRED_COMPILER_NAME    = Visual Studio 9
-      REQUIRED_COMPILER_VERSION = VS2008
-      REQUIRED_CC_VER           = 15.00.21022.08
-      REQUIRED_LINK_VER         = 9.00.21022.08
+      REQUIRED_COMPILER_NAME    = Visual Studio 10
+      REQUIRED_COMPILER_VERSION = VS2010
+      REQUIRED_CC_VER           = 16.00.30319.01
+      REQUIRED_LINK_VER         = 10.00.30319.01
     else
       ifeq ($(ARCH), ia64)
         REQUIRED_COMPILER_NAME    = Microsoft Platform SDK - November 2001 Edition
@@ -177,10 +177,10 @@
         REQUIRED_LINK_VER         = 7.00.9337.7
       endif
       ifeq ($(ARCH), amd64)
-        REQUIRED_COMPILER_NAME    = Microsoft Windows SDK with Visual Studio 9 (6001.18000.367)
-        REQUIRED_COMPILER_VERSION = VS2008
-        REQUIRED_CC_VER           = 15.00.21022.08
-        REQUIRED_LINK_VER         = 9.00.21022.08
+        REQUIRED_COMPILER_NAME    = Visual Studio 10
+        REQUIRED_COMPILER_VERSION = VS2010
+        REQUIRED_CC_VER           = 16.00.30319.01
+        REQUIRED_LINK_VER         = 10.00.30319.01
       endif
     endif
   endif
--- a/jdk/make/common/shared/Defs-windows.gmk	Wed Jul 05 17:11:12 2017 +0200
+++ b/jdk/make/common/shared/Defs-windows.gmk	Wed Jul 05 17:11:37 2017 +0200
@@ -248,26 +248,34 @@
   # If we still don't have it, look for VSnnCOMNTOOLS (newest first),
   # set by installer?
   ifeq ($(_msvc_dir),)
-    ifdef VS90COMNTOOLS  # /Common/Tools directory, use ../../Vc
-      xVS90COMNTOOLS :="$(subst \,/,$(VS90COMNTOOLS))"
-      _vs90tools     :=$(call FullPath,$(xVS90COMNTOOLS))
+    ifdef VS100COMNTOOLS  # /Common/Tools directory, use ../../Vc
+      xVS100COMNTOOLS :="$(subst \,/,$(VS100COMNTOOLS))"
+      _vs100tools     :=$(call FullPath,$(xVS100COMNTOOLS))
     endif
-    ifneq ($(_vs90tools),)
-      _msvc_dir   :=$(_vs90tools)/../../Vc
+    ifneq ($(_vs100tools),)
+      _msvc_dir   :=$(_vs100tools)/../../Vc
     else
-      ifdef VS80COMNTOOLS  # /Common/Tools directory, use ../../Vc
-        xVS80COMNTOOLS :="$(subst \,/,$(VS80COMNTOOLS))"
-        _vs80tools     :=$(call FullPath,$(xVS80COMNTOOLS))
+      ifdef VS90COMNTOOLS  # /Common/Tools directory, use ../../Vc
+        xVS90COMNTOOLS :="$(subst \,/,$(VS90COMNTOOLS))"
+        _vs90tools     :=$(call FullPath,$(xVS90COMNTOOLS))
       endif
-      ifneq ($(_vs80tools),)
-        _msvc_dir   :=$(_vs80tools)/../../Vc
+      ifneq ($(_vs90tools),)
+        _msvc_dir   :=$(_vs90tools)/../../Vc
       else
-        ifdef VS71COMNTOOLS  # /Common/Tools directory, use ../../Vc7
-          xVS71COMNTOOLS :="$(subst \,/,$(VS71COMNTOOLS))"
-          _vs71tools     :=$(call FullPath,$(xVS71COMNTOOLS))
+        ifdef VS80COMNTOOLS  # /Common/Tools directory, use ../../Vc
+          xVS80COMNTOOLS :="$(subst \,/,$(VS80COMNTOOLS))"
+          _vs80tools     :=$(call FullPath,$(xVS80COMNTOOLS))
         endif
-        ifneq ($(_vs71tools),)
-          _msvc_dir   :=$(_vs71tools)/../../Vc7
+        ifneq ($(_vs80tools),)
+          _msvc_dir   :=$(_vs80tools)/../../Vc
+        else
+          ifdef VS71COMNTOOLS  # /Common/Tools directory, use ../../Vc7
+            xVS71COMNTOOLS :="$(subst \,/,$(VS71COMNTOOLS))"
+            _vs71tools     :=$(call FullPath,$(xVS71COMNTOOLS))
+          endif
+          ifneq ($(_vs71tools),)
+            _msvc_dir   :=$(_vs71tools)/../../Vc7
+          endif
         endif
       endif
     endif
@@ -276,12 +284,15 @@
     _compiler_bin :=$(_msvc_dir)/Bin
     # Assume PlatformSDK is in VS71 (will be empty if VS90)
     _ms_sdk       :=$(call FullPath,$(_msvc_dir)/PlatformSDK)
-    # Assume VS90, then VS80, then VS71
-    _redist_sdk   :=$(call FullPath,$(_msvc_dir)/redist/x86/Microsoft.VC90.CRT)
+    # Assume VS100, then VS90, then VS80, then VS71
+    _redist_sdk   :=$(call FullPath,$(_msvc_dir)/redist/x86/Microsoft.VC100.CRT)
     ifeq ($(_redist_sdk),)
-      _redist_sdk   :=$(call FullPath,$(_msvc_dir)/redist/x86/Microsoft.VC80.CRT)
+      _redist_sdk   :=$(call FullPath,$(_msvc_dir)/redist/x86/Microsoft.VC90.CRT)
       ifeq ($(_redist_sdk),)
-        _redist_sdk   :=$(call FullPath,$(_msvc_dir)/../SDK/v1.1/Bin)
+        _redist_sdk   :=$(call FullPath,$(_msvc_dir)/redist/x86/Microsoft.VC80.CRT)
+        ifeq ($(_redist_sdk),)
+          _redist_sdk   :=$(call FullPath,$(_msvc_dir)/../SDK/v1.1/Bin)
+        endif
       endif
     endif
   endif
@@ -316,23 +327,40 @@
   endif
 endif
 
-# Compilers for 64bit are from SDK
+# Compilers for 64bit may be from SDK. For VS 2010 we use those.
+# The Express compilers don't contain 64 bit compilers, so in
+# that case, you additionally need the SDK. At this time,
+# there's no 64 bit SDK available that has VS 2010.
+# Presumably SDK v7.1 will provide that and we may want to update
+# the logic here to work with that.
+# However official builds will use the Professional version.
 ifeq ($(ARCH_DATA_MODEL), 64)
-  xVS2008 :="$(_program_files32)/Microsoft Visual Studio 9.0/"
-  VS2008 :=$(call FullPath,$(xVS2008))
-  ifneq ($(VS2008),)
-    _compiler_bin :=$(VS2008)/VC/Bin/$(ARCH)
-    xMSSDK61      :="$(_program_files)/Microsoft SDKs/Windows/v6.1/"
-    MSSDK61       :=$(call FullPath,$(xMSSDK61))
-    _redist_sdk   :=$(VS2008)/VC/redist/x86/Microsoft.VC90.CRT
+  ifdef VS100COMNTOOLS  # /Common7/Tools directory, use ../../Vc
+    xVS100COMNTOOLS :="$(subst \,/,$(VS100COMNTOOLS))"
+    _vs100tools     :=$(call FullPath,$(xVS100COMNTOOLS))
+  endif
+  ifneq ($(_vs100tools),)
+    _compiler_bin :=$(_vs100tools)/../../Vc/bin/amd64
+    _redist_sdk   :=$(_vs100tools)/../../Vc/redist/x64/Microsoft.VC100.CRT
+    xMSSDK70      :="$(_program_files32)/Microsoft SDKs/Windows/v7.0a/"
+    MSSDK70       :=$(call FullPath,$(xMSSDK70))
   else
-    ifneq ($(_ms_sdk),)
-      ifeq ($(ARCH), ia64)
-        _compiler_bin :=$(_ms_sdk)/Bin/Win64
-      endif
-      ifeq ($(ARCH), amd64)
-        _compiler_bin :=$(_ms_sdk)/Bin/Win64/x86/$(ARCH)
-        _redist_sdk   :=$(_ms_sdk)/redist/win64/AMD64
+    xVS2008 :="$(_program_files32)/Microsoft Visual Studio 9.0/"
+    VS2008 :=$(call FullPath,$(xVS2008))
+    ifneq ($(VS2008),)
+      _compiler_bin :=$(VS2008)/VC/Bin/$(ARCH)
+      xMSSDK61      :="$(_program_files)/Microsoft SDKs/Windows/v6.1/"
+      MSSDK61       :=$(call FullPath,$(xMSSDK61))
+      _redist_sdk   :=$(VS2008)/VC/redist/x86/Microsoft.VC90.CRT
+    else
+      ifneq ($(_ms_sdk),)
+        ifeq ($(ARCH), ia64)
+          _compiler_bin :=$(_ms_sdk)/Bin/Win64
+        endif
+        ifeq ($(ARCH), amd64)
+          _compiler_bin :=$(_ms_sdk)/Bin/Win64/x86/$(ARCH)
+          _redist_sdk   :=$(_ms_sdk)/redist/win64/AMD64
+        endif
       endif
     endif
   endif
@@ -454,10 +482,14 @@
 ifeq ($(ARCH_DATA_MODEL), 32)
   _NEEDS_MSVCRNN = true
 else
-  ifeq ($(VS2008),)
-    _NEEDS_MSVCRNN = false
-  else
+  ifneq ($(VS2010),)
     _NEEDS_MSVCRNN = true
+  else 
+    ifneq ($(VS2008),)
+      _NEEDS_MSVCRNN = true
+    else
+      _NEEDS_MSVCRNN = false
+    endif
   endif
 endif
 
@@ -557,6 +589,17 @@
 endif
 CSCRIPT:=$(call AltCheckSpaces,CSCRIPT)
 
+# CABARC: path to cabarc.exe (used in creating install bundles)
+ifdef ALT_CABARC
+  xALT_CABARC :="$(subst \,/,$(ALT_CABARC))"
+  CABARC  =$(xALT_CABARC)
+else
+  _CABARC1 :=$(_system_root)/system32/cabarc.exe
+  _CABARC2 :=$(DEVTOOLS_PATH)cabarc.exe
+  CABARC  :=$(call FileExists,$(_CABARC1),$(_CABARC2))
+endif
+CABARC:=$(call AltCheckSpaces,CABARC)
+
 # MSIVAL2: path to msival2.exe (used in validating install msi files)
 ifdef ALT_MSIVAL2
   xALT_MSIVAL2 :="$(subst \,/,$(ALT_MSIVAL2))"
--- a/jdk/make/common/shared/Platform.gmk	Wed Jul 05 17:11:12 2017 +0200
+++ b/jdk/make/common/shared/Platform.gmk	Wed Jul 05 17:11:37 2017 +0200
@@ -275,7 +275,12 @@
   endif
   ARCH_FAMILY = $(ARCH)
   # Where is unwanted output to be delivered?
-  DEV_NULL = NUL
+  # MKS uses the special file "NUL", cygwin uses the customary unix file.
+  ifeq ($(USING_CYGWIN),true)
+    DEV_NULL = /dev/null
+  else
+    DEV_NULL = NUL
+  endif
   export DEV_NULL
   # Classpath separator
   CLASSPATH_SEPARATOR = ;
--- a/jdk/src/share/bin/main.c	Wed Jul 05 17:11:12 2017 +0200
+++ b/jdk/src/share/bin/main.c	Wed Jul 05 17:11:37 2017 +0200
@@ -33,14 +33,16 @@
 #include "defines.h"
 
 #ifdef _MSC_VER
-#if _MSC_VER > 1400
+#if _MSC_VER > 1400 && _MSC_VER < 1600
 
 /*
  * When building for Microsoft Windows, main has a dependency on msvcr??.dll.
  *
- * When using Visual Studio 2005 or later, that must be recorded in
+ * When using Visual Studio 2005 or 2008, that must be recorded in
  * the [java,javaw].exe.manifest file.
  *
+ * As of VS2010 (ver=1600), the runtimes again no longer need manifests.
+ *
  * Reference:
  *     C:/Program Files/Microsoft SDKs/Windows/v6.1/include/crtdefs.h
  */
@@ -67,7 +69,7 @@
         "publicKeyToken='" _VC_ASSEMBLY_PUBLICKEYTOKEN "'\"")
 
 #endif  /* _M_AMD64 */
-#endif  /* _MSC_VER > 1400 */
+#endif  /* _MSC_VER > 1400 && _MSC_VER < 1600 */
 #endif  /* _MSC_VER */
 
 /*
--- a/jdk/src/windows/bin/java_md.c	Wed Jul 05 17:11:12 2017 +0200
+++ b/jdk/src/windows/bin/java_md.c	Wed Jul 05 17:11:37 2017 +0200
@@ -148,11 +148,18 @@
          * assumed to be present in the "JRE path" directory.  If it is not found
          * there (or "JRE path" fails to resolve), skip the explicit load and let
          * nature take its course, which is likely to be a failure to execute.
+         * This is clearly completely specific to the exact compiler version
+         * which isn't very nice, but its hardly the only place.
+         * No attempt to look for compiler versions in between 2003 and 2010
+         * as we aren't supporting building with those.
          */
 #ifdef _MSC_VER
 #if _MSC_VER < 1400
 #define CRT_DLL "msvcr71.dll"
 #endif
+#if _MSC_VER >= 1600
+#define CRT_DLL "msvcr100.dll"
+#endif
 #ifdef CRT_DLL
         if (GetJREPath(crtpath, MAXPATHLEN)) {
             (void)JLI_StrCat(crtpath, "\\bin\\" CRT_DLL);   /* Add crt dll */
--- a/jdk/src/windows/native/sun/jkernel/DownloadDialog.cpp	Wed Jul 05 17:11:12 2017 +0200
+++ b/jdk/src/windows/native/sun/jkernel/DownloadDialog.cpp	Wed Jul 05 17:11:37 2017 +0200
@@ -29,7 +29,10 @@
 
 #define STRICT
 #ifndef _WIN32_WINNT
-#define _WIN32_WINNT 0x0400
+/* REMIND : 0x500 means Windows 2000 .. seems like we can update
+ * for Windows XP when we move the SDK and build platform
+ */
+#define _WIN32_WINNT 0x0500
 #endif
 #define _ATL_APARTMENT_THREADED
 
--- a/jdk/src/windows/native/sun/jkernel/DownloadHelper.cpp	Wed Jul 05 17:11:12 2017 +0200
+++ b/jdk/src/windows/native/sun/jkernel/DownloadHelper.cpp	Wed Jul 05 17:11:37 2017 +0200
@@ -29,7 +29,10 @@
 
 #define STRICT
 #ifndef _WIN32_WINNT
-#define _WIN32_WINNT 0x0400
+/* REMIND : 0x500 means Windows 2000 .. seems like we can update
+ * for Windows XP when we move the SDK and build platform
+ */
+#define _WIN32_WINNT 0x0500
 #endif
 #define _ATL_APARTMENT_THREADED
 
--- a/jdk/src/windows/native/sun/jkernel/stdafx.h	Wed Jul 05 17:11:12 2017 +0200
+++ b/jdk/src/windows/native/sun/jkernel/stdafx.h	Wed Jul 05 17:11:37 2017 +0200
@@ -36,7 +36,10 @@
 
 #define STRICT
 #ifndef _WIN32_WINNT
-#define _WIN32_WINNT 0x0400
+/* REMIND : 0x500 means Windows 2000 .. seems like we can update
+ * for Windows XP when we move the SDK and build platform
+ */
+#define _WIN32_WINNT 0x0500
 #endif
 #define _ATL_APARTMENT_THREADED
 
--- a/jdk/src/windows/native/sun/windows/awt_DesktopProperties.cpp	Wed Jul 05 17:11:12 2017 +0200
+++ b/jdk/src/windows/native/sun/windows/awt_DesktopProperties.cpp	Wed Jul 05 17:11:37 2017 +0200
@@ -233,7 +233,19 @@
     //
     NONCLIENTMETRICS    ncmetrics;
 
-    ncmetrics.cbSize = sizeof(ncmetrics);
+    // Fix for 6944516: specify correct size for ncmetrics on WIN2K/XP
+    // Microsoft recommend to subtract the size of  'iPaddedBorderWidth' field
+    // when running on XP. However this can't be referenced at compile time
+    // with the older SDK, so there use 'lfMessageFont' plus its size.
+    if (!IS_WINVISTA) {
+#if defined(_MSC_VER) && (_MSC_VER >= 1600) {
+        ncmetrics.cbSize = offsetof(NONCLIENTMETRICS, iPaddedBorderWidth);
+#else
+        ncmetrics.cbSize = offsetof(NONCLIENTMETRICS,lfMessageFont) + sizeof(LOGFONT);
+#endif
+    } else {
+        ncmetrics.cbSize = sizeof(ncmetrics);
+    }
     VERIFY( SystemParametersInfo(SPI_GETNONCLIENTMETRICS, ncmetrics.cbSize, &ncmetrics, FALSE) );
 
     SetFontProperty( TEXT("win.frame.captionFont"), ncmetrics.lfCaptionFont );
--- a/jdk/src/windows/native/sun/windows/awt_DnDDS.cpp	Wed Jul 05 17:11:12 2017 +0200
+++ b/jdk/src/windows/native/sun/windows/awt_DnDDS.cpp	Wed Jul 05 17:11:37 2017 +0200
@@ -29,21 +29,16 @@
 //we need <new> inclusion for STL "new" oprators set.
 #define bad_alloc zbad_alloc
 #include <new>
+
+#if defined(_DEBUG) || defined(DEBUG)
+extern void * operator new(size_t size, const char * filename, int linenumber);
+void * operator new(size_t size) {return operator new(size, "stl", 1);}
+#endif
+#include <map>
+
 #pragma pop_macro("bad_alloc")
 //"bad_alloc" is undefined from here
 
-//we need to include any STL container before <awt.h> inclusion due to
-//"new" re-redefinition that is in conflict with in-place new allocator
-//applied in STL.
-#if defined(_DEBUG) || defined(DEBUG)
-    //forward declaration of "new" operator from <awt.h>
-    extern void * operator new(size_t size, const char * filename, int linenumber);
-    //"new" operator definition that is consistent with re-defined
-    //in <awt.h> "delete" operator
-    void * operator new(size_t size) {return operator new(size, "stl", 1);}
-#endif
-#include <map>
-
 #include <awt.h>
 #include <shlobj.h>
 
--- a/jdk/src/windows/native/sun/windows/awt_TextArea.cpp	Wed Jul 05 17:11:12 2017 +0200
+++ b/jdk/src/windows/native/sun/windows/awt_TextArea.cpp	Wed Jul 05 17:11:37 2017 +0200
@@ -758,7 +758,7 @@
                     si.cbSize = sizeof(SCROLLINFO);
                     si.fMask = SIF_POS | SIF_RANGE | SIF_PAGE;
                     int actualScrollLines =
-                        abs(platfScrollLines * (*delta_accum / WHEEL_DELTA));
+                        abs((int)(platfScrollLines * (*delta_accum / WHEEL_DELTA)));
                     for (int i = 0; i < actualScrollLines; i++) {
                         if (::GetScrollInfo(hWnd, sb_type, &si)) {
                             if ((wm_msg == WM_VSCROLL)
--- a/langtools/.hgtags	Wed Jul 05 17:11:12 2017 +0200
+++ b/langtools/.hgtags	Wed Jul 05 17:11:37 2017 +0200
@@ -66,3 +66,4 @@
 6cea9a143208bc1185ced046942c0f4e45dbeba5 jdk7-b89
 71c2c23a7c35b2896c87004023b9743b6d1b7758 jdk7-b90
 97b6fa97b8ddb3a49394011c2a0ec5d6535e594c jdk7-b91
+98cba5876cb50fa3c58a313ddd668f5014ff14f6 jdk7-b92