aboutsummaryrefslogtreecommitdiff
path: root/patches/boot
diff options
context:
space:
mode:
authorGuido Günther <agx@sigxcpu.org>2013-05-08 12:52:58 +0200
committerGuido Günther <agx@sigxcpu.org>2013-05-08 12:52:58 +0200
commit9a8e56049ebf9f0878c7fe3efc0921df8aa6a0ba (patch)
tree7d61a00fa8d6ec4667663370cc42b04be03ec569 /patches/boot
Imported Upstream version 7u21-2.3.9upstream/7u21-2.3.9upstream
Diffstat (limited to 'patches/boot')
-rw-r--r--patches/boot/ant-javac.patch26
-rw-r--r--patches/boot/break-processbuilder-dependency.patch136
-rw-r--r--patches/boot/compile-for-7-cacao-mem.patch42
-rw-r--r--patches/boot/compile-for-7.patch42
-rw-r--r--patches/boot/corba-dependencies.patch14
-rw-r--r--patches/boot/corba-idlj.patch98
-rw-r--r--patches/boot/corba-no-gen.patch12
-rw-r--r--patches/boot/corba-orb.patch42
-rw-r--r--patches/boot/demos.patch32
-rw-r--r--patches/boot/ecj-autoboxing.patch299
-rw-r--r--patches/boot/ecj-diamond.patch6329
-rw-r--r--patches/boot/ecj-fphexconstants.patch60
-rw-r--r--patches/boot/ecj-multicatch.patch235
-rw-r--r--patches/boot/ecj-opts.patch12
-rw-r--r--patches/boot/ecj-stringswitch.patch493
-rw-r--r--patches/boot/ecj-trywithresources.patch1085
-rw-r--r--patches/boot/explicit-inner-class-headers.patch25
-rw-r--r--patches/boot/fontconfig.patch16
-rw-r--r--patches/boot/generated-comments.patch21
-rw-r--r--patches/boot/genstubs-nofork.patch12
-rw-r--r--patches/boot/getannotation-cast.patch12
-rw-r--r--patches/boot/hotspot/default/jdk-dependency.patch23
-rw-r--r--patches/boot/hotspot/zero/jdk-dependency.patch25
-rw-r--r--patches/boot/icedteart.patch41
-rw-r--r--patches/boot/jar.patch43
-rw-r--r--patches/boot/javafiles.patch164
-rw-r--r--patches/boot/javah.patch67
-rw-r--r--patches/boot/jaxp-dependency.patch25
-rw-r--r--patches/boot/jaxws-getdtdtype.patch27
-rw-r--r--patches/boot/jaxws-jdk-dependency.patch47
-rw-r--r--patches/boot/jaxws-langtools-dependency.patch48
-rw-r--r--patches/boot/jopt.patch26
-rw-r--r--patches/boot/langtools-force-old-jdk.patch16
-rw-r--r--patches/boot/pr39408.patch18
-rw-r--r--patches/boot/pr40188.patch15
-rw-r--r--patches/boot/pr40616.patch52
-rw-r--r--patches/boot/revert-6941137.patch12
-rw-r--r--patches/boot/revert-6973616.patch12
-rw-r--r--patches/boot/scanner-charsets.patch69
-rw-r--r--patches/boot/scanner-dbcs.patch40
-rw-r--r--patches/boot/scanner-sbcs.patch38
-rw-r--r--patches/boot/scanner-spp.patch65
-rw-r--r--patches/boot/symbols.patch23
-rw-r--r--patches/boot/test_gamma.patch47
-rw-r--r--patches/boot/tobin.patch39
-rw-r--r--patches/boot/tools.jar.patch14
-rw-r--r--patches/boot/use_target_6_for_bootstrap_classes.patch77
-rw-r--r--patches/boot/xbootclasspath.patch120
-rw-r--r--patches/boot/xsltproc.patch54
49 files changed, 10290 insertions, 0 deletions
diff --git a/patches/boot/ant-javac.patch b/patches/boot/ant-javac.patch
new file mode 100644
index 0000000..5ac6354
--- /dev/null
+++ b/patches/boot/ant-javac.patch
@@ -0,0 +1,26 @@
+diff -Nru openjdk-boot.orig/jaxp/build.xml openjdk-boot/jaxp/build.xml
+--- openjdk-boot.orig/jaxp/build.xml 2012-02-21 23:55:29.000000000 +0000
++++ openjdk-boot/jaxp/build.xml 2012-03-18 22:26:49.382089457 +0000
+@@ -123,7 +123,8 @@
+ memoryMaximumSize="${javac.memoryMaximumSize}"
+ source="${javac.source}"
+ debug="${javac.debug}"
+- target="${javac.target}">
++ target="${javac.target}"
++ executable="${jdk.home}/bin/javac">
+ <compilerarg value="-J-Xbootclasspath/p:${javac.jar}"/>
+ <compilerarg line="${javac.version.opt} ${javac.lint.opts} ${javac.no.jdk.warnings}"/>
+ </javac>
+diff -Nru openjdk-boot.orig/jaxws/build.xml openjdk-boot/jaxws/build.xml
+--- openjdk-boot.orig/jaxws/build.xml 2012-02-15 17:08:44.000000000 +0000
++++ openjdk-boot/jaxws/build.xml 2012-03-18 22:26:49.382089457 +0000
+@@ -123,7 +123,8 @@
+ memoryMaximumSize="${javac.memoryMaximumSize}"
+ source="${javac.source}"
+ debug="${javac.debug}"
+- target="${javac.target}">
++ target="${javac.target}"
++ executable="${jdk.home}/bin/javac">
+ <compilerarg value="-J-Xbootclasspath/p:${javac.jar}"/>
+ <compilerarg line="${javac.version.opt} ${javac.lint.opts} ${javac.no.jdk.warnings}"/>
+ <src refid="src.dir.id"/>
diff --git a/patches/boot/break-processbuilder-dependency.patch b/patches/boot/break-processbuilder-dependency.patch
new file mode 100644
index 0000000..ce30f88
--- /dev/null
+++ b/patches/boot/break-processbuilder-dependency.patch
@@ -0,0 +1,136 @@
+diff -Nru openjdk-boot.orig/jdk/src/solaris/classes/java/lang/UNIXProcess.java.linux openjdk-boot/jdk/src/solaris/classes/java/lang/UNIXProcess.java.linux
+--- openjdk-boot.orig/jdk/src/solaris/classes/java/lang/UNIXProcess.java.linux 2010-09-01 22:21:08.815402468 +0100
++++ openjdk-boot/jdk/src/solaris/classes/java/lang/UNIXProcess.java.linux 2010-09-01 22:23:19.572081778 +0100
+@@ -62,6 +62,32 @@
+ private /* final */ InputStream stdout;
+ private /* final */ InputStream stderr;
+
++ /**
++ * Required package-private classes taken from
++ * Oracle's java.lang.ProcessBuilder for bootstrapping.
++ */
++
++ /**
++ * Implements a <a href="#redirect-output">null input stream</a>.
++ */
++ static class NullInputStream extends InputStream {
++ static final NullInputStream INSTANCE = new NullInputStream();
++ private NullInputStream() {}
++ public int read() { return -1; }
++ public int available() { return 0; }
++ }
++
++ /**
++ * Implements a <a href="#redirect-input">null output stream</a>.
++ */
++ static class NullOutputStream extends OutputStream {
++ static final NullOutputStream INSTANCE = new NullOutputStream();
++ private NullOutputStream() {}
++ public void write(int b) throws IOException {
++ throw new IOException("Stream closed");
++ }
++ }
++
+ /* this is for the reaping thread */
+ private native int waitForProcessExit(int pid);
+
+@@ -155,15 +181,15 @@
+
+ void initStreams(int[] fds) throws IOException {
+ stdin = (fds[0] == -1) ?
+- ProcessBuilder.NullOutputStream.INSTANCE :
++ NullOutputStream.INSTANCE :
+ new ProcessPipeOutputStream(fds[0]);
+
+ stdout = (fds[1] == -1) ?
+- ProcessBuilder.NullInputStream.INSTANCE :
++ NullInputStream.INSTANCE :
+ new ProcessPipeInputStream(fds[1]);
+
+ stderr = (fds[2] == -1) ?
+- ProcessBuilder.NullInputStream.INSTANCE :
++ NullInputStream.INSTANCE :
+ new ProcessPipeInputStream(fds[2]);
+
+ processReaperExecutor.execute(new Runnable() {
+@@ -275,7 +301,7 @@
+ byte[] stragglers = drainInputStream(in);
+ in.close();
+ this.in = (stragglers == null) ?
+- ProcessBuilder.NullInputStream.INSTANCE :
++ NullInputStream.INSTANCE :
+ new ByteArrayInputStream(stragglers);
+ if (buf == null) // asynchronous close()?
+ this.in = null;
+@@ -306,7 +332,7 @@
+ // We know of no reason to get an IOException, but if
+ // we do, there's nothing else to do but carry on.
+ }
+- this.out = ProcessBuilder.NullOutputStream.INSTANCE;
++ this.out = NullOutputStream.INSTANCE;
+ }
+ }
+ }
+diff -Nru openjdk-boot.orig/jdk/src/solaris/classes/java/lang/UNIXProcess.java.solaris openjdk-boot/jdk/src/solaris/classes/java/lang/UNIXProcess.java.solaris
+--- openjdk-boot.orig/jdk/src/solaris/classes/java/lang/UNIXProcess.java.solaris 2010-09-01 22:21:08.815402468 +0100
++++ openjdk-boot/jdk/src/solaris/classes/java/lang/UNIXProcess.java.solaris 2010-09-01 22:22:33.204096111 +0100
+@@ -45,6 +45,32 @@
+ private DeferredCloseInputStream stdout_inner_stream;
+ private InputStream stderr_stream;
+
++ /**
++ * Required package-private classes taken from
++ * Oracle's java.lang.ProcessBuilder for bootstrapping.
++ */
++
++ /**
++ * Implements a <a href="#redirect-output">null input stream</a>.
++ */
++ static class NullInputStream extends InputStream {
++ static final NullInputStream INSTANCE = new NullInputStream();
++ private NullInputStream() {}
++ public int read() { return -1; }
++ public int available() { return 0; }
++ }
++
++ /**
++ * Implements a <a href="#redirect-input">null output stream</a>.
++ */
++ static class NullOutputStream extends OutputStream {
++ static final NullOutputStream INSTANCE = new NullOutputStream();
++ private NullOutputStream() {}
++ public void write(int b) throws IOException {
++ throw new IOException("Stream closed");
++ }
++ }
++
+ /* this is for the reaping thread */
+ private native int waitForProcessExit(int pid);
+
+@@ -86,7 +112,7 @@
+ java.security.AccessController.doPrivileged(
+ new java.security.PrivilegedAction<Void>() { public Void run() {
+ if (std_fds[0] == -1)
+- stdin_stream = ProcessBuilder.NullOutputStream.INSTANCE;
++ stdin_stream = NullOutputStream.INSTANCE;
+ else {
+ FileDescriptor stdin_fd = new FileDescriptor();
+ fdAccess.set(stdin_fd, std_fds[0]);
+@@ -95,7 +121,7 @@
+ }
+
+ if (std_fds[1] == -1)
+- stdout_stream = ProcessBuilder.NullInputStream.INSTANCE;
++ stdout_stream = NullInputStream.INSTANCE;
+ else {
+ FileDescriptor stdout_fd = new FileDescriptor();
+ fdAccess.set(stdout_fd, std_fds[1]);
+@@ -104,7 +130,7 @@
+ }
+
+ if (std_fds[2] == -1)
+- stderr_stream = ProcessBuilder.NullInputStream.INSTANCE;
++ stderr_stream = NullInputStream.INSTANCE;
+ else {
+ FileDescriptor stderr_fd = new FileDescriptor();
+ fdAccess.set(stderr_fd, std_fds[2]);
diff --git a/patches/boot/compile-for-7-cacao-mem.patch b/patches/boot/compile-for-7-cacao-mem.patch
new file mode 100644
index 0000000..fa18655
--- /dev/null
+++ b/patches/boot/compile-for-7-cacao-mem.patch
@@ -0,0 +1,42 @@
+diff -Nru openjdk-boot.orig/hotspot/make/linux/makefiles/rules.make openjdk-boot/hotspot/make/linux/makefiles/rules.make
+--- openjdk-boot.orig/hotspot/make/linux/makefiles/rules.make 2012-06-13 03:40:41.009311243 +0100
++++ openjdk-boot/hotspot/make/linux/makefiles/rules.make 2012-06-13 03:48:41.838257784 +0100
+@@ -139,8 +139,8 @@
+ RUN.JAR$(MAKE_VERBOSE) += >/dev/null
+
+ # Settings for javac
+-BOOT_SOURCE_LANGUAGE_VERSION = 6
+-BOOT_TARGET_CLASS_VERSION = 6
++BOOT_SOURCE_LANGUAGE_VERSION = 7
++BOOT_TARGET_CLASS_VERSION = 7
+ JAVAC_FLAGS = -g -encoding ascii -J-Xmx256m
+ BOOTSTRAP_JAVAC_FLAGS = $(JAVAC_FLAGS) -source $(BOOT_SOURCE_LANGUAGE_VERSION) -target $(BOOT_TARGET_CLASS_VERSION)
+
+diff -Nru openjdk-boot.orig/hotspot/make/solaris/makefiles/rules.make openjdk-boot/hotspot/make/solaris/makefiles/rules.make
+--- openjdk-boot.orig/hotspot/make/solaris/makefiles/rules.make 2012-06-13 03:40:41.009311243 +0100
++++ openjdk-boot/hotspot/make/solaris/makefiles/rules.make 2012-06-13 11:36:03.057522188 +0100
+@@ -131,8 +131,8 @@
+ RUN.JAR$(MAKE_VERBOSE) += >/dev/null
+
+ # Settings for javac
+-BOOT_SOURCE_LANGUAGE_VERSION = 6
+-BOOT_TARGET_CLASS_VERSION = 6
++BOOT_SOURCE_LANGUAGE_VERSION = 7
++BOOT_TARGET_CLASS_VERSION = 7
+ JAVAC_FLAGS = -g -encoding ascii -J-Xmx256m
+ BOOTSTRAP_JAVAC_FLAGS = $(JAVAC_FLAGS) -source $(BOOT_SOURCE_LANGUAGE_VERSION) -target $(BOOT_TARGET_CLASS_VERSION)
+
+diff -Nru openjdk-boot.orig/hotspot/make/windows/makefiles/rules.make openjdk-boot/hotspot/make/windows/makefiles/rules.make
+--- openjdk-boot.orig/hotspot/make/windows/makefiles/rules.make 2012-06-13 03:40:41.009311243 +0100
++++ openjdk-boot/hotspot/make/windows/makefiles/rules.make 2012-06-13 11:36:19.537797380 +0100
+@@ -43,8 +43,8 @@
+ !endif
+
+ # Settings for javac
+-BOOT_SOURCE_LANGUAGE_VERSION=6
+-BOOT_TARGET_CLASS_VERSION=6
++BOOT_SOURCE_LANGUAGE_VERSION=7
++BOOT_TARGET_CLASS_VERSION=7
+ JAVAC_FLAGS=-g -encoding ascii -J-Xmx256m
+ BOOTSTRAP_JAVAC_FLAGS=$(JAVAC_FLAGS) -source $(BOOT_SOURCE_LANGUAGE_VERSION) -target $(BOOT_TARGET_CLASS_VERSION)
+
diff --git a/patches/boot/compile-for-7.patch b/patches/boot/compile-for-7.patch
new file mode 100644
index 0000000..b7a6e63
--- /dev/null
+++ b/patches/boot/compile-for-7.patch
@@ -0,0 +1,42 @@
+diff -r f7e8b10f51c6 make/linux/makefiles/rules.make
+--- openjdk-boot/hotspot/make/linux/makefiles/rules.make Tue Jun 28 00:25:25 2011 +0100
++++ openjdk-boot/hotspot/make/linux/makefiles/rules.make Tue Jul 05 11:59:08 2011 +0100
+@@ -139,8 +139,8 @@
+ RUN.JAR$(MAKE_VERBOSE) += >/dev/null
+
+ # Settings for javac
+-BOOT_SOURCE_LANGUAGE_VERSION = 6
+-BOOT_TARGET_CLASS_VERSION = 6
++BOOT_SOURCE_LANGUAGE_VERSION = 7
++BOOT_TARGET_CLASS_VERSION = 7
+ JAVAC_FLAGS = -g -encoding ascii
+ BOOTSTRAP_JAVAC_FLAGS = $(JAVAC_FLAGS) -source $(BOOT_SOURCE_LANGUAGE_VERSION) -target $(BOOT_TARGET_CLASS_VERSION)
+
+diff -r f7e8b10f51c6 make/solaris/makefiles/rules.make
+--- openjdk-boot/hotspot/make/solaris/makefiles/rules.make Tue Jun 28 00:25:25 2011 +0100
++++ openjdk-boot/hotspot/make/solaris/makefiles/rules.make Tue Jul 05 11:59:08 2011 +0100
+@@ -131,8 +131,8 @@
+ RUN.JAR$(MAKE_VERBOSE) += >/dev/null
+
+ # Settings for javac
+-BOOT_SOURCE_LANGUAGE_VERSION = 6
+-BOOT_TARGET_CLASS_VERSION = 6
++BOOT_SOURCE_LANGUAGE_VERSION = 7
++BOOT_TARGET_CLASS_VERSION = 7
+ JAVAC_FLAGS = -g -encoding ascii
+ BOOTSTRAP_JAVAC_FLAGS = $(JAVAC_FLAGS) -source $(BOOT_SOURCE_LANGUAGE_VERSION) -target $(BOOT_TARGET_CLASS_VERSION)
+
+diff -r f7e8b10f51c6 make/windows/makefiles/rules.make
+--- openjdk-boot/hotspot/make/windows/makefiles/rules.make Tue Jun 28 00:25:25 2011 +0100
++++ openjdk-boot/hotspot/make/windows/makefiles/rules.make Tue Jul 05 11:59:08 2011 +0100
+@@ -43,8 +43,8 @@
+ !endif
+
+ # Settings for javac
+-BOOT_SOURCE_LANGUAGE_VERSION=6
+-BOOT_TARGET_CLASS_VERSION=6
++BOOT_SOURCE_LANGUAGE_VERSION=7
++BOOT_TARGET_CLASS_VERSION=7
+ JAVAC_FLAGS=-g -encoding ascii
+ BOOTSTRAP_JAVAC_FLAGS=$(JAVAC_FLAGS) -source $(BOOT_SOURCE_LANGUAGE_VERSION) -target $(BOOT_TARGET_CLASS_VERSION)
+
diff --git a/patches/boot/corba-dependencies.patch b/patches/boot/corba-dependencies.patch
new file mode 100644
index 0000000..0007651
--- /dev/null
+++ b/patches/boot/corba-dependencies.patch
@@ -0,0 +1,14 @@
+diff --git a/make/common/Rules.gmk b/make/common/Rules.gmk
+--- openjdk-boot/corba/make/common/Rules.gmk
++++ openjdk-boot/corba/make/common/Rules.gmk
+@@ -184,7 +184,9 @@
+ @$(MKDIR) -p $(CLASSDESTDIR)
+ if [ -s $(JAVA_SOURCE_LIST) ] ; then \
+ $(CAT) $(JAVA_SOURCE_LIST); \
+- $(JAVAC_CMD) $(JAVAC_PREFER_SOURCE) -sourcepath "$(SOURCEPATH)" -d $(CLASSDESTDIR) @$(JAVA_SOURCE_LIST); \
++ $(JAVAC_CMD) $(JAVAC_PREFER_SOURCE) \
++ -sourcepath "$(SOURCEPATH):$(JDK_TOPDIR)/src/share/classes:$(JDK_TOPDIR)/src/solaris/classes" \
++ -d $(CLASSDESTDIR) @$(JAVA_SOURCE_LIST); \
+ fi
+ @$(java-vm-cleanup)
+
diff --git a/patches/boot/corba-idlj.patch b/patches/boot/corba-idlj.patch
new file mode 100644
index 0000000..5cbe867
--- /dev/null
+++ b/patches/boot/corba-idlj.patch
@@ -0,0 +1,98 @@
+diff -Nru ../openjdk.orig/openjdk-boot/corba/make/org/omg/sources/Makefile openjdk-boot/corba/make/org/omg/sources/Makefile
+--- ../openjdk.orig/openjdk-boot/corba/make/org/omg/sources/Makefile 2009-03-30 17:13:01.000000000 +0100
++++ openjdk-boot/corba/make/org/omg/sources/Makefile 2009-10-30 16:59:16.000000000 +0000
+@@ -93,8 +93,6 @@
+ POAHELHOLFILES = $(POA_GENERATED_HELP_HOL_java:%=$(GENSRCDIR)/%)
+
+ $(POAGENERATEDFILES):: $(POA.IDL)
+- $(IDLJ) -td "$(GENSRCDIR)" -i "$(SRC_DIR)/org/omg/PortableServer" -i "$(SRC_DIR)/org/omg/PortableInterceptor" -corba 3.0 -fall -pkgPrefix PortableServer org.omg $(POA.IDL)
+- $(RM) -r $(POAHELHOLFILES)
+
+ poa.compile: $(POAGENERATEDFILES)
+
+@@ -110,10 +108,6 @@
+
+ # Generating and deleting unused files to reduce images size
+ $(DYNANYFILES): $(DYNAMIC_ANY.IDL)
+- $(IDLJ) -td "$(GENSRCDIR)" $(DYNANY_IDLJ_FLAGS) $(DYNAMIC_ANY.IDL)
+- $(RM) $(DYNANY_DIR)/*POA*
+- $(RM) $(DYNANY_DIR)/*Holder*
+- $(RM) $(DYNANYDELETEFILES)
+
+ dynany.compile: $(DYNANYFILES)
+
+@@ -125,12 +119,6 @@
+ TR_IDLJ_FLAGS =-i "$(SRC_DIR)/org/omg/PortableInterceptor" -i "$(SRC_DIR)/org/omg/PortableServer" -i "$(SRC_DIR)/org/omg/CosTransactions"
+
+ $(TRGENERATEDFILES):: $(COSTRANSACTIONS.IDL) $(COSTSINTEROP.IDL)
+- $(IDLJ) -td "$(GENSRCDIR)" $(TR_IDLJ_FLAGS) -D CORBA3 -corba 3.0 -fall -pkgPrefix CORBA org.omg -pkgPrefix CosTransactions org.omg $(COSTRANSACTIONS.IDL)
+- $(IDLJ) -td "$(GENSRCDIR)" $(TR_IDLJ_FLAGS) -D CORBA3 -corba 3.0 -fall -pkgPrefix CORBA org.omg -pkgPrefix CosTSInteroperation org.omg $(COSTSINTEROP.IDL)
+-# $(IDLJ) -td "$(GENSRCDIR)" $(TR_IDLJ_FLAGS) -D CORBA3 -corba 3.0 -fall -pkgPrefix CORBA org.omg $(TRANSACTIONS.IDL)
+-# $(IDLJ) -td "$(GENSRCDIR)" $(TR_IDLJ_FLAGS) -D CORBA3 -corba 3.0 -fallTIE -pkgPrefix CORBA org.omg $(TRANSACTIONS.IDL)
+-# $(IDLJ) -td "$(GENSRCDIR)" $(TR_IDLJ_FLAGS) -D CORBA3 -corba 3.0 -fall -pkgPrefix CORBA org.omg $(TRANSACTIONS.IDL)
+-# $(IDLJ) -td "$(GENSRCDIR)" $(TR_IDLJ_FLAGS) -D CORBA3 -corba 3.0 -fallTIE -pkgPrefix CORBA org.omg $(TRANSACTIONS.IDL)
+
+ tr.compile: $(TRGENERATEDFILES)
+
+@@ -144,7 +132,6 @@
+ # _NamingContextImplBase.java and _BindingIteratorImplBase.java files
+ # to GENSRC directory. Note that these two classes are deprecated.
+ $(NSGENERATEDFILES): $(NAMESERVICE.IDL)
+- $(IDLJ) -td "$(GENSRCDIR)" -i $(NAMESERVICEDIR) -fall -pkgPrefix CosNaming org.omg $(NAMESERVICE.IDL)
+
+ ns.compile: $(NSGENERATEDFILES)
+
+@@ -156,8 +143,6 @@
+ IOPDELETEFILES = $(IOP_TO_DELETE_FILES:%=$(GENSRCDIR)/%)
+
+ $(IOPGENERATEDFILES):: $(IOP.IDL)
+- $(IDLJ) -td "$(GENSRCDIR)" -i "$(SRC_DIR)/org/omg/PortableInterceptor" -i $(CORBA_IDL_DIR) -fall -corba 3.0 -D CORBA3 -pkgPrefix IOP org.omg $(IOP.IDL)
+- $(RM) -r $(IOPDELETEFILES)
+
+ iop.compile: $(IOPGENERATEDFILES)
+
+@@ -169,8 +154,6 @@
+ CORBAXDUPLICATEFILES = $(CORBA_DUPLICATE_java:%=$(GENSRCDIR)/%)
+
+ $(CORBAXGENERATEDFILES):: $(CORBAX.IDL)
+- $(IDLJ) -td "$(GENSRCDIR)" -i "$(SRC_DIR)/org/omg/PortableInterceptor" -i $(CORBA_IDL_DIR) -fall -corba 3.0 $(CORBAX.IDL)
+- $(RM) $(CORBAXDUPLICATEFILES)
+
+ corbax.compile: $(CORBAXGENERATEDFILES)
+
+@@ -181,7 +164,6 @@
+ MESSAGINGGENERATEDFILES = $(Messaging_java:%=$(GENSRCDIR)/%)
+
+ $(MESSAGINGGENERATEDFILES):: $(MESSAGING.IDL)
+- $(IDLJ) -td "$(GENSRCDIR)" -i "$(SRC_DIR)/org/omg/PortableInterceptor" -i $(CORBA_IDL_DIR) -fall -corba 3.0 -pkgPrefix Messaging org.omg $(MESSAGING.IDL)
+
+ messaging.compile: $(MESSAGINGGENERATEDFILES)
+
+@@ -195,8 +177,6 @@
+ PIHELHOLFILES = $(PI_GENERATED_HELP_HOL_java:%=$(GENSRCDIR)/%)
+
+ $(PIGENERATEDFILES):: $(INTERCEPTORS.IDL)
+- $(IDLJ) -td "$(GENSRCDIR)" -i "$(SRC_DIR)/org/omg/PortableInterceptor" -i $(CORBA_IDL_DIR) -fall -pkgPrefix PortableInterceptor org.omg -pkgPrefix Dynamic org.omg -pkgPrefix IOP org.omg -corba 3.0 -D CORBA3 $(INTERCEPTORS.IDL)
+- $(RM) $(PIHELHOLFILES)
+
+ pi.compile: $(PIGENERATEDFILES)
+
+diff -Nru ../openjdk.orig/openjdk-boot/corba/make/sun/rmi/corbalogsources/Makefile openjdk-boot/corba/make/sun/rmi/corbalogsources/Makefile
+--- ../openjdk.orig/openjdk-boot/corba/make/sun/rmi/corbalogsources/Makefile 2009-03-30 23:07:09.000000000 +0100
++++ openjdk-boot/corba/make/sun/rmi/corbalogsources/Makefile 2009-10-30 16:59:16.000000000 +0000
+@@ -172,7 +172,6 @@
+ ACTIVATIONFILES = $(com_sun_corba_se_spi_activation_java:%=$(GENSRCDIR)/%)
+
+ $(ACTIVATIONFILES): $(ACTIVATION.IDL)
+- $(IDLJ) -td $(GENSRCDIR) -i $(ACTIVATIONFILEDIR) -fall -oldImplBase -pkgPrefix activation com.sun.corba.se.spi $(ACTIVATION.IDL)
+
+ activation.idl.compile: $(ACTIVATIONFILES)
+
+@@ -195,7 +194,6 @@
+
+ # REVISIT: remove -oldImplBase
+ $(PORTABLEACTIVATIONFILES): $(PORTABLEACTIVATION.IDL)
+- $(IDLJ) -td $(GENSRCDIR) $(PORTABLEACTIVATION_INCLUDES) $(PORTABLEACTIVATION_PKG_PREFIXES) -fall -oldImplBase -corba 3.0 -D CORBA3 $(PORTABLEACTIVATION.IDL)
+
+ portableactivation.idl.compile: $(PORTABLEACTIVATIONFILES)
+
diff --git a/patches/boot/corba-no-gen.patch b/patches/boot/corba-no-gen.patch
new file mode 100644
index 0000000..aaacc14
--- /dev/null
+++ b/patches/boot/corba-no-gen.patch
@@ -0,0 +1,12 @@
+diff -Nru ../openjdk.orig/openjdk-boot/corba/make/com/sun/corba/se/Makefile openjdk-boot/corba/make/com/sun/corba/se/Makefile
+--- ../openjdk.orig/openjdk-boot/corba/make/com/sun/corba/se/Makefile 2009-03-30 17:13:01.000000000 +0100
++++ openjdk-boot/corba/make/com/sun/corba/se/Makefile 2009-10-30 16:59:16.000000000 +0000
+@@ -42,7 +42,7 @@
+ # the rmic iiop backend needs some classes that are part of the impl/util
+ # package. These classes use log wrappers, so they must be built after
+ # pept and before rmi.
+-SUBDIRS = sources pept corespi core spi impl rmi
++SUBDIRS = org pept corespi core spi impl rmi
+ all build clean clobber::
+ $(SUBDIRS-loop)
+
diff --git a/patches/boot/corba-orb.patch b/patches/boot/corba-orb.patch
new file mode 100644
index 0000000..f6aab98
--- /dev/null
+++ b/patches/boot/corba-orb.patch
@@ -0,0 +1,42 @@
+diff -Nru ../openjdk.orig/openjdk-boot/corba/make/com/sun/corba/se/org/Makefile openjdk-boot/corba/make/com/sun/corba/se/org/Makefile
+--- ../openjdk.orig/openjdk-boot/corba/make/com/sun/corba/se/org/Makefile 1970-01-01 01:00:00.000000000 +0100
++++ openjdk-boot/corba/make/com/sun/corba/se/org/Makefile 2009-10-30 16:59:16.000000000 +0000
+@@ -0,0 +1,38 @@
++#
++# Copyright 2001-2005 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. Sun designates this
++# particular file as subject to the "Classpath" exception as provided
++# by Sun in the LICENSE file that accompanied this code.
++#
++# 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.
++#
++
++BUILDDIR = ../../../../..
++PACKAGE = com.sun.corba.se
++PRODUCT = org
++
++include $(BUILDDIR)/common/Defs.gmk
++
++FILES_java=\
++ com/sun/corba/se/org/omg/CORBA/ORB.java
++
++#
++# Include
++#
++include $(BUILDDIR)/common/Classes.gmk
diff --git a/patches/boot/demos.patch b/patches/boot/demos.patch
new file mode 100644
index 0000000..8809a5c
--- /dev/null
+++ b/patches/boot/demos.patch
@@ -0,0 +1,32 @@
+diff -Nru openjdk.orig/jdk/make/common/Release.gmk openjdk/jdk/make/common/Release.gmk
+--- openjdk-boot.orig/jdk/make/common/Release.gmk 2012-06-11 14:24:46.531375308 +0100
++++ openjdk-boot/jdk/make/common/Release.gmk 2012-06-11 14:28:47.215136389 +0100
+@@ -1104,16 +1104,6 @@
+ $(CP) $(FILES_launcher) $(JDK_IMAGE_DIR)/src/launcher
+ $(CD) $(JDK_IMAGE_DIR)/src && $(ZIPEXE) -qr ../src.zip *
+ $(RM) -r $(JDK_IMAGE_DIR)/src
+- @#
+- @# demo, include
+- @#
+- $(CP) -r -f $(DEMODIR) $(JDK_IMAGE_DIR)
+- $(CP) -r -f $(SAMPLEDIR) $(JDK_IMAGE_DIR)
+- $(CP) -r $(INCLUDEDIR) $(JDK_IMAGE_DIR)
+- @#
+- @# Swing BeanInfo generation
+- @#
+- $(CD) javax/swing/beaninfo && $(MAKE) swing-1.2-beans
+ ifneq ($(PLATFORM), windows)
+ $(call copy-man-pages,$(JDK_IMAGE_DIR),$(JDK_MAN_PAGES))
+ endif # !windows
+diff -Nru openjdk.orig/jdk/make/Makefile openjdk/jdk/make/Makefile
+--- openjdk-boot.orig/jdk/make/Makefile 2012-06-08 17:12:17.000000000 +0100
++++ openjdk-boot/jdk/make/Makefile 2012-06-11 14:28:47.223136515 +0100
+@@ -240,7 +240,7 @@
+ SUBDIRS += bridge
+ endif
+ SUBDIRS_tools = launchers
+-SUBDIRS_misc = org sunw jpda mkdemo mksample
++SUBDIRS_misc = org sunw jpda mksample
+
+ # Alternate classes implementation
+ ifndef OPENJDK
diff --git a/patches/boot/ecj-autoboxing.patch b/patches/boot/ecj-autoboxing.patch
new file mode 100644
index 0000000..5258c91
--- /dev/null
+++ b/patches/boot/ecj-autoboxing.patch
@@ -0,0 +1,299 @@
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/lang/invoke/CallSite.java openjdk-boot/jdk/src/share/classes/java/lang/invoke/CallSite.java
+--- openjdk-boot.orig/jdk/src/share/classes/java/lang/invoke/CallSite.java 2011-07-12 12:43:47.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/lang/invoke/CallSite.java 2011-07-12 15:12:13.210932096 +0100
+@@ -329,7 +329,7 @@
+
+ private static Object maybeReBox(Object x) {
+ if (x instanceof Integer) {
+- int xi = (int) x;
++ int xi = (Integer) x;
+ if (xi == (byte) xi)
+ x = xi; // must rebox; see JLS 5.1.7
+ }
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/lang/invoke/FromGeneric.java openjdk-boot/jdk/src/share/classes/java/lang/invoke/FromGeneric.java
+--- openjdk-boot.orig/jdk/src/share/classes/java/lang/invoke/FromGeneric.java 2011-06-11 00:38:08.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/lang/invoke/FromGeneric.java 2011-07-12 15:12:13.210932096 +0100
+@@ -505,10 +505,10 @@
+ protected A0 makeInstance(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t)
+ { return new A0(e, i, c, t); }
+ protected Object invoke_L0() throws Throwable { return convert_L((Object)invoker.invokeExact(target)); }
+- protected Object invoke_I0() throws Throwable { return convert_I((int) invoker.invokeExact(target)); }
+- protected Object invoke_J0() throws Throwable { return convert_J((long) invoker.invokeExact(target)); }
+- protected Object invoke_F0() throws Throwable { return convert_F((float) invoker.invokeExact(target)); }
+- protected Object invoke_D0() throws Throwable { return convert_D((double)invoker.invokeExact(target)); }
++ protected Object invoke_I0() throws Throwable { return convert_I((Integer) invoker.invokeExact(target)); }
++ protected Object invoke_J0() throws Throwable { return convert_J((Long) invoker.invokeExact(target)); }
++ protected Object invoke_F0() throws Throwable { return convert_F((Float) invoker.invokeExact(target)); }
++ protected Object invoke_D0() throws Throwable { return convert_D((Double)invoker.invokeExact(target)); }
+ }
+ static class A1 extends Adapter {
+ protected A1(MethodHandle entryPoint) { super(entryPoint); } // to build prototype
+@@ -517,10 +517,10 @@
+ protected A1 makeInstance(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t)
+ { return new A1(e, i, c, t); }
+ protected Object invoke_L1(Object a0) throws Throwable { return convert_L((Object)invoker.invokeExact(target, a0)); }
+- protected Object invoke_I1(Object a0) throws Throwable { return convert_I((int) invoker.invokeExact(target, a0)); }
+- protected Object invoke_J1(Object a0) throws Throwable { return convert_J((long) invoker.invokeExact(target, a0)); }
+- protected Object invoke_F1(Object a0) throws Throwable { return convert_F((float) invoker.invokeExact(target, a0)); }
+- protected Object invoke_D1(Object a0) throws Throwable { return convert_D((double)invoker.invokeExact(target, a0)); }
++ protected Object invoke_I1(Object a0) throws Throwable { return convert_I((Integer) invoker.invokeExact(target, a0)); }
++ protected Object invoke_J1(Object a0) throws Throwable { return convert_J((Long) invoker.invokeExact(target, a0)); }
++ protected Object invoke_F1(Object a0) throws Throwable { return convert_F((Float) invoker.invokeExact(target, a0)); }
++ protected Object invoke_D1(Object a0) throws Throwable { return convert_D((Double)invoker.invokeExact(target, a0)); }
+ }
+ static class A2 extends Adapter {
+ protected A2(MethodHandle entryPoint) { super(entryPoint); } // to build prototype
+@@ -529,10 +529,10 @@
+ protected A2 makeInstance(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t)
+ { return new A2(e, i, c, t); }
+ protected Object invoke_L2(Object a0, Object a1) throws Throwable { return convert_L((Object)invoker.invokeExact(target, a0, a1)); }
+- protected Object invoke_I2(Object a0, Object a1) throws Throwable { return convert_I((int) invoker.invokeExact(target, a0, a1)); }
+- protected Object invoke_J2(Object a0, Object a1) throws Throwable { return convert_J((long) invoker.invokeExact(target, a0, a1)); }
+- protected Object invoke_F2(Object a0, Object a1) throws Throwable { return convert_F((float) invoker.invokeExact(target, a0, a1)); }
+- protected Object invoke_D2(Object a0, Object a1) throws Throwable { return convert_D((double)invoker.invokeExact(target, a0, a1)); }
++ protected Object invoke_I2(Object a0, Object a1) throws Throwable { return convert_I((Integer) invoker.invokeExact(target, a0, a1)); }
++ protected Object invoke_J2(Object a0, Object a1) throws Throwable { return convert_J((Long) invoker.invokeExact(target, a0, a1)); }
++ protected Object invoke_F2(Object a0, Object a1) throws Throwable { return convert_F((Float) invoker.invokeExact(target, a0, a1)); }
++ protected Object invoke_D2(Object a0, Object a1) throws Throwable { return convert_D((Double)invoker.invokeExact(target, a0, a1)); }
+ }
+ static class A3 extends Adapter {
+ protected A3(MethodHandle entryPoint) { super(entryPoint); } // to build prototype
+@@ -541,10 +541,10 @@
+ protected A3 makeInstance(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t)
+ { return new A3(e, i, c, t); }
+ protected Object invoke_L3(Object a0, Object a1, Object a2) throws Throwable { return convert_L((Object)invoker.invokeExact(target, a0, a1, a2)); }
+- protected Object invoke_I3(Object a0, Object a1, Object a2) throws Throwable { return convert_I((int) invoker.invokeExact(target, a0, a1, a2)); }
+- protected Object invoke_J3(Object a0, Object a1, Object a2) throws Throwable { return convert_J((long) invoker.invokeExact(target, a0, a1, a2)); }
+- protected Object invoke_F3(Object a0, Object a1, Object a2) throws Throwable { return convert_F((float) invoker.invokeExact(target, a0, a1, a2)); }
+- protected Object invoke_D3(Object a0, Object a1, Object a2) throws Throwable { return convert_D((double)invoker.invokeExact(target, a0, a1, a2)); }
++ protected Object invoke_I3(Object a0, Object a1, Object a2) throws Throwable { return convert_I((Integer) invoker.invokeExact(target, a0, a1, a2)); }
++ protected Object invoke_J3(Object a0, Object a1, Object a2) throws Throwable { return convert_J((Long) invoker.invokeExact(target, a0, a1, a2)); }
++ protected Object invoke_F3(Object a0, Object a1, Object a2) throws Throwable { return convert_F((Float) invoker.invokeExact(target, a0, a1, a2)); }
++ protected Object invoke_D3(Object a0, Object a1, Object a2) throws Throwable { return convert_D((Double)invoker.invokeExact(target, a0, a1, a2)); }
+ }
+ static class A4 extends Adapter {
+ protected A4(MethodHandle entryPoint) { super(entryPoint); } // to build prototype
+@@ -553,10 +553,10 @@
+ protected A4 makeInstance(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t)
+ { return new A4(e, i, c, t); }
+ protected Object invoke_L4(Object a0, Object a1, Object a2, Object a3) throws Throwable { return convert_L((Object)invoker.invokeExact(target, a0, a1, a2, a3)); }
+- protected Object invoke_I4(Object a0, Object a1, Object a2, Object a3) throws Throwable { return convert_I((int) invoker.invokeExact(target, a0, a1, a2, a3)); }
+- protected Object invoke_J4(Object a0, Object a1, Object a2, Object a3) throws Throwable { return convert_J((long) invoker.invokeExact(target, a0, a1, a2, a3)); }
+- protected Object invoke_F4(Object a0, Object a1, Object a2, Object a3) throws Throwable { return convert_F((float) invoker.invokeExact(target, a0, a1, a2, a3)); }
+- protected Object invoke_D4(Object a0, Object a1, Object a2, Object a3) throws Throwable { return convert_D((double)invoker.invokeExact(target, a0, a1, a2, a3)); }
++ protected Object invoke_I4(Object a0, Object a1, Object a2, Object a3) throws Throwable { return convert_I((Integer) invoker.invokeExact(target, a0, a1, a2, a3)); }
++ protected Object invoke_J4(Object a0, Object a1, Object a2, Object a3) throws Throwable { return convert_J((Long) invoker.invokeExact(target, a0, a1, a2, a3)); }
++ protected Object invoke_F4(Object a0, Object a1, Object a2, Object a3) throws Throwable { return convert_F((Float) invoker.invokeExact(target, a0, a1, a2, a3)); }
++ protected Object invoke_D4(Object a0, Object a1, Object a2, Object a3) throws Throwable { return convert_D((Double)invoker.invokeExact(target, a0, a1, a2, a3)); }
+ }
+ static class A5 extends Adapter {
+ protected A5(MethodHandle entryPoint) { super(entryPoint); } // to build prototype
+@@ -565,10 +565,10 @@
+ protected A5 makeInstance(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t)
+ { return new A5(e, i, c, t); }
+ protected Object invoke_L5(Object a0, Object a1, Object a2, Object a3, Object a4) throws Throwable { return convert_L((Object)invoker.invokeExact(target, a0, a1, a2, a3, a4)); }
+- protected Object invoke_I5(Object a0, Object a1, Object a2, Object a3, Object a4) throws Throwable { return convert_I((int) invoker.invokeExact(target, a0, a1, a2, a3, a4)); }
+- protected Object invoke_J5(Object a0, Object a1, Object a2, Object a3, Object a4) throws Throwable { return convert_J((long) invoker.invokeExact(target, a0, a1, a2, a3, a4)); }
+- protected Object invoke_F5(Object a0, Object a1, Object a2, Object a3, Object a4) throws Throwable { return convert_F((float) invoker.invokeExact(target, a0, a1, a2, a3, a4)); }
+- protected Object invoke_D5(Object a0, Object a1, Object a2, Object a3, Object a4) throws Throwable { return convert_D((double)invoker.invokeExact(target, a0, a1, a2, a3, a4)); }
++ protected Object invoke_I5(Object a0, Object a1, Object a2, Object a3, Object a4) throws Throwable { return convert_I((Integer) invoker.invokeExact(target, a0, a1, a2, a3, a4)); }
++ protected Object invoke_J5(Object a0, Object a1, Object a2, Object a3, Object a4) throws Throwable { return convert_J((Long) invoker.invokeExact(target, a0, a1, a2, a3, a4)); }
++ protected Object invoke_F5(Object a0, Object a1, Object a2, Object a3, Object a4) throws Throwable { return convert_F((Float) invoker.invokeExact(target, a0, a1, a2, a3, a4)); }
++ protected Object invoke_D5(Object a0, Object a1, Object a2, Object a3, Object a4) throws Throwable { return convert_D((Double)invoker.invokeExact(target, a0, a1, a2, a3, a4)); }
+ }
+ static class A6 extends Adapter {
+ protected A6(MethodHandle entryPoint) { super(entryPoint); } // to build prototype
+@@ -577,10 +577,10 @@
+ protected A6 makeInstance(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t)
+ { return new A6(e, i, c, t); }
+ protected Object invoke_L6(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5) throws Throwable { return convert_L((Object)invoker.invokeExact(target, a0, a1, a2, a3, a4, a5)); }
+- protected Object invoke_I6(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5) throws Throwable { return convert_I((int) invoker.invokeExact(target, a0, a1, a2, a3, a4, a5)); }
+- protected Object invoke_J6(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5) throws Throwable { return convert_J((long) invoker.invokeExact(target, a0, a1, a2, a3, a4, a5)); }
+- protected Object invoke_F6(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5) throws Throwable { return convert_F((float) invoker.invokeExact(target, a0, a1, a2, a3, a4, a5)); }
+- protected Object invoke_D6(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5) throws Throwable { return convert_D((double)invoker.invokeExact(target, a0, a1, a2, a3, a4, a5)); }
++ protected Object invoke_I6(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5) throws Throwable { return convert_I((Integer) invoker.invokeExact(target, a0, a1, a2, a3, a4, a5)); }
++ protected Object invoke_J6(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5) throws Throwable { return convert_J((Long) invoker.invokeExact(target, a0, a1, a2, a3, a4, a5)); }
++ protected Object invoke_F6(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5) throws Throwable { return convert_F((Float) invoker.invokeExact(target, a0, a1, a2, a3, a4, a5)); }
++ protected Object invoke_D6(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5) throws Throwable { return convert_D((Double)invoker.invokeExact(target, a0, a1, a2, a3, a4, a5)); }
+ }
+ static class A7 extends Adapter {
+ protected A7(MethodHandle entryPoint) { super(entryPoint); } // to build prototype
+@@ -589,10 +589,10 @@
+ protected A7 makeInstance(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t)
+ { return new A7(e, i, c, t); }
+ protected Object invoke_L7(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6) throws Throwable { return convert_L((Object)invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6)); }
+- protected Object invoke_I7(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6) throws Throwable { return convert_I((int) invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6)); }
+- protected Object invoke_J7(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6) throws Throwable { return convert_J((long) invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6)); }
+- protected Object invoke_F7(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6) throws Throwable { return convert_F((float) invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6)); }
+- protected Object invoke_D7(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6) throws Throwable { return convert_D((double)invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6)); }
++ protected Object invoke_I7(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6) throws Throwable { return convert_I((Integer) invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6)); }
++ protected Object invoke_J7(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6) throws Throwable { return convert_J((Long) invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6)); }
++ protected Object invoke_F7(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6) throws Throwable { return convert_F((Float) invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6)); }
++ protected Object invoke_D7(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6) throws Throwable { return convert_D((Double)invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6)); }
+ }
+ static class A8 extends Adapter {
+ protected A8(MethodHandle entryPoint) { super(entryPoint); } // to build prototype
+@@ -601,10 +601,10 @@
+ protected A8 makeInstance(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t)
+ { return new A8(e, i, c, t); }
+ protected Object invoke_L8(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7) throws Throwable { return convert_L((Object)invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6, a7)); }
+- protected Object invoke_I8(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7) throws Throwable { return convert_I((int) invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6, a7)); }
+- protected Object invoke_J8(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7) throws Throwable { return convert_J((long) invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6, a7)); }
+- protected Object invoke_F8(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7) throws Throwable { return convert_F((float) invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6, a7)); }
+- protected Object invoke_D8(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7) throws Throwable { return convert_D((double)invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6, a7)); }
++ protected Object invoke_I8(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7) throws Throwable { return convert_I((Integer) invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6, a7)); }
++ protected Object invoke_J8(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7) throws Throwable { return convert_J((Long) invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6, a7)); }
++ protected Object invoke_F8(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7) throws Throwable { return convert_F((Float) invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6, a7)); }
++ protected Object invoke_D8(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7) throws Throwable { return convert_D((Double)invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6, a7)); }
+ }
+ static class A9 extends Adapter {
+ protected A9(MethodHandle entryPoint) { super(entryPoint); } // to build prototype
+@@ -613,10 +613,10 @@
+ protected A9 makeInstance(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t)
+ { return new A9(e, i, c, t); }
+ protected Object invoke_L9(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, Object a8) throws Throwable { return convert_L((Object)invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6, a7, a8)); }
+- protected Object invoke_I9(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, Object a8) throws Throwable { return convert_I((int) invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6, a7, a8)); }
+- protected Object invoke_J9(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, Object a8) throws Throwable { return convert_J((long) invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6, a7, a8)); }
+- protected Object invoke_F9(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, Object a8) throws Throwable { return convert_F((float) invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6, a7, a8)); }
+- protected Object invoke_D9(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, Object a8) throws Throwable { return convert_D((double)invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6, a7, a8)); }
++ protected Object invoke_I9(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, Object a8) throws Throwable { return convert_I((Integer) invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6, a7, a8)); }
++ protected Object invoke_J9(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, Object a8) throws Throwable { return convert_J((Long) invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6, a7, a8)); }
++ protected Object invoke_F9(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, Object a8) throws Throwable { return convert_F((Float) invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6, a7, a8)); }
++ protected Object invoke_D9(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, Object a8) throws Throwable { return convert_D((Double)invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6, a7, a8)); }
+ }
+ static class A10 extends Adapter {
+ protected A10(MethodHandle entryPoint) { super(entryPoint); } // to build prototype
+@@ -625,9 +625,9 @@
+ protected A10 makeInstance(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t)
+ { return new A10(e, i, c, t); }
+ protected Object invoke_L10(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, Object a8, Object a9) throws Throwable { return convert_L((Object)invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)); }
+- protected Object invoke_I10(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, Object a8, Object a9) throws Throwable { return convert_I((int) invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)); }
+- protected Object invoke_J10(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, Object a8, Object a9) throws Throwable { return convert_J((long) invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)); }
+- protected Object invoke_F10(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, Object a8, Object a9) throws Throwable { return convert_F((float) invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)); }
+- protected Object invoke_D10(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, Object a8, Object a9) throws Throwable { return convert_D((double)invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)); }
++ protected Object invoke_I10(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, Object a8, Object a9) throws Throwable { return convert_I((Integer) invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)); }
++ protected Object invoke_J10(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, Object a8, Object a9) throws Throwable { return convert_J((Long) invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)); }
++ protected Object invoke_F10(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, Object a8, Object a9) throws Throwable { return convert_F((Float) invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)); }
++ protected Object invoke_D10(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, Object a8, Object a9) throws Throwable { return convert_D((Double)invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)); }
+ }
+ }
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/lang/invoke/MethodHandleImpl.java openjdk-boot/jdk/src/share/classes/java/lang/invoke/MethodHandleImpl.java
+--- openjdk-boot.orig/jdk/src/share/classes/java/lang/invoke/MethodHandleImpl.java 2011-07-12 12:43:47.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/lang/invoke/MethodHandleImpl.java 2011-07-12 15:12:13.214932157 +0100
+@@ -956,52 +956,52 @@
+ return addTypeString(target, this);
+ }
+ private Object invoke_V(Object... av) throws Throwable {
+- if ((boolean) test.invokeExact(av))
++ if ((Boolean) test.invokeExact(av))
+ return target.invokeExact(av);
+ return fallback.invokeExact(av);
+ }
+ private Object invoke_L0() throws Throwable {
+- if ((boolean) test.invokeExact())
++ if ((Boolean) test.invokeExact())
+ return target.invokeExact();
+ return fallback.invokeExact();
+ }
+ private Object invoke_L1(Object a0) throws Throwable {
+- if ((boolean) test.invokeExact(a0))
++ if ((Boolean) test.invokeExact(a0))
+ return target.invokeExact(a0);
+ return fallback.invokeExact(a0);
+ }
+ private Object invoke_L2(Object a0, Object a1) throws Throwable {
+- if ((boolean) test.invokeExact(a0, a1))
++ if ((Boolean) test.invokeExact(a0, a1))
+ return target.invokeExact(a0, a1);
+ return fallback.invokeExact(a0, a1);
+ }
+ private Object invoke_L3(Object a0, Object a1, Object a2) throws Throwable {
+- if ((boolean) test.invokeExact(a0, a1, a2))
++ if ((Boolean) test.invokeExact(a0, a1, a2))
+ return target.invokeExact(a0, a1, a2);
+ return fallback.invokeExact(a0, a1, a2);
+ }
+ private Object invoke_L4(Object a0, Object a1, Object a2, Object a3) throws Throwable {
+- if ((boolean) test.invokeExact(a0, a1, a2, a3))
++ if ((Boolean) test.invokeExact(a0, a1, a2, a3))
+ return target.invokeExact(a0, a1, a2, a3);
+ return fallback.invokeExact(a0, a1, a2, a3);
+ }
+ private Object invoke_L5(Object a0, Object a1, Object a2, Object a3, Object a4) throws Throwable {
+- if ((boolean) test.invokeExact(a0, a1, a2, a3, a4))
++ if ((Boolean) test.invokeExact(a0, a1, a2, a3, a4))
+ return target.invokeExact(a0, a1, a2, a3, a4);
+ return fallback.invokeExact(a0, a1, a2, a3, a4);
+ }
+ private Object invoke_L6(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5) throws Throwable {
+- if ((boolean) test.invokeExact(a0, a1, a2, a3, a4, a5))
++ if ((Boolean) test.invokeExact(a0, a1, a2, a3, a4, a5))
+ return target.invokeExact(a0, a1, a2, a3, a4, a5);
+ return fallback.invokeExact(a0, a1, a2, a3, a4, a5);
+ }
+ private Object invoke_L7(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6) throws Throwable {
+- if ((boolean) test.invokeExact(a0, a1, a2, a3, a4, a5, a6))
++ if ((Boolean) test.invokeExact(a0, a1, a2, a3, a4, a5, a6))
+ return target.invokeExact(a0, a1, a2, a3, a4, a5, a6);
+ return fallback.invokeExact(a0, a1, a2, a3, a4, a5, a6);
+ }
+ private Object invoke_L8(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7) throws Throwable {
+- if ((boolean) test.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7))
++ if ((Boolean) test.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7))
+ return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7);
+ return fallback.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7);
+ }
+@@ -1374,7 +1374,7 @@
+ MH_checkCallerClass = IMPL_LOOKUP
+ .findStatic(THIS_CLASS, "checkCallerClass",
+ MethodType.methodType(boolean.class, Class.class, Class.class));
+- assert((boolean) MH_checkCallerClass.invokeExact(THIS_CLASS, THIS_CLASS));
++ assert((Boolean) MH_checkCallerClass.invokeExact(THIS_CLASS, THIS_CLASS));
+ } catch (Throwable ex) {
+ throw new InternalError(ex.toString());
+ }
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/lang/invoke/ToGeneric.java openjdk-boot/jdk/src/share/classes/java/lang/invoke/ToGeneric.java
+--- openjdk-boot.orig/jdk/src/share/classes/java/lang/invoke/ToGeneric.java 2011-06-11 00:38:08.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/lang/invoke/ToGeneric.java 2011-07-12 15:12:13.214932157 +0100
+@@ -394,10 +394,10 @@
+
+ // Code to run when the generic target has finished and produced a value.
+ protected Object return_L(Object res) throws Throwable { return (Object)convert.invokeExact(res); }
+- protected int return_I(Object res) throws Throwable { return (int) convert.invokeExact(res); }
+- protected long return_J(Object res) throws Throwable { return (long) convert.invokeExact(res); }
+- protected float return_F(Object res) throws Throwable { return (float) convert.invokeExact(res); }
+- protected double return_D(Object res) throws Throwable { return (double)convert.invokeExact(res); }
++ protected int return_I(Object res) throws Throwable { return (Integer) convert.invokeExact(res); }
++ protected long return_J(Object res) throws Throwable { return (Long) convert.invokeExact(res); }
++ protected float return_F(Object res) throws Throwable { return (Float) convert.invokeExact(res); }
++ protected double return_D(Object res) throws Throwable { return (Double)convert.invokeExact(res); }
+
+ static private final String CLASS_PREFIX; // "java.lang.invoke.ToGeneric$"
+ static {
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/invoke/util/ValueConversions.java openjdk-boot/jdk/src/share/classes/sun/invoke/util/ValueConversions.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/invoke/util/ValueConversions.java 2011-07-12 14:52:51.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/invoke/util/ValueConversions.java 2011-07-12 15:12:50.499499088 +0100
+@@ -223,9 +223,9 @@
+ if (x instanceof Number) {
+ res = (Number) x;
+ } else if (x instanceof Boolean) {
+- res = ((boolean)x ? ONE_INT : ZERO_INT);
++ res = ((Boolean)x ? ONE_INT : ZERO_INT);
+ } else if (x instanceof Character) {
+- res = (int)(char)x;
++ res = (int)(Character)x;
+ } else {
+ // this will fail with the required ClassCastException:
+ res = (Number) x;
+@@ -386,7 +386,7 @@
+
+ static int unboxRawInteger(Object x) {
+ if (x instanceof Integer)
+- return (int) x;
++ return (Integer) x;
+ else
+ return (int) unboxLong(x, false);
+ }
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/lang/invoke/MethodHandleImpl.java openjdk-boot/jdk/src/share/classes/java/lang/invoke/MethodHandleImpl.java
+--- openjdk-boot.orig/jdk/src/share/classes/java/lang/invoke/MethodHandleImpl.java 2012-10-17 03:17:03.331299684 +0100
++++ openjdk-boot/jdk/src/share/classes/java/lang/invoke/MethodHandleImpl.java 2012-10-17 03:19:49.546110492 +0100
diff --git a/patches/boot/ecj-diamond.patch b/patches/boot/ecj-diamond.patch
new file mode 100644
index 0000000..295e12b
--- /dev/null
+++ b/patches/boot/ecj-diamond.patch
@@ -0,0 +1,6329 @@
+diff -Nru openjdk-boot.orig/corba/src/share/classes/com/sun/corba/se/impl/encoding/CachedCodeBase.java openjdk-boot/corba/src/share/classes/com/sun/corba/se/impl/encoding/CachedCodeBase.java
+--- openjdk-boot.orig/corba/src/share/classes/com/sun/corba/se/impl/encoding/CachedCodeBase.java 2013-03-08 16:05:05.000000000 +0000
++++ openjdk-boot/corba/src/share/classes/com/sun/corba/se/impl/encoding/CachedCodeBase.java 2013-04-17 14:53:25.283551366 +0100
+@@ -58,7 +58,7 @@
+ private CorbaConnection conn;
+
+ private static Object iorMapLock = new Object();
+- private static Hashtable<IOR,CodeBase> iorMap = new Hashtable<>();
++ private static Hashtable<IOR,CodeBase> iorMap = new Hashtable<IOR,CodeBase>();
+
+ public static synchronized void cleanCache( ORB orb ) {
+ synchronized (iorMapLock) {
+diff -Nru openjdk-boot.orig/corba/src/share/classes/com/sun/corba/se/impl/orb/ORBImpl.java openjdk-boot/corba/src/share/classes/com/sun/corba/se/impl/orb/ORBImpl.java
+--- openjdk-boot.orig/corba/src/share/classes/com/sun/corba/se/impl/orb/ORBImpl.java 2013-03-08 16:05:05.000000000 +0000
++++ openjdk-boot/corba/src/share/classes/com/sun/corba/se/impl/orb/ORBImpl.java 2013-04-17 14:53:25.291551495 +0100
+@@ -1316,7 +1316,7 @@
+ protected void shutdownServants(boolean wait_for_completion) {
+ Set<ObjectAdapterFactory> oaset;
+ synchronized (this) {
+- oaset = new HashSet<>(requestDispatcherRegistry.getObjectAdapterFactories());
++ oaset = new HashSet<ObjectAdapterFactory>(requestDispatcherRegistry.getObjectAdapterFactories());
+ }
+
+ for (ObjectAdapterFactory oaf : oaset)
+diff -Nru openjdk-boot.orig/corba/src/share/classes/com/sun/corba/se/impl/orbutil/threadpool/ThreadPoolImpl.java openjdk-boot/corba/src/share/classes/com/sun/corba/se/impl/orbutil/threadpool/ThreadPoolImpl.java
+--- openjdk-boot.orig/corba/src/share/classes/com/sun/corba/se/impl/orbutil/threadpool/ThreadPoolImpl.java 2013-03-08 16:05:05.000000000 +0000
++++ openjdk-boot/corba/src/share/classes/com/sun/corba/se/impl/orbutil/threadpool/ThreadPoolImpl.java 2013-04-17 14:53:25.291551495 +0100
+@@ -108,7 +108,7 @@
+ private ThreadGroup threadGroup;
+
+ Object workersLock = new Object();
+- List<WorkerThread> workers = new ArrayList<>();
++ List<WorkerThread> workers = new ArrayList<WorkerThread>();
+
+ /**
+ * This constructor is used to create an unbounded threadpool
+@@ -154,7 +154,7 @@
+ // Copy to avoid concurrent modification problems.
+ List<WorkerThread> copy = null;
+ synchronized (workersLock) {
+- copy = new ArrayList<>(workers);
++ copy = new ArrayList<WorkerThread>(workers);
+ }
+
+ for (WorkerThread wt : copy) {
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/beans/decoder/DocumentHandler.java openjdk-boot/jdk/src/share/classes/com/sun/beans/decoder/DocumentHandler.java
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/beans/decoder/DocumentHandler.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/com/sun/beans/decoder/DocumentHandler.java 2013-04-17 14:53:25.291551495 +0100
+@@ -62,9 +62,10 @@
+ */
+ public final class DocumentHandler extends DefaultHandler {
+ private final AccessControlContext acc = AccessController.getContext();
+- private final Map<String, Class<? extends ElementHandler>> handlers = new HashMap<>();
+- private final Map<String, Object> environment = new HashMap<>();
+- private final List<Object> objects = new ArrayList<>();
++ private final Map<String, Class<? extends ElementHandler>> handlers =
++ new HashMap<String, Class<? extends ElementHandler>>();
++ private final Map<String, Object> environment = new HashMap<String, Object>();
++ private final List<Object> objects = new ArrayList<Object>();
+
+ private Reference<ClassLoader> loader;
+ private ExceptionListener listener;
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/beans/TypeResolver.java openjdk-boot/jdk/src/share/classes/com/sun/beans/TypeResolver.java
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/beans/TypeResolver.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/com/sun/beans/TypeResolver.java 2013-04-17 14:53:25.291551495 +0100
+@@ -239,9 +239,9 @@
+ }
+ }
+
+- private static final WeakCache<Type, TypeResolver> CACHE = new WeakCache<>();
++ private static final WeakCache<Type, TypeResolver> CACHE = new WeakCache<Type, TypeResolver>();
+
+- private final Map<TypeVariable<?>, Type> map = new HashMap<>();
++ private final Map<TypeVariable<?>, Type> map = new HashMap<TypeVariable<?>, Type>();
+
+ /**
+ * Constructs the type resolver for the given actual type.
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/Attribute.java openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Attribute.java
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/Attribute.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Attribute.java 2013-04-17 14:53:25.291551495 +0100
+@@ -103,9 +103,9 @@
+ return this.def.compareTo(that.def);
+ }
+
+- private static final Map<List<Attribute>, List<Attribute>> canonLists = new HashMap<>();
+- private static final Map<Layout, Attribute> attributes = new HashMap<>();
+- private static final Map<Layout, Attribute> standardDefs = new HashMap<>();
++ private static final Map<List<Attribute>, List<Attribute>> canonLists = new HashMap<List<Attribute>, List<Attribute>>();
++ private static final Map<Layout, Attribute> attributes = new HashMap<Layout, Attribute>();
++ private static final Map<Layout, Attribute> standardDefs = new HashMap<Layout, Attribute>();
+
+ // Canonicalized lists of trivial attrs (Deprecated, etc.)
+ // are used by trimToSize, in order to reduce footprint
+@@ -115,7 +115,7 @@
+ synchronized (canonLists) {
+ List<Attribute> cl = canonLists.get(al);
+ if (cl == null) {
+- cl = new ArrayList<>(al.size());
++ cl = new ArrayList<Attribute>(al.size());
+ cl.addAll(al);
+ cl = Collections.unmodifiableList(cl);
+ canonLists.put(al, cl);
+@@ -336,9 +336,9 @@
+
+ public void addAttribute(Attribute a) {
+ if (attributes == null)
+- attributes = new ArrayList<>(3);
++ attributes = new ArrayList<Attribute>(3);
+ else if (!(attributes instanceof ArrayList))
+- attributes = new ArrayList<>(attributes); // unfreeze it
++ attributes = new ArrayList<Attribute>(attributes); // unfreeze it
+ attributes.add(a);
+ }
+
+@@ -346,7 +346,7 @@
+ if (attributes == null) return null;
+ if (!attributes.contains(a)) return null;
+ if (!(attributes instanceof ArrayList))
+- attributes = new ArrayList<>(attributes); // unfreeze it
++ attributes = new ArrayList<Attribute>(attributes); // unfreeze it
+ attributes.remove(a);
+ return a;
+ }
+@@ -838,7 +838,7 @@
+ */
+ static //private
+ Layout.Element[] tokenizeLayout(Layout self, int curCble, String layout) {
+- List<Layout.Element> col = new ArrayList<>(layout.length());
++ List<Layout.Element> col = new ArrayList<Layout.Element>(layout.length());
+ tokenizeLayout(self, curCble, layout, col);
+ Layout.Element[] res = new Layout.Element[col.size()];
+ col.toArray(res);
+@@ -903,7 +903,7 @@
+ case 'T': // union: 'T' any_int union_case* '(' ')' '[' body ']'
+ kind = EK_UN;
+ i = tokenizeSInt(e, layout, i);
+- List<Layout.Element> cases = new ArrayList<>();
++ List<Layout.Element> cases = new ArrayList<Layout.Element>();
+ for (;;) {
+ // Keep parsing cases until we hit the default case.
+ if (layout.charAt(i++) != '(')
+@@ -1057,7 +1057,7 @@
+ }
+ static //private
+ String[] splitBodies(String layout) {
+- List<String> bodies = new ArrayList<>();
++ List<String> bodies = new ArrayList<String>();
+ // Parse several independent layout bodies: "[foo][bar]...[baz]"
+ for (int i = 0; i < layout.length(); i++) {
+ if (layout.charAt(i++) != '[')
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/BandStructure.java openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/BandStructure.java
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/BandStructure.java 2013-04-17 14:52:22.422547047 +0100
++++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/BandStructure.java 2013-04-17 14:53:25.291551495 +0100
+@@ -257,7 +257,7 @@
+ assert(basicCodings[_meta_default] == null);
+ assert(basicCodings[_meta_canon_min] != null);
+ assert(basicCodings[_meta_canon_max] != null);
+- Map<Coding, Integer> map = new HashMap<>();
++ Map<Coding, Integer> map = new HashMap<Coding, Integer>();
+ for (int i = 0; i < basicCodings.length; i++) {
+ Coding c = basicCodings[i];
+ if (c == null) continue;
+@@ -1067,8 +1067,8 @@
+
+ // Bootstrap support for CPRefBands. These are needed to record
+ // intended CP indexes, before the CP has been created.
+- private final List<CPRefBand> allKQBands = new ArrayList<>();
+- private List<Object[]> needPredefIndex = new ArrayList<>();
++ private final List<CPRefBand> allKQBands = new ArrayList<CPRefBand>();
++ private List<Object[]> needPredefIndex = new ArrayList<Object[]>();
+
+
+ int encodeRef(Entry e, Index ix) {
+@@ -1705,7 +1705,7 @@
+ protected int attrClassFileVersionMask;
+
+ // Mapping from Attribute.Layout to Band[] (layout element bands).
+- protected Map<Attribute.Layout, Band[]> attrBandTable = new HashMap<>();
++ protected Map<Attribute.Layout, Band[]> attrBandTable = new HashMap<Attribute.Layout, Band[]>();
+
+ // Well-known attributes:
+ protected final Attribute.Layout attrCodeEmpty;
+@@ -1714,16 +1714,16 @@
+ protected final Attribute.Layout attrConstantValue;
+
+ // Mapping from Attribute.Layout to Integer (inverse of attrDefs)
+- Map<Attribute.Layout, Integer> attrIndexTable = new HashMap<>();
++ Map<Attribute.Layout, Integer> attrIndexTable = new HashMap<Attribute.Layout, Integer>();
+
+ // Mapping from attribute index (<32 are flag bits) to attributes.
+ protected List<List<Attribute.Layout>> attrDefs =
+- new FixedList<>(ATTR_CONTEXT_LIMIT);
++ new FixedList<List<Attribute.Layout>>(ATTR_CONTEXT_LIMIT);
+ {
+ for (int i = 0; i < ATTR_CONTEXT_LIMIT; i++) {
+ assert(attrIndexLimit[i] == 0);
+ attrIndexLimit[i] = 32; // just for the sake of predefs.
+- attrDefs.set(i, new ArrayList<>(Collections.nCopies(
++ attrDefs.set(i, new ArrayList<Attribute.Layout>(Collections.nCopies(
+ attrIndexLimit[i], (Attribute.Layout)null)));
+
+ }
+@@ -1913,7 +1913,7 @@
+
+ protected List<Attribute.Layout> getPredefinedAttrs(int ctype) {
+ assert(attrIndexLimit[ctype] != 0);
+- List<Attribute.Layout> res = new ArrayList<>(attrIndexLimit[ctype]);
++ List<Attribute.Layout> res = new ArrayList<Attribute.Layout>(attrIndexLimit[ctype]);
+ // Remove nulls and non-predefs.
+ for (int ai = 0; ai < attrIndexLimit[ctype]; ai++) {
+ if (testBit(attrDefSeen[ctype], 1L<<ai)) continue;
+@@ -2537,7 +2537,7 @@
+ // DEBUG ONLY: Record something about the band order.
+ boolean notePrevForAssert(Band b, Band p) {
+ if (prevForAssertMap == null)
+- prevForAssertMap = new HashMap<>();
++ prevForAssertMap = new HashMap<Band, Band>();
+ prevForAssertMap.put(b, p);
+ return true;
+ }
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/ClassReader.java openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/ClassReader.java
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/ClassReader.java 2013-04-17 14:52:22.294545002 +0100
++++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/ClassReader.java 2013-04-17 14:53:25.291551495 +0100
+@@ -466,7 +466,7 @@
+
+ void readInnerClasses(Class cls) throws IOException {
+ int nc = readUnsignedShort();
+- ArrayList<InnerClass> ics = new ArrayList<>(nc);
++ ArrayList<InnerClass> ics = new ArrayList<InnerClass>(nc);
+ for (int i = 0; i < nc; i++) {
+ InnerClass ic =
+ new InnerClass(readClassRef(),
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/CodingChooser.java openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/CodingChooser.java
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/CodingChooser.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/CodingChooser.java 2013-04-17 14:53:25.295551558 +0100
+@@ -743,9 +743,9 @@
+ // Steps 1/2/3 are interdependent, and may be iterated.
+ // Steps 4 and 5 may be decided independently afterward.
+ int[] LValuesCoded = PopulationCoding.LValuesCoded;
+- List<Coding> bestFits = new ArrayList<>();
+- List<Coding> fullFits = new ArrayList<>();
+- List<Coding> longFits = new ArrayList<>();
++ List<Coding> bestFits = new ArrayList<Coding>();
++ List<Coding> fullFits = new ArrayList<Coding>();
++ List<Coding> longFits = new ArrayList<Coding>();
+ final int PACK_TO_MAX_S = 1;
+ if (bestPopFVC <= 255) {
+ bestFits.add(BandStructure.BYTE1);
+@@ -785,7 +785,7 @@
+ }
+ }
+ }
+- List<Coding> allFits = new ArrayList<>();
++ List<Coding> allFits = new ArrayList<Coding>();
+ for (Iterator<Coding> i = bestFits.iterator(),
+ j = fullFits.iterator(),
+ k = longFits.iterator();
+@@ -1230,10 +1230,10 @@
+ Histogram hist = getValueHistogram();
+ int fVlen = stressLen(hist.getTotalLength());
+ if (fVlen == 0) return coding;
+- List<Integer> popvals = new ArrayList<>();
++ List<Integer> popvals = new ArrayList<Integer>();
+ if (stress.nextBoolean()) {
+ // Build the population from the value list.
+- Set<Integer> popset = new HashSet<>();
++ Set<Integer> popset = new HashSet<Integer>();
+ for (int i = start; i < end; i++) {
+ if (popset.add(values[i])) popvals.add(values[i]);
+ }
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/Coding.java openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Coding.java
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/Coding.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Coding.java 2013-04-17 14:53:25.295551558 +0100
+@@ -402,7 +402,7 @@
+ private static Map<Coding, Coding> codeMap;
+
+ private static synchronized Coding of(int B, int H, int S, int del) {
+- if (codeMap == null) codeMap = new HashMap<>();
++ if (codeMap == null) codeMap = new HashMap<Coding, Coding>();
+ Coding x0 = new Coding(B, H, S, del);
+ Coding x1 = codeMap.get(x0);
+ if (x1 == null) codeMap.put(x0, x1 = x0);
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/ConstantPool.java openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/ConstantPool.java
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/ConstantPool.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/ConstantPool.java 2013-04-17 14:53:25.295551558 +0100
+@@ -915,7 +915,7 @@
+ public static
+ Index[] partition(Index ix, int[] keys) {
+ // %%% Should move this into class Index.
+- List<List<Entry>> parts = new ArrayList<>();
++ List<List<Entry>> parts = new ArrayList<List<Entry>>();
+ Entry[] cpMap = ix.cpMap;
+ assert(keys.length == cpMap.length);
+ for (int i = 0; i < keys.length; i++) {
+@@ -926,7 +926,7 @@
+ }
+ List<Entry> part = parts.get(key);
+ if (part == null) {
+- parts.set(key, part = new ArrayList<>());
++ parts.set(key, part = new ArrayList<Entry>());
+ }
+ part.add(cpMap[i]);
+ }
+@@ -1135,7 +1135,7 @@
+ void completeReferencesIn(Set<Entry> cpRefs, boolean flattenSigs) {
+ cpRefs.remove(null);
+ for (ListIterator<Entry> work =
+- new ArrayList<>(cpRefs).listIterator(cpRefs.size());
++ new ArrayList<Entry>(cpRefs).listIterator(cpRefs.size());
+ work.hasPrevious(); ) {
+ Entry e = work.previous();
+ work.remove(); // pop stack
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/Driver.java openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Driver.java
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/Driver.java 2013-04-17 14:52:22.422547047 +0100
++++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Driver.java 2013-04-17 14:53:25.295551558 +0100
+@@ -61,7 +61,7 @@
+ ResourceBundle.getBundle("com.sun.java.util.jar.pack.DriverResource");
+
+ public static void main(String[] ava) throws IOException {
+- List<String> av = new ArrayList<>(Arrays.asList(ava));
++ List<String> av = new ArrayList<String>(Arrays.asList(ava));
+
+ boolean doPack = true;
+ boolean doUnpack = false;
+@@ -84,7 +84,7 @@
+ }
+
+ // Collect engine properties here:
+- Map<String,String> engProps = new HashMap<>();
++ Map<String,String> engProps = new HashMap<String, String>();
+ engProps.put(verboseProp, System.getProperty(verboseProp));
+
+ String optionMap;
+@@ -98,7 +98,7 @@
+ }
+
+ // Collect argument properties here:
+- Map<String,String> avProps = new HashMap<>();
++ Map<String,String> avProps = new HashMap<String, String>();
+ try {
+ for (;;) {
+ String state = parseCommandOptions(av, optionMap, avProps);
+@@ -533,7 +533,7 @@
+ String resultString = null;
+
+ // Convert options string into optLines dictionary.
+- TreeMap<String,String[]> optmap = new TreeMap<>();
++ TreeMap<String,String[]> optmap = new TreeMap<String,String[]>();
+ loadOptmap:
+ for (String optline : options.split("\n")) {
+ String[] words = optline.split("\\p{Space}+");
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/FixedList.java openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/FixedList.java
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/FixedList.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/FixedList.java 2013-04-17 14:53:25.295551558 +0100
+@@ -45,7 +45,7 @@
+ private final ArrayList<E> flist;
+
+ protected FixedList(int capacity) {
+- flist = new ArrayList<>(capacity);
++ flist = new ArrayList<E>(capacity);
+ // initialize the list to null
+ for (int i = 0 ; i < capacity ; i++) {
+ flist.add(null);
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/Fixups.java openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Fixups.java
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/Fixups.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Fixups.java 2013-04-17 14:53:25.295551558 +0100
+@@ -126,11 +126,11 @@
+ public void setBytes(byte[] newBytes) {
+ if (bytes == newBytes) return;
+ ArrayList<Fixup> old = null;
+- assert((old = new ArrayList<>(this)) != null);
++ assert((old = new ArrayList<Fixup>(this)) != null);
+ if (bytes == null || newBytes == null) {
+ // One or the other representations is deficient.
+ // Construct a checkpoint.
+- ArrayList<Fixup> save = new ArrayList<>(this);
++ ArrayList<Fixup> save = new ArrayList<Fixup>(this);
+ clear();
+ bytes = newBytes;
+ addAll(save);
+@@ -138,7 +138,7 @@
+ // assume newBytes is some sort of bitwise copy of the old bytes
+ bytes = newBytes;
+ }
+- assert(old.equals(new ArrayList<>(this)));
++ assert(old.equals(new ArrayList<Fixup>(this)));
+ }
+
+ static final int LOC_SHIFT = 1;
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/Package.java openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Package.java
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/Package.java 2013-04-17 14:52:22.294545002 +0100
++++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Package.java 2013-04-17 14:53:25.295551558 +0100
+@@ -112,7 +112,7 @@
+ public static final Attribute.Layout attrSourceFileSpecial;
+ public static final Map<Attribute.Layout, Attribute> attrDefs;
+ static {
+- Map<Layout, Attribute> ad = new HashMap<>(3);
++ Map<Layout, Attribute> ad = new HashMap<Layout, Attribute>(3);
+ attrCodeEmpty = Attribute.define(ad, ATTR_CONTEXT_METHOD,
+ "Code", "").layout();
+ attrInnerClassesEmpty = Attribute.define(ad, ATTR_CONTEXT_CLASS,
+@@ -181,7 +181,7 @@
+ }
+ }
+
+- ArrayList<Package.Class> classes = new ArrayList<>();
++ ArrayList<Package.Class> classes = new ArrayList<Package.Class>();
+
+ public List<Package.Class> getClasses() {
+ return classes;
+@@ -263,7 +263,7 @@
+ if (olda == null)
+ return; // no SourceFile attr.
+ String obvious = getObviousSourceFile();
+- List<Entry> ref = new ArrayList<>(1);
++ List<Entry> ref = new ArrayList<Entry>(1);
+ olda.visitRefs(this, VRM_PACKAGE, ref);
+ Utf8Entry sfName = (Utf8Entry) ref.get(0);
+ Attribute a = olda;
+@@ -291,7 +291,7 @@
+ if (a != olda) {
+ if (verbose > 2)
+ Utils.log.fine("recoding obvious SourceFile="+obvious);
+- List<Attribute> newAttrs = new ArrayList<>(getAttributes());
++ List<Attribute> newAttrs = new ArrayList<Attribute>(getAttributes());
+ int where = newAttrs.indexOf(olda);
+ newAttrs.set(where, a);
+ setAttributes(newAttrs);
+@@ -321,7 +321,7 @@
+ }
+
+ public void setInnerClasses(Collection<InnerClass> ics) {
+- innerClasses = (ics == null) ? null : new ArrayList<>(ics);
++ innerClasses = (ics == null) ? null : new ArrayList<InnerClass>(ics);
+ // Edit the attribute list, if necessary.
+ Attribute a = getAttribute(attrInnerClassesEmpty);
+ if (innerClasses != null && a == null)
+@@ -340,7 +340,7 @@
+ * with that of Package.this.allInnerClasses.
+ */
+ public List<InnerClass> computeGloballyImpliedICs() {
+- Set<Entry> cpRefs = new HashSet<>();
++ Set<Entry> cpRefs = new HashSet<Entry>();
+ { // This block temporarily displaces this.innerClasses.
+ ArrayList<InnerClass> innerClassesSaved = innerClasses;
+ innerClasses = null; // ignore for the moment
+@@ -349,7 +349,7 @@
+ }
+ ConstantPool.completeReferencesIn(cpRefs, true);
+
+- Set<Entry> icRefs = new HashSet<>();
++ Set<Entry> icRefs = new HashSet<Entry>();
+ for (Entry e : cpRefs) {
+ // Restrict cpRefs to InnerClasses entries only.
+ if (!(e instanceof ClassEntry)) continue;
+@@ -365,7 +365,7 @@
+ // This loop is structured this way so as to accumulate
+ // entries into impliedICs in an order which reflects
+ // the order of allInnerClasses.
+- ArrayList<InnerClass> impliedICs = new ArrayList<>();
++ ArrayList<InnerClass> impliedICs = new ArrayList<InnerClass>();
+ for (InnerClass ic : allInnerClasses) {
+ // This one is locally relevant if it describes
+ // a member of the current class, or if the current
+@@ -408,8 +408,8 @@
+ // Diff is A since I is empty.
+ }
+ // (I*A) is non-trivial
+- Set<InnerClass> center = new HashSet<>(actualICs);
+- center.retainAll(new HashSet<>(impliedICs));
++ Set<InnerClass> center = new HashSet<InnerClass>(actualICs);
++ center.retainAll(new HashSet<InnerClass>(impliedICs));
+ impliedICs.addAll(actualICs);
+ impliedICs.removeAll(center);
+ // Diff is now I^A = (I+A)-(I*A).
+@@ -538,7 +538,7 @@
+ super(flags, descriptor);
+ assert(!descriptor.isMethod());
+ if (fields == null)
+- fields = new ArrayList<>();
++ fields = new ArrayList<Field>();
+ boolean added = fields.add(this);
+ assert(added);
+ order = fields.size();
+@@ -563,7 +563,7 @@
+ super(flags, descriptor);
+ assert(descriptor.isMethod());
+ if (methods == null)
+- methods = new ArrayList<>();
++ methods = new ArrayList<Method>();
+ boolean added = methods.add(this);
+ assert(added);
+ }
+@@ -728,14 +728,14 @@
+ }
+
+ // What non-class files are in this unit?
+- ArrayList<File> files = new ArrayList<>();
++ ArrayList<File> files = new ArrayList<File>();
+
+ public List<File> getFiles() {
+ return files;
+ }
+
+ public List<File> getClassStubs() {
+- List<File> classStubs = new ArrayList<>(classes.size());
++ List<File> classStubs = new ArrayList<File>(classes.size());
+ for (Class cls : classes) {
+ assert(cls.file.isClassStub());
+ classStubs.add(cls.file);
+@@ -749,7 +749,7 @@
+ int modtime = NO_MODTIME;
+ int options = 0; // random flag bits, such as deflate_hint
+ Class stubClass; // if this is a stub, here's the class
+- ArrayList<byte[]> prepend = new ArrayList<>(); // list of byte[]
++ ArrayList<byte[]> prepend = new ArrayList<byte[]>(); // list of byte[]
+ java.io.ByteArrayOutputStream append = new ByteArrayOutputStream();
+
+ File(Utf8Entry name) {
+@@ -852,7 +852,7 @@
+ public InputStream getInputStream() {
+ InputStream in = new ByteArrayInputStream(append.toByteArray());
+ if (prepend.isEmpty()) return in;
+- List<InputStream> isa = new ArrayList<>(prepend.size()+1);
++ List<InputStream> isa = new ArrayList<InputStream>(prepend.size()+1);
+ for (byte[] bytes : prepend) {
+ isa.add(new ByteArrayInputStream(bytes));
+ }
+@@ -888,7 +888,7 @@
+ }
+
+ // Is there a globally declared table of inner classes?
+- List<InnerClass> allInnerClasses = new ArrayList<>();
++ List<InnerClass> allInnerClasses = new ArrayList<InnerClass>();
+ Map<ClassEntry, InnerClass> allInnerClassesByThis;
+
+ public
+@@ -903,7 +903,7 @@
+ allInnerClasses.addAll(ics);
+
+ // Make an index:
+- allInnerClassesByThis = new HashMap<>(allInnerClasses.size());
++ allInnerClassesByThis = new HashMap<ClassEntry,InnerClass>(allInnerClasses.size());
+ for (InnerClass ic : allInnerClasses) {
+ Object pic = allInnerClassesByThis.put(ic.thisClass, ic);
+ assert(pic == null); // caller must ensure key uniqueness!
+@@ -1290,7 +1290,7 @@
+
+ // Use this before writing the class files.
+ void ensureAllClassFiles() {
+- Set<File> fileSet = new HashSet<>(files);
++ Set<File> fileSet = new HashSet<File>(files);
+ for (Class cls : classes) {
+ // Add to the end of ths list:
+ if (!fileSet.contains(cls.file))
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/PackageReader.java openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PackageReader.java
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/PackageReader.java 2013-04-17 14:52:22.422547047 +0100
++++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PackageReader.java 2013-04-17 14:53:25.295551558 +0100
+@@ -686,7 +686,7 @@
+ cp_Signature_classes.expectLength(getIntTotal(numSigClasses));
+ cp_Signature_classes.readFrom(in);
+ cp_Signature_classes.setIndex(getCPIndex(CONSTANT_Class));
+- utf8Signatures = new HashMap<>();
++ utf8Signatures = new HashMap<Utf8Entry, SignatureEntry>();
+ for (int i = 0; i < cpMap.length; i++) {
+ Utf8Entry formRef = (Utf8Entry) cp_Signature_form.getRef();
+ ClassEntry[] classRefs = new ClassEntry[numSigClasses[i]];
+@@ -892,7 +892,7 @@
+ ic_name.expectLength(longICCount);
+ ic_name.readFrom(in);
+ ic_flags.resetForSecondPass();
+- List<InnerClass> icList = new ArrayList<>(numInnerClasses);
++ List<InnerClass> icList = new ArrayList<InnerClass>(numInnerClasses);
+ for (int i = 0; i < numInnerClasses; i++) {
+ int flags = ic_flags.getInt();
+ boolean longForm = (flags & ACC_IC_LONG_FORM) != 0;
+@@ -934,7 +934,7 @@
+
+ void readLocalInnerClasses(Class cls) throws IOException {
+ int nc = class_InnerClasses_N.getInt();
+- List<InnerClass> localICs = new ArrayList<>(nc);
++ List<InnerClass> localICs = new ArrayList<InnerClass>(nc);
+ for (int i = 0; i < nc; i++) {
+ ClassEntry thisClass = (ClassEntry) class_InnerClasses_RC.getRef();
+ int flags = class_InnerClasses_F.getInt();
+@@ -1062,7 +1062,7 @@
+
+ Entry[] reconstructLocalCPMap(Class cls) {
+ Set<Entry> ldcRefs = ldcRefMap.get(cls);
+- Set<Entry> cpRefs = new HashSet<>();
++ Set<Entry> cpRefs = new HashSet<Entry>();
+
+ // look for constant pool entries:
+ cls.visitRefs(VRM_CLASSIC, cpRefs);
+@@ -1167,7 +1167,7 @@
+ method_descr.expectLength(totalNM);
+ if (verbose > 1) Utils.log.fine("expecting #fields="+totalNF+" and #methods="+totalNM+" in #classes="+numClasses);
+
+- List<Class.Field> fields = new ArrayList<>(totalNF);
++ List<Class.Field> fields = new ArrayList<Class.Field>(totalNF);
+ field_descr.readFrom(in);
+ for (int i = 0; i < classes.length; i++) {
+ Class c = classes[i];
+@@ -1183,7 +1183,7 @@
+ countAndReadAttrs(ATTR_CONTEXT_FIELD, fields);
+ fields = null; // release to GC
+
+- List<Class.Method> methods = new ArrayList<>(totalNM);
++ List<Class.Method> methods = new ArrayList<Class.Method>(totalNM);
+ method_descr.readFrom(in);
+ for (int i = 0; i < classes.length; i++) {
+ Class c = classes[i];
+@@ -1206,10 +1206,10 @@
+
+ Code[] allCodes;
+ List<Code> codesWithFlags;
+- Map<Class, Set<Entry>> ldcRefMap = new HashMap<>();
++ Map<Class, Set<Entry>> ldcRefMap = new HashMap<Class, Set<Entry>>();
+
+ Code[] buildCodeAttrs(List<Class.Method> methods) {
+- List<Code> codes = new ArrayList<>(methods.size());
++ List<Code> codes = new ArrayList<Code>(methods.size());
+ for (Class.Method m : methods) {
+ if (m.getAttribute(attrCodeEmpty) != null) {
+ m.code = new Code(m);
+@@ -1233,7 +1233,7 @@
+ boolean attrsOK = testBit(archiveOptions, AO_HAVE_ALL_CODE_FLAGS);
+ code_headers.expectLength(allCodes.length);
+ code_headers.readFrom(in);
+- List<Code> longCodes = new ArrayList<>(allCodes.length / 10);
++ List<Code> longCodes = new ArrayList<Code>(allCodes.length / 10);
+ for (int i = 0; i < allCodes.length; i++) {
+ Code c = allCodes[i];
+ int sc = code_headers.getByte();
+@@ -1472,7 +1472,7 @@
+ bits -= (1L<<ai);
+ nfa += 1;
+ }
+- List<Attribute> ha = new ArrayList<>(nfa + noa);
++ List<Attribute> ha = new ArrayList<Attribute>(nfa + noa);
+ h.attributes = ha;
+ bits = attrBits; // iterate again
+ for (int ai = 0; bits != 0; ai++) {
+@@ -1596,7 +1596,7 @@
+ void readAttrs(int ctype, Collection<? extends Attribute.Holder> holders)
+ throws IOException {
+ // Decode band values into attributes.
+- Set<Attribute.Layout> sawDefs = new HashSet<>();
++ Set<Attribute.Layout> sawDefs = new HashSet<Attribute.Layout>();
+ ByteArrayOutputStream buf = new ByteArrayOutputStream();
+ for (final Attribute.Holder h : holders) {
+ if (h.attributes == null) continue;
+@@ -1799,7 +1799,7 @@
+ // scratch buffer for collecting code::
+ byte[] buf = new byte[1<<12];
+ // record of all switch opcodes (these are variable-length)
+- List<Integer> allSwitchOps = new ArrayList<>();
++ List<Integer> allSwitchOps = new ArrayList<Integer>();
+ for (int k = 0; k < allCodes.length; k++) {
+ Code c = allCodes[k];
+ scanOneMethod:
+@@ -1915,7 +1915,7 @@
+
+ Set<Entry> ldcRefSet = ldcRefMap.get(curClass);
+ if (ldcRefSet == null)
+- ldcRefMap.put(curClass, ldcRefSet = new HashSet<>());
++ ldcRefMap.put(curClass, ldcRefSet = new HashSet<Entry>());
+
+ ClassEntry thisClass = curClass.thisClass;
+ ClassEntry superClass = curClass.superClass;
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/PackageWriter.java openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PackageWriter.java
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/PackageWriter.java 2013-04-17 14:52:22.422547047 +0100
++++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PackageWriter.java 2013-04-17 14:53:25.299551622 +0100
+@@ -116,7 +116,7 @@
+ int[][] attrCounts; // count attr. occurences
+
+ void setup() {
+- requiredEntries = new HashSet<>();
++ requiredEntries = new HashSet<Entry>();
+ setArchiveOptions();
+ trimClassAttributes();
+ collectAttributeLayouts();
+@@ -176,7 +176,7 @@
+ }
+ }
+ // Decide on default version number (majority rule).
+- Map<Integer, int[]> verCounts = new HashMap<>();
++ Map<Integer, int[]> verCounts = new HashMap<Integer, int[]>();
+ int bestCount = 0;
+ int bestVersion = -1;
+ for (Class cls : pkg.classes) {
+@@ -728,7 +728,7 @@
+
+ void collectAttributeLayouts() {
+ maxFlags = new int[ATTR_CONTEXT_LIMIT];
+- allLayouts = new FixedList<>(ATTR_CONTEXT_LIMIT);
++ allLayouts = new FixedList<Map<Attribute.Layout,int[]>>(ATTR_CONTEXT_LIMIT);
+ for (int i = 0; i < ATTR_CONTEXT_LIMIT; i++) {
+ allLayouts.set(i, new HashMap<Attribute.Layout, int[]>());
+ }
+@@ -773,7 +773,7 @@
+ }
+ // Collect counts for both predefs. and custom defs.
+ // Decide on custom, local attribute definitions.
+- backCountTable = new HashMap<>();
++ backCountTable = new HashMap<Attribute.Layout, int[]>();
+ attrCounts = new int[ATTR_CONTEXT_LIMIT][];
+ for (int i = 0; i < ATTR_CONTEXT_LIMIT; i++) {
+ // Now the remaining defs in allLayouts[i] need attr. indexes.
+@@ -888,7 +888,7 @@
+ Attribute.Layout[] attrDefsWritten;
+
+ void writeAttrDefs() throws IOException {
+- List<Object[]> defList = new ArrayList<>();
++ List<Object[]> defList = new ArrayList<Object[]>();
+ for (int i = 0; i < ATTR_CONTEXT_LIMIT; i++) {
+ int limit = attrDefs.get(i).size();
+ for (int j = 0; j < limit; j++) {
+@@ -1005,7 +1005,7 @@
+ void collectInnerClasses() {
+ // Capture inner classes, removing them from individual classes.
+ // Irregular inner classes must stay local, though.
+- Map<ClassEntry, InnerClass> allICMap = new HashMap<>();
++ Map<ClassEntry, InnerClass> allICMap = new HashMap<ClassEntry, InnerClass>();
+ // First, collect a consistent global set.
+ for (Class cls : pkg.classes) {
+ if (!cls.hasInnerClasses()) continue;
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/PackerImpl.java openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PackerImpl.java
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/PackerImpl.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PackerImpl.java 2013-04-17 14:53:25.299551622 +0100
+@@ -181,8 +181,8 @@
+ final Map<Attribute.Layout, Attribute> attrDefs;
+ final Map<Attribute.Layout, String> attrCommands;
+ {
+- Map<Attribute.Layout, Attribute> lattrDefs = new HashMap<>();
+- Map<Attribute.Layout, String> lattrCommands = new HashMap<>();
++ Map<Attribute.Layout, Attribute> lattrDefs = new HashMap<Attribute.Layout, Attribute>();
++ Map<Attribute.Layout, String> lattrCommands = new HashMap<Attribute.Layout, String>();
+ String[] keys = {
+ Pack200.Packer.CLASS_ATTRIBUTE_PFX,
+ Pack200.Packer.FIELD_ATTRIBUTE_PFX,
+@@ -590,7 +590,7 @@
+ assert(pkg.files.containsAll(pkg.getClassStubs()));
+ // Order of stubs in file list must agree with classes.
+ List<Package.File> res = pkg.files;
+- assert((res = new ArrayList<>(pkg.files))
++ assert((res = new ArrayList<Package.File>(pkg.files))
+ .retainAll(pkg.getClassStubs()) || true);
+ assert(res.equals(pkg.getClassStubs()));
+ }
+@@ -623,7 +623,7 @@
+
+ List<InFile> scanJar(JarFile jf) throws IOException {
+ // Collect jar entries, preserving order.
+- List<InFile> inFiles = new ArrayList<>();
++ List<InFile> inFiles = new ArrayList<InFile>();
+ try {
+ for (JarEntry je : Collections.list(jf.entries())) {
+ InFile inFile = new InFile(jf, je);
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/PopulationCoding.java openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PopulationCoding.java
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/PopulationCoding.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PopulationCoding.java 2013-04-17 14:53:25.299551622 +0100
+@@ -309,7 +309,7 @@
+ // As each new value is added, we assert that the value
+ // was not already in the set.
+ Set<Integer> uniqueValuesForDebug = null;
+- assert((uniqueValuesForDebug = new HashSet<>()) != null);
++ assert((uniqueValuesForDebug = new HashSet<Integer>()) != null);
+ int fillp = 1;
+ maxForDebug += fillp;
+ int min = Integer.MIN_VALUE; // farthest from the center
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/PropMap.java openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PropMap.java
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/PropMap.java 2013-04-17 14:52:22.426547111 +0100
++++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PropMap.java 2013-04-17 14:53:25.299551622 +0100
+@@ -47,8 +47,8 @@
+ */
+
+ final class PropMap implements SortedMap<String, String> {
+- private final TreeMap<String, String> theMap = new TreeMap<>();;
+- private final List<PropertyChangeListener> listenerList = new ArrayList<>(1);
++ private final TreeMap<String, String> theMap = new TreeMap<String, String>();;
++ private final List<PropertyChangeListener> listenerList = new ArrayList<PropertyChangeListener>(1);
+
+ void addListener(PropertyChangeListener listener) {
+ listenerList.add(listener);
+@@ -187,7 +187,7 @@
+ // Get sequence of props for "prefix", and "prefix.*".
+ List<String> getProperties(String prefix) {
+ Collection<String> values = prefixMap(prefix).values();
+- List<String> res = new ArrayList<>(values.size());
++ List<String> res = new ArrayList<String>(values.size());
+ res.addAll(values);
+ while (res.remove(null));
+ return res;
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/TLGlobals.java openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/TLGlobals.java
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/TLGlobals.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/TLGlobals.java 2013-04-17 14:53:25.299551622 +0100
+@@ -58,12 +58,12 @@
+ private final Map<String, MemberEntry> memberEntries;
+
+ TLGlobals() {
+- utf8Entries = new HashMap<>();
+- classEntries = new HashMap<>();
+- literalEntries = new HashMap<>();
+- signatureEntries = new HashMap<>();
+- descriptorEntries = new HashMap<>();
+- memberEntries = new HashMap<>();
++ utf8Entries = new HashMap<String,Utf8Entry>();
++ classEntries = new HashMap<String,ClassEntry>();
++ literalEntries = new HashMap<Object,LiteralEntry>();
++ signatureEntries = new HashMap<String,SignatureEntry>();
++ descriptorEntries = new HashMap<String,DescriptorEntry>();
++ memberEntries = new HashMap<String,MemberEntry>();
+ props = new PropMap();
+ }
+
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/UnpackerImpl.java openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/UnpackerImpl.java
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/UnpackerImpl.java 2013-04-17 14:52:22.426547111 +0100
++++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/UnpackerImpl.java 2013-04-17 14:53:25.299551622 +0100
+@@ -232,7 +232,7 @@
+ props.setProperty(java.util.jar.Pack200.Unpacker.PROGRESS,"50");
+ pkg.ensureAllClassFiles();
+ // Now write out the files.
+- Set<Package.Class> classesToWrite = new HashSet<>(pkg.getClasses());
++ Set<Package.Class> classesToWrite = new HashSet<Package.Class>(pkg.getClasses());
+ for (Package.File file : pkg.getFiles()) {
+ String name = file.nameString;
+ JarEntry je = new JarEntry(Utils.getJarEntryName(name));
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/Utils.java openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Utils.java
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/Utils.java 2013-04-17 14:52:22.426547111 +0100
++++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Utils.java 2013-04-17 14:53:25.299551622 +0100
+@@ -132,7 +132,7 @@
+ // Keep a TLS point to the global data and environment.
+ // This makes it simpler to supply environmental options
+ // to the engine code, especially the native code.
+- static final ThreadLocal<TLGlobals> currentInstance = new ThreadLocal<>();
++ static final ThreadLocal<TLGlobals> currentInstance = new ThreadLocal<TLGlobals>();
+
+ // convenience methods to access the TL globals
+ static TLGlobals getTLGlobals() {
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/rowset/CachedRowSetImpl.java openjdk-boot/jdk/src/share/classes/com/sun/rowset/CachedRowSetImpl.java
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/rowset/CachedRowSetImpl.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/com/sun/rowset/CachedRowSetImpl.java 2013-04-17 14:53:25.303551686 +0100
+@@ -1284,7 +1284,7 @@
+ */
+ public Collection<?> toCollection() throws SQLException {
+
+- TreeMap<Integer, Object> tMap = new TreeMap<>();
++ TreeMap<Integer, Object> tMap = new TreeMap<Integer, Object>();
+
+ for (int i = 0; i<numRows; i++) {
+ tMap.put(Integer.valueOf(i), rvh.get(i));
+@@ -1314,7 +1314,7 @@
+ public Collection<?> toCollection(int column) throws SQLException {
+
+ int nRows = numRows;
+- Vector<Object> vec = new Vector<>(nRows);
++ Vector<Object> vec = new Vector<Object>(nRows);
+
+ // create a copy
+ CachedRowSetImpl crsTemp;
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/rowset/JoinRowSetImpl.java openjdk-boot/jdk/src/share/classes/com/sun/rowset/JoinRowSetImpl.java
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/rowset/JoinRowSetImpl.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/com/sun/rowset/JoinRowSetImpl.java 2013-04-17 14:53:25.303551686 +0100
+@@ -222,7 +222,7 @@
+ // either of the setter methods have been set.
+ if(boolColId){
+ //
+- ArrayList<Integer> indices = new ArrayList<>();
++ ArrayList<Integer> indices = new ArrayList<Integer>();
+ for(int i=0;i<cRowset.getMatchColumnNames().length;i++) {
+ if( (strMatchKey = (cRowset.getMatchColumnNames())[i]) != null) {
+ iMatchKey = cRowset.findColumn(strMatchKey);
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/security/auth/callback/DialogCallbackHandler.java openjdk-boot/jdk/src/share/classes/com/sun/security/auth/callback/DialogCallbackHandler.java
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/security/auth/callback/DialogCallbackHandler.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/com/sun/security/auth/callback/DialogCallbackHandler.java 2013-04-17 14:53:25.303551686 +0100
+@@ -99,10 +99,10 @@
+ throws UnsupportedCallbackException
+ {
+ /* Collect messages to display in the dialog */
+- final List<Object> messages = new ArrayList<>(3);
++ final List<Object> messages = new ArrayList<Object>(3);
+
+ /* Collection actions to perform if the user clicks OK */
+- final List<Action> okActions = new ArrayList<>(2);
++ final List<Action> okActions = new ArrayList<Action>(2);
+
+ ConfirmationInfo confirmation = new ConfirmationInfo();
+
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/security/auth/login/ConfigFile.java openjdk-boot/jdk/src/share/classes/com/sun/security/auth/login/ConfigFile.java
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/security/auth/login/ConfigFile.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/com/sun/security/auth/login/ConfigFile.java 2013-04-17 14:53:25.307551750 +0100
+@@ -152,7 +152,7 @@
+
+ // new configuration
+ HashMap<String, LinkedList<AppConfigurationEntry>> newConfig =
+- new HashMap<>();
++ new HashMap<String, LinkedList<AppConfigurationEntry>>();
+
+ if (url != null) {
+
+@@ -392,7 +392,7 @@
+ String moduleClass;
+ String sflag;
+ AppConfigurationEntry.LoginModuleControlFlag controlFlag;
+- LinkedList<AppConfigurationEntry> configEntries = new LinkedList<>();
++ LinkedList<AppConfigurationEntry> configEntries = new LinkedList<AppConfigurationEntry>();
+
+ // application name
+ appName = st.sval;
+@@ -432,7 +432,7 @@
+ }
+
+ // get the args
+- HashMap<String, String> options = new HashMap<>();
++ HashMap<String, String> options = new HashMap<String, String>();
+ String key;
+ String value;
+ while (peek(";") == false) {
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/security/auth/module/JndiLoginModule.java openjdk-boot/jdk/src/share/classes/com/sun/security/auth/module/JndiLoginModule.java
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/security/auth/module/JndiLoginModule.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/com/sun/security/auth/module/JndiLoginModule.java 2013-04-17 14:53:25.307551750 +0100
+@@ -184,7 +184,7 @@
+ private UnixNumericUserPrincipal UIDPrincipal;
+ private UnixNumericGroupPrincipal GIDPrincipal;
+ private LinkedList<UnixNumericGroupPrincipal> supplementaryGroups =
+- new LinkedList<>();
++ new LinkedList<UnixNumericGroupPrincipal>();
+
+ // initial state
+ private Subject subject;
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/security/auth/module/KeyStoreLoginModule.java openjdk-boot/jdk/src/share/classes/com/sun/security/auth/module/KeyStoreLoginModule.java
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/security/auth/module/KeyStoreLoginModule.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/com/sun/security/auth/module/KeyStoreLoginModule.java 2013-04-17 14:53:25.307551750 +0100
+@@ -658,7 +658,7 @@
+ throw new FailedLoginException(
+ "Unable to find X.509 certificate chain in keystore");
+ } else {
+- LinkedList<Certificate> certList = new LinkedList<>();
++ LinkedList<Certificate> certList = new LinkedList<Certificate>();
+ for (int i=0; i < fromKeyStore.length; i++) {
+ certList.add(fromKeyStore[i]);
+ }
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/security/auth/module/SolarisLoginModule.java openjdk-boot/jdk/src/share/classes/com/sun/security/auth/module/SolarisLoginModule.java
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/security/auth/module/SolarisLoginModule.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/com/sun/security/auth/module/SolarisLoginModule.java 2013-04-17 14:53:25.307551750 +0100
+@@ -76,7 +76,7 @@
+ private SolarisNumericUserPrincipal UIDPrincipal;
+ private SolarisNumericGroupPrincipal GIDPrincipal;
+ private LinkedList<SolarisNumericGroupPrincipal> supplementaryGroups =
+- new LinkedList<>();
++ new LinkedList<SolarisNumericGroupPrincipal>();
+
+ /**
+ * Initialize this <code>LoginModule</code>.
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/security/auth/module/UnixLoginModule.java openjdk-boot/jdk/src/share/classes/com/sun/security/auth/module/UnixLoginModule.java
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/security/auth/module/UnixLoginModule.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/com/sun/security/auth/module/UnixLoginModule.java 2013-04-17 14:53:25.307551750 +0100
+@@ -70,7 +70,7 @@
+ private UnixNumericUserPrincipal UIDPrincipal;
+ private UnixNumericGroupPrincipal GIDPrincipal;
+ private LinkedList<UnixNumericGroupPrincipal> supplementaryGroups =
+- new LinkedList<>();
++ new LinkedList<UnixNumericGroupPrincipal>();
+
+ /**
+ * Initialize this <code>LoginModule</code>.
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/security/auth/PolicyFile.java openjdk-boot/jdk/src/share/classes/com/sun/security/auth/PolicyFile.java
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/security/auth/PolicyFile.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/com/sun/security/auth/PolicyFile.java 2013-04-17 14:53:25.307551750 +0100
+@@ -1180,7 +1180,7 @@
+ // Done
+ return certs;
+
+- ArrayList<Certificate> userCertList = new ArrayList<>();
++ ArrayList<Certificate> userCertList = new ArrayList<Certificate>();
+ i = 0;
+ while (i < certs.length) {
+ userCertList.add(certs[i]);
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/tools/example/trace/EventThread.java openjdk-boot/jdk/src/share/classes/com/sun/tools/example/trace/EventThread.java
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/tools/example/trace/EventThread.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/com/sun/tools/example/trace/EventThread.java 2013-04-17 14:53:25.307551750 +0100
+@@ -59,7 +59,7 @@
+
+ // Maps ThreadReference to ThreadTrace instances
+ private Map<ThreadReference, ThreadTrace> traceMap =
+- new HashMap<>();
++ new HashMap();
+
+ EventThread(VirtualMachine vm, String[] excludes, PrintWriter writer) {
+ super("event-handler");
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/beans/Introspector.java openjdk-boot/jdk/src/share/classes/java/beans/Introspector.java
+--- openjdk-boot.orig/jdk/src/share/classes/java/beans/Introspector.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/beans/Introspector.java 2013-04-17 14:53:25.311551814 +0100
+@@ -95,7 +95,7 @@
+ public final static int IGNORE_ALL_BEANINFO = 3;
+
+ // Static Caches to speed up introspection.
+- private static final WeakCache<Class<?>, Method[]> declaredMethodCache = new WeakCache<>();
++ private static final WeakCache<Class<?>, Method[]> declaredMethodCache = new WeakCache();
+
+ private Class beanClass;
+ private BeanInfo explicitBeanInfo;
+@@ -1452,7 +1452,7 @@
+ this.defaultProperty = defaultProperty;
+ this.methods = methods;
+ this.targetBeanInfoRef = (targetBeanInfo != null)
+- ? new SoftReference<>(targetBeanInfo)
++ ? new SoftReference<BeanInfo>(targetBeanInfo)
+ : null;
+ }
+
+@@ -1536,7 +1536,7 @@
+ targetBeanInfo = ThreadGroupContext.getContext().getBeanInfoFinder()
+ .find(this.beanDescriptor.getBeanClass());
+ if (targetBeanInfo != null) {
+- this.targetBeanInfoRef = new SoftReference<>(targetBeanInfo);
++ this.targetBeanInfoRef = new SoftReference<BeanInfo>(targetBeanInfo);
+ }
+ }
+ return targetBeanInfo;
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/beans/ThreadGroupContext.java openjdk-boot/jdk/src/share/classes/java/beans/ThreadGroupContext.java
+--- openjdk-boot.orig/jdk/src/share/classes/java/beans/ThreadGroupContext.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/beans/ThreadGroupContext.java 2013-04-17 14:53:25.311551814 +0100
+@@ -41,7 +41,7 @@
+ */
+ final class ThreadGroupContext {
+
+- private static final WeakIdentityMap<ThreadGroupContext> contexts = new WeakIdentityMap<>();
++ private static final WeakIdentityMap<ThreadGroupContext> contexts = new WeakIdentityMap<ThreadGroupContext>();
+
+ /**
+ * Returns the appropriate {@code AppContext} for the caller,
+@@ -100,7 +100,7 @@
+
+ BeanInfo putBeanInfo(Class<?> type, BeanInfo info) {
+ if (this.beanInfoCache == null) {
+- this.beanInfoCache = new WeakHashMap<>();
++ this.beanInfoCache = new WeakHashMap();
+ }
+ return this.beanInfoCache.put(type, info);
+ }
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/io/DeleteOnExitHook.java openjdk-boot/jdk/src/share/classes/java/io/DeleteOnExitHook.java
+--- openjdk-boot.orig/jdk/src/share/classes/java/io/DeleteOnExitHook.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/io/DeleteOnExitHook.java 2013-04-17 14:53:25.311551814 +0100
+@@ -34,7 +34,7 @@
+ */
+
+ class DeleteOnExitHook {
+- private static LinkedHashSet<String> files = new LinkedHashSet<>();
++ private static LinkedHashSet<String> files = new LinkedHashSet<String>();
+ static {
+ // DeleteOnExitHook must be the last shutdown hook to be invoked.
+ // Application shutdown hooks may add the first file to the
+@@ -71,7 +71,7 @@
+ files = null;
+ }
+
+- ArrayList<String> toBeDeleted = new ArrayList<>(theFiles);
++ ArrayList<String> toBeDeleted = new ArrayList<String>(theFiles);
+
+ // reverse the list to maintain previous jdk deletion order.
+ // Last in first deleted.
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/io/FileInputStream.java openjdk-boot/jdk/src/share/classes/java/io/FileInputStream.java
+--- openjdk-boot.orig/jdk/src/share/classes/java/io/FileInputStream.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/io/FileInputStream.java 2013-04-17 14:53:25.311551814 +0100
+@@ -57,7 +57,7 @@
+ private volatile boolean closed = false;
+
+ private static final ThreadLocal<Boolean> runningFinalize =
+- new ThreadLocal<>();
++ new ThreadLocal<Boolean>();
+
+ private static boolean isRunningFinalize() {
+ Boolean val;
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/io/File.java openjdk-boot/jdk/src/share/classes/java/io/File.java
+--- openjdk-boot.orig/jdk/src/share/classes/java/io/File.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/io/File.java 2013-04-17 14:53:25.315551878 +0100
+@@ -1082,7 +1082,7 @@
+ if ((names == null) || (filter == null)) {
+ return names;
+ }
+- List<String> v = new ArrayList<>();
++ List<String> v = new ArrayList<String>();
+ for (int i = 0 ; i < names.length ; i++) {
+ if (filter.accept(this, names[i])) {
+ v.add(names[i]);
+@@ -1173,7 +1173,7 @@
+ public File[] listFiles(FilenameFilter filter) {
+ String ss[] = list();
+ if (ss == null) return null;
+- ArrayList<File> files = new ArrayList<>();
++ ArrayList<File> files = new ArrayList<File>();
+ for (String s : ss)
+ if ((filter == null) || filter.accept(this, s))
+ files.add(new File(s, this));
+@@ -1211,7 +1211,7 @@
+ public File[] listFiles(FileFilter filter) {
+ String ss[] = list();
+ if (ss == null) return null;
+- ArrayList<File> files = new ArrayList<>();
++ ArrayList<File> files = new ArrayList<File>();
+ for (String s : ss) {
+ File f = new File(s, this);
+ if ((filter == null) || filter.accept(f))
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/io/FileOutputStream.java openjdk-boot/jdk/src/share/classes/java/io/FileOutputStream.java
+--- openjdk-boot.orig/jdk/src/share/classes/java/io/FileOutputStream.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/io/FileOutputStream.java 2013-04-17 14:53:25.315551878 +0100
+@@ -70,7 +70,7 @@
+ private final Object closeLock = new Object();
+ private volatile boolean closed = false;
+ private static final ThreadLocal<Boolean> runningFinalize =
+- new ThreadLocal<>();
++ new ThreadLocal<Boolean>();
+
+ private static boolean isRunningFinalize() {
+ Boolean val;
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/io/FilePermission.java openjdk-boot/jdk/src/share/classes/java/io/FilePermission.java
+--- openjdk-boot.orig/jdk/src/share/classes/java/io/FilePermission.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/io/FilePermission.java 2013-04-17 14:53:25.315551878 +0100
+@@ -725,7 +725,7 @@
+ */
+
+ public FilePermissionCollection() {
+- perms = new ArrayList<>();
++ perms = new ArrayList<Permission>();
+ }
+
+ /**
+@@ -830,7 +830,7 @@
+ // Don't call out.defaultWriteObject()
+
+ // Write out Vector
+- Vector<Permission> permissions = new Vector<>(perms.size());
++ Vector<Permission> permissions = new Vector<Permission>(perms.size());
+ synchronized (this) {
+ permissions.addAll(perms);
+ }
+@@ -853,7 +853,7 @@
+
+ // Get the one we want
+ Vector<Permission> permissions = (Vector<Permission>)gfields.get("permissions", null);
+- perms = new ArrayList<>(permissions.size());
++ perms = new ArrayList<Permission>(permissions.size());
+ perms.addAll(permissions);
+ }
+ }
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/io/ObjectInputStream.java openjdk-boot/jdk/src/share/classes/java/io/ObjectInputStream.java
+--- openjdk-boot.orig/jdk/src/share/classes/java/io/ObjectInputStream.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/io/ObjectInputStream.java 2013-04-17 14:53:25.315551878 +0100
+@@ -214,7 +214,7 @@
+
+ /** table mapping primitive type names to corresponding class objects */
+ private static final HashMap<String, Class<?>> primClasses
+- = new HashMap<>(8, 1.0F);
++ = new HashMap<String, Class<?>>(8, 1.0F);
+ static {
+ primClasses.put("boolean", boolean.class);
+ primClasses.put("byte", byte.class);
+@@ -230,11 +230,11 @@
+ private static class Caches {
+ /** cache of subclass security audit results */
+ static final ConcurrentMap<WeakClassKey,Boolean> subclassAudits =
+- new ConcurrentHashMap<>();
++ new ConcurrentHashMap<WeakClassKey,Boolean>();
+
+ /** queue for WeakReferences to audited subclasses */
+ static final ReferenceQueue<Class<?>> subclassAuditsQueue =
+- new ReferenceQueue<>();
++ new ReferenceQueue<Class<?>>();
+ }
+
+ /** filter stream for handling block data conversion */
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/io/ObjectOutputStream.java openjdk-boot/jdk/src/share/classes/java/io/ObjectOutputStream.java
+--- openjdk-boot.orig/jdk/src/share/classes/java/io/ObjectOutputStream.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/io/ObjectOutputStream.java 2013-04-17 14:53:25.315551878 +0100
+@@ -165,11 +165,11 @@
+ private static class Caches {
+ /** cache of subclass security audit results */
+ static final ConcurrentMap<WeakClassKey,Boolean> subclassAudits =
+- new ConcurrentHashMap<>();
++ new ConcurrentHashMap<WeakClassKey,Boolean>();
+
+ /** queue for WeakReferences to audited subclasses */
+ static final ReferenceQueue<Class<?>> subclassAuditsQueue =
+- new ReferenceQueue<>();
++ new ReferenceQueue<Class<?>>();
+ }
+
+ /** filter stream for handling block data conversion */
+@@ -2413,7 +2413,7 @@
+ private final List<String> stack;
+
+ DebugTraceInfoStack() {
+- stack = new ArrayList<>();
++ stack = new ArrayList<String>();
+ }
+
+ /**
+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-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/io/ObjectStreamClass.java 2013-04-17 14:53:25.315551878 +0100
+@@ -84,18 +84,18 @@
+ private static class Caches {
+ /** cache mapping local classes -> descriptors */
+ static final ConcurrentMap<WeakClassKey,Reference<?>> localDescs =
+- new ConcurrentHashMap<>();
++ new ConcurrentHashMap<WeakClassKey,Reference<?>>();
+
+ /** cache mapping field group/local desc pairs -> field reflectors */
+ static final ConcurrentMap<FieldReflectorKey,Reference<?>> reflectors =
+- new ConcurrentHashMap<>();
++ new ConcurrentHashMap<FieldReflectorKey,Reference<?>>();
+
+ /** queue for WeakReferences to local classes */
+ private static final ReferenceQueue<Class<?>> localDescsQueue =
+- new ReferenceQueue<>();
++ new ReferenceQueue<Class<?>>();
+ /** queue for WeakReferences to field reflectors keys */
+ private static final ReferenceQueue<Class<?>> reflectorsQueue =
+- new ReferenceQueue<>();
++ new ReferenceQueue<Class<?>>();
+ }
+
+ /** class associated with this descriptor (if any) */
+@@ -315,7 +315,7 @@
+ EntryFuture future = null;
+ if (entry == null) {
+ EntryFuture newEntry = new EntryFuture();
+- Reference<?> newRef = new SoftReference<>(newEntry);
++ Reference<?> newRef = new SoftReference<EntryFuture>(newEntry);
+ do {
+ if (ref != null) {
+ Caches.localDescs.remove(key, ref);
+@@ -1143,7 +1143,7 @@
+ private ClassDataSlot[] getClassDataLayout0()
+ throws InvalidClassException
+ {
+- ArrayList<ClassDataSlot> slots = new ArrayList<>();
++ ArrayList<ClassDataSlot> slots = new ArrayList<ClassDataSlot>();
+ Class<?> start = cl, end = cl;
+
+ // locate closest non-serializable superclass
+@@ -1579,7 +1579,7 @@
+
+ ObjectStreamField[] boundFields =
+ new ObjectStreamField[serialPersistentFields.length];
+- Set<String> fieldNames = new HashSet<>(serialPersistentFields.length);
++ Set<String> fieldNames = new HashSet<String>(serialPersistentFields.length);
+
+ for (int i = 0; i < serialPersistentFields.length; i++) {
+ ObjectStreamField spf = serialPersistentFields[i];
+@@ -1617,7 +1617,7 @@
+ */
+ private static ObjectStreamField[] getDefaultSerialFields(Class<?> cl) {
+ Field[] clFields = cl.getDeclaredFields();
+- ArrayList<ObjectStreamField> list = new ArrayList<>();
++ ArrayList<ObjectStreamField> list = new ArrayList<ObjectStreamField>();
+ int mask = Modifier.STATIC | Modifier.TRANSIENT;
+
+ for (int i = 0; i < clFields.length; i++) {
+@@ -1868,8 +1868,8 @@
+ writeKeys = new long[nfields];
+ offsets = new int[nfields];
+ typeCodes = new char[nfields];
+- ArrayList<Class<?>> typeList = new ArrayList<>();
+- Set<Long> usedKeys = new HashSet<>();
++ ArrayList<Class<?>> typeList = new ArrayList<Class<?>>();
++ Set<Long> usedKeys = new HashSet<Long>();
+
+
+ for (int i = 0; i < nfields; i++) {
+@@ -2105,7 +2105,7 @@
+ EntryFuture future = null;
+ if (entry == null) {
+ EntryFuture newEntry = new EntryFuture();
+- Reference<?> newRef = new SoftReference<>(newEntry);
++ Reference<?> newRef = new SoftReference<EntryFuture>(newEntry);
+ do {
+ if (ref != null) {
+ Caches.reflectors.remove(key, ref);
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/lang/ApplicationShutdownHooks.java openjdk-boot/jdk/src/share/classes/java/lang/ApplicationShutdownHooks.java
+--- openjdk-boot.orig/jdk/src/share/classes/java/lang/ApplicationShutdownHooks.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/lang/ApplicationShutdownHooks.java 2013-04-17 14:53:25.319551942 +0100
+@@ -47,7 +47,7 @@
+ }
+ }
+ );
+- hooks = new IdentityHashMap<>();
++ hooks = new IdentityHashMap<Thread, Thread>();
+ } catch (IllegalStateException e) {
+ // application shutdown hooks cannot be added if
+ // shutdown is in progress.
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/lang/Character.java openjdk-boot/jdk/src/share/classes/java/lang/Character.java
+--- openjdk-boot.orig/jdk/src/share/classes/java/lang/Character.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/lang/Character.java 2013-04-17 14:53:25.319551942 +0100
+@@ -646,7 +646,8 @@
+ */
+ public static final class UnicodeBlock extends Subset {
+
+- private static Map<String, UnicodeBlock> map = new HashMap<>(256);
++ private static Map<String, UnicodeBlock> map
++ = new HashMap<String, UnicodeBlock>(256);
+
+ /**
+ * Creates a UnicodeBlock with the given identifier name.
+@@ -4175,7 +4176,7 @@
+
+ private static HashMap<String, Character.UnicodeScript> aliases;
+ static {
+- aliases = new HashMap<>(128);
++ aliases = new HashMap<String, UnicodeScript>(128);
+ aliases.put("ARAB", ARABIC);
+ aliases.put("ARMI", IMPERIAL_ARAMAIC);
+ aliases.put("ARMN", ARMENIAN);
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/lang/CharacterName.java openjdk-boot/jdk/src/share/classes/java/lang/CharacterName.java
+--- openjdk-boot.orig/jdk/src/share/classes/java/lang/CharacterName.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/lang/CharacterName.java 2013-04-17 14:53:25.323552005 +0100
+@@ -81,7 +81,7 @@
+ } while (cpOff < cpEnd);
+ strPool = new byte[total - cpEnd];
+ dis.readFully(strPool);
+- refStrPool = new SoftReference<>(strPool);
++ refStrPool = new SoftReference<byte[]>(strPool);
+ } catch (Exception x) {
+ throw new InternalError(x.getMessage());
+ } finally {
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/lang/Class.java openjdk-boot/jdk/src/share/classes/java/lang/Class.java
+--- openjdk-boot.orig/jdk/src/share/classes/java/lang/Class.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/lang/Class.java 2013-04-17 14:53:25.323552005 +0100
+@@ -1310,7 +1310,7 @@
+ return java.security.AccessController.doPrivileged(
+ new java.security.PrivilegedAction<Class<?>[]>() {
+ public Class[] run() {
+- List<Class<?>> list = new ArrayList<>();
++ List<Class<?>> list = new ArrayList<Class<?>>();
+ Class<?> currentClass = Class.this;
+ while (currentClass != null) {
+ Class<?>[] members = currentClass.getDeclaredClasses();
+@@ -2317,9 +2317,9 @@
+ res = Reflection.filterFields(this, getDeclaredFields0(publicOnly));
+ if (useCaches) {
+ if (publicOnly) {
+- declaredPublicFields = new SoftReference<>(res);
++ declaredPublicFields = new SoftReference<Field[]>(res);
+ } else {
+- declaredFields = new SoftReference<>(res);
++ declaredFields = new SoftReference<Field[]>(res);
+ }
+ }
+ return res;
+@@ -2341,9 +2341,9 @@
+
+ // No cached value available; compute value recursively.
+ // Traverse in correct order for getField().
+- List<Field> fields = new ArrayList<>();
++ List<Field> fields = new ArrayList<Field>();
+ if (traversedInterfaces == null) {
+- traversedInterfaces = new HashSet<>();
++ traversedInterfaces = new HashSet<Class<?>>();
+ }
+
+ // Local fields
+@@ -2369,7 +2369,7 @@
+ res = new Field[fields.size()];
+ fields.toArray(res);
+ if (useCaches) {
+- publicFields = new SoftReference<>(res);
++ publicFields = new SoftReference<Field[]>(res);
+ }
+ return res;
+ }
+@@ -2414,9 +2414,9 @@
+ }
+ if (useCaches) {
+ if (publicOnly) {
+- publicConstructors = new SoftReference<>(res);
++ publicConstructors = new SoftReference<Constructor<T>[]>(res);
+ } else {
+- declaredConstructors = new SoftReference<>(res);
++ declaredConstructors = new SoftReference<Constructor<T>[]>(res);
+ }
+ }
+ return res;
+@@ -2451,9 +2451,9 @@
+ res = Reflection.filterMethods(this, getDeclaredMethods0(publicOnly));
+ if (useCaches) {
+ if (publicOnly) {
+- declaredPublicMethods = new SoftReference<>(res);
++ declaredPublicMethods = new SoftReference<Method[]>(res);
+ } else {
+- declaredMethods = new SoftReference<>(res);
++ declaredMethods = new SoftReference<Method[]>(res);
+ }
+ }
+ return res;
+@@ -2609,7 +2609,7 @@
+ methods.compactAndTrim();
+ res = methods.getArray();
+ if (useCaches) {
+- publicMethods = new SoftReference<>(res);
++ publicMethods = new SoftReference<Method[]>(res);
+ }
+ return res;
+ }
+@@ -2988,7 +2988,7 @@
+ if (universe == null)
+ throw new IllegalArgumentException(
+ getName() + " is not an enum type");
+- Map<String, T> m = new HashMap<>(2 * universe.length);
++ Map<String, T> m = new HashMap<String, T>(2 * universe.length);
+ for (T constant : universe)
+ m.put(((Enum<?>)constant).name(), constant);
+ enumConstantDirectory = m;
+@@ -3101,7 +3101,7 @@
+ if (superClass == null) {
+ annotations = declaredAnnotations;
+ } else {
+- annotations = new HashMap<>();
++ annotations = new HashMap<Class<? extends Annotation>, Annotation>();
+ superClass.initAnnotationsIfNecessary();
+ for (Map.Entry<Class<? extends Annotation>, Annotation> e : superClass.annotations.entrySet()) {
+ Class<? extends Annotation> annotationClass = e.getKey();
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/lang/ClassLoader.java openjdk-boot/jdk/src/share/classes/java/lang/ClassLoader.java
+--- openjdk-boot.orig/jdk/src/share/classes/java/lang/ClassLoader.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/lang/ClassLoader.java 2013-04-17 14:53:25.323552005 +0100
+@@ -246,7 +246,7 @@
+
+ // The classes loaded by this class loader. The only purpose of this table
+ // is to keep the classes from being GC'ed until the loader is GC'ed.
+- private final Vector<Class<?>> classes = new Vector<>();
++ private final Vector<Class<?>> classes = new Vector<Class<?>>();
+
+ // The "default" domain. Set as the default ProtectionDomain on newly
+ // created classes.
+@@ -265,7 +265,8 @@
+ // The packages defined in this class loader. Each package name is mapped
+ // to its corresponding Package object.
+ // @GuardedBy("itself")
+- private final HashMap<String, Package> packages = new HashMap<>();
++ private final HashMap<String, Package> packages =
++ new HashMap<String, Package>();
+
+ private static Void checkCreateClassLoader() {
+ SecurityManager security = System.getSecurityManager();
+@@ -278,16 +279,16 @@
+ private ClassLoader(Void unused, ClassLoader parent) {
+ this.parent = parent;
+ if (ParallelLoaders.isRegistered(this.getClass())) {
+- parallelLockMap = new ConcurrentHashMap<>();
+- package2certs = new ConcurrentHashMap<>();
++ parallelLockMap = new ConcurrentHashMap<String, Object>();
++ package2certs = new ConcurrentHashMap<String, Certificate[]>();
+ domains =
+ Collections.synchronizedSet(new HashSet<ProtectionDomain>());
+ assertionLock = new Object();
+ } else {
+ // no finer-grained lock; lock on the classloader instance
+ parallelLockMap = null;
+- package2certs = new Hashtable<>();
+- domains = new HashSet<>();
++ package2certs = new Hashtable<String, Certificate[]>();
++ domains = new HashSet<ProtectionDomain>();
+ assertionLock = this;
+ }
+ }
+@@ -1175,7 +1176,7 @@
+ }
+ tmp[1] = findResources(name);
+
+- return new CompoundEnumeration<>(tmp);
++ return new CompoundEnumeration<URL>(tmp);
+ }
+
+ /**
+@@ -1657,7 +1658,7 @@
+ protected Package[] getPackages() {
+ Map<String, Package> map;
+ synchronized (packages) {
+- map = new HashMap<>(packages);
++ map = new HashMap<String, Package>(packages);
+ }
+ Package[] pkgs;
+ if (parent != null) {
+@@ -1764,17 +1765,20 @@
+ }
+
+ // All native library names we've loaded.
+- private static Vector<String> loadedLibraryNames = new Vector<>();
++ private static Vector<String> loadedLibraryNames
++ = new Vector<String>();
+
+ // Native libraries belonging to system classes.
+ private static Vector<NativeLibrary> systemNativeLibraries
+- = new Vector<>();
++ = new Vector<NativeLibrary>();
+
+ // Native libraries associated with the class loader.
+- private Vector<NativeLibrary> nativeLibraries = new Vector<>();
++ private Vector<NativeLibrary> nativeLibraries
++ = new Vector<NativeLibrary>();
+
+ // native libraries being loaded/unloaded.
+- private static Stack<NativeLibrary> nativeLibraryContext = new Stack<>();
++ private static Stack<NativeLibrary> nativeLibraryContext
++ = new Stack<NativeLibrary>();
+
+ // The paths searched for libraries
+ private static String usr_paths[];
+@@ -2108,8 +2112,8 @@
+ * them to empty maps, effectively ignoring any present settings.
+ */
+ synchronized (assertionLock) {
+- classAssertionStatus = new HashMap<>();
+- packageAssertionStatus = new HashMap<>();
++ classAssertionStatus = new HashMap<String, Boolean>();
++ packageAssertionStatus = new HashMap<String, Boolean>();
+ defaultAssertionStatus = false;
+ }
+ }
+@@ -2171,8 +2175,8 @@
+ private void initializeJavaAssertionMaps() {
+ // assert Thread.holdsLock(assertionLock);
+
+- classAssertionStatus = new HashMap<>();
+- packageAssertionStatus = new HashMap<>();
++ classAssertionStatus = new HashMap<String, Boolean>();
++ packageAssertionStatus = new HashMap<String, Boolean>();
+ AssertionStatusDirectives directives = retrieveDirectives();
+
+ for(int i = 0; i < directives.classes.length; i++)
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/lang/ClassValue.java openjdk-boot/jdk/src/share/classes/java/lang/ClassValue.java
+--- openjdk-boot.orig/jdk/src/share/classes/java/lang/ClassValue.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/lang/ClassValue.java 2013-04-17 14:53:25.323552005 +0100
+@@ -297,12 +297,12 @@
+ * Some machines may also require a barrier instruction to execute
+ * before this.version.
+ */
+- private volatile Version<T> version = new Version<>(this);
++ private volatile Version<T> version = new Version<T>(this);
+ Version<T> version() { return version; }
+- void bumpVersion() { version = new Version<>(this); }
++ void bumpVersion() { version = new Version<T>(this); }
+ static class Version<T> {
+ private final ClassValue<T> classValue;
+- private final Entry<T> promise = new Entry<>(this);
++ private final Entry<T> promise = new Entry<T>(this);
+ Version(ClassValue<T> classValue) { this.classValue = classValue; }
+ ClassValue<T> classValue() { return classValue; }
+ Entry<T> promise() { return promise; }
+@@ -351,12 +351,12 @@
+ Entry<T> refreshVersion(Version<T> v2) {
+ assertNotPromise();
+ @SuppressWarnings("unchecked") // if !isPromise, type is T
+- Entry<T> e2 = new Entry<>(v2, (T) value);
++ Entry<T> e2 = new Entry<T>(v2, (T) value);
+ clear();
+ // value = null -- caller must drop
+ return e2;
+ }
+- static final Entry<?> DEAD_ENTRY = new Entry<>(null, null);
++ static final Entry<?> DEAD_ENTRY = new Entry<Object>(null, null);
+ }
+
+ /** Return the backing map associated with this type. */
+@@ -382,7 +382,7 @@
+
+ static <T> Entry<T> makeEntry(Version<T> explicitVersion, T value) {
+ // Note that explicitVersion might be different from this.version.
+- return new Entry<>(explicitVersion, value);
++ return new Entry<T>(explicitVersion, value);
+
+ // As soon as the Entry is put into the cache, the value will be
+ // reachable via a data race (as defined by the Java Memory Model).
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/lang/management/ManagementFactory.java openjdk-boot/jdk/src/share/classes/java/lang/management/ManagementFactory.java
+--- openjdk-boot.orig/jdk/src/share/classes/java/lang/management/ManagementFactory.java 2013-04-17 14:52:22.398546663 +0100
++++ openjdk-boot/jdk/src/share/classes/java/lang/management/ManagementFactory.java 2013-04-17 14:53:25.323552005 +0100
+@@ -789,7 +789,7 @@
+ getPlatformManagementInterfaces()
+ {
+ Set<Class<? extends PlatformManagedObject>> result =
+- new HashSet<>();
++ new HashSet<Class<? extends PlatformManagedObject>>();
+ for (PlatformComponent component: PlatformComponent.values()) {
+ result.add(component.getMXBeanInterface());
+ }
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/lang/management/PlatformComponent.java openjdk-boot/jdk/src/share/classes/java/lang/management/PlatformComponent.java
+--- openjdk-boot.orig/jdk/src/share/classes/java/lang/management/PlatformComponent.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/lang/management/PlatformComponent.java 2013-04-17 14:53:25.323552005 +0100
+@@ -287,7 +287,7 @@
+ List<T> getGcMXBeanList(Class<T> gcMXBeanIntf) {
+ List<GarbageCollectorMXBean> list =
+ ManagementFactoryHelper.getGarbageCollectorMXBeans();
+- List<T> result = new ArrayList<>(list.size());
++ List<T> result = new ArrayList<T>(list.size());
+ for (GarbageCollectorMXBean m : list) {
+ if (gcMXBeanIntf.isInstance(m)) {
+ result.add(gcMXBeanIntf.cast(m));
+@@ -342,7 +342,7 @@
+ }
+
+ private static Set<String> keyProperties(String... keyNames) {
+- Set<String> set = new HashSet<>();
++ Set<String> set = new HashSet<String>();
+ set.add("type");
+ for (String s : keyNames) {
+ set.add(s);
+@@ -407,7 +407,7 @@
+ List<T> getMXBeans(MBeanServerConnection mbs, Class<T> mxbeanInterface)
+ throws java.io.IOException
+ {
+- List<T> result = new ArrayList<>();
++ List<T> result = new ArrayList<T>();
+ for (ObjectName on : getObjectNames(mbs)) {
+ result.add(ManagementFactory.
+ newPlatformMXBeanProxy(mbs,
+@@ -438,7 +438,7 @@
+ private static Map<String, PlatformComponent> enumMap;
+ private static synchronized void ensureInitialized() {
+ if (enumMap == null) {
+- enumMap = new HashMap<>();
++ enumMap = new HashMap<String,PlatformComponent>();
+ for (PlatformComponent pc: PlatformComponent.values()) {
+ // Use String as the key rather than Class<?> to avoid
+ // causing unnecessary class loading of management interface
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/lang/Package.java openjdk-boot/jdk/src/share/classes/java/lang/Package.java
+--- openjdk-boot.orig/jdk/src/share/classes/java/lang/Package.java 2013-04-17 14:52:22.426547111 +0100
++++ openjdk-boot/jdk/src/share/classes/java/lang/Package.java 2013-04-17 14:53:25.323552005 +0100
+@@ -596,13 +596,16 @@
+ }
+
+ // The map of loaded system packages
+- private static Map<String, Package> pkgs = new HashMap<>(31);
++ private static Map<String, Package> pkgs
++ = new HashMap<String, Package>(31);
+
+ // Maps each directory or zip file name to its corresponding url
+- private static Map<String, URL> urls = new HashMap<>(10);
++ private static Map<String, URL> urls
++ = new HashMap<String, URL>(10);
+
+ // Maps each code source url for a jar file to its manifest
+- private static Map<String, Manifest> mans = new HashMap<>(10);
++ private static Map<String, Manifest> mans
++ = new HashMap<String, Manifest>(10);
+
+ private static native String getSystemPackage0(String name);
+ private static native String[] getSystemPackages0();
+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-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/lang/ProcessBuilder.java 2013-04-17 14:53:25.323552005 +0100
+@@ -215,7 +215,7 @@
+ * @param command a string array containing the program and its arguments
+ */
+ public ProcessBuilder(String... command) {
+- this.command = new ArrayList<>(command.length);
++ this.command = new ArrayList<String>(command.length);
+ for (String arg : command)
+ this.command.add(arg);
+ }
+@@ -252,7 +252,7 @@
+ * @return this process builder
+ */
+ public ProcessBuilder command(String... command) {
+- this.command = new ArrayList<>(command.length);
++ this.command = new ArrayList<String>(command.length);
+ for (String arg : command)
+ this.command.add(arg);
+ return this;
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/lang/reflect/Constructor.java openjdk-boot/jdk/src/share/classes/java/lang/reflect/Constructor.java
+--- openjdk-boot.orig/jdk/src/share/classes/java/lang/reflect/Constructor.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/lang/reflect/Constructor.java 2013-04-17 14:53:25.323552005 +0100
+@@ -136,7 +136,7 @@
+ // which implicitly requires that new java.lang.reflect
+ // objects be fabricated for each reflective call on Class
+ // objects.)
+- Constructor<T> res = new Constructor<>(clazz,
++ Constructor<T> res = new Constructor<T>(clazz,
+ parameterTypes,
+ exceptionTypes, modifiers, slot,
+ signature,
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/lang/reflect/Proxy.java openjdk-boot/jdk/src/share/classes/java/lang/reflect/Proxy.java
+--- openjdk-boot.orig/jdk/src/share/classes/java/lang/reflect/Proxy.java 2013-04-17 14:52:22.402546726 +0100
++++ openjdk-boot/jdk/src/share/classes/java/lang/reflect/Proxy.java 2013-04-17 14:53:25.327552069 +0100
+@@ -238,7 +238,7 @@
+
+ /** maps a class loader to the proxy class cache for that loader */
+ private static Map<ClassLoader, Map<List<String>, Object>> loaderToCache
+- = new WeakHashMap<>();
++ = new WeakHashMap<ClassLoader, Map<List<String>, Object>>();
+
+ /** marks that a particular proxy class is currently being generated */
+ private static Object pendingGenerationMarker = new Object();
+@@ -467,7 +467,7 @@
+ String[] interfaceNames = new String[interfaces.length];
+
+ // for detecting duplicates
+- Set<Class<?>> interfaceSet = new HashSet<>();
++ Set<Class<?>> interfaceSet = new HashSet<Class<?>>();
+
+ for (int i = 0; i < interfaces.length; i++) {
+ /*
+@@ -524,7 +524,7 @@
+ synchronized (loaderToCache) {
+ cache = loaderToCache.get(loader);
+ if (cache == null) {
+- cache = new HashMap<>();
++ cache = new HashMap<List<String>, Object>();
+ loaderToCache.put(loader, cache);
+ }
+ /*
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/lang/reflect/ReflectAccess.java openjdk-boot/jdk/src/share/classes/java/lang/reflect/ReflectAccess.java
+--- openjdk-boot.orig/jdk/src/share/classes/java/lang/reflect/ReflectAccess.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/lang/reflect/ReflectAccess.java 2013-04-17 14:53:25.327552069 +0100
+@@ -84,7 +84,7 @@
+ byte[] annotations,
+ byte[] parameterAnnotations)
+ {
+- return new Constructor<>(declaringClass,
++ return new Constructor<T>(declaringClass,
+ parameterTypes,
+ checkedExceptions,
+ modifiers,
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/lang/StringCoding.java openjdk-boot/jdk/src/share/classes/java/lang/StringCoding.java
+--- openjdk-boot.orig/jdk/src/share/classes/java/lang/StringCoding.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/lang/StringCoding.java 2013-04-17 14:53:25.327552069 +0100
+@@ -53,9 +53,9 @@
+
+ /** The cached coders for each thread */
+ private final static ThreadLocal<SoftReference<StringDecoder>> decoder =
+- new ThreadLocal<>();
++ new ThreadLocal<SoftReference<StringDecoder>>();
+ private final static ThreadLocal<SoftReference<StringEncoder>> encoder =
+- new ThreadLocal<>();
++ new ThreadLocal<SoftReference<StringEncoder>>();
+
+ private static boolean warnUnsupportedCharset = true;
+
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/lang/String.java openjdk-boot/jdk/src/share/classes/java/lang/String.java
+--- openjdk-boot.orig/jdk/src/share/classes/java/lang/String.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/lang/String.java 2013-04-17 14:53:25.327552069 +0100
+@@ -2282,7 +2282,7 @@
+ int off = 0;
+ int next = 0;
+ boolean limited = limit > 0;
+- ArrayList<String> list = new ArrayList<>();
++ ArrayList<String> list = new ArrayList<String>();
+ while ((next = indexOf(ch, off)) != -1) {
+ if (!limited || list.size() < limit - 1) {
+ list.add(substring(off, next));
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/lang/Thread.java openjdk-boot/jdk/src/share/classes/java/lang/Thread.java
+--- openjdk-boot.orig/jdk/src/share/classes/java/lang/Thread.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/lang/Thread.java 2013-04-17 14:53:25.327552069 +0100
+@@ -1616,7 +1616,8 @@
+ // Get a snapshot of the list of all threads
+ Thread[] threads = getThreads();
+ StackTraceElement[][] traces = dumpThreads(threads);
+- Map<Thread, StackTraceElement[]> m = new HashMap<>(threads.length);
++ Map<Thread, StackTraceElement[]> m
++ = new HashMap<Thread, StackTraceElement[]>(threads.length);
+ for (int i = 0; i < threads.length; i++) {
+ StackTraceElement[] stackTrace = traces[i];
+ if (stackTrace != null) {
+@@ -1637,11 +1638,11 @@
+ private static class Caches {
+ /** cache of subclass security audit results */
+ static final ConcurrentMap<WeakClassKey,Boolean> subclassAudits =
+- new ConcurrentHashMap<>();
++ new ConcurrentHashMap<WeakClassKey,Boolean>();
+
+ /** queue for WeakReferences to audited subclasses */
+ static final ReferenceQueue<Class<?>> subclassAuditsQueue =
+- new ReferenceQueue<>();
++ new ReferenceQueue<Class<?>>();
+ }
+
+ /**
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/lang/Throwable.java openjdk-boot/jdk/src/share/classes/java/lang/Throwable.java
+--- openjdk-boot.orig/jdk/src/share/classes/java/lang/Throwable.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/lang/Throwable.java 2013-04-17 14:53:25.327552069 +0100
+@@ -917,7 +917,7 @@
+ // Use the sentinel for a zero-length list
+ suppressed = SUPPRESSED_SENTINEL;
+ } else { // Copy Throwables to new list
+- suppressed = new ArrayList<>(1);
++ suppressed = new ArrayList<Throwable>(1);
+ for (Throwable t : suppressedExceptions) {
+ // Enforce constraints on suppressed exceptions in
+ // case of corrupt or malicious stream.
+@@ -1048,7 +1048,7 @@
+ return;
+
+ if (suppressedExceptions == SUPPRESSED_SENTINEL)
+- suppressedExceptions = new ArrayList<>(1);
++ suppressedExceptions = new ArrayList<Throwable>(1);
+
+ suppressedExceptions.add(exception);
+ }
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/net/InetAddress.java openjdk-boot/jdk/src/share/classes/java/net/InetAddress.java
+--- openjdk-boot.orig/jdk/src/share/classes/java/net/InetAddress.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/net/InetAddress.java 2013-04-17 14:53:25.331552133 +0100
+@@ -705,7 +705,7 @@
+
+ static InetAddressImpl impl;
+
+- private static final HashMap<String, Void> lookupTable = new HashMap<>();
++ private static final HashMap<String, Void> lookupTable = new HashMap<String, Void>();
+
+ /**
+ * Represents a cache entry
+@@ -764,7 +764,7 @@
+
+ // As we iterate in insertion order we can
+ // terminate when a non-expired entry is found.
+- LinkedList<String> expired = new LinkedList<>();
++ LinkedList<String> expired = new LinkedList<String>();
+ long now = System.currentTimeMillis();
+ for (String key : cache.keySet()) {
+ CacheEntry entry = cache.get(key);
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/net/URLClassLoader.java openjdk-boot/jdk/src/share/classes/java/net/URLClassLoader.java
+--- openjdk-boot.orig/jdk/src/share/classes/java/net/URLClassLoader.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/net/URLClassLoader.java 2013-04-17 14:53:25.331552133 +0100
+@@ -205,7 +205,7 @@
+ */
+
+ private WeakHashMap<Closeable,Void>
+- closeables = new WeakHashMap<>();
++ closeables = new WeakHashMap<Closeable, Void>();
+
+ /**
+ * Returns an input stream for reading the specified resource.
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/nio/file/Files.java openjdk-boot/jdk/src/share/classes/java/nio/file/Files.java
+--- openjdk-boot.orig/jdk/src/share/classes/java/nio/file/Files.java 2013-04-17 14:52:22.426547111 +0100
++++ openjdk-boot/jdk/src/share/classes/java/nio/file/Files.java 2013-04-17 14:53:51.879976286 +0100
+@@ -1493,7 +1493,7 @@
+ return AccessController
+ .doPrivileged(new PrivilegedAction<List<FileTypeDetector>>() {
+ @Override public List<FileTypeDetector> run() {
+- List<FileTypeDetector> list = new ArrayList<>();
++ List<FileTypeDetector> list = new ArrayList<FileTypeDetector>();
+ ServiceLoader<FileTypeDetector> loader = ServiceLoader
+ .load(FileTypeDetector.class, ClassLoader.getSystemClassLoader());
+ for (FileTypeDetector detector: loader) {
+@@ -3014,7 +3014,7 @@
+ BufferedReader reader = null;
+ try {
+ reader = newBufferedReader(path, cs);
+- List<String> result = new ArrayList<>();
++ List<String> result = new ArrayList<String>();
+ for (;;) {
+ String line = reader.readLine();
+ if (line == null)
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/security/AccessControlContext.java openjdk-boot/jdk/src/share/classes/java/security/AccessControlContext.java
+--- openjdk-boot.orig/jdk/src/share/classes/java/security/AccessControlContext.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/security/AccessControlContext.java 2013-04-17 14:53:25.331552133 +0100
+@@ -124,7 +124,7 @@
+ this.context = null;
+ }
+ } else {
+- List<ProtectionDomain> v = new ArrayList<>(context.length);
++ List<ProtectionDomain> v = new ArrayList<ProtectionDomain>(context.length);
+ for (int i =0; i< context.length; i++) {
+ if ((context[i] != null) && (!v.contains(context[i])))
+ v.add(context[i]);
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/security/BasicPermission.java openjdk-boot/jdk/src/share/classes/java/security/BasicPermission.java
+--- openjdk-boot.orig/jdk/src/share/classes/java/security/BasicPermission.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/security/BasicPermission.java 2013-04-17 14:53:25.335552196 +0100
+@@ -515,7 +515,7 @@
+
+ // Copy perms into a Hashtable
+ Hashtable<String, Permission> permissions =
+- new Hashtable<>(perms.size()*2);
++ new Hashtable<String, Permission>(perms.size()*2);
+
+ synchronized (this) {
+ permissions.putAll(perms);
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/security/CodeSource.java openjdk-boot/jdk/src/share/classes/java/security/CodeSource.java
+--- openjdk-boot.orig/jdk/src/share/classes/java/security/CodeSource.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/security/CodeSource.java 2013-04-17 14:53:25.339552262 +0100
+@@ -188,7 +188,7 @@
+ } else if (signers != null) {
+ // Convert the code signers to certs
+ ArrayList<java.security.cert.Certificate> certChains =
+- new ArrayList<>();
++ new ArrayList<java.security.cert.Certificate>();
+ for (int i = 0; i < signers.length; i++) {
+ certChains.addAll(
+ signers[i].getSignerCertPath().getCertificates());
+@@ -606,10 +606,10 @@
+
+ // Iterate through all the certificates
+ int i = 0;
+- List<CodeSigner> signers = new ArrayList<>();
++ List<CodeSigner> signers = new ArrayList<CodeSigner>();
+ while (i < certs.length) {
+ List<java.security.cert.Certificate> certChain =
+- new ArrayList<>();
++ new ArrayList<java.security.cert.Certificate>();
+ certChain.add(certs[i++]); // first cert is an end-entity cert
+ int j = i;
+
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/security/Permissions.java openjdk-boot/jdk/src/share/classes/java/security/Permissions.java
+--- openjdk-boot.orig/jdk/src/share/classes/java/security/Permissions.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/security/Permissions.java 2013-04-17 14:53:25.339552262 +0100
+@@ -362,7 +362,7 @@
+
+ // Copy perms into a Hashtable
+ Hashtable<Class<?>, PermissionCollection> perms =
+- new Hashtable<>(permsMap.size()*2); // no sync; estimate
++ new Hashtable<Class<?>, PermissionCollection>(permsMap.size()*2); // no sync; estimate
+ synchronized (this) {
+ perms.putAll(permsMap);
+ }
+@@ -567,7 +567,7 @@
+
+ // Copy perms into a Hashtable
+ Hashtable<Permission, Permission> perms =
+- new Hashtable<>(permsMap.size()*2);
++ new Hashtable<Permission, Permission>(permsMap.size()*2);
+ synchronized (this) {
+ perms.putAll(permsMap);
+ }
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/security/Policy.java openjdk-boot/jdk/src/share/classes/java/security/Policy.java
+--- openjdk-boot.orig/jdk/src/share/classes/java/security/Policy.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/security/Policy.java 2013-04-17 14:53:25.339552262 +0100
+@@ -118,7 +118,7 @@
+
+ // PolicyInfo is stored in an AtomicReference
+ private static AtomicReference<PolicyInfo> policy =
+- new AtomicReference<>(new PolicyInfo(null, false));
++ new AtomicReference<PolicyInfo>(new PolicyInfo(null, false));
+
+ private static final Debug debug = Debug.getInstance("policy");
+
+@@ -328,7 +328,7 @@
+ PermissionCollection policyPerms = null;
+ synchronized (p) {
+ if (p.pdMapping == null) {
+- p.pdMapping = new WeakHashMap<>();
++ p.pdMapping = new WeakHashMap<ProtectionDomain.Key, PermissionCollection>();
+ }
+ }
+
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/security/ProtectionDomain.java openjdk-boot/jdk/src/share/classes/java/security/ProtectionDomain.java
+--- openjdk-boot.orig/jdk/src/share/classes/java/security/ProtectionDomain.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/security/ProtectionDomain.java 2013-04-17 14:53:25.339552262 +0100
+@@ -368,8 +368,8 @@
+ int swag = 32;
+ int vcap = 8;
+ Enumeration<Permission> e;
+- List<Permission> pdVector = new ArrayList<>(vcap);
+- List<Permission> plVector = new ArrayList<>(swag);
++ List<Permission> pdVector = new ArrayList<Permission>(vcap);
++ List<Permission> plVector = new ArrayList<Permission>(swag);
+
+ //
+ // Build a vector of domain permissions for subsequent merge
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/security/Provider.java openjdk-boot/jdk/src/share/classes/java/security/Provider.java
+--- openjdk-boot.orig/jdk/src/share/classes/java/security/Provider.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/security/Provider.java 2013-04-17 14:53:25.339552262 +0100
+@@ -437,7 +437,7 @@
+
+ private void readObject(ObjectInputStream in)
+ throws IOException, ClassNotFoundException {
+- Map<Object,Object> copy = new HashMap<>();
++ Map<Object,Object> copy = new HashMap<Object,Object>();
+ for (Map.Entry<Object,Object> entry : super.entrySet()) {
+ copy.put(entry.getKey(), entry.getValue());
+ }
+@@ -719,7 +719,7 @@
+ }
+ if (serviceSet == null) {
+ ensureLegacyParsed();
+- Set<Service> set = new LinkedHashSet<>();
++ Set<Service> set = new LinkedHashSet<Service>();
+ if (serviceMap != null) {
+ set.addAll(serviceMap.values());
+ }
+@@ -1395,7 +1395,7 @@
+ if (s != null) {
+ String[] classNames = s.split("\\|");
+ List<Class> classList =
+- new ArrayList<>(classNames.length);
++ new ArrayList<Class>(classNames.length);
+ for (String className : classNames) {
+ Class clazz = getKeyClass(className);
+ if (clazz != null) {
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/security/SecureClassLoader.java openjdk-boot/jdk/src/share/classes/java/security/SecureClassLoader.java
+--- openjdk-boot.orig/jdk/src/share/classes/java/security/SecureClassLoader.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/security/SecureClassLoader.java 2013-04-17 14:53:25.339552262 +0100
+@@ -50,7 +50,7 @@
+ // HashMap that maps CodeSource to ProtectionDomain
+ // @GuardedBy("pdcache")
+ private final HashMap<CodeSource, ProtectionDomain> pdcache =
+- new HashMap<>(11);
++ new HashMap<CodeSource, ProtectionDomain>(11);
+
+ private static final Debug debug = Debug.getInstance("scl");
+
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/security/Security.java openjdk-boot/jdk/src/share/classes/java/security/Security.java
+--- openjdk-boot.orig/jdk/src/share/classes/java/security/Security.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/security/Security.java 2013-04-17 14:53:25.339552262 +0100
+@@ -546,7 +546,7 @@
+ value = filter.substring(index + 1);
+ }
+
+- Hashtable<String, String> hashtableFilter = new Hashtable<>(1);
++ Hashtable<String, String> hashtableFilter = new Hashtable<String, String>(1);
+ hashtableFilter.put(key, value);
+
+ return (getProviders(hashtableFilter));
+@@ -606,7 +606,7 @@
+ // Then only return those providers who satisfy the selection criteria.
+ Provider[] allProviders = Security.getProviders();
+ Set<String> keySet = filter.keySet();
+- LinkedHashSet<Provider> candidates = new LinkedHashSet<>(5);
++ LinkedHashSet<Provider> candidates = new LinkedHashSet<Provider>(5);
+
+ // Returns all installed providers
+ // if the selection criteria is null.
+@@ -660,7 +660,7 @@
+ }
+
+ // Map containing cached Spi Class objects of the specified type
+- private static final Map<String, Class> spiMap = new ConcurrentHashMap<>();
++ private static final Map<String, Class> spiMap = new ConcurrentHashMap<String, Class>();
+
+ /**
+ * Return the Class object for the given engine type
+@@ -884,7 +884,7 @@
+ String attrName,
+ String filterValue,
+ Provider[] allProviders) {
+- LinkedHashSet<Provider> candidates = new LinkedHashSet<>(5);
++ LinkedHashSet<Provider> candidates = new LinkedHashSet<Provider>(5);
+ for (int i = 0; i < allProviders.length; i++) {
+ if (isCriterionSatisfied(allProviders[i], serviceName,
+ algName,
+@@ -1081,7 +1081,7 @@
+ return Collections.EMPTY_SET;
+ }
+
+- HashSet<String> result = new HashSet<>();
++ HashSet<String> result = new HashSet<String>();
+ Provider[] providers = Security.getProviders();
+
+ for (int i = 0; i < providers.length; i++) {
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/security/UnresolvedPermissionCollection.java openjdk-boot/jdk/src/share/classes/java/security/UnresolvedPermissionCollection.java
+--- openjdk-boot.orig/jdk/src/share/classes/java/security/UnresolvedPermissionCollection.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/security/UnresolvedPermissionCollection.java 2013-04-17 14:53:25.339552262 +0100
+@@ -119,7 +119,7 @@
+
+ public Enumeration<Permission> elements() {
+ List<Permission> results =
+- new ArrayList<>(); // where results are stored
++ new ArrayList<Permission>(); // where results are stored
+
+ // Get iterator of Map values (which are lists of permissions)
+ synchronized (this) {
+@@ -161,7 +161,7 @@
+
+ // Copy perms into a Hashtable
+ Hashtable<String, Vector<UnresolvedPermission>> permissions =
+- new Hashtable<>(perms.size()*2);
++ new Hashtable<String, Vector<UnresolvedPermission>>(perms.size()*2);
+
+ // Convert each entry (List) into a Vector
+ synchronized (this) {
+@@ -169,7 +169,7 @@
+ for (Map.Entry<String, List<UnresolvedPermission>> e : set) {
+ // Convert list into Vector
+ List<UnresolvedPermission> list = e.getValue();
+- Vector<UnresolvedPermission> vec = new Vector<>(list.size());
++ Vector<UnresolvedPermission> vec = new Vector<UnresolvedPermission>(list.size());
+ synchronized (list) {
+ vec.addAll(list);
+ }
+@@ -206,7 +206,7 @@
+ for (Map.Entry<String, Vector<UnresolvedPermission>> e : set) {
+ // Convert Vector into ArrayList
+ Vector<UnresolvedPermission> vec = e.getValue();
+- List<UnresolvedPermission> list = new ArrayList<>(vec.size());
++ List<UnresolvedPermission> list = new ArrayList<UnresolvedPermission>(vec.size());
+ list.addAll(vec);
+
+ // Add to Hashtable being serialized
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/security/UnresolvedPermission.java openjdk-boot/jdk/src/share/classes/java/security/UnresolvedPermission.java
+--- openjdk-boot.orig/jdk/src/share/classes/java/security/UnresolvedPermission.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/security/UnresolvedPermission.java 2013-04-17 14:53:25.339552262 +0100
+@@ -198,7 +198,7 @@
+ if (this.certs == null) {
+ // extract the signer certs
+ ArrayList<java.security.cert.Certificate> signerCerts =
+- new ArrayList<>();
++ new ArrayList<java.security.cert.Certificate>();
+ i = 0;
+ while (i < certs.length) {
+ signerCerts.add(certs[i]);
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/util/AbstractList.java openjdk-boot/jdk/src/share/classes/java/util/AbstractList.java
+--- openjdk-boot.orig/jdk/src/share/classes/java/util/AbstractList.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/util/AbstractList.java 2013-04-17 14:53:25.339552262 +0100
+@@ -482,8 +482,8 @@
+ */
+ public List<E> subList(int fromIndex, int toIndex) {
+ return (this instanceof RandomAccess ?
+- new RandomAccessSubList<>(this, fromIndex, toIndex) :
+- new SubList<>(this, fromIndex, toIndex));
++ new RandomAccessSubList<E>(this, fromIndex, toIndex) :
++ new SubList<E>(this, fromIndex, toIndex));
+ }
+
+ // Comparison and hashing
+@@ -747,7 +747,7 @@
+ }
+
+ public List<E> subList(int fromIndex, int toIndex) {
+- return new SubList<>(this, fromIndex, toIndex);
++ return new SubList<E>(this, fromIndex, toIndex);
+ }
+
+ private void rangeCheck(int index) {
+@@ -776,6 +776,6 @@
+ }
+
+ public List<E> subList(int fromIndex, int toIndex) {
+- return new RandomAccessSubList<>(this, fromIndex, toIndex);
++ return new RandomAccessSubList<E>(this, fromIndex, toIndex);
+ }
+ }
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/util/Arrays.java openjdk-boot/jdk/src/share/classes/java/util/Arrays.java
+--- openjdk-boot.orig/jdk/src/share/classes/java/util/Arrays.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/util/Arrays.java 2013-04-17 14:53:25.343552325 +0100
+@@ -2825,7 +2825,7 @@
+ */
+ @SafeVarargs
+ public static <T> List<T> asList(T... a) {
+- return new ArrayList<>(a);
++ return new ArrayList<T>(a);
+ }
+
+ /**
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/util/Collections.java openjdk-boot/jdk/src/share/classes/java/util/Collections.java
+--- openjdk-boot.orig/jdk/src/share/classes/java/util/Collections.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/util/Collections.java 2013-04-17 14:53:25.343552325 +0100
+@@ -1035,7 +1035,7 @@
+ * @return an unmodifiable view of the specified collection.
+ */
+ public static <T> Collection<T> unmodifiableCollection(Collection<? extends T> c) {
+- return new UnmodifiableCollection<>(c);
++ return new UnmodifiableCollection<T>(c);
+ }
+
+ /**
+@@ -1109,7 +1109,7 @@
+ * @return an unmodifiable view of the specified set.
+ */
+ public static <T> Set<T> unmodifiableSet(Set<? extends T> s) {
+- return new UnmodifiableSet<>(s);
++ return new UnmodifiableSet<T>(s);
+ }
+
+ /**
+@@ -1141,7 +1141,7 @@
+ * @return an unmodifiable view of the specified sorted set.
+ */
+ public static <T> SortedSet<T> unmodifiableSortedSet(SortedSet<T> s) {
+- return new UnmodifiableSortedSet<>(s);
++ return new UnmodifiableSortedSet<T>(s);
+ }
+
+ /**
+@@ -1158,13 +1158,13 @@
+ public Comparator<? super E> comparator() {return ss.comparator();}
+
+ public SortedSet<E> subSet(E fromElement, E toElement) {
+- return new UnmodifiableSortedSet<>(ss.subSet(fromElement,toElement));
++ return new UnmodifiableSortedSet<E>(ss.subSet(fromElement,toElement));
+ }
+ public SortedSet<E> headSet(E toElement) {
+- return new UnmodifiableSortedSet<>(ss.headSet(toElement));
++ return new UnmodifiableSortedSet<E>(ss.headSet(toElement));
+ }
+ public SortedSet<E> tailSet(E fromElement) {
+- return new UnmodifiableSortedSet<>(ss.tailSet(fromElement));
++ return new UnmodifiableSortedSet<E>(ss.tailSet(fromElement));
+ }
+
+ public E first() {return ss.first();}
+@@ -1188,8 +1188,8 @@
+ */
+ public static <T> List<T> unmodifiableList(List<? extends T> list) {
+ return (list instanceof RandomAccess ?
+- new UnmodifiableRandomAccessList<>(list) :
+- new UnmodifiableList<>(list));
++ new UnmodifiableRandomAccessList<T>(list) :
++ new UnmodifiableList<T>(list));
+ }
+
+ /**
+@@ -1250,7 +1250,7 @@
+ }
+
+ public List<E> subList(int fromIndex, int toIndex) {
+- return new UnmodifiableList<>(list.subList(fromIndex, toIndex));
++ return new UnmodifiableList<E>(list.subList(fromIndex, toIndex));
+ }
+
+ /**
+@@ -1267,7 +1267,7 @@
+ */
+ private Object readResolve() {
+ return (list instanceof RandomAccess
+- ? new UnmodifiableRandomAccessList<>(list)
++ ? new UnmodifiableRandomAccessList<E>(list)
+ : this);
+ }
+ }
+@@ -1283,7 +1283,7 @@
+ }
+
+ public List<E> subList(int fromIndex, int toIndex) {
+- return new UnmodifiableRandomAccessList<>(
++ return new UnmodifiableRandomAccessList<E>(
+ list.subList(fromIndex, toIndex));
+ }
+
+@@ -1296,7 +1296,7 @@
+ * deserialization.
+ */
+ private Object writeReplace() {
+- return new UnmodifiableList<>(list);
++ return new UnmodifiableList<E>(list);
+ }
+ }
+
+@@ -1315,7 +1315,7 @@
+ * @return an unmodifiable view of the specified map.
+ */
+ public static <K,V> Map<K,V> unmodifiableMap(Map<? extends K, ? extends V> m) {
+- return new UnmodifiableMap<>(m);
++ return new UnmodifiableMap<K,V>(m);
+ }
+
+ /**
+@@ -1363,7 +1363,7 @@
+
+ public Set<Map.Entry<K,V>> entrySet() {
+ if (entrySet==null)
+- entrySet = new UnmodifiableEntrySet<>(m.entrySet());
++ entrySet = new UnmodifiableEntrySet<K,V>(m.entrySet());
+ return entrySet;
+ }
+
+@@ -1400,7 +1400,7 @@
+ return i.hasNext();
+ }
+ public Map.Entry<K,V> next() {
+- return new UnmodifiableEntry<>(i.next());
++ return new UnmodifiableEntry<K,V>(i.next());
+ }
+ public void remove() {
+ throw new UnsupportedOperationException();
+@@ -1411,7 +1411,7 @@
+ public Object[] toArray() {
+ Object[] a = c.toArray();
+ for (int i=0; i<a.length; i++)
+- a[i] = new UnmodifiableEntry<>((Map.Entry<K,V>)a[i]);
++ a[i] = new UnmodifiableEntry<K,V>((Map.Entry<K,V>)a[i]);
+ return a;
+ }
+
+@@ -1422,7 +1422,7 @@
+ Object[] arr = c.toArray(a.length==0 ? a : Arrays.copyOf(a, 0));
+
+ for (int i=0; i<arr.length; i++)
+- arr[i] = new UnmodifiableEntry<>((Map.Entry<K,V>)arr[i]);
++ arr[i] = new UnmodifiableEntry<K,V>((Map.Entry<K,V>)arr[i]);
+
+ if (arr.length > a.length)
+ return (T[])arr;
+@@ -1443,7 +1443,7 @@
+ if (!(o instanceof Map.Entry))
+ return false;
+ return c.contains(
+- new UnmodifiableEntry<>((Map.Entry<?,?>) o));
++ new UnmodifiableEntry<Object,Object>((Map.Entry<?,?>) o));
+ }
+
+ /**
+@@ -1519,7 +1519,7 @@
+ * @return an unmodifiable view of the specified sorted map.
+ */
+ public static <K,V> SortedMap<K,V> unmodifiableSortedMap(SortedMap<K, ? extends V> m) {
+- return new UnmodifiableSortedMap<>(m);
++ return new UnmodifiableSortedMap<K,V>(m);
+ }
+
+ /**
+@@ -1537,13 +1537,13 @@
+ public Comparator<? super K> comparator() {return sm.comparator();}
+
+ public SortedMap<K,V> subMap(K fromKey, K toKey) {
+- return new UnmodifiableSortedMap<>(sm.subMap(fromKey, toKey));
++ return new UnmodifiableSortedMap<K,V>(sm.subMap(fromKey, toKey));
+ }
+ public SortedMap<K,V> headMap(K toKey) {
+- return new UnmodifiableSortedMap<>(sm.headMap(toKey));
++ return new UnmodifiableSortedMap<K,V>(sm.headMap(toKey));
+ }
+ public SortedMap<K,V> tailMap(K fromKey) {
+- return new UnmodifiableSortedMap<>(sm.tailMap(fromKey));
++ return new UnmodifiableSortedMap<K,V>(sm.tailMap(fromKey));
+ }
+
+ public K firstKey() {return sm.firstKey();}
+@@ -1585,11 +1585,11 @@
+ * @return a synchronized view of the specified collection.
+ */
+ public static <T> Collection<T> synchronizedCollection(Collection<T> c) {
+- return new SynchronizedCollection<>(c);
++ return new SynchronizedCollection<T>(c);
+ }
+
+ static <T> Collection<T> synchronizedCollection(Collection<T> c, Object mutex) {
+- return new SynchronizedCollection<>(c, mutex);
++ return new SynchronizedCollection<T>(c, mutex);
+ }
+
+ /**
+@@ -1688,11 +1688,11 @@
+ * @return a synchronized view of the specified set.
+ */
+ public static <T> Set<T> synchronizedSet(Set<T> s) {
+- return new SynchronizedSet<>(s);
++ return new SynchronizedSet<T>(s);
+ }
+
+ static <T> Set<T> synchronizedSet(Set<T> s, Object mutex) {
+- return new SynchronizedSet<>(s, mutex);
++ return new SynchronizedSet<T>(s, mutex);
+ }
+
+ /**
+@@ -1758,7 +1758,7 @@
+ * @return a synchronized view of the specified sorted set.
+ */
+ public static <T> SortedSet<T> synchronizedSortedSet(SortedSet<T> s) {
+- return new SynchronizedSortedSet<>(s);
++ return new SynchronizedSortedSet<T>(s);
+ }
+
+ /**
+@@ -1787,18 +1787,18 @@
+
+ public SortedSet<E> subSet(E fromElement, E toElement) {
+ synchronized (mutex) {
+- return new SynchronizedSortedSet<>(
++ return new SynchronizedSortedSet<E>(
+ ss.subSet(fromElement, toElement), mutex);
+ }
+ }
+ public SortedSet<E> headSet(E toElement) {
+ synchronized (mutex) {
+- return new SynchronizedSortedSet<>(ss.headSet(toElement), mutex);
++ return new SynchronizedSortedSet<E>(ss.headSet(toElement), mutex);
+ }
+ }
+ public SortedSet<E> tailSet(E fromElement) {
+ synchronized (mutex) {
+- return new SynchronizedSortedSet<>(ss.tailSet(fromElement),mutex);
++ return new SynchronizedSortedSet<E>(ss.tailSet(fromElement),mutex);
+ }
+ }
+
+@@ -1837,14 +1837,14 @@
+ */
+ public static <T> List<T> synchronizedList(List<T> list) {
+ return (list instanceof RandomAccess ?
+- new SynchronizedRandomAccessList<>(list) :
+- new SynchronizedList<>(list));
++ new SynchronizedRandomAccessList<T>(list) :
++ new SynchronizedList<T>(list));
+ }
+
+ static <T> List<T> synchronizedList(List<T> list, Object mutex) {
+ return (list instanceof RandomAccess ?
+- new SynchronizedRandomAccessList<>(list, mutex) :
+- new SynchronizedList<>(list, mutex));
++ new SynchronizedRandomAccessList<T>(list, mutex) :
++ new SynchronizedList<T>(list, mutex));
+ }
+
+ /**
+@@ -1909,7 +1909,7 @@
+
+ public List<E> subList(int fromIndex, int toIndex) {
+ synchronized (mutex) {
+- return new SynchronizedList<>(list.subList(fromIndex, toIndex),
++ return new SynchronizedList<E>(list.subList(fromIndex, toIndex),
+ mutex);
+ }
+ }
+@@ -1928,7 +1928,7 @@
+ */
+ private Object readResolve() {
+ return (list instanceof RandomAccess
+- ? new SynchronizedRandomAccessList<>(list)
++ ? new SynchronizedRandomAccessList<E>(list)
+ : this);
+ }
+ }
+@@ -1950,7 +1950,7 @@
+
+ public List<E> subList(int fromIndex, int toIndex) {
+ synchronized (mutex) {
+- return new SynchronizedRandomAccessList<>(
++ return new SynchronizedRandomAccessList<E>(
+ list.subList(fromIndex, toIndex), mutex);
+ }
+ }
+@@ -1964,7 +1964,7 @@
+ * deserialization.
+ */
+ private Object writeReplace() {
+- return new SynchronizedList<>(list);
++ return new SynchronizedList<E>(list);
+ }
+ }
+
+@@ -1996,7 +1996,7 @@
+ * @return a synchronized view of the specified map.
+ */
+ public static <K,V> Map<K,V> synchronizedMap(Map<K,V> m) {
+- return new SynchronizedMap<>(m);
++ return new SynchronizedMap<K,V>(m);
+ }
+
+ /**
+@@ -2057,7 +2057,7 @@
+ public Set<K> keySet() {
+ synchronized (mutex) {
+ if (keySet==null)
+- keySet = new SynchronizedSet<>(m.keySet(), mutex);
++ keySet = new SynchronizedSet<K>(m.keySet(), mutex);
+ return keySet;
+ }
+ }
+@@ -2065,7 +2065,7 @@
+ public Set<Map.Entry<K,V>> entrySet() {
+ synchronized (mutex) {
+ if (entrySet==null)
+- entrySet = new SynchronizedSet<>(m.entrySet(), mutex);
++ entrySet = new SynchronizedSet<Map.Entry<K,V>>(m.entrySet(), mutex);
+ return entrySet;
+ }
+ }
+@@ -2073,7 +2073,7 @@
+ public Collection<V> values() {
+ synchronized (mutex) {
+ if (values==null)
+- values = new SynchronizedCollection<>(m.values(), mutex);
++ values = new SynchronizedCollection<V>(m.values(), mutex);
+ return values;
+ }
+ }
+@@ -2137,7 +2137,7 @@
+ * @return a synchronized view of the specified sorted map.
+ */
+ public static <K,V> SortedMap<K,V> synchronizedSortedMap(SortedMap<K,V> m) {
+- return new SynchronizedSortedMap<>(m);
++ return new SynchronizedSortedMap<K,V>(m);
+ }
+
+
+@@ -2167,18 +2167,18 @@
+
+ public SortedMap<K,V> subMap(K fromKey, K toKey) {
+ synchronized (mutex) {
+- return new SynchronizedSortedMap<>(
++ return new SynchronizedSortedMap<K,V>(
+ sm.subMap(fromKey, toKey), mutex);
+ }
+ }
+ public SortedMap<K,V> headMap(K toKey) {
+ synchronized (mutex) {
+- return new SynchronizedSortedMap<>(sm.headMap(toKey), mutex);
++ return new SynchronizedSortedMap<K,V>(sm.headMap(toKey), mutex);
+ }
+ }
+ public SortedMap<K,V> tailMap(K fromKey) {
+ synchronized (mutex) {
+- return new SynchronizedSortedMap<>(sm.tailMap(fromKey),mutex);
++ return new SynchronizedSortedMap<K,V>(sm.tailMap(fromKey),mutex);
+ }
+ }
+
+@@ -2254,7 +2254,7 @@
+ */
+ public static <E> Collection<E> checkedCollection(Collection<E> c,
+ Class<E> type) {
+- return new CheckedCollection<>(c, type);
++ return new CheckedCollection<E>(c, type);
+ }
+
+ @SuppressWarnings("unchecked")
+@@ -2386,7 +2386,7 @@
+ * @since 1.5
+ */
+ public static <E> Set<E> checkedSet(Set<E> s, Class<E> type) {
+- return new CheckedSet<>(s, type);
++ return new CheckedSet<E>(s, type);
+ }
+
+ /**
+@@ -2432,7 +2432,7 @@
+ */
+ public static <E> SortedSet<E> checkedSortedSet(SortedSet<E> s,
+ Class<E> type) {
+- return new CheckedSortedSet<>(s, type);
++ return new CheckedSortedSet<E>(s, type);
+ }
+
+ /**
+@@ -2492,8 +2492,8 @@
+ */
+ public static <E> List<E> checkedList(List<E> list, Class<E> type) {
+ return (list instanceof RandomAccess ?
+- new CheckedRandomAccessList<>(list, type) :
+- new CheckedList<>(list, type));
++ new CheckedRandomAccessList<E>(list, type) :
++ new CheckedList<E>(list, type));
+ }
+
+ /**
+@@ -2558,7 +2558,7 @@
+ }
+
+ public List<E> subList(int fromIndex, int toIndex) {
+- return new CheckedList<>(list.subList(fromIndex, toIndex), type);
++ return new CheckedList<E>(list.subList(fromIndex, toIndex), type);
+ }
+ }
+
+@@ -2575,7 +2575,7 @@
+ }
+
+ public List<E> subList(int fromIndex, int toIndex) {
+- return new CheckedRandomAccessList<>(
++ return new CheckedRandomAccessList<E>(
+ list.subList(fromIndex, toIndex), type);
+ }
+ }
+@@ -2617,7 +2617,7 @@
+ public static <K, V> Map<K, V> checkedMap(Map<K, V> m,
+ Class<K> keyType,
+ Class<V> valueType) {
+- return new CheckedMap<>(m, keyType, valueType);
++ return new CheckedMap<K,V>(m, keyType, valueType);
+ }
+
+
+@@ -2685,14 +2685,15 @@
+ // - protection from malicious t
+ // - correct behavior if t is a concurrent map
+ Object[] entries = t.entrySet().toArray();
+- List<Map.Entry<K,V>> checked = new ArrayList<>(entries.length);
++ List<Map.Entry<K,V>> checked =
++ new ArrayList<Map.Entry<K,V>>(entries.length);
+ for (Object o : entries) {
+ Map.Entry<?,?> e = (Map.Entry<?,?>) o;
+ Object k = e.getKey();
+ Object v = e.getValue();
+ typeCheck(k, v);
+ checked.add(
+- new AbstractMap.SimpleImmutableEntry<>((K) k, (V) v));
++ new AbstractMap.SimpleImmutableEntry<K,V>((K) k, (V) v));
+ }
+ for (Map.Entry<K,V> e : checked)
+ m.put(e.getKey(), e.getValue());
+@@ -2702,7 +2703,7 @@
+
+ public Set<Map.Entry<K,V>> entrySet() {
+ if (entrySet==null)
+- entrySet = new CheckedEntrySet<>(m.entrySet(), valueType);
++ entrySet = new CheckedEntrySet<K,V>(m.entrySet(), valueType);
+ return entrySet;
+ }
+
+@@ -2817,7 +2818,7 @@
+ if (!(o instanceof Map.Entry))
+ return false;
+ return s.remove(new AbstractMap.SimpleImmutableEntry
+- <>((Map.Entry<?,?>)o));
++ <Object, Object>((Map.Entry<?,?>)o));
+ }
+
+ public boolean removeAll(Collection<?> c) {
+@@ -2850,7 +2851,7 @@
+
+ static <K,V,T> CheckedEntry<K,V,T> checkedEntry(Map.Entry<K,V> e,
+ Class<T> valueType) {
+- return new CheckedEntry<>(e, valueType);
++ return new CheckedEntry<K,V,T>(e, valueType);
+ }
+
+ /**
+@@ -2891,7 +2892,7 @@
+ if (!(o instanceof Map.Entry))
+ return false;
+ return e.equals(new AbstractMap.SimpleImmutableEntry
+- <>((Map.Entry<?,?>)o));
++ <Object, Object>((Map.Entry<?,?>)o));
+ }
+ }
+ }
+@@ -2934,7 +2935,7 @@
+ public static <K,V> SortedMap<K,V> checkedSortedMap(SortedMap<K, V> m,
+ Class<K> keyType,
+ Class<V> valueType) {
+- return new CheckedSortedMap<>(m, keyType, valueType);
++ return new CheckedSortedMap<K,V>(m, keyType, valueType);
+ }
+
+ /**
+@@ -3000,7 +3001,7 @@
+
+ private static class EmptyIterator<E> implements Iterator<E> {
+ static final EmptyIterator<Object> EMPTY_ITERATOR
+- = new EmptyIterator<>();
++ = new EmptyIterator<Object>();
+
+ public boolean hasNext() { return false; }
+ public E next() { throw new NoSuchElementException(); }
+@@ -3049,7 +3050,7 @@
+ implements ListIterator<E>
+ {
+ static final EmptyListIterator<Object> EMPTY_ITERATOR
+- = new EmptyListIterator<>();
++ = new EmptyListIterator<Object>();
+
+ public boolean hasPrevious() { return false; }
+ public E previous() { throw new NoSuchElementException(); }
+@@ -3085,7 +3086,7 @@
+
+ private static class EmptyEnumeration<E> implements Enumeration<E> {
+ static final EmptyEnumeration<Object> EMPTY_ENUMERATION
+- = new EmptyEnumeration<>();
++ = new EmptyEnumeration<Object>();
+
+ public boolean hasMoreElements() { return false; }
+ public E nextElement() { throw new NoSuchElementException(); }
+@@ -3097,7 +3098,7 @@
+ * @see #emptySet()
+ */
+ @SuppressWarnings("unchecked")
+- public static final Set EMPTY_SET = new EmptySet<>();
++ public static final Set EMPTY_SET = new EmptySet<Object>();
+
+ /**
+ * Returns the empty set (immutable). This set is serializable.
+@@ -3157,7 +3158,7 @@
+ * @see #emptyList()
+ */
+ @SuppressWarnings("unchecked")
+- public static final List EMPTY_LIST = new EmptyList<>();
++ public static final List EMPTY_LIST = new EmptyList<Object>();
+
+ /**
+ * Returns the empty list (immutable). This list is serializable.
+@@ -3231,7 +3232,7 @@
+ * @since 1.3
+ */
+ @SuppressWarnings("unchecked")
+- public static final Map EMPTY_MAP = new EmptyMap<>();
++ public static final Map EMPTY_MAP = new EmptyMap<Object,Object>();
+
+ /**
+ * Returns the empty map (immutable). This map is serializable.
+@@ -3293,7 +3294,7 @@
+ * @return an immutable set containing only the specified object.
+ */
+ public static <T> Set<T> singleton(T o) {
+- return new SingletonSet<>(o);
++ return new SingletonSet<T>(o);
+ }
+
+ static <E> Iterator<E> singletonIterator(final E e) {
+@@ -3346,7 +3347,7 @@
+ * @since 1.3
+ */
+ public static <T> List<T> singletonList(T o) {
+- return new SingletonList<>(o);
++ return new SingletonList<T>(o);
+ }
+
+ /**
+@@ -3388,7 +3389,7 @@
+ * @since 1.3
+ */
+ public static <K,V> Map<K,V> singletonMap(K key, V value) {
+- return new SingletonMap<>(key, value);
++ return new SingletonMap<K,V>(key, value);
+ }
+
+ /**
+@@ -3430,7 +3431,7 @@
+ public Set<Map.Entry<K,V>> entrySet() {
+ if (entrySet==null)
+ entrySet = Collections.<Map.Entry<K,V>>singleton(
+- new SimpleImmutableEntry<>(k, v));
++ new SimpleImmutableEntry<K,V>(k, v));
+ return entrySet;
+ }
+
+@@ -3462,7 +3463,7 @@
+ public static <T> List<T> nCopies(int n, T o) {
+ if (n < 0)
+ throw new IllegalArgumentException("List length = " + n);
+- return new CopiesList<>(n, o);
++ return new CopiesList<T>(n, o);
+ }
+
+ /**
+@@ -3536,7 +3537,7 @@
+ if (fromIndex > toIndex)
+ throw new IllegalArgumentException("fromIndex(" + fromIndex +
+ ") > toIndex(" + toIndex + ")");
+- return new CopiesList<>(toIndex - fromIndex, element);
++ return new CopiesList<E>(toIndex - fromIndex, element);
+ }
+ }
+
+@@ -3604,7 +3605,7 @@
+ if (cmp instanceof ReverseComparator2)
+ return ((ReverseComparator2<T>)cmp).cmp;
+
+- return new ReverseComparator2<>(cmp);
++ return new ReverseComparator2<T>(cmp);
+ }
+
+ /**
+@@ -3683,7 +3684,7 @@
+ * @see ArrayList
+ */
+ public static <T> ArrayList<T> list(Enumeration<T> e) {
+- ArrayList<T> l = new ArrayList<>();
++ ArrayList<T> l = new ArrayList<T>();
+ while (e.hasMoreElements())
+ l.add(e.nextElement());
+ return l;
+@@ -3876,7 +3877,7 @@
+ * @since 1.6
+ */
+ public static <E> Set<E> newSetFromMap(Map<E, Boolean> map) {
+- return new SetFromMap<>(map);
++ return new SetFromMap<E>(map);
+ }
+
+ /**
+@@ -3940,7 +3941,7 @@
+ * @since 1.6
+ */
+ public static <T> Queue<T> asLifoQueue(Deque<T> deque) {
+- return new AsLIFOQueue<>(deque);
++ return new AsLIFOQueue<T>(deque);
+ }
+
+ /**
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/util/EnumMap.java openjdk-boot/jdk/src/share/classes/java/util/EnumMap.java
+--- openjdk-boot.orig/jdk/src/share/classes/java/util/EnumMap.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/util/EnumMap.java 2013-04-17 14:53:25.343552325 +0100
+@@ -508,7 +508,7 @@
+ int j = 0;
+ for (int i = 0; i < vals.length; i++)
+ if (vals[i] != null)
+- a[j++] = new AbstractMap.SimpleEntry<>(
++ a[j++] = new AbstractMap.SimpleEntry<K,V>(
+ keyUniverse[i], unmaskNull(vals[i]));
+ return a;
+ }
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/util/EnumSet.java openjdk-boot/jdk/src/share/classes/java/util/EnumSet.java
+--- openjdk-boot.orig/jdk/src/share/classes/java/util/EnumSet.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/util/EnumSet.java 2013-04-17 14:53:25.343552325 +0100
+@@ -110,9 +110,9 @@
+ throw new ClassCastException(elementType + " not an enum");
+
+ if (universe.length <= 64)
+- return new RegularEnumSet<>(elementType, universe);
++ return new RegularEnumSet<E>(elementType, universe);
+ else
+- return new JumboEnumSet<>(elementType, universe);
++ return new JumboEnumSet<E>(elementType, universe);
+ }
+
+ /**
+@@ -431,7 +431,7 @@
+ }
+
+ Object writeReplace() {
+- return new SerializationProxy<>(this);
++ return new SerializationProxy<E>(this);
+ }
+
+ // readObject method for the serialization proxy pattern
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/util/Formatter.java openjdk-boot/jdk/src/share/classes/java/util/Formatter.java
+--- openjdk-boot.orig/jdk/src/share/classes/java/util/Formatter.java 2013-04-17 14:52:22.398546663 +0100
++++ openjdk-boot/jdk/src/share/classes/java/util/Formatter.java 2013-04-17 14:53:25.343552325 +0100
+@@ -2514,7 +2514,7 @@
+ * Finds format specifiers in the format string.
+ */
+ private FormatString[] parse(String s) {
+- ArrayList<FormatString> al = new ArrayList<>();
++ ArrayList<FormatString> al = new ArrayList<FormatString>();
+ Matcher m = fsPattern.matcher(s);
+ for (int i = 0, len = s.length(); i < len; ) {
+ if (m.find(i)) {
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/util/HashMap.java openjdk-boot/jdk/src/share/classes/java/util/HashMap.java
+--- openjdk-boot.orig/jdk/src/share/classes/java/util/HashMap.java 2013-04-17 14:52:22.402546726 +0100
++++ openjdk-boot/jdk/src/share/classes/java/util/HashMap.java 2013-04-17 14:53:25.347552389 +0100
+@@ -868,7 +868,7 @@
+ */
+ void createEntry(int hash, K key, V value, int bucketIndex) {
+ Entry<K,V> e = table[bucketIndex];
+- table[bucketIndex] = new Entry<>(hash, key, value, e);
++ table[bucketIndex] = new Entry<K,V>(hash, key, value, e);
+ size++;
+ }
+
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/util/HashSet.java openjdk-boot/jdk/src/share/classes/java/util/HashSet.java
+--- openjdk-boot.orig/jdk/src/share/classes/java/util/HashSet.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/util/HashSet.java 2013-04-17 14:53:25.347552389 +0100
+@@ -100,7 +100,7 @@
+ * default initial capacity (16) and load factor (0.75).
+ */
+ public HashSet() {
+- map = new HashMap<>();
++ map = new HashMap<E,Object>();
+ }
+
+ /**
+@@ -113,7 +113,7 @@
+ * @throws NullPointerException if the specified collection is null
+ */
+ public HashSet(Collection<? extends E> c) {
+- map = new HashMap<>(Math.max((int) (c.size()/.75f) + 1, 16));
++ map = new HashMap<E,Object>(Math.max((int) (c.size()/.75f) + 1, 16));
+ addAll(c);
+ }
+
+@@ -127,7 +127,7 @@
+ * than zero, or if the load factor is nonpositive
+ */
+ public HashSet(int initialCapacity, float loadFactor) {
+- map = new HashMap<>(initialCapacity, loadFactor);
++ map = new HashMap<E,Object>(initialCapacity, loadFactor);
+ }
+
+ /**
+@@ -139,7 +139,7 @@
+ * than zero
+ */
+ public HashSet(int initialCapacity) {
+- map = new HashMap<>(initialCapacity);
++ map = new HashMap<E,Object>(initialCapacity);
+ }
+
+ /**
+@@ -156,7 +156,7 @@
+ * than zero, or if the load factor is nonpositive
+ */
+ HashSet(int initialCapacity, float loadFactor, boolean dummy) {
+- map = new LinkedHashMap<>(initialCapacity, loadFactor);
++ map = new LinkedHashMap<E,Object>(initialCapacity, loadFactor);
+ }
+
+ /**
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/util/Hashtable.java openjdk-boot/jdk/src/share/classes/java/util/Hashtable.java
+--- openjdk-boot.orig/jdk/src/share/classes/java/util/Hashtable.java 2013-04-17 14:52:22.402546726 +0100
++++ openjdk-boot/jdk/src/share/classes/java/util/Hashtable.java 2013-04-17 14:53:25.347552389 +0100
+@@ -568,7 +568,7 @@
+
+ // Creates the new entry.
+ Entry<K,V> e = tab[index];
+- tab[index] = new Entry<>(hash, key, value, e);
++ tab[index] = new Entry<K,V>(hash, key, value, e);
+ count++;
+ return null;
+ }
+@@ -692,7 +692,7 @@
+ if (count == 0) {
+ return Collections.emptyEnumeration();
+ } else {
+- return new Enumerator<>(type, false);
++ return new Enumerator<T>(type, false);
+ }
+ }
+
+@@ -700,7 +700,7 @@
+ if (count == 0) {
+ return Collections.emptyIterator();
+ } else {
+- return new Enumerator<>(type, true);
++ return new Enumerator<T>(type, true);
+ }
+ }
+
+@@ -978,7 +978,7 @@
+
+ while (entry != null) {
+ entryStack =
+- new Entry<>(0, entry.key, entry.value, entryStack);
++ new Entry<K,V>(0, entry.key, entry.value, entryStack);
+ entry = entry.next;
+ }
+ }
+@@ -1063,7 +1063,7 @@
+ }
+ // Creates the new entry.
+ Entry<K,V> e = tab[index];
+- tab[index] = new Entry<>(hash, key, value, e);
++ tab[index] = new Entry<K,V>(hash, key, value, e);
+ count++;
+ }
+
+@@ -1084,7 +1084,7 @@
+ }
+
+ protected Object clone() {
+- return new Entry<>(hash, key, value,
++ return new Entry<K,V>(hash, key, value,
+ (next==null ? null : (Entry<K,V>) next.clone()));
+ }
+
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/util/IdentityHashMap.java openjdk-boot/jdk/src/share/classes/java/util/IdentityHashMap.java
+--- openjdk-boot.orig/jdk/src/share/classes/java/util/IdentityHashMap.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/util/IdentityHashMap.java 2013-04-17 14:53:25.351552453 +0100
+@@ -1145,7 +1145,7 @@
+ Object[] result = new Object[size];
+ Iterator<Map.Entry<K,V>> it = iterator();
+ for (int i = 0; i < size; i++)
+- result[i] = new AbstractMap.SimpleEntry<>(it.next());
++ result[i] = new AbstractMap.SimpleEntry<K,V>(it.next());
+ return result;
+ }
+
+@@ -1157,7 +1157,7 @@
+ .newInstance(a.getClass().getComponentType(), size);
+ Iterator<Map.Entry<K,V>> it = iterator();
+ for (int i = 0; i < size; i++)
+- a[i] = (T) new AbstractMap.SimpleEntry<>(it.next());
++ a[i] = (T) new AbstractMap.SimpleEntry<K,V>(it.next());
+ if (a.length > size)
+ a[size] = null;
+ return a;
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/util/JumboEnumSet.java openjdk-boot/jdk/src/share/classes/java/util/JumboEnumSet.java
+--- openjdk-boot.orig/jdk/src/share/classes/java/util/JumboEnumSet.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/util/JumboEnumSet.java 2013-04-17 14:53:25.351552453 +0100
+@@ -91,7 +91,7 @@
+ * @return an iterator over the elements contained in this set
+ */
+ public Iterator<E> iterator() {
+- return new EnumSetIterator<>();
++ return new EnumSetIterator<E>();
+ }
+
+ private class EnumSetIterator<E extends Enum<E>> implements Iterator<E> {
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/util/LinkedHashMap.java openjdk-boot/jdk/src/share/classes/java/util/LinkedHashMap.java
+--- openjdk-boot.orig/jdk/src/share/classes/java/util/LinkedHashMap.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/util/LinkedHashMap.java 2013-04-17 14:53:25.351552453 +0100
+@@ -238,7 +238,7 @@
+ */
+ @Override
+ void init() {
+- header = new Entry<>(-1, null, null, null);
++ header = new Entry<K,V>(-1, null, null, null);
+ header.before = header.after = header;
+ }
+
+@@ -439,7 +439,7 @@
+ */
+ void createEntry(int hash, K key, V value, int bucketIndex) {
+ HashMap.Entry<K,V> old = table[bucketIndex];
+- Entry<K,V> e = new Entry<>(hash, key, value, old);
++ Entry<K,V> e = new Entry<K,V>(hash, key, value, old);
+ table[bucketIndex] = e;
+ e.addBefore(header);
+ size++;
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/util/LinkedList.java openjdk-boot/jdk/src/share/classes/java/util/LinkedList.java
+--- openjdk-boot.orig/jdk/src/share/classes/java/util/LinkedList.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/util/LinkedList.java 2013-04-17 14:53:25.351552453 +0100
+@@ -122,7 +122,7 @@
+ */
+ private void linkFirst(E e) {
+ final Node<E> f = first;
+- final Node<E> newNode = new Node<>(null, e, f);
++ final Node<E> newNode = new Node<E>(null, e, f);
+ first = newNode;
+ if (f == null)
+ last = newNode;
+@@ -137,7 +137,7 @@
+ */
+ void linkLast(E e) {
+ final Node<E> l = last;
+- final Node<E> newNode = new Node<>(l, e, null);
++ final Node<E> newNode = new Node<E>(l, e, null);
+ last = newNode;
+ if (l == null)
+ first = newNode;
+@@ -153,7 +153,7 @@
+ void linkBefore(E e, Node<E> succ) {
+ // assert succ != null;
+ final Node<E> pred = succ.prev;
+- final Node<E> newNode = new Node<>(pred, e, succ);
++ final Node<E> newNode = new Node<E>(pred, e, succ);
+ succ.prev = newNode;
+ if (pred == null)
+ first = newNode;
+@@ -419,7 +419,7 @@
+
+ for (Object o : a) {
+ @SuppressWarnings("unchecked") E e = (E) o;
+- Node<E> newNode = new Node<>(pred, e, null);
++ Node<E> newNode = new Node<E>(pred, e, null);
+ if (pred == null)
+ first = newNode;
+ else
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/util/ListResourceBundle.java openjdk-boot/jdk/src/share/classes/java/util/ListResourceBundle.java
+--- openjdk-boot.orig/jdk/src/share/classes/java/util/ListResourceBundle.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/util/ListResourceBundle.java 2013-04-17 14:53:25.351552453 +0100
+@@ -187,7 +187,7 @@
+ return;
+
+ Object[][] contents = getContents();
+- HashMap<String,Object> temp = new HashMap<>(contents.length);
++ HashMap<String,Object> temp = new HashMap<String,Object>(contents.length);
+ for (int i = 0; i < contents.length; ++i) {
+ // key must be non-null String, value must be non-null
+ String key = (String) contents[i][0];
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/util/Locale.java openjdk-boot/jdk/src/share/classes/java/util/Locale.java
+--- openjdk-boot.orig/jdk/src/share/classes/java/util/Locale.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/util/Locale.java 2013-04-17 14:53:25.351552453 +0100
+@@ -1793,7 +1793,7 @@
+ return formatList(variantNames, listPattern, listCompositionPattern);
+ }
+ }
+- ArrayList<String> names = new ArrayList<>(4);
++ ArrayList<String> names = new ArrayList<String>(4);
+ if (languageName.length() != 0) {
+ names.add(languageName);
+ }
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/util/logging/FileHandler.java openjdk-boot/jdk/src/share/classes/java/util/logging/FileHandler.java
+--- openjdk-boot.orig/jdk/src/share/classes/java/util/logging/FileHandler.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/util/logging/FileHandler.java 2013-04-17 14:53:25.351552453 +0100
+@@ -127,7 +127,7 @@
+ private FileOutputStream lockStream;
+ private File files[];
+ private static final int MAX_LOCKS = 100;
+- private static java.util.HashMap<String, String> locks = new java.util.HashMap<>();
++ private static java.util.HashMap<String, String> locks = new java.util.HashMap<String, String>();
+
+ // A metered stream is a subclass of OutputStream that
+ // (a) forwards all its output to a target stream
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/util/logging/Level.java openjdk-boot/jdk/src/share/classes/java/util/logging/Level.java
+--- openjdk-boot.orig/jdk/src/share/classes/java/util/logging/Level.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/util/logging/Level.java 2013-04-17 14:53:25.355552517 +0100
+@@ -458,8 +458,8 @@
+ // were final, the following KnownLevel implementation can be removed.
+ // Future API change should take this into consideration.
+ static final class KnownLevel {
+- private static Map<String, List<KnownLevel>> nameToLevels = new HashMap<>();
+- private static Map<Integer, List<KnownLevel>> intToLevels = new HashMap<>();
++ private static Map<String, List<KnownLevel>> nameToLevels = new HashMap<String, List<KnownLevel>>();
++ private static Map<Integer, List<KnownLevel>> intToLevels = new HashMap<Integer, List<KnownLevel>>();
+ final Level levelObject; // instance of Level class or Level subclass
+ final Level mirroredLevel; // instance of Level class
+ KnownLevel(Level l) {
+@@ -477,14 +477,14 @@
+ KnownLevel o = new KnownLevel(l);
+ List<KnownLevel> list = nameToLevels.get(l.name);
+ if (list == null) {
+- list = new ArrayList<>();
++ list = new ArrayList<KnownLevel>();
+ nameToLevels.put(l.name, list);
+ }
+ list.add(o);
+
+ list = intToLevels.get(l.value);
+ if (list == null) {
+- list = new ArrayList<>();
++ list = new ArrayList<KnownLevel>();
+ intToLevels.put(l.value, list);
+ }
+ list.add(o);
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/util/logging/Logger.java openjdk-boot/jdk/src/share/classes/java/util/logging/Logger.java
+--- openjdk-boot.orig/jdk/src/share/classes/java/util/logging/Logger.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/util/logging/Logger.java 2013-04-17 14:53:25.355552517 +0100
+@@ -170,7 +170,7 @@
+ private LogManager manager;
+ private String name;
+ private final CopyOnWriteArrayList<Handler> handlers =
+- new CopyOnWriteArrayList<>();
++ new CopyOnWriteArrayList<Handler>();
+ private String resourceBundleName;
+ private volatile boolean useParentHandlers = true;
+ private volatile Filter filter;
+@@ -1505,7 +1505,7 @@
+ // Set our new parent.
+ parent = newParent;
+ if (parent.kids == null) {
+- parent.kids = new ArrayList<>(2);
++ parent.kids = new ArrayList<LogManager.LoggerWeakRef>(2);
+ }
+ if (ref == null) {
+ // we didn't have a previous parent
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/util/logging/Logging.java openjdk-boot/jdk/src/share/classes/java/util/logging/Logging.java
+--- openjdk-boot.orig/jdk/src/share/classes/java/util/logging/Logging.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/util/logging/Logging.java 2013-04-17 14:53:25.355552517 +0100
+@@ -56,7 +56,7 @@
+
+ public List<String> getLoggerNames() {
+ Enumeration loggers = logManager.getLoggerNames();
+- ArrayList<String> array = new ArrayList<>();
++ ArrayList<String> array = new ArrayList<String>();
+
+ for (; loggers.hasMoreElements();) {
+ array.add((String) loggers.nextElement());
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/util/logging/LogManager.java openjdk-boot/jdk/src/share/classes/java/util/logging/LogManager.java
+--- openjdk-boot.orig/jdk/src/share/classes/java/util/logging/LogManager.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/util/logging/LogManager.java 2013-04-17 14:53:25.355552517 +0100
+@@ -378,7 +378,7 @@
+ }
+
+ private List<LoggerContext> contexts() {
+- List<LoggerContext> cxs = new ArrayList<>();
++ List<LoggerContext> cxs = new ArrayList<LoggerContext>();
+ cxs.add(systemContext);
+ cxs.add(getUserContext());
+ return cxs;
+@@ -471,7 +471,7 @@
+ // added in the user context.
+ static class LoggerContext {
+ // Table of named Loggers that maps names to Loggers.
+- private final Hashtable<String,LoggerWeakRef> namedLoggers = new Hashtable<>();
++ private final Hashtable<String,LoggerWeakRef> namedLoggers = new Hashtable<String,LoggerWeakRef>();
+ // Tree of named Loggers
+ private final LogNode root;
+
+@@ -620,7 +620,7 @@
+ name = "";
+ }
+ if (node.children == null) {
+- node.children = new HashMap<>();
++ node.children = new HashMap<String,LogNode>();
+ }
+ LogNode child = node.children.get(head);
+ if (child == null) {
+@@ -711,7 +711,7 @@
+ // loggerRefQueue holds LoggerWeakRef objects for Logger objects
+ // that have been GC'ed.
+ private final ReferenceQueue<Logger> loggerRefQueue
+- = new ReferenceQueue<>();
++ = new ReferenceQueue<Logger>();
+
+ // Package-level inner class.
+ // Helper class for managing WeakReferences to Logger objects.
+@@ -1053,7 +1053,7 @@
+ }
+ hands = hands.trim();
+ int ix = 0;
+- Vector<String> result = new Vector<>();
++ Vector<String> result = new Vector<String>();
+ while (ix < hands.length()) {
+ int end = ix;
+ while (end < hands.length()) {
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/util/logging/LogRecord.java openjdk-boot/jdk/src/share/classes/java/util/logging/LogRecord.java
+--- openjdk-boot.orig/jdk/src/share/classes/java/util/logging/LogRecord.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/util/logging/LogRecord.java 2013-04-17 14:53:25.355552517 +0100
+@@ -85,7 +85,8 @@
+ private static final AtomicInteger nextThreadId
+ = new AtomicInteger(MIN_SEQUENTIAL_THREAD_ID);
+
+- private static final ThreadLocal<Integer> threadIds = new ThreadLocal<>();
++ private static final ThreadLocal<Integer> threadIds
++ = new ThreadLocal<Integer>();
+
+ /**
+ * @serial Logging message level
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/util/prefs/AbstractPreferences.java openjdk-boot/jdk/src/share/classes/java/util/prefs/AbstractPreferences.java
+--- openjdk-boot.orig/jdk/src/share/classes/java/util/prefs/AbstractPreferences.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/util/prefs/AbstractPreferences.java 2013-04-17 14:53:25.355552517 +0100
+@@ -155,7 +155,8 @@
+ * All known unremoved children of this node. (This "cache" is consulted
+ * prior to calling childSpi() or getChild().
+ */
+- private Map<String, AbstractPreferences> kidCache = new HashMap<>();
++ private Map<String, AbstractPreferences> kidCache
++ = new HashMap<String, AbstractPreferences>();
+
+ /**
+ * This field is used to keep track of whether or not this node has
+@@ -712,7 +713,7 @@
+ if (removed)
+ throw new IllegalStateException("Node has been removed.");
+
+- Set<String> s = new TreeSet<>(kidCache.keySet());
++ Set<String> s = new TreeSet<String>(kidCache.keySet());
+ for (String kid : childrenNamesSpi())
+ s.add(kid);
+ return s.toArray(EMPTY_STRING_ARRAY);
+@@ -1441,7 +1442,8 @@
+ * event delivery from preference activity, greatly simplifying
+ * locking and reducing opportunity for deadlock.
+ */
+- private static final List<EventObject> eventQueue = new LinkedList<>();
++ private static final List<EventObject> eventQueue
++ = new LinkedList<EventObject>();
+
+ /**
+ * These two classes are used to distinguish NodeChangeEvents on
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/util/PriorityQueue.java openjdk-boot/jdk/src/share/classes/java/util/PriorityQueue.java
+--- openjdk-boot.orig/jdk/src/share/classes/java/util/PriorityQueue.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/util/PriorityQueue.java 2013-04-17 14:53:25.355552517 +0100
+@@ -538,7 +538,7 @@
+ cursor--;
+ else {
+ if (forgetMeNot == null)
+- forgetMeNot = new ArrayDeque<>();
++ forgetMeNot = new ArrayDeque<E>();
+ forgetMeNot.add(moved);
+ }
+ } else if (lastRetElt != null) {
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/util/Properties.java openjdk-boot/jdk/src/share/classes/java/util/Properties.java
+--- openjdk-boot.orig/jdk/src/share/classes/java/util/Properties.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/util/Properties.java 2013-04-17 14:53:25.355552517 +0100
+@@ -1010,7 +1010,7 @@
+ * @since 1.6
+ */
+ public Set<String> stringPropertyNames() {
+- Hashtable<String, String> h = new Hashtable<>();
++ Hashtable<String, String> h = new Hashtable<String, String>();
+ enumerateStringProperties(h);
+ return h.keySet();
+ }
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/util/regex/Pattern.java openjdk-boot/jdk/src/share/classes/java/util/regex/Pattern.java
+--- openjdk-boot.orig/jdk/src/share/classes/java/util/regex/Pattern.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/util/regex/Pattern.java 2013-04-17 14:53:25.359552581 +0100
+@@ -321,7 +321,7 @@
+ * <td headers="matches">Nothing, but quotes all characters until <tt>\E</tt></td></tr>
+ * <tr><td valign="top" headers="construct quot"><tt>\E</tt></td>
+ * <td headers="matches">Nothing, but ends quoting started by <tt>\Q</tt></td></tr>
+- * <!-- Metachars: !$()*+.<>?[\]^{|} -->
++ * <!-- Metachars: !$()*+.?[\]^{|} -->
+ *
+ * <tr><th>&nbsp;</th></tr>
+ * <tr align="left"><th colspan="2" id="special">Special constructs (named-capturing and non-capturing)</th></tr>
+@@ -1193,7 +1193,7 @@
+ public String[] split(CharSequence input, int limit) {
+ int index = 0;
+ boolean matchLimited = limit > 0;
+- ArrayList<String> matchList = new ArrayList<>();
++ ArrayList<String> matchList = new ArrayList<String>();
+ Matcher m = matcher(input);
+
+ // Add segments before each match found
+@@ -1695,7 +1695,7 @@
+
+ Map<String, Integer> namedGroups() {
+ if (namedGroups == null)
+- namedGroups = new HashMap<>(2);
++ namedGroups = new HashMap<String, Integer>(2);
+ return namedGroups;
+ }
+
+@@ -5495,7 +5495,7 @@
+ }
+
+ private static final HashMap<String, CharPropertyFactory> map
+- = new HashMap<>();
++ = new HashMap<String, CharPropertyFactory>();
+
+ static {
+ // Unicode character property aliases, defined in
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/util/regex/UnicodeProp.java openjdk-boot/jdk/src/share/classes/java/util/regex/UnicodeProp.java
+--- openjdk-boot.orig/jdk/src/share/classes/java/util/regex/UnicodeProp.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/util/regex/UnicodeProp.java 2013-04-17 14:53:25.359552581 +0100
+@@ -193,8 +193,8 @@
+ }
+ };
+
+- private final static HashMap<String, String> posix = new HashMap<>();
+- private final static HashMap<String, String> aliases = new HashMap<>();
++ private final static HashMap<String, String> posix = new HashMap<String,String>();
++ private final static HashMap<String, String> aliases = new HashMap<String,String>();
+ static {
+ posix.put("ALPHA", "ALPHABETIC");
+ posix.put("LOWER", "LOWERCASE");
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/util/RegularEnumSet.java openjdk-boot/jdk/src/share/classes/java/util/RegularEnumSet.java
+--- openjdk-boot.orig/jdk/src/share/classes/java/util/RegularEnumSet.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/util/RegularEnumSet.java 2013-04-17 14:53:25.359552581 +0100
+@@ -72,7 +72,7 @@
+ * @return an iterator over the elements contained in this set
+ */
+ public Iterator<E> iterator() {
+- return new EnumSetIterator<>();
++ return new EnumSetIterator<E>();
+ }
+
+ private class EnumSetIterator<E extends Enum<E>> implements Iterator<E> {
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/util/ResourceBundle.java openjdk-boot/jdk/src/share/classes/java/util/ResourceBundle.java
+--- openjdk-boot.orig/jdk/src/share/classes/java/util/ResourceBundle.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/util/ResourceBundle.java 2013-04-17 14:53:25.359552581 +0100
+@@ -289,7 +289,7 @@
+ * name for compatibility with some workarounds for bug 4212439.
+ */
+ private static final ConcurrentMap<CacheKey, BundleReference> cacheList
+- = new ConcurrentHashMap<>(INITIAL_CACHE_SIZE);
++ = new ConcurrentHashMap<CacheKey,BundleReference>(INITIAL_CACHE_SIZE);
+
+ /**
+ * Queue for reference objects referring to class loaders or bundles.
+@@ -1754,7 +1754,7 @@
+ * @since 1.6
+ */
+ public Set<String> keySet() {
+- Set<String> keys = new HashSet<>();
++ Set<String> keys = new HashSet<String>();
+ for (ResourceBundle rb = this; rb != null; rb = rb.parent) {
+ keys.addAll(rb.handleKeySet());
+ }
+@@ -1782,7 +1782,7 @@
+ if (keySet == null) {
+ synchronized (this) {
+ if (keySet == null) {
+- Set<String> keys = new HashSet<>();
++ Set<String> keys = new HashSet<String>();
+ Enumeration<String> enumKeys = getKeys();
+ while (enumKeys.hasMoreElements()) {
+ String key = enumKeys.nextElement();
+@@ -2300,7 +2300,7 @@
+ if (baseName == null) {
+ throw new NullPointerException();
+ }
+- return new ArrayList<>(CANDIDATES_CACHE.get(locale.getBaseLocale()));
++ return new ArrayList<Locale>(CANDIDATES_CACHE.get(locale.getBaseLocale()));
+ }
+
+ private static final CandidateListCache CANDIDATES_CACHE = new CandidateListCache();
+@@ -2326,7 +2326,7 @@
+ if (language.equals("nb") || isNorwegianBokmal) {
+ List<Locale> tmpList = getDefaultList("nb", script, region, variant);
+ // Insert a locale replacing "nb" with "no" for every list entry
+- List<Locale> bokmalList = new LinkedList<>();
++ List<Locale> bokmalList = new LinkedList<Locale>();
+ for (Locale l : tmpList) {
+ bokmalList.add(l);
+ if (l.getLanguage().length() == 0) {
+@@ -2373,7 +2373,7 @@
+ List<String> variants = null;
+
+ if (variant.length() > 0) {
+- variants = new LinkedList<>();
++ variants = new LinkedList<String>();
+ int idx = variant.length();
+ while (idx != -1) {
+ variants.add(variant.substring(0, idx));
+@@ -2381,7 +2381,7 @@
+ }
+ }
+
+- List<Locale> list = new LinkedList<>();
++ List<Locale> list = new LinkedList<Locale>();
+
+ if (variants != null) {
+ for (String v : variants) {
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/util/ServiceLoader.java openjdk-boot/jdk/src/share/classes/java/util/ServiceLoader.java
+--- openjdk-boot.orig/jdk/src/share/classes/java/util/ServiceLoader.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/util/ServiceLoader.java 2013-04-17 14:53:25.363552645 +0100
+@@ -191,7 +191,7 @@
+ private ClassLoader loader;
+
+ // Cached providers, in instantiation order
+- private LinkedHashMap<String,S> providers = new LinkedHashMap<>();
++ private LinkedHashMap<String,S> providers = new LinkedHashMap<String,S>();
+
+ // The current lazy-lookup iterator
+ private LazyIterator lookupIterator;
+@@ -291,7 +291,7 @@
+ {
+ InputStream in = null;
+ BufferedReader r = null;
+- ArrayList<String> names = new ArrayList<>();
++ ArrayList<String> names = new ArrayList<String>();
+ try {
+ in = u.openStream();
+ r = new BufferedReader(new InputStreamReader(in, "utf-8"));
+@@ -470,7 +470,7 @@
+ public static <S> ServiceLoader<S> load(Class<S> service,
+ ClassLoader loader)
+ {
+- return new ServiceLoader<>(service, loader);
++ return new ServiceLoader<S>(service, loader);
+ }
+
+ /**
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/util/TimSort.java openjdk-boot/jdk/src/share/classes/java/util/TimSort.java
+--- openjdk-boot.orig/jdk/src/share/classes/java/util/TimSort.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/util/TimSort.java 2013-04-17 14:53:25.363552645 +0100
+@@ -196,7 +196,7 @@
+ * extending short natural runs to minRun elements, and merging runs
+ * to maintain stack invariant.
+ */
+- TimSort<T> ts = new TimSort<>(a, c);
++ TimSort<T> ts = new TimSort<T>(a, c);
+ int minRun = minRunLength(nRemaining);
+ do {
+ // Identify next run
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/util/TreeMap.java openjdk-boot/jdk/src/share/classes/java/util/TreeMap.java
+--- openjdk-boot.orig/jdk/src/share/classes/java/util/TreeMap.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/util/TreeMap.java 2013-04-17 14:53:25.363552645 +0100
+@@ -530,7 +530,7 @@
+ if (t == null) {
+ compare(key, key); // type (and possibly null) check
+
+- root = new Entry<>(key, value, null);
++ root = new Entry<K,V>(key, value, null);
+ size = 1;
+ modCount++;
+ return null;
+@@ -566,7 +566,7 @@
+ return t.setValue(value);
+ } while (t != null);
+ }
+- Entry<K,V> e = new Entry<>(key, value, parent);
++ Entry<K,V> e = new Entry<K,V>(key, value, parent);
+ if (cmp < 0)
+ parent.left = e;
+ else
+@@ -1066,14 +1066,14 @@
+ }
+ public NavigableSet<E> subSet(E fromElement, boolean fromInclusive,
+ E toElement, boolean toInclusive) {
+- return new KeySet<>(m.subMap(fromElement, fromInclusive,
++ return new KeySet<E>(m.subMap(fromElement, fromInclusive,
+ toElement, toInclusive));
+ }
+ public NavigableSet<E> headSet(E toElement, boolean inclusive) {
+- return new KeySet<>(m.headMap(toElement, inclusive));
++ return new KeySet<E>(m.headMap(toElement, inclusive));
+ }
+ public NavigableSet<E> tailSet(E fromElement, boolean inclusive) {
+- return new KeySet<>(m.tailMap(fromElement, inclusive));
++ return new KeySet<E>(m.tailMap(fromElement, inclusive));
+ }
+ public SortedSet<E> subSet(E fromElement, E toElement) {
+ return subSet(fromElement, true, toElement, false);
+@@ -1202,7 +1202,7 @@
+ */
+ static <K,V> Map.Entry<K,V> exportEntry(TreeMap.Entry<K,V> e) {
+ return (e == null) ? null :
+- new AbstractMap.SimpleImmutableEntry<>(e);
++ new AbstractMap.SimpleImmutableEntry<K,V>(e);
+ }
+
+ /**
+@@ -2403,7 +2403,7 @@
+ value = (defaultVal != null ? defaultVal : (V) str.readObject());
+ }
+
+- Entry<K,V> middle = new Entry<>(key, value, null);
++ Entry<K,V> middle = new Entry<K,V>(key, value, null);
+
+ // color nodes in non-full bottommost level red
+ if (level == redLevel)
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/util/TreeSet.java openjdk-boot/jdk/src/share/classes/java/util/TreeSet.java
+--- openjdk-boot.orig/jdk/src/share/classes/java/util/TreeSet.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/util/TreeSet.java 2013-04-17 14:53:25.363552645 +0100
+@@ -138,7 +138,7 @@
+ * ordering} of the elements will be used.
+ */
+ public TreeSet(Comparator<? super E> comparator) {
+- this(new TreeMap<>(comparator));
++ this(new TreeMap<E,Object>(comparator));
+ }
+
+ /**
+@@ -195,7 +195,7 @@
+ * @since 1.6
+ */
+ public NavigableSet<E> descendingSet() {
+- return new TreeSet<>(m.descendingMap());
++ return new TreeSet<E>(m.descendingMap());
+ }
+
+ /**
+@@ -322,7 +322,7 @@
+ */
+ public NavigableSet<E> subSet(E fromElement, boolean fromInclusive,
+ E toElement, boolean toInclusive) {
+- return new TreeSet<>(m.subMap(fromElement, fromInclusive,
++ return new TreeSet<E>(m.subMap(fromElement, fromInclusive,
+ toElement, toInclusive));
+ }
+
+@@ -335,7 +335,7 @@
+ * @since 1.6
+ */
+ public NavigableSet<E> headSet(E toElement, boolean inclusive) {
+- return new TreeSet<>(m.headMap(toElement, inclusive));
++ return new TreeSet<E>(m.headMap(toElement, inclusive));
+ }
+
+ /**
+@@ -347,7 +347,7 @@
+ * @since 1.6
+ */
+ public NavigableSet<E> tailSet(E fromElement, boolean inclusive) {
+- return new TreeSet<>(m.tailMap(fromElement, inclusive));
++ return new TreeSet<E>(m.tailMap(fromElement, inclusive));
+ }
+
+ /**
+@@ -477,7 +477,7 @@
+ throw new InternalError();
+ }
+
+- clone.m = new TreeMap<>(m);
++ clone.m = new TreeMap<E,Object>(m);
+ return clone;
+ }
+
+@@ -524,9 +524,9 @@
+ // Create backing TreeMap
+ TreeMap<E,Object> tm;
+ if (c==null)
+- tm = new TreeMap<>();
++ tm = new TreeMap<E,Object>();
+ else
+- tm = new TreeMap<>(c);
++ tm = new TreeMap<E,Object>(c);
+ m = tm;
+
+ // Read in size
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/util/WeakHashMap.java openjdk-boot/jdk/src/share/classes/java/util/WeakHashMap.java
+--- openjdk-boot.orig/jdk/src/share/classes/java/util/WeakHashMap.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/util/WeakHashMap.java 2013-04-17 14:53:25.363552645 +0100
+@@ -171,7 +171,7 @@
+ /**
+ * Reference queue for cleared WeakEntries
+ */
+- private final ReferenceQueue<Object> queue = new ReferenceQueue<>();
++ private final ReferenceQueue<Object> queue = new ReferenceQueue<Object>();
+
+ /**
+ * The number of times this WeakHashMap has been structurally modified.
+@@ -528,7 +528,7 @@
+
+ modCount++;
+ Entry<K,V> e = tab[i];
+- tab[i] = new Entry<>(k, value, queue, h, e);
++ tab[i] = new Entry<K,V>(k, value, queue, h, e);
+ if (++size >= threshold)
+ resize(tab.length * 2);
+ return null;
+@@ -1051,9 +1051,10 @@
+ }
+
+ private List<Map.Entry<K,V>> deepCopy() {
+- List<Map.Entry<K,V>> list = new ArrayList<>(size());
++ List<Map.Entry<K,V>> list =
++ new ArrayList<Map.Entry<K,V>>(size());
+ for (Map.Entry<K,V> e : this)
+- list.add(new AbstractMap.SimpleEntry<>(e));
++ list.add(new AbstractMap.SimpleEntry<K,V>(e));
+ return list;
+ }
+
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/util/zip/ZipFile.java openjdk-boot/jdk/src/share/classes/java/util/zip/ZipFile.java
+--- openjdk-boot.orig/jdk/src/share/classes/java/util/zip/ZipFile.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/util/zip/ZipFile.java 2013-04-17 14:53:25.363552645 +0100
+@@ -319,7 +319,7 @@
+
+ // the outstanding inputstreams that need to be closed,
+ // mapped to the inflater objects they use.
+- private final Map<InputStream, Inflater> streams = new WeakHashMap<>();
++ private final Map<InputStream, Inflater> streams = new WeakHashMap<InputStream,Inflater>();
+
+ /**
+ * Returns an input stream for reading the contents of the specified
+@@ -461,7 +461,7 @@
+ }
+
+ // List of available Inflater objects for decompression
+- private Deque<Inflater> inflaterCache = new ArrayDeque<>();
++ private Deque<Inflater> inflaterCache = new ArrayDeque<Inflater>();
+
+ /**
+ * Returns the path name of the ZIP file.
+@@ -577,7 +577,7 @@
+ // Close streams, release their inflaters
+ synchronized (streams) {
+ if (false == streams.isEmpty()) {
+- Map<InputStream, Inflater> copy = new HashMap<>(streams);
++ Map<InputStream, Inflater> copy = new HashMap<InputStream,Inflater>(streams);
+ streams.clear();
+ for (Map.Entry<InputStream, Inflater> e : copy.entrySet()) {
+ e.getKey().close();
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/util/zip/ZipOutputStream.java openjdk-boot/jdk/src/share/classes/java/util/zip/ZipOutputStream.java
+--- openjdk-boot.orig/jdk/src/share/classes/java/util/zip/ZipOutputStream.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/util/zip/ZipOutputStream.java 2013-04-17 14:53:25.363552645 +0100
+@@ -53,8 +53,8 @@
+ }
+
+ private XEntry current;
+- private Vector<XEntry> xentries = new Vector<>();
+- private HashSet<String> names = new HashSet<>();
++ private Vector<XEntry> xentries = new Vector<XEntry>();
++ private HashSet<String> names = new HashSet<String>();
+ private CRC32 crc = new CRC32();
+ private long written = 0;
+ private long locoff = 0;
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/javax/crypto/CryptoPermissions.java openjdk-boot/jdk/src/share/classes/javax/crypto/CryptoPermissions.java
+--- openjdk-boot.orig/jdk/src/share/classes/javax/crypto/CryptoPermissions.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/javax/crypto/CryptoPermissions.java 2013-04-17 14:53:25.367552708 +0100
+@@ -84,7 +84,7 @@
+ * no CryptoPermissionCollections.
+ */
+ CryptoPermissions() {
+- perms = new ConcurrentHashMap<>(7);
++ perms = new ConcurrentHashMap<String,PermissionCollection>(7);
+ }
+
+ /**
+@@ -440,15 +440,15 @@
+ (Hashtable<String,PermissionCollection>)
+ (fields.get("perms", null));
+ if (permTable != null) {
+- perms = new ConcurrentHashMap<>(permTable);
++ perms = new ConcurrentHashMap<String,PermissionCollection>(permTable);
+ } else {
+- perms = new ConcurrentHashMap<>();
++ perms = new ConcurrentHashMap<String,PermissionCollection>();
+ }
+ }
+
+ private void writeObject(ObjectOutputStream s) throws IOException {
+ Hashtable<String,PermissionCollection> permTable =
+- new Hashtable<>(perms);
++ new Hashtable<String,PermissionCollection>(perms);
+ ObjectOutputStream.PutField fields = s.putFields();
+ fields.put("perms", permTable);
+ s.writeFields();
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/javax/security/auth/kerberos/DelegationPermission.java openjdk-boot/jdk/src/share/classes/javax/security/auth/kerberos/DelegationPermission.java
+--- openjdk-boot.orig/jdk/src/share/classes/javax/security/auth/kerberos/DelegationPermission.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/javax/security/auth/kerberos/DelegationPermission.java 2013-04-17 14:53:25.367552708 +0100
+@@ -361,7 +361,7 @@
+ // Don't call out.defaultWriteObject()
+
+ // Write out Vector
+- Vector<Permission> permissions = new Vector<>(perms.size());
++ Vector<Permission> permissions = new Vector<Permission>(perms.size());
+
+ synchronized (this) {
+ permissions.addAll(perms);
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/javax/security/auth/kerberos/ServicePermission.java openjdk-boot/jdk/src/share/classes/javax/security/auth/kerberos/ServicePermission.java
+--- openjdk-boot.orig/jdk/src/share/classes/javax/security/auth/kerberos/ServicePermission.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/javax/security/auth/kerberos/ServicePermission.java 2013-04-17 14:53:25.367552708 +0100
+@@ -569,7 +569,7 @@
+ // Don't call out.defaultWriteObject()
+
+ // Write out Vector
+- Vector<Permission> permissions = new Vector<>(perms.size());
++ Vector<Permission> permissions = new Vector<Permission>(perms.size());
+
+ synchronized (this) {
+ permissions.addAll(perms);
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/javax/security/auth/PrivateCredentialPermission.java openjdk-boot/jdk/src/share/classes/javax/security/auth/PrivateCredentialPermission.java
+--- openjdk-boot.orig/jdk/src/share/classes/javax/security/auth/PrivateCredentialPermission.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/javax/security/auth/PrivateCredentialPermission.java 2013-04-17 14:53:25.367552708 +0100
+@@ -329,7 +329,7 @@
+ throw new IllegalArgumentException("invalid empty name");
+ }
+
+- ArrayList<CredOwner> pList = new ArrayList<>();
++ ArrayList<CredOwner> pList = new ArrayList<CredOwner>();
+ StringTokenizer tokenizer = new StringTokenizer(name, " ", true);
+ String principalClass = null;
+ String principalName = null;
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/javax/security/auth/SubjectDomainCombiner.java openjdk-boot/jdk/src/share/classes/javax/security/auth/SubjectDomainCombiner.java
+--- openjdk-boot.orig/jdk/src/share/classes/javax/security/auth/SubjectDomainCombiner.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/javax/security/auth/SubjectDomainCombiner.java 2013-04-17 14:53:25.367552708 +0100
+@@ -48,7 +48,7 @@
+
+ private Subject subject;
+ private WeakKeyValueMap<ProtectionDomain, ProtectionDomain> cachedPDs =
+- new WeakKeyValueMap<>();
++ new WeakKeyValueMap<ProtectionDomain, ProtectionDomain>();
+ private Set<Principal> principalSet;
+ private Principal[] principals;
+
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/invoke/util/ValueConversions.java openjdk-boot/jdk/src/share/classes/sun/invoke/util/ValueConversions.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/invoke/util/ValueConversions.java 2013-04-17 14:52:22.442547366 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/invoke/util/ValueConversions.java 2013-04-17 14:53:25.367552708 +0100
+@@ -59,7 +59,7 @@
+ EnumMap<Wrapper, MethodHandle>[] caches
+ = (EnumMap<Wrapper, MethodHandle>[]) new EnumMap[n]; // unchecked warning expected here
+ for (int i = 0; i < n; i++)
+- caches[i] = new EnumMap<>(Wrapper.class);
++ caches[i] = new EnumMap<Wrapper, MethodHandle>(Wrapper.class);
+ return caches;
+ }
+
+@@ -1013,7 +1013,7 @@
+ Object a8, Object a9)
+ { return makeArray(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9); }
+ private static MethodHandle[] makeArrays() {
+- ArrayList<MethodHandle> mhs = new ArrayList<>();
++ ArrayList<MethodHandle> mhs = new ArrayList<MethodHandle>();
+ for (;;) {
+ MethodHandle mh = findCollector("array", mhs.size(), Object[].class);
+ if (mh == null) break;
+@@ -1059,7 +1059,7 @@
+ Object a8, Object a9)
+ { fillWithArguments(a, pos, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9); return a; }
+ private static MethodHandle[] makeFillArrays() {
+- ArrayList<MethodHandle> mhs = new ArrayList<>();
++ ArrayList<MethodHandle> mhs = new ArrayList<MethodHandle>();
+ mhs.add(null); // there is no empty fill; at least a0 is required
+ for (;;) {
+ MethodHandle mh = findCollector("fillArray", mhs.size(), Object[].class, Object[].class, Integer.class);
+@@ -1214,7 +1214,7 @@
+ Object a8, Object a9)
+ { return makeList(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9); }
+ private static MethodHandle[] makeLists() {
+- ArrayList<MethodHandle> mhs = new ArrayList<>();
++ ArrayList<MethodHandle> mhs = new ArrayList<MethodHandle>();
+ for (;;) {
+ MethodHandle mh = findCollector("list", mhs.size(), List.class);
+ if (mh == null) break;
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/io/CharacterEncoding.java openjdk-boot/jdk/src/share/classes/sun/io/CharacterEncoding.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/io/CharacterEncoding.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/io/CharacterEncoding.java 2013-04-17 14:53:25.367552708 +0100
+@@ -54,7 +54,7 @@
+ private static volatile boolean installedAll;
+
+ static {
+- aliasTable = new HashMap<>(460, 1.0f); /* MDA */
++ aliasTable = new HashMap<String,String>(460, 1.0f); /* MDA */
+
+ aliasTable.put("us-ascii", "ASCII");
+ aliasTable.put("ascii", "ASCII");
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/io/Converters.java openjdk-boot/jdk/src/share/classes/sun/io/Converters.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/io/Converters.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/io/Converters.java 2013-04-17 14:53:25.367552708 +0100
+@@ -120,7 +120,7 @@
+
+ private static Class<?> cache(int type, Object encoding, Class<?> c) {
+ SoftReference<Object[]>[] srs = classCache[type];
+- srs[CACHE_SIZE - 1] = new SoftReference<>(new Object[] { c, encoding });
++ srs[CACHE_SIZE - 1] = new SoftReference<Object[]>(new Object[] { c, encoding });
+ moveToFront(srs, CACHE_SIZE - 1);
+ return c;
+ }
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/launcher/LauncherHelper.java openjdk-boot/jdk/src/share/classes/sun/launcher/LauncherHelper.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/launcher/LauncherHelper.java 2013-04-17 14:52:22.434547238 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/launcher/LauncherHelper.java 2013-04-17 14:53:25.367552708 +0100
+@@ -171,7 +171,7 @@
+ private static void printProperties(PrintStream ostream) {
+ Properties p = System.getProperties();
+ ostream.println(PROP_SETTINGS);
+- List<String> sortedPropertyKeys = new ArrayList<>();
++ List<String> sortedPropertyKeys = new ArrayList<String>();
+ sortedPropertyKeys.addAll(p.stringPropertyNames());
+ Collections.sort(sortedPropertyKeys);
+ for (String x : sortedPropertyKeys) {
+@@ -246,7 +246,7 @@
+ }
+ // Locale does not implement Comparable so we convert it to String
+ // and sort it for pretty printing.
+- Set<String> sortedSet = new TreeSet<>();
++ Set<String> sortedSet = new TreeSet<String>();
+ for (Locale l : tlocales) {
+ sortedSet.add(l.toString());
+ }
+@@ -532,7 +532,7 @@
+ }
+
+ static String[] expandArgs(String[] argArray) {
+- List<StdArg> aList = new ArrayList<>();
++ List<StdArg> aList = new ArrayList<StdArg>();
+ for (String x : argArray) {
+ aList.add(new StdArg(x));
+ }
+@@ -540,7 +540,7 @@
+ }
+
+ static String[] expandArgs(List<StdArg> argList) {
+- ArrayList<String> out = new ArrayList<>();
++ ArrayList<String> out = new ArrayList<String>();
+ if (trace) {
+ System.err.println("Incoming arguments:");
+ }
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/management/ManagementFactoryHelper.java openjdk-boot/jdk/src/share/classes/sun/management/ManagementFactoryHelper.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/management/ManagementFactoryHelper.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/management/ManagementFactoryHelper.java 2013-04-17 14:53:25.367552708 +0100
+@@ -205,7 +205,7 @@
+ private static List<BufferPoolMXBean> bufferPools = null;
+ public static synchronized List<BufferPoolMXBean> getBufferPoolMXBeans() {
+ if (bufferPools == null) {
+- bufferPools = new ArrayList<>(2);
++ bufferPools = new ArrayList<BufferPoolMXBean>(2);
+ bufferPools.add(createBufferPoolMXBean(sun.misc.SharedSecrets.getJavaNioAccess()
+ .getDirectBufferPool()));
+ bufferPools.add(createBufferPoolMXBean(sun.nio.ch.FileChannelImpl
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/net/spi/nameservice/dns/DNSNameService.java openjdk-boot/jdk/src/share/classes/sun/net/spi/nameservice/dns/DNSNameService.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/net/spi/nameservice/dns/DNSNameService.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/net/spi/nameservice/dns/DNSNameService.java 2013-04-17 14:53:25.367552708 +0100
+@@ -52,7 +52,7 @@
+
+ // Per-thread soft cache of the last temporary context
+ private static ThreadLocal<SoftReference<ThreadContext>> contextRef =
+- new ThreadLocal<>();
++ new ThreadLocal<SoftReference<ThreadContext>>();
+
+ // Simple class to encapsulate the temporary context
+ private static class ThreadContext {
+@@ -99,7 +99,7 @@
+
+ // new thread context needs to be created
+ if (thrCtxt == null) {
+- final Hashtable<String,Object> env = new Hashtable<>();
++ final Hashtable<String,Object> env = new Hashtable<String,Object>();
+ env.put("java.naming.factory.initial",
+ "com.sun.jndi.dns.DnsContextFactory");
+
+@@ -165,7 +165,7 @@
+ final String[] ids, int depth)
+ throws UnknownHostException
+ {
+- ArrayList<String> results = new ArrayList<>();
++ ArrayList<String> results = new ArrayList<String>();
+ Attributes attrs;
+
+ // do the query
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/net/www/protocol/http/AuthenticationInfo.java openjdk-boot/jdk/src/share/classes/sun/net/www/protocol/http/AuthenticationInfo.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/net/www/protocol/http/AuthenticationInfo.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/net/www/protocol/http/AuthenticationInfo.java 2013-04-17 14:53:25.367552708 +0100
+@@ -111,7 +111,7 @@
+ * at the same time, then all but the first will block until
+ * the first completes its authentication.
+ */
+- static private HashMap<String,Thread> requests = new HashMap<>();
++ static private HashMap<String,Thread> requests = new HashMap<String,Thread>();
+
+ /* check if a request for this destination is in progress
+ * return false immediately if not. Otherwise block until
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/net/www/protocol/http/HttpURLConnection.java openjdk-boot/jdk/src/share/classes/sun/net/www/protocol/http/HttpURLConnection.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/net/www/protocol/http/HttpURLConnection.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/net/www/protocol/http/HttpURLConnection.java 2013-04-17 14:53:25.367552708 +0100
+@@ -2645,7 +2645,7 @@
+ if (filteredHeaders != null)
+ return filteredHeaders;
+
+- Map<String, List<String>> headers, tmpMap = new HashMap<>();
++ Map<String, List<String>> headers, tmpMap = new HashMap<String, List<String>>();
+
+ if (cachedHeaders != null)
+ headers = cachedHeaders.getHeaders();
+@@ -2654,7 +2654,7 @@
+
+ for (Map.Entry<String, List<String>> e: headers.entrySet()) {
+ String key = e.getKey();
+- List<String> values = e.getValue(), filteredVals = new ArrayList<>();
++ List<String> values = e.getValue(), filteredVals = new ArrayList<String>();
+ for (String value : values) {
+ String fVal = filterHeaderField(key, value);
+ if (fVal != null)
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/net/www/URLConnection.java openjdk-boot/jdk/src/share/classes/sun/net/www/URLConnection.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/net/www/URLConnection.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/net/www/URLConnection.java 2013-04-17 14:53:25.367552708 +0100
+@@ -239,7 +239,7 @@
+ url = null;
+ }
+
+- private static HashMap<String,Void> proxiedHosts = new HashMap<>();
++ private static HashMap<String,Void> proxiedHosts = new HashMap<String,Void>();
+
+ public synchronized static void setProxiedHost(String host) {
+ proxiedHosts.put(host.toLowerCase(), null);
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/nio/cs/AbstractCharsetProvider.java openjdk-boot/jdk/src/share/classes/sun/nio/cs/AbstractCharsetProvider.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/nio/cs/AbstractCharsetProvider.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/nio/cs/AbstractCharsetProvider.java 2013-04-17 14:53:25.367552708 +0100
+@@ -49,22 +49,22 @@
+ /* Maps canonical names to class names
+ */
+ private Map<String,String> classMap
+- = new TreeMap<>(ASCIICaseInsensitiveComparator.CASE_INSENSITIVE_ORDER);
++ = new TreeMap<String,String>(ASCIICaseInsensitiveComparator.CASE_INSENSITIVE_ORDER);
+
+ /* Maps alias names to canonical names
+ */
+ private Map<String,String> aliasMap
+- = new TreeMap<>(ASCIICaseInsensitiveComparator.CASE_INSENSITIVE_ORDER);
++ = new TreeMap<String,String>(ASCIICaseInsensitiveComparator.CASE_INSENSITIVE_ORDER);
+
+ /* Maps canonical names to alias-name arrays
+ */
+ private Map<String,String[]> aliasNameMap
+- = new TreeMap<>(ASCIICaseInsensitiveComparator.CASE_INSENSITIVE_ORDER);
++ = new TreeMap<String,String[]>(ASCIICaseInsensitiveComparator.CASE_INSENSITIVE_ORDER);
+
+ /* Maps canonical names to soft references that hold cached instances
+ */
+ private Map<String,SoftReference<Charset>> cache
+- = new TreeMap<>(ASCIICaseInsensitiveComparator.CASE_INSENSITIVE_ORDER);
++ = new TreeMap<String,SoftReference<Charset>>(ASCIICaseInsensitiveComparator.CASE_INSENSITIVE_ORDER);
+
+ private String packagePrefix;
+
+@@ -167,7 +167,7 @@
+ final ArrayList<String> ks;
+ synchronized (this) {
+ init();
+- ks = new ArrayList<>(classMap.keySet());
++ ks = new ArrayList<String>(classMap.keySet());
+ }
+
+ return new Iterator<Charset>() {
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/nio/fs/AbstractAclFileAttributeView.java openjdk-boot/jdk/src/share/classes/sun/nio/fs/AbstractAclFileAttributeView.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/nio/fs/AbstractAclFileAttributeView.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/nio/fs/AbstractAclFileAttributeView.java 2013-04-17 14:53:25.371552772 +0100
+@@ -84,7 +84,7 @@
+ throw new IllegalArgumentException("'" + name() + ":" +
+ attribute + "' not recognized");
+ }
+- Map<String,Object> result = new HashMap<>(2);
++ Map<String,Object> result = new HashMap<String,Object>(2);
+ if (acl)
+ result.put(ACL_NAME, getAcl());
+ if (owner)
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/nio/fs/AbstractBasicFileAttributeView.java openjdk-boot/jdk/src/share/classes/sun/nio/fs/AbstractBasicFileAttributeView.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/nio/fs/AbstractBasicFileAttributeView.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/nio/fs/AbstractBasicFileAttributeView.java 2013-04-17 14:53:25.371552772 +0100
+@@ -89,8 +89,8 @@
+ * Used to build a map of attribute name/values.
+ */
+ static class AttributesBuilder {
+- private Set<String> names = new HashSet<>();
+- private Map<String,Object> map = new HashMap<>();
++ private Set<String> names = new HashSet<String>();
++ private Map<String,Object> map = new HashMap<String,Object>();
+ private boolean copyAll;
+
+ private AttributesBuilder(Set<String> allowed, String[] requested) {
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/nio/fs/AbstractPoller.java openjdk-boot/jdk/src/share/classes/sun/nio/fs/AbstractPoller.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/nio/fs/AbstractPoller.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/nio/fs/AbstractPoller.java 2013-04-17 14:53:25.371552772 +0100
+@@ -102,7 +102,7 @@
+ throw new NullPointerException();
+ if (events.length == 0)
+ throw new IllegalArgumentException("No events to register");
+- Set<WatchEvent.Kind<?>> eventSet = new HashSet<>(events.length);
++ Set<WatchEvent.Kind<?>> eventSet = new HashSet<WatchEvent.Kind<?>>(events.length);
+ for (WatchEvent.Kind<?> event: events) {
+ // standard events
+ if (event == StandardWatchEventKinds.ENTRY_CREATE ||
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/nio/fs/AbstractUserDefinedFileAttributeView.java openjdk-boot/jdk/src/share/classes/sun/nio/fs/AbstractUserDefinedFileAttributeView.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/nio/fs/AbstractUserDefinedFileAttributeView.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/nio/fs/AbstractUserDefinedFileAttributeView.java 2013-04-17 14:53:25.371552772 +0100
+@@ -77,7 +77,7 @@
+ throws IOException
+ {
+ // names of attributes to return
+- List<String> names = new ArrayList<>();
++ List<String> names = new ArrayList<String>();
+ for (String name: attributes) {
+ if (name.equals("*")) {
+ names = list();
+@@ -90,7 +90,7 @@
+ }
+
+ // read each value and return in map
+- Map<String,Object> result = new HashMap<>();
++ Map<String,Object> result = new HashMap<String,Object>();
+ for (String name: names) {
+ int size = size(name);
+ byte[] buf = new byte[size];
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/nio/fs/FileOwnerAttributeViewImpl.java openjdk-boot/jdk/src/share/classes/sun/nio/fs/FileOwnerAttributeViewImpl.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/nio/fs/FileOwnerAttributeViewImpl.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/nio/fs/FileOwnerAttributeViewImpl.java 2013-04-17 14:53:25.371552772 +0100
+@@ -71,7 +71,7 @@
+
+ @Override
+ public Map<String,Object> readAttributes(String[] attributes) throws IOException {
+- Map<String,Object> result = new HashMap<>();
++ Map<String,Object> result = new HashMap<String,Object>();
+ for (String attribute: attributes) {
+ if (attribute.equals("*") || attribute.equals(OWNER_NAME)) {
+ result.put(OWNER_NAME, getOwner());
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/nio/fs/Util.java openjdk-boot/jdk/src/share/classes/sun/nio/fs/Util.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/nio/fs/Util.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/nio/fs/Util.java 2013-04-17 14:53:25.371552772 +0100
+@@ -63,7 +63,7 @@
+ * Returns a Set containing the given elements.
+ */
+ static <E> Set<E> newSet(E... elements) {
+- HashSet<E> set = new HashSet<>();
++ HashSet<E> set = new HashSet<E>();
+ for (E e: elements) {
+ set.add(e);
+ }
+@@ -75,7 +75,7 @@
+ * the given elements.
+ */
+ static <E> Set<E> newSet(Set<E> other, E... elements) {
+- HashSet<E> set = new HashSet<>(other);
++ HashSet<E> set = new HashSet<E>(other);
+ for (E e: elements) {
+ set.add(e);
+ }
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/reflect/generics/parser/SignatureParser.java openjdk-boot/jdk/src/share/classes/sun/reflect/generics/parser/SignatureParser.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/reflect/generics/parser/SignatureParser.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/reflect/generics/parser/SignatureParser.java 2013-04-17 14:53:25.371552772 +0100
+@@ -229,7 +229,7 @@
+ * "<" FormalTypeParameter+ ">"
+ */
+ private FormalTypeParameter[] parseFormalTypeParameters(){
+- List<FormalTypeParameter> ftps = new ArrayList<>(3);
++ List<FormalTypeParameter> ftps = new ArrayList(3);
+ assert(current() == '<'); // should not have been called at all
+ if (current() != '<') { throw error("expected '<'");}
+ advance();
+@@ -308,7 +308,7 @@
+ assert(current() == 'L');
+ if (current() != 'L') { throw error("expected a class type");}
+ advance();
+- List<SimpleClassTypeSignature> scts = new ArrayList<>(5);
++ List<SimpleClassTypeSignature> scts = new ArrayList(5);
+ scts.add(parsePackageNameAndSimpleClassTypeSignature());
+
+ parseClassTypeSignatureSuffix(scts);
+@@ -391,7 +391,7 @@
+ * "<" TypeArgument+ ">"
+ */
+ private TypeArgument[] parseTypeArguments() {
+- List<TypeArgument> tas = new ArrayList<>(3);
++ List<TypeArgument> tas = new ArrayList(3);
+ assert(current() == '<');
+ if (current() != '<') { throw error("expected '<'");}
+ advance();
+@@ -529,7 +529,7 @@
+ * ":" FieldTypeSignature
+ */
+ private FieldTypeSignature[] parseBounds() {
+- List<FieldTypeSignature> fts = new ArrayList<>(3);
++ List<FieldTypeSignature> fts = new ArrayList(3);
+
+ if (current() == ':') {
+ advance();
+@@ -557,7 +557,7 @@
+ * ClassTypeSignature
+ */
+ private ClassTypeSignature[] parseSuperInterfaces() {
+- List<ClassTypeSignature> cts = new ArrayList<>(5);
++ List<ClassTypeSignature> cts = new ArrayList(5);
+ while(current() == 'L') {
+ cts.add(parseClassTypeSignature());
+ }
+@@ -592,7 +592,7 @@
+
+ // TypeSignature*
+ private TypeSignature[] parseZeroOrMoreTypeSignatures() {
+- List<TypeSignature> ts = new ArrayList<>();
++ List<TypeSignature> ts = new ArrayList();
+ boolean stop = false;
+ while (!stop) {
+ switch(current()) {
+@@ -631,7 +631,7 @@
+
+ // ThrowSignature*
+ private FieldTypeSignature[] parseZeroOrMoreThrowsSignatures(){
+- List<FieldTypeSignature> ets = new ArrayList<>(3);
++ List<FieldTypeSignature> ets = new ArrayList(3);
+ while( current() == '^') {
+ ets.add(parseThrowsSignature());
+ }
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/rmi/server/Activation.java openjdk-boot/jdk/src/share/classes/sun/rmi/server/Activation.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/rmi/server/Activation.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/rmi/server/Activation.java 2013-04-17 14:53:25.371552772 +0100
+@@ -150,10 +150,10 @@
+
+ /** maps activation id to its respective group id */
+ private Map<ActivationID,ActivationGroupID> idTable =
+- new ConcurrentHashMap<>();
++ new ConcurrentHashMap<ActivationID,ActivationGroupID>();
+ /** maps group id to its GroupEntry groups */
+ private Map<ActivationGroupID,GroupEntry> groupTable =
+- new ConcurrentHashMap<>();
++ new ConcurrentHashMap<ActivationGroupID,GroupEntry>();
+
+ private byte majorVersion = MAJOR_VERSION;
+ private byte minorVersion = MINOR_VERSION;
+@@ -289,10 +289,10 @@
+ {
+ ois.defaultReadObject();
+ if (! (groupTable instanceof ConcurrentHashMap)) {
+- groupTable = new ConcurrentHashMap<>(groupTable);
++ groupTable = new ConcurrentHashMap<ActivationGroupID,GroupEntry>(groupTable);
+ }
+ if (! (idTable instanceof ConcurrentHashMap)) {
+- idTable = new ConcurrentHashMap<>(idTable);
++ idTable = new ConcurrentHashMap<ActivationID,ActivationGroupID>(idTable);
+ }
+ }
+
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/acl/AclEntryImpl.java openjdk-boot/jdk/src/share/classes/sun/security/acl/AclEntryImpl.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/acl/AclEntryImpl.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/acl/AclEntryImpl.java 2013-04-17 14:53:25.371552772 +0100
+@@ -37,7 +37,7 @@
+ */
+ public class AclEntryImpl implements AclEntry {
+ private Principal user = null;
+- private Vector<Permission> permissionSet = new Vector<>(10, 10);
++ private Vector<Permission> permissionSet = new Vector<Permission>(10, 10);
+ private boolean negative = false;
+
+ /**
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/acl/AclImpl.java openjdk-boot/jdk/src/share/classes/sun/security/acl/AclImpl.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/acl/AclImpl.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/acl/AclImpl.java 2013-04-17 14:53:25.371552772 +0100
+@@ -41,15 +41,15 @@
+ // or principal.
+ //
+ private Hashtable<Principal, AclEntry> allowedUsersTable =
+- new Hashtable<>(23);
++ new Hashtable<Principal,AclEntry>(23);
+ private Hashtable<Principal, AclEntry> allowedGroupsTable =
+- new Hashtable<>(23);
++ new Hashtable<Principal, AclEntry>(23);
+ private Hashtable<Principal, AclEntry> deniedUsersTable =
+- new Hashtable<>(23);
++ new Hashtable<Principal, AclEntry>(23);
+ private Hashtable<Principal, AclEntry> deniedGroupsTable =
+- new Hashtable<>(23);
++ new Hashtable<Principal, AclEntry>(23);
+ private String aclName = null;
+- private Vector<Permission> zeroSet = new Vector<>(1,1);
++ private Vector<Permission> zeroSet = new Vector<Permission>(1,1);
+
+
+ /**
+@@ -294,7 +294,7 @@
+ //
+ private static Enumeration<Permission> union(Enumeration<Permission> e1,
+ Enumeration<Permission> e2) {
+- Vector<Permission> v = new Vector<>(20, 20);
++ Vector<Permission> v = new Vector<Permission>(20, 20);
+
+ while (e1.hasMoreElements())
+ v.addElement(e1.nextElement());
+@@ -313,7 +313,7 @@
+ //
+ private Enumeration<Permission> subtract(Enumeration<Permission> e1,
+ Enumeration<Permission> e2) {
+- Vector<Permission> v = new Vector<>(20, 20);
++ Vector<Permission> v = new Vector<Permission>(20, 20);
+
+ while (e1.hasMoreElements())
+ v.addElement(e1.nextElement());
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/acl/GroupImpl.java openjdk-boot/jdk/src/share/classes/sun/security/acl/GroupImpl.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/acl/GroupImpl.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/acl/GroupImpl.java 2013-04-17 14:53:25.371552772 +0100
+@@ -34,7 +34,7 @@
+ * @author Satish Dharmaraj
+ */
+ public class GroupImpl implements Group {
+- private Vector<Principal> groupMembers = new Vector<>(50, 100);
++ private Vector<Principal> groupMembers = new Vector<Principal>(50, 100);
+ private String group;
+
+ /**
+@@ -131,7 +131,7 @@
+ if (groupMembers.contains(member)) {
+ return true;
+ } else {
+- Vector<Group> alreadySeen = new Vector<>(10);
++ Vector<Group> alreadySeen = new Vector<Group>(10);
+ return isMemberRecurse(member, alreadySeen);
+ }
+ }
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/jca/ProviderList.java openjdk-boot/jdk/src/share/classes/sun/security/jca/ProviderList.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/jca/ProviderList.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/jca/ProviderList.java 2013-04-17 14:53:25.371552772 +0100
+@@ -96,7 +96,7 @@
+ if (providerList.getProvider(p.getName()) != null) {
+ return providerList;
+ }
+- List<ProviderConfig> list = new ArrayList<>
++ List<ProviderConfig> list = new ArrayList<ProviderConfig>
+ (Arrays.asList(providerList.configs));
+ int n = list.size();
+ if ((position < 0) || (position > n)) {
+@@ -160,7 +160,7 @@
+ * Return a new ProviderList parsed from the java.security Properties.
+ */
+ private ProviderList() {
+- List<ProviderConfig> configList = new ArrayList<>();
++ List<ProviderConfig> configList = new ArrayList<ProviderConfig>();
+ for (int i = 1; true; i++) {
+ String entry = Security.getProperty("security.provider." + i);
+ if (entry == null) {
+@@ -200,7 +200,7 @@
+ * possible recursion and deadlock during verification.
+ */
+ ProviderList getJarList(String[] jarClassNames) {
+- List<ProviderConfig> newConfigs = new ArrayList<>();
++ List<ProviderConfig> newConfigs = new ArrayList<ProviderConfig>();
+ for (String className : jarClassNames) {
+ ProviderConfig newConfig = new ProviderConfig(className);
+ for (ProviderConfig config : configs) {
+@@ -356,7 +356,7 @@
+ */
+ @Deprecated
+ public List<Service> getServices(String type, List<String> algorithms) {
+- List<ServiceId> ids = new ArrayList<>();
++ List<ServiceId> ids = new ArrayList<ServiceId>();
+ for (String alg : algorithms) {
+ ids.add(new ServiceId(type, alg));
+ }
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/jca/Providers.java openjdk-boot/jdk/src/share/classes/sun/security/jca/Providers.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/jca/Providers.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/jca/Providers.java 2013-04-17 14:53:25.371552772 +0100
+@@ -40,7 +40,7 @@
+ public class Providers {
+
+ private static final ThreadLocal<ProviderList> threadLists =
+- new InheritableThreadLocal<>();
++ new InheritableThreadLocal<ProviderList>();
+
+ // number of threads currently using thread-local provider lists
+ // tracked to allow an optimization if == 0
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/jgss/krb5/Krb5Util.java openjdk-boot/jdk/src/share/classes/sun/security/jgss/krb5/Krb5Util.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/jgss/krb5/Krb5Util.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/jgss/krb5/Krb5Util.java 2013-04-17 14:53:25.371552772 +0100
+@@ -267,7 +267,7 @@
+ if (ktabs.isEmpty()) {
+ return kk.toArray(new KerberosKey[kk.size()]);
+ } else {
+- List<KerberosKey> keys = new ArrayList<>();
++ List<KerberosKey> keys = new ArrayList<KerberosKey>();
+ for (KeyTab ktab: ktabs) {
+ for (KerberosKey k: ktab.getKeys(kp)) {
+ keys.add(k);
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/Config.java openjdk-boot/jdk/src/share/classes/sun/security/krb5/Config.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/Config.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/Config.java 2013-04-17 14:53:25.371552772 +0100
+@@ -551,7 +551,7 @@
+ }
+ })));
+ String Line;
+- Vector<String> v = new Vector<>();
++ Vector<String> v = new Vector<String>();
+ String previous = null;
+ while ((Line = br.readLine()) != null) {
+ // ignore comments and blank line in the configuration file.
+@@ -612,7 +612,7 @@
+ throw new KrbException("I/O error while reading" +
+ " configuration file.");
+ }
+- Hashtable<String,Object> table = new Hashtable<>();
++ Hashtable<String,Object> table = new Hashtable<String,Object>();
+ for (int i = 0; i < v.size(); i++) {
+ String line = v.elementAt(i).trim();
+ if (line.equalsIgnoreCase("[realms]")) {
+@@ -621,7 +621,7 @@
+ if ((count == v.size()) ||
+ (v.elementAt(count).startsWith("["))) {
+ Hashtable<String,Hashtable<String,Vector<String>>> temp =
+- new Hashtable<>();
++ new Hashtable<String,Hashtable<String,Vector<String>>>();
+ temp = parseRealmField(v, i + 1, count);
+ table.put("realms", temp);
+ i = count - 1;
+@@ -634,7 +634,7 @@
+ if ((count == v.size()) ||
+ (v.elementAt(count).startsWith("["))) {
+ Hashtable<String,Hashtable<String,Vector<String>>> temp =
+- new Hashtable<>();
++ new Hashtable<String,Hashtable<String,Vector<String>>>();
+ temp = parseRealmField(v, i + 1, count);
+ table.put("capaths", temp);
+ i = count - 1;
+@@ -779,7 +779,7 @@
+ * Parses key-value pairs under a stanza name.
+ */
+ private Hashtable<String,String> parseField(Vector<String> v, int start, int end) {
+- Hashtable<String,String> table = new Hashtable<>();
++ Hashtable<String,String> table = new Hashtable<String,String>();
+ String line;
+ for (int i = start; i < end; i++) {
+ line = v.elementAt(i);
+@@ -801,7 +801,7 @@
+ * information for the realm given within a pair of braces.
+ */
+ private Hashtable<String,Hashtable<String,Vector<String>>> parseRealmField(Vector<String> v, int start, int end) {
+- Hashtable<String,Hashtable<String,Vector<String>>> table = new Hashtable<>();
++ Hashtable<String,Hashtable<String,Vector<String>>> table = new Hashtable<String,Hashtable<String,Vector<String>>>();
+ String line;
+ for (int i = start; i < end; i++) {
+ line = v.elementAt(i).trim();
+@@ -841,9 +841,9 @@
+ * Parses key-value pairs within each braces under [realms].
+ */
+ private Hashtable<String,Vector<String>> parseRealmFieldEx(Vector<String> v, int start, int end) {
+- Hashtable<String,Vector<String>> table = new Hashtable<>();
+- Vector<String> keyVector = new Vector<>();
+- Vector<String> nameVector = new Vector<>();
++ Hashtable<String,Vector<String>> table = new Hashtable<String,Vector<String>>();
++ Vector<String> keyVector = new Vector<String>();
++ Vector<String> nameVector = new Vector<String>();
+ String line = "";
+ String key;
+ for (int i = start; i < end; i++) {
+@@ -948,7 +948,7 @@
+ }
+ st = new StringTokenizer(default_enctypes, delim);
+ int len = st.countTokens();
+- ArrayList<Integer> ls = new ArrayList<>(len);
++ ArrayList<Integer> ls = new ArrayList<Integer>(len);
+ int type;
+ for (int i = 0; i < len; i++) {
+ type = getType(st.nextToken());
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/internal/Authenticator.java openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/Authenticator.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/internal/Authenticator.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/Authenticator.java 2013-04-17 14:53:25.371552772 +0100
+@@ -176,7 +176,7 @@
+ * @exception IOException if an I/O error occurs while reading encoded data.
+ */
+ public byte[] asn1Encode() throws Asn1Exception, IOException {
+- Vector<DerValue> v = new Vector<>();
++ Vector<DerValue> v = new Vector<DerValue>();
+ DerOutputStream temp = new DerOutputStream();
+ temp.putInteger(BigInteger.valueOf(authenticator_vno));
+ v.addElement(new DerValue(DerValue.createTag(DerValue.TAG_CONTEXT, true, (byte) 0x00), temp.toByteArray()));
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/internal/AuthorizationData.java openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/AuthorizationData.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/internal/AuthorizationData.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/AuthorizationData.java 2013-04-17 14:53:25.371552772 +0100
+@@ -99,7 +99,7 @@
+ * @exception IOException if an I/O error occurs while reading encoded data.
+ */
+ public AuthorizationData(DerValue der) throws Asn1Exception, IOException {
+- Vector<AuthorizationDataEntry> v = new Vector<>();
++ Vector<AuthorizationDataEntry> v = new Vector<AuthorizationDataEntry>();
+ if (der.getTag() != DerValue.tag_Sequence) {
+ throw new Asn1Exception(Krb5.ASN1_BAD_ID);
+ }
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/internal/ccache/FileCredentialsCache.java openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/ccache/FileCredentialsCache.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/internal/ccache/FileCredentialsCache.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/ccache/FileCredentialsCache.java 2013-04-17 14:53:25.375552836 +0100
+@@ -490,7 +490,7 @@
+
+ private static String exec(String c) {
+ StringTokenizer st = new StringTokenizer(c);
+- Vector<String> v = new Vector<>();
++ Vector<String> v = new Vector<String>();
+ while (st.hasMoreTokens()) {
+ v.addElement(st.nextToken());
+ }
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/internal/crypto/EType.java openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/crypto/EType.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/internal/crypto/EType.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/crypto/EType.java 2013-04-17 14:53:25.375552836 +0100
+@@ -257,7 +257,7 @@
+ + configName);
+ }
+
+- List<Integer> list = new ArrayList<>(answer.length);
++ List<Integer> list = new ArrayList<Integer>(answer.length);
+ for (int i = 0; i < answer.length; i++) {
+ if (EncryptionKey.findKey(answer[i], keys) != null) {
+ list.add(answer[i]);
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/internal/EncAPRepPart.java openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/EncAPRepPart.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/internal/EncAPRepPart.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/EncAPRepPart.java 2013-04-17 14:53:25.375552836 +0100
+@@ -133,7 +133,7 @@
+ * @exception IOException if an I/O error occurs while reading encoded data.
+ */
+ public byte[] asn1Encode() throws Asn1Exception, IOException {
+- Vector<DerValue> v = new Vector<>();
++ Vector<DerValue> v = new Vector<DerValue>();
+ DerOutputStream temp = new DerOutputStream();
+ v.addElement(new DerValue(DerValue.createTag(DerValue.TAG_CONTEXT,
+ true, (byte) 0x00), ctime.asn1Encode()));
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/internal/HostAddresses.java openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/HostAddresses.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/internal/HostAddresses.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/HostAddresses.java 2013-04-17 14:53:25.375552836 +0100
+@@ -179,7 +179,7 @@
+ */
+ public HostAddresses(DerValue encoding)
+ throws Asn1Exception, IOException {
+- Vector<HostAddress> tempAddresses = new Vector<>();
++ Vector<HostAddress> tempAddresses = new Vector<HostAddress>();
+ DerValue der = null;
+ while (encoding.getData().available() > 0) {
+ der = encoding.getData().getDerValue();
+@@ -265,7 +265,7 @@
+ if (addresses == null || addresses.length == 0)
+ return null;
+
+- ArrayList<InetAddress> ipAddrs = new ArrayList<>(addresses.length);
++ ArrayList<InetAddress> ipAddrs = new ArrayList<InetAddress>(addresses.length);
+
+ for (int i = 0; i < addresses.length; i++) {
+ try {
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/internal/KDCReqBody.java openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/KDCReqBody.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/internal/KDCReqBody.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/KDCReqBody.java 2013-04-17 14:53:25.375552836 +0100
+@@ -158,7 +158,7 @@
+ throw new Asn1Exception(Krb5.ASN1_BAD_ID);
+ }
+ der = encoding.getData().getDerValue();
+- Vector<Integer> v = new Vector<>();
++ Vector<Integer> v = new Vector<Integer>();
+ if ((der.getTag() & (byte)0x1F) == (byte)0x08) {
+ subDer = der.getData().getDerValue();
+
+@@ -183,7 +183,7 @@
+ encAuthorizationData = EncryptedData.parse(encoding.getData(), (byte)0x0A, true);
+ }
+ if (encoding.getData().available() > 0) {
+- Vector<Ticket> tempTickets = new Vector<>();
++ Vector<Ticket> tempTickets = new Vector<Ticket>();
+ der = encoding.getData().getDerValue();
+ if ((der.getTag() & (byte)0x1F) == (byte)0x0B) {
+ subDer = der.getData().getDerValue();
+@@ -216,7 +216,7 @@
+ *
+ */
+ public byte[] asn1Encode(int msgType) throws Asn1Exception, IOException {
+- Vector<DerValue> v = new Vector<>();
++ Vector<DerValue> v = new Vector<DerValue>();
+ v.addElement(new DerValue(DerValue.createTag(DerValue.TAG_CONTEXT, true, (byte)0x00), kdcOptions.asn1Encode()));
+ if (msgType == Krb5.KRB_AS_REQ) {
+ if (cname != null) {
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/internal/KDCReq.java openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/KDCReq.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/internal/KDCReq.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/KDCReq.java 2013-04-17 14:53:25.375552836 +0100
+@@ -150,7 +150,7 @@
+ if (subsubDer.getTag() != DerValue.tag_SequenceOf) {
+ throw new Asn1Exception(Krb5.ASN1_BAD_ID);
+ }
+- Vector<PAData> v = new Vector<>();
++ Vector<PAData> v = new Vector<PAData>();
+ while (subsubDer.getData().available() > 0) {
+ v.addElement(new PAData(subsubDer.getData().getDerValue()));
+ }
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/internal/KrbCredInfo.java openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/KrbCredInfo.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/internal/KrbCredInfo.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/KrbCredInfo.java 2013-04-17 14:53:25.375552836 +0100
+@@ -157,7 +157,7 @@
+ * @exception IOException if an I/O error occurs while reading encoded data.
+ */
+ public byte[] asn1Encode() throws Asn1Exception, IOException {
+- Vector<DerValue> v = new Vector<>();
++ Vector<DerValue> v = new Vector<DerValue>();
+ v.addElement(new DerValue(DerValue.createTag(DerValue.TAG_CONTEXT, true, (byte)0x00), key.asn1Encode()));
+ if (prealm != null)
+ v.addElement(new DerValue(DerValue.createTag(DerValue.TAG_CONTEXT, true, (byte)0x01), prealm.asn1Encode()));
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/internal/KRBCred.java openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/KRBCred.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/internal/KRBCred.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/KRBCred.java 2013-04-17 14:53:25.375552836 +0100
+@@ -134,7 +134,7 @@
+ if (subsubDer.getTag() != DerValue.tag_SequenceOf) {
+ throw new Asn1Exception(Krb5.ASN1_BAD_ID);
+ }
+- Vector<Ticket> v = new Vector<>();
++ Vector<Ticket> v = new Vector<Ticket>();
+ while (subsubDer.getData().available() > 0) {
+ v.addElement(new Ticket(subsubDer.getData().getDerValue()));
+ }
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/internal/KRBError.java openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/KRBError.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/internal/KRBError.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/KRBError.java 2013-04-17 14:53:25.375552836 +0100
+@@ -259,7 +259,7 @@
+ private void parsePAData(byte[] data)
+ throws IOException, Asn1Exception {
+ DerValue derPA = new DerValue(data);
+- List<PAData> paList = new ArrayList<>();
++ List<PAData> paList = new ArrayList<PAData>();
+ while (derPA.data.available() > 0) {
+ // read the PA-DATA
+ DerValue tmp = derPA.data.getDerValue();
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/internal/ktab/KeyTab.java openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/ktab/KeyTab.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/internal/ktab/KeyTab.java 2013-04-17 14:52:22.430547174 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/ktab/KeyTab.java 2013-04-17 14:53:25.375552836 +0100
+@@ -67,7 +67,7 @@
+
+ // Attention: Currently there is no way to remove a keytab from this map,
+ // this might lead to a memory leak.
+- private static Map<String,KeyTab> map = new HashMap<>();
++ private static Map<String,KeyTab> map = new HashMap<String,KeyTab>();
+
+ // KeyTab file does not exist. Note: a missing keytab is still valid
+ private boolean isMissing = false;
+@@ -79,7 +79,7 @@
+ private long lastModified;
+ private int kt_vno;
+
+- private Vector<KeyTabEntry> entries = new Vector<>();
++ private Vector<KeyTabEntry> entries = new Vector<KeyTabEntry>();
+
+ /**
+ * Constructs a KeyTab object.
+@@ -280,7 +280,7 @@
+ KeyTabEntry entry;
+ EncryptionKey key;
+ int size = entries.size();
+- ArrayList<EncryptionKey> keys = new ArrayList<>(size);
++ ArrayList<EncryptionKey> keys = new ArrayList<EncryptionKey>(size);
+ for (int i = size-1; i >= 0; i--) {
+ entry = entries.elementAt(i);
+ if (entry.service.match(service)) {
+@@ -482,7 +482,7 @@
+ int count = 0;
+
+ // Remember the highest KVNO for each etype. Used for kvno == -2
+- Map<Integer,Integer> highest = new HashMap<>();
++ Map<Integer,Integer> highest = new HashMap<Integer, Integer>();
+
+ for (int i = entries.size()-1; i >= 0; i--) {
+ KeyTabEntry e = entries.get(i);
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/internal/LastReq.java openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/LastReq.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/internal/LastReq.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/LastReq.java 2013-04-17 14:53:25.375552836 +0100
+@@ -77,7 +77,7 @@
+ */
+
+ public LastReq(DerValue encoding) throws Asn1Exception, IOException {
+- Vector<LastReqEntry> v= new Vector<>();
++ Vector<LastReqEntry> v= new Vector<LastReqEntry>();
+ if (encoding.getTag() != DerValue.tag_Sequence) {
+ throw new Asn1Exception(Krb5.ASN1_BAD_ID);
+ }
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/KdcComm.java openjdk-boot/jdk/src/share/classes/sun/security/krb5/KdcComm.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/KdcComm.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/KdcComm.java 2013-04-17 14:53:25.375552836 +0100
+@@ -462,7 +462,7 @@
+ */
+ static class KdcAccessibility {
+ // Known bad KDCs
+- private static Set<String> bads = new HashSet<>();
++ private static Set<String> bads = new HashSet<String>();
+
+ private static synchronized void addBad(String kdc) {
+ if (DEBUG) {
+@@ -492,9 +492,9 @@
+ // Returns a preferred KDC list by putting the bad ones at the end
+ private static synchronized String[] list(String kdcList) {
+ StringTokenizer st = new StringTokenizer(kdcList);
+- List<String> list = new ArrayList<>();
++ List<String> list = new ArrayList<String>();
+ if (badPolicy == BpType.TRY_LAST) {
+- List<String> badkdcs = new ArrayList<>();
++ List<String> badkdcs = new ArrayList<String>();
+ while (st.hasMoreTokens()) {
+ String t = st.nextToken();
+ if (bads.contains(t)) badkdcs.add(t);
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/PrincipalName.java openjdk-boot/jdk/src/share/classes/sun/security/krb5/PrincipalName.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/PrincipalName.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/PrincipalName.java 2013-04-17 14:53:25.379552900 +0100
+@@ -238,7 +238,7 @@
+ if (subDer.getTag() != DerValue.tag_SequenceOf) {
+ throw new Asn1Exception(Krb5.ASN1_BAD_ID);
+ }
+- Vector<String> v = new Vector<>();
++ Vector<String> v = new Vector<String>();
+ DerValue subSubDer;
+ while(subDer.getData().available() > 0) {
+ subSubDer = subDer.getData().getDerValue();
+@@ -293,7 +293,7 @@
+ // Code repetition, realm parsed again by class Realm
+ protected static String[] parseName(String name) {
+
+- Vector<String> tempStrings = new Vector<>();
++ Vector<String> tempStrings = new Vector<String>();
+ String temp = name;
+ int i = 0;
+ int componentStart = 0;
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/Realm.java openjdk-boot/jdk/src/share/classes/sun/security/krb5/Realm.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/Realm.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/Realm.java 2013-04-17 14:53:25.379552900 +0100
+@@ -359,14 +359,14 @@
+ }
+
+ String tempTarget = null, tempRealm = null;
+- Stack<String> iStack = new Stack<>();
++ Stack<String> iStack = new Stack<String>();
+
+ /*
+ * The half-established reversed-path, starting from the final target
+ * (sRealm), each item can be connected to by the next one.
+ * Might contains wrong item, if found, a bad track is performed
+ */
+- Vector<String> tempList = new Vector<>(8, 8);
++ Vector<String> tempList = new Vector<String>(8, 8);
+ tempList.add(sRealm);
+
+ int count = 0; // For debug only
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/provider/certpath/DistributionPointFetcher.java openjdk-boot/jdk/src/share/classes/sun/security/provider/certpath/DistributionPointFetcher.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/provider/certpath/DistributionPointFetcher.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/provider/certpath/DistributionPointFetcher.java 2013-04-17 14:53:25.379552900 +0100
+@@ -590,7 +590,7 @@
+ // Except the performance improvement, another benefit is to break
+ // the dead loop while looking for the issuer back and forth
+ // between the delegated self-issued certificate and its issuer.
+- Set<TrustAnchor> newTrustAnchors = new HashSet<>(trustAnchors);
++ Set<TrustAnchor> newTrustAnchors = new HashSet<TrustAnchor>(trustAnchors);
+
+ if (prevKey != null) {
+ // Add the previous certificate as a trust anchor.
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/provider/JavaKeyStore.java openjdk-boot/jdk/src/share/classes/sun/security/provider/JavaKeyStore.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/provider/JavaKeyStore.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/provider/JavaKeyStore.java 2013-04-17 14:53:25.379552900 +0100
+@@ -683,7 +683,7 @@
+ // Read the certificate chain
+ int numOfCerts = dis.readInt();
+ if (numOfCerts > 0) {
+- List<Certificate> certs = new ArrayList<>(
++ List<Certificate> certs = new ArrayList<Certificate>(
+ numOfCerts > 10 ? 10 : numOfCerts);
+ for (int j = 0; j < numOfCerts; j++) {
+ if (xVersion == 2) {
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/provider/PolicyFile.java openjdk-boot/jdk/src/share/classes/sun/security/provider/PolicyFile.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/provider/PolicyFile.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/provider/PolicyFile.java 2013-04-17 14:53:25.379552900 +0100
+@@ -299,7 +299,7 @@
+ private static final int DEFAULT_CACHE_SIZE = 1;
+
+ // contains the policy grant entries, PD cache, and alias mapping
+- private AtomicReference<PolicyInfo> policyInfo = new AtomicReference<>();
++ private AtomicReference<PolicyInfo> policyInfo = new AtomicReference<PolicyInfo>();
+ private boolean constructed = false;
+
+ private boolean expandProperties = true;
+@@ -1333,7 +1333,7 @@
+
+ List<PolicyParser.PrincipalEntry> entryPs = entry.getPrincipals();
+ if (debug != null) {
+- ArrayList<PolicyParser.PrincipalEntry> accPs = new ArrayList<>();
++ ArrayList<PolicyParser.PrincipalEntry> accPs = new ArrayList<PolicyParser.PrincipalEntry>();
+ if (principals != null) {
+ for (int i = 0; i < principals.length; i++) {
+ accPs.add(new PolicyParser.PrincipalEntry
+@@ -1414,7 +1414,7 @@
+ // check if the PrincipalComparator
+ // implies the current thread's principals
+
+- Set<Principal> pSet = new HashSet<>(principals.length);
++ Set<Principal> pSet = new HashSet<Principal>(principals.length);
+ for (int j = 0; j < principals.length; j++) {
+ pSet.add(principals[j]);
+ }
+@@ -1697,7 +1697,7 @@
+ // build an info array for every principal
+ // in the current domain which has a principal class
+ // that is equal to policy entry principal class name
+- List<Principal> plist = new ArrayList<>();
++ List<Principal> plist = new ArrayList<Principal>();
+ for (int i = 0; i < pdp.length; i++) {
+ if(pe.principalClass.equals(pdp[i].getClass().getName()))
+ plist.add(pdp[i]);
+@@ -1767,7 +1767,7 @@
+ // Done
+ return certs;
+
+- ArrayList<Certificate> userCertList = new ArrayList<>();
++ ArrayList<Certificate> userCertList = new ArrayList<Certificate>();
+ i = 0;
+ while (i < certs.length) {
+ userCertList.add(certs[i]);
+@@ -2246,7 +2246,7 @@
+ if (this.certs == null) {
+ // extract the signer certs
+ ArrayList<Certificate> signerCerts =
+- new ArrayList<>();
++ new ArrayList<Certificate>();
+ i = 0;
+ while (i < certs.length) {
+ signerCerts.add(certs[i]);
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/provider/Sun.java openjdk-boot/jdk/src/share/classes/sun/security/provider/Sun.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/provider/Sun.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/provider/Sun.java 2013-04-17 14:53:25.379552900 +0100
+@@ -55,7 +55,7 @@
+ SunEntries.putEntries(this);
+ } else {
+ // use LinkedHashMap to preserve the order of the PRNGs
+- Map<Object, Object> map = new LinkedHashMap<>();
++ Map<Object, Object> map = new LinkedHashMap<Object, Object>();
+ SunEntries.putEntries(map);
+ AccessController.doPrivileged(new PutAllAction(this, map));
+ }
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/provider/VerificationProvider.java openjdk-boot/jdk/src/share/classes/sun/security/provider/VerificationProvider.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/provider/VerificationProvider.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/provider/VerificationProvider.java 2013-04-17 14:53:25.379552900 +0100
+@@ -76,7 +76,7 @@
+ SunRsaSignEntries.putEntries(this);
+ } else {
+ // use LinkedHashMap to preserve the order of the PRNGs
+- Map<Object, Object> map = new LinkedHashMap<>();
++ Map<Object, Object> map = new LinkedHashMap<Object, Object>();
+ SunEntries.putEntries(map);
+ SunRsaSignEntries.putEntries(map);
+ AccessController.doPrivileged(new PutAllAction(this, map));
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/provider/X509Factory.java openjdk-boot/jdk/src/share/classes/sun/security/provider/X509Factory.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/provider/X509Factory.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/provider/X509Factory.java 2013-04-17 14:53:25.379552900 +0100
+@@ -409,10 +409,10 @@
+ parseX509orPKCS7Cert(InputStream is)
+ throws CertificateException, IOException
+ {
+- Collection<X509CertImpl> coll = new ArrayList<>();
++ Collection<X509CertImpl> coll = new ArrayList<X509CertImpl>();
+ byte[] data = readOneBlock(is);
+ if (data == null) {
+- return new ArrayList<>(0);
++ return new ArrayList<Certificate>(0);
+ }
+ try {
+ PKCS7 pkcs7 = new PKCS7(data);
+@@ -422,7 +422,7 @@
+ return Arrays.asList(certs);
+ } else {
+ // no crls provided
+- return new ArrayList<>(0);
++ return new ArrayList<Certificate>(0);
+ }
+ } catch (ParsingException e) {
+ while (data != null) {
+@@ -442,10 +442,10 @@
+ parseX509orPKCS7CRL(InputStream is)
+ throws CRLException, IOException
+ {
+- Collection<X509CRLImpl> coll = new ArrayList<>();
++ Collection<X509CRLImpl> coll = new ArrayList<X509CRLImpl>();
+ byte[] data = readOneBlock(is);
+ if (data == null) {
+- return new ArrayList<>(0);
++ return new ArrayList<java.security.cert.CRL>(0);
+ }
+ try {
+ PKCS7 pkcs7 = new PKCS7(data);
+@@ -455,7 +455,7 @@
+ return Arrays.asList(crls);
+ } else {
+ // no crls provided
+- return new ArrayList<>(0);
++ return new ArrayList<java.security.cert.CRL>(0);
+ }
+ } catch (ParsingException e) {
+ while (data != null) {
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/rsa/RSACore.java openjdk-boot/jdk/src/share/classes/sun/security/rsa/RSACore.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/rsa/RSACore.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/rsa/RSACore.java 2013-04-17 14:53:25.379552900 +0100
+@@ -219,7 +219,7 @@
+ // use a weak hashmap so that cached values are automatically cleared
+ // when the modulus is GC'ed
+ private final static Map<BigInteger, BlindingParameters> blindingCache =
+- new WeakHashMap<>();
++ new WeakHashMap<BigInteger, BlindingParameters>();
+
+ /**
+ * Set of blinding parameters for a given RSA key.
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/rsa/SunRsaSign.java openjdk-boot/jdk/src/share/classes/sun/security/rsa/SunRsaSign.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/rsa/SunRsaSign.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/rsa/SunRsaSign.java 2013-04-17 14:53:25.379552900 +0100
+@@ -52,7 +52,7 @@
+ SunRsaSignEntries.putEntries(this);
+ } else {
+ // use LinkedHashMap to preserve the order of the PRNGs
+- Map<Object, Object> map = new HashMap<>();
++ Map<Object, Object> map = new HashMap<Object, Object>();
+ SunRsaSignEntries.putEntries(map);
+ AccessController.doPrivileged(new PutAllAction(this, map));
+ }
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/ssl/CipherSuite.java openjdk-boot/jdk/src/share/classes/sun/security/ssl/CipherSuite.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/ssl/CipherSuite.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/ssl/CipherSuite.java 2013-04-17 14:53:25.379552900 +0100
+@@ -393,7 +393,7 @@
+
+ // Map BulkCipher -> Boolean(available)
+ private final static Map<BulkCipher,Boolean> availableCache =
+- new HashMap<>(8);
++ new HashMap<BulkCipher,Boolean>(8);
+
+ // descriptive name including key size, e.g. AES/128
+ final String description;
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/ssl/ClientHandshaker.java openjdk-boot/jdk/src/share/classes/sun/security/ssl/ClientHandshaker.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/ssl/ClientHandshaker.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/ssl/ClientHandshaker.java 2013-04-17 14:53:25.383552963 +0100
+@@ -659,7 +659,7 @@
+ if (certRequest != null) {
+ X509ExtendedKeyManager km = sslContext.getX509KeyManager();
+
+- ArrayList<String> keytypesTmp = new ArrayList<>(4);
++ ArrayList<String> keytypesTmp = new ArrayList<String>(4);
+
+ for (int i = 0; i < certRequest.types.length; i++) {
+ String typeName;
+@@ -1179,7 +1179,7 @@
+ "Can't reuse existing SSL client session");
+ }
+
+- Collection<CipherSuite> cipherList = new ArrayList<>(2);
++ Collection<CipherSuite> cipherList = new ArrayList<CipherSuite>(2);
+ cipherList.add(sessionSuite);
+ if (!secureRenegotiation &&
+ cipherSuites.contains(CipherSuite.C_SCSV)) {
+@@ -1197,7 +1197,7 @@
+ // exclude SCSV for secure renegotiation
+ if (secureRenegotiation && cipherSuites.contains(CipherSuite.C_SCSV)) {
+ Collection<CipherSuite> cipherList =
+- new ArrayList<>(cipherSuites.size() - 1);
++ new ArrayList<CipherSuite>(cipherSuites.size() - 1);
+ for (CipherSuite suite : cipherSuites.collection()) {
+ if (suite != CipherSuite.C_SCSV) {
+ cipherList.add(suite);
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/ssl/HandshakeMessage.java openjdk-boot/jdk/src/share/classes/sun/security/ssl/HandshakeMessage.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/ssl/HandshakeMessage.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/ssl/HandshakeMessage.java 2013-04-17 14:53:25.387553028 +0100
+@@ -260,7 +260,7 @@
+ // add server_name extension
+ void addServerNameIndicationExtension(String hostname) {
+ // We would have checked that the hostname ia a FQDN.
+- ArrayList<String> hostnames = new ArrayList<>(1);
++ ArrayList<String> hostnames = new ArrayList<String>(1);
+ hostnames.add(hostname);
+
+ try {
+@@ -436,7 +436,7 @@
+
+ CertificateMsg(HandshakeInStream input) throws IOException {
+ int chainLen = input.getInt24();
+- List<Certificate> v = new ArrayList<>(4);
++ List<Certificate> v = new ArrayList<Certificate>(4);
+
+ CertificateFactory cf = null;
+ while (chainLen > 0) {
+@@ -1346,7 +1346,7 @@
+
+ // read the certificate_authorities
+ int len = input.getInt16();
+- ArrayList<DistinguishedName> v = new ArrayList<>();
++ ArrayList<DistinguishedName> v = new ArrayList<DistinguishedName>();
+ while (len >= 3) {
+ DistinguishedName dn = new DistinguishedName(input);
+ v.add(dn);
+@@ -1737,7 +1737,7 @@
+ // Note that this will prevent the Spi classes from being GC'd. We assume
+ // that is not a problem.
+ private final static Map<Class,Object> methodCache =
+- new ConcurrentHashMap<>();
++ new ConcurrentHashMap<Class,Object>();
+
+ private static void digestKey(MessageDigest md, SecretKey key) {
+ try {
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/ssl/Handshaker.java openjdk-boot/jdk/src/share/classes/sun/security/ssl/Handshaker.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/ssl/Handshaker.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/ssl/Handshaker.java 2013-04-17 14:53:25.391553092 +0100
+@@ -569,7 +569,7 @@
+ activeProtocols = getActiveProtocols();
+ }
+
+- ArrayList<CipherSuite> suites = new ArrayList<>();
++ ArrayList<CipherSuite> suites = new ArrayList<CipherSuite>();
+ if (!(activeProtocols.collection().isEmpty()) &&
+ activeProtocols.min.v != ProtocolVersion.NONE.v) {
+ for (CipherSuite suite : enabledCipherSuites.collection()) {
+@@ -614,7 +614,7 @@
+ */
+ ProtocolList getActiveProtocols() {
+ if (activeProtocols == null) {
+- ArrayList<ProtocolVersion> protocols = new ArrayList<>(4);
++ ArrayList<ProtocolVersion> protocols = new ArrayList<ProtocolVersion>(4);
+ for (ProtocolVersion protocol : enabledProtocols.collection()) {
+ boolean found = false;
+ for (CipherSuite suite : enabledCipherSuites.collection()) {
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/ssl/HelloExtensions.java openjdk-boot/jdk/src/share/classes/sun/security/ssl/HelloExtensions.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/ssl/HelloExtensions.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/ssl/HelloExtensions.java 2013-04-17 14:53:25.391553092 +0100
+@@ -169,7 +169,7 @@
+ return name;
+ }
+
+- static List<ExtensionType> knownExtensions = new ArrayList<>(9);
++ static List<ExtensionType> knownExtensions = new ArrayList<ExtensionType>(9);
+
+ static ExtensionType get(int id) {
+ for (ExtensionType ext : knownExtensions) {
+@@ -673,7 +673,7 @@
+ }
+
+ public String toString() {
+- List<String> list = new ArrayList<>();
++ List<String> list = new ArrayList<String>();
+ for (byte format : formats) {
+ list.add(toString(format));
+ }
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/ssl/ProtocolList.java openjdk-boot/jdk/src/share/classes/sun/security/ssl/ProtocolList.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/ssl/ProtocolList.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/ssl/ProtocolList.java 2013-04-17 14:53:25.391553092 +0100
+@@ -79,7 +79,7 @@
+ throw new IllegalArgumentException("Protocols may not be null");
+ }
+
+- ArrayList<ProtocolVersion> versions = new ArrayList<>(3);
++ ArrayList<ProtocolVersion> versions = new ArrayList<ProtocolVersion>(3);
+ for (int i = 0; i < names.length; i++ ) {
+ ProtocolVersion version = ProtocolVersion.valueOf(names[i]);
+ if (versions.contains(version) == false) {
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/ssl/SignatureAndHashAlgorithm.java openjdk-boot/jdk/src/share/classes/sun/security/ssl/SignatureAndHashAlgorithm.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/ssl/SignatureAndHashAlgorithm.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/ssl/SignatureAndHashAlgorithm.java 2013-04-17 14:53:25.391553092 +0100
+@@ -156,7 +156,7 @@
+ static Collection<SignatureAndHashAlgorithm>
+ getSupportedAlgorithms(AlgorithmConstraints constraints) {
+
+- Collection<SignatureAndHashAlgorithm> supported = new ArrayList<>();
++ Collection<SignatureAndHashAlgorithm> supported = new ArrayList<SignatureAndHashAlgorithm>();
+ synchronized (priorityMap) {
+ for (SignatureAndHashAlgorithm sigAlg : priorityMap.values()) {
+ if (sigAlg.priority <= SUPPORTED_ALG_PRIORITY_MAX_NUM &&
+@@ -173,7 +173,7 @@
+ // Get supported algorithm collection from an untrusted collection
+ static Collection<SignatureAndHashAlgorithm> getSupportedAlgorithms(
+ Collection<SignatureAndHashAlgorithm> algorithms ) {
+- Collection<SignatureAndHashAlgorithm> supported = new ArrayList<>();
++ Collection<SignatureAndHashAlgorithm> supported = new ArrayList<SignatureAndHashAlgorithm>();
+ for (SignatureAndHashAlgorithm sigAlg : algorithms) {
+ if (sigAlg.priority <= SUPPORTED_ALG_PRIORITY_MAX_NUM) {
+ supported.add(sigAlg);
+@@ -185,7 +185,7 @@
+
+ static String[] getAlgorithmNames(
+ Collection<SignatureAndHashAlgorithm> algorithms) {
+- ArrayList<String> algorithmNames = new ArrayList<>();
++ ArrayList<String> algorithmNames = new ArrayList<String>();
+ if (algorithms != null) {
+ for (SignatureAndHashAlgorithm sigAlg : algorithms) {
+ algorithmNames.add(sigAlg.algorithm);
+@@ -198,7 +198,7 @@
+
+ static Set<String> getHashAlgorithmNames(
+ Collection<SignatureAndHashAlgorithm> algorithms) {
+- Set<String> algorithmNames = new HashSet<>();
++ Set<String> algorithmNames = new HashSet<String>();
+ if (algorithms != null) {
+ for (SignatureAndHashAlgorithm sigAlg : algorithms) {
+ if (sigAlg.hash.value > 0) {
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/ssl/SSLAlgorithmConstraints.java openjdk-boot/jdk/src/share/classes/sun/security/ssl/SSLAlgorithmConstraints.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/ssl/SSLAlgorithmConstraints.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/ssl/SSLAlgorithmConstraints.java 2013-04-17 14:53:25.391553092 +0100
+@@ -261,7 +261,7 @@
+
+ protected Set<String> decomposes(KeyExchange keyExchange,
+ boolean forCertPathOnly) {
+- Set<String> components = new HashSet<>();
++ Set<String> components = new HashSet<String>();
+ switch (keyExchange) {
+ case K_NULL:
+ if (!forCertPathOnly) {
+@@ -356,7 +356,7 @@
+ }
+
+ protected Set<String> decomposes(BulkCipher bulkCipher) {
+- Set<String> components = new HashSet<>();
++ Set<String> components = new HashSet<String>();
+
+ if (bulkCipher.transformation != null) {
+ components.addAll(super.decomposes(bulkCipher.transformation));
+@@ -366,7 +366,7 @@
+ }
+
+ protected Set<String> decomposes(MacAlg macAlg) {
+- Set<String> components = new HashSet<>();
++ Set<String> components = new HashSet<String>();
+
+ if (macAlg == CipherSuite.M_MD5) {
+ components.add("MD5");
+@@ -407,7 +407,7 @@
+ }
+
+ if (cipherSuite != null) {
+- Set<String> components = new HashSet<>();
++ Set<String> components = new HashSet<String>();
+
+ if(cipherSuite.keyExchange != null) {
+ components.addAll(
+@@ -448,7 +448,7 @@
+ }
+
+ if (cipherSuite != null) {
+- Set<String> components = new HashSet<>();
++ Set<String> components = new HashSet<String>();
+
+ if(cipherSuite.keyExchange != null) {
+ components.addAll(
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/ssl/SSLContextImpl.java openjdk-boot/jdk/src/share/classes/sun/security/ssl/SSLContextImpl.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/ssl/SSLContextImpl.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/ssl/SSLContextImpl.java 2013-04-17 14:53:25.395553156 +0100
+@@ -331,7 +331,7 @@
+ Collection<CipherSuite> allowedCipherSuites =
+ CipherSuite.allowedCipherSuites();
+
+- TreeSet<CipherSuite> suites = new TreeSet<>();
++ TreeSet<CipherSuite> suites = new TreeSet<CipherSuite>();
+ if (!(protocols.collection().isEmpty()) &&
+ protocols.min.v != ProtocolVersion.NONE.v) {
+ for (CipherSuite suite : allowedCipherSuites) {
+@@ -541,7 +541,7 @@
+ return defaultKeyManagers;
+ }
+
+- final Map<String,String> props = new HashMap<>();
++ final Map<String,String> props = new HashMap<String,String>();
+ AccessController.doPrivileged(
+ new PrivilegedExceptionAction<Object>() {
+ public Object run() throws Exception {
+@@ -922,7 +922,7 @@
+ // Does the certificate chain end with a trusted certificate?
+ int checkedLength = chain.length - 1;
+
+- Collection<X509Certificate> trustedCerts = new HashSet<>();
++ Collection<X509Certificate> trustedCerts = new HashSet<X509Certificate>();
+ X509Certificate[] certs = tm.getAcceptedIssuers();
+ if ((certs != null) && (certs.length > 0)){
+ Collections.addAll(trustedCerts, certs);
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/ssl/SSLSessionImpl.java openjdk-boot/jdk/src/share/classes/sun/security/ssl/SSLSessionImpl.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/ssl/SSLSessionImpl.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/ssl/SSLSessionImpl.java 2013-04-17 14:53:25.395553156 +0100
+@@ -618,7 +618,7 @@
+ * key and the calling security context. This is important since
+ * sessions can be shared across different protection domains.
+ */
+- private Hashtable<SecureKey, Object> table = new Hashtable<>();
++ private Hashtable<SecureKey, Object> table = new Hashtable<SecureKey, Object>();
+
+ /**
+ * Assigns a session value. Session change events are given if
+@@ -686,7 +686,7 @@
+ */
+ public String[] getValueNames() {
+ Enumeration<SecureKey> e;
+- Vector<Object> v = new Vector<>();
++ Vector<Object> v = new Vector<Object>();
+ SecureKey key;
+ Object securityCtx = SecureKey.getCurrentSecurityContext();
+
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/ssl/SSLSocketImpl.java openjdk-boot/jdk/src/share/classes/sun/security/ssl/SSLSocketImpl.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/ssl/SSLSocketImpl.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/ssl/SSLSocketImpl.java 2013-04-17 14:53:25.395553156 +0100
+@@ -2496,7 +2496,7 @@
+ entrySet, HandshakeCompletedEvent e) {
+
+ super("HandshakeCompletedNotify-Thread");
+- targets = new HashSet<>(entrySet); // clone the entry set
++ targets = new HashSet(entrySet); // clone the entry set
+ event = e;
+ }
+
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/ssl/SunX509KeyManagerImpl.java openjdk-boot/jdk/src/share/classes/sun/security/ssl/SunX509KeyManagerImpl.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/ssl/SunX509KeyManagerImpl.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/ssl/SunX509KeyManagerImpl.java 2013-04-17 14:53:25.395553156 +0100
+@@ -337,7 +337,7 @@
+
+ X500Principal[] x500Issuers = (X500Principal[])issuers;
+ // the algorithm below does not produce duplicates, so avoid Set
+- List<String> aliases = new ArrayList<>();
++ List<String> aliases = new ArrayList<String>();
+
+ for (Map.Entry<String,X509Credentials> entry :
+ credentialsMap.entrySet()) {
+@@ -397,7 +397,7 @@
+ * possible. Principals that cannot be converted are ignored.
+ */
+ private static X500Principal[] convertPrincipals(Principal[] principals) {
+- List<X500Principal> list = new ArrayList<>(principals.length);
++ List<X500Principal> list = new ArrayList<X500Principal>(principals.length);
+ for (int i = 0; i < principals.length; i++) {
+ Principal p = principals[i];
+ if (p instanceof X500Principal) {
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/ssl/TrustManagerFactoryImpl.java openjdk-boot/jdk/src/share/classes/sun/security/ssl/TrustManagerFactoryImpl.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/ssl/TrustManagerFactoryImpl.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/ssl/TrustManagerFactoryImpl.java 2013-04-17 14:53:25.395553156 +0100
+@@ -134,7 +134,7 @@
+ FileInputStream fis = null;
+ String defaultTrustStoreType;
+ String defaultTrustStoreProvider;
+- final HashMap<String,String> props = new HashMap<>();
++ final HashMap<String,String> props = new HashMap<String,String>();
+ final String sep = File.separator;
+ KeyStore ks = null;
+
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/ssl/X509KeyManagerImpl.java openjdk-boot/jdk/src/share/classes/sun/security/ssl/X509KeyManagerImpl.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/ssl/X509KeyManagerImpl.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/ssl/X509KeyManagerImpl.java 2013-04-17 14:53:25.395553156 +0100
+@@ -307,7 +307,7 @@
+ (keyTypes.length == 0) || (keyTypes[0] == null)) {
+ return null;
+ }
+- List<KeyType> list = new ArrayList<>(keyTypes.length);
++ List<KeyType> list = new ArrayList<KeyType>(keyTypes.length);
+ for (String keyType : keyTypes) {
+ list.add(new KeyType(keyType));
+ }
+@@ -429,7 +429,7 @@
+ // make a Set out of the array
+ private Set<Principal> getIssuerSet(Principal[] issuers) {
+ if ((issuers != null) && (issuers.length != 0)) {
+- return new HashSet<>(Arrays.asList(issuers));
++ return new HashSet<Principal>(Arrays.asList(issuers));
+ } else {
+ return null;
+ }
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/tools/JarSigner.java openjdk-boot/jdk/src/share/classes/sun/security/tools/JarSigner.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/tools/JarSigner.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/tools/JarSigner.java 2013-04-17 14:53:25.395553156 +0100
+@@ -123,14 +123,14 @@
+ boolean token = false; // token-based keystore
+ String jarfile; // jar files to sign or verify
+ String alias; // alias to sign jar with
+- List<String> ckaliases = new ArrayList<>(); // aliases in -verify
++ List<String> ckaliases = new ArrayList<String>(); // aliases in -verify
+ char[] storepass; // keystore password
+ boolean protectedPath; // protected authentication path
+ String storetype; // keystore type
+ String providerName; // provider name
+ Vector<String> providers = null; // list of providers
+ // arguments for provider constructors
+- HashMap<String,String> providerArgs = new HashMap<>();
++ HashMap<String,String> providerArgs = new HashMap<String,String>();
+ char[] keypass; // private key password
+ String sigfile; // name of .SF file
+ String sigalg; // name of signature algorithm
+@@ -567,7 +567,7 @@
+
+ try {
+ jf = new JarFile(jarName, true);
+- Vector<JarEntry> entriesVec = new Vector<>();
++ Vector<JarEntry> entriesVec = new Vector<JarEntry>();
+ byte[] buffer = new byte[8192];
+
+ Enumeration<JarEntry> entries = jf.entries();
+@@ -594,7 +594,7 @@
+ // The map to record display info, only used when -verbose provided
+ // key: signer info string
+ // value: the list of files with common key
+- Map<String,List<String>> output = new LinkedHashMap<>();
++ Map<String,List<String>> output = new LinkedHashMap<String,List<String>>();
+
+ if (man != null) {
+ if (verbose != null) System.out.println();
+@@ -946,7 +946,7 @@
+ .append(signTimeForm.format(source)).append("]").toString();
+ }
+
+- private Map<CodeSigner,Integer> cacheForInKS = new IdentityHashMap<>();
++ private Map<CodeSigner,Integer> cacheForInKS = new IdentityHashMap<CodeSigner,Integer>();
+
+ private int inKeyStoreForOneSigner(CodeSigner signer) {
+ if (cacheForInKS.containsKey(signer)) {
+@@ -989,7 +989,7 @@
+ return result;
+ }
+
+- Hashtable<Certificate, String> storeHash = new Hashtable<>();
++ Hashtable<Certificate, String> storeHash = new Hashtable<Certificate,String>();
+
+ int inKeyStore(CodeSigner[] signers) {
+
+@@ -1119,7 +1119,7 @@
+ * generated one. (This may invalidate existing signatures!)
+ */
+ BASE64Encoder encoder = new JarBASE64Encoder();
+- Vector<ZipEntry> mfFiles = new Vector<>();
++ Vector<ZipEntry> mfFiles = new Vector<ZipEntry>();
+
+ boolean wasSigned = false;
+
+@@ -1476,7 +1476,7 @@
+ return false;
+ }
+
+- Map<CodeSigner,String> cacheForSignerInfo = new IdentityHashMap<>();
++ Map<CodeSigner,String> cacheForSignerInfo = new IdentityHashMap<CodeSigner,String>();
+
+ /**
+ * Returns a string of singer info, with a newline at the end
+@@ -1567,7 +1567,7 @@
+
+ certificateFactory = CertificateFactory.getInstance("X.509");
+ validator = CertPathValidator.getInstance("PKIX");
+- Set<TrustAnchor> tas = new HashSet<>();
++ Set<TrustAnchor> tas = new HashSet<TrustAnchor>();
+ try {
+ KeyStore caks = KeyTool.getCacertsKeyStore();
+ if (caks != null) {
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/tools/KeyTool.java openjdk-boot/jdk/src/share/classes/sun/security/tools/KeyTool.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/tools/KeyTool.java 2013-04-17 14:52:22.430547174 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/tools/KeyTool.java 2013-04-17 14:53:25.399553220 +0100
+@@ -154,11 +154,11 @@
+ private KeyStore caks = null; // "cacerts" keystore
+ private char[] srcstorePass = null;
+ private String srcstoretype = null;
+- private Set<char[]> passwords = new HashSet<>();
++ private Set<char[]> passwords = new HashSet<char[]>();
+ private String startDate = null;
+
+- private List<String> ids = new ArrayList<>(); // used in GENCRL
+- private List<String> v3ext = new ArrayList<>();
++ private List<String> ids = new ArrayList<String>(); // used in GENCRL
++ private List<String> v3ext = new ArrayList<String>();
+
+ enum Command {
+ CERTREQ("Generates.a.certificate.request",
+@@ -2093,7 +2093,7 @@
+ */
+ public static List<CRL> readCRLsFromCert(X509Certificate cert)
+ throws Exception {
+- List<CRL> crls = new ArrayList<>();
++ List<CRL> crls = new ArrayList<CRL>();
+ CRLDistributionPointsExtension ext =
+ X509CertImpl.toImpl(cert).getCRLDistributionPointsExtension();
+ if (ext == null) return crls;
+@@ -2260,7 +2260,7 @@
+ if (jarfile != null) {
+ JarFile jf = new JarFile(jarfile, true);
+ Enumeration<JarEntry> entries = jf.entries();
+- Set<CodeSigner> ss = new HashSet<>();
++ Set<CodeSigner> ss = new HashSet<CodeSigner>();
+ byte[] buffer = new byte[8192];
+ int pos = 0;
+ while (entries.hasMoreElements()) {
+@@ -3360,7 +3360,7 @@
+ }
+
+ // start building chain
+- Vector<Certificate> chain = new Vector<>(2);
++ Vector<Certificate> chain = new Vector<Certificate>(2);
+ if (buildChain((X509Certificate)certToVerify, chain, certs)) {
+ Certificate[] newChain = new Certificate[chain.size()];
+ // buildChain() returns chain with self-signed root-cert first and
+@@ -3886,7 +3886,7 @@
+ break;
+ case 2: // EKU
+ if(value != null) {
+- Vector<ObjectIdentifier> v = new Vector<>();
++ Vector<ObjectIdentifier> v = new Vector<ObjectIdentifier>();
+ for (String s: value.split(",")) {
+ int p = oneOf(s,
+ "anyExtendedKeyUsage",
+@@ -3956,7 +3956,7 @@
+ }
+ if(value != null) {
+ List<AccessDescription> accessDescriptions =
+- new ArrayList<>();
++ new ArrayList<AccessDescription>();
+ String[] ps = value.split(",");
+ for(String item: ps) {
+ colonpos = item.indexOf(':');
+@@ -4240,7 +4240,7 @@
+ }
+
+ public static <A,B> Pair<A,B> of(A a, B b) {
+- return new Pair<>(a,b);
++ return new Pair<A,B>(a,b);
+ }
+ }
+
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/tools/policytool/PolicyTool.java openjdk-boot/jdk/src/share/classes/sun/security/tools/policytool/PolicyTool.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/tools/policytool/PolicyTool.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/tools/policytool/PolicyTool.java 2013-04-17 14:53:25.399553220 +0100
+@@ -643,7 +643,7 @@
+ Class<?> pc = Class.forName(type, true,
+ Thread.currentThread().getContextClassLoader());
+ Constructor<?> c = null;
+- Vector<String> objects = new Vector<>(2);
++ Vector<String> objects = new Vector<String>(2);
+ if (name != null) objects.add(name);
+ if (actions != null) objects.add(actions);
+ switch (objects.size()) {
+@@ -1722,7 +1722,7 @@
+ new PolicyParser.GrantEntry(signedby, codebase);
+
+ // get the new Principals
+- LinkedList<PolicyParser.PrincipalEntry> prins = new LinkedList<>();
++ LinkedList<PolicyParser.PrincipalEntry> prins = new LinkedList<PolicyParser.PrincipalEntry>();
+ TaggedList prinList = (TaggedList)getComponent(PE_PRIN_LIST);
+ for (int i = 0; i < prinList.getItemCount(); i++) {
+ prins.add((PolicyParser.PrincipalEntry)prinList.getObject(i));
+@@ -1730,7 +1730,7 @@
+ ge.principals = prins;
+
+ // get the new Permissions
+- Vector<PolicyParser.PermissionEntry> perms = new Vector<>();
++ Vector<PolicyParser.PermissionEntry> perms = new Vector<PolicyParser.PermissionEntry>();
+ TaggedList permList = (TaggedList)getComponent(PE_PERM_LIST);
+ for (int i = 0; i < permList.getItemCount(); i++) {
+ perms.addElement((PolicyParser.PermissionEntry)permList.getObject(i));
+@@ -3647,7 +3647,7 @@
+ * This is a java.awt.List that bind an Object to each String it holds.
+ */
+ class TaggedList extends List {
+- private java.util.List<Object> data = new LinkedList<>();
++ private java.util.List<Object> data = new LinkedList<Object>();
+ public TaggedList(int i, boolean b) {
+ super(i, b);
+ }
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/util/UntrustedCertificates.java openjdk-boot/jdk/src/share/classes/sun/security/util/UntrustedCertificates.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/util/UntrustedCertificates.java 2013-04-17 14:52:22.430547174 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/util/UntrustedCertificates.java 2013-04-17 14:53:25.399553220 +0100
+@@ -42,7 +42,7 @@
+ */
+ public final class UntrustedCertificates {
+
+- private final static Set<X509Certificate> untrustedCerts = new HashSet<>();
++ private final static Set<X509Certificate> untrustedCerts = new HashSet<X509Certificate>();
+
+ /**
+ * Checks if a certificate is untrusted.
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/x509/X509CertImpl.java openjdk-boot/jdk/src/share/classes/sun/security/x509/X509CertImpl.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/x509/X509CertImpl.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/x509/X509CertImpl.java 2013-04-17 14:53:25.399553220 +0100
+@@ -1260,7 +1260,7 @@
+ if (exts == null) {
+ return null;
+ }
+- Set<String> extSet = new TreeSet<>();
++ Set<String> extSet = new TreeSet<String>();
+ for (Extension ex : exts.getAllExtensions()) {
+ if (ex.isCritical()) {
+ extSet.add(ex.getExtensionId().toString());
+@@ -1290,7 +1290,7 @@
+ if (exts == null) {
+ return null;
+ }
+- Set<String> extSet = new TreeSet<>();
++ Set<String> extSet = new TreeSet<String>();
+ for (Extension ex : exts.getAllExtensions()) {
+ if (!ex.isCritical()) {
+ extSet.add(ex.getExtensionId().toString());
+@@ -1527,10 +1527,10 @@
+ if (names.isEmpty()) {
+ return Collections.<List<?>>emptySet();
+ }
+- List<List<?>> newNames = new ArrayList<>();
++ List<List<?>> newNames = new ArrayList<List<?>>();
+ for (GeneralName gname : names.names()) {
+ GeneralNameInterface name = gname.getName();
+- List<Object> nameEntry = new ArrayList<>(2);
++ List<Object> nameEntry = new ArrayList<Object>(2);
+ nameEntry.add(Integer.valueOf(name.getType()));
+ switch (name.getType()) {
+ case GeneralNameInterface.NAME_RFC822:
+@@ -1588,12 +1588,12 @@
+ }
+ }
+ if (mustClone) {
+- List<List<?>> namesCopy = new ArrayList<>();
++ List<List<?>> namesCopy = new ArrayList<List<?>>();
+ for (List<?> nameEntry : altNames) {
+ Object nameObject = nameEntry.get(1);
+ if (nameObject instanceof byte[]) {
+ List<Object> nameEntryCopy =
+- new ArrayList<>(nameEntry);
++ new ArrayList<Object>(nameEntry);
+ nameEntryCopy.set(1, ((byte[])nameObject).clone());
+ namesCopy.add(Collections.unmodifiableList(nameEntryCopy));
+ } else {
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/x509/X509CRLEntryImpl.java openjdk-boot/jdk/src/share/classes/sun/security/x509/X509CRLEntryImpl.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/x509/X509CRLEntryImpl.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/x509/X509CRLEntryImpl.java 2013-04-17 14:53:25.399553220 +0100
+@@ -352,7 +352,7 @@
+ if (extensions == null) {
+ return null;
+ }
+- Set<String> extSet = new TreeSet<>();
++ Set<String> extSet = new TreeSet<String>();
+ for (Extension ex : extensions.getAllExtensions()) {
+ if (ex.isCritical()) {
+ extSet.add(ex.getExtensionId().toString());
+@@ -373,7 +373,7 @@
+ if (extensions == null) {
+ return null;
+ }
+- Set<String> extSet = new TreeSet<>();
++ Set<String> extSet = new TreeSet<String>();
+ for (Extension ex : extensions.getAllExtensions()) {
+ if (!ex.isCritical()) {
+ extSet.add(ex.getExtensionId().toString());
+@@ -510,7 +510,7 @@
+ return Collections.emptyMap();
+ }
+ Collection<Extension> exts = extensions.getAllExtensions();
+- Map<String, java.security.cert.Extension> map = new TreeMap<>();
++ Map<String, java.security.cert.Extension> map = new TreeMap<String, java.security.cert.Extension>();
+ for (Extension ext : exts) {
+ map.put(ext.getId(), ext);
+ }
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/x509/X509CRLImpl.java openjdk-boot/jdk/src/share/classes/sun/security/x509/X509CRLImpl.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/x509/X509CRLImpl.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/x509/X509CRLImpl.java 2013-04-17 14:53:25.399553220 +0100
+@@ -104,8 +104,8 @@
+ private X500Principal issuerPrincipal = null;
+ private Date thisUpdate = null;
+ private Date nextUpdate = null;
+- private Map<X509IssuerSerial,X509CRLEntry> revokedMap = new TreeMap<>();
+- private List<X509CRLEntry> revokedList = new LinkedList<>();
++ private Map<X509IssuerSerial,X509CRLEntry> revokedMap = new TreeMap<X509IssuerSerial,X509CRLEntry>();
++ private List<X509CRLEntry> revokedList = new LinkedList<X509CRLEntry>();
+ private CRLExtensions extensions = null;
+ private final static boolean isExplicit = true;
+ private static final long YR_2050 = 2524636800000L;
+@@ -907,7 +907,7 @@
+ if (extensions == null) {
+ return null;
+ }
+- Set<String> extSet = new TreeSet<>();
++ Set<String> extSet = new TreeSet<String>();
+ for (Extension ex : extensions.getAllExtensions()) {
+ if (ex.isCritical()) {
+ extSet.add(ex.getExtensionId().toString());
+@@ -928,7 +928,7 @@
+ if (extensions == null) {
+ return null;
+ }
+- Set<String> extSet = new TreeSet<>();
++ Set<String> extSet = new TreeSet<String>();
+ for (Extension ex : extensions.getAllExtensions()) {
+ if (!ex.isCritical()) {
+ extSet.add(ex.getExtensionId().toString());
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/tools/native2ascii/Main.java openjdk-boot/jdk/src/share/classes/sun/tools/native2ascii/Main.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/tools/native2ascii/Main.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/tools/native2ascii/Main.java 2013-04-17 14:53:25.403553284 +0100
+@@ -95,7 +95,7 @@
+ * Run the converter
+ */
+ public synchronized boolean convert(String argv[]){
+- List<String> v = new ArrayList<>(2);
++ List<String> v = new ArrayList<String>(2);
+ File outputFile = null;
+ boolean createOutputFile = false;
+
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/util/locale/InternalLocaleBuilder.java openjdk-boot/jdk/src/share/classes/sun/util/locale/InternalLocaleBuilder.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/util/locale/InternalLocaleBuilder.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/util/locale/InternalLocaleBuilder.java 2013-04-17 14:53:25.403553284 +0100
+@@ -113,7 +113,7 @@
+ }
+ // Use case insensitive string to prevent duplication
+ if (uattributes == null) {
+- uattributes = new HashSet<>(4);
++ uattributes = new HashSet<CaseInsensitiveString>(4);
+ }
+ uattributes.add(new CaseInsensitiveString(attribute));
+ return this;
+@@ -157,7 +157,7 @@
+ }
+ }
+ if (ukeywords == null) {
+- ukeywords = new HashMap<>(4);
++ ukeywords = new HashMap<CaseInsensitiveString,String>(4);
+ }
+ ukeywords.put(cikey, type);
+ }
+@@ -211,7 +211,7 @@
+ setUnicodeLocaleExtension(val);
+ } else {
+ if (extensions == null) {
+- extensions = new HashMap<>(4);
++ extensions = new HashMap<CaseInsensitiveChar,String>(4);
+ }
+ extensions.put(key, val);
+ }
+@@ -262,7 +262,7 @@
+ }
+
+ if (extensions == null) {
+- extensions = new ArrayList<>(4);
++ extensions = new ArrayList<String>(4);
+ }
+ extensions.add(sb.toString());
+ } else {
+@@ -313,7 +313,7 @@
+ clearExtensions();
+
+ if (!LocaleUtils.isEmpty(bcpExtensions)) {
+- Set<CaseInsensitiveChar> done = new HashSet<>(bcpExtensions.size());
++ Set<CaseInsensitiveChar> done = new HashSet<CaseInsensitiveChar>(bcpExtensions.size());
+ for (String bcpExt : bcpExtensions) {
+ CaseInsensitiveChar key = new CaseInsensitiveChar(bcpExt);
+ // ignore duplicates
+@@ -323,7 +323,7 @@
+ setUnicodeLocaleExtension(bcpExt.substring(2));
+ } else {
+ if (extensions == null) {
+- extensions = new HashMap<>(4);
++ extensions = new HashMap<CaseInsensitiveChar,String>(4);
+ }
+ extensions.put(key, bcpExt.substring(2));
+ }
+@@ -334,7 +334,7 @@
+ if (privateuse != null && privateuse.length() > 0) {
+ // privateuse string contains prefix, e.g. "x-abc-def"
+ if (extensions == null) {
+- extensions = new HashMap<>(1);
++ extensions = new HashMap<CaseInsensitiveChar,String>(1);
+ }
+ extensions.put(new CaseInsensitiveChar(privateuse), privateuse.substring(2));
+ }
+@@ -442,19 +442,19 @@
+ UnicodeLocaleExtension ue = (UnicodeLocaleExtension)e;
+ for (String uatr : ue.getUnicodeLocaleAttributes()) {
+ if (uattributes == null) {
+- uattributes = new HashSet<>(4);
++ uattributes = new HashSet<CaseInsensitiveString>(4);
+ }
+ uattributes.add(new CaseInsensitiveString(uatr));
+ }
+ for (String ukey : ue.getUnicodeLocaleKeys()) {
+ if (ukeywords == null) {
+- ukeywords = new HashMap<>(4);
++ ukeywords = new HashMap<CaseInsensitiveString,String>(4);
+ }
+ ukeywords.put(new CaseInsensitiveString(ukey), ue.getUnicodeLocaleType(ukey));
+ }
+ } else {
+ if (extensions == null) {
+- extensions = new HashMap<>(4);
++ extensions = new HashMap<CaseInsensitiveChar,String>(4);
+ }
+ extensions.put(new CaseInsensitiveChar(key), e.getValue());
+ }
+@@ -604,7 +604,7 @@
+ break;
+ }
+ if (uattributes == null) {
+- uattributes = new HashSet<>(4);
++ uattributes = new HashSet<CaseInsensitiveString>(4);
+ }
+ uattributes.add(new CaseInsensitiveString(itr.current()));
+ itr.next();
+@@ -622,7 +622,7 @@
+ assert(typeStart == -1 || typeEnd != -1);
+ type = (typeStart == -1) ? "" : subtags.substring(typeStart, typeEnd);
+ if (ukeywords == null) {
+- ukeywords = new HashMap<>(4);
++ ukeywords = new HashMap<CaseInsensitiveString,String>(4);
+ }
+ ukeywords.put(key, type);
+
+@@ -652,7 +652,7 @@
+ assert(typeStart == -1 || typeEnd != -1);
+ type = (typeStart == -1) ? "" : subtags.substring(typeStart, typeEnd);
+ if (ukeywords == null) {
+- ukeywords = new HashMap<>(4);
++ ukeywords = new HashMap<CaseInsensitiveString,String>(4);
+ }
+ ukeywords.put(key, type);
+ }
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/util/locale/LanguageTag.java openjdk-boot/jdk/src/share/classes/sun/util/locale/LanguageTag.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/util/locale/LanguageTag.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/util/locale/LanguageTag.java 2013-04-17 14:53:25.403553284 +0100
+@@ -62,7 +62,7 @@
+ // Map contains grandfathered tags and its preferred mappings from
+ // http://www.ietf.org/rfc/rfc5646.txt
+ // Keys are lower-case strings.
+- private static final Map<String, String[]> GRANDFATHERED = new HashMap<>();
++ private static final Map<String, String[]> GRANDFATHERED = new HashMap<String,String[]>();
+
+ static {
+ // grandfathered = irregular ; non-redundant tags registered
+@@ -257,7 +257,7 @@
+ }
+ found = true;
+ if (extlangs.isEmpty()) {
+- extlangs = new ArrayList<>(3);
++ extlangs = new ArrayList<String>(3);
+ }
+ extlangs.add(s);
+ sts.parseLength = itr.currentEnd();
+@@ -322,7 +322,7 @@
+ }
+ found = true;
+ if (variants.isEmpty()) {
+- variants = new ArrayList<>(3);
++ variants = new ArrayList<String>(3);
+ }
+ variants.add(s);
+ sts.parseLength = itr.currentEnd();
+@@ -365,7 +365,7 @@
+ }
+
+ if (extensions.isEmpty()) {
+- extensions = new ArrayList<>(4);
++ extensions = new ArrayList<String>(4);
+ }
+ extensions.add(sb.toString());
+ found = true;
+@@ -462,7 +462,7 @@
+ break;
+ }
+ if (variants == null) {
+- variants = new ArrayList<>();
++ variants = new ArrayList<String>();
+ }
+ variants.add(var); // Do not canonicalize!
+ varitr.next();
+@@ -503,7 +503,7 @@
+ privateuse = ext.getValue();
+ } else {
+ if (extensions == null) {
+- extensions = new ArrayList<>();
++ extensions = new ArrayList<String>();
+ }
+ extensions.add(locextKey.toString() + SEP + ext.getValue());
+ }
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/util/locale/LocaleExtensions.java openjdk-boot/jdk/src/share/classes/sun/util/locale/LocaleExtensions.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/util/locale/LocaleExtensions.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/util/locale/LocaleExtensions.java 2013-04-17 14:53:25.403553284 +0100
+@@ -81,7 +81,7 @@
+ }
+
+ // Build extension map
+- SortedMap<Character, Extension> map = new TreeMap<>();
++ SortedMap<Character, Extension> map = new TreeMap<Character,Extension>();
+ if (hasExtension) {
+ for (Entry<CaseInsensitiveChar, String> ext : extensions.entrySet()) {
+ char key = LocaleUtils.toLower(ext.getKey().value());
+@@ -104,14 +104,14 @@
+ SortedMap<String, String> ukmap = null;
+
+ if (hasUAttributes) {
+- uaset = new TreeSet<>();
++ uaset = new TreeSet<String>();
+ for (CaseInsensitiveString cis : uattributes) {
+ uaset.add(LocaleUtils.toLowerString(cis.value()));
+ }
+ }
+
+ if (hasUKeywords) {
+- ukmap = new TreeMap<>();
++ ukmap = new TreeMap<String,String>();
+ for (Entry<CaseInsensitiveString, String> kwd : ukeywords.entrySet()) {
+ String key = LocaleUtils.toLowerString(kwd.getKey().value());
+ String type = LocaleUtils.toLowerString(kwd.getValue());
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/util/locale/LocaleObjectCache.java openjdk-boot/jdk/src/share/classes/sun/util/locale/LocaleObjectCache.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/util/locale/LocaleObjectCache.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/util/locale/LocaleObjectCache.java 2013-04-17 14:53:25.403553284 +0100
+@@ -38,14 +38,14 @@
+
+ public abstract class LocaleObjectCache<K, V> {
+ private ConcurrentMap<K, CacheEntry<K, V>> map;
+- private ReferenceQueue<V> queue = new ReferenceQueue<>();
++ private ReferenceQueue<V> queue = new ReferenceQueue<V>();
+
+ public LocaleObjectCache() {
+ this(16, 0.75f, 16);
+ }
+
+ public LocaleObjectCache(int initialCapacity, float loadFactor, int concurrencyLevel) {
+- map = new ConcurrentHashMap<>(initialCapacity, loadFactor, concurrencyLevel);
++ map = new ConcurrentHashMap<K, CacheEntry<K,V>>(initialCapacity, loadFactor, concurrencyLevel);
+ }
+
+ public V get(K key) {
+@@ -64,7 +64,7 @@
+ return null;
+ }
+
+- CacheEntry<K, V> newEntry = new CacheEntry<>(key, newVal, queue);
++ CacheEntry<K, V> newEntry = new CacheEntry<K,V>(key, newVal, queue);
+
+ entry = map.putIfAbsent(key, newEntry);
+ if (entry == null) {
+@@ -81,7 +81,7 @@
+ }
+
+ protected V put(K key, V value) {
+- CacheEntry<K, V> entry = new CacheEntry<>(key, value, queue);
++ CacheEntry<K, V> entry = new CacheEntry<K,V>(key, value, queue);
+ CacheEntry<K, V> oldEntry = map.put(key, entry);
+ return (oldEntry == null) ? null : oldEntry.get();
+ }
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/util/LocaleServiceProviderPool.java openjdk-boot/jdk/src/share/classes/sun/util/LocaleServiceProviderPool.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/util/LocaleServiceProviderPool.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/util/LocaleServiceProviderPool.java 2013-04-17 14:53:25.403553284 +0100
+@@ -59,7 +59,7 @@
+ * set of provider implementations of a particular locale sensitive service.
+ */
+ private static ConcurrentMap<Class<? extends LocaleServiceProvider>, LocaleServiceProviderPool> poolOfPools =
+- new ConcurrentHashMap<>();
++ new ConcurrentHashMap<Class<? extends LocaleServiceProvider>, LocaleServiceProviderPool>();
+
+ /**
+ * A Set containing locale service providers that implement the
+@@ -264,7 +264,7 @@
+ synchronized (LocaleServiceProviderPool.class) {
+ if (availableJRELocales == null) {
+ Locale[] allLocales = LocaleData.getAvailableLocales();
+- List<Locale> tmpList = new ArrayList<>(allLocales.length);
++ List<Locale> tmpList = new ArrayList<Locale>(allLocales.length);
+ for (Locale locale : allLocales) {
+ tmpList.add(getLookupLocale(locale));
+ }
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/util/logging/PlatformLogger.java openjdk-boot/jdk/src/share/classes/sun/util/logging/PlatformLogger.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/util/logging/PlatformLogger.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/util/logging/PlatformLogger.java 2013-04-17 14:53:25.403553284 +0100
+@@ -113,7 +113,7 @@
+
+ // Table of known loggers. Maps names to PlatformLoggers.
+ private static Map<String,WeakReference<PlatformLogger>> loggers =
+- new HashMap<>();
++ new HashMap<String,WeakReference<PlatformLogger>>();
+
+ /**
+ * Returns a PlatformLogger of a given name.
+@@ -126,7 +126,7 @@
+ }
+ if (log == null) {
+ log = new PlatformLogger(name);
+- loggers.put(name, new WeakReference<>(log));
++ loggers.put(name, new WeakReference<PlatformLogger>(log));
+ }
+ return log;
+ }
+@@ -469,7 +469,7 @@
+ */
+ static class JavaLogger extends LoggerProxy {
+ private static final Map<Integer, Object> levelObjects =
+- new HashMap<>();
++ new HashMap<Integer, Object>();
+
+ static {
+ if (LoggingSupport.isAvailable()) {
+diff -Nru openjdk-boot.orig/jdk/src/share/demo/nio/zipfs/Demo.java openjdk-boot/jdk/src/share/demo/nio/zipfs/Demo.java
+--- openjdk-boot.orig/jdk/src/share/demo/nio/zipfs/Demo.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/demo/nio/zipfs/Demo.java 2013-04-17 14:53:25.403553284 +0100
+@@ -160,7 +160,7 @@
+ }
+
+ Action action = Action.valueOf(args[0]);
+- Map<String, Object> env = env = new HashMap<>();
++ Map<String, Object> env = env = new HashMap<String,Object>();
+ if (action == Action.create)
+ env.put("create", "true");
+ try (FileSystem fs = provider.newFileSystem(Paths.get(args[1]), env)) {
+@@ -656,9 +656,9 @@
+
+ private static void fchCopy(Path src, Path dst) throws IOException
+ {
+- Set<OpenOption> read = new HashSet<>();
++ Set<OpenOption> read = new HashSet<OpenOption>();
+ read.add(READ);
+- Set<OpenOption> openwrite = new HashSet<>();
++ Set<OpenOption> openwrite = new HashSet<OpenOption>();
+ openwrite.add(CREATE_NEW);
+ openwrite.add(WRITE);
+
+@@ -676,9 +676,9 @@
+
+ private static void chCopy(Path src, Path dst) throws IOException
+ {
+- Set<OpenOption> read = new HashSet<>();
++ Set<OpenOption> read = new HashSet<OpenOption>();
+ read.add(READ);
+- Set<OpenOption> openwrite = new HashSet<>();
++ Set<OpenOption> openwrite = new HashSet<OpenOption>();
+ openwrite.add(CREATE_NEW);
+ openwrite.add(WRITE);
+
+diff -Nru openjdk-boot.orig/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipCoder.java openjdk-boot/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipCoder.java
+--- openjdk-boot.orig/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipCoder.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipCoder.java 2013-04-17 14:53:25.403553284 +0100
+@@ -142,8 +142,8 @@
+ return new ZipCoder(Charset.defaultCharset());
+ }
+
+- private final ThreadLocal<CharsetDecoder> decTL = new ThreadLocal<>();
+- private final ThreadLocal<CharsetEncoder> encTL = new ThreadLocal<>();
++ private final ThreadLocal<CharsetDecoder> decTL = new ThreadLocal<CharsetDecoder>();
++ private final ThreadLocal<CharsetEncoder> encTL = new ThreadLocal<CharsetEncoder>();r
+
+ private CharsetDecoder decoder() {
+ CharsetDecoder dec = decTL.get();
+diff -Nru openjdk-boot.orig/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipFileAttributeView.java openjdk-boot/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipFileAttributeView.java
+--- openjdk-boot.orig/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipFileAttributeView.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipFileAttributeView.java 2013-04-17 14:53:25.403553284 +0100
+@@ -134,7 +134,7 @@
+ throws IOException
+ {
+ ZipFileAttributes zfas = readAttributes();
+- LinkedHashMap<String, Object> map = new LinkedHashMap<>();
++ LinkedHashMap<String, Object> map = new LinkedHashMap<String,Object>();
+ if ("*".equals(attributes)) {
+ for (AttrID id : AttrID.values()) {
+ try {
+diff -Nru openjdk-boot.orig/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipFileSystem.java openjdk-boot/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipFileSystem.java
+--- openjdk-boot.orig/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipFileSystem.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipFileSystem.java 2013-04-17 14:53:25.407553348 +0100
+@@ -157,7 +157,7 @@
+
+ @Override
+ public Iterable<Path> getRootDirectories() {
+- ArrayList<Path> pathArr = new ArrayList<>();
++ ArrayList<Path> pathArr = new ArrayList<Path>();
+ pathArr.add(new ZipPath(this, new byte[]{'/'}));
+ return pathArr;
+ }
+@@ -202,7 +202,7 @@
+
+ @Override
+ public Iterable<FileStore> getFileStores() {
+- ArrayList<FileStore> list = new ArrayList<>(1);
++ ArrayList<FileStore> list = new ArrayList<FileStore>(1);
+ list.add(new ZipFileStore(new ZipPath(this, new byte[]{'/'})));
+ return list;
+ }
+@@ -268,7 +268,7 @@
+ endWrite();
+ }
+ if (!streams.isEmpty()) { // unlock and close all remaining streams
+- Set<InputStream> copy = new HashSet<>(streams);
++ Set<InputStream> copy = new HashSet<InputStream>(streams);
+ for (InputStream is: copy)
+ is.close();
+ }
+@@ -396,7 +396,7 @@
+ IndexNode inode = getInode(path);
+ if (inode == null)
+ throw new NotDirectoryException(getString(path));
+- List<Path> list = new ArrayList<>();
++ List<Path> list = new ArrayList<Path>();
+ IndexNode child = inode.child;
+ while (child != null) {
+ ZipPath zp = toZipPath(child.name);
+@@ -825,7 +825,7 @@
+
+ // the ex-channel and ex-path that need to close when their outstanding
+ // input streams are all closed by the obtainers.
+- private Set<ExChannelCloser> exChClosers = new HashSet<>();
++ private Set<ExChannelCloser> exChClosers = new HashSet<ExChannelCloser>();
+
+ private Set<Path> tmppaths = Collections.synchronizedSet(new HashSet<Path>());
+ private Path getTempPathForEntry(byte[] path) throws IOException {
+@@ -1022,7 +1022,7 @@
+ private byte[] initCEN() throws IOException {
+ end = findEND();
+ if (end.endpos == 0) {
+- inodes = new LinkedHashMap<>(10);
++ inodes = new LinkedHashMap<IndexNode,IndexNode>(10);
+ locpos = 0;
+ buildNodeTree();
+ return null; // only END header present
+@@ -1043,7 +1043,7 @@
+ zerror("read CEN tables failed");
+ }
+ // Iterate through the entries in the central directory
+- inodes = new LinkedHashMap<>(end.centot + 1);
++ inodes = new LinkedHashMap<IndexNode,IndexNode>(end.centot + 1);
+ int pos = 0;
+ int limit = cen.length - ENDHDR;
+ while (pos < limit) {
+@@ -1190,7 +1190,7 @@
+ Path tmpFile = createTempFileInSameDirectoryAs(zfpath);
+ try (OutputStream os = new BufferedOutputStream(Files.newOutputStream(tmpFile, WRITE)))
+ {
+- ArrayList<Entry> elist = new ArrayList<>(inodes.size());
++ ArrayList<Entry> elist = new ArrayList(inodes.size());
+ long written = 0;
+ byte[] buf = new byte[8192];
+ Entry e = null;
+@@ -1601,7 +1601,7 @@
+ // Maxmum number of de/inflater we cache
+ private final int MAX_FLATER = 20;
+ // List of available Inflater objects for decompression
+- private final List<Inflater> inflaters = new ArrayList<>();
++ private final List<Inflater> inflaters = new ArrayList<Inflater>();
+
+ // Gets an inflater from the list of available inflaters or allocates
+ // a new one.
+@@ -1630,7 +1630,7 @@
+ }
+
+ // List of available Deflater objects for compression
+- private final List<Deflater> deflaters = new ArrayList<>();
++ private final List<Deflater> deflaters = new ArrayList<Deflater>();
+
+ // Gets an deflater from the list of available deflaters or allocates
+ // a new one.
+@@ -2340,7 +2340,7 @@
+ private void buildNodeTree() throws IOException {
+ beginWrite();
+ try {
+- HashSet<IndexNode> dirs = new HashSet<>();
++ HashSet<IndexNode> dirs = new HashSet<IndexNode>();
+ IndexNode root = new IndexNode(ROOTPATH, -1);
+ inodes.put(root, root);
+ dirs.add(root);
+diff -Nru openjdk-boot.orig/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipFileSystemProvider.java openjdk-boot/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipFileSystemProvider.java
+--- openjdk-boot.orig/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipFileSystemProvider.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipFileSystemProvider.java 2013-04-17 14:53:25.407553348 +0100
+@@ -62,7 +62,7 @@
+ public class ZipFileSystemProvider extends FileSystemProvider {
+
+
+- private final Map<Path, ZipFileSystem> filesystems = new HashMap<>();
++ private final Map<Path, ZipFileSystem> filesystems = new HashMap<Path,ZipFileSystem>();
+
+ public ZipFileSystemProvider() {}
+
+diff -Nru openjdk-boot.orig/jdk/src/solaris/classes/java/lang/ProcessEnvironment.java openjdk-boot/jdk/src/solaris/classes/java/lang/ProcessEnvironment.java
+--- openjdk-boot.orig/jdk/src/solaris/classes/java/lang/ProcessEnvironment.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/solaris/classes/java/lang/ProcessEnvironment.java 2013-04-17 14:53:25.407553348 +0100
+@@ -68,7 +68,7 @@
+ // We cache the C environment. This means that subsequent calls
+ // to putenv/setenv from C will not be visible from Java code.
+ byte[][] environ = environ();
+- theEnvironment = new HashMap<>(environ.length/2 + 3);
++ theEnvironment = new HashMap<Variable,Value>(environ.length/2 + 3);
+ // Read environment variables back to front,
+ // so that earlier variables override later ones.
+ for (int i = environ.length-1; i > 0; i-=2)
+diff -Nru openjdk-boot.orig/jdk/src/solaris/classes/java/util/prefs/FileSystemPreferences.java openjdk-boot/jdk/src/solaris/classes/java/util/prefs/FileSystemPreferences.java
+--- openjdk-boot.orig/jdk/src/solaris/classes/java/util/prefs/FileSystemPreferences.java 2013-04-17 14:52:22.434547238 +0100
++++ openjdk-boot/jdk/src/solaris/classes/java/util/prefs/FileSystemPreferences.java 2013-04-17 14:53:39.871784437 +0100
+@@ -354,7 +354,7 @@
+ * log against that map. The resulting map is then written back
+ * to the disk.
+ */
+- final List<Change> changeLog = new ArrayList<>();
++ final List<Change> changeLog = new ArrayList<Change>();
+
+ /**
+ * Represents a change to a preference.
+@@ -507,7 +507,7 @@
+ });
+ if (newNode) {
+ // These 2 things guarantee node will get wrtten at next flush/sync
+- prefsCache = new TreeMap<>();
++ prefsCache = new TreeMap<String, String>();
+ nodeCreate = new NodeCreate();
+ changeLog.add(nodeCreate);
+ }
+@@ -550,7 +550,7 @@
+ loadCache();
+ } catch(Exception e) {
+ // assert lastSyncTime == 0;
+- prefsCache = new TreeMap<>();
++ prefsCache = new TreeMap<String, String>();
+ }
+ }
+
+@@ -567,7 +567,7 @@
+ AccessController.doPrivileged(
+ new PrivilegedExceptionAction<Void>() {
+ public Void run() throws BackingStoreException {
+- Map<String, String> m = new TreeMap<>();
++ Map<String, String> m = new TreeMap<String, String>();
+ long newLastSyncTime = 0;
+ FileInputStream fis = null;
+ try {
+@@ -581,7 +581,7 @@
+ prefsFile.renameTo( new File(
+ prefsFile.getParentFile(),
+ "IncorrectFormatPrefs.xml"));
+- m = new TreeMap<>();
++ m = new TreeMap<String, String>();
+ } else if (e instanceof FileNotFoundException) {
+ getLogger().warning("Prefs file removed in background "
+ + prefsFile.getPath());
+@@ -662,7 +662,7 @@
+ return AccessController.doPrivileged(
+ new PrivilegedAction<String[]>() {
+ public String[] run() {
+- List<String> result = new ArrayList<>();
++ List<String> result = new ArrayList<String>();
+ File[] dirContents = dir.listFiles();
+ if (dirContents != null) {
+ for (int i = 0; i < dirContents.length; i++)
+@@ -810,7 +810,7 @@
+ } else if (lastSyncTime != 0 && !dir.exists()) {
+ // This node was removed in the background. Playback any changes
+ // against a virgin (empty) Map.
+- prefsCache = new TreeMap<>();
++ prefsCache = new TreeMap<String, String>();
+ replayChanges();
+ }
+ if (!changeLog.isEmpty()) {
+diff -Nru openjdk-boot.orig/jdk/src/solaris/classes/sun/net/dns/ResolverConfigurationImpl.java openjdk-boot/jdk/src/solaris/classes/sun/net/dns/ResolverConfigurationImpl.java
+--- openjdk-boot.orig/jdk/src/solaris/classes/sun/net/dns/ResolverConfigurationImpl.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/solaris/classes/sun/net/dns/ResolverConfigurationImpl.java 2013-04-17 14:53:25.407553348 +0100
+@@ -60,7 +60,7 @@
+ int maxperkeyword,
+ int maxkeywords)
+ {
+- LinkedList<String> ll = new LinkedList<>();
++ LinkedList<String> ll = new LinkedList<String>();
+
+ try {
+ BufferedReader in =
+@@ -200,7 +200,7 @@
+ // no local domain so try fallback (RPC) domain or
+ // hostname
+
+- sl = new LinkedList<>();
++ sl = new LinkedList<String>();
+ String domain = fallbackDomain0();
+ if (domain != null && domain.length() > 0) {
+ sl.add(domain);
+diff -Nru openjdk-boot.orig/jdk/src/solaris/classes/sun/nio/ch/DevPollArrayWrapper.java openjdk-boot/jdk/src/solaris/classes/sun/nio/ch/DevPollArrayWrapper.java
+--- openjdk-boot.orig/jdk/src/solaris/classes/sun/nio/ch/DevPollArrayWrapper.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/solaris/classes/sun/nio/ch/DevPollArrayWrapper.java 2013-04-17 14:53:25.407553348 +0100
+@@ -130,7 +130,7 @@
+ pollArrayAddress = pollArray.address();
+ wfd = init();
+ if (OPEN_MAX > MAX_UPDATE_ARRAY_SIZE)
+- eventsHigh = new HashMap<>();
++ eventsHigh = new HashMap<Integer,Byte>();
+ }
+
+ void initInterrupt(int fd0, int fd1) {
+diff -Nru openjdk-boot.orig/jdk/src/solaris/classes/sun/nio/cs/ext/CompoundTextSupport.java openjdk-boot/jdk/src/solaris/classes/sun/nio/cs/ext/CompoundTextSupport.java
+--- openjdk-boot.orig/jdk/src/solaris/classes/sun/nio/cs/ext/CompoundTextSupport.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/solaris/classes/sun/nio/cs/ext/CompoundTextSupport.java 2013-04-17 14:53:25.407553348 +0100
+@@ -153,12 +153,12 @@
+
+ static {
+ HashMap<ControlSequence, String> tSequenceToEncodingMap =
+- new HashMap<>(33, 1.0f);
++ new HashMap<ControlSequence, String>(33, 1.0f);
+ HashMap<ControlSequence, Boolean> tHighBitsMap =
+- new HashMap<>(31, 1.0f);
++ new HashMap<ControlSequence, Boolean>(31, 1.0f);
+ HashMap<String, ControlSequence> tEncodingToSequenceMap =
+- new HashMap<>(21, 1.0f);
+- ArrayList<String> tEncodings = new ArrayList<>(21);
++ new HashMap<String, ControlSequence>(21, 1.0f);
++ ArrayList<String> tEncodings = new ArrayList<String>(21);
+
+ if (!(isEncodingSupported("US-ASCII") &&
+ isEncodingSupported("ISO-8859-1")))
+diff -Nru openjdk-boot.orig/jdk/src/solaris/classes/sun/nio/fs/LinuxFileSystem.java openjdk-boot/jdk/src/solaris/classes/sun/nio/fs/LinuxFileSystem.java
+--- openjdk-boot.orig/jdk/src/solaris/classes/sun/nio/fs/LinuxFileSystem.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/solaris/classes/sun/nio/fs/LinuxFileSystem.java 2013-04-17 14:53:25.407553348 +0100
+@@ -53,7 +53,7 @@
+ static final Set<String> supportedFileAttributeViews =
+ supportedFileAttributeViews();
+ private static Set<String> supportedFileAttributeViews() {
+- Set<String> result = new HashSet<>();
++ Set<String> result = new HashSet<String>();
+ result.addAll(standardFileAttributeViews());
+ // additional Linux-specific views
+ result.add("dos");
+@@ -76,7 +76,7 @@
+ * Returns object to iterate over the mount entries in the given fstab file.
+ */
+ Iterable<UnixMountEntry> getMountEntries(String fstab) {
+- ArrayList<UnixMountEntry> entries = new ArrayList<>();
++ ArrayList<UnixMountEntry> entries = new ArrayList<UnixMountEntry>();
+ try {
+ long fp = setmntent(fstab.getBytes(), "r".getBytes());
+ try {
+diff -Nru openjdk-boot.orig/jdk/src/solaris/classes/sun/nio/fs/LinuxUserDefinedFileAttributeView.java openjdk-boot/jdk/src/solaris/classes/sun/nio/fs/LinuxUserDefinedFileAttributeView.java
+--- openjdk-boot.orig/jdk/src/solaris/classes/sun/nio/fs/LinuxUserDefinedFileAttributeView.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/solaris/classes/sun/nio/fs/LinuxUserDefinedFileAttributeView.java 2013-04-17 14:53:25.407553348 +0100
+@@ -63,7 +63,7 @@
+
+ // Parses buffer as array of NULL-terminated C strings.
+ private List<String> asList(long address, int size) {
+- List<String> list = new ArrayList<>();
++ List<String> list = new ArrayList<String>();
+ int start = 0;
+ int pos = 0;
+ while (pos < size) {
+diff -Nru openjdk-boot.orig/jdk/src/solaris/classes/sun/nio/fs/SolarisAclFileAttributeView.java openjdk-boot/jdk/src/solaris/classes/sun/nio/fs/SolarisAclFileAttributeView.java
+--- openjdk-boot.orig/jdk/src/solaris/classes/sun/nio/fs/SolarisAclFileAttributeView.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/solaris/classes/sun/nio/fs/SolarisAclFileAttributeView.java 2013-04-17 14:53:25.407553348 +0100
+@@ -198,7 +198,7 @@
+ * Decode the buffer, returning an ACL
+ */
+ private static List<AclEntry> decode(long address, int n) {
+- ArrayList<AclEntry> acl = new ArrayList<>(n);
++ ArrayList<AclEntry> acl = new ArrayList<AclEntry>(n);
+ for (int i=0; i<n; i++) {
+ long offset = address + i*SIZEOF_ACE_T;
+
+diff -Nru openjdk-boot.orig/jdk/src/solaris/classes/sun/nio/fs/SolarisFileSystem.java openjdk-boot/jdk/src/solaris/classes/sun/nio/fs/SolarisFileSystem.java
+--- openjdk-boot.orig/jdk/src/solaris/classes/sun/nio/fs/SolarisFileSystem.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/solaris/classes/sun/nio/fs/SolarisFileSystem.java 2013-04-17 14:53:25.411553412 +0100
+@@ -76,7 +76,7 @@
+ static final Set<String> supportedFileAttributeViews =
+ supportedFileAttributeViews();
+ private static Set<String> supportedFileAttributeViews() {
+- Set<String> result = new HashSet<>();
++ Set<String> result = new HashSet<String>();
+ result.addAll(standardFileAttributeViews());
+ // additional Solaris-specific views
+ result.add("acl");
+@@ -101,7 +101,7 @@
+ */
+ @Override
+ Iterable<UnixMountEntry> getMountEntries() {
+- ArrayList<UnixMountEntry> entries = new ArrayList<>();
++ ArrayList<UnixMountEntry> entries = new ArrayList<UnixMountEntry>();
+ try {
+ UnixPath mnttab = new UnixPath(this, "/etc/mnttab");
+ long fp = fopen(mnttab, "r");
+diff -Nru openjdk-boot.orig/jdk/src/solaris/classes/sun/nio/fs/SolarisUserDefinedFileAttributeView.java openjdk-boot/jdk/src/solaris/classes/sun/nio/fs/SolarisUserDefinedFileAttributeView.java
+--- openjdk-boot.orig/jdk/src/solaris/classes/sun/nio/fs/SolarisUserDefinedFileAttributeView.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/solaris/classes/sun/nio/fs/SolarisUserDefinedFileAttributeView.java 2013-04-17 14:53:25.411553412 +0100
+@@ -83,7 +83,7 @@
+ }
+
+ // read list of extended attributes
+- List<String> list = new ArrayList<>();
++ List<String> list = new ArrayList<String>();
+ try {
+ byte[] name;
+ while ((name = readdir(dp)) != null) {
+diff -Nru openjdk-boot.orig/jdk/src/solaris/classes/sun/nio/fs/UnixFileAttributes.java openjdk-boot/jdk/src/solaris/classes/sun/nio/fs/UnixFileAttributes.java
+--- openjdk-boot.orig/jdk/src/solaris/classes/sun/nio/fs/UnixFileAttributes.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/solaris/classes/sun/nio/fs/UnixFileAttributes.java 2013-04-17 14:53:25.411553412 +0100
+@@ -194,7 +194,7 @@
+ @Override
+ public Set<PosixFilePermission> permissions() {
+ int bits = (st_mode & UnixConstants.S_IAMB);
+- HashSet<PosixFilePermission> perms = new HashSet<>();
++ HashSet<PosixFilePermission> perms = new HashSet<PosixFilePermission>();
+
+ if ((bits & UnixConstants.S_IRUSR) > 0)
+ perms.add(PosixFilePermission.OWNER_READ);
+diff -Nru openjdk-boot.orig/jdk/src/windows/classes/java/lang/ProcessEnvironment.java openjdk-boot/jdk/src/windows/classes/java/lang/ProcessEnvironment.java
+--- openjdk-boot.orig/jdk/src/windows/classes/java/lang/ProcessEnvironment.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/windows/classes/java/lang/ProcessEnvironment.java 2013-04-17 14:53:25.411553412 +0100
+@@ -250,7 +250,8 @@
+ envblock.substring(eql+1,end));
+ }
+
+- theCaseInsensitiveEnvironment = new TreeMap<>(nameComparator);
++ theCaseInsensitiveEnvironment
++ = new TreeMap<String,String>(nameComparator);
+ theCaseInsensitiveEnvironment.putAll(theEnvironment);
+ }
+
+@@ -295,7 +296,8 @@
+ // Only for use by ProcessImpl.start()
+ String toEnvironmentBlock() {
+ // Sort Unicode-case-insensitively by name
+- List<Map.Entry<String,String>> list = new ArrayList<>(entrySet());
++ List<Map.Entry<String,String>> list
++ = new ArrayList<Map.Entry<String,String>>(entrySet());
+ Collections.sort(list, entryComparator);
+
+ StringBuilder sb = new StringBuilder(size()*30);
+diff -Nru openjdk-boot.orig/jdk/src/windows/classes/sun/net/dns/ResolverConfigurationImpl.java openjdk-boot/jdk/src/windows/classes/sun/net/dns/ResolverConfigurationImpl.java
+--- openjdk-boot.orig/jdk/src/windows/classes/sun/net/dns/ResolverConfigurationImpl.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/windows/classes/sun/net/dns/ResolverConfigurationImpl.java 2013-04-17 14:53:25.411553412 +0100
+@@ -63,7 +63,7 @@
+ // Parse string that consists of token delimited by space or commas
+ // and return LinkedHashMap
+ private LinkedList<String> stringToList(String str) {
+- LinkedList<String> ll = new LinkedList<>();
++ LinkedList<String> ll = new LinkedList<String>();
+
+ // comma and space are valid delimites
+ StringTokenizer st = new StringTokenizer(str, ", ");
+diff -Nru openjdk-boot.orig/jdk/src/windows/classes/sun/nio/fs/WindowsFileSystem.java openjdk-boot/jdk/src/windows/classes/sun/nio/fs/WindowsFileSystem.java
+--- openjdk-boot.orig/jdk/src/windows/classes/sun/nio/fs/WindowsFileSystem.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/windows/classes/sun/nio/fs/WindowsFileSystem.java 2013-04-17 14:53:25.411553412 +0100
+@@ -128,7 +128,7 @@
+ }
+
+ // iterate over roots, ignoring those that the security manager denies
+- ArrayList<Path> result = new ArrayList<>();
++ ArrayList<Path> result = new ArrayList<Path>();
+ SecurityManager sm = System.getSecurityManager();
+ for (int i = 0; i <= 25; i++) { // 0->A, 1->B, 2->C...
+ if ((drives & (1 << i)) != 0) {
+diff -Nru openjdk-boot.orig/jdk/src/windows/classes/sun/nio/fs/WindowsPath.java openjdk-boot/jdk/src/windows/classes/sun/nio/fs/WindowsPath.java
+--- openjdk-boot.orig/jdk/src/windows/classes/sun/nio/fs/WindowsPath.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/windows/classes/sun/nio/fs/WindowsPath.java 2013-04-17 14:53:25.411553412 +0100
+@@ -575,7 +575,7 @@
+ // generate offset array
+ private void initOffsets() {
+ if (offsets == null) {
+- ArrayList<Integer> list = new ArrayList<>();
++ ArrayList<Integer> list = new ArrayList<Integer>();
+ if (isEmpty()) {
+ // empty path considered to have one name element
+ list.add(0);
+diff -Nru openjdk-boot.orig/jdk/src/windows/classes/sun/nio/fs/WindowsSecurityDescriptor.java openjdk-boot/jdk/src/windows/classes/sun/nio/fs/WindowsSecurityDescriptor.java
+--- openjdk-boot.orig/jdk/src/windows/classes/sun/nio/fs/WindowsSecurityDescriptor.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/windows/classes/sun/nio/fs/WindowsSecurityDescriptor.java 2013-04-17 14:53:25.411553412 +0100
+@@ -378,7 +378,7 @@
+ AclInformation aclInfo = GetAclInformation(aclAddress);
+ aceCount = aclInfo.aceCount();
+ }
+- ArrayList<AclEntry> result = new ArrayList<>(aceCount);
++ ArrayList<AclEntry> result = new ArrayList<AclEntry>(aceCount);
+
+ // decode each of the ACEs to AclEntry objects
+ for (int i=0; i<aceCount; i++) {
+diff -Nru openjdk-boot.orig/jdk/src/windows/classes/sun/nio/fs/WindowsUserDefinedFileAttributeView.java openjdk-boot/jdk/src/windows/classes/sun/nio/fs/WindowsUserDefinedFileAttributeView.java
+--- openjdk-boot.orig/jdk/src/windows/classes/sun/nio/fs/WindowsUserDefinedFileAttributeView.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/src/windows/classes/sun/nio/fs/WindowsUserDefinedFileAttributeView.java 2013-04-17 14:53:25.411553412 +0100
+@@ -65,7 +65,7 @@
+
+ // enumerates the file streams using FindFirstStream/FindNextStream APIs.
+ private List<String> listUsingStreamEnumeration() throws IOException {
+- List<String> list = new ArrayList<>();
++ List<String> list = new ArrayList<String>();
+ try {
+ FirstStream first = FindFirstStream(file.getPathForWin32Calls());
+ if (first != null) {
+@@ -114,7 +114,7 @@
+ NativeBuffer buffer = null;
+
+ // result with names of alternative data streams
+- final List<String> list = new ArrayList<>();
++ final List<String> list = new ArrayList<String>();
+
+ try {
+ buffer = NativeBuffers.getNativeBuffer(BUFFER_SIZE);
+@@ -216,7 +216,7 @@
+ // wrap with channel
+ FileChannel fc = null;
+ try {
+- Set<OpenOption> opts = new HashSet<>();
++ Set<OpenOption> opts = new HashSet<OpenOption>();
+ opts.add(READ);
+ if (!followLinks)
+ opts.add(WindowsChannelFactory.OPEN_REPARSE_POINT);
+@@ -243,7 +243,7 @@
+ // wrap with channel
+ FileChannel fc = null;
+ try {
+- Set<OpenOption> opts = new HashSet<>();
++ Set<OpenOption> opts = new HashSet<OpenOption>();
+ opts.add(READ);
+ if (!followLinks)
+ opts.add(WindowsChannelFactory.OPEN_REPARSE_POINT);
+@@ -298,7 +298,7 @@
+ x.rethrowAsIOException(file);
+ }
+ try {
+- Set<OpenOption> opts = new HashSet<>();
++ Set<OpenOption> opts = new HashSet<OpenOption>();
+ if (!followLinks)
+ opts.add(WindowsChannelFactory.OPEN_REPARSE_POINT);
+ opts.add(CREATE);
+diff -Nru openjdk-boot.orig/jdk/test/java/io/Serializable/NPEProvoker/NPEProvoker.java openjdk-boot/jdk/test/java/io/Serializable/NPEProvoker/NPEProvoker.java
+--- openjdk-boot.orig/jdk/test/java/io/Serializable/NPEProvoker/NPEProvoker.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/test/java/io/Serializable/NPEProvoker/NPEProvoker.java 2013-04-17 14:53:25.411553412 +0100
+@@ -56,7 +56,7 @@
+ public static void main(String[] args) {
+ System.err.println("\n Regression test for bug 6541870\n");
+ try {
+- ArrayList<NPEProvoker> list = new ArrayList<>();
++ ArrayList<NPEProvoker> list = new ArrayList<NPEProvoker>();
+ list.add(new NPEProvoker());
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ ObjectOutputStream oos = new ObjectOutputStream(baos);
+diff -Nru openjdk-boot.orig/jdk/test/java/lang/instrument/ilib/InjectBytecodes.java openjdk-boot/jdk/test/java/lang/instrument/ilib/InjectBytecodes.java
+--- openjdk-boot.orig/jdk/test/java/lang/instrument/ilib/InjectBytecodes.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/test/java/lang/instrument/ilib/InjectBytecodes.java 2013-04-17 14:53:25.411553412 +0100
+@@ -50,7 +50,7 @@
+ private final Injector[] after = new Injector[256];
+ private final String className;
+ private final String methodName;
+- private final Map<Integer,byte[]> snippets = new HashMap<>();
++ private final Map<Integer,byte[]> snippets = new HashMap<Integer,byte[]>();
+
+ private int pos;
+ private int newPos;
+diff -Nru openjdk-boot.orig/jdk/test/java/lang/instrument/ilib/Inject.java openjdk-boot/jdk/test/java/lang/instrument/ilib/Inject.java
+--- openjdk-boot.orig/jdk/test/java/lang/instrument/ilib/Inject.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/test/java/lang/instrument/ilib/Inject.java 2013-04-17 14:53:25.411553412 +0100
+@@ -107,7 +107,7 @@
+ class IndexedInjector implements TrackerInjector {
+ int counter = 0;
+ int tracker;
+- List<Info> infoList = new ArrayList<>();
++ List<Info> infoList = new ArrayList<Info>();
+
+ public int stackSize(int currentSize) {
+ return currentSize + 1;
+diff -Nru openjdk-boot.orig/jdk/test/java/lang/reflect/Generics/TestPlainArrayNotGeneric.java openjdk-boot/jdk/test/java/lang/reflect/Generics/TestPlainArrayNotGeneric.java
+--- openjdk-boot.orig/jdk/test/java/lang/reflect/Generics/TestPlainArrayNotGeneric.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/test/java/lang/reflect/Generics/TestPlainArrayNotGeneric.java 2013-04-17 14:53:25.415553475 +0100
+@@ -103,7 +103,7 @@
+ }
+ }
+
+- private static final Set<Type> checking = new HashSet<>();
++ private static final Set<Type> checking = new HashSet<Type>();
+
+ private static void check(Type t, String what) {
+ if (t == null || !checking.add(t))
+diff -Nru openjdk-boot.orig/jdk/test/java/util/logging/ClassLoaderLeakTest.java openjdk-boot/jdk/test/java/util/logging/ClassLoaderLeakTest.java
+--- openjdk-boot.orig/jdk/test/java/util/logging/ClassLoaderLeakTest.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/test/java/util/logging/ClassLoaderLeakTest.java 2013-04-17 14:53:25.415553475 +0100
+@@ -89,7 +89,7 @@
+
+ MyClassLoader appClassLoader = new MyClassLoader(urls, "test0");
+ WeakReference<MyClassLoader> ref =
+- new WeakReference<>(appClassLoader);
++ new WeakReference<MyClassLoader>(appClassLoader);
+
+
+ Thread appThread = new Thread(appsThreadGroup, launcher, "AppThread-0");
+diff -Nru openjdk-boot.orig/jdk/test/java/util/Random/DistinctSeeds.java openjdk-boot/jdk/test/java/util/Random/DistinctSeeds.java
+--- openjdk-boot.orig/jdk/test/java/util/Random/DistinctSeeds.java 2013-04-15 23:41:13.000000000 +0100
++++ openjdk-boot/jdk/test/java/util/Random/DistinctSeeds.java 2013-04-17 14:53:25.415553475 +0100
+@@ -59,7 +59,7 @@
+ }
+ }
+ final int threadCount = 2;
+- List<RandomCollector> collectors = new ArrayList<>();
++ List<RandomCollector> collectors = new ArrayList<RandomCollector>();
+ List<Thread> threads = new ArrayList<Thread>();
+ for (int i = 0; i < threadCount; i++) {
+ RandomCollector r = new RandomCollector();
diff --git a/patches/boot/ecj-fphexconstants.patch b/patches/boot/ecj-fphexconstants.patch
new file mode 100644
index 0000000..c8472fe
--- /dev/null
+++ b/patches/boot/ecj-fphexconstants.patch
@@ -0,0 +1,60 @@
+diff -Nru ../openjdk.orig/openjdk-boot/jdk/src/share/classes/java/lang/Double.java openjdk-boot/jdk/src/share/classes/java/lang/Double.java
+--- ../openjdk.orig/openjdk-boot/jdk/src/share/classes/java/lang/Double.java 2009-10-30 16:49:00.000000000 +0000
++++ openjdk-boot/jdk/src/share/classes/java/lang/Double.java 2009-10-30 16:59:16.000000000 +0000
+@@ -76,7 +76,7 @@
+ * {@code 0x1.fffffffffffffP+1023} and also equal to
+ * {@code Double.longBitsToDouble(0x7fefffffffffffffL)}.
+ */
+- public static final double MAX_VALUE = 0x1.fffffffffffffP+1023; // 1.7976931348623157e+308
++ public static final double MAX_VALUE = 1.7976931348623157e+308;
+
+ /**
+ * A constant holding the smallest positive normal value of type
+@@ -86,7 +86,7 @@
+ *
+ * @since 1.6
+ */
+- public static final double MIN_NORMAL = 0x1.0p-1022; // 2.2250738585072014E-308
++ public static final double MIN_NORMAL = 2.2250738585072014E-308;
+
+ /**
+ * A constant holding the smallest positive nonzero value of type
+@@ -95,7 +95,7 @@
+ * {@code 0x0.0000000000001P-1022} and also equal to
+ * {@code Double.longBitsToDouble(0x1L)}.
+ */
+- public static final double MIN_VALUE = 0x0.0000000000001P-1022; // 4.9e-324
++ public static final double MIN_VALUE = 4.9e-324;
+
+ /**
+ * Maximum exponent a finite {@code double} variable may have.
+diff -Nru ../openjdk.orig/openjdk-boot/jdk/src/share/classes/java/lang/Float.java openjdk-boot/jdk/src/share/classes/java/lang/Float.java
+--- ../openjdk.orig/openjdk-boot/jdk/src/share/classes/java/lang/Float.java 2009-10-30 16:49:00.000000000 +0000
++++ openjdk-boot/jdk/src/share/classes/java/lang/Float.java 2009-10-30 16:59:16.000000000 +0000
+@@ -76,7 +76,7 @@
+ * {@code 0x1.fffffeP+127f} and also equal to
+ * {@code Float.intBitsToFloat(0x7f7fffff)}.
+ */
+- public static final float MAX_VALUE = 0x1.fffffeP+127f; // 3.4028235e+38f
++ public static final float MAX_VALUE = 3.4028235e+38f;
+
+ /**
+ * A constant holding the smallest positive normal value of type
+@@ -86,7 +86,7 @@
+ *
+ * @since 1.6
+ */
+- public static final float MIN_NORMAL = 0x1.0p-126f; // 1.17549435E-38f
++ public static final float MIN_NORMAL = 1.17549435E-38f;
+
+ /**
+ * A constant holding the smallest positive nonzero value of type
+@@ -94,7 +94,7 @@
+ * hexadecimal floating-point literal {@code 0x0.000002P-126f}
+ * and also equal to {@code Float.intBitsToFloat(0x1)}.
+ */
+- public static final float MIN_VALUE = 0x0.000002P-126f; // 1.4e-45f
++ public static final float MIN_VALUE = 1.4e-45f;
+
+ /**
+ * Maximum exponent a finite {@code float} variable may have. It
diff --git a/patches/boot/ecj-multicatch.patch b/patches/boot/ecj-multicatch.patch
new file mode 100644
index 0000000..ce248c9
--- /dev/null
+++ b/patches/boot/ecj-multicatch.patch
@@ -0,0 +1,235 @@
+--- openjdk-boot/jdk/src/share/classes/java/io/PrintStream.java.orig
++++ openjdk-boot/jdk/src/share/classes/java/io/PrintStream.java
+@@ -91,7 +91,10 @@
+ requireNonNull(csn, "charsetName");
+ try {
+ return Charset.forName(csn);
+- } catch (IllegalCharsetNameException|UnsupportedCharsetException unused) {
++ } catch (IllegalCharsetNameException unused) {
++ // UnsupportedEncodingException should be thrown
++ throw new UnsupportedEncodingException(csn);
++ } catch (UnsupportedCharsetException unused) {
+ // UnsupportedEncodingException should be thrown
+ throw new UnsupportedEncodingException(csn);
+ }
+--- openjdk-boot/jdk/src/share/classes/java/io/PrintWriter.java.orig
++++ openjdk-boot/jdk/src/share/classes/java/io/PrintWriter.java
+@@ -85,7 +85,10 @@
+ Objects.requireNonNull(csn, "charsetName");
+ try {
+ return Charset.forName(csn);
+- } catch (IllegalCharsetNameException|UnsupportedCharsetException unused) {
++ } catch (IllegalCharsetNameException unused) {
++ // UnsupportedEncodingException should be thrown
++ throw new UnsupportedEncodingException(csn);
++ } catch (UnsupportedCharsetException unused) {
+ // UnsupportedEncodingException should be thrown
+ throw new UnsupportedEncodingException(csn);
+ }
+--- openjdk-boot/jdk/src/share/classes/java/lang/management/ManagementFactory.java.orig
++++ openjdk-boot/jdk/src/share/classes/java/lang/management/ManagementFactory.java
+@@ -606,7 +606,9 @@
+ // create an MXBean proxy
+ return JMX.newMXBeanProxy(connection, objName, mxbeanInterface,
+ emitter);
+- } catch (InstanceNotFoundException|MalformedObjectNameException e) {
++ } catch (InstanceNotFoundException e) {
++ throw new IllegalArgumentException(e);
++ } catch (MalformedObjectNameException e) {
+ throw new IllegalArgumentException(e);
+ }
+ }
+--- openjdk-boot/jdk/src/share/classes/java/util/Formatter.java.orig
++++ openjdk-boot/jdk/src/share/classes/java/util/Formatter.java
+@@ -1857,7 +1857,10 @@
+ Objects.requireNonNull(csn, "charsetName");
+ try {
+ return Charset.forName(csn);
+- } catch (IllegalCharsetNameException|UnsupportedCharsetException unused) {
++ } catch (IllegalCharsetNameException unused) {
++ // UnsupportedEncodingException should be thrown
++ throw new UnsupportedEncodingException(csn);
++ } catch (UnsupportedCharsetException unused) {
+ // UnsupportedEncodingException should be thrown
+ throw new UnsupportedEncodingException(csn);
+ }
+--- openjdk-boot/jdk/src/share/classes/java/util/Scanner.java.orig
++++ openjdk-boot/jdk/src/share/classes/java/util/Scanner.java
+@@ -633,7 +633,10 @@
+ Objects.requireNonNull(csn, "charsetName");
+ try {
+ return Charset.forName(csn);
+- } catch (IllegalCharsetNameException|UnsupportedCharsetException e) {
++ } catch (IllegalCharsetNameException e) {
++ // IllegalArgumentException should be thrown
++ throw new IllegalArgumentException(e);
++ } catch (UnsupportedCharsetException e) {
+ // IllegalArgumentException should be thrown
+ throw new IllegalArgumentException(e);
+ }
+@@ -684,7 +687,9 @@
+ Objects.requireNonNull(charsetName, "charsetName");
+ try {
+ return Charset.forName(charsetName).newDecoder();
+- } catch (IllegalCharsetNameException|UnsupportedCharsetException unused) {
++ } catch (IllegalCharsetNameException unused) {
++ throw new IllegalArgumentException(charsetName);
++ } catch (UnsupportedCharsetException unused) {
+ throw new IllegalArgumentException(charsetName);
+ }
+ }
+--- openjdk-boot/jdk/src/share/classes/sun/invoke/util/ValueConversions.java.orig
++++ openjdk-boot/jdk/src/share/classes/sun/invoke/util/ValueConversions.java
+@@ -676,7 +676,11 @@
+ IGNORE = IMPL_LOOKUP.findStatic(THIS_CLASS, "ignore", ignoreType);
+ EMPTY = IMPL_LOOKUP.findStatic(THIS_CLASS, "empty", ignoreType.dropParameterTypes(0, 1));
+ NEW_ARRAY = IMPL_LOOKUP.findStatic(THIS_CLASS, "newArray", MethodType.methodType(Object[].class, int.class));
+- } catch (NoSuchMethodException | IllegalAccessException ex) {
++ } catch (NoSuchMethodException ex) {
++ Error err = new InternalError("uncaught exception");
++ err.initCause(ex);
++ throw err;
++ } catch (IllegalAccessException ex) {
+ Error err = new InternalError("uncaught exception");
+ err.initCause(ex);
+ throw err;
+--- openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/PAData.java.orig
++++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/PAData.java
+@@ -280,7 +280,9 @@
+ .append(info.getSalt())
+ .append('\n');
+ }
+- } catch (IOException|Asn1Exception e) {
++ } catch (Asn1Exception e) {
++ sb.append("\t <Unparseable PA-ETYPE-INFO>\n");
++ } catch (IOException e) {
+ sb.append("\t <Unparseable PA-ETYPE-INFO>\n");
+ }
+ }
+@@ -307,7 +309,9 @@
+ .encodeBuffer(s2kparams));
+ }
+ }
+- } catch (IOException|Asn1Exception e) {
++ } catch (IOException e) {
++ sb.append("\t <Unparseable PA-ETYPE-INFO>\n");
++ } catch (Asn1Exception e) {
+ sb.append("\t <Unparseable PA-ETYPE-INFO>\n");
+ }
+ }
+--- openjdk-boot/jdk/src/share/classes/sun/text/bidi/BidiBase.java.orig
++++ openjdk-boot/jdk/src/share/classes/sun/text/bidi/BidiBase.java
+@@ -3477,7 +3477,9 @@
+ try {
+ Field f = clazz.getField(name);
+ return f.get(null);
+- } catch (NoSuchFieldException | IllegalAccessException x) {
++ } catch (NoSuchFieldException x) {
++ throw new AssertionError(x);
++ } catch (IllegalAccessException x) {
+ throw new AssertionError(x);
+ }
+ }
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/tools/jcmd/JCmd.java openjdk-boot/jdk/src/share/classes/sun/tools/jcmd/JCmd.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/tools/jcmd/JCmd.java 2012-03-22 10:00:56.029260268 +0000
++++ openjdk-boot/jdk/src/share/classes/sun/tools/jcmd/JCmd.java 2012-03-22 10:02:41.275789667 +0000
+@@ -94,7 +94,7 @@
+ && mainClass.indexOf(arg.getProcessSubstring()) != -1) {
+ pids.add(vmd.id());
+ }
+- } catch (MonitorException|URISyntaxException e) {
++ } catch (MonitorException e) {
+ if (e.getMessage() != null) {
+ System.err.println(e.getMessage());
+ } else {
+@@ -105,7 +105,18 @@
+ e.printStackTrace();
+ }
+ }
+- }
++ } catch (URISyntaxException e) {
++ if (e.getMessage() != null) {
++ System.err.println(e.getMessage());
++ } else {
++ Throwable cause = e.getCause();
++ if ((cause != null) && (cause.getMessage() != null)) {
++ System.err.println(cause.getMessage());
++ } else {
++ e.printStackTrace();
++ }
++ }
++ }
+ }
+ if (pids.isEmpty()) {
+ System.err.println("Could not find any processes matching : '"
+@@ -185,9 +196,11 @@
+ try {
+ String mainClass = getMainClass(vmd);
+ return mainClass != null && mainClass.equals(JCmd.class.getName());
+- } catch (URISyntaxException|MonitorException ex) {
++ } catch (URISyntaxException ex) {
+ return false;
+- }
++ } catch (MonitorException ex) {
++ return false;
++ }
+ }
+
+ private static String getMainClass(VirtualMachineDescriptor vmd)
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/util/UntrustedCertificates.java openjdk-boot/jdk/src/share/classes/sun/security/util/UntrustedCertificates.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/util/UntrustedCertificates.java 2012-05-02 20:50:17.549643066 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/util/UntrustedCertificates.java 2012-05-02 20:52:03.435320716 +0100
+@@ -65,7 +65,10 @@
+ throw new RuntimeException("Duplicate untrusted certificate: " +
+ cert.getSubjectX500Principal());
+ }
+- } catch (CertificateException | IOException e) {
++ } catch (CertificateException e) {
++ throw new RuntimeException(
++ "Incorrect untrusted certificate: " + alias, e);
++ } catch (IOException e) {
+ throw new RuntimeException(
+ "Incorrect untrusted certificate: " + alias, e);
+ }
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/util/HashMap.java openjdk-boot/jdk/src/share/classes/java/util/HashMap.java
+--- openjdk-boot.orig/jdk/src/share/classes/java/util/HashMap.java 2012-06-08 17:12:17.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/util/HashMap.java 2012-06-11 14:54:16.123125601 +0100
+@@ -237,7 +237,9 @@
+ UNSAFE = sun.misc.Unsafe.getUnsafe();
+ HASHSEED_OFFSET = UNSAFE.objectFieldOffset(
+ HashMap.class.getDeclaredField("hashSeed"));
+- } catch (NoSuchFieldException | SecurityException e) {
++ } catch (NoSuchFieldException e ) {
++ throw new Error("Failed to record hashSeed offset", e);
++ } catch (SecurityException e) {
+ throw new Error("Failed to record hashSeed offset", e);
+ }
+ }
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/util/Hashtable.java openjdk-boot/jdk/src/share/classes/java/util/Hashtable.java
+--- openjdk-boot.orig/jdk/src/share/classes/java/util/Hashtable.java 2012-06-08 17:12:17.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/java/util/Hashtable.java 2012-06-11 14:54:40.275511896 +0100
+@@ -227,7 +227,9 @@
+ UNSAFE = sun.misc.Unsafe.getUnsafe();
+ HASHSEED_OFFSET = UNSAFE.objectFieldOffset(
+ Hashtable.class.getDeclaredField("hashSeed"));
+- } catch (NoSuchFieldException | SecurityException e) {
++ } catch (NoSuchFieldException e) {
++ throw new Error("Failed to record hashSeed offset", e);
++ } catch (SecurityException e) {
+ throw new Error("Failed to record hashSeed offset", e);
+ }
+ }
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/lang/reflect/Proxy.java openjdk-boot/jdk/src/share/classes/java/lang/reflect/Proxy.java
+--- openjdk-boot.orig/jdk/src/share/classes/java/lang/reflect/Proxy.java 2013-02-02 16:14:27.971429681 +0000
++++ openjdk-boot/jdk/src/share/classes/java/lang/reflect/Proxy.java 2013-02-02 16:14:58.283922372 +0000
+@@ -738,7 +738,9 @@
+ private static Object newInstance(Constructor<?> cons, InvocationHandler h) {
+ try {
+ return cons.newInstance(new Object[] {h} );
+- } catch (IllegalAccessException | InstantiationException e) {
++ } catch (IllegalAccessException e) {
++ throw new InternalError(e.toString());
++ } catch (InstantiationException e) {
+ throw new InternalError(e.toString());
+ } catch (InvocationTargetException e) {
+ Throwable t = e.getCause();
diff --git a/patches/boot/ecj-opts.patch b/patches/boot/ecj-opts.patch
new file mode 100644
index 0000000..99ed532
--- /dev/null
+++ b/patches/boot/ecj-opts.patch
@@ -0,0 +1,12 @@
+diff -Nru openjdk-boot.orig/jdk/make/java/nio/Makefile openjdk-boot/jdk/make/java/nio/Makefile
+--- openjdk-boot.orig/jdk/make/java/nio/Makefile 2009-12-13 18:43:31.000000000 +0000
++++ openjdk-boot/jdk/make/java/nio/Makefile 2009-12-13 19:03:31.000000000 +0000
+@@ -31,7 +31,7 @@
+ PACKAGE = java.nio
+ LIBRARY = nio
+ PRODUCT = java
+-OTHER_JAVACFLAGS += -Xmaxwarns 1000 -Xlint:serial -Werror
++OTHER_JAVACFLAGS += -Xlint:serial -Werror
+ include $(BUILDDIR)/common/Defs.gmk
+
+ NIO_SRC = $(SHARE_SRC)/classes/java/nio
diff --git a/patches/boot/ecj-stringswitch.patch b/patches/boot/ecj-stringswitch.patch
new file mode 100644
index 0000000..085c4d0
--- /dev/null
+++ b/patches/boot/ecj-stringswitch.patch
@@ -0,0 +1,493 @@
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/ClassReader.java openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/ClassReader.java
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/ClassReader.java 2013-02-17 18:47:55.000000000 +0000
++++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/ClassReader.java 2013-02-20 01:19:23.757194433 +0000
+@@ -350,18 +350,15 @@
+ if (attrCommands != null) {
+ Attribute.Layout lkey = Attribute.keyForLookup(ctype, name);
+ String cmd = attrCommands.get(lkey);
+- if (cmd != null) {
+- switch (cmd) {
+- case "pass":
+- String message1 = "passing attribute bitwise in " + h;
+- throw new Attribute.FormatException(message1, ctype, name, cmd);
+- case "error":
+- String message2 = "attribute not allowed in " + h;
+- throw new Attribute.FormatException(message2, ctype, name, cmd);
+- case "strip":
+- skip(length, name + " attribute in " + h);
+- continue;
+- }
++ if ("pass".equals(cmd)) {
++ String message1 = "passing attribute bitwise in " + h;
++ throw new Attribute.FormatException(message1, ctype, name, cmd);
++ } else if ("error".equals(cmd)) {
++ String message2 = "attribute not allowed in " + h;
++ throw new Attribute.FormatException(message2, ctype, name, cmd);
++ } else if ("strip".equals(cmd)) {
++ skip(length, name + " attribute in " + h);
++ continue;
+ }
+ }
+ // Find canonical instance of the requested attribute.
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/Driver.java openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Driver.java
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/Driver.java 2013-02-17 18:47:55.000000000 +0000
++++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Driver.java 2013-02-20 01:19:23.757194433 +0000
+@@ -73,16 +73,14 @@
+ {
+ // Non-standard, undocumented "--unpack" switch enables unpack mode.
+ String arg0 = av.isEmpty() ? "" : av.get(0);
+- switch (arg0) {
+- case "--pack":
++ if ("--pack".equals(arg0))
+ av.remove(0);
+- break;
+- case "--unpack":
+- av.remove(0);
+- doPack = false;
+- doUnpack = true;
+- break;
+- }
++ else if ("--unpack".equals(arg0))
++ {
++ av.remove(0);
++ doPack = false;
++ doUnpack = true;
++ }
+ }
+
+ // Collect engine properties here:
+@@ -182,21 +180,16 @@
+ // Deal with remaining non-engine properties:
+ for (String opt : avProps.keySet()) {
+ String val = avProps.get(opt);
+- switch (opt) {
+- case "--repack":
+- doRepack = true;
+- break;
+- case "--no-gzip":
+- doZip = (val == null);
+- break;
+- case "--log-file=":
+- logFile = val;
+- break;
+- default:
+- throw new InternalError(MessageFormat.format(
+- RESOURCE.getString(DriverResource.BAD_OPTION),
+- opt, avProps.get(opt)));
+- }
++ if ("--repack".equals(opt))
++ doRepack = true;
++ else if ("--no-gzip".equals(opt))
++ doZip = (val == null);
++ else if ("--log-file=".equals(opt))
++ logFile = val;
++ else
++ throw new InternalError(MessageFormat.format(
++ RESOURCE.getString(DriverResource.BAD_OPTION),
++ opt, avProps.get(opt)));
+ }
+
+ if (logFile != null && !logFile.equals("")) {
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/Package.java openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Package.java
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/Package.java 2013-02-17 18:47:55.000000000 +0000
++++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Package.java 2013-02-20 01:19:23.757194433 +0000
+@@ -1107,30 +1107,25 @@
+ // what is one of { Debug, Compile, Constant, Exceptions, InnerClasses }
+ if (verbose > 0)
+ Utils.log.info("Stripping "+what.toLowerCase()+" data and attributes...");
+- switch (what) {
+- case "Debug":
+- strip("SourceFile");
+- strip("LineNumberTable");
+- strip("LocalVariableTable");
+- strip("LocalVariableTypeTable");
+- break;
+- case "Compile":
+- // Keep the inner classes normally.
+- // Although they have no effect on execution,
+- // the Reflection API exposes them, and JCK checks them.
+- // NO: // strip("InnerClasses");
+- strip("Deprecated");
+- strip("Synthetic");
+- break;
+- case "Exceptions":
+- // Keep the exceptions normally.
+- // Although they have no effect on execution,
+- // the Reflection API exposes them, and JCK checks them.
+- strip("Exceptions");
+- break;
+- case "Constant":
+- stripConstantFields();
+- break;
++ if ("Debug".equals(what)) {
++ strip("SourceFile");
++ strip("LineNumberTable");
++ strip("LocalVariableTable");
++ strip("LocalVariableTypeTable");
++ } else if ("Compile".equals(what)) {
++ // Keep the inner classes normally.
++ // Although they have no effect on execution,
++ // the Reflection API exposes them, and JCK checks them.
++ // NO: // strip("InnerClasses");
++ strip("Deprecated");
++ strip("Synthetic");
++ } else if ("Exceptions".equals(what)) {
++ // Keep the exceptions normally.
++ // Although they have no effect on execution,
++ // the Reflection API exposes them, and JCK checks them.
++ strip("Exceptions");
++ } else if ("Constant".equals(what)) {
++ stripConstantFields();
+ }
+ }
+
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/security/ntlm/NTLM.java openjdk-boot/jdk/src/share/classes/com/sun/security/ntlm/NTLM.java
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/security/ntlm/NTLM.java 2013-02-17 18:47:55.000000000 +0000
++++ openjdk-boot/jdk/src/share/classes/com/sun/security/ntlm/NTLM.java 2013-02-20 01:19:23.757194433 +0000
+@@ -64,17 +64,23 @@
+
+ protected NTLM(String version) throws NTLMException {
+ if (version == null) version = "LMv2/NTLMv2";
+- switch (version) {
+- case "LM": v = NTLM; writeLM = true; writeNTLM = false; break;
+- case "NTLM": v = NTLM; writeLM = false; writeNTLM = true; break;
+- case "LM/NTLM": v = NTLM; writeLM = writeNTLM = true; break;
+- case "NTLM2": v = NTLM2; writeLM = writeNTLM = true; break;
+- case "LMv2": v = NTLMv2; writeLM = true; writeNTLM = false; break;
+- case "NTLMv2": v = NTLMv2; writeLM = false; writeNTLM = true; break;
+- case "LMv2/NTLMv2": v = NTLMv2; writeLM = writeNTLM = true; break;
+- default: throw new NTLMException(NTLMException.BAD_VERSION,
+- "Unknown version " + version);
+- }
++ if (version.equals("LM"))
++ { v = NTLM; writeLM = true; writeNTLM = false; }
++ else if (version.equals("NTLM"))
++ { v = NTLM; writeLM = false; writeNTLM = true; }
++ else if (version.equals("LM/NTLM"))
++ { v = NTLM; writeLM = writeNTLM = true; }
++ else if (version.equals("NTLM2"))
++ { v = NTLM2; writeLM = writeNTLM = true; }
++ else if (version.equals("LMv2"))
++ { v = NTLMv2; writeLM = true; writeNTLM = false; }
++ else if (version.equals("NTLMv2"))
++ { v = NTLMv2; writeLM = false; writeNTLM = true; }
++ else if (version.equals("LMv2/NTLMv2"))
++ { v = NTLMv2; writeLM = writeNTLM = true; }
++ else
++ throw new NTLMException(NTLMException.BAD_VERSION,
++ "Unknown version " + version);
+ try {
+ fac = SecretKeyFactory.getInstance ("DES");
+ cipher = Cipher.getInstance ("DES/ECB/NoPadding");
+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-02-17 18:47:55.000000000 +0000
++++ openjdk-boot/jdk/src/share/classes/java/lang/invoke/MethodHandleNatives.java 2013-02-20 01:35:29.564524781 +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()) {
+- case "doPrivileged":
+- case "doPrivilegedWithCombiner":
++ String memName = mem.getName();
++ if ("doPrivileged".equals(memName) ||
++ "doPrivilegedWithCombiner".equals(memName)) {
+ return defc == java.security.AccessController.class;
+- case "checkMemberAccess":
++ } else if ("checkMemberAccess".equals(memName)) {
+ return canBeCalledVirtual(mem, java.lang.SecurityManager.class);
+- case "getUnsafe":
++ } else if ("getUnsafe".equals(memName)) {
+ return defc == sun.misc.Unsafe.class;
+- case "lookup":
++ } else if ("lookup".equals(memName)) {
+ 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)) {
+ return defc == java.lang.reflect.Method.class;
+- case "get":
+- case "getBoolean":
+- case "getByte":
+- case "getChar":
+- case "getShort":
+- case "getInt":
+- case "getLong":
+- case "getFloat":
+- case "getDouble":
+- case "set":
+- case "setBoolean":
+- case "setByte":
+- case "setChar":
+- case "setShort":
+- case "setInt":
+- 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)) {
+ return defc == java.lang.reflect.Field.class;
+- case "newInstance":
++ } else if ("newInstance".equals(memName)) {
+ if (defc == java.lang.reflect.Constructor.class) return true;
+ if (defc == java.lang.Class.class) return true;
+- break;
+- case "forName":
+- case "getClassLoader":
+- case "getClasses":
+- case "getFields":
+- case "getMethods":
+- case "getConstructors":
+- case "getDeclaredClasses":
+- case "getDeclaredFields":
+- case "getDeclaredMethods":
+- case "getDeclaredConstructors":
+- case "getField":
+- case "getMethod":
+- case "getConstructor":
+- 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)) {
+ return defc == java.lang.Class.class;
+- case "getConnection":
+- case "getDriver":
+- case "getDrivers":
+- case "deregisterDriver":
++ } else if ("getConnection".equals(memName) ||
++ "getDriver".equals(memName) ||
++ "getDrivers".equals(memName) ||
++ "deregisterDriver".equals(memName)) {
+ return defc == java.sql.DriverManager.class;
+- case "newUpdater":
++ } else if ("newUpdater".equals(memName)) {
+ if (defc == java.util.concurrent.atomic.AtomicIntegerFieldUpdater.class) return true;
+ if (defc == java.util.concurrent.atomic.AtomicLongFieldUpdater.class) return true;
+ if (defc == java.util.concurrent.atomic.AtomicReferenceFieldUpdater.class) return true;
+- break;
+- case "getContextClassLoader":
++ } else if ("getContextClassLoader".equals(memName)) {
+ return canBeCalledVirtual(mem, java.lang.Thread.class);
+- case "getPackage":
+- case "getPackages":
++ } else if ("getPackage".equals(memName) ||
++ "getPackages".equals(memName)) {
+ return defc == java.lang.Package.class;
+- case "getParent":
+- case "getSystemClassLoader":
++ } else if ("getParent".equals(memName) ||
++ "getSystemClassLoader".equals(memName)) {
+ return defc == java.lang.ClassLoader.class;
+- case "load":
+- case "loadLibrary":
++ } else if ("load".equals(memName) ||
++ "loadLibrary".equals(memName)) {
+ if (defc == java.lang.Runtime.class) return true;
+ if (defc == java.lang.System.class) return true;
+- break;
+- case "getCallerClass":
++ } else if ("getCallerClass".equals(memName)) {
+ if (defc == sun.reflect.Reflection.class) return true;
+ if (defc == java.lang.System.class) return true;
+- break;
+- case "getCallerClassLoader":
++ } else if ("getCallerClassLoader".equals(memName)) {
+ return defc == java.lang.ClassLoader.class;
+- case "registerAsParallelCapable":
++ } else if ("registerAsParallelCapable".equals(memName)) {
+ return canBeCalledVirtual(mem, java.lang.ClassLoader.class);
+- case "getProxyClass":
+- case "newProxyInstance":
++ } else if ("getProxyClass".equals(memName) ||
++ "newProxyInstance".equals(memName)) {
+ return defc == java.lang.reflect.Proxy.class;
+- case "asInterfaceInstance":
++ } else if ("asInterfaceInstance".equals(memName)) {
+ return defc == java.lang.invoke.MethodHandleProxies.class;
+- case "getBundle":
+- case "clearCache":
++ } else if ("getBundle".equals(memName) ||
++ "clearCache".equals(memName)) {
+ return defc == java.util.ResourceBundle.class;
+ }
+ return false;
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/lang/invoke/MethodHandleProxies.java openjdk-boot/jdk/src/share/classes/java/lang/invoke/MethodHandleProxies.java
+--- openjdk-boot.orig/jdk/src/share/classes/java/lang/invoke/MethodHandleProxies.java 2013-02-17 18:47:55.000000000 +0000
++++ openjdk-boot/jdk/src/share/classes/java/lang/invoke/MethodHandleProxies.java 2013-02-20 01:19:23.757194433 +0000
+@@ -268,14 +268,16 @@
+
+ private static
+ boolean isObjectMethod(Method m) {
+- switch (m.getName()) {
+- case "toString":
++ String name = m.getName();
++ if ("toString".equals(name)) {
+ return (m.getReturnType() == String.class
+ && m.getParameterTypes().length == 0);
+- case "hashCode":
++ }
++ if ("hashCode".equals(name)) {
+ return (m.getReturnType() == int.class
+ && m.getParameterTypes().length == 0);
+- case "equals":
++ }
++ if ("equals".equals(name)) {
+ return (m.getReturnType() == boolean.class
+ && m.getParameterTypes().length == 1
+ && m.getParameterTypes()[0] == Object.class);
+@@ -286,12 +288,14 @@
+ private static
+ Object callObjectMethod(Object self, Method m, Object[] args) {
+ assert(isObjectMethod(m)) : m;
+- switch (m.getName()) {
+- case "toString":
++ String name = m.getName();
++ if ("toString".equals(name)) {
+ return self.getClass().getName() + "@" + Integer.toHexString(self.hashCode());
+- case "hashCode":
++ }
++ if ("hashCode".equals(name)) {
+ return System.identityHashCode(self);
+- case "equals":
++ }
++ if ("equals".equals(name)) {
+ return (self == args[0]);
+ }
+ return null;
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/launcher/LauncherHelper.java openjdk-boot/jdk/src/share/classes/sun/launcher/LauncherHelper.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/launcher/LauncherHelper.java 2013-02-17 18:47:55.000000000 +0000
++++ openjdk-boot/jdk/src/share/classes/sun/launcher/LauncherHelper.java 2013-02-20 01:19:23.757194433 +0000
+@@ -119,24 +119,20 @@
+ String optStr = (opts.length > 1 && opts[1] != null)
+ ? opts[1].trim()
+ : "all";
+- switch (optStr) {
+- case "vm":
++ if ("vm".equals(optStr))
++ printVmSettings(ostream, initialHeapSize, maxHeapSize,
++ stackSize, isServer);
++ else if ("properties".equals(optStr))
++ printProperties(ostream);
++ else if ("locale".equals(optStr))
++ printLocale(ostream);
++ else
++ {
+ printVmSettings(ostream, initialHeapSize, maxHeapSize,
+- stackSize, isServer);
+- break;
+- case "properties":
++ stackSize, isServer);
+ printProperties(ostream);
+- break;
+- case "locale":
+ printLocale(ostream);
+- break;
+- default:
+- printVmSettings(ostream, initialHeapSize, maxHeapSize,
+- stackSize, isServer);
+- printProperties(ostream);
+- printLocale(ostream);
+- break;
+- }
++ }
+ }
+
+ /*
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/util/DisabledAlgorithmConstraints.java openjdk-boot/jdk/src/share/classes/sun/security/util/DisabledAlgorithmConstraints.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/util/DisabledAlgorithmConstraints.java 2013-02-17 18:47:55.000000000 +0000
++++ openjdk-boot/jdk/src/share/classes/sun/security/util/DisabledAlgorithmConstraints.java 2013-02-20 01:19:23.757194433 +0000
+@@ -378,19 +378,23 @@
+ GE; // ">="
+
+ static Operator of(String s) {
+- switch (s) {
+- case "==":
+- return EQ;
+- case "!=":
+- return NE;
+- case "<":
+- return LT;
+- case "<=":
+- return LE;
+- case ">":
+- return GT;
+- case ">=":
+- return GE;
++ if ("==".equals(s)) {
++ return EQ;
++ }
++ if ("!=".equals(s)) {
++ return NE;
++ }
++ if ("<".equals(s)) {
++ return LT;
++ }
++ if ("<=".equals(s)) {
++ return LE;
++ }
++ if (">".equals(s)) {
++ return GT;
++ }
++ if (">=".equals(s)) {
++ return GE;
+ }
+
+ throw new IllegalArgumentException(
diff --git a/patches/boot/ecj-trywithresources.patch b/patches/boot/ecj-trywithresources.patch
new file mode 100644
index 0000000..fc6781f
--- /dev/null
+++ b/patches/boot/ecj-trywithresources.patch
@@ -0,0 +1,1085 @@
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/BandStructure.java openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/BandStructure.java
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/BandStructure.java 2013-02-02 13:23:34.755400199 +0000
++++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/BandStructure.java 2013-02-02 15:27:16.682037474 +0000
+@@ -743,7 +743,9 @@
+
+ private void dumpBand() throws IOException {
+ assert(optDumpBands);
+- try (PrintStream ps = new PrintStream(getDumpStream(this, ".txt"))) {
++ PrintStream ps = null;
++ try {
++ ps = new PrintStream(getDumpStream(this, ".txt"));
+ String irr = (bandCoding == regularCoding) ? "" : " irregular";
+ ps.print("# length="+length+
+ " size="+outputSize()+
+@@ -758,9 +760,19 @@
+ }
+ printArrayTo(ps, values, 0, length);
+ }
+- try (OutputStream ds = getDumpStream(this, ".bnd")) {
++ finally {
++ if (ps != null)
++ ps.close();
++ }
++ OutputStream ds = null;
++ try {
++ ds = getDumpStream(this, ".bnd");
+ bandCoding.writeArrayTo(ds, values, 0, length);
+ }
++ finally {
++ if (ds != null)
++ ds.close();
++ }
+ }
+
+ /** Disburse one value. */
+@@ -829,12 +841,18 @@
+
+ private void dumpBand() throws IOException {
+ assert(optDumpBands);
+- try (OutputStream ds = getDumpStream(this, ".bnd")) {
++ OutputStream ds = null;
++ try {
++ ds = getDumpStream(this, ".bnd");
+ if (bytesForDump != null)
+ bytesForDump.writeTo(ds);
+ else
+ bytes.writeTo(ds);
+ }
++ finally {
++ if (ds != null)
++ ds.close();
++ }
+ }
+
+ public void readDataFrom(InputStream in) throws IOException {
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/Driver.java openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Driver.java
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/Driver.java 2013-02-02 15:09:33.497049506 +0000
++++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Driver.java 2013-02-02 15:27:16.710037923 +0000
+@@ -151,8 +151,13 @@
+ if ("--config-file=".equals(state)) {
+ String propFile = av.remove(0);
+ Properties fileProps = new Properties();
+- try (InputStream propIn = new FileInputStream(propFile)) {
++ InputStream propIn = null;
++ try {
++ propIn = new FileInputStream(propFile);
+ fileProps.load(propIn);
++ } finally {
++ if (propIn != null)
++ propIn.close();
+ }
+ if (engProps.get(verboseProp) != null)
+ fileProps.list(System.out);
+@@ -343,9 +348,14 @@
+ else
+ fileOut = new FileOutputStream(outfile);
+ fileOut = new BufferedOutputStream(fileOut);
+- try (JarOutputStream out = new JarOutputStream(fileOut)) {
++ JarOutputStream out = null;
++ try {
++ out = new JarOutputStream(fileOut);
+ junpack.unpack(in, out);
+ // p200 closes in but not out
++ } finally {
++ if (out != null)
++ out.close();
+ }
+ // At this point, we have a good jarfile (or newfile, if -r)
+ }
+@@ -407,7 +417,9 @@
+ long filelen = new File(jarfile).length();
+ if (filelen <= 0) return "";
+ long skiplen = Math.max(0, filelen - tail.length);
+- try (InputStream in = new FileInputStream(new File(jarfile))) {
++ InputStream in = null;
++ try {
++ in = new FileInputStream(new File(jarfile));
+ in.skip(skiplen);
+ in.read(tail);
+ for (int i = tail.length-4; i >= 0; i--) {
+@@ -421,6 +433,9 @@
+ }
+ }
+ return "";
++ } finally {
++ if (in != null)
++ in.close();
+ }
+ }
+
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/NativeUnpack.java openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/NativeUnpack.java
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/NativeUnpack.java 2013-02-02 13:14:33.194730803 +0000
++++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/NativeUnpack.java 2013-02-02 15:27:16.710037923 +0000
+@@ -245,9 +245,15 @@
+ void run(File inFile, JarOutputStream jstream) throws IOException {
+ // %%% maybe memory-map the file, and pass it straight into unpacker
+ ByteBuffer mappedFile = null;
+- try (FileInputStream fis = new FileInputStream(inFile)) {
++ FileInputStream fis = null;
++ try {
++ fis = new FileInputStream(inFile);
+ run(fis, jstream, mappedFile);
+ }
++ finally {
++ if (fis != null)
++ fis.close();
++ }
+ // Note: caller is responsible to finish with jstream.
+ }
+
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/PackageReader.java openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PackageReader.java
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/PackageReader.java 2012-07-20 19:23:35.697424304 +0100
++++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PackageReader.java 2013-02-02 15:27:16.714037986 +0000
+@@ -540,9 +540,15 @@
+ Index index = initCPIndex(tag, cpMap);
+
+ if (optDumpBands) {
+- try (PrintStream ps = new PrintStream(getDumpStream(index, ".idx"))) {
++ PrintStream ps = null;
++ try {
++ ps = new PrintStream(getDumpStream(index, ".idx"));
+ printArrayTo(ps, index.cpMap, 0, index.cpMap.length);
+ }
++ finally {
++ if (ps != null)
++ ps.close();
++ }
+ }
+ }
+
+@@ -828,9 +834,10 @@
+ attr_definition_headers.readFrom(in);
+ attr_definition_name.readFrom(in);
+ attr_definition_layout.readFrom(in);
+- try (PrintStream dump = !optDumpBands ? null
+- : new PrintStream(getDumpStream(attr_definition_headers, ".def")))
+- {
++ PrintStream dump = null;
++ try {
++ dump = !optDumpBands ? null
++ : new PrintStream(getDumpStream(attr_definition_headers, ".def"));
+ for (int i = 0; i < numAttrDefs; i++) {
+ int header = attr_definition_headers.getByte();
+ Utf8Entry name = (Utf8Entry) attr_definition_name.getRef();
+@@ -849,6 +856,10 @@
+ if (dump != null) dump.println(index+" "+def);
+ }
+ }
++ finally {
++ if (dump != null)
++ dump.close();
++ }
+ attr_definition_headers.doneDisbursing();
+ attr_definition_name.doneDisbursing();
+ attr_definition_layout.doneDisbursing();
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/PackageWriter.java openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PackageWriter.java
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/PackageWriter.java 2012-07-20 19:23:35.697424304 +0100
++++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PackageWriter.java 2013-02-02 15:27:16.714037986 +0000
+@@ -458,9 +458,15 @@
+ Utils.log.info("Writing "+cpMap.length+" "+ConstantPool.tagName(tag)+" entries...");
+
+ if (optDumpBands) {
+- try (PrintStream ps = new PrintStream(getDumpStream(index, ".idx"))) {
++ PrintStream ps = null;
++ try {
++ ps = new PrintStream(getDumpStream(index, ".idx"));
+ printArrayTo(ps, cpMap, 0, cpMap.length);
+ }
++ finally {
++ if (ps != null)
++ ps.close();
++ }
+ }
+
+ switch (tag) {
+@@ -921,9 +927,10 @@
+ }
+ });
+ attrDefsWritten = new Attribute.Layout[numAttrDefs];
+- try (PrintStream dump = !optDumpBands ? null
+- : new PrintStream(getDumpStream(attr_definition_headers, ".def")))
+- {
++ PrintStream dump = null;
++ try {
++ dump = !optDumpBands ? null
++ : new PrintStream(getDumpStream(attr_definition_headers, ".def"));
+ int[] indexForDebug = Arrays.copyOf(attrIndexLimit, ATTR_CONTEXT_LIMIT);
+ for (int i = 0; i < defs.length; i++) {
+ int header = ((Integer)defs[i][0]).intValue();
+@@ -949,6 +956,10 @@
+ }
+ }
+ }
++ finally {
++ if (dump != null)
++ dump.close();
++ }
+ }
+
+ void writeAttrCounts() throws IOException {
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/PropMap.java openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PropMap.java
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/PropMap.java 2012-07-20 19:23:35.697424304 +0100
++++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/PropMap.java 2013-02-02 15:27:16.714037986 +0000
+@@ -122,8 +122,9 @@
+ // Do this after the previous props are put in place,
+ // to allow override if necessary.
+ String propFile = "intrinsic.properties";
+-
+- try (InputStream propStr = PackerImpl.class.getResourceAsStream(propFile)) {
++ InputStream propStr = null;
++ try {
++ propStr = PackerImpl.class.getResourceAsStream(propFile);
+ if (propStr == null) {
+ throw new RuntimeException(propFile + " cannot be loaded");
+ }
+@@ -131,6 +132,14 @@
+ } catch (IOException ee) {
+ throw new RuntimeException(ee);
+ }
++ finally {
++ try {
++ if (propStr != null)
++ propStr.close();
++ } catch (IOException ee) {
++ throw new RuntimeException(ee);
++ }
++ }
+
+ for (Map.Entry<Object, Object> e : props.entrySet()) {
+ String key = (String) e.getKey();
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/UnpackerImpl.java openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/UnpackerImpl.java
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/UnpackerImpl.java 2013-02-02 13:14:33.390733939 +0000
++++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/UnpackerImpl.java 2013-02-02 15:27:16.714037986 +0000
+@@ -160,9 +160,15 @@
+ }
+ // Use the stream-based implementation.
+ // %%% Reconsider if native unpacker learns to memory-map the file.
+- try (FileInputStream instr = new FileInputStream(in)) {
++ FileInputStream instr = null;
++ try {
++ instr = new FileInputStream(in);
+ unpack(instr, out);
+ }
++ finally {
++ if (instr != null)
++ instr.close();
++ }
+ if (props.getBoolean(Utils.UNPACK_REMOVE_PACKFILE)) {
+ in.delete();
+ }
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/Utils.java openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Utils.java
+--- openjdk-boot.orig/jdk/src/share/classes/com/sun/java/util/jar/pack/Utils.java 2012-07-20 19:23:35.697424304 +0100
++++ openjdk-boot/jdk/src/share/classes/com/sun/java/util/jar/pack/Utils.java 2013-02-02 15:27:16.714037986 +0000
+@@ -268,18 +268,30 @@
+ // 4947205 : Peformance is slow when using pack-effort=0
+ out = new BufferedOutputStream(out);
+ out = new NonCloser(out); // protect from JarOutputStream.close()
+- try (JarOutputStream jout = new JarOutputStream(out)) {
++ JarOutputStream jout = null;
++ try {
++ jout = new JarOutputStream(out);
+ copyJarFile(in, jout);
+ }
++ finally {
++ if (jout != null)
++ jout.close();
++ }
+ }
+ static void copyJarFile(JarFile in, OutputStream out) throws IOException {
+
+ // 4947205 : Peformance is slow when using pack-effort=0
+ out = new BufferedOutputStream(out);
+ out = new NonCloser(out); // protect from JarOutputStream.close()
+- try (JarOutputStream jout = new JarOutputStream(out)) {
++ JarOutputStream jout = null;
++ try {
++ jout = new JarOutputStream(out);
+ copyJarFile(in, jout);
+ }
++ finally {
++ if (jout != null)
++ jout.close();
++ }
+ }
+ // Wrapper to prevent closing of client-supplied stream.
+ static private
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/lang/invoke/MethodHandleImpl.java openjdk-boot/jdk/src/share/classes/java/lang/invoke/MethodHandleImpl.java
+--- openjdk-boot.orig/jdk/src/share/classes/java/lang/invoke/MethodHandleImpl.java 2012-10-11 14:18:23.863432719 +0100
++++ openjdk-boot/jdk/src/share/classes/java/lang/invoke/MethodHandleImpl.java 2013-02-02 15:27:16.730038242 +0000
+@@ -1401,10 +1401,14 @@
+ java.net.URLConnection uconn = tClass.getResource(tResource).openConnection();
+ int len = uconn.getContentLength();
+ byte[] bytes = new byte[len];
+- try (java.io.InputStream str = uconn.getInputStream()) {
++ java.io.InputStream str = null;
++ try {
++ str = uconn.getInputStream();
+ int nr = str.read(bytes);
+ if (nr != len) throw new java.io.IOException(tResource);
+- }
++ } finally {
++ str.close();
++ }
+ values[0] = bytes;
+ } catch (java.io.IOException ex) {
+ throw new InternalError(ex.toString());
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/lang/Package.java openjdk-boot/jdk/src/share/classes/java/lang/Package.java
+--- openjdk-boot.orig/jdk/src/share/classes/java/lang/Package.java 2012-07-20 19:23:37.685461320 +0100
++++ openjdk-boot/jdk/src/share/classes/java/lang/Package.java 2013-02-02 15:27:16.714037986 +0000
+@@ -575,12 +575,23 @@
+ * Returns the Manifest for the specified JAR file name.
+ */
+ private static Manifest loadManifest(String fn) {
+- try (FileInputStream fis = new FileInputStream(fn);
+- JarInputStream jis = new JarInputStream(fis, false))
+- {
++ FileInputStream fis = null;
++ JarInputStream jis = null;
++ try {
++ fis = new FileInputStream(fn);
++ jis = new JarInputStream(fis, false);
+ return jis.getManifest();
+ } catch (IOException e) {
+ return null;
++ } finally {
++ try {
++ if (jis != null)
++ jis.close();
++ if (fis != null)
++ fis.close();
++ } catch (IOException e) {
++ return null;
++ }
+ }
+ }
+
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/nio/channels/SocketChannel.java openjdk-boot/jdk/src/share/classes/java/nio/channels/SocketChannel.java
+--- openjdk-boot.orig/jdk/src/share/classes/java/nio/channels/SocketChannel.java 2012-07-20 19:23:37.821463852 +0100
++++ openjdk-boot/jdk/src/share/classes/java/nio/channels/SocketChannel.java 2013-02-02 15:27:16.718038050 +0000
+@@ -188,7 +188,7 @@
+ } catch (Throwable suppressed) {
+ x.addSuppressed(suppressed);
+ }
+- throw x;
++ throw (IOException) x;
+ }
+ assert sc.isConnected();
+ return sc;
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/nio/file/CopyMoveHelper.java openjdk-boot/jdk/src/share/classes/java/nio/file/CopyMoveHelper.java
+--- openjdk-boot.orig/jdk/src/share/classes/java/nio/file/CopyMoveHelper.java 2012-07-20 19:23:37.949466233 +0100
++++ openjdk-boot/jdk/src/share/classes/java/nio/file/CopyMoveHelper.java 2013-02-02 15:27:16.718038050 +0000
+@@ -122,9 +122,15 @@
+ if (attrs.isDirectory()) {
+ Files.createDirectory(target);
+ } else {
+- try (InputStream in = Files.newInputStream(source)) {
++ InputStream in = null;
++ try {
++ in = Files.newInputStream(source);
+ Files.copy(in, target);
+ }
++ finally {
++ if (in != null)
++ in.close();
++ }
+ }
+
+ // copy basic attributes to target
+@@ -142,7 +148,7 @@
+ } catch (Throwable suppressed) {
+ x.addSuppressed(suppressed);
+ }
+- throw x;
++ throw (IOException) x;
+ }
+ }
+ }
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/nio/file/Files.java openjdk-boot/jdk/src/share/classes/java/nio/file/Files.java
+--- openjdk-boot.orig/jdk/src/share/classes/java/nio/file/Files.java 2012-07-20 19:23:37.957466384 +0100
++++ openjdk-boot/jdk/src/share/classes/java/nio/file/Files.java 2013-02-02 15:27:16.718038050 +0000
+@@ -2839,8 +2839,11 @@
+ }
+
+ // do the copy
+- try (OutputStream out = ostream) {
+- return copy(in, out);
++ try {
++ return copy(in, ostream);
++ }
++ finally {
++ ostream.close();
+ }
+ }
+
+@@ -2881,9 +2884,15 @@
+ // ensure not null before opening file
+ Objects.requireNonNull(out);
+
+- try (InputStream in = newInputStream(source)) {
++ InputStream in = null;
++ try {
++ in = newInputStream(source);
+ return copy(in, out);
+ }
++ finally {
++ if (in != null)
++ in.close();
++ }
+ }
+
+ /**
+@@ -2949,8 +2958,14 @@
+ if (size > (long)Integer.MAX_VALUE)
+ throw new OutOfMemoryError("Required array size too large");
+
+- try (InputStream in = newInputStream(path)) {
+- return read(in, (int)size);
++ InputStream in = null;
++ try {
++ in = newInputStream(path);
++ return read(in, (int)size);
++ }
++ finally {
++ if (in != null)
++ in.close();
+ }
+ }
+
+@@ -2996,7 +3011,9 @@
+ public static List<String> readAllLines(Path path, Charset cs)
+ throws IOException
+ {
+- try (BufferedReader reader = newBufferedReader(path, cs)) {
++ BufferedReader reader = null;
++ try {
++ reader = newBufferedReader(path, cs);
+ List<String> result = new ArrayList<>();
+ for (;;) {
+ String line = reader.readLine();
+@@ -3006,6 +3023,10 @@
+ }
+ return result;
+ }
++ finally {
++ if (reader != null)
++ reader.close();
++ }
+ }
+
+ /**
+@@ -3055,7 +3076,9 @@
+ // ensure bytes is not null before opening file
+ Objects.requireNonNull(bytes);
+
+- try (OutputStream out = Files.newOutputStream(path, options)) {
++ OutputStream out = null;
++ try {
++ out = Files.newOutputStream(path, options);
+ int len = bytes.length;
+ int rem = len;
+ while (rem > 0) {
+@@ -3064,6 +3087,10 @@
+ rem -= n;
+ }
+ }
++ finally {
++ if (out != null)
++ out.close();
++ }
+ return path;
+ }
+
+@@ -3115,12 +3142,18 @@
+ Objects.requireNonNull(lines);
+ CharsetEncoder encoder = cs.newEncoder();
+ OutputStream out = newOutputStream(path, options);
+- try (BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(out, encoder))) {
++ BufferedWriter writer = null;
++ try {
++ writer = new BufferedWriter(new OutputStreamWriter(out, encoder));
+ for (CharSequence line: lines) {
+ writer.append(line);
+ writer.newLine();
+ }
+ }
++ finally {
++ if (writer != null)
++ writer.close();
++ }
+ return path;
+ }
+ }
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/util/Currency.java openjdk-boot/jdk/src/share/classes/java/util/Currency.java
+--- openjdk-boot.orig/jdk/src/share/classes/java/util/Currency.java 2012-07-20 19:23:38.113469287 +0100
++++ openjdk-boot/jdk/src/share/classes/java/util/Currency.java 2013-02-02 15:27:16.718038050 +0000
+@@ -233,9 +233,14 @@
+ "currency.properties");
+ if (propFile.exists()) {
+ Properties props = new Properties();
+- try (FileReader fr = new FileReader(propFile)) {
++ FileReader fr = null;
++ try {
++ fr = new FileReader(propFile);
+ props.load(fr);
+ }
++ finally {
++ fr.close();
++ }
+ Set<String> keys = props.stringPropertyNames();
+ Pattern propertiesPattern =
+ Pattern.compile("([A-Z]{3})\\s*,\\s*(\\d{3})\\s*,\\s*([0-3])");
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/java/util/jar/JarFile.java openjdk-boot/jdk/src/share/classes/java/util/jar/JarFile.java
+--- openjdk-boot.orig/jdk/src/share/classes/java/util/jar/JarFile.java 2013-02-02 13:39:11.966432272 +0000
++++ openjdk-boot/jdk/src/share/classes/java/util/jar/JarFile.java 2013-02-02 15:31:18.945915470 +0000
+@@ -383,9 +383,15 @@
+ * META-INF files.
+ */
+ private byte[] getBytes(ZipEntry ze) throws IOException {
+- try (InputStream is = super.getInputStream(ze)) {
++ InputStream is = null;
++ try {
++ is = super.getInputStream(ze);
+ return IOUtils.readFully(is, (int)ze.getSize(), true);
+ }
++ finally {
++ if (is != null)
++ is.close();
++ }
+ }
+
+ /**
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/javax/sql/rowset/serial/SerialClob.java openjdk-boot/jdk/src/share/classes/javax/sql/rowset/serial/SerialClob.java
+--- openjdk-boot.orig/jdk/src/share/classes/javax/sql/rowset/serial/SerialClob.java 2012-07-20 19:23:38.561477629 +0100
++++ openjdk-boot/jdk/src/share/classes/javax/sql/rowset/serial/SerialClob.java 2013-02-02 15:27:16.718038050 +0000
+@@ -144,8 +144,9 @@
+ buf = new char[(int)len];
+ int read = 0;
+ int offset = 0;
+-
+- try (Reader charStream = clob.getCharacterStream()) {
++ Reader charStream = null;
++ try {
++ charStream = clob.getCharacterStream();
+ if (charStream == null) {
+ throw new SQLException("Invalid Clob object. The call to getCharacterStream " +
+ "returned null which cannot be serialized.");
+@@ -153,23 +154,41 @@
+
+ // Note: get an ASCII stream in order to null-check it,
+ // even though we don't do anything with it.
+- try (InputStream asciiStream = clob.getAsciiStream()) {
++ InputStream asciiStream = null;
++ try {
++ asciiStream = clob.getAsciiStream();
+ if (asciiStream == null) {
+ throw new SQLException("Invalid Clob object. The call to getAsciiStream " +
+ "returned null which cannot be serialized.");
+ }
+ }
+-
+- try (Reader reader = new BufferedReader(charStream)) {
++ finally {
++ if (asciiStream != null)
++ asciiStream.close();
++ }
++ Reader reader = null;
++ try {
++ reader = new BufferedReader(charStream);
+ do {
+ read = reader.read(buf, offset, (int)(len - offset));
+ offset += read;
+ } while (read > 0);
+ }
++ finally {
++ if (reader != null)
++ reader.close();
++ }
+ } catch (java.io.IOException ex) {
+ throw new SerialException("SerialClob: " + ex.getMessage());
+ }
+-
++ finally {
++ try {
++ if (charStream != null)
++ charStream.close();
++ } catch (java.io.IOException ex) {
++ throw new SerialException("SerialClob: " + ex.getMessage());
++ }
++ }
+ origLen = len;
+ }
+
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/javax/sql/rowset/spi/SyncFactory.java openjdk-boot/jdk/src/share/classes/javax/sql/rowset/spi/SyncFactory.java
+--- openjdk-boot.orig/jdk/src/share/classes/javax/sql/rowset/spi/SyncFactory.java 2012-07-20 19:23:38.565477702 +0100
++++ openjdk-boot/jdk/src/share/classes/javax/sql/rowset/spi/SyncFactory.java 2013-02-02 15:27:16.718038050 +0000
+@@ -367,9 +367,15 @@
+ // Load user's implementation of SyncProvider
+ // here. -Drowset.properties=/abc/def/pqr.txt
+ ROWSET_PROPERTIES = strRowsetProperties;
+- try (FileInputStream fis = new FileInputStream(ROWSET_PROPERTIES)) {
++ FileInputStream fis = null;
++ try {
++ fis = new FileInputStream(ROWSET_PROPERTIES);
+ properties.load(fis);
+ }
++ finally {
++ if (fis != null)
++ fis.close();
++ }
+ parseProperties(properties);
+ }
+
+@@ -381,15 +387,19 @@
+ "rowset.properties";
+
+ ClassLoader cl = Thread.currentThread().getContextClassLoader();
+-
+- try (InputStream stream =
+- (cl == null) ? ClassLoader.getSystemResourceAsStream(ROWSET_PROPERTIES)
+- : cl.getResourceAsStream(ROWSET_PROPERTIES)) {
++ InputStream stream = null;
++ try {
++ stream =
++ (cl == null) ? ClassLoader.getSystemResourceAsStream(ROWSET_PROPERTIES)
++ : cl.getResourceAsStream(ROWSET_PROPERTIES);
+ if (stream == null) {
+ throw new SyncFactoryException(
+ "Resource " + ROWSET_PROPERTIES + " not found");
+ }
+ properties.load(stream);
++ } finally {
++ if (stream != null)
++ stream.close();
+ }
+
+ parseProperties(properties);
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/net/www/protocol/jar/URLJarFile.java openjdk-boot/jdk/src/share/classes/sun/net/www/protocol/jar/URLJarFile.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/net/www/protocol/jar/URLJarFile.java 2012-07-20 19:23:39.413493489 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/net/www/protocol/jar/URLJarFile.java 2013-02-02 15:27:16.718038050 +0000
+@@ -194,7 +194,8 @@
+ * Given a URL, retrieves a JAR file, caches it to disk, and creates a
+ * cached JAR file object.
+ */
+- private static JarFile retrieve(final URL url, final URLJarFileCloseController closeController) throws IOException {
++ private static JarFile retrieve(final URL url, final URLJarFileCloseController closeController)
++ throws IOException {
+ /*
+ * See if interface is set, then call retrieve function of the class
+ * that implements URLJarFileCallBack interface (sun.plugin - to
+@@ -211,7 +212,8 @@
+ JarFile result = null;
+
+ /* get the stream before asserting privileges */
+- try (final InputStream in = url.openConnection().getInputStream()) {
++ try {
++ final InputStream in = url.openConnection().getInputStream();
+ result = AccessController.doPrivileged(
+ new PrivilegedExceptionAction<JarFile>() {
+ public JarFile run() throws IOException {
+@@ -227,7 +229,10 @@
+ } catch (IOException ioe) {
+ thr.addSuppressed(ioe);
+ }
+- throw thr;
++ throw (IOException) thr;
++ } finally {
++ if (in != null)
++ in.close();
+ }
+ }
+ });
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/nio/fs/PollingWatchService.java openjdk-boot/jdk/src/share/classes/sun/nio/fs/PollingWatchService.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/nio/fs/PollingWatchService.java 2012-07-20 19:23:39.493494979 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/nio/fs/PollingWatchService.java 2013-02-02 15:27:16.718038050 +0000
+@@ -255,7 +255,9 @@
+ this.entries = new HashMap<Path,CacheEntry>();
+
+ // get the initial entries in the directory
+- try (DirectoryStream<Path> stream = Files.newDirectoryStream(dir)) {
++ DirectoryStream<Path> stream = null;
++ try {
++ stream = Files.newDirectoryStream(dir);
+ for (Path entry: stream) {
+ // don't follow links
+ long lastModified =
+@@ -264,6 +266,10 @@
+ }
+ } catch (DirectoryIteratorException e) {
+ throw e.getCause();
++ } finally {
++ if (stream != null) {
++ stream.close();
++ }
+ }
+ }
+
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/internal/ktab/KeyTab.java openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/ktab/KeyTab.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/krb5/internal/ktab/KeyTab.java 2012-07-20 19:23:39.665498183 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/krb5/internal/ktab/KeyTab.java 2013-02-02 15:27:16.718038050 +0000
+@@ -92,9 +92,13 @@
+ tabName = filename;
+ try {
+ lastModified = new File(tabName).lastModified();
+- try (KeyTabInputStream kis =
+- new KeyTabInputStream(new FileInputStream(filename))) {
++ KeyTabInputStream kis = null;
++ try {
++ kis = new KeyTabInputStream(new FileInputStream(filename));
+ load(kis);
++ } finally {
++ if (kis != null)
++ kis.close();
+ }
+ } catch (FileNotFoundException e) {
+ entries.clear();
+@@ -439,9 +443,13 @@
+ public synchronized static KeyTab create(String name)
+ throws IOException, RealmException {
+
+- try (KeyTabOutputStream kos =
+- new KeyTabOutputStream(new FileOutputStream(name))) {
++ KeyTabOutputStream kos = null;
++ try {
++ kos = new KeyTabOutputStream(new FileOutputStream(name));
+ kos.writeVersion(KRB5_KT_VNO);
++ } finally {
++ if (kos != null)
++ kos.close();
+ }
+ return new KeyTab(name);
+ }
+@@ -450,12 +458,16 @@
+ * Saves the file at the directory.
+ */
+ public synchronized void save() throws IOException {
+- try (KeyTabOutputStream kos =
+- new KeyTabOutputStream(new FileOutputStream(tabName))) {
++ KeyTabOutputStream kos = null;
++ try {
++ kos = new KeyTabOutputStream(new FileOutputStream(tabName));
+ kos.writeVersion(kt_vno);
+ for (int i = 0; i < entries.size(); i++) {
+ kos.writeEntry(entries.elementAt(i));
+ }
++ } finally {
++ if (kos != null)
++ kos.close();
+ }
+ }
+
+@@ -519,9 +531,13 @@
+ * @exception IOException.
+ */
+ public synchronized void createVersion(File file) throws IOException {
+- try (KeyTabOutputStream kos =
+- new KeyTabOutputStream(new FileOutputStream(file))) {
++ KeyTabOutputStream kos = null;
++ try {
++ kos = new KeyTabOutputStream(new FileOutputStream(file));
+ kos.write16(KRB5_KT_VNO);
++ } finally {
++ if (kos != null)
++ kos.close();
+ }
+ }
+ }
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/provider/SeedGenerator.java openjdk-boot/jdk/src/share/classes/sun/security/provider/SeedGenerator.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/provider/SeedGenerator.java 2012-07-20 19:23:39.709498997 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/provider/SeedGenerator.java 2013-02-02 15:27:16.722038114 +0000
+@@ -179,7 +179,9 @@
+ // The temporary dir
+ File f = new File(p.getProperty("java.io.tmpdir"));
+ int count = 0;
+- try (DirectoryStream<Path> stream = Files.newDirectoryStream(f.toPath())) {
++ DirectoryStream<Path> stream = null;
++ try {
++ stream = Files.newDirectoryStream(f.toPath());
+ // We use a Random object to choose what file names
+ // should be used. Otherwise on a machine with too
+ // many files, the same first 1024 files always get
+@@ -194,6 +196,10 @@
+ break;
+ }
+ }
++ } finally {
++ if (stream != null) {
++ stream.close();
++ }
+ }
+ } catch (Exception ex) {
+ md.update((byte)ex.hashCode());
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/tools/KeyTool.java openjdk-boot/jdk/src/share/classes/sun/security/tools/KeyTool.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/tools/KeyTool.java 2012-07-20 19:23:39.781500341 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/security/tools/KeyTool.java 2013-02-02 15:27:16.722038114 +0000
+@@ -1149,9 +1149,14 @@
+ } else {
+ ByteArrayOutputStream bout = new ByteArrayOutputStream();
+ keyStore.store(bout, pass);
+- try (FileOutputStream fout = new FileOutputStream(ksfname)) {
++ FileOutputStream fout = null;
++ try {
++ fout = new FileOutputStream(ksfname);
+ fout.write(bout.toByteArray());
+- }
++ } finally {
++ if (fout != null)
++ fout.close();
++ }
+ }
+ }
+ }
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/security/util/UntrustedCertificates.java openjdk-boot/jdk/src/share/classes/sun/security/util/UntrustedCertificates.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/security/util/UntrustedCertificates.java 2013-02-02 15:09:33.569050655 +0000
++++ openjdk-boot/jdk/src/share/classes/sun/security/util/UntrustedCertificates.java 2013-02-02 15:27:16.722038114 +0000
+@@ -56,8 +56,9 @@
+
+ private static void add(String alias, String pemCert) {
+ // generate certificate from PEM certificate
+- try (ByteArrayInputStream is =
+- new ByteArrayInputStream(pemCert.getBytes())) {
++ ByteArrayInputStream is = null;
++ try {
++ is = new ByteArrayInputStream(pemCert.getBytes());
+ CertificateFactory cf = CertificateFactory.getInstance("X.509");
+ X509Certificate cert = (X509Certificate)cf.generateCertificate(is);
+
+@@ -68,10 +69,15 @@
+ } catch (CertificateException e) {
+ throw new RuntimeException(
+ "Incorrect untrusted certificate: " + alias, e);
+- } catch (IOException e) {
+- throw new RuntimeException(
+- "Incorrect untrusted certificate: " + alias, e);
+- }
++ } finally {
++ try {
++ if (is != null)
++ is.close();
++ } catch (IOException e) {
++ throw new RuntimeException(
++ "Incorrect untrusted certificate: " + alias, e);
++ }
++ }
+ }
+
+ static {
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/tools/jcmd/Arguments.java openjdk-boot/jdk/src/share/classes/sun/tools/jcmd/Arguments.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/tools/jcmd/Arguments.java 2012-07-20 19:23:39.965503764 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/tools/jcmd/Arguments.java 2013-02-02 15:27:16.722038114 +0000
+@@ -99,14 +99,19 @@
+ }
+
+ private void readCommandFile(String path) throws IOException {
+- try (BufferedReader bf = new BufferedReader(new FileReader(path));) {
+- StringBuilder sb = new StringBuilder();
+- String s;
+- while ((s = bf.readLine()) != null) {
+- sb.append(s).append("\n");
+- }
+- command = sb.toString();
+- }
++ BufferedReader bf = null;
++ try {
++ bf = new BufferedReader(new FileReader(path));
++ StringBuilder sb = new StringBuilder();
++ String s;
++ while ((s = bf.readLine()) != null) {
++ sb.append(s).append("\n");
++ }
++ command = sb.toString();
++ } finally {
++ if (bf != null)
++ bf.close();
++ }
+ }
+
+ public static void usage() {
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/tools/jcmd/JCmd.java openjdk-boot/jdk/src/share/classes/sun/tools/jcmd/JCmd.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/tools/jcmd/JCmd.java 2013-02-02 15:09:33.569050655 +0000
++++ openjdk-boot/jdk/src/share/classes/sun/tools/jcmd/JCmd.java 2013-02-02 15:27:16.722038114 +0000
+@@ -116,7 +116,7 @@
+ e.printStackTrace();
+ }
+ }
+- }
++ }
+ }
+ if (pids.isEmpty()) {
+ System.err.println("Could not find any processes matching : '"
+@@ -158,7 +158,9 @@
+ if (line.trim().equals("stop")) {
+ break;
+ }
+- try (InputStream in = hvm.executeJCmd(line);) {
++ InputStream in = null;
++ try {
++ in = hvm.executeJCmd(line);
+ // read to EOF and just print output
+ byte b[] = new byte[256];
+ int n;
+@@ -169,6 +171,9 @@
+ System.out.print(s);
+ }
+ } while (n > 0);
++ } finally {
++ if (in != null)
++ in.close();
+ }
+ }
+ vm.detach();
+@@ -205,8 +210,8 @@
+ } catch (URISyntaxException ex) {
+ return false;
+ } catch (MonitorException ex) {
+- return false;
+- }
++ return false;
++ }
+ }
+
+ private static String getMainClass(VirtualMachineDescriptor vmd)
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/util/calendar/LocalGregorianCalendar.java openjdk-boot/jdk/src/share/classes/sun/util/calendar/LocalGregorianCalendar.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/util/calendar/LocalGregorianCalendar.java 2012-07-20 19:23:40.045505256 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/util/calendar/LocalGregorianCalendar.java 2013-02-02 15:27:16.726038179 +0000
+@@ -127,9 +127,15 @@
+ calendarProps = (Properties) AccessController.doPrivileged(new PrivilegedExceptionAction() {
+ public Object run() throws IOException {
+ Properties props = new Properties();
+- try (FileInputStream fis = new FileInputStream(fname)) {
++ FileInputStream fis = null;
++ try {
++ fis = new FileInputStream(fname);
+ props.load(fis);
+ }
++ finally {
++ if (fis != null)
++ fis.close();
++ }
+ return props;
+ }
+ });
+diff -Nru openjdk-boot.orig/jdk/src/share/demo/jfc/Font2DTest/RangeMenu.java openjdk-boot/jdk/src/share/demo/jfc/Font2DTest/RangeMenu.java
+--- openjdk-boot.orig/jdk/src/share/demo/jfc/Font2DTest/RangeMenu.java 2012-07-20 19:23:40.185507863 +0100
++++ openjdk-boot/jdk/src/share/demo/jfc/Font2DTest/RangeMenu.java 2013-02-02 15:27:16.726038179 +0000
+@@ -200,7 +200,7 @@
+ }
+
+ private static int[][] getUnicodeRanges() {
+- List<Integer> ranges = new ArrayList<>();
++ List<Integer> ranges = new ArrayList<Integer>();
+ ranges.add(0);
+ Character.UnicodeBlock currentBlock = Character.UnicodeBlock.of(0);
+ for (int cp = 0x000001; cp < 0x110000; cp++ ) {
+diff -Nru openjdk-boot.orig/jdk/src/solaris/classes/java/util/prefs/FileSystemPreferences.java openjdk-boot/jdk/src/solaris/classes/java/util/prefs/FileSystemPreferences.java
+--- openjdk-boot.orig/jdk/src/solaris/classes/java/util/prefs/FileSystemPreferences.java 2012-07-20 19:23:40.745518290 +0100
++++ openjdk-boot/jdk/src/solaris/classes/java/util/prefs/FileSystemPreferences.java 2013-02-02 15:27:16.726038179 +0000
+@@ -569,11 +569,11 @@
+ public Void run() throws BackingStoreException {
+ Map<String, String> m = new TreeMap<>();
+ long newLastSyncTime = 0;
++ FileInputStream fis = null;
+ try {
+ newLastSyncTime = prefsFile.lastModified();
+- try (FileInputStream fis = new FileInputStream(prefsFile)) {
+- XmlSupport.importMap(fis, m);
+- }
++ fis = new FileInputStream(prefsFile);
++ XmlSupport.importMap(fis, m);
+ } catch(Exception e) {
+ if (e instanceof InvalidPreferencesFormatException) {
+ getLogger().warning("Invalid preferences format in "
+@@ -588,6 +588,13 @@
+ } else {
+ throw new BackingStoreException(e);
+ }
++ } finally {
++ try {
++ if (fis != null)
++ fis.close();
++ } catch (IOException e) {
++ throw new BackingStoreException(e);
++ }
+ }
+ // Attempt succeeded; update state
+ prefsCache = m;
+@@ -614,13 +621,14 @@
+ AccessController.doPrivileged(
+ new PrivilegedExceptionAction<Void>() {
+ public Void run() throws BackingStoreException {
++ FileOutputStream fos = null;
+ try {
+ if (!dir.exists() && !dir.mkdirs())
+ throw new BackingStoreException(dir +
+ " create failed.");
+- try (FileOutputStream fos = new FileOutputStream(tmpFile)) {
+- XmlSupport.exportMap(fos, prefsCache);
+- }
++
++ fos = new FileOutputStream(tmpFile);
++ XmlSupport.exportMap(fos, prefsCache);
+ if (!tmpFile.renameTo(prefsFile))
+ throw new BackingStoreException("Can't rename " +
+ tmpFile + " to " + prefsFile);
+@@ -629,6 +637,14 @@
+ throw (BackingStoreException)e;
+ throw new BackingStoreException(e);
+ }
++ finally {
++ try {
++ if (fos != null)
++ fos.close();
++ } catch (IOException e) {
++ throw new BackingStoreException(e);
++ }
++ }
+ return null;
+ }
+ });
+diff -Nru openjdk-boot.orig/jdk/src/solaris/classes/sun/nio/fs/UnixFileStore.java openjdk-boot/jdk/src/solaris/classes/sun/nio/fs/UnixFileStore.java
+--- openjdk-boot.orig/jdk/src/solaris/classes/sun/nio/fs/UnixFileStore.java 2012-07-20 19:23:40.869520594 +0100
++++ openjdk-boot/jdk/src/solaris/classes/sun/nio/fs/UnixFileStore.java 2013-02-02 15:27:16.726038179 +0000
+@@ -255,9 +255,16 @@
+ String fstypes = System.getProperty("java.home") + "/lib/fstypes.properties";
+ Path file = Paths.get(fstypes);
+ try {
+- try (ReadableByteChannel rbc = Files.newByteChannel(file)) {
++ ReadableByteChannel rbc = null;
++ try {
++ rbc = Files.newByteChannel(file);
+ result.load(Channels.newReader(rbc, "UTF-8"));
+ }
++ finally {
++ if (rbc != null) {
++ rbc.close();
++ }
++ }
+ } catch (IOException x) {
+ }
+ return result;
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/launcher/LauncherHelper.java openjdk-boot/jdk/src/share/classes/sun/launcher/LauncherHelper.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/launcher/LauncherHelper.java 2013-02-12 01:56:53.097168690 +0000
++++ openjdk-boot/jdk/src/share/classes/sun/launcher/LauncherHelper.java 2013-02-12 02:12:21.112109410 +0000
+@@ -555,8 +555,9 @@
+ if (parent == null) {
+ parent = new File(".");
+ }
+- try (DirectoryStream<Path> dstream =
+- Files.newDirectoryStream(parent.toPath(), glob)) {
++ DirectoryStream<Path> dstream = null;
++ try {
++ dstream = Files.newDirectoryStream(parent.toPath(), glob);
+ int entries = 0;
+ for (Path p : dstream) {
+ out.add(p.normalize().toString());
+@@ -572,6 +573,10 @@
+ System.err.print(e);
+ }
+ }
++ finally {
++ if (dstream != null)
++ try { dstream.close(); } catch (IOException ex) {}
++ }
+ } else {
+ out.add(a.arg);
+ }
diff --git a/patches/boot/explicit-inner-class-headers.patch b/patches/boot/explicit-inner-class-headers.patch
new file mode 100644
index 0000000..cb32692
--- /dev/null
+++ b/patches/boot/explicit-inner-class-headers.patch
@@ -0,0 +1,25 @@
+diff -Nru openjdk-boot.orig/jdk/make/common/Rules.gmk openjdk-boot/jdk/make/common/Rules.gmk
+--- openjdk-boot.orig/jdk/make/common/Rules.gmk 2009-12-13 20:37:41.000000000 +0000
++++ openjdk-boot/jdk/make/common/Rules.gmk 2009-12-13 21:11:04.000000000 +0000
+@@ -303,7 +303,11 @@
+ $(prep-target)
+ @$(ECHO) "# Running javah:"
+ $(JAVAH_CMD) -d $(CLASSHDRDIR)/ \
+- $(CLASSES.export) $(subst $$,\$$,$(EXPORTED_inner))
++ $(CLASSES.export)
++ $(foreach innerclass,$(subst $$,\$$,$(EXPORTED_inner)), \
++ $(JAVAH_CMD) \
++ -o $(CLASSHDRDIR)/$(subst .,_,$(subst \$$,_,$(innerclass))).h \
++ $(innerclass))
+ @$(java-vm-cleanup)
+ @$(TOUCH) $@
+
+diff -Nru openjdk-boot.orig/jdk/make/sun/awt/FILES_export_unix.gmk openjdk-boot/jdk/make/sun/awt/FILES_export_unix.gmk
+--- openjdk-boot.orig/jdk/make/sun/awt/FILES_export_unix.gmk 2009-12-04 23:26:35.000000000 +0000
++++ openjdk-boot/jdk/make/sun/awt/FILES_export_unix.gmk 2009-12-13 21:11:04.000000000 +0000
+@@ -189,3 +189,5 @@
+ java/awt/dnd/DnDConstants.java \
+ sun/awt/CausedFocusEvent.java
+
++EXPORTED_inner = \
++ sun.java2d.opengl.OGLContext$$OGLContextCaps
diff --git a/patches/boot/fontconfig.patch b/patches/boot/fontconfig.patch
new file mode 100644
index 0000000..95cb81f
--- /dev/null
+++ b/patches/boot/fontconfig.patch
@@ -0,0 +1,16 @@
+diff -Nru openjdk-boot.orig/jdk/make/sun/awt/Makefile openjdk-boot/jdk/make/sun/awt/Makefile
+--- openjdk-boot.orig/jdk/make/sun/awt/Makefile 2011-04-20 04:40:21.000000000 +0100
++++ openjdk-boot/jdk/make/sun/awt/Makefile 2011-04-21 23:16:13.427471369 +0100
+@@ -400,10 +400,9 @@
+
+ COMPILEFONTCONFIG_JARFILE = $(BUILDTOOLJARDIR)/compilefontconfig.jar
+
+-$(LIBDIR)/%.bfc: $(FONTCONFIGS_SRC)/$(FONTCONFIGS_SRC_PREFIX)%.properties \
+- $(COMPILEFONTCONFIG_JARFILE)
++$(LIBDIR)/%.bfc: $(GENSRCDIR)/fontconfig/%.bfc
+ $(prep-target)
+- $(BOOT_JAVA_CMD) -jar $(COMPILEFONTCONFIG_JARFILE) $(COMPILEFONTCONFIG_FLAGS) $< $@
++ $(install-file)
+ $(call chmod-file, 444)
+ @$(java-vm-cleanup)
+
diff --git a/patches/boot/generated-comments.patch b/patches/boot/generated-comments.patch
new file mode 100644
index 0000000..01227c3
--- /dev/null
+++ b/patches/boot/generated-comments.patch
@@ -0,0 +1,21 @@
+diff -Nru ../openjdk.orig/openjdk-boot/jdk/make/tools/src/build/tools/generatecharacter/GenerateCharacter.java openjdk-boot/jdk/make/tools/src/build/tools/generatecharacter/GenerateCharacter.java
+--- ../openjdk.orig/openjdk-boot/jdk/make/tools/src/build/tools/generatecharacter/GenerateCharacter.java 2009-10-30 16:49:08.000000000 +0000
++++ openjdk-boot/jdk/make/tools/src/build/tools/generatecharacter/GenerateCharacter.java 2009-10-30 16:59:16.000000000 +0000
+@@ -647,9 +647,6 @@
+ throws FileNotFoundException, IOException {
+ BufferedReader in = new BufferedReader(new FileReader(theTemplateFileName));
+ PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter(theOutputFileName)));
+- out.println(commentStart +
+- " This file was generated AUTOMATICALLY from a template file " +
+- new java.util.Date() + commentEnd);
+ int marklen = commandMarker.length();
+ LOOP: while(true) {
+ try {
+@@ -876,7 +873,6 @@
+ // liu : Add a comment showing the source of this table
+ result.append(commentStart + " The following tables and code generated using:" +
+ commentEnd + "\n ");
+- result.append(commentStart + ' ' + commandLineDescription + commentEnd + "\n ");
+
+ if (plane == 0 && bLatin1 == false) {
+ genCaseMapTableDeclaration(result);
diff --git a/patches/boot/genstubs-nofork.patch b/patches/boot/genstubs-nofork.patch
new file mode 100644
index 0000000..c1a823b
--- /dev/null
+++ b/patches/boot/genstubs-nofork.patch
@@ -0,0 +1,12 @@
+diff -Nru openjdk.orig/langtools/make/build.xml openjdk/langtools/make/build.xml
+--- openjdk-boot.orig/langtools/make/build.xml 2010-11-12 01:18:44.000000000 +0000
++++ openjdk-boot/langtools/make/build.xml 2010-11-22 17:50:52.747031959 +0000
+@@ -622,7 +622,7 @@
+ <genstubs
+ srcdir="${import.jdk.src.dir}" destdir="${build.genstubs.dir}"
+ includes="${import.jdk.stub.files}"
+- fork="true" classpath="${build.toolclasses.dir}:${build.bootstrap.dir}/classes:${ant.core.lib}"
++ fork="false" classpath="${build.toolclasses.dir}:${build.bootstrap.dir}/classes:${ant.core.lib}"
+ />
+ </target>
+
diff --git a/patches/boot/getannotation-cast.patch b/patches/boot/getannotation-cast.patch
new file mode 100644
index 0000000..dbd7664
--- /dev/null
+++ b/patches/boot/getannotation-cast.patch
@@ -0,0 +1,12 @@
+diff -Nru openjdk.orig/jdk/src/share/classes/java/beans/MetaData.java openjdk/jdk/src/share/classes/java/beans/MetaData.java
+--- openjdk.orig/jdk/src/share/classes/java/beans/MetaData.java 2009-02-10 02:25:40.000000000 +0000
++++ openjdk/jdk/src/share/classes/java/beans/MetaData.java 2009-02-10 15:45:15.000000000 +0000
+@@ -1475,7 +1475,7 @@
+ }
+
+ private static String[] getAnnotationValue(Constructor<?> constructor) {
+- ConstructorProperties annotation = constructor.getAnnotation(ConstructorProperties.class);
++ ConstructorProperties annotation = ((ConstructorProperties) constructor.getAnnotation(ConstructorProperties.class));
+ return (annotation != null)
+ ? annotation.value()
+ : null;
diff --git a/patches/boot/hotspot/default/jdk-dependency.patch b/patches/boot/hotspot/default/jdk-dependency.patch
new file mode 100644
index 0000000..3b97351
--- /dev/null
+++ b/patches/boot/hotspot/default/jdk-dependency.patch
@@ -0,0 +1,23 @@
+diff -Nru openjdk-boot.orig/hotspot/make/linux/makefiles/sa.make openjdk-boot/hotspot/make/linux/makefiles/sa.make
+--- openjdk-boot.orig/hotspot/make/linux/makefiles/sa.make 2012-05-23 22:15:04.747642641 +0100
++++ openjdk-boot/hotspot/make/linux/makefiles/sa.make 2012-05-23 22:16:32.825095823 +0100
+@@ -91,7 +91,7 @@
+ # are in AGENT_FILES, so use the shell to expand them.
+ # Be extra carefull to not produce too long command lines in the shell!
+ $(foreach file,$(AGENT_FILES),$(shell ls -1 $(file) >> $(AGENT_FILES_LIST)))
+- $(QUIETLY) $(REMOTE) $(COMPILE.JAVAC) -classpath $(SA_CLASSPATH) -sourcepath $(AGENT_SRC_DIR) -d $(SA_CLASSDIR) @$(AGENT_FILES_LIST)
++ $(QUIETLY) $(REMOTE) $(COMPILE.JAVAC) -classpath $(SA_CLASSPATH) -sourcepath $(AGENT_SRC_DIR):$(JDK_TOPDIR)/src/share/classes:$(JDK_TOPDIR)/src/solaris/classes:$(GENSRCDIR) -d $(SA_CLASSDIR) @$(AGENT_FILES_LIST)
+ $(QUIETLY) $(REMOTE) $(COMPILE.RMIC) -classpath $(SA_CLASSDIR) -d $(SA_CLASSDIR) sun.jvm.hotspot.debugger.remote.RemoteDebuggerServer
+ $(QUIETLY) echo "$(SA_BUILD_VERSION_PROP)" > $(SA_PROPERTIES)
+ $(QUIETLY) rm -f $(SA_CLASSDIR)/sun/jvm/hotspot/utilities/soql/sa.js
+diff -Nru openjdk-boot.orig/make/hotspot-rules.gmk openjdk-boot/make/hotspot-rules.gmk
+--- openjdk-boot.orig/make/hotspot-rules.gmk 2012-05-23 20:37:39.000000000 +0100
++++ openjdk-boot/make/hotspot-rules.gmk 2012-05-23 22:16:52.425419199 +0100
+@@ -85,6 +85,7 @@
+ HOTSPOT_BUILD_ARGUMENTS += ALT_OUTPUTDIR=$(HOTSPOT_OUTPUTDIR)
+ HOTSPOT_BUILD_ARGUMENTS += ALT_EXPORT_PATH=$(HOTSPOT_EXPORT_PATH)
+ HOTSPOT_BUILD_ARGUMENTS += BUILD_FLAVOR=$(BUILD_FLAVOR)
++HOTSPOT_BUILD_ARGUMENTS += GENSRCDIR=$(GENSRCDIR)
+
+ # Why do these need to be passed in? Because of windows nmake? and MAKEFLAGS=?
+ # Or is there something wrong with hotspot/make/Makefile?
diff --git a/patches/boot/hotspot/zero/jdk-dependency.patch b/patches/boot/hotspot/zero/jdk-dependency.patch
new file mode 100644
index 0000000..4cfe552
--- /dev/null
+++ b/patches/boot/hotspot/zero/jdk-dependency.patch
@@ -0,0 +1,25 @@
+diff -Nru openjdk-boot.orig/hotspot/make/linux/makefiles/sa.make openjdk-boot/hotspot/make/linux/makefiles/sa.make
+--- openjdk-boot.orig/hotspot/make/linux/makefiles/sa.make 2012-07-20 18:05:26.733484117 +0100
++++ openjdk-boot/hotspot/make/linux/makefiles/sa.make 2012-07-20 18:10:11.384736044 +0100
+@@ -97,8 +97,8 @@
+ $(foreach file,$(AGENT_FILES1),$(shell echo $(file) >> $(AGENT_FILES1_LIST)))
+ $(foreach file,$(AGENT_FILES2),$(shell echo $(file) >> $(AGENT_FILES2_LIST)))
+
+- $(QUIETLY) $(REMOTE) $(COMPILE.JAVAC) -classpath $(SA_CLASSPATH) -sourcepath $(AGENT_SRC_DIR) -d $(SA_CLASSDIR) @$(AGENT_FILES1_LIST)
+- $(QUIETLY) $(REMOTE) $(COMPILE.JAVAC) -classpath $(SA_CLASSPATH) -sourcepath $(AGENT_SRC_DIR) -d $(SA_CLASSDIR) @$(AGENT_FILES2_LIST)
++ $(QUIETLY) $(REMOTE) $(COMPILE.JAVAC) -classpath $(SA_CLASSPATH) -sourcepath $(AGENT_SRC_DIR):$(JDK_TOPDIR)/src/share/classes:$(JDK_TOPDIR)/src/solaris/classes:$(GENSRCDIR) -d $(SA_CLASSDIR) @$(AGENT_FILES1_LIST)
++ $(QUIETLY) $(REMOTE) $(COMPILE.JAVAC) -classpath $(SA_CLASSPATH) -sourcepath $(AGENT_SRC_DIR):$(JDK_TOPDIR)/src/share/classes:$(JDK_TOPDIR)/src/solaris/classes:$(GENSRCDIR) -d $(SA_CLASSDIR) @$(AGENT_FILES2_LIST)
+
+ $(QUIETLY) $(REMOTE) $(COMPILE.RMIC) -classpath $(SA_CLASSDIR) -d $(SA_CLASSDIR) sun.jvm.hotspot.debugger.remote.RemoteDebuggerServer
+ $(QUIETLY) echo "$(SA_BUILD_VERSION_PROP)" > $(SA_PROPERTIES)
+diff -Nru openjdk-boot.orig/make/hotspot-rules.gmk openjdk-boot/make/hotspot-rules.gmk
+--- openjdk-boot.orig/make/hotspot-rules.gmk 2012-06-29 15:19:51.000000000 +0100
++++ openjdk-boot/make/hotspot-rules.gmk 2012-07-20 18:10:28.277161702 +0100
+@@ -85,6 +85,7 @@
+ HOTSPOT_BUILD_ARGUMENTS += ALT_OUTPUTDIR=$(HOTSPOT_OUTPUTDIR)
+ HOTSPOT_BUILD_ARGUMENTS += ALT_EXPORT_PATH=$(HOTSPOT_EXPORT_PATH)
+ HOTSPOT_BUILD_ARGUMENTS += BUILD_FLAVOR=$(BUILD_FLAVOR)
++HOTSPOT_BUILD_ARGUMENTS += GENSRCDIR=$(GENSRCDIR)
+
+ # Why do these need to be passed in? Because of windows nmake? and MAKEFLAGS=?
+ # Or is there something wrong with hotspot/make/Makefile?
diff --git a/patches/boot/icedteart.patch b/patches/boot/icedteart.patch
new file mode 100644
index 0000000..f3452c7
--- /dev/null
+++ b/patches/boot/icedteart.patch
@@ -0,0 +1,41 @@
+diff -Nru openjdk-boot.orig/jdk/make/common/BuildToolJar.gmk openjdk-boot/jdk/make/common/BuildToolJar.gmk
+--- openjdk-boot.orig/jdk/make/common/BuildToolJar.gmk 2009-12-04 23:26:17.000000000 +0000
++++ openjdk-boot/jdk/make/common/BuildToolJar.gmk 2009-12-13 20:16:48.000000000 +0000
+@@ -43,7 +43,8 @@
+ @$(prep-target)
+ @$(MKDIR) -p $(BUILDTOOLCLASSDIR)
+ $(BOOT_JAVAC_CMD) -d $(BUILDTOOLCLASSDIR) \
+- -sourcepath $(BUILDTOOL_SOURCE_ROOT) $(BUILDTOOL_MAIN_SOURCE_FILE)
++ -sourcepath $(BUILDTOOL_SOURCE_ROOT) -classpath $(ICEDTEA_RT) \
++ $(BUILDTOOL_MAIN_SOURCE_FILE)
+ $(BOOT_JAR_CMD) cfm $@ $(BUILDTOOL_MANIFEST_FILE) \
+ -C $(BUILDTOOLCLASSDIR) $(PKGDIR) \
+ $(BOOT_JAR_JFLAGS) || $(RM) $@
+diff -Nru openjdk-boot.orig/jdk/make/common/Rules.gmk openjdk-boot/jdk/make/common/Rules.gmk
+--- openjdk-boot.orig/jdk/make/common/Rules.gmk 2009-12-04 23:26:17.000000000 +0000
++++ openjdk-boot/jdk/make/common/Rules.gmk 2009-12-13 20:16:48.000000000 +0000
+@@ -237,8 +237,9 @@
+ $(ECHO) "# Java sources to be compiled: (listed in file $<)"; \
+ $(CAT) $<.filtered; \
+ $(ECHO) "# Running javac:"; \
+- $(ECHO) $(JAVAC_CMD) -sourcepath "$(SOURCEPATH)" -d $(CLASSDESTDIR) @$<.filtered; \
+- $(JAVAC_CMD) -sourcepath "$(SOURCEPATH)" -d $(CLASSDESTDIR) @$<.filtered; \
++ $(ECHO) $(JAVAC_CMD) -sourcepath "$(SOURCEPATH)" -bootclasspath "$(CLASSDESTDIR):$(ICEDTEA_RT)" \
++ -d $(CLASSDESTDIR) @$(JAVA_SOURCE_LIST); \
++ $(JAVAC_CMD) -sourcepath "$(SOURCEPATH)" -bootclasspath "$(CLASSDESTDIR):$(ICEDTEA_RT)" -d $(CLASSDESTDIR) @$(JAVA_SOURCE_LIST); \
+ fi
+ @$(java-vm-cleanup)
+
+diff -Nru openjdk-boot.orig/jdk/make/sun/javazic/Makefile openjdk-boot/jdk/make/sun/javazic/Makefile
+--- openjdk-boot.orig/jdk/make/sun/javazic/Makefile 2009-12-04 23:26:37.000000000 +0000
++++ openjdk-boot/jdk/make/sun/javazic/Makefile 2009-12-13 20:16:48.000000000 +0000
+@@ -62,7 +62,8 @@
+ $(WORKDIR)/$(MAPFILE): $(BUILDTOOLJARDIR)/javazic.jar $(TZFILES)
+ $(RM) -r $(@D)
+ $(prep-target)
+- $(BOOT_JAVA_CMD) -jar $(BUILDTOOLJARDIR)/javazic.jar -V "$(TZDATA_VER)" -d $(WORKDIR) $(TZFILES)
++ $(BOOT_JAVA_CMD) -cp $(ABS_OUTPUTDIR)/classes:$(BUILDTOOLJARDIR)/javazic.jar \
++ build.tools.javazic.Main -V "$(TZDATA_VER)" -d $(WORKDIR) $(TZFILES)
+ @$(java-vm-cleanup)
+
+ $(INSTALLDIR)/$(MAPFILE): $(WORKDIR)/$(MAPFILE)
diff --git a/patches/boot/jar.patch b/patches/boot/jar.patch
new file mode 100644
index 0000000..7910375
--- /dev/null
+++ b/patches/boot/jar.patch
@@ -0,0 +1,43 @@
+diff -Nru openjdk-boot.orig/jdk/make/common/Release.gmk openjdk-boot/jdk/make/common/Release.gmk
+--- openjdk-boot.orig/jdk/make/common/Release.gmk 2011-06-13 16:08:46.000000000 +0100
++++ openjdk-boot/jdk/make/common/Release.gmk 2011-06-13 17:06:49.515488800 +0100
+@@ -627,9 +627,19 @@
+ RESOURCES_JAR=$(ABS_TEMPDIR)/resources-orig.jar
+ $(RESOURCES_JAR): $(RES_JAR_FILELIST) $(OTHER_JAR_MANIFEST_FILE)
+ $(prep-target)
++ifneq (,$(JAR_KNOWS_ATFILE))
+ $(CD) $(CLASSBINDIR) && \
+ $(BOOT_JAR_CMD) $(CREATE_JAR_OPTS) $(OTHER_JAR_MANIFEST_FILE) $@ \
+ @$(RES_JAR_FILELIST) $(BOOT_JAR_JFLAGS)
++else ifneq (,$(JAR_ACCEPTS_STDIN_LIST))
++ (cd $(CLASSBINDIR) && $(CAT) $(RES_JAR_FILELIST) | \
++ $(BOOT_JAR_CMD) $(CREATE_JAR_OPTS)@ $(OTHER_JAR_MANIFEST_FILE) $@ \
++ $(BOOT_JAR_JFLAGS))
++else
++ (cd $(CLASSBINDIR) && \
++ $(BOOT_JAR_CMD) $(CREATE_JAR_OPTS) $(OTHER_JAR_MANIFEST_FILE) $@ \
++ $(BOOT_JAR_JFLAGS) `cat $(RES_JAR_FILELIST)`)
++endif
+ @$(CD) $(CLASSBINDIR) && $(java-vm-cleanup)
+
+ # Create jsse.jar containing SunJSSE implementation classes
+@@ -683,9 +693,19 @@
+ RT_JAR=$(ABS_TEMPDIR)/rt-orig.jar
+ $(RT_JAR): $(RT_JAR_FILELIST) $(RT_JAR_MANIFEST_FILE)
+ $(prep-target)
++ifneq (,$(JAR_KNOWS_ATFILE))
+ $(CD) $(CLASSBINDIR) && \
+ $(BOOT_JAR_CMD) $(CREATE_JAR_OPTS) $(RT_JAR_MANIFEST_FILE) $@ \
+ @$(RT_JAR_FILELIST) $(BOOT_JAR_JFLAGS)
++else ifneq (,$(JAR_ACCEPTS_STDIN_LIST))
++ $(CD) $(CLASSBINDIR) && $(CAT) $(RT_JAR_FILELIST) | \
++ $(BOOT_JAR_CMD) $(CREATE_JAR_OPTS)@ $(RT_JAR_MANIFEST_FILE) $@ \
++ $(BOOT_JAR_JFLAGS)
++else
++ $(CD) $(CLASSBINDIR) && \
++ $(BOOT_JAR_CMD) $(CREATE_JAR_OPTS) $(RT_JAR_MANIFEST_FILE) $@ \
++ $(BOOT_JAR_JFLAGS) `cat $(RT_JAR_FILELIST)`
++endif
+ @$(CD) $(CLASSBINDIR) && $(java-vm-cleanup)
+
+ # Meta-index construction to make core class loaders lazier
diff --git a/patches/boot/javafiles.patch b/patches/boot/javafiles.patch
new file mode 100644
index 0000000..8cdc3f6
--- /dev/null
+++ b/patches/boot/javafiles.patch
@@ -0,0 +1,164 @@
+diff -Nru openjdk-boot.origcorba/make/com/sun/corba/minclude/com_sun_corba_se_impl_encoding.jmk openjdk-boot/corba/make/com/sun/corba/minclude/com_sun_corba_se_impl_encoding.jmk
+--- openjdk-boot.origcorba/make/com/sun/corba/minclude/com_sun_corba_se_impl_encoding.jmk 2010-07-29 21:54:09.000000000 +0100
++++ openjdk-boot/corba/make/com/sun/corba/minclude/com_sun_corba_se_impl_encoding.jmk 2011-03-16 20:45:33.914471077 +0000
+@@ -62,7 +62,6 @@
+ com/sun/corba/se/impl/encoding/TypeCodeInputStream.java \
+ com/sun/corba/se/impl/encoding/TypeCodeOutputStream.java \
+ com/sun/corba/se/impl/encoding/TypeCodeReader.java \
+- com/sun/corba/se/impl/encoding/WrapperInputStream.java
+-
+-
+-
++ com/sun/corba/se/impl/encoding/WrapperInputStream.java \
++ com/sun/corba/se/impl/encoding/IDLJavaSerializationInputStream.java \
++ com/sun/corba/se/impl/encoding/IDLJavaSerializationOutputStream.java
+diff -Nru openjdk-boot.origcorba/make/com/sun/corba/minclude/com_sun_corba_se_impl_ior.jmk openjdk-boot/corba/make/com/sun/corba/minclude/com_sun_corba_se_impl_ior.jmk
+--- openjdk-boot.origcorba/make/com/sun/corba/minclude/com_sun_corba_se_impl_ior.jmk 2010-07-29 21:54:09.000000000 +0100
++++ openjdk-boot/corba/make/com/sun/corba/minclude/com_sun_corba_se_impl_ior.jmk 2011-03-16 20:45:33.922471207 +0000
+@@ -66,4 +66,5 @@
+ com/sun/corba/se/impl/ior/iiop/JavaSerializationComponent.java \
+ com/sun/corba/se/impl/ior/iiop/MaxStreamFormatVersionComponentImpl.java \
+ com/sun/corba/se/impl/ior/iiop/RequestPartitioningComponentImpl.java \
+- com/sun/corba/se/impl/ior/iiop/ORBTypeComponentImpl.java
++ com/sun/corba/se/impl/ior/iiop/ORBTypeComponentImpl.java \
++ com/sun/corba/se/impl/ior/iiop/JavaSerializationComponent.java
+diff -Nru openjdk-boot.origcorba/make/com/sun/corba/minclude/com_sun_corba_se_impl_orbutil.jmk openjdk-boot/corba/make/com/sun/corba/minclude/com_sun_corba_se_impl_orbutil.jmk
+--- openjdk-boot.origcorba/make/com/sun/corba/minclude/com_sun_corba_se_impl_orbutil.jmk 2010-07-29 21:54:09.000000000 +0100
++++ openjdk-boot/corba/make/com/sun/corba/minclude/com_sun_corba_se_impl_orbutil.jmk 2011-03-16 20:45:33.922471207 +0000
+@@ -81,4 +81,5 @@
+ com/sun/corba/se/impl/orbutil/graph/Node.java \
+ com/sun/corba/se/impl/orbutil/graph/NodeData.java \
+ com/sun/corba/se/impl/orbutil/graph/Graph.java \
+- com/sun/corba/se/impl/orbutil/graph/GraphImpl.java
++ com/sun/corba/se/impl/orbutil/graph/GraphImpl.java \
++ com/sun/corba/se/impl/orbutil/GetPropertyAction.java
+diff -Nru openjdk-boot.origcorba/make/com/sun/corba/minclude/com_sun_corba_se_impl_protocol.jmk openjdk-boot/corba/make/com/sun/corba/minclude/com_sun_corba_se_impl_protocol.jmk
+--- openjdk-boot.origcorba/make/com/sun/corba/minclude/com_sun_corba_se_impl_protocol.jmk 2010-07-29 21:54:09.000000000 +0100
++++ openjdk-boot/corba/make/com/sun/corba/minclude/com_sun_corba_se_impl_protocol.jmk 2011-03-16 20:45:33.922471207 +0000
+@@ -81,5 +81,5 @@
+ com/sun/corba/se/impl/protocol/giopmsgheaders/RequestMessage_1_1.java \
+ com/sun/corba/se/impl/protocol/giopmsgheaders/RequestMessage_1_2.java \
+ com/sun/corba/se/impl/protocol/giopmsgheaders/TargetAddress.java \
+- com/sun/corba/se/impl/protocol/giopmsgheaders/TargetAddressHelper.java
+-
++ com/sun/corba/se/impl/protocol/giopmsgheaders/TargetAddressHelper.java \
++ com/sun/corba/se/impl/protocol/giopmsgheaders/LocateReplyOrReplyMessage.java
+diff -Nru openjdk-boot.origcorba/make/com/sun/corba/minclude/com_sun_corba_se_spi_monitoring.jmk openjdk-boot/corba/make/com/sun/corba/minclude/com_sun_corba_se_spi_monitoring.jmk
+--- openjdk-boot.origcorba/make/com/sun/corba/minclude/com_sun_corba_se_spi_monitoring.jmk 2010-07-29 21:54:09.000000000 +0100
++++ openjdk-boot/corba/make/com/sun/corba/minclude/com_sun_corba_se_spi_monitoring.jmk 2011-03-16 20:45:33.922471207 +0000
+@@ -30,6 +30,7 @@
+ com/sun/corba/se/spi/monitoring/StringMonitoredAttributeBase.java \
+ com/sun/corba/se/spi/monitoring/LongMonitoredAttributeBase.java \
+ com/sun/corba/se/spi/monitoring/MonitoringFactories.java \
++ com/sun/corba/se/spi/monitoring/MonitoringConstants.java \
+ com/sun/corba/se/spi/monitoring/MonitoredAttributeInfo.java \
+ com/sun/corba/se/spi/monitoring/MonitoredObject.java \
+ com/sun/corba/se/spi/monitoring/MonitoredObjectFactory.java \
+diff -Nru openjdk-boot.origcorba/make/com/sun/corba/minclude/com_sun_corba_se_spi_presentation_rmi.jmk openjdk-boot/corba/make/com/sun/corba/minclude/com_sun_corba_se_spi_presentation_rmi.jmk
+--- openjdk-boot.origcorba/make/com/sun/corba/minclude/com_sun_corba_se_spi_presentation_rmi.jmk 2010-07-29 21:54:09.000000000 +0100
++++ openjdk-boot/corba/make/com/sun/corba/minclude/com_sun_corba_se_spi_presentation_rmi.jmk 2011-03-16 20:45:33.922471207 +0000
+@@ -29,5 +29,6 @@
+ com/sun/corba/se/spi/presentation/rmi/IDLNameTranslator.java \
+ com/sun/corba/se/spi/presentation/rmi/PresentationDefaults.java \
+ com/sun/corba/se/spi/presentation/rmi/PresentationManager.java \
++ com/sun/corba/se/spi/presentation/rmi/PresentationDefaults.java \
+ com/sun/corba/se/spi/presentation/rmi/StubAdapter.java
+
+diff -Nru openjdk-boot.origjdk/make/java/java/FILES_java.gmk openjdk-boot/jdk/make/java/java/FILES_java.gmk
+--- openjdk-boot.origjdk/make/java/java/FILES_java.gmk 2011-03-14 22:10:30.000000000 +0000
++++ openjdk-boot/jdk/make/java/java/FILES_java.gmk 2011-03-16 20:45:33.922471207 +0000
+@@ -29,6 +29,80 @@
+ # will generate header files
+ #
+ JAVA_JAVA_java = \
++ java/lang/reflect/AccessibleObject.java \
++ java/lang/reflect/AnnotatedElement.java \
++ java/lang/reflect/Array.java \
++ java/lang/reflect/Constructor.java \
++ java/lang/reflect/Field.java \
++ java/lang/reflect/GenericArrayType.java \
++ java/lang/reflect/GenericDeclaration.java \
++ java/lang/reflect/GenericSignatureFormatError.java \
++ java/lang/reflect/InvocationHandler.java \
++ java/lang/reflect/InvocationTargetException.java \
++ java/lang/reflect/MalformedParameterizedTypeException.java \
++ java/lang/reflect/Member.java \
++ java/lang/reflect/Method.java \
++ java/lang/reflect/Modifier.java \
++ java/lang/reflect/package-info.java \
++ java/lang/reflect/ParameterizedType.java \
++ java/lang/reflect/Proxy.java \
++ java/lang/reflect/ReflectAccess.java \
++ java/lang/reflect/ReflectPermission.java \
++ java/lang/reflect/Type.java \
++ java/lang/reflect/TypeVariable.java \
++ java/lang/reflect/UndeclaredThrowableException.java \
++ java/lang/reflect/WildcardType.java \
++ java/lang/ref/Finalizer.java \
++ java/lang/ref/FinalReference.java \
++ java/lang/ref/PhantomReference.java \
++ java/lang/ref/Reference.java \
++ java/lang/ref/ReferenceQueue.java \
++ java/lang/ref/SoftReference.java \
++ java/lang/ref/WeakReference.java \
++ java/lang/management/ClassLoadingMXBean.java \
++ java/lang/management/CompilationMXBean.java \
++ java/lang/management/GarbageCollectorMXBean.java \
++ java/lang/management/LockInfo.java \
++ java/lang/management/ManagementFactory.java \
++ java/lang/management/ManagementPermission.java \
++ java/lang/management/MemoryManagerMXBean.java \
++ java/lang/management/MemoryMXBean.java \
++ java/lang/management/MemoryNotificationInfo.java \
++ java/lang/management/MemoryPoolMXBean.java \
++ java/lang/management/MemoryType.java \
++ java/lang/management/MemoryUsage.java \
++ java/lang/management/MonitorInfo.java \
++ java/lang/management/OperatingSystemMXBean.java \
++ java/lang/management/RuntimeMXBean.java \
++ java/lang/management/ThreadInfo.java \
++ java/lang/management/ThreadMXBean.java \
++ java/lang/instrument/ClassDefinition.java \
++ java/lang/instrument/ClassFileTransformer.java \
++ java/lang/instrument/IllegalClassFormatException.java \
++ java/lang/instrument/Instrumentation.java \
++ java/lang/instrument/UnmodifiableClassException.java \
++ java/lang/annotation/AnnotationFormatError.java \
++ java/lang/annotation/Annotation.java \
++ java/lang/annotation/AnnotationTypeMismatchException.java \
++ java/lang/annotation/Documented.java \
++ java/lang/annotation/ElementType.java \
++ java/lang/annotation/IncompleteAnnotationException.java \
++ java/lang/annotation/Inherited.java \
++ java/lang/annotation/package-info.java \
++ java/lang/annotation/Retention.java \
++ java/lang/annotation/RetentionPolicy.java \
++ java/lang/annotation/Target.java \
++ java/io/IOError.java \
++ java/lang/Deprecated.java \
++ java/lang/Iterable.java \
++ java/util/RandomAccess.java \
++ java/lang/CharacterData00.java \
++ java/lang/CharacterData01.java \
++ java/lang/CharacterData02.java \
++ java/lang/CharacterData0E.java \
++ java/lang/CharacterDataLatin1.java \
++ java/lang/CharacterDataPrivateUse.java \
++ java/lang/CharacterDataUndefined.java \
+ java/lang/Object.java \
+ java/lang/AutoCloseable.java \
+ java/lang/Class.java \
+@@ -139,13 +213,6 @@
+ java/lang/Override.java \
+ java/lang/SafeVarargs.java \
+ java/lang/SuppressWarnings.java \
+- java/lang/ref/Reference.java \
+- java/lang/ref/SoftReference.java \
+- java/lang/ref/WeakReference.java \
+- java/lang/ref/FinalReference.java \
+- java/lang/ref/PhantomReference.java \
+- java/lang/ref/ReferenceQueue.java \
+- java/lang/ref/Finalizer.java \
+ java/util/BitSet.java \
+ java/util/Calendar.java \
+ java/util/GregorianCalendar.java \
diff --git a/patches/boot/javah.patch b/patches/boot/javah.patch
new file mode 100644
index 0000000..d563833
--- /dev/null
+++ b/patches/boot/javah.patch
@@ -0,0 +1,67 @@
+diff -Nru openjdk-boot.orig/jdk/src/share/native/sun/java2d/opengl/OGLContext.h openjdk-boot/jdk/src/share/native/sun/java2d/opengl/OGLContext.h
+--- openjdk-boot.orig/jdk/src/share/native/sun/java2d/opengl/OGLContext.h 2009-12-04 23:33:16.000000000 +0000
++++ openjdk-boot/jdk/src/share/native/sun/java2d/opengl/OGLContext.h 2009-12-13 21:11:04.000000000 +0000
+@@ -27,6 +27,7 @@
+ #define OGLContext_h_Included
+
+ #include "sun_java2d_pipe_BufferedContext.h"
++#include "sun_java2d_pipe_hw_ContextCapabilities.h"
+ #include "sun_java2d_opengl_OGLContext.h"
+ #include "sun_java2d_opengl_OGLContext_OGLContextCaps.h"
+
+@@ -100,39 +101,39 @@
+ * See OGLContext.java for more on these flags.
+ */
+ #define CAPS_EMPTY \
+- sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_EMPTY
++ sun_java2d_pipe_hw_ContextCapabilities_CAPS_EMPTY
+ #define CAPS_RT_PLAIN_ALPHA \
+- sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_RT_PLAIN_ALPHA
++ sun_java2d_pipe_hw_ContextCapabilities_CAPS_RT_PLAIN_ALPHA
+ #define CAPS_RT_TEXTURE_ALPHA \
+- sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_RT_TEXTURE_ALPHA
++ sun_java2d_pipe_hw_ContextCapabilities_CAPS_RT_TEXTURE_ALPHA
+ #define CAPS_RT_TEXTURE_OPAQUE \
+- sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_RT_TEXTURE_OPAQUE
++ sun_java2d_pipe_hw_ContextCapabilities_CAPS_RT_TEXTURE_OPAQUE
+ #define CAPS_MULTITEXTURE \
+- sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_MULTITEXTURE
++ sun_java2d_pipe_hw_ContextCapabilities_CAPS_MULTITEXTURE
+ #define CAPS_TEXNONPOW2 \
+- sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_TEXNONPOW2
++ sun_java2d_pipe_hw_ContextCapabilities_CAPS_TEXNONPOW2
+ #define CAPS_TEXNONSQUARE \
+- sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_TEXNONSQUARE
++ sun_java2d_pipe_hw_ContextCapabilities_CAPS_TEXNONSQUARE
+ #define CAPS_PS20 \
+- sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_PS20
++ sun_java2d_pipe_hw_ContextCapabilities_CAPS_PS20
+ #define CAPS_PS30 \
+- sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_PS30
++ sun_java2d_pipe_hw_ContextCapabilities_CAPS_PS30
+ #define LAST_SHARED_CAP \
+ sun_java2d_opengl_OGLContext_OGLContextCaps_LAST_SHARED_CAP
+ #define CAPS_EXT_FBOBJECT \
+- sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_EXT_FBOBJECT
++ sun_java2d_opengl_OGLContext_00024OGLContextCaps_CAPS_EXT_FBOBJECT
+ #define CAPS_STORED_ALPHA \
+- sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_STORED_ALPHA
++ sun_java2d_opengl_OGLContext_00024OGLContextCaps_CAPS_STORED_ALPHA
+ #define CAPS_DOUBLEBUFFERED \
+- sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_DOUBLEBUFFERED
++ sun_java2d_opengl_OGLContext_00024OGLContextCaps_CAPS_DOUBLEBUFFERED
+ #define CAPS_EXT_LCD_SHADER \
+- sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_EXT_LCD_SHADER
++ sun_java2d_opengl_OGLContext_00024OGLContextCaps_CAPS_EXT_LCD_SHADER
+ #define CAPS_EXT_BIOP_SHADER \
+- sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_EXT_BIOP_SHADER
++ sun_java2d_opengl_OGLContext_00024OGLContextCaps_CAPS_EXT_BIOP_SHADER
+ #define CAPS_EXT_GRAD_SHADER \
+- sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_EXT_GRAD_SHADER
++ sun_java2d_opengl_OGLContext_00024OGLContextCaps_CAPS_EXT_GRAD_SHADER
+ #define CAPS_EXT_TEXRECT \
+- sun_java2d_opengl_OGLContext_OGLContextCaps_CAPS_EXT_TEXRECT
++ sun_java2d_opengl_OGLContext_00024OGLContextCaps_CAPS_EXT_TEXRECT
+
+ /**
+ * Evaluates to true if the given capability bitmask is present for the
diff --git a/patches/boot/jaxp-dependency.patch b/patches/boot/jaxp-dependency.patch
new file mode 100644
index 0000000..aa60814
--- /dev/null
+++ b/patches/boot/jaxp-dependency.patch
@@ -0,0 +1,25 @@
+diff -Nru openjdk-boot.orig/jaxws/build.properties openjdk-boot/jaxws/build.properties
+--- openjdk-boot.orig/jaxws/build.properties 2010-07-29 21:54:11.000000000 +0100
++++ openjdk-boot/jaxws/build.properties 2010-09-01 21:25:29.587888259 +0100
+@@ -62,6 +62,9 @@
+ build.dir=${output.dir}/build
+ build.classes.dir=${build.dir}/classes
+
++# JAXP built files
++jaxp.classes.dir=${output.dir}/../jaxp/build/classes
++
+ # Distributed results
+ dist.dir=${output.dir}/dist
+ dist.lib.dir=${dist.dir}/lib
+diff -Nru openjdk-boot.orig/jaxws/build.xml openjdk-boot/jaxws/build.xml
+--- openjdk-boot.orig/jaxws/build.xml 2010-09-01 21:00:02.000000000 +0100
++++ openjdk-boot/jaxws/build.xml 2010-09-01 21:25:29.595887577 +0100
+@@ -124,7 +124,7 @@
+ <mkdir dir="${build.classes.dir}"/>
+ <javac
+ includeAntRuntime="false"
+- classpath="${build.classes.dir}:${tools.jar}"
++ classpath="${jaxp.classes.dir}:${build.classes.dir}:${tools.jar}"
+ fork="true"
+ destdir="${build.classes.dir}"
+ memoryInitialSize="${javac.memoryInitialSize}"
diff --git a/patches/boot/jaxws-getdtdtype.patch b/patches/boot/jaxws-getdtdtype.patch
new file mode 100644
index 0000000..6a7d6ec
--- /dev/null
+++ b/patches/boot/jaxws-getdtdtype.patch
@@ -0,0 +1,27 @@
+--- openjdk-boot.orig/jaxws/sources/jaxws_src/src/com/sun/xml/internal/bind/v2/runtime/unmarshaller/StAXEventConnector.java 2009-11-17 16:37:06.000000000 +0000
++++ openjdk-boot/jaxws/sources/jaxws_src/src/com/sun/xml/internal/bind/v2/runtime/unmarshaller/StAXEventConnector.java 2009-11-17 16:38:00.000000000 +0000
+@@ -276,7 +276,7 @@
+ qName = localName;
+ else
+ qName = prefix + ':' + localName;
+- String type = staxAttr.getDTDType();
++ String type = staxAttr.getDTDType().toString();
+ String value = staxAttr.getValue();
+
+ attrs.addAttribute(uri, localName, qName, type, value);
+--- openjdk-boot.orig/jaxws/sources/jaxws_src/src/com/sun/xml/internal/fastinfoset/stax/events/AttributeBase.java.old 2009-11-17 19:46:11.000000000 +0000
++++ openjdk-boot/jaxws/sources/jaxws_src/src/com/sun/xml/internal/fastinfoset/stax/events/AttributeBase.java 2009-11-17 19:46:35.000000000 +0000
+@@ -108,11 +108,10 @@
+ * the String "CDATA"
+ * @return the type as a String, default is "CDATA"
+ */
+- public String getDTDType() {
+- return _attributeType;
++ public QName getDTDType() {
++ return new QName(_attributeType);
+ }
+
+-
+ /**
+ * A flag indicating whether this attribute was actually
+ * specified in the start-tag of its element, or was defaulted from the schema.
diff --git a/patches/boot/jaxws-jdk-dependency.patch b/patches/boot/jaxws-jdk-dependency.patch
new file mode 100644
index 0000000..8e36886
--- /dev/null
+++ b/patches/boot/jaxws-jdk-dependency.patch
@@ -0,0 +1,47 @@
+diff -Nru openjdk-boot.orig/jaxws/build.properties openjdk-boot/jaxws/build.properties
+--- openjdk-boot.orig/jaxws/build.properties 2012-06-11 14:30:27.904723311 +0100
++++ openjdk-boot/jaxws/build.properties 2012-06-11 14:38:13.847981281 +0100
+@@ -62,6 +62,10 @@
+ # JAXP built files
+ jaxp.classes.dir=${output.dir}/../jaxp/build/classes
+
++# JDK sources
++
++jdk.sources=${jdk.topdir}/src/share/classes:${jdk.topdir}/src/solaris/classes
++
+ # Distributed results
+ dist.dir=${output.dir}/dist
+ dist.lib.dir=${dist.dir}/lib
+@@ -92,6 +96,7 @@
+ output.dir=${output.dir}${line.separator}\
+ build.dir=${build.dir}${line.separator}\
+ dist.dir=${dist.dir}${line.separator}\
++ jdk.topdir=${jdk.topdir}${line.separator}\
+ ${line.separator}
+
+ #------------------------------------------------------------
+diff -Nru openjdk-boot.orig/jaxws/build.xml openjdk-boot/jaxws/build.xml
+--- openjdk-boot.orig/jaxws/build.xml 2012-06-11 14:30:27.904723311 +0100
++++ openjdk-boot/jaxws/build.xml 2012-06-11 14:36:04.005990816 +0100
+@@ -138,6 +138,7 @@
+ <javac
+ includeAntRuntime="false"
+ classpath="${jaxp.classes.dir}:${build.classes.dir}:${langtools.jar}"
++ sourcepath="${jdk.sources}"
+ fork="true"
+ destdir="${build.classes.dir}"
+ memoryInitialSize="${javac.memoryInitialSize}"
+diff -Nru openjdk-boot.orig/jaxws/make/Makefile openjdk-boot/jaxws/make/Makefile
+--- openjdk-boot.orig/jaxws/make/Makefile 2012-06-11 14:30:27.904723311 +0100
++++ openjdk-boot/jaxws/make/Makefile 2012-06-11 14:36:04.005990816 +0100
+@@ -123,6 +123,10 @@
+ endif
+ endif
+
++ifdef JDK_TOPDIR
++ ANT_OPTIONS += -Djdk.topdir=$(JDK_TOPDIR)
++endif
++
+ # Default target and expected 'do everything' target
+ default: all
+
diff --git a/patches/boot/jaxws-langtools-dependency.patch b/patches/boot/jaxws-langtools-dependency.patch
new file mode 100644
index 0000000..9c0f03a
--- /dev/null
+++ b/patches/boot/jaxws-langtools-dependency.patch
@@ -0,0 +1,48 @@
+diff -Nru openjdk-boot.orig/jaxws/build.properties openjdk-boot/jaxws/build.properties
+--- openjdk-boot.orig/jaxws/build.properties 2011-03-08 18:42:23.703875234 +0000
++++ openjdk-boot/jaxws/build.properties 2011-03-08 18:40:33.955159212 +0000
+@@ -32,7 +32,8 @@
+ # other tools, and product versions of all the tools.
+ # Override this path as needed, either on the command line or in
+ # one of the standard user build.properties files (see build.xml)
+-javac.jar=${bootstrap.dir}/lib/javac.jar
++javac.jar=${langtools.dist}/bootstrap/lib/javac.jar
++langtools.jar=${langtools.dist}/lib/classes.jar
+
+ # The tools.jar is needed in the classpath to compile these sources
+ jdk.home=${java.home}/..
+@@ -93,8 +94,9 @@
+ os.name=${os.name}${line.separator}\
+ os.arch=${os.arch}${line.separator}\
+ os.version=${os.version}${line.separator}\
+- bootstrap.dir=${bootstrap.dir}${line.separator}\
++ bootstrap.dir=${langtools.dist}/bootstrap${line.separator}\
+ javac.jar=${javac.jar}${line.separator}\
++ langtools.jar=${langtools.jar}${line.separator}\
+ javac.memoryInitialSize=${javac.memoryInitialSize}${line.separator}\
+ javac.memoryMaximumSize=${javac.memoryMaximumSize}${line.separator}\
+ javac.source=${javac.source}${line.separator}\
+diff -Nru openjdk-boot.orig/jaxws/build.xml openjdk-boot/jaxws/build.xml
+--- openjdk-boot.orig/jaxws/build.xml 2011-03-08 18:43:11.778436442 +0000
++++ openjdk-boot/jaxws/build.xml 2011-03-08 18:40:29.639288336 +0000
+@@ -124,7 +124,7 @@
+ <mkdir dir="${build.classes.dir}"/>
+ <javac
+ includeAntRuntime="false"
+- classpath="${jaxp.classes.dir}:${build.classes.dir}:${tools.jar}"
++ classpath="${jaxp.classes.dir}:${build.classes.dir}:${langtools.jar}"
+ fork="true"
+ destdir="${build.classes.dir}"
+ memoryInitialSize="${javac.memoryInitialSize}"
+diff -Nru openjdk-boot.orig/jaxws/make/Makefile openjdk-boot/jaxws/make/Makefile
+--- openjdk-boot.orig/jaxws/make/Makefile 2011-03-08 18:41:00.178374622 +0000
++++ openjdk-boot/jaxws/make/Makefile 2011-03-08 18:40:14.167751211 +0000
+@@ -120,7 +120,7 @@
+ ANT_JAVA_HOME = JAVA_HOME=$(ALT_BOOTDIR)
+ ANT_OPTIONS += -Djdk.home=$(ALT_BOOTDIR)
+ endif
+- ANT_OPTIONS += -Dbootstrap.dir=$(ALT_LANGTOOLS_DIST)/bootstrap
++ ANT_OPTIONS += -Dlangtools.dist=$(ALT_LANGTOOLS_DIST)
+ else
+ ifdef ALT_JDK_IMPORT_PATH
+ ANT_JAVA_HOME = JAVA_HOME=$(ALT_JDK_IMPORT_PATH)
diff --git a/patches/boot/jopt.patch b/patches/boot/jopt.patch
new file mode 100644
index 0000000..4f0f48c
--- /dev/null
+++ b/patches/boot/jopt.patch
@@ -0,0 +1,26 @@
+diff -Nru openjdk-boot.orig/corba/make/common/shared/Defs-java.gmk openjdk-boot/corba/make/common/shared/Defs-java.gmk
+--- openjdk-boot.orig/corba/make/common/shared/Defs-java.gmk 2008-10-22 18:45:43.000000000 +0100
++++ openjdk-boot/corba/make/common/shared/Defs-java.gmk 2008-10-22 18:49:29.000000000 +0100
+@@ -75,7 +75,9 @@
+ JAVAC_JVM_FLAGS += $(JAVA_TOOLS_FLAGS:%=-J%)
+
+ # The jar -J options are special, must be added at the end of the command line
++ifneq (,$(JAR_KNOWS_J_OPTIONS))
+ JAR_JFLAGS = $(JAVA_TOOLS_FLAGS:%=-J%)
++endif
+
+ # JAVA_TOOLS_DIR is the default location to find Java tools to run, if
+ # langtools is not available.
+diff -Nru openjdk-boot.orig/jdk/make/common/shared/Defs-java.gmk openjdk-boot/jdk/make/common/shared/Defs-java.gmk
+--- openjdk-boot.orig/jdk/make/common/shared/Defs-java.gmk 2008-10-22 19:14:30.000000000 +0100
++++ openjdk-boot/jdk/make/common/shared/Defs-java.gmk 2008-10-22 19:15:00.000000000 +0100
+@@ -82,7 +82,9 @@
+ JAVAC_JVM_FLAGS += $(JAVA_TOOLS_FLAGS:%=-J%)
+
+ # The jar -J options are special, must be added at the end of the command line
++ifneq (,$(JAR_KNOWS_J_OPTIONS))
+ JAR_JFLAGS = $(JAVA_TOOLS_FLAGS:%=-J%)
++endif
+
+ # JAVA_TOOLS_DIR is the default location to find Java tools to run, if
+ # langtools is not available.
diff --git a/patches/boot/langtools-force-old-jdk.patch b/patches/boot/langtools-force-old-jdk.patch
new file mode 100644
index 0000000..e662203
--- /dev/null
+++ b/patches/boot/langtools-force-old-jdk.patch
@@ -0,0 +1,16 @@
+diff -Nru openjdk-boot.orig/langtools/make/build.xml openjdk-boot/langtools/make/build.xml
+--- openjdk-boot.orig/langtools/make/build.xml 2011-03-08 11:36:45.555852490 +0000
++++ openjdk-boot/langtools/make/build.xml 2011-03-08 18:33:09.332454251 +0000
+@@ -185,12 +185,6 @@
+ <isset property="import.jdk.jar"/>
+ </condition>
+
+- <condition property="boot.java.provides.latest.jdk">
+- <available
+- ignoresystemclasses="true"
+- classpath="${boot.java.home}/jre/lib/rt.jar" classname="java.nio.file.Path"/>
+- </condition>
+-
+ <condition property="bootstrap.exclude.files" value="" else="${require.latest.jdk.files}">
+ <isset property="boot.java.provides.latest.jdk"/>
+ </condition>
diff --git a/patches/boot/pr39408.patch b/patches/boot/pr39408.patch
new file mode 100644
index 0000000..48e8a8c
--- /dev/null
+++ b/patches/boot/pr39408.patch
@@ -0,0 +1,18 @@
+diff -Nru openjdk.orig/jdk/src/solaris/native/sun/nio/ch/FileDispatcherImpl.c openjdk/jdk/src/solaris/native/sun/nio/ch/FileDispatcherImpl.c
+--- openjdk-boot.orig/jdk/src/solaris/native/sun/nio/ch/FileDispatcherImpl.c 2012-03-21 17:09:55.000000000 +0000
++++ openjdk-boot/jdk/src/solaris/native/sun/nio/ch/FileDispatcherImpl.c 2012-03-23 10:31:52.798787906 +0000
+@@ -55,6 +55,14 @@
+ static int preCloseFD = -1; /* File descriptor to which we dup other fd's
+ before closing them for real */
+
++#undef sun_nio_ch_FileDispatcher_NO_LOCK
++#define sun_nio_ch_FileDispatcher_NO_LOCK -1L
++#undef sun_nio_ch_FileDispatcher_LOCKED
++#define sun_nio_ch_FileDispatcher_LOCKED 0L
++#undef sun_nio_ch_FileDispatcher_RET_EX_LOCK
++#define sun_nio_ch_FileDispatcher_RET_EX_LOCK 1L
++#undef sun_nio_ch_FileDispatcher_INTERRUPTED
++#define sun_nio_ch_FileDispatcher_INTERRUPTED 2L
+
+ JNIEXPORT void JNICALL
+ Java_sun_nio_ch_FileDispatcherImpl_init(JNIEnv *env, jclass cl)
diff --git a/patches/boot/pr40188.patch b/patches/boot/pr40188.patch
new file mode 100644
index 0000000..a6afe5f
--- /dev/null
+++ b/patches/boot/pr40188.patch
@@ -0,0 +1,15 @@
+diff -Nru openjdk-boot.orig/jdk/src/solaris/native/sun/nio/ch/FileDispatcherImpl.c openjdk-boot/jdk/src/solaris/native/sun/nio/ch/FileDispatcherImpl.c
+--- openjdk-boot.orig/jdk/src/solaris/native/sun/nio/ch/FileDispatcherImpl.c 2009-03-30 17:23:08.000000000 +0100
++++ openjdk-boot/jdk/src/solaris/native/sun/nio/ch/FileDispatcherImpl.c 2009-05-18 19:58:36.000000000 +0100
+@@ -192,9 +192,9 @@
+ lockResult = fcntl(fd, cmd, &fl);
+ if (lockResult < 0) {
+ if ((cmd == F_SETLK64) && (errno == EAGAIN))
+- return sun_nio_ch_FileDispatcherImpl_NO_LOCK;
++ return sun_nio_ch_FileDispatcher_NO_LOCK;
+ if (errno == EINTR)
+- return sun_nio_ch_FileDispatcherImpl_INTERRUPTED;
++ return sun_nio_ch_FileDispatcher_INTERRUPTED;
+ JNU_ThrowIOExceptionWithLastError(env, "Lock failed");
+ }
+ return 0;
diff --git a/patches/boot/pr40616.patch b/patches/boot/pr40616.patch
new file mode 100644
index 0000000..732ed6e
--- /dev/null
+++ b/patches/boot/pr40616.patch
@@ -0,0 +1,52 @@
+--- openjdk-boot.orig/jdk/make/tools/src/build/tools/charsetmapping/EUC_TW.java 2010-05-05 18:45:07.000000000 +0100
++++ openjdk-boot/jdk/make/tools/src/build/tools/charsetmapping/EUC_TW.java 2010-05-05 21:26:31.000000000 +0100
+@@ -83,8 +83,8 @@
+ static void genClass(String args[]) throws Exception
+ {
+ InputStream is = new FileInputStream(new File(args[0], "euc_tw.map"));
+- PrintStream ps = new PrintStream(new File(args[1], "EUC_TWMapping.java"),
+- "ISO-8859-1");
++ FileOutputStream fos = new FileOutputStream(new File(args[1], "EUC_TWMapping.java"));
++ PrintStream ps = new PrintStream(fos, false, "ISO-8859-1");
+ String copyright = getCopyright(new File(args[3]));
+
+
+diff -r c1cee45daf4d make/tools/src/build/tools/charsetmapping/HKSCS.java
+--- openjdk-boot.orig/jdk/make/tools/src/build/tools/charsetmapping/HKSCS.java Wed Apr 28 22:15:05 2010 +0100
++++ openjdk-boot/jdk/make/tools/src/build/tools/charsetmapping/HKSCS.java Thu May 06 14:17:11 2010 +0100
+@@ -43,29 +43,28 @@
+ Pattern.compile("(?:0x)?+(\\p{XDigit}++)\\s++(?:0x|U\\+)?+(\\p{XDigit}++)?\\s*+(?:0x|U\\+)?(\\p{XDigit}++)?\\s*+.*");
+
+ static void genClass(String args[]) throws Exception {
+-
++ FileOutputStream fos = new FileOutputStream(new File(args[1], "HKSCSMapping.java"));
+ // hkscs2008
+ genClass0(new FileInputStream(new File(args[0], "HKSCS2008.map")),
+ new FileInputStream(new File(args[0], "HKSCS2008.c2b")),
+- new PrintStream(new File(args[1], "HKSCSMapping.java"),
+- "ISO-8859-1"),
++ new PrintStream(fos, false, "ISO-8859-1"),
+ "HKSCSMapping",
+ getCopyright(new File(args[3])));
+
+
+ // xp2001
++ fos = new FileOutputStream(new File(args[1], "HKSCS_XPMapping.java"));
+ genClass0(new FileInputStream(new File(args[0], "HKSCS_XP.map")),
+ null,
+- new PrintStream(new File(args[1], "HKSCS_XPMapping.java"),
+- "ISO-8859-1"),
++ new PrintStream(fos, false, "ISO-8859-1"),
+ "HKSCS_XPMapping",
+ getCopyright(new File(args[3])));
+
+ // hkscs2001
++ fos = new FileOutputStream(new File(args[1], "HKSCS2001Mapping.java"));
+ genClass0(new FileInputStream(new File(args[0], "HKSCS2001.map")),
+ new FileInputStream(new File(args[0], "HKSCS2001.c2b")),
+- new PrintStream(new File(args[1], "HKSCS2001Mapping.java"),
+- "ISO-8859-1"),
++ new PrintStream(fos, false, "ISO-8859-1"),
+ "HKSCS2001Mapping",
+ getCopyright(new File(args[3])));
+ }
diff --git a/patches/boot/revert-6941137.patch b/patches/boot/revert-6941137.patch
new file mode 100644
index 0000000..3fd2f7c
--- /dev/null
+++ b/patches/boot/revert-6941137.patch
@@ -0,0 +1,12 @@
+diff -Nru openjdk-boot.orig/jdk/src/share/classes/sun/util/calendar/ZoneInfoFile.java openjdk-boot/jdk/src/share/classes/sun/util/calendar/ZoneInfoFile.java
+--- openjdk-boot.orig/jdk/src/share/classes/sun/util/calendar/ZoneInfoFile.java 2011-06-11 00:38:11.000000000 +0100
++++ openjdk-boot/jdk/src/share/classes/sun/util/calendar/ZoneInfoFile.java 2011-06-14 01:44:11.082438342 +0100
+@@ -486,7 +486,7 @@
+ String otherDir = getZoneInfoDir(homeDir);
+ if (otherDir != null)
+ zi = otherDir;
+- zi = FileSystems.getDefault().getPath(zi).toRealPath().toString();
++ zi = new File(zi).getCanonicalPath();
+ } catch(Exception e) {
+ }
+ return zi;
diff --git a/patches/boot/revert-6973616.patch b/patches/boot/revert-6973616.patch
new file mode 100644
index 0000000..5abb0b9
--- /dev/null
+++ b/patches/boot/revert-6973616.patch
@@ -0,0 +1,12 @@
+diff -Nru openjdk-boot.orig/jdk/make/common/shared/Defs-versions.gmk openjdk-boot/jdk/make/common/shared/Defs-versions.gmk
+--- openjdk-boot.orig/jdk/make/common/shared/Defs-versions.gmk 2011-04-11 15:03:04.000000000 +0100
++++ openjdk-boot/jdk/make/common/shared/Defs-versions.gmk 2011-04-11 17:19:36.394376477 +0100
+@@ -209,7 +209,7 @@
+
+ # Generic
+ REQUIRED_ANT_VER = 1.7.1
+-REQUIRED_BOOT_VER = 1.6
++REQUIRED_BOOT_VER = 1.5
+ REQUIRED_FREETYPE_VERSION = 2.2.1
+ REQUIRED_MAKE_VER = 3.81
+ REQUIRED_UNZIP_VER = 5.12
diff --git a/patches/boot/scanner-charsets.patch b/patches/boot/scanner-charsets.patch
new file mode 100644
index 0000000..a3a4b01
--- /dev/null
+++ b/patches/boot/scanner-charsets.patch
@@ -0,0 +1,69 @@
+diff -r 5d5ee1c92a1b make/tools/src/build/tools/charsetmapping/EUC_TW.java
+--- openjdk-boot.orig/jdk/make/tools/src/build/tools/charsetmapping/EUC_TW.java Fri May 14 14:06:33 2010 +0100
++++ openjdk-boot/jdk/make/tools/src/build/tools/charsetmapping/EUC_TW.java Mon May 17 20:40:10 2010 +0100
+@@ -27,7 +27,6 @@
+
+ import java.io.*;
+ import java.util.ArrayList;
+-import java.util.Scanner;
+ import java.util.Formatter;
+ import java.util.regex.*;
+ import java.nio.charset.*;
+diff -r 5d5ee1c92a1b make/tools/src/build/tools/charsetmapping/HKSCS.java
+--- openjdk.orig/jdk/make/tools/src/build/tools/charsetmapping/HKSCS.java Fri May 14 14:06:33 2010 +0100
++++ openjdk-boot/jdk/make/tools/src/build/tools/charsetmapping/HKSCS.java Mon May 17 20:40:10 2010 +0100
+@@ -28,7 +28,6 @@
+ import java.io.*;
+ import java.util.Arrays;
+ import java.util.ArrayList;
+-import java.util.Scanner;
+ import java.util.Formatter;
+ import java.util.regex.*;
+ import java.nio.charset.*;
+diff -r 5d5ee1c92a1b make/tools/src/build/tools/charsetmapping/Main.java
+--- openjdk-boot.orig/jdk/make/tools/src/build/tools/charsetmapping/Main.java Fri May 14 14:06:33 2010 +0100
++++ openjdk-boot/jdk/make/tools/src/build/tools/charsetmapping/Main.java Mon May 17 20:40:10 2010 +0100
+@@ -25,9 +25,6 @@
+
+ package build.tools.charsetmapping;
+
+-import java.io.*;
+-import java.util.Scanner;
+-
+ public class Main {
+
+ public static void main(String args[]) throws Exception {
+diff -r 5d5ee1c92a1b make/tools/src/build/tools/charsetmapping/Utils.java
+--- openjdk-boot.orig/jdk/make/tools/src/build/tools/charsetmapping/Utils.java Fri May 14 14:06:33 2010 +0100
++++ openjdk-boot/jdk/make/tools/src/build/tools/charsetmapping/Utils.java Mon May 17 20:40:10 2010 +0100
+@@ -26,6 +26,7 @@
+ package build.tools.charsetmapping;
+
+ import java.io.File;
++import java.io.FileInputStream;
+ import java.io.InputStream;
+ import java.io.InputStreamReader;
+ import java.io.OutputStream;
+@@ -33,7 +34,6 @@
+ import java.io.IOException;
+ import java.util.regex.Matcher;
+ import java.util.regex.Pattern;
+-import java.util.Scanner;
+ import java.util.Formatter;
+
+ public class Utils {
+@@ -206,10 +206,11 @@
+ }
+
+ public static String getCopyright(File f) throws IOException {
+- Scanner s = new Scanner(f, "ISO-8859-1");
++ InputStreamReader r = new InputStreamReader(new FileInputStream(f),
++ "ISO-8859-1");
++ BufferedReader s = new BufferedReader(r);
+ StringBuilder sb = new StringBuilder();
+- while (s.hasNextLine()) {
+- String ln = s.nextLine();
++ for (String ln = s.readLine(); ln != null; ln = s.readLine()) {
+ sb.append(ln + "\n");
+ // assume we have the copyright as the first comment
+ if (ln.matches("^\\s\\*\\/$"))
diff --git a/patches/boot/scanner-dbcs.patch b/patches/boot/scanner-dbcs.patch
new file mode 100644
index 0000000..4dc3990
--- /dev/null
+++ b/patches/boot/scanner-dbcs.patch
@@ -0,0 +1,40 @@
+diff -Nru openjdk-boot.orig/jdk/make/tools/src/build/tools/charsetmapping/DBCS.java openjdk-boot/jdk/make/tools/src/build/tools/charsetmapping/DBCS.java
+--- openjdk-boot.orig/jdk/make/tools/src/build/tools/charsetmapping/DBCS.java 2010-05-04 14:24:56.000000000 +0100
++++ openjdk-boot/jdk/make/tools/src/build/tools/charsetmapping/DBCS.java 2010-05-04 14:34:01.000000000 +0100
+@@ -27,7 +27,6 @@
+ import java.io.*;
+ import java.util.Arrays;
+ import java.util.ArrayList;
+-import java.util.Scanner;
+ import java.util.Formatter;
+ import java.util.regex.*;
+ import java.nio.charset.*;
+@@ -39,9 +38,8 @@
+
+ public static void genClass(String args[]) throws Exception {
+
+- Scanner s = new Scanner(new File(args[0], args[2]));
+- while (s.hasNextLine()) {
+- String line = s.nextLine();
++ BufferedReader s = new BufferedReader(new FileReader(new File(args[0], args[2])));
++ for (String line = s.readLine(); line != null; line = s.readLine()) {
+ if (line.startsWith("#") || line.length() == 0)
+ continue;
+ String[] fields = line.split("\\s+");
+@@ -188,14 +186,13 @@
+ String b2cNR = b2cNRSB.toString();
+ String c2bNR = c2bNRSB.toString();
+
+- Scanner s = new Scanner(new File(srcDir, template));
++ BufferedReader s = new BufferedReader(new FileReader(new File(srcDir, template)));
+ PrintStream ops = new PrintStream(new FileOutputStream(
+ new File(dstDir, clzName + ".java")));
+ if (hisName == null)
+ hisName = "";
+
+- while (s.hasNextLine()) {
+- String line = s.nextLine();
++ for (String line = s.readLine(); line != null; line = s.readLine()) {
+ if (line.indexOf("$") == -1) {
+ ops.println(line);
+ continue;
diff --git a/patches/boot/scanner-sbcs.patch b/patches/boot/scanner-sbcs.patch
new file mode 100644
index 0000000..e711de1
--- /dev/null
+++ b/patches/boot/scanner-sbcs.patch
@@ -0,0 +1,38 @@
+diff -Nru openjdk-boot.orig/jdk/make/tools/src/build/tools/charsetmapping/SBCS.java openjdk-boot/jdk/make/tools/src/build/tools/charsetmapping/SBCS.java
+--- openjdk-boot.orig/jdk/make/tools/src/build/tools/charsetmapping/SBCS.java 2010-05-04 14:09:01.000000000 +0100
++++ openjdk-boot/jdk/make/tools/src/build/tools/charsetmapping/SBCS.java 2010-05-04 14:17:47.000000000 +0100
+@@ -28,7 +28,6 @@
+ import java.io.*;
+ import java.util.Arrays;
+ import java.util.ArrayList;
+-import java.util.Scanner;
+ import java.util.Formatter;
+ import java.util.regex.*;
+ import java.nio.charset.*;
+@@ -38,9 +37,8 @@
+
+ public static void genClass(String args[]) throws Exception {
+
+- Scanner s = new Scanner(new File(args[0], args[2]));
+- while (s.hasNextLine()) {
+- String line = s.nextLine();
++ BufferedReader s = new BufferedReader(new FileReader(new File(args[0], args[2])));
++ for (String line = s.readLine(); line != null; line = s.readLine()) {
+ if (line.startsWith("#") || line.length() == 0)
+ continue;
+ String[] fields = line.split("\\s+");
+@@ -208,12 +206,11 @@
+ String b2cNR = b2cNRSB.toString();
+ String c2bNR = c2bNRSB.toString();
+
+- Scanner s = new Scanner(new File(srcDir, template));
++ BufferedReader s = new BufferedReader(new FileReader(new File(srcDir, template)));
+ PrintStream out = new PrintStream(new FileOutputStream(
+ new File(dstDir, clzName + ".java")));
+
+- while (s.hasNextLine()) {
+- String line = s.nextLine();
++ for (String line = s.readLine(); line != null; line = s.readLine()) {
+ int i = line.indexOf("$");
+ if (i == -1) {
+ out.println(line);
diff --git a/patches/boot/scanner-spp.patch b/patches/boot/scanner-spp.patch
new file mode 100644
index 0000000..64a4498
--- /dev/null
+++ b/patches/boot/scanner-spp.patch
@@ -0,0 +1,65 @@
+diff -Nru openjdk-boot.orig/jdk/make/tools/src/build/tools/spp/Spp.java openjdk-boot/jdk/make/tools/src/build/tools/spp/Spp.java
+--- openjdk-boot.orig/jdk/make/tools/src/build/tools/spp/Spp.java 2008-09-11 08:44:09.000000000 +0100
++++ openjdk-boot/jdk/make/tools/src/build/tools/spp/Spp.java 2008-09-12 21:34:38.000000000 +0100
+@@ -25,6 +25,10 @@
+
+ package build.tools.spp;
+
++import java.io.BufferedReader;
++import java.io.InputStreamReader;
++import java.io.IOException;
++
+ import java.util.*;
+ import java.util.regex.*;
+
+@@ -83,7 +87,7 @@
+ }
+
+ StringBuffer out = new StringBuffer();
+- new Spp().spp(new Scanner(System.in),
++ new Spp().spp(new BufferedReader(new InputStreamReader(System.in)),
+ out, "",
+ keys, vars, be,
+ false);
+@@ -104,12 +108,12 @@
+ Matcher ifkey = Pattern.compile("^#if\\[(!)?" + KEY + "\\]").matcher("");
+ Matcher elsekey = Pattern.compile("^#else\\[(!)?" + KEY + "\\]").matcher("");
+ Matcher endkey = Pattern.compile("^#end\\[(!)?" + KEY + "\\]").matcher("");
+- Matcher vardef = Pattern.compile("\\{#if\\[(!)?" + KEY + "\\]\\?" + TEXT + "(:"+ TEXT + ")?\\}|\\$" + VAR + "\\$").matcher("");
++ Pattern pvardef = Pattern.compile("\\{#if\\[(!)?" + KEY + "\\]\\?" + TEXT + "(:"+ TEXT + ")?\\}|\\$" + VAR + "\\$");
+ Matcher vardef2 = Pattern.compile("\\$" + VAR + "\\$").matcher("");
+
+ void append(StringBuffer buf, String ln,
+ Set<String> keys, Map<String, String> vars) {
+- vardef.reset(ln);
++ Matcher vardef = pvardef.matcher(ln);
+ while (vardef.find()) {
+ String repl = "";
+ if (vardef.group(GN_VAR) != null)
+@@ -133,19 +137,20 @@
+ }
+
+ // return true if #end[key], #end or EOF reached
+- boolean spp(Scanner in, StringBuffer buf, String key,
++ boolean spp(BufferedReader in, StringBuffer buf, String key,
+ Set<String> keys, Map<String, String> vars,
+- boolean be, boolean skip) {
+- while (in.hasNextLine()) {
+- String ln = in.nextLine();
++ boolean be, boolean skip) throws IOException {
++ while (true) {
++ String ln = in.readLine();
++ if (ln == null)
++ break;
+ if (be) {
+ if (ln.startsWith("#begin")) {
+ buf.setLength(0); //clean up to this line
+ continue;
+ }
+ if (ln.equals("#end")) {
+- while (in.hasNextLine())
+- in.nextLine();
++ do { } while (in.readLine() != null);
+ return true; //discard the rest to EOF
+ }
+ }
diff --git a/patches/boot/symbols.patch b/patches/boot/symbols.patch
new file mode 100644
index 0000000..8803b0c
--- /dev/null
+++ b/patches/boot/symbols.patch
@@ -0,0 +1,23 @@
+diff -Nru openjdk-boot.orig/jdk/make/common/Release.gmk openjdk-boot/jdk/make/common/Release.gmk
+--- openjdk-boot.orig/jdk/make/common/Release.gmk 2011-06-13 17:19:59.000000000 +0100
++++ openjdk-boot/jdk/make/common/Release.gmk 2011-06-14 01:19:26.469436464 +0100
+@@ -975,19 +975,6 @@
+ @$(CD) $(CLASSBINDIR) && $(java-vm-cleanup)
+ $(CP) $(LIBDIR)/tools.jar $(JDK_IMAGE_DIR)/lib/tools.jar
+ @#
+- @# lib/ct.sym
+- @#
+- $(MKDIR) -p $(OUTPUTDIR)/symbols/META-INF/sym
+- $(JAVAC_CMD) -XDprocess.packages -proc:only \
+- -processor com.sun.tools.javac.sym.CreateSymbols \
+- -Acom.sun.tools.javac.sym.Jar=$(RT_JAR) \
+- -Acom.sun.tools.javac.sym.Dest=$(OUTPUTDIR)/symbols/META-INF/sym/rt.jar \
+- $(CORE_PKGS) $(NON_CORE_PKGS) $(EXCLUDE_PROPWARN_PKGS) $(EXPORTED_PRIVATE_PKGS)
+- $(BOOT_JAR_CMD) $(CREATE_JAR_OPTS_NOMANIFEST) $(LIBDIR)/ct.sym \
+- -C $(OUTPUTDIR)/symbols META-INF $(BOOT_JAR_JFLAGS)
+- @$(java-vm-cleanup)
+- $(CP) $(LIBDIR)/ct.sym $(JDK_IMAGE_DIR)/lib/ct.sym
+- @#
+ @# CORBA supported orb.idl and ir.idl should be copied to lib
+ @#
+ $(CP) $(LIBDIR)/orb.idl $(JDK_IMAGE_DIR)/lib/orb.idl
diff --git a/patches/boot/test_gamma.patch b/patches/boot/test_gamma.patch
new file mode 100644
index 0000000..9e3cc25
--- /dev/null
+++ b/patches/boot/test_gamma.patch
@@ -0,0 +1,47 @@
+diff -Nru ../openjdk.orig/openjdk-boot/hotspot/make/linux/Makefile openjdk-boot/hotspot/make/linux/Makefile
+--- ../openjdk.orig/openjdk-boot/hotspot/make/linux/Makefile 2009-10-30 17:37:07.000000000 +0000
++++ openjdk-boot/hotspot/make/linux/Makefile 2009-10-30 17:45:40.000000000 +0000
+@@ -287,42 +287,36 @@
+
+ $(TARGETS_C2): $(SUBDIRS_C2)
+ cd $(OSNAME)_$(BUILDARCH)_compiler2/$@ && $(MAKE) $(MFLAGS)
+- cd $(OSNAME)_$(BUILDARCH)_compiler2/$@ && ./test_gamma
+ ifdef INSTALL
+ cd $(OSNAME)_$(BUILDARCH)_compiler2/$@ && $(MAKE) $(MFLAGS) install
+ endif
+
+ $(TARGETS_TIERED): $(SUBDIRS_TIERED)
+ cd $(OSNAME)_$(BUILDARCH)_tiered/$(patsubst %tiered,%,$@) && $(MAKE) $(MFLAGS)
+- cd $(OSNAME)_$(BUILDARCH)_tiered/$(patsubst %tiered,%,$@) && ./test_gamma
+ ifdef INSTALL
+ cd $(OSNAME)_$(BUILDARCH)_tiered/$(patsubst %tiered,%,$@) && $(MAKE) $(MFLAGS) install
+ endif
+
+ $(TARGETS_C1): $(SUBDIRS_C1)
+ cd $(OSNAME)_$(BUILDARCH)_compiler1/$(patsubst %1,%,$@) && $(MAKE) $(MFLAGS)
+- cd $(OSNAME)_$(BUILDARCH)_compiler1/$(patsubst %1,%,$@) && ./test_gamma
+ ifdef INSTALL
+ cd $(OSNAME)_$(BUILDARCH)_compiler1/$(patsubst %1,%,$@) && $(MAKE) $(MFLAGS) install
+ endif
+
+ $(TARGETS_CORE): $(SUBDIRS_CORE)
+ cd $(OSNAME)_$(BUILDARCH)_core/$(patsubst %core,%,$@) && $(MAKE) $(MFLAGS)
+- cd $(OSNAME)_$(BUILDARCH)_core/$(patsubst %core,%,$@) && ./test_gamma
+ ifdef INSTALL
+ cd $(OSNAME)_$(BUILDARCH)_core/$(patsubst %core,%,$@) && $(MAKE) $(MFLAGS) install
+ endif
+
+ $(TARGETS_ZERO): $(SUBDIRS_ZERO)
+ cd $(OSNAME)_$(VARIANTARCH)_zero/$(patsubst %zero,%,$@) && $(MAKE) $(MFLAGS)
+- cd $(OSNAME)_$(VARIANTARCH)_zero/$(patsubst %zero,%,$@) && ./test_gamma
+ ifdef INSTALL
+ cd $(OSNAME)_$(VARIANTARCH)_zero/$(patsubst %zero,%,$@) && $(MAKE) $(MFLAGS) install
+ endif
+
+ $(TARGETS_SHARK): $(SUBDIRS_SHARK)
+ cd $(OSNAME)_$(VARIANTARCH)_shark/$(patsubst %shark,%,$@) && $(MAKE) $(MFLAGS)
+- cd $(OSNAME)_$(VARIANTARCH)_shark/$(patsubst %shark,%,$@) && ./test_gamma
+ ifdef INSTALL
+ cd $(OSNAME)_$(VARIANTARCH)_shark/$(patsubst %shark,%,$@) && $(MAKE) $(MFLAGS) install
+ endif
+
diff --git a/patches/boot/tobin.patch b/patches/boot/tobin.patch
new file mode 100644
index 0000000..cdf6469
--- /dev/null
+++ b/patches/boot/tobin.patch
@@ -0,0 +1,39 @@
+diff -Nru ../openjdk.orig/openjdk-boot/jdk/make/sun/xawt/Makefile openjdk-boot/jdk/make/sun/xawt/Makefile
+--- ../openjdk.orig/openjdk-boot/jdk/make/sun/xawt/Makefile 2009-10-30 16:49:39.000000000 +0000
++++ openjdk-boot/jdk/make/sun/xawt/Makefile 2009-10-30 16:59:16.000000000 +0000
+@@ -294,11 +294,7 @@
+
+ TEMPDIR_CLASSES = $(TEMPDIR)/classes
+
+-$(TEMPDIR_CLASSES)/sun/awt/X11/ToBin.class: ToBin.java
+- @$(prep-target)
+- $(BOOT_JAVAC_CMD) -d $(TEMPDIR_CLASSES) $<
+-
+-$(TEMPDIR)/.gen_icons: $(TEMPDIR_CLASSES)/sun/awt/X11/ToBin.class $(ICONS)
++$(TEMPDIR)/.gen_icons: $(ICONS)
+ $(prep-target)
+ for i in $(ICONS); do \
+ filename=`basename $$i`; \
+@@ -308,20 +304,14 @@
+ $(ECHO) "package sun.awt.X11;" >> $$classname ; \
+ $(ECHO) "public class XAWTIcon32_$$name {" >> $$classname; \
+ $(ECHO) "public static int[] $$name = { " >> $$classname; \
+- $(CAT) $$i | \
+- $(BOOT_JAVA_CMD) -cp $(TEMPDIR_CLASSES) \
+- -Djava.awt.headless=true \
+- sun.awt.X11.ToBin >> $$classname; \
++ $(ECHO) "0,0" >> $$classname ; \
+ $(ECHO) "}; }" >> $$classname; \
+ classname=$(GEN_DIR)/XAWTIcon64_$$name.java; \
+ $(RM) $$classname; \
+ $(ECHO) "package sun.awt.X11;" >> $$classname ; \
+ $(ECHO) "public class XAWTIcon64_$$name {" >> $$classname; \
+ $(ECHO) "public static long[] $$name = { " >> $$classname; \
+- $(CAT) $$i | \
+- $(BOOT_JAVA_CMD) -cp $(TEMPDIR_CLASSES) \
+- -Djava.awt.headless=true \
+- sun.awt.X11.ToBin >> $$classname; \
++ $(ECHO) "0,0" >> $$classname ; \
+ $(ECHO) "}; }" >> $$classname; \
+ done
+ $(TOUCH) $@
diff --git a/patches/boot/tools.jar.patch b/patches/boot/tools.jar.patch
new file mode 100644
index 0000000..846993a
--- /dev/null
+++ b/patches/boot/tools.jar.patch
@@ -0,0 +1,14 @@
+diff -Nru openjdk-boot.orig/hotspot/make/linux/makefiles/sa.make openjdk-boot/hotspot/make/linux/makefiles/sa.make
+--- openjdk-boot.orig/hotspot/make/linux/makefiles/sa.make 2010-08-27 19:15:27.000000000 +0100
++++ openjdk-boot/hotspot/make/linux/makefiles/sa.make 2010-09-01 20:49:39.417105243 +0100
+@@ -71,8 +71,8 @@
+ echo "ALT_BOOTDIR, BOOTDIR or JAVA_HOME needs to be defined to build SA"; \
+ exit 1; \
+ fi
+- $(QUIETLY) if [ ! -f $(SA_CLASSPATH) -a ! -d $(MODULELIB_PATH) ] ; then \
+- echo "Missing $(SA_CLASSPATH) file. Use 1.6.0 or later version of JDK";\
++ $(QUIETLY) if [ ! -d $(MODULELIB_PATH) ] ; then \
++ echo "$(MODULELIB_PATH) is not a directory.";\
+ echo ""; \
+ exit 1; \
+ fi
diff --git a/patches/boot/use_target_6_for_bootstrap_classes.patch b/patches/boot/use_target_6_for_bootstrap_classes.patch
new file mode 100644
index 0000000..9f847a2
--- /dev/null
+++ b/patches/boot/use_target_6_for_bootstrap_classes.patch
@@ -0,0 +1,77 @@
+diff -r 9cf5ed6b45d6 make/java/text/base/Makefile
+--- openjdk-boot/jdk/make/java/text/base/Makefile Mon Jul 25 16:20:39 2011 -0700
++++ openjdk-boot/jdk/make/java/text/base/Makefile Wed Jul 27 19:10:34 2011 +0100
+@@ -34,6 +34,9 @@
+ #
+ include FILES_java.gmk
+
++LANGUAGE_VERSION = -source 6
++CLASS_VERSION = -target 6
++
+ #
+ # Include
+ #
+diff -r 9cf5ed6b45d6 make/java/java/Makefile
+--- openjdk-boot/jdk/make/java/java/Makefile Mon Jul 25 16:20:39 2011 -0700
++++ openjdk-boot/jdk/make/java/java/Makefile Thu Jul 28 02:14:07 2011 +0100
+@@ -52,6 +52,8 @@
+ OTHER_CFLAGS += -DJDK_UPDATE_VERSION='"$(JDK_UPDATE_VERSION)"'
+ endif
+
++LANGUAGE_VERSION = -source 6
++CLASS_VERSION = -target 6
+
+ #
+ # Files to compile.
+diff -r 9cf5ed6b45d6 make/sun/rmi/rmi/Makefile
+--- openjdk-boot/jdk/make/sun/rmi/rmi/Makefile Mon Jul 25 16:20:39 2011 -0700
++++ openjdk-boot/jdk/make/sun/rmi/rmi/Makefile Thu Jul 28 03:12:35 2011 +0100
+@@ -33,6 +33,9 @@
+ LIBRARY = rmi
+ include $(BUILDDIR)/common/Defs.gmk
+
++LANGUAGE_VERSION = -source 6
++CLASS_VERSION = -target 6
++
+ #
+ # Add use of a mapfile
+ #
+diff -r 9cf5ed6b45d6 make/com/sun/jndi/rmi/registry/Makefile
+--- openjdk-boot/jdk/make/com/sun/jndi/rmi/registry/Makefile Mon Jul 25 16:20:39 2011 -0700
++++ openjdk-boot/jdk/make/com/sun/jndi/rmi/registry/Makefile Thu Jul 28 04:26:24 2011 +0100
+@@ -32,6 +32,9 @@
+ PRODUCT = sun
+ include $(BUILDDIR)/common/Defs.gmk
+
++LANGUAGE_VERSION = -source 6
++CLASS_VERSION = -target 6
++
+ #
+ # Files to compile
+ #
+diff -r 9cf5ed6b45d6 make/com/sun/jndi/cosnaming/Makefile
+--- openjdk-boot/jdk/make/com/sun/jndi/cosnaming/Makefile Mon Jul 25 16:20:39 2011 -0700
++++ openjdk-boot/jdk/make/com/sun/jndi/cosnaming/Makefile Thu Jul 28 05:50:27 2011 +0100
+@@ -32,6 +32,9 @@
+ PRODUCT = sun
+ include $(BUILDDIR)/common/Defs.gmk
+
++LANGUAGE_VERSION = -source 6
++CLASS_VERSION = -target 6
++
+ #
+ # Resources
+ #
+diff --git a/make/sun/security/action/Makefile b/make/sun/security/action/Makefile
+--- openjdk-boot/jdk/make/sun/security/action/Makefile
++++ openjdk-boot/jdk/make/sun/security/action/Makefile
+@@ -28,6 +28,9 @@
+ PRODUCT = sun
+ include $(BUILDDIR)/common/Defs.gmk
+
++LANGUAGE_VERSION = -source 6
++CLASS_VERSION = -target 6
++
+ #
+ # Files
+ #
diff --git a/patches/boot/xbootclasspath.patch b/patches/boot/xbootclasspath.patch
new file mode 100644
index 0000000..aaa5b39
--- /dev/null
+++ b/patches/boot/xbootclasspath.patch
@@ -0,0 +1,120 @@
+diff -Nru openjdk-boot.orig/corba/make/common/shared/Defs-java.gmk openjdk-boot/corba/make/common/shared/Defs-java.gmk
+--- openjdk-boot.orig/corba/make/common/shared/Defs-java.gmk 2012-06-29 15:19:55.000000000 +0100
++++ openjdk-boot/corba/make/common/shared/Defs-java.gmk 2012-06-29 18:52:40.584723407 +0100
+@@ -131,26 +131,14 @@
+ CLASS_VERSION = -target $(TARGET_CLASS_VERSION)
+ JAVACFLAGS += $(CLASS_VERSION)
+ JAVACFLAGS += -encoding ascii
+-JAVACFLAGS += -classpath $(BOOTDIR)/lib/tools.jar
++JAVACFLAGS += -classpath $(LANGTOOLS_DIST)/lib/classes.jar
+ JAVACFLAGS += $(OTHER_JAVACFLAGS)
+
+ # Langtools
+-ifdef LANGTOOLS_DIST
+- JAVAC_JAR = $(LANGTOOLS_DIST)/bootstrap/lib/javac.jar
+- JAVADOC_JAR = $(LANGTOOLS_DIST)/bootstrap/lib/javadoc.jar
+- DOCLETS_JAR = $(LANGTOOLS_DIST)/bootstrap/lib/doclets.jar
+- JAVAC_CMD = $(BOOT_JAVA_CMD) \
+- "-Xbootclasspath/p:$(JAVAC_JAR)" \
+- -jar $(JAVAC_JAR) $(JAVACFLAGS)
+- JAVADOC_CMD = $(BOOT_JAVA_CMD) \
+- "-Xbootclasspath/p:$(JAVADOC_JAR)$(CLASSPATH_SEPARATOR)$(JAVAC_JAR)$(CLASSPATH_SEPARATOR)$(DOCLETS_JAR)" \
+- -jar $(JAVADOC_JAR)
+-else
+- # If no explicit tools, use boot tools (add VM flags in this case)
+- JAVAC_CMD = $(JAVA_TOOLS_DIR)/javac $(JAVAC_JVM_FLAGS) \
+- $(JAVACFLAGS)
+- JAVADOC_CMD = $(JAVA_TOOLS_DIR)/javadoc $(JAVA_TOOLS_FLAGS:%=-J%)
+-endif
++# If no explicit tools, use boot tools (add VM flags in this case)
++JAVAC_CMD = $(JAVA_TOOLS_DIR)/javac $(JAVAC_JVM_FLAGS) \
++ $(JAVACFLAGS)
++JAVADOC_CMD = $(JAVA_TOOLS_DIR)/javadoc $(JAVA_TOOLS_FLAGS:%=-J%)
+
+ # Override of what javac to use (see deploy workspace)
+ ifdef JAVAC
+diff -Nru openjdk-boot.orig/jdk/make/common/shared/Defs-java.gmk openjdk-boot/jdk/make/common/shared/Defs-java.gmk
+--- openjdk-boot.orig/jdk/make/common/shared/Defs-java.gmk 2012-06-29 15:21:00.000000000 +0100
++++ openjdk-boot/jdk/make/common/shared/Defs-java.gmk 2012-06-29 18:53:43.337711469 +0100
+@@ -157,7 +157,7 @@
+ JAVACFLAGS += $(OTHER_JAVACFLAGS)
+
+ # Needed for javah
+-JAVAHFLAGS += -bootclasspath "$(CLASSBINDIR)$(JCE_PATH)"
++JAVAHFLAGS += -bootclasspath "$(CLASSBINDIR)$(JCE_PATH):$(ICEDTEA_RT):$(CLASSDESTDIR)"
+
+ # Needed for javadoc to ensure it builds documentation
+ # against the newly built classes
+@@ -168,27 +168,15 @@
+
+ # Langtools
+ ifdef LANGTOOLS_DIST
+- JAVAC_JAR = $(LANGTOOLS_DIST)/bootstrap/lib/javac.jar
+- JAVAH_JAR = $(LANGTOOLS_DIST)/bootstrap/lib/javah.jar
+ JAVADOC_JAR = $(LANGTOOLS_DIST)/bootstrap/lib/javadoc.jar
+ DOCLETS_JAR = $(LANGTOOLS_DIST)/bootstrap/lib/doclets.jar
+- JAVAC_CMD = $(BOOT_JAVA_CMD) \
+- "-Xbootclasspath/p:$(JAVAC_JAR)" \
+- -jar $(JAVAC_JAR) $(JAVACFLAGS)
+- JAVAH_CMD = $(BOOT_JAVA_CMD) \
+- "-Xbootclasspath/p:$(JAVAH_JAR)$(CLASSPATH_SEPARATOR)$(JAVAC_JAR)" \
+- -jar $(JAVAH_JAR) $(JAVAHFLAGS)
+ JAVADOC_CMD = $(BOOT_JAVA_CMD) \
+ "-Xbootclasspath/p:$(JAVADOC_JAR)$(CLASSPATH_SEPARATOR)$(JAVAC_JAR)$(CLASSPATH_SEPARATOR)$(DOCLETS_JAR)" \
+ -jar $(JAVADOC_JAR) $(JAVADOCFLAGS)
+-else
+- # If no explicit tools, use boot tools (add VM flags in this case)
+ JAVAC_CMD = $(JAVA_TOOLS_DIR)/javac $(JAVAC_JVM_FLAGS) \
+ $(JAVACFLAGS)
+ JAVAH_CMD = $(JAVA_TOOLS_DIR)/javah \
+ $(JAVAHFLAGS)
+- JAVADOC_CMD = $(JAVA_TOOLS_DIR)/javadoc $(JAVA_TOOLS_FLAGS:%=-J%) \
+- $(JAVADOCFLAGS)
+ endif
+
+ # Override of what javac to use (see deploy workspace)
+diff -Nru openjdk-boot.orig/jdk/make/java/text/base/Makefile openjdk-boot/jdk/make/java/text/base/Makefile
+--- openjdk-boot.orig/jdk/make/java/text/base/Makefile 2012-06-29 15:21:00.000000000 +0100
++++ openjdk-boot/jdk/make/java/text/base/Makefile 2012-06-29 18:52:40.596723600 +0100
+@@ -80,8 +80,8 @@
+ -sourcepath $(TEXT_SRCDIR) \
+ $(TEXT_SOURCES)
+ $(MKDIR) -p $(TEXT_CLASSDIR)
+- $(BOOT_JAVA_CMD) -Xbootclasspath/p:$(TEXT_CLASSES) \
+- -jar $(GENERATEBREAKITERATORDATA_JARFILE) \
++ $(BOOT_JAVA_CMD) -cp $(TEXT_CLASSES):$(GENERATEBREAKITERATORDATA_JARFILE):$(ABS_OUTPUTDIR)/classes \
++ build.tools.generatebreakiteratordata.GenerateBreakIteratorData \
+ -o $(TEXT_CLASSDIR) \
+ -spec $(UNICODEDATA)/UnicodeData.txt
+ @$(java-vm-cleanup)
+diff -Nru openjdk-boot.orig/jdk/make/sun/text/Makefile openjdk-boot/jdk/make/sun/text/Makefile
+--- openjdk-boot.orig/jdk/make/sun/text/Makefile 2012-06-29 15:21:00.000000000 +0100
++++ openjdk-boot/jdk/make/sun/text/Makefile 2012-06-29 18:52:40.596723600 +0100
+@@ -85,8 +85,9 @@
+ $(BOOT_JAVAC_CMD) -d $(TEXT_CLASSES) \
+ -sourcepath $(TEXT_SRCDIR) \
+ $(BIRULES) $(BIINFO)
+- $(BOOT_JAVA_CMD) -Xbootclasspath/p:$(TEXT_CLASSES) \
+- -jar $(GENERATEBREAKITERATORDATA_JARFILE) \
++ $(BOOT_JAVA_CMD) \
++ -cp $(TEXT_CLASSES):$(ABS_OUTPUTDIR)/classes:$(GENERATEBREAKITERATORDATA_JARFILE) \
++ build.tools.generatebreakiteratordata.GenerateBreakIteratorData \
+ -o $(CLASSDESTDIR)/sun/text/resources \
+ -spec $(UNICODEDATA)/UnicodeData.txt \
+ -language th
+diff -Nru openjdk-boot.orig/langtools/make/build.xml openjdk-boot/langtools/make/build.xml
+--- openjdk-boot.orig/langtools/make/build.xml 2012-06-29 18:09:26.064153871 +0100
++++ openjdk-boot/langtools/make/build.xml 2012-06-29 18:52:40.596723600 +0100
+@@ -872,10 +872,8 @@
+ executable="${boot.java.home}/bin/javac"
+ srcdir="${make.tools.dir}/GenStubs"
+ destdir="${build.toolclasses.dir}/"
+- classpath="${ant.core.lib}"
+- includeantruntime="false">
+- <compilerarg value="-Xbootclasspath/p:${build.bootstrap.dir}/classes"/>
+- </javac>
++ classpath="${build.bootstrap.dir}/classes:${ant.core.lib}"
++ includeantruntime="false"/>
+ <taskdef name="genstubs"
+ classname="GenStubs$$Ant"
+ classpath="${build.toolclasses.dir}:${build.bootstrap.dir}/classes:${ant.home}/lib/ant.jar"/>
diff --git a/patches/boot/xsltproc.patch b/patches/boot/xsltproc.patch
new file mode 100644
index 0000000..7a1fcf0
--- /dev/null
+++ b/patches/boot/xsltproc.patch
@@ -0,0 +1,54 @@
+diff -r 591c7dc0b2ee make/linux/makefiles/jvmti.make
+--- openjdk-boot/hotspot/make/linux/makefiles/jvmti.make Thu May 19 13:27:44 2011 +0200
++++ openjdk-boot/hotspot/make/linux/makefiles/jvmti.make Wed May 25 20:01:25 2011 +0100
+@@ -58,8 +58,6 @@
+
+ JvmtiGeneratedFiles = $(JvmtiGeneratedNames:%=$(JvmtiOutDir)/%)
+
+-XSLT = $(QUIETLY) $(REMOTE) $(RUN.JAVA) -classpath $(JvmtiOutDir) jvmtiGen
+-
+ .PHONY: all jvmtidocs clean cleanall
+
+ # #########################################################################
+@@ -76,34 +74,34 @@
+
+ $(JvmtiOutDir)/jvmtiEnter.cpp: $(both) $(JvmtiSrcDir)/jvmtiEnter.xsl
+ @echo Generating $@
+- $(XSLT) -IN $(JvmtiSrcDir)/jvmti.xml -XSL $(JvmtiSrcDir)/jvmtiEnter.xsl -OUT $(JvmtiOutDir)/jvmtiEnter.cpp -PARAM interface jvmti
++ $(XSLT) -o $(JvmtiOutDir)/jvmtiEnter.cpp --stringparam interface jvmti $(JvmtiSrcDir)/jvmtiEnter.xsl $(JvmtiSrcDir)/jvmti.xml
+
+ $(JvmtiOutDir)/bytecodeInterpreterWithChecks.cpp: $(JvmtiGenClass) $(InterpreterSrcDir)/bytecodeInterpreter.cpp $(InterpreterSrcDir)/bytecodeInterpreterWithChecks.xml $(InterpreterSrcDir)/bytecodeInterpreterWithChecks.xsl
+ @echo Generating $@
+- $(XSLT) -IN $(InterpreterSrcDir)/bytecodeInterpreterWithChecks.xml -XSL $(InterpreterSrcDir)/bytecodeInterpreterWithChecks.xsl -OUT $(JvmtiOutDir)/bytecodeInterpreterWithChecks.cpp
++ $(XSLT) -o $(JvmtiOutDir)/bytecodeInterpreterWithChecks.cpp $(InterpreterSrcDir)/bytecodeInterpreterWithChecks.xsl $(InterpreterSrcDir)/bytecodeInterpreterWithChecks.xml
+
+ $(JvmtiOutDir)/jvmtiEnterTrace.cpp: $(both) $(JvmtiSrcDir)/jvmtiEnter.xsl
+ @echo Generating $@
+- $(XSLT) -IN $(JvmtiSrcDir)/jvmti.xml -XSL $(JvmtiSrcDir)/jvmtiEnter.xsl -OUT $(JvmtiOutDir)/jvmtiEnterTrace.cpp -PARAM interface jvmti -PARAM trace Trace
++ $(XSLT) -o $(JvmtiOutDir)/jvmtiEnterTrace.cpp --stringparam interface jvmti --stringparam trace Trace $(JvmtiSrcDir)/jvmtiEnter.xsl $(JvmtiSrcDir)/jvmti.xml
+
+ $(JvmtiOutDir)/jvmtiEnvRecommended.cpp: $(both) $(JvmtiSrcDir)/jvmtiEnv.xsl $(JvmtiSrcDir)/jvmtiEnv.cpp $(JvmtiEnvFillClass)
+ @echo Generating $@
+- $(XSLT) -IN $(JvmtiSrcDir)/jvmti.xml -XSL $(JvmtiSrcDir)/jvmtiEnv.xsl -OUT $(JvmtiOutDir)/jvmtiEnvStub.cpp
++ $(XSLT) -o $(JvmtiOutDir)/jvmtiEnvStub.cpp $(JvmtiSrcDir)/jvmtiEnv.xsl $(JvmtiSrcDir)/jvmti.xml
+ $(QUIETLY) $(REMOTE) $(RUN.JAVA) -classpath $(JvmtiOutDir) jvmtiEnvFill $(JvmtiSrcDir)/jvmtiEnv.cpp $(JvmtiOutDir)/jvmtiEnvStub.cpp $(JvmtiOutDir)/jvmtiEnvRecommended.cpp
+
+ $(JvmtiOutDir)/jvmtiEnv.hpp: $(both) $(JvmtiSrcDir)/jvmtiHpp.xsl
+ @echo Generating $@
+- $(XSLT) -IN $(JvmtiSrcDir)/jvmti.xml -XSL $(JvmtiSrcDir)/jvmtiHpp.xsl -OUT $(JvmtiOutDir)/jvmtiEnv.hpp
++ $(XSLT) -o $(JvmtiOutDir)/jvmtiEnv.hpp $(JvmtiSrcDir)/jvmtiHpp.xsl $(JvmtiSrcDir)/jvmti.xml
+
+ $(JvmtiOutDir)/jvmti.h: $(both) $(JvmtiSrcDir)/jvmtiH.xsl
+ @echo Generating $@
+- $(XSLT) -IN $(JvmtiSrcDir)/jvmti.xml -XSL $(JvmtiSrcDir)/jvmtiH.xsl -OUT $(JvmtiOutDir)/jvmti.h
++ $(XSLT) -o $(JvmtiOutDir)/jvmti.h $(JvmtiSrcDir)/jvmtiH.xsl $(JvmtiSrcDir)/jvmti.xml
+
+ jvmtidocs: $(JvmtiOutDir)/jvmti.html
+
+ $(JvmtiOutDir)/jvmti.html: $(both) $(JvmtiSrcDir)/jvmti.xsl
+ @echo Generating $@
+- $(XSLT) -IN $(JvmtiSrcDir)/jvmti.xml -XSL $(JvmtiSrcDir)/jvmti.xsl -OUT $(JvmtiOutDir)/jvmti.html
++ $(XSLT) -o $(JvmtiOutDir)/jvmti.html $(JvmtiSrcDir)/jvmti.xsl $(JvmtiSrcDir)/jvmti.xml
+
+ # #########################################################################
+