changeset 2980:ab418eb1e664

Fix typo in ICEDTEA_PATCHES. 2013-04-16 Andrew John Hughes <gnu.andrew@redhat.com> * Makefile.am: (ICEDTEA_PATCHES): Add missing backslash (oops!) * patches/openjdk/7024568-long_method_resolution_oom_error.patch: Fix patch that doesn't apply cleanly.
author Andrew John Hughes <gnu.andrew@redhat.com>
date Tue, 16 Apr 2013 18:39:51 +0100
parents f9540cbade1e
children fe8749a2c67c
files ChangeLog Makefile.am patches/openjdk/7024568-long_method_resolution_oom_error.patch
diffstat 3 files changed, 31 insertions(+), 37 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Tue Apr 16 17:11:46 2013 +0100
+++ b/ChangeLog	Tue Apr 16 18:39:51 2013 +0100
@@ -1,3 +1,10 @@
+2013-04-16  Andrew John Hughes  <gnu.andrew@redhat.com>
+
+	* Makefile.am:
+	(ICEDTEA_PATCHES): Add missing backslash (oops!)
+	* patches/openjdk/7024568-long_method_resolution_oom_error.patch:
+	Fix patch that doesn't apply cleanly.
+
 2013-03-11  Andrew John Hughes  <gnu.andrew@member.fsf.org>
 
 	PR1339: Simplify the rewriter, avoiding concurrency.
--- a/Makefile.am	Tue Apr 16 17:11:46 2013 +0100
+++ b/Makefile.am	Tue Apr 16 18:39:51 2013 +0100
@@ -487,7 +487,7 @@
 	patches/copy_memory.patch \
 	patches/openjdk/6718364-inference_failure.patch \
 	patches/openjdk/6682380-foreach_crash.patch \
-	patches/openjdk/7046929-fix_t6397104_test_failure.patch
+	patches/openjdk/7046929-fix_t6397104_test_failure.patch \
 	patches/openjdk/7024568-long_method_resolution_oom_error.patch \
 	patches/openjdk/7003595-incompatibleclasschangeerror.patch \
 	patches/openjdk/6500343-bad_code_from_conditionals.patch
--- a/patches/openjdk/7024568-long_method_resolution_oom_error.patch	Tue Apr 16 17:11:46 2013 +0100
+++ b/patches/openjdk/7024568-long_method_resolution_oom_error.patch	Tue Apr 16 18:39:51 2013 +0100
@@ -1,52 +1,41 @@
-# HG changeset patch
-# User mcimadamore
-# Date 1299507108 0
-# Node ID 74f0c05c51eb8e4ce08cdf8a3b8a33e36b09b5b2
-# Parent  5e6c661891da3dfbf371c1186df6cc0a77224951
-7024568: Very long method resolution causing OOM error
-Summary: Resolve.findMethod scans same receiver type more than once in certain inheritance graphs
-Reviewed-by: jjg
-Contributed-by: jan.lahoda@oracle.com
-
-diff --git a/src/share/classes/com/sun/tools/javac/comp/Resolve.java b/src/share/classes/com/sun/tools/javac/comp/Resolve.java
---- openjdk/langtools/src/share/classes/com/sun/tools/javac/comp/Resolve.java
-+++ openjdk/langtools/src/share/classes/com/sun/tools/javac/comp/Resolve.java
-@@ -45,7 +45,9 @@
+diff -Nru openjdk.orig/langtools/src/share/classes/com/sun/tools/javac/comp/Resolve.java openjdk/langtools/src/share/classes/com/sun/tools/javac/comp/Resolve.java
+--- openjdk.orig/langtools/src/share/classes/com/sun/tools/javac/comp/Resolve.java	2013-04-16 17:29:24.789670017 +0100
++++ openjdk/langtools/src/share/classes/com/sun/tools/javac/comp/Resolve.java	2013-04-16 17:36:54.208874016 +0100
+@@ -38,6 +38,10 @@
+ import static com.sun.tools.javac.code.Flags.*;
+ import static com.sun.tools.javac.code.Kinds.*;
+ import static com.sun.tools.javac.code.TypeTags.*;
++
++import java.util.Set;
++import java.util.HashSet;
++
  import javax.lang.model.element.ElementVisitor;
  
- import java.util.Map;
-+import java.util.Set;
- import java.util.HashMap;
-+import java.util.HashSet;
- 
  /** Helper class for name resolution, used mostly by the attribution phase.
-  *
-@@ -896,7 +898,8 @@
-                           bestSoFar,
+@@ -719,7 +723,8 @@
+                           methodNotFound,
                            allowBoxing,
                            useVarargs,
 -                          operator);
 +                          operator,
-+                          new HashSet<TypeSymbol>());
++			  new HashSet<TypeSymbol>());
      }
      // where
      private Symbol findMethod(Env<AttrContext> env,
-@@ -909,11 +912,13 @@
+@@ -732,9 +737,11 @@
                                Symbol bestSoFar,
                                boolean allowBoxing,
                                boolean useVarargs,
 -                              boolean operator) {
 +                              boolean operator,
 +                              Set<TypeSymbol> seen) {
-         for (Type ct = intype; ct.tag == CLASS || ct.tag == TYPEVAR; ct = types.supertype(ct)) {
-             while (ct.tag == TYPEVAR)
-                 ct = ct.getUpperBound();
+         for (Type ct = intype; ct.tag == CLASS; ct = types.supertype(ct)) {
              ClassSymbol c = (ClassSymbol)ct.tsym;
 +            if (!seen.add(c)) return bestSoFar;
              if ((c.flags() & (ABSTRACT | INTERFACE | ENUM)) == 0)
                  abstractok = false;
              for (Scope.Entry e = c.members().lookup(name);
-@@ -942,7 +947,7 @@
+@@ -761,7 +768,7 @@
                      bestSoFar = findMethod(env, site, name, argtypes,
                                             typeargtypes,
                                             l.head, abstractok, bestSoFar,
@@ -55,10 +44,9 @@
                  }
                  if (concrete != bestSoFar &&
                      concrete.kind < ERR  && bestSoFar.kind < ERR &&
-diff --git a/test/tools/javac/7024568/T7024568.java b/test/tools/javac/7024568/T7024568.java
-new file mode 100644
---- /dev/null
-+++ openjdk/langtools/test/tools/javac/7024568/T7024568.java
+diff -Nru openjdk.orig/langtools/test/tools/javac/7024568/T7024568.java openjdk/langtools/test/tools/javac/7024568/T7024568.java
+--- openjdk.orig/langtools/test/tools/javac/7024568/T7024568.java	1970-01-01 01:00:00.000000000 +0100
++++ openjdk/langtools/test/tools/javac/7024568/T7024568.java	2013-04-16 17:34:57.014990669 +0100
 @@ -0,0 +1,46 @@
 +/*
 + * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
@@ -106,10 +94,9 @@
 +interface C extends A, B, Test {}
 +interface D extends A, B, C, Test {}
 +interface E extends A, B, C, D, Test {}
-diff --git a/test/tools/javac/7024568/T7024568.out b/test/tools/javac/7024568/T7024568.out
-new file mode 100644
---- /dev/null
-+++ openjdk/langtools/test/tools/javac/7024568/T7024568.out
+diff -Nru openjdk.orig/langtools/test/tools/javac/7024568/T7024568.out openjdk/langtools/test/tools/javac/7024568/T7024568.out
+--- openjdk.orig/langtools/test/tools/javac/7024568/T7024568.out	1970-01-01 01:00:00.000000000 +0100
++++ openjdk/langtools/test/tools/javac/7024568/T7024568.out	2013-04-16 17:34:57.014990669 +0100
 @@ -0,0 +1,2 @@
 +T7024568.java:32:40: compiler.err.cant.resolve.location: kindname.variable, undefined, , , (compiler.misc.location: kindname.class, Main, null)
 +1 error