Mercurial > hg > release > icedtea6-1.13
changeset 3150:d3c2f64bd8fc
2014-07-15 CPU
Update to OpenJDK6 b32 that contains security fixes.
2014-07-08 Omair Majid <omajid@redhat.com>
2014-07-15 CPU
* NEW: 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.
author | Omair Majid <omajid@redhat.com> |
---|---|
date | Tue, 08 Jul 2014 18:19:52 -0400 |
parents | c48649311b8f |
children | e7dbc33f6f5b |
files | ChangeLog Makefile.am NEWS patches/jtreg-T6638712-fix.patch patches/openjdk/6636370-appcontext_simplification.patch patches/openjdk/6638712-wildcard_types.patch patches/openjdk/6650759-missing_inference.patch patches/openjdk/6729772-opt_cleanup.patch patches/openjdk/6799141-split_out_versions.patch patches/openjdk/6816311-compiler_name.patch patches/windows-awt.patch |
diffstat | 11 files changed, 96 insertions(+), 1930 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog Fri May 09 13:19:29 2014 +0200 +++ b/ChangeLog Tue Jul 08 18:19:52 2014 -0400 @@ -1,3 +1,20 @@ +2014-07-08 Omair Majid <omajid@redhat.com> + + 2014-07-15 CPU + * NEW: 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-09 Jiri Vanek <jvanek@redhat.com> * Makefile.am: (add-nss-debug.stamp): fixed ECJ_BUILD_OUTPUT_DIR
--- a/Makefile.am Fri May 09 13:19:29 2014 +0200 +++ b/Makefile.am Tue Jul 08 18:19:52 2014 -0400 @@ -1,8 +1,8 @@ # Dependencies -OPENJDK_DATE = 15_apr_2014 -OPENJDK_SHA256SUM = 362d9bf20e91393b52dd0513896d39831cf320c49bd4bf1e28124f21569b72eb -OPENJDK_VERSION = b31 +OPENJDK_DATE = 15_jul_2014 +OPENJDK_SHA256SUM = 1a7404f38b3fa7cbb25d4273c0d94885912badd3343c5184c3b0947437501256 +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 Fri May 09 13:19:29 2014 +0200 +++ b/NEWS Tue Jul 08 18:19:52 2014 -0400 @@ -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 + - 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 + New in release 1.13.3 (2014-04-15): * Security fixes
--- a/patches/jtreg-T6638712-fix.patch Fri May 09 13:19:29 2014 +0200 +++ /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 Fri May 09 13:19:29 2014 +0200 +++ b/patches/openjdk/6636370-appcontext_simplification.patch Tue Jul 08 18:19:52 2014 -0400 @@ -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 Fri May 09 13:19:29 2014 +0200 +++ /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 Fri May 09 13:19:29 2014 +0200 +++ /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 Fri May 09 13:19:29 2014 +0200 +++ b/patches/openjdk/6729772-opt_cleanup.patch Tue Jul 08 18:19:52 2014 -0400 @@ -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 Fri May 09 13:19:29 2014 +0200 +++ b/patches/openjdk/6799141-split_out_versions.patch Tue Jul 08 18:19:52 2014 -0400 @@ -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 Fri May 09 13:19:29 2014 +0200 +++ b/patches/openjdk/6816311-compiler_name.patch Tue Jul 08 18:19:52 2014 -0400 @@ -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 Fri May 09 13:19:29 2014 +0200 +++ b/patches/windows-awt.patch Tue Jul 08 18:19:52 2014 -0400 @@ -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;