changeset 3152:3d9c006eaf4f

Merge
author Andrew John Hughes <gnu.andrew@redhat.com>
date Tue, 15 Jul 2014 16:04:35 +0100
parents a80478e9e6ee (current diff) e7dbc33f6f5b (diff)
children 21a1b0e6077e
files ChangeLog Makefile.am NEWS patches/jtreg-T6638712-fix.patch patches/openjdk/6638712-wildcard_types.patch patches/openjdk/6650759-missing_inference.patch
diffstat 11 files changed, 101 insertions(+), 1930 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Wed May 28 12:25:46 2014 +0100
+++ b/ChangeLog	Tue Jul 15 16:04:35 2014 +0100
@@ -1,3 +1,25 @@
+2014-07-14  Omair Majid  <omajid@redhat.com>
+
+	* NEWS: Update with fixes.
+	* Makefile.am (OPENJDK_SHA256SUM): Update checksum for new tarball.
+
+2014-07-08  Omair Majid  <omajid@redhat.com>
+
+	2014-07-15 CPU
+	* NEWS: Update with fixes.
+	* Makefile.am
+	(OPENJDK_DATE, OPENJDK_SHA256SUM, OPENJDK_VERSION): Update for b32.
+	(ICEDTEA_PATCHES): Drop upstreamed patches.
+	* patches/openjdk/6636370-appcontext_simplification.patch,
+	* patches/openjdk/6729772-opt_cleanup.patch,
+	* patches/openjdk/6799141-split_out_versions.patch,
+	* patches/openjdk/6816311-compiler_name.patch,
+	* patches/windows-awt.patch: Update to apply on top of b32.
+	* patches/jtreg-T6638712-fix.patch,
+	* patches/openjdk/6638712-wildcard_types.patch,
+	* patches/openjdk/6650759-missing_inference.patch: Remove upstreamed
+	patch.
+
 2014-05-22  Andrew John Hughes  <gnu.andrew@redhat.com>
 
 	* Makefile.am:
--- a/Makefile.am	Wed May 28 12:25:46 2014 +0100
+++ b/Makefile.am	Tue Jul 15 16:04:35 2014 +0100
@@ -1,8 +1,8 @@
 # Dependencies
 
-OPENJDK_DATE = 15_apr_2014
-OPENJDK_SHA256SUM = 362d9bf20e91393b52dd0513896d39831cf320c49bd4bf1e28124f21569b72eb
-OPENJDK_VERSION = b31
+OPENJDK_DATE = 15_jul_2014
+OPENJDK_SHA256SUM = 9a5ad1b599953baac1b6b34189b9487ac5dcdb367aac5cc0aa5aa49700e73871
+OPENJDK_VERSION = b32
 OPENJDK_URL = https://java.net/downloads/openjdk6/
 
 CACAO_VERSION = 68fe50ac34ec
@@ -374,12 +374,8 @@
 	patches/ipv4-mapped-ipv6-addresses.patch \
 	patches/jtreg-OpenGLContextInit.patch \
 	patches/openjdk/6510892-httpserver_test.patch \
-	patches/openjdk/6638712-wildcard_types.patch \
-	patches/openjdk/6650759-missing_inference.patch \
 	patches/jtreg-international-fonts.patch \
 	patches/f14-fonts.patch \
-	patches/jtreg-T6638712-fix.patch \
-	patches/jtreg-T6650759m-fix.patch \
 	patches/openjdk/7003777-bad-html-entity-parse.patch \
 	patches/rendering-engine-tests.patch \
 	patches/openjdk/6800846-printing-quality.patch \
--- a/NEWS	Wed May 28 12:25:46 2014 +0100
+++ b/NEWS	Tue Jul 15 16:04:35 2014 +0100
@@ -14,6 +14,42 @@
 
 New in release 1.13.4 (2014-07-XX):
 
+* Security fixes
+  - S8029755: Enhance subject class
+  - S8031346: Enhance RSA key handling
+  - S8033301: Build more informative InfoBuilder
+  - S8035004: Provider provides less service
+  - S8035009: Make Proxy representations consistent
+  - S8035119: Fix exceptions to bytecode verification
+  - S8035699: File choosers should be choosier
+  - S8037076: Check constant pool constants
+  - S8037162: More robust DH exchanges
+  - S8037167: Better method signature resolution
+  - S8039520: More atomicity of atomic updates
+* Import of OpenJDK6 b32
+  - OP32: OpenJDK6-b31 isn't compatible with Windows platform
+  - OJ33: Update copyright headers introduced by the fix for OPENJDK6-32
+  - OJ34: OpenJDK6-b31 backport of JDK-6638712 to openjdk6
+  - OJ35: backport of JDK-6650759 to openjdk6
+  - OJ36: Fix a mistake in backport of 8035119
+  - S8013611: Modal dialog fails to obtain keyboard focus
+  - S8013836: getFirstDayOfWeek reports wrong day for pt-BR locale
+  - S8028111: XML readers share the same entity expansion counter
+  - S8028285: RMI Thread can no longer call out to AWT
+  - S8029038: Revise fix for XML readers share the same entity expansion counter
+  - S8030763: Validate global memory allocation
+  - S8031540: Introduce document horizon
+  - S8032536: JVM resolves wrong method in some unusual cases
+  - S8033055: Issues in 2d
+  - S8034267: Probabilistic native crash
+  - S8034272: Do not cram data into CRAM arrays
+  - S8036571: (process) Process process arguments carefully
+  - S8036800: Attribute OOM to correct part of code
+  - S8037046: Validate libraries to be loaded
+  - S8037157: Verify <init> call
+  - S8042582: Test java/awt/KeyboardFocusmanager/ChangeKFMTest/ChangeKFMTest.html fails on Windows x64
+  - S8042590: Running form URL throws NPE
+  - S8042789: org.omg.CORBA.ORBSingletonClass loading no longer uses context class loader
 * Backports
  - S7027300, RH1098399: Unsynchronized HashMap access causes endless loop
 
--- a/patches/jtreg-T6638712-fix.patch	Wed May 28 12:25:46 2014 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
---- openjdk-old/langtools/test/tools/javac/generics/inference/6638712/T6638712a.out	2010-11-30 14:44:29.000000000 +0100
-+++ openjdk/langtools/test/tools/javac/generics/inference/6638712/T6638712a.out	2010-11-30 15:27:57.000000000 +0100
-@@ -1,2 +1,2 @@
--T6638712a.java:39:41: compiler.err.invalid.inferred.types: T, (- compiler.misc.inferred.do.not.conform.to.params: java.lang.Iterable<? extends java.util.Comparator<? super java.lang.String>>, java.util.List<java.util.Comparator<?>>)
-+T6638712a.java:16:41: compiler.err.invalid.inferred.types: T, (- compiler.misc.inferred.do.not.conform.to.params: java.lang.Iterable<? extends java.util.Comparator<? super java.lang.String>>, java.util.List<java.util.Comparator<?>>)
- 1 error
---- openjdk-old/langtools/test/tools/javac/generics/inference/6638712/T6638712b.out	2010-11-30 14:44:29.000000000 +0100
-+++ openjdk/langtools/test/tools/javac/generics/inference/6638712/T6638712b.out	2010-11-30 15:27:58.000000000 +0100
-@@ -1,2 +1,2 @@
--T6638712b.java:37:21: compiler.err.prob.found.req: (- compiler.misc.incompatible.types.1: (- compiler.misc.no.conforming.instance.exists: T, T, java.lang.String)), <T>T, java.lang.String
-+T6638712b.java:14:21: compiler.err.prob.found.req: (- compiler.misc.incompatible.types.1: (- compiler.misc.no.conforming.instance.exists: T, T, java.lang.String)), <T>T, java.lang.String
- 1 error
---- openjdk-old/langtools/test/tools/javac/generics/inference/6638712/T6638712c.out	2010-11-30 14:44:29.000000000 +0100
-+++ openjdk/langtools/test/tools/javac/generics/inference/6638712/T6638712c.out	2010-11-30 15:27:59.000000000 +0100
-@@ -1,2 +1,2 @@
--T6638712c.java:39:9: compiler.err.cant.apply.symbol: <T>sort(T[],java.util.Comparator<? super T>), T6638712c, , java.lang.Enum[],java.util.Comparator<java.lang.Enum<?>>, null
-+T6638712c.java:16:9: compiler.err.cant.apply.symbol: <T>sort(T[],java.util.Comparator<? super T>), T6638712c, , java.lang.Enum[],java.util.Comparator<java.lang.Enum<?>>, null
- 1 error
---- openjdk-old/langtools/test/tools/javac/generics/inference/6638712/T6638712d.out	2010-11-30 14:44:29.000000000 +0100
-+++ openjdk/langtools/test/tools/javac/generics/inference/6638712/T6638712d.out	2010-11-30 15:28:01.000000000 +0100
-@@ -1,2 +1,2 @@
--T6638712d.java:39:9: compiler.err.cant.apply.symbol: <U>m(U,java.util.List<java.util.List<U>>), T6638712d, , int,java.util.List<java.util.List<java.lang.String>>, null
-+T6638712d.java:16:9: compiler.err.cant.apply.symbol: <U>m(U,java.util.List<java.util.List<U>>), T6638712d, , int,java.util.List<java.util.List<java.lang.String>>, null
- 1 error
---- openjdk-old/langtools/test/tools/javac/generics/inference/6638712/T6638712e.out	2010-11-30 14:44:29.000000000 +0100
-+++ openjdk/langtools/test/tools/javac/generics/inference/6638712/T6638712e.out	2010-11-30 15:28:02.000000000 +0100
-@@ -1,2 +1,2 @@
--T6638712e.java:40:27: compiler.err.prob.found.req: (- compiler.misc.incompatible.types.1: (- compiler.misc.no.conforming.instance.exists: X, T6638712e.Foo<X,java.lang.String>, T6638712e.Foo<java.lang.Object,java.lang.String>)), <X>T6638712e.Foo<X,java.lang.String>, T6638712e.Foo<java.lang.Object,java.lang.String>
-+T6638712e.java:17:27: compiler.err.prob.found.req: (- compiler.misc.incompatible.types.1: (- compiler.misc.no.conforming.instance.exists: X, T6638712e.Foo<X,java.lang.String>, T6638712e.Foo<java.lang.Object,java.lang.String>)), <X>T6638712e.Foo<X,java.lang.String>, T6638712e.Foo<java.lang.Object,java.lang.String>
- 1 error
--- a/patches/openjdk/6636370-appcontext_simplification.patch	Wed May 28 12:25:46 2014 +0100
+++ b/patches/openjdk/6636370-appcontext_simplification.patch	Tue Jul 15 16:04:35 2014 +0100
@@ -1,6 +1,6 @@
-diff -Nru openjdk.orig/jdk/src/share/classes/sun/awt/AppContext.java openjdk/jdk/src/share/classes/sun/awt/AppContext.java
---- openjdk.orig/jdk/src/share/classes/sun/awt/AppContext.java	2013-08-05 16:49:37.120128300 +0100
-+++ openjdk/jdk/src/share/classes/sun/awt/AppContext.java	2013-08-05 17:02:51.304664462 +0100
+diff -ruN openjdk.orig/jdk/src/share/classes/sun/awt/AppContext.java openjdk/jdk/src/share/classes/sun/awt/AppContext.java
+--- openjdk.orig/jdk/src/share/classes/sun/awt/AppContext.java	2014-07-08 13:29:01.986811368 -0400
++++ openjdk/jdk/src/share/classes/sun/awt/AppContext.java	2014-07-08 13:34:11.529064569 -0400
 @@ -151,7 +151,7 @@
         contained in another AppContext. It is implicitly created for
         standalone apps only (i.e. not applets)
@@ -71,7 +71,7 @@
  
                      // Special case: we implicitly create the main app context
                      // if no contexts have been created yet. This covers standalone apps
-@@ -308,28 +297,29 @@
+@@ -308,42 +297,41 @@
                          }
                      }
  
@@ -79,27 +79,51 @@
 -            while (context == null) {
 -                threadGroup = threadGroup.getParent();
 -                if (threadGroup == null) {
--		    return null;
+-                    // We've got up to the root thread group and did not find an AppContext
+-                    // Try to get it from the security manager
+-                    SecurityManager securityManager = System.getSecurityManager();
+-                    if (securityManager != null) {
+-                        ThreadGroup smThreadGroup = securityManager.getThreadGroup();
+-                        if (smThreadGroup != null) {
+-                            /*
+-                             * If we get this far then it's likely that
+-                             * the ThreadGroup does not actually belong
+-                             * to the applet, so do not cache it.
+-                             */
+-                            return threadGroup2appContext.get(smThreadGroup);
 +                    AppContext context = threadGroup2appContext.get(threadGroup);
 +                    while (context == null) {
 +                        threadGroup = threadGroup.getParent();
 +                        if (threadGroup == null) {
++                            // We've got up to the root thread group and did not find an AppContext
++                            // Try to get it from the security manager
++                            SecurityManager securityManager = System.getSecurityManager();
++                            if (securityManager != null) {
++                                ThreadGroup smThreadGroup = securityManager.getThreadGroup();
++                                if (smThreadGroup != null) {
++                                    /*
++                                     * If we get this far then it's likely that
++                                     * the ThreadGroup does not actually belong
++                                     * to the applet, so do not cache it.
++                                     */
++                                    return threadGroup2appContext.get(smThreadGroup);
++                                }
++                            }
 +                            return null;
-+                        }
+                         }
 +                        context = threadGroup2appContext.get(threadGroup);
 +                    }
-+
 +                    // In case we did anything in the above while loop, we add
 +                    // all the intermediate ThreadGroups to threadGroup2appContext
 +                    // so we won't spin again.
 +                    for (ThreadGroup tg = currentThreadGroup; tg != threadGroup; tg = tg.getParent()) {
 +                        threadGroup2appContext.put(tg, context);
-+                    }
+                     }
+-                    return null;
 +
 +                    // Now we're done, so we cache the latest key/value pair.
 +                    threadAppContext.set(context);
 +
-+
 +                    return context;
                  }
 -                context = threadGroup2appContext.get(threadGroup);
@@ -122,7 +146,7 @@
          }
  
          return appContext;
-@@ -473,7 +463,7 @@
+@@ -487,7 +475,7 @@
          // Threads in the ThreadGroup to exit.
  
          long startTime = System.currentTimeMillis();
@@ -131,7 +155,7 @@
          while ((this.threadGroup.activeCount() > 0) &&
                 (System.currentTimeMillis() < endTime)) {
              try {
-@@ -488,7 +478,7 @@
+@@ -502,7 +490,7 @@
          // Threads in the ThreadGroup to die.
  
          startTime = System.currentTimeMillis();
@@ -140,7 +164,7 @@
          while ((this.threadGroup.activeCount() > 0) &&
                 (System.currentTimeMillis() < endTime)) {
              try {
-@@ -507,10 +497,7 @@
+@@ -521,10 +509,7 @@
          }
          threadGroup2appContext.remove(this.threadGroup);
  
@@ -152,7 +176,7 @@
  
          // Finally, we destroy the ThreadGroup entirely.
          try {
-@@ -693,6 +680,7 @@
+@@ -707,6 +692,7 @@
       * Returns a string representation of this AppContext.
       * @since   1.2
       */
@@ -160,7 +184,7 @@
      public String toString() {
          return getClass().getName() + "[threadGroup=" + threadGroup.getName() + "]";
      }
-@@ -842,15 +830,6 @@
+@@ -856,15 +842,6 @@
      }
  }
  
--- a/patches/openjdk/6638712-wildcard_types.patch	Wed May 28 12:25:46 2014 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,563 +0,0 @@
-# HG changeset patch
-# User mcimadamore
-# Date 1284137253 -3600
-# Node ID c5fe15e03287286fa8e668798409c4d7493ee834
-# Parent  27f03394a69d018c1c2badadee65ea39c7274606
-6638712: Inference with wildcard types causes selection of inapplicable method
-Summary: Added global sanity check in order to make sure that return type inference does not violate bounds constraints
-Reviewed-by: jjg
-
-diff -r 27f03394a69d -r c5fe15e03287 src/share/classes/com/sun/tools/javac/code/Type.java
---- openjdk.orig/langtools/src/share/classes/com/sun/tools/javac/code/Type.java	Wed Jun 23 16:44:15 2010 -0700
-+++ openjdk/langtools/src/share/classes/com/sun/tools/javac/code/Type.java	Fri Sep 10 17:47:33 2010 +0100
-@@ -1061,6 +1061,21 @@
-             return qtype.isErroneous();
-         }
- 
-+        /**
-+         * Replaces this ForAll's typevars with a set of concrete Java types
-+         * and returns the instantiated generic type. Subclasses might override
-+         * in order to check that the list of types is a valid instantiation
-+         * of the ForAll's typevars.
-+         *
-+         * @param actuals list of actual types
-+         * @param types types instance
-+         * @return qtype where all occurrences of tvars are replaced
-+         * by types in actuals
-+         */
-+        public Type inst(List<Type> actuals, Types types) {
-+            return types.subst(qtype, tvars, actuals);
-+        }
-+
-         public Type map(Mapping f) {
-             return f.apply(qtype);
-         }
-diff -r 27f03394a69d -r c5fe15e03287 src/share/classes/com/sun/tools/javac/code/Types.java
---- openjdk.orig/langtools/src/share/classes/com/sun/tools/javac/code/Types.java	Wed Jun 23 16:44:15 2010 -0700
-+++ openjdk/langtools/src/share/classes/com/sun/tools/javac/code/Types.java	Fri Sep 10 17:47:33 2010 +0100
-@@ -331,6 +331,14 @@
-         if (s.tag >= firstPartialTag)
-             return isSuperType(s, t);
- 
-+        if (s.isCompound()) {
-+            for (Type s2 : interfaces(s).prepend(supertype(s))) {
-+                if (!isSubtype(t, s2, capture))
-+                    return false;
-+            }
-+            return true;
-+        }
-+
-         Type lower = lowerBound(s);
-         if (s != lower)
-             return isSubtype(capture ? capture(t) : t, lower, false);
-@@ -2766,6 +2774,14 @@
-     /**
-      * Capture conversion as specified by JLS 3rd Ed.
-      */
-+
-+    public List<Type> capture(List<Type> ts) {
-+        List<Type> buf = List.nil();
-+        for (Type t : ts) {
-+            buf = buf.prepend(capture(t));
-+        }
-+        return buf.reverse();
-+    }
-     public Type capture(Type t) {
-         if (t.tag != CLASS)
-             return t;
-diff -r 27f03394a69d -r c5fe15e03287 src/share/classes/com/sun/tools/javac/comp/Check.java
---- openjdk.orig/langtools/src/share/classes/com/sun/tools/javac/comp/Check.java	Wed Jun 23 16:44:15 2010 -0700
-+++ openjdk/langtools/src/share/classes/com/sun/tools/javac/comp/Check.java	Fri Sep 10 17:47:33 2010 +0100
-@@ -383,6 +383,10 @@
-                                      JCDiagnostic.fragment("incompatible.types" + (d!=null ? ".1" : ""), d),
-                                      t, pt);
-                 }
-+            } catch (Infer.InvalidInstanceException ex) {
-+                JCDiagnostic d = ex.getDiagnostic();
-+                log.error(pos, "invalid.inferred.types", t.tvars, d);
-+                return syms.errType;
-             }
-         }
-     }
-diff -r 27f03394a69d -r c5fe15e03287 src/share/classes/com/sun/tools/javac/comp/Infer.java
---- openjdk.orig/langtools/src/share/classes/com/sun/tools/javac/comp/Infer.java	Wed Jun 23 16:44:15 2010 -0700
-+++ openjdk/langtools/src/share/classes/com/sun/tools/javac/comp/Infer.java	Fri Sep 10 17:47:33 2010 +0100
-@@ -29,6 +29,7 @@
- import com.sun.tools.javac.util.List;
- import com.sun.tools.javac.code.*;
- import com.sun.tools.javac.code.Type.*;
-+import com.sun.tools.javac.code.Symbol.*;
- 
- import static com.sun.tools.javac.code.Flags.*;
- import static com.sun.tools.javac.code.Kinds.*;
-@@ -50,6 +51,7 @@
- 
-     Symtab syms;
-     Types types;
-+    Resolve rs;
- 
-     public static Infer instance(Context context) {
-         Infer instance = context.get(inferKey);
-@@ -62,43 +64,51 @@
-         context.put(inferKey, this);
-         syms = Symtab.instance(context);
-         types = Types.instance(context);
-+        rs = Resolve.instance(context);
-     }
- 
--    public static class NoInstanceException extends RuntimeException {
-+    public static class InferenceException extends RuntimeException {
-         private static final long serialVersionUID = 0;
- 
--        boolean isAmbiguous; // exist several incomparable best instances?
--
-         JCDiagnostic diagnostic;
- 
--        NoInstanceException(boolean isAmbiguous) {
-+        InferenceException() {
-             this.diagnostic = null;
--            this.isAmbiguous = isAmbiguous;
-         }
--        NoInstanceException setMessage(String key) {
--            this.diagnostic = JCDiagnostic.fragment(key);
-+        InferenceException setMessage(String key, Object... args) {
-+            this.diagnostic = JCDiagnostic.fragment(key, args);
-             return this;
-         }
--        NoInstanceException setMessage(String key, Object arg1) {
--            this.diagnostic = JCDiagnostic.fragment(key, arg1);
--            return this;
--        }
--        NoInstanceException setMessage(String key, Object arg1, Object arg2) {
--            this.diagnostic = JCDiagnostic.fragment(key, arg1, arg2);
--            return this;
--        }
--        NoInstanceException setMessage(String key, Object arg1, Object arg2, Object arg3) {
--            this.diagnostic = JCDiagnostic.fragment(key, arg1, arg2, arg3);
--            return this;
--        }
-+
-         public JCDiagnostic getDiagnostic() {
-             return diagnostic;
-         }
-     }
-+
-+    public static class NoInstanceException extends InferenceException {
-+        private static final long serialVersionUID = 1;
-+
-+        boolean isAmbiguous; // exist several incomparable best instances?
-+
-+        NoInstanceException(boolean isAmbiguous) {
-+            super();
-+            this.isAmbiguous = isAmbiguous;
-+       }
-+    }
-+
-+    public static class InvalidInstanceException extends InferenceException {
-+        private static final long serialVersionUID = 2;
-+
-+        InvalidInstanceException() {
-+            super();
-+        }
-+    }
-+
-     private final NoInstanceException ambiguousNoInstanceException =
-         new NoInstanceException(true);
-     private final NoInstanceException unambiguousNoInstanceException =
-         new NoInstanceException(false);
-+    private final InvalidInstanceException invalidInstanceException = new InvalidInstanceException();
- 
- /***************************************************************************
-  * Auxiliary type values and classes
-@@ -247,7 +257,7 @@
-      */
-     public Type instantiateExpr(ForAll that,
-                                 Type to,
--                                Warner warn) throws NoInstanceException {
-+                                Warner warn) throws InferenceException {
-         List<Type> undetvars = Type.map(that.tvars, fromTypeVarFun);
-         for (List<Type> l = undetvars; l.nonEmpty(); l = l.tail) {
-             UndetVar v = (UndetVar) l.head;
-@@ -273,8 +283,7 @@
-         List<Type> targs = Type.map(undetvars, getInstFun);
-         targs = types.subst(targs, that.tvars, targs);
-         checkWithinBounds(that.tvars, targs, warn);
--
--        return getInstFun.apply(qtype1);
-+        return that.inst(targs, types);
-     }
- 
-     /** Instantiate method type `mt' by finding instantiations of
-@@ -282,36 +291,42 @@
-      */
-     public Type instantiateMethod(List<Type> tvars,
-                                   MethodType mt,
--                                  List<Type> argtypes,
--                                  boolean allowBoxing,
--                                  boolean useVarargs,
--                                  Warner warn) throws NoInstanceException {
-+                                  final List<Type> argtypes,
-+                                  final boolean allowBoxing,
-+                                  final boolean useVarargs,
-+                                  final Warner warn) throws InferenceException {
-         //-System.err.println("instantiateMethod(" + tvars + ", " + mt + ", " + argtypes + ")"); //DEBUG
-         List<Type> undetvars = Type.map(tvars, fromTypeVarFun);
-         List<Type> formals = mt.argtypes;
--
-+        //need to capture exactly once - otherwise subsequent
-+        //applicability checks might fail
-+        final List<Type> capturedArgs = types.capture(argtypes);
-+        List<Type> actuals = capturedArgs;
-+        List<Type> actualsNoCapture = argtypes;
-         // instantiate all polymorphic argument types and
-         // set up lower bounds constraints for undetvars
-         Type varargsFormal = useVarargs ? formals.last() : null;
--        while (argtypes.nonEmpty() && formals.head != varargsFormal) {
--            Type ft = formals.head;
--            Type at = argtypes.head.baseType();
--            if (at.tag == FORALL)
--                at = instantiateArg((ForAll) at, ft, tvars, warn);
--            Type sft = types.subst(ft, tvars, undetvars);
-+        while (actuals.nonEmpty() && formals.head != varargsFormal) {
-+            Type formal = formals.head;
-+            Type actual = actuals.head.baseType();
-+            Type actualNoCapture = actualsNoCapture.head.baseType();
-+            if (actual.tag == FORALL)
-+                actual = instantiateArg((ForAll)actual, formal, tvars, warn);
-+            Type undetFormal = types.subst(formal, tvars, undetvars);
-             boolean works = allowBoxing
--                ? types.isConvertible(at, sft, warn)
--                : types.isSubtypeUnchecked(at, sft, warn);
-+                ? types.isConvertible(actual, undetFormal, warn)
-+                : types.isSubtypeUnchecked(actual, undetFormal, warn);
-             if (!works) {
-                 throw unambiguousNoInstanceException
-                     .setMessage("no.conforming.assignment.exists",
--                                tvars, at, ft);
-+                                tvars, actualNoCapture, formal);
-             }
-             formals = formals.tail;
--            argtypes = argtypes.tail;
-+            actuals = actuals.tail;
-+            actualsNoCapture = actualsNoCapture.tail;
-         }
-         if (formals.head != varargsFormal || // not enough args
--            !useVarargs && argtypes.nonEmpty()) { // too many args
-+            !useVarargs && actuals.nonEmpty()) { // too many args
-             // argument lists differ in length
-             throw unambiguousNoInstanceException
-                 .setMessage("arg.length.mismatch");
-@@ -319,20 +334,21 @@
- 
-         // for varargs arguments as well
-         if (useVarargs) {
--            Type elt = types.elemtype(varargsFormal);
--            Type sft = types.subst(elt, tvars, undetvars);
--            while (argtypes.nonEmpty()) {
--                Type ft = sft;
--                Type at = argtypes.head.baseType();
--                if (at.tag == FORALL)
--                    at = instantiateArg((ForAll) at, ft, tvars, warn);
--                boolean works = types.isConvertible(at, sft, warn);
-+            Type elemType = types.elemtype(varargsFormal);
-+            Type elemUndet = types.subst(elemType, tvars, undetvars);
-+            while (actuals.nonEmpty()) {
-+                Type actual = actuals.head.baseType();
-+                Type actualNoCapture = actualsNoCapture.head.baseType();
-+                if (actual.tag == FORALL)
-+                    actual = instantiateArg((ForAll)actual, elemType, tvars, warn);
-+                boolean works = types.isConvertible(actual, elemUndet, warn);
-                 if (!works) {
-                     throw unambiguousNoInstanceException
-                         .setMessage("no.conforming.assignment.exists",
--                                    tvars, at, ft);
-+                                    tvars, actualNoCapture, elemType);
-                 }
--                argtypes = argtypes.tail;
-+                actuals = actuals.tail;
-+                actualsNoCapture = actualsNoCapture.tail;
-             }
-         }
- 
-@@ -363,16 +379,38 @@
-         }
-         checkWithinBounds(tvars, undettypes.toList(), warn);
- 
-+        mt = (MethodType)types.subst(mt, tvars, insttypes.toList());
-+
-         if (!restvars.isEmpty()) {
-             // if there are uninstantiated variables,
-             // quantify result type with them
--            mt = new MethodType(mt.argtypes,
--                                new ForAll(restvars.toList(), mt.restype),
--                                mt.thrown, syms.methodClass);
-+            final List<Type> inferredTypes = insttypes.toList();
-+            final List<Type> all_tvars = tvars; //this is the wrong tvars
-+            final MethodType mt2 = new MethodType(mt.argtypes, null, mt.thrown, syms.methodClass);
-+            mt2.restype = new ForAll(restvars.toList(), mt.restype) {
-+                @Override
-+                public Type inst(List<Type> inferred, Types types) throws NoInstanceException {
-+                    List<Type> formals = types.subst(mt2.argtypes, tvars, inferred);
-+                   if (!rs.argumentsAcceptable(capturedArgs, formals,
-+                           allowBoxing, useVarargs, warn)) {
-+                      // inferred method is not applicable
-+                      throw invalidInstanceException.setMessage("inferred.do.not.conform.to.params", formals, argtypes);
-+                   }
-+                   // check that inferred bounds conform to their bounds
-+                   checkWithinBounds(all_tvars,
-+                           types.subst(inferredTypes, tvars, inferred), warn);
-+                   return super.inst(inferred, types);
-+            }};
-+            return mt2;
-         }
--
--        // return instantiated version of method type
--        return types.subst(mt, tvars, insttypes.toList());
-+        else if (!rs.argumentsAcceptable(capturedArgs, mt.getParameterTypes(), allowBoxing, useVarargs, warn)) {
-+            // inferred method is not applicable
-+            throw invalidInstanceException.setMessage("inferred.do.not.conform.to.params", mt.getParameterTypes(), argtypes);
-+        }
-+        else {
-+            // return instantiated version of method type
-+            return mt;
-+        }
-     }
-     //where
- 
-@@ -384,7 +422,7 @@
-         private Type instantiateArg(ForAll that,
-                                     Type to,
-                                     List<Type> tvars,
--                                    Warner warn) throws NoInstanceException {
-+                                    Warner warn) throws InferenceException {
-             List<Type> targs;
-             try {
-                 return instantiateExpr(that, to, warn);
-@@ -401,16 +439,16 @@
-     private void checkWithinBounds(List<Type> tvars,
-                                    List<Type> arguments,
-                                    Warner warn)
--        throws NoInstanceException {
-+        throws InvalidInstanceException {
-         for (List<Type> tvs = tvars, args = arguments;
-              tvs.nonEmpty();
-              tvs = tvs.tail, args = args.tail) {
-             if (args.head instanceof UndetVar) continue;
-             List<Type> bounds = types.subst(types.getBounds((TypeVar)tvs.head), tvars, arguments);
-             if (!types.isSubtypeUnchecked(args.head, bounds, warn))
--                throw unambiguousNoInstanceException
-+                throw invalidInstanceException
-                     .setMessage("inferred.do.not.conform.to.bounds",
--                                arguments, tvars);
-+                                args.head, bounds);
-         }
-     }
- }
-diff -r 27f03394a69d -r c5fe15e03287 src/share/classes/com/sun/tools/javac/comp/Resolve.java
---- openjdk.orig/langtools/src/share/classes/com/sun/tools/javac/comp/Resolve.java	Wed Jun 23 16:44:15 2010 -0700
-+++ openjdk/langtools/src/share/classes/com/sun/tools/javac/comp/Resolve.java	Fri Sep 10 17:47:33 2010 +0100
-@@ -279,7 +279,7 @@
-                         boolean allowBoxing,
-                         boolean useVarargs,
-                         Warner warn)
--        throws Infer.NoInstanceException {
-+        throws Infer.InferenceException {
-         if (useVarargs && (m.flags() & VARARGS) == 0) return null;
-         Type mt = types.memberType(site, m);
- 
-@@ -350,7 +350,7 @@
-         try {
-             return rawInstantiate(env, site, m, argtypes, typeargtypes,
-                                   allowBoxing, useVarargs, warn);
--        } catch (Infer.NoInstanceException ex) {
-+        } catch (Infer.InferenceException ex) {
-             return null;
-         }
-     }
-@@ -562,7 +562,7 @@
-                 default: return bestSoFar;
-                 }
-             }
--        } catch (Infer.NoInstanceException ex) {
-+        } catch (Infer.InferenceException ex) {
-             switch (bestSoFar.kind) {
-             case ABSENT_MTH:
-                 return wrongMethod.setWrongSym(sym, ex.getDiagnostic());
-diff -r 27f03394a69d -r c5fe15e03287 src/share/classes/com/sun/tools/javac/resources/compiler.properties
---- openjdk.orig/langtools/src/share/classes/com/sun/tools/javac/resources/compiler.properties	Wed Jun 23 16:44:15 2010 -0700
-+++ openjdk/langtools/src/share/classes/com/sun/tools/javac/resources/compiler.properties	Fri Sep 10 17:47:33 2010 +0100
-@@ -454,6 +454,8 @@
-     type parameters of {0} cannot be determined
- compiler.err.undetermined.type.1=\
-     type parameters of {0} cannot be determined; {1}
-+compiler.err.invalid.inferred.types=\
-+    invalid inferred types for {0}; {1}
- compiler.err.unreachable.stmt=\
-     unreachable statement
- compiler.err.initializer.must.be.able.to.complete.normally=\
-@@ -960,7 +962,13 @@
- compiler.misc.arg.length.mismatch=\
-     cannot instantiate from arguments because actual and formal argument lists differ in length
- compiler.misc.inferred.do.not.conform.to.bounds=\
--    inferred type argument(s) {0} do not conform to bounds of type variable(s) {1}
-+    inferred type does not conform to declared bound(s)\n\
-+    inferred: {0}\n\
-+    bound(s): {1}
-+compiler.misc.inferred.do.not.conform.to.params=\
-+    actual arguments do not conforms to inferred formal arguments\n\
-+    required: {0}\n\
-+    found: {1}
- 
- #####
- 
-diff -r 27f03394a69d -r c5fe15e03287 test/tools/javac/generics/inference/6302954/T6476073.java
---- openjdk.orig/langtools/test/tools/javac/generics/inference/6302954/T6476073.java	Wed Jun 23 16:44:15 2010 -0700
-+++ openjdk/langtools/test/tools/javac/generics/inference/6302954/T6476073.java	Fri Sep 10 17:47:33 2010 +0100
-@@ -25,6 +25,7 @@
-  * @test
-  * @bug     6476073
-  * @summary Capture using super wildcard of type variables doesn't work
-+ * @ignore awaiting for 6650759 (see bug report for a detailed evaluation)
-  * @compile T6476073.java
-  */
- 
-diff -r 27f03394a69d -r c5fe15e03287 test/tools/javac/generics/inference/6638712/T6638712a.java
---- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ openjdk/langtools/test/tools/javac/generics/inference/6638712/T6638712a.java	Fri Sep 10 17:47:33 2010 +0100
-@@ -0,0 +1,18 @@
-+/*
-+ * @test /nodynamiccopyright/
-+ * @bug     6638712
-+ * @author  mcimadamore
-+ * @summary Inference with wildcard types causes selection of inapplicable method
-+ * @compile/fail/ref=T6638712a.out -XDrawDiagnostics T6638712a.java
-+ */
-+
-+import java.util.*;
-+
-+class T6638712a {
-+
-+    <T> Comparator<T> compound(Iterable<? extends Comparator<? super T>> it) {}
-+
-+    public void test(List<Comparator<?>> x) {
-+        Comparator<String> c3 = compound(x);
-+    }
-+}
-diff -r 27f03394a69d -r c5fe15e03287 test/tools/javac/generics/inference/6638712/T6638712a.out
---- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ openjdk/langtools/test/tools/javac/generics/inference/6638712/T6638712a.out	Fri Sep 10 17:47:33 2010 +0100
-@@ -0,0 +1,2 @@
-+T6638712a.java:39:41: compiler.err.invalid.inferred.types: T, (- compiler.misc.inferred.do.not.conform.to.params: java.lang.Iterable<? extends java.util.Comparator<? super java.lang.String>>, java.util.List<java.util.Comparator<?>>)
-+1 error
-diff -r 27f03394a69d -r c5fe15e03287 test/tools/javac/generics/inference/6638712/T6638712b.java
---- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ openjdk/langtools/test/tools/javac/generics/inference/6638712/T6638712b.java	Fri Sep 10 17:47:33 2010 +0100
-@@ -0,0 +1,16 @@
-+/*
-+ * @test /nodynamiccopyright/
-+ * @bug     6638712
-+ * @author  mcimadamore
-+ * @summary Inference with wildcard types causes selection of inapplicable method
-+ * @compile/fail/ref=T6638712b.out -XDrawDiagnostics T6638712b.java
-+ */
-+
-+class T6638712b<X> {
-+
-+    <I extends T6638712b<T>, T> T m(I test) { return null; }
-+
-+    void test(T6638712b<Integer> x) {
-+        String i = m(x);
-+    }
-+}
-diff -r 27f03394a69d -r c5fe15e03287 test/tools/javac/generics/inference/6638712/T6638712b.out
---- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ openjdk/langtools/test/tools/javac/generics/inference/6638712/T6638712b.out	Fri Sep 10 17:47:33 2010 +0100
-@@ -0,0 +1,2 @@
-+T6638712b.java:37:21: compiler.err.prob.found.req: (- compiler.misc.incompatible.types.1: (- compiler.misc.no.conforming.instance.exists: T, T, java.lang.String)), <T>T, java.lang.String
-+1 error
-diff -r 27f03394a69d -r c5fe15e03287 test/tools/javac/generics/inference/6638712/T6638712c.java
---- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ openjdk/langtools/test/tools/javac/generics/inference/6638712/T6638712c.java	Fri Sep 10 17:47:33 2010 +0100
-@@ -0,0 +1,18 @@
-+/*
-+ * @test /nodynamiccopyright/
-+ * @bug     6638712 6707034
-+ * @author  mcimadamore
-+ * @summary Inference with wildcard types causes selection of inapplicable method
-+ * @compile/fail/ref=T6638712c.out -XDrawDiagnostics T6638712c.java
-+ */
-+
-+import java.util.*;
-+
-+class T6638712c {
-+
-+    <T> T sort(T[] a, Comparator<? super T> c) { return null; }
-+
-+    void test(Enum[] e, Comparator<Enum<?>> comp) {
-+        sort(e, comp);
-+    }
-+}
-diff -r 27f03394a69d -r c5fe15e03287 test/tools/javac/generics/inference/6638712/T6638712c.out
---- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ openjdk/langtools/test/tools/javac/generics/inference/6638712/T6638712c.out	Fri Sep 10 17:47:33 2010 +0100
-@@ -0,0 +1,2 @@
-+T6638712c.java:39:9: compiler.err.cant.apply.symbol: <T>sort(T[],java.util.Comparator<? super T>), T6638712c, , java.lang.Enum[],java.util.Comparator<java.lang.Enum<?>>, null
-+1 error
-diff -r 27f03394a69d -r c5fe15e03287 test/tools/javac/generics/inference/6638712/T6638712d.java
---- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ openjdk/langtools/test/tools/javac/generics/inference/6638712/T6638712d.java	Fri Sep 10 17:47:33 2010 +0100
-@@ -0,0 +1,18 @@
-+/*
-+ * @test /nodynamiccopyright/
-+ * @bug     6638712 6730468
-+ * @author  mcimadamore
-+ * @summary Inference with wildcard types causes selection of inapplicable method
-+ * @compile/fail/ref=T6638712d.out -XDrawDiagnostics T6638712d.java
-+ */
-+
-+import java.util.*;
-+
-+public class T6638712d {
-+
-+    <U> U m(U u, List<List<U>> list) { return null; }
-+
-+    void test(List<List<String>> lls) {
-+        m(1, lls);
-+    }
-+}
-diff -r 27f03394a69d -r c5fe15e03287 test/tools/javac/generics/inference/6638712/T6638712d.out
---- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ openjdk/langtools/test/tools/javac/generics/inference/6638712/T6638712d.out	Fri Sep 10 17:47:33 2010 +0100
-@@ -0,0 +1,2 @@
-+T6638712d.java:39:9: compiler.err.cant.apply.symbol: <U>m(U,java.util.List<java.util.List<U>>), T6638712d, , int,java.util.List<java.util.List<java.lang.String>>, null
-+1 error
-diff -r 27f03394a69d -r c5fe15e03287 test/tools/javac/generics/inference/6638712/T6638712e.java
---- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ openjdk/langtools/test/tools/javac/generics/inference/6638712/T6638712e.java	Fri Sep 10 17:47:33 2010 +0100
-@@ -0,0 +1,20 @@
-+/*
-+ * @test /nodynamiccopyright/
-+ * @bug     6638712 6795689
-+ * @author  mcimadamore
-+ * @summary Inference with wildcard types causes selection of inapplicable method
-+ * @compile/fail/ref=T6638712e.out -XDrawDiagnostics T6638712e.java
-+ */
-+
-+class T6638712e {
-+
-+    static class Foo<A, B> {
-+        <X> Foo<X, B> m(Foo<? super X, ? extends A> foo) { return null;}
-+    }
-+
-+    static class Test {
-+        Foo<Object, String> test(Foo<Boolean, String> foo1, Foo<Boolean, Boolean> foo2) {
-+             return foo1.m(foo2);
-+        }
-+    }
-+}
-diff -r 27f03394a69d -r c5fe15e03287 test/tools/javac/generics/inference/6638712/T6638712e.out
---- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ openjdk/langtools/test/tools/javac/generics/inference/6638712/T6638712e.out	Fri Sep 10 17:47:33 2010 +0100
-@@ -0,0 +1,2 @@
-+T6638712e.java:40:27: compiler.err.prob.found.req: (- compiler.misc.incompatible.types.1: (- compiler.misc.no.conforming.instance.exists: X, T6638712e.Foo<X,java.lang.String>, T6638712e.Foo<java.lang.Object,java.lang.String>)), <X>T6638712e.Foo<X,java.lang.String>, T6638712e.Foo<java.lang.Object,java.lang.String>
-+1 error
--- a/patches/openjdk/6650759-missing_inference.patch	Wed May 28 12:25:46 2014 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,884 +0,0 @@
-diff -Nru openjdk.orig/langtools/src/share/classes/com/sun/tools/javac/code/Type.java openjdk/langtools/src/share/classes/com/sun/tools/javac/code/Type.java
---- openjdk.orig/langtools/src/share/classes/com/sun/tools/javac/code/Type.java	2010-09-09 20:03:34.000000000 +0100
-+++ openjdk/langtools/src/share/classes/com/sun/tools/javac/code/Type.java	2010-09-09 20:24:56.236744893 +0100
-@@ -1063,7 +1063,7 @@
- 
-         /**
-          * Replaces this ForAll's typevars with a set of concrete Java types
--         * and returns the instantiated generic type. Subclasses might override
-+         * and returns the instantiated generic type. Subclasses should override
-          * in order to check that the list of types is a valid instantiation
-          * of the ForAll's typevars.
-          *
-@@ -1076,6 +1076,42 @@
-             return types.subst(qtype, tvars, actuals);
-         }
- 
-+        /**
-+         * Kind of type-constraint derived during type inference
-+         */
-+        public enum ConstraintKind {
-+            /**
-+             * upper bound constraint (a type variable must be instantiated
-+             * with a type T, where T is a subtype of all the types specified by
-+             * its EXTENDS constraints).
-+             */
-+            EXTENDS,
-+            /**
-+             * lower bound constraint (a type variable must be instantiated
-+             * with a type T, where T is a supertype of all the types specified by
-+             * its SUPER constraints).
-+             */
-+            SUPER,
-+            /**
-+             * equality constraint (a type variable must be instantiated to the type
-+             * specified by its EQUAL constraint.
-+             */
-+            EQUAL;
-+        }
-+
-+        /**
-+         * Get the type-constraints of a given kind for a given type-variable of
-+         * this ForAll type. Subclasses should override in order to return more
-+         * accurate sets of constraints.
-+         *
-+         * @param tv the type-variable for which the constraint is to be retrieved
-+         * @param ck the constraint kind to be retrieved
-+         * @return the list of types specified by the selected constraint
-+         */
-+        public List<Type> getConstraints(TypeVar tv, ConstraintKind ck) {
-+            return List.nil();
-+        }
-+
-         public Type map(Mapping f) {
-             return f.apply(qtype);
-         }
-diff -Nru openjdk.orig/langtools/src/share/classes/com/sun/tools/javac/comp/Infer.java openjdk/langtools/src/share/classes/com/sun/tools/javac/comp/Infer.java
---- openjdk.orig/langtools/src/share/classes/com/sun/tools/javac/comp/Infer.java	2010-09-09 20:03:34.000000000 +0100
-+++ openjdk/langtools/src/share/classes/com/sun/tools/javac/comp/Infer.java	2010-09-09 20:25:15.752817376 +0100
-@@ -29,6 +29,7 @@
- import com.sun.tools.javac.util.List;
- import com.sun.tools.javac.code.*;
- import com.sun.tools.javac.code.Type.*;
-+import com.sun.tools.javac.code.Type.ForAll.ConstraintKind;
- import com.sun.tools.javac.code.Symbol.*;
- 
- import static com.sun.tools.javac.code.Flags.*;
-@@ -51,6 +52,7 @@
- 
-     Symtab syms;
-     Types types;
-+    Check chk;
-     Resolve rs;
- 
-     public static Infer instance(Context context) {
-@@ -65,6 +67,7 @@
-         syms = Symtab.instance(context);
-         types = Types.instance(context);
-         rs = Resolve.instance(context);
-+        chk = Check.instance(context);
-     }
- 
-     public static class InferenceException extends RuntimeException {
-@@ -260,14 +263,19 @@
-                                 Warner warn) throws InferenceException {
-         List<Type> undetvars = Type.map(that.tvars, fromTypeVarFun);
-         for (List<Type> l = undetvars; l.nonEmpty(); l = l.tail) {
--            UndetVar v = (UndetVar) l.head;
-+            UndetVar uv = (UndetVar) l.head;
-+            TypeVar tv = (TypeVar)uv.qtype;
-             ListBuffer<Type> hibounds = new ListBuffer<Type>();
--            for (List<Type> l1 = types.getBounds((TypeVar) v.qtype); l1.nonEmpty(); l1 = l1.tail) {
--                if (!l1.head.containsSome(that.tvars)) {
--                    hibounds.append(l1.head);
-+            for (Type t : that.getConstraints(tv, ConstraintKind.EXTENDS).prependList(types.getBounds(tv))) {
-+                if (!t.containsSome(that.tvars) && t.tag != BOT) {
-+                    hibounds.append(t);
-                 }
-             }
--            v.hibounds = hibounds.toList();
-+            List<Type> inst = that.getConstraints(tv, ConstraintKind.EQUAL);
-+            if (inst.nonEmpty() && inst.head.tag != BOT) {
-+                uv.inst = inst.head;
-+            }
-+            uv.hibounds = hibounds.toList();
-         }
-         Type qtype1 = types.subst(that.qtype, that.tvars, undetvars);
-         if (!types.isSubtype(qtype1, to)) {
-@@ -283,7 +291,7 @@
-         List<Type> targs = Type.map(undetvars, getInstFun);
-         targs = types.subst(targs, that.tvars, targs);
-         checkWithinBounds(that.tvars, targs, warn);
--        return that.inst(targs, types);
-+        return chk.checkType(warn.pos(), that.inst(targs, types), to);
-     }
- 
-     /** Instantiate method type `mt' by finding instantiations of
-@@ -359,6 +367,9 @@
-         /** Type variables instantiated to bottom */
-         ListBuffer<Type> restvars = new ListBuffer<Type>();
- 
-+        /** Undet vars instantiated to bottom */
-+        final ListBuffer<Type> restundet = new ListBuffer<Type>();
-+
-         /** Instantiated types or TypeVars if under-constrained */
-         ListBuffer<Type> insttypes = new ListBuffer<Type>();
- 
-@@ -369,6 +380,7 @@
-             UndetVar uv = (UndetVar)t;
-             if (uv.inst.tag == BOT) {
-                 restvars.append(uv.qtype);
-+                restundet.append(uv);
-                 insttypes.append(uv.qtype);
-                 undettypes.append(uv);
-                 uv.inst = null;
-@@ -389,17 +401,32 @@
-             final MethodType mt2 = new MethodType(mt.argtypes, null, mt.thrown, syms.methodClass);
-             mt2.restype = new ForAll(restvars.toList(), mt.restype) {
-                 @Override
-+                public List<Type> getConstraints(TypeVar tv, ConstraintKind ck) {
-+                    for (Type t : restundet.toList()) {
-+                        UndetVar uv = (UndetVar)t;
-+                        if (uv.qtype == tv) {
-+                            switch (ck) {
-+                                case EXTENDS: return uv.hibounds;
-+                                case SUPER: return uv.lobounds;
-+                                case EQUAL: return uv.inst != null ? List.of(uv.inst) : List.<Type>nil();
-+                            }
-+                        }
-+                    }
-+                    return List.nil();
-+                }
-+
-+                @Override
-                 public Type inst(List<Type> inferred, Types types) throws NoInstanceException {
-                     List<Type> formals = types.subst(mt2.argtypes, tvars, inferred);
--                   if (!rs.argumentsAcceptable(capturedArgs, formals,
-+                    if (!rs.argumentsAcceptable(capturedArgs, formals,
-                            allowBoxing, useVarargs, warn)) {
-                       // inferred method is not applicable
-                       throw invalidInstanceException.setMessage("inferred.do.not.conform.to.params", formals, argtypes);
--                   }
--                   // check that inferred bounds conform to their bounds
--                   checkWithinBounds(all_tvars,
-+                    }
-+                    // check that inferred bounds conform to their bounds
-+                    checkWithinBounds(all_tvars,
-                            types.subst(inferredTypes, tvars, inferred), warn);
--                   return super.inst(inferred, types);
-+                    return super.inst(inferred, types);
-             }};
-             return mt2;
-         }
-diff -Nru openjdk.orig/langtools/test/tools/javac/generics/inference/6302954/T6476073.java openjdk/langtools/test/tools/javac/generics/inference/6302954/T6476073.java
---- openjdk.orig/langtools/test/tools/javac/generics/inference/6302954/T6476073.java	2010-09-09 20:03:34.000000000 +0100
-+++ openjdk/langtools/test/tools/javac/generics/inference/6302954/T6476073.java	2010-09-09 20:24:56.236744893 +0100
-@@ -25,7 +25,6 @@
-  * @test
-  * @bug     6476073
-  * @summary Capture using super wildcard of type variables doesn't work
-- * @ignore awaiting for 6650759 (see bug report for a detailed evaluation)
-  * @compile T6476073.java
-  */
- 
-diff -Nru openjdk.orig/langtools/test/tools/javac/generics/inference/6650759/T6650759a.java openjdk/langtools/test/tools/javac/generics/inference/6650759/T6650759a.java
---- openjdk.orig/langtools/test/tools/javac/generics/inference/6650759/T6650759a.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/langtools/test/tools/javac/generics/inference/6650759/T6650759a.java	2010-09-09 20:24:56.248744934 +0100
-@@ -0,0 +1,45 @@
-+/*
-+ * Copyright 2009 Sun Microsystems, Inc.  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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
-+ * CA 95054 USA or visit www.sun.com if you need additional information or
-+ * have any questions.
-+ */
-+
-+/*
-+ * @test
-+ * @bug     6650759
-+ * @author  mcimadamore
-+ * @summary Inference of formal type parameter (unused in formal parameters) is not performed
-+ * @compile T6650759a.java
-+ */
-+
-+class T6650759a {
-+
-+    public static interface Interface<T> { }
-+    public static class IntegerInterface implements Interface<Integer> { }
-+
-+    <I extends Interface<T>, T> T getGenericValue(I test) { return null; }
-+
-+    void testSet(Integer test) { }
-+
-+    void test() {
-+        Integer test = getGenericValue(new IntegerInterface());
-+        testSet(getGenericValue(new IntegerInterface()));
-+    }
-+}
-\ No newline at end of file
-diff -Nru openjdk.orig/langtools/test/tools/javac/generics/inference/6650759/T6650759b.java openjdk/langtools/test/tools/javac/generics/inference/6650759/T6650759b.java
---- openjdk.orig/langtools/test/tools/javac/generics/inference/6650759/T6650759b.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/langtools/test/tools/javac/generics/inference/6650759/T6650759b.java	2010-09-09 20:24:56.248744934 +0100
-@@ -0,0 +1,52 @@
-+/*
-+ * Copyright 2009 Sun Microsystems, Inc.  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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
-+ * CA 95054 USA or visit www.sun.com if you need additional information or
-+ * have any questions.
-+ */
-+
-+/*
-+ * @test
-+ * @bug     6650759
-+ * @author  mcimadamore
-+ * @summary Inference of formal type parameter (unused in formal parameters) is not performed
-+ * @compile T6650759b.java
-+ */
-+
-+public class T6650759b {
-+
-+    interface A<X extends A<X, Y>, Y extends B<X>> {}
-+
-+    static class B<X extends A<X, ?>> {}
-+
-+    interface C<X extends A<X, Y>, Y extends B<X>> {}
-+
-+    interface D<X extends A<X, Y>, Y extends B<X>> {}
-+
-+    static class E<X extends A<X, Y>, Y extends B<X>, W extends C<X, Y>> implements D<X, Y> {
-+
-+        static <X extends A<X, Y>, Y extends B<X>, W extends C<X, Y>> D<X, Y> of(W w) {
-+            return null;
-+        }
-+    }
-+
-+    <X extends A<X, Y>, Y extends B<X>, W extends C<X, Y>, Z extends D<X, Y>> Z test(W w) {
-+        return (Z) E.of(w);
-+    }
-+}
-diff -Nru openjdk.orig/langtools/test/tools/javac/generics/inference/6650759/T6650759c.java openjdk/langtools/test/tools/javac/generics/inference/6650759/T6650759c.java
---- openjdk.orig/langtools/test/tools/javac/generics/inference/6650759/T6650759c.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/langtools/test/tools/javac/generics/inference/6650759/T6650759c.java	2010-09-09 20:24:56.248744934 +0100
-@@ -0,0 +1,49 @@
-+/*
-+ * Copyright 2009 Sun Microsystems, Inc.  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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
-+ * CA 95054 USA or visit www.sun.com if you need additional information or
-+ * have any questions.
-+ */
-+
-+/*
-+ * @test
-+ * @bug     6650759
-+ * @summary Inference of formal type parameter (unused in formal parameters) is not performed
-+ * @compile T6650759c.java
-+ */
-+
-+import java.util.Collection;
-+import java.util.Collections;
-+
-+public class T6650759c {
-+
-+  static interface A {}
-+
-+  static interface B<X extends A> {}
-+
-+  static interface C<X extends A, Y extends B<X>> {}
-+
-+  public static <T extends A, U extends B<T>> Collection<C<T,U>> get(U u) {
-+    return null;
-+  }
-+
-+  public <T extends A, U extends B<T>> Collection<C<T,U>> test(U u) {
-+    return Collections.unmodifiableCollection(get(u));
-+  }
-+}
-diff -Nru openjdk.orig/langtools/test/tools/javac/generics/inference/6650759/T6650759d.java openjdk/langtools/test/tools/javac/generics/inference/6650759/T6650759d.java
---- openjdk.orig/langtools/test/tools/javac/generics/inference/6650759/T6650759d.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/langtools/test/tools/javac/generics/inference/6650759/T6650759d.java	2010-09-09 20:24:56.248744934 +0100
-@@ -0,0 +1,51 @@
-+/*
-+ * Copyright 2009 Sun Microsystems, Inc.  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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
-+ * CA 95054 USA or visit www.sun.com if you need additional information or
-+ * have any questions.
-+ */
-+
-+/*
-+ * @test
-+ * @bug     6650759
-+ * @summary Inference of formal type parameter (unused in formal parameters) is not performed
-+ * @compile T6650759d.java
-+ */
-+
-+public class T6650759d {
-+
-+    static abstract class A<X> {
-+
-+        static <T> A<T> m(Iterable<? extends T> elements) {
-+            return null;
-+        }
-+    }
-+
-+    static abstract class B {}
-+
-+    static abstract class C<X extends B> {}
-+
-+    <U extends C<V>, V extends B> Iterable<V> get(U u) {
-+        return null;
-+    }
-+
-+    <U extends C<V>, V extends B> void m(U u) {
-+        A<V> a = A.m(get(u));
-+    }
-+}
-diff -Nru openjdk.orig/langtools/test/tools/javac/generics/inference/6650759/T6650759e.java openjdk/langtools/test/tools/javac/generics/inference/6650759/T6650759e.java
---- openjdk.orig/langtools/test/tools/javac/generics/inference/6650759/T6650759e.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/langtools/test/tools/javac/generics/inference/6650759/T6650759e.java	2010-09-09 20:24:56.248744934 +0100
-@@ -0,0 +1,52 @@
-+/*
-+ * Copyright 2009 Sun Microsystems, Inc.  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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
-+ * CA 95054 USA or visit www.sun.com if you need additional information or
-+ * have any questions.
-+ */
-+
-+/*
-+ * @test
-+ * @bug     6650759
-+ * @summary Inference of formal type parameter (unused in formal parameters) is not performed
-+ * @compile T6650759e.java
-+ */
-+
-+import java.util.List;
-+
-+public class T6650759e {
-+
-+    static abstract class A<X extends B> {}
-+
-+    interface B<X extends A> extends D {}
-+
-+    static abstract class C<X extends D> {}
-+
-+    interface D {}
-+
-+    static abstract class E<X extends C<? extends B<?>>> {}
-+
-+    <U extends C<V>, V extends B<W>, W extends A<V>> W m1(E<U> e) {
-+        return m2(e);
-+    }
-+
-+    <U extends C<V>, V extends B<W>, W extends A<V>> W m2(E<U> e) {
-+        return null;
-+    }
-+}
-diff -Nru openjdk.orig/langtools/test/tools/javac/generics/inference/6650759/T6650759f.java openjdk/langtools/test/tools/javac/generics/inference/6650759/T6650759f.java
---- openjdk.orig/langtools/test/tools/javac/generics/inference/6650759/T6650759f.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/langtools/test/tools/javac/generics/inference/6650759/T6650759f.java	2010-09-09 20:24:56.248744934 +0100
-@@ -0,0 +1,50 @@
-+/*
-+ * Copyright 2009 Sun Microsystems, Inc.  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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
-+ * CA 95054 USA or visit www.sun.com if you need additional information or
-+ * have any questions.
-+ */
-+
-+/*
-+ * @test
-+ * @bug     6650759
-+ * @summary Inference of formal type parameter (unused in formal parameters) is not performed
-+ * @compile T6650759f.java
-+ */
-+
-+import java.util.Collections;
-+
-+public class T6650759f {
-+
-+    interface A<X extends A> {}
-+
-+    static abstract class B<X extends B> implements A<X> {}
-+
-+    static abstract class C<X extends D> extends B<X> {}
-+
-+    static class D extends C<D> {}
-+
-+    <X extends B, Y extends B<X>> Iterable<X> m(Y node) {
-+        return null;
-+    }
-+
-+    public void test(D d) {
-+        Iterable<D> ops = (true) ? Collections.singletonList(d) : m(d);
-+    }
-+}
-diff -Nru openjdk.orig/langtools/test/tools/javac/generics/inference/6650759/T6650759g.java openjdk/langtools/test/tools/javac/generics/inference/6650759/T6650759g.java
---- openjdk.orig/langtools/test/tools/javac/generics/inference/6650759/T6650759g.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/langtools/test/tools/javac/generics/inference/6650759/T6650759g.java	2010-09-09 20:24:56.248744934 +0100
-@@ -0,0 +1,59 @@
-+/*
-+ * Copyright 2009 Sun Microsystems, Inc.  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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
-+ * CA 95054 USA or visit www.sun.com if you need additional information or
-+ * have any questions.
-+ */
-+
-+/*
-+ * @test
-+ * @bug     6650759
-+ * @summary Inference of formal type parameter (unused in formal parameters) is not performed
-+ * @compile T6650759g.java
-+ */
-+
-+public class T6650759g {
-+
-+    static abstract class A<X extends A<X>> {}
-+
-+    static abstract class B<X extends A<X>> {}
-+
-+    interface C<X, Y> {}
-+
-+    static abstract class D<X extends A<X>, Y extends B<X>> implements C<X, Y> {}
-+
-+    static class E extends A<E> {}
-+
-+    static class F extends B<E> {}
-+
-+    static void test(Iterable<E> data) {
-+        m3(m2(data, m1(F.class)));
-+    }
-+
-+    static <X extends A<X>, Y extends B<X>> D<X, Y> m1(Class<Y> c) {
-+        return null;
-+    }
-+
-+    static <U, V> Iterable<V> m2(Iterable<U> x1, C<? super U, ? extends V> x2) {
-+        return null;
-+    }
-+
-+    static void m3(Iterable<F> data) {
-+    }
-+}
-diff -Nru openjdk.orig/langtools/test/tools/javac/generics/inference/6650759/T6650759h.java openjdk/langtools/test/tools/javac/generics/inference/6650759/T6650759h.java
---- openjdk.orig/langtools/test/tools/javac/generics/inference/6650759/T6650759h.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/langtools/test/tools/javac/generics/inference/6650759/T6650759h.java	2010-09-09 20:24:56.248744934 +0100
-@@ -0,0 +1,39 @@
-+/*
-+ * Copyright 2009 Sun Microsystems, Inc.  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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
-+ * CA 95054 USA or visit www.sun.com if you need additional information or
-+ * have any questions.
-+ */
-+
-+/*
-+ * @test
-+ * @bug     6650759
-+ * @summary Inference of formal type parameter (unused in formal parameters) is not performed
-+ * @compile T6650759h.java
-+ */
-+class T6650759h<X, Y> {
-+
-+    <A> Object m(A a, T6650759h<?, ? super A> t) {
-+        return null;
-+    }
-+
-+    void test(T6650759h<?, Void> t) {
-+        m(null, t);
-+    }
-+}
-diff -Nru openjdk.orig/langtools/test/tools/javac/generics/inference/6650759/T6650759i.java openjdk/langtools/test/tools/javac/generics/inference/6650759/T6650759i.java
---- openjdk.orig/langtools/test/tools/javac/generics/inference/6650759/T6650759i.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/langtools/test/tools/javac/generics/inference/6650759/T6650759i.java	2010-09-09 20:24:56.248744934 +0100
-@@ -0,0 +1,54 @@
-+/*
-+ * Copyright 2009 Sun Microsystems, Inc.  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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
-+ * CA 95054 USA or visit www.sun.com if you need additional information or
-+ * have any questions.
-+ */
-+
-+/*
-+ * @test
-+ * @bug     6650759
-+ * @summary Inference of formal type parameter (unused in formal parameters) is not performed
-+ * @compile T6650759i.java
-+ */
-+public class T6650759i {
-+
-+    static class A<X extends A, Y extends B> {}
-+
-+    static class B<X extends B> {}
-+
-+    static class C<X extends A<X, Y>, Y extends B<Y>> {}
-+
-+    static <U extends A<U, V>, V extends B<V>> Class<U> m1(U x) {
-+        return null;
-+    }
-+
-+    static <U extends A<U, V>, V extends B<V>> U m2(Class<U> c) {
-+        return null;
-+    }
-+
-+    static <W, U extends A<U, V>, V extends B<V>> W m3(Class<W> c1, C<U, V> c2) {
-+        return null;
-+    }
-+
-+    static <U extends A<U, V>, V extends B<V>> void test(U u, C<U, V> c) {
-+        m2(m1(u));
-+        U res = m3(m1(u), c);
-+    }
-+}
-diff -Nru openjdk.orig/langtools/test/tools/javac/generics/inference/6650759/T6650759j.java openjdk/langtools/test/tools/javac/generics/inference/6650759/T6650759j.java
---- openjdk.orig/langtools/test/tools/javac/generics/inference/6650759/T6650759j.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/langtools/test/tools/javac/generics/inference/6650759/T6650759j.java	2010-09-09 20:24:56.248744934 +0100
-@@ -0,0 +1,54 @@
-+/*
-+ * Copyright 2009 Sun Microsystems, Inc.  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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
-+ * CA 95054 USA or visit www.sun.com if you need additional information or
-+ * have any questions.
-+ */
-+
-+/*
-+ * @test
-+ * @bug     6650759
-+ * @summary Inference of formal type parameter (unused in formal parameters) is not performed
-+ * @compile T6650759j.java
-+ */
-+
-+public class T6650759j {
-+
-+    static abstract class A<X extends A<X>> {}
-+
-+    static abstract class B<X extends B<X, Y>, Y> extends A<X> {}
-+
-+    static abstract class C<X extends C<X, Y>, Y> extends B<X, Y> {}
-+
-+    interface D {}
-+
-+    static class E extends C<E, D> {}
-+
-+    static abstract class F<X extends F<X, Y>, Y extends A<Y>> extends A<X> {}
-+
-+    static class G extends F<G, E> {}
-+
-+    static <X extends F<X, Y>, Y extends A<Y>> X m(Iterable<X> it) {
-+        return null;
-+    }
-+
-+    static G test(Iterable<G> c) {
-+        return m(c);
-+    }
-+}
-diff -Nru openjdk.orig/langtools/test/tools/javac/generics/inference/6650759/T6650759k.java openjdk/langtools/test/tools/javac/generics/inference/6650759/T6650759k.java
---- openjdk.orig/langtools/test/tools/javac/generics/inference/6650759/T6650759k.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/langtools/test/tools/javac/generics/inference/6650759/T6650759k.java	2010-09-09 20:24:56.248744935 +0100
-@@ -0,0 +1,44 @@
-+/*
-+ * Copyright 2009 Sun Microsystems, Inc.  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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
-+ * CA 95054 USA or visit www.sun.com if you need additional information or
-+ * have any questions.
-+ */
-+
-+/*
-+ * @test
-+ * @bug     6650759
-+ * @summary Inference of formal type parameter (unused in formal parameters) is not performed
-+ * @compile T6650759k.java
-+ */
-+
-+public class T6650759k {
-+
-+    static class A<X extends A> {}
-+
-+    static class B<X extends B, Y extends A> {}
-+
-+    <U extends A<U>, V extends B<V, U>> Object m(Class<V> c) {
-+        return null;
-+    }
-+
-+    <U extends A<U>, V extends B<V, U>> void test(Class<V> c) {
-+        m(c);
-+    }
-+}
-diff -Nru openjdk.orig/langtools/test/tools/javac/generics/inference/6650759/T6650759l.java openjdk/langtools/test/tools/javac/generics/inference/6650759/T6650759l.java
---- openjdk.orig/langtools/test/tools/javac/generics/inference/6650759/T6650759l.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/langtools/test/tools/javac/generics/inference/6650759/T6650759l.java	2010-09-09 20:24:56.248744935 +0100
-@@ -0,0 +1,46 @@
-+/*
-+ * Copyright 2009 Sun Microsystems, Inc.  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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
-+ * CA 95054 USA or visit www.sun.com if you need additional information or
-+ * have any questions.
-+ */
-+
-+/*
-+ * @test
-+ * @bug     6650759
-+ * @summary Inference of formal type parameter (unused in formal parameters) is not performed
-+ * @compile T6650759l.java
-+ */
-+
-+public class T6650759l {
-+
-+    public static interface A<X> {}
-+
-+    public static class B implements A<Integer> {}
-+
-+    public static <X extends A<Y>, Y> Y m1(X x) {
-+        return null;
-+    }
-+
-+    public static void m2(Integer i) {}
-+
-+    public static void test(B b) {
-+        m2(m1(b));
-+    }
-+}
-diff -Nru openjdk.orig/langtools/test/tools/javac/generics/inference/6650759/T6650759m.java openjdk/langtools/test/tools/javac/generics/inference/6650759/T6650759m.java
---- openjdk.orig/langtools/test/tools/javac/generics/inference/6650759/T6650759m.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/langtools/test/tools/javac/generics/inference/6650759/T6650759m.java	2010-09-09 20:24:56.248744935 +0100
-@@ -0,0 +1,47 @@
-+/*
-+ * Copyright 2009 Sun Microsystems, Inc.  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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
-+ * CA 95054 USA or visit www.sun.com if you need additional information or
-+ * have any questions.
-+ */
-+
-+/*
-+ * @test
-+ * @bug     6650759
-+ * @summary Inference of formal type parameter (unused in formal parameters) is not performed
-+ * @compile/fail/ref=T6650759m.out T6650759m.java -XDrawDiagnostics
-+ */
-+
-+import java.util.*;
-+
-+class T6650759m {
-+    <Z> List<? super Z> m(List<? extends List<? super Z>> ls) {
-+        return ls.get(0);
-+    }
-+
-+    void test() {
-+        ArrayList<ArrayList<Integer>> lli = new ArrayList<ArrayList<Integer>>();
-+        ArrayList<Integer> li = new ArrayList<Integer>();
-+        li.add(2);
-+        lli.add(li);
-+        List<? super String> ls = m(lli); //here
-+        ls.add("crash");
-+        Integer i = li.get(1);
-+    }
-+}
-diff -Nru openjdk.orig/langtools/test/tools/javac/generics/inference/6650759/T6650759m.out openjdk/langtools/test/tools/javac/generics/inference/6650759/T6650759m.out
---- openjdk.orig/langtools/test/tools/javac/generics/inference/6650759/T6650759m.out	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/langtools/test/tools/javac/generics/inference/6650759/T6650759m.out	2010-09-09 20:24:56.248744935 +0100
-@@ -0,0 +1,2 @@
-+T6650759m.java:43:36: compiler.err.prob.found.req: (compiler.misc.incompatible.types), java.util.List<? super java.lang.Integer>, java.util.List<? super java.lang.String>
-+1 error
--- a/patches/openjdk/6729772-opt_cleanup.patch	Wed May 28 12:25:46 2014 +0100
+++ b/patches/openjdk/6729772-opt_cleanup.patch	Tue Jul 15 16:04:35 2014 +0100
@@ -447,146 +447,6 @@
  #
  # Path and option to link against the VM, if you have to.  Note that
  # there are libraries that link against only -ljava, but they do get
-diff --git a/make/common/Defs-windows.gmk b/make/common/Defs-windows.gmk
---- openjdk/jdk/make/common/Defs-windows.gmk
-+++ openjdk/jdk/make/common/Defs-windows.gmk
-@@ -84,6 +84,15 @@
- #
- # Default optimization
- #
-+
-+ifndef OPTIMIZATION_LEVEL
-+  ifeq ($(PRODUCT), java)
-+    OPTIMIZATION_LEVEL = HIGHER
-+  else
-+    OPTIMIZATION_LEVEL = LOWER
-+  endif
-+endif
-+
- ifeq ($(CC_VERSION),msvc)
-   # Visual Studio .NET 2003 or VS2003 compiler option definitions:
-   #   -O1      Favors reduced size over speed (-Og     -Os -Oy -Ob2 -Gs -GF -Gy)
-@@ -113,21 +122,28 @@
-   # NOTE: With VC6, -Ox, -O1, and -O2 used -Ob1, not -Ob2.
-   # NOTE: With VC6, -O1 and -O2 used -Gf, not -GF.
-   #
-+
-+  CC_OPT/NONE    = -Od
-+  CC_OPT/LOWER   = -O2
-+  CC_OPT/HIGHER  = -O3
-+  CC_OPT/HIGHEST = -O3
-+  
-   ifeq ($(COMPILER_VERSION), VC6)
-     # VC6 (6.2) msvc compiler (the way Tiger and early Mustang were built)
-     # Automatic precompiled header option to use (if COMPILE_APPROACH=batch)
-     AUTOMATIC_PCH_OPTION =
-     GX_OPTION = -GX
-     ifeq ($(ARCH_DATA_MODEL), 32)
--      CC_HIGHEST_OPT = -Ox -Gy -Os -GB
--      CC_HIGHER_OPT  = -Ox -Gy -Os -GB
--      CC_LOWER_OPT   = -Ox -Gy -Os -GB
-+      CC_OPT/HIGHEST = -Ox -Gy -Os -GB
-+      CC_OPT/HIGHER  = -Ox -Gy -Os -GB
-+      CC_OPT/LOWER   = -Ox -Gy -Os -GB
-     else
--      CC_HIGHEST_OPT = -Ox -Gy -Op
--      CC_HIGHER_OPT  = -Ox -Gy -Op
--      CC_LOWER_OPT   = -Ox -Gy -Op
-+      CC_OPT/HIGHEST = -Ox -Gy -Op
-+      CC_OPT/HIGHER  = -Ox -Gy -Op
-+      CC_OPT/LOWER   = -Ox -Gy -Op
-     endif
-   endif
-+  
-   ifeq ($(COMPILER_VERSION), VS2003)
-     # Automatic precompiled header option to use (if COMPILE_APPROACH=batch)
-     AUTOMATIC_PCH_OPTION = -YX
-@@ -135,53 +151,45 @@
-     GX_OPTION = -GX
-     ifeq ($(ARCH_DATA_MODEL), 32)
-       # Lowered opt level to try and reduce footprint, dll size especially.
--      #     Was: CC_HIGHEST_OPT = -O2 -G6
--      #     Was: CC_HIGHER_OPT  = -O2
--      CC_HIGHEST_OPT = -O2
--      CC_HIGHER_OPT  = -O1
--      CC_LOWER_OPT   = -O1
-+      #     Was: CC_OPT/HIGHEST = -O2 -G6
-+      #     Was: CC_OPT/HIGHER  = -O2
-+      CC_OPT/HIGHEST = -O2
-+      CC_OPT/HIGHER  = -O1
-+      CC_OPT/LOWER   = -O1
-     else
--      CC_HIGHEST_OPT = -O2 -Op
--      CC_HIGHER_OPT  = -O2 -Op
--      CC_LOWER_OPT   = -O1 -Op
-+      CC_OPT/HIGHEST = -O2 -Op
-+      CC_OPT/HIGHER  = -O2 -Op
-+      CC_OPT/LOWER   = -O1 -Op
-     endif
-   endif
-+  
-   ifeq ($(COMPILER_VERSION), VS2005)
-     # Automatic precompiled header option to use (if COMPILE_APPROACH=batch)
-     AUTOMATIC_PCH_OPTION =
-     # VS2005 compiler, only with Platform SDK right now?
-     GX_OPTION = -EHsc
-     ifeq ($(ARCH_DATA_MODEL), 32)
--      CC_HIGHEST_OPT = -O2
--      CC_HIGHER_OPT  = -O1
--      CC_LOWER_OPT   = -O1
-+      CC_OPT/HIGHEST = -O2
-+      CC_OPT/HIGHER  = -O1
-+      CC_OPT/LOWER   = -O1
-     else
--      CC_HIGHEST_OPT = -O2
--      CC_HIGHER_OPT  = -O1
--      CC_LOWER_OPT   = -O1
-+      CC_OPT/HIGHEST = -O2
-+      CC_OPT/HIGHER  = -O1
-+      CC_OPT/LOWER   = -O1
-     endif
-   endif
--  CC_NO_OPT      = -Od
-+
- else # CC_VERSION
-+  
-   # GCC not supported, but left for historical reference...
--  CC_HIGHEST_OPT = -O3
--  CC_HIGHER_OPT  = -O2
--  CC_LOWER_OPT   = -O2
--  CC_NO_OPT      = 
-+  CC_OPT/NONE     =
-+  CC_OPT/LOWER    = -O2
-+  CC_OPT/HIGHER   = -O2
-+  CC_OPT/HIGHEST  = -O3
-+
- endif
- 
--# If NO_OPTIMIZATIONS is defined in the environment, turn all optimzations off
--ifdef NO_OPTIMIZATIONS
--  CC_HIGHEST_OPT = $(CC_NO_OPT)
--  CC_HIGHER_OPT  = $(CC_NO_OPT)
--  CC_LOWER_OPT   = $(CC_NO_OPT)
--endif
--
--ifeq ($(PRODUCT), java)
--    _OPT = $(CC_HIGHER_OPT)
--else
--    _OPT = $(CC_LOWER_OPT)
--endif
-+CC_OPT = $(CC_OPT/$(OPTIMIZATION_LEVEL))
- 
- # Select the runtime support library carefully, need to be consistent
- #
-@@ -233,7 +241,7 @@
-   #            Use static link for the C++ runtime (so msvcp71.dll not needed)
-   #   
-   CFLAGS_COMMON  += -Zi -nologo
--  CFLAGS_OPT      = $(POPT)
-+  CFLAGS_OPT      = $(CC_OPT)
-   CFLAGS_DBG      = -Od $(MS_RUNTIME_DEBUG_OPTION)
- 
-   # Starting from VS2005 the wchar_t is handled as a built-in C/C++ data type
 diff --git a/make/common/Defs.gmk b/make/common/Defs.gmk
 --- openjdk/jdk/make/common/Defs.gmk
 +++ openjdk/jdk/make/common/Defs.gmk
--- a/patches/openjdk/6799141-split_out_versions.patch	Wed May 28 12:25:46 2014 +0100
+++ b/patches/openjdk/6799141-split_out_versions.patch	Tue Jul 15 16:04:35 2014 +0100
@@ -46,35 +46,11 @@
    # Fill in unknown values
    COMPILER_NAME=Unknown MSVC Compiler
    COMPILER_VERSION=
--  REQUIRED_CC_VER=
--  REQUIRED_LINK_VER=
+-  REQUIRED_CC_VER=16.10.40219.01
+-  REQUIRED_LINK_VER=10.00.40219.01
    
    # unset any GNU Make settings of MFLAGS and MAKEFLAGS which may mess up nmake
    NMAKE          = MFLAGS= MAKEFLAGS= $(COMPILER_PATH)nmake -nologo
-@@ -54,8 +52,6 @@
-     CC_TYPE := $(shell $(CC) 2>&1 | $(HEAD) -n 1 | $(NAWK) '{print $$5}')
-     CC_MAJORVER :=$(call MajorVersion,$(CC_VER))
-     REQUIRED_CCTYPE = Optimizing
--    REQUIRED_CC_VER = 13.10.3077
--    REQUIRED_LINK_VER = 7.10.3077
-     ifeq ($(CC_MAJORVER), 12)
-       # This should be: CC_VER=12.00.8168 LINK_VER=6.00.8447
-       COMPILER_NAME=Visual C++ 6.0 Professional + VC6-SP 3
-@@ -91,14 +87,6 @@
-     CC_MAJORVER :=$(call MajorVersion,$(CC_VER))
-     CC_MINORVER :=$(call MinorVersion,$(CC_VER))
-     CC_MICROVER :=$(call MicroVersion,$(CC_VER))
--    ifeq ($(ARCH), ia64)
--      REQUIRED_CC_VER = 13.00.9337.7
--      REQUIRED_LINK_VER = 7.00.9337.7
--    endif
--    ifeq ($(ARCH), amd64)
--      REQUIRED_CC_VER = 14.00.40310.41
--      REQUIRED_LINK_VER = 8.00.40310.39
--    endif
-     ifeq ($(CC_MAJORVER), 13)
-       ifeq ($(ARCH), ia64)
-         # This should be: CC_VER=13.00.9337.7 LINK_VER=7.00.9337.7
 diff -Nru openjdk.orig/jdk/make/common/shared/Compiler-sun.gmk openjdk/jdk/make/common/shared/Compiler-sun.gmk
 --- openjdk.orig/jdk/make/common/shared/Compiler-sun.gmk	2013-09-02 16:47:38.400554956 +0100
 +++ openjdk/jdk/make/common/shared/Compiler-sun.gmk	2013-09-02 16:58:52.819048695 +0100
--- a/patches/openjdk/6816311-compiler_name.patch	Wed May 28 12:25:46 2014 +0100
+++ b/patches/openjdk/6816311-compiler_name.patch	Tue Jul 15 16:04:35 2014 +0100
@@ -1,41 +1,6 @@
 diff -Nru openjdk.orig/jdk/make/common/Defs-windows.gmk openjdk/jdk/make/common/Defs-windows.gmk
 --- openjdk.orig/jdk/make/common/Defs-windows.gmk	2013-09-02 16:35:07.688884584 +0100
 +++ openjdk/jdk/make/common/Defs-windows.gmk	2013-09-02 16:40:22.565779052 +0100
-@@ -78,6 +78,13 @@
-   MS_RUNTIME_LIBRARIES += unicows.dll
- endif
- 
-+ifeq ($(ARCH_DATA_MODEL), 64)
-+  ifeq ($(COMPILER_VERSION), VS2008)
-+    MSVCRNN_DLL = msvcr90.dll
-+    MSVCPNN_DLL = msvcp90.dll
-+    MS_RUNTIME_LIBRARIES += $(MSVCRNN_DLL)
-+  endif
-+endif
- 
- EXTRA_LFLAGS += /LIBPATH:$(DXSDK_LIB_PATH)
- 
-@@ -302,17 +309,13 @@
- #
- CFLAGS_COMMON += -Fd$(OBJDIR)/$(basename $(@F)).pdb -Fm$(OBJDIR)/$(basename $(@F)).map
- 
--#
--# Add warnings and extra on 64bit issues
--#
--ifeq ($(ARCH_DATA_MODEL), 64)
--  CFLAGS_COMMON += -Wp64 
--endif
--CFLAGS_COMMON += -W$(COMPILER_WARNING_LEVEL)
- 
- #
- # Treat compiler warnings as errors, if requested
- #
-+CFLAGS_COMMON += -W$(COMPILER_WARNING_LEVEL)
-+# Turn off security warnings about using the standard C library function strcpy
-+CFLAGS_COMMON += -D _CRT_SECURE_NO_DEPRECATE
- ifeq ($(COMPILER_WARNINGS_FATAL),true)
-   CFLAGS_COMMON += -WX
- endif
 diff -Nru openjdk.orig/jdk/make/common/shared/Compiler-gcc.gmk openjdk/jdk/make/common/shared/Compiler-gcc.gmk
 --- openjdk.orig/jdk/make/common/shared/Compiler-gcc.gmk	2013-09-02 16:35:07.712884957 +0100
 +++ openjdk/jdk/make/common/shared/Compiler-gcc.gmk	2013-09-02 16:40:22.565779052 +0100
@@ -56,22 +21,6 @@
 +COMPILER_NAME = GCC$(call MajorVersion,$(CC_VER))
 +COMPILER_VERSION = $(COMPILER_NAME)
 +
-diff -Nru openjdk.orig/jdk/make/common/shared/Compiler-msvc.gmk openjdk/jdk/make/common/shared/Compiler-msvc.gmk
---- openjdk.orig/jdk/make/common/shared/Compiler-msvc.gmk	2013-09-02 16:35:07.712884957 +0100
-+++ openjdk/jdk/make/common/shared/Compiler-msvc.gmk	2013-09-02 16:40:22.565779052 +0100
-@@ -110,6 +110,12 @@
-         endif
-       endif
-     endif
-+    ifeq ($(CC_MAJORVER), 15)
-+      COMPILER_NAME=Microsoft Windows SDK with Visual Studio 9 (6001.18000.367)
-+      COMPILER_VERSION=VS2008
-+      RC = $(MSSDK61)/Bin/X64/rc.exe
-+      MT = $(MSSDK61)/Bin/X64/mt.exe
-+    endif
-     # This will cause problems if ALT_COMPILER_PATH is defined to ""
-     # which is a directive to use the PATH.
-     REBASE         = $(COMPILER_PATH)../REBASE
 diff -Nru openjdk.orig/jdk/make/common/shared/Compiler-sun.gmk openjdk/jdk/make/common/shared/Compiler-sun.gmk
 --- openjdk.orig/jdk/make/common/shared/Compiler-sun.gmk	2013-09-02 16:35:07.712884957 +0100
 +++ openjdk/jdk/make/common/shared/Compiler-sun.gmk	2013-09-02 16:41:13.914577209 +0100
@@ -173,176 +122,6 @@
          REQUIRED_CC_VER       = 14.00.40310.41
          REQUIRED_LINK_VER     = 8.00.40310.39
        endif
-diff -Nru openjdk.orig/jdk/make/common/shared/Defs-windows.gmk openjdk/jdk/make/common/shared/Defs-windows.gmk
---- openjdk.orig/jdk/make/common/shared/Defs-windows.gmk	2013-09-02 16:35:07.712884957 +0100
-+++ openjdk/jdk/make/common/shared/Defs-windows.gmk	2013-09-02 16:40:22.565779052 +0100
-@@ -199,6 +199,7 @@
- endif
- ifeq ($(ARCH_DATA_MODEL), 32)
-   _program_files     :=$(call FullPath,$(xPROGRAMFILES))
-+  _program_files32   :=$(_program_files)
- else
-   ifdef PROGRAMW6432
-     xPROGRAMW6432    :="$(subst \,/,$(PROGRAMW6432))"
-@@ -260,17 +261,30 @@
-   ifneq ($(_msvc_dir),)
-     _compiler_bin :=$(_msvc_dir)/Bin
-     _redist_sdk   :=$(_msvc_dir)/../SDK/v1.1/Bin
--    _ms_sdk       :=$(_msvc_dir)/PlatformSDK
-+    # 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)/../SDK/v3.5/Bin)
-+    ifeq ($(_redist_sdk),)
-+      _redist_sdk   :=$(call FullPath,$(_msvc_dir)/../SDK/v2.0/Bin)
-+      ifeq ($(_redist_sdk),)
-+        _redist_sdk   :=$(call FullPath,$(_msvc_dir)/../SDK/v1.1/Bin)
-+      endif
-+    endif
-   endif
- endif
- 
- # The Microsoft Platform SDK installed by itself
- ifneq ($(_program_files),)
--  xPSDK  :="$(_program_files)/Microsoft Platform SDK"
--  _psdk  :=$(call FullPath,$(xPSDK))
-+  _PSDK :="$(_program_files)/Microsoft SDKs/Windows/v6.1/"
-+  _psdk :=$(call FullPath,$(xMSSDK61))
-   ifeq ($(_psdk),)
--    xPSDK  :="$(_program_files)/Microsoft SDK"
--    _psdk :=$(call FullPath,$(xMSSDK))
-+    xPSDK  :="$(_program_files)/Microsoft Platform SDK"
-+    _psdk  :=$(call FullPath,$(xPSDK))
-+    ifeq ($(_psdk),)
-+      xPSDK  :="$(_program_files)/Microsoft SDK"
-+      _psdk :=$(call FullPath,$(xMSSDK))
-+    endif
-   endif
- endif
- 
-@@ -291,13 +305,22 @@
- 
- # Compilers for 64bit are from SDK
- ifeq ($(ARCH_DATA_MODEL), 64)
--  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
-@@ -400,38 +423,30 @@
-   _BOOTDIR2  =$(USRJDKINSTANCES_PATH)/jdk$(PREVIOUS_JDK_VERSION)
- endif
- 
--# See if SDK area has a msvcrt.dll file, directory may exist w/o msvcr* files
--_REDIST_SDK_EXISTS := $(shell \
--	if [ -f "$(_redist_sdk)/msvcrt.dll" ]; then \
--	  echo "true"; \
--	else \
--	  echo "false"; \
--	fi)
--_REDIST71_SDK_EXISTS := $(shell \
--	if [ -f "$(_redist_sdk)/msvcr71.dll" ]; then \
--	  echo "true"; \
--	else \
--	  echo "false"; \
--	fi)
-+# 32 bit always needs 2 runtimes, 64 bit usually does too
- 
--# 32 bit needs 2 runtimes
--ifeq ($(ARCH_DATA_MODEL), 32)
-+# MSVCRT_DLL_PATH: location of msvcrt.dll that will be re-distributed
-+ifdef ALT_MSVCRT_DLL_PATH
-+  xALT_MSVCRT_DLL_PATH :="$(subst \,/,$(ALT_MSVCRT_DLL_PATH))"
-+  MSVCRT_DLL_PATH      :=$(call FullPath,$(xALT_MSVCRT_DLL_PATH))
-+else
-+  MSVCRT_DLL_PATH :=$(call FullPath,$(_system_root)/system32/)
-+endif
-+MSVCRT_DLL_PATH:=$(call AltCheckSpaces,MSVCRT_DLL_PATH)
-+MSVCRT_DLL_PATH:=$(call AltCheckValue,MSVCRT_DLL_PATH)
- 
--  # MSVCRT_DLL_PATH: location of msvcrt.dll that will be re-distributed
--  ifdef ALT_MSVCRT_DLL_PATH
--    xALT_MSVCRT_DLL_PATH :="$(subst \,/,$(ALT_MSVCRT_DLL_PATH))"
--    MSVCRT_DLL_PATH      :=$(call FullPath,$(xALT_MSVCRT_DLL_PATH))
-+# 32bit always needs the MSVCRNN runtime, 64bit does when using VS2008
-+ifeq ($(ARCH_DATA_MODEL), 32)
-+  _NEEDS_MSVCRNN = true
-+else
-+  ifeq ($(VS2008),)
-+    _NEEDS_MSVCRNN = false
-   else
--    ifeq ($(_REDIST_SDK_EXISTS), true)
--      xREDIST_DIR   :=$(_redist_sdk)
--    else
--      xREDIST_DIR   :=$(_system_root)/system32
--    endif
--    MSVCRT_DLL_PATH :=$(call FullPath,$(xREDIST_DIR))
-+    _NEEDS_MSVCRNN = true
-   endif
--  MSVCRT_DLL_PATH:=$(call AltCheckSpaces,MSVCRT_DLL_PATH)
--  MSVCRT_DLL_PATH:=$(call AltCheckValue,MSVCRT_DLL_PATH)
--  
-+endif
-+
-+ifeq ($(ARCH_DATA_MODEL), 32)
-   # MSVCR71_DLL_PATH: location of msvcr71.dll that will be re-distributed
-   ifdef ALT_MSVCR71_DLL_PATH
-     xALT_MSVCR71_DLL_PATH :="$(subst \,/,$(ALT_MSVCR71_DLL_PATH))"
-@@ -448,22 +463,17 @@
-   MSVCR71_DLL_PATH:=$(call AltCheckValue,MSVCR71_DLL_PATH)
-   
- else
--
--  # MSVCRT_DLL_PATH: location of msvcrt.dll that will be re-distributed
--  ifdef ALT_MSVCRT_DLL_PATH
--    xALT_MSVCRT_DLL_PATH :="$(subst \,/,$(ALT_MSVCRT_DLL_PATH))"
--    MSVCRT_DLL_PATH      :=$(call FullPath,$(xALT_MSVCRT_DLL_PATH))
--  else
--    ifeq ($(_REDIST_SDK_EXISTS), true)
--      xREDIST_DIR   :=$(_redist_sdk)
--    else
--      xREDIST_DIR   :=$(_system_root)/SysWOW64
--    endif
--    MSVCRT_DLL_PATH  :=$(call FullPath,$(xREDIST_DIR))
--  endif
--  MSVCRT_DLL_PATH:=$(call AltCheckSpaces,MSVCRT_DLL_PATH)
--  MSVCRT_DLL_PATH:=$(call AltCheckValue,MSVCRT_DLL_PATH)
--  
-+ifeq ($(_NEEDS_MSVCRNN), true)
-+   # MSVCRNN_DLL_PATH: location of msvcrnn.dll that will be re-distributed
-+   ifdef ALT_MSVCRNN_DLL_PATH
-+     xALT_MSVCRNN_DLL_PATH :="$(subst \,/,$(ALT_MSVCRNN_DLL_PATH))"
-+     MSVCRNN_DLL_PATH      :=$(call FullPath,$(xALT_MSVCRNN_DLL_PATH))
-+   else
-+    MSVCRNN_DLL_PATH :=$(_redist_sdk)
-+   endif
-+   MSVCRNN_DLL_PATH :=$(call AltCheckSpaces,MSVCRNN_DLL_PATH)
-+   MSVCRNN_DLL_PATH:=$(call AltCheckValue,MSVCRNN_DLL_PATH)
-+endif
- endif
- 
- # DXSDK_PATH: path to Microsoft DirectX SDK Include and Lib
 diff -Nru openjdk.orig/jdk/make/common/shared/Sanity.gmk openjdk/jdk/make/common/shared/Sanity.gmk
 --- openjdk.orig/jdk/make/common/shared/Sanity.gmk	2013-09-02 16:35:07.712884957 +0100
 +++ openjdk/jdk/make/common/shared/Sanity.gmk	2013-09-02 16:40:22.565779052 +0100
--- a/patches/windows-awt.patch	Wed May 28 12:25:46 2014 +0100
+++ b/patches/windows-awt.patch	Tue Jul 15 16:04:35 2014 +0100
@@ -83,48 +83,3 @@
  #ifdef __cplusplus
  }
  #endif  /* __cplusplus */
-diff --git a/jdk/src/windows/native/sun/windows/awt_Toolkit.cpp b/jdk/src/windows/native/sun/windows/awt_Toolkit.cpp
-index d407c92..940db1f 100644
---- openjdk.orig/jdk/src/windows/native/sun/windows/awt_Toolkit.cpp
-+++ openjdk/jdk/src/windows/native/sun/windows/awt_Toolkit.cpp
-@@ -1602,13 +1602,13 @@ BOOL AwtToolkit::GetScreenInsets(int screenNum, RECT * rect)
-     }
-     /* if additional display */
-     else {
--        MONITORINFO *miInfo;
-+        MONITOR_INFO *miInfo;
-         miInfo = AwtWin32GraphicsDevice::GetMonitorInfo(screenNum);
-         if (miInfo) {
--            rect->top = miInfo->rcWork.top    - miInfo->rcMonitor.top;
--            rect->left = miInfo->rcWork.left   - miInfo->rcMonitor.left;
--            rect->bottom = miInfo->rcMonitor.bottom - miInfo->rcWork.bottom;
--            rect->right = miInfo->rcMonitor.right - miInfo->rcWork.right;
-+            rect->top = miInfo->rWork.top    - miInfo->rMonitor.top;
-+            rect->left = miInfo->rWork.left   - miInfo->rMonitor.left;
-+            rect->bottom = miInfo->rMonitor.bottom - miInfo->rWork.bottom;
-+            rect->right = miInfo->rMonitor.right - miInfo->rWork.right;
-             return TRUE;
-         }
-     }
-diff --git a/jdk/src/windows/native/sun/windows/awt_Window.cpp b/jdk/src/windows/native/sun/windows/awt_Window.cpp
-index c7ead09..863967f 100644
---- openjdk.orig/jdk/src/windows/native/sun/windows/awt_Window.cpp
-+++ openjdk/jdk/src/windows/native/sun/windows/awt_Window.cpp
-@@ -417,7 +417,7 @@ bool AwtWindow::IsWarningWindow(HWND hWnd)
-     return 0 == _tcsncmp(windowClassName,
-             AwtWindow::GetWarningWindowClassName(), len);
- }
--+
-+
- LRESULT CALLBACK AwtWindow::CBTFilter(int nCode, WPARAM wParam, LPARAM lParam)
- {
-     if (nCode == HCBT_ACTIVATE || nCode == HCBT_SETFOCUS) {
-@@ -703,7 +703,7 @@ void AwtWindow::CalculateWarningWindowBounds(JNIEnv *env, LPRECT rect)
-     y = min(y, windowBounds.bottom + (int)warningWindowHeight + 2);
- 
-     // Now make sure the warning window is visible on the screen
--    HMONITOR hmon = MonitorFromWindow(GetHWnd(), MONITOR_DEFAULTTOPRIMARY);
-+    MHND hmon = MonitorFromWindow(GetHWnd(), MONITOR_DEFAULTTOPRIMARY);
-     DASSERT(hmon != NULL);
- 
-     RECT monitorBounds;