/hg/release/icedtea7-2.1: 3 new changesets

andrew at icedtea.classpath.org andrew at icedtea.classpath.org
Thu Jun 27 22:45:38 PDT 2013


changeset 3c893cdacaca in /hg/release/icedtea7-2.1
details: http://icedtea.classpath.org/hg/release/icedtea7-2.1?cmd=changeset;node=3c893cdacaca
author: Andrew John Hughes <gnu_andrew at member.fsf.org>
date: Fri Jun 28 06:29:04 2013 +0100

	Bring in latest security patches and backports from u25.

	2013-06-27  Andrew John Hughes  <gnu.andrew at member.fsf.org>

		* Makefile.am,
		(HOTSPOT_CHANGESET): Update to IcedTea7 2.1.9 tag,
		bringing in latest security patches.
		(CORBA_CHANGESET): Likewise.
		(JAXWS_CHANGESET): Likewise.
		(JDK_CHANGESET): Likewise.
		(LANGTOOLS_CHANGESET): Likewise.
		(HOTSPOT_SHA256SUM): Likewise.
		(CORBA_SHA256SUM): Likewise.
		(JAXWS_SHA256SUM): Likewise.
		(JDK_SHA256SUM): Likewise.
		(LANGTOOLS_SHA256SUM): Likewise.
		* patches/boot/ecj-diamond.patch,
		* patches/boot/ecj-multicatch.patch:
		Add new cases.
		* patches/boot/ecj-stringswitch.patch:
		Update MethodHandleNatives patch, including
		adding new case.
		* patches/boot/tobin.patch:
		Update following move from sun.awt.X11
		to sun.awt.


changeset 9dc11e85ebfe in /hg/release/icedtea7-2.1
details: http://icedtea.classpath.org/hg/release/icedtea7-2.1?cmd=changeset;node=9dc11e85ebfe
author: Andrew John Hughes <gnu_andrew at member.fsf.org>
date: Fri Jun 28 06:43:49 2013 +0100

	Add latest security fixes and other updates to NEWS.

	2013-06-27  Andrew John Hughes  <gnu.andrew at member.fsf.org>

		* NEWS: Add latest security fixes and other
		changes found in 7u25.


changeset 7e0b337628c1 in /hg/release/icedtea7-2.1
details: http://icedtea.classpath.org/hg/release/icedtea7-2.1?cmd=changeset;node=7e0b337628c1
author: Andrew John Hughes <gnu_andrew at member.fsf.org>
date: Fri Jun 28 06:45:21 2013 +0100

	Add Red Hat bugzilla references to NEWS.

	2013-06-25  Andrew John Hughes  <gnu.andrew at member.fsf.org>

		* NEWS: Add Red Hat bugzilla references.


diffstat:

 ChangeLog                           |   33 +++++
 Makefile.am                         |   20 +-
 NEWS                                |  116 +++++++++++++++++++-
 patches/boot/ecj-diamond.patch      |   60 ++++++++++
 patches/boot/ecj-multicatch.patch   |   51 ++++++++
 patches/boot/ecj-stringswitch.patch |  209 ++++++++++++++++++-----------------
 patches/boot/tobin.patch            |   38 +++--
 7 files changed, 399 insertions(+), 128 deletions(-)

diffs (truncated from 681 to 500 lines):

diff -r 578209f3f761 -r 7e0b337628c1 ChangeLog
--- a/ChangeLog	Tue May 28 12:05:24 2013 +0100
+++ b/ChangeLog	Fri Jun 28 06:45:21 2013 +0100
@@ -1,3 +1,36 @@
+2013-06-25  Andrew John Hughes  <gnu.andrew at member.fsf.org>
+
+	* NEWS: Add Red Hat bugzilla references.
+
+2013-06-27  Andrew John Hughes  <gnu.andrew at member.fsf.org>
+
+	* NEWS: Add latest security fixes and other
+	changes found in 7u25.
+
+2013-06-27  Andrew John Hughes  <gnu.andrew at member.fsf.org>
+
+	* Makefile.am,
+	(HOTSPOT_CHANGESET): Update to IcedTea7 2.1.9 tag,
+	bringing in latest security patches.
+	(CORBA_CHANGESET): Likewise.
+	(JAXWS_CHANGESET): Likewise.
+	(JDK_CHANGESET): Likewise.
+	(LANGTOOLS_CHANGESET): Likewise.
+	(HOTSPOT_SHA256SUM): Likewise.
+	(CORBA_SHA256SUM): Likewise.
+	(JAXWS_SHA256SUM): Likewise.
+	(JDK_SHA256SUM): Likewise.
+	(LANGTOOLS_SHA256SUM): Likewise.
+	* patches/boot/ecj-diamond.patch,
+	* patches/boot/ecj-multicatch.patch:
+	Add new cases.
+	* patches/boot/ecj-stringswitch.patch:
+	Update MethodHandleNatives patch, including
+	adding new case.
+	* patches/boot/tobin.patch:
+	Update following move from sun.awt.X11
+	to sun.awt.
+
 2013-05-10  Andrew John Hughes  <gnu.andrew at member.fsf.org>
 
 	* Makefile.am,
diff -r 578209f3f761 -r 7e0b337628c1 Makefile.am
--- a/Makefile.am	Tue May 28 12:05:24 2013 +0100
+++ b/Makefile.am	Fri Jun 28 06:45:21 2013 +0100
@@ -4,20 +4,20 @@
 JDK_UPDATE_VERSION = 03
 COMBINED_VERSION = $(JDK_UPDATE_VERSION)-$(OPENJDK_VERSION)
 
-HOTSPOT_CHANGESET = b965a723122e
-CORBA_CHANGESET = 2302bd5191fe
+HOTSPOT_CHANGESET = 0d81d5904952
+CORBA_CHANGESET = ce773a499f3a
 JAXP_CHANGESET = 2c3bc21169f9
-JAXWS_CHANGESET = 3b68ea3b56d8
-JDK_CHANGESET = 2c423d0b1965
-LANGTOOLS_CHANGESET = 9a3628594576
+JAXWS_CHANGESET = 3532f4415fd5
+JDK_CHANGESET = 1e74b61253eb
+LANGTOOLS_CHANGESET = 26a29796b374
 OPENJDK_CHANGESET = 34d809e0dba3
 
-HOTSPOT_SHA256SUM = 43a5529b36cf619199e45832dead0c6b1841337b6416b0123b807e7312cb1912
-CORBA_SHA256SUM = 13691bea9f5b448da3e18307b3ec7d1e7fb984b5d590fcf8e350101fa67106df
+HOTSPOT_SHA256SUM = a5a609a3600f474a2333b3f3c3dda735d18f8b8d67e8bdeb33f70d14abc0cdfc
+CORBA_SHA256SUM = f1d65cade883bca6b30d720aac482bf6a00513f90b4f97729b91ce5a95416c5f
 JAXP_SHA256SUM = 244aab62b946361e6442b63acc91fd209829946daed2dc1ee0c1c3e256bf9c29
-JAXWS_SHA256SUM = 96ff4f30736a5d329cf236a6c53d9d1f30c251bd59a698cfcbe36d8803782fd0
-JDK_SHA256SUM = b5c8a00886725a7cc6c764b3d44ff1382f5942c8a4f8a3e2046e4af971fcfae2
-LANGTOOLS_SHA256SUM = e6bf6b4dae96b4b2517aa1847dc21b91d0cd0048f6b47479ab8e50263bf8e519
+JAXWS_SHA256SUM = f0508540402a4bf4e95418bf52267430723fbc7ed383bd70e37b56d5efb8ac1d
+JDK_SHA256SUM = 391589f95d105a7237d4394b3d8fb8a02adbce27463dbf8631222c492505e24f
+LANGTOOLS_SHA256SUM = 3172d59a6bc307a9429665cdcb8026f098ccf7c160e448f0f2df0e0353375f87
 OPENJDK_SHA256SUM = f213703df7c2331826c1b8e35fed7079d1b21fe6b8210fdb108f8bacc42e714f
 
 CACAO_VERSION = a567bcb7f589
diff -r 578209f3f761 -r 7e0b337628c1 NEWS
--- a/NEWS	Tue May 28 12:05:24 2013 +0100
+++ b/NEWS	Fri Jun 28 06:45:21 2013 +0100
@@ -10,12 +10,126 @@
 
 CVE-XXXX-YYYY: http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=XXXX-YYYY
 
-New in release 2.1.9 (2013-06-02):
+New in release 2.1.9 (2013-06-XX):
 
+* New features
+  - PR1378: Add AArch64 support to Zero
+* Security fixes
+  - S6741606, CVE-2013-2407: Integrate Apache Santuario
+  - S7158805, CVE-2013-2445: Better rewriting of nested subroutine calls
+  - S7170730, CVE-2013-2451: Improve Windows network stack support.
+  - S8000638, CVE-2013-2450: Improve deserialization
+  - S8000642, CVE-2013-2446: Better handling of objects for transportation
+  - S8001032: Restrict object access
+  - S8001033, CVE-2013-2452: Refactor network address handling in virtual machine identifiers
+  - S8001034, CVE-2013-1500: Memory management improvements
+  - S8001038, CVE-2013-2444: Resourcefully handle resources
+  - S8001043: Clarify definition restrictions
+  - S8001308: Update display of applet windows
+  - S8001309: Better handling of annotation interfaces
+  - S8001318, CVE-2013-2447: Socket.getLocalAddress not consistent with InetAddress.getLocalHost
+  - S8003703, CVE-2013-2412: Update RMI connection dialog box
+  - S8004288, CVE-2013-2449: (fs) Files.probeContentType problems
+  - S8004584: Augment applet contextualization
+  - S8005007: Better glyph processing
+  - S8006328, CVE-2013-2448: Improve robustness of sound classes
+  - S8006611: Improve scripting
+  - S8007467: Improve robustness of JMX internal APIs
+  - S8007471: Improve MBean notifications
+  - S8007812, CVE-2013-2455: (reflect) Class.getEnclosingMethod problematic for some classes
+  - S8007925: Improve cmsStageAllocLabV2ToV4curves
+  - S8007926: Improve cmsPipelineDup
+  - S8007927: Improve cmsAllocProfileSequenceDescription
+  - S8007929: Improve CurvesAlloc
+  - S8008120, CVE-2013-2457: Improve JMX class checking
+  - S8008124, CVE-2013-2453: Better compliance testing
+  - S8008128: Better API coherence for JMX
+  - S8008132, CVE-2013-2456: Better serialization support
+  - S8008585: Better JMX data handling
+  - S8008593: Better URLClassLoader resource management
+  - S8008603: Improve provision of JMX providers
+  - S8008607: Better input checking in JMX
+  - S8008611: Better handling of annotations in JMX
+  - S8008615: Improve robustness of JMX internal APIs
+  - S8008623: Better handling of MBeanServers
+  - S8008744, CVE-2013-2407: Rework part of fix for JDK-6741606
+  - S8008982: Adjust JMX for underlying interface changes
+  - S8009004: Better implementation of RMI connections
+  - S8009008: Better manage management-api
+  - S8009013: Better handling of T2K glyphs
+  - S8009034: Improve resulting notifications in JMX
+  - S8009038: Improve JMX notification support
+  - S8009057, CVE-2013-2448: Improve MIDI event handling
+  - S8009067: Improve storing keys in KeyStore
+  - S8009071, CVE-2013-2459: Improve shape handling
+  - S8009235: Improve handling of TSA data
+  - S8009424, CVE-2013-2458: Adapt Nashorn to JSR-292 implementation change
+  - S8009554, CVE-2013-2454: Improve SerialJavaObject.getFields
+  - S8009654: Improve stability of cmsnamed
+  - S8010209, CVE-2013-2460: Better provision of factories
+  - S8011243, CVE-2013-2470: Improve ImagingLib
+  - S8011248, CVE-2013-2471: Better Component Rasters
+  - S8011253, CVE-2013-2472: Better Short Component Rasters
+  - S8011257, CVE-2013-2473: Better Byte Component Rasters
+  - S8012375, CVE-2013-1571: Improve Javadoc framing
+  - S8012421: Better positioning of PairPositioning
+  - S8012438, CVE-2013-2463: Better image validation
+  - S8012597, CVE-2013-2465: Better image channel verification
+  - S8012601, CVE-2013-2469: Better validation of image layouts
+  - S8014281, CVE-2013-2461: Better checking of XML signature
+  - S8015997: Additional improvement in Javadoc framing
 * Backports
   - S7171223, RH967436: Building ExtensionSubtables.cpp should use -fno-strict-aliasing
+  - S7053526: Upgrade JDK 8 to use Little CMS 2.4
+  - S7077803: java.lang.InternalError in java.lang.invoke.MethodHandleNatives.init
+  - S7124347: [macosx] java.lang.InternalError: not implemented yet on call Graphics2D.drawRenderedImage
+  - S7142596: RMI JPRT tests are failing
+  - S7151434, RH969884: java -jar -XX crashes java launcher
+  - S7158483: (tz) Support tzdata2012c
+  - S7188114: (launcher) need an alternate command line parser for Windows
+  - S7195301: XML Signature DOM implementation should not use instanceof to determine type of Node
+  - S7198570: (tz) Support tzdata2012f
+  - S7199143: RFE: OCSP revocation checker should provide possibility to specify connection timeout
+  - S8002070: Remove the stack search for a resource bundle for Logger to use
+  - S8002225: (tz) Support tzdata2012i
+  - S8006120: Provide "Server JRE" for 7u train
+  - S8006536: [launcher]  removes trailing slashes on arguments
+  - S8009165: Fix for 8006435 needs revision
+  - S8009217: REGRESSION: test com/sun/org/apache/xml/internal/security/transforms/ClassLoaderTest.java fails to compile since 7u21b03
+  - S8009463: Regression test test\java\lang\Runtime\exec\ArgWithSpaceAndFinalBackslash.java failing.
+  - S8009610: Blacklist certificate used with malware.
+  - S8009987: (tz) Support tzdata2013b
+  - S8009996: tests javax/management/mxbean/MiscTest.java and javax/management/mxbean/StandardMBeanOverrideTest.java fail
+  - S8010118: Annotate jdk caller sensitive methods with @sun.reflect.CallerSensitive
+  - S8010213: Some api/javax_net/SocketFactory tests fail in 7u25 nightly build
+  - S8010714: XML DSig API allows a RetrievalMethod to reference another RetrievalMethod
+  - S8010727: WLS fails to add a logger with "" in its own LogManager subclass instance
+  - S8010939: Deadlock in LogManager
+  - S8011139: (reflect) Revise checking in getEnclosingClass
+  - S8011154: java/awt/Frame/ShapeNotSetSometimes/ShapeNotSetSometimes.java failed since 7u25b03 on windows
+  - S8011313: OCSP timeout set to wrong value if com.sun.security.ocsp.timeout not defined
+  - S8011557: Improve reflection utility classes
+  - S8011806: 7u25-b05 hotspot fastdebug build failure
+  - S8011990: TEST_BUG: java/util/logging/bundlesearch/ResourceBundleSearchTest.java fails on Windows
+  - S8011992: java/awt/image/mlib/MlibOpsTest.java failed since jdk7u25b05
+  - S8012112: java/awt/image/mlib/MlibOpsTest.java fails on sparc solaris
+  - S8012243: about 30% regression on specjvm2008.serial on 7u25 comparing 7u21
+  - S8012453: (process) Runtime.exec(String) fails if command contains spaces [win]
+  - S8012617: ArrayIndexOutOfBoundsException with some fonts using LineBreakMeasurer
+  - S8012933: Test closed/java/awt/Dialog/DialogAnotherThread/JaWSTest.java fails since jdk 7u25 b07
+  - S8013196: TimeZone.getDefault() throws NPE due to sun.awt.AppContext.getAppContext()
+  - S8013228: Create new system properties to control allowable OCSP clock skew and CRL connection timeout
+  - S8013380: Removal of stack walk to find resource bundle breaks Glassfish startup
+  - S8014205: Most of the Swing dialogs are blank on one win7 MUI
+  - S8014427: REGRESSION: closed/javax/imageio/plugins/bmp/Write3ByteBgrTest.java fails since 7u25 b09
+  - S8014618, RH868136: Need to strip leading zeros in TlsPremasterSecret of DHKeyAgreement
+  - S8014676: Java debugger may fail to run
+  - S8014718: Netbeans IDE begins to throw a lot exceptions since 7u25 b10
+  - S8014745: Provide a switch to allow stack walk search of resource bundle
+  - S8014968: OCSP and CRL connection timeout is set to four hours by default
 * Bug fixes
   - PR1095, PR1409: Allow -Werror to be turned off (HotSpot repository only).
+  - PR1188: ASM Interpreter and Thumb2 JIT javac miscompile modulo reminder on armel
 
 New in release 2.1.8 (2013-05-02):
 
diff -r 578209f3f761 -r 7e0b337628c1 patches/boot/ecj-diamond.patch
--- a/patches/boot/ecj-diamond.patch	Tue May 28 12:05:24 2013 +0100
+++ b/patches/boot/ecj-diamond.patch	Fri Jun 28 06:45:21 2013 +0100
@@ -6081,3 +6081,63 @@
  
      /**
       * Checks if a certificate is untrusted.
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/io/ObjectStreamClass.java openjdk-boot/jdk/src/share/classes/java/io/ObjectStreamClass.java
+--- openjdk-boot.orig/jdk/src/share/classes/java/io/ObjectStreamClass.java	2013-06-27 16:06:42.289384018 +0100
++++ openjdk-boot/jdk/src/share/classes/java/io/ObjectStreamClass.java	2013-06-27 16:07:06.489768521 +0100
+@@ -1164,7 +1164,7 @@
+             end = end.getSuperclass();
+         }
+ 
+-        HashSet<String> oscNames = new HashSet<>(3);
++        HashSet<String> oscNames = new HashSet<String>(3);
+ 
+         for (ObjectStreamClass d = this; d != null; d = d.superDesc) {
+             if (oscNames.contains(d.name)) {
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/font/CreatedFontTracker.java openjdk-boot/jdk/src/share/classes/sun/font/CreatedFontTracker.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/font/CreatedFontTracker.java	2013-06-27 16:06:53.297558922 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/font/CreatedFontTracker.java	2013-06-27 16:07:32.294178507 +0100
+@@ -106,7 +106,7 @@
+      * Note that this only applies to createFont() from an InputStream object.
+      */
+     private static class TempFileDeletionHook {
+-        private static HashMap<File, OutputStream> files = new HashMap<>();
++        private static HashMap<File, OutputStream> files = new HashMap<File, OutputStream>();
+ 
+         private static Thread t = null;
+         static void init() {
+diff --git a/src/share/classes/com/sun/media/sound/AbstractLine.java b/src/share/classes/com/sun/media/sound/AbstractLine.java
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/media/sound/AbstractLine.java
++++ openjdk-boot/jdk/src/share/classes/com/sun/media/sound/AbstractLine.java
+@@ -54,7 +54,7 @@
+      * Contains event dispatcher per thread group.
+      */
+     private static final Map<ThreadGroup, EventDispatcher> dispatchers =
+-            new WeakHashMap<>();
++      new WeakHashMap<ThreadGroup, EventDispatcher>();
+ 
+     /**
+      * Constructs a new AbstractLine.
+diff --git a/src/share/classes/com/sun/media/sound/RealTimeSequencer.java b/src/share/classes/com/sun/media/sound/RealTimeSequencer.java
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/media/sound/RealTimeSequencer.java
++++ openjdk-boot/jdk/src/share/classes/com/sun/media/sound/RealTimeSequencer.java
+@@ -59,7 +59,7 @@
+      * dispatcher instance with a factory in EventDispatcher
+      */
+     private static final Map<ThreadGroup, EventDispatcher> dispatchers =
+-            new WeakHashMap<>();
++      new WeakHashMap<ThreadGroup, EventDispatcher>();
+ 
+     /**
+      * All RealTimeSequencers share this info object.
+diff -Nru openjdk-boot.orig/jdk/src/solaris/classes/sun/nio/ch/SctpNet.java openjdk-boot/jdk/src/solaris/classes/sun/nio/ch/SctpNet.java
+--- openjdk-boot.orig/jdk/src/solaris/classes/sun/nio/ch/SctpNet.java	2013-06-27 20:05:19.200970932 +0100
++++ openjdk-boot/jdk/src/solaris/classes/sun/nio/ch/SctpNet.java	2013-06-27 20:05:33.857203747 +0100
+@@ -113,7 +113,7 @@
+             SocketAddress[] saa)
+     {
+          SecurityManager sm = System.getSecurityManager();
+-         Set<SocketAddress> set = new HashSet<>(saa.length);
++         Set<SocketAddress> set = new HashSet<SocketAddress>(saa.length);
+          for (SocketAddress sa : saa) {
+              set.add(getRevealedLocalAddress(sa, sm));
+          }
diff -r 578209f3f761 -r 7e0b337628c1 patches/boot/ecj-multicatch.patch
--- a/patches/boot/ecj-multicatch.patch	Tue May 28 12:05:24 2013 +0100
+++ b/patches/boot/ecj-multicatch.patch	Fri Jun 28 06:45:21 2013 +0100
@@ -145,3 +145,54 @@
              throw new RuntimeException(
                          "Incorrect untrusted certificate: " + alias, e);
          }
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/jmx/remote/internal/ArrayNotificationBuffer.java openjdk-boot/jdk/src/share/classes/com/sun/jmx/remote/internal/ArrayNotificationBuffer.java
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/jmx/remote/internal/ArrayNotificationBuffer.java	2013-06-27 15:56:57.456088537 +0100
++++ openjdk-boot/jdk/src/share/classes/com/sun/jmx/remote/internal/ArrayNotificationBuffer.java	2013-06-27 16:02:12.857102777 +0100
+@@ -402,7 +402,13 @@
+                         try {
+                             ServerNotifForwarder.checkMBeanPermission(this.mBeanServer,
+                                                       candidate.getObjectName(),"addNotificationListener");
+-                        } catch (InstanceNotFoundException | SecurityException e) {
++                        } catch (InstanceNotFoundException e) {
++                            if (logger.debugOn()) {
++                                logger.debug("fetchNotifications", "candidate: " + candidate + " skipped. exception " + e);
++                            }
++                            ++nextSeq;
++                            continue;
++                        } catch (SecurityException e) {
+                             if (logger.debugOn()) {
+                                 logger.debug("fetchNotifications", "candidate: " + candidate + " skipped. exception " + e);
+                             }
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/lang/ProcessBuilder.java openjdk-boot/jdk/src/share/classes/java/lang/ProcessBuilder.java
+--- openjdk-boot.orig/jdk/src/share/classes/java/lang/ProcessBuilder.java	2013-06-27 15:56:27.295609027 +0100
++++ openjdk-boot/jdk/src/share/classes/java/lang/ProcessBuilder.java	2013-06-27 16:00:59.631938678 +0100
+@@ -1024,10 +1024,10 @@
+                                      dir,
+                                      redirects,
+                                      redirectErrorStream);
+-        } catch (IOException | IllegalArgumentException e) {
++        } catch (IOException e) {
+             String exceptionInfo = ": " + e.getMessage();
+             Throwable cause = e;
+-            if ((e instanceof IOException) && security != null) {
++            if (security != null) {
+                 // Can not disclose the fail reason for read-protected files.
+                 try {
+                     security.checkRead(prog);
+@@ -1039,6 +1039,16 @@
+             // It's much easier for us to create a high-quality error
+             // message than the low-level C code which found the problem.
+             throw new IOException(
++                "Cannot run program \"" + prog + "\""
++                + (dir == null ? "" : " (in directory \"" + dir + "\")")
++                + exceptionInfo,
++                cause);
++        } catch (IllegalArgumentException e) {
++            String exceptionInfo = ": " + e.getMessage();
++            Throwable cause = e;
++            // It's much easier for us to create a high-quality error
++            // message than the low-level C code which found the problem.
++            throw new IOException(
+                 "Cannot run program \"" + prog + "\""
+                 + (dir == null ? "" : " (in directory \"" + dir + "\")")
+                 + exceptionInfo,
diff -r 578209f3f761 -r 7e0b337628c1 patches/boot/ecj-stringswitch.patch
--- a/patches/boot/ecj-stringswitch.patch	Tue May 28 12:05:24 2013 +0100
+++ b/patches/boot/ecj-stringswitch.patch	Fri Jun 28 06:45:21 2013 +0100
@@ -302,59 +302,29 @@
  
                  throw new IllegalArgumentException(
 diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/lang/invoke/MethodHandleNatives.java openjdk-boot/jdk/src/share/classes/java/lang/invoke/MethodHandleNatives.java
---- openjdk-boot.orig/jdk/src/share/classes/java/lang/invoke/MethodHandleNatives.java	2013-01-14 22:25:02.000000000 +0000
-+++ openjdk-boot/jdk/src/share/classes/java/lang/invoke/MethodHandleNatives.java	2013-01-15 02:19:34.315049222 +0000
-@@ -411,111 +411,106 @@
-     static boolean isCallerSensitive(MemberName mem) {
-         if (!mem.isInvocable())  return false;  // fields are not caller sensitive
-         Class<?> defc = mem.getDeclaringClass();
--        switch (mem.getName()) {
+--- openjdk-boot.orig/jdk/src/share/classes/java/lang/invoke/MethodHandleNatives.java	2013-06-21 21:46:14.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/lang/invoke/MethodHandleNatives.java	2013-06-26 02:23:21.025257579 +0100
+@@ -421,110 +421,105 @@
+     // this method is also called by test/sun/reflect/CallerSensitiveFinder
+     // to validate the hand-maintained list
+     private static boolean isCallerSensitiveMethod(Class<?> defc, String method) {
+-        switch (method) {
 -        case "doPrivileged":
 -        case "doPrivilegedWithCombiner":
-+	String memName = mem.getName();
-+	if ("doPrivileged".equals(memName) ||
-+	    "doPrivilegedWithCombiner".equals(memName)) {
++	if ("doPrivileged".equals(method) ||
++	    "doPrivilegedWithCombiner".equals(method)) {
              return defc == java.security.AccessController.class;
 -        case "checkMemberAccess":
-+	} else if ("checkMemberAccess".equals(memName)) {
-             return canBeCalledVirtual(mem, java.lang.SecurityManager.class);
++	} else if ("checkMemberAccess".equals(method)) {
+             return defc == java.lang.SecurityManager.class;
 -        case "getUnsafe":
-+        } else if ("getUnsafe".equals(memName)) {
++        } else if ("getUnsafe".equals(method)) {
              return defc == sun.misc.Unsafe.class;
 -        case "lookup":
-+	} else if ("lookup".equals(memName)) {
++	} else if ("lookup".equals(method)) {
              return defc == java.lang.invoke.MethodHandles.class;
--        case "findStatic":
--        case "findVirtual":
--        case "findConstructor":
--        case "findSpecial":
--        case "findGetter":
--        case "findSetter":
--        case "findStaticGetter":
--        case "findStaticSetter":
--        case "bind":
--        case "unreflect":
--        case "unreflectSpecial":
--        case "unreflectConstructor":
--        case "unreflectGetter":
--        case "unreflectSetter":
-+	} else if ("findStatic".equals(memName) ||
-+		   "findVirtual".equals(memName) || 
-+		   "findConstructor".equals(memName) ||
-+		   "findSpecial".equals(memName) ||
-+		   "findGetter".equals(memName) ||
-+		   "findSetter".equals(memName) ||
-+		   "findStaticGetter".equals(memName) ||
-+		   "findStaticSetter".equals(memName) ||
-+		   "bind".equals(memName) ||
-+		   "unreflect".equals(memName) ||
-+		   "unreflectSpecial".equals(memName) ||
-+		   "unreflectConstructor".equals(memName) ||
-+		   "unreflectGetter".equals(memName) ||
-+		   "unreflectSetter".equals(memName)) {
-             return defc == java.lang.invoke.MethodHandles.Lookup.class;
 -        case "invoke":
-+        } else if ("invoke".equals(memName)) {
++	} else if ("invoke".equals(method)) {
              return defc == java.lang.reflect.Method.class;
 -        case "get":
 -        case "getBoolean":
@@ -374,33 +344,37 @@
 -        case "setLong":
 -        case "setFloat":
 -        case "setDouble":
-+	} else if ("get".equals(memName) ||
-+		   "getBoolean".equals(memName) ||
-+		   "getByte".equals(memName) ||
-+		   "getChar".equals(memName) ||
-+		   "getShort".equals(memName) ||
-+		   "getInt".equals(memName) ||
-+		   "getFloat".equals(memName) ||
-+		   "getDouble".equals(memName) ||
-+		   "set".equals(memName) ||
-+		   "setBoolean".equals(memName) ||
-+		   "setByte".equals(memName) ||
-+		   "setChar".equals(memName) ||
-+		   "setShort".equals(memName) ||
-+		   "setInt".equals(memName) ||
-+		   "setLong".equals(memName) ||
-+		   "setFloat".equals(memName) ||
-+		   "setDouble".equals(memName)) {
++	} else if ("get".equals(method) ||
++		   "getBoolean".equals(method) ||
++		   "getByte".equals(method) ||
++		   "getChar".equals(method) ||
++		   "getShort".equals(method) ||
++		   "getInt".equals(method) ||
++		   "getLong".equals(method) ||
++		   "getFloat".equals(method) ||
++		   "getDouble".equals(method) ||
++		   "set".equals(method) ||
++		   "setBoolean".equals(method) ||
++		   "setByte".equals(method) ||
++		   "setChar".equals(method) ||
++		   "setShort".equals(method) ||
++		   "setInt".equals(method) ||
++		   "setLong".equals(method) ||
++		   "setFloat".equals(method) ||
++		   "setDouble".equals(method)) {
              return defc == java.lang.reflect.Field.class;
 -        case "newInstance":
-+	} else if ("newInstance".equals(memName)) {
++	} else if ("newInstance".equals(method)) {
              if (defc == java.lang.reflect.Constructor.class)  return true;
              if (defc == java.lang.Class.class)  return true;
 -            break;
+-        case "getFields":
++	} else if ("getFields".equals(method)) {
+             return defc == java.lang.Class.class ||
+                    defc == javax.sql.rowset.serial.SerialJavaObject.class;
 -        case "forName":
 -        case "getClassLoader":
 -        case "getClasses":
--        case "getFields":
 -        case "getMethods":
 -        case "getConstructors":
 -        case "getDeclaredClasses":
@@ -413,81 +387,114 @@
 -        case "getDeclaredField":
 -        case "getDeclaredMethod":
 -        case "getDeclaredConstructor":
-+	} else if ("forName".equals(memName) ||
-+		   "getClassLoader".equals(memName) ||
-+		   "getClasses".equals(memName) ||
-+		   "getFields".equals(memName) ||
-+		   "getMethods".equals(memName) ||
-+		   "getConstructors".equals(memName) ||
-+		   "getDeclaredClasses".equals(memName) ||
-+		   "getDeclaredFields".equals(memName) ||
-+		   "getDeclaredMethods".equals(memName) ||
-+		   "getDeclaredConstructors".equals(memName) ||
-+		   "getField".equals(memName) ||
-+		   "getMethod".equals(memName) ||
-+		   "getConstructor".equals(memName) ||
-+		   "getDeclaredField".equals(memName) ||
-+		   "getDeclaredMethod".equals(memName) ||
-+		   "getDeclaredConstructor".equals(memName)) {
+-        case "getEnclosingClass":
+-        case "getEnclosingMethod":
+-        case "getEnclosingConstructor":
++	} else if ("forName".equals(method) ||
++		   "getClassLoader".equals(method) ||
++		   "getClasses".equals(method) ||
++		   "getFields".equals(method) ||
++		   "getMethods".equals(method) ||
++		   "getConstructors".equals(method) ||
++		   "getDeclaredClasses".equals(method) ||
++		   "getDeclaredFields".equals(method) ||
++		   "getDeclaredMethods".equals(method) ||
++		   "getDeclaredConstructors".equals(method) ||
++		   "getField".equals(method) ||
++		   "getMethod".equals(method) ||
++		   "getConstructor".equals(method) ||



More information about the distro-pkg-dev mailing list