changeset 2062:3e9397f2ac2c

Merge
author Andrew John Hughes <ahughes@redhat.com>
date Sun, 18 Apr 2010 17:04:10 +0100
parents e89067b8a611 (current diff) 1a17fa784cae (diff)
children 4d10e44726a4
files ChangeLog patches/hotspot/hs16/6873059-javac-versioning-hotspot.patch patches/hotspot/hs16/icedtea-params-cast-size_t.patch patches/hotspot/hs16/memory-limits.patch patches/hotspot/hs16/openjdk-6886353-ignore_deoptimizealot.patch patches/hotspot/hs16/shark.patch patches/hotspot/hs16/zero.patch patches/hotspot/original/6873059-javac-versioning-hotspot.patch patches/hotspot/original/icedtea-6778657-f2i-overflow.patch patches/hotspot/original/icedtea-6778662-lib64.patch patches/hotspot/original/icedtea-6791168.patch patches/hotspot/original/icedtea-6793825-includedb.patch patches/hotspot/original/icedtea-debuginfo.patch patches/hotspot/original/icedtea-params-cast-size_t.patch patches/hotspot/original/memory-limits.patch patches/icedtea-6761856-freetypescaler.patch patches/icedtea-fonts.patch patches/icedtea-nss-6763530.patch patches/icedtea-systemtap.patch patches/openjdk/6822370-reentrantreadwritelock.patch patches/openjdk/6873059-javac-versioning-corba.patch patches/openjdk/6873059-javac-versioning-jdk.patch patches/openjdk/6879689-hotspot_warning_fix.patch patches/openjdk/6928623-verbose-langtools.patch patches/openjdk/annotation-tests.patch patches/openjdk/bidi-tests.patch patches/security/20100330/6633872.patch patches/security/20100330/6639665.patch patches/security/20100330/6736390.patch patches/security/20100330/6745393.patch patches/security/20100330/6887703.patch patches/security/20100330/6888149.patch patches/security/20100330/6892265.patch patches/security/20100330/6893947.patch patches/security/20100330/6893954.patch patches/security/20100330/6894807.patch patches/security/20100330/6898622.patch patches/security/20100330/6898739.patch patches/security/20100330/6899653.patch patches/security/20100330/6902299.patch patches/security/20100330/6904691.patch patches/security/20100330/6909597.patch patches/security/20100330/6910590.patch patches/security/20100330/6914823.patch patches/security/20100330/6914866.patch patches/security/20100330/6932480.patch patches/security/20100330/hotspot/hs16/6626217.patch patches/zero/6890308.patch patches/zero/6891677.patch patches/zero/6896043.patch patches/zero/6903453.patch patches/zero/6909153.patch patches/zero/6913869.patch patches/zero/6914622.patch patches/zero/6939845.patch
diffstat 69 files changed, 1246 insertions(+), 14056 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Sun Apr 18 17:03:04 2010 +0100
+++ b/ChangeLog	Sun Apr 18 17:04:10 2010 +0100
@@ -5,6 +5,10 @@
 	(AC_CHECK_WITH_HG_REVISION): Likewise.
 	(IT_CHECK_PLUGIN_DEPENDENCIES): Likewise.
 
+2010-04-16  Andrew John Hughes  <ahughes@redhat.com>
+
+	* Makefile.am: Bump to b19 tarball.
+
 2010-04-12  Andrew John Hughes  <ahughes@redhat.com>
 
 	PR icedtea/373
@@ -64,6 +68,38 @@
 
 	* configure.ac: Clarify result message of the NSS check.
 
+2010-04-11  Andrew John Hughes  <ahughes@redhat.com>
+
+	* patches/hotspot/original/6873059-javac-versioning-hotspot.patch,
+	* patches/openjdk/6873059-javac-versioning-corba.patch,
+	* patches/openjdk/6873059-javac-versioning-jdk.patch:
+	Removed, upstreamed.
+	* Makefile.am:
+	Move 6873059 to hs17-specific block.
+
+2010-04-11  Andrew John Hughes  <ahughes@redhat.com>
+
+	Support hs17.
+	* patches/icedtea-params-cast-size_t.patch,
+	* patches/icedtea-systemtap.patch:
+	Split into original and hs17 versions.
+	* Makefile.am:
+	Make above patches $(HSBUILD) specific.
+	Add 6896472 fix for hs17.
+	* hotspot.map: Add hs17 b13, enabled using
+	--with-hotspot-build=hs17.
+	* patches/hotspot/hs17/6873059-javac-versioning-hotspot.patch,
+	* patches/hotspot/hs17/params-cast-size_t.patch,
+	* patches/hotspot/hs17/systemtap.patch:
+	New variants for hs17.
+	* patches/hotspot/original/params-cast-size_t.patch,
+	* patches/hotspot/original/systemtap.patch:
+	Moved from main patches directory.
+	* patches/icedtea-explicit-target-arch.patch:
+	Remove unneeded diff at top which breaks on hs17.
+	* patches/openjdk/6896472-missing_libjsig.patch:
+	Backport from OpenJDK7; needed for hs17.
+
 2010-04-10  Matthias Klose  <doko@ubuntu.com>
 
 	* Makefile.am (ICEDTEA_PATCHES): Always apply
@@ -73,6 +109,12 @@
 	is enabled or disabled by default.
 	* patches/icedtea-nss-not-enabled-config.patch: New.
 
+2010-04-09  Andrew John Hughes  <ahughes@redhat.com>
+
+	* patches/zero/6939845.patch,
+	* Makefile.am:
+	Remove upstreamed Zero patch.
+
 2010-04-09  Xerxes RĂ„nby  <xerxes@zafena.se>
 
 	* Makefile.am (ICEDTEA_PATCHES):
@@ -82,6 +124,15 @@
 	* patches/zero/6939845.patch: added from upstream.
 	* patches/zero/cppInterpreter-fast-bytecodes.patch: removed.
 
+2010-04-09  Andrew John Hughes  <ahughes@redhat.com>
+
+	* patches/zero/6903453.patch,
+	* patches/zero/6909153.patch,
+	* patches/zero/6913869.patch,
+	* patches/zero/6914622.patch,
+	* Makefile.am:
+	Remove patches applied upstream.
+
 2010-04-08  Andrew John Hughes  <ahughes@redhat.com>
 
 	* configure.ac: Move NSS detection to macros
@@ -105,6 +156,13 @@
 	* Makefile.am: Remove remaining references to
 	rt source directory.
 
+2010-04-07  Andrew John Hughes  <ahughes@redhat.com>
+
+	* patches/openjdk/6879689-hotspot_warning_fix.patch,
+	* patches/security/20100330/6633872.patch,
+	* Makefile.am:
+	Remove upstreamed patches.
+
 2010-04-07  Deepak Bhole <dbhole@redhat.com>
 
 	* plugin/icedteanp/IcedTeaNPPlugin.cc: ReplaceAll "GCJ" with "ITNP", and
@@ -161,6 +219,41 @@
 	(IcedTeaScriptableJavaObject::deAllocate): Same.
 	(IcedTeaScriptableJavaObject::invalidate): Same.
 
+2010-04-06  Andrew John Hughes  <ahughes@redhat.com>
+
+	* patches/hotspot/hs16/6873059-javac-versioning-hotspot.patch:
+	Moved to hotspot/original.
+	* patches/openjdk/6822370-reentrantreadwritelock.patch,
+	* patches/security/20100330/6639665.patch,
+	* patches/security/20100330/6736390.patch,
+	* patches/security/20100330/6745393.patch,
+	* patches/security/20100330/6887703.patch,
+	* patches/security/20100330/6888149.patch,
+	* patches/security/20100330/6892265.patch,
+	* patches/security/20100330/6893947.patch,
+	* patches/security/20100330/6893954.patch,
+	* patches/security/20100330/6894807.patch,
+	* patches/security/20100330/6898622.patch,
+	* patches/security/20100330/6898739.patch,
+	* patches/security/20100330/6899653.patch,
+	* patches/security/20100330/6902299.patch,
+	* patches/security/20100330/6904691.patch,
+	* patches/security/20100330/6909597.patch,
+	* patches/security/20100330/6910590.patch,
+	* patches/security/20100330/6914823.patch,
+	* patches/security/20100330/6914866.patch,
+	* patches/security/20100330/6932480.patch,
+	* patches/security/20100330/hotspot/hs16/6626217.patch:
+	Drop patches available upstream.
+	* Makefile.am: Remove listed patches.
+	* patches/hotspot/original/6873059-javac-versioning-hotspot.patch:
+	Moved from hs16 directory.
+	* patches/icedtea-lcms.patch:
+	Recreated against new security patches (inverse of
+	before where 6899653 was adapted to our LCMS fix).
+	* patches/security/20100330/6633872.patch:
+	Keep just the fragment not in the Sun version which
+	fixes an NPE when running rmid.
 
 2010-04-04  Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
 
@@ -229,6 +322,11 @@
 
 2010-03-30  Andrew John Hughes  <ahughes@redhat.com>
 
+	* patches/icedtea-override.patch:
+	Fix path on previous HttpsClient hunk.
+
+2010-03-30  Andrew John Hughes  <ahughes@redhat.com>
+
 	* patches/openjdk/6873059-javac-versioning-hotspot.patch:
 	Move to hotspot/original directory.
 	* Makefile.am: Make javac versioning patch for HotSpot
@@ -244,6 +342,18 @@
 	* bytecodeInterpreter.cpp
 	Fix to support fast bytecodes
 
+2010-03-30  Andrew John Hughes  <ahughes@redhat.com>
+
+	* patches/openjdk/annotation-tests.patch:
+	Dropped, was applied upstream in a different
+	directory some time ago.
+	* patches/openjdk/bidi-tests.patch,
+	* patches/zero/6890308.patch,
+	* patches/zero/6891677.patch,
+	* patches/zero/6896043.patch:
+	Dropped, applied upstream.
+	* Makefile.am: Remove above.
+
 2010-03-29  Andrew John Hughes  <ahughes@redhat.com>
 
 	* .hgignore:
@@ -287,6 +397,12 @@
 	* THANKYOU: Add C. K. Jester-Young who created
 	the initial Perl version of javac.in.
 
+2010-03-28  Andrew John Hughes  <ahughes@redhat.com>
+
+	* patches/icedtea-override.patch:
+	Remove @Override on interface method
+	in sun/net/www/protocol/https/HttpsClient.java
+
 2009-08-21  Andrew John Hughes  <ahughes@redhat.com>
 
 	* javac.in:
@@ -545,7 +661,6 @@
 	Fix references to IcedTeaNPPlugin.h.
 
 2010-03-16  Andrew John Hughes  <ahughes@redhat.com>
-
 	* patches/icedtea-override.patch:
 	Moved to ecj subdirectory.
 	* Makefile.am:
@@ -711,6 +826,13 @@
 
 2010-03-12  Andrew John Hughes  <ahughes@redhat.com>
 
+	* patches/icedtea-fonts.patch:
+	Removed, applied upstream as S6934327.
+	http://hg.openjdk.java.net/jdk6/jdk6/jdk/rev/178f954e1fd1
+	* Makefile.am: Drop above patch.
+
+2010-03-12  Andrew John Hughes  <ahughes@redhat.com>
+
 	NetX/plugin build sync (1/3):
 	Build NetX and plugin sources separately.
 	* rt/javax/jnlp/BasicService.java,
@@ -1186,6 +1308,12 @@
 	(sharkCompiler::sharkCompiler): Move mattr define to make its memory
 	valid in the scope where it are used by the args vector.
 
+2010-03-02  Andrew John Hughes  <ahughes@redhat.com>
+
+	* patches/openjdk/6928623-verbose-langtools.patch:
+	Removed, applied upstream.
+	* Makefile.am: Drop above patch.
+
 2010-03-01  Andrew John Hughes  <ahughes@redhat.com>
 
 	* Makefile.am:
@@ -1307,6 +1435,34 @@
 	(SharkCompiler::generate_native_code): Undefine debug code for
 	NDEBUG builds
 
+2010-02-25 Andrew John Hughes  <ahughes@redhat.com>
+
+	* patches/hotspot/hs16/icedtea-params-cast-size_t.patch,
+	* patches/hotspot/hs16/memory-limits.patch:
+	Move to main patches directory.
+	* patches/hotspot/hs16/openjdk-6886353-ignore_deoptimizealot.patch:
+	Dropped, applied upstream.
+	* patches/hotspot/hs16/shark.patch,
+	* patches/hotspot/hs16/zero.patch:
+	Moved to main patches directory.
+	* patches/hotspot/original/icedtea-6778657-f2i-overflow.patch,
+	* patches/hotspot/original/icedtea-6778662-lib64.patch,
+	* patches/hotspot/original/icedtea-6791168.patch,
+	* patches/hotspot/original/icedtea-6793825-includedb.patch,
+	* patches/hotspot/original/icedtea-debuginfo.patch,
+	* patches/hotspot/original/icedtea-params-cast-size_t.patch,
+	* patches/hotspot/original/memory-limits.patch:
+	Obsoleted by move to hs16 upstream.
+	* patches/icedtea-nss-6763530.patch:
+	Applied upstream.
+	* Makefile.am: Update patch list.
+	* hotspot.map: Remove outdated hs16 build.
+	* patches/icedtea-params-cast-size_t.patch,
+	* patches/memory-limits.patch,
+	* patches/shark.patch,
+	* patches/zero.patch:
+	Moved from hotspot/hs16.
+
 2010-02-24 Andrew John Hughes  <ahughes@redhat.com>
 
 	* Makefile.am: Add PULSE_JAVA_CLEAN_TARGET
@@ -1588,12 +1744,23 @@
 2010-02-17 Andrew John Hughes  <ahughes@redhat.com>
 
 	* Makefile.am:
+	Update JAXP tarball.
+
+2010-02-17 Andrew John Hughes  <ahughes@redhat.com>
+
+	* Makefile.am:
 	Remove dead JAXWS and JAXP sourcepaths.
 	Add sun.misc.Unsafe explicitly to ensure
 	it is compiled as a bootstrap class.
 
 2010-02-17 Andrew John Hughes  <ahughes@redhat.com>
 
+	* patches/icedtea-6761856-freetypescaler.patch:
+	Dropped; applied upstream.
+	* Makefile.am: Remove above patch.
+
+2010-02-17 Andrew John Hughes  <ahughes@redhat.com>
+
 	* Makefile.am:
 	Bump to released b18 tarball.
 
--- a/Makefile.am	Sun Apr 18 17:03:04 2010 +0100
+++ b/Makefile.am	Sun Apr 18 17:04:10 2010 +0100
@@ -1,8 +1,8 @@
 # Dependencies
 
-OPENJDK_DATE = 16_feb_2010
-OPENJDK_MD5SUM = 94db01691ab38f98b7d42b2ebf4d5c0b
-OPENJDK_VERSION = b18
+OPENJDK_DATE = 15_apr_2010
+OPENJDK_MD5SUM = 39bbf623a6c83ca63b92593062a28146
+OPENJDK_VERSION = b19
 OPENJDK_URL = http://download.java.net/openjdk/jdk6/promoted/$(OPENJDK_VERSION)/
 
 CACAO_VERSION = 0.99.4
@@ -23,9 +23,9 @@
 JAXWS_DROP_SHA256SUM = 155ff3be83c980e197621a2fbf7ee34e8e0f536489351a5865cf0e52206245e2
 JAF_DROP_ZIP = jdk6-jaf-2009_10_27.zip
 JAF_DROP_SHA256SUM = fdc51476fc6bcc69ea1f099f33e84601a126bfa8b11c8fa11c25dc574345aa9f
-JAXP_DROP_URL = https://jaxp.dev.java.net/files/documents/913/147329
-JAXP_DROP_ZIP = jdk6-jaxp-2009_10_13.zip
-JAXP_DROP_SHA256SUM = 8714d55de18db48ca9da0ee986202005082f44cf4c215da8683342b70e61792b
+JAXP_DROP_URL = https://jaxp.dev.java.net/files/documents/913/147491
+JAXP_DROP_ZIP = jdk6-jaxp-2010_01_15.zip
+JAXP_DROP_SHA256SUM = 181615cfec1c3721a7d8f278fa25b392be4247a496c7774a10cb9df37684f94f
 
 OPENJDK_HG_URL = http://hg.openjdk.java.net/jdk6/jdk6
 
@@ -224,14 +224,6 @@
 ICEDTEA_FSG_PATCHES =
 
 ICEDTEA_PATCHES = \
-	patches/zero/6890308.patch \
-	patches/zero/6891677.patch \
-	patches/zero/6896043.patch \
-	patches/zero/6903453.patch \
-	patches/zero/6909153.patch \
-	patches/zero/6913869.patch \
-	patches/zero/6914622.patch \
-	patches/zero/6939845.patch \
 	patches/zero/shark_do_nothing_on_stub_frame.patch \
 	patches/icedtea-notice-safepoints.patch \
 	patches/icedtea-parisc-opt.patch \
@@ -248,7 +240,7 @@
 	patches/icedtea-gcc-suffix.patch \
 	patches/icedtea-gcc-suffix-hotspot.patch \
 	patches/icedtea-bytebuffer-compact.patch \
-	patches/hotspot/$(HSBUILD)/memory-limits.patch \
+	patches/memory-limits.patch \
 	patches/icedtea-sunsrc.patch \
 	patches/icedtea-libraries.patch \
 	patches/icedtea-javafiles.patch \
@@ -259,7 +251,6 @@
 	patches/icedtea-jpegclasses.patch \
 	patches/icedtea-uname.patch \
 	patches/icedtea-freetypeversion.patch \
-	patches/icedtea-fonts.patch \
 	patches/icedtea-shark-build.patch \
 	patches/icedtea-shark-build-hotspot.patch \
 	patches/icedtea-nomotif-6706121.patch \
@@ -269,7 +260,7 @@
 	patches/icedtea-alt-jar.patch \
 	patches/icedtea-jdk-use-ssize_t.patch \
 	patches/icedtea-use-idx_t.patch \
-	patches/hotspot/$(HSBUILD)/icedtea-params-cast-size_t.patch \
+	patches/hotspot/$(HSBUILD)/params-cast-size_t.patch \
 	patches/icedtea-clean-crypto.patch \
 	patches/icedtea-shark.patch \
 	patches/icedtea-arch.patch \
@@ -278,13 +269,10 @@
 	patches/icedtea-renderer-crossing.patch \
 	patches/icedtea-stroker-finish.patch \
 	patches/icedtea-linker-libs-order.patch \
-	patches/icedtea-6761856-freetypescaler.patch \
 	patches/icedtea-testenv.patch \
 	patches/icedtea-samejvm-safe.patch \
 	patches/icedtea-pr261.patch \
 	patches/icedtea-doc-headers.patch \
-	patches/openjdk/bidi-tests.patch \
-	patches/openjdk/annotation-tests.patch \
 	patches/icedtea-sparc-buildfixes.patch \
 	patches/icedtea-sparc64-linux.patch \
 	patches/icedtea-sparc-ptracefix.patch \
@@ -303,44 +291,25 @@
 	patches/icedtea-disable-cc-incompatible-sanity-checks.patch \
 	patches/icedtea-explicit-target-arch.patch \
 	patches/icedtea-gcc-stack-markings.patch \
-	patches/openjdk/6879689-hotspot_warning_fix.patch \
-	patches/openjdk/6928623-verbose-langtools.patch \
 	patches/icedtea-no-precompiled.patch \
 	patches/icedtea-linux-separate-debuginfo.patch \
 	patches/icedtea-parisc.patch \
 	patches/icedtea-sh4-support.patch \
 	patches/libpng.patch \
+	patches/zero.patch \
+	patches/shark.patch \
 	patches/extensions/netx.patch \
 	patches/extensions/netx-dist.patch \
 	patches/extensions/netx-umask.patch \
 	patches/icedtea-jtreg-httpTest.patch \
-	patches/openjdk/6873059-javac-versioning-corba.patch \
-	patches/hotspot/$(HSBUILD)/6873059-javac-versioning-hotspot.patch \
-	patches/openjdk/6873059-javac-versioning-jdk.patch \
-	patches/security/20100330/hotspot/$(HSBUILD)/6626217.patch \
-	patches/security/20100330/6633872.patch \
-	patches/security/20100330/6639665.patch \
-	patches/security/20100330/6736390.patch \
-	patches/security/20100330/6745393.patch \
-	patches/security/20100330/6887703.patch \
-	patches/security/20100330/6888149.patch \
-	patches/security/20100330/6892265.patch \
-	patches/security/20100330/6893947.patch \
-	patches/security/20100330/6893954.patch \
-	patches/security/20100330/6894807.patch \
-	patches/security/20100330/6898622.patch \
-	patches/security/20100330/6898739.patch \
-	patches/security/20100330/6899653.patch \
-	patches/security/20100330/6902299.patch \
-	patches/security/20100330/6904691.patch \
-	patches/security/20100330/6909597.patch \
-	patches/security/20100330/6910590.patch \
-	patches/security/20100330/6914823.patch \
-	patches/security/20100330/6914866.patch \
-	patches/security/20100330/6932480.patch \
-	patches/icedtea-nss-6763530.patch \
 	patches/nss-debug.patch
 
+if WITH_ALT_HSBUILD
+ICEDTEA_PATCHES += \
+	patches/openjdk/6896472-missing_libjsig.patch \
+	patches/hotspot/$(HSBUILD)/6873059-javac-versioning-hotspot.patch
+endif
+
 if WITH_RHINO
 ICEDTEA_PATCHES += \
 	patches/icedtea-rhino.patch
@@ -387,7 +356,7 @@
 endif
 
 if ENABLE_SYSTEMTAP
-ICEDTEA_PATCHES += patches/icedtea-systemtap.patch
+ICEDTEA_PATCHES += patches/hotspot/$(HSBUILD)/systemtap.patch
 endif
 
 if ENABLE_NSS
@@ -396,18 +365,6 @@
 ICEDTEA_PATCHES += patches/icedtea-nss-not-enabled-config.patch
 endif
 
-if WITH_ALT_HSBUILD
-ICEDTEA_PATCHES += patches/hotspot/$(HSBUILD)/openjdk-6886353-ignore_deoptimizealot.patch \
-	patches/hotspot/$(HSBUILD)/zero.patch \
-	patches/hotspot/$(HSBUILD)/shark.patch
-else
-ICEDTEA_PATCHES += patches/hotspot/original/icedtea-6778662-lib64.patch \
-	patches/hotspot/original/icedtea-6778657-f2i-overflow.patch \
-	patches/hotspot/original/icedtea-6791168.patch \
-	patches/hotspot/original/icedtea-6793825-includedb.patch \
-	patches/openjdk/6822370-reentrantreadwritelock.patch
-endif
-
 ICEDTEA_PATCHES += $(DISTRIBUTION_PATCHES)
 
 # Bootstrapping patches
--- a/hotspot.map	Sun Apr 18 17:03:04 2010 +0100
+++ b/hotspot.map	Sun Apr 18 17:04:10 2010 +0100
@@ -1,2 +1,3 @@
 # version url changeset md5sum
-hs16 http://hg.openjdk.java.net/hsx/hsx16/master 62926c7f67a3 d683eb501e7ce710198f20f0c127ebbb
+hs17 http://hg.openjdk.java.net/hsx/hsx17/master 8ca546927f8c 0d41815127b8fecd0a4e1546e23fa1f3
+
--- a/patches/ecj/override.patch	Sun Apr 18 17:03:04 2010 +0100
+++ b/patches/ecj/override.patch	Sun Apr 18 17:04:10 2010 +0100
@@ -196,3 +196,14 @@
              return revocationReason;
          }
  
+diff -r 697e3f8cac33 src/share/classes/sun/net/www/protocol/https/HttpsClient.java
+--- openjdk-ecj.orig/jdk/src/share/classes/sun/net/www/protocol/https/HttpsClient.java	Wed Mar 24 17:05:49 2010 +0000
++++ openjdk-ecj/jdk/src/share/classes/sun/net/www/protocol/https/HttpsClient.java	Sun Mar 28 12:55:34 2010 +0100
+@@ -624,7 +624,6 @@
+      * a given connection may change.  When sessions change, so may
+      * peer identities and cipher suites.
+      */
+-    @Override
+     public void handshakeCompleted(HandshakeCompletedEvent event)
+     {
+         session = event.getSession();
--- a/patches/hotspot/hs16/6873059-javac-versioning-hotspot.patch	Sun Apr 18 17:03:04 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,245 +0,0 @@
-# HG changeset patch
-# User andrew
-# Date 1252756207 -3600
-# Node ID 0fc81f0a8ca8642c9e4b6901fa23b59c29ac81d7
-# Parent  682194ca1d8d5e705da06c5974ffcda76b0a7add
-6873059: Explicitly use -source 6 -target 6 when compiling with the boot jdk
-Summary: The build fails if the bootstrap JDK defaults to <1.5
-Reviewed-by: jcoomes
-
-diff -r 682194ca1d8d -r 0fc81f0a8ca8 make/linux/makefiles/jvmti.make
---- openjdk.orig/hotspot/make/linux/makefiles/jvmti.make	Thu Sep 10 09:04:41 2009 -0400
-+++ openjdk/hotspot/make/linux/makefiles/jvmti.make	Sat Sep 12 12:50:07 2009 +0100
-@@ -70,10 +70,10 @@
- both = $(JvmtiGenClass) $(JvmtiSrcDir)/jvmti.xml $(JvmtiSrcDir)/jvmtiLib.xsl
- 
- $(JvmtiGenClass): $(JvmtiGenSource)
--	$(QUIETLY) $(REMOTE) $(COMPILE.JAVAC) -g -d $(JvmtiOutDir) $(JvmtiGenSource)
-+	$(QUIETLY) $(REMOTE) $(COMPILE.JAVAC) -d $(JvmtiOutDir) $(JvmtiGenSource)
- 
- $(JvmtiEnvFillClass): $(JvmtiEnvFillSource)
--	$(QUIETLY) $(REMOTE) $(COMPILE.JAVAC) -g -d $(JvmtiOutDir) $(JvmtiEnvFillSource)
-+	$(QUIETLY) $(REMOTE) $(COMPILE.JAVAC) -d $(JvmtiOutDir) $(JvmtiEnvFillSource)
- 
- $(JvmtiOutDir)/jvmtiEnter.cpp: $(both) $(JvmtiSrcDir)/jvmtiEnter.xsl
- 	@echo Generating $@
-diff -r 682194ca1d8d -r 0fc81f0a8ca8 make/linux/makefiles/rules.make
---- openjdk.orig/hotspot/make/linux/makefiles/rules.make	Thu Sep 10 09:04:41 2009 -0400
-+++ openjdk/hotspot/make/linux/makefiles/rules.make	Sat Sep 12 12:50:07 2009 +0100
-@@ -122,12 +122,20 @@
- endif
- endif
- 
-+COMPILE.JAVAC += $(BOOTSTRAP_JAVAC_FLAGS)
-+
- SUM = /usr/bin/sum
- 
- # 'gmake MAKE_VERBOSE=y' gives all the gory details.
- QUIETLY$(MAKE_VERBOSE)  = @
- RUN.JAR$(MAKE_VERBOSE) += >/dev/null
- 
-+# Settings for javac
-+BOOT_SOURCE_LANGUAGE_VERSION = 6
-+BOOT_TARGET_CLASS_VERSION = 6
-+JAVAC_FLAGS = -g -encoding ascii
-+BOOTSTRAP_JAVAC_FLAGS = $(JAVAC_FLAGS) -source $(BOOT_SOURCE_LANGUAGE_VERSION) -target $(BOOT_TARGET_CLASS_VERSION)
-+
- # With parallel makes, print a message at the end of compilation.
- ifeq    ($(findstring j,$(MFLAGS)),j)
- COMPILE_DONE    = && { echo Done with $<; }
-diff -r 682194ca1d8d -r 0fc81f0a8ca8 make/linux/makefiles/sa.make
---- openjdk.orig/hotspot/make/linux/makefiles/sa.make	Thu Sep 10 09:04:41 2009 -0400
-+++ openjdk/hotspot/make/linux/makefiles/sa.make	Sat Sep 12 12:50:07 2009 +0100
-@@ -74,8 +74,8 @@
- 	  mkdir -p $(SA_CLASSDIR);        \
- 	fi
- 
--	$(QUIETLY) $(REMOTE) $(COMPILE.JAVAC) -source 1.4 -classpath $(SA_CLASSPATH) -sourcepath $(AGENT_SRC_DIR) -g -d $(SA_CLASSDIR) $(AGENT_FILES1)
--	$(QUIETLY) $(REMOTE) $(COMPILE.JAVAC) -source 1.4 -classpath $(SA_CLASSPATH) -sourcepath $(AGENT_SRC_DIR) -g -d $(SA_CLASSDIR) $(AGENT_FILES2)
-+	$(QUIETLY) $(REMOTE) $(COMPILE.JAVAC) -source 1.4 -target 1.4 -classpath $(SA_CLASSPATH) -sourcepath $(AGENT_SRC_DIR) -d $(SA_CLASSDIR) $(AGENT_FILES1)
-+	$(QUIETLY) $(REMOTE) $(COMPILE.JAVAC) -source 1.4 -target 1.4 -classpath $(SA_CLASSPATH) -sourcepath $(AGENT_SRC_DIR) -d $(SA_CLASSDIR) $(AGENT_FILES2)
- 
- 	$(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 -r 682194ca1d8d -r 0fc81f0a8ca8 make/linux/makefiles/top.make
---- openjdk.orig/hotspot/make/linux/makefiles/top.make	Thu Sep 10 09:04:41 2009 -0400
-+++ openjdk/hotspot/make/linux/makefiles/top.make	Sat Sep 12 12:50:07 2009 +0100
-@@ -24,7 +24,7 @@
- 
- # top.make is included in the Makefile in the build directories.
- # It DOES NOT include the vm dependency info in order to be faster.
--# It's main job is to implement the incremental form of make lists.
-+# Its main job is to implement the incremental form of make lists.
- # It also:
- #   -builds and runs adlc via adlc.make
- #   -generates JVMTI source and docs via jvmti.make (JSR-163)
-@@ -114,7 +114,7 @@
- # make makeDeps: (and zap the cached db files to force a nonincremental run)
- 
- $(GENERATED)/$(MakeDepsClass): $(MakeDepsSources)
--	@$(REMOTE) $(COMPILE.JAVAC) -classpath $(GAMMADIR)/src/share/tools/MakeDeps -g -d $(GENERATED) $(MakeDepsSources)
-+	@$(REMOTE) $(COMPILE.JAVAC) -classpath $(GAMMADIR)/src/share/tools/MakeDeps -d $(GENERATED) $(MakeDepsSources)
- 	@echo Removing $(Incremental_Lists) to force regeneration.
- 	@rm -f $(Incremental_Lists)
- 	@$(CDG) echo >$(Cached_plat)
-diff -r 682194ca1d8d -r 0fc81f0a8ca8 make/solaris/makefiles/jvmti.make
---- openjdk.orig/hotspot/make/solaris/makefiles/jvmti.make	Thu Sep 10 09:04:41 2009 -0400
-+++ openjdk/hotspot/make/solaris/makefiles/jvmti.make	Sat Sep 12 12:50:07 2009 +0100
-@@ -69,10 +69,10 @@
- both = $(JvmtiGenClass) $(JvmtiSrcDir)/jvmti.xml $(JvmtiSrcDir)/jvmtiLib.xsl
- 
- $(JvmtiGenClass): $(JvmtiGenSource)
--	$(QUIETLY) $(COMPILE.JAVAC) -g -d $(JvmtiOutDir) $(JvmtiGenSource)
-+	$(QUIETLY) $(COMPILE.JAVAC) -d $(JvmtiOutDir) $(JvmtiGenSource)
- 
- $(JvmtiEnvFillClass): $(JvmtiEnvFillSource)
--	$(QUIETLY) $(COMPILE.JAVAC) -g -d $(JvmtiOutDir) $(JvmtiEnvFillSource)
-+	$(QUIETLY) $(COMPILE.JAVAC) -d $(JvmtiOutDir) $(JvmtiEnvFillSource)
- 
- $(JvmtiOutDir)/jvmtiEnter.cpp: $(both) $(JvmtiSrcDir)/jvmtiEnter.xsl
- 	@echo Generating $@
-diff -r 682194ca1d8d -r 0fc81f0a8ca8 make/solaris/makefiles/rules.make
---- openjdk.orig/hotspot/make/solaris/makefiles/rules.make	Thu Sep 10 09:04:41 2009 -0400
-+++ openjdk/hotspot/make/solaris/makefiles/rules.make	Sat Sep 12 12:50:07 2009 +0100
-@@ -122,12 +122,20 @@
- endif
- endif
- 
-+COMPILE.JAVAC += $(BOOTSTRAP_JAVAC_FLAGS)
-+
- SUM = /usr/bin/sum
- 
- # 'gmake MAKE_VERBOSE=y' gives all the gory details.
- QUIETLY$(MAKE_VERBOSE)  = @
- RUN.JAR$(MAKE_VERBOSE) += >/dev/null
- 
-+# Settings for javac
-+BOOT_SOURCE_LANGUAGE_VERSION = 6
-+BOOT_TARGET_CLASS_VERSION = 6
-+JAVAC_FLAGS = -g -encoding ascii
-+BOOTSTRAP_JAVAC_FLAGS = $(JAVAC_FLAGS) -source $(BOOT_SOURCE_LANGUAGE_VERSION) -target $(BOOT_TARGET_CLASS_VERSION)
-+
- # With parallel makes, print a message at the end of compilation.
- ifeq    ($(findstring j,$(MFLAGS)),j)
- COMPILE_DONE    = && { echo Done with $<; }
-diff -r 682194ca1d8d -r 0fc81f0a8ca8 make/solaris/makefiles/sa.make
---- openjdk.orig/hotspot/make/solaris/makefiles/sa.make	Thu Sep 10 09:04:41 2009 -0400
-+++ openjdk/hotspot/make/solaris/makefiles/sa.make	Sat Sep 12 12:50:07 2009 +0100
-@@ -67,8 +67,8 @@
- 	$(QUIETLY) if [ ! -d $(SA_CLASSDIR) ] ; then \
- 	  mkdir -p $(SA_CLASSDIR);        \
- 	fi
--	$(QUIETLY) $(COMPILE.JAVAC) -source 1.4 -classpath $(SA_CLASSPATH) -sourcepath $(AGENT_SRC_DIR) -g -d $(SA_CLASSDIR) $(AGENT_FILES1)
--	$(QUIETLY) $(COMPILE.JAVAC) -source 1.4 -classpath $(SA_CLASSPATH) -sourcepath $(AGENT_SRC_DIR) -g -d $(SA_CLASSDIR) $(AGENT_FILES2)
-+	$(QUIETLY) $(COMPILE.JAVAC) -source 1.4 -target 1.4 -classpath $(SA_CLASSPATH) -sourcepath $(AGENT_SRC_DIR) -d $(SA_CLASSDIR) $(AGENT_FILES1)
-+	$(QUIETLY) $(COMPILE.JAVAC) -source 1.4 -target 1.4 -classpath $(SA_CLASSPATH) -sourcepath $(AGENT_SRC_DIR) -d $(SA_CLASSDIR) $(AGENT_FILES2)
- 	
- 	$(QUIETLY) $(COMPILE.RMIC)  -classpath $(SA_CLASSDIR) -d $(SA_CLASSDIR) sun.jvm.hotspot.debugger.remote.RemoteDebuggerServer
- 	$(QUIETLY) echo "$(SA_BUILD_VERSION_PROP)" > $(SA_PROPERTIES)
-diff -r 682194ca1d8d -r 0fc81f0a8ca8 make/solaris/makefiles/top.make
---- openjdk.orig/hotspot/make/solaris/makefiles/top.make	Thu Sep 10 09:04:41 2009 -0400
-+++ openjdk/hotspot/make/solaris/makefiles/top.make	Sat Sep 12 12:50:07 2009 +0100
-@@ -24,7 +24,7 @@
- 
- # top.make is included in the Makefile in the build directories.
- # It DOES NOT include the vm dependency info in order to be faster.
--# It's main job is to implement the incremental form of make lists.
-+# Its main job is to implement the incremental form of make lists.
- # It also:
- #   -builds and runs adlc via adlc.make
- #   -generates JVMTI source and docs via jvmti.make (JSR-163)
-@@ -112,7 +112,7 @@
- # make makeDeps: (and zap the cached db files to force a nonincremental run)
- 
- $(GENERATED)/$(MakeDepsClass): $(MakeDepsSources)
--	@$(COMPILE.JAVAC) -classpath $(GAMMADIR)/src/share/tools/MakeDeps -g -d $(GENERATED) $(MakeDepsSources)
-+	@$(COMPILE.JAVAC) -classpath $(GAMMADIR)/src/share/tools/MakeDeps -d $(GENERATED) $(MakeDepsSources)
- 	@echo Removing $(Incremental_Lists) to force regeneration.
- 	@rm -f $(Incremental_Lists)
- 	@$(CDG) echo >$(Cached_plat)
-diff -r 682194ca1d8d -r 0fc81f0a8ca8 make/windows/makefiles/generated.make
---- openjdk.orig/hotspot/make/windows/makefiles/generated.make	Thu Sep 10 09:04:41 2009 -0400
-+++ openjdk/hotspot/make/windows/makefiles/generated.make	Sat Sep 12 12:50:07 2009 +0100
-@@ -91,7 +91,7 @@
- classes/MakeDeps.class: $(MakeDepsSources)
- 	if exist classes rmdir /s /q classes
- 	mkdir classes
--	$(COMPILE_JAVAC) -classpath $(WorkSpace)\src\share\tools\MakeDeps -g -d classes $(MakeDepsSources)
-+	$(COMPILE_JAVAC) -classpath $(WorkSpace)\src\share\tools\MakeDeps -d classes $(MakeDepsSources)
- 
- !if ("$(Variant)" == "compiler2") || ("$(Variant)" == "tiered")
- 
-diff -r 682194ca1d8d -r 0fc81f0a8ca8 make/windows/makefiles/jvmti.make
---- openjdk.orig/hotspot/make/windows/makefiles/jvmti.make	Thu Sep 10 09:04:41 2009 -0400
-+++ openjdk/hotspot/make/windows/makefiles/jvmti.make	Sat Sep 12 12:50:07 2009 +0100
-@@ -68,10 +68,10 @@
-         @if not exist $(JvmtiOutDir) mkdir $(JvmtiOutDir)
- 
- $(JvmtiGenClass): $(JvmtiGenSource)
--	$(COMPILE_JAVAC) -g -d $(JvmtiOutDir) $(JvmtiGenSource)
-+	$(COMPILE_JAVAC) -d $(JvmtiOutDir) $(JvmtiGenSource)
- 
- $(JvmtiEnvFillClass): $(JvmtiEnvFillSource)
--	@$(COMPILE_JAVAC) -g -d $(JvmtiOutDir) $(JvmtiEnvFillSource)
-+	@$(COMPILE_JAVAC) -d $(JvmtiOutDir) $(JvmtiEnvFillSource)
- 
- $(JvmtiOutDir)/jvmtiEnter.cpp: $(both) $(JvmtiSrcDir)/jvmtiEnter.xsl
- 	@echo Generating $@
-diff -r 682194ca1d8d -r 0fc81f0a8ca8 make/windows/makefiles/rules.make
---- openjdk.orig/hotspot/make/windows/makefiles/rules.make	Thu Sep 10 09:04:41 2009 -0400
-+++ openjdk/hotspot/make/windows/makefiles/rules.make	Sat Sep 12 12:50:07 2009 +0100
-@@ -29,7 +29,7 @@
- RUN_JAVAP=$(BootStrapDir)\bin\javap
- RUN_JAVAH=$(BootStrapDir)\bin\javah
- RUN_JAR=$(BootStrapDir)\bin\jar
--COMPILE_JAVAC=$(BootStrapDir)\bin\javac
-+COMPILE_JAVAC=$(BootStrapDir)\bin\javac $(BOOTSTRAP_JAVAC_FLAGS)
- COMPILE_RMIC=$(BootStrapDir)\bin\rmic
- BOOT_JAVA_HOME=$(BootStrapDir)
- !else
-@@ -37,11 +37,17 @@
- RUN_JAVAP=javap
- RUN_JAVAH=javah
- RUN_JAR=jar
--COMPILE_JAVAC=javac
-+COMPILE_JAVAC=javac $(BOOTSTRAP_JAVAC_FLAGS)
- COMPILE_RMIC=rmic
- BOOT_JAVA_HOME=
- !endif
- 
-+# Settings for javac
-+BOOT_SOURCE_LANGUAGE_VERSION=6
-+BOOT_TARGET_CLASS_VERSION=6
-+JAVAC_FLAGS=-g -encoding ascii
-+BOOTSTRAP_JAVAC_FLAGS=$(JAVAC_FLAGS) -source $(BOOT_SOURCE_LANGUAGE_VERSION) -target $(BOOT_TARGET_CLASS_VERSION)
-+
- ProjectFile=vm.vcproj
- 
- !if "$(MSC_VER)" == "1200"
-diff -r 682194ca1d8d -r 0fc81f0a8ca8 make/windows/makefiles/sa.make
---- openjdk.orig/hotspot/make/windows/makefiles/sa.make	Thu Sep 10 09:04:41 2009 -0400
-+++ openjdk/hotspot/make/windows/makefiles/sa.make	Sat Sep 12 12:50:07 2009 +0100
-@@ -55,9 +55,9 @@
- $(GENERATED)\sa-jdi.jar: $(AGENT_FILES1:/=\) $(AGENT_FILES2:/=\)
- 	@if not exist $(SA_CLASSDIR) mkdir $(SA_CLASSDIR)
- 	@echo ...Building sa-jdi.jar
--	@echo ...$(COMPILE_JAVAC) -source 1.4 -classpath $(SA_CLASSPATH) -g -d $(SA_CLASSDIR) ....
--	@$(COMPILE_JAVAC) -source 1.4 -classpath $(SA_CLASSPATH) -sourcepath $(AGENT_SRC_DIR) -g -d $(SA_CLASSDIR) $(AGENT_FILES1:/=\)
--	@$(COMPILE_JAVAC) -source 1.4 -classpath $(SA_CLASSPATH) -sourcepath $(AGENT_SRC_DIR) -g -d $(SA_CLASSDIR) $(AGENT_FILES2:/=\)
-+	@echo ...$(COMPILE_JAVAC) -source 1.4 -target 1.4 -classpath $(SA_CLASSPATH) -d $(SA_CLASSDIR) ....
-+	@$(COMPILE_JAVAC) -source 1.4 -target 1.4 -classpath $(SA_CLASSPATH) -sourcepath $(AGENT_SRC_DIR) -d $(SA_CLASSDIR) $(AGENT_FILES1:/=\)
-+	@$(COMPILE_JAVAC) -source 1.4 -target 1.4 -classpath $(SA_CLASSPATH) -sourcepath $(AGENT_SRC_DIR) -d $(SA_CLASSDIR) $(AGENT_FILES2:/=\)
- 	$(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 -r 682194ca1d8d -r 0fc81f0a8ca8 make/windows/projectfiles/common/Makefile
---- openjdk.orig/hotspot/make/windows/projectfiles/common/Makefile	Thu Sep 10 09:04:41 2009 -0400
-+++ openjdk/hotspot/make/windows/projectfiles/common/Makefile	Sat Sep 12 12:50:07 2009 +0100
-@@ -179,6 +179,6 @@
- $(HOTSPOTBUILDSPACE)/classes/MakeDeps.class: $(MakeDepsSources)
- 	@if exist $(HOTSPOTBUILDSPACE)\classes rmdir /s /q $(HOTSPOTBUILDSPACE)\classes
- 	@mkdir $(HOTSPOTBUILDSPACE)\classes
--	@$(COMPILE_JAVAC) -classpath $(HOTSPOTWORKSPACE)\src\share\tools\MakeDeps -g -d $(HOTSPOTBUILDSPACE)/classes $(MakeDepsSources)
-+	@$(COMPILE_JAVAC) -classpath $(HOTSPOTWORKSPACE)\src\share\tools\MakeDeps -d $(HOTSPOTBUILDSPACE)/classes $(MakeDepsSources)
- 
- FORCE:
--- a/patches/hotspot/hs16/icedtea-params-cast-size_t.patch	Sun Apr 18 17:03:04 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,252 +0,0 @@
-diff -Nru openjdk.orig/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp openjdk/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp
---- openjdk.orig/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp	2009-12-08 23:12:17.000000000 +0000
-+++ openjdk/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp	2010-01-11 20:57:36.000000000 +0000
-@@ -941,7 +941,7 @@
-   if (free_percentage < desired_free_percentage) {
-     size_t desired_capacity = (size_t)(used() / ((double) 1 - desired_free_percentage));
-     assert(desired_capacity >= capacity(), "invalid expansion size");
--    expand_bytes = MAX2(desired_capacity - capacity(), MinHeapDeltaBytes);
-+    expand_bytes = MAX2((long unsigned int) (desired_capacity - capacity()), (long unsigned int) MinHeapDeltaBytes);
-   }
-   if (expand_bytes > 0) {
-     if (PrintGCDetails && Verbose) {
-@@ -6095,7 +6095,7 @@
-     HeapWord* curAddr = _markBitMap.startWord();
-     while (curAddr < _markBitMap.endWord()) {
-       size_t remaining  = pointer_delta(_markBitMap.endWord(), curAddr);
--      MemRegion chunk(curAddr, MIN2(CMSBitMapYieldQuantum, remaining));
-+      MemRegion chunk(curAddr, MIN2((size_t) CMSBitMapYieldQuantum, remaining));
-       _markBitMap.clear_large_range(chunk);
-       if (ConcurrentMarkSweepThread::should_yield() &&
-           !foregroundGCIsActive() &&
-@@ -6383,7 +6383,7 @@
-     return;
-   }
-   // Double capacity if possible
--  size_t new_capacity = MIN2(_capacity*2, CMSMarkStackSizeMax);
-+  size_t new_capacity = MIN2((size_t) (_capacity*2), (size_t) CMSMarkStackSizeMax);
-   // Do not give up existing stack until we have managed to
-   // get the double capacity that we desired.
-   ReservedSpace rs(ReservedSpace::allocation_align_size_up(
-diff -Nru openjdk.orig/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp openjdk/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp
---- openjdk.orig/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp	2010-01-11 20:48:22.000000000 +0000
-+++ openjdk/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp	2010-01-11 20:57:36.000000000 +0000
-@@ -412,7 +412,7 @@
-   _regionStack(),
-   // _finger set in set_non_marking_state
- 
--  _max_task_num(MAX2(ParallelGCThreads, (size_t)1)),
-+  _max_task_num(MAX2((size_t)ParallelGCThreads, (size_t)1)),
-   // _active_tasks set in set_non_marking_state
-   // _tasks set inside the constructor
-   _task_queues(new CMTaskQueueSet((int) _max_task_num)),
-@@ -463,7 +463,7 @@
-   SATBMarkQueueSet& satb_qs = JavaThread::satb_mark_queue_set();
-   satb_qs.set_buffer_size(G1SATBLogBufferSize);
- 
--  int size = (int) MAX2(ParallelGCThreads, (size_t)1);
-+  int size = (int) MAX2((size_t)ParallelGCThreads, (size_t)1);
-   _par_cleanup_thread_state = NEW_C_HEAP_ARRAY(ParCleanupThreadState*, size);
-   for (int i = 0 ; i < size; i++) {
-     _par_cleanup_thread_state[i] = new ParCleanupThreadState;
-@@ -522,7 +522,7 @@
-       _sleep_factor             = sleep_factor;
-       _marking_task_overhead    = marking_task_overhead;
-     } else {
--      _parallel_marking_threads = MAX2((ParallelGCThreads + 2) / 4, (size_t)1);
-+      _parallel_marking_threads = MAX2((size_t)((ParallelGCThreads + 2) / 4), (size_t)1);
-       _sleep_factor             = 0.0;
-       _marking_task_overhead    = 1.0;
-     }
-@@ -649,7 +649,7 @@
- }
- 
- ConcurrentMark::~ConcurrentMark() {
--  int size = (int) MAX2(ParallelGCThreads, (size_t)1);
-+  int size = (int) MAX2((size_t)ParallelGCThreads, (size_t)1);
-   for (int i = 0; i < size; i++) delete _par_cleanup_thread_state[i];
-   FREE_C_HEAP_ARRAY(ParCleanupThreadState*,
-                     _par_cleanup_thread_state);
-@@ -1708,7 +1708,7 @@
-   if (has_aborted()) return;
- 
-   int first = 0;
--  int last = (int)MAX2(ParallelGCThreads, (size_t)1);
-+  int last = (int)MAX2((size_t)ParallelGCThreads, (size_t)1);
-   for (int t = 0; t < last; t++) {
-     UncleanRegionList* list = &_par_cleanup_thread_state[t]->list;
-     assert(list->well_formed(), "Inv");
-@@ -3202,7 +3202,7 @@
-   // of things to do) or totally (at the very end).
-   size_t target_size;
-   if (partially)
--    target_size = MIN2((size_t)_task_queue->max_elems()/3, GCDrainStackTargetSize);
-+    target_size = MIN2((size_t)_task_queue->max_elems()/3, (size_t)GCDrainStackTargetSize);
-   else
-     target_size = 0;
- 
-diff -Nru openjdk.orig/hotspot/src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp openjdk/hotspot/src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp
---- openjdk.orig/hotspot/src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp	2009-12-08 23:12:17.000000000 +0000
-+++ openjdk/hotspot/src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp	2010-01-11 20:57:36.000000000 +0000
-@@ -1058,7 +1058,7 @@
- // This can be done by either mutator threads together with the
- // concurrent refinement threads or GC threads.
- int HeapRegionRemSet::num_par_rem_sets() {
--  return (int)MAX2(DirtyCardQueueSet::num_par_ids() + ConcurrentG1Refine::thread_num(), ParallelGCThreads);
-+  return (int)MAX2(DirtyCardQueueSet::num_par_ids() + ConcurrentG1Refine::thread_num(), (size_t)ParallelGCThreads);
- }
- 
- HeapRegionRemSet::HeapRegionRemSet(G1BlockOffsetSharedArray* bosa,
-diff -Nru openjdk.orig/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp openjdk/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp
---- openjdk.orig/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp	2009-12-08 23:12:17.000000000 +0000
-+++ openjdk/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp	2010-01-11 20:57:36.000000000 +0000
-@@ -863,8 +863,8 @@
- void PSParallelCompact::initialize_dead_wood_limiter()
- {
-   const size_t max = 100;
--  _dwl_mean = double(MIN2(ParallelOldDeadWoodLimiterMean, max)) / 100.0;
--  _dwl_std_dev = double(MIN2(ParallelOldDeadWoodLimiterStdDev, max)) / 100.0;
-+  _dwl_mean = double(MIN2((size_t) ParallelOldDeadWoodLimiterMean, max)) / 100.0;
-+  _dwl_std_dev = double(MIN2((size_t) ParallelOldDeadWoodLimiterStdDev, max)) / 100.0;
-   _dwl_first_term = 1.0 / (sqrt(2.0 * M_PI) * _dwl_std_dev);
-   DEBUG_ONLY(_dwl_initialized = true;)
-   _dwl_adjustment = normal_distribution(1.0);
-diff -Nru openjdk.orig/hotspot/src/share/vm/gc_implementation/parallelScavenge/psPermGen.cpp openjdk/hotspot/src/share/vm/gc_implementation/parallelScavenge/psPermGen.cpp
---- openjdk.orig/hotspot/src/share/vm/gc_implementation/parallelScavenge/psPermGen.cpp	2009-12-08 23:12:17.000000000 +0000
-+++ openjdk/hotspot/src/share/vm/gc_implementation/parallelScavenge/psPermGen.cpp	2010-01-11 20:57:36.000000000 +0000
-@@ -63,7 +63,7 @@
-   _last_used = current_live;
- 
-   // We have different alignment constraints than the rest of the heap.
--  const size_t alignment = MAX2(MinPermHeapExpansion,
-+  const size_t alignment = MAX2((size_t) MinPermHeapExpansion,
-                                 virtual_space()->alignment());
- 
-   // Compute the desired size:
-diff -Nru openjdk.orig/hotspot/src/share/vm/memory/collectorPolicy.cpp openjdk/hotspot/src/share/vm/memory/collectorPolicy.cpp
---- openjdk.orig/hotspot/src/share/vm/memory/collectorPolicy.cpp	2009-12-08 23:12:17.000000000 +0000
-+++ openjdk/hotspot/src/share/vm/memory/collectorPolicy.cpp	2010-01-11 20:57:36.000000000 +0000
-@@ -281,7 +281,7 @@
-     // yield a size that is too small) and bound it by MaxNewSize above.
-     // Ergonomics plays here by previously calculating the desired
-     // NewSize and MaxNewSize.
--    max_new_size = MIN2(MAX2(max_new_size, NewSize), MaxNewSize);
-+    max_new_size = MIN2(MAX2(max_new_size, (size_t)NewSize), (size_t)MaxNewSize);
-   }
-   assert(max_new_size > 0, "All paths should set max_new_size");
- 
-@@ -308,7 +308,7 @@
-       // generally small compared to the NewRatio calculation.
-       _min_gen0_size = NewSize;
-       desired_new_size = NewSize;
--      max_new_size = MAX2(max_new_size, NewSize);
-+      max_new_size = MAX2(max_new_size, (size_t) NewSize);
-     } else {
-       // For the case where NewSize is the default, use NewRatio
-       // to size the minimum and initial generation sizes.
-@@ -316,10 +316,10 @@
-       // NewRatio is overly large, the resulting sizes can be too
-       // small.
-       _min_gen0_size = MAX2(scale_by_NewRatio_aligned(min_heap_byte_size()),
--                          NewSize);
-+                          (size_t) NewSize);
-       desired_new_size =
-         MAX2(scale_by_NewRatio_aligned(initial_heap_byte_size()),
--             NewSize);
-+             (size_t) NewSize);
-     }
- 
-     assert(_min_gen0_size > 0, "Sanity check");
-@@ -374,14 +374,14 @@
-       // Adjust gen0 down to accomodate OldSize
-       *gen0_size_ptr = heap_size - min_gen0_size;
-       *gen0_size_ptr =
--        MAX2((uintx)align_size_down(*gen0_size_ptr, min_alignment()),
-+        MAX2((size_t)align_size_down(*gen0_size_ptr, min_alignment()),
-              min_alignment());
-       assert(*gen0_size_ptr > 0, "Min gen0 is too large");
-       result = true;
-     } else {
-       *gen1_size_ptr = heap_size - *gen0_size_ptr;
-       *gen1_size_ptr =
--        MAX2((uintx)align_size_down(*gen1_size_ptr, min_alignment()),
-+        MAX2((size_t)align_size_down(*gen1_size_ptr, min_alignment()),
-                        min_alignment());
-     }
-   }
-@@ -405,7 +405,7 @@
-   // for setting the gen1 maximum.
-   _max_gen1_size = max_heap_byte_size() - _max_gen0_size;
-   _max_gen1_size =
--    MAX2((uintx)align_size_down(_max_gen1_size, min_alignment()),
-+    MAX2((size_t)align_size_down(_max_gen1_size, min_alignment()),
-          min_alignment());
-   // If no explicit command line flag has been set for the
-   // gen1 size, use what is left for gen1.
-@@ -419,11 +419,11 @@
-       "gen0 has an unexpected minimum size");
-     set_min_gen1_size(min_heap_byte_size() - min_gen0_size());
-     set_min_gen1_size(
--      MAX2((uintx)align_size_down(_min_gen1_size, min_alignment()),
-+      MAX2((size_t)align_size_down(_min_gen1_size, min_alignment()),
-            min_alignment()));
-     set_initial_gen1_size(initial_heap_byte_size() - initial_gen0_size());
-     set_initial_gen1_size(
--      MAX2((uintx)align_size_down(_initial_gen1_size, min_alignment()),
-+      MAX2((size_t)align_size_down(_initial_gen1_size, min_alignment()),
-            min_alignment()));
- 
-   } else {
-diff -Nru openjdk.orig/hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp openjdk/hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp
---- openjdk.orig/hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp	2009-12-08 23:12:17.000000000 +0000
-+++ openjdk/hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp	2010-01-11 20:57:36.000000000 +0000
-@@ -221,7 +221,7 @@
-   size_t init_sz;
- 
-   if (TLABSize > 0) {
--    init_sz = MIN2(TLABSize / HeapWordSize, max_size());
-+    init_sz = MIN2((size_t) (TLABSize / HeapWordSize), max_size());
-   } else if (global_stats() == NULL) {
-     // Startup issue - main thread initialized before heap initialized.
-     init_sz = min_size();
-diff -Nru openjdk.orig/hotspot/src/share/vm/runtime/arguments.cpp openjdk/hotspot/src/share/vm/runtime/arguments.cpp
---- openjdk.orig/hotspot/src/share/vm/runtime/arguments.cpp	2010-01-11 20:48:21.000000000 +0000
-+++ openjdk/hotspot/src/share/vm/runtime/arguments.cpp	2010-01-11 20:59:44.000000000 +0000
-@@ -1071,7 +1071,7 @@
-     // NewSize was set on the command line and it is larger than
-     // preferred_max_new_size.
-     if (!FLAG_IS_DEFAULT(NewSize)) {   // NewSize explicitly set at command-line
--      FLAG_SET_ERGO(uintx, MaxNewSize, MAX2(NewSize, preferred_max_new_size));
-+      FLAG_SET_ERGO(uintx, MaxNewSize, MAX2((size_t) NewSize, preferred_max_new_size));
-     } else {
-       FLAG_SET_ERGO(uintx, MaxNewSize, preferred_max_new_size);
-     }
-@@ -1090,7 +1090,7 @@
-     // there was no obvious reason.  Also limit to the case where
-     // MaxNewSize has not been set.
- 
--    FLAG_SET_ERGO(intx, NewRatio, MAX2(NewRatio, new_ratio));
-+    FLAG_SET_ERGO(intx, NewRatio, MAX2((intx) NewRatio, new_ratio));
- 
-     // Code along this path potentially sets NewSize and OldSize
- 
-@@ -1132,8 +1132,8 @@
-       // Unless explicitly requested otherwise, make young gen
-       // at least min_new, and at most preferred_max_new_size.
-       if (FLAG_IS_DEFAULT(NewSize)) {
--        FLAG_SET_ERGO(uintx, NewSize, MAX2(NewSize, min_new));
--        FLAG_SET_ERGO(uintx, NewSize, MIN2(preferred_max_new_size, NewSize));
-+	FLAG_SET_ERGO(uintx, NewSize, MAX2((size_t) NewSize, min_new));
-+        FLAG_SET_ERGO(uintx, NewSize, MIN2(preferred_max_new_size, (size_t) NewSize));
-         if (PrintGCDetails && Verbose) {
-           // Too early to use gclog_or_tty
-           tty->print_cr("Ergo set NewSize: " SIZE_FORMAT, NewSize);
-@@ -1144,7 +1144,7 @@
-       // later NewRatio will decide how it grows; see above.
-       if (FLAG_IS_DEFAULT(OldSize)) {
-         if (max_heap > NewSize) {
--          FLAG_SET_ERGO(uintx, OldSize, MIN2(3*NewSize, max_heap - NewSize));
-+	  FLAG_SET_ERGO(uintx, OldSize, MIN2((size_t) 3*NewSize, max_heap - (size_t) NewSize));
-           if (PrintGCDetails && Verbose) {
-             // Too early to use gclog_or_tty
-             tty->print_cr("Ergo set OldSize: " SIZE_FORMAT, OldSize);
--- a/patches/hotspot/hs16/memory-limits.patch	Sun Apr 18 17:03:04 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,24 +0,0 @@
-diff -Nru openjdk.orig/hotspot/src/cpu/x86/vm/c2_globals_x86.hpp openjdk/hotspot/src/cpu/x86/vm/c2_globals_x86.hpp
---- openjdk.orig/hotspot/src/cpu/x86/vm/c2_globals_x86.hpp	2009-12-08 23:12:17.000000000 +0000
-+++ openjdk/hotspot/src/cpu/x86/vm/c2_globals_x86.hpp	2010-01-11 20:44:32.000000000 +0000
-@@ -95,7 +95,7 @@
- 
- // Heap related flags
- define_pd_global(uintx,PermSize,    ScaleForWordSize(16*M));
--define_pd_global(uintx,MaxPermSize, ScaleForWordSize(64*M));
-+define_pd_global(uintx,MaxPermSize, ScaleForWordSize(128*M));
- 
- // Ergonomics related flags
- define_pd_global(bool, NeverActAsServerClassMachine, false);
-diff -Nru openjdk.orig/hotspot/src/share/vm/runtime/globals.hpp openjdk/hotspot/src/share/vm/runtime/globals.hpp
---- openjdk.orig/hotspot/src/share/vm/runtime/globals.hpp	2009-12-08 23:12:17.000000000 +0000
-+++ openjdk/hotspot/src/share/vm/runtime/globals.hpp	2010-01-11 20:45:17.000000000 +0000
-@@ -2809,7 +2809,7 @@
-   product(uintx, InitialHeapSize, 0,                                        \
-           "Initial heap size (in bytes); zero means OldSize + NewSize")     \
-                                                                             \
--  product(uintx, MaxHeapSize, ScaleForWordSize(96*M),                       \
-+  product(uintx, MaxHeapSize, ScaleForWordSize(512*M),                      \
-           "Maximum heap size (in bytes)")                                   \
-                                                                             \
-   product(uintx, OldSize, ScaleForWordSize(4*M),                            \
--- a/patches/hotspot/hs16/openjdk-6886353-ignore_deoptimizealot.patch	Sun Apr 18 17:03:04 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-# HG changeset patch
-# User andrew
-# Date 1254183265 25200
-# Node ID d6b9fd78f38951b6c8b2912701f52aa9fbc08a63
-# Parent  ddd6f1182ae3c0014cbc139952ba8d9d14bfb3d1
-6886353: For DeoptimizeALot, JTreg tests should "IgnoreUnrecognizedVMOptions on a product build
-Summary: Add IgnoreUnrecognizedVMOptions for JTreg tests (on a product build) to pass with DeoptimizeALot
-Reviewed-by: kvn
-
-diff -r ddd6f1182ae3 -r d6b9fd78f389 test/compiler/6823453/Test.java
---- openjdk/hotspot/test/compiler/6823453/Test.java	Fri Sep 25 13:26:02 2009 -0700
-+++ openjdk/hotspot/test/compiler/6823453/Test.java	Mon Sep 28 17:14:25 2009 -0700
-@@ -26,7 +26,7 @@
-  * @test
-  * @bug 6823453
-  * @summary DeoptimizeALot causes fastdebug server jvm to fail with assert(false,"unscheduable graph")
-- * @run main/othervm -Xcomp -XX:CompileOnly=Test -XX:+DeoptimizeALot Test
-+ * @run main/othervm -Xcomp -XX:+IgnoreUnrecognizedVMOptions -XX:CompileOnly=Test -XX:+DeoptimizeALot Test
-  */
- 
- public class Test {
-diff -r ddd6f1182ae3 -r d6b9fd78f389 test/compiler/6833129/Test.java
---- openjdk/hotspot/test/compiler/6833129/Test.java	Fri Sep 25 13:26:02 2009 -0700
-+++ openjdk/hotspot/test/compiler/6833129/Test.java	Mon Sep 28 17:14:25 2009 -0700
-@@ -25,7 +25,7 @@
-  * @test
-  * @bug 6833129
-  * @summary Object.clone() and Arrays.copyOf ignore coping with -XX:+DeoptimizeALot
-- * @run main/othervm -Xbatch -XX:+DeoptimizeALot Test
-+ * @run main/othervm -Xbatch -XX:+IgnoreUnrecognizedVMOptions -XX:+DeoptimizeALot Test
-  */
- 
- public class Test{
--- a/patches/hotspot/hs16/shark.patch	Sun Apr 18 17:03:04 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,9 +0,0 @@
---- openjdk.orig/hotspot/src/cpu//zero/vm/shark_globals_zero.hpp	2009-09-10 15:36:58.658607552 +0100
-+++ openjdk/hotspot/src/cpu/zero/vm/shark_globals_zero.hpp	2010-01-13 14:57:16.000000000 +0000
-@@ -59,5 +59,5 @@
- define_pd_global(uintx, PermSize,                     12*M );
- define_pd_global(uintx, MaxPermSize,                  64*M );
- define_pd_global(bool,  NeverActAsServerClassMachine, true );
--define_pd_global(uintx, DefaultMaxRAM,                1*G  );
-+define_pd_global(uint64_t,MaxRAM,                    1ULL*G);
- define_pd_global(bool,  CICompileOSR,                 true );
--- a/patches/hotspot/hs16/zero.patch	Sun Apr 18 17:03:04 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,107 +0,0 @@
-diff -r 7d2ae1d67c95 ports/hotspot/src/cpu/zero/vm/assembler_zero.cpp
---- openjdk.orig/hotspot/src/cpu/zero/vm/assembler_zero.cpp	Mon Oct 26 23:26:33 2009 +0000
-+++ openjdk/hotspot/src/cpu/zero/vm/assembler_zero.cpp	Tue Oct 27 15:06:00 2009 +0000
-@@ -54,6 +54,12 @@
-   sync();
- }
- 
-+RegisterOrConstant MacroAssembler::delayed_value_impl(intptr_t* delayed_value_addr,
-+						      Register tmpl, int offset) 
-+{
-+  Unimplemented();
-+}
-+
- void MacroAssembler::store_oop(jobject obj) {
-   code_section()->relocate(pc(), oop_Relocation::spec_for_immediate());
-   emit_address((address) obj);
-diff -r 7d2ae1d67c95 ports/hotspot/src/cpu/zero/vm/assembler_zero.hpp
---- openjdk.orig/hotspot/src/cpu/zero/vm/assembler_zero.hpp	Mon Oct 26 23:26:33 2009 +0000
-+++ openjdk/hotspot/src/cpu/zero/vm/assembler_zero.hpp	Tue Oct 27 15:06:00 2009 +0000
-@@ -47,7 +47,8 @@
-   void align(int modulus);
-   void bang_stack_with_offset(int offset);
-   bool needs_explicit_null_check(intptr_t offset);
--
-+  RegisterOrConstant delayed_value_impl(intptr_t* delayed_value_addr,
-+					Register tmp, int offset);
-  public:
-   void advance(int bytes);
-   void store_oop(jobject obj);
-diff -r 7d2ae1d67c95 ports/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp
---- openjdk.orig/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp	Mon Oct 26 23:26:33 2009 +0000
-+++ openjdk/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp	Tue Oct 27 15:06:00 2009 +0000
-@@ -759,6 +759,10 @@
-     entry_point = ((InterpreterGenerator*) this)->generate_abstract_entry();
-     break;
- 
-+  case Interpreter::method_handle:
-+    entry_point = ((InterpreterGenerator*)this)->generate_method_handle_entry();
-+    break;
-+
-   case Interpreter::java_lang_math_sin:
-   case Interpreter::java_lang_math_cos:
-   case Interpreter::java_lang_math_tan:
-diff -r 7d2ae1d67c95 ports/hotspot/src/cpu/zero/vm/frame_zero.cpp
---- openjdk.orig/hotspot/src/cpu/zero/vm/frame_zero.cpp	Mon Oct 26 23:26:33 2009 +0000
-+++ openjdk/hotspot/src/cpu/zero/vm/frame_zero.cpp	Tue Oct 27 15:06:00 2009 +0000
-@@ -166,7 +166,7 @@
-   return type;
- }
- 
--int frame::frame_size() const {
-+int frame::frame_size(RegisterMap* map) const {
- #ifdef PRODUCT
-   ShouldNotCallThis();
- #else
-diff -r 7d2ae1d67c95 ports/hotspot/src/cpu/zero/vm/interp_masm_zero.hpp
---- openjdk.orig/hotspot/src/cpu/zero/vm/interp_masm_zero.hpp	Mon Oct 26 23:26:33 2009 +0000
-+++ openjdk/hotspot/src/cpu/zero/vm/interp_masm_zero.hpp	Tue Oct 27 15:06:00 2009 +0000
-@@ -28,4 +28,7 @@
- class InterpreterMacroAssembler : public MacroAssembler {
-  public:
-   InterpreterMacroAssembler(CodeBuffer* code) : MacroAssembler(code) {}
-+  RegisterOrConstant delayed_value_impl(intptr_t* delayed_value_addr, Register tmp, int offset) {
-+    Unimplemented();
-+  }
- };
-diff -r 7d2ae1d67c95 ports/hotspot/src/cpu/zero/vm/interpreterGenerator_zero.hpp
---- openjdk.orig/hotspot/src/cpu/zero/vm/interpreterGenerator_zero.hpp	Mon Oct 26 23:26:33 2009 +0000
-+++ openjdk/hotspot/src/cpu/zero/vm/interpreterGenerator_zero.hpp	Tue Oct 27 15:06:00 2009 +0000
-@@ -34,3 +34,4 @@
-   address generate_math_entry(AbstractInterpreter::MethodKind kind);
-   address generate_empty_entry();
-   address generate_accessor_entry();
-+  address generate_method_handle_entry();
-diff -r 7d2ae1d67c95 ports/hotspot/src/cpu/zero/vm/interpreter_zero.cpp
---- openjdk.orig/hotspot/src/cpu/zero/vm/interpreter_zero.cpp	Mon Oct 26 23:26:33 2009 +0000
-+++ openjdk/hotspot/src/cpu/zero/vm/interpreter_zero.cpp	Tue Oct 27 15:06:00 2009 +0000
-@@ -43,6 +43,11 @@
-   return ShouldNotCallThisEntry();
- }
- 
-+address InterpreterGenerator::generate_method_handle_entry()
-+{
-+  return ShouldNotCallThisEntry();
-+}
-+
- int AbstractInterpreter::size_activation(methodOop method,
-                                          int tempcount,
-                                          int popframe_extra_args,
-diff -r 7d2ae1d67c95 ports/hotspot/src/cpu/zero/vm/register_zero.hpp
---- openjdk.orig/hotspot/src/cpu/zero/vm/register_zero.hpp	Mon Oct 26 23:26:33 2009 +0000
-+++ openjdk/hotspot/src/cpu/zero/vm/register_zero.hpp	Tue Oct 27 15:06:00 2009 +0000
-@@ -106,3 +106,5 @@
-   static const int max_gpr;
-   static const int max_fpr;
- };
-+
-+CONSTANT_REGISTER_DECLARATION(Register, noreg, (-1));
-diff -r 7d2ae1d67c95 ports/hotspot/src/os_cpu/linux_zero/vm/globals_linux_zero.hpp
---- openjdk.orig/hotspot/src/os_cpu/linux_zero/vm/globals_linux_zero.hpp	Mon Oct 26 23:26:33 2009 +0000
-+++ openjdk/hotspot/src/os_cpu/linux_zero/vm/globals_linux_zero.hpp	Tue Oct 27 15:06:00 2009 +0000
-@@ -41,3 +41,5 @@
- define_pd_global(uintx, JVMInvokeMethodSlack,    8192);
- 
- define_pd_global(bool,  UseVectoredExceptions,   false);
-+// Only used on 64 bit platforms
-+define_pd_global(uintx, HeapBaseMinAddress,      2*G);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/hotspot/hs17/6873059-javac-versioning-hotspot.patch	Sun Apr 18 17:04:10 2010 +0100
@@ -0,0 +1,42 @@
+diff -Nru openjdk.orig/hotspot/make/linux/makefiles/rules.make openjdk/hotspot/make/linux/makefiles/rules.make
+--- openjdk.orig/hotspot/make/linux/makefiles/rules.make	2010-04-10 01:52:10.000000000 +0100
++++ openjdk/hotspot/make/linux/makefiles/rules.make	2010-04-10 02:34:43.000000000 +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 = 5
++BOOT_TARGET_CLASS_VERSION = 5
+ JAVAC_FLAGS = -g -encoding ascii
+ BOOTSTRAP_JAVAC_FLAGS = $(JAVAC_FLAGS) -source $(BOOT_SOURCE_LANGUAGE_VERSION) -target $(BOOT_TARGET_CLASS_VERSION)
+ 
+diff -Nru openjdk.orig/hotspot/make/solaris/makefiles/rules.make openjdk/hotspot/make/solaris/makefiles/rules.make
+--- openjdk.orig/hotspot/make/solaris/makefiles/rules.make	2010-04-10 01:52:10.000000000 +0100
++++ openjdk/hotspot/make/solaris/makefiles/rules.make	2010-04-10 02:35:05.000000000 +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 = 5
++BOOT_TARGET_CLASS_VERSION = 5
+ JAVAC_FLAGS = -g -encoding ascii
+ BOOTSTRAP_JAVAC_FLAGS = $(JAVAC_FLAGS) -source $(BOOT_SOURCE_LANGUAGE_VERSION) -target $(BOOT_TARGET_CLASS_VERSION)
+ 
+diff -Nru openjdk.orig/hotspot/make/windows/makefiles/rules.make openjdk/hotspot/make/windows/makefiles/rules.make
+--- openjdk.orig/hotspot/make/windows/makefiles/rules.make	2010-04-09 00:03:58.000000000 +0100
++++ openjdk/hotspot/make/windows/makefiles/rules.make	2010-04-10 02:35:35.000000000 +0100
+@@ -43,8 +43,8 @@
+ !endif
+ 
+ # Settings for javac
+-BOOT_SOURCE_LANGUAGE_VERSION=6
+-BOOT_TARGET_CLASS_VERSION=6
++BOOT_SOURCE_LANGUAGE_VERSION=5
++BOOT_TARGET_CLASS_VERSION=5
+ JAVAC_FLAGS=-g -encoding ascii
+ BOOTSTRAP_JAVAC_FLAGS=$(JAVAC_FLAGS) -source $(BOOT_SOURCE_LANGUAGE_VERSION) -target $(BOOT_TARGET_CLASS_VERSION)
+ 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/hotspot/hs17/params-cast-size_t.patch	Sun Apr 18 17:04:10 2010 +0100
@@ -0,0 +1,252 @@
+diff -Nru openjdk.orig/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp openjdk/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp
+--- openjdk.orig/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp	2010-04-09 00:03:58.000000000 +0100
++++ openjdk/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp	2010-04-10 02:29:45.000000000 +0100
+@@ -963,7 +963,7 @@
+   if (free_percentage < desired_free_percentage) {
+     size_t desired_capacity = (size_t)(used() / ((double) 1 - desired_free_percentage));
+     assert(desired_capacity >= capacity(), "invalid expansion size");
+-    expand_bytes = MAX2(desired_capacity - capacity(), MinHeapDeltaBytes);
++    expand_bytes = MAX2((long unsigned int) (desired_capacity - capacity()), (long unsigned int) MinHeapDeltaBytes);
+   }
+   if (expand_bytes > 0) {
+     if (PrintGCDetails && Verbose) {
+@@ -6150,7 +6150,7 @@
+     HeapWord* curAddr = _markBitMap.startWord();
+     while (curAddr < _markBitMap.endWord()) {
+       size_t remaining  = pointer_delta(_markBitMap.endWord(), curAddr);
+-      MemRegion chunk(curAddr, MIN2(CMSBitMapYieldQuantum, remaining));
++      MemRegion chunk(curAddr, MIN2((size_t) CMSBitMapYieldQuantum, remaining));
+       _markBitMap.clear_large_range(chunk);
+       if (ConcurrentMarkSweepThread::should_yield() &&
+           !foregroundGCIsActive() &&
+@@ -6438,7 +6438,7 @@
+     return;
+   }
+   // Double capacity if possible
+-  size_t new_capacity = MIN2(_capacity*2, MarkStackSizeMax);
++  size_t new_capacity = MIN2((size_t) (_capacity*2), (size_t) MarkStackSizeMax);
+   // Do not give up existing stack until we have managed to
+   // get the double capacity that we desired.
+   ReservedSpace rs(ReservedSpace::allocation_align_size_up(
+diff -Nru openjdk.orig/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp openjdk/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp
+--- openjdk.orig/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp	2010-04-10 01:52:13.000000000 +0100
++++ openjdk/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp	2010-04-10 02:28:51.000000000 +0100
+@@ -452,7 +452,7 @@
+   _regionStack(),
+   // _finger set in set_non_marking_state
+ 
+-  _max_task_num(MAX2(ParallelGCThreads, (size_t)1)),
++  _max_task_num(MAX2((size_t)ParallelGCThreads, (size_t)1)),
+   // _active_tasks set in set_non_marking_state
+   // _tasks set inside the constructor
+   _task_queues(new CMTaskQueueSet((int) _max_task_num)),
+@@ -503,7 +503,7 @@
+   SATBMarkQueueSet& satb_qs = JavaThread::satb_mark_queue_set();
+   satb_qs.set_buffer_size(G1SATBBufferSize);
+ 
+-  int size = (int) MAX2(ParallelGCThreads, (size_t)1);
++  int size = (int) MAX2((size_t)ParallelGCThreads, (size_t)1);
+   _par_cleanup_thread_state = NEW_C_HEAP_ARRAY(ParCleanupThreadState*, size);
+   for (int i = 0 ; i < size; i++) {
+     _par_cleanup_thread_state[i] = new ParCleanupThreadState;
+@@ -562,7 +562,7 @@
+       _sleep_factor             = sleep_factor;
+       _marking_task_overhead    = marking_task_overhead;
+     } else {
+-      _parallel_marking_threads = MAX2((ParallelGCThreads + 2) / 4, (size_t)1);
++      _parallel_marking_threads = MAX2((size_t)((ParallelGCThreads + 2) / 4), (size_t)1);
+       _sleep_factor             = 0.0;
+       _marking_task_overhead    = 1.0;
+     }
+@@ -689,7 +689,7 @@
+ }
+ 
+ ConcurrentMark::~ConcurrentMark() {
+-  int size = (int) MAX2(ParallelGCThreads, (size_t)1);
++  int size = (int) MAX2((size_t)ParallelGCThreads, (size_t)1);
+   for (int i = 0; i < size; i++) delete _par_cleanup_thread_state[i];
+   FREE_C_HEAP_ARRAY(ParCleanupThreadState*,
+                     _par_cleanup_thread_state);
+@@ -1778,7 +1778,7 @@
+   if (has_aborted()) return;
+ 
+   int first = 0;
+-  int last = (int)MAX2(ParallelGCThreads, (size_t)1);
++  int last = (int)MAX2((size_t)ParallelGCThreads, (size_t)1);
+   for (int t = 0; t < last; t++) {
+     UncleanRegionList* list = &_par_cleanup_thread_state[t]->list;
+     assert(list->well_formed(), "Inv");
+@@ -3276,7 +3276,7 @@
+   // of things to do) or totally (at the very end).
+   size_t target_size;
+   if (partially)
+-    target_size = MIN2((size_t)_task_queue->max_elems()/3, GCDrainStackTargetSize);
++    target_size = MIN2((size_t)_task_queue->max_elems()/3, (size_t)GCDrainStackTargetSize);
+   else
+     target_size = 0;
+ 
+diff -Nru openjdk.orig/hotspot/src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp openjdk/hotspot/src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp
+--- openjdk.orig/hotspot/src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp	2010-04-09 00:03:58.000000000 +0100
++++ openjdk/hotspot/src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp	2010-04-10 02:28:51.000000000 +0100
+@@ -1068,7 +1068,7 @@
+ // This can be done by either mutator threads together with the
+ // concurrent refinement threads or GC threads.
+ int HeapRegionRemSet::num_par_rem_sets() {
+-  return (int)MAX2(DirtyCardQueueSet::num_par_ids() + ConcurrentG1Refine::thread_num(), ParallelGCThreads);
++  return (int)MAX2(DirtyCardQueueSet::num_par_ids() + ConcurrentG1Refine::thread_num(), (size_t)ParallelGCThreads);
+ }
+ 
+ HeapRegionRemSet::HeapRegionRemSet(G1BlockOffsetSharedArray* bosa,
+diff -Nru openjdk.orig/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp openjdk/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp
+--- openjdk.orig/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp	2010-04-09 00:03:58.000000000 +0100
++++ openjdk/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp	2010-04-10 02:28:51.000000000 +0100
+@@ -863,8 +863,8 @@
+ void PSParallelCompact::initialize_dead_wood_limiter()
+ {
+   const size_t max = 100;
+-  _dwl_mean = double(MIN2(ParallelOldDeadWoodLimiterMean, max)) / 100.0;
+-  _dwl_std_dev = double(MIN2(ParallelOldDeadWoodLimiterStdDev, max)) / 100.0;
++  _dwl_mean = double(MIN2((size_t) ParallelOldDeadWoodLimiterMean, max)) / 100.0;
++  _dwl_std_dev = double(MIN2((size_t) ParallelOldDeadWoodLimiterStdDev, max)) / 100.0;
+   _dwl_first_term = 1.0 / (sqrt(2.0 * M_PI) * _dwl_std_dev);
+   DEBUG_ONLY(_dwl_initialized = true;)
+   _dwl_adjustment = normal_distribution(1.0);
+diff -Nru openjdk.orig/hotspot/src/share/vm/gc_implementation/parallelScavenge/psPermGen.cpp openjdk/hotspot/src/share/vm/gc_implementation/parallelScavenge/psPermGen.cpp
+--- openjdk.orig/hotspot/src/share/vm/gc_implementation/parallelScavenge/psPermGen.cpp	2010-04-09 00:03:58.000000000 +0100
++++ openjdk/hotspot/src/share/vm/gc_implementation/parallelScavenge/psPermGen.cpp	2010-04-10 02:28:51.000000000 +0100
+@@ -63,7 +63,7 @@
+   _last_used = current_live;
+ 
+   // We have different alignment constraints than the rest of the heap.
+-  const size_t alignment = MAX2(MinPermHeapExpansion,
++  const size_t alignment = MAX2((size_t) MinPermHeapExpansion,
+                                 virtual_space()->alignment());
+ 
+   // Compute the desired size:
+diff -Nru openjdk.orig/hotspot/src/share/vm/memory/collectorPolicy.cpp openjdk/hotspot/src/share/vm/memory/collectorPolicy.cpp
+--- openjdk.orig/hotspot/src/share/vm/memory/collectorPolicy.cpp	2010-04-09 00:03:58.000000000 +0100
++++ openjdk/hotspot/src/share/vm/memory/collectorPolicy.cpp	2010-04-10 02:28:51.000000000 +0100
+@@ -281,7 +281,7 @@
+     // yield a size that is too small) and bound it by MaxNewSize above.
+     // Ergonomics plays here by previously calculating the desired
+     // NewSize and MaxNewSize.
+-    max_new_size = MIN2(MAX2(max_new_size, NewSize), MaxNewSize);
++    max_new_size = MIN2(MAX2(max_new_size, (size_t)NewSize), (size_t)MaxNewSize);
+   }
+   assert(max_new_size > 0, "All paths should set max_new_size");
+ 
+@@ -308,7 +308,7 @@
+       // generally small compared to the NewRatio calculation.
+       _min_gen0_size = NewSize;
+       desired_new_size = NewSize;
+-      max_new_size = MAX2(max_new_size, NewSize);
++      max_new_size = MAX2(max_new_size, (size_t) NewSize);
+     } else {
+       // For the case where NewSize is the default, use NewRatio
+       // to size the minimum and initial generation sizes.
+@@ -316,10 +316,10 @@
+       // NewRatio is overly large, the resulting sizes can be too
+       // small.
+       _min_gen0_size = MAX2(scale_by_NewRatio_aligned(min_heap_byte_size()),
+-                          NewSize);
++                          (size_t) NewSize);
+       desired_new_size =
+         MAX2(scale_by_NewRatio_aligned(initial_heap_byte_size()),
+-             NewSize);
++             (size_t) NewSize);
+     }
+ 
+     assert(_min_gen0_size > 0, "Sanity check");
+@@ -374,14 +374,14 @@
+       // Adjust gen0 down to accomodate OldSize
+       *gen0_size_ptr = heap_size - min_gen0_size;
+       *gen0_size_ptr =
+-        MAX2((uintx)align_size_down(*gen0_size_ptr, min_alignment()),
++        MAX2((size_t)align_size_down(*gen0_size_ptr, min_alignment()),
+              min_alignment());
+       assert(*gen0_size_ptr > 0, "Min gen0 is too large");
+       result = true;
+     } else {
+       *gen1_size_ptr = heap_size - *gen0_size_ptr;
+       *gen1_size_ptr =
+-        MAX2((uintx)align_size_down(*gen1_size_ptr, min_alignment()),
++        MAX2((size_t)align_size_down(*gen1_size_ptr, min_alignment()),
+                        min_alignment());
+     }
+   }
+@@ -405,7 +405,7 @@
+   // for setting the gen1 maximum.
+   _max_gen1_size = max_heap_byte_size() - _max_gen0_size;
+   _max_gen1_size =
+-    MAX2((uintx)align_size_down(_max_gen1_size, min_alignment()),
++    MAX2((size_t)align_size_down(_max_gen1_size, min_alignment()),
+          min_alignment());
+   // If no explicit command line flag has been set for the
+   // gen1 size, use what is left for gen1.
+@@ -419,11 +419,11 @@
+       "gen0 has an unexpected minimum size");
+     set_min_gen1_size(min_heap_byte_size() - min_gen0_size());
+     set_min_gen1_size(
+-      MAX2((uintx)align_size_down(_min_gen1_size, min_alignment()),
++      MAX2((size_t)align_size_down(_min_gen1_size, min_alignment()),
+            min_alignment()));
+     set_initial_gen1_size(initial_heap_byte_size() - initial_gen0_size());
+     set_initial_gen1_size(
+-      MAX2((uintx)align_size_down(_initial_gen1_size, min_alignment()),
++      MAX2((size_t)align_size_down(_initial_gen1_size, min_alignment()),
+            min_alignment()));
+ 
+   } else {
+diff -Nru openjdk.orig/hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp openjdk/hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp
+--- openjdk.orig/hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp	2010-04-09 00:03:58.000000000 +0100
++++ openjdk/hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp	2010-04-10 02:28:51.000000000 +0100
+@@ -221,7 +221,7 @@
+   size_t init_sz;
+ 
+   if (TLABSize > 0) {
+-    init_sz = MIN2(TLABSize / HeapWordSize, max_size());
++    init_sz = MIN2((size_t) (TLABSize / HeapWordSize), max_size());
+   } else if (global_stats() == NULL) {
+     // Startup issue - main thread initialized before heap initialized.
+     init_sz = min_size();
+diff -Nru openjdk.orig/hotspot/src/share/vm/runtime/arguments.cpp openjdk/hotspot/src/share/vm/runtime/arguments.cpp
+--- openjdk.orig/hotspot/src/share/vm/runtime/arguments.cpp	2010-04-10 01:52:10.000000000 +0100
++++ openjdk/hotspot/src/share/vm/runtime/arguments.cpp	2010-04-10 02:28:51.000000000 +0100
+@@ -1071,7 +1071,7 @@
+     // NewSize was set on the command line and it is larger than
+     // preferred_max_new_size.
+     if (!FLAG_IS_DEFAULT(NewSize)) {   // NewSize explicitly set at command-line
+-      FLAG_SET_ERGO(uintx, MaxNewSize, MAX2(NewSize, preferred_max_new_size));
++      FLAG_SET_ERGO(uintx, MaxNewSize, MAX2((size_t) NewSize, preferred_max_new_size));
+     } else {
+       FLAG_SET_ERGO(uintx, MaxNewSize, preferred_max_new_size);
+     }
+@@ -1090,7 +1090,7 @@
+     // there was no obvious reason.  Also limit to the case where
+     // MaxNewSize has not been set.
+ 
+-    FLAG_SET_ERGO(intx, NewRatio, MAX2(NewRatio, new_ratio));
++    FLAG_SET_ERGO(intx, NewRatio, MAX2((intx) NewRatio, new_ratio));
+ 
+     // Code along this path potentially sets NewSize and OldSize
+ 
+@@ -1132,8 +1132,8 @@
+       // Unless explicitly requested otherwise, make young gen
+       // at least min_new, and at most preferred_max_new_size.
+       if (FLAG_IS_DEFAULT(NewSize)) {
+-        FLAG_SET_ERGO(uintx, NewSize, MAX2(NewSize, min_new));
+-        FLAG_SET_ERGO(uintx, NewSize, MIN2(preferred_max_new_size, NewSize));
++	FLAG_SET_ERGO(uintx, NewSize, MAX2((size_t) NewSize, min_new));
++        FLAG_SET_ERGO(uintx, NewSize, MIN2(preferred_max_new_size, (size_t) NewSize));
+         if (PrintGCDetails && Verbose) {
+           // Too early to use gclog_or_tty
+           tty->print_cr("Ergo set NewSize: " SIZE_FORMAT, NewSize);
+@@ -1144,7 +1144,7 @@
+       // later NewRatio will decide how it grows; see above.
+       if (FLAG_IS_DEFAULT(OldSize)) {
+         if (max_heap > NewSize) {
+-          FLAG_SET_ERGO(uintx, OldSize, MIN2(3*NewSize, max_heap - NewSize));
++	  FLAG_SET_ERGO(uintx, OldSize, MIN2((size_t) 3*NewSize, max_heap - (size_t) NewSize));
+           if (PrintGCDetails && Verbose) {
+             // Too early to use gclog_or_tty
+             tty->print_cr("Ergo set OldSize: " SIZE_FORMAT, OldSize);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/hotspot/hs17/systemtap.patch	Sun Apr 18 17:04:10 2010 +0100
@@ -0,0 +1,157 @@
+diff -Nru openjdk.orig/hotspot/make/linux/makefiles/dtrace.make openjdk/hotspot/make/linux/makefiles/dtrace.make
+--- openjdk.orig/hotspot/make/linux/makefiles/dtrace.make	2010-04-09 00:03:58.000000000 +0100
++++ openjdk/hotspot/make/linux/makefiles/dtrace.make	2010-04-10 02:51:08.000000000 +0100
+@@ -25,3 +25,7 @@
+ # Linux does not build jvm_db
+ LIBJVM_DB =
+ 
++# But it does have a Systemtap dtrace compatible sys/sdt.h
++CFLAGS += -DDTRACE_ENABLED
++
++# It doesn't support HAVE_DTRACE_H though.
+diff -Nru openjdk.orig/hotspot/src/share/vm/prims/jni.cpp openjdk/hotspot/src/share/vm/prims/jni.cpp
+--- openjdk.orig/hotspot/src/share/vm/prims/jni.cpp	2010-04-09 00:03:58.000000000 +0100
++++ openjdk/hotspot/src/share/vm/prims/jni.cpp	2010-04-10 02:51:08.000000000 +0100
+@@ -1753,10 +1753,7 @@
+ JNI_QUICK_ENTRY(void, jni_Set##Result##Field(JNIEnv *env, jobject obj, jfieldID fieldID, Argument value)) \
+   JNIWrapper("Set" XSTR(Result) "Field"); \
+ \
+-  HS_DTRACE_PROBE_CDECL_N(hotspot_jni, Set##Result##Field__entry, \
+-    ( JNIEnv*, jobject, jfieldID FP_SELECT_##Result(COMMA Argument,/*empty*/) ) ); \
+-  HS_DTRACE_PROBE_N(hotspot_jni, Set##Result##Field__entry, \
+-    ( env, obj, fieldID FP_SELECT_##Result(COMMA value,/*empty*/) ) ); \
++  FP_SELECT_##Result(DTRACE_PROBE4(hotspot_jni, Set##Result##Field__entry, env, obj, fieldID, value),DTRACE_PROBE3(hotspot_jni, Set##Result##Field__entry, env, obj, fieldID)); \
+ \
+   oop o = JNIHandles::resolve_non_null(obj); \
+   klassOop k = o->klass(); \
+@@ -1930,10 +1927,7 @@
+ \
+ JNI_ENTRY(void, jni_SetStatic##Result##Field(JNIEnv *env, jclass clazz, jfieldID fieldID, Argument value)) \
+   JNIWrapper("SetStatic" XSTR(Result) "Field"); \
+-  HS_DTRACE_PROBE_CDECL_N(hotspot_jni, SetStatic##Result##Field__entry,\
+-    ( JNIEnv*, jclass, jfieldID FP_SELECT_##Result(COMMA Argument,/*empty*/) ) ); \
+-  HS_DTRACE_PROBE_N(hotspot_jni, SetStatic##Result##Field__entry, \
+-    ( env, clazz, fieldID FP_SELECT_##Result(COMMA value,/*empty*/) ) ); \
++  FP_SELECT_##Result(DTRACE_PROBE4(hotspot_jni, SetStatic##Result##Field__entry, env, clazz, fieldID, value),DTRACE_PROBE3(hotspot_jni, SetStatic##Result##Field__entry, env, clazz, fieldID)); \
+ \
+   JNIid* id = jfieldIDWorkaround::from_static_jfieldID(fieldID); \
+   assert(id->is_static_field_id(), "invalid static field id"); \
+diff -Nru openjdk.orig/hotspot/src/share/vm/runtime/arguments.cpp openjdk/hotspot/src/share/vm/runtime/arguments.cpp
+--- openjdk.orig/hotspot/src/share/vm/runtime/arguments.cpp	2010-04-10 02:47:16.000000000 +0100
++++ openjdk/hotspot/src/share/vm/runtime/arguments.cpp	2010-04-10 02:53:39.000000000 +0100
+@@ -2460,16 +2460,16 @@
+       FLAG_SET_CMDLINE(bool, DisplayVMOutputToStderr, false);
+       FLAG_SET_CMDLINE(bool, DisplayVMOutputToStdout, true);
+     } else if (match_option(option, "-XX:+ExtendedDTraceProbes", &tail)) {
+-#ifdef SOLARIS
++#ifdef DTRACE_ENABLED
+       FLAG_SET_CMDLINE(bool, ExtendedDTraceProbes, true);
+       FLAG_SET_CMDLINE(bool, DTraceMethodProbes, true);
+       FLAG_SET_CMDLINE(bool, DTraceAllocProbes, true);
+       FLAG_SET_CMDLINE(bool, DTraceMonitorProbes, true);
+-#else // ndef SOLARIS
++#else // ndef DTRACE_ENABLED
+       jio_fprintf(defaultStream::error_stream(),
+-                  "ExtendedDTraceProbes flag is only applicable on Solaris\n");
++                  "ExtendedDTraceProbes flag is only applicable on dtrace enabled builds\n");
+       return JNI_EINVAL;
+-#endif // ndef SOLARIS
++#endif // ndef DTRACE_ENABLED
+ #ifdef ASSERT
+     } else if (match_option(option, "-XX:+FullGCALot", &tail)) {
+       FLAG_SET_CMDLINE(bool, FullGCALot, true);
+diff -Nru openjdk.orig/hotspot/src/share/vm/utilities/dtrace.hpp openjdk/hotspot/src/share/vm/utilities/dtrace.hpp
+--- openjdk.orig/hotspot/src/share/vm/utilities/dtrace.hpp	2010-04-09 00:03:58.000000000 +0100
++++ openjdk/hotspot/src/share/vm/utilities/dtrace.hpp	2010-04-10 02:52:51.000000000 +0100
+@@ -1,5 +1,6 @@
+ /*
+  * Copyright (c) 2005, 2007, Oracle and/or its affiliates. All rights reserved.
++ * Copyright 2009 Red Hat, Inc.
+  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+  *
+  * This code is free software; you can redistribute it and/or modify it
+@@ -22,14 +23,14 @@
+  *
+  */
+ 
+-#if defined(SOLARIS) && defined(DTRACE_ENABLED)
++#if defined(DTRACE_ENABLED)
+ 
+ #include <sys/sdt.h>
+ 
+ #define DTRACE_ONLY(x) x
+ #define NOT_DTRACE(x)
+ 
+-#else // ndef SOLARIS || ndef DTRACE_ENABLED
++#else // ndef DTRACE_ENABLED
+ 
+ #define DTRACE_ONLY(x)
+ #define NOT_DTRACE(x) x
+@@ -40,9 +41,16 @@
+ #define DTRACE_PROBE3(a,b,c,d,e) {;}
+ #define DTRACE_PROBE4(a,b,c,d,e,f) {;}
+ #define DTRACE_PROBE5(a,b,c,d,e,f,g) {;}
++#define DTRACE_PROBE6(a,b,c,d,e,f,g,h) {;}
++#define DTRACE_PROBE7(a,b,c,d,e,f,g,h,i) {;}
++#define DTRACE_PROBE8(a,b,c,d,e,f,g,h,i,j) {;}
++#define DTRACE_PROBE9(a,b,c,d,e,f,g,h,i,j,k) {;}
++#define DTRACE_PROBE10(a,b,c,d,e,f,g,h,i,j,k,l) {;}
+ 
+ #endif
+ 
++#if defined(SOLARIS)
++// Solaris dtrace needs actual extern function decls.
+ #define HS_DTRACE_PROBE_FN(provider,name)\
+   __dtrace_##provider##___##name
+ 
+@@ -50,6 +58,11 @@
+   DTRACE_ONLY(extern "C" void HS_DTRACE_PROBE_FN(provider,name) args)
+ #define HS_DTRACE_PROBE_CDECL_N(provider,name,args) \
+   DTRACE_ONLY(extern void HS_DTRACE_PROBE_FN(provider,name) args)
++#else
++// Systemtap dtrace compatible probes on GNU/Linux don't.
++#define HS_DTRACE_PROBE_DECL_N(provider,name,args)
++#define HS_DTRACE_PROBE_CDECL_N(provider,name,args)
++#endif 
+ 
+ /* Dtrace probe declarations */
+ #define HS_DTRACE_PROBE_DECL(provider,name) \
+@@ -88,6 +101,8 @@
+     uintptr_t,uintptr_t,uintptr_t))
+ 
+ /* Dtrace probe definitions */
++#if defined(SOLARIS)
++// Solaris dtrace uses actual function calls.
+ #define HS_DTRACE_PROBE_N(provider,name, args) \
+   DTRACE_ONLY(HS_DTRACE_PROBE_FN(provider,name) args)
+ 
+@@ -123,3 +138,29 @@
+   HS_DTRACE_PROBE_N(provider,name,((uintptr_t)a0,(uintptr_t)a1,(uintptr_t)a2,\
+     (uintptr_t)a3,(uintptr_t)a4,(uintptr_t)a5,(uintptr_t)a6,(uintptr_t)a7,\
+     (uintptr_t)a8,(uintptr_t)a9))
++#else
++// Systemtap dtrace compatible probes on GNU/Linux use direct macros.
++#define HS_DTRACE_PROBE(provider,name) HS_DTRACE_PROBE0(provider,name)
++#define HS_DTRACE_PROBE0(provider,name)\
++  DTRACE_PROBE(provider,name)
++#define HS_DTRACE_PROBE1(provider,name,a0)\
++  DTRACE_PROBE1(provider,name,a0)
++#define HS_DTRACE_PROBE2(provider,name,a0,a1)\
++  DTRACE_PROBE2(provider,name,a0,a1)
++#define HS_DTRACE_PROBE3(provider,name,a0,a1,a2)\
++  DTRACE_PROBE3(provider,name,a0,a1,a2)
++#define HS_DTRACE_PROBE4(provider,name,a0,a1,a2,a3)\
++  DTRACE_PROBE4(provider,name,a0,a1,a2,a3)
++#define HS_DTRACE_PROBE5(provider,name,a0,a1,a2,a3,a4)\
++  DTRACE_PROBE5(provider,name,a0,a1,a2,a3,a4)
++#define HS_DTRACE_PROBE6(provider,name,a0,a1,a2,a3,a4,a5)\
++  DTRACE_PROBE6(provider,name,a0,a1,a2,a3,a4,a5)
++#define HS_DTRACE_PROBE7(provider,name,a0,a1,a2,a3,a4,a5,a6)\
++  DTRACE_PROBE7(provider,name,a0,a1,a2,a3,a4,a5,a6)
++#define HS_DTRACE_PROBE8(provider,name,a0,a1,a2,a3,a4,a5,a6,a7)\
++  DTRACE_PROBE8(provider,name,a0,a1,a2,a3,a4,a5,a6,a7)
++#define HS_DTRACE_PROBE9(provider,name,a0,a1,a2,a3,a4,a5,a6,a7,a8)\
++  DTRACE_PROBE9(provider,name,a0,a1,a2,a3,a4,a5,a6,a7,a8)
++#define HS_DTRACE_PROBE10(provider,name,a0,a1,a2,a3,a4,a5,a6,a7,a8)\
++  DTRACE_PROBE10(provider,name,a0,a1,a2,a3,a4,a5,a6,a7,a8)
++#endif
--- a/patches/hotspot/original/6873059-javac-versioning-hotspot.patch	Sun Apr 18 17:03:04 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,245 +0,0 @@
-# HG changeset patch
-# User andrew
-# Date 1252756207 -3600
-# Node ID 0fc81f0a8ca8642c9e4b6901fa23b59c29ac81d7
-# Parent  682194ca1d8d5e705da06c5974ffcda76b0a7add
-6873059: Explicitly use -source 6 -target 6 when compiling with the boot jdk
-Summary: The build fails if the bootstrap JDK defaults to <1.5
-Reviewed-by: jcoomes
-
-diff -Nru openjdk.orig/hotspot/make/linux/makefiles/jvmti.make openjdk/hotspot/make/linux/makefiles/jvmti.make
---- openjdk.orig/hotspot/make/linux/makefiles/jvmti.make	2010-03-29 21:25:49.000000000 +0100
-+++ openjdk/hotspot/make/linux/makefiles/jvmti.make	2010-03-29 21:30:06.000000000 +0100
-@@ -70,10 +70,10 @@
- both = $(JvmtiGenClass) $(JvmtiSrcDir)/jvmti.xml $(JvmtiSrcDir)/jvmtiLib.xsl
- 
- $(JvmtiGenClass): $(JvmtiGenSource)
--	$(QUIETLY) $(REMOTE) $(COMPILE.JAVAC) -g -d $(JvmtiOutDir) $(JvmtiGenSource)
-+	$(QUIETLY) $(REMOTE) $(COMPILE.JAVAC) -d $(JvmtiOutDir) $(JvmtiGenSource)
- 
- $(JvmtiEnvFillClass): $(JvmtiEnvFillSource)
--	$(QUIETLY) $(REMOTE) $(COMPILE.JAVAC) -g -d $(JvmtiOutDir) $(JvmtiEnvFillSource)
-+	$(QUIETLY) $(REMOTE) $(COMPILE.JAVAC) -d $(JvmtiOutDir) $(JvmtiEnvFillSource)
- 
- $(JvmtiOutDir)/jvmtiEnter.cpp: $(both) $(JvmtiSrcDir)/jvmtiEnter.xsl
- 	@echo Generating $@
-diff -Nru openjdk.orig/hotspot/make/linux/makefiles/rules.make openjdk/hotspot/make/linux/makefiles/rules.make
---- openjdk.orig/hotspot/make/linux/makefiles/rules.make	2010-03-29 21:25:49.000000000 +0100
-+++ openjdk/hotspot/make/linux/makefiles/rules.make	2010-03-29 21:30:06.000000000 +0100
-@@ -122,12 +122,20 @@
- endif
- endif
- 
-+COMPILE.JAVAC += $(BOOTSTRAP_JAVAC_FLAGS)
-+
- SUM = /usr/bin/sum
- 
- # 'gmake MAKE_VERBOSE=y' gives all the gory details.
- QUIETLY$(MAKE_VERBOSE)  = @
- RUN.JAR$(MAKE_VERBOSE) += >/dev/null
- 
-+# Settings for javac
-+BOOT_SOURCE_LANGUAGE_VERSION = 6
-+BOOT_TARGET_CLASS_VERSION = 6
-+JAVAC_FLAGS = -g -encoding ascii
-+BOOTSTRAP_JAVAC_FLAGS = $(JAVAC_FLAGS) -source $(BOOT_SOURCE_LANGUAGE_VERSION) -target $(BOOT_TARGET_CLASS_VERSION)
-+
- # With parallel makes, print a message at the end of compilation.
- ifeq    ($(findstring j,$(MFLAGS)),j)
- COMPILE_DONE    = && { echo Done with $<; }
-diff -Nru openjdk.orig/hotspot/make/linux/makefiles/sa.make openjdk/hotspot/make/linux/makefiles/sa.make
---- openjdk.orig/hotspot/make/linux/makefiles/sa.make	2010-03-29 21:25:48.000000000 +0100
-+++ openjdk/hotspot/make/linux/makefiles/sa.make	2010-03-29 21:30:06.000000000 +0100
-@@ -74,8 +74,8 @@
- 	  mkdir -p $(SA_CLASSDIR);        \
- 	fi
- 
--	$(QUIETLY) $(REMOTE) $(COMPILE.JAVAC) -source 1.4 -classpath $(SA_CLASSPATH) -sourcepath $(AGENT_SRC_DIR) -g -d $(SA_CLASSDIR) $(AGENT_FILES1)
--	$(QUIETLY) $(REMOTE) $(COMPILE.JAVAC) -source 1.4 -classpath $(SA_CLASSPATH) -sourcepath $(AGENT_SRC_DIR) -g -d $(SA_CLASSDIR) $(AGENT_FILES2)
-+	$(QUIETLY) $(REMOTE) $(COMPILE.JAVAC) -source 1.4 -target 1.4 -classpath $(SA_CLASSPATH) -sourcepath $(AGENT_SRC_DIR) -d $(SA_CLASSDIR) $(AGENT_FILES1)
-+	$(QUIETLY) $(REMOTE) $(COMPILE.JAVAC) -source 1.4 -target 1.4 -classpath $(SA_CLASSPATH) -sourcepath $(AGENT_SRC_DIR) -d $(SA_CLASSDIR) $(AGENT_FILES2)
- 
- 	$(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.orig/hotspot/make/linux/makefiles/top.make openjdk/hotspot/make/linux/makefiles/top.make
---- openjdk.orig/hotspot/make/linux/makefiles/top.make	2010-03-29 21:25:49.000000000 +0100
-+++ openjdk/hotspot/make/linux/makefiles/top.make	2010-03-29 21:30:06.000000000 +0100
-@@ -24,7 +24,7 @@
- 
- # top.make is included in the Makefile in the build directories.
- # It DOES NOT include the vm dependency info in order to be faster.
--# It's main job is to implement the incremental form of make lists.
-+# Its main job is to implement the incremental form of make lists.
- # It also:
- #   -builds and runs adlc via adlc.make
- #   -generates JVMTI source and docs via jvmti.make (JSR-163)
-@@ -116,7 +116,7 @@
- # make makeDeps: (and zap the cached db files to force a nonincremental run)
- 
- $(GENERATED)/$(MakeDepsClass): $(MakeDepsSources)
--	@$(REMOTE) $(COMPILE.JAVAC) -classpath $(GAMMADIR)/src/share/tools/MakeDeps -g -d $(GENERATED) $(MakeDepsSources)
-+	@$(REMOTE) $(COMPILE.JAVAC) -classpath $(GAMMADIR)/src/share/tools/MakeDeps -d $(GENERATED) $(MakeDepsSources)
- 	@echo Removing $(Incremental_Lists) to force regeneration.
- 	@rm -f $(Incremental_Lists)
- 	@$(CDG) echo >$(Cached_plat)
-diff -Nru openjdk.orig/hotspot/make/solaris/makefiles/jvmti.make openjdk/hotspot/make/solaris/makefiles/jvmti.make
---- openjdk.orig/hotspot/make/solaris/makefiles/jvmti.make	2010-02-17 03:11:04.000000000 +0000
-+++ openjdk/hotspot/make/solaris/makefiles/jvmti.make	2010-03-29 21:30:06.000000000 +0100
-@@ -69,10 +69,10 @@
- both = $(JvmtiGenClass) $(JvmtiSrcDir)/jvmti.xml $(JvmtiSrcDir)/jvmtiLib.xsl
- 
- $(JvmtiGenClass): $(JvmtiGenSource)
--	$(QUIETLY) $(COMPILE.JAVAC) -g -d $(JvmtiOutDir) $(JvmtiGenSource)
-+	$(QUIETLY) $(COMPILE.JAVAC) -d $(JvmtiOutDir) $(JvmtiGenSource)
- 
- $(JvmtiEnvFillClass): $(JvmtiEnvFillSource)
--	$(QUIETLY) $(COMPILE.JAVAC) -g -d $(JvmtiOutDir) $(JvmtiEnvFillSource)
-+	$(QUIETLY) $(COMPILE.JAVAC) -d $(JvmtiOutDir) $(JvmtiEnvFillSource)
- 
- $(JvmtiOutDir)/jvmtiEnter.cpp: $(both) $(JvmtiSrcDir)/jvmtiEnter.xsl
- 	@echo Generating $@
-diff -Nru openjdk.orig/hotspot/make/solaris/makefiles/rules.make openjdk/hotspot/make/solaris/makefiles/rules.make
---- openjdk.orig/hotspot/make/solaris/makefiles/rules.make	2010-03-29 21:25:49.000000000 +0100
-+++ openjdk/hotspot/make/solaris/makefiles/rules.make	2010-03-29 21:30:06.000000000 +0100
-@@ -122,12 +122,20 @@
- endif
- endif
- 
-+COMPILE.JAVAC += $(BOOTSTRAP_JAVAC_FLAGS)
-+
- SUM = /usr/bin/sum
- 
- # 'gmake MAKE_VERBOSE=y' gives all the gory details.
- QUIETLY$(MAKE_VERBOSE)  = @
- RUN.JAR$(MAKE_VERBOSE) += >/dev/null
- 
-+# Settings for javac
-+BOOT_SOURCE_LANGUAGE_VERSION = 6
-+BOOT_TARGET_CLASS_VERSION = 6
-+JAVAC_FLAGS = -g -encoding ascii
-+BOOTSTRAP_JAVAC_FLAGS = $(JAVAC_FLAGS) -source $(BOOT_SOURCE_LANGUAGE_VERSION) -target $(BOOT_TARGET_CLASS_VERSION)
-+
- # With parallel makes, print a message at the end of compilation.
- ifeq    ($(findstring j,$(MFLAGS)),j)
- COMPILE_DONE    = && { echo Done with $<; }
-diff -Nru openjdk.orig/hotspot/make/solaris/makefiles/sa.make openjdk/hotspot/make/solaris/makefiles/sa.make
---- openjdk.orig/hotspot/make/solaris/makefiles/sa.make	2010-02-17 03:11:04.000000000 +0000
-+++ openjdk/hotspot/make/solaris/makefiles/sa.make	2010-03-29 21:30:06.000000000 +0100
-@@ -67,8 +67,8 @@
- 	$(QUIETLY) if [ ! -d $(SA_CLASSDIR) ] ; then \
- 	  mkdir -p $(SA_CLASSDIR);        \
- 	fi
--	$(QUIETLY) $(COMPILE.JAVAC) -source 1.4 -classpath $(SA_CLASSPATH) -sourcepath $(AGENT_SRC_DIR) -g -d $(SA_CLASSDIR) $(AGENT_FILES1)
--	$(QUIETLY) $(COMPILE.JAVAC) -source 1.4 -classpath $(SA_CLASSPATH) -sourcepath $(AGENT_SRC_DIR) -g -d $(SA_CLASSDIR) $(AGENT_FILES2)
-+	$(QUIETLY) $(COMPILE.JAVAC) -source 1.4 -target 1.4 -classpath $(SA_CLASSPATH) -sourcepath $(AGENT_SRC_DIR) -d $(SA_CLASSDIR) $(AGENT_FILES1)
-+	$(QUIETLY) $(COMPILE.JAVAC) -source 1.4 -target 1.4 -classpath $(SA_CLASSPATH) -sourcepath $(AGENT_SRC_DIR) -d $(SA_CLASSDIR) $(AGENT_FILES2)
- 	
- 	$(QUIETLY) $(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.orig/hotspot/make/solaris/makefiles/top.make openjdk/hotspot/make/solaris/makefiles/top.make
---- openjdk.orig/hotspot/make/solaris/makefiles/top.make	2010-02-17 03:11:04.000000000 +0000
-+++ openjdk/hotspot/make/solaris/makefiles/top.make	2010-03-29 21:30:06.000000000 +0100
-@@ -24,7 +24,7 @@
- 
- # top.make is included in the Makefile in the build directories.
- # It DOES NOT include the vm dependency info in order to be faster.
--# It's main job is to implement the incremental form of make lists.
-+# Its main job is to implement the incremental form of make lists.
- # It also:
- #   -builds and runs adlc via adlc.make
- #   -generates JVMTI source and docs via jvmti.make (JSR-163)
-@@ -112,7 +112,7 @@
- # make makeDeps: (and zap the cached db files to force a nonincremental run)
- 
- $(GENERATED)/$(MakeDepsClass): $(MakeDepsSources)
--	@$(COMPILE.JAVAC) -classpath $(GAMMADIR)/src/share/tools/MakeDeps -g -d $(GENERATED) $(MakeDepsSources)
-+	@$(COMPILE.JAVAC) -classpath $(GAMMADIR)/src/share/tools/MakeDeps -d $(GENERATED) $(MakeDepsSources)
- 	@echo Removing $(Incremental_Lists) to force regeneration.
- 	@rm -f $(Incremental_Lists)
- 	@$(CDG) echo >$(Cached_plat)
-diff -Nru openjdk.orig/hotspot/make/windows/makefiles/generated.make openjdk/hotspot/make/windows/makefiles/generated.make
---- openjdk.orig/hotspot/make/windows/makefiles/generated.make	2010-02-17 03:11:04.000000000 +0000
-+++ openjdk/hotspot/make/windows/makefiles/generated.make	2010-03-29 21:30:06.000000000 +0100
-@@ -91,7 +91,7 @@
- classes/MakeDeps.class: $(MakeDepsSources)
- 	if exist classes rmdir /s /q classes
- 	mkdir classes
--	$(COMPILE_JAVAC) -classpath $(WorkSpace)\src\share\tools\MakeDeps -g -d classes $(MakeDepsSources)
-+	$(COMPILE_JAVAC) -classpath $(WorkSpace)\src\share\tools\MakeDeps -d classes $(MakeDepsSources)
- 
- !if ("$(Variant)" == "compiler2") || ("$(Variant)" == "tiered")
- 
-diff -Nru openjdk.orig/hotspot/make/windows/makefiles/jvmti.make openjdk/hotspot/make/windows/makefiles/jvmti.make
---- openjdk.orig/hotspot/make/windows/makefiles/jvmti.make	2010-02-17 03:11:04.000000000 +0000
-+++ openjdk/hotspot/make/windows/makefiles/jvmti.make	2010-03-29 21:30:06.000000000 +0100
-@@ -68,10 +68,10 @@
-         @if not exist $(JvmtiOutDir) mkdir $(JvmtiOutDir)
- 
- $(JvmtiGenClass): $(JvmtiGenSource)
--	$(COMPILE_JAVAC) -g -d $(JvmtiOutDir) $(JvmtiGenSource)
-+	$(COMPILE_JAVAC) -d $(JvmtiOutDir) $(JvmtiGenSource)
- 
- $(JvmtiEnvFillClass): $(JvmtiEnvFillSource)
--	@$(COMPILE_JAVAC) -g -d $(JvmtiOutDir) $(JvmtiEnvFillSource)
-+	@$(COMPILE_JAVAC) -d $(JvmtiOutDir) $(JvmtiEnvFillSource)
- 
- $(JvmtiOutDir)/jvmtiEnter.cpp: $(both) $(JvmtiSrcDir)/jvmtiEnter.xsl
- 	@echo Generating $@
-diff -Nru openjdk.orig/hotspot/make/windows/makefiles/rules.make openjdk/hotspot/make/windows/makefiles/rules.make
---- openjdk.orig/hotspot/make/windows/makefiles/rules.make	2010-02-17 03:11:04.000000000 +0000
-+++ openjdk/hotspot/make/windows/makefiles/rules.make	2010-03-29 21:30:42.000000000 +0100
-@@ -29,7 +29,7 @@
- RUN_JAVAP=$(BootStrapDir)\bin\javap
- RUN_JAVAH=$(BootStrapDir)\bin\javah
- RUN_JAR=$(BootStrapDir)\bin\jar
--COMPILE_JAVAC=$(BootStrapDir)\bin\javac
-+COMPILE_JAVAC=$(BootStrapDir)\bin\javac $(BOOTSTRAP_JAVAC_FLAGS)
- COMPILE_RMIC=$(BootStrapDir)\bin\rmic
- BOOT_JAVA_HOME=$(BootStrapDir)
- !else
-@@ -37,11 +37,17 @@
- RUN_JAVAP=javap
- RUN_JAVAH=javah
- RUN_JAR=jar
--COMPILE_JAVAC=javac
-+COMPILE_JAVAC=javac $(BOOTSTRAP_JAVAC_FLAGS)
- COMPILE_RMIC=rmic
- BOOT_JAVA_HOME=
- !endif
- 
-+# Settings for javac
-+BOOT_SOURCE_LANGUAGE_VERSION=6
-+BOOT_TARGET_CLASS_VERSION=6
-+JAVAC_FLAGS=-g -encoding ascii
-+BOOTSTRAP_JAVAC_FLAGS=$(JAVAC_FLAGS) -source $(BOOT_SOURCE_LANGUAGE_VERSION) -target $(BOOT_TARGET_CLASS_VERSION)
-+
- !if "$(MSC_VER)" == "1200"
- VcVersion=VC6
- ProjectFile=vm.dsp
-diff -Nru openjdk.orig/hotspot/make/windows/makefiles/sa.make openjdk/hotspot/make/windows/makefiles/sa.make
---- openjdk.orig/hotspot/make/windows/makefiles/sa.make	2010-02-17 03:11:04.000000000 +0000
-+++ openjdk/hotspot/make/windows/makefiles/sa.make	2010-03-29 21:30:06.000000000 +0100
-@@ -55,9 +55,9 @@
- $(GENERATED)\sa-jdi.jar: $(AGENT_FILES1:/=\) $(AGENT_FILES2:/=\)
- 	@if not exist $(SA_CLASSDIR) mkdir $(SA_CLASSDIR)
- 	@echo ...Building sa-jdi.jar
--	@echo ...$(COMPILE_JAVAC) -source 1.4 -classpath $(SA_CLASSPATH) -g -d $(SA_CLASSDIR) ....
--	@$(COMPILE_JAVAC) -source 1.4 -classpath $(SA_CLASSPATH) -sourcepath $(AGENT_SRC_DIR) -g -d $(SA_CLASSDIR) $(AGENT_FILES1:/=\)
--	@$(COMPILE_JAVAC) -source 1.4 -classpath $(SA_CLASSPATH) -sourcepath $(AGENT_SRC_DIR) -g -d $(SA_CLASSDIR) $(AGENT_FILES2:/=\)
-+	@echo ...$(COMPILE_JAVAC) -source 1.4 -target 1.4 -classpath $(SA_CLASSPATH) -d $(SA_CLASSDIR) ....
-+	@$(COMPILE_JAVAC) -source 1.4 -target 1.4 -classpath $(SA_CLASSPATH) -sourcepath $(AGENT_SRC_DIR) -d $(SA_CLASSDIR) $(AGENT_FILES1:/=\)
-+	@$(COMPILE_JAVAC) -source 1.4 -target 1.4 -classpath $(SA_CLASSPATH) -sourcepath $(AGENT_SRC_DIR) -d $(SA_CLASSDIR) $(AGENT_FILES2:/=\)
- 	$(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.orig/hotspot/make/windows/projectfiles/common/Makefile openjdk/hotspot/make/windows/projectfiles/common/Makefile
---- openjdk.orig/hotspot/make/windows/projectfiles/common/Makefile	2010-02-17 03:11:04.000000000 +0000
-+++ openjdk/hotspot/make/windows/projectfiles/common/Makefile	2010-03-29 21:30:06.000000000 +0100
-@@ -179,6 +179,6 @@
- $(HOTSPOTBUILDSPACE)/classes/MakeDeps.class: $(MakeDepsSources)
- 	@if exist $(HOTSPOTBUILDSPACE)\classes rmdir /s /q $(HOTSPOTBUILDSPACE)\classes
- 	@mkdir $(HOTSPOTBUILDSPACE)\classes
--	@$(COMPILE_JAVAC) -classpath $(HOTSPOTWORKSPACE)\src\share\tools\MakeDeps -g -d $(HOTSPOTBUILDSPACE)/classes $(MakeDepsSources)
-+	@$(COMPILE_JAVAC) -classpath $(HOTSPOTWORKSPACE)\src\share\tools\MakeDeps -d $(HOTSPOTBUILDSPACE)/classes $(MakeDepsSources)
- 
- FORCE:
--- a/patches/hotspot/original/icedtea-6778657-f2i-overflow.patch	Sun Apr 18 17:03:04 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,96 +0,0 @@
-diff -r dcb49b482348 -r f63a8dee04ae openjdk/hotspot/src/share/vm/runtime/sharedRuntime.cpp
---- openjdk/hotspot/src/share/vm/runtime/sharedRuntime.cpp	Mon Nov 03 14:00:57 2008 +0000
-+++ openjdk/hotspot/src/share/vm/runtime/sharedRuntime.cpp	Mon Nov 03 15:56:17 2008 +0000
-@@ -173,64 +173,46 @@ JRT_END
- 
- 
- JRT_LEAF(jint, SharedRuntime::f2i(jfloat  x))
--  if (g_isnan(x)) {return 0;}
--  jlong lltmp = (jlong)x;
--  jint ltmp   = (jint)lltmp;
--  if (ltmp == lltmp) {
--    return ltmp;
--  } else {
--    if (x < 0) {
--      return min_jint;
--    } else {
--      return max_jint;
--    }
--  }
-+  if (g_isnan(x))
-+    return 0;
-+  if (x >= (jfloat) max_jint)
-+    return max_jint;
-+  if (x <= (jfloat) min_jint)
-+    return min_jint;
-+  return (jint) x;
- JRT_END
- 
- 
- JRT_LEAF(jlong, SharedRuntime::f2l(jfloat  x))  
--  if (g_isnan(x)) {return 0;}
--  jlong lltmp = (jlong)x;
--  if (lltmp != min_jlong) {
--    return lltmp;
--  } else {
--    if (x < 0) {
--      return min_jlong;
--    } else {
--      return max_jlong;
--    }
--  }
-+  if (g_isnan(x))
-+    return 0;
-+  if (x >= (jfloat) max_jlong)
-+    return max_jlong;
-+  if (x <= (jfloat) min_jlong)
-+    return min_jlong;
-+  return (jlong) x;
- JRT_END
- 
- 
- JRT_LEAF(jint, SharedRuntime::d2i(jdouble x))
--  if (g_isnan(x)) {return 0;}
--  jlong lltmp = (jlong)x;
--  jint ltmp   = (jint)lltmp;
--  if (ltmp == lltmp) {
--    return ltmp;
--  } else {
--    if (x < 0) {
--      return min_jint;
--    } else {
--      return max_jint;
--    }
--  }
-+  if (g_isnan(x))
-+    return 0;
-+  if (x >= (jdouble) max_jint)
-+    return max_jint;
-+  if (x <= (jdouble) min_jint)
-+    return min_jint;
-+  return (jint) x;
- JRT_END
- 
- 
- JRT_LEAF(jlong, SharedRuntime::d2l(jdouble x))
--  if (g_isnan(x)) {return 0;}
--  jlong lltmp = (jlong)x;
--  if (lltmp != min_jlong) {
--    return lltmp;
--  } else {
--    if (x < 0) {
--      return min_jlong;
--    } else {
--      return max_jlong;
--    }
--  }
-+  if (g_isnan(x))
-+    return 0;
-+  if (x >= (jdouble) max_jlong)
-+    return max_jlong;
-+  if (x <= (jdouble) min_jlong)
-+    return min_jlong;
-+  return (jlong) x;
- JRT_END
- 
- 
--- a/patches/hotspot/original/icedtea-6778662-lib64.patch	Sun Apr 18 17:03:04 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,16 +0,0 @@
---- origopenjdk/hotspot/src/os/linux/vm/os_linux.cpp	2008-01-04 18:11:53.000000000 -0500
-+++ openjdk/hotspot/src/os/linux/vm/os_linux.cpp	2008-04-21 14:00:59.000000000 -0400
-@@ -265,7 +265,12 @@
-  *	  ...
-  *	  7: The default directories, normally /lib and /usr/lib.
-  */
--#define DEFAULT_LIBPATH	"/lib:/usr/lib"
-+
-+#if defined(AMD64) || defined(_LP64) && (defined(PPC) || defined(S390))
-+#define DEFAULT_LIBPATH "/usr/lib64:/lib64:/lib:/usr/lib"
-+#else
-+#define DEFAULT_LIBPATH	"/lib:/usr/lib"
-+#endif
- 
- #define EXTENSIONS_DIR	"/lib/ext"
- #define ENDORSED_DIR	"/lib/endorsed"
--- a/patches/hotspot/original/icedtea-6791168.patch	Sun Apr 18 17:03:04 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,230 +0,0 @@
---- openjdk/hotspot/src/cpu/x86/vm/cppInterpreter_x86.cpp.orig	2009-01-13 10:15:42.000000000 +0000
-+++ openjdk/hotspot/src/cpu/x86/vm/cppInterpreter_x86.cpp	2009-01-13 10:17:05.000000000 +0000
-@@ -594,7 +594,7 @@
-   __ call_VM(noreg, CAST_FROM_FN_PTR(address, InterpreterRuntime::frequency_counter_overflow), rax);
- 
-   // for c++ interpreter can rsi really be munged?
--  __ lea(state, Address(rbp, -sizeof(BytecodeInterpreter)));                               // restore state
-+  __ lea(state, Address(rbp, -(int)sizeof(BytecodeInterpreter)));                               // restore state
-   __ movptr(rbx, Address(state, byte_offset_of(BytecodeInterpreter, _method)));            // restore method
-   __ movptr(rdi, Address(state, byte_offset_of(BytecodeInterpreter, _locals)));            // get locals pointer
- 
-@@ -658,7 +658,7 @@
-     const Address size_of_stack    (rbx, methodOopDesc::max_stack_offset());
-     // Always give one monitor to allow us to start interp if sync method.
-     // Any additional monitors need a check when moving the expression stack
--    const one_monitor = frame::interpreter_frame_monitor_size() * wordSize;
-+    const int one_monitor = frame::interpreter_frame_monitor_size() * wordSize;
-   __ load_unsigned_word(rax, size_of_stack);                            // get size of expression stack in words
-   __ lea(rax, Address(noreg, rax, Interpreter::stackElementScale(), one_monitor));
-   __ lea(rax, Address(rax, rdx, Interpreter::stackElementScale(), overhead_size));
-@@ -1829,7 +1829,7 @@
-   Label unwind_and_forward;
- 
-   // restore state pointer.
--  __ lea(state, Address(rbp,  -sizeof(BytecodeInterpreter)));
-+  __ lea(state, Address(rbp,  -(int)sizeof(BytecodeInterpreter)));
- 
-   __ movptr(rbx, STATE(_method));                       // get method
- #ifdef _LP64
-@@ -1877,14 +1877,14 @@
- 
-   // The FPU stack is clean if UseSSE >= 2 but must be cleaned in other cases
-   if (UseSSE < 2) {
--    __ lea(state, Address(rbp,  -sizeof(BytecodeInterpreter)));
-+    __ lea(state, Address(rbp,  -(int)sizeof(BytecodeInterpreter)));
-     __ movptr(rbx, STATE(_result._to_call._callee));                   // get method just executed
-     __ movl(rcx, Address(rbx, methodOopDesc::result_index_offset()));
-     __ cmpl(rcx, AbstractInterpreter::BasicType_as_index(T_FLOAT));    // Result stub address array index
-     __ jcc(Assembler::equal, do_float);
-     __ cmpl(rcx, AbstractInterpreter::BasicType_as_index(T_DOUBLE));    // Result stub address array index
-     __ jcc(Assembler::equal, do_double);
--#ifdef COMPILER2
-+#if !defined(_LP64) || defined(COMPILER1) || !defined(COMPILER2)
-     __ empty_FPU_stack();
- #endif // COMPILER2
-     __ jmp(done_conv);
-@@ -1928,7 +1928,7 @@
- 
-   // Restore rsi/r13 as compiled code may not preserve it
- 
--  __ lea(state, Address(rbp,  -sizeof(BytecodeInterpreter)));
-+  __ lea(state, Address(rbp,  -(int)sizeof(BytecodeInterpreter)));
- 
-   // restore stack to what we had when we left (in case i2c extended it)
- 
-@@ -1942,7 +1942,7 @@
- #else
-   __ movptr(rcx, STATE(_thread));                       // get thread
-   __ cmpptr(Address(rcx, Thread::pending_exception_offset()), (int32_t)NULL_WORD);
--#endif / __LP64
-+#endif // _LP64
-   __ jcc(Assembler::notZero, return_with_exception);
- 
-   // get method just executed
---- openjdk/hotspot/src/cpu/x86/vm/frame_x86.inline.hpp.orig	2009-01-13 10:15:42.000000000 +0000
-+++ openjdk/hotspot/src/cpu/x86/vm/frame_x86.inline.hpp	2009-01-13 10:17:05.000000000 +0000
-@@ -139,7 +139,7 @@
- #ifdef CC_INTERP
- 
- inline interpreterState frame::get_interpreterState() const {
--  return ((interpreterState)addr_at( -sizeof(BytecodeInterpreter)/wordSize ));
-+  return ((interpreterState)addr_at( -((int)sizeof(BytecodeInterpreter))/wordSize ));
- }
- 
- inline intptr_t*    frame::sender_sp()        const {
---- openjdk/hotspot/src/cpu/x86/vm/assembler_x86.cpp.orig	2009-01-13 10:15:42.000000000 +0000
-+++ openjdk/hotspot/src/cpu/x86/vm/assembler_x86.cpp	2009-01-13 10:17:05.000000000 +0000
-@@ -6943,29 +6943,32 @@
- 
-   Label slow_case, done;
- 
--  // x ?<= pi/4
--  fld_d(ExternalAddress((address)&pi_4));
--  fld_s(1);                // Stack:  X  PI/4  X
--  fabs();                  // Stack: |X| PI/4  X
--  fcmp(tmp);
--  jcc(Assembler::above, slow_case);
--
--  // fastest case: -pi/4 <= x <= pi/4
--  switch(trig) {
--  case 's':
--    fsin();
--    break;
--  case 'c':
--    fcos();
--    break;
--  case 't':
--    ftan();
--    break;
--  default:
--    assert(false, "bad intrinsic");
--    break;
-+  ExternalAddress pi4_adr = (address)&pi_4;
-+  if (reachable(pi4_adr)) {
-+    // x ?<= pi/4
-+    fld_d(pi4_adr); // ExternalAddress((address)&pi_4));
-+    fld_s(1);                // Stack:  X  PI/4  X
-+    fabs();                  // Stack: |X| PI/4  X
-+    fcmp(tmp);
-+    jcc(Assembler::above, slow_case);
-+
-+    // fastest case: -pi/4 <= x <= pi/4
-+    switch(trig) {
-+    case 's':
-+      fsin();
-+      break;
-+    case 'c':
-+      fcos();
-+      break;
-+    case 't':
-+      ftan();
-+      break;
-+    default:
-+      assert(false, "bad intrinsic");
-+      break;
-+    }
-+    jmp(done);
-   }
--  jmp(done);
- 
-   // slow case: runtime call
-   bind(slow_case);
---- openjdk/hotspot/src/cpu/x86/vm/sharedRuntime_x86_64.cpp.orig	2009-01-13 10:15:42.000000000 +0000
-+++ openjdk/hotspot/src/cpu/x86/vm/sharedRuntime_x86_64.cpp	2009-01-13 10:17:05.000000000 +0000
-@@ -2954,10 +2954,16 @@
-   __ pushptr(Address(rcx, 0));     // Save return address
-   __ enter();                      // Save old & set new rbp
-   __ subptr(rsp, rbx);             // Prolog
-+#ifdef CC_INTERP
-+  __ movptr(Address(rbp,
-+                  -(sizeof(BytecodeInterpreter)) + in_bytes(byte_offset_of(BytecodeInterpreter, _sender_sp))),
-+            sender_sp); // Make it walkable
-+#else // CC_INTERP
-   __ movptr(Address(rbp, frame::interpreter_frame_sender_sp_offset * wordSize),
-             sender_sp);            // Make it walkable
-   // This value is corrected by layout_activation_impl
-   __ movptr(Address(rbp, frame::interpreter_frame_last_sp_offset * wordSize), (int32_t)NULL_WORD );
-+#endif // CC_INTERP
-   __ mov(sender_sp, rsp);          // Pass sender_sp to next frame
-   __ addptr(rsi, wordSize);        // Bump array pointer (sizes)
-   __ addptr(rcx, wordSize);        // Bump array pointer (pcs)
---- openjdk/hotspot/src/cpu/x86/vm/bytecodeInterpreter_x86.inline.hpp.orig	2009-01-13 10:15:42.000000000 +0000
-+++ openjdk/hotspot/src/cpu/x86/vm/bytecodeInterpreter_x86.inline.hpp	2009-01-13 10:17:05.000000000 +0000
-@@ -213,7 +213,7 @@
- 
- inline jint BytecodeInterpreter::VMintDiv(jint op1, jint op2) {
-   /* it's possible we could catch this special case implicitly */
--  if (op1 == 0x80000000 && op2 == -1) return op1;
-+  if ((juint)op1 == 0x80000000 && op2 == -1) return op1;
-   else return op1 / op2;
- }
- 
-@@ -231,7 +231,7 @@
- 
- inline jint BytecodeInterpreter::VMintRem(jint op1, jint op2) {
-   /* it's possible we could catch this special case implicitly */
--  if (op1 == 0x80000000 && op2 == -1) return 0;
-+  if ((juint)op1 == 0x80000000 && op2 == -1) return 0;
-   else return op1 % op2;
- }
- 
---- openjdk/hotspot/src/cpu/x86/vm/interp_masm_x86_64.cpp.orig	2009-01-13 10:15:42.000000000 +0000
-+++ openjdk/hotspot/src/cpu/x86/vm/interp_masm_x86_64.cpp	2009-01-13 10:17:05.000000000 +0000
-@@ -30,7 +30,7 @@
- 
- #ifdef CC_INTERP
- void InterpreterMacroAssembler::get_method(Register reg) {
--  movptr(reg, Address(rbp, -(sizeof(BytecodeInterpreter) + 2 * wordSize)));
-+  movptr(reg, Address(rbp, -((int)sizeof(BytecodeInterpreter) + 2 * wordSize)));
-   movptr(reg, Address(reg, byte_offset_of(BytecodeInterpreter, _method)));
- }
- #endif // CC_INTERP
---- openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp.orig	2009-01-13 10:16:45.000000000 +0000
-+++ openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp	2009-01-13 10:17:05.000000000 +0000
-@@ -163,7 +163,7 @@
- #ifdef USELABELS
- // Have to do this dispatch this way in C++ because otherwise gcc complains about crossing an
- // initialization (which is is the initialization of the table pointer...)
--#define DISPATCH(opcode) goto *dispatch_table[opcode]
-+#define DISPATCH(opcode) goto *(void*)dispatch_table[opcode]
- #define CONTINUE {                              \
-         opcode = *pc;                           \
-         DO_UPDATE_INSTRUCTION_COUNT(opcode);    \
-@@ -341,7 +341,7 @@
-  */
- #undef CHECK_NULL
- #define CHECK_NULL(obj_)                                                 \
--    if ((obj_) == 0) {                                                   \
-+    if ((obj_) == NULL) {                                                \
-         VM_JAVA_ERROR(vmSymbols::java_lang_NullPointerException(), "");  \
-     }
- 
-@@ -1362,7 +1362,7 @@
- 
- #define NULL_COMPARISON_NOT_OP(name)                                         \
-       CASE(_if##name): {                                                     \
--          int skip = (!(STACK_OBJECT(-1) == 0))                              \
-+          int skip = (!(STACK_OBJECT(-1) == NULL))                           \
-                       ? (int16_t)Bytes::get_Java_u2(pc + 1) : 3;             \
-           address branch_pc = pc;                                            \
-           UPDATE_PC_AND_TOS(skip, -1);                                       \
-@@ -1372,7 +1372,7 @@
- 
- #define NULL_COMPARISON_OP(name)                                             \
-       CASE(_if##name): {                                                     \
--          int skip = ((STACK_OBJECT(-1) == 0))                               \
-+          int skip = ((STACK_OBJECT(-1) == NULL))                            \
-                       ? (int16_t)Bytes::get_Java_u2(pc + 1) : 3;             \
-           address branch_pc = pc;                                            \
-           UPDATE_PC_AND_TOS(skip, -1);                                       \
---- openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.hpp.orig	2009-01-13 10:15:42.000000000 +0000
-+++ openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.hpp	2009-01-13 10:17:05.000000000 +0000
-@@ -66,7 +66,6 @@
- friend class InterpreterGenerator;
- friend class InterpreterMacroAssembler;
- friend class frame;
--friend class SharedRuntime;
- friend class VMStructs;
- 
- public:
--- a/patches/hotspot/original/icedtea-6793825-includedb.patch	Sun Apr 18 17:03:04 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,107 +0,0 @@
---- openjdk/hotspot/src/share/vm/includeDB_compiler2.orig	2009-01-13 10:10:44.000000000 +0000
-+++ openjdk/hotspot/src/share/vm/includeDB_compiler2	2009-01-13 10:11:17.000000000 +0000
-@@ -140,6 +140,7 @@
- c2_globals_<os_family>.hpp              macros.hpp
- 
- c2_init_<arch>.cpp                      compile.hpp
-+c2_init_<arch>.cpp                      node.hpp
- 
- c2compiler.cpp                          ad_<arch_model>.hpp
- c2compiler.cpp                          c2compiler.hpp
-@@ -839,6 +840,7 @@
- phase.cpp                               compile.hpp
- phase.cpp                               compileBroker.hpp
- phase.cpp                               nmethod.hpp
-+phase.cpp                               node.hpp
- phase.cpp                               phase.hpp
- 
- phase.hpp                               port.hpp
---- openjdk/hotspot/src/share/vm/gc_implementation/includeDB_gc_g1.orig	2009-01-13 10:10:44.000000000 +0000
-+++ openjdk/hotspot/src/share/vm/gc_implementation/includeDB_gc_g1	2009-01-13 10:11:17.000000000 +0000
-@@ -34,6 +34,7 @@
- collectionSetChooser.cpp		g1CollectedHeap.hpp
- collectionSetChooser.cpp		g1CollectorPolicy.hpp
- collectionSetChooser.cpp		collectionSetChooser.hpp
-+collectionSetChooser.cpp		space.inline.hpp
- 
- collectionSetChooser.hpp		heapRegion.hpp
- collectionSetChooser.hpp                growableArray.hpp
-@@ -44,6 +45,7 @@
- concurrentG1Refine.cpp			copy.hpp
- concurrentG1Refine.cpp			g1CollectedHeap.hpp
- concurrentG1Refine.cpp			g1RemSet.hpp
-+concurrentG1Refine.cpp			space.inline.hpp
- 
- concurrentG1Refine.hpp			globalDefinitions.hpp
- 
-@@ -264,7 +266,7 @@
- heapRegion.cpp                          iterator.hpp
- heapRegion.cpp                          oop.inline.hpp
- 
--heapRegion.hpp                          space.hpp
-+heapRegion.hpp                          space.inline.hpp
- heapRegion.hpp                          spaceDecorator.hpp
- heapRegion.hpp                          g1BlockOffsetTable.inline.hpp
- heapRegion.hpp                          watermark.hpp
---- openjdk/hotspot/src/share/vm/gc_implementation/includeDB_gc_parallelScavenge.orig	2009-01-13 10:10:44.000000000 +0000
-+++ openjdk/hotspot/src/share/vm/gc_implementation/includeDB_gc_parallelScavenge	2009-01-13 10:11:17.000000000 +0000
-@@ -306,6 +306,8 @@
- psPermGen.cpp                           psMarkSweepDecorator.hpp
- psPermGen.cpp                           psParallelCompact.hpp
- psPermGen.cpp                           psPermGen.hpp
-+psPermGen.cpp                           markOop.inline.hpp
-+psPermGen.cpp                           markSweep.inline.hpp
- 
- psPermGen.hpp                           psOldGen.hpp
- 
---- openjdk/hotspot/src/share/vm/gc_implementation/includeDB_gc_concurrentMarkSweep.orig	2009-01-13 10:10:44.000000000 +0000
-+++ openjdk/hotspot/src/share/vm/gc_implementation/includeDB_gc_concurrentMarkSweep	2009-01-13 10:11:17.000000000 +0000
-@@ -28,6 +28,7 @@
- binaryTreeDictionary.cpp                binaryTreeDictionary.hpp
- binaryTreeDictionary.cpp                globals.hpp
- binaryTreeDictionary.cpp                ostream.hpp
-+binaryTreeDictionary.cpp                space.inline.hpp
- binaryTreeDictionary.cpp                spaceDecorator.hpp
- 
- binaryTreeDictionary.hpp                freeBlockDictionary.hpp
---- openjdk/hotspot/src/share/vm/gc_implementation/includeDB_gc_parNew.orig	2009-01-13 10:10:44.000000000 +0000
-+++ openjdk/hotspot/src/share/vm/gc_implementation/includeDB_gc_parNew	2009-01-13 10:11:17.000000000 +0000
-@@ -29,6 +29,8 @@
- asParNewGeneration.cpp                  cmsAdaptiveSizePolicy.hpp
- asParNewGeneration.cpp                  cmsGCAdaptivePolicyCounters.hpp
- asParNewGeneration.cpp                  defNewGeneration.inline.hpp
-+asParNewGeneration.cpp                  markOop.inline.hpp
-+asParNewGeneration.cpp                  markSweep.inline.hpp
- asParNewGeneration.cpp                  oop.pcgc.inline.hpp
- asParNewGeneration.cpp                  parNewGeneration.hpp
- asParNewGeneration.cpp                  referencePolicy.hpp
-@@ -40,7 +42,7 @@
- parCardTableModRefBS.cpp                java.hpp
- parCardTableModRefBS.cpp                mutexLocker.hpp
- parCardTableModRefBS.cpp                sharedHeap.hpp
--parCardTableModRefBS.cpp                space.hpp
-+parCardTableModRefBS.cpp                space.inline.hpp
- parCardTableModRefBS.cpp                universe.hpp
- parCardTableModRefBS.cpp                virtualspace.hpp
- 
---- openjdk/hotspot/src/share/vm/includeDB_features.orig	2009-01-13 10:10:44.000000000 +0000
-+++ openjdk/hotspot/src/share/vm/includeDB_features	2009-01-13 10:11:17.000000000 +0000
-@@ -59,6 +59,8 @@
- 
- dump_<arch_model>.cpp                   assembler_<arch>.inline.hpp
- dump_<arch_model>.cpp                   compactingPermGenGen.hpp
-+dump_<arch_model>.cpp                   generation.inline.hpp
-+dump_<arch_model>.cpp                   space.inline.hpp
- 
- forte.cpp                               collectedHeap.inline.hpp
- forte.cpp                               debugInfoRec.hpp
---- openjdk/hotspot/src/share/vm/includeDB_core.orig	2009-03-11 13:14:45.000000000 +0000
-+++ openjdk/hotspot/src/share/vm/includeDB_core	2009-03-11 13:15:59.000000000 +0000
-@@ -1311,6 +1311,7 @@
- cppInterpreter_<arch>.cpp               debug.hpp
- cppInterpreter_<arch>.cpp               deoptimization.hpp
- cppInterpreter_<arch>.cpp               frame.inline.hpp
-+cppInterpreter_<arch>.cpp               interfaceSupport.hpp
- cppInterpreter_<arch>.cpp               interpreterRuntime.hpp
- cppInterpreter_<arch>.cpp               interpreter.hpp
- cppInterpreter_<arch>.cpp               interpreterGenerator.hpp
--- a/patches/hotspot/original/icedtea-debuginfo.patch	Sun Apr 18 17:03:04 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,15 +0,0 @@
-diff -urN openjdk.orig/hotspot/build/linux/makefiles/gcc.make openjdk/hotspot/build/linux/makefiles/gcc.make
---- openjdk.orig/hotspot/build/linux/makefiles/gcc.make	2007-10-12 18:11:59.000000000 -0400
-+++ openjdk/hotspot/build/linux/makefiles/gcc.make	2007-10-12 18:12:22.000000000 -0400
-@@ -63,6 +63,10 @@
- CFLAGS += -D_REENTRANT
- CFLAGS += -fcheck-new
- 
-+# Always generate full debuginfo on Linux.  It'll be in a separate
-+# debuginfo package when building RPMs.
-+CFLAGS += -g
-+
- ARCHFLAG = $(ARCHFLAG/$(BUILDARCH))
- ARCHFLAG/i486    = -m32 -march=i586
- ARCHFLAG/amd64   = -m64
-
--- a/patches/hotspot/original/icedtea-params-cast-size_t.patch	Sun Apr 18 17:03:04 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,255 +0,0 @@
---- openjdk/hotspot/src/share/vm/gc_implementation/parallelScavenge/psPermGen.cpp.orig	2008-12-20 18:59:01.000000000 +0100
-+++ openjdk/hotspot/src/share/vm/gc_implementation/parallelScavenge/psPermGen.cpp	2009-03-11 21:54:11.000000000 +0100
-@@ -63,7 +63,7 @@
-   _last_used = current_live;
- 
-   // We have different alignment constraints than the rest of the heap.
--  const size_t alignment = MAX2(MinPermHeapExpansion,
-+  const size_t alignment = MAX2((size_t) MinPermHeapExpansion,
-                                 virtual_space()->alignment());
- 
-   // Compute the desired size:
---- openjdk/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp.orig	2008-12-20 18:59:01.000000000 +0100
-+++ openjdk/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp	2009-03-11 21:54:11.000000000 +0100
-@@ -864,8 +864,8 @@
- void PSParallelCompact::initialize_dead_wood_limiter()
- {
-   const size_t max = 100;
--  _dwl_mean = double(MIN2(ParallelOldDeadWoodLimiterMean, max)) / 100.0;
--  _dwl_std_dev = double(MIN2(ParallelOldDeadWoodLimiterStdDev, max)) / 100.0;
-+  _dwl_mean = double(MIN2((size_t) ParallelOldDeadWoodLimiterMean, max)) / 100.0;
-+  _dwl_std_dev = double(MIN2((size_t) ParallelOldDeadWoodLimiterStdDev, max)) / 100.0;
-   _dwl_first_term = 1.0 / (sqrt(2.0 * M_PI) * _dwl_std_dev);
-   DEBUG_ONLY(_dwl_initialized = true;)
-   _dwl_adjustment = normal_distribution(1.0);
---- openjdk/hotspot/src/share/vm/gc_implementation/g1/dirtyCardQueue.cpp.orig	2008-12-20 18:59:01.000000000 +0100
-+++ openjdk/hotspot/src/share/vm/gc_implementation/g1/dirtyCardQueue.cpp	2009-03-11 21:54:11.000000000 +0100
-@@ -72,7 +72,7 @@
- }
- 
- size_t DirtyCardQueueSet::num_par_ids() {
--  return MAX2(ParallelGCThreads, (size_t)2);
-+  return MAX2((size_t)ParallelGCThreads, (size_t)2);
- }
- 
- 
---- openjdk/hotspot/src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp.orig	2008-12-20 18:59:01.000000000 +0100
-+++ openjdk/hotspot/src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp	2009-03-11 21:54:11.000000000 +0100
-@@ -1061,7 +1061,7 @@
- int HeapRegionRemSet::num_par_rem_sets() {
-   // We always have at least two, so that a mutator thread can claim an
-   // id and add to a rem set.
--  return (int) MAX2(ParallelGCThreads, (size_t)2);
-+  return (int) MAX2((size_t)ParallelGCThreads, (size_t)2);
- }
- 
- HeapRegionRemSet::HeapRegionRemSet(G1BlockOffsetSharedArray* bosa,
---- openjdk/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp.orig	2009-03-11 21:52:00.000000000 +0100
-+++ openjdk/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp	2009-03-11 21:54:11.000000000 +0100
-@@ -412,7 +412,7 @@
-   _regionStack(),
-   // _finger set in set_non_marking_state
- 
--  _max_task_num(MAX2(ParallelGCThreads, (size_t)1)),
-+  _max_task_num(MAX2((size_t)ParallelGCThreads, (size_t)1)),
-   // _active_tasks set in set_non_marking_state
-   // _tasks set inside the constructor
-   _task_queues(new CMTaskQueueSet((int) _max_task_num)),
-@@ -463,7 +463,7 @@
-   SATBMarkQueueSet& satb_qs = JavaThread::satb_mark_queue_set();
-   satb_qs.set_buffer_size(G1SATBLogBufferSize);
- 
--  int size = (int) MAX2(ParallelGCThreads, (size_t)1);
-+  int size = (int) MAX2((size_t)ParallelGCThreads, (size_t)1);
-   _par_cleanup_thread_state = NEW_C_HEAP_ARRAY(ParCleanupThreadState*, size);
-   for (int i = 0 ; i < size; i++) {
-     _par_cleanup_thread_state[i] = new ParCleanupThreadState;
-@@ -521,7 +521,7 @@
-       _sleep_factor             = sleep_factor;
-       _marking_task_overhead    = marking_task_overhead;
-     } else {
--      _parallel_marking_threads = MAX2((ParallelGCThreads + 2) / 4, (size_t)1);
-+      _parallel_marking_threads = MAX2((size_t)((ParallelGCThreads + 2) / 4), (size_t)1);
-       _sleep_factor             = 0.0;
-       _marking_task_overhead    = 1.0;
-     }
-@@ -648,7 +648,7 @@
- }
- 
- ConcurrentMark::~ConcurrentMark() {
--  int size = (int) MAX2(ParallelGCThreads, (size_t)1);
-+  int size = (int) MAX2((size_t)ParallelGCThreads, (size_t)1);
-   for (int i = 0; i < size; i++) delete _par_cleanup_thread_state[i];
-   FREE_C_HEAP_ARRAY(ParCleanupThreadState*,
-                     _par_cleanup_thread_state);
-@@ -1746,7 +1746,7 @@
-   if (has_aborted()) return;
- 
-   int first = 0;
--  int last = (int)MAX2(ParallelGCThreads, (size_t)1);
-+  int last = (int)MAX2((size_t)ParallelGCThreads, (size_t)1);
-   for (int t = 0; t < last; t++) {
-     UncleanRegionList* list = &_par_cleanup_thread_state[t]->list;
-     assert(list->well_formed(), "Inv");
-@@ -3199,7 +3199,7 @@
-   // of things to do) or totally (at the very end).
-   size_t target_size;
-   if (partially)
--    target_size = MIN2((size_t)_task_queue->max_elems()/3, GCDrainStackTargetSize);
-+    target_size = MIN2((size_t)_task_queue->max_elems()/3, (size_t)GCDrainStackTargetSize);
-   else
-     target_size = 0;
- 
---- openjdk/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp.orig	2008-12-20 18:59:01.000000000 +0100
-+++ openjdk/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp	2009-03-11 21:54:11.000000000 +0100
-@@ -939,7 +939,7 @@
-   if (free_percentage < desired_free_percentage) {
-     size_t desired_capacity = (size_t)(used() / ((double) 1 - desired_free_percentage));
-     assert(desired_capacity >= capacity(), "invalid expansion size");
--    expand_bytes = MAX2(desired_capacity - capacity(), MinHeapDeltaBytes);
-+    expand_bytes = MAX2((long unsigned int) (desired_capacity - capacity()), (long unsigned int) MinHeapDeltaBytes);
-   }
-   if (expand_bytes > 0) {
-     if (PrintGCDetails && Verbose) {
-@@ -6054,7 +6054,7 @@
-     HeapWord* curAddr = _markBitMap.startWord();
-     while (curAddr < _markBitMap.endWord()) {
-       size_t remaining  = pointer_delta(_markBitMap.endWord(), curAddr);
--      MemRegion chunk(curAddr, MIN2(CMSBitMapYieldQuantum, remaining));
-+      MemRegion chunk(curAddr, MIN2((size_t) CMSBitMapYieldQuantum, remaining));
-       _markBitMap.clear_large_range(chunk);
-       if (ConcurrentMarkSweepThread::should_yield() &&
-           !foregroundGCIsActive() &&
-@@ -6342,7 +6342,7 @@
-     return;
-   }
-   // Double capacity if possible
--  size_t new_capacity = MIN2(_capacity*2, CMSMarkStackSizeMax);
-+  size_t new_capacity = MIN2((size_t) (_capacity*2), (size_t) CMSMarkStackSizeMax);
-   // Do not give up existing stack until we have managed to
-   // get the double capacity that we desired.
-   ReservedSpace rs(ReservedSpace::allocation_align_size_up(
---- openjdk/hotspot/src/share/vm/runtime/arguments.cpp.orig	2009-03-11 21:45:27.000000000 +0100
-+++ openjdk/hotspot/src/share/vm/runtime/arguments.cpp	2009-03-11 21:54:11.000000000 +0100
-@@ -1051,7 +1051,7 @@
-   // for "short" pauses ~ 4M*ParallelGCThreads
-   if (FLAG_IS_DEFAULT(MaxNewSize)) {  // MaxNewSize not set at command-line
-     if (!FLAG_IS_DEFAULT(NewSize)) {   // NewSize explicitly set at command-line
--      FLAG_SET_ERGO(uintx, MaxNewSize, MAX2(NewSize, preferred_max_new_size));
-+      FLAG_SET_ERGO(uintx, MaxNewSize, MAX2((size_t) NewSize, preferred_max_new_size));
-     } else {
-       FLAG_SET_ERGO(uintx, MaxNewSize, preferred_max_new_size);
-     }
-@@ -1064,7 +1064,7 @@
-   // Old to Young gen size so as to shift the collection load
-   // to the old generation concurrent collector
-   if (FLAG_IS_DEFAULT(NewRatio)) {
--    FLAG_SET_ERGO(intx, NewRatio, MAX2(NewRatio, new_ratio));
-+    FLAG_SET_ERGO(intx, NewRatio, MAX2((intx) NewRatio, new_ratio));
- 
-     size_t min_new  = align_size_up(ScaleForWordSize(min_new_default), os::vm_page_size());
-     size_t prev_initial_size = initial_heap_size();
-@@ -1093,8 +1093,8 @@
-       // Unless explicitly requested otherwise, make young gen
-       // at least min_new, and at most preferred_max_new_size.
-       if (FLAG_IS_DEFAULT(NewSize)) {
--        FLAG_SET_ERGO(uintx, NewSize, MAX2(NewSize, min_new));
--        FLAG_SET_ERGO(uintx, NewSize, MIN2(preferred_max_new_size, NewSize));
-+        FLAG_SET_ERGO(uintx, NewSize, MAX2((size_t) NewSize, min_new));
-+        FLAG_SET_ERGO(uintx, NewSize, MIN2(preferred_max_new_size, (size_t) NewSize));
-         if(PrintGCDetails && Verbose) {
-           // Too early to use gclog_or_tty
-           tty->print_cr("Ergo set NewSize: " SIZE_FORMAT, NewSize);
-@@ -1105,7 +1105,7 @@
-       // later NewRatio will decide how it grows; see above.
-       if (FLAG_IS_DEFAULT(OldSize)) {
-         if (max_heap > NewSize) {
--          FLAG_SET_ERGO(uintx, OldSize, MIN2(3*NewSize,  max_heap - NewSize));
-+          FLAG_SET_ERGO(uintx, OldSize, MIN2((size_t) (3*NewSize),  max_heap - (size_t) NewSize));
-           if(PrintGCDetails && Verbose) {
-             // Too early to use gclog_or_tty
-             tty->print_cr("Ergo set OldSize: " SIZE_FORMAT, OldSize);
---- openjdk/hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp.orig	2008-12-20 18:59:01.000000000 +0100
-+++ openjdk/hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp	2009-03-11 21:54:11.000000000 +0100
-@@ -221,7 +221,7 @@
-   size_t init_sz;
- 
-   if (TLABSize > 0) {
--    init_sz = MIN2(TLABSize / HeapWordSize, max_size());
-+    init_sz = MIN2((size_t) (TLABSize / HeapWordSize), max_size());
-   } else if (global_stats() == NULL) {
-     // Startup issue - main thread initialized before heap initialized.
-     init_sz = min_size();
---- openjdk/hotspot/src/share/vm/memory/collectorPolicy.cpp.orig	2008-12-20 18:59:01.000000000 +0100
-+++ openjdk/hotspot/src/share/vm/memory/collectorPolicy.cpp	2009-03-11 21:55:31.000000000 +0100
-@@ -281,7 +281,7 @@
-     // yield a size that is too small) and bound it by MaxNewSize above.
-     // Ergonomics plays here by previously calculating the desired
-     // NewSize and MaxNewSize.
--    max_new_size = MIN2(MAX2(max_new_size, NewSize), MaxNewSize);
-+    max_new_size = MIN2(MAX2(max_new_size, (size_t)NewSize), (size_t)MaxNewSize);
-   }
-   assert(max_new_size > 0, "All paths should set max_new_size");
- 
-@@ -308,7 +308,7 @@
-       // generally small compared to the NewRatio calculation.
-       _min_gen0_size = NewSize;
-       desired_new_size = NewSize;
--      max_new_size = MAX2(max_new_size, NewSize);
-+      max_new_size = MAX2(max_new_size, (size_t) NewSize);
-     } else {
-       // For the case where NewSize is the default, use NewRatio
-       // to size the minimum and initial generation sizes.
-@@ -316,10 +316,10 @@
-       // NewRatio is overly large, the resulting sizes can be too
-       // small.
-       _min_gen0_size = MAX2(scale_by_NewRatio_aligned(min_heap_byte_size()),
--                          NewSize);
-+                          (size_t) NewSize);
-       desired_new_size =
-         MAX2(scale_by_NewRatio_aligned(initial_heap_byte_size()),
--             NewSize);
-+             (size_t) NewSize);
-     }
- 
-     assert(_min_gen0_size > 0, "Sanity check");
-@@ -374,14 +374,14 @@
-       // Adjust gen0 down to accomodate OldSize
-       *gen0_size_ptr = heap_size - min_gen0_size;
-       *gen0_size_ptr =
--        MAX2((uintx)align_size_down(*gen0_size_ptr, min_alignment()),
-+        MAX2((size_t)align_size_down(*gen0_size_ptr, min_alignment()),
-              min_alignment());
-       assert(*gen0_size_ptr > 0, "Min gen0 is too large");
-       result = true;
-     } else {
-       *gen1_size_ptr = heap_size - *gen0_size_ptr;
-       *gen1_size_ptr =
--        MAX2((uintx)align_size_down(*gen1_size_ptr, min_alignment()),
-+        MAX2((size_t)align_size_down(*gen1_size_ptr, min_alignment()),
-                        min_alignment());
-     }
-   }
-@@ -405,7 +405,7 @@
-   // for setting the gen1 maximum.
-   _max_gen1_size = max_heap_byte_size() - _max_gen0_size;
-   _max_gen1_size =
--    MAX2((uintx)align_size_down(_max_gen1_size, min_alignment()),
-+    MAX2((size_t)align_size_down(_max_gen1_size, min_alignment()),
-          min_alignment());
-   // If no explicit command line flag has been set for the
-   // gen1 size, use what is left for gen1.
-@@ -419,11 +419,11 @@
-       "gen0 has an unexpected minimum size");
-     set_min_gen1_size(min_heap_byte_size() - min_gen0_size());
-     set_min_gen1_size(
--      MAX2((uintx)align_size_down(_min_gen1_size, min_alignment()),
-+      MAX2((size_t)align_size_down(_min_gen1_size, min_alignment()),
-            min_alignment()));
-     set_initial_gen1_size(initial_heap_byte_size() - initial_gen0_size());
-     set_initial_gen1_size(
--      MAX2((uintx)align_size_down(_initial_gen1_size, min_alignment()),
-+      MAX2((size_t)align_size_down(_initial_gen1_size, min_alignment()),
-            min_alignment()));
- 
-   } else {
--- a/patches/hotspot/original/memory-limits.patch	Sun Apr 18 17:03:04 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,23 +0,0 @@
-diff -Nru openjdk.orig/hotspot/src/cpu/x86/vm/c2_globals_x86.hpp openjdk/hotspot/src/cpu/x86/vm/c2_globals_x86.hpp
---- openjdk.orig/hotspot/src/cpu/x86/vm/c2_globals_x86.hpp      2008-05-23 22:30:44.000000000 +0100
-+++ openjdk/hotspot/src/cpu/x86/vm/c2_globals_x86.hpp   2008-05-23 22:30:59.000000000 +0100
-@@ -98,7 +98,7 @@
-
- // Heap related flags
- define_pd_global(uintx, PermSize,    ScaleForWordSize(16*M));
--define_pd_global(uintx, MaxPermSize, ScaleForWordSize(64*M));
-+define_pd_global(uintx, MaxPermSize, ScaleForWordSize(128*M));
-
- // Ergonomics related flags
- define_pd_global(bool, NeverActAsServerClassMachine, false);
---- penjdk6/hotspot/src/share/vm/runtime/globals.hpp	2008-02-12 04:14:24.000000000 -0500
-+++ openjdk/hotspot/src/share/vm/runtime/globals.hpp	2008-02-14 16:34:00.000000000 -0500
-@@ -2606,7 +2606,7 @@
-           "an OS lock")                                                     \
-                                                                             \
-   /* gc parameters */                                                       \
--  product(uintx, MaxHeapSize, ScaleForWordSize(64*M),                       \
-+  product(uintx, MaxHeapSize, ScaleForWordSize(512*M),                       \
-           "Default maximum size for object heap (in bytes)")                \
-                                                                             \
-   product_pd(uintx, NewSize, 						    \
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/hotspot/original/params-cast-size_t.patch	Sun Apr 18 17:04:10 2010 +0100
@@ -0,0 +1,252 @@
+diff -Nru openjdk.orig/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp openjdk/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp
+--- openjdk.orig/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp	2009-12-08 23:12:17.000000000 +0000
++++ openjdk/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp	2010-01-11 20:57:36.000000000 +0000
+@@ -941,7 +941,7 @@
+   if (free_percentage < desired_free_percentage) {
+     size_t desired_capacity = (size_t)(used() / ((double) 1 - desired_free_percentage));
+     assert(desired_capacity >= capacity(), "invalid expansion size");
+-    expand_bytes = MAX2(desired_capacity - capacity(), MinHeapDeltaBytes);
++    expand_bytes = MAX2((long unsigned int) (desired_capacity - capacity()), (long unsigned int) MinHeapDeltaBytes);
+   }
+   if (expand_bytes > 0) {
+     if (PrintGCDetails && Verbose) {
+@@ -6095,7 +6095,7 @@
+     HeapWord* curAddr = _markBitMap.startWord();
+     while (curAddr < _markBitMap.endWord()) {
+       size_t remaining  = pointer_delta(_markBitMap.endWord(), curAddr);
+-      MemRegion chunk(curAddr, MIN2(CMSBitMapYieldQuantum, remaining));
++      MemRegion chunk(curAddr, MIN2((size_t) CMSBitMapYieldQuantum, remaining));
+       _markBitMap.clear_large_range(chunk);
+       if (ConcurrentMarkSweepThread::should_yield() &&
+           !foregroundGCIsActive() &&
+@@ -6383,7 +6383,7 @@
+     return;
+   }
+   // Double capacity if possible
+-  size_t new_capacity = MIN2(_capacity*2, CMSMarkStackSizeMax);
++  size_t new_capacity = MIN2((size_t) (_capacity*2), (size_t) CMSMarkStackSizeMax);
+   // Do not give up existing stack until we have managed to
+   // get the double capacity that we desired.
+   ReservedSpace rs(ReservedSpace::allocation_align_size_up(
+diff -Nru openjdk.orig/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp openjdk/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp
+--- openjdk.orig/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp	2010-01-11 20:48:22.000000000 +0000
++++ openjdk/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp	2010-01-11 20:57:36.000000000 +0000
+@@ -412,7 +412,7 @@
+   _regionStack(),
+   // _finger set in set_non_marking_state
+ 
+-  _max_task_num(MAX2(ParallelGCThreads, (size_t)1)),
++  _max_task_num(MAX2((size_t)ParallelGCThreads, (size_t)1)),
+   // _active_tasks set in set_non_marking_state
+   // _tasks set inside the constructor
+   _task_queues(new CMTaskQueueSet((int) _max_task_num)),
+@@ -463,7 +463,7 @@
+   SATBMarkQueueSet& satb_qs = JavaThread::satb_mark_queue_set();
+   satb_qs.set_buffer_size(G1SATBLogBufferSize);
+ 
+-  int size = (int) MAX2(ParallelGCThreads, (size_t)1);
++  int size = (int) MAX2((size_t)ParallelGCThreads, (size_t)1);
+   _par_cleanup_thread_state = NEW_C_HEAP_ARRAY(ParCleanupThreadState*, size);
+   for (int i = 0 ; i < size; i++) {
+     _par_cleanup_thread_state[i] = new ParCleanupThreadState;
+@@ -522,7 +522,7 @@
+       _sleep_factor             = sleep_factor;
+       _marking_task_overhead    = marking_task_overhead;
+     } else {
+-      _parallel_marking_threads = MAX2((ParallelGCThreads + 2) / 4, (size_t)1);
++      _parallel_marking_threads = MAX2((size_t)((ParallelGCThreads + 2) / 4), (size_t)1);
+       _sleep_factor             = 0.0;
+       _marking_task_overhead    = 1.0;
+     }
+@@ -649,7 +649,7 @@
+ }
+ 
+ ConcurrentMark::~ConcurrentMark() {
+-  int size = (int) MAX2(ParallelGCThreads, (size_t)1);
++  int size = (int) MAX2((size_t)ParallelGCThreads, (size_t)1);
+   for (int i = 0; i < size; i++) delete _par_cleanup_thread_state[i];
+   FREE_C_HEAP_ARRAY(ParCleanupThreadState*,
+                     _par_cleanup_thread_state);
+@@ -1708,7 +1708,7 @@
+   if (has_aborted()) return;
+ 
+   int first = 0;
+-  int last = (int)MAX2(ParallelGCThreads, (size_t)1);
++  int last = (int)MAX2((size_t)ParallelGCThreads, (size_t)1);
+   for (int t = 0; t < last; t++) {
+     UncleanRegionList* list = &_par_cleanup_thread_state[t]->list;
+     assert(list->well_formed(), "Inv");
+@@ -3202,7 +3202,7 @@
+   // of things to do) or totally (at the very end).
+   size_t target_size;
+   if (partially)
+-    target_size = MIN2((size_t)_task_queue->max_elems()/3, GCDrainStackTargetSize);
++    target_size = MIN2((size_t)_task_queue->max_elems()/3, (size_t)GCDrainStackTargetSize);
+   else
+     target_size = 0;
+ 
+diff -Nru openjdk.orig/hotspot/src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp openjdk/hotspot/src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp
+--- openjdk.orig/hotspot/src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp	2009-12-08 23:12:17.000000000 +0000
++++ openjdk/hotspot/src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp	2010-01-11 20:57:36.000000000 +0000
+@@ -1058,7 +1058,7 @@
+ // This can be done by either mutator threads together with the
+ // concurrent refinement threads or GC threads.
+ int HeapRegionRemSet::num_par_rem_sets() {
+-  return (int)MAX2(DirtyCardQueueSet::num_par_ids() + ConcurrentG1Refine::thread_num(), ParallelGCThreads);
++  return (int)MAX2(DirtyCardQueueSet::num_par_ids() + ConcurrentG1Refine::thread_num(), (size_t)ParallelGCThreads);
+ }
+ 
+ HeapRegionRemSet::HeapRegionRemSet(G1BlockOffsetSharedArray* bosa,
+diff -Nru openjdk.orig/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp openjdk/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp
+--- openjdk.orig/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp	2009-12-08 23:12:17.000000000 +0000
++++ openjdk/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp	2010-01-11 20:57:36.000000000 +0000
+@@ -863,8 +863,8 @@
+ void PSParallelCompact::initialize_dead_wood_limiter()
+ {
+   const size_t max = 100;
+-  _dwl_mean = double(MIN2(ParallelOldDeadWoodLimiterMean, max)) / 100.0;
+-  _dwl_std_dev = double(MIN2(ParallelOldDeadWoodLimiterStdDev, max)) / 100.0;
++  _dwl_mean = double(MIN2((size_t) ParallelOldDeadWoodLimiterMean, max)) / 100.0;
++  _dwl_std_dev = double(MIN2((size_t) ParallelOldDeadWoodLimiterStdDev, max)) / 100.0;
+   _dwl_first_term = 1.0 / (sqrt(2.0 * M_PI) * _dwl_std_dev);
+   DEBUG_ONLY(_dwl_initialized = true;)
+   _dwl_adjustment = normal_distribution(1.0);
+diff -Nru openjdk.orig/hotspot/src/share/vm/gc_implementation/parallelScavenge/psPermGen.cpp openjdk/hotspot/src/share/vm/gc_implementation/parallelScavenge/psPermGen.cpp
+--- openjdk.orig/hotspot/src/share/vm/gc_implementation/parallelScavenge/psPermGen.cpp	2009-12-08 23:12:17.000000000 +0000
++++ openjdk/hotspot/src/share/vm/gc_implementation/parallelScavenge/psPermGen.cpp	2010-01-11 20:57:36.000000000 +0000
+@@ -63,7 +63,7 @@
+   _last_used = current_live;
+ 
+   // We have different alignment constraints than the rest of the heap.
+-  const size_t alignment = MAX2(MinPermHeapExpansion,
++  const size_t alignment = MAX2((size_t) MinPermHeapExpansion,
+                                 virtual_space()->alignment());
+ 
+   // Compute the desired size:
+diff -Nru openjdk.orig/hotspot/src/share/vm/memory/collectorPolicy.cpp openjdk/hotspot/src/share/vm/memory/collectorPolicy.cpp
+--- openjdk.orig/hotspot/src/share/vm/memory/collectorPolicy.cpp	2009-12-08 23:12:17.000000000 +0000
++++ openjdk/hotspot/src/share/vm/memory/collectorPolicy.cpp	2010-01-11 20:57:36.000000000 +0000
+@@ -281,7 +281,7 @@
+     // yield a size that is too small) and bound it by MaxNewSize above.
+     // Ergonomics plays here by previously calculating the desired
+     // NewSize and MaxNewSize.
+-    max_new_size = MIN2(MAX2(max_new_size, NewSize), MaxNewSize);
++    max_new_size = MIN2(MAX2(max_new_size, (size_t)NewSize), (size_t)MaxNewSize);
+   }
+   assert(max_new_size > 0, "All paths should set max_new_size");
+ 
+@@ -308,7 +308,7 @@
+       // generally small compared to the NewRatio calculation.
+       _min_gen0_size = NewSize;
+       desired_new_size = NewSize;
+-      max_new_size = MAX2(max_new_size, NewSize);
++      max_new_size = MAX2(max_new_size, (size_t) NewSize);
+     } else {
+       // For the case where NewSize is the default, use NewRatio
+       // to size the minimum and initial generation sizes.
+@@ -316,10 +316,10 @@
+       // NewRatio is overly large, the resulting sizes can be too
+       // small.
+       _min_gen0_size = MAX2(scale_by_NewRatio_aligned(min_heap_byte_size()),
+-                          NewSize);
++                          (size_t) NewSize);
+       desired_new_size =
+         MAX2(scale_by_NewRatio_aligned(initial_heap_byte_size()),
+-             NewSize);
++             (size_t) NewSize);
+     }
+ 
+     assert(_min_gen0_size > 0, "Sanity check");
+@@ -374,14 +374,14 @@
+       // Adjust gen0 down to accomodate OldSize
+       *gen0_size_ptr = heap_size - min_gen0_size;
+       *gen0_size_ptr =
+-        MAX2((uintx)align_size_down(*gen0_size_ptr, min_alignment()),
++        MAX2((size_t)align_size_down(*gen0_size_ptr, min_alignment()),
+              min_alignment());
+       assert(*gen0_size_ptr > 0, "Min gen0 is too large");
+       result = true;
+     } else {
+       *gen1_size_ptr = heap_size - *gen0_size_ptr;
+       *gen1_size_ptr =
+-        MAX2((uintx)align_size_down(*gen1_size_ptr, min_alignment()),
++        MAX2((size_t)align_size_down(*gen1_size_ptr, min_alignment()),
+                        min_alignment());
+     }
+   }
+@@ -405,7 +405,7 @@
+   // for setting the gen1 maximum.
+   _max_gen1_size = max_heap_byte_size() - _max_gen0_size;
+   _max_gen1_size =
+-    MAX2((uintx)align_size_down(_max_gen1_size, min_alignment()),
++    MAX2((size_t)align_size_down(_max_gen1_size, min_alignment()),
+          min_alignment());
+   // If no explicit command line flag has been set for the
+   // gen1 size, use what is left for gen1.
+@@ -419,11 +419,11 @@
+       "gen0 has an unexpected minimum size");
+     set_min_gen1_size(min_heap_byte_size() - min_gen0_size());
+     set_min_gen1_size(
+-      MAX2((uintx)align_size_down(_min_gen1_size, min_alignment()),
++      MAX2((size_t)align_size_down(_min_gen1_size, min_alignment()),
+            min_alignment()));
+     set_initial_gen1_size(initial_heap_byte_size() - initial_gen0_size());
+     set_initial_gen1_size(
+-      MAX2((uintx)align_size_down(_initial_gen1_size, min_alignment()),
++      MAX2((size_t)align_size_down(_initial_gen1_size, min_alignment()),
+            min_alignment()));
+ 
+   } else {
+diff -Nru openjdk.orig/hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp openjdk/hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp
+--- openjdk.orig/hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp	2009-12-08 23:12:17.000000000 +0000
++++ openjdk/hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp	2010-01-11 20:57:36.000000000 +0000
+@@ -221,7 +221,7 @@
+   size_t init_sz;
+ 
+   if (TLABSize > 0) {
+-    init_sz = MIN2(TLABSize / HeapWordSize, max_size());
++    init_sz = MIN2((size_t) (TLABSize / HeapWordSize), max_size());
+   } else if (global_stats() == NULL) {
+     // Startup issue - main thread initialized before heap initialized.
+     init_sz = min_size();
+diff -Nru openjdk.orig/hotspot/src/share/vm/runtime/arguments.cpp openjdk/hotspot/src/share/vm/runtime/arguments.cpp
+--- openjdk.orig/hotspot/src/share/vm/runtime/arguments.cpp	2010-01-11 20:48:21.000000000 +0000
++++ openjdk/hotspot/src/share/vm/runtime/arguments.cpp	2010-01-11 20:59:44.000000000 +0000
+@@ -1071,7 +1071,7 @@
+     // NewSize was set on the command line and it is larger than
+     // preferred_max_new_size.
+     if (!FLAG_IS_DEFAULT(NewSize)) {   // NewSize explicitly set at command-line
+-      FLAG_SET_ERGO(uintx, MaxNewSize, MAX2(NewSize, preferred_max_new_size));
++      FLAG_SET_ERGO(uintx, MaxNewSize, MAX2((size_t) NewSize, preferred_max_new_size));
+     } else {
+       FLAG_SET_ERGO(uintx, MaxNewSize, preferred_max_new_size);
+     }
+@@ -1090,7 +1090,7 @@
+     // there was no obvious reason.  Also limit to the case where
+     // MaxNewSize has not been set.
+ 
+-    FLAG_SET_ERGO(intx, NewRatio, MAX2(NewRatio, new_ratio));
++    FLAG_SET_ERGO(intx, NewRatio, MAX2((intx) NewRatio, new_ratio));
+ 
+     // Code along this path potentially sets NewSize and OldSize
+ 
+@@ -1132,8 +1132,8 @@
+       // Unless explicitly requested otherwise, make young gen
+       // at least min_new, and at most preferred_max_new_size.
+       if (FLAG_IS_DEFAULT(NewSize)) {
+-        FLAG_SET_ERGO(uintx, NewSize, MAX2(NewSize, min_new));
+-        FLAG_SET_ERGO(uintx, NewSize, MIN2(preferred_max_new_size, NewSize));
++	FLAG_SET_ERGO(uintx, NewSize, MAX2((size_t) NewSize, min_new));
++        FLAG_SET_ERGO(uintx, NewSize, MIN2(preferred_max_new_size, (size_t) NewSize));
+         if (PrintGCDetails && Verbose) {
+           // Too early to use gclog_or_tty
+           tty->print_cr("Ergo set NewSize: " SIZE_FORMAT, NewSize);
+@@ -1144,7 +1144,7 @@
+       // later NewRatio will decide how it grows; see above.
+       if (FLAG_IS_DEFAULT(OldSize)) {
+         if (max_heap > NewSize) {
+-          FLAG_SET_ERGO(uintx, OldSize, MIN2(3*NewSize, max_heap - NewSize));
++	  FLAG_SET_ERGO(uintx, OldSize, MIN2((size_t) 3*NewSize, max_heap - (size_t) NewSize));
+           if (PrintGCDetails && Verbose) {
+             // Too early to use gclog_or_tty
+             tty->print_cr("Ergo set OldSize: " SIZE_FORMAT, OldSize);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/hotspot/original/systemtap.patch	Sun Apr 18 17:04:10 2010 +0100
@@ -0,0 +1,182 @@
+diff -r 945bf7540697 make/linux/makefiles/dtrace.make
+--- openjdk/hotspot/make/linux/makefiles/dtrace.make	Thu Jan 22 14:42:01 2009 -0800
++++ openjdk/hotspot/make/linux/makefiles/dtrace.make	Mon Feb 02 13:47:34 2009 +0100
+@@ -25,3 +25,7 @@
+ # Linux does not build jvm_db
+ LIBJVM_DB =
+ 
++# But it does have a Systemtap dtrace compatible sys/sdt.h
++CFLAGS += -DDTRACE_ENABLED
++
++# It doesn't support HAVE_DTRACE_H though.
+--- openjdk/hotspot/src/share/vm/prims/jni.cpp	2009-10-13 15:34:52.499809508 +0200
++++ openjdk/hotspot/src/share/vm/prims/jni.cpp	2009-10-13 15:31:26.117823588 +0200
+@@ -1747,10 +1744,7 @@
+ JNI_QUICK_ENTRY(void, jni_Set##Result##Field(JNIEnv *env, jobject obj, jfieldID fieldID, Argument value)) \
+   JNIWrapper("Set" XSTR(Result) "Field"); \
+ \
+-  HS_DTRACE_PROBE_CDECL_N(hotspot_jni, Set##Result##Field__entry, \
+-    ( JNIEnv*, jobject, jfieldID FP_SELECT_##Result(COMMA Argument,/*empty*/) ) ); \
+-  HS_DTRACE_PROBE_N(hotspot_jni, Set##Result##Field__entry, \
+-    ( env, obj, fieldID FP_SELECT_##Result(COMMA value,/*empty*/) ) ); \
++  FP_SELECT_##Result(DTRACE_PROBE4(hotspot_jni, Set##Result##Field__entry, env, obj, fieldID, value),DTRACE_PROBE3(hotspot_jni, Set##Result##Field__entry, env, obj, fieldID)); \
+ \
+   oop o = JNIHandles::resolve_non_null(obj); \
+   klassOop k = o->klass(); \
+@@ -1924,10 +1918,7 @@
+ \
+ JNI_ENTRY(void, jni_SetStatic##Result##Field(JNIEnv *env, jclass clazz, jfieldID fieldID, Argument value)) \
+   JNIWrapper("SetStatic" XSTR(Result) "Field"); \
+-  HS_DTRACE_PROBE_CDECL_N(hotspot_jni, SetStatic##Result##Field__entry,\
+-    ( JNIEnv*, jclass, jfieldID FP_SELECT_##Result(COMMA Argument,/*empty*/) ) ); \
+-  HS_DTRACE_PROBE_N(hotspot_jni, SetStatic##Result##Field__entry, \
+-    ( env, clazz, fieldID FP_SELECT_##Result(COMMA value,/*empty*/) ) ); \
++  FP_SELECT_##Result(DTRACE_PROBE4(hotspot_jni, SetStatic##Result##Field__entry, env, clazz, fieldID, value),DTRACE_PROBE3(hotspot_jni, SetStatic##Result##Field__entry, env, clazz, fieldID)); \
+ \
+   JNIid* id = jfieldIDWorkaround::from_static_jfieldID(fieldID); \
+   assert(id->is_static_field_id(), "invalid static field id"); \
+@@ -2116,7 +2101,7 @@
+   DT_RETURN_MARK(GetObjectArrayElement, jobject, (const jobject&)ret);
+   objArrayOop a = objArrayOop(JNIHandles::resolve_non_null(array));
+   if (a->is_within_bounds(index)) {
+-    jobject ret = JNIHandles::make_local(env, a->obj_at(index));
++    ret = JNIHandles::make_local(env, a->obj_at(index));
+     return ret;
+   } else {
+     char buf[jintAsStringSize];
+@@ -2150,14 +2150,14 @@
+ 
+ #define DEFINE_NEWSCALARARRAY(Return,Allocator,Result) \
+ \
+-  DT_RETURN_MARK_DECL_FOR(Result, New##Result##Array, Return);\
++  DT_RETURN_MARK_DECL(New##Result##Array, Return);\
+ \
+ JNI_ENTRY(Return, \
+           jni_New##Result##Array(JNIEnv *env, jsize len)) \
+   JNIWrapper("New" XSTR(Result) "Array"); \
+   DTRACE_PROBE2(hotspot_jni, New##Result##Array__entry, env, len);\
+   Return ret = NULL;\
+-  DT_RETURN_MARK_FOR(Result, New##Result##Array, Return, (const Return&)ret);\
++  DT_RETURN_MARK(New##Result##Array, Return, (const Return&)ret);\
+ \
+   oop obj= oopFactory::Allocator(len, CHECK_0); \
+   ret = (Return) JNIHandles::make_local(env, obj); \
+
+diff -r 945bf7540697 src/share/vm/utilities/dtrace.hpp
+--- openjdk/hotspot/src/share/vm/utilities/dtrace.hpp	Thu Jan 22 14:42:01 2009 -0800
++++ openjdk/hotspot/src/share/vm/utilities/dtrace.hpp	Mon Feb 02 13:47:34 2009 +0100
+@@ -1,5 +1,6 @@
+ /*
+  * Copyright 2005-2007 Sun Microsystems, Inc.  All Rights Reserved.
++ * Copyright 2009 Red Hat, Inc.
+  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+  *
+  * This code is free software; you can redistribute it and/or modify it
+@@ -22,14 +23,14 @@
+  *
+  */
+ 
+-#if defined(SOLARIS) && defined(DTRACE_ENABLED)
++#if defined(DTRACE_ENABLED)
+ 
+ #include <sys/sdt.h>
+ 
+ #define DTRACE_ONLY(x) x
+ #define NOT_DTRACE(x)
+ 
+-#else // ndef SOLARIS || ndef DTRACE_ENABLED
++#else // ndef DTRACE_ENABLED
+ 
+ #define DTRACE_ONLY(x)
+ #define NOT_DTRACE(x) x
+@@ -40,9 +41,16 @@
+ #define DTRACE_PROBE3(a,b,c,d,e) {;}
+ #define DTRACE_PROBE4(a,b,c,d,e,f) {;}
+ #define DTRACE_PROBE5(a,b,c,d,e,f,g) {;}
++#define DTRACE_PROBE6(a,b,c,d,e,f,g,h) {;}
++#define DTRACE_PROBE7(a,b,c,d,e,f,g,h,i) {;}
++#define DTRACE_PROBE8(a,b,c,d,e,f,g,h,i,j) {;}
++#define DTRACE_PROBE9(a,b,c,d,e,f,g,h,i,j,k) {;}
++#define DTRACE_PROBE10(a,b,c,d,e,f,g,h,i,j,k,l) {;}
+ 
+ #endif
+ 
++#if defined(SOLARIS)
++// Solaris dtrace needs actual extern function decls.
+ #define HS_DTRACE_PROBE_FN(provider,name)\
+   __dtrace_##provider##___##name
+ 
+@@ -50,6 +58,11 @@
+   DTRACE_ONLY(extern "C" void HS_DTRACE_PROBE_FN(provider,name) args)
+ #define HS_DTRACE_PROBE_CDECL_N(provider,name,args) \
+   DTRACE_ONLY(extern void HS_DTRACE_PROBE_FN(provider,name) args)
++#else
++// Systemtap dtrace compatible probes on GNU/Linux don't.
++#define HS_DTRACE_PROBE_DECL_N(provider,name,args)
++#define HS_DTRACE_PROBE_CDECL_N(provider,name,args)
++#endif 
+ 
+ /* Dtrace probe declarations */
+ #define HS_DTRACE_PROBE_DECL(provider,name) \
+@@ -88,6 +101,8 @@
+     uintptr_t,uintptr_t,uintptr_t))
+ 
+ /* Dtrace probe definitions */
++#if defined(SOLARIS)
++// Solaris dtrace uses actual function calls.
+ #define HS_DTRACE_PROBE_N(provider,name, args) \
+   DTRACE_ONLY(HS_DTRACE_PROBE_FN(provider,name) args)
+ 
+@@ -123,3 +138,29 @@
+   HS_DTRACE_PROBE_N(provider,name,((uintptr_t)a0,(uintptr_t)a1,(uintptr_t)a2,\
+     (uintptr_t)a3,(uintptr_t)a4,(uintptr_t)a5,(uintptr_t)a6,(uintptr_t)a7,\
+     (uintptr_t)a8,(uintptr_t)a9))
++#else
++// Systemtap dtrace compatible probes on GNU/Linux use direct macros.
++#define HS_DTRACE_PROBE(provider,name) HS_DTRACE_PROBE0(provider,name)
++#define HS_DTRACE_PROBE0(provider,name)\
++  DTRACE_PROBE(provider,name)
++#define HS_DTRACE_PROBE1(provider,name,a0)\
++  DTRACE_PROBE1(provider,name,a0)
++#define HS_DTRACE_PROBE2(provider,name,a0,a1)\
++  DTRACE_PROBE2(provider,name,a0,a1)
++#define HS_DTRACE_PROBE3(provider,name,a0,a1,a2)\
++  DTRACE_PROBE3(provider,name,a0,a1,a2)
++#define HS_DTRACE_PROBE4(provider,name,a0,a1,a2,a3)\
++  DTRACE_PROBE4(provider,name,a0,a1,a2,a3)
++#define HS_DTRACE_PROBE5(provider,name,a0,a1,a2,a3,a4)\
++  DTRACE_PROBE5(provider,name,a0,a1,a2,a3,a4)
++#define HS_DTRACE_PROBE6(provider,name,a0,a1,a2,a3,a4,a5)\
++  DTRACE_PROBE6(provider,name,a0,a1,a2,a3,a4,a5)
++#define HS_DTRACE_PROBE7(provider,name,a0,a1,a2,a3,a4,a5,a6)\
++  DTRACE_PROBE7(provider,name,a0,a1,a2,a3,a4,a5,a6)
++#define HS_DTRACE_PROBE8(provider,name,a0,a1,a2,a3,a4,a5,a6,a7)\
++  DTRACE_PROBE8(provider,name,a0,a1,a2,a3,a4,a5,a6,a7)
++#define HS_DTRACE_PROBE9(provider,name,a0,a1,a2,a3,a4,a5,a6,a7,a8)\
++  DTRACE_PROBE9(provider,name,a0,a1,a2,a3,a4,a5,a6,a7,a8)
++#define HS_DTRACE_PROBE10(provider,name,a0,a1,a2,a3,a4,a5,a6,a7,a8)\
++  DTRACE_PROBE10(provider,name,a0,a1,a2,a3,a4,a5,a6,a7,a8)
++#endif
+--- openjdk/hotspot/src/share/vm/runtime/arguments.cpp	2009-03-04 14:39:43.000000000 +0100
++++ openjdk/hotspot/src/share/vm/runtime/arguments.cpp	2009-03-04 22:11:37.000000000 +0100
+@@ -2272,16 +2272,16 @@
+       FLAG_SET_CMDLINE(bool, DisplayVMOutputToStderr, false);
+       FLAG_SET_CMDLINE(bool, DisplayVMOutputToStdout, true);
+     } else if (match_option(option, "-XX:+ExtendedDTraceProbes", &tail)) {
+-#ifdef SOLARIS
++#ifdef DTRACE_ENABLED
+       FLAG_SET_CMDLINE(bool, ExtendedDTraceProbes, true);
+       FLAG_SET_CMDLINE(bool, DTraceMethodProbes, true);
+       FLAG_SET_CMDLINE(bool, DTraceAllocProbes, true);
+       FLAG_SET_CMDLINE(bool, DTraceMonitorProbes, true);
+-#else // ndef SOLARIS
++#else // ndef DTRACE_ENABLED
+       jio_fprintf(defaultStream::error_stream(),
+-                  "ExtendedDTraceProbes flag is only applicable on Solaris\n");
++                  "ExtendedDTraceProbes flag is only applicable on dtrace enabled builds\n");
+       return JNI_EINVAL;
+-#endif // ndef SOLARIS
++#endif // ndef DTRACE_ENABLED
+     } else
+ #ifdef ASSERT
+     if (match_option(option, "-XX:+FullGCALot", &tail)) {
--- a/patches/icedtea-6761856-freetypescaler.patch	Sun Apr 18 17:03:04 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,47 +0,0 @@
-# User igor
-# Date 1225234342 -10800
-# Node ID 9cdababf6179bd03270d881740fbb5dcc405854f
-# Parent 594c52582b21063bdbc36b38d9f73a3c46abe041
-6761856: OpenJDK: vertical text metrics may be significanly different from those returned by Sun JDK
-Reviewed-by: bae, prr
-
---- openjdk.orig/jdk/src/share/native/sun/font/freetypeScaler.c	Tue Oct 28 14:47:14 2008 -0700
-+++ openjdk/jdk/src/share/native/sun/font/freetypeScaler.c	Wed Oct 29 01:52:22 2008 +0300
-@@ -1281,7 +1281,7 @@ Java_sun_font_FreetypeFontScaler_getGlyp
-                                    sunFontIDs.rect2DFloatClass,
-                                    sunFontIDs.rect2DFloatCtr4,
-                                    F26Dot6ToFloat(bbox.xMin),
--                                   F26Dot6ToFloat(bbox.yMax),
-+                                   F26Dot6ToFloat(-bbox.yMax),
-                                    F26Dot6ToFloat(bbox.xMax-bbox.xMin),
-                                    F26Dot6ToFloat(bbox.yMax-bbox.yMin));
-     }
---- openjdk.orig/jdk/test/java/awt/font/TextLayout/TextLayoutBounds.java	Tue Oct 28 14:47:14 2008 -0700
-+++ openjdk/jdk/test/java/awt/font/TextLayout/TextLayoutBounds.java	Wed Oct 29 01:52:22 2008 +0300
-@@ -22,7 +22,7 @@
-  */
- /* @test
-  * @summary verify TextLayout.getBounds() return visual bounds
-- * @bug 6323611
-+ * @bug 6323611 6761856
-  */
- 
- import java.awt.*;
-@@ -39,10 +39,15 @@ public class TextLayoutBounds {
-        Rectangle2D tlBounds = tl.getBounds();
-        GlyphVector gv = f.createGlyphVector(frc, s);
-        Rectangle2D gvvBounds = gv.getVisualBounds();
-+       Rectangle2D oBounds = tl.getOutline(null).getBounds2D();
-        System.out.println("tlbounds="+tlBounds);
-        System.out.println("gvbounds="+gvvBounds);
-+       System.out.println("outlineBounds="+oBounds);
-        if (!gvvBounds.equals(tlBounds)) {
--          throw new RuntimeException("Bounds differ");
-+          throw new RuntimeException("Bounds differ [gvv != tl]");
-+       }
-+       if (!tlBounds.equals(oBounds)) {
-+          throw new RuntimeException("Bounds differ [tl != outline]");
-        }
-     }
- }
-
--- a/patches/icedtea-explicit-target-arch.patch	Sun Apr 18 17:03:04 2010 +0100
+++ b/patches/icedtea-explicit-target-arch.patch	Sun Apr 18 17:04:10 2010 +0100
@@ -2,12 +2,6 @@
 ===================================================================
 --- openjdk.orig/hotspot/make/linux/makefiles/defs.make	2009-05-18 14:09:57.812930043 +0200
 +++ openjdk/hotspot/make/linux/makefiles/defs.make	2009-05-18 14:30:46.318871170 +0200
-@@ -1,4 +1,4 @@
--#
-+
- # Copyright 2006-2008 Sun Microsystems, Inc.  All Rights Reserved.
- # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- #
 @@ -29,7 +29,11 @@
  SLASH_JAVA ?= /java
  
--- a/patches/icedtea-fonts.patch	Sun Apr 18 17:03:04 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,783 +0,0 @@
---- openjdkold/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.properties	2008-03-26 14:30:01.000000000 +0530
-+++ openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.properties	2008-04-21 11:21:49.000000000 +0530
-@@ -25,134 +25,310 @@
- 
- # Version
- 
--# Uses Fedora Core 6 fonts and file paths.
-+# Uses Fedora 9 fonts and file paths.
- version=1
- 
- # Component Font Mappings
- 
--dialog.plain.latin-1=DejaVu LGC Sans
-+dialog.plain.latin-1=DejaVu Sans
- dialog.plain.japanese-x0208=Sazanami Gothic
- dialog.plain.korean=Baekmuk Gulim
- dialog.plain.chinese-big5=AR PL ShanHeiSun Uni
- dialog.plain.chinese-gb18030=AR PL ShanHeiSun Uni
-+dialog.plain.bengali=Lohit Bengali
-+dialog.plain.gujarati=Lohit Gujarati
-+dialog.plain.hindi=Lohit Hindi
-+dialog.plain.malayalam=Lohit Malayalam
-+dialog.plain.oriya=Lohit Oriya
-+dialog.plain.punjabi=Lohit Punjabi
-+dialog.plain.tamil=Lohit Tamil
-+dialog.plain.telugu=Lohit Telugu
-+dialog.plain.sinhala=LKLUG
- 
--dialog.bold.latin-1=DejaVu LGC Sans Bold
-+dialog.bold.latin-1=DejaVu Sans Bold
- dialog.bold.japanese-x0208=Sazanami Gothic
- dialog.bold.korean=Baekmuk Gulim
- dialog.bold.chinese-big5=AR PL ShanHeiSun Uni
- dialog.bold.chinese-gb18030=AR PL ShanHeiSun Uni
-+dialog.bold.bengali=Lohit Bengali
-+dialog.bold.gujarati=Lohit Gujarati
-+dialog.bold.hindi=Lohit Hindi
-+dialog.bold.malayalam=Lohit Malayalam
-+dialog.bold.oriya=Lohit Oriya
-+dialog.bold.punjabi=Lohit Punjabi
-+dialog.bold.tamil=Lohit Tamil
-+dialog.bold.telugu=Lohit Telugu
-+dialog.bold.sinhala=LKLUG
- 
--dialog.italic.latin-1=DejaVu LGC Sans Oblique
-+dialog.italic.latin-1=DejaVu Sans Oblique
- dialog.italic.japanese-x0208=Sazanami Gothic
- dialog.italic.korean=Baekmuk Gulim
- dialog.italic.chinese-big5=AR PL ShanHeiSun Uni
- dialog.italic.chinese-gb18030=AR PL ShanHeiSun Uni
-+dialog.italic.bengali=Lohit Bengali
-+dialog.italic.gujarati=Lohit Gujarati
-+dialog.italic.hindi=Lohit Hindi
-+dialog.italic.malayalam=Lohit Malayalam
-+dialog.italic.oriya=Lohit Oriya
-+dialog.italic.punjabi=Lohit Punjabi
-+dialog.italic.tamil=Lohit Tamil
-+dialog.italic.telugu=Lohit Telugu
-+dialog.italic.sinhala=LKLUG
- 
--dialog.bolditalic.latin-1=DejaVu LGC Sans Bold Oblique
-+dialog.bolditalic.latin-1=DejaVu Sans Bold Oblique
- dialog.bolditalic.japanese-x0208=Sazanami Gothic
- dialog.bolditalic.korean=Baekmuk Gulim
- dialog.bolditalic.chinese-big5=AR PL ShanHeiSun Uni
- dialog.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni
-+dialog.bolditalic.bengali=Lohit Bengali
-+dialog.bolditalic.gujarati=Lohit Gujarati
-+dialog.bolditalic.hindi=Lohit Hindi
-+dialog.bolditalic.malayalam=Lohit Malayalam
-+dialog.bolditalic.oriya=Lohit Oriya
-+dialog.bolditalic.punjabi=Lohit Punjabi
-+dialog.bolditalic.tamil=Lohit Tamil
-+dialog.bolditalic.telugu=Lohit Telugu
-+dialog.bolditalic.sinhala=LKLUG
- 
--
--sansserif.plain.latin-1=DejaVu LGC Sans
-+sansserif.plain.latin-1=DejaVu Sans
- sansserif.plain.japanese-x0208=Sazanami Gothic
- sansserif.plain.korean=Baekmuk Gulim
- sansserif.plain.chinese-big5=AR PL ShanHeiSun Uni
- sansserif.plain.chinese-gb18030=AR PL ShanHeiSun Uni
-+sansserif.plain.bengali=Lohit Bengali
-+sansserif.plain.gujarati=Lohit Gujarati
-+sansserif.plain.hindi=Lohit Hindi
-+sansserif.plain.malayalam=Lohit Malayalam
-+sansserif.plain.oriya=Lohit Oriya
-+sansserif.plain.punjabi=Lohit Punjabi
-+sansserif.plain.tamil=Lohit Tamil
-+sansserif.plain.telugu=Lohit Telugu
-+sansserif.plain.sinhala=LKLUG
- 
--sansserif.bold.latin-1=DejaVu LGC Sans Bold
-+sansserif.bold.latin-1=DejaVu Sans Bold
- sansserif.bold.japanese-x0208=Sazanami Gothic
- sansserif.bold.korean=Baekmuk Gulim
- sansserif.bold.chinese-big5=AR PL ShanHeiSun Uni
- sansserif.bold.chinese-gb18030=AR PL ShanHeiSun Uni
-+sansserif.bold.bengali=Lohit Bengali
-+sansserif.bold.gujarati=Lohit Gujarati
-+sansserif.bold.hindi=Lohit Hindi
-+sansserif.bold.malayalam=Lohit Malayalam
-+sansserif.bold.oriya=Lohit Oriya
-+sansserif.bold.punjabi=Lohit Punjabi
-+sansserif.bold.tamil=Lohit Tamil
-+sansserif.bold.telugu=Lohit Telugu
-+sansserif.bold.sinhala=LKLUG
- 
--sansserif.italic.latin-1=DejaVu LGC Sans Oblique
-+sansserif.italic.latin-1=DejaVu Sans Oblique
- sansserif.italic.japanese-x0208=Sazanami Gothic
- sansserif.italic.korean=Baekmuk Gulim
- sansserif.italic.chinese-big5=AR PL ShanHeiSun Uni
- sansserif.italic.chinese-gb18030=AR PL ShanHeiSun Uni
-+sansserif.italic.bengali=Lohit Bengali
-+sansserif.italic.gujarati=Lohit Gujarati
-+sansserif.italic.hindi=Lohit Hindi
-+sansserif.italic.malayalam=Lohit Malayalam
-+sansserif.italic.oriya=Lohit Oriya
-+sansserif.italic.punjabi=Lohit Punjabi
-+sansserif.italic.tamil=Lohit Tamil
-+sansserif.italic.telugu=Lohit Telugu
-+sansserif.italic.sinhala=LKLUG
- 
--sansserif.bolditalic.latin-1=DejaVu LGC Sans Bold Oblique
-+sansserif.bolditalic.latin-1=DejaVu Sans Bold Oblique
- sansserif.bolditalic.japanese-x0208=Sazanami Gothic
- sansserif.bolditalic.korean=Baekmuk Gulim
- sansserif.bolditalic.chinese-big5=AR PL ShanHeiSun Uni
- sansserif.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni
-+sansserif.bolditalic.bengali=Lohit Bengali
-+sansserif.bolditalic.gujarati=Lohit Gujarati
-+sansserif.bolditalic.hindi=Lohit Hindi
-+sansserif.bolditalic.malayalam=Lohit Malayalam
-+sansserif.bolditalic.oriya=Lohit Oriya
-+sansserif.bolditalic.punjabi=Lohit Punjabi
-+sansserif.bolditalic.tamil=Lohit Tamil
-+sansserif.bolditalic.telugu=Lohit Telugu
-+sansserif.bolditalic.sinhala=LKLUG
- 
--
--serif.plain.latin-1=DejaVu LGC Serif
-+serif.plain.latin-1=DejaVu Serif
- serif.plain.japanese-x0208=Sazanami Mincho
- serif.plain.korean=Baekmuk Batang
- serif.plain.chinese-big5=AR PL ZenKai Uni
- serif.plain.chinese-gb18030=AR PL ZenKai Uni
-+serif.plain.bengali=Lohit Bengali
-+serif.plain.gujarati=Lohit Gujarati
-+serif.plain.hindi=Lohit Hindi
-+serif.plain.malayalam=Lohit Malayalam
-+serif.plain.oriya=Lohit Oriya
-+serif.plain.punjabi=Lohit Punjabi
-+serif.plain.tamil=Lohit Tamil
-+serif.plain.telugu=Lohit Telugu
-+serif.plain.sinhala=LKLUG
- 
--serif.bold.latin-1=DejaVu LGC Serif Bold
-+serif.bold.latin-1=DejaVu Serif Bold
- serif.bold.japanese-x0208=Sazanami Mincho
- serif.bold.korean=Baekmuk Batang
- serif.bold.chinese-big5=AR PL ZenKai Uni
- serif.bold.chinese-gb18030=AR PL ZenKai Uni
-+serif.bold.bengali=Lohit Bengali
-+serif.bold.gujarati=Lohit Gujarati
-+serif.bold.hindi=Lohit Hindi
-+serif.bold.malayalam=Lohit Malayalam
-+serif.bold.oriya=Lohit Oriya
-+serif.bold.punjabi=Lohit Punjabi
-+serif.bold.tamil=Lohit Tamil
-+serif.bold.telugu=Lohit Telugu
-+serif.bold.sinhala=LKLUG
- 
--serif.italic.latin-1=DejaVu LGC Serif Oblique
-+serif.italic.latin-1=DejaVu Serif Oblique
- serif.italic.japanese-x0208=Sazanami Mincho
- serif.italic.korean=Baekmuk Batang
- serif.italic.chinese-big5=AR PL ZenKai Uni
- serif.italic.chinese-gb18030=AR PL ZenKai Uni
-+serif.italic.bengali=Lohit Bengali
-+serif.italic.gujarati=Lohit Gujarati
-+serif.italic.hindi=Lohit Hindi
-+serif.italic.malayalam=Lohit Malayalam
-+serif.italic.oriya=Lohit Oriya
-+serif.italic.punjabi=Lohit Punjabi
-+serif.italic.tamil=Lohit Tamil
-+serif.italic.telugu=Lohit Telugu
-+serif.italic.sinhala=LKLUG
- 
--serif.bolditalic.latin-1=DejaVu LGC Serif Bold Oblique
-+serif.bolditalic.latin-1=DejaVu Serif Bold Oblique
- serif.bolditalic.japanese-x0208=Sazanami Mincho
- serif.bolditalic.korean=Baekmuk Batang
- serif.bolditalic.chinese-big5=AR PL ZenKai Uni
- serif.bolditalic.chinese-gb18030=AR PL ZenKai Uni
-+serif.bolditalic.bengali=Lohit Bengali
-+serif.bolditalic.gujarati=Lohit Gujarati
-+serif.bolditalic.hindi=Lohit Hindi
-+serif.bolditalic.malayalam=Lohit Malayalam
-+serif.bolditalic.oriya=Lohit Oriya
-+serif.bolditalic.punjabi=Lohit Punjabi
-+serif.bolditalic.tamil=Lohit Tamil
-+serif.bolditalic.telugu=Lohit Telugu
-+serif.bolditalic.sinhala=LKLUG
- 
--
--monospaced.plain.latin-1=DejaVu LGC Sans Mono
-+monospaced.plain.latin-1=DejaVu Sans Mono
- monospaced.plain.japanese-x0208=Sazanami Gothic
- monospaced.plain.korean=Baekmuk Gulim
- monospaced.plain.chinese-big5=AR PL ShanHeiSun Uni
- monospaced.plain.chinese-gb18030=AR PL ShanHeiSun Uni
-+monospaced.plain.bengali=Lohit Bengali
-+monospaced.plain.gujarati=Lohit Gujarati
-+monospaced.plain.hindi=Lohit Hindi
-+monospaced.plain.malayalam=Lohit Malayalam
-+monospaced.plain.oriya=Lohit Oriya
-+monospaced.plain.punjabi=Lohit Punjabi
-+monospaced.plain.tamil=Lohit Tamil
-+monospaced.plain.telugu=Lohit Telugu
-+monospaced.plain.sinhala=LKLUG
- 
--monospaced.bold.latin-1=DejaVu LGC Sans Mono Bold
-+monospaced.bold.latin-1=DejaVu Sans Mono Bold
- monospaced.bold.japanese-x0208=Sazanami Gothic
- monospaced.bold.korean=Baekmuk Gulim
- monospaced.bold.chinese-big5=AR PL ShanHeiSun Uni
- monospaced.bold.chinese-gb18030=AR PL ShanHeiSun Uni
-+monospaced.bold.bengali=Lohit Bengali
-+monospaced.bold.gujarati=Lohit Gujarati
-+monospaced.bold.hindi=Lohit Hindi
-+monospaced.bold.malayalam=Lohit Malayalam
-+monospaced.bold.oriya=Lohit Oriya
-+monospaced.bold.punjabi=Lohit Punjabi
-+monospaced.bold.tamil=Lohit Tamil
-+monospaced.bold.telugu=Lohit Telugu
-+monospaced.bold.sinhala=LKLUG
- 
--monospaced.italic.latin-1=DejaVu LGC Sans Mono Oblique
-+monospaced.italic.latin-1=DejaVu Sans Mono Oblique
- monospaced.italic.japanese-x0208=Sazanami Gothic
- monospaced.italic.korean=Baekmuk Gulim
- monospaced.italic.chinese-big5=AR PL ShanHeiSun Uni
- monospaced.italic.chinese-gb18030=AR PL ShanHeiSun Uni
-+monospaced.italic.bengali=Lohit Bengali
-+monospaced.italic.gujarati=Lohit Gujarati
-+monospaced.italic.hindi=Lohit Hindi
-+monospaced.italic.malayalam=Lohit Malayalam
-+monospaced.italic.oriya=Lohit Oriya
-+monospaced.italic.punjabi=Lohit Punjabi
-+monospaced.italic.tamil=Lohit Tamil
-+monospaced.italic.telugu=Lohit Telugu
-+monospaced.italic.sinhala=LKLUG
- 
--monospaced.bolditalic.latin-1=DejaVu LGC Sans Mono Bold Oblique
-+monospaced.bolditalic.latin-1=DejaVu Sans Mono Bold Oblique
- monospaced.bolditalic.japanese-x0208=Sazanami Gothic
- monospaced.bolditalic.korean=Baekmuk Gulim
- monospaced.bolditalic.chinese-big5=AR PL ShanHeiSun Uni
- monospaced.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni
-+monospaced.bolditalic.bengali=Lohit Bengali
-+monospaced.bolditalic.gujarati=Lohit Gujarati
-+monospaced.bolditalic.hindi=Lohit Hindi
-+monospaced.bolditalic.malayalam=Lohit Malayalam
-+monospaced.bolditalic.oriya=Lohit Oriya
-+monospaced.bolditalic.punjabi=Lohit Punjabi
-+monospaced.bolditalic.tamil=Lohit Tamil
-+monospaced.bolditalic.telugu=Lohit Telugu
-+monospaced.bolditalic.sinhala=LKLUG
- 
--
--dialoginput.plain.latin-1=DejaVu LGC Sans Mono
-+dialoginput.plain.latin-1=DejaVu Sans Mono
- dialoginput.plain.japanese-x0208=Sazanami Gothic
- dialoginput.plain.korean=Baekmuk Gulim
- dialoginput.plain.chinese-big5=AR PL ShanHeiSun Uni
- dialoginput.plain.chinese-gb18030=AR PL ShanHeiSun Uni
-+dialoginput.plain.bengali=Lohit Bengali
-+dialoginput.plain.gujarati=Lohit Gujarati
-+dialoginput.plain.hindi=Lohit Hindi
-+dialoginput.plain.malayalam=Lohit Malayalam
-+dialoginput.plain.oriya=Lohit Oriya
-+dialoginput.plain.punjabi=Lohit Punjabi
-+dialoginput.plain.tamil=Lohit Tamil
-+dialoginput.plain.telugu=Lohit Telugu
-+dialoginput.plain.sinhala=LKLUG
- 
--dialoginput.bold.latin-1=DejaVu LGC Sans Mono Bold
-+dialoginput.bold.latin-1=DejaVu Sans Mono Bold
- dialoginput.bold.japanese-x0208=Sazanami Gothic
- dialoginput.bold.korean=Baekmuk Gulim
- dialoginput.bold.chinese-big5=AR PL ShanHeiSun Uni
- dialoginput.bold.chinese-gb18030=AR PL ShanHeiSun Uni
-+dialoginput.bold.bengali=Lohit Bengali
-+dialoginput.bold.gujarati=Lohit Gujarati
-+dialoginput.bold.hindi=Lohit Hindi
-+dialoginput.bold.malayalam=Lohit Malayalam
-+dialoginput.bold.oriya=Lohit Oriya
-+dialoginput.bold.punjabi=Lohit Punjabi
-+dialoginput.bold.tamil=Lohit Tamil
-+dialoginput.bold.telugu=Lohit Telugu
-+dialoginput.bold.sinhala=LKLUG
- 
--dialoginput.italic.latin-1=DejaVu LGC Sans Mono Oblique
-+dialoginput.italic.latin-1=DejaVu Sans Mono Oblique
- dialoginput.italic.japanese-x0208=Sazanami Gothic
- dialoginput.italic.korean=Baekmuk Gulim
- dialoginput.italic.chinese-big5=AR PL ShanHeiSun Uni
- dialoginput.italic.chinese-gb18030=AR PL ShanHeiSun Uni
-+dialoginput.italic.bengali=Lohit Bengali
-+dialoginput.italic.gujarati=Lohit Gujarati
-+dialoginput.italic.hindi=Lohit Hindi
-+dialoginput.italic.malayalam=Lohit Malayalam
-+dialoginput.italic.oriya=Lohit Oriya
-+dialoginput.italic.punjabi=Lohit Punjabi
-+dialoginput.italic.tamil=Lohit Tamil
-+dialoginput.italic.telugu=Lohit Telugu
-+dialoginput.italic.sinhala=LKLUG
- 
--dialoginput.bolditalic.latin-1=DejaVu LGC Sans Mono Bold Oblique
-+dialoginput.bolditalic.latin-1=DejaVu Sans Mono Bold Oblique
- dialoginput.bolditalic.japanese-x0208=Sazanami Gothic
- dialoginput.bolditalic.korean=Baekmuk Gulim
- dialoginput.bolditalic.chinese-big5=AR PL ShanHeiSun Uni
- dialoginput.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni
-+dialoginput.bolditalic.bengali=Lohit Bengali
-+dialoginput.bolditalic.gujarati=Lohit Gujarati
-+dialoginput.bolditalic.hindi=Lohit Hindi
-+dialoginput.bolditalic.malayalam=Lohit Malayalam
-+dialoginput.bolditalic.oriya=Lohit Oriya
-+dialoginput.bolditalic.punjabi=Lohit Punjabi
-+dialoginput.bolditalic.tamil=Lohit Tamil
-+dialoginput.bolditalic.telugu=Lohit Telugu
-+dialoginput.bolditalic.sinhala=LKLUG
- 
- # Search Sequences
- 
-@@ -161,28 +337,40 @@
- sequence.allfonts.x-euc-jp-linux=japanese-x0208,latin-1
- sequence.allfonts.EUC-KR=korean,latin-1
- sequence.allfonts.GB18030=chinese-gb18030,latin-1
--sequence.fallback=chinese-big5,chinese-gb18030,japanese-x0208,korean
-+sequence.fallback=chinese-big5,chinese-gb18030,japanese-x0208,korean,bengali,gujarati,hindi,oriya,punjabi,malayalam,tamil,telugu,sinhala
- 
- # Font File Names
- 
--filename.DejaVu_LGC_Sans=/usr/share/fonts/dejavu-lgc/DejaVuLGCSans.ttf
--filename.DejaVu_LGC_Sans_Bold=/usr/share/fonts/dejavu-lgc/DejaVuLGCSans-Bold.ttf
--filename.DejaVu_LGC_Sans_Oblique=/usr/share/fonts/dejavu-lgc/DejaVuLGCSans-Oblique.ttf
--filename.DejaVu_LGC_Sans_Bold_Oblique=/usr/share/fonts/dejavu-lgc/DejaVuLGCSans-BoldOblique.ttf
--
--filename.DejaVu_LGC_Sans_Mono=/usr/share/fonts/dejavu-lgc/DejaVuLGCSansMono.ttf
--filename.DejaVu_LGC_Sans_Mono_Bold=/usr/share/fonts/dejavu-lgc/DejaVuLGCSansMono-Bold.ttf
--filename.DejaVu_LGC_Sans_Mono_Oblique=/usr/share/fonts/dejavu-lgc/DejaVuLGCSansMono-Oblique.ttf
--filename.DejaVu_LGC_Sans_Mono_Bold_Oblique=/usr/share/fonts/dejavu-lgc/DejaVuLGCSansMono-BoldOblique.ttf
--
--filename.DejaVu_LGC_Serif=/usr/share/fonts/dejavu-lgc/DejaVuLGCSerif.ttf
--filename.DejaVu_LGC_Serif_Bold=/usr/share/fonts/dejavu-lgc/DejaVuLGCSerif-Bold.ttf
--filename.DejaVu_LGC_Serif_Oblique=/usr/share/fonts/dejavu-lgc/DejaVuLGCSerif-Oblique.ttf
--filename.DejaVu_LGC_Serif_Bold_Oblique=/usr/share/fonts/dejavu-lgc/DejaVuLGCSerif-BoldOblique.ttf
--
--filename.Sazanami_Gothic=/usr/share/fonts/japanese/TrueType/sazanami-gothic.ttf
--filename.Sazanami_Mincho=/usr/share/fonts/japanese/TrueType/sazanami-mincho.ttf
--filename.AR_PL_ShanHeiSun_Uni=/usr/share/fonts/chinese/TrueType/uming.ttf
--filename.AR_PL_ZenKai_Uni=/usr/share/fonts/chinese/TrueType/ukai.ttf
--filename.Baekmuk_Gulim=/usr/share/fonts/korean/TrueType/gulim.ttf
--filename.Baekmuk_Batang=/usr/share/fonts/korean/TrueType/batang.ttf
-+filename.DejaVu_Sans=/usr/share/fonts/dejavu/DejaVuSans.ttf
-+filename.DejaVu_Sans_Bold=/usr/share/fonts/dejavu/DejaVuSans-Bold.ttf
-+filename.DejaVu_Sans_Oblique=/usr/share/fonts/dejavu/DejaVuSans-Oblique.ttf
-+filename.DejaVu_Sans_Bold_Oblique=/usr/share/fonts/dejavu/DejaVuSans-BoldOblique.ttf
-+
-+filename.DejaVu_Sans_Mono=/usr/share/fonts/dejavu/DejaVuSansMono.ttf
-+filename.DejaVu_Sans_Mono_Bold=/usr/share/fonts/dejavu/DejaVuSansMono-Bold.ttf
-+filename.DejaVu_Sans_Mono_Oblique=/usr/share/fonts/dejavu/DejaVuSansMono-Oblique.ttf
-+filename.DejaVu_Sans_Mono_Bold_Oblique=/usr/share/fonts/dejavu/DejaVuSansMono-BoldOblique.ttf
-+
-+filename.DejaVu_Serif=/usr/share/fonts/dejavu/DejaVuSerif.ttf
-+filename.DejaVu_Serif_Bold=/usr/share/fonts/dejavu/DejaVuSerif-Bold.ttf
-+filename.DejaVu_Serif_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-Oblique.ttf
-+filename.DejaVu_Serif_Bold_Oblique=/usr/share/fonts/dejavu/DejaVuSerif-BoldOblique.ttf
-+
-+filename.Sazanami_Gothic=/usr/share/fonts/sazanami-fonts-gothic/sazanami-gothic.ttf
-+filename.Sazanami_Mincho=/usr/share/fonts/sazanami-fonts-mincho/sazanami-mincho.ttf
-+filename.AR_PL_ShanHeiSun_Uni=/usr/share/fonts/cjkunifonts-uming/uming.ttc
-+filename.AR_PL_ZenKai_Uni=/usr/share/fonts/cjkunifonts-ukai/ukai.ttc
-+filename.Baekmuk_Gulim=/usr/share/fonts/baekmuk-ttf-gulim/gulim.ttf
-+filename.Baekmuk_Batang=/usr/share/fonts/baekmuk-ttf-batang/batang.ttf
-+
-+filename.Lohit_Bengali=/usr/share/fonts/lohit-bengali/lohit_bn.ttf
-+filename.Lohit_Gujarati=/usr/share/fonts/lohit-gujarati/lohit_gu.ttf
-+filename.Lohit_Hindi=/usr/share/fonts/lohit-hindi/lohit_hi.ttf
-+filename.Lohit_Kannda=/usr/share/fonts/lohit-kannada/lohit_kn.ttf
-+filename.Lohit_Malayalam=/usr/share/fonts/lohit-malayalam/lohit_ml.ttf
-+filename.Lohit_Oriya=/usr/share/fonts/lohit-oriya/lohit_or.ttf
-+filename.Lohit_Punjabi=/usr/share/fonts/lohit-punjabi/lohit_pa.ttf
-+filename.Lohit_Tamil=/usr/share/fonts/lohit-tamil/lohit_ta.ttf
-+filename.Lohit_Telugu=/usr/share/fonts/lohit-telugu/lohit_te.ttf
-+filename.LKLUG=/usr/share/fonts/lklug/lklug.ttf
-+
---- openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Ubuntu.properties.orig	2009-05-05 15:35:28.000000000 +0000
-+++ openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Ubuntu.properties	2009-05-05 15:36:52.000000000 +0000
-@@ -25,106 +25,253 @@
- 
- # Version
- 
--# Uses Ubuntu 6.10 (Edgy) fonts and file paths.
-+# Uses Ubuntu 8.04 (hardy), Debian 6.0 (Squeeze) (and more recent releases) fonts and file paths.
- version=1
- 
- # Component Font Mappings
- 
--dialog.plain.latin-1=DejaVu Sans
--dialog.plain.japanese-x0208=Kochi Gothic
--dialog.plain.korean=Baekmuk Dotum
-+# Chinese fonts
-+allfonts.umingcn=AR PL UMing CN
-+#allfonts.umingcn.motif=AR PL UMing CN
-+allfonts.uminghk=AR PL UMing HK
-+#allfonts.uminghk.motif=AR PL UMing HK
-+allfonts.umingtw=AR PL UMing TW
-+#allfonts.umingtw.motif=AR PL UMing TW
-+allfonts.wqy-zenhei=WenQuanYi Zen Hei
-+#allfonts.wqy-zenhei.motif=WenQuanYi Zen Hei
-+allfonts.shanheisun=AR PL ShanHeiSun Uni
-+#allfonts.shanheisun.motif=AR PL ShanHeiSun Uni
-+
-+# Indic scripts
-+allfonts.bengali=Lohit Bengali
-+allfonts.gujarati=Lohit Gujarati
-+allfonts.hindi=Lohit Hindi
-+#allfonts.malayalam=Lohit Malayalam
-+allfonts.oriya=Lohit Oriya
-+allfonts.punjabi=Lohit Punjabi
-+allfonts.tamil=Lohit Tamil
-+allfonts.telugu=Lohit Telugu
-+allfonts.sinhala=LKLUG
- 
--dialog.bold.latin-1=DejaVu Sans Bold
--dialog.bold.japanese-x0208=Kochi Gothic
--dialog.bold.korean=Baekmuk Dotum
- 
--dialog.italic.latin-1=DejaVu Sans Oblique
--dialog.italic.japanese-x0208=Kochi Gothic
--dialog.italic.korean=Baekmuk Dotum
-+serif.plain.latin-1=DejaVu Serif
-+#serif.plain.latin-1.motif=LuxiSerif-Regular
-+serif.plain.japanese-kochi=Kochi Mincho
-+serif.plain.japanese-sazanami=Sazanami Mincho
-+serif.plain.japanese-vlgothic=Sazanami Mincho
-+serif.plain.korean-baekmuk=Baekmuk Batang
-+#serif.plain.korean-baekmuk.motif=Baekmuk Batang
-+serif.plain.korean-un=UnBatang
-+#serif.plain.korean-un.motif=UnBatang
- 
--dialog.bolditalic.latin-1=DejaVu Sans Bold Oblique
--dialog.bolditalic.japanese-x0208=Kochi Gothic
--dialog.bolditalic.korean=Baekmuk Dotum
-+serif.bold.latin-1=DejaVu Serif Bold
-+#serif.bold.latin-1.motif=LuxiSerif-Bold
-+serif.bold.japanese-kochi=Kochi Mincho
-+serif.bold.japanese-sazanami=Sazanami Mincho
-+serif.bold.japanese-vlgothic=Sazanami Mincho
-+serif.bold.korean-baekmuk=Baekmuk Batang
-+#serif.bold.korean-baekmuk.motif=Baekmuk Batang
-+serif.bold.korean-un=UnBatang Bold
-+#serif.bold.korean-un.motif=UnBatang Bold
-+
-+serif.italic.latin-1=DejaVu Serif Oblique
-+#serif.italic.latin-1.motif=LuxiSerif-Oblique
-+serif.italic.japanese-kochi=Kochi Mincho
-+serif.italic.japanese-sazanami=Sazanami Mincho
-+serif.italic.japanese-vlgothic=Sazanami Mincho
-+serif.italic.korean-baekmuk=Baekmuk Batang
-+#serif.italic.korean-baekmuk.motif=Baekmuk Batang
-+serif.italic.korean-un=UnBatang
-+#serif.italic.korean-un.motif=UnBatang
- 
-+serif.bolditalic.latin-1=DejaVu Serif Bold Oblique
-+#serif.bolditalic.latin-1.motif=LuxiSerif-BoldOblique
-+serif.bolditalic.japanese-kochi=Kochi Mincho
-+serif.bolditalic.japanese-sazanami=Sazanami Mincho
-+serif.bolditalic.japanese-vlgothic=Sazanami Mincho
-+serif.bolditalic.korean-baekmuk=Baekmuk Batang
-+#serif.bolditalic.korean-baekmuk.motif=Baekmuk Batang
-+serif.bolditalic.korean-un=UnBatang Bold
-+#serif.bolditalic.korean-un.motif=UnBatang Bold
- 
- sansserif.plain.latin-1=DejaVu Sans
--sansserif.plain.japanese-x0208=Kochi Gothic
--sansserif.plain.korean=Baekmuk Dotum
-+#sansserif.plain.latin-1.motif=LuxiSans-Regular
-+sansserif.plain.japanese-kochi=Kochi Gothic
-+sansserif.plain.japanese-sazanami=Sazanami Gothic
-+sansserif.plain.japanese-vlgothic=VL PGothic
-+sansserif.plain.korean-baekmuk=Baekmuk Gulim
-+#sansserif.plain.korean-baekmuk.motif=Baekmuk Gulim
-+sansserif.plain.korean-un=UnDotum
-+#sansserif.plain.korean-un.motif=UnDotum
- 
- sansserif.bold.latin-1=DejaVu Sans Bold
--sansserif.bold.japanese-x0208=Kochi Gothic
--sansserif.bold.korean=Baekmuk Dotum
-+#sansserif.bold.latin-1.motif=LuxiSans-Bold
-+sansserif.bold.japanese-kochi=Kochi Gothic
-+sansserif.bold.japanese-sazanami=Sazanami Gothic
-+sansserif.bold.japanese-vlgothic=VL PGothic
-+sansserif.bold.korean-baekmuk=Baekmuk Gulim
-+#sansserif.bold.korean-baekmuk.motif=Baekmuk Gulim
-+sansserif.bold.korean-un=UnDotum Bold
-+#sansserif.bold.korean-un.motif=UnDotum Bold
- 
- sansserif.italic.latin-1=DejaVu Sans Oblique
--sansserif.italic.japanese-x0208=Kochi Gothic
--sansserif.italic.korean=Baekmuk Dotum
-+#sansserif.italic.latin-1.motif=LuxiSans-Oblique
-+sansserif.italic.japanese-kochi=Kochi Gothic
-+sansserif.italic.japanese-sazanami=Sazanami Gothic
-+sansserif.italic.japanese-vlgothic=VL PGothic
-+sansserif.italic.korean-baekmuk=Baekmuk Gulim
-+#sansserif.italic.korean-baekmuk.motif=Baekmuk Gulim
-+sansserif.italic.korean-un=UnDotum
-+#sansserif.italic.korean-un.motif=UnDotum
- 
- sansserif.bolditalic.latin-1=DejaVu Sans Bold Oblique
--sansserif.bolditalic.japanese-x0208=Kochi Gothic
--sansserif.bolditalic.korean=Baekmuk Dotum
--
--
--serif.plain.latin-1=DejaVu Serif
--serif.plain.japanese-x0208=Kochi Mincho
--serif.plain.korean=Baekmuk Batang
--
--serif.bold.latin-1=DejaVu Serif Bold
--serif.bold.japanese-x0208=Kochi Mincho
--serif.bold.korean=Baekmuk Batang
--
--serif.italic.latin-1=DejaVu Serif Oblique
--serif.italic.japanese-x0208=Kochi Mincho
--serif.italic.korean=Baekmuk Batang
--
--serif.bolditalic.latin-1=DejaVu Serif Bold Oblique
--serif.bolditalic.japanese-x0208=Kochi Mincho
--serif.bolditalic.korean=Baekmuk Batang
--
-+#sansserif.bolditalic.latin-1.motif=LuxiSans-BoldOblique
-+sansserif.bolditalic.japanese-kochi=Kochi Gothic
-+sansserif.bolditalic.japanese-sazanami=Sazanami Gothic
-+sansserif.bolditalic.japanese-vlgothic=VL PGothic
-+sansserif.bolditalic.korean-baekmuk=Baekmuk Gulim
-+#sansserif.bolditalic.korean-baekmuk.motif=Baekmuk Gulim
-+sansserif.bolditalic.korean-un=UnDotum Bold
-+#sansserif.bolditalic.korean-un.motif=UnDotum Bold
- 
- monospaced.plain.latin-1=DejaVu Sans Mono
--monospaced.plain.japanese-x0208=Kochi Gothic
--monospaced.plain.korean=Baekmuk Dotum
-+#monospaced.plain.latin-1.motif=LuxiMono-Regular
-+monospaced.plain.japanese-kochi=Kochi Gothic
-+monospaced.plain.japanese-sazanami=Sazanami Gothic
-+monospaced.plain.japanese-vlgothic=VL Gothic
-+monospaced.plain.korean-baekmuk=Baekmuk Gulim
-+#monospaced.plain.korean-baekmuk.motif=Baekmuk Gulim
-+monospaced.plain.korean-un=UnDotum
-+#monospaced.plain.korean-un.motif=UnDotum
- 
- monospaced.bold.latin-1=DejaVu Sans Mono Bold
--monospaced.bold.japanese-x0208=Kochi Gothic
--monospaced.bold.korean=Baekmuk Dotum
-+#monospaced.bold.latin-1.motif=LuxiMono-Bold
-+monospaced.bold.japanese-kochi=Kochi Gothic
-+monospaced.bold.japanese-sazanami=Sazanami Gothic
-+monospaced.bold.japanese-vlgothic=VL Gothic
-+monospaced.bold.korean-baekmuk=Baekmuk Gulim
-+#monospaced.bold.korean-baekmuk.motif=Baekmuk Gulim
-+monospaced.bold.korean-un=UnDotum Bold
-+#monospaced.bold.korean-un.motif=UnDotum Bold
- 
- monospaced.italic.latin-1=DejaVu Sans Mono Oblique
--monospaced.italic.japanese-x0208=Kochi Gothic
--monospaced.italic.korean=Baekmuk Dotum
-+#monospaced.italic.latin-1.motif=LuxiMono-Oblique
-+monospaced.italic.japanese-kochi=Kochi Gothic
-+monospaced.italic.japanese-sazanami=Sazanami Gothic
-+monospaced.italic.japanese-vlgothic=VL Gothic
-+monospaced.italic.korean-baekmuk=Baekmuk Gulim
-+#monospaced.italic.korean-baekmuk.motif=Baekmuk Gulim
-+monospaced.italic.korean-un=UnDotum
-+#monospaced.italic.korean-un.motif=UnDotum
- 
- monospaced.bolditalic.latin-1=DejaVu Sans Mono Bold Oblique
--monospaced.bolditalic.japanese-x0208=Kochi Gothic
--monospaced.bolditalic.korean=Baekmuk Dotum
-+#monospaced.bolditalic.latin-1.motif=LuxiMono-BoldOblique
-+monospaced.bolditalic.japanese-kochi=Kochi Gothic
-+monospaced.bolditalic.japanese-sazanami=Sazanami Gothic
-+monospaced.bolditalic.japanese-vlgothic=VL Gothic
-+monospaced.bolditalic.korean-baekmuk=Baekmuk Gulim
-+#monospaced.bolditalic.korean-baekmuk.motif=Baekmuk Gulim
-+monospaced.bolditalic.korean-un=UnDotum Bold
-+#monospaced.bolditalic.korean-un.motif=UnDotum Bold
-+
-+dialog.plain.latin-1=DejaVu Sans
-+#dialog.plain.latin-1.motif=LuxiSans-Regular
-+dialog.plain.japanese-kochi=Kochi Gothic
-+dialog.plain.japanese-sazanami=Sazanami Gothic
-+dialog.plain.japanese-vlgothic=VL PGothic
-+dialog.plain.korean-baekmuk=Baekmuk Gulim
-+#dialog.plain.korean-baekmuk.motif=Baekmuk Gulim
-+dialog.plain.korean-un=UnDotum
-+#dialog.plain.korean-un.motif=UnDotum
- 
-+dialog.bold.latin-1=DejaVu Sans Bold
-+#dialog.bold.latin-1.motif=LuxiSans-Bold
-+dialog.bold.japanese-kochi=Kochi Gothic
-+dialog.bold.japanese-sazanami=Sazanami Gothic
-+dialog.bold.japanese-vlgothic=VL PGothic
-+dialog.bold.korean-baekmuk=Baekmuk Gulim
-+#dialog.bold.korean-baekmuk.motif=Baekmuk Gulim
-+dialog.bold.korean-un=UnDotum Bold
-+#dialog.bold.korean-un.motif=UnDotum Bold
-+
-+dialog.italic.latin-1=DejaVu Sans Oblique
-+#dialog.italic.latin-1.motif=LuxiSans-Oblique
-+dialog.italic.japanese-kochi=Kochi Gothic
-+dialog.italic.japanese-sazanami=Sazanami Gothic
-+dialog.italic.japanese-vlgothic=VL PGothic
-+dialog.italic.korean-baekmuk=Baekmuk Gulim
-+#dialog.italic.korean-baekmuk.motif=Baekmuk Gulim
-+dialog.italic.korean-un=UnDotum
-+#dialog.italic.korean-un.motif=UnDotum
-+
-+dialog.bolditalic.latin-1=DejaVu Sans Bold Oblique
-+#dialog.bolditalic.latin-1.motif=LuxiSans-BoldOblique
-+dialog.bolditalic.japanese-kochi=Kochi Gothic
-+dialog.bolditalic.japanese-sazanami=Sazanami Gothic
-+dialog.bolditalic.japanese-vlgothic=VL PGothic
-+dialog.bolditalic.korean-baekmuk=Baekmuk Gulim
-+#dialog.bolditalic.korean-baekmuk.motif=Baekmuk Gulim
-+dialog.bolditalic.korean-un=UnDotum Bold
-+#dialog.bolditalic.korean-un.motif=UnDotum Bold
- 
- dialoginput.plain.latin-1=DejaVu Sans Mono
--dialoginput.plain.japanese-x0208=Kochi Gothic
--dialoginput.plain.korean=Baekmuk Dotum
-+#dialoginput.plain.latin-1.motif=LuxiMono-Regular
-+dialoginput.plain.japanese-kochi=Kochi Gothic
-+dialoginput.plain.japanese-sazanami=Sazanami Gothic
-+dialoginput.plain.japanese-vlgothic=VL Gothic
-+dialoginput.plain.korean-baekmuk=Baekmuk Gulim
-+#dialoginput.plain.korean-baekmuk.motif=Baekmuk Gulim
-+dialoginput.plain.korean-un=UnDotum
-+#dialoginput.plain.korean-un.motif=UnDotum
- 
- dialoginput.bold.latin-1=DejaVu Sans Mono Bold
--dialoginput.bold.japanese-x0208=Kochi Gothic
--dialoginput.bold.korean=Baekmuk Dotum
-+#dialoginput.bold.latin-1.motif=LuxiMono-Bold
-+dialoginput.bold.japanese-kochi=Kochi Gothic
-+dialoginput.bold.japanese-sazanami=Sazanami Gothic
-+dialoginput.bold.japanese-vlgothic=VL Gothic
-+dialoginput.bold.korean-baekmuk=Baekmuk Gulim
-+#dialoginput.bold.korean-baekmuk.motif=Baekmuk Gulim
-+dialoginput.bold.korean-un=UnDotum Bold
-+#dialoginput.bold.korean-un.motif=UnDotum Bold
- 
- dialoginput.italic.latin-1=DejaVu Sans Mono Oblique
--dialoginput.italic.japanese-x0208=Kochi Gothic
--dialoginput.italic.korean=Baekmuk Dotum
-+#dialoginput.italic.latin-1.motif=LuxiMono-Oblique
-+dialoginput.italic.japanese-kochi=Kochi Gothic
-+dialoginput.italic.japanese-sazanami=Sazanami Gothic
-+dialoginput.italic.japanese-vlgothic=VL Gothic
-+dialoginput.italic.korean-baekmuk=Baekmuk Gulim
-+#dialoginput.italic.korean-baekmuk.motif=Baekmuk Gulim
-+dialoginput.italic.korean-un=UnDotum
-+#dialoginput.italic.korean-un.motif=UnDotum
- 
- dialoginput.bolditalic.latin-1=DejaVu Sans Mono Bold Oblique
--dialoginput.bolditalic.japanese-x0208=Kochi Gothic
--dialoginput.bolditalic.korean=Baekmuk Dotum
--
--allfonts.chinese-big5=AR PL ZenKai Uni
--allfonts.chinese-gb18030=AR PL ZenKai Uni
-+#dialoginput.bolditalic.latin-1.motif=LuxiMono-BoldOblique
-+dialoginput.bolditalic.japanese-kochi=Kochi Gothic
-+dialoginput.bolditalic.japanese-sazanami=Sazanami Gothic
-+dialoginput.bolditalic.japanese-vlgothic=VL Gothic
-+dialoginput.bolditalic.korean-baekmuk=Baekmuk Gulim
-+#dialoginput.bolditalic.korean-baekmuk.motif=Baekmuk Gulim
-+dialoginput.bolditalic.korean-un=UnDotum Bold
-+#dialoginput.bolditalic.korean-un.motif=UnDotum Bold
- 
- # Search Sequences
- 
- sequence.allfonts=latin-1
--sequence.allfonts.Big5=chinese-big5,latin-1
--sequence.allfonts.x-euc-jp-linux=japanese-x0208,latin-1
--sequence.allfonts.EUC-KR=korean,latin-1
--sequence.allfonts.GB18030=chinese-gb18030,latin-1
--sequence.fallback=chinese-big5,chinese-gb18030,japanese-x0208,korean
-+sequence.allfonts.GB18030=latin-1,umingcn,shanheisun,wqy-zenhei
-+sequence.allfonts.GB2312=latin-1,umingcn,shanheisun,wqy-zenhei
-+sequence.allfonts.GBK=latin-1,umingcn,shanheisun,wqy-zenhei
-+sequence.allfonts.x-euc-jp-linux=latin-1,japanese-vlgothic,japanese-sazanami,japanese-kochi
-+sequence.allfonts.EUC-KR=latin-1,korean-un,korean-baekmuk
-+sequence.allfonts.Big5=latin-1,umingtw,shanheisun,wqy-zenhei
-+sequence.allfonts.Big5-HKSCS=latin-1,uminghk,shanheisun,wqy-zenhei
-+#sequence.fallback=uminghk,shanheisun,wqy-zenhei,japanese-vlgothic,japanese-kochi,japanese-sazanami,korean-un,korean-baekmuk,bengali,gujarati,hindi,oriya,punjabi,malayalam,tamil,telugu,sinhala
-+sequence.fallback=uminghk,shanheisun,wqy-zenhei,japanese-vlgothic,japanese-sazanami,japanese-kochi,korean-un,korean-baekmuk,bengali,gujarati,hindi,oriya,punjabi,tamil,telugu
-+
-+# Exclusion Ranges
-+
-+exclusion.japanese-kochi=0390-03d6,2200-22ef,2701-27be
-+exclusion.japanese-sazanami=0390-03d6,2200-22ef,2701-27be
-+exclusion.japanese-vlgothic=0390-03d6,2200-22ef,2701-27be
- 
- # Font File Names
- 
-@@ -143,8 +290,58 @@
- filename.DejaVu_Serif_Oblique=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSerif-Oblique.ttf
- filename.DejaVu_Serif_Bold_Oblique=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSerif-BoldOblique.ttf
- 
--filename.Kochi_Gothic=/usr/share/fonts/truetype/kochi/kochi-gothic-subst.ttf
--filename.Kochi_Mincho=/usr/share/fonts/truetype/kochi/kochi-mincho-subst.ttf
--filename.AR_PL_ZenKai_Uni=/usr/share/fonts//truetype/arphic/ukai.ttf
--filename.Baekmuk_Dotum=/usr/share/fonts/truetype/baekmuk/dotum.ttf
-+filename.AR_PL_UMing_CN=/usr/share/fonts/truetype/arphic/uming.ttc
-+filename.AR_PL_UMing_HK=/usr/share/fonts/truetype/arphic/uming.ttc
-+filename.AR_PL_UMing_TW=/usr/share/fonts/truetype/arphic/uming.ttc
-+filename.AR_PL_ShanHeiSun_Uni=/usr/share/fonts/truetype/arphic/uming.ttf
-+
-+filename.WenQuanYi_Zen_Hei=/usr/share/fonts/truetype/wqy/wqy-zenhei.ttf
- filename.Baekmuk_Batang=/usr/share/fonts/truetype/baekmuk/batang.ttf
-+filename.UnBatang=/usr/share/fonts/truetype/unfonts/UnBatang.ttf
-+filename.UnBatang_Bold=/usr/share/fonts/truetype/unfonts/UnBatangBold.ttf
-+filename.Baekmuk_Gulim=/usr/share/fonts/truetype/baekmuk/gulim.ttf
-+filename.UnDotum=/usr/share/fonts/truetype/unfonts/UnDotum.ttf
-+filename.UnDotum_Bold=/usr/share/fonts/truetype/unfonts/UnDotumBold.ttf
-+filename.Kochi_Gothic=/usr/share/fonts/truetype/kochi/kochi-gothic.ttf
-+filename.Sazanami_Gothic=/usr/share/fonts/truetype/sazanami/sazanami-gothic.ttf
-+filename.Kochi_Mincho=/usr/share/fonts/truetype/kochi/kochi-mincho.ttf
-+filename.Sazanami_Mincho=/usr/share/fonts/truetype/sazanami/sazanami-mincho.ttf
-+filename.VL_Gothic=/usr/share/fonts/truetype/vlgothic/VL-Gothic-Regular.ttf
-+filename.VL_PGothic=/usr/share/fonts/truetype/vlgothic/VL-PGothic-Regular.ttf
-+
-+filename.Lohit_Bengali=/usr/share/fonts/truetype/ttf-bengali-fonts/lohit_bn.ttf
-+filename.Lohit_Gujarati=/usr/share/fonts/truetype/ttf-indic-fonts-core/lohit_gu.ttf
-+filename.Lohit_Hindi=/usr/share/fonts/truetype/ttf-indic-fonts-core/lohit_hi.ttf
-+filename.Lohit_Kannda=/usr/share/fonts/truetype/ttf-kannada-fonts/lohit_kn.ttf
-+#filename.Lohit_Malayalam=/usr/share/fonts/lohit-malayalam/lohit_ml.ttf
-+filename.Lohit_Oriya=/usr/share/fonts/truetype/ttf-oriya-fonts/lohit_or.ttf
-+filename.Lohit_Punjabi=/usr/share/fonts/truetype/ttf-indic-fonts-core/lohit_pa.ttf
-+filename.Lohit_Tamil=/usr/share/fonts/truetype/ttf-indic-fonts-core/lohit_ta.ttf
-+filename.Lohit_Telugu=/usr/share/fonts/truetype/ttf-telugu-fonts/lohit_te.ttf
-+filename.LKLUG=/usr/share/fonts/truetype/ttf-sinhala-lklug/lklug.ttf
-+
-+filename.LuxiSans-Regular=/usr/share/fonts/truetype/ttf-xfree86-nonfree/luxisr.ttf
-+filename.LuxiSans-Bold=/usr/share/fonts/truetype/ttf-xfree86-nonfree/luxisb.ttf
-+filename.LuxiSans-Oblique=/usr/share/fonts/truetype/ttf-xfree86-nonfree/luxisri.ttf
-+filename.LuxiSans-BoldOblique=/usr/share/fonts/truetype/ttf-xfree86-nonfree/luxisbi.ttf
-+filename.LuxiMono-Regular=/usr/share/fonts/truetype/ttf-xfree86-nonfree/luximr.ttf
-+filename.LuxiMono-Bold=/usr/share/fonts/truetype/ttf-xfree86-nonfree/luximb.ttf
-+filename.LuxiMono-Oblique=/usr/share/fonts/truetype/ttf-xfree86-nonfree/luximri.ttf
-+filename.LuxiMono-BoldOblique=/usr/share/fonts/truetype/ttf-xfree86-nonfree/luximbi.ttf
-+filename.LuxiSerif-Regular=/usr/share/fonts/truetype/ttf-xfree86-nonfree/luxirr.ttf
-+filename.LuxiSerif-Bold=/usr/share/fonts/truetype/ttf-xfree86-nonfree/luxirb.ttf
-+filename.LuxiSerif-Oblique=/usr/share/fonts/truetype/ttf-xfree86-nonfree/luxirri.ttf
-+filename.LuxiSerif-BoldOblique=/usr/share/fonts/truetype/ttf-xfree86-nonfree/luxirbi.ttf
-+
-+# AWT X11 font paths
-+awtfontpath.latin-1=/usr/share/fonts/X11/Type1
-+awtfontpath.umingcn=/usr/share/fonts/truetype/arphic
-+awtfontpath.uminghk=/usr/share/fonts/truetype/arphic
-+awtfontpath.umingtw=/usr/share/fonts/truetype/arphic
-+awtfontpath.shanheisun=/usr/share/fonts/truetype/arphic
-+awtfontpath.wqy-zenhei=/usr/share/fonts/truetype/wqy
-+awtfontpath.japanese-kochi=/usr/share/fonts/truetype/kochi
-+awtfontpath.japanese-sazanami=/usr/share/fonts/truetype/sazanami
-+awtfontpath.japanese-vlgothic=/usr/share/fonts/truetype/vlgothic
-+awtfontpath.korean-baekmuk=/usr/share/fonts/truetype/baekmuk
-+awtfontpath.korean-un=/usr/share/fonts/truetype/unfonts
--- a/patches/icedtea-lcms.patch	Sun Apr 18 17:03:04 2010 +0100
+++ b/patches/icedtea-lcms.patch	Sun Apr 18 17:04:10 2010 +0100
@@ -1,6 +1,6 @@
-diff -BbruN openjdkold/jdk/src/share/native/sun/java2d/cmm/lcms/cmsxform.c openjdk/jdk/src/share/native/sun/java2d/cmm/lcms/cmsxform.c
---- oldopenjdk6/jdk/src/share/native/sun/java2d/cmm/lcms/cmsxform.c	2009-04-24 03:34:31.000000000 -0400
-+++ openjdk/jdk/src/share/native/sun/java2d/cmm/lcms/cmsxform.c	2009-05-01 10:15:13.000000000 -0400
+diff -Nru openjdk.orig/jdk/src/share/native/sun/java2d/cmm/lcms/cmsxform.c openjdk/jdk/src/share/native/sun/java2d/cmm/lcms/cmsxform.c
+--- openjdk.orig/jdk/src/share/native/sun/java2d/cmm/lcms/cmsxform.c	2010-04-06 11:57:21.000000000 +0100
++++ openjdk/jdk/src/share/native/sun/java2d/cmm/lcms/cmsxform.c	2010-04-06 17:35:02.000000000 +0100
 @@ -689,6 +689,9 @@
                  GrayTRC = cmsReadICCGamma(hProfile, icSigGrayTRCTag);
                  FromLstarToXYZ(GrayTRC, Shapes1);
@@ -39,15 +39,3 @@
  
          if (ColorSpace == CurrentColorSpace) {
  
-@@ -1969,6 +1977,11 @@
-                 goto ErrorCleanup;
-         }
- 
-+	if (Transforms[i] == NULL) {
-+          cmsSignalError(LCMS_ERRC_ABORTED, "cmsCreateMultiprofileTransform: Invalid profile");
-+          goto ErrorCleanup;
-+	} 
-+
-         CurrentColorSpace = ColorSpaceOut;
- 
-     }
--- a/patches/icedtea-nss-6763530.patch	Sun Apr 18 17:03:04 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,55 +0,0 @@
-diff -r 1f83d4e42eda src/share/classes/sun/security/pkcs11/P11ECKeyFactory.java
---- openjdk.orig/jdk/src/share/classes/sun/security/pkcs11/P11ECKeyFactory.java	Mon Aug 31 12:55:15 2009 +0900
-+++ openjdk/jdk/src/share/classes/sun/security/pkcs11/P11ECKeyFactory.java	Thu Sep 03 18:47:40 2009 +0100
-@@ -40,6 +40,8 @@
- import sun.security.pkcs11.wrapper.*;
- import static sun.security.pkcs11.wrapper.PKCS11Constants.*;
- 
-+import sun.security.util.DerValue;
-+
- /**
-  * EC KeyFactory implemenation.
-  *
-@@ -201,7 +203,14 @@
- 
-     private PublicKey generatePublic(ECPoint point, ECParameterSpec params) throws PKCS11Exception {
-         byte[] encodedParams = ECParameters.encodeParameters(params);
--        byte[] encodedPoint = ECParameters.encodePoint(point, params.getCurve());
-+        DerValue pkECPoint = new DerValue(DerValue.tag_OctetString,
-+                                          ECParameters.encodePoint(point, params.getCurve()));
-+        byte[] encodedPoint = null;
-+        try {
-+          encodedPoint = pkECPoint.toByteArray();
-+        } catch (IOException e) {
-+          throw new IllegalArgumentException("Could not DER encode point", e);
-+        }
-         CK_ATTRIBUTE[] attributes = new CK_ATTRIBUTE[] {
-             new CK_ATTRIBUTE(CKA_CLASS, CKO_PUBLIC_KEY),
-             new CK_ATTRIBUTE(CKA_KEY_TYPE, CKK_EC),
-diff -r 1f83d4e42eda src/share/classes/sun/security/pkcs11/P11Key.java
---- openjdk.orig/jdk/src/share/classes/sun/security/pkcs11/P11Key.java	Mon Aug 31 12:55:15 2009 +0900
-+++ openjdk/jdk/src/share/classes/sun/security/pkcs11/P11Key.java	Thu Sep 03 18:47:40 2009 +0100
-@@ -44,6 +44,8 @@
- import sun.security.pkcs11.wrapper.*;
- import static sun.security.pkcs11.wrapper.PKCS11Constants.*;
- 
-+import sun.security.util.DerValue;
-+
- /**
-  * Key implementation classes.
-  *
-@@ -1014,10 +1016,13 @@
-             };
-             fetchAttributes(attributes);
-             try {
-+                DerValue wECPoint = new DerValue(attributes[0].getByteArray());
-+                if (wECPoint.getTag() != DerValue.tag_OctetString)
-+                    throw new IOException("Unexpected tag: " + wECPoint.getTag());
-                 params = P11ECKeyFactory.decodeParameters
-                             (attributes[1].getByteArray());
-                 w = P11ECKeyFactory.decodePoint
--                            (attributes[0].getByteArray(), params.getCurve());
-+                    (wECPoint.getDataBytes(), params.getCurve());
-             } catch (Exception e) {
-                 throw new RuntimeException("Could not parse key values", e);
-             }
--- a/patches/icedtea-systemtap.patch	Sun Apr 18 17:03:04 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,182 +0,0 @@
-diff -r 945bf7540697 make/linux/makefiles/dtrace.make
---- openjdk/hotspot/make/linux/makefiles/dtrace.make	Thu Jan 22 14:42:01 2009 -0800
-+++ openjdk/hotspot/make/linux/makefiles/dtrace.make	Mon Feb 02 13:47:34 2009 +0100
-@@ -25,3 +25,7 @@
- # Linux does not build jvm_db
- LIBJVM_DB =
- 
-+# But it does have a Systemtap dtrace compatible sys/sdt.h
-+CFLAGS += -DDTRACE_ENABLED
-+
-+# It doesn't support HAVE_DTRACE_H though.
---- openjdk/hotspot/src/share/vm/prims/jni.cpp	2009-10-13 15:34:52.499809508 +0200
-+++ openjdk/hotspot/src/share/vm/prims/jni.cpp	2009-10-13 15:31:26.117823588 +0200
-@@ -1747,10 +1744,7 @@
- JNI_QUICK_ENTRY(void, jni_Set##Result##Field(JNIEnv *env, jobject obj, jfieldID fieldID, Argument value)) \
-   JNIWrapper("Set" XSTR(Result) "Field"); \
- \
--  HS_DTRACE_PROBE_CDECL_N(hotspot_jni, Set##Result##Field__entry, \
--    ( JNIEnv*, jobject, jfieldID FP_SELECT_##Result(COMMA Argument,/*empty*/) ) ); \
--  HS_DTRACE_PROBE_N(hotspot_jni, Set##Result##Field__entry, \
--    ( env, obj, fieldID FP_SELECT_##Result(COMMA value,/*empty*/) ) ); \
-+  FP_SELECT_##Result(DTRACE_PROBE4(hotspot_jni, Set##Result##Field__entry, env, obj, fieldID, value),DTRACE_PROBE3(hotspot_jni, Set##Result##Field__entry, env, obj, fieldID)); \
- \
-   oop o = JNIHandles::resolve_non_null(obj); \
-   klassOop k = o->klass(); \
-@@ -1924,10 +1918,7 @@
- \
- JNI_ENTRY(void, jni_SetStatic##Result##Field(JNIEnv *env, jclass clazz, jfieldID fieldID, Argument value)) \
-   JNIWrapper("SetStatic" XSTR(Result) "Field"); \
--  HS_DTRACE_PROBE_CDECL_N(hotspot_jni, SetStatic##Result##Field__entry,\
--    ( JNIEnv*, jclass, jfieldID FP_SELECT_##Result(COMMA Argument,/*empty*/) ) ); \
--  HS_DTRACE_PROBE_N(hotspot_jni, SetStatic##Result##Field__entry, \
--    ( env, clazz, fieldID FP_SELECT_##Result(COMMA value,/*empty*/) ) ); \
-+  FP_SELECT_##Result(DTRACE_PROBE4(hotspot_jni, SetStatic##Result##Field__entry, env, clazz, fieldID, value),DTRACE_PROBE3(hotspot_jni, SetStatic##Result##Field__entry, env, clazz, fieldID)); \
- \
-   JNIid* id = jfieldIDWorkaround::from_static_jfieldID(fieldID); \
-   assert(id->is_static_field_id(), "invalid static field id"); \
-@@ -2116,7 +2101,7 @@
-   DT_RETURN_MARK(GetObjectArrayElement, jobject, (const jobject&)ret);
-   objArrayOop a = objArrayOop(JNIHandles::resolve_non_null(array));
-   if (a->is_within_bounds(index)) {
--    jobject ret = JNIHandles::make_local(env, a->obj_at(index));
-+    ret = JNIHandles::make_local(env, a->obj_at(index));
-     return ret;
-   } else {
-     char buf[jintAsStringSize];
-@@ -2150,14 +2150,14 @@
- 
- #define DEFINE_NEWSCALARARRAY(Return,Allocator,Result) \
- \
--  DT_RETURN_MARK_DECL_FOR(Result, New##Result##Array, Return);\
-+  DT_RETURN_MARK_DECL(New##Result##Array, Return);\
- \
- JNI_ENTRY(Return, \
-           jni_New##Result##Array(JNIEnv *env, jsize len)) \
-   JNIWrapper("New" XSTR(Result) "Array"); \
-   DTRACE_PROBE2(hotspot_jni, New##Result##Array__entry, env, len);\
-   Return ret = NULL;\
--  DT_RETURN_MARK_FOR(Result, New##Result##Array, Return, (const Return&)ret);\
-+  DT_RETURN_MARK(New##Result##Array, Return, (const Return&)ret);\
- \
-   oop obj= oopFactory::Allocator(len, CHECK_0); \
-   ret = (Return) JNIHandles::make_local(env, obj); \
-
-diff -r 945bf7540697 src/share/vm/utilities/dtrace.hpp
---- openjdk/hotspot/src/share/vm/utilities/dtrace.hpp	Thu Jan 22 14:42:01 2009 -0800
-+++ openjdk/hotspot/src/share/vm/utilities/dtrace.hpp	Mon Feb 02 13:47:34 2009 +0100
-@@ -1,5 +1,6 @@
- /*
-  * Copyright 2005-2007 Sun Microsystems, Inc.  All Rights Reserved.
-+ * Copyright 2009 Red Hat, Inc.
-  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-  *
-  * This code is free software; you can redistribute it and/or modify it
-@@ -22,14 +23,14 @@
-  *
-  */
- 
--#if defined(SOLARIS) && defined(DTRACE_ENABLED)
-+#if defined(DTRACE_ENABLED)
- 
- #include <sys/sdt.h>
- 
- #define DTRACE_ONLY(x) x
- #define NOT_DTRACE(x)
- 
--#else // ndef SOLARIS || ndef DTRACE_ENABLED
-+#else // ndef DTRACE_ENABLED
- 
- #define DTRACE_ONLY(x)
- #define NOT_DTRACE(x) x
-@@ -40,9 +41,16 @@
- #define DTRACE_PROBE3(a,b,c,d,e) {;}
- #define DTRACE_PROBE4(a,b,c,d,e,f) {;}
- #define DTRACE_PROBE5(a,b,c,d,e,f,g) {;}
-+#define DTRACE_PROBE6(a,b,c,d,e,f,g,h) {;}
-+#define DTRACE_PROBE7(a,b,c,d,e,f,g,h,i) {;}
-+#define DTRACE_PROBE8(a,b,c,d,e,f,g,h,i,j) {;}
-+#define DTRACE_PROBE9(a,b,c,d,e,f,g,h,i,j,k) {;}
-+#define DTRACE_PROBE10(a,b,c,d,e,f,g,h,i,j,k,l) {;}
- 
- #endif
- 
-+#if defined(SOLARIS)
-+// Solaris dtrace needs actual extern function decls.
- #define HS_DTRACE_PROBE_FN(provider,name)\
-   __dtrace_##provider##___##name
- 
-@@ -50,6 +58,11 @@
-   DTRACE_ONLY(extern "C" void HS_DTRACE_PROBE_FN(provider,name) args)
- #define HS_DTRACE_PROBE_CDECL_N(provider,name,args) \
-   DTRACE_ONLY(extern void HS_DTRACE_PROBE_FN(provider,name) args)
-+#else
-+// Systemtap dtrace compatible probes on GNU/Linux don't.
-+#define HS_DTRACE_PROBE_DECL_N(provider,name,args)
-+#define HS_DTRACE_PROBE_CDECL_N(provider,name,args)
-+#endif 
- 
- /* Dtrace probe declarations */
- #define HS_DTRACE_PROBE_DECL(provider,name) \
-@@ -88,6 +101,8 @@
-     uintptr_t,uintptr_t,uintptr_t))
- 
- /* Dtrace probe definitions */
-+#if defined(SOLARIS)
-+// Solaris dtrace uses actual function calls.
- #define HS_DTRACE_PROBE_N(provider,name, args) \
-   DTRACE_ONLY(HS_DTRACE_PROBE_FN(provider,name) args)
- 
-@@ -123,3 +138,29 @@
-   HS_DTRACE_PROBE_N(provider,name,((uintptr_t)a0,(uintptr_t)a1,(uintptr_t)a2,\
-     (uintptr_t)a3,(uintptr_t)a4,(uintptr_t)a5,(uintptr_t)a6,(uintptr_t)a7,\
-     (uintptr_t)a8,(uintptr_t)a9))
-+#else
-+// Systemtap dtrace compatible probes on GNU/Linux use direct macros.
-+#define HS_DTRACE_PROBE(provider,name) HS_DTRACE_PROBE0(provider,name)
-+#define HS_DTRACE_PROBE0(provider,name)\
-+  DTRACE_PROBE(provider,name)
-+#define HS_DTRACE_PROBE1(provider,name,a0)\
-+  DTRACE_PROBE1(provider,name,a0)
-+#define HS_DTRACE_PROBE2(provider,name,a0,a1)\
-+  DTRACE_PROBE2(provider,name,a0,a1)
-+#define HS_DTRACE_PROBE3(provider,name,a0,a1,a2)\
-+  DTRACE_PROBE3(provider,name,a0,a1,a2)
-+#define HS_DTRACE_PROBE4(provider,name,a0,a1,a2,a3)\
-+  DTRACE_PROBE4(provider,name,a0,a1,a2,a3)
-+#define HS_DTRACE_PROBE5(provider,name,a0,a1,a2,a3,a4)\
-+  DTRACE_PROBE5(provider,name,a0,a1,a2,a3,a4)
-+#define HS_DTRACE_PROBE6(provider,name,a0,a1,a2,a3,a4,a5)\
-+  DTRACE_PROBE6(provider,name,a0,a1,a2,a3,a4,a5)
-+#define HS_DTRACE_PROBE7(provider,name,a0,a1,a2,a3,a4,a5,a6)\
-+  DTRACE_PROBE7(provider,name,a0,a1,a2,a3,a4,a5,a6)
-+#define HS_DTRACE_PROBE8(provider,name,a0,a1,a2,a3,a4,a5,a6,a7)\
-+  DTRACE_PROBE8(provider,name,a0,a1,a2,a3,a4,a5,a6,a7)
-+#define HS_DTRACE_PROBE9(provider,name,a0,a1,a2,a3,a4,a5,a6,a7,a8)\
-+  DTRACE_PROBE9(provider,name,a0,a1,a2,a3,a4,a5,a6,a7,a8)
-+#define HS_DTRACE_PROBE10(provider,name,a0,a1,a2,a3,a4,a5,a6,a7,a8)\
-+  DTRACE_PROBE10(provider,name,a0,a1,a2,a3,a4,a5,a6,a7,a8)
-+#endif
---- openjdk/hotspot/src/share/vm/runtime/arguments.cpp	2009-03-04 14:39:43.000000000 +0100
-+++ openjdk/hotspot/src/share/vm/runtime/arguments.cpp	2009-03-04 22:11:37.000000000 +0100
-@@ -2272,16 +2272,16 @@
-       FLAG_SET_CMDLINE(bool, DisplayVMOutputToStderr, false);
-       FLAG_SET_CMDLINE(bool, DisplayVMOutputToStdout, true);
-     } else if (match_option(option, "-XX:+ExtendedDTraceProbes", &tail)) {
--#ifdef SOLARIS
-+#ifdef DTRACE_ENABLED
-       FLAG_SET_CMDLINE(bool, ExtendedDTraceProbes, true);
-       FLAG_SET_CMDLINE(bool, DTraceMethodProbes, true);
-       FLAG_SET_CMDLINE(bool, DTraceAllocProbes, true);
-       FLAG_SET_CMDLINE(bool, DTraceMonitorProbes, true);
--#else // ndef SOLARIS
-+#else // ndef DTRACE_ENABLED
-       jio_fprintf(defaultStream::error_stream(),
--                  "ExtendedDTraceProbes flag is only applicable on Solaris\n");
-+                  "ExtendedDTraceProbes flag is only applicable on dtrace enabled builds\n");
-       return JNI_EINVAL;
--#endif // ndef SOLARIS
-+#endif // ndef DTRACE_ENABLED
-     } else
- #ifdef ASSERT
-     if (match_option(option, "-XX:+FullGCALot", &tail)) {
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/memory-limits.patch	Sun Apr 18 17:04:10 2010 +0100
@@ -0,0 +1,24 @@
+diff -Nru openjdk.orig/hotspot/src/cpu/x86/vm/c2_globals_x86.hpp openjdk/hotspot/src/cpu/x86/vm/c2_globals_x86.hpp
+--- openjdk.orig/hotspot/src/cpu/x86/vm/c2_globals_x86.hpp	2009-12-08 23:12:17.000000000 +0000
++++ openjdk/hotspot/src/cpu/x86/vm/c2_globals_x86.hpp	2010-01-11 20:44:32.000000000 +0000
+@@ -95,7 +95,7 @@
+ 
+ // Heap related flags
+ define_pd_global(uintx,PermSize,    ScaleForWordSize(16*M));
+-define_pd_global(uintx,MaxPermSize, ScaleForWordSize(64*M));
++define_pd_global(uintx,MaxPermSize, ScaleForWordSize(128*M));
+ 
+ // Ergonomics related flags
+ define_pd_global(bool, NeverActAsServerClassMachine, false);
+diff -Nru openjdk.orig/hotspot/src/share/vm/runtime/globals.hpp openjdk/hotspot/src/share/vm/runtime/globals.hpp
+--- openjdk.orig/hotspot/src/share/vm/runtime/globals.hpp	2009-12-08 23:12:17.000000000 +0000
++++ openjdk/hotspot/src/share/vm/runtime/globals.hpp	2010-01-11 20:45:17.000000000 +0000
+@@ -2809,7 +2809,7 @@
+   product(uintx, InitialHeapSize, 0,                                        \
+           "Initial heap size (in bytes); zero means OldSize + NewSize")     \
+                                                                             \
+-  product(uintx, MaxHeapSize, ScaleForWordSize(96*M),                       \
++  product(uintx, MaxHeapSize, ScaleForWordSize(512*M),                      \
+           "Maximum heap size (in bytes)")                                   \
+                                                                             \
+   product(uintx, OldSize, ScaleForWordSize(4*M),                            \
--- a/patches/openjdk/6822370-reentrantreadwritelock.patch	Sun Apr 18 17:03:04 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,65 +0,0 @@
-# HG changeset patch
-# User dholmes
-# Date 1259712624 18000
-# Node ID 49bd3de668dc35ba7cff876422d114a91f35bbd2
-# Parent  b6e6e189e1db90e044c24be709bc581e2356a910
-6822370: ReentrantReadWriteLock: threads hung when there are no threads holding onto the lock (Netra x4450)
-Summary: This day one bug is caused by missing memory barriers in various Parker::park() paths that can result in lost wakeups and hangs.
-Reviewed-by: dice, acorn
-
-diff -r b6e6e189e1db -r 49bd3de668dc src/os/linux/vm/os_linux.cpp
---- openjdk.orig/hotspot/src/os/linux/vm/os_linux.cpp	Wed Nov 25 19:15:17 2009 -0800
-+++ openjdk/hotspot/src/os/linux/vm/os_linux.cpp	Tue Dec 01 19:10:24 2009 -0500
-@@ -4656,6 +4656,7 @@
-   // Return immediately if a permit is available.
-   if (_counter > 0) {
-       _counter = 0 ;
-+      OrderAccess::fence();
-       return ;
-   }
- 
-@@ -4698,6 +4699,7 @@
-     _counter = 0;
-     status = pthread_mutex_unlock(_mutex);
-     assert (status == 0, "invariant") ;
-+    OrderAccess::fence();
-     return;
-   }
- 
-@@ -4737,7 +4739,7 @@
-   if (jt->handle_special_suspend_equivalent_condition()) {
-     jt->java_suspend_self();
-   }
--
-+  OrderAccess::fence();
- }
- 
- void Parker::unpark() {
-diff -r b6e6e189e1db -r 49bd3de668dc src/os/solaris/vm/os_solaris.cpp
---- openjdk.orig/hotspot/src/os/solaris/vm/os_solaris.cpp	Wed Nov 25 19:15:17 2009 -0800
-+++ openjdk/hotspot/src/os/solaris/vm/os_solaris.cpp	Tue Dec 01 19:10:24 2009 -0500
-@@ -5803,6 +5803,7 @@
-   // Return immediately if a permit is available.
-   if (_counter > 0) {
-       _counter = 0 ;
-+      OrderAccess::fence();
-       return ;
-   }
- 
-@@ -5846,6 +5847,7 @@
-     _counter = 0;
-     status = os::Solaris::mutex_unlock(_mutex);
-     assert (status == 0, "invariant") ;
-+    OrderAccess::fence();
-     return;
-   }
- 
-@@ -5891,7 +5893,7 @@
-   if (jt->handle_special_suspend_equivalent_condition()) {
-     jt->java_suspend_self();
-   }
--
-+  OrderAccess::fence();
- }
- 
- void Parker::unpark() {
--- a/patches/openjdk/6873059-javac-versioning-corba.patch	Sun Apr 18 17:03:04 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,23 +0,0 @@
-# HG changeset patch
-# User andrew
-# Date 1250728138 -3600
-# Node ID 8001ba2bf10d8f6f9f26bf3684e9fd06ddb145ba
-# Parent  175bd68779546078dbdb6dacd7f0aced79ed22b1
-6873059: Explicitly use -source 6 -target 6 when compiling with the boot jdk javac
-Summary: The bootstrap javac currently uses the default source and targets of the boot javac
-Reviewed-by: jjg, ohair
-
-diff -r 175bd6877954 -r 8001ba2bf10d make/common/shared/Defs-java.gmk
---- openjdk.orig/corba/make/common/shared/Defs-java.gmk	Fri Aug 14 08:49:25 2009 -0700
-+++ openjdk/corba/make/common/shared/Defs-java.gmk	Thu Aug 20 01:28:58 2009 +0100
-@@ -179,7 +179,9 @@
- ifeq ($(COMPILER_WARNINGS_FATAL), true)
-   BOOT_JAVACFLAGS  += -Werror
- endif
--BOOT_JAVACFLAGS  += -encoding ascii
-+BOOT_SOURCE_LANGUAGE_VERSION = 6
-+BOOT_TARGET_CLASS_VERSION = 6
-+BOOT_JAVACFLAGS  += -encoding ascii -source $(BOOT_SOURCE_LANGUAGE_VERSION) -target $(BOOT_TARGET_CLASS_VERSION)
- 
- BOOT_JAVA_CMD      = $(BOOTDIR)/bin/java $(JAVA_TOOLS_FLAGS)
- BOOT_JAVAC_CMD     = $(BOOTDIR)/bin/javac $(JAVAC_JVM_FLAGS) $(BOOT_JAVACFLAGS)
--- a/patches/openjdk/6873059-javac-versioning-jdk.patch	Sun Apr 18 17:03:04 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,15 +0,0 @@
-diff -Nru openjdk.orig/jdk/make/common/shared/Defs-java.gmk openjdk/jdk/make/common/shared/Defs-java.gmk
---- openjdk.orig/jdk/make/common/shared/Defs-java.gmk	2010-03-29 23:19:08.000000000 +0100
-+++ openjdk/jdk/make/common/shared/Defs-java.gmk	2010-03-29 23:22:38.000000000 +0100
-@@ -186,7 +186,10 @@
- ifeq ($(COMPILER_WARNINGS_FATAL), true)
-   BOOT_JAVACFLAGS  += -Werror
- endif
--BOOT_JAVACFLAGS  += -encoding ascii
-+
-+BOOT_SOURCE_LANGUAGE_VERSION = 6
-+BOOT_TARGET_CLASS_VERSION = 6
-+BOOT_JAVACFLAGS  += -encoding ascii -source $(BOOT_SOURCE_LANGUAGE_VERSION) -target $(BOOT_TARGET_CLASS_VERSION)
- 
- BOOT_JAVACFLAGS  += $(NO_PROPRIETARY_API_WARNINGS)
- 
--- a/patches/openjdk/6879689-hotspot_warning_fix.patch	Sun Apr 18 17:03:04 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,22 +0,0 @@
-# HG changeset patch
-# User andrew
-# Date 1252396876 -3600
-# Node ID 5fdbe2cdf565f5d2c5c6bc8686a8eb792903e30e
-# Parent  6ab1d6ece8bd7e0fb9bc16c2a1e03ca6b5402426
-6879689: Fix warning about ignored return value when compiling with -O2
-Summary: Store the return value of fwrite and check it matches the size of the array.
-Reviewed-by: twisti, dholmes
-
-diff -r 6ab1d6ece8bd -r 5fdbe2cdf565 src/share/vm/adlc/archDesc.cpp
---- openjdk.orig/hotspot/src/share/vm/adlc/archDesc.cpp	Mon Aug 17 15:03:39 2009 -0700
-+++ openjdk/hotspot/src/share/vm/adlc/archDesc.cpp	Tue Sep 08 09:01:16 2009 +0100
-@@ -1031,7 +1031,8 @@
- //---------------------------addSUNcopyright-------------------------------
- // output SUN copyright info
- void ArchDesc::addSunCopyright(char* legal, int size, FILE *fp) {
--  fwrite(legal, size, 1, fp);
-+  size_t count = fwrite(legal, 1, size, fp);
-+  assert(count == (size_t) size, "copyright info truncated");
-   fprintf(fp,"\n");
-   fprintf(fp,"// Machine Generated File.  Do Not Edit!\n");
-   fprintf(fp,"\n");
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/openjdk/6896472-missing_libjsig.patch	Sun Apr 18 17:04:10 2010 +0100
@@ -0,0 +1,20 @@
+# HG changeset patch
+# User ohair
+# Date 1256840222 25200
+# Node ID 8885b22565077236a927e824ef450742e434a230
+# Parent  1602e8848bde3aa1c375390374998bfba46aa7b4
+6896472: Missing libjsig.so causes jdk build failure
+Reviewed-by: tbell, kvn, phh
+
+diff -r 1602e8848bde -r 8885b2256507 make/java/redist/Makefile
+--- openjdk.orig/jdk/make/java/redist/Makefile	Mon Oct 19 16:31:48 2009 -0700
++++ openjdk/jdk/make/java/redist/Makefile	Thu Oct 29 11:17:02 2009 -0700
+@@ -211,7 +211,7 @@
+ $(LIB_LOCATION)/$(KERNEL_LOCATION)/$(JVM_NAME): $(HOTSPOT_KERNEL_PATH)/$(JVM_NAME)
+ 	$(install-file)
+ 
+-$(LIB_LOCATION)/$(LIBJSIG_NAME): $(HOTSPOT_SERVER_PATH)/$(LIBJSIG_NAME)
++$(LIB_LOCATION)/$(LIBJSIG_NAME): $(HOTSPOT_IMPORT_PATH)/$(ARCH_VM_SUBDIR)/$(LIBJSIG_NAME)
+ 	$(install-import-file)
+ 
+ $(LIB_LOCATION)/$(CLIENT_LOCATION)/$(LIBJSIG_NAME) \
--- a/patches/openjdk/6928623-verbose-langtools.patch	Sun Apr 18 17:03:04 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,22 +0,0 @@
-
-# HG changeset patch
-# User andrew
-# Date 1266874633 0
-# Node ID f25efdb55c998759ce2c1d8711011619455beaba
-# Parent a3be81d385ee94edb4bffed3436fc548d68423b4
-6928623: Behaviour of VERBOSE=true on langtools build
-Summary: VERBOSE=true causes -diagnostics to be passed to ant rather than -debug
-Reviewed-by: jjg
-
---- openjdk/langtools/make/Makefile	Thu Feb 18 15:41:36 2010 -0800
-+++ openjdk/langtools/make/Makefile	Mon Feb 22 21:37:13 2010 +0000
-@@ -70,7 +70,7 @@ endif
- endif
- 
- ifdef VERBOSE
--  ANT_OPTIONS += -verbose -diagnostics
-+  ANT_OPTIONS += -verbose -debug
- endif
- 
- ifdef JDK_VERSION
-
--- a/patches/openjdk/annotation-tests.patch	Sun Apr 18 17:03:04 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5867 +0,0 @@
-# HG changeset patch
-# User darcy
-# Date 1233028166 28800
-# Node ID f3ad2ee4600b102d50a18d83aa797e187819e072
-# Parent 175b6adf65b31782480878f5a65044b4c97fd7cf
-6740185: Move java/lang/annotations tests to open
-Reviewed-by: jjg
-
-diff -Nru openjdk.orig/jdk/test/java/lang/annotation/AnnotationTypeMismatchException/FoundType.java openjdk/jdk/test/java/lang/annotation/AnnotationTypeMismatchException/FoundType.java
---- openjdk.orig/jdk/test/java/lang/annotation/AnnotationTypeMismatchException/FoundType.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/test/java/lang/annotation/AnnotationTypeMismatchException/FoundType.java	2009-02-11 00:58:01.000000000 +0000
-@@ -0,0 +1,44 @@
-+/*
-+ * Copyright 2004 Sun Microsystems, Inc.  All Rights Reserved.
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * This code is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License version 2 only, as
-+ * published by the Free Software Foundation.
-+ *
-+ * This code is distributed in the hope that it will be useful, but WITHOUT
-+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-+ * version 2 for more details (a copy is included in the LICENSE file that
-+ * accompanied this code).
-+ *
-+ * You should have received a copy of the GNU General Public License version
-+ * 2 along with this work; if not, write to the Free Software Foundation,
-+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-+ *
-+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
-+ * CA 95054 USA or visit www.sun.com if you need additional information or
-+ * have any questions.
-+ */
-+
-+/*
-+ * @test
-+ * @bug 6179014
-+ * @summary AnnotationTypeMismatchException.foundType method shouldn't loop.
-+ * @author Scott Seligman
-+ * @run main/timeout=30 FoundType
-+ */
-+
-+import java.lang.annotation.*;
-+
-+public class FoundType {
-+
-+    private static final String TYPE = "a.halting.Problem";
-+
-+    public static void main(String[] args) {
-+        AnnotationTypeMismatchException ex =
-+            new AnnotationTypeMismatchException(null, TYPE);
-+        if (!TYPE.equals(ex.foundType()))
-+            throw new Error();
-+    }
-+}
-diff -Nru openjdk.orig/jdk/test/java/lang/annotation/loaderLeak/A.java openjdk/jdk/test/java/lang/annotation/loaderLeak/A.java
---- openjdk.orig/jdk/test/java/lang/annotation/loaderLeak/A.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/test/java/lang/annotation/loaderLeak/A.java	2009-02-11 00:58:01.000000000 +0000
-@@ -0,0 +1,28 @@
-+/*
-+ * Copyright 2004 Sun Microsystems, Inc.  All Rights Reserved.
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * This code is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License version 2 only, as
-+ * published by the Free Software Foundation.
-+ *
-+ * This code is distributed in the hope that it will be useful, but WITHOUT
-+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-+ * version 2 for more details (a copy is included in the LICENSE file that
-+ * accompanied this code).
-+ *
-+ * You should have received a copy of the GNU General Public License version
-+ * 2 along with this work; if not, write to the Free Software Foundation,
-+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-+ *
-+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
-+ * CA 95054 USA or visit www.sun.com if you need additional information or
-+ * have any questions.
-+ */
-+
-+public
-+@java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME)
-+@interface A {
-+    B b();
-+}
-diff -Nru openjdk.orig/jdk/test/java/lang/annotation/loaderLeak/B.java openjdk/jdk/test/java/lang/annotation/loaderLeak/B.java
---- openjdk.orig/jdk/test/java/lang/annotation/loaderLeak/B.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/test/java/lang/annotation/loaderLeak/B.java	2009-02-11 00:58:01.000000000 +0000
-@@ -0,0 +1,24 @@
-+/*
-+ * Copyright 2004 Sun Microsystems, Inc.  All Rights Reserved.
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * This code is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License version 2 only, as
-+ * published by the Free Software Foundation.
-+ *
-+ * This code is distributed in the hope that it will be useful, but WITHOUT
-+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-+ * version 2 for more details (a copy is included in the LICENSE file that
-+ * accompanied this code).
-+ *
-+ * You should have received a copy of the GNU General Public License version
-+ * 2 along with this work; if not, write to the Free Software Foundation,
-+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-+ *
-+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
-+ * CA 95054 USA or visit www.sun.com if you need additional information or
-+ * have any questions.
-+ */
-+
-+public @interface B {}
-diff -Nru openjdk.orig/jdk/test/java/lang/annotation/loaderLeak/C.java openjdk/jdk/test/java/lang/annotation/loaderLeak/C.java
---- openjdk.orig/jdk/test/java/lang/annotation/loaderLeak/C.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/test/java/lang/annotation/loaderLeak/C.java	2009-02-11 00:58:01.000000000 +0000
-@@ -0,0 +1,24 @@
-+/*
-+ * Copyright 2004 Sun Microsystems, Inc.  All Rights Reserved.
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * This code is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License version 2 only, as
-+ * published by the Free Software Foundation.
-+ *
-+ * This code is distributed in the hope that it will be useful, but WITHOUT
-+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-+ * version 2 for more details (a copy is included in the LICENSE file that
-+ * accompanied this code).
-+ *
-+ * You should have received a copy of the GNU General Public License version
-+ * 2 along with this work; if not, write to the Free Software Foundation,
-+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-+ *
-+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
-+ * CA 95054 USA or visit www.sun.com if you need additional information or
-+ * have any questions.
-+ */
-+
-+public @A(b=@B()) class C {}
-diff -Nru openjdk.orig/jdk/test/java/lang/annotation/loaderLeak/LoaderLeak.sh openjdk/jdk/test/java/lang/annotation/loaderLeak/LoaderLeak.sh
---- openjdk.orig/jdk/test/java/lang/annotation/loaderLeak/LoaderLeak.sh	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/test/java/lang/annotation/loaderLeak/LoaderLeak.sh	2009-02-05 08:45:04.000000000 +0000
-@@ -0,0 +1,84 @@
-+#!/bin/sh
-+
-+# Copyright 2004 Sun Microsystems, Inc.  All Rights Reserved.
-+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+#
-+# This code is free software; you can redistribute it and/or modify it
-+# under the terms of the GNU General Public License version 2 only, as
-+# published by the Free Software Foundation.
-+#
-+# This code is distributed in the hope that it will be useful, but WITHOUT
-+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-+# version 2 for more details (a copy is included in the LICENSE file that
-+# accompanied this code).
-+#
-+# You should have received a copy of the GNU General Public License version
-+# 2 along with this work; if not, write to the Free Software Foundation,
-+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-+#
-+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
-+# CA 95054 USA or visit www.sun.com if you need additional information or
-+# have any questions.
-+
-+if [ "${TESTSRC}" = "" ]
-+then
-+  echo "TESTSRC not set.  Test cannot execute.  Failed."
-+  exit 1
-+fi
-+echo "TESTSRC=${TESTSRC}"
-+if [ "${TESTJAVA}" = "" ]
-+then
-+  echo "TESTJAVA not set.  Test cannot execute.  Failed."
-+  exit 1
-+fi
-+echo "TESTJAVA=${TESTJAVA}"
-+if [ "${TESTCLASSES}" = "" ]
-+then
-+  echo "TESTCLASSES not set.  Test cannot execute.  Failed."
-+  exit 1
-+fi
-+echo "TESTCLASSES=${TESTCLASSES}"
-+echo "CLASSPATH=${CLASSPATH}"
-+
-+# set platform-dependent variables
-+OS=`uname -s`
-+case "$OS" in
-+  SunOS | Linux )
-+    NULL=/dev/null
-+    PS=":"
-+    FS="/"
-+    ;;
-+  Windows* )
-+    NULL=NUL
-+    PS=";"
-+    FS="\\"
-+    ;;
-+  * )
-+    echo "Unrecognized system!"
-+    exit 1;
-+    ;;
-+esac
-+
-+mkdir -p classes
-+cp ${TESTSRC}${FS}*.java .
-+${TESTJAVA}${FS}bin${FS}javac -d classes A.java B.java C.java
-+${TESTJAVA}${FS}bin${FS}javac Main.java
-+${TESTJAVA}${FS}bin${FS}java Main
-+result=$?
-+if [ $result -eq 0 ]
-+then
-+  echo "Passed 1 of 2"
-+else
-+  echo "Failed 1 of 2"
-+  exit $result
-+fi
-+${TESTJAVA}${FS}bin${FS}java Main foo
-+result=$?
-+if [ $result -eq 0 ]
-+then
-+  echo "Passed 2 of 2"
-+else
-+  echo "Failed 2 of 2"
-+fi
-+exit $result
-diff -Nru openjdk.orig/jdk/test/java/lang/annotation/loaderLeak/Main.java openjdk/jdk/test/java/lang/annotation/loaderLeak/Main.java
---- openjdk.orig/jdk/test/java/lang/annotation/loaderLeak/Main.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/test/java/lang/annotation/loaderLeak/Main.java	2009-02-11 00:58:01.000000000 +0000
-@@ -0,0 +1,127 @@
-+/*
-+ * Copyright 2004 Sun Microsystems, Inc.  All Rights Reserved.
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * This code is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License version 2 only, as
-+ * published by the Free Software Foundation.
-+ *
-+ * This code is distributed in the hope that it will be useful, but WITHOUT
-+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-+ * version 2 for more details (a copy is included in the LICENSE file that
-+ * accompanied this code).
-+ *
-+ * You should have received a copy of the GNU General Public License version
-+ * 2 along with this work; if not, write to the Free Software Foundation,
-+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-+ *
-+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
-+ * CA 95054 USA or visit www.sun.com if you need additional information or
-+ * have any questions.
-+ */
-+
-+/*
-+ * @test
-+ * @bug 5040740
-+ * @summary annotations cause memory leak
-+ * @author gafter
-+ *
-+ * @run shell LoaderLeak.sh
-+ */
-+
-+import java.net.*;
-+import java.lang.ref.*;
-+import java.util.*;
-+import java.io.*;
-+
-+public class Main {
-+    public static void main(String[] args) throws Exception {
-+        for (int i=0; i<100; i++)
-+            doTest(args.length != 0);
-+    }
-+
-+    static void doTest(boolean readAnn) throws Exception {
-+        // URL classes = new URL("file://" + System.getProperty("user.dir") + "/classes");
-+        // URL[] path = { classes };
-+        // URLClassLoader loader = new URLClassLoader(path);
-+        ClassLoader loader = new SimpleClassLoader();
-+        WeakReference<Class<?>> c = new WeakReference(loader.loadClass("C"));
-+        if (c.get() == null) throw new AssertionError();
-+        if (c.get().getClassLoader() != loader) throw new AssertionError();
-+        if (readAnn) System.out.println(c.get().getAnnotations()[0]);
-+        if (c.get() == null) throw new AssertionError();
-+        System.gc();
-+        System.gc();
-+        if (c.get() == null) throw new AssertionError();
-+        System.gc();
-+        System.gc();
-+        loader = null;
-+        System.gc();
-+        System.gc();
-+        if (c.get() != null) throw new AssertionError();
-+    }
-+}
-+
-+class SimpleClassLoader extends ClassLoader {
-+    private Hashtable classes = new Hashtable();
-+
-+    public SimpleClassLoader() {
-+    }
-+    private byte getClassImplFromDataBase(String className)[] {
-+        byte result[];
-+        try {
-+            FileInputStream fi = new FileInputStream("classes/"+className+".class");
-+            result = new byte[fi.available()];
-+            fi.read(result);
-+            return result;
-+        } catch (Exception e) {
-+
-+            /*
-+             * If we caught an exception, either the class wasnt found or it
-+             * was unreadable by our process.
-+             */
-+            return null;
-+        }
-+    }
-+    public Class loadClass(String className) throws ClassNotFoundException {
-+        return (loadClass(className, true));
-+    }
-+    public synchronized Class loadClass(String className, boolean resolveIt)
-+        throws ClassNotFoundException {
-+        Class result;
-+        byte  classData[];
-+
-+        /* Check our local cache of classes */
-+        result = (Class)classes.get(className);
-+        if (result != null) {
-+            return result;
-+        }
-+
-+        /* Check with the primordial class loader */
-+        try {
-+            result = super.findSystemClass(className);
-+            return result;
-+        } catch (ClassNotFoundException e) {
-+        }
-+
-+        /* Try to load it from our repository */
-+        classData = getClassImplFromDataBase(className);
-+        if (classData == null) {
-+            throw new ClassNotFoundException();
-+        }
-+
-+        /* Define it (parse the class file) */
-+        result = defineClass(classData, 0, classData.length);
-+        if (result == null) {
-+            throw new ClassFormatError();
-+        }
-+
-+        if (resolveIt) {
-+            resolveClass(result);
-+        }
-+
-+        classes.put(className, result);
-+        return result;
-+    }
-+}
-diff -Nru openjdk.orig/jdk/test/java/lang/annotation/Missing/A.java openjdk/jdk/test/java/lang/annotation/Missing/A.java
---- openjdk.orig/jdk/test/java/lang/annotation/Missing/A.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/test/java/lang/annotation/Missing/A.java	2009-02-11 00:58:01.000000000 +0000
-@@ -0,0 +1,30 @@
-+/*
-+ * Copyright 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.
-+ *
-+ * 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.
-+ */
-+
-+/**
-+ * Class to have a missing annotation applied for running MissingTest.
-+ */
-+@Missing
-+@Marker
-+public class A {
-+}
-diff -Nru openjdk.orig/jdk/test/java/lang/annotation/Missing/B.java openjdk/jdk/test/java/lang/annotation/Missing/B.java
---- openjdk.orig/jdk/test/java/lang/annotation/Missing/B.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/test/java/lang/annotation/Missing/B.java	2009-02-11 00:58:01.000000000 +0000
-@@ -0,0 +1,31 @@
-+/*
-+ * Copyright 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.
-+ *
-+ * 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.
-+ */
-+
-+/**
-+ * Class to have an indirectly missing annotation applied for for
-+ * running MisssingTest.
-+ */
-+@MissingWrapper(@Missing)
-+@Marker
-+public class B {
-+}
-diff -Nru openjdk.orig/jdk/test/java/lang/annotation/Missing/C.java openjdk/jdk/test/java/lang/annotation/Missing/C.java
---- openjdk.orig/jdk/test/java/lang/annotation/Missing/C.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/test/java/lang/annotation/Missing/C.java	2009-02-11 00:58:01.000000000 +0000
-@@ -0,0 +1,31 @@
-+/*
-+ * Copyright 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.
-+ *
-+ * 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.
-+ */
-+
-+/**
-+ * Class to have a missing annotation applied for running MissingTest.
-+ */
-+public class C {
-+    public void method1(@Missing @Marker Object param1) {
-+        return;
-+    }
-+}
-diff -Nru openjdk.orig/jdk/test/java/lang/annotation/Missing/D.java openjdk/jdk/test/java/lang/annotation/Missing/D.java
---- openjdk.orig/jdk/test/java/lang/annotation/Missing/D.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/test/java/lang/annotation/Missing/D.java	2009-02-11 00:58:01.000000000 +0000
-@@ -0,0 +1,31 @@
-+/*
-+ * Copyright 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.
-+ *
-+ * 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.
-+ */
-+
-+/**
-+ * Class to have a missing annotation applied for running MissingTest.
-+ */
-+public class D {
-+    public void method1(@MissingWrapper(@Missing) @Marker Object param1) {
-+        return;
-+    }
-+}
-diff -Nru openjdk.orig/jdk/test/java/lang/annotation/Missing/Marker.java openjdk/jdk/test/java/lang/annotation/Missing/Marker.java
---- openjdk.orig/jdk/test/java/lang/annotation/Missing/Marker.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/test/java/lang/annotation/Missing/Marker.java	2009-02-11 00:58:01.000000000 +0000
-@@ -0,0 +1,32 @@
-+/*
-+ * Copyright 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.
-+ *
-+ * 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.
-+ */
-+
-+import java.lang.annotation.Retention;
-+import static java.lang.annotation.RetentionPolicy.*;
-+
-+/**
-+ * A marker annotation.  Used so that at least one annotation will be
-+ * present on the classes tested by MissingTest.
-+ */
-+@Retention(RUNTIME)
-+public @interface Marker {}
-diff -Nru openjdk.orig/jdk/test/java/lang/annotation/Missing/Missing.java openjdk/jdk/test/java/lang/annotation/Missing/Missing.java
---- openjdk.orig/jdk/test/java/lang/annotation/Missing/Missing.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/test/java/lang/annotation/Missing/Missing.java	2009-02-11 00:58:01.000000000 +0000
-@@ -0,0 +1,32 @@
-+/*
-+ * Copyright 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.
-+ *
-+ * 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.
-+ */
-+
-+import java.lang.annotation.Retention;
-+import static java.lang.annotation.RetentionPolicy.*;
-+
-+/**
-+ * The class file for this annotation type is missing when MissingTest
-+ * is run.
-+ */
-+@Retention(RUNTIME)
-+public @interface Missing {}
-diff -Nru openjdk.orig/jdk/test/java/lang/annotation/Missing/MissingTest.java openjdk/jdk/test/java/lang/annotation/Missing/MissingTest.java
---- openjdk.orig/jdk/test/java/lang/annotation/Missing/MissingTest.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/test/java/lang/annotation/Missing/MissingTest.java	2009-02-11 00:58:01.000000000 +0000
-@@ -0,0 +1,135 @@
-+/*
-+ * Copyright 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.
-+ *
-+ * This code is distributed in the hope that it will be useful, but WITHOUT
-+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-+ * version 2 for more details (a copy is included in the LICENSE file that
-+ * accompanied this code).
-+ *
-+ * You should have received a copy of the GNU General Public License version
-+ * 2 along with this work; if not, write to the Free Software Foundation,
-+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-+ *
-+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
-+ * CA 95054 USA or visit www.sun.com if you need additional information or
-+ * have any questions.
-+ */
-+
-+/*
-+ * @test
-+ * @bug 6322301
-+ * @summary Verify when missing annotation classes cause exceptions
-+ * @author Joseph D. Darcy
-+ * @compile MissingTest.java A.java B.java C.java D.java Marker.java Missing.java MissingWrapper.java
-+ * @clean Missing
-+ * @run main MissingTest
-+ */
-+
-+import java.lang.reflect.*;
-+
-+/**
-+ * This test verifies that a missing annotation class leads to the
-+ * expected exceptional behavior; a missing directly applied
-+ * annotation is currently ignored but a missing annotation value
-+ * inside another annotation throws an exception.
-+ *
-+ * To be run as intended, the annotation type Missing should *not* be
-+ * on the classpath when the test is run; with jtreg, it is deleted by
-+ * the @clean directive.
-+ */
-+public class MissingTest {
-+    /**
-+     * For the annotated element argument, get all its annotations and
-+     * see whether or not an exception is throw upon reading the
-+     * annotations.  Additionally, verify at least one annotation is
-+     * present.
-+     */
-+    private static void testAnnotation(AnnotatedElement element,
-+                                boolean exceptionExpected) {
-+        java.lang.annotation.Annotation[] annotations;
-+        try {
-+            annotations = element.getAnnotations();
-+            if (exceptionExpected) {
-+                System.err.println("Error: Did not get an exception reading annotations on "
-+                                   + element);
-+                System.err.println("Annotations found: "
-+                                   + java.util.Arrays.toString(annotations));
-+                throw new RuntimeException();
-+            }
-+            if (annotations.length == 0) {
-+                System.err.println("Error: no annotations found on " + element);
-+                throw new RuntimeException();
-+            }
-+        } catch (Throwable t) {
-+            if (!exceptionExpected) {
-+                System.err.println("Error: Got an unexpected exception reading annotations on "
-+                                   + element);
-+                throw new RuntimeException(t);
-+            }
-+        }
-+    }
-+
-+    /**
-+     * For the annotated element argument, get all its annotations and
-+     * see whether or not an exception is throw upon reading the
-+     * annotations.  Additionally, verify at least one annotation is
-+     * present.
-+     */
-+    private static void testParameterAnnotation(Method m,
-+                                                boolean exceptionExpected) {
-+        java.lang.annotation.Annotation[][] annotationsArray;
-+        try {
-+            annotationsArray = m.getParameterAnnotations();
-+            if (exceptionExpected) {
-+                System.err.println("Error: Did not get an exception reading annotations on method"
-+                                   + m);
-+                System.err.println("Annotations found: "
-+                                   + java.util.Arrays.toString(annotationsArray));
-+                throw new RuntimeException();
-+            }
-+            if (annotationsArray.length == 0 ) {
-+                System.err.println("Error: no parameters for " + m);
-+                throw new RuntimeException();
-+            } else {
-+                java.lang.annotation.Annotation[] annotations = annotationsArray[0];
-+                if (annotations.length == 0) {
-+                    System.err.println("Error: no annotations on " + m);
-+                    throw new RuntimeException();
-+                }
-+            }
-+        } catch (Throwable t) {
-+            if (!exceptionExpected) {
-+                System.err.println("Error: Got an unexpected exception reading annotations on "
-+                                   + m);
-+                throw new RuntimeException(t);
-+            }
-+        }
-+    }
-+
-+    public static void main(String argv[]) throws Exception {
-+        // Class A has a directly applied annotation whose class is
-+        // missing.
-+        testAnnotation(A.class, false);
-+
-+        // Class B has a directly applied annotation whose value
-+        // includes to an annotation class that is missing.
-+        testAnnotation(B.class, true);
-+
-+
-+        // Class C has a directly applied parameter annotation whose
-+        // class is missing.
-+        testParameterAnnotation(C.class.getDeclaredMethod("method1", Object.class),
-+                                false);
-+
-+        // Class D has a directly applied parameter annotation whose value
-+        // includes to an annotation class that is missing.
-+        testParameterAnnotation(D.class.getDeclaredMethod("method1", Object.class),
-+                                true);
-+    }
-+}
-diff -Nru openjdk.orig/jdk/test/java/lang/annotation/Missing/MissingWrapper.java openjdk/jdk/test/java/lang/annotation/Missing/MissingWrapper.java
---- openjdk.orig/jdk/test/java/lang/annotation/Missing/MissingWrapper.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/test/java/lang/annotation/Missing/MissingWrapper.java	2009-02-11 00:58:01.000000000 +0000
-@@ -0,0 +1,34 @@
-+/*
-+ * Copyright 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.
-+ *
-+ * 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.
-+ */
-+
-+import java.lang.annotation.Retention;
-+import static java.lang.annotation.RetentionPolicy.*;
-+
-+/**
-+ * Annotation wrapper around an annotation whose class will be missing
-+ * when MissingTest is run.
-+ */
-+@Retention(RUNTIME)
-+public @interface MissingWrapper {
-+    Missing value();
-+}
-diff -Nru openjdk.orig/jdk/test/java/lang/annotation/package-info.java openjdk/jdk/test/java/lang/annotation/package-info.java
---- openjdk.orig/jdk/test/java/lang/annotation/package-info.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/test/java/lang/annotation/package-info.java	2009-02-11 00:58:01.000000000 +0000
-@@ -0,0 +1,37 @@
-+/*
-+ * Copyright 2004 Sun Microsystems, Inc.  All Rights Reserved.
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * This code is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License version 2 only, as
-+ * published by the Free Software Foundation.
-+ *
-+ * This code is distributed in the hope that it will be useful, but WITHOUT
-+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-+ * version 2 for more details (a copy is included in the LICENSE file that
-+ * accompanied this code).
-+ *
-+ * You should have received a copy of the GNU General Public License version
-+ * 2 along with this work; if not, write to the Free Software Foundation,
-+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-+ *
-+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
-+ * CA 95054 USA or visit www.sun.com if you need additional information or
-+ * have any questions.
-+ */
-+
-+/*
-+ * @test
-+ * @bug 4901290 5037531
-+ * @summary Package annotations
-+ * @author gafter
-+ *
-+ * @compile -source 1.5 package-info.java PackageMain.java
-+ * @run main PackageMain
-+ */
-+
-+@java.lang.annotation.Documented
-+package foo.bar;
-+
-+class Baz {}
-diff -Nru openjdk.orig/jdk/test/java/lang/annotation/PackageMain.java openjdk/jdk/test/java/lang/annotation/PackageMain.java
---- openjdk.orig/jdk/test/java/lang/annotation/PackageMain.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/test/java/lang/annotation/PackageMain.java	2009-02-11 00:58:01.000000000 +0000
-@@ -0,0 +1,36 @@
-+/*
-+ * Copyright 2004 Sun Microsystems, Inc.  All Rights Reserved.
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * This code is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License version 2 only, as
-+ * published by the Free Software Foundation.
-+ *
-+ * This code is distributed in the hope that it will be useful, but WITHOUT
-+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-+ * version 2 for more details (a copy is included in the LICENSE file that
-+ * accompanied this code).
-+ *
-+ * You should have received a copy of the GNU General Public License version
-+ * 2 along with this work; if not, write to the Free Software Foundation,
-+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-+ *
-+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
-+ * CA 95054 USA or visit www.sun.com if you need additional information or
-+ * have any questions.
-+ */
-+
-+import java.lang.annotation.Documented;
-+
-+public class PackageMain {
-+    public static void main(String[] args) throws Exception {
-+        Class<?> c = Class.forName("foo.bar.Baz");
-+        System.out.println("c=" + c);
-+        System.out.println("cl=" + c.getClassLoader());
-+        Package p = c.getPackage();
-+        System.out.println("p=" + p);
-+        Documented d = p.getAnnotation(Documented.class);
-+        if (d == null) throw new Error();
-+    }
-+}
-diff -Nru openjdk.orig/jdk/test/java/lang/annotation/RecursiveAnnotation.java openjdk/jdk/test/java/lang/annotation/RecursiveAnnotation.java
---- openjdk.orig/jdk/test/java/lang/annotation/RecursiveAnnotation.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/test/java/lang/annotation/RecursiveAnnotation.java	2009-02-11 00:58:01.000000000 +0000
-@@ -0,0 +1,44 @@
-+/*
-+ * Copyright 2004 Sun Microsystems, Inc.  All Rights Reserved.
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * This code is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License version 2 only, as
-+ * published by the Free Software Foundation.
-+ *
-+ * This code is distributed in the hope that it will be useful, but WITHOUT
-+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-+ * version 2 for more details (a copy is included in the LICENSE file that
-+ * accompanied this code).
-+ *
-+ * You should have received a copy of the GNU General Public License version
-+ * 2 along with this work; if not, write to the Free Software Foundation,
-+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-+ *
-+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
-+ * CA 95054 USA or visit www.sun.com if you need additional information or
-+ * have any questions.
-+ */
-+
-+/*
-+ * @test
-+ * @bug     5037685
-+ * @summary Under certain circumstances, recursive annotations disappeared
-+ * @author  Josh Bloch
-+ */
-+
-+import java.lang.annotation.*;
-+import static java.lang.annotation.RetentionPolicy.*;
-+
-+@Rat public class RecursiveAnnotation {
-+    public static void main(String[] args) {
-+        if (!RecursiveAnnotation.class.isAnnotationPresent(Rat.class))
-+            throw new RuntimeException("RecursiveAnnotation");
-+
-+        if (!Rat.class.isAnnotationPresent(Rat.class))
-+            throw new RuntimeException("Rat");
-+    }
-+}
-+
-+@Retention(RUNTIME) @Rat @interface Rat { }
-diff -Nru openjdk.orig/jdk/test/java/lang/annotation/UnitTest.java openjdk/jdk/test/java/lang/annotation/UnitTest.java
---- openjdk.orig/jdk/test/java/lang/annotation/UnitTest.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/test/java/lang/annotation/UnitTest.java	2009-02-11 00:58:01.000000000 +0000
-@@ -0,0 +1,4983 @@
-+/*
-+ * Copyright 2003-2004 Sun Microsystems, Inc.  All Rights Reserved.
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * This code is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License version 2 only, as
-+ * published by the Free Software Foundation.
-+ *
-+ * This code is distributed in the hope that it will be useful, but WITHOUT
-+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-+ * version 2 for more details (a copy is included in the LICENSE file that
-+ * accompanied this code).
-+ *
-+ * You should have received a copy of the GNU General Public License version
-+ * 2 along with this work; if not, write to the Free Software Foundation,
-+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-+ *
-+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
-+ * CA 95054 USA or visit www.sun.com if you need additional information or
-+ * have any questions.
-+ */
-+
-+/*
-+ * @test
-+ * @bug     4906359 4963461 4965058 4965039 4986770
-+ * @summary Unit test for annotation reading
-+ * @author  Josh Bloch
-+ * @compile -source 1.5 UnitTest.java
-+ * @run main UnitTest
-+ */
-+
-+import static java.lang.annotation.RetentionPolicy.RUNTIME;
-+
-+import java.lang.annotation.*;
-+import java.util.*;
-+import java.lang.reflect.*;
-+import java.io.*;
-+
-+public class UnitTest {
-+    private static final Class[] X = new Class[0];
-+    private static final Class[] Y = { int.class };
-+
-+    static int numTests = 0;
-+
-+    public static void main(String[] args) throws Exception {
-+
-+        // *** TESTS ON ANNOTATED METHODS ***
-+
-+        // MULTIMEMBER SCALAR TYPES ON METHOD
-+        checkScalarTypes(UnitTest.class.getMethod("scalarTypesMethod", X));
-+        checkScalarTypesOverrideDefault(UnitTest.class.getMethod("scalarTypesOverrideDefaultMethod", X));
-+        checkScalarTypesAcceptDefault(UnitTest.class.getMethod("scalarTypesAcceptDefaultMethod", X));
-+
-+        // MULTIMEMBER ARRAY TYPES ON METHOD
-+        checkArrayTypes0(UnitTest.class.getMethod("emptyArrayTypesMethod", X));
-+        checkArrayTypes1(UnitTest.class.getMethod("singleElementArrayTypesMethod", X));
-+        checkArrayTypes2(UnitTest.class.getMethod("twoElementArrayTypesMethod", X));
-+        checkArrayTypesAcceptDefault(UnitTest.class.getMethod("arrayTypesAcceptDefaultMethod", X));
-+        checkArrayTypesOverrideDefault(UnitTest.class.getMethod("arrayTypesOverrideDefaultMethod", X));
-+
-+        // MARKER TYPE ON METHOD
-+        checkMarker(UnitTest.class.getMethod("markerMethod", X));
-+
-+        // SINGLE-MEMBER SCALAR TYPES ON METHOD
-+        checkSingleMemberByte(UnitTest.class.getMethod("SingleMemberByte", X));
-+        checkSingleMemberShort(UnitTest.class.getMethod("SingleMemberShort", X));
-+        checkSingleMemberInt(UnitTest.class.getMethod("SingleMemberInt", X));
-+        checkSingleMemberLong(UnitTest.class.getMethod("SingleMemberLong", X));
-+        checkSingleMemberChar(UnitTest.class.getMethod("SingleMemberChar", X));
-+        checkSingleMemberFloat(UnitTest.class.getMethod("SingleMemberFloat", X));
-+        checkSingleMemberDouble(UnitTest.class.getMethod("SingleMemberDouble", X));
-+        checkSingleMemberBoolean(UnitTest.class.getMethod("SingleMemberBoolean", X));
-+        checkSingleMemberString(UnitTest.class.getMethod("SingleMemberString", X));
-+        checkSingleMemberClass(UnitTest.class.getMethod("SingleMemberClass", X));
-+        checkSingleMemberEnum(UnitTest.class.getMethod("SingleMemberEnum", X));
-+
-+        // SINGLE-MEMBER SCALAR TYPES WITH DEFAULT-OVERRIDE ON METHOD
-+        checkSingleMemberByteOvrdDef(UnitTest.class.getMethod("SingleMemberByteOvrdDef", X));
-+        checkSingleMemberShortOvrdDef(UnitTest.class.getMethod("SingleMemberShortOvrdDef", X));
-+        checkSingleMemberIntOvrdDef(UnitTest.class.getMethod("SingleMemberIntOvrdDef", X));
-+        checkSingleMemberLongOvrdDef(UnitTest.class.getMethod("SingleMemberLongOvrdDef", X));
-+        checkSingleMemberCharOvrdDef(UnitTest.class.getMethod("SingleMemberCharOvrdDef", X));
-+        checkSingleMemberFloatOvrdDef(UnitTest.class.getMethod("SingleMemberFloatOvrdDef", X));
-+        checkSingleMemberDoubleOvrdDef(UnitTest.class.getMethod("SingleMemberDoubleOvrdDef", X));
-+        checkSingleMemberBooleanOvrdDef(UnitTest.class.getMethod("SingleMemberBooleanOvrdDef", X));
-+        checkSingleMemberStringOvrdDef(UnitTest.class.getMethod("SingleMemberStringOvrdDef", X));
-+        checkSingleMemberClassOvrdDef(UnitTest.class.getMethod("SingleMemberClassOvrdDef", X));
-+        checkSingleMemberEnumOvrdDef(UnitTest.class.getMethod("SingleMemberEnumOvrdDef", X));
-+
-+        // SINGLE-MEMBER SCALAR TYPES WITH DEFAULT-ACCEPT ON METHOD
-+        checkSingleMemberByteAcceptDef(UnitTest.class.getMethod("SingleMemberByteAcceptDef", X));
-+        checkSingleMemberShortAcceptDef(UnitTest.class.getMethod("SingleMemberShortAcceptDef", X));
-+        checkSingleMemberIntAcceptDef(UnitTest.class.getMethod("SingleMemberIntAcceptDef", X));
-+        checkSingleMemberLongAcceptDef(UnitTest.class.getMethod("SingleMemberLongAcceptDef", X));
-+        checkSingleMemberCharAcceptDef(UnitTest.class.getMethod("SingleMemberCharAcceptDef", X));
-+        checkSingleMemberFloatAcceptDef(UnitTest.class.getMethod("SingleMemberFloatAcceptDef", X));
-+        checkSingleMemberDoubleAcceptDef(UnitTest.class.getMethod("SingleMemberDoubleAcceptDef", X));
-+        checkSingleMemberBooleanAcceptDef(UnitTest.class.getMethod("SingleMemberBooleanAcceptDef", X));
-+        checkSingleMemberStringAcceptDef(UnitTest.class.getMethod("SingleMemberStringAcceptDef", X));
-+        checkSingleMemberClassAcceptDef(UnitTest.class.getMethod("SingleMemberClassAcceptDef", X));
-+        checkSingleMemberEnumAcceptDef(UnitTest.class.getMethod("SingleMemberEnumAcceptDef", X));
-+
-+        // SINGLE-MEMBER ARRAY TYPES (EMPTY ARRAY) ON METHOD
-+        checkSingleMemberByteArrEmpty(UnitTest.class.getMethod("SingleMemberByteArrEmpty", X));
-+        checkSingleMemberShortArrEmpty(UnitTest.class.getMethod("SingleMemberShortArrEmpty", X));
-+        checkSingleMemberIntArrEmpty(UnitTest.class.getMethod("SingleMemberIntArrEmpty", X));
-+        checkSingleMemberLongArrEmpty(UnitTest.class.getMethod("SingleMemberLongArrEmpty", X));
-+        checkSingleMemberCharArrEmpty(UnitTest.class.getMethod("SingleMemberCharArrEmpty", X));
-+        checkSingleMemberFloatArrEmpty(UnitTest.class.getMethod("SingleMemberFloatArrEmpty", X));
-+        checkSingleMemberDoubleArrEmpty(UnitTest.class.getMethod("SingleMemberDoubleArrEmpty", X));
-+        checkSingleMemberBooleanArrEmpty(UnitTest.class.getMethod("SingleMemberBooleanArrEmpty", X));
-+        checkSingleMemberStringArrEmpty(UnitTest.class.getMethod("SingleMemberStringArrEmpty", X));
-+        checkSingleMemberClassArrEmpty(UnitTest.class.getMethod("SingleMemberClassArrEmpty", X));
-+        checkSingleMemberEnumArrEmpty(UnitTest.class.getMethod("SingleMemberEnumArrEmpty", X));
-+
-+        // SINGLE-MEMBER ARRAY TYPES (ONE-ELEMENT ARRAY) ON METHOD
-+        checkSingleMemberByteArrOne(UnitTest.class.getMethod("SingleMemberByteArrOne", X));
-+        checkSingleMemberShortArrOne(UnitTest.class.getMethod("SingleMemberShortArrOne", X));
-+        checkSingleMemberIntArrOne(UnitTest.class.getMethod("SingleMemberIntArrOne", X));
-+        checkSingleMemberLongArrOne(UnitTest.class.getMethod("SingleMemberLongArrOne", X));
-+        checkSingleMemberCharArrOne(UnitTest.class.getMethod("SingleMemberCharArrOne", X));
-+        checkSingleMemberFloatArrOne(UnitTest.class.getMethod("SingleMemberFloatArrOne", X));
-+        checkSingleMemberDoubleArrOne(UnitTest.class.getMethod("SingleMemberDoubleArrOne", X));
-+        checkSingleMemberBooleanArrOne(UnitTest.class.getMethod("SingleMemberBooleanArrOne", X));
-+        checkSingleMemberStringArrOne(UnitTest.class.getMethod("SingleMemberStringArrOne", X));
-+        checkSingleMemberClassArrOne(UnitTest.class.getMethod("SingleMemberClassArrOne", X));
-+        checkSingleMemberEnumArrOne(UnitTest.class.getMethod("SingleMemberEnumArrOne", X));
-+
-+        // SINGLE-MEMBER ARRAY TYPES (TWO-ELEMENT ARRAY) ON METHOD
-+        checkSingleMemberByteArrTwo(UnitTest.class.getMethod("SingleMemberByteArrTwo", X));
-+        checkSingleMemberShortArrTwo(UnitTest.class.getMethod("SingleMemberShortArrTwo", X));
-+        checkSingleMemberIntArrTwo(UnitTest.class.getMethod("SingleMemberIntArrTwo", X));
-+        checkSingleMemberLongArrTwo(UnitTest.class.getMethod("SingleMemberLongArrTwo", X));
-+        checkSingleMemberCharArrTwo(UnitTest.class.getMethod("SingleMemberCharArrTwo", X));
-+        checkSingleMemberFloatArrTwo(UnitTest.class.getMethod("SingleMemberFloatArrTwo", X));
-+        checkSingleMemberDoubleArrTwo(UnitTest.class.getMethod("SingleMemberDoubleArrTwo", X));
-+        checkSingleMemberBooleanArrTwo(UnitTest.class.getMethod("SingleMemberBooleanArrTwo", X));
-+        checkSingleMemberStringArrTwo(UnitTest.class.getMethod("SingleMemberStringArrTwo", X));
-+        checkSingleMemberClassArrTwo(UnitTest.class.getMethod("SingleMemberClassArrTwo", X));
-+        checkSingleMemberEnumArrTwo(UnitTest.class.getMethod("SingleMemberEnumArrTwo", X));
-+
-+        // SINGLE-MEMBER ARRAY TYPES WITH DEFAULT (OVERRIDE)ON METHOD
-+        checkSingleMemberByteArrOvrdDef(UnitTest.class.getMethod("SingleMemberByteArrOvrdDef", X));
-+        checkSingleMemberShortArrOvrdDef(UnitTest.class.getMethod("SingleMemberShortArrOvrdDef", X));
-+        checkSingleMemberIntArrOvrdDef(UnitTest.class.getMethod("SingleMemberIntArrOvrdDef", X));
-+        checkSingleMemberLongArrOvrdDef(UnitTest.class.getMethod("SingleMemberLongArrOvrdDef", X));
-+        checkSingleMemberCharArrOvrdDef(UnitTest.class.getMethod("SingleMemberCharArrOvrdDef", X));
-+        checkSingleMemberFloatArrOvrdDef(UnitTest.class.getMethod("SingleMemberFloatArrOvrdDef", X));
-+        checkSingleMemberDoubleArrOvrdDef(UnitTest.class.getMethod("SingleMemberDoubleArrOvrdDef", X));
-+        checkSingleMemberBooleanArrOvrdDef(UnitTest.class.getMethod("SingleMemberBooleanArrOvrdDef", X));
-+        checkSingleMemberStringArrOvrdDef(UnitTest.class.getMethod("SingleMemberStringArrOvrdDef", X));
-+        checkSingleMemberClassArrOvrdDef(UnitTest.class.getMethod("SingleMemberClassArrOvrdDef", X));
-+        checkSingleMemberEnumArrOvrdDef(UnitTest.class.getMethod("SingleMemberEnumArrOvrdDef", X));
-+
-+        // SINGLE-MEMBER ARRAY TYPES WITH DEFAULT (ACCEPT)ON METHOD
-+        checkSingleMemberByteArrAcceptDef(UnitTest.class.getMethod("SingleMemberByteArrAcceptDef", X));
-+        checkSingleMemberShortArrAcceptDef(UnitTest.class.getMethod("SingleMemberShortArrAcceptDef", X));
-+        checkSingleMemberIntArrAcceptDef(UnitTest.class.getMethod("SingleMemberIntArrAcceptDef", X));
-+        checkSingleMemberLongArrAcceptDef(UnitTest.class.getMethod("SingleMemberLongArrAcceptDef", X));
-+        checkSingleMemberCharArrAcceptDef(UnitTest.class.getMethod("SingleMemberCharArrAcceptDef", X));
-+        checkSingleMemberFloatArrAcceptDef(UnitTest.class.getMethod("SingleMemberFloatArrAcceptDef", X));
-+        checkSingleMemberDoubleArrAcceptDef(UnitTest.class.getMethod("SingleMemberDoubleArrAcceptDef", X));
-+        checkSingleMemberBooleanArrAcceptDef(UnitTest.class.getMethod("SingleMemberBooleanArrAcceptDef", X));
-+        checkSingleMemberStringArrAcceptDef(UnitTest.class.getMethod("SingleMemberStringArrAcceptDef", X));
-+        checkSingleMemberClassArrAcceptDef(UnitTest.class.getMethod("SingleMemberClassArrAcceptDef", X));
-+        checkSingleMemberEnumArrAcceptDef(UnitTest.class.getMethod("SingleMemberEnumArrAcceptDef", X));
-+
-+        // *** TESTS ON ANNOTATED FIELDS ***
-+
-+        // MULTIMEMBER SCALAR TYPES ON FIELD
-+        checkScalarTypes(UnitTest.class.getField("scalarTypesField"));
-+        checkScalarTypesAcceptDefault(UnitTest.class.getField("scalarTypesAcceptDefaultField"));
-+        checkScalarTypesOverrideDefault(UnitTest.class.getField("scalarTypesOverrideDefaultField"));
-+
-+        // MULTIMEMBER ARRAY TYPES ON FIELD
-+        checkArrayTypes0(UnitTest.class.getField("emptyArrayTypesField"));
-+        checkArrayTypes1(UnitTest.class.getField("singleElementArrayTypesField"));
-+        checkArrayTypes2(UnitTest.class.getField("twoElementArrayTypesField"));
-+        checkArrayTypesAcceptDefault(UnitTest.class.getField("arrayTypesAcceptDefaultField"));
-+        checkArrayTypesOverrideDefault(UnitTest.class.getField("arrayTypesOverrideDefaultField"));
-+
-+        // MARKER TYPE ON FIELD
-+        checkMarker(UnitTest.class.getField("markerField"));
-+
-+        // SINGLE-MEMBER SCALAR TYPES ON FIELD
-+        checkSingleMemberByte(UnitTest.class.getField("SingleMemberByteField"));
-+        checkSingleMemberShort(UnitTest.class.getField("SingleMemberShortField"));
-+        checkSingleMemberInt(UnitTest.class.getField("SingleMemberIntField"));
-+        checkSingleMemberLong(UnitTest.class.getField("SingleMemberLongField"));
-+        checkSingleMemberChar(UnitTest.class.getField("SingleMemberCharField"));
-+        checkSingleMemberFloat(UnitTest.class.getField("SingleMemberFloatField"));
-+        checkSingleMemberDouble(UnitTest.class.getField("SingleMemberDoubleField"));
-+        checkSingleMemberBoolean(UnitTest.class.getField("SingleMemberBooleanField"));
-+        checkSingleMemberString(UnitTest.class.getField("SingleMemberStringField"));
-+        checkSingleMemberClass(UnitTest.class.getField("SingleMemberClassField"));
-+        checkSingleMemberEnum(UnitTest.class.getField("SingleMemberEnumField"));
-+
-+        // SINGLE-MEMBER SCALAR TYPES WITH DEFAULT-OVERRIDE ON FIELD
-+        checkSingleMemberByteOvrdDef(UnitTest.class.getField("SingleMemberByteOvrdDefField"));
-+        checkSingleMemberShortOvrdDef(UnitTest.class.getField("SingleMemberShortOvrdDefField"));
-+        checkSingleMemberIntOvrdDef(UnitTest.class.getField("SingleMemberIntOvrdDefField"));
-+        checkSingleMemberLongOvrdDef(UnitTest.class.getField("SingleMemberLongOvrdDefField"));
-+        checkSingleMemberCharOvrdDef(UnitTest.class.getField("SingleMemberCharOvrdDefField"));
-+        checkSingleMemberFloatOvrdDef(UnitTest.class.getField("SingleMemberFloatOvrdDefField"));
-+        checkSingleMemberDoubleOvrdDef(UnitTest.class.getField("SingleMemberDoubleOvrdDefField"));
-+        checkSingleMemberBooleanOvrdDef(UnitTest.class.getField("SingleMemberBooleanOvrdDefField"));
-+        checkSingleMemberStringOvrdDef(UnitTest.class.getField("SingleMemberStringOvrdDefField"));
-+        checkSingleMemberClassOvrdDef(UnitTest.class.getField("SingleMemberClassOvrdDefField"));
-+        checkSingleMemberEnumOvrdDef(UnitTest.class.getField("SingleMemberEnumOvrdDefField"));
-+
-+        // SINGLE-MEMBER SCALAR TYPES WITH DEFAULT-ACCEPT ON FIELD
-+        checkSingleMemberByteAcceptDef(UnitTest.class.getField("SingleMemberByteAcceptDefField"));
-+        checkSingleMemberShortAcceptDef(UnitTest.class.getField("SingleMemberShortAcceptDefField"));
-+        checkSingleMemberIntAcceptDef(UnitTest.class.getField("SingleMemberIntAcceptDefField"));
-+        checkSingleMemberLongAcceptDef(UnitTest.class.getField("SingleMemberLongAcceptDefField"));
-+        checkSingleMemberCharAcceptDef(UnitTest.class.getField("SingleMemberCharAcceptDefField"));
-+        checkSingleMemberFloatAcceptDef(UnitTest.class.getField("SingleMemberFloatAcceptDefField"));
-+        checkSingleMemberDoubleAcceptDef(UnitTest.class.getField("SingleMemberDoubleAcceptDefField"));
-+        checkSingleMemberBooleanAcceptDef(UnitTest.class.getField("SingleMemberBooleanAcceptDefField"));
-+        checkSingleMemberStringAcceptDef(UnitTest.class.getField("SingleMemberStringAcceptDefField"));
-+        checkSingleMemberClassAcceptDef(UnitTest.class.getField("SingleMemberClassAcceptDefField"));
-+        checkSingleMemberEnumAcceptDef(UnitTest.class.getField("SingleMemberEnumAcceptDefField"));
-+
-+        // SINGLE-MEMBER ARRAY TYPES (EMPTY ARRAY) ON FIELD
-+        checkSingleMemberByteArrEmpty(UnitTest.class.getField("SingleMemberByteArrEmptyField"));
-+        checkSingleMemberShortArrEmpty(UnitTest.class.getField("SingleMemberShortArrEmptyField"));
-+        checkSingleMemberIntArrEmpty(UnitTest.class.getField("SingleMemberIntArrEmptyField"));
-+        checkSingleMemberLongArrEmpty(UnitTest.class.getField("SingleMemberLongArrEmptyField"));
-+        checkSingleMemberCharArrEmpty(UnitTest.class.getField("SingleMemberCharArrEmptyField"));
-+        checkSingleMemberFloatArrEmpty(UnitTest.class.getField("SingleMemberFloatArrEmptyField"));
-+        checkSingleMemberDoubleArrEmpty(UnitTest.class.getField("SingleMemberDoubleArrEmptyField"));
-+        checkSingleMemberBooleanArrEmpty(UnitTest.class.getField("SingleMemberBooleanArrEmptyField"));
-+        checkSingleMemberStringArrEmpty(UnitTest.class.getField("SingleMemberStringArrEmptyField"));
-+        checkSingleMemberClassArrEmpty(UnitTest.class.getField("SingleMemberClassArrEmptyField"));
-+        checkSingleMemberEnumArrEmpty(UnitTest.class.getField("SingleMemberEnumArrEmptyField"));
-+
-+        // SINGLE-MEMBER ARRAY TYPES (ONE-ELEMENT ARRAY) ON FIELD
-+        checkSingleMemberByteArrOne(UnitTest.class.getField("SingleMemberByteArrOneField"));
-+        checkSingleMemberShortArrOne(UnitTest.class.getField("SingleMemberShortArrOneField"));
-+        checkSingleMemberIntArrOne(UnitTest.class.getField("SingleMemberIntArrOneField"));
-+        checkSingleMemberLongArrOne(UnitTest.class.getField("SingleMemberLongArrOneField"));
-+        checkSingleMemberCharArrOne(UnitTest.class.getField("SingleMemberCharArrOneField"));
-+        checkSingleMemberFloatArrOne(UnitTest.class.getField("SingleMemberFloatArrOneField"));
-+        checkSingleMemberDoubleArrOne(UnitTest.class.getField("SingleMemberDoubleArrOneField"));
-+        checkSingleMemberBooleanArrOne(UnitTest.class.getField("SingleMemberBooleanArrOneField"));
-+        checkSingleMemberStringArrOne(UnitTest.class.getField("SingleMemberStringArrOneField"));
-+        checkSingleMemberClassArrOne(UnitTest.class.getField("SingleMemberClassArrOneField"));
-+        checkSingleMemberEnumArrOne(UnitTest.class.getField("SingleMemberEnumArrOneField"));
-+
-+        // SINGLE-MEMBER ARRAY TYPES (TWO-ELEMENT ARRAY) ON FIELD
-+        checkSingleMemberByteArrTwo(UnitTest.class.getField("SingleMemberByteArrTwoField"));
-+        checkSingleMemberShortArrTwo(UnitTest.class.getField("SingleMemberShortArrTwoField"));
-+        checkSingleMemberIntArrTwo(UnitTest.class.getField("SingleMemberIntArrTwoField"));
-+        checkSingleMemberLongArrTwo(UnitTest.class.getField("SingleMemberLongArrTwoField"));
-+        checkSingleMemberCharArrTwo(UnitTest.class.getField("SingleMemberCharArrTwoField"));
-+        checkSingleMemberFloatArrTwo(UnitTest.class.getField("SingleMemberFloatArrTwoField"));
-+        checkSingleMemberDoubleArrTwo(UnitTest.class.getField("SingleMemberDoubleArrTwoField"));
-+        checkSingleMemberBooleanArrTwo(UnitTest.class.getField("SingleMemberBooleanArrTwoField"));
-+        checkSingleMemberStringArrTwo(UnitTest.class.getField("SingleMemberStringArrTwoField"));
-+        checkSingleMemberClassArrTwo(UnitTest.class.getField("SingleMemberClassArrTwoField"));
-+        checkSingleMemberEnumArrTwo(UnitTest.class.getField("SingleMemberEnumArrTwoField"));
-+
-+        // SINGLE-MEMBER ARRAY TYPES WITH DEFAULT (OVERRIDE)ON FIELD
-+        checkSingleMemberByteArrOvrdDef(UnitTest.class.getField("SingleMemberByteArrOvrdDefField"));
-+        checkSingleMemberShortArrOvrdDef(UnitTest.class.getField("SingleMemberShortArrOvrdDefField"));
-+        checkSingleMemberIntArrOvrdDef(UnitTest.class.getField("SingleMemberIntArrOvrdDefField"));
-+        checkSingleMemberLongArrOvrdDef(UnitTest.class.getField("SingleMemberLongArrOvrdDefField"));
-+        checkSingleMemberCharArrOvrdDef(UnitTest.class.getField("SingleMemberCharArrOvrdDefField"));
-+        checkSingleMemberFloatArrOvrdDef(UnitTest.class.getField("SingleMemberFloatArrOvrdDefField"));
-+        checkSingleMemberDoubleArrOvrdDef(UnitTest.class.getField("SingleMemberDoubleArrOvrdDefField"));
-+        checkSingleMemberBooleanArrOvrdDef(UnitTest.class.getField("SingleMemberBooleanArrOvrdDefField"));
-+        checkSingleMemberStringArrOvrdDef(UnitTest.class.getField("SingleMemberStringArrOvrdDefField"));
-+        checkSingleMemberClassArrOvrdDef(UnitTest.class.getField("SingleMemberClassArrOvrdDefField"));
-+        checkSingleMemberEnumArrOvrdDef(UnitTest.class.getField("SingleMemberEnumArrOvrdDefField"));
-+
-+        // SINGLE-MEMBER ARRAY TYPES WITH DEFAULT (ACCEPT)ON FIELD
-+        checkSingleMemberByteArrAcceptDef(UnitTest.class.getField("SingleMemberByteArrAcceptDefField"));
-+        checkSingleMemberShortArrAcceptDef(UnitTest.class.getField("SingleMemberShortArrAcceptDefField"));
-+        checkSingleMemberIntArrAcceptDef(UnitTest.class.getField("SingleMemberIntArrAcceptDefField"));
-+        checkSingleMemberLongArrAcceptDef(UnitTest.class.getField("SingleMemberLongArrAcceptDefField"));
-+        checkSingleMemberCharArrAcceptDef(UnitTest.class.getField("SingleMemberCharArrAcceptDefField"));
-+        checkSingleMemberFloatArrAcceptDef(UnitTest.class.getField("SingleMemberFloatArrAcceptDefField"));
-+        checkSingleMemberDoubleArrAcceptDef(UnitTest.class.getField("SingleMemberDoubleArrAcceptDefField"));
-+        checkSingleMemberBooleanArrAcceptDef(UnitTest.class.getField("SingleMemberBooleanArrAcceptDefField"));
-+        checkSingleMemberStringArrAcceptDef(UnitTest.class.getField("SingleMemberStringArrAcceptDefField"));
-+        checkSingleMemberClassArrAcceptDef(UnitTest.class.getField("SingleMemberClassArrAcceptDefField"));
-+        checkSingleMemberEnumArrAcceptDef(UnitTest.class.getField("SingleMemberEnumArrAcceptDefField"));
-+
-+        // *** TESTS ON ANNOTATED ENUM CONSTS ***
-+
-+        // MULTIMEMBER SCALAR TYPES ON ENUM CONST
-+        checkScalarTypes(TestType.class.getField("scalarTypesField"));
-+        checkScalarTypesAcceptDefault(TestType.class.getField("scalarTypesAcceptDefaultField"));
-+        checkScalarTypesOverrideDefault(TestType.class.getField("scalarTypesOverrideDefaultField"));
-+
-+        // MULTIMEMBER ARRAY TYPES ON ENUM CONST
-+        checkArrayTypes0(TestType.class.getField("emptyArrayTypesField"));
-+        checkArrayTypes1(TestType.class.getField("singleElementArrayTypesField"));
-+        checkArrayTypes2(TestType.class.getField("twoElementArrayTypesField"));
-+        checkArrayTypesAcceptDefault(TestType.class.getField("arrayTypesAcceptDefaultField"));
-+        checkArrayTypesOverrideDefault(TestType.class.getField("arrayTypesOverrideDefaultField"));
-+
-+        // MARKER TYPE ON CLASS
-+        checkMarker(TestType.class.getField("marker"));
-+
-+        // SINGLE-MEMBER SCALAR TYPES ON CLASS
-+        checkSingleMemberByte(TestType.class.getField("SingleMemberByte"));
-+        checkSingleMemberShort(TestType.class.getField("SingleMemberShort"));
-+        checkSingleMemberInt(TestType.class.getField("SingleMemberInt"));
-+        checkSingleMemberLong(TestType.class.getField("SingleMemberLong"));
-+        checkSingleMemberChar(TestType.class.getField("SingleMemberChar"));
-+        checkSingleMemberFloat(TestType.class.getField("SingleMemberFloat"));
-+        checkSingleMemberDouble(TestType.class.getField("SingleMemberDouble"));
-+        checkSingleMemberBoolean(TestType.class.getField("SingleMemberBoolean"));
-+        checkSingleMemberString(TestType.class.getField("SingleMemberString"));
-+        checkSingleMemberClass(TestType.class.getField("SingleMemberClass"));
-+        checkSingleMemberEnum(TestType.class.getField("SingleMemberEnum"));
-+
-+        // SINGLE-MEMBER SCALAR TYPES WITH DEFAULT-OVERRIDE ON CLASS
-+        checkSingleMemberByteOvrdDef(TestType.class.getField("SingleMemberByteOvrdDef"));
-+        checkSingleMemberShortOvrdDef(TestType.class.getField("SingleMemberShortOvrdDef"));
-+        checkSingleMemberIntOvrdDef(TestType.class.getField("SingleMemberIntOvrdDef"));
-+        checkSingleMemberLongOvrdDef(TestType.class.getField("SingleMemberLongOvrdDef"));
-+        checkSingleMemberCharOvrdDef(TestType.class.getField("SingleMemberCharOvrdDef"));
-+        checkSingleMemberFloatOvrdDef(TestType.class.getField("SingleMemberFloatOvrdDef"));
-+        checkSingleMemberDoubleOvrdDef(TestType.class.getField("SingleMemberDoubleOvrdDef"));
-+        checkSingleMemberBooleanOvrdDef(TestType.class.getField("SingleMemberBooleanOvrdDef"));
-+        checkSingleMemberStringOvrdDef(TestType.class.getField("SingleMemberStringOvrdDef"));
-+        checkSingleMemberClassOvrdDef(TestType.class.getField("SingleMemberClassOvrdDef"));
-+        checkSingleMemberEnumOvrdDef(TestType.class.getField("SingleMemberEnumOvrdDef"));
-+
-+        // SINGLE-MEMBER SCALAR TYPES WITH DEFAULT-ACCEPT ON CLASS
-+        checkSingleMemberByteAcceptDef(TestType.class.getField("SingleMemberByteAcceptDef"));
-+        checkSingleMemberShortAcceptDef(TestType.class.getField("SingleMemberShortAcceptDef"));
-+        checkSingleMemberIntAcceptDef(TestType.class.getField("SingleMemberIntAcceptDef"));
-+        checkSingleMemberLongAcceptDef(TestType.class.getField("SingleMemberLongAcceptDef"));
-+        checkSingleMemberCharAcceptDef(TestType.class.getField("SingleMemberCharAcceptDef"));
-+        checkSingleMemberFloatAcceptDef(TestType.class.getField("SingleMemberFloatAcceptDef"));
-+        checkSingleMemberDoubleAcceptDef(TestType.class.getField("SingleMemberDoubleAcceptDef"));
-+        checkSingleMemberBooleanAcceptDef(TestType.class.getField("SingleMemberBooleanAcceptDef"));
-+        checkSingleMemberStringAcceptDef(TestType.class.getField("SingleMemberStringAcceptDef"));
-+        checkSingleMemberClassAcceptDef(TestType.class.getField("SingleMemberClassAcceptDef"));
-+        checkSingleMemberEnumAcceptDef(TestType.class.getField("SingleMemberEnumAcceptDef"));
-+
-+        // SINGLE-MEMBER ARRAY TYPES (TestType.class.getField("EMPTY ARRAY) ON CLASS
-+        checkSingleMemberByteArrEmpty(TestType.class.getField("SingleMemberByteArrEmpty"));
-+        checkSingleMemberShortArrEmpty(TestType.class.getField("SingleMemberShortArrEmpty"));
-+        checkSingleMemberIntArrEmpty(TestType.class.getField("SingleMemberIntArrEmpty"));
-+        checkSingleMemberLongArrEmpty(TestType.class.getField("SingleMemberLongArrEmpty"));
-+        checkSingleMemberCharArrEmpty(TestType.class.getField("SingleMemberCharArrEmpty"));
-+        checkSingleMemberFloatArrEmpty(TestType.class.getField("SingleMemberFloatArrEmpty"));
-+        checkSingleMemberDoubleArrEmpty(TestType.class.getField("SingleMemberDoubleArrEmpty"));
-+        checkSingleMemberBooleanArrEmpty(TestType.class.getField("SingleMemberBooleanArrEmpty"));
-+        checkSingleMemberStringArrEmpty(TestType.class.getField("SingleMemberStringArrEmpty"));
-+        checkSingleMemberClassArrEmpty(TestType.class.getField("SingleMemberClassArrEmpty"));
-+        checkSingleMemberEnumArrEmpty(TestType.class.getField("SingleMemberEnumArrEmpty"));
-+
-+        // SINGLE-MEMBER ARRAY TYPES (TestType.class.getField("ONE-ELEMENT ARRAY) ON CLASS
-+        checkSingleMemberByteArrOne(TestType.class.getField("SingleMemberByteArrOne"));
-+        checkSingleMemberShortArrOne(TestType.class.getField("SingleMemberShortArrOne"));
-+        checkSingleMemberIntArrOne(TestType.class.getField("SingleMemberIntArrOne"));
-+        checkSingleMemberLongArrOne(TestType.class.getField("SingleMemberLongArrOne"));
-+        checkSingleMemberCharArrOne(TestType.class.getField("SingleMemberCharArrOne"));
-+        checkSingleMemberFloatArrOne(TestType.class.getField("SingleMemberFloatArrOne"));
-+        checkSingleMemberDoubleArrOne(TestType.class.getField("SingleMemberDoubleArrOne"));
-+        checkSingleMemberBooleanArrOne(TestType.class.getField("SingleMemberBooleanArrOne"));
-+        checkSingleMemberStringArrOne(TestType.class.getField("SingleMemberStringArrOne"));
-+        checkSingleMemberClassArrOne(TestType.class.getField("SingleMemberClassArrOne"));
-+        checkSingleMemberEnumArrOne(TestType.class.getField("SingleMemberEnumArrOne"));
-+
-+        // SINGLE-MEMBER ARRAY TYPES (TestType.class.getField("TWO-ELEMENT ARRAY) ON CLASS
-+        checkSingleMemberByteArrTwo(TestType.class.getField("SingleMemberByteArrTwo"));
-+        checkSingleMemberShortArrTwo(TestType.class.getField("SingleMemberShortArrTwo"));
-+        checkSingleMemberIntArrTwo(TestType.class.getField("SingleMemberIntArrTwo"));
-+        checkSingleMemberLongArrTwo(TestType.class.getField("SingleMemberLongArrTwo"));
-+        checkSingleMemberCharArrTwo(TestType.class.getField("SingleMemberCharArrTwo"));
-+        checkSingleMemberFloatArrTwo(TestType.class.getField("SingleMemberFloatArrTwo"));
-+        checkSingleMemberDoubleArrTwo(TestType.class.getField("SingleMemberDoubleArrTwo"));
-+        checkSingleMemberBooleanArrTwo(TestType.class.getField("SingleMemberBooleanArrTwo"));
-+        checkSingleMemberStringArrTwo(TestType.class.getField("SingleMemberStringArrTwo"));
-+        checkSingleMemberClassArrTwo(TestType.class.getField("SingleMemberClassArrTwo"));
-+        checkSingleMemberEnumArrTwo(TestType.class.getField("SingleMemberEnumArrTwo"));
-+
-+        // SINGLE-MEMBER ARRAY TYPES WITH DEFAULT (TestType.class.getField("OVERRIDE)ON CLASS
-+        checkSingleMemberByteArrOvrdDef(TestType.class.getField("SingleMemberByteArrOvrdDef"));
-+        checkSingleMemberShortArrOvrdDef(TestType.class.getField("SingleMemberShortArrOvrdDef"));
-+        checkSingleMemberIntArrOvrdDef(TestType.class.getField("SingleMemberIntArrOvrdDef"));
-+        checkSingleMemberLongArrOvrdDef(TestType.class.getField("SingleMemberLongArrOvrdDef"));
-+        checkSingleMemberCharArrOvrdDef(TestType.class.getField("SingleMemberCharArrOvrdDef"));
-+        checkSingleMemberFloatArrOvrdDef(TestType.class.getField("SingleMemberFloatArrOvrdDef"));
-+        checkSingleMemberDoubleArrOvrdDef(TestType.class.getField("SingleMemberDoubleArrOvrdDef"));
-+        checkSingleMemberBooleanArrOvrdDef(TestType.class.getField("SingleMemberBooleanArrOvrdDef"));
-+        checkSingleMemberStringArrOvrdDef(TestType.class.getField("SingleMemberStringArrOvrdDef"));
-+        checkSingleMemberClassArrOvrdDef(TestType.class.getField("SingleMemberClassArrOvrdDef"));
-+        checkSingleMemberEnumArrOvrdDef(TestType.class.getField("SingleMemberEnumArrOvrdDef"));
-+
-+        // SINGLE-MEMBER ARRAY TYPES WITH DEFAULT (TestType.class.getField("ACCEPT)ON CLASS
-+        checkSingleMemberByteArrAcceptDef(TestType.class.getField("SingleMemberByteArrAcceptDef"));
-+        checkSingleMemberShortArrAcceptDef(TestType.class.getField("SingleMemberShortArrAcceptDef"));
-+        checkSingleMemberIntArrAcceptDef(TestType.class.getField("SingleMemberIntArrAcceptDef"));
-+        checkSingleMemberLongArrAcceptDef(TestType.class.getField("SingleMemberLongArrAcceptDef"));
-+        checkSingleMemberCharArrAcceptDef(TestType.class.getField("SingleMemberCharArrAcceptDef"));
-+        checkSingleMemberFloatArrAcceptDef(TestType.class.getField("SingleMemberFloatArrAcceptDef"));
-+        checkSingleMemberDoubleArrAcceptDef(TestType.class.getField("SingleMemberDoubleArrAcceptDef"));
-+        checkSingleMemberBooleanArrAcceptDef(TestType.class.getField("SingleMemberBooleanArrAcceptDef"));
-+        checkSingleMemberStringArrAcceptDef(TestType.class.getField("SingleMemberStringArrAcceptDef"));
-+        checkSingleMemberClassArrAcceptDef(TestType.class.getField("SingleMemberClassArrAcceptDef"));
-+        checkSingleMemberEnumArrAcceptDef(TestType.class.getField("SingleMemberEnumArrAcceptDef"));
-+
-+        // *** TESTS ON ANNOTATED CONSTRUCTORS ***
-+
-+        // MULTIMEMBER SCALAR TYPES ON CONSTRUCTOR
-+        checkScalarTypes(UnitTest.class.getConstructor(new Class[]{Iterator.class}));
-+        checkScalarTypesOverrideDefault(UnitTest.class.getConstructor(new Class[]{Map.class}));
-+        checkScalarTypesAcceptDefault(UnitTest.class.getConstructor(new Class[]{Set.class}));
-+
-+        // MULTIMEMBER ARRAY TYPES ON CONSTRUCTOR
-+        checkArrayTypes0(UnitTest.class.getConstructor(new Class[]{List.class}));
-+        checkArrayTypes1(UnitTest.class.getConstructor(new Class[]{Collection.class}));
-+        checkArrayTypes2(UnitTest.class.getConstructor(new Class[]{SortedSet.class}));
-+        checkArrayTypesAcceptDefault(UnitTest.class.getConstructor(new Class[]{SortedMap.class}));
-+        checkArrayTypesOverrideDefault(UnitTest.class.getConstructor(new Class[]{RandomAccess.class}));
-+
-+        // MARKER TYPE ON CONSTRUCTOR
-+        checkMarker(UnitTest.class.getConstructor(new Class[] { }));
-+
-+        // SINGLE-MEMBER SCALAR TYPES ON CONSTRUCTOR
-+        checkSingleMemberByte(UnitTest.class.getConstructor(new Class[] { byte.class }));
-+        checkSingleMemberShort(UnitTest.class.getConstructor(new Class[] { short.class }));
-+        checkSingleMemberInt(UnitTest.class.getConstructor(new Class[] { int.class }));
-+        checkSingleMemberLong(UnitTest.class.getConstructor(new Class[] { long.class }));
-+        checkSingleMemberChar(UnitTest.class.getConstructor(new Class[] { char.class }));
-+        checkSingleMemberFloat(UnitTest.class.getConstructor(new Class[] { float.class }));
-+        checkSingleMemberDouble(UnitTest.class.getConstructor(new Class[] { double.class }));
-+        checkSingleMemberBoolean(UnitTest.class.getConstructor(new Class[] { boolean.class }));
-+        checkSingleMemberString(UnitTest.class.getConstructor(new Class[] { String.class }));
-+        checkSingleMemberClass(UnitTest.class.getConstructor(new Class[] { Class.class }));
-+        checkSingleMemberEnum(UnitTest.class.getConstructor(new Class[] { Enum.class }));
-+
-+        // SINGLE-MEMBER SCALAR TYPES WITH DEFAULT-OVERRIDE ON CONSTRUCTOR
-+        checkSingleMemberByteOvrdDef(UnitTest.class.getConstructor(new Class[] { byte.class, Set.class }));
-+        checkSingleMemberShortOvrdDef(UnitTest.class.getConstructor(new Class[] { short.class, Set.class }));
-+        checkSingleMemberIntOvrdDef(UnitTest.class.getConstructor(new Class[] { int.class, Set.class }));
-+        checkSingleMemberLongOvrdDef(UnitTest.class.getConstructor(new Class[] { long.class, Set.class }));
-+        checkSingleMemberCharOvrdDef(UnitTest.class.getConstructor(new Class[] { char.class, Set.class }));
-+        checkSingleMemberFloatOvrdDef(UnitTest.class.getConstructor(new Class[] { float.class, Set.class }));
-+        checkSingleMemberDoubleOvrdDef(UnitTest.class.getConstructor(new Class[] { double.class, Set.class }));
-+        checkSingleMemberBooleanOvrdDef(UnitTest.class.getConstructor(new Class[] { boolean.class, Set.class }));
-+        checkSingleMemberStringOvrdDef(UnitTest.class.getConstructor(new Class[] { String.class, Set.class }));
-+        checkSingleMemberClassOvrdDef(UnitTest.class.getConstructor(new Class[] { Class.class, Set.class }));
-+        checkSingleMemberEnumOvrdDef(UnitTest.class.getConstructor(new Class[] { Enum.class, Set.class }));
-+
-+        // SINGLE-MEMBER SCALAR TYPES WITH DEFAULT-ACCEPT ON CONSTRUCTOR
-+        checkSingleMemberByteAcceptDef(UnitTest.class.getConstructor(new Class[] { byte.class, Map.class }));
-+        checkSingleMemberShortAcceptDef(UnitTest.class.getConstructor(new Class[] { short.class, Map.class }));
-+        checkSingleMemberIntAcceptDef(UnitTest.class.getConstructor(new Class[] { int.class, Map.class }));
-+        checkSingleMemberLongAcceptDef(UnitTest.class.getConstructor(new Class[] { long.class, Map.class }));
-+        checkSingleMemberCharAcceptDef(UnitTest.class.getConstructor(new Class[] { char.class, Map.class }));
-+        checkSingleMemberFloatAcceptDef(UnitTest.class.getConstructor(new Class[] { float.class, Map.class }));
-+        checkSingleMemberDoubleAcceptDef(UnitTest.class.getConstructor(new Class[] { double.class, Map.class }));
-+        checkSingleMemberBooleanAcceptDef(UnitTest.class.getConstructor(new Class[] { boolean.class, Map.class }));
-+        checkSingleMemberStringAcceptDef(UnitTest.class.getConstructor(new Class[] { String.class, Map.class }));
-+        checkSingleMemberClassAcceptDef(UnitTest.class.getConstructor(new Class[] { Class.class, Map.class }));
-+        checkSingleMemberEnumAcceptDef(UnitTest.class.getConstructor(new Class[] { Enum.class, Map.class }));
-+
-+        // SINGLE-MEMBER ARRAY TYPES (EMPTY ARRAY) ON CONSTRUCTOR
-+        checkSingleMemberByteArrEmpty(UnitTest.class.getConstructor(new Class[] { byte[].class }));
-+        checkSingleMemberShortArrEmpty(UnitTest.class.getConstructor(new Class[] { short[].class }));
-+        checkSingleMemberIntArrEmpty(UnitTest.class.getConstructor(new Class[] { int[].class }));
-+        checkSingleMemberLongArrEmpty(UnitTest.class.getConstructor(new Class[] { long[].class }));
-+        checkSingleMemberCharArrEmpty(UnitTest.class.getConstructor(new Class[] { char[].class }));
-+        checkSingleMemberFloatArrEmpty(UnitTest.class.getConstructor(new Class[] { float[].class }));
-+        checkSingleMemberDoubleArrEmpty(UnitTest.class.getConstructor(new Class[] { double[].class }));
-+        checkSingleMemberBooleanArrEmpty(UnitTest.class.getConstructor(new Class[] { boolean[].class }));
-+        checkSingleMemberStringArrEmpty(UnitTest.class.getConstructor(new Class[] { String[].class }));
-+        checkSingleMemberClassArrEmpty(UnitTest.class.getConstructor(new Class[] { Class[].class }));
-+        checkSingleMemberEnumArrEmpty(UnitTest.class.getConstructor(new Class[] { Enum[].class }));
-+
-+        // SINGLE-MEMBER ARRAY TYPES (ONE-ELEMENT ARRAY) ON CONSTRUCTOR
-+        checkSingleMemberByteArrOne(UnitTest.class.getConstructor(new Class[] { byte[].class, Set.class }));
-+        checkSingleMemberShortArrOne(UnitTest.class.getConstructor(new Class[] { short[].class, Set.class }));
-+        checkSingleMemberIntArrOne(UnitTest.class.getConstructor(new Class[] { int[].class, Set.class }));
-+        checkSingleMemberLongArrOne(UnitTest.class.getConstructor(new Class[] { long[].class, Set.class }));
-+        checkSingleMemberCharArrOne(UnitTest.class.getConstructor(new Class[] { char[].class, Set.class }));
-+        checkSingleMemberFloatArrOne(UnitTest.class.getConstructor(new Class[] { float[].class, Set.class }));
-+        checkSingleMemberDoubleArrOne(UnitTest.class.getConstructor(new Class[] { double[].class, Set.class }));
-+        checkSingleMemberBooleanArrOne(UnitTest.class.getConstructor(new Class[] { boolean[].class, Set.class }));
-+        checkSingleMemberStringArrOne(UnitTest.class.getConstructor(new Class[] { String[].class, Set.class }));
-+        checkSingleMemberClassArrOne(UnitTest.class.getConstructor(new Class[] { Class[].class, Set.class }));
-+        checkSingleMemberEnumArrOne(UnitTest.class.getConstructor(new Class[] { Enum[].class, Set.class }));
-+
-+        // SINGLE-MEMBER ARRAY TYPES (TWO-ELEMENT ARRAY) ON CONSTRUCTOR
-+        checkSingleMemberByteArrTwo(UnitTest.class.getConstructor(new Class[] { byte[].class, Map.class }));
-+        checkSingleMemberShortArrTwo(UnitTest.class.getConstructor(new Class[] { short[].class, Map.class }));
-+        checkSingleMemberIntArrTwo(UnitTest.class.getConstructor(new Class[] { int[].class, Map.class }));
-+        checkSingleMemberLongArrTwo(UnitTest.class.getConstructor(new Class[] { long[].class, Map.class }));
-+        checkSingleMemberCharArrTwo(UnitTest.class.getConstructor(new Class[] { char[].class, Map.class }));
-+        checkSingleMemberFloatArrTwo(UnitTest.class.getConstructor(new Class[] { float[].class, Map.class }));
-+        checkSingleMemberDoubleArrTwo(UnitTest.class.getConstructor(new Class[] { double[].class, Map.class }));
-+        checkSingleMemberBooleanArrTwo(UnitTest.class.getConstructor(new Class[] { boolean[].class, Map.class }));
-+        checkSingleMemberStringArrTwo(UnitTest.class.getConstructor(new Class[] { String[].class, Map.class }));
-+        checkSingleMemberClassArrTwo(UnitTest.class.getConstructor(new Class[] { Class[].class, Map.class }));
-+        checkSingleMemberEnumArrTwo(UnitTest.class.getConstructor(new Class[] { Enum[].class, Map.class }));
-+
-+        // SINGLE-MEMBER ARRAY TYPES WITH DEFAULT (OVERRIDE)ON CONSTRUCTOR
-+        checkSingleMemberByteArrOvrdDef(UnitTest.class.getConstructor(new Class[] { byte[].class, List.class }));
-+        checkSingleMemberShortArrOvrdDef(UnitTest.class.getConstructor(new Class[] { short[].class, List.class }));
-+        checkSingleMemberIntArrOvrdDef(UnitTest.class.getConstructor(new Class[] { int[].class, List.class }));
-+        checkSingleMemberLongArrOvrdDef(UnitTest.class.getConstructor(new Class[] { long[].class, List.class }));
-+        checkSingleMemberCharArrOvrdDef(UnitTest.class.getConstructor(new Class[] { char[].class, List.class }));
-+        checkSingleMemberFloatArrOvrdDef(UnitTest.class.getConstructor(new Class[] { float[].class, List.class }));
-+        checkSingleMemberDoubleArrOvrdDef(UnitTest.class.getConstructor(new Class[] { double[].class, List.class }));
-+        checkSingleMemberBooleanArrOvrdDef(UnitTest.class.getConstructor(new Class[] { boolean[].class, List.class }));
-+        checkSingleMemberStringArrOvrdDef(UnitTest.class.getConstructor(new Class[] { String[].class, List.class }));
-+        checkSingleMemberClassArrOvrdDef(UnitTest.class.getConstructor(new Class[] { Class[].class, List.class }));
-+        checkSingleMemberEnumArrOvrdDef(UnitTest.class.getConstructor(new Class[] { Enum[].class, List.class }));
-+
-+        // SINGLE-MEMBER ARRAY TYPES WITH DEFAULT (ACCEPT)ON CONSTRUCTOR
-+        checkSingleMemberByteArrAcceptDef(UnitTest.class.getConstructor(new Class[] { byte[].class, Collection.class }));
-+        checkSingleMemberShortArrAcceptDef(UnitTest.class.getConstructor(new Class[] { short[].class, Collection.class }));
-+        checkSingleMemberIntArrAcceptDef(UnitTest.class.getConstructor(new Class[] { int[].class, Collection.class }));
-+        checkSingleMemberLongArrAcceptDef(UnitTest.class.getConstructor(new Class[] { long[].class, Collection.class }));
-+        checkSingleMemberCharArrAcceptDef(UnitTest.class.getConstructor(new Class[] { char[].class, Collection.class }));
-+        checkSingleMemberFloatArrAcceptDef(UnitTest.class.getConstructor(new Class[] { float[].class, Collection.class }));
-+        checkSingleMemberDoubleArrAcceptDef(UnitTest.class.getConstructor(new Class[] { double[].class, Collection.class }));
-+        checkSingleMemberBooleanArrAcceptDef(UnitTest.class.getConstructor(new Class[] { boolean[].class, Collection.class }));
-+        checkSingleMemberStringArrAcceptDef(UnitTest.class.getConstructor(new Class[] { String[].class, Collection.class }));
-+        checkSingleMemberClassArrAcceptDef(UnitTest.class.getConstructor(new Class[] { Class[].class, Collection.class }));
-+        checkSingleMemberEnumArrAcceptDef(UnitTest.class.getConstructor(new Class[] { Enum[].class, Collection.class }));
-+
-+        // *** TESTS ON ANNOTATED PARAMETERS ***
-+
-+        // MULTIMEMBER SCALAR TYPES ON PARAM
-+        checkScalarTypesParam(UnitTest.class.getMethod("scalarTypesParam", Y));
-+        checkScalarTypesOverrideDefaultParam(UnitTest.class.getMethod("scalarTypesOverrideDefaultParam", Y));
-+        checkScalarTypesAcceptDefaultParam(UnitTest.class.getMethod("scalarTypesAcceptDefaultParam", Y));
-+
-+        // MULTIMEMBER ARRAY TYPES ON PARAM
-+        checkArrayTypes0Param(UnitTest.class.getMethod("emptyArrayTypesParam", Y));
-+        checkArrayTypes1Param(UnitTest.class.getMethod("singleElementArrayTypesParam", Y));
-+        checkArrayTypes2Param(UnitTest.class.getMethod("twoElementArrayTypesParam", Y));
-+        checkArrayTypesAcceptDefaultParam(UnitTest.class.getMethod("arrayTypesAcceptDefaultParam", Y));
-+        checkArrayTypesOverrideDefaultParam(UnitTest.class.getMethod("arrayTypesOverrideDefaultParam", Y));
-+
-+        // MARKER TYPE ON PARAMETER
-+        checkMarkerParam(UnitTest.class.getMethod("markerParam", Y));
-+
-+        // SINGLE-MEMBER SCALAR TYPES ON PARAMETER
-+        checkSingleMemberByteParam(UnitTest.class.getMethod("SingleMemberByteParam", Y));
-+        checkSingleMemberShortParam(UnitTest.class.getMethod("SingleMemberShortParam", Y));
-+        checkSingleMemberIntParam(UnitTest.class.getMethod("SingleMemberIntParam", Y));
-+        checkSingleMemberLongParam(UnitTest.class.getMethod("SingleMemberLongParam", Y));
-+        checkSingleMemberCharParam(UnitTest.class.getMethod("SingleMemberCharParam", Y));
-+        checkSingleMemberFloatParam(UnitTest.class.getMethod("SingleMemberFloatParam", Y));
-+        checkSingleMemberDoubleParam(UnitTest.class.getMethod("SingleMemberDoubleParam", Y));
-+        checkSingleMemberBooleanParam(UnitTest.class.getMethod("SingleMemberBooleanParam", Y));
-+        checkSingleMemberStringParam(UnitTest.class.getMethod("SingleMemberStringParam", Y));
-+        checkSingleMemberClassParam(UnitTest.class.getMethod("SingleMemberClassParam", Y));
-+        checkSingleMemberEnumParam(UnitTest.class.getMethod("SingleMemberEnumParam", Y));
-+
-+        // SINGLE-MEMBER SCALAR TYPES WITH DEFAULT-OVERRIDE ON PARAMETER
-+        checkSingleMemberByteOvrdDefParam(UnitTest.class.getMethod("SingleMemberByteOvrdDefParam", Y));
-+        checkSingleMemberShortOvrdDefParam(UnitTest.class.getMethod("SingleMemberShortOvrdDefParam", Y));
-+        checkSingleMemberIntOvrdDefParam(UnitTest.class.getMethod("SingleMemberIntOvrdDefParam", Y));
-+        checkSingleMemberLongOvrdDefParam(UnitTest.class.getMethod("SingleMemberLongOvrdDefParam", Y));
-+        checkSingleMemberCharOvrdDefParam(UnitTest.class.getMethod("SingleMemberCharOvrdDefParam", Y));
-+        checkSingleMemberFloatOvrdDefParam(UnitTest.class.getMethod("SingleMemberFloatOvrdDefParam", Y));
-+        checkSingleMemberDoubleOvrdDefParam(UnitTest.class.getMethod("SingleMemberDoubleOvrdDefParam", Y));
-+        checkSingleMemberBooleanOvrdDefParam(UnitTest.class.getMethod("SingleMemberBooleanOvrdDefParam", Y));
-+        checkSingleMemberStringOvrdDefParam(UnitTest.class.getMethod("SingleMemberStringOvrdDefParam", Y));
-+        checkSingleMemberClassOvrdDefParam(UnitTest.class.getMethod("SingleMemberClassOvrdDefParam", Y));
-+        checkSingleMemberEnumOvrdDefParam(UnitTest.class.getMethod("SingleMemberEnumOvrdDefParam", Y));
-+
-+        // SINGLE-MEMBER SCALAR TYPES WITH DEFAULT-ACCEPT ON PARAMETER
-+        checkSingleMemberByteAcceptDefParam(UnitTest.class.getMethod("SingleMemberByteAcceptDefParam", Y));
-+        checkSingleMemberShortAcceptDefParam(UnitTest.class.getMethod("SingleMemberShortAcceptDefParam", Y));
-+        checkSingleMemberIntAcceptDefParam(UnitTest.class.getMethod("SingleMemberIntAcceptDefParam", Y));
-+        checkSingleMemberLongAcceptDefParam(UnitTest.class.getMethod("SingleMemberLongAcceptDefParam", Y));
-+        checkSingleMemberCharAcceptDefParam(UnitTest.class.getMethod("SingleMemberCharAcceptDefParam", Y));
-+        checkSingleMemberFloatAcceptDefParam(UnitTest.class.getMethod("SingleMemberFloatAcceptDefParam", Y));
-+        checkSingleMemberDoubleAcceptDefParam(UnitTest.class.getMethod("SingleMemberDoubleAcceptDefParam", Y));
-+        checkSingleMemberBooleanAcceptDefParam(UnitTest.class.getMethod("SingleMemberBooleanAcceptDefParam", Y));
-+        checkSingleMemberStringAcceptDefParam(UnitTest.class.getMethod("SingleMemberStringAcceptDefParam", Y));
-+        checkSingleMemberClassAcceptDefParam(UnitTest.class.getMethod("SingleMemberClassAcceptDefParam", Y));
-+        checkSingleMemberEnumAcceptDefParam(UnitTest.class.getMethod("SingleMemberEnumAcceptDefParam", Y));
-+
-+        // SINGLE-MEMBER ARRAY TYPES Param(UnitTest.class.getMethod("EMPTY ARRAY) ON PARAMETER
-+        checkSingleMemberByteArrEmptyParam(UnitTest.class.getMethod("SingleMemberByteArrEmptyParam", Y));
-+        checkSingleMemberShortArrEmptyParam(UnitTest.class.getMethod("SingleMemberShortArrEmptyParam", Y));
-+        checkSingleMemberIntArrEmptyParam(UnitTest.class.getMethod("SingleMemberIntArrEmptyParam", Y));
-+        checkSingleMemberLongArrEmptyParam(UnitTest.class.getMethod("SingleMemberLongArrEmptyParam", Y));
-+        checkSingleMemberCharArrEmptyParam(UnitTest.class.getMethod("SingleMemberCharArrEmptyParam", Y));
-+        checkSingleMemberFloatArrEmptyParam(UnitTest.class.getMethod("SingleMemberFloatArrEmptyParam", Y));
-+        checkSingleMemberDoubleArrEmptyParam(UnitTest.class.getMethod("SingleMemberDoubleArrEmptyParam", Y));
-+        checkSingleMemberBooleanArrEmptyParam(UnitTest.class.getMethod("SingleMemberBooleanArrEmptyParam", Y));
-+        checkSingleMemberStringArrEmptyParam(UnitTest.class.getMethod("SingleMemberStringArrEmptyParam", Y));
-+        checkSingleMemberClassArrEmptyParam(UnitTest.class.getMethod("SingleMemberClassArrEmptyParam", Y));
-+        checkSingleMemberEnumArrEmptyParam(UnitTest.class.getMethod("SingleMemberEnumArrEmptyParam", Y));
-+
-+        // SINGLE-MEMBER ARRAY TYPES Param(UnitTest.class.getMethod("ONE-ELEMENT ARRAY) ON PARAMETER
-+        checkSingleMemberByteArrOneParam(UnitTest.class.getMethod("SingleMemberByteArrOneParam", Y));
-+        checkSingleMemberShortArrOneParam(UnitTest.class.getMethod("SingleMemberShortArrOneParam", Y));
-+        checkSingleMemberIntArrOneParam(UnitTest.class.getMethod("SingleMemberIntArrOneParam", Y));
-+        checkSingleMemberLongArrOneParam(UnitTest.class.getMethod("SingleMemberLongArrOneParam", Y));
-+        checkSingleMemberCharArrOneParam(UnitTest.class.getMethod("SingleMemberCharArrOneParam", Y));
-+        checkSingleMemberFloatArrOneParam(UnitTest.class.getMethod("SingleMemberFloatArrOneParam", Y));
-+        checkSingleMemberDoubleArrOneParam(UnitTest.class.getMethod("SingleMemberDoubleArrOneParam", Y));
-+        checkSingleMemberBooleanArrOneParam(UnitTest.class.getMethod("SingleMemberBooleanArrOneParam", Y));
-+        checkSingleMemberStringArrOneParam(UnitTest.class.getMethod("SingleMemberStringArrOneParam", Y));
-+        checkSingleMemberClassArrOneParam(UnitTest.class.getMethod("SingleMemberClassArrOneParam", Y));
-+        checkSingleMemberEnumArrOneParam(UnitTest.class.getMethod("SingleMemberEnumArrOneParam", Y));
-+
-+        // SINGLE-MEMBER ARRAY TYPES Param(UnitTest.class.getMethod("TWO-ELEMENT ARRAY) ON PARAMETER
-+        checkSingleMemberByteArrTwoParam(UnitTest.class.getMethod("SingleMemberByteArrTwoParam", Y));
-+        checkSingleMemberShortArrTwoParam(UnitTest.class.getMethod("SingleMemberShortArrTwoParam", Y));
-+        checkSingleMemberIntArrTwoParam(UnitTest.class.getMethod("SingleMemberIntArrTwoParam", Y));
-+        checkSingleMemberLongArrTwoParam(UnitTest.class.getMethod("SingleMemberLongArrTwoParam", Y));
-+        checkSingleMemberCharArrTwoParam(UnitTest.class.getMethod("SingleMemberCharArrTwoParam", Y));
-+        checkSingleMemberFloatArrTwoParam(UnitTest.class.getMethod("SingleMemberFloatArrTwoParam", Y));
-+        checkSingleMemberDoubleArrTwoParam(UnitTest.class.getMethod("SingleMemberDoubleArrTwoParam", Y));
-+        checkSingleMemberBooleanArrTwoParam(UnitTest.class.getMethod("SingleMemberBooleanArrTwoParam", Y));
-+        checkSingleMemberStringArrTwoParam(UnitTest.class.getMethod("SingleMemberStringArrTwoParam", Y));
-+        checkSingleMemberClassArrTwoParam(UnitTest.class.getMethod("SingleMemberClassArrTwoParam", Y));
-+        checkSingleMemberEnumArrTwoParam(UnitTest.class.getMethod("SingleMemberEnumArrTwoParam", Y));
-+
-+        // SINGLE-MEMBER ARRAY TYPES WITH DEFAULT Param(UnitTest.class.getMethod("OVERRIDE)ON PARAMETER
-+        checkSingleMemberByteArrOvrdDefParam(UnitTest.class.getMethod("SingleMemberByteArrOvrdDefParam", Y));
-+        checkSingleMemberShortArrOvrdDefParam(UnitTest.class.getMethod("SingleMemberShortArrOvrdDefParam", Y));
-+        checkSingleMemberIntArrOvrdDefParam(UnitTest.class.getMethod("SingleMemberIntArrOvrdDefParam", Y));
-+        checkSingleMemberLongArrOvrdDefParam(UnitTest.class.getMethod("SingleMemberLongArrOvrdDefParam", Y));
-+        checkSingleMemberCharArrOvrdDefParam(UnitTest.class.getMethod("SingleMemberCharArrOvrdDefParam", Y));
-+        checkSingleMemberFloatArrOvrdDefParam(UnitTest.class.getMethod("SingleMemberFloatArrOvrdDefParam", Y));
-+        checkSingleMemberDoubleArrOvrdDefParam(UnitTest.class.getMethod("SingleMemberDoubleArrOvrdDefParam", Y));
-+        checkSingleMemberBooleanArrOvrdDefParam(UnitTest.class.getMethod("SingleMemberBooleanArrOvrdDefParam", Y));
-+        checkSingleMemberStringArrOvrdDefParam(UnitTest.class.getMethod("SingleMemberStringArrOvrdDefParam", Y));
-+        checkSingleMemberClassArrOvrdDefParam(UnitTest.class.getMethod("SingleMemberClassArrOvrdDefParam", Y));
-+        checkSingleMemberEnumArrOvrdDefParam(UnitTest.class.getMethod("SingleMemberEnumArrOvrdDefParam", Y));
-+
-+        // SINGLE-MEMBER ARRAY TYPES WITH DEFAULT Param(UnitTest.class.getMethod("ACCEPT)ON PARAMETER
-+        checkSingleMemberByteArrAcceptDefParam(UnitTest.class.getMethod("SingleMemberByteArrAcceptDefParam", Y));
-+        checkSingleMemberShortArrAcceptDefParam(UnitTest.class.getMethod("SingleMemberShortArrAcceptDefParam", Y));
-+        checkSingleMemberIntArrAcceptDefParam(UnitTest.class.getMethod("SingleMemberIntArrAcceptDefParam", Y));
-+        checkSingleMemberLongArrAcceptDefParam(UnitTest.class.getMethod("SingleMemberLongArrAcceptDefParam", Y));
-+        checkSingleMemberCharArrAcceptDefParam(UnitTest.class.getMethod("SingleMemberCharArrAcceptDefParam", Y));
-+        checkSingleMemberFloatArrAcceptDefParam(UnitTest.class.getMethod("SingleMemberFloatArrAcceptDefParam", Y));
-+        checkSingleMemberDoubleArrAcceptDefParam(UnitTest.class.getMethod("SingleMemberDoubleArrAcceptDefParam", Y));
-+        checkSingleMemberBooleanArrAcceptDefParam(UnitTest.class.getMethod("SingleMemberBooleanArrAcceptDefParam", Y));
-+        checkSingleMemberStringArrAcceptDefParam(UnitTest.class.getMethod("SingleMemberStringArrAcceptDefParam", Y));
-+        checkSingleMemberClassArrAcceptDefParam(UnitTest.class.getMethod("SingleMemberClassArrAcceptDefParam", Y));
-+        checkSingleMemberEnumArrAcceptDefParam(UnitTest.class.getMethod("SingleMemberEnumArrAcceptDefParam", Y));
-+
-+        // *** TESTS ON ANNOTATED CLASSES ***
-+
-+        // MULTIMEMBER SCALAR TYPES ON CLASS
-+        checkScalarTypes(scalarTypesClass.class);
-+        checkScalarTypesOverrideDefault(scalarTypesOverrideDefaultClass.class);
-+        checkScalarTypesAcceptDefault(scalarTypesAcceptDefaultClass.class);
-+
-+        // MULTIMEMBER ARRAY TYPES ON CLASS
-+        checkArrayTypes0(emptyArrayTypesClass.class);
-+        checkArrayTypes1(singleElementArrayTypesClass.class);
-+        checkArrayTypes2(twoElementArrayTypesClass.class);
-+        checkArrayTypesOverrideDefault(arrayTypesOverrideDefaultClass.class);
-+        checkArrayTypesAcceptDefault(arrayTypesAcceptDefaultClass.class);
-+
-+        // MARKER TYPE ON CLASS
-+        checkMarker(markerClass.class);
-+
-+        // SINGLE-MEMBER SCALAR TYPES ON CLASS
-+        checkSingleMemberByte(SingleMemberByteClass.class);
-+        checkSingleMemberShort(SingleMemberShortClass.class);
-+        checkSingleMemberInt(SingleMemberIntClass.class);
-+        checkSingleMemberLong(SingleMemberLongClass.class);
-+        checkSingleMemberChar(SingleMemberCharClass.class);
-+        checkSingleMemberFloat(SingleMemberFloatClass.class);
-+        checkSingleMemberDouble(SingleMemberDoubleClass.class);
-+        checkSingleMemberBoolean(SingleMemberBooleanClass.class);
-+        checkSingleMemberString(SingleMemberStringClass.class);
-+        checkSingleMemberClass(SingleMemberClassClass.class);
-+        checkSingleMemberEnum(SingleMemberEnumClass.class);
-+
-+        // SINGLE-MEMBER SCALAR TYPES WITH DEFAULT-OVERRIDE ON CLASS
-+        checkSingleMemberByteOvrdDef(SingleMemberByteOvrdDefClass.class);
-+        checkSingleMemberShortOvrdDef(SingleMemberShortOvrdDefClass.class);
-+        checkSingleMemberIntOvrdDef(SingleMemberIntOvrdDefClass.class);
-+        checkSingleMemberLongOvrdDef(SingleMemberLongOvrdDefClass.class);
-+        checkSingleMemberCharOvrdDef(SingleMemberCharOvrdDefClass.class);
-+        checkSingleMemberFloatOvrdDef(SingleMemberFloatOvrdDefClass.class);
-+        checkSingleMemberDoubleOvrdDef(SingleMemberDoubleOvrdDefClass.class);
-+        checkSingleMemberBooleanOvrdDef(SingleMemberBooleanOvrdDefClass.class);
-+        checkSingleMemberStringOvrdDef(SingleMemberStringOvrdDefClass.class);
-+        checkSingleMemberClassOvrdDef(SingleMemberClassOvrdDefClass.class);
-+        checkSingleMemberEnumOvrdDef(SingleMemberEnumOvrdDefClass.class);
-+
-+        // SINGLE-MEMBER SCALAR TYPES WITH DEFAULT-ACCEPT ON CLASS
-+        checkSingleMemberByteAcceptDef(SingleMemberByteAcceptDefClass.class);
-+        checkSingleMemberShortAcceptDef(SingleMemberShortAcceptDefClass.class);
-+        checkSingleMemberIntAcceptDef(SingleMemberIntAcceptDefClass.class);
-+        checkSingleMemberLongAcceptDef(SingleMemberLongAcceptDefClass.class);
-+        checkSingleMemberCharAcceptDef(SingleMemberCharAcceptDefClass.class);
-+        checkSingleMemberFloatAcceptDef(SingleMemberFloatAcceptDefClass.class);
-+        checkSingleMemberDoubleAcceptDef(SingleMemberDoubleAcceptDefClass.class);
-+        checkSingleMemberBooleanAcceptDef(SingleMemberBooleanAcceptDefClass.class);
-+        checkSingleMemberStringAcceptDef(SingleMemberStringAcceptDefClass.class);
-+        checkSingleMemberClassAcceptDef(SingleMemberClassAcceptDefClass.class);
-+        checkSingleMemberEnumAcceptDef(SingleMemberEnumAcceptDefClass.class);
-+
-+        // SINGLE-MEMBER ARRAY TYPES (EMPTY ARRAY) ON CLASS
-+        checkSingleMemberByteArrEmpty(SingleMemberByteArrEmptyClass.class);
-+        checkSingleMemberShortArrEmpty(SingleMemberShortArrEmptyClass.class);
-+        checkSingleMemberIntArrEmpty(SingleMemberIntArrEmptyClass.class);
-+        checkSingleMemberLongArrEmpty(SingleMemberLongArrEmptyClass.class);
-+        checkSingleMemberCharArrEmpty(SingleMemberCharArrEmptyClass.class);
-+        checkSingleMemberFloatArrEmpty(SingleMemberFloatArrEmptyClass.class);
-+        checkSingleMemberDoubleArrEmpty(SingleMemberDoubleArrEmptyClass.class);
-+        checkSingleMemberBooleanArrEmpty(SingleMemberBooleanArrEmptyClass.class);
-+        checkSingleMemberStringArrEmpty(SingleMemberStringArrEmptyClass.class);
-+        checkSingleMemberClassArrEmpty(SingleMemberClassArrEmptyClass.class);
-+        checkSingleMemberEnumArrEmpty(SingleMemberEnumArrEmptyClass.class);
-+
-+        // SINGLE-MEMBER ARRAY TYPES (ONE-ELEMENT ARRAY) ON CLASS
-+        checkSingleMemberByteArrOne(SingleMemberByteArrOneClass.class);
-+        checkSingleMemberShortArrOne(SingleMemberShortArrOneClass.class);
-+        checkSingleMemberIntArrOne(SingleMemberIntArrOneClass.class);
-+        checkSingleMemberLongArrOne(SingleMemberLongArrOneClass.class);
-+        checkSingleMemberCharArrOne(SingleMemberCharArrOneClass.class);
-+        checkSingleMemberFloatArrOne(SingleMemberFloatArrOneClass.class);
-+        checkSingleMemberDoubleArrOne(SingleMemberDoubleArrOneClass.class);
-+        checkSingleMemberBooleanArrOne(SingleMemberBooleanArrOneClass.class);
-+        checkSingleMemberStringArrOne(SingleMemberStringArrOneClass.class);
-+        checkSingleMemberClassArrOne(SingleMemberClassArrOneClass.class);
-+        checkSingleMemberEnumArrOne(SingleMemberEnumArrOneClass.class);
-+
-+        // SINGLE-MEMBER ARRAY TYPES (TWO-ELEMENT ARRAY) ON CLASS
-+        checkSingleMemberByteArrTwo(SingleMemberByteArrTwoClass.class);
-+        checkSingleMemberShortArrTwo(SingleMemberShortArrTwoClass.class);
-+        checkSingleMemberIntArrTwo(SingleMemberIntArrTwoClass.class);
-+        checkSingleMemberLongArrTwo(SingleMemberLongArrTwoClass.class);
-+        checkSingleMemberCharArrTwo(SingleMemberCharArrTwoClass.class);
-+        checkSingleMemberFloatArrTwo(SingleMemberFloatArrTwoClass.class);
-+        checkSingleMemberDoubleArrTwo(SingleMemberDoubleArrTwoClass.class);
-+        checkSingleMemberBooleanArrTwo(SingleMemberBooleanArrTwoClass.class);
-+        checkSingleMemberStringArrTwo(SingleMemberStringArrTwoClass.class);
-+        checkSingleMemberClassArrTwo(SingleMemberClassArrTwoClass.class);
-+        checkSingleMemberEnumArrTwo(SingleMemberEnumArrTwoClass.class);
-+
-+        // SINGLE-MEMBER ARRAY TYPES WITH DEFAULT (OVERRIDE)ON CLASS
-+        checkSingleMemberByteArrOvrdDef(SingleMemberByteArrOvrdDefClass.class);
-+        checkSingleMemberShortArrOvrdDef(SingleMemberShortArrOvrdDefClass.class);
-+        checkSingleMemberIntArrOvrdDef(SingleMemberIntArrOvrdDefClass.class);
-+        checkSingleMemberLongArrOvrdDef(SingleMemberLongArrOvrdDefClass.class);
-+        checkSingleMemberCharArrOvrdDef(SingleMemberCharArrOvrdDefClass.class);
-+        checkSingleMemberFloatArrOvrdDef(SingleMemberFloatArrOvrdDefClass.class);
-+        checkSingleMemberDoubleArrOvrdDef(SingleMemberDoubleArrOvrdDefClass.class);
-+        checkSingleMemberBooleanArrOvrdDef(SingleMemberBooleanArrOvrdDefClass.class);
-+        checkSingleMemberStringArrOvrdDef(SingleMemberStringArrOvrdDefClass.class);
-+        checkSingleMemberClassArrOvrdDef(SingleMemberClassArrOvrdDefClass.class);
-+        checkSingleMemberEnumArrOvrdDef(SingleMemberEnumArrOvrdDefClass.class);
-+
-+        // SINGLE-MEMBER ARRAY TYPES WITH DEFAULT (ACCEPT)ON CLASS
-+        checkSingleMemberByteArrAcceptDef(SingleMemberByteArrAcceptDefClass.class);
-+        checkSingleMemberShortArrAcceptDef(SingleMemberShortArrAcceptDefClass.class);
-+        checkSingleMemberIntArrAcceptDef(SingleMemberIntArrAcceptDefClass.class);
-+        checkSingleMemberLongArrAcceptDef(SingleMemberLongArrAcceptDefClass.class);
-+        checkSingleMemberCharArrAcceptDef(SingleMemberCharArrAcceptDefClass.class);
-+        checkSingleMemberFloatArrAcceptDef(SingleMemberFloatArrAcceptDefClass.class);
-+        checkSingleMemberDoubleArrAcceptDef(SingleMemberDoubleArrAcceptDefClass.class);
-+        checkSingleMemberBooleanArrAcceptDef(SingleMemberBooleanArrAcceptDefClass.class);
-+        checkSingleMemberStringArrAcceptDef(SingleMemberStringArrAcceptDefClass.class);
-+        checkSingleMemberClassArrAcceptDef(SingleMemberClassArrAcceptDefClass.class);
-+        checkSingleMemberEnumArrAcceptDef(SingleMemberEnumArrAcceptDefClass.class);
-+
-+        // *** TESTS FOR EQUALS AND HASHCODE - POSITIVE
-+
-+        // MULTIMEMBER SCALAR TYPES
-+        checkEquals(scalarTypesClass.class, UnitTest.class.getField("scalarTypesField"),
-+                    ScalarTypes.class);
-+        checkEquals(scalarTypesOverrideDefaultClass.class, UnitTest.class.getField("scalarTypesOverrideDefaultField"),
-+                    ScalarTypesWithDefault.class);
-+        checkEquals(scalarTypesAcceptDefaultClass.class, UnitTest.class.getField("scalarTypesAcceptDefaultField"),
-+                    ScalarTypesWithDefault.class);
-+
-+        // MULTIMEMBER ARRAY TYPES
-+        checkEquals(emptyArrayTypesClass.class, UnitTest.class.getField("emptyArrayTypesField"),
-+                    ArrayTypes.class);
-+        checkEquals(singleElementArrayTypesClass.class, UnitTest.class.getField("singleElementArrayTypesField"),
-+                    ArrayTypes.class);
-+        checkEquals(twoElementArrayTypesClass.class, UnitTest.class.getField("twoElementArrayTypesField"),
-+                    ArrayTypes.class);
-+        checkEquals(arrayTypesOverrideDefaultClass.class, UnitTest.class.getField("arrayTypesOverrideDefaultField"),
-+                    ArrayTypesWithDefault.class);
-+        checkEquals(arrayTypesAcceptDefaultClass.class, UnitTest.class.getField("arrayTypesAcceptDefaultField"),
-+                    ArrayTypesWithDefault.class);
-+
-+        // MARKER TYPE
-+        checkEquals(markerClass.class, UnitTest.class.getField("markerField"),
-+                    Marker.class);
-+
-+        // SINGLE-MEMBER SCALAR TYPES
-+        checkEquals(SingleMemberByteClass.class, UnitTest.class.getField("SingleMemberByteField"),
-+                    SingleMemberByte.class);
-+        checkEquals(SingleMemberShortClass.class, UnitTest.class.getField("SingleMemberShortField"),
-+                    SingleMemberShort.class);
-+        checkEquals(SingleMemberIntClass.class, UnitTest.class.getField("SingleMemberIntField"),
-+                    SingleMemberInt.class);
-+        checkEquals(SingleMemberLongClass.class, UnitTest.class.getField("SingleMemberLongField"),
-+                    SingleMemberLong.class);
-+        checkEquals(SingleMemberCharClass.class, UnitTest.class.getField("SingleMemberCharField"),
-+                    SingleMemberChar.class);
-+        checkEquals(SingleMemberFloatClass.class, UnitTest.class.getField("SingleMemberFloatField"),
-+                    SingleMemberFloat.class);
-+        checkEquals(SingleMemberDoubleClass.class, UnitTest.class.getField("SingleMemberDoubleField"),
-+                    SingleMemberDouble.class);
-+        checkEquals(SingleMemberBooleanClass.class, UnitTest.class.getField("SingleMemberBooleanField"),
-+                    SingleMemberBoolean.class);
-+        checkEquals(SingleMemberStringClass.class, UnitTest.class.getField("SingleMemberStringField"),
-+                    SingleMemberString.class);
-+        checkEquals(SingleMemberClassClass.class, UnitTest.class.getField("SingleMemberClassField"),
-+                    SingleMemberClass.class);
-+        checkEquals(SingleMemberEnumClass.class, UnitTest.class.getField("SingleMemberEnumField"),
-+                    SingleMemberEnum.class);
-+
-+        // SINGLE-MEMBER SCALAR TYPES WITH DEFAULT-OVERRIDE
-+        checkEquals(SingleMemberByteOvrdDefClass.class, UnitTest.class.getField("SingleMemberByteOvrdDefField"),
-+                    SingleMemberByteWithDef.class);
-+        checkEquals(SingleMemberShortOvrdDefClass.class, UnitTest.class.getField("SingleMemberShortOvrdDefField"),
-+                    SingleMemberShortWithDef.class);
-+        checkEquals(SingleMemberIntOvrdDefClass.class, UnitTest.class.getField("SingleMemberIntOvrdDefField"),
-+                    SingleMemberIntWithDef.class);
-+        checkEquals(SingleMemberLongOvrdDefClass.class, UnitTest.class.getField("SingleMemberLongOvrdDefField"),
-+                    SingleMemberLongWithDef.class);
-+        checkEquals(SingleMemberCharOvrdDefClass.class, UnitTest.class.getField("SingleMemberCharOvrdDefField"),
-+                    SingleMemberCharWithDef.class);
-+        checkEquals(SingleMemberFloatOvrdDefClass.class, UnitTest.class.getField("SingleMemberFloatOvrdDefField"),
-+                    SingleMemberFloatWithDef.class);
-+        checkEquals(SingleMemberDoubleOvrdDefClass.class, UnitTest.class.getField("SingleMemberDoubleOvrdDefField"),
-+                    SingleMemberDoubleWithDef.class);
-+        checkEquals(SingleMemberBooleanOvrdDefClass.class, UnitTest.class.getField("SingleMemberBooleanOvrdDefField"),
-+                    SingleMemberBooleanWithDef.class);
-+        checkEquals(SingleMemberStringOvrdDefClass.class, UnitTest.class.getField("SingleMemberStringOvrdDefField"),
-+                    SingleMemberStringWithDef.class);
-+        checkEquals(SingleMemberClassOvrdDefClass.class, UnitTest.class.getField("SingleMemberClassOvrdDefField"),
-+                    SingleMemberClassWithDef.class);
-+        checkEquals(SingleMemberEnumOvrdDefClass.class, UnitTest.class.getField("SingleMemberEnumOvrdDefField"),
-+                    SingleMemberEnumWithDef.class);
-+
-+        // SINGLE-MEMBER SCALAR TYPES WITH DEFAULT-ACCEPT
-+        checkEquals(SingleMemberByteAcceptDefClass.class, UnitTest.class.getField("SingleMemberByteAcceptDefField"),
-+                    SingleMemberByteWithDef.class);
-+        checkEquals(SingleMemberShortAcceptDefClass.class, UnitTest.class.getField("SingleMemberShortAcceptDefField"),
-+                    SingleMemberShortWithDef.class);
-+        checkEquals(SingleMemberIntAcceptDefClass.class, UnitTest.class.getField("SingleMemberIntAcceptDefField"),
-+                    SingleMemberIntWithDef.class);
-+        checkEquals(SingleMemberLongAcceptDefClass.class, UnitTest.class.getField("SingleMemberLongAcceptDefField"),
-+                    SingleMemberLongWithDef.class);
-+        checkEquals(SingleMemberCharAcceptDefClass.class, UnitTest.class.getField("SingleMemberCharAcceptDefField"),
-+                    SingleMemberCharWithDef.class);
-+        checkEquals(SingleMemberFloatAcceptDefClass.class, UnitTest.class.getField("SingleMemberFloatAcceptDefField"),
-+                    SingleMemberFloatWithDef.class);
-+        checkEquals(SingleMemberDoubleAcceptDefClass.class, UnitTest.class.getField("SingleMemberDoubleAcceptDefField"),
-+                    SingleMemberDoubleWithDef.class);
-+        checkEquals(SingleMemberBooleanAcceptDefClass.class, UnitTest.class.getField("SingleMemberBooleanAcceptDefField"),
-+                    SingleMemberBooleanWithDef.class);
-+        checkEquals(SingleMemberStringAcceptDefClass.class, UnitTest.class.getField("SingleMemberStringAcceptDefField"),
-+                    SingleMemberStringWithDef.class);
-+        checkEquals(SingleMemberClassAcceptDefClass.class, UnitTest.class.getField("SingleMemberClassAcceptDefField"),
-+                    SingleMemberClassWithDef.class);
-+        checkEquals(SingleMemberEnumAcceptDefClass.class, UnitTest.class.getField("SingleMemberEnumAcceptDefField"),
-+                    SingleMemberEnumWithDef.class);
-+
-+        // SINGLE-MEMBER ARRAY TYPES (EMPTY ARRAY)
-+        checkEquals(SingleMemberByteArrEmptyClass.class, UnitTest.class.getField("SingleMemberByteArrEmptyField"),
-+                    SingleMemberByteArray.class);
-+        checkEquals(SingleMemberShortArrEmptyClass.class, UnitTest.class.getField("SingleMemberShortArrEmptyField"),
-+                    SingleMemberShortArray.class);
-+        checkEquals(SingleMemberIntArrEmptyClass.class, UnitTest.class.getField("SingleMemberIntArrEmptyField"),
-+                    SingleMemberIntArray.class);
-+        checkEquals(SingleMemberLongArrEmptyClass.class, UnitTest.class.getField("SingleMemberLongArrEmptyField"),
-+                    SingleMemberLongArray.class);
-+        checkEquals(SingleMemberCharArrEmptyClass.class, UnitTest.class.getField("SingleMemberCharArrEmptyField"),
-+                    SingleMemberCharArray.class);
-+        checkEquals(SingleMemberFloatArrEmptyClass.class, UnitTest.class.getField("SingleMemberFloatArrEmptyField"),
-+                    SingleMemberFloatArray.class);
-+        checkEquals(SingleMemberDoubleArrEmptyClass.class, UnitTest.class.getField("SingleMemberDoubleArrEmptyField"),
-+                    SingleMemberDoubleArray.class);
-+        checkEquals(SingleMemberBooleanArrEmptyClass.class, UnitTest.class.getField("SingleMemberBooleanArrEmptyField"),
-+                    SingleMemberBooleanArray.class);
-+        checkEquals(SingleMemberStringArrEmptyClass.class, UnitTest.class.getField("SingleMemberStringArrEmptyField"),
-+                    SingleMemberStringArray.class);
-+        checkEquals(SingleMemberClassArrEmptyClass.class, UnitTest.class.getField("SingleMemberClassArrEmptyField"),
-+                    SingleMemberClassArray.class);
-+        checkEquals(SingleMemberEnumArrEmptyClass.class, UnitTest.class.getField("SingleMemberEnumArrEmptyField"),
-+                    SingleMemberEnumArray.class);
-+
-+        // SINGLE-MEMBER ARRAY TYPES (ONE-ELEMENT ARRAY)
-+        checkEquals(SingleMemberByteArrOneClass.class, UnitTest.class.getField("SingleMemberByteArrOneField"),
-+                    SingleMemberByteArray.class);
-+        checkEquals(SingleMemberShortArrOneClass.class, UnitTest.class.getField("SingleMemberShortArrOneField"),
-+                    SingleMemberShortArray.class);
-+        checkEquals(SingleMemberIntArrOneClass.class, UnitTest.class.getField("SingleMemberIntArrOneField"),
-+                    SingleMemberIntArray.class);
-+        checkEquals(SingleMemberLongArrOneClass.class, UnitTest.class.getField("SingleMemberLongArrOneField"),
-+                    SingleMemberLongArray.class);
-+        checkEquals(SingleMemberCharArrOneClass.class, UnitTest.class.getField("SingleMemberCharArrOneField"),
-+                    SingleMemberCharArray.class);
-+        checkEquals(SingleMemberFloatArrOneClass.class, UnitTest.class.getField("SingleMemberFloatArrOneField"),
-+                    SingleMemberFloatArray.class);
-+        checkEquals(SingleMemberDoubleArrOneClass.class, UnitTest.class.getField("SingleMemberDoubleArrOneField"),
-+                    SingleMemberDoubleArray.class);
-+        checkEquals(SingleMemberBooleanArrOneClass.class, UnitTest.class.getField("SingleMemberBooleanArrOneField"),
-+                    SingleMemberBooleanArray.class);
-+        checkEquals(SingleMemberStringArrOneClass.class, UnitTest.class.getField("SingleMemberStringArrOneField"),
-+                    SingleMemberStringArray.class);
-+        checkEquals(SingleMemberClassArrOneClass.class, UnitTest.class.getField("SingleMemberClassArrOneField"),
-+                    SingleMemberClassArray.class);
-+        checkEquals(SingleMemberEnumArrOneClass.class, UnitTest.class.getField("SingleMemberEnumArrOneField"),
-+                    SingleMemberEnumArray.class);
-+
-+        // SINGLE-MEMBER ARRAY TYPES (TWO-ELEMENT ARRAY)
-+        checkEquals(SingleMemberByteArrTwoClass.class, UnitTest.class.getField("SingleMemberByteArrTwoField"),
-+                    SingleMemberByteArray.class);
-+        checkEquals(SingleMemberShortArrTwoClass.class, UnitTest.class.getField("SingleMemberShortArrTwoField"),
-+                    SingleMemberShortArray.class);
-+        checkEquals(SingleMemberIntArrTwoClass.class, UnitTest.class.getField("SingleMemberIntArrTwoField"),
-+                    SingleMemberIntArray.class);
-+        checkEquals(SingleMemberLongArrTwoClass.class, UnitTest.class.getField("SingleMemberLongArrTwoField"),
-+                    SingleMemberLongArray.class);
-+        checkEquals(SingleMemberCharArrTwoClass.class, UnitTest.class.getField("SingleMemberCharArrTwoField"),
-+                    SingleMemberCharArray.class);
-+        checkEquals(SingleMemberFloatArrTwoClass.class, UnitTest.class.getField("SingleMemberFloatArrTwoField"),
-+                    SingleMemberFloatArray.class);
-+        checkEquals(SingleMemberDoubleArrTwoClass.class, UnitTest.class.getField("SingleMemberDoubleArrTwoField"),
-+                    SingleMemberDoubleArray.class);
-+        checkEquals(SingleMemberBooleanArrTwoClass.class, UnitTest.class.getField("SingleMemberBooleanArrTwoField"),
-+                    SingleMemberBooleanArray.class);
-+        checkEquals(SingleMemberStringArrTwoClass.class, UnitTest.class.getField("SingleMemberStringArrTwoField"),
-+                    SingleMemberStringArray.class);
-+        checkEquals(SingleMemberClassArrTwoClass.class, UnitTest.class.getField("SingleMemberClassArrTwoField"),
-+                    SingleMemberClassArray.class);
-+        checkEquals(SingleMemberEnumArrTwoClass.class, UnitTest.class.getField("SingleMemberEnumArrTwoField"),
-+                    SingleMemberEnumArray.class);
-+
-+        // SINGLE-MEMBER ARRAY TYPES WITH DEFAULT (OVERRIDE)
-+        checkEquals(SingleMemberByteArrOvrdDefClass.class, UnitTest.class.getField("SingleMemberByteArrOvrdDefField"),
-+                    SingleMemberByteArrayDef.class);
-+        checkEquals(SingleMemberShortArrOvrdDefClass.class, UnitTest.class.getField("SingleMemberShortArrOvrdDefField"),
-+                    SingleMemberShortArrayDef.class);
-+        checkEquals(SingleMemberIntArrOvrdDefClass.class, UnitTest.class.getField("SingleMemberIntArrOvrdDefField"),
-+                    SingleMemberIntArrayDef.class);
-+        checkEquals(SingleMemberLongArrOvrdDefClass.class, UnitTest.class.getField("SingleMemberLongArrOvrdDefField"),
-+                    SingleMemberLongArrayDef.class);
-+        checkEquals(SingleMemberCharArrOvrdDefClass.class, UnitTest.class.getField("SingleMemberCharArrOvrdDefField"),
-+                    SingleMemberCharArrayDef.class);
-+        checkEquals(SingleMemberFloatArrOvrdDefClass.class, UnitTest.class.getField("SingleMemberFloatArrOvrdDefField"),
-+                    SingleMemberFloatArrayDef.class);
-+        checkEquals(SingleMemberDoubleArrOvrdDefClass.class, UnitTest.class.getField("SingleMemberDoubleArrOvrdDefField"),
-+                    SingleMemberDoubleArrayDef.class);
-+        checkEquals(SingleMemberBooleanArrOvrdDefClass.class, UnitTest.class.getField("SingleMemberBooleanArrOvrdDefField"),
-+                    SingleMemberBooleanArrayDef.class);
-+        checkEquals(SingleMemberStringArrOvrdDefClass.class, UnitTest.class.getField("SingleMemberStringArrOvrdDefField"),
-+                    SingleMemberStringArrayDef.class);
-+        checkEquals(SingleMemberClassArrOvrdDefClass.class, UnitTest.class.getField("SingleMemberClassArrOvrdDefField"),
-+                    SingleMemberClassArrayDef.class);
-+        checkEquals(SingleMemberEnumArrOvrdDefClass.class, UnitTest.class.getField("SingleMemberEnumArrOvrdDefField"),
-+                    SingleMemberEnumArrayDef.class);
-+
-+        // SINGLE-MEMBER ARRAY TYPES WITH DEFAULT (ACCEPT)
-+        checkEquals(SingleMemberByteArrAcceptDefClass.class, UnitTest.class.getField("SingleMemberByteArrAcceptDefField"),
-+                    SingleMemberByteArrayDef.class);
-+        checkEquals(SingleMemberShortArrAcceptDefClass.class, UnitTest.class.getField("SingleMemberShortArrAcceptDefField"),
-+                    SingleMemberShortArrayDef.class);
-+        checkEquals(SingleMemberIntArrAcceptDefClass.class, UnitTest.class.getField("SingleMemberIntArrAcceptDefField"),
-+                    SingleMemberIntArrayDef.class);
-+        checkEquals(SingleMemberLongArrAcceptDefClass.class, UnitTest.class.getField("SingleMemberLongArrAcceptDefField"),
-+                    SingleMemberLongArrayDef.class);
-+        checkEquals(SingleMemberCharArrAcceptDefClass.class, UnitTest.class.getField("SingleMemberCharArrAcceptDefField"),
-+                    SingleMemberCharArrayDef.class);
-+        checkEquals(SingleMemberFloatArrAcceptDefClass.class, UnitTest.class.getField("SingleMemberFloatArrAcceptDefField"),
-+                    SingleMemberFloatArrayDef.class);
-+        checkEquals(SingleMemberDoubleArrAcceptDefClass.class, UnitTest.class.getField("SingleMemberDoubleArrAcceptDefField"),
-+                    SingleMemberDoubleArrayDef.class);
-+        checkEquals(SingleMemberBooleanArrAcceptDefClass.class, UnitTest.class.getField("SingleMemberBooleanArrAcceptDefField"),
-+                    SingleMemberBooleanArrayDef.class);
-+        checkEquals(SingleMemberStringArrAcceptDefClass.class, UnitTest.class.getField("SingleMemberStringArrAcceptDefField"),
-+                    SingleMemberStringArrayDef.class);
-+        checkEquals(SingleMemberClassArrAcceptDefClass.class, UnitTest.class.getField("SingleMemberClassArrAcceptDefField"),
-+                    SingleMemberClassArrayDef.class);
-+        checkEquals(SingleMemberEnumArrAcceptDefClass.class, UnitTest.class.getField("SingleMemberEnumArrAcceptDefField"),
-+                    SingleMemberEnumArrayDef.class);
-+
-+        // *** TESTS FOR EQUALS AND HASHCODE - NEGATIVE
-+
-+        // MULTIMEMBER SCALAR TYPES
-+        checkUnequals(scalarTypesOverrideDefaultClass.class, UnitTest.class.getField("scalarTypesAcceptDefaultField"),
-+                    ScalarTypesWithDefault.class);
-+        checkUnequals(scalarTypesAcceptDefaultClass.class, UnitTest.class.getField("scalarTypesOverrideDefaultField"),
-+                    ScalarTypesWithDefault.class);
-+
-+        // MULTIMEMBER ARRAY TYPES
-+        checkUnequals(emptyArrayTypesClass.class, UnitTest.class.getField("singleElementArrayTypesField"),
-+                    ArrayTypes.class);
-+        checkUnequals(singleElementArrayTypesClass.class, UnitTest.class.getField("twoElementArrayTypesField"),
-+                    ArrayTypes.class);
-+        checkUnequals(twoElementArrayTypesClass.class, UnitTest.class.getField("singleElementArrayTypesField"),
-+                    ArrayTypes.class);
-+        checkUnequals(arrayTypesOverrideDefaultClass.class, UnitTest.class.getField("arrayTypesAcceptDefaultField"),
-+                    ArrayTypesWithDefault.class);
-+        checkUnequals(arrayTypesAcceptDefaultClass.class, UnitTest.class.getField("arrayTypesOverrideDefaultField"),
-+                    ArrayTypesWithDefault.class);
-+
-+        // SINGLE-MEMBER SCALAR TYPES WITH DEFAULT-OVERRIDE
-+        checkUnequals(SingleMemberByteOvrdDefClass.class, UnitTest.class.getField("SingleMemberByteAcceptDefField"),
-+                    SingleMemberByteWithDef.class);
-+        checkUnequals(SingleMemberShortOvrdDefClass.class, UnitTest.class.getField("SingleMemberShortAcceptDefField"),
-+                    SingleMemberShortWithDef.class);
-+        checkUnequals(SingleMemberIntOvrdDefClass.class, UnitTest.class.getField("SingleMemberIntAcceptDefField"),
-+                    SingleMemberIntWithDef.class);
-+        checkUnequals(SingleMemberLongOvrdDefClass.class, UnitTest.class.getField("SingleMemberLongAcceptDefField"),
-+                    SingleMemberLongWithDef.class);
-+        checkUnequals(SingleMemberCharOvrdDefClass.class, UnitTest.class.getField("SingleMemberCharAcceptDefField"),
-+                    SingleMemberCharWithDef.class);
-+        checkUnequals(SingleMemberFloatOvrdDefClass.class, UnitTest.class.getField("SingleMemberFloatAcceptDefField"),
-+                    SingleMemberFloatWithDef.class);
-+        checkUnequals(SingleMemberDoubleOvrdDefClass.class, UnitTest.class.getField("SingleMemberDoubleAcceptDefField"),
-+                    SingleMemberDoubleWithDef.class);
-+        checkUnequals(SingleMemberBooleanOvrdDefClass.class, UnitTest.class.getField("SingleMemberBooleanAcceptDefField"),
-+                    SingleMemberBooleanWithDef.class);
-+        checkUnequals(SingleMemberStringOvrdDefClass.class, UnitTest.class.getField("SingleMemberStringAcceptDefField"),
-+                    SingleMemberStringWithDef.class);
-+        checkUnequals(SingleMemberClassOvrdDefClass.class, UnitTest.class.getField("SingleMemberClassAcceptDefField"),
-+                    SingleMemberClassWithDef.class);
-+        checkUnequals(SingleMemberEnumOvrdDefClass.class, UnitTest.class.getField("SingleMemberEnumAcceptDefField"),
-+                    SingleMemberEnumWithDef.class);
-+
-+        // SINGLE-MEMBER SCALAR TYPES WITH DEFAULT-ACCEPT
-+        checkUnequals(SingleMemberByteAcceptDefClass.class, UnitTest.class.getField("SingleMemberByteOvrdDefField"),
-+                    SingleMemberByteWithDef.class);
-+        checkUnequals(SingleMemberShortAcceptDefClass.class, UnitTest.class.getField("SingleMemberShortOvrdDefField"),
-+                    SingleMemberShortWithDef.class);
-+        checkUnequals(SingleMemberIntAcceptDefClass.class, UnitTest.class.getField("SingleMemberIntOvrdDefField"),
-+                    SingleMemberIntWithDef.class);
-+        checkUnequals(SingleMemberLongAcceptDefClass.class, UnitTest.class.getField("SingleMemberLongOvrdDefField"),
-+                    SingleMemberLongWithDef.class);
-+        checkUnequals(SingleMemberCharAcceptDefClass.class, UnitTest.class.getField("SingleMemberCharOvrdDefField"),
-+                    SingleMemberCharWithDef.class);
-+        checkUnequals(SingleMemberFloatAcceptDefClass.class, UnitTest.class.getField("SingleMemberFloatOvrdDefField"),
-+                    SingleMemberFloatWithDef.class);
-+        checkUnequals(SingleMemberDoubleAcceptDefClass.class, UnitTest.class.getField("SingleMemberDoubleOvrdDefField"),
-+                    SingleMemberDoubleWithDef.class);
-+        checkUnequals(SingleMemberBooleanAcceptDefClass.class, UnitTest.class.getField("SingleMemberBooleanOvrdDefField"),
-+                    SingleMemberBooleanWithDef.class);
-+        checkUnequals(SingleMemberStringAcceptDefClass.class, UnitTest.class.getField("SingleMemberStringOvrdDefField"),
-+                    SingleMemberStringWithDef.class);
-+        checkUnequals(SingleMemberClassAcceptDefClass.class, UnitTest.class.getField("SingleMemberClassOvrdDefField"),
-+                    SingleMemberClassWithDef.class);
-+        checkUnequals(SingleMemberEnumAcceptDefClass.class, UnitTest.class.getField("SingleMemberEnumOvrdDefField"),
-+                    SingleMemberEnumWithDef.class);
-+
-+        // SINGLE-MEMBER ARRAY TYPES (EMPTY ARRAY)
-+        checkUnequals(SingleMemberByteArrEmptyClass.class, UnitTest.class.getField("SingleMemberByteArrOneField"),
-+                    SingleMemberByteArray.class);
-+        checkUnequals(SingleMemberShortArrEmptyClass.class, UnitTest.class.getField("SingleMemberShortArrOneField"),
-+                    SingleMemberShortArray.class);
-+        checkUnequals(SingleMemberIntArrEmptyClass.class, UnitTest.class.getField("SingleMemberIntArrOneField"),
-+                    SingleMemberIntArray.class);
-+        checkUnequals(SingleMemberLongArrEmptyClass.class, UnitTest.class.getField("SingleMemberLongArrOneField"),
-+                    SingleMemberLongArray.class);
-+        checkUnequals(SingleMemberCharArrEmptyClass.class, UnitTest.class.getField("SingleMemberCharArrOneField"),
-+                    SingleMemberCharArray.class);
-+        checkUnequals(SingleMemberFloatArrEmptyClass.class, UnitTest.class.getField("SingleMemberFloatArrOneField"),
-+                    SingleMemberFloatArray.class);
-+        checkUnequals(SingleMemberDoubleArrEmptyClass.class, UnitTest.class.getField("SingleMemberDoubleArrOneField"),
-+                    SingleMemberDoubleArray.class);
-+        checkUnequals(SingleMemberBooleanArrEmptyClass.class, UnitTest.class.getField("SingleMemberBooleanArrOneField"),
-+                    SingleMemberBooleanArray.class);
-+        checkUnequals(SingleMemberStringArrEmptyClass.class, UnitTest.class.getField("SingleMemberStringArrOneField"),
-+                    SingleMemberStringArray.class);
-+        checkUnequals(SingleMemberClassArrEmptyClass.class, UnitTest.class.getField("SingleMemberClassArrOneField"),
-+                    SingleMemberClassArray.class);
-+        checkUnequals(SingleMemberEnumArrEmptyClass.class, UnitTest.class.getField("SingleMemberEnumArrOneField"),
-+                    SingleMemberEnumArray.class);
-+
-+        // SINGLE-MEMBER ARRAY TYPES (ONE-ELEMENT ARRAY)
-+        checkUnequals(SingleMemberByteArrOneClass.class, UnitTest.class.getField("SingleMemberByteArrTwoField"),
-+                    SingleMemberByteArray.class);
-+        checkUnequals(SingleMemberShortArrOneClass.class, UnitTest.class.getField("SingleMemberShortArrTwoField"),
-+                    SingleMemberShortArray.class);
-+        checkUnequals(SingleMemberIntArrOneClass.class, UnitTest.class.getField("SingleMemberIntArrTwoField"),
-+                    SingleMemberIntArray.class);
-+        checkUnequals(SingleMemberLongArrOneClass.class, UnitTest.class.getField("SingleMemberLongArrTwoField"),
-+                    SingleMemberLongArray.class);
-+        checkUnequals(SingleMemberCharArrOneClass.class, UnitTest.class.getField("SingleMemberCharArrTwoField"),
-+                    SingleMemberCharArray.class);
-+        checkUnequals(SingleMemberFloatArrOneClass.class, UnitTest.class.getField("SingleMemberFloatArrTwoField"),
-+                    SingleMemberFloatArray.class);
-+        checkUnequals(SingleMemberDoubleArrOneClass.class, UnitTest.class.getField("SingleMemberDoubleArrTwoField"),
-+                    SingleMemberDoubleArray.class);
-+        checkUnequals(SingleMemberBooleanArrOneClass.class, UnitTest.class.getField("SingleMemberBooleanArrTwoField"),
-+                    SingleMemberBooleanArray.class);
-+        checkUnequals(SingleMemberStringArrOneClass.class, UnitTest.class.getField("SingleMemberStringArrTwoField"),
-+                    SingleMemberStringArray.class);
-+        checkUnequals(SingleMemberClassArrOneClass.class, UnitTest.class.getField("SingleMemberClassArrTwoField"),
-+                    SingleMemberClassArray.class);
-+        checkUnequals(SingleMemberEnumArrOneClass.class, UnitTest.class.getField("SingleMemberEnumArrTwoField"),
-+                    SingleMemberEnumArray.class);
-+
-+        // SINGLE-MEMBER ARRAY TYPES (TWO-ELEMENT ARRAY)
-+        checkUnequals(SingleMemberByteArrTwoClass.class, UnitTest.class.getField("SingleMemberByteArrOneField"),
-+                    SingleMemberByteArray.class);
-+        checkUnequals(SingleMemberShortArrTwoClass.class, UnitTest.class.getField("SingleMemberShortArrOneField"),
-+                    SingleMemberShortArray.class);
-+        checkUnequals(SingleMemberIntArrTwoClass.class, UnitTest.class.getField("SingleMemberIntArrOneField"),
-+                    SingleMemberIntArray.class);
-+        checkUnequals(SingleMemberLongArrTwoClass.class, UnitTest.class.getField("SingleMemberLongArrOneField"),
-+                    SingleMemberLongArray.class);
-+        checkUnequals(SingleMemberCharArrTwoClass.class, UnitTest.class.getField("SingleMemberCharArrOneField"),
-+                    SingleMemberCharArray.class);
-+        checkUnequals(SingleMemberFloatArrTwoClass.class, UnitTest.class.getField("SingleMemberFloatArrOneField"),
-+                    SingleMemberFloatArray.class);
-+        checkUnequals(SingleMemberDoubleArrTwoClass.class, UnitTest.class.getField("SingleMemberDoubleArrOneField"),
-+                    SingleMemberDoubleArray.class);
-+        checkUnequals(SingleMemberBooleanArrTwoClass.class, UnitTest.class.getField("SingleMemberBooleanArrOneField"),
-+                    SingleMemberBooleanArray.class);
-+        checkUnequals(SingleMemberStringArrTwoClass.class, UnitTest.class.getField("SingleMemberStringArrOneField"),
-+                    SingleMemberStringArray.class);
-+        checkUnequals(SingleMemberClassArrTwoClass.class, UnitTest.class.getField("SingleMemberClassArrOneField"),
-+                    SingleMemberClassArray.class);
-+        checkUnequals(SingleMemberEnumArrTwoClass.class, UnitTest.class.getField("SingleMemberEnumArrOneField"),
-+                    SingleMemberEnumArray.class);
-+
-+        // SINGLE-MEMBER ARRAY TYPES WITH DEFAULT (OVERRIDE)
-+        checkUnequals(SingleMemberByteArrOvrdDefClass.class, UnitTest.class.getField("SingleMemberByteArrAcceptDefField"),
-+                    SingleMemberByteArrayDef.class);
-+        checkUnequals(SingleMemberShortArrOvrdDefClass.class, UnitTest.class.getField("SingleMemberShortArrAcceptDefField"),
-+                    SingleMemberShortArrayDef.class);
-+        checkUnequals(SingleMemberIntArrOvrdDefClass.class, UnitTest.class.getField("SingleMemberIntArrAcceptDefField"),
-+                    SingleMemberIntArrayDef.class);
-+        checkUnequals(SingleMemberLongArrOvrdDefClass.class, UnitTest.class.getField("SingleMemberLongArrAcceptDefField"),
-+                    SingleMemberLongArrayDef.class);
-+        checkUnequals(SingleMemberCharArrOvrdDefClass.class, UnitTest.class.getField("SingleMemberCharArrAcceptDefField"),
-+                    SingleMemberCharArrayDef.class);
-+        checkUnequals(SingleMemberFloatArrOvrdDefClass.class, UnitTest.class.getField("SingleMemberFloatArrAcceptDefField"),
-+                    SingleMemberFloatArrayDef.class);
-+        checkUnequals(SingleMemberDoubleArrOvrdDefClass.class, UnitTest.class.getField("SingleMemberDoubleArrAcceptDefField"),
-+                    SingleMemberDoubleArrayDef.class);
-+        checkUnequals(SingleMemberBooleanArrOvrdDefClass.class, UnitTest.class.getField("SingleMemberBooleanArrAcceptDefField"),
-+                    SingleMemberBooleanArrayDef.class);
-+        checkUnequals(SingleMemberStringArrOvrdDefClass.class, UnitTest.class.getField("SingleMemberStringArrAcceptDefField"),
-+                    SingleMemberStringArrayDef.class);
-+        checkUnequals(SingleMemberClassArrOvrdDefClass.class, UnitTest.class.getField("SingleMemberClassArrAcceptDefField"),
-+                    SingleMemberClassArrayDef.class);
-+        checkUnequals(SingleMemberEnumArrOvrdDefClass.class, UnitTest.class.getField("SingleMemberEnumArrAcceptDefField"),
-+                    SingleMemberEnumArrayDef.class);
-+
-+        // SINGLE-MEMBER ARRAY TYPES WITH DEFAULT (ACCEPT)
-+        checkUnequals(SingleMemberByteArrAcceptDefClass.class, UnitTest.class.getField("SingleMemberByteArrOvrdDefField"),
-+                    SingleMemberByteArrayDef.class);
-+        checkUnequals(SingleMemberShortArrAcceptDefClass.class, UnitTest.class.getField("SingleMemberShortArrOvrdDefField"),
-+                    SingleMemberShortArrayDef.class);
-+        checkUnequals(SingleMemberIntArrAcceptDefClass.class, UnitTest.class.getField("SingleMemberIntArrOvrdDefField"),
-+                    SingleMemberIntArrayDef.class);
-+        checkUnequals(SingleMemberLongArrAcceptDefClass.class, UnitTest.class.getField("SingleMemberLongArrOvrdDefField"),
-+                    SingleMemberLongArrayDef.class);
-+        checkUnequals(SingleMemberCharArrAcceptDefClass.class, UnitTest.class.getField("SingleMemberCharArrOvrdDefField"),
-+                    SingleMemberCharArrayDef.class);
-+        checkUnequals(SingleMemberFloatArrAcceptDefClass.class, UnitTest.class.getField("SingleMemberFloatArrOvrdDefField"),
-+                    SingleMemberFloatArrayDef.class);
-+        checkUnequals(SingleMemberDoubleArrAcceptDefClass.class, UnitTest.class.getField("SingleMemberDoubleArrOvrdDefField"),
-+                    SingleMemberDoubleArrayDef.class);
-+        checkUnequals(SingleMemberBooleanArrAcceptDefClass.class, UnitTest.class.getField("SingleMemberBooleanArrOvrdDefField"),
-+                    SingleMemberBooleanArrayDef.class);
-+        checkUnequals(SingleMemberStringArrAcceptDefClass.class, UnitTest.class.getField("SingleMemberStringArrOvrdDefField"),
-+                    SingleMemberStringArrayDef.class);
-+        checkUnequals(SingleMemberClassArrAcceptDefClass.class, UnitTest.class.getField("SingleMemberClassArrOvrdDefField"),
-+                    SingleMemberClassArrayDef.class);
-+        checkUnequals(SingleMemberEnumArrAcceptDefClass.class, UnitTest.class.getField("SingleMemberEnumArrOvrdDefField"),
-+                    SingleMemberEnumArrayDef.class);
-+
-+        // *** TESTS FOR SERIALIZATION AND DESERIALIZATION
-+
-+        // MULTIMEMBER SCALAR TYPES
-+        checkSerialization(scalarTypesClass.class, ScalarTypes.class);
-+        checkSerialization(scalarTypesOverrideDefaultClass.class, ScalarTypesWithDefault.class);
-+        checkSerialization(scalarTypesAcceptDefaultClass.class, ScalarTypesWithDefault.class);
-+
-+        // MULTIMEMBER ARRAY TYPES
-+        checkSerialization(emptyArrayTypesClass.class, ArrayTypes.class);
-+        checkSerialization(singleElementArrayTypesClass.class, ArrayTypes.class);
-+        checkSerialization(twoElementArrayTypesClass.class, ArrayTypes.class);
-+        checkSerialization(arrayTypesOverrideDefaultClass.class, ArrayTypesWithDefault.class);
-+        checkSerialization(arrayTypesAcceptDefaultClass.class, ArrayTypesWithDefault.class);
-+
-+        // MARKER TYPE
-+        checkSerialization(markerClass.class, Marker.class);
-+
-+        // SINGLE-MEMBER SCALAR TYPES
-+        checkSerialization(SingleMemberByteClass.class, SingleMemberByte.class);
-+        checkSerialization(SingleMemberShortClass.class, SingleMemberShort.class);
-+        checkSerialization(SingleMemberIntClass.class, SingleMemberInt.class);
-+        checkSerialization(SingleMemberLongClass.class, SingleMemberLong.class);
-+        checkSerialization(SingleMemberCharClass.class, SingleMemberChar.class);
-+        checkSerialization(SingleMemberFloatClass.class, SingleMemberFloat.class);
-+        checkSerialization(SingleMemberDoubleClass.class, SingleMemberDouble.class);
-+        checkSerialization(SingleMemberBooleanClass.class, SingleMemberBoolean.class);
-+        checkSerialization(SingleMemberStringClass.class, SingleMemberString.class);
-+        checkSerialization(SingleMemberClassClass.class, SingleMemberClass.class);
-+        checkSerialization(SingleMemberEnumClass.class, SingleMemberEnum.class);
-+
-+        // SINGLE-MEMBER SCALAR TYPES WITH DEFAULT-OVERRIDE
-+        checkSerialization(SingleMemberByteOvrdDefClass.class, SingleMemberByteWithDef.class);
-+        checkSerialization(SingleMemberShortOvrdDefClass.class, SingleMemberShortWithDef.class);
-+        checkSerialization(SingleMemberIntOvrdDefClass.class, SingleMemberIntWithDef.class);
-+        checkSerialization(SingleMemberLongOvrdDefClass.class, SingleMemberLongWithDef.class);
-+        checkSerialization(SingleMemberCharOvrdDefClass.class, SingleMemberCharWithDef.class);
-+        checkSerialization(SingleMemberFloatOvrdDefClass.class, SingleMemberFloatWithDef.class);
-+        checkSerialization(SingleMemberDoubleOvrdDefClass.class, SingleMemberDoubleWithDef.class);
-+        checkSerialization(SingleMemberBooleanOvrdDefClass.class, SingleMemberBooleanWithDef.class);
-+        checkSerialization(SingleMemberStringOvrdDefClass.class, SingleMemberStringWithDef.class);
-+        checkSerialization(SingleMemberClassOvrdDefClass.class, SingleMemberClassWithDef.class);
-+        checkSerialization(SingleMemberEnumOvrdDefClass.class, SingleMemberEnumWithDef.class);
-+
-+        // SINGLE-MEMBER SCALAR TYPES WITH DEFAULT-ACCEPT
-+        checkSerialization(SingleMemberByteAcceptDefClass.class, SingleMemberByteWithDef.class);
-+        checkSerialization(SingleMemberShortAcceptDefClass.class, SingleMemberShortWithDef.class);
-+        checkSerialization(SingleMemberIntAcceptDefClass.class, SingleMemberIntWithDef.class);
-+        checkSerialization(SingleMemberLongAcceptDefClass.class, SingleMemberLongWithDef.class);
-+        checkSerialization(SingleMemberCharAcceptDefClass.class, SingleMemberCharWithDef.class);
-+        checkSerialization(SingleMemberFloatAcceptDefClass.class, SingleMemberFloatWithDef.class);
-+        checkSerialization(SingleMemberDoubleAcceptDefClass.class, SingleMemberDoubleWithDef.class);
-+        checkSerialization(SingleMemberBooleanAcceptDefClass.class, SingleMemberBooleanWithDef.class);
-+        checkSerialization(SingleMemberStringAcceptDefClass.class, SingleMemberStringWithDef.class);
-+        checkSerialization(SingleMemberClassAcceptDefClass.class, SingleMemberClassWithDef.class);
-+        checkSerialization(SingleMemberEnumAcceptDefClass.class, SingleMemberEnumWithDef.class);
-+
-+        // SINGLE-MEMBER ARRAY TYPES (EMPTY ARRAY)
-+        checkSerialization(SingleMemberByteArrEmptyClass.class, SingleMemberByteArray.class);
-+        checkSerialization(SingleMemberShortArrEmptyClass.class, SingleMemberShortArray.class);
-+        checkSerialization(SingleMemberIntArrEmptyClass.class, SingleMemberIntArray.class);
-+        checkSerialization(SingleMemberLongArrEmptyClass.class, SingleMemberLongArray.class);
-+        checkSerialization(SingleMemberCharArrEmptyClass.class, SingleMemberCharArray.class);
-+        checkSerialization(SingleMemberFloatArrEmptyClass.class, SingleMemberFloatArray.class);
-+        checkSerialization(SingleMemberDoubleArrEmptyClass.class, SingleMemberDoubleArray.class);
-+        checkSerialization(SingleMemberBooleanArrEmptyClass.class, SingleMemberBooleanArray.class);
-+        checkSerialization(SingleMemberStringArrEmptyClass.class, SingleMemberStringArray.class);
-+        checkSerialization(SingleMemberClassArrEmptyClass.class, SingleMemberClassArray.class);
-+        checkSerialization(SingleMemberEnumArrEmptyClass.class, SingleMemberEnumArray.class);
-+
-+        // SINGLE-MEMBER ARRAY TYPES (ONE-ELEMENT ARRAY)
-+        checkSerialization(SingleMemberByteArrOneClass.class, SingleMemberByteArray.class);
-+        checkSerialization(SingleMemberShortArrOneClass.class, SingleMemberShortArray.class);
-+        checkSerialization(SingleMemberIntArrOneClass.class, SingleMemberIntArray.class);
-+        checkSerialization(SingleMemberLongArrOneClass.class, SingleMemberLongArray.class);
-+        checkSerialization(SingleMemberCharArrOneClass.class, SingleMemberCharArray.class);
-+        checkSerialization(SingleMemberFloatArrOneClass.class, SingleMemberFloatArray.class);
-+        checkSerialization(SingleMemberDoubleArrOneClass.class, SingleMemberDoubleArray.class);
-+        checkSerialization(SingleMemberBooleanArrOneClass.class, SingleMemberBooleanArray.class);
-+        checkSerialization(SingleMemberStringArrOneClass.class, SingleMemberStringArray.class);
-+        checkSerialization(SingleMemberClassArrOneClass.class, SingleMemberClassArray.class);
-+        checkSerialization(SingleMemberEnumArrOneClass.class, SingleMemberEnumArray.class);
-+
-+        // SINGLE-MEMBER ARRAY TYPES (TWO-ELEMENT ARRAY)
-+        checkSerialization(SingleMemberByteArrTwoClass.class, SingleMemberByteArray.class);
-+        checkSerialization(SingleMemberShortArrTwoClass.class, SingleMemberShortArray.class);
-+        checkSerialization(SingleMemberIntArrTwoClass.class, SingleMemberIntArray.class);
-+        checkSerialization(SingleMemberLongArrTwoClass.class, SingleMemberLongArray.class);
-+        checkSerialization(SingleMemberCharArrTwoClass.class, SingleMemberCharArray.class);
-+        checkSerialization(SingleMemberFloatArrTwoClass.class, SingleMemberFloatArray.class);
-+        checkSerialization(SingleMemberDoubleArrTwoClass.class, SingleMemberDoubleArray.class);
-+        checkSerialization(SingleMemberBooleanArrTwoClass.class, SingleMemberBooleanArray.class);
-+        checkSerialization(SingleMemberStringArrTwoClass.class, SingleMemberStringArray.class);
-+        checkSerialization(SingleMemberClassArrTwoClass.class, SingleMemberClassArray.class);
-+        checkSerialization(SingleMemberEnumArrTwoClass.class, SingleMemberEnumArray.class);
-+
-+        // SINGLE-MEMBER ARRAY TYPES WITH DEFAULT (OVERRIDE)
-+        checkSerialization(SingleMemberByteArrOvrdDefClass.class, SingleMemberByteArrayDef.class);
-+        checkSerialization(SingleMemberShortArrOvrdDefClass.class, SingleMemberShortArrayDef.class);
-+        checkSerialization(SingleMemberIntArrOvrdDefClass.class, SingleMemberIntArrayDef.class);
-+        checkSerialization(SingleMemberLongArrOvrdDefClass.class, SingleMemberLongArrayDef.class);
-+        checkSerialization(SingleMemberCharArrOvrdDefClass.class, SingleMemberCharArrayDef.class);
-+        checkSerialization(SingleMemberFloatArrOvrdDefClass.class, SingleMemberFloatArrayDef.class);
-+        checkSerialization(SingleMemberDoubleArrOvrdDefClass.class, SingleMemberDoubleArrayDef.class);
-+        checkSerialization(SingleMemberBooleanArrOvrdDefClass.class, SingleMemberBooleanArrayDef.class);
-+        checkSerialization(SingleMemberStringArrOvrdDefClass.class, SingleMemberStringArrayDef.class);
-+        checkSerialization(SingleMemberClassArrOvrdDefClass.class, SingleMemberClassArrayDef.class);
-+        checkSerialization(SingleMemberEnumArrOvrdDefClass.class, SingleMemberEnumArrayDef.class);
-+
-+        // SINGLE-MEMBER ARRAY TYPES WITH DEFAULT (ACCEPT)
-+        checkSerialization(SingleMemberByteArrAcceptDefClass.class, SingleMemberByteArrayDef.class);
-+        checkSerialization(SingleMemberShortArrAcceptDefClass.class, SingleMemberShortArrayDef.class);
-+        checkSerialization(SingleMemberIntArrAcceptDefClass.class, SingleMemberIntArrayDef.class);
-+        checkSerialization(SingleMemberLongArrAcceptDefClass.class, SingleMemberLongArrayDef.class);
-+        checkSerialization(SingleMemberCharArrAcceptDefClass.class, SingleMemberCharArrayDef.class);
-+        checkSerialization(SingleMemberFloatArrAcceptDefClass.class, SingleMemberFloatArrayDef.class);
-+        checkSerialization(SingleMemberDoubleArrAcceptDefClass.class, SingleMemberDoubleArrayDef.class);
-+        checkSerialization(SingleMemberBooleanArrAcceptDefClass.class, SingleMemberBooleanArrayDef.class);
-+        checkSerialization(SingleMemberStringArrAcceptDefClass.class, SingleMemberStringArrayDef.class);
-+        checkSerialization(SingleMemberClassArrAcceptDefClass.class, SingleMemberClassArrayDef.class);
-+        checkSerialization(SingleMemberEnumArrAcceptDefClass.class, SingleMemberEnumArrayDef.class);
-+
-+        // *** TESTS FOR ANNOTATION INHERITANCE AND ENUMERATING DECLARED ANNOTATIONS
-+
-+        // Inheritance tests
-+        checkInheritence(Grandpa.class, true, true);
-+        checkInheritence(Dad.class,     true, false);
-+        checkInheritence(Son.class,     true, true);
-+
-+        // Declared annotations tests
-+        checkDeclaredAnnotations(Grandpa.class, true, true);
-+        checkDeclaredAnnotations(Dad.class,     false, false);
-+        checkDeclaredAnnotations(Son.class,     false, true);
-+
-+        // Generate summary
-+        System.out.println("\n" + numTests + " tests completed");
-+        if (failCount != 0)
-+            throw new Exception("Failure count: " + failCount);
-+        else
-+            System.out.println("Success.");
-+    }
-+
-+    static int failCount = 0;
-+
-+    private static void fail(String test) {
-+        System.out.println("Failure: " + test);
-+        failCount++;
-+    }
-+
-+    // ANNOTATION-VERIFICATION METHODS
-+
-+    // Scalar multi-member
-+
-+    static void checkScalarTypes(AnnotatedElement e) {
-+        try {
-+            checkScalarTypes(e.getAnnotation(ScalarTypes.class), e);
-+        } catch(Throwable t) {
-+            fail("ScalarTypes " + e + ": " + t);
-+            t.printStackTrace();
-+        }
-+    }
-+
-+    static void checkScalarTypes(ScalarTypes st, AnnotatedElement e) throws Exception {
-+        numTests++;
-+        if (!(st.b()    == 1            &&
-+              st.s()    == 2            &&
-+              st.i()    == 3            &&
-+              st.l()    == 4L           &&
-+              st.c()    == '5'          &&
-+              st.f()    == 6.0f         &&
-+              st.d()    == 7.0          &&
-+              st.bool() == true         &&
-+              st.str().equals("custom") &&
-+              st.cls()  == Map.class    &&
-+              st.e()    == Stooge.MOE   &&
-+              st.a().x() == 1 && st.a().y() == 2))
-+            fail("ScalarTypes" + e);
-+    }
-+
-+    static void checkScalarTypesOverrideDefault(AnnotatedElement e) {
-+        try {
-+            checkScalarTypesOverrideDefault(e.getAnnotation(ScalarTypesWithDefault.class), e);
-+        } catch(Throwable t) {
-+            fail("ScalarTypesOverrideDefaults" + e + ": " + t);
-+        }
-+    }
-+
-+    static void checkScalarTypesOverrideDefault(ScalarTypesWithDefault st, AnnotatedElement e) {
-+        numTests++;
-+        if (!(st.b()    == 1            &&
-+              st.s()    == 2            &&
-+              st.i()    == 3            &&
-+              st.l()    == 4L           &&
-+              st.c()    == '5'          &&
-+              st.f()    == 6.0f         &&
-+              st.d()    == 7.0          &&
-+              st.bool() == true         &&
-+              st.str().equals("custom") &&
-+              st.cls()  == Map.class    &&
-+              st.e()    == Stooge.MOE))
-+            fail("ScalarTypesOverrideDefaults" + e);
-+    }
-+
-+    static void checkScalarTypesAcceptDefault(AnnotatedElement e) {
-+        try {
-+            checkScalarTypesAcceptDefault(e.getAnnotation(ScalarTypesWithDefault.class), e);
-+        } catch(Throwable t) {
-+            fail("ScalarTypesAcceptDefaults" + e + ": " + t);
-+        }
-+    }
-+
-+    static void checkScalarTypesAcceptDefault(ScalarTypesWithDefault st, AnnotatedElement e) {
-+        numTests++;
-+        if (!(st.b()    == 11            &&
-+              st.s()    == 12            &&
-+              st.i()    == 13            &&
-+              st.l()    == 14L           &&
-+              st.c()    == 'V'           &&
-+              st.f()    == 16.0f         &&
-+              st.d()    == 17.0          &&
-+              st.bool() == false         &&
-+              st.str().equals("default") &&
-+              st.cls()   == Class.class  &&
-+              st.e()    == Stooge.LARRY  &&
-+              st.a().x() == 11 && st.a().y() == 12))
-+            fail("ScalarTypesAcceptDefaults" + e);
-+    }
-+
-+    // Array multi-member
-+
-+    static void checkArrayTypes0(AnnotatedElement e) {
-+        try {
-+            checkArrayTypes0(e.getAnnotation(ArrayTypes.class), e);
-+        } catch(Throwable t) {
-+            fail("ArrayTypes(Empty)" + e + ": " + t);
-+        }
-+    }
-+
-+    static void checkArrayTypes0(ArrayTypes at, AnnotatedElement e) {
-+        numTests++;
-+        if (!(at.b().length == 0 &&
-+              at.s().length == 0 &&
-+              at.i().length == 0 &&
-+              at.l().length == 0 &&
-+              at.c().length == 0 &&
-+              at.f().length == 0 &&
-+              at.d().length == 0 &&
-+              at.bool().length == 0 &&
-+              at.str().length == 0 &&
-+              at.cls().length == 0 &&
-+              at.e().length == 0 &&
-+              at.a().length == 0)) {
-+            fail("ArrayTypes(Empty)" + e);
-+        }
-+    }
-+
-+    static void checkArrayTypes1(AnnotatedElement e) {
-+        try {
-+            checkArrayTypes1(e.getAnnotation(ArrayTypes.class), e);
-+        } catch(Throwable t) {
-+            fail("ArrayTypes(One element)" + e + ": " + t);
-+        }
-+    }
-+
-+    static void checkArrayTypes1(ArrayTypes at, AnnotatedElement e) {
-+        numTests++;
-+        if (!(at.b()[0]    == 1            &&
-+              at.s()[0]    == 2            &&
-+              at.i()[0]    == 3            &&
-+              at.l()[0]    == 4L           &&
-+              at.c()[0]    == '5'          &&
-+              at.f()[0]    == 6.0f         &&
-+              at.d()[0]    == 7.0          &&
-+              at.bool()[0] == true         &&
-+              at.str()[0].equals("custom") &&
-+              at.cls()[0]  == Map.class    &&
-+              at.e()[0]    == Stooge.MOE   &&
-+              at.a()[0].x() == 1 && at.a()[0].y() == 2 &&
-+
-+              at.b().length==1    && at.s().length==1   && at.i().length==1 &&
-+              at.l().length==1    && at.c().length==1   && at.d().length==1 &&
-+              at.bool().length==1 && at.str().length==1 &&
-+              at.cls().length==1  && at.cls().length==1 && at.a().length==1))
-+            fail("ArrayTypes(One element)" + e);
-+    }
-+
-+    static void checkArrayTypes2(AnnotatedElement e) {
-+        try {
-+            checkArrayTypes2(e.getAnnotation(ArrayTypes.class), e);
-+        } catch(Throwable t) {
-+            fail("ArrayTypes(Two element)" + e + ": " + t);
-+        }
-+    }
-+
-+    static void checkArrayTypes2(ArrayTypes at, AnnotatedElement e) {
-+        numTests++;
-+        if (!(at.b()[0]    == 1            && at.b()[1]    == 2            &&
-+              at.s()[0]    == 2            && at.s()[1]    == 3            &&
-+              at.i()[0]    == 3            && at.i()[1]    == 4            &&
-+              at.l()[0]    == 4L           && at.l()[1]    == 5L           &&
-+              at.c()[0]    == '5'          && at.c()[1]    == '6'          &&
-+              at.f()[0]    == 6.0f         && at.f()[1]    == 7.0f         &&
-+              at.d()[0]    == 7.0          && at.d()[1]    == 8.0          &&
-+              at.bool()[0] == true         && at.bool()[1] == false        &&
-+              at.str()[0].equals("custom") && at.str()[1].equals("paint")  &&
-+              at.cls()[0]  == Map.class    && at.cls()[1]  == Set.class    &&
-+              at.e()[0]    == Stooge.MOE   && at.e()[1]    == Stooge.CURLY &&
-+              at.a()[0].x() == 1 && at.a()[0].y() == 2 && at.a()[1].x() == 3 && at.a()[1].y() == 4 &&
-+
-+              at.b().length==2    && at.s().length==2   && at.i().length==2 &&
-+              at.l().length==2    && at.c().length==2   && at.d().length==2 &&
-+              at.bool().length==2 && at.str().length==2 &&
-+              at.cls().length==2  && at.cls().length==2 && at.a().length==2))
-+            fail("ArrayTypes(Two element)" + e);
-+    }
-+
-+    static void checkArrayTypesOverrideDefault(AnnotatedElement e) {
-+        try {
-+            checkArrayTypesOverrideDefault(e.getAnnotation(ArrayTypesWithDefault.class), e);
-+        } catch(Throwable t) {
-+            fail("ArrayTypesOverrideDefault" + e + ": " + t);
-+        }
-+    }
-+
-+    static void checkArrayTypesOverrideDefault(ArrayTypesWithDefault at, AnnotatedElement e) {
-+        numTests++;
-+        if (!(at.b()[0]    == 1            &&
-+              at.s()[0]    == 2            &&
-+              at.i()[0]    == 3            &&
-+              at.l()[0]    == 4L           &&
-+              at.c()[0]    == '5'          &&
-+              at.f()[0]    == 6.0f         &&
-+              at.d()[0]    == 7.0          &&
-+              at.bool()[0] == true         &&
-+              at.str()[0].equals("custom") &&
-+              at.cls()[0]  == Map.class    &&
-+              at.e()[0]    == Stooge.MOE   &&
-+              at.a()[0].x() == 1 && at.a()[0].y() == 2 &&
-+
-+              at.b().length==1    && at.s().length==1   && at.i().length==1 &&
-+              at.l().length==1    && at.c().length==1   && at.d().length==1 &&
-+              at.bool().length==1 && at.str().length==1 &&
-+              at.cls().length==1  && at.cls().length==1))
-+            fail("ArrayTypesOverrideDefault" + e);
-+    }
-+
-+    static void checkArrayTypesAcceptDefault(AnnotatedElement e) {
-+        try {
-+            checkArrayTypesAcceptDefault(e.getAnnotation(ArrayTypesWithDefault.class), e);
-+        } catch(Throwable t) {
-+            fail("ArrayTypesAcceptDefault" + e + ": " + t);
-+        }
-+    }
-+
-+    static void checkArrayTypesAcceptDefault(ArrayTypesWithDefault at, AnnotatedElement e) {
-+        numTests++;
-+        if (!(at.b()[0]    == 11            &&
-+              at.s()[0]    == 12            &&
-+              at.i()[0]    == 13            &&
-+              at.l()[0]    == 14L           &&
-+              at.c()[0]    == 'V'           &&
-+              at.f()[0]    == 16.0f         &&
-+              at.d()[0]    == 17.0          &&
-+              at.bool()[0] == false         &&
-+              at.str()[0].equals("default") &&
-+              at.cls()[0]  == Class.class   &&
-+              at.e()[0]    == Stooge.LARRY  &&
-+              at.a()[0].x() == 11 && at.a()[0].y() == 12 &&
-+
-+              at.b().length==1    && at.s().length==1   && at.i().length==1 &&
-+              at.l().length==1    && at.c().length==1   && at.d().length==1 &&
-+              at.bool().length==1 && at.str().length==1 &&
-+              at.cls().length==1  && at.cls().length==1))
-+            fail("ArrayTypesAcceptDefault" + e);
-+    }
-+
-+    // Scalar multi-member for parameters
-+
-+    static void checkScalarTypesParam(Method m) {
-+        try {
-+            checkScalarTypes((ScalarTypes) m.getParameterAnnotations()[0][0], m);
-+        } catch(Throwable t) {
-+            fail("ScalarTypes" + m + ": " + t);
-+        }
-+    }
-+
-+    static void checkScalarTypesOverrideDefaultParam(Method m) {
-+        try {
-+            checkScalarTypesOverrideDefault((ScalarTypesWithDefault) m.getParameterAnnotations()[0][0], m);
-+        } catch(Throwable t) {
-+            fail("ScalarTypesOverrideDefaults" + m + ": " + t);
-+        }
-+    }
-+
-+    static void checkScalarTypesAcceptDefaultParam(Method m) {
-+        try {
-+            checkScalarTypesAcceptDefault((ScalarTypesWithDefault) m.getParameterAnnotations()[0][0], m);
-+        } catch(Throwable t) {
-+            fail("ScalarTypesAcceptDefaults" + m + ": " + t);
-+        }
-+    }
-+
-+    // Array multi-member for parameters
-+
-+    static void checkArrayTypes0Param(Method m) {
-+        try {
-+            checkArrayTypes0((ArrayTypes) m.getParameterAnnotations()[0][0], m);
-+        } catch(Throwable t) {
-+            fail("ArrayTypes(Empty)" + m + ": " + t);
-+        }
-+    }
-+
-+    static void checkArrayTypes1Param(Method m) {
-+        try {
-+            checkArrayTypes1((ArrayTypes) m.getParameterAnnotations()[0][0], m);
-+        } catch(Throwable t) {
-+            fail("ArrayTypes(One Element)" + m + ": " + t);
-+        }
-+    }
-+
-+    static void checkArrayTypes2Param(Method m) {
-+        try {
-+            checkArrayTypes2((ArrayTypes) m.getParameterAnnotations()[0][0], m);
-+        } catch(Throwable t) {
-+            fail("ArrayTypes(Two Elements)" + m + ": " + t);
-+        }
-+    }
-+
-+    static void checkArrayTypesOverrideDefaultParam(Method m) {
-+        try {
-+            checkArrayTypesOverrideDefault((ArrayTypesWithDefault) m.getParameterAnnotations()[0][0], m);
-+        } catch(Throwable t) {
-+            fail("ArrayTypesOverrideDefault" + m + ": " + t);
-+        }
-+    }
-+
-+    static void checkArrayTypesAcceptDefaultParam(Method m) {
-+        try {
-+            checkArrayTypesAcceptDefault((ArrayTypesWithDefault) m.getParameterAnnotations()[0][0], m);
-+        } catch(Throwable t) {
-+            fail("ArrayTypesAcceptDefault" + m + ": " + t);
-+        }
-+    }
-+
-+    // marker type on parameter
-+    static void checkMarkerParam(Method m) {
-+        try {
-+            checkMarker((Marker) m.getParameterAnnotations()[0][0], m);
-+        } catch(Throwable t) {
-+            fail("Marker" + m + ": " + t);
-+        }
-+    }
-+
-+    // single-member scalar types on parameter
-+    static void checkSingleMemberByteParam(Method m) {
-+        try {
-+            checkSingleMemberByte((SingleMemberByte) m.getParameterAnnotations()[0][0], m);
-+        } catch(Throwable t) {
-+            fail("SingleMemberByte" + m + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberShortParam(Method m) {
-+        try {
-+            checkSingleMemberShort((SingleMemberShort) m.getParameterAnnotations()[0][0], m);
-+        } catch(Throwable t) {
-+            fail("SingleMemberShort" + m + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberIntParam(Method m) {
-+        try {
-+            checkSingleMemberInt((SingleMemberInt) m.getParameterAnnotations()[0][0], m);
-+        } catch(Throwable t) {
-+            fail("SingleMemberInt" + m + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberLongParam(Method m) {
-+        try {
-+            checkSingleMemberLong((SingleMemberLong) m.getParameterAnnotations()[0][0], m);
-+        } catch(Throwable t) {
-+            fail("SingleMemberLong" + m + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberCharParam(Method m) {
-+        try {
-+            checkSingleMemberChar((SingleMemberChar) m.getParameterAnnotations()[0][0], m);
-+        } catch(Throwable t) {
-+            fail("SingleMemberChar" + m + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberFloatParam(Method m) {
-+        try {
-+            checkSingleMemberFloat((SingleMemberFloat) m.getParameterAnnotations()[0][0], m);
-+        } catch(Throwable t) {
-+            fail("SingleMemberFloat" + m + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberDoubleParam(Method m) {
-+        try {
-+            checkSingleMemberDouble((SingleMemberDouble) m.getParameterAnnotations()[0][0], m);
-+        } catch(Throwable t) {
-+            fail("SingleMemberDouble" + m + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberBooleanParam(Method m) {
-+        try {
-+            checkSingleMemberBoolean((SingleMemberBoolean) m.getParameterAnnotations()[0][0], m);
-+        } catch(Throwable t) {
-+            fail("SingleMemberBoolean" + m + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberStringParam(Method m) {
-+        try {
-+            checkSingleMemberString((SingleMemberString) m.getParameterAnnotations()[0][0], m);
-+        } catch(Throwable t) {
-+            fail("SingleMemberString" + m + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberClassParam(Method m) {
-+        try {
-+            checkSingleMemberClass((SingleMemberClass) m.getParameterAnnotations()[0][0], m);
-+        } catch(Throwable t) {
-+            fail("SingleMemberClass" + m + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberEnumParam(Method m) {
-+        try {
-+            checkSingleMemberEnum((SingleMemberEnum) m.getParameterAnnotations()[0][0], m);
-+        } catch(Throwable t) {
-+            fail("SingleMemberEnum" + m + ": " + t);
-+        }
-+    }
-+
-+    // single-member scalar types with default-override on parameter
-+    static void checkSingleMemberByteOvrdDefParam(Method m) {
-+        try {
-+            checkSingleMemberByteOvrdDef((SingleMemberByteWithDef) m.getParameterAnnotations()[0][0], m);
-+        } catch(Throwable t) {
-+            fail("SingleMemberByteOvrdDef" + m + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberShortOvrdDefParam(Method m) {
-+        try {
-+            checkSingleMemberShortOvrdDef((SingleMemberShortWithDef) m.getParameterAnnotations()[0][0], m);
-+        } catch(Throwable t) {
-+            fail("SingleMemberShortOvrdDef" + m + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberIntOvrdDefParam(Method m) {
-+        try {
-+            checkSingleMemberIntOvrdDef((SingleMemberIntWithDef) m.getParameterAnnotations()[0][0], m);
-+        } catch(Throwable t) {
-+            fail("SingleMemberIntOvrdDef" + m + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberLongOvrdDefParam(Method m) {
-+        try {
-+            checkSingleMemberLongOvrdDef((SingleMemberLongWithDef) m.getParameterAnnotations()[0][0], m);
-+        } catch(Throwable t) {
-+            fail("SingleMemberLongOvrdDef" + m + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberCharOvrdDefParam(Method m) {
-+        try {
-+            checkSingleMemberCharOvrdDef((SingleMemberCharWithDef) m.getParameterAnnotations()[0][0], m);
-+        } catch(Throwable t) {
-+            fail("SingleMemberCharOvrdDef" + m + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberFloatOvrdDefParam(Method m) {
-+        try {
-+            checkSingleMemberFloatOvrdDef((SingleMemberFloatWithDef) m.getParameterAnnotations()[0][0], m);
-+        } catch(Throwable t) {
-+            fail("SingleMemberFloatOvrdDef" + m + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberDoubleOvrdDefParam(Method m) {
-+        try {
-+            checkSingleMemberDoubleOvrdDef((SingleMemberDoubleWithDef) m.getParameterAnnotations()[0][0], m);
-+        } catch(Throwable t) {
-+            fail("SingleMemberDoubleOvrdDef" + m + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberBooleanOvrdDefParam(Method m) {
-+        try {
-+            checkSingleMemberBooleanOvrdDef((SingleMemberBooleanWithDef) m.getParameterAnnotations()[0][0], m);
-+        } catch(Throwable t) {
-+            fail("SingleMemberBooleanOvrdDef" + m + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberStringOvrdDefParam(Method m) {
-+        try {
-+            checkSingleMemberStringOvrdDef((SingleMemberStringWithDef) m.getParameterAnnotations()[0][0], m);
-+        } catch(Throwable t) {
-+            fail("SingleMemberStringOvrdDef" + m + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberClassOvrdDefParam(Method m) {
-+        try {
-+            checkSingleMemberClassOvrdDef((SingleMemberClassWithDef) m.getParameterAnnotations()[0][0], m);
-+        } catch(Throwable t) {
-+            fail("SingleMemberClassOvrdDef" + m + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberEnumOvrdDefParam(Method m) {
-+        try {
-+            checkSingleMemberEnumOvrdDef((SingleMemberEnumWithDef) m.getParameterAnnotations()[0][0], m);
-+        } catch(Throwable t) {
-+            fail("SingleMemberEnumOvrdDef" + m + ": " + t);
-+        }
-+    }
-+
-+    // single-member scalar types with default-accept on PARAMETER
-+    static void checkSingleMemberByteAcceptDefParam(Method m) {
-+        try {
-+            checkSingleMemberByteAcceptDef((SingleMemberByteWithDef) m.getParameterAnnotations()[0][0], m);
-+        } catch(Throwable t) {
-+            fail("SingleMemberByteAcceptDef" + m + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberShortAcceptDefParam(Method m) {
-+        try {
-+            checkSingleMemberShortAcceptDef((SingleMemberShortWithDef) m.getParameterAnnotations()[0][0], m);
-+        } catch(Throwable t) {
-+            fail("SingleMemberShortAcceptDef" + m + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberIntAcceptDefParam(Method m) {
-+        try {
-+            checkSingleMemberIntAcceptDef((SingleMemberIntWithDef) m.getParameterAnnotations()[0][0], m);
-+        } catch(Throwable t) {
-+            fail("SingleMemberIntAcceptDef" + m + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberLongAcceptDefParam(Method m) {
-+        try {
-+            checkSingleMemberLongAcceptDef((SingleMemberLongWithDef) m.getParameterAnnotations()[0][0], m);
-+        } catch(Throwable t) {
-+            fail("SingleMemberLongAcceptDef" + m + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberCharAcceptDefParam(Method m) {
-+        try {
-+            checkSingleMemberCharAcceptDef((SingleMemberCharWithDef) m.getParameterAnnotations()[0][0], m);
-+        } catch(Throwable t) {
-+            fail("SingleMemberCharAcceptDef" + m + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberFloatAcceptDefParam(Method m) {
-+        try {
-+            checkSingleMemberFloatAcceptDef((SingleMemberFloatWithDef) m.getParameterAnnotations()[0][0], m);
-+        } catch(Throwable t) {
-+            fail("SingleMemberFloatAcceptDef" + m + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberDoubleAcceptDefParam(Method m) {
-+        try {
-+            checkSingleMemberDoubleAcceptDef((SingleMemberDoubleWithDef) m.getParameterAnnotations()[0][0], m);
-+        } catch(Throwable t) {
-+            fail("SingleMemberDoubleAcceptDef" + m + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberBooleanAcceptDefParam(Method m) {
-+        try {
-+            checkSingleMemberBooleanAcceptDef((SingleMemberBooleanWithDef) m.getParameterAnnotations()[0][0], m);
-+        } catch(Throwable t) {
-+            fail("SingleMemberBooleanAcceptDef" + m + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberStringAcceptDefParam(Method m) {
-+        try {
-+            checkSingleMemberStringAcceptDef((SingleMemberStringWithDef) m.getParameterAnnotations()[0][0], m);
-+        } catch(Throwable t) {
-+            fail("SingleMemberStringAcceptDef" + m + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberClassAcceptDefParam(Method m) {
-+        try {
-+            checkSingleMemberClassAcceptDef((SingleMemberClassWithDef) m.getParameterAnnotations()[0][0], m);
-+        } catch(Throwable t) {
-+            fail("SingleMemberClassAcceptDef" + m + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberEnumAcceptDefParam(Method m) {
-+        try {
-+            checkSingleMemberEnumAcceptDef((SingleMemberEnumWithDef) m.getParameterAnnotations()[0][0], m);
-+        } catch(Throwable t) {
-+            fail("SingleMemberEnumAcceptDef" + m + ": " + t);
-+        }
-+    }
-+
-+    // single-member array types (empty array) parameter
-+    static void checkSingleMemberByteArrEmptyParam(Method m) {
-+        try {
-+            checkSingleMemberByteArrEmpty((SingleMemberByteArray) m.getParameterAnnotations()[0][0], m);
-+        } catch(Throwable t) {
-+            fail("SingleMemberByteArrEmpty" + m + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberShortArrEmptyParam(Method m) {
-+        try {
-+            checkSingleMemberShortArrEmpty((SingleMemberShortArray) m.getParameterAnnotations()[0][0], m);
-+        } catch(Throwable t) {
-+            fail("SingleMemberShortArrEmpty" + m + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberIntArrEmptyParam(Method m) {
-+        try {
-+            checkSingleMemberIntArrEmpty((SingleMemberIntArray) m.getParameterAnnotations()[0][0], m);
-+        } catch(Throwable t) {
-+            fail("SingleMemberIntArrEmpty" + m + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberLongArrEmptyParam(Method m) {
-+        try {
-+            checkSingleMemberLongArrEmpty((SingleMemberLongArray) m.getParameterAnnotations()[0][0], m);
-+        } catch(Throwable t) {
-+            fail("SingleMemberLongArrEmpty" + m + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberCharArrEmptyParam(Method m) {
-+        try {
-+            checkSingleMemberCharArrEmpty((SingleMemberCharArray) m.getParameterAnnotations()[0][0], m);
-+        } catch(Throwable t) {
-+            fail("SingleMemberCharArrEmpty" + m + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberFloatArrEmptyParam(Method m) {
-+        try {
-+            checkSingleMemberFloatArrEmpty((SingleMemberFloatArray) m.getParameterAnnotations()[0][0], m);
-+        } catch(Throwable t) {
-+            fail("SingleMemberFloatArrEmpty" + m + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberDoubleArrEmptyParam(Method m) {
-+        try {
-+            checkSingleMemberDoubleArrEmpty((SingleMemberDoubleArray) m.getParameterAnnotations()[0][0], m);
-+        } catch(Throwable t) {
-+            fail("SingleMemberDoubleArrEmpty" + m + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberBooleanArrEmptyParam(Method m) {
-+        try {
-+            checkSingleMemberBooleanArrEmpty((SingleMemberBooleanArray) m.getParameterAnnotations()[0][0], m);
-+        } catch(Throwable t) {
-+            fail("SingleMemberBooleanArrEmpty" + m + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberStringArrEmptyParam(Method m) {
-+        try {
-+            checkSingleMemberStringArrEmpty((SingleMemberStringArray) m.getParameterAnnotations()[0][0], m);
-+        } catch(Throwable t) {
-+            fail("SingleMemberStringArrEmpty" + m + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberClassArrEmptyParam(Method m) {
-+        try {
-+            checkSingleMemberClassArrEmpty((SingleMemberClassArray) m.getParameterAnnotations()[0][0], m);
-+        } catch(Throwable t) {
-+            fail("SingleMemberClassArrEmpty" + m + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberEnumArrEmptyParam(Method m) {
-+        try {
-+            checkSingleMemberEnumArrEmpty((SingleMemberEnumArray) m.getParameterAnnotations()[0][0], m);
-+        } catch(Throwable t) {
-+            fail("SingleMemberEnumArrEmpty" + m + ": " + t);
-+        }
-+    }
-+
-+    // single-member array types (one-element array) on parameter
-+    static void checkSingleMemberByteArrOneParam(Method m) {
-+        try {
-+            checkSingleMemberByteArrOne((SingleMemberByteArray) m.getParameterAnnotations()[0][0], m);
-+        } catch(Throwable t) {
-+            fail("SingleMemberByteArrOne" + m + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberShortArrOneParam(Method m) {
-+        try {
-+            checkSingleMemberShortArrOne((SingleMemberShortArray) m.getParameterAnnotations()[0][0], m);
-+        } catch(Throwable t) {
-+            fail("SingleMemberShortArrOne" + m + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberIntArrOneParam(Method m) {
-+        try {
-+            checkSingleMemberIntArrOne((SingleMemberIntArray) m.getParameterAnnotations()[0][0], m);
-+        } catch(Throwable t) {
-+            fail("SingleMemberIntArrOne" + m + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberLongArrOneParam(Method m) {
-+        try {
-+            checkSingleMemberLongArrOne((SingleMemberLongArray) m.getParameterAnnotations()[0][0], m);
-+        } catch(Throwable t) {
-+            fail("SingleMemberLongArrOne" + m + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberCharArrOneParam(Method m) {
-+        try {
-+            checkSingleMemberCharArrOne((SingleMemberCharArray) m.getParameterAnnotations()[0][0], m);
-+        } catch(Throwable t) {
-+            fail("SingleMemberCharArrOne" + m + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberFloatArrOneParam(Method m) {
-+        try {
-+            checkSingleMemberFloatArrOne((SingleMemberFloatArray) m.getParameterAnnotations()[0][0], m);
-+        } catch(Throwable t) {
-+            fail("SingleMemberFloatArrOne" + m + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberDoubleArrOneParam(Method m) {
-+        try {
-+            checkSingleMemberDoubleArrOne((SingleMemberDoubleArray) m.getParameterAnnotations()[0][0], m);
-+        } catch(Throwable t) {
-+            fail("SingleMemberDoubleArrOne" + m + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberBooleanArrOneParam(Method m) {
-+        try {
-+            checkSingleMemberBooleanArrOne((SingleMemberBooleanArray) m.getParameterAnnotations()[0][0], m);
-+        } catch(Throwable t) {
-+            fail("SingleMemberBooleanArrOne" + m + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberStringArrOneParam(Method m) {
-+        try {
-+            checkSingleMemberStringArrOne((SingleMemberStringArray) m.getParameterAnnotations()[0][0], m);
-+        } catch(Throwable t) {
-+            fail("SingleMemberStringArrOne" + m + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberClassArrOneParam(Method m) {
-+        try {
-+            checkSingleMemberClassArrOne((SingleMemberClassArray) m.getParameterAnnotations()[0][0], m);
-+        } catch(Throwable t) {
-+            fail("SingleMemberClassArrOne" + m + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberEnumArrOneParam(Method m) {
-+        try {
-+            checkSingleMemberEnumArrOne((SingleMemberEnumArray) m.getParameterAnnotations()[0][0], m);
-+        } catch(Throwable t) {
-+            fail("SingleMemberEnumArrOne" + m + ": " + t);
-+        }
-+    }
-+
-+    // single-member array types (two-element array) on parameter
-+    static void checkSingleMemberByteArrTwoParam(Method m) {
-+        try {
-+            checkSingleMemberByteArrTwo((SingleMemberByteArray) m.getParameterAnnotations()[0][0], m);
-+        } catch(Throwable t) {
-+            fail("SingleMemberByteArrTwo" + m + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberShortArrTwoParam(Method m) {
-+        try {
-+            checkSingleMemberShortArrTwo((SingleMemberShortArray) m.getParameterAnnotations()[0][0], m);
-+        } catch(Throwable t) {
-+            fail("SingleMemberShortArrTwo" + m + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberIntArrTwoParam(Method m) {
-+        try {
-+            checkSingleMemberIntArrTwo((SingleMemberIntArray) m.getParameterAnnotations()[0][0], m);
-+        } catch(Throwable t) {
-+            fail("SingleMemberIntArrTwo" + m + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberLongArrTwoParam(Method m) {
-+        try {
-+            checkSingleMemberLongArrTwo((SingleMemberLongArray) m.getParameterAnnotations()[0][0], m);
-+        } catch(Throwable t) {
-+            fail("SingleMemberLongArrTwo" + m + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberCharArrTwoParam(Method m) {
-+        try {
-+            checkSingleMemberCharArrTwo((SingleMemberCharArray) m.getParameterAnnotations()[0][0], m);
-+        } catch(Throwable t) {
-+            fail("SingleMemberCharArrTwo" + m + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberFloatArrTwoParam(Method m) {
-+        try {
-+            checkSingleMemberFloatArrTwo((SingleMemberFloatArray) m.getParameterAnnotations()[0][0], m);
-+        } catch(Throwable t) {
-+            fail("SingleMemberFloatArrTwo" + m + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberDoubleArrTwoParam(Method m) {
-+        try {
-+            checkSingleMemberDoubleArrTwo((SingleMemberDoubleArray) m.getParameterAnnotations()[0][0], m);
-+        } catch(Throwable t) {
-+            fail("SingleMemberDoubleArrTwo" + m + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberBooleanArrTwoParam(Method m) {
-+        try {
-+            checkSingleMemberBooleanArrTwo((SingleMemberBooleanArray) m.getParameterAnnotations()[0][0], m);
-+        } catch(Throwable t) {
-+            fail("SingleMemberBooleanArrTwo" + m + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberStringArrTwoParam(Method m) {
-+        try {
-+            checkSingleMemberStringArrTwo((SingleMemberStringArray) m.getParameterAnnotations()[0][0], m);
-+        } catch(Throwable t) {
-+            fail("SingleMemberStringArrTwo" + m + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberClassArrTwoParam(Method m) {
-+        try {
-+            checkSingleMemberClassArrTwo((SingleMemberClassArray) m.getParameterAnnotations()[0][0], m);
-+        } catch(Throwable t) {
-+            fail("SingleMemberClassArrTwo" + m + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberEnumArrTwoParam(Method m) {
-+        try {
-+            checkSingleMemberEnumArrTwo((SingleMemberEnumArray) m.getParameterAnnotations()[0][0], m);
-+        } catch(Throwable t) {
-+            fail("SingleMemberEnumArrTwo" + m + ": " + t);
-+        }
-+    }
-+
-+    // single-member array types with default (override)on parameter
-+    static void checkSingleMemberByteArrOvrdDefParam(Method m) {
-+        try {
-+            checkSingleMemberByteArrOvrdDef((SingleMemberByteArrayDef) m.getParameterAnnotations()[0][0], m);
-+        } catch(Throwable t) {
-+            fail("SingleMemberByteArrOvrdDef" + m + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberShortArrOvrdDefParam(Method m) {
-+        try {
-+            checkSingleMemberShortArrOvrdDef((SingleMemberShortArrayDef) m.getParameterAnnotations()[0][0], m);
-+        } catch(Throwable t) {
-+            fail("SingleMemberShortArrOvrdDef" + m + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberIntArrOvrdDefParam(Method m) {
-+        try {
-+            checkSingleMemberIntArrOvrdDef((SingleMemberIntArrayDef) m.getParameterAnnotations()[0][0], m);
-+        } catch(Throwable t) {
-+            fail("SingleMemberIntArrOvrdDef" + m + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberLongArrOvrdDefParam(Method m) {
-+        try {
-+            checkSingleMemberLongArrOvrdDef((SingleMemberLongArrayDef) m.getParameterAnnotations()[0][0], m);
-+        } catch(Throwable t) {
-+            fail("SingleMemberLongArrOvrdDef" + m + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberCharArrOvrdDefParam(Method m) {
-+        try {
-+            checkSingleMemberCharArrOvrdDef((SingleMemberCharArrayDef) m.getParameterAnnotations()[0][0], m);
-+        } catch(Throwable t) {
-+            fail("SingleMemberCharArrOvrdDef" + m + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberFloatArrOvrdDefParam(Method m) {
-+        try {
-+            checkSingleMemberFloatArrOvrdDef((SingleMemberFloatArrayDef) m.getParameterAnnotations()[0][0], m);
-+        } catch(Throwable t) {
-+            fail("SingleMemberFloatArrOvrdDef" + m + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberDoubleArrOvrdDefParam(Method m) {
-+        try {
-+            checkSingleMemberDoubleArrOvrdDef((SingleMemberDoubleArrayDef) m.getParameterAnnotations()[0][0], m);
-+        } catch(Throwable t) {
-+            fail("SingleMemberDoubleArrOvrdDef" + m + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberBooleanArrOvrdDefParam(Method m) {
-+        try {
-+            checkSingleMemberBooleanArrOvrdDef((SingleMemberBooleanArrayDef) m.getParameterAnnotations()[0][0], m);
-+        } catch(Throwable t) {
-+            fail("SingleMemberBooleanArrOvrdDef" + m + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberStringArrOvrdDefParam(Method m) {
-+        try {
-+            checkSingleMemberStringArrOvrdDef((SingleMemberStringArrayDef) m.getParameterAnnotations()[0][0], m);
-+        } catch(Throwable t) {
-+            fail("SingleMemberStringArrOvrdDef" + m + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberClassArrOvrdDefParam(Method m) {
-+        try {
-+            checkSingleMemberClassArrOvrdDef((SingleMemberClassArrayDef) m.getParameterAnnotations()[0][0], m);
-+        } catch(Throwable t) {
-+            fail("SingleMemberClassArrOvrdDef" + m + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberEnumArrOvrdDefParam(Method m) {
-+        try {
-+            checkSingleMemberEnumArrOvrdDef((SingleMemberEnumArrayDef) m.getParameterAnnotations()[0][0], m);
-+        } catch(Throwable t) {
-+            fail("SingleMemberEnumArrOvrdDef" + m + ": " + t);
-+        }
-+    }
-+
-+    // single-member array types with default (accept)on parameter
-+    static void checkSingleMemberByteArrAcceptDefParam(Method m) {
-+        try {
-+            checkSingleMemberByteArrAcceptDef((SingleMemberByteArrayDef) m.getParameterAnnotations()[0][0], m);
-+        } catch(Throwable t) {
-+            fail("SingleMemberByteArrAcceptDef" + m + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberShortArrAcceptDefParam(Method m) {
-+        try {
-+            checkSingleMemberShortArrAcceptDef((SingleMemberShortArrayDef) m.getParameterAnnotations()[0][0], m);
-+        } catch(Throwable t) {
-+            fail("SingleMemberShortArrAcceptDef" + m + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberIntArrAcceptDefParam(Method m) {
-+        try {
-+            checkSingleMemberIntArrAcceptDef((SingleMemberIntArrayDef) m.getParameterAnnotations()[0][0], m);
-+        } catch(Throwable t) {
-+            fail("SingleMemberIntArrAcceptDef" + m + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberLongArrAcceptDefParam(Method m) {
-+        try {
-+            checkSingleMemberLongArrAcceptDef((SingleMemberLongArrayDef) m.getParameterAnnotations()[0][0], m);
-+        } catch(Throwable t) {
-+            fail("SingleMemberLongArrAcceptDef" + m + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberCharArrAcceptDefParam(Method m) {
-+        try {
-+            checkSingleMemberCharArrAcceptDef((SingleMemberCharArrayDef) m.getParameterAnnotations()[0][0], m);
-+        } catch(Throwable t) {
-+            fail("SingleMemberCharArrAcceptDef" + m + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberFloatArrAcceptDefParam(Method m) {
-+        try {
-+            checkSingleMemberFloatArrAcceptDef((SingleMemberFloatArrayDef) m.getParameterAnnotations()[0][0], m);
-+        } catch(Throwable t) {
-+            fail("SingleMemberFloatArrAcceptDef" + m + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberDoubleArrAcceptDefParam(Method m) {
-+        try {
-+            checkSingleMemberDoubleArrAcceptDef((SingleMemberDoubleArrayDef) m.getParameterAnnotations()[0][0], m);
-+        } catch(Throwable t) {
-+            fail("SingleMemberDoubleArrAcceptDef" + m + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberBooleanArrAcceptDefParam(Method m) {
-+        try {
-+            checkSingleMemberBooleanArrAcceptDef((SingleMemberBooleanArrayDef) m.getParameterAnnotations()[0][0], m);
-+        } catch(Throwable t) {
-+            fail("SingleMemberBooleanArrAcceptDef" + m + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberStringArrAcceptDefParam(Method m) {
-+        try {
-+            checkSingleMemberStringArrAcceptDef((SingleMemberStringArrayDef) m.getParameterAnnotations()[0][0], m);
-+        } catch(Throwable t) {
-+            fail("SingleMemberStringArrAcceptDef" + m + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberClassArrAcceptDefParam(Method m) {
-+        try {
-+            checkSingleMemberClassArrAcceptDef((SingleMemberClassArrayDef) m.getParameterAnnotations()[0][0], m);
-+        } catch(Throwable t) {
-+            fail("SingleMemberClassArrAcceptDef" + m + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberEnumArrAcceptDefParam(Method m) {
-+        try {
-+            checkSingleMemberEnumArrAcceptDef((SingleMemberEnumArrayDef) m.getParameterAnnotations()[0][0], m);
-+        } catch(Throwable t) {
-+            fail("SingleMemberEnumArrAcceptDef" + m + ": " + t);
-+        }
-+    }
-+
-+    // Marker
-+    static void checkMarker(AnnotatedElement e) {
-+        checkMarker(e.getAnnotation(Marker.class), e);
-+    }
-+    static void checkMarker(Marker m, AnnotatedElement e) {
-+        numTests++;
-+        try {
-+            if (m == null) fail("Marker " + e);
-+        } catch(Throwable t) {
-+            fail("Marker " + e + ": " + t);
-+        }
-+    }
-+
-+    // Single-member
-+
-+    static void checkSingleMemberByte(AnnotatedElement e) {
-+        checkSingleMemberByte(e.getAnnotation(SingleMemberByte.class), e);
-+    }
-+    static void checkSingleMemberByte(SingleMemberByte a, AnnotatedElement e) {
-+        numTests++;
-+        try {
-+            if (a.value() != 1) fail("SingleMemberByte " + e + " = " + a.value());
-+        } catch(Throwable t) {
-+            fail("SingleMemberByte " + e + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberShort(AnnotatedElement e) {
-+        checkSingleMemberShort(e.getAnnotation(SingleMemberShort.class), e);
-+    }
-+    static void checkSingleMemberShort(SingleMemberShort a, AnnotatedElement e) {
-+        numTests++;
-+        try {
-+            if (a.value() != 2) fail("SingleMemberShort " + e + " = " + a.value());
-+        } catch(Throwable t) {
-+            fail("SingleMemberShort " + e + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberInt(AnnotatedElement e) {
-+        checkSingleMemberInt(e.getAnnotation(SingleMemberInt.class), e);
-+    }
-+    static void checkSingleMemberInt(SingleMemberInt a, AnnotatedElement e) {
-+        numTests++;
-+        try {
-+            if (a.value() != 3) fail("SingleMemberInt " + e + " = " + a.value());
-+        } catch(Throwable t) {
-+            fail("SingleMemberInt " + e + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberLong(AnnotatedElement e) {
-+        checkSingleMemberLong(e.getAnnotation(SingleMemberLong.class), e);
-+    }
-+    static void checkSingleMemberLong(SingleMemberLong a, AnnotatedElement e) {
-+        numTests++;
-+        try {
-+            if (a.value() != 4L) fail("SingleMemberLong " + e + " = " + a.value());
-+        } catch(Throwable t) {
-+            fail("SingleMemberLong " + e + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberChar(AnnotatedElement e) {
-+        checkSingleMemberChar(e.getAnnotation(SingleMemberChar.class), e);
-+    }
-+    static void checkSingleMemberChar(SingleMemberChar a, AnnotatedElement e) {
-+        numTests++;
-+        try {
-+            if (a.value() != '5') fail("SingleMemberChar " + e + " = " + a.value());
-+        } catch(Throwable t) {
-+            fail("SingleMemberChar " + e + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberFloat(AnnotatedElement e) {
-+        checkSingleMemberFloat(e.getAnnotation(SingleMemberFloat.class), e);
-+    }
-+    static void checkSingleMemberFloat(SingleMemberFloat a, AnnotatedElement e) {
-+        numTests++;
-+        try {
-+            if (a.value() != 6.0f) fail("SingleMemberFloat " + e + " = " + a.value());
-+        } catch(Throwable t) {
-+            fail("SingleMemberFloat " + e + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberDouble(AnnotatedElement e) {
-+        checkSingleMemberDouble(e.getAnnotation(SingleMemberDouble.class), e);
-+    }
-+    static void checkSingleMemberDouble(SingleMemberDouble a, AnnotatedElement e) {
-+        numTests++;
-+        try {
-+            if (a.value() != 7.0) fail("SingleMemberDouble " + e + " = " + a.value());
-+        } catch(Throwable t) {
-+            fail("SingleMemberDouble " + e + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberBoolean(AnnotatedElement e) {
-+        checkSingleMemberBoolean(e.getAnnotation(SingleMemberBoolean.class), e);
-+    }
-+    static void checkSingleMemberBoolean(SingleMemberBoolean a, AnnotatedElement e) {
-+        numTests++;
-+        try {
-+            if (!a.value()) fail("SingleMemberBoolean " + e + " = " + a.value());
-+        } catch(Throwable t) {
-+            fail("SingleMemberBoolean " + e + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberString(AnnotatedElement e) {
-+        checkSingleMemberString(e.getAnnotation(SingleMemberString.class), e);
-+    }
-+    static void checkSingleMemberString(SingleMemberString a, AnnotatedElement e) {
-+        numTests++;
-+        try {
-+            if (!(a.value().equals("custom"))) fail("SingleMemberString " + e + " = " + a.value());
-+        } catch(Throwable t) {
-+            fail("SingleMemberString " + e + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberClass(AnnotatedElement e) {
-+        checkSingleMemberClass(e.getAnnotation(SingleMemberClass.class), e);
-+    }
-+    static void checkSingleMemberClass(SingleMemberClass a, AnnotatedElement e) {
-+        numTests++;
-+        try {
-+            if (a.value() != Map.class) fail("SingleMemberClass " + e + " = " + a.value());
-+        } catch(Throwable t) {
-+            fail("SingleMemberClass " + e + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberEnum(AnnotatedElement e) {
-+        checkSingleMemberEnum(e.getAnnotation(SingleMemberEnum.class), e);
-+    }
-+    static void checkSingleMemberEnum(SingleMemberEnum a, AnnotatedElement e) {
-+        numTests++;
-+        try {
-+            if (a.value() != Stooge.MOE) fail("SingleMemberEnum " + e + " = " + a.value());
-+        } catch(Throwable t) {
-+            fail("SingleMemberEnum " + e + ": " + t);
-+        }
-+    }
-+
-+    // Single-member with default (Override)
-+
-+    static void checkSingleMemberByteOvrdDef(AnnotatedElement e) {
-+        checkSingleMemberByteOvrdDef(e.getAnnotation(SingleMemberByteWithDef.class), e);
-+    }
-+    static void checkSingleMemberByteOvrdDef(SingleMemberByteWithDef a, AnnotatedElement e) {
-+        numTests++;
-+        try {
-+            if (a.value() != 1) fail("SingleMemberByteOvrdDef " + e + " = " + a.value());
-+        } catch(Throwable t) {
-+            fail("SingleMemberByteOvrdDef " + e + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberShortOvrdDef(AnnotatedElement e) {
-+        checkSingleMemberShortOvrdDef(e.getAnnotation(SingleMemberShortWithDef.class), e);
-+    }
-+    static void checkSingleMemberShortOvrdDef(SingleMemberShortWithDef a, AnnotatedElement e) {
-+        numTests++;
-+        try {
-+            if (a.value() != 2) fail("SingleMemberShortOvrdDef " + e + " = " + a.value());
-+        } catch(Throwable t) {
-+            fail("SingleMemberShortOvrdDef " + e + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberIntOvrdDef(AnnotatedElement e) {
-+        checkSingleMemberIntOvrdDef(e.getAnnotation(SingleMemberIntWithDef.class), e);
-+    }
-+    static void checkSingleMemberIntOvrdDef(SingleMemberIntWithDef a, AnnotatedElement e) {
-+        numTests++;
-+        try {
-+            if (a.value() != 3) fail("SingleMemberIntOvrdDef " + e + " = " + a.value());
-+        } catch(Throwable t) {
-+            fail("SingleMemberIntOvrdDef " + e + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberLongOvrdDef(AnnotatedElement e) {
-+        checkSingleMemberLongOvrdDef(e.getAnnotation(SingleMemberLongWithDef.class), e);
-+    }
-+    static void checkSingleMemberLongOvrdDef(SingleMemberLongWithDef a, AnnotatedElement e) {
-+        numTests++;
-+        try {
-+            if (a.value() != 4L) fail("SingleMemberLongOvrdDef " + e + " = " + a.value());
-+        } catch(Throwable t) {
-+            fail("SingleMemberLongOvrdDef " + e + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberCharOvrdDef(AnnotatedElement e) {
-+        checkSingleMemberCharOvrdDef(e.getAnnotation(SingleMemberCharWithDef.class), e);
-+    }
-+    static void checkSingleMemberCharOvrdDef(SingleMemberCharWithDef a, AnnotatedElement e) {
-+        numTests++;
-+        try {
-+            if (a.value() != '5') fail("SingleMemberCharOvrdDef " + e + " = " + a.value());
-+        } catch(Throwable t) {
-+            fail("SingleMemberCharOvrdDef " + e + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberFloatOvrdDef(AnnotatedElement e) {
-+        checkSingleMemberFloatOvrdDef(e.getAnnotation(SingleMemberFloatWithDef.class), e);
-+    }
-+    static void checkSingleMemberFloatOvrdDef(SingleMemberFloatWithDef a, AnnotatedElement e) {
-+        numTests++;
-+        try {
-+            if (a.value() != 6.0f) fail("SingleMemberFloatOvrdDef " + e + " = " + a.value());
-+        } catch(Throwable t) {
-+            fail("SingleMemberFloatOvrdDef " + e + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberDoubleOvrdDef(AnnotatedElement e) {
-+        checkSingleMemberDoubleOvrdDef(e.getAnnotation(SingleMemberDoubleWithDef.class), e);
-+    }
-+    static void checkSingleMemberDoubleOvrdDef(SingleMemberDoubleWithDef a, AnnotatedElement e) {
-+        numTests++;
-+        try {
-+            if (a.value() != 7.0) fail("SingleMemberDoubleOvrdDef " + e + " = " + a.value());
-+        } catch(Throwable t) {
-+            fail("SingleMemberDoubleOvrdDef " + e + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberBooleanOvrdDef(AnnotatedElement e) {
-+        checkSingleMemberBooleanOvrdDef(e.getAnnotation(SingleMemberBooleanWithDef.class), e);
-+    }
-+    static void checkSingleMemberBooleanOvrdDef(SingleMemberBooleanWithDef a, AnnotatedElement e) {
-+        numTests++;
-+        try {
-+            if (!a.value()) fail("SingleMemberBooleanOvrdDef " + e + " = " + a.value());
-+        } catch(Throwable t) {
-+            fail("SingleMemberBooleanOvrdDef " + e + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberStringOvrdDef(AnnotatedElement e) {
-+        checkSingleMemberStringOvrdDef(e.getAnnotation(SingleMemberStringWithDef.class), e);
-+    }
-+    static void checkSingleMemberStringOvrdDef(SingleMemberStringWithDef a, AnnotatedElement e) {
-+        numTests++;
-+        try {
-+            if (!(a.value().equals("custom"))) fail("SingleMemberStringOvrdDef " + e + " = " + a.value());
-+        } catch(Throwable t) {
-+            fail("SingleMemberStringOvrdDef " + e + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberClassOvrdDef(AnnotatedElement e) {
-+        checkSingleMemberClassOvrdDef(e.getAnnotation(SingleMemberClassWithDef.class), e);
-+    }
-+    static void checkSingleMemberClassOvrdDef(SingleMemberClassWithDef a, AnnotatedElement e) {
-+        numTests++;
-+        try {
-+            if (a.value() != Map.class) fail("SingleMemberClassOvrdDef " + e + " = " + a.value());
-+        } catch(Throwable t) {
-+            fail("SingleMemberClassOvrdDef " + e + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberEnumOvrdDef(AnnotatedElement e) {
-+        checkSingleMemberEnumOvrdDef(e.getAnnotation(SingleMemberEnumWithDef.class), e);
-+    }
-+    static void checkSingleMemberEnumOvrdDef(SingleMemberEnumWithDef a, AnnotatedElement e) {
-+        numTests++;
-+        try {
-+            if (a.value() != Stooge.MOE) fail("SingleMemberEnumOvrdDef " + e + " = " + a.value());
-+        } catch(Throwable t) {
-+            fail("SingleMemberEnumOvrdDef " + e + ": " + t);
-+        }
-+    }
-+
-+    // Single-member with default (Accept)
-+
-+    static void checkSingleMemberByteAcceptDef(AnnotatedElement e) {
-+        checkSingleMemberByteAcceptDef(e.getAnnotation(SingleMemberByteWithDef.class), e);
-+    }
-+    static void checkSingleMemberByteAcceptDef(SingleMemberByteWithDef a, AnnotatedElement e) {
-+        numTests++;
-+        try {
-+            if (a.value() != 11) fail("SingleMemberByteAcceptDef " + e + " = " + a.value());
-+        } catch(Throwable t) {
-+            fail("SingleMemberByteAcceptDef " + e + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberShortAcceptDef(AnnotatedElement e) {
-+        checkSingleMemberShortAcceptDef(e.getAnnotation(SingleMemberShortWithDef.class), e);
-+    }
-+    static void checkSingleMemberShortAcceptDef(SingleMemberShortWithDef a, AnnotatedElement e) {
-+        numTests++;
-+        try {
-+            if (a.value() != 12) fail("SingleMemberShortAcceptDef " + e + " = " + a.value());
-+        } catch(Throwable t) {
-+            fail("SingleMemberShortAcceptDef " + e + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberIntAcceptDef(AnnotatedElement e) {
-+        checkSingleMemberIntAcceptDef(e.getAnnotation(SingleMemberIntWithDef.class), e);
-+    }
-+    static void checkSingleMemberIntAcceptDef(SingleMemberIntWithDef a, AnnotatedElement e) {
-+        numTests++;
-+        try {
-+            if (a.value() != 13) fail("SingleMemberIntAcceptDef " + e + " = " + a.value());
-+        } catch(Throwable t) {
-+            fail("SingleMemberIntAcceptDef " + e + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberLongAcceptDef(AnnotatedElement e) {
-+        checkSingleMemberLongAcceptDef(e.getAnnotation(SingleMemberLongWithDef.class), e);
-+    }
-+    static void checkSingleMemberLongAcceptDef(SingleMemberLongWithDef a, AnnotatedElement e) {
-+        numTests++;
-+        try {
-+            if (a.value() != 14L) fail("SingleMemberLongAcceptDef " + e + " = " + a.value());
-+        } catch(Throwable t) {
-+            fail("SingleMemberLongAcceptDef " + e + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberCharAcceptDef(AnnotatedElement e) {
-+        checkSingleMemberCharAcceptDef(e.getAnnotation(SingleMemberCharWithDef.class), e);
-+    }
-+    static void checkSingleMemberCharAcceptDef(SingleMemberCharWithDef a, AnnotatedElement e) {
-+        numTests++;
-+        try {
-+            if (a.value() != 'V') fail("SingleMemberCharAcceptDef " + e + " = " + a.value());
-+        } catch(Throwable t) {
-+            fail("SingleMemberCharAcceptDef " + e + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberFloatAcceptDef(AnnotatedElement e) {
-+        checkSingleMemberFloatAcceptDef(e.getAnnotation(SingleMemberFloatWithDef.class), e);
-+    }
-+    static void checkSingleMemberFloatAcceptDef(SingleMemberFloatWithDef a, AnnotatedElement e) {
-+        numTests++;
-+        try {
-+            if (a.value() != 16.0f) fail("SingleMemberFloatAcceptDef " + e + " = " + a.value());
-+        } catch(Throwable t) {
-+            fail("SingleMemberFloatAcceptDef " + e + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberDoubleAcceptDef(AnnotatedElement e) {
-+        checkSingleMemberDoubleAcceptDef(e.getAnnotation(SingleMemberDoubleWithDef.class), e);
-+    }
-+    static void checkSingleMemberDoubleAcceptDef(SingleMemberDoubleWithDef a, AnnotatedElement e) {
-+        numTests++;
-+        try {
-+            if (a.value() != 17.0) fail("SingleMemberDoubleAcceptDef " + e + " = " + a.value());
-+        } catch(Throwable t) {
-+            fail("SingleMemberDoubleAcceptDef " + e + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberBooleanAcceptDef(AnnotatedElement e) {
-+        checkSingleMemberBooleanAcceptDef(e.getAnnotation(SingleMemberBooleanWithDef.class), e);
-+    }
-+    static void checkSingleMemberBooleanAcceptDef(SingleMemberBooleanWithDef a, AnnotatedElement e) {
-+        numTests++;
-+        try {
-+            if (a.value()) fail("SingleMemberBooleanAcceptDef " + e + " = " + a.value());
-+        } catch(Throwable t) {
-+            fail("SingleMemberBooleanAcceptDef " + e + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberStringAcceptDef(AnnotatedElement e) {
-+        checkSingleMemberStringAcceptDef(e.getAnnotation(SingleMemberStringWithDef.class), e);
-+    }
-+    static void checkSingleMemberStringAcceptDef(SingleMemberStringWithDef a, AnnotatedElement e) {
-+        numTests++;
-+        try {
-+            if (!(a.value().equals("default"))) fail("SingleMemberStringAcceptDef " + e + " = " + a.value());
-+        } catch(Throwable t) {
-+            fail("SingleMemberStringAcceptDef " + e + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberClassAcceptDef(AnnotatedElement e) {
-+        checkSingleMemberClassAcceptDef(e.getAnnotation(SingleMemberClassWithDef.class), e);
-+    }
-+    static void checkSingleMemberClassAcceptDef(SingleMemberClassWithDef a, AnnotatedElement e) {
-+        numTests++;
-+        try {
-+            if (a.value() != Class.class) fail("SingleMemberClassAcceptDef " + e + " = " + a.value());
-+        } catch(Throwable t) {
-+            fail("SingleMemberClassAcceptDef " + e + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberEnumAcceptDef(AnnotatedElement e) {
-+        checkSingleMemberEnumAcceptDef(e.getAnnotation(SingleMemberEnumWithDef.class), e);
-+    }
-+    static void checkSingleMemberEnumAcceptDef(SingleMemberEnumWithDef a, AnnotatedElement e) {
-+        numTests++;
-+        try {
-+            if (a.value() != Stooge.LARRY) fail("SingleMemberEnumAcceptDef " + e + " = " + a.value());
-+        } catch(Throwable t) {
-+            fail("SingleMemberEnumAcceptDef " + e + ": " + t);
-+        }
-+    }
-+
-+    // Single member array (empty array)
-+    static void checkSingleMemberByteArrEmpty(AnnotatedElement e) {
-+        checkSingleMemberByteArrEmpty(e.getAnnotation(SingleMemberByteArray.class), e);
-+    }
-+    static void checkSingleMemberByteArrEmpty(SingleMemberByteArray a, AnnotatedElement e) {
-+        numTests++;
-+        try {
-+            if (a.value().length != 0) fail("SingleMemberByteArrEmpty " + e + " = " + a.value());
-+        } catch(Throwable t) {
-+            fail("SingleMemberByteArrEmpty " + e + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberShortArrEmpty(AnnotatedElement e) {
-+        checkSingleMemberShortArrEmpty(e.getAnnotation(SingleMemberShortArray.class), e);
-+    }
-+    static void checkSingleMemberShortArrEmpty(SingleMemberShortArray a, AnnotatedElement e) {
-+        numTests++;
-+        try {
-+            if (a.value().length != 0) fail("SingleMemberShortArrEmpty " + e + " = " + a.value());
-+        } catch(Throwable t) {
-+            fail("SingleMemberShortArrEmpty " + e + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberIntArrEmpty(AnnotatedElement e) {
-+        checkSingleMemberIntArrEmpty(e.getAnnotation(SingleMemberIntArray.class), e);
-+    }
-+    static void checkSingleMemberIntArrEmpty(SingleMemberIntArray a, AnnotatedElement e) {
-+        numTests++;
-+        try {
-+            if (a.value().length != 0) fail("SingleMemberIntArrEmpty " + e + " = " + a.value());
-+        } catch(Throwable t) {
-+            fail("SingleMemberIntArrEmpty " + e + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberLongArrEmpty(AnnotatedElement e) {
-+        checkSingleMemberLongArrEmpty(e.getAnnotation(SingleMemberLongArray.class), e);
-+    }
-+    static void checkSingleMemberLongArrEmpty(SingleMemberLongArray a, AnnotatedElement e) {
-+        numTests++;
-+        try {
-+            if (a.value().length != 0) fail("SingleMemberLongArrEmpty " + e + " = " + a.value());
-+        } catch(Throwable t) {
-+            fail("SingleMemberLongArrEmpty " + e + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberCharArrEmpty(AnnotatedElement e) {
-+        checkSingleMemberCharArrEmpty(e.getAnnotation(SingleMemberCharArray.class), e);
-+    }
-+    static void checkSingleMemberCharArrEmpty(SingleMemberCharArray a, AnnotatedElement e) {
-+        numTests++;
-+        try {
-+            if (a.value().length != 0) fail("SingleMemberCharArrEmpty " + e + " = " + a.value());
-+        } catch(Throwable t) {
-+            fail("SingleMemberCharArrEmpty " + e + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberFloatArrEmpty(AnnotatedElement e) {
-+        checkSingleMemberFloatArrEmpty(e.getAnnotation(SingleMemberFloatArray.class), e);
-+    }
-+    static void checkSingleMemberFloatArrEmpty(SingleMemberFloatArray a, AnnotatedElement e) {
-+        numTests++;
-+        try {
-+            if (a.value().length != 0) fail("SingleMemberFloatArrEmpty " + e + " = " + a.value());
-+        } catch(Throwable t) {
-+            fail("SingleMemberFloatArrEmpty " + e + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberDoubleArrEmpty(AnnotatedElement e) {
-+        checkSingleMemberDoubleArrEmpty(e.getAnnotation(SingleMemberDoubleArray.class), e);
-+    }
-+    static void checkSingleMemberDoubleArrEmpty(SingleMemberDoubleArray a, AnnotatedElement e) {
-+        numTests++;
-+        try {
-+            if (a.value().length != 0) fail("SingleMemberDoubleArrEmpty " + e + " = " + a.value());
-+        } catch(Throwable t) {
-+            fail("SingleMemberDoubleArrEmpty " + e + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberBooleanArrEmpty(AnnotatedElement e) {
-+        checkSingleMemberBooleanArrEmpty(e.getAnnotation(SingleMemberBooleanArray.class), e);
-+    }
-+    static void checkSingleMemberBooleanArrEmpty(SingleMemberBooleanArray a, AnnotatedElement e) {
-+        numTests++;
-+        try {
-+            if (a.value().length != 0) fail("SingleMemberBooleanArrEmpty " + e + " = " + a.value());
-+        } catch(Throwable t) {
-+            fail("SingleMemberBooleanArrEmpty " + e + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberStringArrEmpty(AnnotatedElement e) {
-+        checkSingleMemberStringArrEmpty(e.getAnnotation(SingleMemberStringArray.class), e);
-+    }
-+    static void checkSingleMemberStringArrEmpty(SingleMemberStringArray a, AnnotatedElement e) {
-+        numTests++;
-+        try {
-+            if (a.value().length != 0) fail("SingleMemberStringArrEmpty " + e + " = " + a.value());
-+        } catch(Throwable t) {
-+            fail("SingleMemberStringArrEmpty " + e + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberClassArrEmpty(AnnotatedElement e) {
-+        checkSingleMemberClassArrEmpty(e.getAnnotation(SingleMemberClassArray.class), e);
-+    }
-+    static void checkSingleMemberClassArrEmpty(SingleMemberClassArray a, AnnotatedElement e) {
-+        numTests++;
-+        try {
-+            if (a.value().length != 0) fail("SingleMemberClassArrEmpty " + e + " = " + a.value());
-+        } catch(Throwable t) {
-+            fail("SingleMemberClassArrEmpty " + e + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberEnumArrEmpty(AnnotatedElement e) {
-+        checkSingleMemberEnumArrEmpty(e.getAnnotation(SingleMemberEnumArray.class), e);
-+    }
-+    static void checkSingleMemberEnumArrEmpty(SingleMemberEnumArray a, AnnotatedElement e) {
-+        numTests++;
-+        try {
-+            if (a.value().length != 0) fail("SingleMemberEnumArrEmpty " + e + " = " + a.value());
-+        } catch(Throwable t) {
-+            fail("SingleMemberEnumArrEmpty " + e + ": " + t);
-+        }
-+    }
-+
-+    // Single member array (one element array)
-+    static void checkSingleMemberByteArrOne(AnnotatedElement e) {
-+        checkSingleMemberByteArrOne(e.getAnnotation(SingleMemberByteArray.class), e);
-+    }
-+    static void checkSingleMemberByteArrOne(SingleMemberByteArray a, AnnotatedElement e) {
-+        numTests++;
-+        try {
-+            if (a.value().length != 1 || a.value()[0] != (byte)1)
-+                fail("SingleMemberByteArrOne " + e + " = " + a.value());
-+        } catch(Throwable t) {
-+            fail("SingleMemberByteArrOne " + e + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberShortArrOne(AnnotatedElement e) {
-+        checkSingleMemberShortArrOne(e.getAnnotation(SingleMemberShortArray.class), e);
-+    }
-+    static void checkSingleMemberShortArrOne(SingleMemberShortArray a, AnnotatedElement e) {
-+        numTests++;
-+        try {
-+            if (a.value().length != 1 || a.value()[0] != (short)2)
-+                fail("SingleMemberShortArrOne " + e + " = " + a.value());
-+        } catch(Throwable t) {
-+            fail("SingleMemberShortArrOne " + e + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberIntArrOne(AnnotatedElement e) {
-+        checkSingleMemberIntArrOne(e.getAnnotation(SingleMemberIntArray.class), e);
-+    }
-+    static void checkSingleMemberIntArrOne(SingleMemberIntArray a, AnnotatedElement e) {
-+        numTests++;
-+        try {
-+            if (a.value().length != 1 || a.value()[0] != 3)
-+                fail("SingleMemberIntArrOne " + e + " = " + a.value());
-+        } catch(Throwable t) {
-+            fail("SingleMemberIntArrOne " + e + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberLongArrOne(AnnotatedElement e) {
-+        checkSingleMemberLongArrOne(e.getAnnotation(SingleMemberLongArray.class), e);
-+    }
-+    static void checkSingleMemberLongArrOne(SingleMemberLongArray a, AnnotatedElement e) {
-+        numTests++;
-+        try {
-+            if (a.value().length != 1 || a.value()[0] != 4L)
-+                fail("SingleMemberLongArrOne " + e + " = " + a.value());
-+        } catch(Throwable t) {
-+            fail("SingleMemberLongArrOne " + e + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberCharArrOne(AnnotatedElement e) {
-+        checkSingleMemberCharArrOne(e.getAnnotation(SingleMemberCharArray.class), e);
-+    }
-+    static void checkSingleMemberCharArrOne(SingleMemberCharArray a, AnnotatedElement e) {
-+        numTests++;
-+        try {
-+            if (a.value().length != 1 || a.value()[0] != '5')
-+                fail("SingleMemberCharArrOne " + e + " = " + a.value());
-+        } catch(Throwable t) {
-+            fail("SingleMemberCharArrOne " + e + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberFloatArrOne(AnnotatedElement e) {
-+        checkSingleMemberFloatArrOne(e.getAnnotation(SingleMemberFloatArray.class), e);
-+    }
-+    static void checkSingleMemberFloatArrOne(SingleMemberFloatArray a, AnnotatedElement e) {
-+        numTests++;
-+        try {
-+            if (a.value().length != 1 || a.value()[0] != 6.0f)
-+                fail("SingleMemberFloatArrOne " + e + " = " + a.value());
-+        } catch(Throwable t) {
-+            fail("SingleMemberFloatArrOne " + e + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberDoubleArrOne(AnnotatedElement e) {
-+        checkSingleMemberDoubleArrOne(e.getAnnotation(SingleMemberDoubleArray.class), e);
-+    }
-+    static void checkSingleMemberDoubleArrOne(SingleMemberDoubleArray a, AnnotatedElement e) {
-+        numTests++;
-+        try {
-+            if (a.value().length != 1 || a.value()[0] != 7.0)
-+                fail("SingleMemberDoubleArrOne " + e + " = " + a.value());
-+        } catch(Throwable t) {
-+            fail("SingleMemberDoubleArrOne " + e + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberBooleanArrOne(AnnotatedElement e) {
-+        checkSingleMemberBooleanArrOne(e.getAnnotation(SingleMemberBooleanArray.class), e);
-+    }
-+    static void checkSingleMemberBooleanArrOne(SingleMemberBooleanArray a, AnnotatedElement e) {
-+        numTests++;
-+        try {
-+            if (a.value().length != 1 || !a.value()[0])
-+                fail("SingleMemberBooleanArrOne " + e + " = " + a.value());
-+        } catch(Throwable t) {
-+            fail("SingleMemberBooleanArrOne " + e + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberStringArrOne(AnnotatedElement e) {
-+        checkSingleMemberStringArrOne(e.getAnnotation(SingleMemberStringArray.class), e);
-+    }
-+    static void checkSingleMemberStringArrOne(SingleMemberStringArray a, AnnotatedElement e) {
-+        numTests++;
-+        try {
-+            if (a.value().length != 1 || !(a.value()[0].equals("custom")))
-+                fail("SingleMemberStringArrOne " + e + " = " + a.value());
-+        } catch(Throwable t) {
-+            fail("SingleMemberStringArrOne " + e + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberClassArrOne(AnnotatedElement e) {
-+        checkSingleMemberClassArrOne(e.getAnnotation(SingleMemberClassArray.class), e);
-+    }
-+    static void checkSingleMemberClassArrOne(SingleMemberClassArray a, AnnotatedElement e) {
-+        numTests++;
-+        try {
-+            if (a.value().length != 1 || a.value()[0] != Map.class)
-+                fail("SingleMemberClassArrOne " + e + " = " + a.value());
-+        } catch(Throwable t) {
-+            fail("SingleMemberClassArrOne " + e + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberEnumArrOne(AnnotatedElement e) {
-+        checkSingleMemberEnumArrOne(e.getAnnotation(SingleMemberEnumArray.class), e);
-+    }
-+    static void checkSingleMemberEnumArrOne(SingleMemberEnumArray a, AnnotatedElement e) {
-+        numTests++;
-+        try {
-+            if (a.value().length != 1 || a.value()[0] != Stooge.MOE)
-+                fail("SingleMemberEnumArrOne " + e + " = " + a.value());
-+        } catch(Throwable t) {
-+            fail("SingleMemberEnumArrOne " + e + ": " + t);
-+        }
-+    }
-+
-+    // Single member array (two element array)
-+    static void checkSingleMemberByteArrTwo(AnnotatedElement e) {
-+        checkSingleMemberByteArrTwo(e.getAnnotation(SingleMemberByteArray.class), e);
-+    }
-+    static void checkSingleMemberByteArrTwo(SingleMemberByteArray a, AnnotatedElement e) {
-+        numTests++;
-+        try {
-+            if (a.value().length != 2 || a.value()[0] != (byte)1 || a.value()[1] != (byte)2)
-+                fail("SingleMemberByteArrTwo " + e + " = " + a.value());
-+        } catch(Throwable t) {
-+            fail("SingleMemberByteArrTwo " + e + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberShortArrTwo(AnnotatedElement e) {
-+        checkSingleMemberShortArrTwo(e.getAnnotation(SingleMemberShortArray.class), e);
-+    }
-+    static void checkSingleMemberShortArrTwo(SingleMemberShortArray a, AnnotatedElement e) {
-+        numTests++;
-+        try {
-+            if (a.value().length != 2 || a.value()[0] != (short)2 || a.value()[1] != (short)3)
-+                fail("SingleMemberShortArrTwo " + e + " = " + a.value());
-+        } catch(Throwable t) {
-+            fail("SingleMemberShortArrTwo " + e + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberIntArrTwo(AnnotatedElement e) {
-+        checkSingleMemberIntArrTwo(e.getAnnotation(SingleMemberIntArray.class), e);
-+    }
-+    static void checkSingleMemberIntArrTwo(SingleMemberIntArray a, AnnotatedElement e) {
-+        numTests++;
-+        try {
-+            if (a.value().length != 2 || a.value()[0] != 3 || a.value()[1] != 4)
-+                fail("SingleMemberIntArrTwo " + e + " = " + a.value());
-+        } catch(Throwable t) {
-+            fail("SingleMemberIntArrTwo " + e + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberLongArrTwo(AnnotatedElement e) {
-+        checkSingleMemberLongArrTwo(e.getAnnotation(SingleMemberLongArray.class), e);
-+    }
-+    static void checkSingleMemberLongArrTwo(SingleMemberLongArray a, AnnotatedElement e) {
-+        numTests++;
-+        try {
-+            if (a.value().length != 2 || a.value()[0] != 4L || a.value()[1] != 5L)
-+                fail("SingleMemberLongArrTwo " + e + " = " + a.value());
-+        } catch(Throwable t) {
-+            fail("SingleMemberLongArrTwo " + e + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberCharArrTwo(AnnotatedElement e) {
-+        checkSingleMemberCharArrTwo(e.getAnnotation(SingleMemberCharArray.class), e);
-+    }
-+    static void checkSingleMemberCharArrTwo(SingleMemberCharArray a, AnnotatedElement e) {
-+        numTests++;
-+        try {
-+            if (a.value().length != 2 || a.value()[0] != '5' || a.value()[1] != '6')
-+                fail("SingleMemberCharArrTwo " + e + " = " + a.value());
-+        } catch(Throwable t) {
-+            fail("SingleMemberCharArrTwo " + e + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberFloatArrTwo(AnnotatedElement e) {
-+        checkSingleMemberFloatArrTwo(e.getAnnotation(SingleMemberFloatArray.class), e);
-+    }
-+    static void checkSingleMemberFloatArrTwo(SingleMemberFloatArray a, AnnotatedElement e) {
-+        numTests++;
-+        try {
-+            if (a.value().length != 2 || a.value()[0] != 6.0f || a.value()[1] != 7.0f)
-+                fail("SingleMemberFloatArrTwo " + e + " = " + a.value());
-+        } catch(Throwable t) {
-+            fail("SingleMemberFloatArrTwo " + e + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberDoubleArrTwo(AnnotatedElement e) {
-+        checkSingleMemberDoubleArrTwo(e.getAnnotation(SingleMemberDoubleArray.class), e);
-+    }
-+    static void checkSingleMemberDoubleArrTwo(SingleMemberDoubleArray a, AnnotatedElement e) {
-+        numTests++;
-+        try {
-+            if (a.value().length != 2 || a.value()[0] != 7.0 || a.value()[1] != 8.0)
-+                fail("SingleMemberDoubleArrTwo " + e + " = " + a.value());
-+        } catch(Throwable t) {
-+            fail("SingleMemberDoubleArrTwo " + e + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberBooleanArrTwo(AnnotatedElement e) {
-+        checkSingleMemberBooleanArrTwo(e.getAnnotation(SingleMemberBooleanArray.class), e);
-+    }
-+    static void checkSingleMemberBooleanArrTwo(SingleMemberBooleanArray a, AnnotatedElement e) {
-+        numTests++;
-+        try {
-+            if (a.value().length != 2 || !a.value()[0] || a.value()[1])
-+                fail("SingleMemberBooleanArrTwo " + e + " = " + a.value());
-+        } catch(Throwable t) {
-+            fail("SingleMemberBooleanArrTwo " + e + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberStringArrTwo(AnnotatedElement e) {
-+        checkSingleMemberStringArrTwo(e.getAnnotation(SingleMemberStringArray.class), e);
-+    }
-+    static void checkSingleMemberStringArrTwo(SingleMemberStringArray a, AnnotatedElement e) {
-+        numTests++;
-+        try {
-+            if (a.value().length != 2 || !(a.value()[0].equals("custom")) || !(a.value()[1].equals("paint")))
-+                fail("SingleMemberStringArrTwo " + e + " = " + a.value());
-+        } catch(Throwable t) {
-+            fail("SingleMemberStringArrTwo " + e + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberClassArrTwo(AnnotatedElement e) {
-+        checkSingleMemberClassArrTwo(e.getAnnotation(SingleMemberClassArray.class), e);
-+    }
-+    static void checkSingleMemberClassArrTwo(SingleMemberClassArray a, AnnotatedElement e) {
-+        numTests++;
-+        try {
-+            if (a.value().length != 2 || a.value()[0] != Map.class || a.value()[1] != Set.class)
-+                fail("SingleMemberClassArrTwo " + e + " = " + a.value());
-+        } catch(Throwable t) {
-+            fail("SingleMemberClassArrTwo " + e + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberEnumArrTwo(AnnotatedElement e) {
-+        checkSingleMemberEnumArrTwo(e.getAnnotation(SingleMemberEnumArray.class), e);
-+    }
-+    static void checkSingleMemberEnumArrTwo(SingleMemberEnumArray a, AnnotatedElement e) {
-+        numTests++;
-+        try {
-+            if (a.value().length != 2 || a.value()[0] != Stooge.MOE || a.value()[1] != Stooge.CURLY)
-+                fail("SingleMemberEnumArrTwo " + e + " = " + a.value());
-+        } catch(Throwable t) {
-+            fail("SingleMemberEnumArrTwo " + e + ": " + t);
-+        }
-+    }
-+
-+    // Single member array with default (override)
-+    static void checkSingleMemberByteArrOvrdDef(AnnotatedElement e) {
-+        checkSingleMemberByteArrOvrdDef(e.getAnnotation(SingleMemberByteArrayDef.class), e);
-+    }
-+    static void checkSingleMemberByteArrOvrdDef(SingleMemberByteArrayDef a, AnnotatedElement e) {
-+        numTests++;
-+        try {
-+            if (a.value().length != 1 || a.value()[0] != (byte)1)
-+                fail("SingleMemberByteArrOvrdDef " + e + " = " + a.value());
-+        } catch(Throwable t) {
-+            fail("SingleMemberByteArrOvrdDef " + e + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberShortArrOvrdDef(AnnotatedElement e) {
-+        checkSingleMemberShortArrOvrdDef(e.getAnnotation(SingleMemberShortArrayDef.class), e);
-+    }
-+    static void checkSingleMemberShortArrOvrdDef(SingleMemberShortArrayDef a, AnnotatedElement e) {
-+        numTests++;
-+        try {
-+            if (a.value().length != 1 || a.value()[0] != (short)2)
-+                fail("SingleMemberShortArrOvrdDef " + e + " = " + a.value());
-+        } catch(Throwable t) {
-+            fail("SingleMemberShortArrOvrdDef " + e + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberIntArrOvrdDef(AnnotatedElement e) {
-+        checkSingleMemberIntArrOvrdDef(e.getAnnotation(SingleMemberIntArrayDef.class), e);
-+    }
-+    static void checkSingleMemberIntArrOvrdDef(SingleMemberIntArrayDef a, AnnotatedElement e) {
-+        numTests++;
-+        try {
-+            if (a.value().length != 1 || a.value()[0] != 3)
-+                fail("SingleMemberIntArrOvrdDef " + e + " = " + a.value());
-+        } catch(Throwable t) {
-+            fail("SingleMemberIntArrOvrdDef " + e + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberLongArrOvrdDef(AnnotatedElement e) {
-+        checkSingleMemberLongArrOvrdDef(e.getAnnotation(SingleMemberLongArrayDef.class), e);
-+    }
-+    static void checkSingleMemberLongArrOvrdDef(SingleMemberLongArrayDef a, AnnotatedElement e) {
-+        numTests++;
-+        try {
-+            if (a.value().length != 1 || a.value()[0] != 4L)
-+                fail("SingleMemberLongArrOvrdDef " + e + " = " + a.value());
-+        } catch(Throwable t) {
-+            fail("SingleMemberLongArrOvrdDef " + e + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberCharArrOvrdDef(AnnotatedElement e) {
-+        checkSingleMemberCharArrOvrdDef(e.getAnnotation(SingleMemberCharArrayDef.class), e);
-+    }
-+    static void checkSingleMemberCharArrOvrdDef(SingleMemberCharArrayDef a, AnnotatedElement e) {
-+        numTests++;
-+        try {
-+            if (a.value().length != 1 || a.value()[0] != '5')
-+                fail("SingleMemberCharArrOvrdDef " + e + " = " + a.value());
-+        } catch(Throwable t) {
-+            fail("SingleMemberCharArrOvrdDef " + e + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberFloatArrOvrdDef(AnnotatedElement e) {
-+        checkSingleMemberFloatArrOvrdDef(e.getAnnotation(SingleMemberFloatArrayDef.class), e);
-+    }
-+    static void checkSingleMemberFloatArrOvrdDef(SingleMemberFloatArrayDef a, AnnotatedElement e) {
-+        numTests++;
-+        try {
-+            if (a.value().length != 1 || a.value()[0] != 6.0f)
-+                fail("SingleMemberFloatArrOvrdDef " + e + " = " + a.value());
-+        } catch(Throwable t) {
-+            fail("SingleMemberFloatArrOvrdDef " + e + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberDoubleArrOvrdDef(AnnotatedElement e) {
-+        checkSingleMemberDoubleArrOvrdDef(e.getAnnotation(SingleMemberDoubleArrayDef.class), e);
-+    }
-+    static void checkSingleMemberDoubleArrOvrdDef(SingleMemberDoubleArrayDef a, AnnotatedElement e) {
-+        numTests++;
-+        try {
-+            if (a.value().length != 1 || a.value()[0] != 7.0)
-+                fail("SingleMemberDoubleArrOvrdDef " + e + " = " + a.value());
-+        } catch(Throwable t) {
-+            fail("SingleMemberDoubleArrOvrdDef " + e + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberBooleanArrOvrdDef(AnnotatedElement e) {
-+        checkSingleMemberBooleanArrOvrdDef(e.getAnnotation(SingleMemberBooleanArrayDef.class), e);
-+    }
-+    static void checkSingleMemberBooleanArrOvrdDef(SingleMemberBooleanArrayDef a, AnnotatedElement e) {
-+        numTests++;
-+        try {
-+            if (a.value().length != 1 || !a.value()[0])
-+                fail("SingleMemberBooleanArrOvrdDef " + e + " = " + a.value());
-+        } catch(Throwable t) {
-+            fail("SingleMemberBooleanArrOvrdDef " + e + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberStringArrOvrdDef(AnnotatedElement e) {
-+        checkSingleMemberStringArrOvrdDef(e.getAnnotation(SingleMemberStringArrayDef.class), e);
-+    }
-+    static void checkSingleMemberStringArrOvrdDef(SingleMemberStringArrayDef a, AnnotatedElement e) {
-+        numTests++;
-+        try {
-+            if (a.value().length != 1 || !(a.value()[0].equals("custom")))
-+                fail("SingleMemberStringArrOvrdDef " + e + " = " + a.value());
-+        } catch(Throwable t) {
-+            fail("SingleMemberStringArrOvrdDef " + e + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberClassArrOvrdDef(AnnotatedElement e) {
-+        checkSingleMemberClassArrOvrdDef(e.getAnnotation(SingleMemberClassArrayDef.class), e);
-+    }
-+    static void checkSingleMemberClassArrOvrdDef(SingleMemberClassArrayDef a, AnnotatedElement e) {
-+        numTests++;
-+        try {
-+            if (a.value().length != 1 || a.value()[0] != Map.class)
-+                fail("SingleMemberClassArrOvrdDef " + e + " = " + a.value());
-+        } catch(Throwable t) {
-+            fail("SingleMemberClassArrOvrdDef " + e + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberEnumArrOvrdDef(AnnotatedElement e) {
-+        checkSingleMemberEnumArrOvrdDef(e.getAnnotation(SingleMemberEnumArrayDef.class), e);
-+    }
-+    static void checkSingleMemberEnumArrOvrdDef(SingleMemberEnumArrayDef a, AnnotatedElement e) {
-+        numTests++;
-+        try {
-+            if (a.value().length != 1 || a.value()[0] != Stooge.MOE)
-+                fail("SingleMemberEnumArrOvrdDef " + e + " = " + a.value());
-+        } catch(Throwable t) {
-+            fail("SingleMemberEnumArrOvrdDef " + e + ": " + t);
-+        }
-+    }
-+
-+    // Single member array with default (accept)
-+    static void checkSingleMemberByteArrAcceptDef(AnnotatedElement e) {
-+        checkSingleMemberByteArrAcceptDef(e.getAnnotation(SingleMemberByteArrayDef.class), e);
-+    }
-+    static void checkSingleMemberByteArrAcceptDef(SingleMemberByteArrayDef a, AnnotatedElement e) {
-+        numTests++;
-+        try {
-+            if (a.value().length != 1 || a.value()[0] != (byte)11)
-+                fail("SingleMemberByteArrAcceptDef " + e + " = " + a.value());
-+        } catch(Throwable t) {
-+            fail("SingleMemberByteArrAcceptDef " + e + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberShortArrAcceptDef(AnnotatedElement e) {
-+        checkSingleMemberShortArrAcceptDef(e.getAnnotation(SingleMemberShortArrayDef.class), e);
-+    }
-+    static void checkSingleMemberShortArrAcceptDef(SingleMemberShortArrayDef a, AnnotatedElement e) {
-+        numTests++;
-+        try {
-+            if (a.value().length != 1 || a.value()[0] != (short)12)
-+                fail("SingleMemberShortArrAcceptDef " + e + " = " + a.value());
-+        } catch(Throwable t) {
-+            fail("SingleMemberShortArrAcceptDef " + e + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberIntArrAcceptDef(AnnotatedElement e) {
-+        checkSingleMemberIntArrAcceptDef(e.getAnnotation(SingleMemberIntArrayDef.class), e);
-+    }
-+    static void checkSingleMemberIntArrAcceptDef(SingleMemberIntArrayDef a, AnnotatedElement e) {
-+        numTests++;
-+        try {
-+            if (a.value().length != 1 || a.value()[0] != 13)
-+                fail("SingleMemberIntArrAcceptDef " + e + " = " + a.value());
-+        } catch(Throwable t) {
-+            fail("SingleMemberIntArrAcceptDef " + e + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberLongArrAcceptDef(AnnotatedElement e) {
-+        checkSingleMemberLongArrAcceptDef(e.getAnnotation(SingleMemberLongArrayDef.class), e);
-+    }
-+    static void checkSingleMemberLongArrAcceptDef(SingleMemberLongArrayDef a, AnnotatedElement e) {
-+        numTests++;
-+        try {
-+            if (a.value().length != 1 || a.value()[0] != 14L)
-+                fail("SingleMemberLongArrAcceptDef " + e + " = " + a.value());
-+        } catch(Throwable t) {
-+            fail("SingleMemberLongArrAcceptDef " + e + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberCharArrAcceptDef(AnnotatedElement e) {
-+        checkSingleMemberCharArrAcceptDef(e.getAnnotation(SingleMemberCharArrayDef.class), e);
-+    }
-+    static void checkSingleMemberCharArrAcceptDef(SingleMemberCharArrayDef a, AnnotatedElement e) {
-+        numTests++;
-+        try {
-+            if (a.value().length != 1 || a.value()[0] != 'V')
-+                fail("SingleMemberCharArrAcceptDef " + e + " = " + a.value());
-+        } catch(Throwable t) {
-+            fail("SingleMemberCharArrAcceptDef " + e + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberFloatArrAcceptDef(AnnotatedElement e) {
-+        checkSingleMemberFloatArrAcceptDef(e.getAnnotation(SingleMemberFloatArrayDef.class), e);
-+    }
-+    static void checkSingleMemberFloatArrAcceptDef(SingleMemberFloatArrayDef a, AnnotatedElement e) {
-+        numTests++;
-+        try {
-+            if (a.value().length != 1 || a.value()[0] != 16.0f)
-+                fail("SingleMemberFloatArrAcceptDef " + e + " = " + a.value());
-+        } catch(Throwable t) {
-+            fail("SingleMemberFloatArrAcceptDef " + e + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberDoubleArrAcceptDef(AnnotatedElement e) {
-+        checkSingleMemberDoubleArrAcceptDef(e.getAnnotation(SingleMemberDoubleArrayDef.class), e);
-+    }
-+    static void checkSingleMemberDoubleArrAcceptDef(SingleMemberDoubleArrayDef a, AnnotatedElement e) {
-+        numTests++;
-+        try {
-+            if (a.value().length != 1 || a.value()[0] != 17.0)
-+                fail("SingleMemberDoubleArrAcceptDef " + e + " = " + a.value());
-+        } catch(Throwable t) {
-+            fail("SingleMemberDoubleArrAcceptDef " + e + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberBooleanArrAcceptDef(AnnotatedElement e) {
-+        checkSingleMemberBooleanArrAcceptDef(e.getAnnotation(SingleMemberBooleanArrayDef.class), e);
-+    }
-+    static void checkSingleMemberBooleanArrAcceptDef(SingleMemberBooleanArrayDef a, AnnotatedElement e) {
-+        numTests++;
-+        try {
-+            if (a.value().length != 1 || a.value()[0])
-+                fail("SingleMemberBooleanArrAcceptDef " + e + " = " + a.value());
-+        } catch(Throwable t) {
-+            fail("SingleMemberBooleanArrAcceptDef " + e + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberStringArrAcceptDef(AnnotatedElement e) {
-+        checkSingleMemberStringArrAcceptDef(e.getAnnotation(SingleMemberStringArrayDef.class), e);
-+    }
-+    static void checkSingleMemberStringArrAcceptDef(SingleMemberStringArrayDef a, AnnotatedElement e) {
-+        numTests++;
-+        try {
-+            if (a.value().length != 1 || !(a.value()[0].equals("default")))
-+                fail("SingleMemberStringArrAcceptDef " + e + " = " + a.value());
-+        } catch(Throwable t) {
-+            fail("SingleMemberStringArrAcceptDef " + e + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberClassArrAcceptDef(AnnotatedElement e) {
-+        checkSingleMemberClassArrAcceptDef(e.getAnnotation(SingleMemberClassArrayDef.class), e);
-+    }
-+    static void checkSingleMemberClassArrAcceptDef(SingleMemberClassArrayDef a, AnnotatedElement e) {
-+        numTests++;
-+        try {
-+            if (a.value().length != 1 || a.value()[0] != Class.class)
-+                fail("SingleMemberClassArrAcceptDef " + e + " = " + a.value());
-+        } catch(Throwable t) {
-+            fail("SingleMemberClassArrAcceptDef " + e + ": " + t);
-+        }
-+    }
-+
-+    static void checkSingleMemberEnumArrAcceptDef(AnnotatedElement e) {
-+        checkSingleMemberEnumArrAcceptDef(e.getAnnotation(SingleMemberEnumArrayDef.class), e);
-+    }
-+    static void checkSingleMemberEnumArrAcceptDef(SingleMemberEnumArrayDef a, AnnotatedElement e) {
-+        numTests++;
-+        try {
-+            if (a.value().length != 1 || a.value()[0] != Stooge.LARRY)
-+                fail("SingleMemberEnumArrAcceptDef " + e + " = " + a.value());
-+        } catch(Throwable t) {
-+            fail("SingleMemberEnumArrAcceptDef " + e + ": " + t);
-+        }
-+    }
-+
-+    // Verfification methods for equals/hashCode/serialization
-+
-+    static <T extends Annotation> void checkEquals(AnnotatedElement e1, AnnotatedElement e2, Class<T> annoType) {
-+        numTests++;
-+        T a1 = e1.getAnnotation(annoType);
-+        T a2 = e2.getAnnotation(annoType);
-+        try {
-+            if (!a1.equals(a2))
-+                fail(a1 + " != " + a2);
-+            if (a1.hashCode() != a2.hashCode())
-+                fail(a1 + ".hashCode() [" + a1.hashCode() + "] != " + a2 + " .hashCode()["+ a2.hashCode()+"]");
-+            if (!(a1.toString().equals(a2.toString())))
-+                fail(a1 + ".toString() != " + a2 + ".toString()");
-+        } catch(Throwable t) {
-+            fail(a1 + " == " + a2 + ": " + t);
-+        }
-+    }
-+
-+    static <T extends Annotation> void checkUnequals(AnnotatedElement e1, AnnotatedElement e2, Class<T> annoType) {
-+        numTests++;
-+        T a1 = e1.getAnnotation(annoType);
-+        T a2 = e2.getAnnotation(annoType);
-+        try {
-+            if (a1.equals(a2))
-+                fail(a1 + " == " + a2);
-+            if (a1.hashCode() == a2.hashCode())
-+                fail(a1 + ".hashCode() [" + a1.hashCode() + "] == " + a2 + " .hashCode()[" + a2.hashCode() + "]");
-+            if (a1.toString().equals(a2.toString()))
-+                fail(a1 + ".toString() == " + a2 + ".toString()");
-+        } catch(Throwable t) {
-+            fail(a1 + " != " + a2 + ": " + t);
-+        }
-+    }
-+
-+    // Verfification method for serialization/deserialization
-+
-+    static <T extends Annotation> void checkSerialization(AnnotatedElement e, Class<T> annoType) {
-+        numTests++;
-+        T a1 = e.getAnnotation(annoType);
-+        Object a2 = deepCopy(a1);
-+        try {
-+            if (!a1.equals(a2))
-+                fail("Serialization: " + a1 + " != " + a2);
-+            if (a1.hashCode() != a2.hashCode())
-+                fail("Serialization: " + a1 + ".hashCode() [" + a1.hashCode() + "] != " + a2 + " .hashCode()["+a2.hashCode()+"]");
-+            if (!(a1.toString().equals(a2.toString())))
-+                fail("Serialization: " + a1 + ".toString() != " + a2 + ".toString()");
-+        } catch(Throwable t) {
-+            fail("Serialization: " + a1 + " == " + a2 + ": " + t);
-+        }
-+    }
-+
-+    private static Object deepCopy(Object original) {
-+        try {
-+            ByteArrayOutputStream bos = new ByteArrayOutputStream();
-+            ObjectOutputStream oos = new ObjectOutputStream(bos);
-+            oos.writeObject(original);
-+            oos.flush();
-+            ByteArrayInputStream bin = new ByteArrayInputStream(
-+                bos.toByteArray());
-+            ObjectInputStream ois = new ObjectInputStream(bin);
-+            return ois.readObject();
-+        } catch(Exception e) {
-+            throw new IllegalArgumentException(e);
-+        }
-+    }
-+
-+    // Verification method for inheritance test
-+    static void checkInheritence(AnnotatedElement e, boolean shouldHaveFoo, boolean shouldHaveBar) {
-+        numTests++;
-+        try {
-+            boolean hasFoo = e.isAnnotationPresent(Foo.class);
-+            boolean hasBar = e.isAnnotationPresent(Bar.class);
-+            if (hasFoo != shouldHaveFoo || hasBar != shouldHaveBar)
-+                fail("Inheritance(1): " + e +" - Foo: " + hasFoo + ", Bar: " + hasBar);
-+
-+            // Now test getAnnotations
-+            hasFoo = hasBar = false;
-+            Annotation[] allAnnotations = e.getAnnotations();
-+            for (Annotation a : allAnnotations) {
-+                if (a instanceof Foo)
-+                    hasFoo = true;
-+                else if (a instanceof Bar)
-+                    hasBar = true;
-+            }
-+            if (hasFoo != shouldHaveFoo ||hasBar != shouldHaveBar)
-+                fail("Inheritance(2): " + e +" - Foo: " + hasFoo + ", Bar: " + hasBar);
-+        } catch(Throwable t) {
-+            fail("Inheritance: " + e +": " + t);
-+        }
-+    }
-+
-+    // Verification method for declared annotations test
-+    static void checkDeclaredAnnotations(AnnotatedElement e, boolean shouldHaveFoo, boolean shouldHaveBar) {
-+        numTests++;
-+        try {
-+            boolean hasFoo = false;
-+            boolean hasBar = false;
-+            Annotation[] declaredAnnotations = e.getDeclaredAnnotations();
-+            for (Annotation a : declaredAnnotations) {
-+                if (a instanceof Foo)
-+                    hasFoo = true;
-+                else if (a instanceof Bar)
-+                    hasBar = true;
-+            }
-+            if (hasFoo != shouldHaveFoo ||hasBar != shouldHaveBar)
-+                fail("Declared annotations: " + e +" - Foo: " + hasFoo + ", Bar: " + hasBar);
-+        } catch(Throwable t) {
-+            fail("Declared annotations: " + e +": " + t);
-+        }
-+    }
-+
-+
-+    // ANNOTATED METHODS
-+
-+    @ScalarTypes (
-+        b =    1,
-+        s =    2,
-+        i =    3,
-+        l =    4L,
-+        c =    '5',
-+        f =    6.0f,
-+        d =    7.0,
-+        bool = true,
-+        str =  "custom",
-+        cls =  Map.class,
-+        e =    Stooge.MOE,
-+        a =    @Point(x = 1, y = 2)
-+    )
-+    public void scalarTypesMethod() { }
-+
-+    @ScalarTypesWithDefault ( )
-+    public void scalarTypesAcceptDefaultMethod() { }
-+
-+    @ScalarTypesWithDefault (
-+        b =    1,
-+        s =    2,
-+        i =    3,
-+        l =    4L,
-+        c =    '5',
-+        f =    6.0f,
-+        d =    7.0,
-+        bool = true,
-+        str =  "custom",
-+        cls =  Map.class,
-+        e =    Stooge.MOE
-+    )
-+    public void scalarTypesOverrideDefaultMethod() { }
-+
-+    @ArrayTypes (
-+        b =    { },
-+        s =    { },
-+        i =    { },
-+        l =    { },
-+        c =    { },
-+        f =    { },
-+        d =    { },
-+        bool = { },
-+        str =  { },
-+        cls =  { },
-+        e =    { },
-+        a =    { }
-+    )
-+    public void emptyArrayTypesMethod() { }
-+
-+    @ArrayTypes (
-+        b =    1,
-+        s =    2,
-+        i =    3,
-+        l =    4L,
-+        c =    '5',
-+        f =    6.0f,
-+        d =    7.0,
-+        bool = true,
-+        str =  "custom",
-+        cls =  Map.class,
-+        e =    Stooge.MOE,
-+        a =    { @Point(x = 1, y = 2) }
-+    )
-+    public void singleElementArrayTypesMethod() { }
-+
-+    @ArrayTypes (
-+        b =    { 1, 2 },
-+        s =    { 2, 3 },
-+        i =    { 3, 4 },
-+        l =    { 4L, 5L },
-+        c =    { '5', '6' },
-+        f =    { 6.0f, 7.0f },
-+        d =    { 7.0, 8.0 },
-+        bool = { true, false },
-+        str =  { "custom", "paint" },
-+        cls =  { Map.class, Set.class },
-+        e =    { Stooge.MOE, Stooge.CURLY },
-+        a =    { @Point(x = 1, y = 2),  @Point(x = 3, y = 4) }
-+    )
-+    public void twoElementArrayTypesMethod() { }
-+
-+    @ArrayTypesWithDefault (
-+    )
-+    public void arrayTypesAcceptDefaultMethod() { }
-+
-+    @ArrayTypesWithDefault (
-+        b =    1,
-+        s =    2,
-+        i =    3,
-+        l =    4L,
-+        c =    '5',
-+        f =    6.0f,
-+        d =    7.0,
-+        bool = true,
-+        str =  "custom",
-+        cls =  Map.class,
-+        e =    Stooge.MOE,
-+        a =    { @Point(x = 1, y = 2) }
-+    )
-+    public void arrayTypesOverrideDefaultMethod() { }
-+
-+    // Marker
-+    @Marker public void markerMethod() { }
-+
-+    // Single-member (shorthand)
-+    @SingleMemberByte(1)          public void SingleMemberByte()    {}
-+    @SingleMemberShort(2)         public void SingleMemberShort()   {}
-+    @SingleMemberInt(3)           public void SingleMemberInt()     {}
-+    @SingleMemberLong(4L)         public void SingleMemberLong()    {}
-+    @SingleMemberChar('5')        public void SingleMemberChar()    {}
-+    @SingleMemberFloat(6.0f)      public void SingleMemberFloat()   {}
-+    @SingleMemberDouble(7.0)      public void SingleMemberDouble()  {}
-+    @SingleMemberBoolean(true)    public void SingleMemberBoolean() {}
-+    @SingleMemberString("custom") public void SingleMemberString()  {}
-+    @SingleMemberClass(Map.class) public void SingleMemberClass()   {}
-+    @SingleMemberEnum(Stooge.MOE)        public void SingleMemberEnum()    {}
-+
-+    // Single-member with default (Override)
-+    @SingleMemberByteWithDef(1)          public void SingleMemberByteOvrdDef()    {}
-+    @SingleMemberShortWithDef(2)         public void SingleMemberShortOvrdDef()   {}
-+    @SingleMemberIntWithDef(3)           public void SingleMemberIntOvrdDef()     {}
-+    @SingleMemberLongWithDef(4L)         public void SingleMemberLongOvrdDef()    {}
-+    @SingleMemberCharWithDef('5')        public void SingleMemberCharOvrdDef()    {}
-+    @SingleMemberFloatWithDef(6.0f)      public void SingleMemberFloatOvrdDef()   {}
-+    @SingleMemberDoubleWithDef(7.0)      public void SingleMemberDoubleOvrdDef()  {}
-+    @SingleMemberBooleanWithDef(true)    public void SingleMemberBooleanOvrdDef() {}
-+    @SingleMemberStringWithDef("custom") public void SingleMemberStringOvrdDef()  {}
-+    @SingleMemberClassWithDef(Map.class) public void SingleMemberClassOvrdDef()   {}
-+    @SingleMemberEnumWithDef(Stooge.MOE)        public void SingleMemberEnumOvrdDef()    {}
-+
-+    // Single-member with default (Accept)
-+    @SingleMemberByteWithDef    public void SingleMemberByteAcceptDef()    {}
-+    @SingleMemberShortWithDef   public void SingleMemberShortAcceptDef()   {}
-+    @SingleMemberIntWithDef     public void SingleMemberIntAcceptDef()     {}
-+    @SingleMemberLongWithDef    public void SingleMemberLongAcceptDef()    {}
-+    @SingleMemberCharWithDef    public void SingleMemberCharAcceptDef()    {}
-+    @SingleMemberFloatWithDef   public void SingleMemberFloatAcceptDef()   {}
-+    @SingleMemberDoubleWithDef  public void SingleMemberDoubleAcceptDef()  {}
-+    @SingleMemberBooleanWithDef public void SingleMemberBooleanAcceptDef() {}
-+    @SingleMemberStringWithDef  public void SingleMemberStringAcceptDef()  {}
-+    @SingleMemberClassWithDef   public void SingleMemberClassAcceptDef()   {}
-+    @SingleMemberEnumWithDef    public void SingleMemberEnumAcceptDef()    {}
-+
-+    // Single member array (empty array)
-+    @SingleMemberByteArray({})   public void SingleMemberByteArrEmpty()    {}
-+    @SingleMemberShortArray({})  public void SingleMemberShortArrEmpty()   {}
-+    @SingleMemberIntArray({})    public void SingleMemberIntArrEmpty()     {}
-+    @SingleMemberLongArray({})   public void SingleMemberLongArrEmpty()    {}
-+    @SingleMemberCharArray({})   public void SingleMemberCharArrEmpty()    {}
-+    @SingleMemberFloatArray({})  public void SingleMemberFloatArrEmpty()   {}
-+    @SingleMemberDoubleArray({}) public void SingleMemberDoubleArrEmpty()  {}
-+    @SingleMemberBooleanArray({})public void SingleMemberBooleanArrEmpty() {}
-+    @SingleMemberStringArray({}) public void SingleMemberStringArrEmpty()  {}
-+    @SingleMemberClassArray({})  public void SingleMemberClassArrEmpty()   {}
-+    @SingleMemberEnumArray({})   public void SingleMemberEnumArrEmpty()    {}
-+
-+    // Single member array (one-element shorthand)
-+    @SingleMemberByteArray(1)          public void SingleMemberByteArrOne()    {}
-+    @SingleMemberShortArray(2)         public void SingleMemberShortArrOne()   {}
-+    @SingleMemberIntArray(3)           public void SingleMemberIntArrOne()     {}
-+    @SingleMemberLongArray(4L)         public void SingleMemberLongArrOne()    {}
-+    @SingleMemberCharArray('5')        public void SingleMemberCharArrOne()    {}
-+    @SingleMemberFloatArray(6.0f)      public void SingleMemberFloatArrOne()   {}
-+    @SingleMemberDoubleArray(7.0)      public void SingleMemberDoubleArrOne()  {}
-+    @SingleMemberBooleanArray(true)    public void SingleMemberBooleanArrOne() {}
-+    @SingleMemberStringArray("custom") public void SingleMemberStringArrOne()  {}
-+    @SingleMemberClassArray(Map.class) public void SingleMemberClassArrOne()   {}
-+    @SingleMemberEnumArray(Stooge.MOE)        public void SingleMemberEnumArrOne()    {}
-+
-+    // Single member array (two elements)
-+    @SingleMemberByteArray({1, 2})           public void SingleMemberByteArrTwo()   {}
-+    @SingleMemberShortArray({2, 3})          public void SingleMemberShortArrTwo()  {}
-+    @SingleMemberIntArray({3, 4})            public void SingleMemberIntArrTwo()    {}
-+    @SingleMemberLongArray({4L, 5L})         public void SingleMemberLongArrTwo()   {}
-+    @SingleMemberCharArray({'5', '6'})       public void SingleMemberCharArrTwo()   {}
-+    @SingleMemberFloatArray({6.0f, 7.0f})    public void SingleMemberFloatArrTwo()  {}
-+    @SingleMemberDoubleArray({7.0, 8.0})     public void SingleMemberDoubleArrTwo() {}
-+    @SingleMemberBooleanArray({true, false}) public void SingleMemberBooleanArrTwo(){}
-+    @SingleMemberStringArray({"custom", "paint"})      public void SingleMemberStringArrTwo(){}
-+    @SingleMemberClassArray({Map.class, Set.class})    public void SingleMemberClassArrTwo() {}
-+    @SingleMemberEnumArray({Stooge.MOE, Stooge.CURLY})               public void SingleMemberEnumArrTwo()  {}
-+
-+    // Single member array with default (override)
-+    @SingleMemberByteArrayDef(1)          public void SingleMemberByteArrOvrdDef()   {}
-+    @SingleMemberShortArrayDef(2)         public void SingleMemberShortArrOvrdDef()  {}
-+    @SingleMemberIntArrayDef(3)           public void SingleMemberIntArrOvrdDef()    {}
-+    @SingleMemberLongArrayDef(4L)         public void SingleMemberLongArrOvrdDef()   {}
-+    @SingleMemberCharArrayDef('5')        public void SingleMemberCharArrOvrdDef()   {}
-+    @SingleMemberFloatArrayDef(6.0f)      public void SingleMemberFloatArrOvrdDef()  {}
-+    @SingleMemberDoubleArrayDef(7.0)      public void SingleMemberDoubleArrOvrdDef() {}
-+    @SingleMemberBooleanArrayDef(true)    public void SingleMemberBooleanArrOvrdDef(){}
-+    @SingleMemberStringArrayDef("custom") public void SingleMemberStringArrOvrdDef() {}
-+    @SingleMemberClassArrayDef(Map.class) public void SingleMemberClassArrOvrdDef()  {}
-+    @SingleMemberEnumArrayDef(Stooge.MOE)        public void SingleMemberEnumArrOvrdDef()   {}
-+
-+    // Single member array with default - accept
-+    @SingleMemberByteArrayDef    public void SingleMemberByteArrAcceptDef()    {}
-+    @SingleMemberShortArrayDef   public void SingleMemberShortArrAcceptDef()   {}
-+    @SingleMemberIntArrayDef     public void SingleMemberIntArrAcceptDef()     {}
-+    @SingleMemberLongArrayDef    public void SingleMemberLongArrAcceptDef()    {}
-+    @SingleMemberCharArrayDef    public void SingleMemberCharArrAcceptDef()    {}
-+    @SingleMemberFloatArrayDef   public void SingleMemberFloatArrAcceptDef()   {}
-+    @SingleMemberDoubleArrayDef  public void SingleMemberDoubleArrAcceptDef()  {}
-+    @SingleMemberBooleanArrayDef public void SingleMemberBooleanArrAcceptDef() {}
-+    @SingleMemberStringArrayDef  public void SingleMemberStringArrAcceptDef()  {}
-+    @SingleMemberClassArrayDef   public void SingleMemberClassArrAcceptDef()   {}
-+    @SingleMemberEnumArrayDef    public void SingleMemberEnumArrAcceptDef()    {}
-+
-+    // ANNOTATED FIELDS
-+    @ScalarTypes (
-+        b =    1,
-+        s =    2,
-+        i =    3,
-+        l =    4L,
-+        c =    '5',
-+        f =    6.0f,
-+        d =    7.0,
-+        bool = true,
-+        str =  "custom",
-+        cls =  Map.class,
-+        e =    Stooge.MOE,
-+        a =    @Point(x = 1, y = 2)
-+    )
-+    public int scalarTypesField;
-+
-+    @ScalarTypesWithDefault ( )
-+    public int scalarTypesAcceptDefaultField;
-+
-+    @ScalarTypesWithDefault (
-+        b =    1,
-+        s =    2,
-+        i =    3,
-+        l =    4L,
-+        c =    '5',
-+        f =    6.0f,
-+        d =    7.0,
-+        bool = true,
-+        str =  "custom",
-+        cls =  Map.class,
-+        e =    Stooge.MOE
-+    )
-+    public int scalarTypesOverrideDefaultField;
-+
-+    @ArrayTypes (
-+        b =    { },
-+        s =    { },
-+        i =    { },
-+        l =    { },
-+        c =    { },
-+        f =    { },
-+        d =    { },
-+        bool = { },
-+        str =  { },
-+        cls =  { },
-+        e =    { },
-+        a =    { }
-+    )
-+    public int emptyArrayTypesField;
-+
-+    @ArrayTypes (
-+        b =    1,
-+        s =    2,
-+        i =    3,
-+        l =    4L,
-+        c =    '5',
-+        f =    6.0f,
-+        d =    7.0,
-+        bool = true,
-+        str =  "custom",
-+        cls =  Map.class,
-+        e =    Stooge.MOE,
-+        a =    { @Point(x = 1, y = 2) }
-+    )
-+    public int singleElementArrayTypesField;
-+
-+    @ArrayTypes (
-+        b =    { 1, 2 },
-+        s =    { 2, 3 },
-+        i =    { 3, 4 },
-+        l =    { 4L, 5L },
-+        c =    { '5', '6' },
-+        f =    { 6.0f, 7.0f },
-+        d =    { 7.0, 8.0 },
-+        bool = { true, false },
-+        str =  { "custom", "paint" },
-+        cls =  { Map.class, Set.class },
-+        e =    { Stooge.MOE, Stooge.CURLY },
-+        a =    { @Point(x = 1, y = 2), @Point(x = 3, y = 4) }
-+    )
-+    public int twoElementArrayTypesField;
-+
-+    @ArrayTypesWithDefault ( )
-+    public int arrayTypesAcceptDefaultField;
-+
-+    @ArrayTypesWithDefault (
-+        b =    1,
-+        s =    2,
-+        i =    3,
-+        l =    4L,
-+        c =    '5',
-+        f =    6.0f,
-+        d =    7.0,
-+        bool = true,
-+        str =  "custom",
-+        cls =  Map.class,
-+        e =    Stooge.MOE,
-+        a =    { @Point(x = 1, y = 2) }
-+    )
-+    public int arrayTypesOverrideDefaultField;
-+
-+    @Marker public int markerField;
-+
-+    // Single-member (shorthand)
-+    @SingleMemberByte(1)          public int SingleMemberByteField;
-+    @SingleMemberShort(2)         public int SingleMemberShortField;
-+    @SingleMemberInt(3)           public int SingleMemberIntField;
-+    @SingleMemberLong(4L)         public int SingleMemberLongField;
-+    @SingleMemberChar('5')        public int SingleMemberCharField;
-+    @SingleMemberFloat(6.0f)      public int SingleMemberFloatField;
-+    @SingleMemberDouble(7.0)      public int SingleMemberDoubleField;
-+    @SingleMemberBoolean(true)    public int SingleMemberBooleanField;
-+    @SingleMemberString("custom") public int SingleMemberStringField;
-+    @SingleMemberClass(Map.class) public int SingleMemberClassField;
-+    @SingleMemberEnum(Stooge.MOE)        public int SingleMemberEnumField;
-+
-+    // Single-member with default (Override)
-+    @SingleMemberByteWithDef(1)          public int SingleMemberByteOvrdDefField;
-+    @SingleMemberShortWithDef(2)         public int SingleMemberShortOvrdDefField;
-+    @SingleMemberIntWithDef(3)           public int SingleMemberIntOvrdDefField;
-+    @SingleMemberLongWithDef(4L)         public int SingleMemberLongOvrdDefField;
-+    @SingleMemberCharWithDef('5')        public int SingleMemberCharOvrdDefField;
-+    @SingleMemberFloatWithDef(6.0f)      public int SingleMemberFloatOvrdDefField;
-+    @SingleMemberDoubleWithDef(7.0)      public int SingleMemberDoubleOvrdDefField;
-+    @SingleMemberBooleanWithDef(true)    public int SingleMemberBooleanOvrdDefField;
-+    @SingleMemberStringWithDef("custom") public int SingleMemberStringOvrdDefField;
-+    @SingleMemberClassWithDef(Map.class) public int SingleMemberClassOvrdDefField;
-+    @SingleMemberEnumWithDef(Stooge.MOE)        public int SingleMemberEnumOvrdDefField;
-+
-+    // Single-member with default (Accept)
-+    @SingleMemberByteWithDef    public int SingleMemberByteAcceptDefField;
-+    @SingleMemberShortWithDef   public int SingleMemberShortAcceptDefField;
-+    @SingleMemberIntWithDef     public int SingleMemberIntAcceptDefField;
-+    @SingleMemberLongWithDef    public int SingleMemberLongAcceptDefField;
-+    @SingleMemberCharWithDef    public int SingleMemberCharAcceptDefField;
-+    @SingleMemberFloatWithDef   public int SingleMemberFloatAcceptDefField;
-+    @SingleMemberDoubleWithDef  public int SingleMemberDoubleAcceptDefField;
-+    @SingleMemberBooleanWithDef public int SingleMemberBooleanAcceptDefField;
-+    @SingleMemberStringWithDef  public int SingleMemberStringAcceptDefField;
-+    @SingleMemberClassWithDef   public int SingleMemberClassAcceptDefField;
-+    @SingleMemberEnumWithDef    public int SingleMemberEnumAcceptDefField;
-+
-+    // Single member array (empty array)
-+    @SingleMemberByteArray({})   public int SingleMemberByteArrEmptyField;
-+    @SingleMemberShortArray({})  public int SingleMemberShortArrEmptyField;
-+    @SingleMemberIntArray({})    public int SingleMemberIntArrEmptyField;
-+    @SingleMemberLongArray({})   public int SingleMemberLongArrEmptyField;
-+    @SingleMemberCharArray({})   public int SingleMemberCharArrEmptyField;
-+    @SingleMemberFloatArray({})  public int SingleMemberFloatArrEmptyField;
-+    @SingleMemberDoubleArray({}) public int SingleMemberDoubleArrEmptyField;
-+    @SingleMemberBooleanArray({})public int SingleMemberBooleanArrEmptyField;
-+    @SingleMemberStringArray({}) public int SingleMemberStringArrEmptyField;
-+    @SingleMemberClassArray({})  public int SingleMemberClassArrEmptyField;
-+    @SingleMemberEnumArray({})   public int SingleMemberEnumArrEmptyField;
-+
-+    // Single member array (one-element shorthand)
-+    @SingleMemberByteArray(1)          public int SingleMemberByteArrOneField;
-+    @SingleMemberShortArray(2)         public int SingleMemberShortArrOneField;
-+    @SingleMemberIntArray(3)           public int SingleMemberIntArrOneField;
-+    @SingleMemberLongArray(4L)         public int SingleMemberLongArrOneField;
-+    @SingleMemberCharArray('5')        public int SingleMemberCharArrOneField;
-+    @SingleMemberFloatArray(6.0f)      public int SingleMemberFloatArrOneField;
-+    @SingleMemberDoubleArray(7.0)      public int SingleMemberDoubleArrOneField;
-+    @SingleMemberBooleanArray(true)    public int SingleMemberBooleanArrOneField;
-+    @SingleMemberStringArray("custom") public int SingleMemberStringArrOneField;
-+    @SingleMemberClassArray(Map.class) public int SingleMemberClassArrOneField;
-+    @SingleMemberEnumArray(Stooge.MOE)        public int SingleMemberEnumArrOneField;
-+
-+    // Single member array (two elements)
-+    @SingleMemberByteArray({1, 2})         public int SingleMemberByteArrTwoField;
-+    @SingleMemberShortArray({2, 3})        public int SingleMemberShortArrTwoField;
-+    @SingleMemberIntArray({3, 4})          public int SingleMemberIntArrTwoField;
-+    @SingleMemberLongArray({4L, 5L})       public int SingleMemberLongArrTwoField;
-+    @SingleMemberCharArray({'5', '6'})     public int SingleMemberCharArrTwoField;
-+    @SingleMemberFloatArray({6.0f, 7.0f})  public int SingleMemberFloatArrTwoField;
-+    @SingleMemberDoubleArray({7.0, 8.0})   public int SingleMemberDoubleArrTwoField;
-+    @SingleMemberBooleanArray({true,false})         public int SingleMemberBooleanArrTwoField;
-+    @SingleMemberStringArray({"custom", "paint"})   public int SingleMemberStringArrTwoField;
-+    @SingleMemberClassArray({Map.class, Set.class}) public int SingleMemberClassArrTwoField;
-+    @SingleMemberEnumArray({Stooge.MOE, Stooge.CURLY})            public int SingleMemberEnumArrTwoField;
-+
-+    // Single member array with default (override)
-+    @SingleMemberByteArrayDef(1)        public int SingleMemberByteArrOvrdDefField;
-+    @SingleMemberShortArrayDef(2)       public int SingleMemberShortArrOvrdDefField;
-+    @SingleMemberIntArrayDef(3)         public int SingleMemberIntArrOvrdDefField;
-+    @SingleMemberLongArrayDef(4L)       public int SingleMemberLongArrOvrdDefField;
-+    @SingleMemberCharArrayDef('5')      public int SingleMemberCharArrOvrdDefField;
-+    @SingleMemberFloatArrayDef(6.0f)    public int SingleMemberFloatArrOvrdDefField;
-+    @SingleMemberDoubleArrayDef(7.0)    public int SingleMemberDoubleArrOvrdDefField;
-+    @SingleMemberBooleanArrayDef(true)  public int SingleMemberBooleanArrOvrdDefField;
-+    @SingleMemberStringArrayDef("custom") public int SingleMemberStringArrOvrdDefField;
-+    @SingleMemberClassArrayDef(Map.class) public int SingleMemberClassArrOvrdDefField;
-+    @SingleMemberEnumArrayDef(Stooge.MOE)        public int SingleMemberEnumArrOvrdDefField;
-+
-+    // Single member array with default - accept
-+    @SingleMemberByteArrayDef    public int SingleMemberByteArrAcceptDefField;
-+    @SingleMemberShortArrayDef   public int SingleMemberShortArrAcceptDefField;
-+    @SingleMemberIntArrayDef     public int SingleMemberIntArrAcceptDefField;
-+    @SingleMemberLongArrayDef    public int SingleMemberLongArrAcceptDefField;
-+    @SingleMemberCharArrayDef    public int SingleMemberCharArrAcceptDefField;
-+    @SingleMemberFloatArrayDef   public int SingleMemberFloatArrAcceptDefField;
-+    @SingleMemberDoubleArrayDef  public int SingleMemberDoubleArrAcceptDefField;
-+    @SingleMemberBooleanArrayDef public int SingleMemberBooleanArrAcceptDefField;
-+    @SingleMemberStringArrayDef  public int SingleMemberStringArrAcceptDefField;
-+    @SingleMemberClassArrayDef   public int SingleMemberClassArrAcceptDefField;
-+    @SingleMemberEnumArrayDef    public int SingleMemberEnumArrAcceptDefField;
-+
-+    // ANNOTATED ENUM CONSTANTS
-+    enum TestType {
-+    @ScalarTypes (
-+        b =    1,
-+        s =    2,
-+        i =    3,
-+        l =    4L,
-+        c =    '5',
-+        f =    6.0f,
-+        d =    7.0,
-+        bool = true,
-+        str =  "custom",
-+        cls =  Map.class,
-+        e =    Stooge.MOE,
-+        a =    @Point(x = 1, y = 2)
-+    )
-+    scalarTypesField,
-+
-+    @ScalarTypesWithDefault ( )
-+    scalarTypesAcceptDefaultField,
-+
-+    @ScalarTypesWithDefault (
-+        b =    1,
-+        s =    2,
-+        i =    3,
-+        l =    4L,
-+        c =    '5',
-+        f =    6.0f,
-+        d =    7.0,
-+        bool = true,
-+        str =  "custom",
-+        cls =  Map.class,
-+        e =    Stooge.MOE
-+    )
-+    scalarTypesOverrideDefaultField,
-+
-+    @ArrayTypes (
-+        b =    { },
-+        s =    { },
-+        i =    { },
-+        l =    { },
-+        c =    { },
-+        f =    { },
-+        d =    { },
-+        bool = { },
-+        str =  { },
-+        cls =  { },
-+        e =    { },
-+        a  =   { }
-+    )
-+    emptyArrayTypesField,
-+
-+    @ArrayTypes (
-+        b =    1,
-+        s =    2,
-+        i =    3,
-+        l =    4L,
-+        c =    '5',
-+        f =    6.0f,
-+        d =    7.0,
-+        bool = true,
-+        str =  "custom",
-+        cls =  Map.class,
-+        e =    Stooge.MOE,
-+        a =    @Point(x = 1, y = 2)
-+    )
-+    singleElementArrayTypesField,
-+
-+    @ArrayTypes (
-+        b =    { 1, 2 },
-+        s =    { 2, 3 },
-+        i =    { 3, 4 },
-+        l =    { 4L, 5L },
-+        c =    { '5', '6' },
-+        f =    { 6.0f, 7.0f },
-+        d =    { 7.0, 8.0 },
-+        bool = { true, false },
-+        str =  { "custom", "paint" },
-+        cls =  { Map.class, Set.class },
-+        e =    { Stooge.MOE, Stooge.CURLY },
-+        a =    { @Point(x = 1, y = 2),  @Point(x = 3, y = 4) }
-+    )
-+    twoElementArrayTypesField,
-+
-+    @ArrayTypesWithDefault ( )
-+    arrayTypesAcceptDefaultField,
-+
-+    @ArrayTypesWithDefault (
-+        b =    1,
-+        s =    2,
-+        i =    3,
-+        l =    4L,
-+        c =    '5',
-+        f =    6.0f,
-+        d =    7.0,
-+        bool = true,
-+        str =  "custom",
-+        cls =  Map.class,
-+        e =    Stooge.MOE,
-+        a =    { @Point(x = 1, y = 2) }
-+    )
-+    arrayTypesOverrideDefaultField,
-+
-+    // marker
-+    @Marker marker,
-+
-+    // Single-member (shorthand)
-+    @SingleMemberByte(1)          SingleMemberByte,
-+    @SingleMemberShort(2)         SingleMemberShort,
-+    @SingleMemberInt(3)           SingleMemberInt,
-+    @SingleMemberLong(4L)         SingleMemberLong,
-+    @SingleMemberChar('5')        SingleMemberChar,
-+    @SingleMemberFloat(6.0f)      SingleMemberFloat,
-+    @SingleMemberDouble(7.0)      SingleMemberDouble,
-+    @SingleMemberBoolean(true)    SingleMemberBoolean,
-+    @SingleMemberString("custom") SingleMemberString,
-+    @SingleMemberClass(Map.class) SingleMemberClass,
-+    @SingleMemberEnum(Stooge.MOE)        SingleMemberEnum,
-+
-+    // Single-member with default (Override)
-+    @SingleMemberByteWithDef(1)          SingleMemberByteOvrdDef,
-+    @SingleMemberShortWithDef(2)         SingleMemberShortOvrdDef,
-+    @SingleMemberIntWithDef(3)           SingleMemberIntOvrdDef,
-+    @SingleMemberLongWithDef(4L)         SingleMemberLongOvrdDef,
-+    @SingleMemberCharWithDef('5')        SingleMemberCharOvrdDef,
-+    @SingleMemberFloatWithDef(6.0f)      SingleMemberFloatOvrdDef,
-+    @SingleMemberDoubleWithDef(7.0)      SingleMemberDoubleOvrdDef,
-+    @SingleMemberBooleanWithDef(true)    SingleMemberBooleanOvrdDef,
-+    @SingleMemberStringWithDef("custom") SingleMemberStringOvrdDef,
-+    @SingleMemberClassWithDef(Map.class) SingleMemberClassOvrdDef,
-+    @SingleMemberEnumWithDef(Stooge.MOE)        SingleMemberEnumOvrdDef,
-+
-+    // Single-member with default (Accept)
-+    @SingleMemberByteWithDef    SingleMemberByteAcceptDef,
-+    @SingleMemberShortWithDef   SingleMemberShortAcceptDef,
-+    @SingleMemberIntWithDef     SingleMemberIntAcceptDef,
-+    @SingleMemberLongWithDef    SingleMemberLongAcceptDef,
-+    @SingleMemberCharWithDef    SingleMemberCharAcceptDef,
-+    @SingleMemberFloatWithDef   SingleMemberFloatAcceptDef,
-+    @SingleMemberDoubleWithDef  SingleMemberDoubleAcceptDef,
-+    @SingleMemberBooleanWithDef SingleMemberBooleanAcceptDef,
-+    @SingleMemberStringWithDef  SingleMemberStringAcceptDef,
-+    @SingleMemberClassWithDef   SingleMemberClassAcceptDef,
-+    @SingleMemberEnumWithDef    SingleMemberEnumAcceptDef,
-+
-+    // Single member array (empty array)
-+    @SingleMemberByteArray({})   SingleMemberByteArrEmpty,
-+    @SingleMemberShortArray({})  SingleMemberShortArrEmpty,
-+    @SingleMemberIntArray({})    SingleMemberIntArrEmpty,
-+    @SingleMemberLongArray({})   SingleMemberLongArrEmpty,
-+    @SingleMemberCharArray({})   SingleMemberCharArrEmpty,
-+    @SingleMemberFloatArray({})  SingleMemberFloatArrEmpty,
-+    @SingleMemberDoubleArray({}) SingleMemberDoubleArrEmpty,
-+    @SingleMemberBooleanArray({})SingleMemberBooleanArrEmpty,
-+    @SingleMemberStringArray({}) SingleMemberStringArrEmpty,
-+    @SingleMemberClassArray({})  SingleMemberClassArrEmpty,
-+    @SingleMemberEnumArray({})   SingleMemberEnumArrEmpty,
-+
-+    // Single member array (one-element shorthand)
-+    @SingleMemberByteArray(1)          SingleMemberByteArrOne,
-+    @SingleMemberShortArray(2)         SingleMemberShortArrOne,
-+    @SingleMemberIntArray(3)           SingleMemberIntArrOne,
-+    @SingleMemberLongArray(4L)         SingleMemberLongArrOne,
-+    @SingleMemberCharArray('5')        SingleMemberCharArrOne,
-+    @SingleMemberFloatArray(6.0f)      SingleMemberFloatArrOne,
-+    @SingleMemberDoubleArray(7.0)      SingleMemberDoubleArrOne,
-+    @SingleMemberBooleanArray(true)    SingleMemberBooleanArrOne,
-+    @SingleMemberStringArray("custom") SingleMemberStringArrOne,
-+    @SingleMemberClassArray(Map.class) SingleMemberClassArrOne,
-+    @SingleMemberEnumArray(Stooge.MOE)        SingleMemberEnumArrOne,
-+
-+    // Single member array (two elements)
-+    @SingleMemberByteArray({1, 2})         SingleMemberByteArrTwo,
-+    @SingleMemberShortArray({2, 3})        SingleMemberShortArrTwo,
-+    @SingleMemberIntArray({3, 4})          SingleMemberIntArrTwo,
-+    @SingleMemberLongArray({4L, 5L})       SingleMemberLongArrTwo,
-+    @SingleMemberCharArray({'5', '6'})     SingleMemberCharArrTwo,
-+    @SingleMemberFloatArray({6.0f, 7.0f})  SingleMemberFloatArrTwo,
-+    @SingleMemberDoubleArray({7.0, 8.0})   SingleMemberDoubleArrTwo,
-+    @SingleMemberBooleanArray({true,false})         SingleMemberBooleanArrTwo,
-+    @SingleMemberStringArray({"custom", "paint"})   SingleMemberStringArrTwo,
-+    @SingleMemberClassArray({Map.class, Set.class}) SingleMemberClassArrTwo,
-+    @SingleMemberEnumArray({Stooge.MOE, Stooge.CURLY})            SingleMemberEnumArrTwo,
-+
-+    // Single member array with default (override)
-+    @SingleMemberByteArrayDef(1)        SingleMemberByteArrOvrdDef,
-+    @SingleMemberShortArrayDef(2)       SingleMemberShortArrOvrdDef,
-+    @SingleMemberIntArrayDef(3)         SingleMemberIntArrOvrdDef,
-+    @SingleMemberLongArrayDef(4L)       SingleMemberLongArrOvrdDef,
-+    @SingleMemberCharArrayDef('5')      SingleMemberCharArrOvrdDef,
-+    @SingleMemberFloatArrayDef(6.0f)    SingleMemberFloatArrOvrdDef,
-+    @SingleMemberDoubleArrayDef(7.0)    SingleMemberDoubleArrOvrdDef,
-+    @SingleMemberBooleanArrayDef(true)  SingleMemberBooleanArrOvrdDef,
-+    @SingleMemberStringArrayDef("custom") SingleMemberStringArrOvrdDef,
-+    @SingleMemberClassArrayDef(Map.class) SingleMemberClassArrOvrdDef,
-+    @SingleMemberEnumArrayDef(Stooge.MOE)        SingleMemberEnumArrOvrdDef,
-+
-+    // Single member array with default - accept
-+    @SingleMemberByteArrayDef    SingleMemberByteArrAcceptDef,
-+    @SingleMemberShortArrayDef   SingleMemberShortArrAcceptDef,
-+    @SingleMemberIntArrayDef     SingleMemberIntArrAcceptDef,
-+    @SingleMemberLongArrayDef    SingleMemberLongArrAcceptDef,
-+    @SingleMemberCharArrayDef    SingleMemberCharArrAcceptDef,
-+    @SingleMemberFloatArrayDef   SingleMemberFloatArrAcceptDef,
-+    @SingleMemberDoubleArrayDef  SingleMemberDoubleArrAcceptDef,
-+    @SingleMemberBooleanArrayDef SingleMemberBooleanArrAcceptDef,
-+    @SingleMemberStringArrayDef  SingleMemberStringArrAcceptDef,
-+    @SingleMemberClassArrayDef   SingleMemberClassArrAcceptDef,
-+    @SingleMemberEnumArrayDef    SingleMemberEnumArrAcceptDef,
-+    }
-+
-+    // ANNOTATED CONSTRUCTORS
-+
-+    @ScalarTypes (
-+        b =    1,
-+        s =    2,
-+        i =    3,
-+        l =    4L,
-+        c =    '5',
-+        f =    6.0f,
-+        d =    7.0,
-+        bool = true,
-+        str =  "custom",
-+        cls =  Map.class,
-+        e =    Stooge.MOE,
-+        a =    @Point(x = 1, y = 2)
-+    )
-+    public UnitTest(Iterator it) { } // scalar types
-+
-+    @ScalarTypesWithDefault ( )
-+    public UnitTest(Set s) { } // scalarTypesAcceptDefault
-+
-+    @ScalarTypesWithDefault (
-+        b =    1,
-+        s =    2,
-+        i =    3,
-+        l =    4L,
-+        c =    '5',
-+        f =    6.0f,
-+        d =    7.0,
-+        bool = true,
-+        str =  "custom",
-+        cls =  Map.class,
-+        e =    Stooge.MOE
-+    )
-+    public UnitTest(Map s) { } // scalarTypesOverrideDefault
-+
-+    @ArrayTypes (
-+        b =    { },
-+        s =    { },
-+        i =    { },
-+        l =    { },
-+        c =    { },
-+        f =    { },
-+        d =    { },
-+        bool = { },
-+        str =  { },
-+        cls =  { },
-+        e =    { },
-+        a =    { }
-+    )
-+    public UnitTest(List l){ } // emptyArrayTypes
-+
-+    @ArrayTypes (
-+        b =    1,
-+        s =    2,
-+        i =    3,
-+        l =    4L,
-+        c =    '5',
-+        f =    6.0f,
-+        d =    7.0,
-+        bool = true,
-+        str =  "custom",
-+        cls =  Map.class,
-+        e =    Stooge.MOE,
-+        a =    @Point(x = 1, y = 2)
-+    )
-+    public UnitTest(Collection c) { } // singleElementArrayTypes
-+
-+    @ArrayTypes (
-+        b =    { 1, 2 },
-+        s =    { 2, 3 },
-+        i =    { 3, 4 },
-+        l =    { 4L, 5L },
-+        c =    { '5', '6' },
-+        f =    { 6.0f, 7.0f },
-+        d =    { 7.0, 8.0 },
-+        bool = { true, false },
-+        str =  { "custom", "paint" },
-+        cls =  { Map.class, Set.class },
-+        e =    { Stooge.MOE, Stooge.CURLY },
-+        a =    { @Point(x = 1, y = 2),  @Point(x = 3, y = 4) }
-+    )
-+    public UnitTest(SortedSet ss) { } // twoElementArrayTypes
-+
-+    @ArrayTypesWithDefault ( )
-+    public UnitTest(SortedMap sm) { } // arrayTypesAcceptDefault
-+
-+    @ArrayTypesWithDefault (
-+        b =    1,
-+        s =    2,
-+        i =    3,
-+        l =    4L,
-+        c =    '5',
-+        f =    6.0f,
-+        d =    7.0,
-+        bool = true,
-+        str =  "custom",
-+        cls =  Map.class,
-+        e =    Stooge.MOE,
-+        a =    { @Point(x = 1, y = 2) }
-+    )
-+    public UnitTest(RandomAccess r) { } // arrayTypesOverrideDefault
-+
-+    // Marker
-+    @Marker public UnitTest() { } // marker
-+
-+    // Single-member (shorthand)
-+    @SingleMemberByte(1)          public UnitTest(byte b)    { }
-+    @SingleMemberShort(2)         public UnitTest(short s)   { }
-+    @SingleMemberInt(3)           public UnitTest(int i)     { }
-+    @SingleMemberLong(4L)         public UnitTest(long l)    { }
-+    @SingleMemberChar('5')        public UnitTest(char c)    { }
-+    @SingleMemberFloat(6.0f)      public UnitTest(float f)   { }
-+    @SingleMemberDouble(7.0)      public UnitTest(double d)  { }
-+    @SingleMemberBoolean(true)    public UnitTest(boolean b) { }
-+    @SingleMemberString("custom") public UnitTest(String s)  { }
-+    @SingleMemberClass(Map.class) public UnitTest(Class c)   { }
-+    @SingleMemberEnum(Stooge.MOE)        public UnitTest(Enum e)    { }
-+
-+    // Single-member with default (Override)
-+    @SingleMemberByteWithDef(1)          public UnitTest(byte b, Set s)    { }
-+    @SingleMemberShortWithDef(2)         public UnitTest(short s, Set x)   { }
-+    @SingleMemberIntWithDef(3)           public UnitTest(int i, Set s)     { }
-+    @SingleMemberLongWithDef(4L)         public UnitTest(long l, Set s)    { }
-+    @SingleMemberCharWithDef('5')        public UnitTest(char c, Set s)    { }
-+    @SingleMemberFloatWithDef(6.0f)      public UnitTest(float f, Set s)   { }
-+    @SingleMemberDoubleWithDef(7.0)      public UnitTest(double d, Set s)  { }
-+    @SingleMemberBooleanWithDef(true)    public UnitTest(boolean b, Set s) { }
-+    @SingleMemberStringWithDef("custom") public UnitTest(String s, Set x)  { }
-+    @SingleMemberClassWithDef(Map.class) public UnitTest(Class c, Set s)   { }
-+    @SingleMemberEnumWithDef(Stooge.MOE)        public UnitTest(Enum e, Set s)    { }
-+
-+    // Single-member with default (Accept)
-+    @SingleMemberByteWithDef    public UnitTest(byte b, Map m)    { }
-+    @SingleMemberShortWithDef   public UnitTest(short s, Map m)   { }
-+    @SingleMemberIntWithDef     public UnitTest(int i, Map m)     { }
-+    @SingleMemberLongWithDef    public UnitTest(long l, Map m)    { }
-+    @SingleMemberCharWithDef    public UnitTest(char c, Map m)    { }
-+    @SingleMemberFloatWithDef   public UnitTest(float f, Map m)   { }
-+    @SingleMemberDoubleWithDef  public UnitTest(double d, Map m)  { }
-+    @SingleMemberBooleanWithDef public UnitTest(boolean b, Map m) { }
-+    @SingleMemberStringWithDef  public UnitTest(String s, Map m)  { }
-+    @SingleMemberClassWithDef   public UnitTest(Class c, Map m)   { }
-+    @SingleMemberEnumWithDef    public UnitTest(Enum e, Map m)    { }
-+
-+    // Single member array (empty array)
-+    @SingleMemberByteArray({})   public UnitTest(byte[] b)    { }
-+    @SingleMemberShortArray({})  public UnitTest(short[] s)   { }
-+    @SingleMemberIntArray({})    public UnitTest(int[] i)     { }
-+    @SingleMemberLongArray({})   public UnitTest(long[] l)    { }
-+    @SingleMemberCharArray({})   public UnitTest(char[] c)    { }
-+    @SingleMemberFloatArray({})  public UnitTest(float[] f)   { }
-+    @SingleMemberDoubleArray({}) public UnitTest(double[] d)  { }
-+    @SingleMemberBooleanArray({})public UnitTest(boolean[] b) { }
-+    @SingleMemberStringArray({}) public UnitTest(String[] s)  { }
-+    @SingleMemberClassArray({})  public UnitTest(Class[] c)   { }
-+    @SingleMemberEnumArray({})   public UnitTest(Enum[] e)    { }
-+
-+    // Single member array (one-element shorthand)
-+    @SingleMemberByteArray(1)          public UnitTest(byte[] b, Set s)    { }
-+    @SingleMemberShortArray(2)         public UnitTest(short[] s, Set x)   { }
-+    @SingleMemberIntArray(3)           public UnitTest(int[] i, Set s)     { }
-+    @SingleMemberLongArray(4L)         public UnitTest(long[] l, Set s)    { }
-+    @SingleMemberCharArray('5')        public UnitTest(char[] c, Set s)    { }
-+    @SingleMemberFloatArray(6.0f)      public UnitTest(float[] f, Set s)   { }
-+    @SingleMemberDoubleArray(7.0)      public UnitTest(double[] d, Set s)  { }
-+    @SingleMemberBooleanArray(true)    public UnitTest(boolean[] b, Set s) { }
-+    @SingleMemberStringArray("custom") public UnitTest(String[] s, Set x)  { }
-+    @SingleMemberClassArray(Map.class) public UnitTest(Class[] c, Set s)   { }
-+    @SingleMemberEnumArray(Stooge.MOE)        public UnitTest(Enum[] e, Set s)    { }
-+
-+    // Single member array (two elements)
-+    @SingleMemberByteArray({1, 2})           public UnitTest(byte[] b, Map m)    { }
-+    @SingleMemberShortArray({2, 3})          public UnitTest(short[] s, Map m)   { }
-+    @SingleMemberIntArray({3, 4})            public UnitTest(int[] i, Map m)     { }
-+    @SingleMemberLongArray({4L, 5L})         public UnitTest(long[] l, Map m)    { }
-+    @SingleMemberCharArray({'5', '6'})       public UnitTest(char[] c, Map m)    { }
-+    @SingleMemberFloatArray({6.0f, 7.0f})    public UnitTest(float[] f, Map m)   { }
-+    @SingleMemberDoubleArray({7.0, 8.0})     public UnitTest(double[] d, Map m)  { }
-+    @SingleMemberBooleanArray({true, false}) public UnitTest(boolean[] b, Map m) { }
-+    @SingleMemberStringArray({"custom", "paint"})  public UnitTest(String[] s, Map m)  { }
-+    @SingleMemberClassArray({Map.class,Set.class}) public UnitTest(Class[] c, Map m) { }
-+    @SingleMemberEnumArray({Stooge.MOE, Stooge.CURLY})           public UnitTest(Enum[] e, Map m)  { }
-+
-+
-+    // Single member array with default (override)
-+    @SingleMemberByteArrayDef(1)          public UnitTest(byte[] b, List l)    { }
-+    @SingleMemberShortArrayDef(2)         public UnitTest(short[] s, List l)   { }
-+    @SingleMemberIntArrayDef(3)           public UnitTest(int[] i, List l)     { }
-+    @SingleMemberLongArrayDef(4L)         public UnitTest(long[] l, List x)    { }
-+    @SingleMemberCharArrayDef('5')        public UnitTest(char[] c, List l)    { }
-+    @SingleMemberFloatArrayDef(6.0f)      public UnitTest(float[] f, List l)   { }
-+    @SingleMemberDoubleArrayDef(7.0)      public UnitTest(double[] d, List l)  { }
-+    @SingleMemberBooleanArrayDef(true)    public UnitTest(boolean[] b, List l) { }
-+    @SingleMemberStringArrayDef("custom") public UnitTest(String[] s, List l)  { }
-+    @SingleMemberClassArrayDef(Map.class) public UnitTest(Class[] c, List l)   { }
-+    @SingleMemberEnumArrayDef(Stooge.MOE)        public UnitTest(Enum[] e, List l)    { }
-+
-+    // Single member array with default - accept
-+    @SingleMemberByteArrayDef    public UnitTest(byte[] b, Collection c)    { }
-+    @SingleMemberShortArrayDef   public UnitTest(short[] s, Collection c)   { }
-+    @SingleMemberIntArrayDef     public UnitTest(int[] i, Collection c)     { }
-+    @SingleMemberLongArrayDef    public UnitTest(long[] l, Collection c)    { }
-+    @SingleMemberCharArrayDef    public UnitTest(char[] c, Collection x)    { }
-+    @SingleMemberFloatArrayDef   public UnitTest(float[] f, Collection c)   { }
-+    @SingleMemberDoubleArrayDef  public UnitTest(double[] d, Collection c)  { }
-+    @SingleMemberBooleanArrayDef public UnitTest(boolean[] b, Collection c) { }
-+    @SingleMemberStringArrayDef  public UnitTest(String[] s, Collection c)  { }
-+    @SingleMemberClassArrayDef   public UnitTest(Class[] c, Collection x)   { }
-+    @SingleMemberEnumArrayDef    public UnitTest(Enum[] e, Collection c)    { }
-+
-+    // ANNOTATED PARAMETERS
-+
-+    public void scalarTypesParam(
-+    @ScalarTypes (
-+        b =    1,
-+        s =    2,
-+        i =    3,
-+        l =    4L,
-+        c =    '5',
-+        f =    6.0f,
-+        d =    7.0,
-+        bool = true,
-+        str =  "custom",
-+        cls =  Map.class,
-+        e =    Stooge.MOE,
-+        a =    @Point(x = 1, y = 2)
-+    )
-+    int x) { }
-+
-+
-+    public void scalarTypesAcceptDefaultParam(
-+    @ScalarTypesWithDefault int x) { }
-+
-+    public void scalarTypesOverrideDefaultParam(
-+    @ScalarTypesWithDefault (
-+        b =    1,
-+        s =    2,
-+        i =    3,
-+        l =    4L,
-+        c =    '5',
-+        f =    6.0f,
-+        d =    7.0,
-+        bool = true,
-+        str =  "custom",
-+        cls =  Map.class,
-+        e =    Stooge.MOE
-+    )
-+    int x) { }
-+
-+    public void emptyArrayTypesParam(
-+    @ArrayTypes (
-+        b = { },
-+        s = { },
-+        i = { },
-+        l = { },
-+        c = { },
-+        f = { },
-+        d = { },
-+        bool = { },
-+        str = { },
-+        cls = { },
-+        e = { },
-+        a = { }
-+    )
-+    int x) { }
-+
-+    public void singleElementArrayTypesParam(
-+    @ArrayTypes (
-+        b =    1,
-+        s =    2,
-+        i =    3,
-+        l =    4L,
-+        c =    '5',
-+        f =    6.0f,
-+        d =    7.0,
-+        bool = true,
-+        str =  "custom",
-+        cls =  Map.class,
-+        e =    Stooge.MOE,
-+        a =    @Point(x = 1, y = 2)
-+    )
-+    int x) { }
-+
-+    public void twoElementArrayTypesParam(
-+    @ArrayTypes (
-+        b = { 1, 2 },
-+        s = { 2, 3 },
-+        i = { 3, 4 },
-+        l = { 4L, 5L },
-+        c = { '5', '6' },
-+        f = { 6.0f, 7.0f },
-+        d = { 7.0, 8.0 },
-+        bool = { true, false },
-+        str = { "custom", "paint" },
-+        cls = { Map.class, Set.class },
-+        e = { Stooge.MOE, Stooge.CURLY },
-+        a = { @Point(x = 1, y = 2),  @Point(x = 3, y = 4) }
-+    )
-+    int x) { }
-+
-+    public void arrayTypesAcceptDefaultParam(
-+    @ArrayTypesWithDefault
-+    int x) { }
-+
-+    public void arrayTypesOverrideDefaultParam(
-+    @ArrayTypesWithDefault (
-+        b =    1,
-+        s =    2,
-+        i =    3,
-+        l =    4L,
-+        c =    '5',
-+        f =    6.0f,
-+        d =    7.0,
-+        bool = true,
-+        str =  "custom",
-+        cls =  Map.class,
-+        e =    Stooge.MOE,
-+        a =    { @Point(x = 1, y = 2) }
-+    )
-+    int x) { }
-+
-+    // Marker
-+    public void markerParam(@Marker int x) { }
-+
-+    // Single-member (shorthand)
-+    public void SingleMemberByteParam(@SingleMemberByte(1) int x) {}
-+    public void SingleMemberShortParam(@SingleMemberShort(2) int x) {}
-+    public void SingleMemberIntParam(@SingleMemberInt(3) int x) {}
-+    public void SingleMemberLongParam(@SingleMemberLong(4L) int x) {}
-+    public void SingleMemberCharParam(@SingleMemberChar('5') int x) {}
-+    public void SingleMemberFloatParam(@SingleMemberFloat(6.0f) int x) {}
-+    public void SingleMemberDoubleParam(@SingleMemberDouble(7.0) int x) {}
-+    public void SingleMemberBooleanParam(@SingleMemberBoolean(true) int x) {}
-+    public void SingleMemberStringParam(@SingleMemberString("custom") int x) {}
-+    public void SingleMemberClassParam(@SingleMemberClass(Map.class) int x) {}
-+    public void SingleMemberEnumParam(@SingleMemberEnum(Stooge.MOE) int x) {}
-+
-+    // Single-member with default (Override)
-+    public void SingleMemberByteOvrdDefParam(@SingleMemberByteWithDef(1) int x) {}
-+    public void SingleMemberShortOvrdDefParam(@SingleMemberShortWithDef(2) int x) {}
-+    public void SingleMemberIntOvrdDefParam(@SingleMemberIntWithDef(3) int x) {}
-+    public void SingleMemberLongOvrdDefParam(@SingleMemberLongWithDef(4L) int x) {}
-+    public void SingleMemberCharOvrdDefParam(@SingleMemberCharWithDef('5') int x) {}
-+    public void SingleMemberFloatOvrdDefParam(@SingleMemberFloatWithDef(6.0f) int x) {}
-+    public void SingleMemberDoubleOvrdDefParam(@SingleMemberDoubleWithDef(7.0) int x) {}
-+    public void SingleMemberBooleanOvrdDefParam(@SingleMemberBooleanWithDef(true) int x) {}
-+    public void SingleMemberStringOvrdDefParam(@SingleMemberStringWithDef("custom") int x) {}
-+    public void SingleMemberClassOvrdDefParam(@SingleMemberClassWithDef(Map.class)  int x) {}
-+    public void SingleMemberEnumOvrdDefParam(@SingleMemberEnumWithDef(Stooge.MOE) int x) {}
-+
-+    // Single-member with default (Accept)
-+    public void SingleMemberByteAcceptDefParam(@SingleMemberByteWithDef int x) {}
-+    public void SingleMemberShortAcceptDefParam(@SingleMemberShortWithDef int x) {}
-+    public void SingleMemberIntAcceptDefParam(@SingleMemberIntWithDef int x) {}
-+    public void SingleMemberLongAcceptDefParam(@SingleMemberLongWithDef int x) {}
-+    public void SingleMemberCharAcceptDefParam(@SingleMemberCharWithDef int x) {}
-+    public void SingleMemberFloatAcceptDefParam(@SingleMemberFloatWithDef int x) {}
-+    public void SingleMemberDoubleAcceptDefParam(@SingleMemberDoubleWithDef int x) {}
-+    public void SingleMemberBooleanAcceptDefParam(@SingleMemberBooleanWithDef int x){}
-+    public void SingleMemberStringAcceptDefParam(@SingleMemberStringWithDef int x) {}
-+    public void SingleMemberClassAcceptDefParam(@SingleMemberClassWithDef int x) {}
-+    public void SingleMemberEnumAcceptDefParam(@SingleMemberEnumWithDef int x) {}
-+
-+    // Single member array (empty array)
-+    public void SingleMemberByteArrEmptyParam(@SingleMemberByteArray({}) int x) {}
-+    public void SingleMemberShortArrEmptyParam(@SingleMemberShortArray({}) int x) {}
-+    public void SingleMemberIntArrEmptyParam(@SingleMemberIntArray({}) int x) {}
-+    public void SingleMemberLongArrEmptyParam(@SingleMemberLongArray({}) int x) {}
-+    public void SingleMemberCharArrEmptyParam(@SingleMemberCharArray({}) int x) {}
-+    public void SingleMemberFloatArrEmptyParam(@SingleMemberFloatArray({}) int x) {}
-+    public void SingleMemberDoubleArrEmptyParam(@SingleMemberDoubleArray({}) int x) {}
-+    public void SingleMemberBooleanArrEmptyParam(@SingleMemberBooleanArray({}) int x) {}
-+    public void SingleMemberStringArrEmptyParam(@SingleMemberStringArray({}) int x) {}
-+    public void SingleMemberClassArrEmptyParam(@SingleMemberClassArray({}) int x) {}
-+    public void SingleMemberEnumArrEmptyParam(@SingleMemberEnumArray({}) int x) {}
-+
-+    // Single member array (one-element shorthand)
-+    public void SingleMemberByteArrOneParam(@SingleMemberByteArray(1) int x) {}
-+    public void SingleMemberShortArrOneParam(@SingleMemberShortArray(2) int x) {}
-+    public void SingleMemberIntArrOneParam(@SingleMemberIntArray(3) int x) {}
-+    public void SingleMemberLongArrOneParam(@SingleMemberLongArray(4L) int x) {}
-+    public void SingleMemberCharArrOneParam(@SingleMemberCharArray('5') int x) {}
-+    public void SingleMemberFloatArrOneParam(@SingleMemberFloatArray(6.0f) int x) {}
-+    public void SingleMemberDoubleArrOneParam(@SingleMemberDoubleArray(7.0) int x) {}
-+    public void SingleMemberBooleanArrOneParam(@SingleMemberBooleanArray(true) int x) {}
-+    public void SingleMemberStringArrOneParam(@SingleMemberStringArray("custom") int x) {}
-+    public void SingleMemberClassArrOneParam(@SingleMemberClassArray(Map.class) int x) {}
-+    public void SingleMemberEnumArrOneParam(@SingleMemberEnumArray(Stooge.MOE) int x) {}
-+
-+    // Single member array (two elements)
-+    public void SingleMemberByteArrTwoParam(@SingleMemberByteArray({1, 2}) int x) {}
-+    public void SingleMemberShortArrTwoParam(@SingleMemberShortArray({2, 3}) int x) {}
-+    public void SingleMemberIntArrTwoParam(@SingleMemberIntArray({3, 4}) int x) {}
-+    public void SingleMemberLongArrTwoParam(@SingleMemberLongArray({4L, 5L}) int x) {}
-+    public void SingleMemberCharArrTwoParam(@SingleMemberCharArray({'5', '6'}) int x) {}
-+    public void SingleMemberFloatArrTwoParam(@SingleMemberFloatArray({6.0f, 7.0f}) int x) {}
-+    public void SingleMemberDoubleArrTwoParam(@SingleMemberDoubleArray({7.0, 8.0}) int x) {}
-+    public void SingleMemberBooleanArrTwoParam(@SingleMemberBooleanArray({true, false}) int x){}
-+    public void SingleMemberStringArrTwoParam(@SingleMemberStringArray({"custom", "paint"}) int x) {}
-+    public void SingleMemberClassArrTwoParam(@SingleMemberClassArray({Map.class, Set.class}) int x) {}
-+    public void SingleMemberEnumArrTwoParam(@SingleMemberEnumArray({Stooge.MOE, Stooge.CURLY}) int x) {}
-+
-+    // Single member array with default (override)
-+    public void SingleMemberByteArrOvrdDefParam(@SingleMemberByteArrayDef(1) int x) {}
-+    public void SingleMemberShortArrOvrdDefParam(@SingleMemberShortArrayDef(2) int x) {}
-+    public void SingleMemberIntArrOvrdDefParam(@SingleMemberIntArrayDef(3) int x) {}
-+    public void SingleMemberLongArrOvrdDefParam(@SingleMemberLongArrayDef(4L) int x) {}
-+    public void SingleMemberCharArrOvrdDefParam(@SingleMemberCharArrayDef('5') int x) {}
-+    public void SingleMemberFloatArrOvrdDefParam(@SingleMemberFloatArrayDef(6.0f) int x) {}
-+    public void SingleMemberDoubleArrOvrdDefParam(@SingleMemberDoubleArrayDef(7.0) int x) {}
-+    public void SingleMemberBooleanArrOvrdDefParam(@SingleMemberBooleanArrayDef(true) int x){}
-+    public void SingleMemberStringArrOvrdDefParam(@SingleMemberStringArrayDef("custom") int x) {}
-+    public void SingleMemberClassArrOvrdDefParam(@SingleMemberClassArrayDef(Map.class) int x) {}
-+    public void SingleMemberEnumArrOvrdDefParam(@SingleMemberEnumArrayDef(Stooge.MOE) int x) {}
-+
-+    // Single member array with default - accept
-+    public void SingleMemberByteArrAcceptDefParam(@SingleMemberByteArrayDef int x) {}
-+    public void SingleMemberShortArrAcceptDefParam(@SingleMemberShortArrayDef int x) {}
-+    public void SingleMemberIntArrAcceptDefParam(@SingleMemberIntArrayDef int x) {}
-+    public void SingleMemberLongArrAcceptDefParam(@SingleMemberLongArrayDef int x) {}
-+    public void SingleMemberCharArrAcceptDefParam(@SingleMemberCharArrayDef int x) {}
-+    public void SingleMemberFloatArrAcceptDefParam(@SingleMemberFloatArrayDef int x) {}
-+    public void SingleMemberDoubleArrAcceptDefParam(@SingleMemberDoubleArrayDef int x) {}
-+    public void SingleMemberBooleanArrAcceptDefParam(@SingleMemberBooleanArrayDef int x){}
-+    public void SingleMemberStringArrAcceptDefParam(@SingleMemberStringArrayDef int x) {}
-+    public void SingleMemberClassArrAcceptDefParam(@SingleMemberClassArrayDef int x) {}
-+    public void SingleMemberEnumArrAcceptDefParam(@SingleMemberEnumArrayDef int x) {}
-+}
-+
-+// Helper types
-+
-+enum Stooge { LARRY, MOE, CURLY }
-+
-+@Target({}) @interface Point { int x(); int y(); }
-+
-+// ANNOTATION TYPES
-+
-+@Retention(RUNTIME) @interface ScalarTypes {
-+    byte     b();
-+    short    s();
-+    int      i();
-+    long     l();
-+    char     c();
-+    float    f();
-+    double   d();
-+    boolean  bool();
-+    String   str();
-+    Class    cls();
-+    Stooge   e();
-+    Point    a();
-+}
-+
-+@Retention(RUNTIME) @interface ScalarTypesWithDefault {
-+    byte     b()    default 11;
-+    short    s()    default 12;
-+    int      i()    default 13;
-+    long     l()    default 14;
-+    char     c()    default 'V';
-+    float    f()    default 16.0f;
-+    double   d()    default 17.0;
-+    boolean  bool() default false;
-+    String   str()  default "default";
-+    Class    cls()  default Class.class;
-+    Stooge   e()    default Stooge.LARRY;
-+    Point    a()    default @Point(x = 11, y = 12);
-+}
-+
-+@Retention(RUNTIME) @interface ArrayTypes {
-+    byte[]     b();
-+    short[]    s();
-+    int[]      i();
-+    long[]     l();
-+    char[]     c();
-+    float[]    f();
-+    double[]   d();
-+    boolean[]  bool();
-+    String[]   str();
-+    Class[]    cls();
-+    Stooge[]   e();
-+    Point[]    a();
-+}
-+
-+@Retention(RUNTIME) @interface ArrayTypesWithDefault {
-+    byte[]    b()    default { 11 };
-+    short[]   s()    default { 12 };
-+    int[]     i()    default { 13 };
-+    long[]    l()    default { 14L };
-+    char[]    c()    default { 'V' };
-+    float[]   f()    default { 16.0f };
-+    double[]  d()    default { 17.0 };
-+    boolean[] bool() default { false };
-+    String[]  str()  default { "default" };
-+    Class[]   cls()  default { Class.class };
-+    Stooge[]  e()    default { Stooge.LARRY };
-+    Point[]   a()    default { @Point(x = 11, y = 12) };
-+}
-+
-+@Retention(RUNTIME) @interface Marker { }
-+
-+@Retention(RUNTIME) @interface SingleMemberByte    { byte     value(); }
-+@Retention(RUNTIME) @interface SingleMemberShort   { short    value(); }
-+@Retention(RUNTIME) @interface SingleMemberInt     { int      value(); }
-+@Retention(RUNTIME) @interface SingleMemberLong    { long     value(); }
-+@Retention(RUNTIME) @interface SingleMemberChar    { char     value(); }
-+@Retention(RUNTIME) @interface SingleMemberFloat   { float    value(); }
-+@Retention(RUNTIME) @interface SingleMemberDouble  { double   value(); }
-+@Retention(RUNTIME) @interface SingleMemberBoolean { boolean  value(); }
-+@Retention(RUNTIME) @interface SingleMemberString  { String   value(); }
-+@Retention(RUNTIME) @interface SingleMemberClass   { Class    value(); }
-+@Retention(RUNTIME) @interface SingleMemberEnum    { Stooge   value(); }
-+
-+@Retention(RUNTIME) @interface SingleMemberByteWithDef    { byte     value() default 11; }
-+@Retention(RUNTIME) @interface SingleMemberShortWithDef   { short    value() default 12; }
-+@Retention(RUNTIME) @interface SingleMemberIntWithDef     { int      value() default 13; }
-+@Retention(RUNTIME) @interface SingleMemberLongWithDef    { long     value() default 14; }
-+@Retention(RUNTIME) @interface SingleMemberCharWithDef    { char     value() default 'V'; }
-+@Retention(RUNTIME) @interface SingleMemberFloatWithDef   { float    value() default 16.0f; }
-+@Retention(RUNTIME) @interface SingleMemberDoubleWithDef  { double   value() default 17.0; }
-+@Retention(RUNTIME) @interface SingleMemberBooleanWithDef { boolean  value() default false; }
-+@Retention(RUNTIME) @interface SingleMemberStringWithDef  { String   value() default "default"; }
-+@Retention(RUNTIME) @interface SingleMemberClassWithDef   { Class    value() default Class.class; }
-+@Retention(RUNTIME) @interface SingleMemberEnumWithDef    { Stooge   value() default Stooge.LARRY; }
-+
-+@Retention(RUNTIME) @interface SingleMemberByteArray    { byte[]     value(); }
-+@Retention(RUNTIME) @interface SingleMemberShortArray   { short[]    value(); }
-+@Retention(RUNTIME) @interface SingleMemberIntArray     { int[]      value(); }
-+@Retention(RUNTIME) @interface SingleMemberLongArray    { long[]     value(); }
-+@Retention(RUNTIME) @interface SingleMemberCharArray    { char[]     value(); }
-+@Retention(RUNTIME) @interface SingleMemberFloatArray   { float[]    value(); }
-+@Retention(RUNTIME) @interface SingleMemberDoubleArray  { double[]   value(); }
-+@Retention(RUNTIME) @interface SingleMemberBooleanArray { boolean[]  value(); }
-+@Retention(RUNTIME) @interface SingleMemberStringArray  { String[]   value(); }
-+@Retention(RUNTIME) @interface SingleMemberClassArray   { Class[]    value(); }
-+@Retention(RUNTIME) @interface SingleMemberEnumArray    { Stooge[]   value(); }
-+
-+@Retention(RUNTIME) @interface SingleMemberByteArrayDef    { byte[]     value() default { 11 }; }
-+@Retention(RUNTIME) @interface SingleMemberShortArrayDef   { short[]    value() default { 12 }; }
-+@Retention(RUNTIME) @interface SingleMemberIntArrayDef     { int[]      value() default { 13 }; }
-+@Retention(RUNTIME) @interface SingleMemberLongArrayDef    { long[]     value() default { 14 }; }
-+@Retention(RUNTIME) @interface SingleMemberCharArrayDef    { char[]     value() default { 'V' }; }
-+@Retention(RUNTIME) @interface SingleMemberFloatArrayDef   { float[]    value() default { 16.0f };}
-+@Retention(RUNTIME) @interface SingleMemberDoubleArrayDef  { double[]   value() default { 17.0 }; }
-+@Retention(RUNTIME) @interface SingleMemberBooleanArrayDef { boolean[]  value() default { false };}
-+@Retention(RUNTIME) @interface SingleMemberStringArrayDef  {
-+    String[]  value() default {"default"};
-+}
-+@Retention(RUNTIME) @interface SingleMemberClassArrayDef {
-+    Class[]   value() default {Class.class};
-+}
-+@Retention(RUNTIME) @interface SingleMemberEnumArrayDef {
-+    Stooge[]   value() default {Stooge.LARRY};
-+}
-+
-+// Annotation types for inheritance and declared-annotations tests
-+@Inherited @Retention(RUNTIME) @interface Foo { }
-+           @Retention(RUNTIME) @interface Bar { }
-+
-+
-+    // ANNOTATED CLASSES
-+
-+    @ScalarTypes (
-+        b =    1,
-+        s =    2,
-+        i =    3,
-+        l =    4L,
-+        c =    '5',
-+        f =    6.0f,
-+        d =    7.0,
-+        bool = true,
-+        str =  "custom",
-+        cls =  Map.class,
-+        e =    Stooge.MOE,
-+        a =    @Point(x = 1, y = 2)
-+    )
-+    class scalarTypesClass { }
-+
-+    @ScalarTypesWithDefault ( )
-+    class scalarTypesAcceptDefaultClass { }
-+
-+    @ScalarTypesWithDefault (
-+        b =    1,
-+        s =    2,
-+        i =    3,
-+        l =    4L,
-+        c =    '5',
-+        f =    6.0f,
-+        d =    7.0,
-+        bool = true,
-+        str =  "custom",
-+        cls =  Map.class,
-+        e =    Stooge.MOE
-+    )
-+    class scalarTypesOverrideDefaultClass { }
-+
-+    @ArrayTypes (
-+        b =    { },
-+        s =    { },
-+        i =    { },
-+        l =    { },
-+        c =    { },
-+        f =    { },
-+        d =    { },
-+        bool = { },
-+        str =  { },
-+        cls =  { },
-+        e =    { },
-+        a =    { }
-+    )
-+    class emptyArrayTypesClass { }
-+
-+    @ArrayTypes (
-+        b =    1,
-+        s =    2,
-+        i =    3,
-+        l =    4L,
-+        c =    '5',
-+        f =    6.0f,
-+        d =    7.0,
-+        bool = true,
-+        str =  "custom",
-+        cls =  Map.class,
-+        e =    Stooge.MOE,
-+        a =    @Point(x = 1, y = 2)
-+    )
-+    class singleElementArrayTypesClass { }
-+
-+    @ArrayTypes (
-+        b =    { 1, 2 },
-+        s =    { 2, 3 },
-+        i =    { 3, 4 },
-+        l =    { 4L, 5L },
-+        c =    { '5', '6' },
-+        f =    { 6.0f, 7.0f },
-+        d =    { 7.0, 8.0 },
-+        bool = { true, false },
-+        str =  { "custom", "paint" },
-+        cls =  { Map.class, Set.class },
-+        e =    { Stooge.MOE, Stooge.CURLY },
-+        a =    { @Point(x = 1, y = 2),  @Point(x = 3, y = 4) }
-+    )
-+    class twoElementArrayTypesClass { }
-+
-+    @ArrayTypesWithDefault (
-+    )
-+    class arrayTypesAcceptDefaultClass { }
-+
-+    @ArrayTypesWithDefault (
-+        b =    1,
-+        s =    2,
-+        i =    3,
-+        l =    4L,
-+        c =    '5',
-+        f =    6.0f,
-+        d =    7.0,
-+        bool = true,
-+        str =  "custom",
-+        cls =  Map.class,
-+        e =    Stooge.MOE,
-+        a =    { @Point(x = 1, y = 2) }
-+    )
-+    class arrayTypesOverrideDefaultClass { }
-+
-+    @Marker class markerClass { }
-+
-+    // Single-member (shorthand)
-+    @SingleMemberByte(1)          class SingleMemberByteClass { }
-+    @SingleMemberShort(2)         class SingleMemberShortClass { }
-+    @SingleMemberInt(3)           class SingleMemberIntClass { }
-+    @SingleMemberLong(4L)         class SingleMemberLongClass { }
-+    @SingleMemberChar('5')        class SingleMemberCharClass { }
-+    @SingleMemberFloat(6.0f)      class SingleMemberFloatClass { }
-+    @SingleMemberDouble(7.0)      class SingleMemberDoubleClass { }
-+    @SingleMemberBoolean(true)    class SingleMemberBooleanClass { }
-+    @SingleMemberString("custom") class SingleMemberStringClass { }
-+    @SingleMemberClass(Map.class) class SingleMemberClassClass { }
-+    @SingleMemberEnum(Stooge.MOE)        class SingleMemberEnumClass { }
-+
-+    // Single-member with default (Override)
-+    @SingleMemberByteWithDef(1)          class SingleMemberByteOvrdDefClass { }
-+    @SingleMemberShortWithDef(2)         class SingleMemberShortOvrdDefClass { }
-+    @SingleMemberIntWithDef(3)           class SingleMemberIntOvrdDefClass { }
-+    @SingleMemberLongWithDef(4L)         class SingleMemberLongOvrdDefClass { }
-+    @SingleMemberCharWithDef('5')        class SingleMemberCharOvrdDefClass { }
-+    @SingleMemberFloatWithDef(6.0f)      class SingleMemberFloatOvrdDefClass { }
-+    @SingleMemberDoubleWithDef(7.0)      class SingleMemberDoubleOvrdDefClass { }
-+    @SingleMemberBooleanWithDef(true)    class SingleMemberBooleanOvrdDefClass { }
-+    @SingleMemberStringWithDef("custom") class SingleMemberStringOvrdDefClass { }
-+    @SingleMemberClassWithDef(Map.class) class SingleMemberClassOvrdDefClass { }
-+    @SingleMemberEnumWithDef(Stooge.MOE)        class SingleMemberEnumOvrdDefClass { }
-+
-+    // Single-member with default (Accept)
-+    @SingleMemberByteWithDef    class SingleMemberByteAcceptDefClass { }
-+    @SingleMemberShortWithDef   class SingleMemberShortAcceptDefClass { }
-+    @SingleMemberIntWithDef     class SingleMemberIntAcceptDefClass { }
-+    @SingleMemberLongWithDef    class SingleMemberLongAcceptDefClass { }
-+    @SingleMemberCharWithDef    class SingleMemberCharAcceptDefClass { }
-+    @SingleMemberFloatWithDef   class SingleMemberFloatAcceptDefClass { }
-+    @SingleMemberDoubleWithDef  class SingleMemberDoubleAcceptDefClass { }
-+    @SingleMemberBooleanWithDef class SingleMemberBooleanAcceptDefClass { }
-+    @SingleMemberStringWithDef  class SingleMemberStringAcceptDefClass { }
-+    @SingleMemberClassWithDef   class SingleMemberClassAcceptDefClass { }
-+    @SingleMemberEnumWithDef    class SingleMemberEnumAcceptDefClass { }
-+
-+    // Single member array (empty array)
-+    @SingleMemberByteArray({})   class SingleMemberByteArrEmptyClass { }
-+    @SingleMemberShortArray({})  class SingleMemberShortArrEmptyClass { }
-+    @SingleMemberIntArray({})    class SingleMemberIntArrEmptyClass { }
-+    @SingleMemberLongArray({})   class SingleMemberLongArrEmptyClass { }
-+    @SingleMemberCharArray({})   class SingleMemberCharArrEmptyClass { }
-+    @SingleMemberFloatArray({})  class SingleMemberFloatArrEmptyClass { }
-+    @SingleMemberDoubleArray({}) class SingleMemberDoubleArrEmptyClass { }
-+    @SingleMemberBooleanArray({})class SingleMemberBooleanArrEmptyClass { }
-+    @SingleMemberStringArray({}) class SingleMemberStringArrEmptyClass { }
-+    @SingleMemberClassArray({})  class SingleMemberClassArrEmptyClass { }
-+    @SingleMemberEnumArray({})   class SingleMemberEnumArrEmptyClass { }
-+
-+    // Single member array (one-element shorthand)
-+    @SingleMemberByteArray(1)          class SingleMemberByteArrOneClass { }
-+    @SingleMemberShortArray(2)         class SingleMemberShortArrOneClass { }
-+    @SingleMemberIntArray(3)           class SingleMemberIntArrOneClass { }
-+    @SingleMemberLongArray(4L)         class SingleMemberLongArrOneClass { }
-+    @SingleMemberCharArray('5')        class SingleMemberCharArrOneClass { }
-+    @SingleMemberFloatArray(6.0f)      class SingleMemberFloatArrOneClass { }
-+    @SingleMemberDoubleArray(7.0)      class SingleMemberDoubleArrOneClass { }
-+    @SingleMemberBooleanArray(true)    class SingleMemberBooleanArrOneClass { }
-+    @SingleMemberStringArray("custom") class SingleMemberStringArrOneClass { }
-+    @SingleMemberClassArray(Map.class) class SingleMemberClassArrOneClass { }
-+    @SingleMemberEnumArray(Stooge.MOE)        class SingleMemberEnumArrOneClass { }
-+
-+    // Single member array (two elements)
-+    @SingleMemberByteArray({1, 2})         class SingleMemberByteArrTwoClass { }
-+    @SingleMemberShortArray({2, 3})        class SingleMemberShortArrTwoClass { }
-+    @SingleMemberIntArray({3, 4})          class SingleMemberIntArrTwoClass { }
-+    @SingleMemberLongArray({4L, 5L})       class SingleMemberLongArrTwoClass { }
-+    @SingleMemberCharArray({'5', '6'})     class SingleMemberCharArrTwoClass { }
-+    @SingleMemberFloatArray({6.0f, 7.0f})  class SingleMemberFloatArrTwoClass { }
-+    @SingleMemberDoubleArray({7.0, 8.0})   class SingleMemberDoubleArrTwoClass { }
-+    @SingleMemberBooleanArray({true,false})         class SingleMemberBooleanArrTwoClass { }
-+    @SingleMemberStringArray({"custom", "paint"})   class SingleMemberStringArrTwoClass { }
-+    @SingleMemberClassArray({Map.class, Set.class}) class SingleMemberClassArrTwoClass { }
-+    @SingleMemberEnumArray({Stooge.MOE, Stooge.CURLY})            class SingleMemberEnumArrTwoClass { }
-+
-+    // Single member array with default (override)
-+    @SingleMemberByteArrayDef(1)        class SingleMemberByteArrOvrdDefClass { }
-+    @SingleMemberShortArrayDef(2)       class SingleMemberShortArrOvrdDefClass { }
-+    @SingleMemberIntArrayDef(3)         class SingleMemberIntArrOvrdDefClass { }
-+    @SingleMemberLongArrayDef(4L)       class SingleMemberLongArrOvrdDefClass { }
-+    @SingleMemberCharArrayDef('5')      class SingleMemberCharArrOvrdDefClass { }
-+    @SingleMemberFloatArrayDef(6.0f)    class SingleMemberFloatArrOvrdDefClass { }
-+    @SingleMemberDoubleArrayDef(7.0)    class SingleMemberDoubleArrOvrdDefClass { }
-+    @SingleMemberBooleanArrayDef(true)  class SingleMemberBooleanArrOvrdDefClass { }
-+    @SingleMemberStringArrayDef("custom") class SingleMemberStringArrOvrdDefClass { }
-+    @SingleMemberClassArrayDef(Map.class) class SingleMemberClassArrOvrdDefClass { }
-+    @SingleMemberEnumArrayDef(Stooge.MOE)        class SingleMemberEnumArrOvrdDefClass { }
-+
-+    // Single member array with default - accept
-+    @SingleMemberByteArrayDef    class SingleMemberByteArrAcceptDefClass { }
-+    @SingleMemberShortArrayDef   class SingleMemberShortArrAcceptDefClass { }
-+    @SingleMemberIntArrayDef     class SingleMemberIntArrAcceptDefClass { }
-+    @SingleMemberLongArrayDef    class SingleMemberLongArrAcceptDefClass { }
-+    @SingleMemberCharArrayDef    class SingleMemberCharArrAcceptDefClass { }
-+    @SingleMemberFloatArrayDef   class SingleMemberFloatArrAcceptDefClass { }
-+    @SingleMemberDoubleArrayDef  class SingleMemberDoubleArrAcceptDefClass { }
-+    @SingleMemberBooleanArrayDef class SingleMemberBooleanArrAcceptDefClass { }
-+    @SingleMemberStringArrayDef  class SingleMemberStringArrAcceptDefClass { }
-+    @SingleMemberClassArrayDef   class SingleMemberClassArrAcceptDefClass { }
-+    @SingleMemberEnumArrayDef    class SingleMemberEnumArrAcceptDefClass { }
-+
-+    // Annotated classes for inheritance and declared-annotations tests
-+    @Foo @Bar class Grandpa     { }
-+    class Dad extends Grandpa   { }
-+    @Bar class Son extends Dad  { }
--- a/patches/openjdk/bidi-tests.patch	Sun Apr 18 17:03:04 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,295 +0,0 @@
-
-# HG changeset patch
-# User peytoia
-# Date 1224218043 -32400
-# Node ID 8ea49fa4c2f761eeb67711ba2fa5482cb3b0347c
-# Parent 244f62312fec34c292e082ba3bb9c76aef30858e
-6759521: Move Bidi test programs from closed to open.
-Reviewed-by: okutsu
-
---- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ openjdk/jdk/test/java/text/Bidi/BidiBug.java	Fri Oct 17 13:34:03 2008 +0900
-@@ -0,0 +1,41 @@
-+/*
-+ * Copyright (c) 2008 Sun Microsystems, Inc.  All Rights Reserved.
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * This code is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License version 2 only, as
-+ * published by the Free Software Foundation.
-+ *
-+ * This code is distributed in the hope that it will be useful, but WITHOUT
-+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-+ * version 2 for more details (a copy is included in the LICENSE file that
-+ * accompanied this code).
-+ *
-+ * You should have received a copy of the GNU General Public License version
-+ * 2 along with this work; if not, write to the Free Software Foundation,
-+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-+ *
-+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
-+ * CA 95054 USA or visit www.sun.com if you need additional information or
-+ * have any questions.
-+ */
-+
-+/*
-+ * @test
-+ * @bug 4827312
-+ * @summary verify that argument validity check is not fooled by overflow
-+ */
-+public class BidiBug {
-+  public static void main(String[] args) {
-+    try {
-+        byte buff[] = new byte[3000];
-+        java.text.Bidi bidi = new java.text.Bidi(new char[20],10,buff,Integer.MAX_VALUE-3,4,1);
-+    }
-+    catch (IllegalArgumentException e) {
-+        System.out.println(e);
-+        return; // success
-+    }
-+    throw new RuntimeException("didn't throw error, though we didn't crash either");
-+  }
-+}
---- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ openjdk/jdk/test/java/text/Bidi/BidiEmbeddingTest.java	Fri Oct 17 13:34:03 2008 +0900
-@@ -0,0 +1,132 @@
-+/*
-+ * Copyright (c) 2008 Sun Microsystems, Inc.  All Rights Reserved.
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * This code is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License version 2 only, as
-+ * published by the Free Software Foundation.
-+ *
-+ * This code is distributed in the hope that it will be useful, but WITHOUT
-+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-+ * version 2 for more details (a copy is included in the LICENSE file that
-+ * accompanied this code).
-+ *
-+ * You should have received a copy of the GNU General Public License version
-+ * 2 along with this work; if not, write to the Free Software Foundation,
-+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-+ *
-+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
-+ * CA 95054 USA or visit www.sun.com if you need additional information or
-+ * have any questions.
-+ */
-+
-+/*
-+ * @test
-+ * @bug 4396492 4396496 4778510
-+ * @summary verify that the embedding values processed by the bidi code use negative values to
-+ * indicate overrides, rather than using bit 7.  Also tests Bidi without loading awt classes to
-+ * confirm that Bidi can be used without awt. Verify that embedding level 0 is properly mapped
-+ * to the base embedding level.
-+ */
-+
-+import java.awt.Color;
-+import java.awt.Frame;
-+import java.awt.font.TextAttribute;
-+import java.text.AttributedString;
-+import java.text.Bidi;
-+
-+public class BidiEmbeddingTest {
-+    public static void main(String[] args) {
-+        // to regress embedding test against old fix, call with an arg.  A window will pop
-+        // up causing awt lib to be loaded so the vm won't die with the unsatisfied link error.
-+        if (args.length > 0) {
-+            Frame f = new Frame();
-+            f.setSize(300, 300);
-+            f.setBackground(Color.white);
-+            f.show();
-+        }
-+
-+        test1();
-+        test2();
-+    }
-+
-+    static void test1() {
-+        String target = "BACK WARDS";
-+        String str = "If this text is >" + target + "< the test passed.";
-+        int start = str.indexOf(target);
-+        int limit = start + target.length();
-+
-+        System.out.println("start: " + start + " limit: " + limit);
-+
-+        AttributedString astr = new AttributedString(str);
-+        astr.addAttribute(TextAttribute.BIDI_EMBEDDING,
-+                         new Integer(-1),
-+                         start,
-+                         limit);
-+
-+        Bidi bidi = new Bidi(astr.getIterator());
-+
-+        for (int i = 0; i < bidi.getRunCount(); ++i) {
-+            System.out.println("run " + i +
-+                               " from " + bidi.getRunStart(i) +
-+                               " to " + bidi.getRunLimit(i) +
-+                               " at level " + bidi.getRunLevel(i));
-+        }
-+
-+        System.out.println(bidi);
-+
-+        byte[] embs = new byte[str.length() + 3];
-+        for (int i = start + 1; i < limit + 1; ++i) {
-+            embs[i] = -1;
-+        }
-+
-+        Bidi bidi2 = new Bidi(str.toCharArray(), 0, embs, 1, str.length(), Bidi.DIRECTION_DEFAULT_LEFT_TO_RIGHT);
-+        for (int i = 0; i < bidi2.getRunCount(); ++i) {
-+            System.out.println("run " + i +
-+                               " from " + bidi2.getRunStart(i) +
-+                               " to " + bidi2.getRunLimit(i) +
-+                               " at level " + bidi2.getRunLevel(i));
-+        }
-+
-+        System.out.println(bidi2);
-+
-+        if (bidi.getRunCount() != 3 || bidi2.getRunCount() != 3) {
-+            throw new Error("Bidi run count incorrect");
-+        }
-+    }
-+
-+    // make sure BIDI_EMBEDDING values of 0 are mapped to base run direction, instead of flagging an error.
-+    static void test2() {
-+        String target = "BACK WARDS";
-+        String str = "If this text is >" + target + "< the test passed.";
-+        int length = str.length();
-+        int start = str.indexOf(target);
-+        int limit = start + target.length();
-+
-+        System.out.println("start: " + start + " limit: " + limit);
-+
-+        AttributedString astr = new AttributedString(str);
-+        astr.addAttribute(TextAttribute.RUN_DIRECTION, TextAttribute.RUN_DIRECTION_RTL);
-+
-+        astr.addAttribute(TextAttribute.BIDI_EMBEDDING,
-+                         new Integer(-3),
-+                         start,
-+                         limit);
-+
-+        Bidi bidi = new Bidi(astr.getIterator());
-+
-+        for (int i = 0; i < bidi.getRunCount(); ++i) {
-+            System.out.println("run " + i +
-+                               " from " + bidi.getRunStart(i) +
-+                               " to " + bidi.getRunLimit(i) +
-+                               " at level " + bidi.getRunLevel(i));
-+        }
-+
-+        System.out.println(bidi);
-+
-+        if (bidi.getRunCount() != 6) { // runs of spaces and angles at embedding bound,s and final period, each get level 1
-+            throw new Error("Bidi embedding processing failed");
-+        }
-+    }
-+}
---- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ openjdk/jdk/test/java/text/Bidi/BidiSurrogateTest.java	Fri Oct 17 13:34:03 2008 +0900
-@@ -0,0 +1,103 @@
-+/*
-+ * Copyright (c) 2008 Sun Microsystems, Inc.  All Rights Reserved.
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * This code is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License version 2 only, as
-+ * published by the Free Software Foundation.
-+ *
-+ * This code is distributed in the hope that it will be useful, but WITHOUT
-+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-+ * version 2 for more details (a copy is included in the LICENSE file that
-+ * accompanied this code).
-+ *
-+ * You should have received a copy of the GNU General Public License version
-+ * 2 along with this work; if not, write to the Free Software Foundation,
-+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-+ *
-+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
-+ * CA 95054 USA or visit www.sun.com if you need additional information or
-+ * have any questions.
-+ */
-+
-+/*
-+ * @test
-+ * @bug 4888843
-+ * @summary verify that surrogate pairs representing codepoints with R or AL directionality
-+ * and correctly recognized and reordered.
-+ */
-+
-+import java.text.Bidi;
-+
-+public class BidiSurrogateTest {
-+    private static final String RTLS = new String(Character.toChars(0x10800)); // surrogate code point with R directionality
-+    private static final String LTRS = new String(Character.toChars(0x107ff)); // surrogate code point with L directionality
-+    private static final String LRE = "\u202a";
-+    private static final String RLE = "\u202b";
-+    private static final String PDF = "\u202c";
-+
-+
-+    public static void main(String[] args) {
-+        new BidiSurrogateTest().test();
-+    }
-+
-+    void test() {
-+        test0();
-+        test1();
-+    }
-+
-+    void test0() {
-+        // test unpaired surrogates - should have L directionality
-+        testRequiresBidi("\ud800", false);           // unpaired lead surrogate
-+        testRequiresBidi("\udc00", false);           // unpaired trail surrogate
-+        testRequiresBidi("\udc00\ud800", false);     // out of order surrogates
-+        testRequiresBidi("a\udc00b\ud800c", false);  // out of order surrogates split
-+        testRequiresBidi(LTRS, false);               // supplementary with L
-+        testRequiresBidi(RTLS, true);                // supplementary with R
-+        testRequiresBidi("a" + RTLS + "b", true);    // R supplementary in LTR text
-+        testRequiresBidi(LTRS + RTLS, true);         // R supplementary in LTR supplementary text
-+        testRequiresBidi(LRE, false);                // LRE lone embedding
-+        testRequiresBidi(RLE, true);                 // RLE lone embedding
-+        testRequiresBidi(PDF, false);                // PDF lone pop embedding
-+    }
-+
-+    void testRequiresBidi(String string, boolean requiresBidi) {
-+        char[] text = string.toCharArray();
-+        if (Bidi.requiresBidi(text, 0, text.length) != requiresBidi) {
-+            throw new RuntimeException("testRequiresBidi failed with '" + string + "', " + requiresBidi);
-+        }
-+    }
-+
-+    void test1() {
-+        // test that strings with surrogate runs process surrogate directionality ok
-+        testBidi("This is a string with " + LTRS + " in it.", false);
-+        testBidi("This is a string with \ud800 in it.", false);
-+        testBidi("This is a string with \u0640 in it.", 22, 1);
-+        testBidi(RTLS, true);
-+        testBidi("This is a string with " + RTLS + RTLS + RTLS + " in it.", 22, 6);
-+    }
-+
-+    void testBidi(String string, boolean directionIsRTL) {
-+        Bidi bidi = new Bidi(string, Bidi.DIRECTION_DEFAULT_LEFT_TO_RIGHT);
-+        if (bidi.isMixed()) {
-+            throw new RuntimeException("bidi is mixed");
-+        }
-+        if (bidi.isRightToLeft() != directionIsRTL) {
-+            throw new RuntimeException("bidi is not " + (directionIsRTL ? "rtl" : "ltr"));
-+        }
-+    }
-+
-+    void testBidi(String string, int rtlstart, int rtllength) {
-+        Bidi bidi = new Bidi(string, Bidi.DIRECTION_DEFAULT_LEFT_TO_RIGHT);
-+        for (int i = 0; i < bidi.getRunCount(); ++i) {
-+            if ((bidi.getRunLevel(i) & 1) != 0) {
-+                if (bidi.getRunStart(i) != rtlstart ||
-+                    bidi.getRunLimit(i) != rtlstart + rtllength) {
-+                    throw new RuntimeException("first rtl run didn't match " + rtlstart + ", " + rtllength);
-+                }
-+                break;
-+            }
-+        }
-+    }
-+}
-
--- a/patches/security/20100330/6633872.patch	Sun Apr 18 17:03:04 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,443 +0,0 @@
---- openjdk.orig/jdk/src/share/classes/java/security/ProtectionDomain.java	Mon Mar 15 10:28:30 2010
-+++ openjdk/jdk/src/share/classes/java/security/ProtectionDomain.java	Mon Mar 15 10:28:30 2010
-@@ -1,5 +1,5 @@
- /*
-- * Copyright 1997-2006 Sun Microsystems, Inc.  All Rights Reserved.
-+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
-  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-  *
-  * This code is free software; you can redistribute it and/or modify it
-@@ -25,9 +25,15 @@
- 
- package java.security;
- 
-+import java.util.ArrayList;
-+import java.util.Collections;
- import java.util.Enumeration;
- import java.util.List;
--import java.util.ArrayList;
-+import java.util.Map;
-+import java.util.WeakHashMap;
-+import sun.misc.JavaSecurityProtectionDomainAccess;
-+import static sun.misc.JavaSecurityProtectionDomainAccess.ProtectionDomainCache;
-+import sun.misc.SharedSecrets;
- import sun.security.util.Debug;
- import sun.security.util.SecurityConstants;
- 
-@@ -72,6 +78,11 @@
-        or dynamic (via a policy refresh) */
-     private boolean staticPermissions;
- 
-+    /*
-+     * An object used as a key when the ProtectionDomain is stored in a Map.
-+     */
-+    final Key key = new Key();
-+
-     private static final Debug debug = Debug.getInstance("domain");
- 
-     /**
-@@ -238,7 +249,7 @@
-     /**
-      * Convert a ProtectionDomain to a String.
-      */
--    public String toString() {
-+    @Override public String toString() {
-         String pals = "<no principals>";
-         if (principals != null && principals.length > 0) {
-             StringBuilder palBuf = new StringBuilder("(principals ");
-@@ -396,4 +407,29 @@
- 
-         return mergedPerms;
-     }
-+
-+    /**
-+     * Used for storing ProtectionDomains as keys in a Map.
-+     */
-+    final class Key {}
-+
-+    static {
-+        SharedSecrets.setJavaSecurityProtectionDomainAccess(
-+            new JavaSecurityProtectionDomainAccess() {
-+                public ProtectionDomainCache getProtectionDomainCache() {
-+                    return new ProtectionDomainCache() {
-+                        private final Map<Key, PermissionCollection> map =
-+                            Collections.synchronizedMap
-+                                (new WeakHashMap<Key, PermissionCollection>());
-+                        public void put(ProtectionDomain pd,
-+                            PermissionCollection pc) {
-+                            map.put((pd == null ? null : pd.key), pc);
-+                        }
-+                        public PermissionCollection get(ProtectionDomain pd) {
-+                            return pd == null ? map.get(null) : map.get(pd.key);
-+                        }
-+                    };
-+                }
-+            });
-+    }
- }
---- openjdk.orig/jdk/src/share/classes/java/security/Policy.java	Mon Mar 15 10:28:30 2010
-+++ openjdk/jdk/src/share/classes/java/security/Policy.java	Mon Mar 15 10:28:30 2010
-@@ -1,5 +1,5 @@
- /*
-- * Copyright 1997-2006 Sun Microsystems, Inc.  All Rights Reserved.
-+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
-  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-  *
-  * This code is free software; you can redistribute it and/or modify it
-@@ -28,22 +28,19 @@
- 
- import java.io.*;
- import java.lang.RuntimePermission;
-+import java.lang.reflect.*;
- import java.net.MalformedURLException;
- import java.net.URL;
- import java.util.Enumeration;
- import java.util.Hashtable;
--import java.util.Vector;
--import java.util.StringTokenizer;
- import java.util.PropertyPermission;
--
--import java.lang.reflect.*;
--
-+import java.util.StringTokenizer;
-+import java.util.Vector;
- import java.util.WeakHashMap;
--import sun.security.util.Debug;
- import sun.security.jca.GetInstance;
-+import sun.security.util.Debug;
- import sun.security.util.SecurityConstants;
- 
--
- /**
-  * A Policy object is responsible for determining whether code executing
-  * in the Java runtime environment has permission to perform a
-@@ -113,8 +110,8 @@
- 
-     private static final Debug debug = Debug.getInstance("policy");
- 
--    // Cache mapping  ProtectionDomain to PermissionCollection
--    private WeakHashMap<ProtectionDomain, PermissionCollection> pdMapping;
-+    // Cache mapping ProtectionDomain.Key to PermissionCollection
-+    private WeakHashMap<ProtectionDomain.Key, PermissionCollection> pdMapping;
- 
-     /** package private for AccessControlContext */
-     static boolean isSet()
-@@ -307,7 +304,7 @@
-         synchronized (p) {
-             if (p.pdMapping == null) {
-                 p.pdMapping =
--                    new WeakHashMap<ProtectionDomain, PermissionCollection>();
-+                    new WeakHashMap<ProtectionDomain.Key, PermissionCollection>();
-            }
-         }
- 
-@@ -323,7 +320,7 @@
- 
-             synchronized (p.pdMapping) {
-                 // cache of pd to permissions
--                p.pdMapping.put(policyDomain, policyPerms);
-+                p.pdMapping.put(policyDomain.key, policyPerms);
-             }
-         }
-         return;
-@@ -638,7 +635,7 @@
-         }
- 
-         synchronized (pdMapping) {
--            pc = pdMapping.get(domain);
-+            pc = pdMapping.get(domain.key);
-         }
- 
-         if (pc != null) {
-@@ -697,7 +694,7 @@
-         }
- 
-         synchronized (pdMapping) {
--            pc = pdMapping.get(domain);
-+            pc = pdMapping.get(domain.key);
-         }
- 
-         if (pc != null) {
-@@ -711,7 +708,7 @@
- 
-         synchronized (pdMapping) {
-             // cache it
--            pdMapping.put(domain, pc);
-+            pdMapping.put(domain.key, pc);
-         }
- 
-         return pc.implies(permission);
-@@ -747,21 +744,25 @@
-             this.params = params;
-         }
- 
--        public String getType() { return type; }
-+        @Override public String getType() { return type; }
- 
--        public Policy.Parameters getParameters() { return params; }
-+        @Override public Policy.Parameters getParameters() { return params; }
- 
--        public Provider getProvider() { return p; }
-+        @Override public Provider getProvider() { return p; }
- 
-+        @Override
-         public PermissionCollection getPermissions(CodeSource codesource) {
-             return spi.engineGetPermissions(codesource);
-         }
-+        @Override
-         public PermissionCollection getPermissions(ProtectionDomain domain) {
-             return spi.engineGetPermissions(domain);
-         }
-+        @Override
-         public boolean implies(ProtectionDomain domain, Permission perm) {
-             return spi.engineImplies(domain, perm);
-         }
-+        @Override
-         public void refresh() {
-             spi.engineRefresh();
-         }
-@@ -803,7 +804,7 @@
-          * @exception SecurityException - if this PermissionCollection object
-          *                                has been marked readonly
-          */
--        public void add(Permission permission) {
-+        @Override public void add(Permission permission) {
-             perms.add(permission);
-         }
- 
-@@ -816,7 +817,7 @@
-          * @return true if "permission" is implied by the  permissions in
-          * the collection, false if not.
-          */
--        public boolean implies(Permission permission) {
-+        @Override public boolean implies(Permission permission) {
-             return perms.implies(permission);
-         }
- 
-@@ -826,7 +827,7 @@
-          *
-          * @return an enumeration of all the Permissions.
-          */
--        public Enumeration<Permission> elements() {
-+        @Override public Enumeration<Permission> elements() {
-             return perms.elements();
-         }
-     }
---- openjdk.orig/jdk/src/share/classes/sun/misc/SharedSecrets.java	Mon Mar 15 10:28:31 2010
-+++ openjdk/jdk/src/share/classes/sun/misc/SharedSecrets.java	Mon Mar 15 10:28:30 2010
-@@ -1,5 +1,5 @@
- /*
-- * Copyright 2002-2007 Sun Microsystems, Inc.  All Rights Reserved.
-+ * Copyright 2002-2009 Sun Microsystems, Inc.  All Rights Reserved.
-  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-  *
-  * This code is free software; you can redistribute it and/or modify it
-@@ -47,6 +47,7 @@
-     private static JavaIODeleteOnExitAccess javaIODeleteOnExitAccess;
-     private static JavaNetAccess javaNetAccess;
-     private static JavaIOFileDescriptorAccess javaIOFileDescriptorAccess;
-+    private static JavaSecurityProtectionDomainAccess javaSecurityProtectionDomainAccess;
- 
-     public static JavaUtilJarAccess javaUtilJarAccess() {
-         if (javaUtilJarAccess == null) {
-@@ -110,4 +111,16 @@
-         return javaIOFileDescriptorAccess;
-     }
- 
-+    public static void setJavaSecurityProtectionDomainAccess
-+        (JavaSecurityProtectionDomainAccess jspda) {
-+            javaSecurityProtectionDomainAccess = jspda;
-+    }
-+
-+    public static JavaSecurityProtectionDomainAccess
-+        getJavaSecurityProtectionDomainAccess() {
-+        if (javaSecurityProtectionDomainAccess == null)
-+            unsafe.ensureClassInitialized(java.security.ProtectionDomain.class);
-+
-+        return javaSecurityProtectionDomainAccess;
-+    }
- }
---- /dev/null	Mon Mar 15 10:28:31 2010
-+++ openjdk/jdk/src/share/classes/sun/misc/JavaSecurityProtectionDomainAccess.java	Mon Mar 15 10:28:31 2010
-@@ -0,0 +1,40 @@
-+/*
-+ * Copyright 2009 Sun Microsystems, Inc.  All Rights Reserved.
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * This code is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License version 2 only, as
-+ * published by the Free Software Foundation.  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.
-+ */
-+
-+package sun.misc;
-+
-+import java.security.PermissionCollection;
-+import java.security.ProtectionDomain;
-+
-+public interface JavaSecurityProtectionDomainAccess {
-+    interface ProtectionDomainCache {
-+        void put(ProtectionDomain pd, PermissionCollection pc);
-+        PermissionCollection get(ProtectionDomain pd);
-+    }
-+    /**
-+     * Returns the ProtectionDomainCache.
-+     */
-+    ProtectionDomainCache getProtectionDomainCache();
-+}
---- openjdk.orig/jdk/src/share/classes/sun/security/provider/PolicyFile.java	Mon Mar 15 10:28:31 2010
-+++ openjdk/jdk/src/share/classes/sun/security/provider/PolicyFile.java	Mon Mar 15 10:28:31 2010
-@@ -1,5 +1,5 @@
- /*
-- * Copyright 1997-2006 Sun Microsystems, Inc.  All Rights Reserved.
-+ * Copyright 1997-2009 Sun Microsystems, Inc.  All Rights Reserved.
-  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-  *
-  * This code is free software; you can redistribute it and/or modify it
-@@ -66,6 +66,9 @@
- import javax.sound.sampled.AudioPermission;
- import javax.net.ssl.SSLPermission;
- */
-+import sun.misc.JavaSecurityProtectionDomainAccess;
-+import static sun.misc.JavaSecurityProtectionDomainAccess.ProtectionDomainCache;
-+import sun.misc.SharedSecrets;
- import sun.security.util.Password;
- import sun.security.util.PolicyUtil;
- import sun.security.util.PropertyExpander;
-@@ -1108,7 +1111,7 @@
-     /**
-      * Refreshes the policy object by re-reading all the policy files.
-      */
--    public void refresh() {
-+    @Override public void refresh() {
-         init(url);
-     }
- 
-@@ -1125,9 +1128,10 @@
-      *
-      * @see java.security.ProtectionDomain
-      */
-+    @Override
-     public boolean implies(ProtectionDomain pd, Permission p) {
-         PolicyInfo pi = policyInfo.get();
--        Map<ProtectionDomain, PermissionCollection> pdMap = pi.getPdMapping();
-+        ProtectionDomainCache pdMap = pi.getPdMapping();
- 
-         PermissionCollection pc = pdMap.get(pd);
- 
-@@ -1173,6 +1177,7 @@
-      * @return the Permissions granted to the provided
-      *          <code>ProtectionDomain</code>.
-      */
-+    @Override
-     public PermissionCollection getPermissions(ProtectionDomain domain) {
-         Permissions perms = new Permissions();
- 
-@@ -1208,6 +1213,7 @@
-      *
-      * @return the set of permissions according to the policy.
-      */
-+    @Override
-     public PermissionCollection getPermissions(CodeSource codesource) {
-         return getPermissions(new Permissions(), codesource);
-     }
-@@ -2200,7 +2206,7 @@
-             return codesource;
-         }
- 
--        public String toString(){
-+        @Override public String toString(){
-             StringBuilder sb = new StringBuilder();
-             sb.append(ResourcesMgr.getString("("));
-             sb.append(getCodeSource());
-@@ -2336,7 +2342,7 @@
-          *
-          * @return false.
-          */
--        public boolean implies(Permission p) {
-+        @Override public boolean implies(Permission p) {
-             return false;
-         }
- 
-@@ -2353,7 +2359,7 @@
-          * type (class) name, permission name, actions, and
-          * certificates as this object.
-          */
--        public boolean equals(Object obj) {
-+        @Override public boolean equals(Object obj) {
-             if (obj == this)
-                 return true;
- 
-@@ -2401,7 +2407,7 @@
-          *
-          * @return a hash code value for this object.
-          */
--        public int hashCode() {
-+        @Override public int hashCode() {
-             int hash = type.hashCode();
-             if (name != null)
-                 hash ^= name.hashCode();
-@@ -2420,7 +2426,7 @@
-          *
-          * @return the empty string "".
-          */
--        public String getActions() {
-+        @Override public String getActions() {
-             return "";
-         }
- 
-@@ -2447,7 +2453,7 @@
-          *
-          * @return information about this SelfPermission.
-          */
--        public String toString() {
-+        @Override public String toString() {
-             return "(SelfPermission " + type + " " + name + " " + actions + ")";
-         }
-     }
-@@ -2469,7 +2475,7 @@
-         final Map aliasMapping;
- 
-         // Maps ProtectionDomain to PermissionCollection
--        private final Map<ProtectionDomain, PermissionCollection>[] pdMapping;
-+        private final ProtectionDomainCache[] pdMapping;
-         private java.util.Random random;
- 
-         PolicyInfo(int numCaches) {
-@@ -2478,16 +2484,17 @@
-                 Collections.synchronizedList(new ArrayList<PolicyEntry>(2));
-             aliasMapping = Collections.synchronizedMap(new HashMap(11));
- 
--            pdMapping = new Map[numCaches];
-+            pdMapping = new ProtectionDomainCache[numCaches];
-+            JavaSecurityProtectionDomainAccess jspda
-+                = SharedSecrets.getJavaSecurityProtectionDomainAccess();
-             for (int i = 0; i < numCaches; i++) {
--                pdMapping[i] = Collections.synchronizedMap
--                    (new WeakHashMap<ProtectionDomain, PermissionCollection>());
-+                pdMapping[i] = jspda.getProtectionDomainCache();
-             }
-             if (numCaches > 1) {
-                 random = new java.util.Random();
-             }
-         }
--        Map<ProtectionDomain, PermissionCollection> getPdMapping() {
-+        ProtectionDomainCache getPdMapping() {
-             if (pdMapping.length == 1) {
-                 return pdMapping[0];
-             } else {
--- a/patches/security/20100330/6639665.patch	Sun Apr 18 17:03:04 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,51 +0,0 @@
---- openjdk.orig/jdk/src/share/classes/java/lang/ThreadGroup.java	Tue Nov 17 07:38:44 2009
-+++ openjdk/jdk/src/share/classes/java/lang/ThreadGroup.java	Tue Nov 17 07:38:44 2009
-@@ -38,7 +38,7 @@
-  */
- public
- class ThreadGroup implements Thread.UncaughtExceptionHandler {
--    ThreadGroup parent;
-+    private final ThreadGroup parent;
-     String name;
-     int maxPriority;
-     boolean destroyed;
-@@ -59,6 +59,7 @@
-     private ThreadGroup() {	// called from C code
- 	this.name = "system";
- 	this.maxPriority = Thread.MAX_PRIORITY;
-+        this.parent = null;
-     }
- 
-     /**
-@@ -96,10 +97,10 @@
-      * @since   JDK1.0
-      */
-     public ThreadGroup(ThreadGroup parent, String name) {
--	if (parent == null) {
--	    throw new NullPointerException();
--	}
--	parent.checkAccess();
-+        this(checkParentAccess(parent), parent, name);
-+    }
-+
-+    private ThreadGroup(Void unused, ThreadGroup parent, String name) {
- 	this.name = name;
- 	this.maxPriority = parent.maxPriority;
- 	this.daemon = parent.daemon;
-@@ -108,6 +109,16 @@
- 	parent.add(this);
-     }
- 
-+    /*
-+     * @throws  NullPointerException  if the parent argument is {@code null}
-+     * @throws  SecurityException     if the current thread cannot create a
-+     *                                thread in the specified thread group.
-+     */
-+    private static Void checkParentAccess(ThreadGroup parent) {
-+        parent.checkAccess();
-+        return null;
-+    }
-+
-     /**
-      * Returns the name of this thread group.
-      *
--- a/patches/security/20100330/6736390.patch	Sun Apr 18 17:03:04 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,18 +0,0 @@
---- openjdk.orig/jdk/src/share/classes/java/io/File.java	Mon Mar 15 18:39:19 2010
-+++ openjdk/jdk/src/share/classes/java/io/File.java	Mon Mar 15 18:39:18 2010
-@@ -1936,11 +1936,12 @@
-     private synchronized void readObject(java.io.ObjectInputStream s)
-          throws IOException, ClassNotFoundException
-     {
--        s.defaultReadObject();
-+        ObjectInputStream.GetField fields = s.readFields();
-+        String pathField = (String)fields.get("path", null);
-         char sep = s.readChar(); // read the previous separator char
-         if (sep != separatorChar)
--            this.path = this.path.replace(sep, separatorChar);
--        this.path = fs.normalize(this.path);
-+            pathField = pathField.replace(sep, separatorChar);
-+        this.path = fs.normalize(pathField);
-         this.prefixLength = fs.prefixLength(this.path);
-     }
- 
--- a/patches/security/20100330/6745393.patch	Sun Apr 18 17:03:04 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1233 +0,0 @@
---- openjdk.orig/jdk/src/share/classes/java/util/zip/Deflater.java	Tue Nov 24 12:11:14 2009
-+++ openjdk/jdk/src/share/classes/java/util/zip/Deflater.java	Tue Nov 24 12:11:13 2009
-@@ -1,5 +1,5 @@
- /*
-- * Copyright 1996-2006 Sun Microsystems, Inc.  All Rights Reserved.
-+ * Copyright 1996-2009 Sun Microsystems, Inc.  All Rights Reserved.
-  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-  *
-  * This code is free software; you can redistribute it and/or modify it
-@@ -71,7 +71,8 @@
-  */
- public
- class Deflater {
--    private long strm;
-+
-+    private final ZStreamRef zsRef;
-     private byte[] buf = new byte[0];
-     private int off, len;
-     private int level, strategy;
-@@ -137,7 +138,7 @@
-     public Deflater(int level, boolean nowrap) {
-         this.level = level;
-         this.strategy = DEFAULT_STRATEGY;
--        strm = init(level, DEFAULT_STRATEGY, nowrap);
-+        this.zsRef = new ZStreamRef(init(level, DEFAULT_STRATEGY, nowrap));
-     }
- 
-     /**
-@@ -165,7 +166,7 @@
-      * @param len the length of the data
-      * @see Deflater#needsInput
-      */
--    public synchronized void setInput(byte[] b, int off, int len) {
-+    public void setInput(byte[] b, int off, int len) {
-         if (b== null) {
-             throw new NullPointerException();
-         }
-@@ -172,9 +173,11 @@
-         if (off < 0 || len < 0 || off > b.length - len) {
-             throw new ArrayIndexOutOfBoundsException();
-         }
--        this.buf = b;
--        this.off = off;
--        this.len = len;
-+        synchronized (zsRef) {
-+            this.buf = b;
-+            this.off = off;
-+            this.len = len;
-+        }
-     }
- 
-     /**
-@@ -199,14 +202,17 @@
-      * @see Inflater#inflate
-      * @see Inflater#getAdler
-      */
--    public synchronized void setDictionary(byte[] b, int off, int len) {
--        if (strm == 0 || b == null) {
-+    public void setDictionary(byte[] b, int off, int len) {
-+        if (b == null) {
-             throw new NullPointerException();
-         }
-         if (off < 0 || len < 0 || off > b.length - len) {
-             throw new ArrayIndexOutOfBoundsException();
-         }
--        setDictionary(strm, b, off, len);
-+        synchronized (zsRef) {
-+            ensureOpen();
-+            setDictionary(zsRef.address(), b, off, len);
-+        }
-     }
- 
-     /**
-@@ -229,7 +235,7 @@
-      * @exception IllegalArgumentException if the compression strategy is
-      *                                     invalid
-      */
--    public synchronized void setStrategy(int strategy) {
-+    public void setStrategy(int strategy) {
-         switch (strategy) {
-           case DEFAULT_STRATEGY:
-           case FILTERED:
-@@ -238,9 +244,11 @@
-           default:
-             throw new IllegalArgumentException();
-         }
--        if (this.strategy != strategy) {
--            this.strategy = strategy;
--            setParams = true;
-+        synchronized (zsRef) {
-+            if (this.strategy != strategy) {
-+                this.strategy = strategy;
-+                setParams = true;
-+            }
-         }
-     }
- 
-@@ -249,13 +257,15 @@
-      * @param level the new compression level (0-9)
-      * @exception IllegalArgumentException if the compression level is invalid
-      */
--    public synchronized void setLevel(int level) {
-+    public void setLevel(int level) {
-         if ((level < 0 || level > 9) && level != DEFAULT_COMPRESSION) {
-             throw new IllegalArgumentException("invalid compression level");
-         }
--        if (this.level != level) {
--            this.level = level;
--            setParams = true;
-+        synchronized (zsRef) {
-+            if (this.level != level) {
-+                this.level = level;
-+                setParams = true;
-+            }
-         }
-     }
- 
-@@ -273,8 +283,10 @@
-      * When called, indicates that compression should end with the current
-      * contents of the input buffer.
-      */
--    public synchronized void finish() {
--        finish = true;
-+    public void finish() {
-+        synchronized (zsRef) {
-+            finish = true;
-+        }
-     }
- 
-     /**
-@@ -283,8 +295,10 @@
-      * @return true if the end of the compressed data output stream has
-      * been reached
-      */
--    public synchronized boolean finished() {
--        return finished;
-+    public boolean finished() {
-+        synchronized (zsRef) {
-+            return finished;
-+        }
-     }
- 
-     /**
-@@ -297,7 +311,7 @@
-      * @param len the maximum number of bytes of compressed data
-      * @return the actual number of bytes of compressed data
-      */
--    public synchronized int deflate(byte[] b, int off, int len) {
-+    public int deflate(byte[] b, int off, int len) {
-         if (b == null) {
-             throw new NullPointerException();
-         }
-@@ -304,7 +318,9 @@
-         if (off < 0 || len < 0 || off > b.length - len) {
-             throw new ArrayIndexOutOfBoundsException();
-         }
--        return deflateBytes(b, off, len);
-+        synchronized (zsRef) {
-+            return deflateBytes(zsRef.address(), b, off, len);
-+        }
-     }
- 
-     /**
-@@ -323,9 +339,11 @@
-      * Returns the ADLER-32 value of the uncompressed data.
-      * @return the ADLER-32 value of the uncompressed data
-      */
--    public synchronized int getAdler() {
--        ensureOpen();
--        return getAdler(strm);
-+    public int getAdler() {
-+        synchronized (zsRef) {
-+            ensureOpen();
-+            return getAdler(zsRef.address());
-+        }
-     }
- 
-     /**
-@@ -347,9 +365,11 @@
-      * @return the total (non-negative) number of uncompressed bytes input so far
-      * @since 1.5
-      */
--    public synchronized long getBytesRead() {
--        ensureOpen();
--        return getBytesRead(strm);
-+    public long getBytesRead() {
-+        synchronized (zsRef) {
-+            ensureOpen();
-+            return getBytesRead(zsRef.address());
-+        }
-     }
- 
-     /**
-@@ -371,9 +391,11 @@
-      * @return the total (non-negative) number of compressed bytes output so far
-      * @since 1.5
-      */
--    public synchronized long getBytesWritten() {
--        ensureOpen();
--        return getBytesWritten(strm);
-+    public long getBytesWritten() {
-+        synchronized (zsRef) {
-+            ensureOpen();
-+            return getBytesWritten(zsRef.address());
-+        }
-     }
- 
-     /**
-@@ -380,12 +402,14 @@
-      * Resets deflater so that a new set of input data can be processed.
-      * Keeps current compression level and strategy settings.
-      */
--    public synchronized void reset() {
--        ensureOpen();
--        reset(strm);
--        finish = false;
--        finished = false;
--        off = len = 0;
-+    public void reset() {
-+        synchronized (zsRef) {
-+            ensureOpen();
-+            reset(zsRef.address());
-+            finish = false;
-+            finished = false;
-+            off = len = 0;
-+        }
-     }
- 
-     /**
-@@ -395,11 +419,14 @@
-      * finalize() method. Once this method is called, the behavior
-      * of the Deflater object is undefined.
-      */
--    public synchronized void end() {
--        if (strm != 0) {
--            end(strm);
--            strm = 0;
--            buf = null;
-+    public void end() {
-+        synchronized (zsRef) {
-+            long addr = zsRef.address();
-+            zsRef.clear();
-+            if (addr != 0) {
-+                end(addr);
-+                buf = null;
-+            }
-         }
-     }
- 
-@@ -411,18 +438,19 @@
-     }
- 
-     private void ensureOpen() {
--        if (strm == 0)
--            throw new NullPointerException();
-+        assert Thread.holdsLock(zsRef);
-+        if (zsRef.address() == 0)
-+            throw new NullPointerException("Deflater has been closed");
-     }
- 
-     private static native void initIDs();
-     private native static long init(int level, int strategy, boolean nowrap);
--    private native static void setDictionary(long strm, byte[] b, int off,
-+    private native static void setDictionary(long addr, byte[] b, int off,
-                                              int len);
--    private native int deflateBytes(byte[] b, int off, int len);
--    private native static int getAdler(long strm);
--    private native static long getBytesRead(long strm);
--    private native static long getBytesWritten(long strm);
--    private native static void reset(long strm);
--    private native static void end(long strm);
-+    private native int deflateBytes(long addr, byte[] b, int off, int len);
-+    private native static int getAdler(long addr);
-+    private native static long getBytesRead(long addr);
-+    private native static long getBytesWritten(long addr);
-+    private native static void reset(long addr);
-+    private native static void end(long addr);
- }
---- openjdk.orig/jdk/src/share/classes/java/util/zip/Inflater.java	Tue Nov 24 12:11:26 2009
-+++ openjdk/jdk/src/share/classes/java/util/zip/Inflater.java	Tue Nov 24 12:11:25 2009
-@@ -1,5 +1,5 @@
- /*
-- * Copyright 1996-2006 Sun Microsystems, Inc.  All Rights Reserved.
-+ * Copyright 1996-2009 Sun Microsystems, Inc.  All Rights Reserved.
-  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-  *
-  * This code is free software; you can redistribute it and/or modify it
-@@ -72,12 +72,14 @@
-  */
- public
- class Inflater {
--    private long strm;
--    private byte[] buf = new byte[0];
-+    private final ZStreamRef zsRef;
-+    private byte[] buf = emptyBuf;
-     private int off, len;
-     private boolean finished;
-     private boolean needDict;
- 
-+    private static byte[] emptyBuf = new byte[0];
-+
-     static {
-         /* Zip library is loaded from System.initializeSystemClass */
-         initIDs();
-@@ -95,7 +97,7 @@
-      * @param nowrap if true then support GZIP compatible compression
-      */
-     public Inflater(boolean nowrap) {
--        strm = init(nowrap);
-+        zsRef = new ZStreamRef(init(nowrap));
-     }
- 
-     /**
-@@ -114,7 +116,7 @@
-      * @param len the length of the input data
-      * @see Inflater#needsInput
-      */
--    public synchronized void setInput(byte[] b, int off, int len) {
-+    public void setInput(byte[] b, int off, int len) {
-         if (b == null) {
-             throw new NullPointerException();
-         }
-@@ -121,9 +123,11 @@
-         if (off < 0 || len < 0 || off > b.length - len) {
-             throw new ArrayIndexOutOfBoundsException();
-         }
--        this.buf = b;
--        this.off = off;
--        this.len = len;
-+        synchronized (zsRef) {
-+            this.buf = b;
-+            this.off = off;
-+            this.len = len;
-+        }
-     }
- 
-     /**
-@@ -148,15 +152,18 @@
-      * @see Inflater#needsDictionary
-      * @see Inflater#getAdler
-      */
--    public synchronized void setDictionary(byte[] b, int off, int len) {
--        if (strm == 0 || b == null) {
-+    public void setDictionary(byte[] b, int off, int len) {
-+        if (b == null) {
-             throw new NullPointerException();
-         }
-         if (off < 0 || len < 0 || off > b.length - len) {
-             throw new ArrayIndexOutOfBoundsException();
-         }
--        setDictionary(strm, b, off, len);
--        needDict = false;
-+        synchronized (zsRef) {
-+            ensureOpen();
-+            setDictionary(zsRef.address(), b, off, len);
-+            needDict = false;
-+        }
-     }
- 
-     /**
-@@ -178,8 +185,10 @@
-      * buffer after decompression has finished.
-      * @return the total number of bytes remaining in the input buffer
-      */
--    public synchronized int getRemaining() {
--        return len;
-+    public int getRemaining() {
-+        synchronized (zsRef) {
-+            return len;
-+        }
-     }
- 
-     /**
-@@ -188,8 +197,10 @@
-      * to provide more input.
-      * @return true if no data remains in the input buffer
-      */
--    public synchronized boolean needsInput() {
--        return len <= 0;
-+    public boolean needsInput() {
-+        synchronized (zsRef) {
-+            return len <= 0;
-+        }
-     }
- 
-     /**
-@@ -197,8 +208,10 @@
-      * @return true if a preset dictionary is needed for decompression
-      * @see Inflater#setDictionary
-      */
--    public synchronized boolean needsDictionary() {
--        return needDict;
-+    public boolean needsDictionary() {
-+        synchronized (zsRef) {
-+            return needDict;
-+        }
-     }
- 
-     /**
-@@ -207,8 +220,10 @@
-      * @return true if the end of the compressed data stream has been
-      * reached
-      */
--    public synchronized boolean finished() {
--        return finished;
-+    public boolean finished() {
-+        synchronized (zsRef) {
-+            return finished;
-+        }
-     }
- 
-     /**
-@@ -226,7 +241,7 @@
-      * @see Inflater#needsInput
-      * @see Inflater#needsDictionary
-      */
--    public synchronized int inflate(byte[] b, int off, int len)
-+    public int inflate(byte[] b, int off, int len)
-         throws DataFormatException
-     {
-         if (b == null) {
-@@ -235,7 +250,10 @@
-         if (off < 0 || len < 0 || off > b.length - len) {
-             throw new ArrayIndexOutOfBoundsException();
-         }
--        return inflateBytes(b, off, len);
-+        synchronized (zsRef) {
-+            ensureOpen();
-+            return inflateBytes(zsRef.address(), b, off, len);
-+        }
-     }
- 
-     /**
-@@ -259,9 +277,11 @@
-      * Returns the ADLER-32 value of the uncompressed data.
-      * @return the ADLER-32 value of the uncompressed data
-      */
--    public synchronized int getAdler() {
--        ensureOpen();
--        return getAdler(strm);
-+    public int getAdler() {
-+        synchronized (zsRef) {
-+            ensureOpen();
-+            return getAdler(zsRef.address());
-+        }
-     }
- 
-     /**
-@@ -283,9 +303,11 @@
-      * @return the total (non-negative) number of compressed bytes input so far
-      * @since 1.5
-      */
--    public synchronized long getBytesRead() {
--        ensureOpen();
--        return getBytesRead(strm);
-+    public long getBytesRead() {
-+        synchronized (zsRef) {
-+            ensureOpen();
-+            return getBytesRead(zsRef.address());
-+        }
-     }
- 
-     /**
-@@ -307,20 +329,25 @@
-      * @return the total (non-negative) number of uncompressed bytes output so far
-      * @since 1.5
-      */
--    public synchronized long getBytesWritten() {
--        ensureOpen();
--        return getBytesWritten(strm);
-+    public long getBytesWritten() {
-+        synchronized (zsRef) {
-+            ensureOpen();
-+            return getBytesWritten(zsRef.address());
-+        }
-     }
- 
-     /**
-      * Resets inflater so that a new set of input data can be processed.
-      */
--    public synchronized void reset() {
--        ensureOpen();
--        reset(strm);
--        finished = false;
--        needDict = false;
--        off = len = 0;
-+    public void reset() {
-+        synchronized (zsRef) {
-+            ensureOpen();
-+            reset(zsRef.address());
-+            buf = emptyBuf;
-+            finished = false;
-+            needDict = false;
-+            off = len = 0;
-+        }
-     }
- 
-     /**
-@@ -330,11 +357,14 @@
-      * method. Once this method is called, the behavior of the Inflater
-      * object is undefined.
-      */
--    public synchronized void end() {
--        if (strm != 0) {
--            end(strm);
--            strm = 0;
--            buf = null;
-+    public void end() {
-+        synchronized (zsRef) {
-+            long addr = zsRef.address();
-+            zsRef.clear();
-+            if (addr != 0) {
-+                end(addr);
-+                buf = null;
-+            }
-         }
-     }
- 
-@@ -346,19 +376,24 @@
-     }
- 
-     private void ensureOpen () {
--        if (strm == 0)
--            throw new NullPointerException();
-+        assert Thread.holdsLock(zsRef);
-+        if (zsRef.address() == 0)
-+            throw new NullPointerException("Inflater has been closed");
-     }
- 
-+    private static class NativeStrm {
-+        long strm;
-+    }
-+
-     private native static void initIDs();
-     private native static long init(boolean nowrap);
--    private native static void setDictionary(long strm, byte[] b, int off,
-+    private native static void setDictionary(long addr, byte[] b, int off,
-                                              int len);
--    private native int inflateBytes(byte[] b, int off, int len)
-+    private native int inflateBytes(long addr, byte[] b, int off, int len)
-             throws DataFormatException;
--    private native static int getAdler(long strm);
--    private native static long getBytesRead(long strm);
--    private native static long getBytesWritten(long strm);
--    private native static void reset(long strm);
--    private native static void end(long strm);
-+    private native static int getAdler(long addr);
-+    private native static long getBytesRead(long addr);
-+    private native static long getBytesWritten(long addr);
-+    private native static void reset(long addr);
-+    private native static void end(long addr);
- }
---- /dev/null	Tue Nov 24 12:11:34 2009
-+++ openjdk/jdk/src/share/classes/java/util/zip/ZStreamRef.java	Tue Nov 24 12:11:33 2009
-@@ -0,0 +1,46 @@
-+/*
-+ * Copyright 2009 Sun Microsystems, Inc.  All Rights Reserved.
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * This code is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License version 2 only, as
-+ * published by the Free Software Foundation.  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.
-+ */
-+
-+package java.util.zip;
-+
-+/**
-+ * A reference to the native zlib's z_stream structure.
-+ */
-+
-+class ZStreamRef {
-+
-+    private long address;
-+    ZStreamRef (long address) {
-+        this.address = address;
-+    }
-+
-+    long address() {
-+        return address;
-+    }
-+
-+    void clear() {
-+        address = 0;
-+    }
-+}
---- openjdk.orig/jdk/src/share/native/java/util/zip/Deflater.c	Tue Nov 24 12:11:38 2009
-+++ openjdk/jdk/src/share/native/java/util/zip/Deflater.c	Tue Nov 24 12:11:37 2009
-@@ -1,5 +1,5 @@
- /*
-- * Copyright 1997-2005 Sun Microsystems, Inc.  All Rights Reserved.
-+ * Copyright 1996-2009 Sun Microsystems, Inc.  All Rights Reserved.
-  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-  *
-  * This code is free software; you can redistribute it and/or modify it
-@@ -38,7 +38,6 @@
- 
- #define DEF_MEM_LEVEL 8
- 
--static jfieldID strmID;
- static jfieldID levelID;
- static jfieldID strategyID;
- static jfieldID setParamsID;
-@@ -49,7 +48,6 @@
- JNIEXPORT void JNICALL
- Java_java_util_zip_Deflater_initIDs(JNIEnv *env, jclass cls)
- {
--    strmID = (*env)->GetFieldID(env, cls, "strm", "J");
-     levelID = (*env)->GetFieldID(env, cls, "level", "I");
-     strategyID = (*env)->GetFieldID(env, cls, "strategy", "I");
-     setParamsID = (*env)->GetFieldID(env, cls, "setParams", "Z");
-@@ -62,40 +60,40 @@
- 
- JNIEXPORT jlong JNICALL
- Java_java_util_zip_Deflater_init(JNIEnv *env, jclass cls, jint level,
--                                 jint strategy, jboolean nowrap)
-+				 jint strategy, jboolean nowrap)
- {
-     z_stream *strm = calloc(1, sizeof(z_stream));
- 
-     if (strm == 0) {
--        JNU_ThrowOutOfMemoryError(env, 0);
--        return jlong_zero;
-+	JNU_ThrowOutOfMemoryError(env, 0);
-+	return jlong_zero;
-     } else {
--        char *msg;
--        switch (deflateInit2(strm, level, Z_DEFLATED,
--                             nowrap ? -MAX_WBITS : MAX_WBITS,
--                             DEF_MEM_LEVEL, strategy)) {
--          case Z_OK:
--            return ptr_to_jlong(strm);
--          case Z_MEM_ERROR:
--            free(strm);
--            JNU_ThrowOutOfMemoryError(env, 0);
--            return jlong_zero;
--          case Z_STREAM_ERROR:
--            free(strm);
--            JNU_ThrowIllegalArgumentException(env, 0);
--            return jlong_zero;
--          default:
--            msg = strm->msg;
--            free(strm);
--            JNU_ThrowInternalError(env, msg);
--            return jlong_zero;
--        }
-+	char *msg;
-+	switch (deflateInit2(strm, level, Z_DEFLATED,
-+			     nowrap ? -MAX_WBITS : MAX_WBITS,
-+			     DEF_MEM_LEVEL, strategy)) {
-+	  case Z_OK:
-+	    return ptr_to_jlong(strm);
-+	  case Z_MEM_ERROR:
-+	    free(strm);
-+	    JNU_ThrowOutOfMemoryError(env, 0);
-+	    return jlong_zero;
-+	  case Z_STREAM_ERROR:
-+	    free(strm);
-+	    JNU_ThrowIllegalArgumentException(env, 0);
-+	    return jlong_zero;
-+	  default:
-+	    msg = strm->msg;
-+	    free(strm);
-+	    JNU_ThrowInternalError(env, msg);
-+	    return jlong_zero;
-+	}
-     }
- }
- 
- JNIEXPORT void JNICALL
--Java_java_util_zip_Deflater_setDictionary(JNIEnv *env, jclass cls, jlong strm,
--                                          jarray b, jint off, jint len)
-+Java_java_util_zip_Deflater_setDictionary(JNIEnv *env, jclass cls, jlong addr,
-+					  jarray b, jint off, jint len)
- {
-     Bytef *buf = (*env)->GetPrimitiveArrayCritical(env, b, 0);
-     int res;
-@@ -102,156 +100,155 @@
-     if (buf == 0) {/* out of memory */
-         return;
-     }
--    res = deflateSetDictionary((z_stream *)jlong_to_ptr(strm), buf + off, len);
-+    res = deflateSetDictionary((z_stream *)jlong_to_ptr(addr), buf + off, len);
-     (*env)->ReleasePrimitiveArrayCritical(env, b, buf, 0);
-     switch (res) {
-     case Z_OK:
--        break;
-+	break;
-     case Z_STREAM_ERROR:
--        JNU_ThrowIllegalArgumentException(env, 0);
--        break;
-+	JNU_ThrowIllegalArgumentException(env, 0);
-+	break;
-     default:
--        JNU_ThrowInternalError(env, ((z_stream *)jlong_to_ptr(strm))->msg);
--        break;
-+	JNU_ThrowInternalError(env, ((z_stream *)jlong_to_ptr(addr))->msg);
-+	break;
-     }
- }
- 
- JNIEXPORT jint JNICALL
--Java_java_util_zip_Deflater_deflateBytes(JNIEnv *env, jobject this,
--                                         jarray b, jint off, jint len)
-+Java_java_util_zip_Deflater_deflateBytes(JNIEnv *env, jobject this, jlong addr,
-+					 jarray b, jint off, jint len)
- {
--    z_stream *strm = jlong_to_ptr((*env)->GetLongField(env, this, strmID));
-+    z_stream *strm = jlong_to_ptr(addr);
- 
--    if (strm == 0) {
--        JNU_ThrowNullPointerException(env, 0);
--        return 0;
--    } else {
--        jarray this_buf = (*env)->GetObjectField(env, this, bufID);
--        jint this_off = (*env)->GetIntField(env, this, offID);
--        jint this_len = (*env)->GetIntField(env, this, lenID);
--        jbyte *in_buf;
--        jbyte *out_buf;
--        int res;
--        if ((*env)->GetBooleanField(env, this, setParamsID)) {
--            int level = (*env)->GetIntField(env, this, levelID);
--            int strategy = (*env)->GetIntField(env, this, strategyID);
-+    jarray this_buf = (*env)->GetObjectField(env, this, bufID);
-+    jint this_off = (*env)->GetIntField(env, this, offID);
-+    jint this_len = (*env)->GetIntField(env, this, lenID);
-+    jbyte *in_buf;
-+    jbyte *out_buf;
-+    int res;
-+    if ((*env)->GetBooleanField(env, this, setParamsID)) {
-+        int level = (*env)->GetIntField(env, this, levelID);
-+	int strategy = (*env)->GetIntField(env, this, strategyID);
- 
--            in_buf = (jbyte *) malloc(this_len);
--            if (in_buf == 0) {
--                return 0;
--            }
--            (*env)->GetByteArrayRegion(env, this_buf, this_off, this_len, in_buf);
-+	in_buf = (jbyte *) malloc(this_len);
-+	if (in_buf == 0) {
-+	    JNU_ThrowOutOfMemoryError(env, 0);
-+	    return 0;
-+	}
-+	(*env)->GetByteArrayRegion(env, this_buf, this_off, this_len, in_buf);
- 
--            out_buf = (jbyte *) malloc(len);
--            if (out_buf == 0) {
--                free(in_buf);
--                return 0;
--            }
-+	out_buf = (jbyte *) malloc(len);
-+	if (out_buf == 0) {
-+            free(in_buf);
-+	    JNU_ThrowOutOfMemoryError(env, 0);
-+	    return 0;
-+	}
- 
--            strm->next_in = (Bytef *) in_buf;
--            strm->next_out = (Bytef *) out_buf;
--            strm->avail_in = this_len;
--            strm->avail_out = len;
--            res = deflateParams(strm, level, strategy);
-+	strm->next_in = (Bytef *) in_buf;
-+	strm->next_out = (Bytef *) out_buf;
-+	strm->avail_in = this_len;
-+	strm->avail_out = len;
-+	res = deflateParams(strm, level, strategy);
- 
--            if (res == Z_OK) {
--                (*env)->SetByteArrayRegion(env, b, off, len - strm->avail_out, out_buf);
--            }
--            free(out_buf);
--            free(in_buf);
-+	if (res == Z_OK) {
-+	    (*env)->SetByteArrayRegion(env, b, off, len - strm->avail_out, out_buf);
-+	}
-+	free(out_buf);
-+	free(in_buf);
- 
--            switch (res) {
--            case Z_OK:
--                (*env)->SetBooleanField(env, this, setParamsID, JNI_FALSE);
--                this_off += this_len - strm->avail_in;
--                (*env)->SetIntField(env, this, offID, this_off);
--                (*env)->SetIntField(env, this, lenID, strm->avail_in);
--                return len - strm->avail_out;
--            case Z_BUF_ERROR:
--                (*env)->SetBooleanField(env, this, setParamsID, JNI_FALSE);
--                return 0;
--            default:
--                JNU_ThrowInternalError(env, strm->msg);
--                return 0;
--            }
--        } else {
--            jboolean finish = (*env)->GetBooleanField(env, this, finishID);
-+	switch (res) {
-+	case Z_OK:
-+	    (*env)->SetBooleanField(env, this, setParamsID, JNI_FALSE);
-+	    this_off += this_len - strm->avail_in;
-+	    (*env)->SetIntField(env, this, offID, this_off);
-+	    (*env)->SetIntField(env, this, lenID, strm->avail_in);
-+	    return len - strm->avail_out;
-+	case Z_BUF_ERROR:
-+	    (*env)->SetBooleanField(env, this, setParamsID, JNI_FALSE);
-+	    return 0;
-+	default:
-+	    JNU_ThrowInternalError(env, strm->msg);
-+	    return 0;
-+	}
-+    } else {
-+        jboolean finish = (*env)->GetBooleanField(env, this, finishID);
- 
--            in_buf = (jbyte *) malloc(this_len);
--            if (in_buf == 0) {
--                return 0;
--            }
--            (*env)->GetByteArrayRegion(env, this_buf, this_off, this_len, in_buf);
-+	in_buf = (jbyte *) malloc(this_len);
-+	if (in_buf == 0) {
-+	    JNU_ThrowOutOfMemoryError(env, 0);
-+	    return 0;
-+	}
-+	(*env)->GetByteArrayRegion(env, this_buf, this_off, this_len, in_buf);
- 
--            out_buf = (jbyte *) malloc(len);
--            if (out_buf == 0) {
--                free(in_buf);
--                return 0;
--            }
-+	out_buf = (jbyte *) malloc(len);
-+	if (out_buf == 0) {
-+	    free(in_buf);
-+	    JNU_ThrowOutOfMemoryError(env, 0);
-+	    return 0;
-+	}
- 
--            strm->next_in = (Bytef *) in_buf;
--            strm->next_out = (Bytef *) out_buf;
--            strm->avail_in = this_len;
--            strm->avail_out = len;
--            res = deflate(strm, finish ? Z_FINISH : Z_NO_FLUSH);
-+	strm->next_in = (Bytef *) in_buf;
-+	strm->next_out = (Bytef *) out_buf;
-+	strm->avail_in = this_len;
-+	strm->avail_out = len;
-+	res = deflate(strm, finish ? Z_FINISH : Z_NO_FLUSH);
- 
--            if (res == Z_STREAM_END || res == Z_OK) {
--                (*env)->SetByteArrayRegion(env, b, off, len - strm->avail_out, out_buf);
--            }
--            free(out_buf);
--            free(in_buf);
-+	if (res == Z_STREAM_END || res == Z_OK) {
-+	    (*env)->SetByteArrayRegion(env, b, off, len - strm->avail_out, out_buf);
-+	}
-+	free(out_buf);
-+	free(in_buf);
- 
--            switch (res) {
--            case Z_STREAM_END:
--                (*env)->SetBooleanField(env, this, finishedID, JNI_TRUE);
--                /* fall through */
--            case Z_OK:
--                this_off += this_len - strm->avail_in;
--                (*env)->SetIntField(env, this, offID, this_off);
--                (*env)->SetIntField(env, this, lenID, strm->avail_in);
--                return len - strm->avail_out;
--            case Z_BUF_ERROR:
--                return 0;
--            default:
--                JNU_ThrowInternalError(env, strm->msg);
--                return 0;
--            }
--        }
-+	switch (res) {
-+	case Z_STREAM_END:
-+	    (*env)->SetBooleanField(env, this, finishedID, JNI_TRUE);
-+	    /* fall through */
-+	case Z_OK:
-+	    this_off += this_len - strm->avail_in;
-+	    (*env)->SetIntField(env, this, offID, this_off);
-+	    (*env)->SetIntField(env, this, lenID, strm->avail_in);
-+	    return len - strm->avail_out;
-+	case Z_BUF_ERROR:
-+	    return 0;
-+	default:
-+	    JNU_ThrowInternalError(env, strm->msg);
-+	    return 0;
-+	}
-     }
- }
- 
- JNIEXPORT jint JNICALL
--Java_java_util_zip_Deflater_getAdler(JNIEnv *env, jclass cls, jlong strm)
-+Java_java_util_zip_Deflater_getAdler(JNIEnv *env, jclass cls, jlong addr)
- {
--    return ((z_stream *)jlong_to_ptr(strm))->adler;
-+    return ((z_stream *)jlong_to_ptr(addr))->adler;
- }
- 
- JNIEXPORT jlong JNICALL
--Java_java_util_zip_Deflater_getBytesRead(JNIEnv *env, jclass cls, jlong strm)
-+Java_java_util_zip_Deflater_getBytesRead(JNIEnv *env, jclass cls, jlong addr)
- {
--    return ((z_stream *)jlong_to_ptr(strm))->total_in;
-+    return ((z_stream *)jlong_to_ptr(addr))->total_in;
- }
- 
- JNIEXPORT jlong JNICALL
--Java_java_util_zip_Deflater_getBytesWritten(JNIEnv *env, jclass cls, jlong strm)
-+Java_java_util_zip_Deflater_getBytesWritten(JNIEnv *env, jclass cls, jlong addr)
- {
--    return ((z_stream *)jlong_to_ptr(strm))->total_out;
-+    return ((z_stream *)jlong_to_ptr(addr))->total_out;
- }
- 
- JNIEXPORT void JNICALL
--Java_java_util_zip_Deflater_reset(JNIEnv *env, jclass cls, jlong strm)
-+Java_java_util_zip_Deflater_reset(JNIEnv *env, jclass cls, jlong addr)
- {
--    if (deflateReset((z_stream *)jlong_to_ptr(strm)) != Z_OK) {
--        JNU_ThrowInternalError(env, 0);
-+    if (deflateReset((z_stream *)jlong_to_ptr(addr)) != Z_OK) {
-+	JNU_ThrowInternalError(env, 0);
-     }
- }
- 
- JNIEXPORT void JNICALL
--Java_java_util_zip_Deflater_end(JNIEnv *env, jclass cls, jlong strm)
-+Java_java_util_zip_Deflater_end(JNIEnv *env, jclass cls, jlong addr)
- {
--    if (deflateEnd((z_stream *)jlong_to_ptr(strm)) == Z_STREAM_ERROR) {
--        JNU_ThrowInternalError(env, 0);
-+    if (deflateEnd((z_stream *)jlong_to_ptr(addr)) == Z_STREAM_ERROR) {
-+	JNU_ThrowInternalError(env, 0);
-     } else {
--        free((z_stream *)jlong_to_ptr(strm));
-+	free((z_stream *)jlong_to_ptr(addr));
-     }
- }
---- openjdk.orig/jdk/src/share/native/java/util/zip/Inflater.c	Tue Nov 24 12:11:47 2009
-+++ openjdk/jdk/src/share/native/java/util/zip/Inflater.c	Tue Nov 24 12:11:45 2009
-@@ -1,5 +1,5 @@
- /*
-- * Copyright 1997-2005 Sun Microsystems, Inc.  All Rights Reserved.
-+ * Copyright 1996-2009 Sun Microsystems, Inc.  All Rights Reserved.
-  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-  *
-  * This code is free software; you can redistribute it and/or modify it
-@@ -39,9 +39,8 @@
- #include "java_util_zip_Inflater.h"
- 
- #define ThrowDataFormatException(env, msg) \
--        JNU_ThrowByName(env, "java/util/zip/DataFormatException", msg)
-+	JNU_ThrowByName(env, "java/util/zip/DataFormatException", msg)
- 
--static jfieldID strmID;
- static jfieldID needDictID;
- static jfieldID finishedID;
- static jfieldID bufID, offID, lenID;
-@@ -49,7 +48,6 @@
- JNIEXPORT void JNICALL
- Java_java_util_zip_Inflater_initIDs(JNIEnv *env, jclass cls)
- {
--    strmID = (*env)->GetFieldID(env, cls, "strm", "J");
-     needDictID = (*env)->GetFieldID(env, cls, "needDict", "Z");
-     finishedID = (*env)->GetFieldID(env, cls, "finished", "Z");
-     bufID = (*env)->GetFieldID(env, cls, "buf", "[B");
-@@ -63,153 +61,151 @@
-     z_stream *strm = calloc(1, sizeof(z_stream));
- 
-     if (strm == 0) {
--        JNU_ThrowOutOfMemoryError(env, 0);
--        return jlong_zero;
-+	JNU_ThrowOutOfMemoryError(env, 0);
-+	return jlong_zero;
-     } else {
--        char *msg;
--        switch (inflateInit2(strm, nowrap ? -MAX_WBITS : MAX_WBITS)) {
--          case Z_OK:
--            return ptr_to_jlong(strm);
--          case Z_MEM_ERROR:
--            free(strm);
--            JNU_ThrowOutOfMemoryError(env, 0);
--            return jlong_zero;
--          default:
--            msg = strm->msg;
--            free(strm);
--            JNU_ThrowInternalError(env, msg);
--            return jlong_zero;
--        }
-+	char *msg;
-+	switch (inflateInit2(strm, nowrap ? -MAX_WBITS : MAX_WBITS)) {
-+	  case Z_OK:
-+	    return ptr_to_jlong(strm);
-+	  case Z_MEM_ERROR:
-+	    free(strm);
-+	    JNU_ThrowOutOfMemoryError(env, 0);
-+	    return jlong_zero;
-+	  default:
-+	    msg = strm->msg;
-+	    free(strm);
-+	    JNU_ThrowInternalError(env, msg);
-+	    return jlong_zero;
-+	}
-     }
- }
- 
- JNIEXPORT void JNICALL
--Java_java_util_zip_Inflater_setDictionary(JNIEnv *env, jclass cls, jlong strm,
--                                          jarray b, jint off, jint len)
-+Java_java_util_zip_Inflater_setDictionary(JNIEnv *env, jclass cls, jlong addr,
-+					  jarray b, jint off, jint len)
- {
-     Bytef *buf = (*env)->GetPrimitiveArrayCritical(env, b, 0);
-     int res;
-     if (buf == 0) /* out of memory */
-         return;
--    res = inflateSetDictionary(jlong_to_ptr(strm), buf + off, len);
-+    res = inflateSetDictionary(jlong_to_ptr(addr), buf + off, len);
-     (*env)->ReleasePrimitiveArrayCritical(env, b, buf, 0);
-     switch (res) {
-     case Z_OK:
--        break;
-+	break;
-     case Z_STREAM_ERROR:
-     case Z_DATA_ERROR:
--        JNU_ThrowIllegalArgumentException(env, ((z_stream *)jlong_to_ptr(strm))->msg);
--        break;
-+	JNU_ThrowIllegalArgumentException(env, ((z_stream *)jlong_to_ptr(addr))->msg);
-+	break;
-     default:
--        JNU_ThrowInternalError(env, ((z_stream *)jlong_to_ptr(strm))->msg);
--        break;
-+	JNU_ThrowInternalError(env, ((z_stream *)jlong_to_ptr(addr))->msg);
-+	break;
-     }
- }
- 
- JNIEXPORT jint JNICALL
--Java_java_util_zip_Inflater_inflateBytes(JNIEnv *env, jobject this,
--                                         jarray b, jint off, jint len)
-+Java_java_util_zip_Inflater_inflateBytes(JNIEnv *env, jobject this, jlong addr,
-+					 jarray b, jint off, jint len)
- {
--    z_stream *strm = jlong_to_ptr((*env)->GetLongField(env, this, strmID));
-+    z_stream *strm = jlong_to_ptr(addr);
- 
--    if (strm == 0) {
--        JNU_ThrowNullPointerException(env, 0);
--        return 0;
--    } else {
--        jarray this_buf = (jarray)(*env)->GetObjectField(env, this, bufID);
--        jint this_off = (*env)->GetIntField(env, this, offID);
--        jint this_len = (*env)->GetIntField(env, this, lenID);
--        jbyte *in_buf;
--        jbyte *out_buf;
--        int ret;
-+    jarray this_buf = (jarray)(*env)->GetObjectField(env, this, bufID);
-+    jint this_off = (*env)->GetIntField(env, this, offID);
-+    jint this_len = (*env)->GetIntField(env, this, lenID);
-+    jbyte *in_buf;
-+    jbyte *out_buf;
-+    int ret;
- 
--        in_buf = (jbyte *) malloc(this_len);
--        if (in_buf == 0) {
--            return 0;
--        }
--        (*env)->GetByteArrayRegion(env, this_buf, this_off, this_len, in_buf);
-+    in_buf = (jbyte *) malloc(this_len);
-+    if (in_buf == 0) {
-+        JNU_ThrowOutOfMemoryError(env, 0);	
-+	return 0;
-+    }
-+    (*env)->GetByteArrayRegion(env, this_buf, this_off, this_len, in_buf);
- 
--        out_buf = (jbyte *) malloc(len);
--        if (out_buf == 0) {
--            free(in_buf);
--            return 0;
--        }
-+    out_buf = (jbyte *) malloc(len);
-+    if (out_buf == 0) {
-+        free(in_buf);
-+	JNU_ThrowOutOfMemoryError(env, 0);
-+	return 0;
-+    }
- 
--        strm->next_in  = (Bytef *) in_buf;
--        strm->next_out = (Bytef *) out_buf;
--        strm->avail_in  = this_len;
--        strm->avail_out = len;
--        ret = inflate(strm, Z_PARTIAL_FLUSH);
-+    strm->next_in  = (Bytef *) in_buf;
-+    strm->next_out = (Bytef *) out_buf;
-+    strm->avail_in  = this_len;
-+    strm->avail_out = len;
-+    ret = inflate(strm, Z_PARTIAL_FLUSH);
- 
--        if (ret == Z_STREAM_END || ret == Z_OK) {
--            (*env)->SetByteArrayRegion(env, b, off, len - strm->avail_out, out_buf);
--        }
--        free(out_buf);
--        free(in_buf);
-+    if (ret == Z_STREAM_END || ret == Z_OK) {
-+        (*env)->SetByteArrayRegion(env, b, off, len - strm->avail_out, out_buf);
-+    }
-+    free(out_buf);
-+    free(in_buf);
- 
--        switch (ret) {
--        case Z_STREAM_END:
--            (*env)->SetBooleanField(env, this, finishedID, JNI_TRUE);
--            /* fall through */
--        case Z_OK:
--            this_off += this_len - strm->avail_in;
--            (*env)->SetIntField(env, this, offID, this_off);
--            (*env)->SetIntField(env, this, lenID, strm->avail_in);
--            return len - strm->avail_out;
--        case Z_NEED_DICT:
--            (*env)->SetBooleanField(env, this, needDictID, JNI_TRUE);
--            /* Might have consumed some input here! */
--            this_off += this_len - strm->avail_in;
--            (*env)->SetIntField(env, this, offID, this_off);
--            (*env)->SetIntField(env, this, lenID, strm->avail_in);
--            return 0;
--        case Z_BUF_ERROR:
--            return 0;
--        case Z_DATA_ERROR:
--            ThrowDataFormatException(env, strm->msg);
--            return 0;
--        case Z_MEM_ERROR:
--            JNU_ThrowOutOfMemoryError(env, 0);
--            return 0;
--        default:
--            JNU_ThrowInternalError(env, strm->msg);
--            return 0;
--        }
-+    switch (ret) {
-+    case Z_STREAM_END:
-+        (*env)->SetBooleanField(env, this, finishedID, JNI_TRUE);
-+	/* fall through */
-+    case Z_OK:
-+        this_off += this_len - strm->avail_in;
-+	(*env)->SetIntField(env, this, offID, this_off);
-+	(*env)->SetIntField(env, this, lenID, strm->avail_in);
-+	return len - strm->avail_out;
-+    case Z_NEED_DICT:
-+        (*env)->SetBooleanField(env, this, needDictID, JNI_TRUE);
-+	/* Might have consumed some input here! */
-+	this_off += this_len - strm->avail_in;
-+	(*env)->SetIntField(env, this, offID, this_off);
-+	(*env)->SetIntField(env, this, lenID, strm->avail_in);
-+	return 0;
-+    case Z_BUF_ERROR:
-+        return 0;
-+    case Z_DATA_ERROR:
-+        ThrowDataFormatException(env, strm->msg);
-+	return 0;
-+    case Z_MEM_ERROR:
-+        JNU_ThrowOutOfMemoryError(env, 0);
-+	return 0;
-+    default:
-+        JNU_ThrowInternalError(env, strm->msg);
-+	return 0;
-     }
- }
- 
- JNIEXPORT jint JNICALL
--Java_java_util_zip_Inflater_getAdler(JNIEnv *env, jclass cls, jlong strm)
-+Java_java_util_zip_Inflater_getAdler(JNIEnv *env, jclass cls, jlong addr)
- {
--    return ((z_stream *)jlong_to_ptr(strm))->adler;
-+    return ((z_stream *)jlong_to_ptr(addr))->adler;
- }
- 
- JNIEXPORT jlong JNICALL
--Java_java_util_zip_Inflater_getBytesRead(JNIEnv *env, jclass cls, jlong strm)
-+Java_java_util_zip_Inflater_getBytesRead(JNIEnv *env, jclass cls, jlong addr)
- {
--    return ((z_stream *)jlong_to_ptr(strm))->total_in;
-+    return ((z_stream *)jlong_to_ptr(addr))->total_in;
- }
- 
- JNIEXPORT jlong JNICALL
--Java_java_util_zip_Inflater_getBytesWritten(JNIEnv *env, jclass cls, jlong strm)
-+Java_java_util_zip_Inflater_getBytesWritten(JNIEnv *env, jclass cls, jlong addr)
- {
--    return ((z_stream *)jlong_to_ptr(strm))->total_out;
-+    return ((z_stream *)jlong_to_ptr(addr))->total_out;
- }
- 
- JNIEXPORT void JNICALL
--Java_java_util_zip_Inflater_reset(JNIEnv *env, jclass cls, jlong strm)
-+Java_java_util_zip_Inflater_reset(JNIEnv *env, jclass cls, jlong addr)
- {
--    if (inflateReset(jlong_to_ptr(strm)) != Z_OK) {
--        JNU_ThrowInternalError(env, 0);
-+    if (inflateReset(jlong_to_ptr(addr)) != Z_OK) {
-+	JNU_ThrowInternalError(env, 0);
-     }
- }
- 
- JNIEXPORT void JNICALL
--Java_java_util_zip_Inflater_end(JNIEnv *env, jclass cls, jlong strm)
-+Java_java_util_zip_Inflater_end(JNIEnv *env, jclass cls, jlong addr)
- {
--    if (inflateEnd(jlong_to_ptr(strm)) == Z_STREAM_ERROR) {
--        JNU_ThrowInternalError(env, 0);
-+    if (inflateEnd(jlong_to_ptr(addr)) == Z_STREAM_ERROR) {
-+	JNU_ThrowInternalError(env, 0);
-     } else {
--        free(jlong_to_ptr(strm));
-+	free(jlong_to_ptr(addr));
-     }
- }
-+
--- a/patches/security/20100330/6887703.patch	Sun Apr 18 17:03:04 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +0,0 @@
---- openjdk.orig/jdk/src/share/classes/sun/awt/dnd/SunDropTargetContextPeer.java	Fri Mar  5 12:31:35 2010
-+++ openjdk/jdk/src/share/classes/sun/awt/dnd/SunDropTargetContextPeer.java	Fri Mar  5 12:31:33 2010
-@@ -57,6 +57,7 @@
- import sun.awt.SunToolkit;
- import sun.awt.datatransfer.DataTransferer;
- import sun.awt.datatransfer.ToolkitThreadBlockedHandler;
-+import sun.security.util.SecurityConstants;
- 
- /**
-  * <p>
-@@ -216,6 +217,17 @@
-       throws UnsupportedFlavorException, IOException,
-         InvalidDnDOperationException
-     {
-+        SecurityManager sm = System.getSecurityManager();
-+        try {
-+            if (!dropComplete && sm != null) {
-+                sm.checkSystemClipboardAccess();
-+            }
-+        } catch (Exception e) {
-+            Thread currentThread = Thread.currentThread();
-+            currentThread.getUncaughtExceptionHandler().uncaughtException(currentThread, e);
-+            return null;
-+        }
-+
-         Long lFormat = null;
-         Transferable localTransferable = local;
- 
--- a/patches/security/20100330/6888149.patch	Sun Apr 18 17:03:04 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
---- openjdk.orig/jdk/src/share/classes/java/util/concurrent/atomic/AtomicIntegerArray.java	Tue Nov 17 14:10:36 2009
-+++ openjdk/jdk/src/share/classes/java/util/concurrent/atomic/AtomicIntegerArray.java	Tue Nov 17 14:10:35 2009
-@@ -57,7 +57,7 @@
-     private long rawIndex(int i) {
-         if (i < 0 || i >= array.length)
-             throw new IndexOutOfBoundsException("index " + i);
--        return base + i * scale;
-+        return base + (long) i * scale;
-     }
- 
-     /**
---- openjdk.orig/jdk/src/share/classes/java/util/concurrent/atomic/AtomicLongArray.java	Tue Nov 17 14:10:38 2009
-+++ openjdk/jdk/src/share/classes/java/util/concurrent/atomic/AtomicLongArray.java	Tue Nov 17 14:10:37 2009
-@@ -56,7 +56,7 @@
-     private long rawIndex(int i) {
-         if (i < 0 || i >= array.length)
-             throw new IndexOutOfBoundsException("index " + i);
--        return base + i * scale;
-+        return base + (long) i * scale;
-     }
- 
-     /**
---- openjdk.orig/jdk/src/share/classes/java/util/concurrent/atomic/AtomicReferenceArray.java	Tue Nov 17 14:10:40 2009
-+++ openjdk/jdk/src/share/classes/java/util/concurrent/atomic/AtomicReferenceArray.java	Tue Nov 17 14:10:39 2009
-@@ -57,7 +57,7 @@
-     private long rawIndex(int i) {
-         if (i < 0 || i >= array.length)
-             throw new IndexOutOfBoundsException("index " + i);
--        return base + i * scale;
-+        return base + (long) i * scale;
-     }
- 
-     /**
--- a/patches/security/20100330/6892265.patch	Sun Apr 18 17:03:04 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,35 +0,0 @@
-# HG changeset patch
-# User kvn
-# Date 1259879213 28800
-# Node ID 75e095764f403b7425e30711b00cc038554a1ae9
-# Parent  324e583cecd8d5886f99f759a19fd2776793c053
-6892265: System.arraycopy unable to reference elements beyond Integer.MAX_VALUE bytes
-Summary: Use size_t type cast to widen int values in typeArrayKlass::copy_array().
-Reviewed-by: never, jcoomes
-
-diff --gitopenjdk.orig/hotspot/src/share/vm/oops/typeArrayKlass.cpp openjdk/hotspot/src/share/vm/oops/typeArrayKlass.cpp
----openjdk.orig/hotspot/src/share/vm/oops/typeArrayKlass.cpp
-+++ openjdk/hotspot/src/share/vm/oops/typeArrayKlass.cpp
-@@ -124,16 +124,16 @@ void typeArrayKlass::copy_array(arrayOop
-      || (((unsigned int) length + (unsigned int) dst_pos) > (unsigned int) d->length()) ) {
-     THROW(vmSymbols::java_lang_ArrayIndexOutOfBoundsException());
-   }
-+  // Check zero copy
-+  if (length == 0)
-+    return;
- 
-   // This is an attempt to make the copy_array fast.
--  // NB: memmove takes care of overlapping memory segments.
--  // Potential problem: memmove is not guaranteed to be word atomic
--  // Revisit in Merlin
-   int l2es = log2_element_size();
-   int ihs = array_header_in_bytes() / wordSize;
--  char* src = (char*) ((oop*)s + ihs) + (src_pos << l2es);
--  char* dst = (char*) ((oop*)d + ihs) + (dst_pos << l2es);
--  memmove(dst, src, length << l2es);
-+  char* src = (char*) ((oop*)s + ihs) + ((size_t)src_pos << l2es);
-+  char* dst = (char*) ((oop*)d + ihs) + ((size_t)dst_pos << l2es);
-+  Copy::conjoint_memory_atomic(src, dst, (size_t)length << l2es);
- }
- 
- 
--- a/patches/security/20100330/6893947.patch	Sun Apr 18 17:03:04 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,86 +0,0 @@
---- openjdk.orig/jdk/src/share/classes/javax/management/remote/rmi/RMIConnectionImpl.java	Mon Nov 30 08:24:30 2009
-+++ openjdk/jdk/src/share/classes/javax/management/remote/rmi/RMIConnectionImpl.java	Mon Nov 30 08:24:30 2009
-@@ -1264,6 +1264,7 @@
-      *
-      * @return a String representation of this object.
-      **/
-+    @Override
-     public String toString() {
-         return super.toString() + ": connectionId=" + connectionId;
-     }
-@@ -1517,6 +1518,21 @@
-         }
-     }
- 
-+    private static class SetCcl implements PrivilegedExceptionAction<ClassLoader> {
-+        private final ClassLoader classLoader;
-+
-+        SetCcl(ClassLoader classLoader) {
-+            this.classLoader = classLoader;
-+        }
-+
-+        public ClassLoader run() {
-+            Thread currentThread = Thread.currentThread();
-+            ClassLoader old = currentThread.getContextClassLoader();
-+            currentThread.setContextClassLoader(classLoader);
-+            return old;
-+        }
-+    }
-+
-     private static <T> T unwrap(final MarshalledObject mo,
-                                 final ClassLoader cl,
-                                 final Class<T> wrappedClass)
-@@ -1525,22 +1541,14 @@
-             return null;
-         }
-         try {
--            return AccessController.doPrivileged(
--                new PrivilegedExceptionAction<T>() {
--                    public T run()
--                            throws IOException {
--                        final ClassLoader old =
--                            Thread.currentThread().getContextClassLoader();
--                        Thread.currentThread().setContextClassLoader(cl);
--                        try {
--                            return wrappedClass.cast(mo.get());
--                        } catch (ClassNotFoundException cnfe) {
--                            throw new UnmarshalException(cnfe.toString(), cnfe);
--                        } finally {
--                            Thread.currentThread().setContextClassLoader(old);
--                        }
--                    }
--                });
-+            final ClassLoader old = AccessController.doPrivileged(new SetCcl(cl));
-+            try {
-+                return wrappedClass.cast(mo.get());
-+            } catch (ClassNotFoundException cnfe) {
-+                throw new UnmarshalException(cnfe.toString(), cnfe);
-+            } finally {
-+                AccessController.doPrivileged(new SetCcl(old));
-+            }
-         } catch (PrivilegedActionException pe) {
-             Exception e = extractException(pe);
-             if (e instanceof IOException) {
-@@ -1564,14 +1572,14 @@
-             return null;
-         }
-         try {
--            return AccessController.doPrivileged(
--                   new PrivilegedExceptionAction<T>() {
--                       public T run()
--                           throws IOException {
--                           return unwrap(mo, new OrderClassLoaders(cl1, cl2),
--                                         wrappedClass);
--                       }
--                   });
-+            ClassLoader orderCL = AccessController.doPrivileged(
-+                new PrivilegedExceptionAction<ClassLoader>() {
-+                    public ClassLoader run() throws Exception {
-+                        return new OrderClassLoaders(cl1, cl2);
-+                    }
-+                }
-+            );
-+            return unwrap(mo, orderCL, wrappedClass);
-         } catch (PrivilegedActionException pe) {
-             Exception e = extractException(pe);
-             if (e instanceof IOException) {
--- a/patches/security/20100330/6893954.patch	Sun Apr 18 17:03:04 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,248 +0,0 @@
-diff -Nru openjdk.orig/jdk/src/share/classes/java/net/DatagramSocket.java openjdk/jdk/src/share/classes/java/net/DatagramSocket.java
---- openjdk.orig/jdk/src/share/classes/java/net/DatagramSocket.java	2009-04-24 08:34:06.000000000 +0100
-+++ openjdk/jdk/src/share/classes/java/net/DatagramSocket.java	2010-03-30 20:52:25.000000000 +0100
-@@ -117,6 +117,7 @@
-         if (address == null) {
-             throw new IllegalArgumentException("connect: null address");
-         }
-+        checkAddress (address, "connect");
-         if (isClosed())
-             return;
-         SecurityManager security = System.getSecurityManager();
-@@ -361,13 +362,15 @@
-         InetSocketAddress epoint = (InetSocketAddress) addr;
-         if (epoint.isUnresolved())
-             throw new SocketException("Unresolved address");
-+        InetAddress iaddr = epoint.getAddress();
-+        int port = epoint.getPort();
-+        checkAddress(iaddr, "bind");
-         SecurityManager sec = System.getSecurityManager();
-         if (sec != null) {
--            sec.checkListen(epoint.getPort());
-+            sec.checkListen(port);
-         }
-         try {
--            getImpl().bind(epoint.getPort(),
--                           epoint.getAddress());
-+            getImpl().bind(port, iaddr);
-         } catch (SocketException e) {
-             getImpl().close();
-             throw e;
-@@ -375,6 +378,15 @@
-         bound = true;
-     }
- 
-+    void checkAddress (InetAddress addr, String op) {
-+        if (addr == null) {
-+            return;
-+        }
-+        if (!(addr instanceof Inet4Address || addr instanceof Inet6Address)) {
-+            throw new IllegalArgumentException(op + ": invalid address type");
-+        }
-+    }
-+
-     /**
-      * Connects the socket to a remote address for this socket. When a
-      * socket is connected to a remote address, packets may only be
-@@ -580,6 +592,7 @@
-         synchronized (p) {
-             if (isClosed())
-                 throw new SocketException("Socket is closed");
-+	    checkAddress (p.getAddress(), "send");
-             if (connectState == ST_NOT_CONNECTED) {
-                 // check the address is ok wiht the security manager on every send.
-                 SecurityManager security = System.getSecurityManager();
-diff -Nru openjdk.orig/jdk/src/share/classes/java/net/InetAddress.java openjdk/jdk/src/share/classes/java/net/InetAddress.java
---- openjdk.orig/jdk/src/share/classes/java/net/InetAddress.java	2009-04-24 08:34:06.000000000 +0100
-+++ openjdk/jdk/src/share/classes/java/net/InetAddress.java	2010-03-30 20:52:25.000000000 +0100
-@@ -35,6 +35,7 @@
- import java.security.AccessController;
- import java.io.ObjectStreamException;
- import java.io.IOException;
-+import java.io.ObjectInputStream;
- import sun.security.action.*;
- import sun.net.InetAddressCachePolicy;
- import sun.net.util.IPAddressUtil;
-@@ -1491,6 +1492,23 @@
- 
-         return impl;
-     }
-+
-+    private void readObjectNoData (ObjectInputStream s) throws
-+                         IOException, ClassNotFoundException {
-+        if (getClass().getClassLoader() != null) {
-+            throw new SecurityException ("invalid address type");
-+        }
-+    }
-+
-+    private void readObject (ObjectInputStream s) throws
-+                         IOException, ClassNotFoundException {
-+        s.defaultReadObject ();
-+        if (getClass().getClassLoader() != null) {
-+            hostName = null;
-+            address = 0;
-+            throw new SecurityException ("invalid address type");
-+        }
-+    }
- }
- 
- /*
-diff -Nru openjdk.orig/jdk/src/share/classes/java/net/MulticastSocket.java openjdk/jdk/src/share/classes/java/net/MulticastSocket.java
---- openjdk.orig/jdk/src/share/classes/java/net/MulticastSocket.java	2009-04-24 08:34:06.000000000 +0100
-+++ openjdk/jdk/src/share/classes/java/net/MulticastSocket.java	2010-03-30 20:52:25.000000000 +0100
-@@ -287,6 +287,7 @@
-             throw new SocketException("Socket is closed");
-         }
- 
-+        checkAddress(mcastaddr, "joinGroup");
-         SecurityManager security = System.getSecurityManager();
-         if (security != null) {
-             security.checkMulticast(mcastaddr);
-@@ -321,6 +322,7 @@
-             throw new SocketException("Socket is closed");
-         }
- 
-+        checkAddress(mcastaddr, "leaveGroup");
-         SecurityManager security = System.getSecurityManager();
-         if (security != null) {
-             security.checkMulticast(mcastaddr);
-@@ -368,6 +370,7 @@
-         if (oldImpl)
-             throw new UnsupportedOperationException();
- 
-+        checkAddress(((InetSocketAddress)mcastaddr).getAddress(), "joinGroup");
-         SecurityManager security = System.getSecurityManager();
-         if (security != null) {
-             security.checkMulticast(((InetSocketAddress)mcastaddr).getAddress());
-@@ -414,6 +417,7 @@
-         if (oldImpl)
-             throw new UnsupportedOperationException();
- 
-+        checkAddress(((InetSocketAddress)mcastaddr).getAddress(), "leaveGroup");
-         SecurityManager security = System.getSecurityManager();
-         if (security != null) {
-             security.checkMulticast(((InetSocketAddress)mcastaddr).getAddress());
-@@ -439,6 +443,7 @@
-         if (isClosed()) {
-             throw new SocketException("Socket is closed");
-         }
-+        checkAddress(inf, "setInterface");
-         synchronized (infLock) {
-             getImpl().setOption(SocketOptions.IP_MULTICAST_IF, inf);
-             infAddress = inf;
-@@ -630,6 +635,7 @@
-         throws IOException {
-             if (isClosed())
-                 throw new SocketException("Socket is closed");
-+            checkAddress(p.getAddress(), "send");
-             synchronized(ttlLock) {
-                 synchronized(p) {
-                     if (connectState == ST_NOT_CONNECTED) {
-diff -Nru openjdk.orig/jdk/src/share/classes/java/net/NetworkInterface.java openjdk/jdk/src/share/classes/java/net/NetworkInterface.java
---- openjdk.orig/jdk/src/share/classes/java/net/NetworkInterface.java	2010-03-30 20:51:15.000000000 +0100
-+++ openjdk/jdk/src/share/classes/java/net/NetworkInterface.java	2010-03-30 20:52:25.000000000 +0100
-@@ -278,8 +278,12 @@
-      *          If the specified address is <tt>null</tt>.
-      */
-     public static NetworkInterface getByInetAddress(InetAddress addr) throws SocketException {
--        if (addr == null)
-+        if (addr == null) {
-             throw new NullPointerException();
-+        }
-+        if (!(addr instanceof Inet4Address || addr instanceof Inet6Address)) {
-+            throw new IllegalArgumentException ("invalid address type");
-+        }
-         return getByInetAddress0(addr);
-     }
- 
-diff -Nru openjdk.orig/jdk/src/share/classes/java/net/Socket.java openjdk/jdk/src/share/classes/java/net/Socket.java
---- openjdk.orig/jdk/src/share/classes/java/net/Socket.java	2010-03-30 20:50:59.000000000 +0100
-+++ openjdk/jdk/src/share/classes/java/net/Socket.java	2010-03-30 20:53:20.000000000 +0100
-@@ -122,6 +122,9 @@
-         if (p.type() == Proxy.Type.SOCKS) {
-             SecurityManager security = System.getSecurityManager();
-             InetSocketAddress epoint = (InetSocketAddress) p.address();
-+            if (epoint.getAddress() != null) {
-+                checkAddress (epoint.getAddress(), "Socket");
-+            }
-             if (security != null) {
-                 if (epoint.isUnresolved())
-                     epoint = new InetSocketAddress(epoint.getHostName(), epoint.getPort());
-@@ -526,15 +529,16 @@
-             throw new IllegalArgumentException("Unsupported address type");
- 
-         InetSocketAddress epoint = (InetSocketAddress) endpoint;
-+        InetAddress addr = epoint.getAddress ();
-+        int port = epoint.getPort();
-+        checkAddress(addr, "connect");
- 
-         SecurityManager security = System.getSecurityManager();
-         if (security != null) {
-             if (epoint.isUnresolved())
--                security.checkConnect(epoint.getHostName(),
--                                      epoint.getPort());
-+                security.checkConnect(epoint.getHostName(), port);
-             else
--                security.checkConnect(epoint.getAddress().getHostAddress(),
--                                      epoint.getPort());
-+                security.checkConnect(addr.getHostAddress(), port);
-         }
-         if (!created)
-             createImpl(true);
-@@ -542,10 +546,9 @@
-             impl.connect(epoint, timeout);
-         else if (timeout == 0) {
-             if (epoint.isUnresolved())
--                impl.connect(epoint.getAddress().getHostName(),
--                             epoint.getPort());
-+                impl.connect(addr.getHostName(), port);
-             else
--                impl.connect(epoint.getAddress(), epoint.getPort());
-+                impl.connect(addr, port);
-         } else
-             throw new UnsupportedOperationException("SocketImpl.connect(addr, timeout)");
-         connected = true;
-@@ -582,14 +585,25 @@
-         InetSocketAddress epoint = (InetSocketAddress) bindpoint;
-         if (epoint != null && epoint.isUnresolved())
-             throw new SocketException("Unresolved address");
--        if (bindpoint == null)
--            getImpl().bind(InetAddress.anyLocalAddress(), 0);
--        else
--            getImpl().bind(epoint.getAddress(),
--                           epoint.getPort());
-+        if (epoint == null) {
-+            epoint = new InetSocketAddress(0);
-+        }
-+        InetAddress addr = epoint.getAddress();
-+        int port = epoint.getPort();
-+        checkAddress (addr, "bind");
-+        getImpl().bind (addr, port);
-         bound = true;
-     }
- 
-+    private void checkAddress (InetAddress addr, String op) {
-+        if (addr == null) {
-+            return;
-+        }
-+        if (!(addr instanceof Inet4Address || addr instanceof Inet6Address)) {
-+            throw new IllegalArgumentException(op + ": invalid address type");
-+        }
-+    }
-+
-     /**
-      * set the flags after an accept() call.
-      */
-diff -Nru openjdk.orig/jdk/src/share/classes/sun/nio/ch/Net.java openjdk/jdk/src/share/classes/sun/nio/ch/Net.java
---- openjdk.orig/jdk/src/share/classes/sun/nio/ch/Net.java	2010-03-30 20:51:15.000000000 +0100
-+++ openjdk/jdk/src/share/classes/sun/nio/ch/Net.java	2010-03-30 20:52:25.000000000 +0100
-@@ -55,6 +55,9 @@
-         InetSocketAddress isa = (InetSocketAddress)sa;
-         if (isa.isUnresolved())
-             throw new UnresolvedAddressException(); // ## needs arg
-+        InetAddress addr = isa.getAddress();
-+        if (!(addr instanceof Inet4Address || addr instanceof Inet6Address))
-+            throw new IllegalArgumentException("Invalid address type");
-         return isa;
-     }
- 
--- a/patches/security/20100330/6894807.patch	Sun Apr 18 17:03:04 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
-diff -Nru openjdk.orig/hotspot/src/share/vm/opto/cfgnode.cpp openjdk/hotspot/src/share/vm/opto/cfgnode.cpp
---- openjdk.orig/hotspot/src/share/vm/opto/cfgnode.cpp	2009-05-15 00:36:38.000000000 +0100
-+++ openjdk/hotspot/src/share/vm/opto/cfgnode.cpp	2010-03-30 21:03:55.000000000 +0100
-@@ -956,6 +956,7 @@
-     }
-     if( jtkp && ttkp ) {
-       if( jtkp->is_loaded() &&  jtkp->klass()->is_interface() &&
-+          !jtkp->klass_is_exact() && // Keep exact interface klass (6894807)
-           ttkp->is_loaded() && !ttkp->klass()->is_interface() ) {
-         assert(ft == ttkp->cast_to_ptr_type(jtkp->ptr()) ||
-                ft->isa_narrowoop() && ft->make_ptr() == ttkp->cast_to_ptr_type(jtkp->ptr()), "");
-diff -Nru openjdk.orig/hotspot/src/share/vm/opto/type.cpp openjdk/hotspot/src/share/vm/opto/type.cpp
---- openjdk.orig/hotspot/src/share/vm/opto/type.cpp	2009-05-15 00:36:38.000000000 +0100
-+++ openjdk/hotspot/src/share/vm/opto/type.cpp	2010-03-30 21:02:58.000000000 +0100
-@@ -2501,10 +2501,12 @@
-       ftip->is_loaded() &&  ftip->klass()->is_interface() &&
-       ktip->is_loaded() && !ktip->klass()->is_interface()) {
-     // Happens in a CTW of rt.jar, 320-341, no extra flags
-+    assert(!ftip->klass_is_exact(), "interface could not be exact");
-     return ktip->cast_to_ptr_type(ftip->ptr());
-   }
-   if (ftkp != NULL && ktkp != NULL &&
-       ftkp->is_loaded() &&  ftkp->klass()->is_interface() &&
-+      !ftkp->klass_is_exact() && // Keep exact interface klass
-       ktkp->is_loaded() && !ktkp->klass()->is_interface()) {
-     // Happens in a CTW of rt.jar, 320-341, no extra flags
-     return ktkp->cast_to_ptr_type(ftkp->ptr());
--- a/patches/security/20100330/6898622.patch	Sun Apr 18 17:03:04 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,20 +0,0 @@
---- openjdk.orig/jdk/src/share/classes/sun/security/util/ObjectIdentifier.java	Mon Nov 23 19:00:45 2009
-+++ openjdk/jdk/src/share/classes/sun/security/util/ObjectIdentifier.java	Mon Nov 23 19:00:44 2009
-@@ -1,5 +1,5 @@
- /*
-- * Copyright 1996-2006 Sun Microsystems, Inc.  All Rights Reserved.
-+ * Copyright 1996-2009 Sun Microsystems, Inc.  All Rights Reserved.
-  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-  *
-  * This code is free software; you can redistribute it and/or modify it
-@@ -323,6 +323,10 @@
-         for (i = 0, retval = 0; i < 4; i++) {
-             retval <<= 7;
-             tmp = in.getByte ();
-+            if (i == 0 && tmp == 0x80) {   // First byte is 0x80, BER
-+                throw new IOException ("ObjectIdentifier() -- " +
-+                        "sub component starts with 0x80");
-+            }
-             retval |= (tmp & 0x07f);
-             if ((tmp & 0x080) == 0)
-                 return retval;
--- a/patches/security/20100330/6898739.patch	Sun Apr 18 17:03:04 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,437 +0,0 @@
-diff -Nru openjdk.orig/jdk/src/share/classes/sun/security/ssl/ClientHandshaker.java openjdk/jdk/src/share/classes/sun/security/ssl/ClientHandshaker.java
---- openjdk.orig/jdk/src/share/classes/sun/security/ssl/ClientHandshaker.java	2009-04-24 08:34:23.000000000 +0100
-+++ openjdk/jdk/src/share/classes/sun/security/ssl/ClientHandshaker.java	2010-03-30 21:08:50.000000000 +0100
-@@ -1,5 +1,5 @@
- /*
-- * Copyright 1996-2007 Sun Microsystems, Inc.  All Rights Reserved.
-+ * Copyright 1996-2009 Sun Microsystems, Inc.  All Rights Reserved.
-  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-  *
-  * This code is free software; you can redistribute it and/or modify it
-@@ -96,13 +96,17 @@
-      * Constructors
-      */
-     ClientHandshaker(SSLSocketImpl socket, SSLContextImpl context,
--            ProtocolList enabledProtocols) {
-+            ProtocolList enabledProtocols,
-+            ProtocolVersion activeProtocolVersion) {
-         super(socket, context, enabledProtocols, true, true);
-+        this.activeProtocolVersion = activeProtocolVersion;
-     }
- 
-     ClientHandshaker(SSLEngineImpl engine, SSLContextImpl context,
--            ProtocolList enabledProtocols) {
-+            ProtocolList enabledProtocols,
-+            ProtocolVersion activeProtocolVersion) {
-         super(engine, context, enabledProtocols, true, true);
-+        this.activeProtocolVersion = activeProtocolVersion;
-     }
- 
-     /*
-@@ -250,7 +254,42 @@
-         // sent the "client hello" but the server's not seen it.
-         //
-         if (state < HandshakeMessage.ht_client_hello) {
--            kickstart();
-+            if (!renegotiable) {    // renegotiation is not allowed.
-+                if (activeProtocolVersion.v >= ProtocolVersion.TLS10.v) {
-+                    // response with a no_negotiation warning,
-+                    warningSE(Alerts.alert_no_negotiation);
-+
-+                    // invalidate the handshake so that the caller can
-+                    // dispose this object.
-+                    invalidated = true;
-+
-+                    // If there is still unread block in the handshake
-+                    // input stream, it would be truncated with the disposal
-+                    // and the next handshake message will become incomplete.
-+                    //
-+                    // However, according to SSL/TLS specifications, no more
-+                    // handshake message could immediately follow ClientHello
-+                    // or HelloRequest. But in case of any improper messages,
-+                    // we'd better check to ensure there is no remaining bytes
-+                    // in the handshake input stream.
-+                    if (input.available() > 0) {
-+                        fatalSE(Alerts.alert_unexpected_message,
-+                            "HelloRequest followed by an unexpected  " +
-+                            "handshake message");
-+                    }
-+
-+                } else {
-+                    // For SSLv3, send the handshake_failure fatal error.
-+                    // Note that SSLv3 does not define a no_negotiation alert
-+                    // like TLSv1. However we cannot ignore the message
-+                    // simply, otherwise the other side was waiting for a
-+                    // response that would never come.
-+                    fatalSE(Alerts.alert_handshake_failure,
-+                        "renegotiation is not allowed");
-+                }
-+            } else {
-+                kickstart();
-+            }
-         }
-     }
- 
-diff -Nru openjdk.orig/jdk/src/share/classes/sun/security/ssl/Handshaker.java openjdk/jdk/src/share/classes/sun/security/ssl/Handshaker.java
---- openjdk.orig/jdk/src/share/classes/sun/security/ssl/Handshaker.java	2010-03-30 21:05:58.000000000 +0100
-+++ openjdk/jdk/src/share/classes/sun/security/ssl/Handshaker.java	2010-03-30 21:08:50.000000000 +0100
-@@ -1,5 +1,5 @@
- /*
-- * Copyright 1996-2007 Sun Microsystems, Inc.  All Rights Reserved.
-+ * Copyright 1996-2009 Sun Microsystems, Inc.  All Rights Reserved.
-  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-  *
-  * This code is free software; you can redistribute it and/or modify it
-@@ -61,9 +61,12 @@
-  */
- abstract class Handshaker {
- 
--    // current protocol version
-+    // protocol version being established using this Handshaker
-     ProtocolVersion protocolVersion;
- 
-+    // the currently active protocol version during a renegotiation
-+    ProtocolVersion     activeProtocolVersion;
-+
-     // list of enabled protocols
-     ProtocolList enabledProtocols;
- 
-@@ -125,6 +128,13 @@
-     /* Class and subclass dynamic debugging support */
-     static final Debug debug = Debug.getInstance("ssl");
- 
-+    // By default, disable the unsafe legacy session renegotiation
-+    static final boolean renegotiable = Debug.getBooleanProperty(
-+                    "sun.security.ssl.allowUnsafeRenegotiation", false);
-+
-+    // need to dispose the object when it is invalidated
-+    boolean invalidated;
-+
-     Handshaker(SSLSocketImpl c, SSLContextImpl context,
-             ProtocolList enabledProtocols, boolean needCertVerify,
-             boolean isClient) {
-@@ -145,6 +155,7 @@
-         this.sslContext = context;
-         this.isClient = isClient;
-         enableNewSession = true;
-+        invalidated = false;
- 
-         setCipherSuite(CipherSuite.C_NULL);
- 
-@@ -490,7 +501,9 @@
-      */
-     void processLoop() throws IOException {
- 
--        while (input.available() > 0) {
-+        // need to read off 4 bytes at least to get the handshake
-+        // message type and length.
-+        while (input.available() >= 4) {
-             byte messageType;
-             int messageLen;
- 
-diff -Nru openjdk.orig/jdk/src/share/classes/sun/security/ssl/ServerHandshaker.java openjdk/jdk/src/share/classes/sun/security/ssl/ServerHandshaker.java
---- openjdk.orig/jdk/src/share/classes/sun/security/ssl/ServerHandshaker.java	2009-04-24 08:34:24.000000000 +0100
-+++ openjdk/jdk/src/share/classes/sun/security/ssl/ServerHandshaker.java	2010-03-30 21:08:50.000000000 +0100
-@@ -1,5 +1,5 @@
- /*
-- * Copyright 1996-2007 Sun Microsystems, Inc.  All Rights Reserved.
-+ * Copyright 1996-2009 Sun Microsystems, Inc.  All Rights Reserved.
-  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-  *
-  * This code is free software; you can redistribute it and/or modify it
-@@ -74,6 +74,9 @@
-     // flag to check for clientCertificateVerify message
-     private boolean             needClientVerify = false;
- 
-+    // indicate a renegotiation handshaking
-+    private boolean             isRenegotiation = false;
-+
-     /*
-      * For exportable ciphersuites using non-exportable key sizes, we use
-      * ephemeral RSA keys. We could also do anonymous RSA in the same way
-@@ -101,20 +104,28 @@
-      * Constructor ... use the keys found in the auth context.
-      */
-     ServerHandshaker(SSLSocketImpl socket, SSLContextImpl context,
--            ProtocolList enabledProtocols, byte clientAuth) {
-+            ProtocolList enabledProtocols, byte clientAuth,
-+            boolean isRenegotiation, ProtocolVersion activeProtocolVersion) {
-+
-         super(socket, context, enabledProtocols,
-                         (clientAuth != SSLEngineImpl.clauth_none), false);
-         doClientAuth = clientAuth;
-+        this.isRenegotiation = isRenegotiation;
-+        this.activeProtocolVersion = activeProtocolVersion;
-     }
- 
-     /*
-      * Constructor ... use the keys found in the auth context.
-      */
-     ServerHandshaker(SSLEngineImpl engine, SSLContextImpl context,
--            ProtocolList enabledProtocols, byte clientAuth) {
-+            ProtocolList enabledProtocols, byte clientAuth,
-+            boolean isRenegotiation, ProtocolVersion activeProtocolVersion) {
-+
-         super(engine, context, enabledProtocols,
-                         (clientAuth != SSLEngineImpl.clauth_none), false);
-         doClientAuth = clientAuth;
-+        this.isRenegotiation = isRenegotiation;
-+        this.activeProtocolVersion = activeProtocolVersion;
-     }
- 
-     /*
-@@ -262,6 +273,45 @@
-         if (debug != null && Debug.isOn("handshake")) {
-             mesg.print(System.out);
-         }
-+
-+        // if it is a renegotiation request and renegotiation is not allowed
-+        if (isRenegotiation && !renegotiable) {
-+            if (activeProtocolVersion.v >= ProtocolVersion.TLS10.v) {
-+                // response with a no_negotiation warning,
-+                warningSE(Alerts.alert_no_negotiation);
-+
-+                // invalidate the handshake so that the caller can
-+                // dispose this object.
-+                invalidated = true;
-+
-+                // If there is still unread block in the handshake
-+                // input stream, it would be truncated with the disposal
-+                // and the next handshake message will become incomplete.
-+                //
-+                // However, according to SSL/TLS specifications, no more
-+                // handshake message could immediately follow ClientHello
-+                // or HelloRequest. But in case of any improper messages,
-+                // we'd better check to ensure there is no remaining bytes
-+                // in the handshake input stream.
-+                if (input.available() > 0) {
-+                    fatalSE(Alerts.alert_unexpected_message,
-+                        "ClientHello followed by an unexpected  " +
-+                        "handshake message");
-+
-+                }
-+
-+                return;
-+            } else {
-+                // For SSLv3, send the handshake_failure fatal error.
-+                // Note that SSLv3 does not define a no_negotiation alert
-+                // like TLSv1. However we cannot ignore the message
-+                // simply, otherwise the other side was waiting for a
-+                // response that would never come.
-+                fatalSE(Alerts.alert_handshake_failure,
-+                    "renegotiation is not allowed");
-+            }
-+        }
-+
-         /*
-          * Always make sure this entire record has been digested before we
-          * start emitting output, to ensure correct digesting order.
-diff -Nru openjdk.orig/jdk/src/share/classes/sun/security/ssl/SSLEngineImpl.java openjdk/jdk/src/share/classes/sun/security/ssl/SSLEngineImpl.java
---- openjdk.orig/jdk/src/share/classes/sun/security/ssl/SSLEngineImpl.java	2009-04-24 08:34:24.000000000 +0100
-+++ openjdk/jdk/src/share/classes/sun/security/ssl/SSLEngineImpl.java	2010-03-30 21:08:50.000000000 +0100
-@@ -1,5 +1,5 @@
- /*
-- * Copyright 2003-2007 Sun Microsystems, Inc.  All Rights Reserved.
-+ * Copyright 2003-2009 Sun Microsystems, Inc.  All Rights Reserved.
-  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-  *
-  * This code is free software; you can redistribute it and/or modify it
-@@ -433,11 +433,12 @@
-             connectionState = cs_RENEGOTIATE;
-         }
-         if (roleIsServer) {
--            handshaker = new ServerHandshaker
--                        (this, sslContext, enabledProtocols, doClientAuth);
-+            handshaker = new ServerHandshaker(this, sslContext,
-+                        enabledProtocols, doClientAuth,
-+                        connectionState == cs_RENEGOTIATE, protocolVersion);
-         } else {
--            handshaker = new ClientHandshaker
--                        (this, sslContext, enabledProtocols);
-+            handshaker = new ClientHandshaker(this, sslContext,
-+                        enabledProtocols, protocolVersion);
-         }
-         handshaker.enabledCipherSuites = enabledCipherSuites;
-         handshaker.setEnableSessionCreation(enableSessionCreation);
-@@ -622,6 +623,10 @@
-             break;
- 
-         case cs_DATA:
-+            if (!Handshaker.renegotiable) {
-+                throw new SSLHandshakeException("renegotiation is not allowed");
-+            }
-+
-             // initialize the handshaker, move to cs_RENEGOTIATE
-             initHandshaker();
-             break;
-@@ -949,7 +954,13 @@
-                     handshaker.process_record(inputRecord, expectingFinished);
-                     expectingFinished = false;
- 
--                    if (handshaker.isDone()) {
-+                    if (handshaker.invalidated) {
-+                        handshaker = null;
-+                        // if state is cs_RENEGOTIATE, revert it to cs_DATA
-+                        if (connectionState == cs_RENEGOTIATE) {
-+                            connectionState = cs_DATA;
-+                        }
-+                    } else if (handshaker.isDone()) {
-                         sess = handshaker.getSession();
-                         if (!writer.hasOutboundData()) {
-                             hsStatus = HandshakeStatus.FINISHED;
-diff -Nru openjdk.orig/jdk/src/share/classes/sun/security/ssl/SSLSocketImpl.java openjdk/jdk/src/share/classes/sun/security/ssl/SSLSocketImpl.java
---- openjdk.orig/jdk/src/share/classes/sun/security/ssl/SSLSocketImpl.java	2009-04-24 08:34:24.000000000 +0100
-+++ openjdk/jdk/src/share/classes/sun/security/ssl/SSLSocketImpl.java	2010-03-30 21:09:09.000000000 +0100
-@@ -1,5 +1,5 @@
- /*
-- * Copyright 1996-2008 Sun Microsystems, Inc.  All Rights Reserved.
-+ * Copyright 1996-2009 Sun Microsystems, Inc.  All Rights Reserved.
-  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-  *
-  * This code is free software; you can redistribute it and/or modify it
-@@ -904,7 +904,13 @@
-                     handshaker.process_record(r, expectingFinished);
-                     expectingFinished = false;
- 
--                    if (handshaker.isDone()) {
-+                    if (handshaker.invalidated) {
-+                        handshaker = null;
-+                        // if state is cs_RENEGOTIATE, revert it to cs_DATA
-+                        if (connectionState == cs_RENEGOTIATE) {
-+                            connectionState = cs_DATA;
-+                        }
-+                    } else if (handshaker.isDone()) {
-                         sess = handshaker.getSession();
-                         handshaker = null;
-                         connectionState = cs_DATA;
-@@ -922,6 +928,7 @@
-                             t.start();
-                         }
-                     }
-+
-                     if (needAppData || connectionState != cs_DATA) {
-                         continue;
-                     } else {
-@@ -1080,11 +1087,12 @@
-             connectionState = cs_RENEGOTIATE;
-         }
-         if (roleIsServer) {
--            handshaker = new ServerHandshaker
--                        (this, sslContext, enabledProtocols, doClientAuth);
-+            handshaker = new ServerHandshaker(this, sslContext,
-+                        enabledProtocols, doClientAuth,
-+                        connectionState == cs_RENEGOTIATE, protocolVersion);
-         } else {
--            handshaker = new ClientHandshaker
--                        (this, sslContext, enabledProtocols);
-+            handshaker = new ClientHandshaker(this, sslContext,
-+                        enabledProtocols, protocolVersion);
-         }
-         handshaker.enabledCipherSuites = enabledCipherSuites;
-         handshaker.setEnableSessionCreation(enableSessionCreation);
-@@ -1189,6 +1197,10 @@
-             break;
- 
-         case cs_DATA:
-+            if (!Handshaker.renegotiable) {
-+                throw new SSLHandshakeException("renegotiation is not allowed");
-+            }
-+
-             // initialize the handshaker, move to cs_RENEGOTIATE
-             initHandshaker();
-             break;
-diff -Nru openjdk.orig/jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLSocketImpl/InvalidateServerSessionRenegotiate.java openjdk/jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLSocketImpl/InvalidateServerSessionRenegotiate.java
---- openjdk.orig/jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLSocketImpl/InvalidateServerSessionRenegotiate.java	2009-04-24 08:34:50.000000000 +0100
-+++ openjdk/jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLSocketImpl/InvalidateServerSessionRenegotiate.java	2010-03-30 21:08:50.000000000 +0100
-@@ -1,5 +1,5 @@
- /*
-- * Copyright 2001-2003 Sun Microsystems, Inc.  All Rights Reserved.
-+ * Copyright 2001-2009 Sun Microsystems, Inc.  All Rights Reserved.
-  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-  *
-  * This code is free software; you can redistribute it and/or modify it
-@@ -25,6 +25,8 @@
-  * @test
-  * @bug 4403428
-  * @summary Invalidating JSSE session on server causes SSLProtocolException
-+ * @ignore incompatible with disabled unsafe renegotiation (6898739), please
-+ *         reenable when safe renegotiation is implemented.
-  * @author Brad Wetmore
-  */
- 
-diff -Nru openjdk.orig/jdk/test/sun/security/ssl/javax/net/ssl/NewAPIs/JSSERenegotiate.java openjdk/jdk/test/sun/security/ssl/javax/net/ssl/NewAPIs/JSSERenegotiate.java
---- openjdk.orig/jdk/test/sun/security/ssl/javax/net/ssl/NewAPIs/JSSERenegotiate.java	2009-04-24 08:34:51.000000000 +0100
-+++ openjdk/jdk/test/sun/security/ssl/javax/net/ssl/NewAPIs/JSSERenegotiate.java	2010-03-30 21:08:51.000000000 +0100
-@@ -1,5 +1,5 @@
- /*
-- * Copyright 2001-2007 Sun Microsystems, Inc.  All Rights Reserved.
-+ * Copyright 2001-2009 Sun Microsystems, Inc.  All Rights Reserved.
-  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-  *
-  * This code is free software; you can redistribute it and/or modify it
-@@ -26,6 +26,8 @@
-  * @bug 4280338
-  * @summary "Unsupported SSL message version" SSLProtocolException
-  *      w/SSL_RSA_WITH_NULL_MD5
-+ * @ignore incompatible with disabled unsafe renegotiation (6898739), please
-+ *         reenable when safe renegotiation is implemented.
-  *
-  * @author Ram Marti
-  * @author Brad Wetmore
-diff -Nru openjdk.orig/jdk/test/sun/security/ssl/javax/net/ssl/NewAPIs/SSLEngine/CheckStatus.java openjdk/jdk/test/sun/security/ssl/javax/net/ssl/NewAPIs/SSLEngine/CheckStatus.java
---- openjdk.orig/jdk/test/sun/security/ssl/javax/net/ssl/NewAPIs/SSLEngine/CheckStatus.java	2009-04-24 08:34:51.000000000 +0100
-+++ openjdk/jdk/test/sun/security/ssl/javax/net/ssl/NewAPIs/SSLEngine/CheckStatus.java	2010-03-30 21:08:51.000000000 +0100
-@@ -1,5 +1,5 @@
- /*
-- * Copyright 2003-2004 Sun Microsystems, Inc.  All Rights Reserved.
-+ * Copyright 2003-2009 Sun Microsystems, Inc.  All Rights Reserved.
-  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-  *
-  * This code is free software; you can redistribute it and/or modify it
-@@ -25,6 +25,8 @@
-  * @test
-  * @bug 4948079
-  * @summary SSLEngineResult needs updating [none yet]
-+ * @ignore incompatible with disabled unsafe renegotiation (6898739), please
-+ *         reenable when safe renegotiation is implemented.
-  *
-  * This is a simple hack to test a bunch of conditions and check
-  * their return codes.
-diff -Nru openjdk.orig/jdk/test/sun/security/ssl/javax/net/ssl/NewAPIs/SSLEngine/ConnectionTest.java openjdk/jdk/test/sun/security/ssl/javax/net/ssl/NewAPIs/SSLEngine/ConnectionTest.java
---- openjdk.orig/jdk/test/sun/security/ssl/javax/net/ssl/NewAPIs/SSLEngine/ConnectionTest.java	2009-04-24 08:34:51.000000000 +0100
-+++ openjdk/jdk/test/sun/security/ssl/javax/net/ssl/NewAPIs/SSLEngine/ConnectionTest.java	2010-03-30 21:08:51.000000000 +0100
-@@ -1,5 +1,5 @@
- /*
-- * Copyright 2003-2004 Sun Microsystems, Inc.  All Rights Reserved.
-+ * Copyright 2003-2009 Sun Microsystems, Inc.  All Rights Reserved.
-  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-  *
-  * This code is free software; you can redistribute it and/or modify it
-@@ -26,6 +26,8 @@
-  * @bug 4495742
-  * @summary Add non-blocking SSL/TLS functionality, usable with any
-  *      I/O abstraction
-+ * @ignore incompatible with disabled unsafe renegotiation (6898739), please
-+ *         reenable when safe renegotiation is implemented.
-  *
-  * This is a bit hacky, meant to test various conditions.  The main
-  * thing I wanted to do with this was to do buffer reads/writes
-diff -Nru openjdk.orig/jdk/test/sun/security/ssl/javax/net/ssl/NewAPIs/SSLEngine/NoAuthClientAuth.java openjdk/jdk/test/sun/security/ssl/javax/net/ssl/NewAPIs/SSLEngine/NoAuthClientAuth.java
---- openjdk.orig/jdk/test/sun/security/ssl/javax/net/ssl/NewAPIs/SSLEngine/NoAuthClientAuth.java	2009-04-24 08:34:51.000000000 +0100
-+++ openjdk/jdk/test/sun/security/ssl/javax/net/ssl/NewAPIs/SSLEngine/NoAuthClientAuth.java	2010-03-30 21:08:51.000000000 +0100
-@@ -1,5 +1,5 @@
- /*
-- * Copyright 2006 Sun Microsystems, Inc.  All Rights Reserved.
-+ * Copyright 2003-2009 Sun Microsystems, Inc.  All Rights Reserved.
-  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-  *
-  * This code is free software; you can redistribute it and/or modify it
-@@ -25,6 +25,8 @@
-  * @test
-  * @bug 4495742
-  * @summary Demonstrate SSLEngine switch from no client auth to client auth.
-+ * @ignore incompatible with disabled unsafe renegotiation (6898739), please
-+ *         reenable when safe renegotiation is implemented.
-  *
-  * @author Brad R. Wetmore
-  */
--- a/patches/security/20100330/6899653.patch	Sun Apr 18 17:03:04 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
-diff -Nru openjdk.orig/jdk/src/share/native/sun/java2d/cmm/lcms/cmsio1.c openjdk/jdk/src/share/native/sun/java2d/cmm/lcms/cmsio1.c
---- openjdk.orig/jdk/src/share/native/sun/java2d/cmm/lcms/cmsio1.c	2009-04-24 08:34:31.000000000 +0100
-+++ openjdk/jdk/src/share/native/sun/java2d/cmm/lcms/cmsio1.c	2010-03-30 21:21:47.000000000 +0100
-@@ -1433,6 +1433,9 @@
- 
-     // If is in memory, the LUT is already there, so throw a copy
-     if (Icc -> TagPtrs[n]) {
-+        if (!_cmsValidateLUT((LPLUT) Icc ->TagPtrs[n])) {
-+            return NULL;
-+        }
- 
-         return cmsDupLUT((LPLUT) Icc ->TagPtrs[n]);
-     }
-diff -Nru openjdk.orig/jdk/src/share/native/sun/java2d/cmm/lcms/cmsxform.c openjdk/jdk/src/share/native/sun/java2d/cmm/lcms/cmsxform.c
---- openjdk.orig/jdk/src/share/native/sun/java2d/cmm/lcms/cmsxform.c	2010-03-30 21:18:36.000000000 +0100
-+++ openjdk/jdk/src/share/native/sun/java2d/cmm/lcms/cmsxform.c	2010-03-30 21:21:13.000000000 +0100
-@@ -1982,6 +1982,10 @@
-           goto ErrorCleanup;
- 	} 
- 
-+        if (Transforms[i] == NULL) {
-+            cmsSignalError(LCMS_ERRC_ABORTED, "cmsCreateMultiprofileTransform: unable to create transform");
-+            goto ErrorCleanup;
-+        }
-         CurrentColorSpace = ColorSpaceOut;
- 
-     }
--- a/patches/security/20100330/6902299.patch	Sun Apr 18 17:03:04 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,104 +0,0 @@
---- openjdk.orig/jdk/src/share/native/com/sun/java/util/jar/pack/bytes.cpp	Tue Feb 16 13:34:13 2010
-+++ openjdk/jdk/src/share/native/com/sun/java/util/jar/pack/bytes.cpp	Tue Feb 16 13:34:12 2010
-@@ -40,7 +40,7 @@
- 
- void bytes::malloc(size_t len_) {
-   len = len_;
--  ptr = NEW(byte, len_+1);  // add trailing zero byte always
-+  ptr = NEW(byte, add_size(len_, 1));  // add trailing zero byte always
-   if (ptr == null) {
-     // set ptr to some victim memory, to ease escape
-     set(dummy, sizeof(dummy)-1);
-@@ -56,7 +56,7 @@
-     return;
-   }
-   byte* oldptr = ptr;
--  ptr = (len_ >= PSIZE_MAX) ? null : (byte*)::realloc(ptr, len_+1);
-+  ptr = (len_ >= PSIZE_MAX) ? null : (byte*)::realloc(ptr, add_size(len_, 1));
-   if (ptr != null)  {
-     mtrace('r', oldptr, 0);
-     mtrace('m', ptr, len_+1);
---- openjdk.orig/jdk/src/share/native/com/sun/java/util/jar/pack/unpack.cpp	Tue Feb 16 13:34:15 2010
-+++ openjdk/jdk/src/share/native/com/sun/java/util/jar/pack/unpack.cpp	Tue Feb 16 13:34:14 2010
-@@ -488,7 +488,7 @@
- 
- maybe_inline
- void unpacker::saveTo(bytes& b, byte* ptr, size_t len) {
--  b.ptr = U_NEW(byte, len+1);
-+  b.ptr = U_NEW(byte, add_size(len,1));
-   if (aborting()) {
-     b.len = 0;
-     return;
-@@ -675,7 +675,7 @@
-     if (archive_size < header_size_1) {
-       abort("too much read-ahead");  // somehow we pre-fetched too much?
-       return;
--    }   
-+    }
-     input.set(U_NEW(byte, add_size(header_size_0, archive_size, C_SLOP)),
-               (size_t) header_size_0 + archive_size);
-     CHECK;
-@@ -1129,7 +1129,7 @@
-     *fillp = 0;  // bigbuf must contain a well-formed Utf8 string
-     int length = fillp - bigbuf.ptr;
-     bytes& value = cpMap[i].value.b;
--    value.set(U_NEW(byte, length+1), length);
-+    value.set(U_NEW(byte, add_size(length,1)), length);
-     value.copyFrom(bigbuf.ptr, length);
-     CHECK;
-     // Index all Utf8 strings
-@@ -1601,7 +1601,7 @@
-     return no_bands;
-   } else {
-     int nb = bs_limit - bs_base;
--    band** res = U_NEW(band*, nb+1);
-+    band** res = U_NEW(band*, add_size(nb, 1));
-     CHECK_(no_bands);
-     for (int i = 0; i < nb; i++) {
-       band* b = (band*) band_stack.get(bs_base + i);
-@@ -1710,7 +1710,7 @@
-             }
-             // save away the case labels
-             int ntags = band_stack.length() - case_base;
--            int* tags = U_NEW(int, 1+ntags);
-+            int* tags = U_NEW(int, add_size(ntags, 1));
-             CHECK_(lp);
-             k_case.le_casetags = tags;
-             *tags++ = ntags;
-@@ -3115,8 +3115,8 @@
-   int*     field_counts  = T_NEW(int, nclasses);
-   int*     method_counts = T_NEW(int, nclasses);
-   cpindex* all_indexes   = U_NEW(cpindex, nclasses*2);
--  entry**  field_ix      = U_NEW(entry*, nfields+nclasses);
--  entry**  method_ix     = U_NEW(entry*, nmethods+nclasses);
-+  entry**  field_ix      = U_NEW(entry*, add_size(nfields, nclasses));
-+  entry**  method_ix     = U_NEW(entry*, add_size(nmethods, nclasses));
- 
-   for (j = 0; j < nfields; j++) {
-     entry& f = fields[j];
-@@ -4104,7 +4104,7 @@
-           }
-           const char* suffix = ".java";
-           int len = prefix.len + strlen(suffix);
--          bytes name; name.set(T_NEW(byte, len + 1), len);
-+          bytes name; name.set(T_NEW(byte, add_size(len, 1)), len);
-           name.strcat(prefix).strcat(suffix);
-           ref = cp.ensureUtf8(name);
-         }
-@@ -4619,7 +4619,7 @@
-       bytes& prefix = cur_class->ref(0)->value.b;
-       const char* suffix = ".class";
-       int len = prefix.len + strlen(suffix);
--      bytes name; name.set(T_NEW(byte, len + 1), len);
-+      bytes name; name.set(T_NEW(byte, add_size(len, 1)), len);
-       cur_file.name = name.strcat(prefix).strcat(suffix).strval();
-     }
-   } else {
-@@ -4686,6 +4686,7 @@
-         input.ensureSize(fleft);
-       }
-       rplimit = rp = input.base();
-+      CHECK;
-       input.setLimit(rp + fleft);
-       if (!ensure_input(fleft))
-         abort("EOF reading resource file");
--- a/patches/security/20100330/6904691.patch	Sun Apr 18 17:03:04 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,166 +0,0 @@
---- openjdk.orig/jdk/src/share/classes/java/beans/EventHandler.java	2009-12-18 16:45:11.534864100 +0300
-+++ openjdk/jdk/src/share/classes/java/beans/EventHandler.java	2009-12-18 16:45:10.832864100 +0300
-@@ -1,5 +1,5 @@
- /*
-- * Copyright 2000-2007 Sun Microsystems, Inc.  All Rights Reserved.
-+ * Copyright 2000-2009 Sun Microsystems, Inc.  All Rights Reserved.
-  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-  *
-  * This code is free software; you can redistribute it and/or modify it
-@@ -32,7 +32,6 @@
- import java.security.AccessController;
- import java.security.PrivilegedAction;
- 
--import java.util.EventObject;
- import sun.reflect.misc.MethodUtil;
- 
- /**
-@@ -279,9 +278,9 @@
- public class EventHandler implements InvocationHandler {
-     private Object target;
-     private String action;
--    private String eventPropertyName;
--    private String listenerMethodName;
--    private AccessControlContext acc;
-+    private final String eventPropertyName;
-+    private final String listenerMethodName;
-+    private final AccessControlContext acc = AccessController.getContext();
- 
-     /**
-      * Creates a new <code>EventHandler</code> object;
-@@ -309,7 +308,6 @@
-      * @see #getListenerMethodName
-      */
-     public EventHandler(Object target, String action, String eventPropertyName, String listenerMethodName) {
--        this.acc = AccessController.getContext();
-         this.target = target;
-         this.action = action;
-         if (target == null) {
-@@ -421,7 +419,11 @@
-      * @see EventHandler
-      */
-     public Object invoke(final Object proxy, final Method method, final Object[] arguments) {
--        return AccessController.doPrivileged(new PrivilegedAction() {
-+        AccessControlContext acc = this.acc;
-+        if (acc == null && null != System.getSecurityManager()) {
-+            throw new SecurityException("AccessControlContext is not set");
-+        }
-+        return AccessController.doPrivileged(new PrivilegedAction<Object>() {
-             public Object run() {
-                 return invokeInternal(proxy, method, arguments);
-             }
-@@ -481,7 +483,10 @@
-                 throw new RuntimeException(ex);
-             }
-             catch (InvocationTargetException ex) {
--                throw new RuntimeException(ex.getTargetException());
-+                Throwable th = ex.getTargetException();
-+                throw (th instanceof RuntimeException)
-+                        ? (RuntimeException) th
-+                        : new RuntimeException(th);
-             }
-         }
-         return null;
---- openjdk.orig/jdk/src/share/classes/java/beans/Statement.java	2009-12-18 16:45:17.431864100 +0300
-+++ openjdk/jdk/src/share/classes/java/beans/Statement.java	2009-12-18 16:45:16.779864100 +0300
-@@ -1,5 +1,5 @@
- /*
-- * Copyright 2000-2007 Sun Microsystems, Inc.  All Rights Reserved.
-+ * Copyright 2000-2009 Sun Microsystems, Inc.  All Rights Reserved.
-  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-  *
-  * This code is free software; you can redistribute it and/or modify it
-@@ -29,6 +29,10 @@
- import java.lang.reflect.Constructor;
- import java.lang.reflect.InvocationTargetException;
- import java.lang.reflect.Method;
-+import java.security.AccessControlContext;
-+import java.security.AccessController;
-+import java.security.PrivilegedActionException;
-+import java.security.PrivilegedExceptionAction;
- 
- import com.sun.beans.finder.ClassFinder;
- import sun.reflect.misc.MethodUtil;
-@@ -61,9 +65,10 @@
-         }
-     };
- 
--    Object target;
--    String methodName;
--    Object[] arguments;
-+    private final AccessControlContext acc = AccessController.getContext();
-+    private final Object target;
-+    private final String methodName;
-+    private final Object[] arguments;
- 
-     /**
-      * Creates a new <code>Statement</code> object with a <code>target</code>,
-@@ -141,6 +146,27 @@
-     }
- 
-     Object invoke() throws Exception {
-+        AccessControlContext acc = this.acc;
-+        if (acc == null && null != System.getSecurityManager()) {
-+            throw new SecurityException("AccessControlContext is not set");
-+        }
-+        try {
-+            return AccessController.doPrivileged(
-+                    new PrivilegedExceptionAction<Object>() {
-+                        public Object run()
-+                                throws Exception {
-+                            return invokeInternal();
-+                        }
-+                    },
-+                    acc
-+            );
-+        }
-+        catch (PrivilegedActionException exception) {
-+            throw exception.getException();
-+        }
-+    }
-+
-+    private Object invokeInternal() throws Exception {
-         Object target = getTarget();
-         String methodName = getMethodName();
- 
---- openjdk.orig/jdk/test/java/beans/EventHandler/Test6277246.java	2009-12-18 16:45:23.345864100 +0300
-+++ openjdk/jdk/test/java/beans/EventHandler/Test6277246.java	2009-12-18 16:45:22.586864100 +0300
-@@ -1,5 +1,5 @@
- /*
-- * Copyright 2005-2007 Sun Microsystems, Inc.  All Rights Reserved.
-+ * Copyright 2005-2009 Sun Microsystems, Inc.  All Rights Reserved.
-  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-  *
-  * This code is free software; you can redistribute it and/or modify it
-@@ -49,10 +49,10 @@
-         catch (NoSuchMethodException exception) {
-             throw new Error("unexpected exception", exception);
-         }
-+        catch (SecurityException exception) {
-+            // expected security exception
-+        }
-         catch (RuntimeException exception) {
--            if (exception.getCause() instanceof SecurityException) {
--                return; // expected security exception
--            }
-             throw new Error("unexpected exception", exception);
-         }
-     }
---- openjdk.orig/jdk/test/java/beans/EventHandler/Test6277266.java	2009-12-18 16:45:29.225864100 +0300
-+++ openjdk/jdk/test/java/beans/EventHandler/Test6277266.java	2009-12-18 16:45:28.557864100 +0300
-@@ -1,5 +1,5 @@
- /*
-- * Copyright 2005-2007 Sun Microsystems, Inc.  All Rights Reserved.
-+ * Copyright 2005-2009 Sun Microsystems, Inc.  All Rights Reserved.
-  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-  *
-  * This code is free software; you can redistribute it and/or modify it
-@@ -51,7 +51,7 @@
-             );
-             throw new Error("SecurityException expected");
-         } catch (InvocationTargetException exception) {
--            if (exception.getCause().getCause() instanceof SecurityException){
-+            if (exception.getCause() instanceof SecurityException){
-                 return; // expected security exception
-             }
-             throw new Error("unexpected exception", exception);
--- a/patches/security/20100330/6909597.patch	Sun Apr 18 17:03:04 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,74 +0,0 @@
---- openjdk.orig/jdk/src/share/native/sun/awt/image/jpeg/imageioJPEG.c	2009-12-23 19:18:23.132000000 +0300
-+++ openjdk/jdk/src/share/native/sun/awt/image/jpeg/imageioJPEG.c	2009-12-23 19:18:22.515000000 +0300
-@@ -258,6 +258,7 @@
- 
- typedef struct pixelBufferStruct {
-     jobject hpixelObject;   // Usually a DataBuffer bank as a byte array
-+    unsigned int byteBufferLength;
-     union pixptr {
-         INT32         *ip;  // Pinned buffer pointer, as 32-bit ints
-         unsigned char *bp;  // Pinned buffer pointer, as bytes
-@@ -270,6 +271,7 @@
-  */
- static void initPixelBuffer(pixelBufferPtr pb) {
-     pb->hpixelObject = NULL;
-+    pb->byteBufferLength = 0;
-     pb->buf.ip = NULL;
- }
- 
-@@ -279,13 +281,13 @@
-  */
- static int setPixelBuffer(JNIEnv *env, pixelBufferPtr pb, jobject obj) {
-     pb->hpixelObject = (*env)->NewGlobalRef(env, obj);
--
-     if (pb->hpixelObject == NULL) {
-         JNU_ThrowByName( env,
-                          "java/lang/OutOfMemoryError",
-                          "Setting Pixel Buffer");
-         return NOT_OK;
-     }
-+    pb->byteBufferLength = (*env)->GetArrayLength(env, pb->hpixelObject);
-     return OK;
- }
- 
-@@ -302,6 +304,7 @@
-         unpinPixelBuffer(env, pb);
-         (*env)->DeleteGlobalRef(env, pb->hpixelObject);
-         pb->hpixelObject = NULL;
-+        pb->byteBufferLength = 0;
-     }
- }
- 
-@@ -1806,6 +1809,7 @@
-     boolean orderedBands = TRUE;
-     imageIODataPtr data = (imageIODataPtr) ptr;
-     j_decompress_ptr cinfo;
-+    unsigned int numBytes;
- 
-     /* verify the inputs */
- 
-@@ -2030,15 +2034,22 @@
-                 // scanline buffer into the raster.
-                 in = scanLinePtr + (sourceXStart * cinfo->num_components);
-                 if (pixelLimit > in) {
--                    memcpy(out, in, pixelLimit - in);
-+                    numBytes = pixelLimit - in;
-+                    if (numBytes > data->pixelBuf.byteBufferLength) {
-+                        numBytes = data->pixelBuf.byteBufferLength;
-+                    }
-+                    memcpy(out, in, numBytes);
-                 }
-             } else {
-+                numBytes = numBands;
-                 for (in = scanLinePtr+sourceXStart*cinfo->num_components;
--                     in < pixelLimit;
-+                     in < pixelLimit  &&
-+                       numBytes <= data->pixelBuf.byteBufferLength;
-                      in += pixelStride) {
-                     for (i = 0; i < numBands; i++) {
-                         *out++ = *(in+bands[i]);
-                     }
-+                    numBytes += numBands;
-                 }
-             }
- 
--- a/patches/security/20100330/6910590.patch	Sun Apr 18 17:03:04 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,10 +0,0 @@
---- openjdk.orig/jdk/src/share/classes/java/lang/ProcessBuilder.java	Tue Jan 12 12:31:35 2010
-+++ openjdk/jdk/src/share/classes/java/lang/ProcessBuilder.java	Tue Jan 12 12:31:34 2010
-@@ -451,6 +451,7 @@
-         // Must convert to array first -- a malicious user-supplied
-         // list might try to circumvent the security check.
-         String[] cmdarray = command.toArray(new String[command.size()]);
-+        cmdarray = cmdarray.clone();
-         for (String arg : cmdarray)
-             if (arg == null)
-                 throw new NullPointerException();
--- a/patches/security/20100330/6914823.patch	Sun Apr 18 17:03:04 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,80 +0,0 @@
---- openjdk.orig/jdk/src/share/classes/sun/awt/image/ImageRepresentation.java	2010-02-17 13:30:02.571000000 +0300
-+++ openjdk/jdk/src/share/classes/sun/awt/image/ImageRepresentation.java	2010-02-17 13:30:02.197000000 +0300
-@@ -333,10 +333,10 @@
-         hints = h;
-     }
- 
--    public native void setICMpixels(int x, int y, int w, int h, int[] lut,
-+    private native void setICMpixels(int x, int y, int w, int h, int[] lut,
-                                     byte[] pix, int off, int scansize,
-                                     IntegerComponentRaster ict);
--    public native int setDiffICM(int x, int y, int w, int h, int[] lut,
-+    private native int setDiffICM(int x, int y, int w, int h, int[] lut,
-                                  int transPix, int numLut, IndexColorModel icm,
-                                  byte[] pix, int off, int scansize,
-                                  ByteComponentRaster bct, int chanOff);
-@@ -361,6 +361,64 @@
-                 }
-                 createBufferedImage();
-             }
-+
-+            if (w <= 0 || h <= 0) {
-+                return;
-+            }
-+
-+            int biWidth = biRaster.getWidth();
-+            int biHeight = biRaster.getHeight();
-+
-+            int x1 = x+w;  // Overflow protection below
-+            int y1 = y+h;  // Overflow protection below
-+            if (x < 0) {
-+                off -= x;
-+                x = 0;
-+            } else if (x1 < 0) {
-+                x1 = biWidth;  // Must be overflow
-+            }
-+            if (y < 0) {
-+                off -= y*scansize;
-+                y = 0;
-+            } else if (y1 < 0) {
-+                y1 = biHeight;  // Must be overflow
-+            }
-+            if (x1 > biWidth) {
-+                x1 = biWidth;
-+            }
-+            if (y1 > biHeight) {
-+                y1 = biHeight;
-+            }
-+            if (x >= x1 || y >= y1) {
-+                return;
-+            }
-+            // x,y,x1,y1 are all >= 0, so w,h must be >= 0
-+            w = x1-x;
-+            h = y1-y;
-+            // off is first pixel read so it must be in bounds
-+            if (off < 0 || off >= pix.length) {
-+                // They overflowed their own array
-+                throw new ArrayIndexOutOfBoundsException("Data offset out of bounds.");
-+            }
-+            // pix.length and off are >= 0 so remainder >= 0
-+            int remainder = pix.length - off;
-+            if (remainder < w) {
-+                // They overflowed their own array
-+                throw new ArrayIndexOutOfBoundsException("Data array is too short.");
-+            }
-+            int num;
-+            if (scansize < 0) {
-+                num = (off / -scansize) + 1;
-+            } else if (scansize > 0) {
-+                num = ((remainder-w) / scansize) + 1;
-+            } else {
-+                num = h;
-+            }
-+            if (h > num) {
-+                // They overflowed their own array.
-+                throw new ArrayIndexOutOfBoundsException("Data array is too short.");
-+            }
-+
-             if (isSameCM && (cmodel != model) && (srcLUT != null) &&
-                 (model instanceof IndexColorModel) &&
-                 (biRaster instanceof ByteComponentRaster))
--- a/patches/security/20100330/6914866.patch	Sun Apr 18 17:03:04 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,118 +0,0 @@
---- openjdk.orig/jdk/src/share/native/sun/awt/medialib/awt_ImagingLib.c	2010-02-17 13:09:00.023000000 +0300
-+++ openjdk/jdk/src/share/native/sun/awt/medialib/awt_ImagingLib.c	2010-02-17 13:08:58.601000000 +0300
-@@ -2216,7 +2216,8 @@
-     int dataType = BYTE_DATA_TYPE;
-     int width;
-     int height;
--    int size = rasterP->width * rasterP->height * rasterP->numBands;
-+    int dataSize;
-+    int offset;
- 
-     *dataPP = NULL;
- 
-@@ -2269,6 +2270,22 @@
- #endif
-     switch (rasterP->type) {
-     case sun_awt_image_IntegerComponentRaster_TYPE_INT_8BIT_SAMPLES:
-+        if (!((rasterP->chanOffsets[0] == 0 || SAFE_TO_ALLOC_2(rasterP->chanOffsets[0], 4)) &&
-+              SAFE_TO_ALLOC_2(width, 4) &&
-+              SAFE_TO_ALLOC_3(height, rasterP->scanlineStride, 4)))
-+        {
-+            return -1;
-+        }
-+        offset = 4 * rasterP->chanOffsets[0];
-+        dataSize = 4 * (*env)->GetArrayLength(env, rasterP->jdata);
-+
-+        if (offset < 0 || offset >= dataSize ||
-+            width > rasterP->scanlineStride ||
-+            height * rasterP->scanlineStride * 4 > dataSize - offset)
-+        {
-+            // raster data buffer is too short
-+            return -1;
-+        }
-         dataP = (void *) (*env)->GetPrimitiveArrayCritical(env, rasterP->jdata,
-                                                            NULL);
-         if (dataP == NULL) {
-@@ -2277,11 +2294,25 @@
-         *mlibImagePP = (*sMlibSysFns.createStructFP)(MLIB_BYTE, 4,
-                                               width, height,
-                                               rasterP->scanlineStride*4,
--                                              (unsigned char *)dataP
--                                              + rasterP->chanOffsets[0]*4);
-+                                              (unsigned char *)dataP + offset);
-         *dataPP = dataP;
-         return 0;
-     case sun_awt_image_IntegerComponentRaster_TYPE_BYTE_SAMPLES:
-+        if (!(SAFE_TO_ALLOC_2(width, rasterP->numBands) &&
-+              SAFE_TO_ALLOC_2(height, rasterP->scanlineStride)))
-+        {
-+            return -1;
-+        }
-+        offset = rasterP->chanOffsets[0];
-+        dataSize = (*env)->GetArrayLength(env, rasterP->jdata);
-+
-+        if (offset < 0 || offset >= dataSize ||
-+            width * rasterP->numBands > rasterP->scanlineStride ||
-+            height * rasterP->scanlineStride > dataSize - offset)
-+        {
-+            // raster data buffer is too short
-+            return -1;
-+        }
-         dataP = (void *) (*env)->GetPrimitiveArrayCritical(env, rasterP->jdata,
-                                                            NULL);
-         if (dataP == NULL) {
-@@ -2290,11 +2321,26 @@
-         *mlibImagePP = (*sMlibSysFns.createStructFP)(MLIB_BYTE, rasterP->numBands,
-                                               width, height,
-                                               rasterP->scanlineStride,
--                                              (unsigned char *)dataP
--                                              + rasterP->chanOffsets[0]);
-+                                              (unsigned char *)dataP + offset);
-         *dataPP = dataP;
-         return 0;
-     case sun_awt_image_IntegerComponentRaster_TYPE_USHORT_SAMPLES:
-+        if (!((rasterP->chanOffsets[0] == 0 || SAFE_TO_ALLOC_2(rasterP->chanOffsets[0], 2)) &&
-+              SAFE_TO_ALLOC_3(width, rasterP->numBands, 2) &&
-+              SAFE_TO_ALLOC_3(height, rasterP->scanlineStride, 2)))
-+        {
-+              return -1;
-+        }
-+        offset = rasterP->chanOffsets[0] * 2;
-+        dataSize = 2 * (*env)->GetArrayLength(env, rasterP->jdata);
-+
-+        if (offset < 0 || offset >= dataSize ||
-+            width * rasterP->numBands > rasterP->scanlineStride ||
-+            height * rasterP->scanlineStride * 2 > dataSize - offset)
-+        {
-+            // raster data buffer is too short
-+             return -1;
-+        }
-         dataP = (void *) (*env)->GetPrimitiveArrayCritical(env, rasterP->jdata,
-                                                            NULL);
-         if (dataP == NULL) {
-@@ -2304,8 +2350,7 @@
-                                                      rasterP->numBands,
-                                                      width, height,
-                                                      rasterP->scanlineStride*2,
--                                                     (unsigned char *)dataP
--                                                     + rasterP->chanOffsets[0]*2);
-+                                                     (unsigned char *)dataP + offset);
-         *dataPP = dataP;
-         return 0;
- 
---- openjdk.orig/jdk/src/share/native/sun/awt/medialib/safe_alloc.h	2010-02-17 13:09:12.672000000 +0300
-+++ openjdk/jdk/src/share/native/sun/awt/medialib/safe_alloc.h	2010-02-17 13:09:11.501000000 +0300
-@@ -35,11 +35,11 @@
-  */
- #define SAFE_TO_ALLOC_2(c, sz)                                             \
-     (((c) > 0) && ((sz) > 0) &&                                            \
--     ((0xffffffffu / ((juint)(c))) > (sz)))
-+     ((0xffffffffu / ((juint)(c))) > ((juint)(sz))))
- 
- #define SAFE_TO_ALLOC_3(w, h, sz)                                          \
-     (((w) > 0) && ((h) > 0) && ((sz) > 0) &&                               \
--    (((0xffffffffu / ((juint)(w))) / ((juint)(h))) > (sz)))
-+     (((0xffffffffu / ((juint)(w))) / ((juint)(h))) > ((juint)(sz))))
- 
- 
- #endif // __SAFE_ALLOC_H__
--- a/patches/security/20100330/6932480.patch	Sun Apr 18 17:03:04 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,43 +0,0 @@
-# HG changeset patch
-# User acorn
-# Date 1268677738 14400
-# Node ID 77940ab6c3558ccc1b859a2e28cb0db440d9f5b6
-# Parent  9d4986fcac2a07806ffed8a33184da149f76719b
-6932480: Crash in CompilerThread/Parser. Unloaded array klass?
-Summary: Restore code deleted in 6626217
-Reviewed-by: asaha, kevinw
-
-diff --git openjdk.orig/hotspot/src/share/vm/ci/ciEnv.cpp openjdk/hotspot/src/share/vm/ci/ciEnv.cpp
---- openjdk.orig/hotspot/src/share/vm/ci/ciEnv.cpp
-+++ openjdk/hotspot/src/share/vm/ci/ciEnv.cpp
-@@ -343,6 +343,30 @@ ciKlass* ciEnv::get_klass_by_name_impl(c
-     found_klass =
-       SystemDictionary::find_instance_or_array_klass(sym, loader, domain,
-                                                      KILL_COMPILE_ON_FATAL_(fail_type));
-+  }
-+
-+  // If we fail to find an array klass, look again for its element type.
-+  // The element type may be available either locally or via constraints.
-+  // In either case, if we can find the element type in the system dictionary,
-+  // we must build an array type around it.  The CI requires array klasses
-+  // to be loaded if their element klasses are loaded, except when memory
-+  // is exhausted.
-+  if (sym->byte_at(0) == '[' &&
-+      (sym->byte_at(1) == '[' || sym->byte_at(1) == 'L')) {
-+    // We have an unloaded array.
-+    // Build it on the fly if the element class exists.
-+    symbolOop elem_sym = oopFactory::new_symbol(sym->as_utf8()+1,
-+                                                sym->utf8_length()-1,
-+                                                KILL_COMPILE_ON_FATAL_(fail_type));
-+    // Get element ciKlass recursively.
-+    ciKlass* elem_klass =
-+      get_klass_by_name_impl(accessing_klass,
-+                             get_object(elem_sym)->as_symbol(),
-+                             require_local);
-+    if (elem_klass != NULL && elem_klass->is_loaded()) {
-+      // Now make an array for it
-+      return ciObjArrayKlass::make_impl(elem_klass);
-+    }
-   }
- 
-   if (found_klass != NULL) {
--- a/patches/security/20100330/hotspot/hs16/6626217.patch	Sun Apr 18 17:03:04 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,160 +0,0 @@
-diff -Nru openjdk.orig/hotspot/src/share/vm/ci/ciEnv.cpp openjdk/hotspot/src/share/vm/ci/ciEnv.cpp
---- openjdk.orig/hotspot/src/share/vm/ci/ciEnv.cpp	2009-12-08 23:12:17.000000000 +0000
-+++ openjdk/hotspot/src/share/vm/ci/ciEnv.cpp	2010-03-31 00:13:28.000000000 +0100
-@@ -398,30 +398,6 @@
-     return get_object(found_klass)->as_klass();
-   }
- 
--  // If we fail to find an array klass, look again for its element type.
--  // The element type may be available either locally or via constraints.
--  // In either case, if we can find the element type in the system dictionary,
--  // we must build an array type around it.  The CI requires array klasses
--  // to be loaded if their element klasses are loaded, except when memory
--  // is exhausted.
--  if (sym->byte_at(0) == '[' &&
--      (sym->byte_at(1) == '[' || sym->byte_at(1) == 'L')) {
--    // We have an unloaded array.
--    // Build it on the fly if the element class exists.
--    symbolOop elem_sym = oopFactory::new_symbol(sym->as_utf8()+1,
--                                                sym->utf8_length()-1,
--                                                KILL_COMPILE_ON_FATAL_(fail_type));
--    // Get element ciKlass recursively.
--    ciKlass* elem_klass =
--      get_klass_by_name_impl(accessing_klass,
--                             get_object(elem_sym)->as_symbol(),
--                             require_local);
--    if (elem_klass != NULL && elem_klass->is_loaded()) {
--      // Now make an array for it
--      return ciObjArrayKlass::make_impl(elem_klass);
--    }
--  }
--
-   if (require_local)  return NULL;
-   // Not yet loaded into the VM, or not governed by loader constraints.
-   // Make a CI representative for it.
-diff -Nru openjdk.orig/hotspot/src/share/vm/classfile/loaderConstraints.cpp openjdk/hotspot/src/share/vm/classfile/loaderConstraints.cpp
---- openjdk.orig/hotspot/src/share/vm/classfile/loaderConstraints.cpp	2009-12-08 23:12:17.000000000 +0000
-+++ openjdk/hotspot/src/share/vm/classfile/loaderConstraints.cpp	2010-03-31 00:12:35.000000000 +0100
-@@ -335,32 +335,6 @@
- }
- 
- 
--klassOop LoaderConstraintTable::find_constrained_elem_klass(symbolHandle name,
--                                                            symbolHandle elem_name,
--                                                            Handle loader,
--                                                            TRAPS) {
--  LoaderConstraintEntry *p = *(find_loader_constraint(name, loader));
--  if (p != NULL) {
--    assert(p->klass() == NULL, "Expecting null array klass");
--
--    // The array name has a constraint, but it will not have a class. Check
--    // each loader for an associated elem
--    for (int i = 0; i < p->num_loaders(); i++) {
--      Handle no_protection_domain;
--
--      klassOop k = SystemDictionary::find(elem_name, p->loader(i), no_protection_domain, THREAD);
--      if (k != NULL) {
--        // Return the first elem klass found.
--        return k;
--      }
--    }
--  }
--
--  // No constraints, or else no klass loaded yet.
--  return NULL;
--}
--
--
- void LoaderConstraintTable::ensure_loader_constraint_capacity(
-                                                      LoaderConstraintEntry *p,
-                                                     int nfree) {
-diff -Nru openjdk.orig/hotspot/src/share/vm/classfile/loaderConstraints.hpp openjdk/hotspot/src/share/vm/classfile/loaderConstraints.hpp
---- openjdk.orig/hotspot/src/share/vm/classfile/loaderConstraints.hpp	2009-12-08 23:12:17.000000000 +0000
-+++ openjdk/hotspot/src/share/vm/classfile/loaderConstraints.hpp	2010-03-31 00:12:35.000000000 +0100
-@@ -66,9 +66,6 @@
-   //                                           bool is_method, TRAPS)
- 
-   klassOop find_constrained_klass(symbolHandle name, Handle loader);
--  klassOop find_constrained_elem_klass(symbolHandle name, symbolHandle elem_name,
--                                       Handle loader, TRAPS);
--
- 
-   // Class loader constraints
- 
-diff -Nru openjdk.orig/hotspot/src/share/vm/classfile/systemDictionary.cpp openjdk/hotspot/src/share/vm/classfile/systemDictionary.cpp
---- openjdk.orig/hotspot/src/share/vm/classfile/systemDictionary.cpp	2009-12-08 23:12:17.000000000 +0000
-+++ openjdk/hotspot/src/share/vm/classfile/systemDictionary.cpp	2010-03-31 00:17:35.000000000 +0100
-@@ -2164,9 +2164,8 @@
-   // a loader constraint that would require this loader to return the
-   // klass that is already loaded.
-   if (FieldType::is_array(class_name())) {
--    // Array classes are hard because their klassOops are not kept in the
--    // constraint table. The array klass may be constrained, but the elem class
--    // may not be.
-+    // For array classes, their klassOops are not kept in the
-+    // constraint table. The element klassOops are.
-     jint dimension;
-     symbolOop object_key;
-     BasicType t = FieldType::get_array_info(class_name(), &dimension,
-@@ -2176,8 +2175,9 @@
-     } else {
-       symbolHandle elem_name(THREAD, object_key);
-       MutexLocker mu(SystemDictionary_lock, THREAD);
--      klass = constraints()->find_constrained_elem_klass(class_name, elem_name, class_loader, THREAD);
-+      klass = constraints()->find_constrained_klass(elem_name, class_loader);
-     }
-+    // If element class already loaded, allocate array klass
-     if (klass != NULL) {
-       klass = Klass::cast(klass)->array_klass_or_null(dimension);
-     }
-@@ -2195,10 +2195,27 @@
-                                              Handle class_loader1,
-                                              Handle class_loader2,
-                                              Thread* THREAD) {
--  unsigned int d_hash1 = dictionary()->compute_hash(class_name, class_loader1);
-+  symbolHandle constraint_name;
-+  if (!FieldType::is_array(class_name())) {
-+    constraint_name = class_name;
-+  } else {
-+    // For array classes, their klassOops are not kept in the
-+    // constraint table. The element classes are.
-+    jint dimension;
-+    symbolOop object_key;
-+    BasicType t = FieldType::get_array_info(class_name(), &dimension,
-+                                            &object_key, CHECK_(false));
-+    // primitive types always pass
-+    if (t != T_OBJECT) {
-+      return true;
-+    } else {
-+      constraint_name = symbolHandle(THREAD, object_key);
-+    }
-+  }
-+  unsigned int d_hash1 = dictionary()->compute_hash(constraint_name, class_loader1);
-   int d_index1 = dictionary()->hash_to_index(d_hash1);
- 
--  unsigned int d_hash2 = dictionary()->compute_hash(class_name, class_loader2);
-+  unsigned int d_hash2 = dictionary()->compute_hash(constraint_name, class_loader2);
-   int d_index2 = dictionary()->hash_to_index(d_hash2);
- 
-   {
-@@ -2207,9 +2224,9 @@
-     // Better never do a GC while we're holding these oops
-     No_Safepoint_Verifier nosafepoint;
- 
--    klassOop klass1 = find_class(d_index1, d_hash1, class_name, class_loader1);
--    klassOop klass2 = find_class(d_index2, d_hash2, class_name, class_loader2);
--    return constraints()->add_entry(class_name, klass1, class_loader1,
-+    klassOop klass1 = find_class(d_index1, d_hash1, constraint_name, class_loader1);
-+    klassOop klass2 = find_class(d_index2, d_hash2, constraint_name, class_loader2);
-+    return constraints()->add_entry(constraint_name, klass1, class_loader1,
-                                     klass2, class_loader2);
-   }
- }
-@@ -2287,6 +2304,7 @@
- // Returns the name of the type that failed a loader constraint check, or
- // NULL if no constraint failed. The returned C string needs cleaning up
- // with a ResourceMark in the caller.  No exception except OOME is thrown.
-+// Arrays are not added to the loader constraint table, their elements are.
- char* SystemDictionary::check_signature_loaders(symbolHandle signature,
-                                                Handle loader1, Handle loader2,
-                                                bool is_method, TRAPS)  {
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/shark.patch	Sun Apr 18 17:04:10 2010 +0100
@@ -0,0 +1,9 @@
+--- openjdk.orig/hotspot/src/cpu//zero/vm/shark_globals_zero.hpp	2009-09-10 15:36:58.658607552 +0100
++++ openjdk/hotspot/src/cpu/zero/vm/shark_globals_zero.hpp	2010-01-13 14:57:16.000000000 +0000
+@@ -59,5 +59,5 @@
+ define_pd_global(uintx, PermSize,                     12*M );
+ define_pd_global(uintx, MaxPermSize,                  64*M );
+ define_pd_global(bool,  NeverActAsServerClassMachine, true );
+-define_pd_global(uintx, DefaultMaxRAM,                1*G  );
++define_pd_global(uint64_t,MaxRAM,                    1ULL*G);
+ define_pd_global(bool,  CICompileOSR,                 true );
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/zero.patch	Sun Apr 18 17:04:10 2010 +0100
@@ -0,0 +1,107 @@
+diff -r 7d2ae1d67c95 ports/hotspot/src/cpu/zero/vm/assembler_zero.cpp
+--- openjdk.orig/hotspot/src/cpu/zero/vm/assembler_zero.cpp	Mon Oct 26 23:26:33 2009 +0000
++++ openjdk/hotspot/src/cpu/zero/vm/assembler_zero.cpp	Tue Oct 27 15:06:00 2009 +0000
+@@ -54,6 +54,12 @@
+   sync();
+ }
+ 
++RegisterOrConstant MacroAssembler::delayed_value_impl(intptr_t* delayed_value_addr,
++						      Register tmpl, int offset) 
++{
++  Unimplemented();
++}
++
+ void MacroAssembler::store_oop(jobject obj) {
+   code_section()->relocate(pc(), oop_Relocation::spec_for_immediate());
+   emit_address((address) obj);
+diff -r 7d2ae1d67c95 ports/hotspot/src/cpu/zero/vm/assembler_zero.hpp
+--- openjdk.orig/hotspot/src/cpu/zero/vm/assembler_zero.hpp	Mon Oct 26 23:26:33 2009 +0000
++++ openjdk/hotspot/src/cpu/zero/vm/assembler_zero.hpp	Tue Oct 27 15:06:00 2009 +0000
+@@ -47,7 +47,8 @@
+   void align(int modulus);
+   void bang_stack_with_offset(int offset);
+   bool needs_explicit_null_check(intptr_t offset);
+-
++  RegisterOrConstant delayed_value_impl(intptr_t* delayed_value_addr,
++					Register tmp, int offset);
+  public:
+   void advance(int bytes);
+   void store_oop(jobject obj);
+diff -r 7d2ae1d67c95 ports/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp
+--- openjdk.orig/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp	Mon Oct 26 23:26:33 2009 +0000
++++ openjdk/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp	Tue Oct 27 15:06:00 2009 +0000
+@@ -759,6 +759,10 @@
+     entry_point = ((InterpreterGenerator*) this)->generate_abstract_entry();
+     break;
+ 
++  case Interpreter::method_handle:
++    entry_point = ((InterpreterGenerator*)this)->generate_method_handle_entry();
++    break;
++
+   case Interpreter::java_lang_math_sin:
+   case Interpreter::java_lang_math_cos:
+   case Interpreter::java_lang_math_tan:
+diff -r 7d2ae1d67c95 ports/hotspot/src/cpu/zero/vm/frame_zero.cpp
+--- openjdk.orig/hotspot/src/cpu/zero/vm/frame_zero.cpp	Mon Oct 26 23:26:33 2009 +0000
++++ openjdk/hotspot/src/cpu/zero/vm/frame_zero.cpp	Tue Oct 27 15:06:00 2009 +0000
+@@ -166,7 +166,7 @@
+   return type;
+ }
+ 
+-int frame::frame_size() const {
++int frame::frame_size(RegisterMap* map) const {
+ #ifdef PRODUCT
+   ShouldNotCallThis();
+ #else
+diff -r 7d2ae1d67c95 ports/hotspot/src/cpu/zero/vm/interp_masm_zero.hpp
+--- openjdk.orig/hotspot/src/cpu/zero/vm/interp_masm_zero.hpp	Mon Oct 26 23:26:33 2009 +0000
++++ openjdk/hotspot/src/cpu/zero/vm/interp_masm_zero.hpp	Tue Oct 27 15:06:00 2009 +0000
+@@ -28,4 +28,7 @@
+ class InterpreterMacroAssembler : public MacroAssembler {
+  public:
+   InterpreterMacroAssembler(CodeBuffer* code) : MacroAssembler(code) {}
++  RegisterOrConstant delayed_value_impl(intptr_t* delayed_value_addr, Register tmp, int offset) {
++    Unimplemented();
++  }
+ };
+diff -r 7d2ae1d67c95 ports/hotspot/src/cpu/zero/vm/interpreterGenerator_zero.hpp
+--- openjdk.orig/hotspot/src/cpu/zero/vm/interpreterGenerator_zero.hpp	Mon Oct 26 23:26:33 2009 +0000
++++ openjdk/hotspot/src/cpu/zero/vm/interpreterGenerator_zero.hpp	Tue Oct 27 15:06:00 2009 +0000
+@@ -34,3 +34,4 @@
+   address generate_math_entry(AbstractInterpreter::MethodKind kind);
+   address generate_empty_entry();
+   address generate_accessor_entry();
++  address generate_method_handle_entry();
+diff -r 7d2ae1d67c95 ports/hotspot/src/cpu/zero/vm/interpreter_zero.cpp
+--- openjdk.orig/hotspot/src/cpu/zero/vm/interpreter_zero.cpp	Mon Oct 26 23:26:33 2009 +0000
++++ openjdk/hotspot/src/cpu/zero/vm/interpreter_zero.cpp	Tue Oct 27 15:06:00 2009 +0000
+@@ -43,6 +43,11 @@
+   return ShouldNotCallThisEntry();
+ }
+ 
++address InterpreterGenerator::generate_method_handle_entry()
++{
++  return ShouldNotCallThisEntry();
++}
++
+ int AbstractInterpreter::size_activation(methodOop method,
+                                          int tempcount,
+                                          int popframe_extra_args,
+diff -r 7d2ae1d67c95 ports/hotspot/src/cpu/zero/vm/register_zero.hpp
+--- openjdk.orig/hotspot/src/cpu/zero/vm/register_zero.hpp	Mon Oct 26 23:26:33 2009 +0000
++++ openjdk/hotspot/src/cpu/zero/vm/register_zero.hpp	Tue Oct 27 15:06:00 2009 +0000
+@@ -106,3 +106,5 @@
+   static const int max_gpr;
+   static const int max_fpr;
+ };
++
++CONSTANT_REGISTER_DECLARATION(Register, noreg, (-1));
+diff -r 7d2ae1d67c95 ports/hotspot/src/os_cpu/linux_zero/vm/globals_linux_zero.hpp
+--- openjdk.orig/hotspot/src/os_cpu/linux_zero/vm/globals_linux_zero.hpp	Mon Oct 26 23:26:33 2009 +0000
++++ openjdk/hotspot/src/os_cpu/linux_zero/vm/globals_linux_zero.hpp	Tue Oct 27 15:06:00 2009 +0000
+@@ -41,3 +41,5 @@
+ define_pd_global(uintx, JVMInvokeMethodSlack,    8192);
+ 
+ define_pd_global(bool,  UseVectoredExceptions,   false);
++// Only used on 64 bit platforms
++define_pd_global(uintx, HeapBaseMinAddress,      2*G);
--- a/patches/zero/6890308.patch	Sun Apr 18 17:03:04 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,760 +0,0 @@
-diff -r 03b336640699 -r 354d3184f6b2 make/Makefile
---- openjdk/hotspot/make/Makefile	Wed Oct 07 15:38:37 2009 -0700
-+++ openjdk/hotspot/make/Makefile	Tue Oct 13 12:04:21 2009 -0700
-@@ -84,6 +84,7 @@
- C1_VM_TARGETS=product1 fastdebug1 optimized1 jvmg1
- C2_VM_TARGETS=product  fastdebug  optimized  jvmg
- KERNEL_VM_TARGETS=productkernel fastdebugkernel optimizedkernel jvmgkernel
-+ZERO_VM_TARGETS=productzero fastdebugzero optimizedzero jvmgzero
- 
- # JDK directory list
- JDK_DIRS=bin include jre lib demo
-@@ -94,6 +95,12 @@
- all_debug:     jvmg jvmg1 jvmgkernel docs export_debug
- all_optimized: optimized optimized1 optimizedkernel docs export_optimized
- 
-+allzero:           all_productzero all_fastdebugzero
-+all_productzero:   productzero docs export_product
-+all_fastdebugzero: fastdebugzero docs export_fastdebug
-+all_debugzero:     jvmgzero docs export_debug
-+all_optimizedzero: optimizedzero docs export_optimized
-+
- # Do everything
- world:         all create_jdk
- 
-@@ -120,6 +127,10 @@
- 	$(CD) $(GAMMADIR)/make; \
- 	$(MAKE) VM_TARGET=$@ generic_buildkernel $(ALT_OUT)
- 
-+$(ZERO_VM_TARGETS):
-+	$(CD) $(GAMMADIR)/make; \
-+	$(MAKE) VM_TARGET=$@ generic_buildzero $(ALT_OUT)
-+
- # Build compiler1 (client) rule, different for platforms
- generic_build1:
- 	$(MKDIR) -p $(OUTPUTDIR)
-@@ -180,6 +191,12 @@
- 	@$(ECHO) "No kernel ($(VM_TARGET)) for OS_NAME=$(OSNAME)"
- endif
- 
-+generic_buildzero:
-+	$(MKDIR) -p $(OUTPUTDIR)
-+	$(CD) $(OUTPUTDIR); \
-+		$(MAKE) -f $(ABS_OS_MAKEFILE) \
-+			$(MAKE_ARGS) $(VM_TARGET)
-+
- # Export file rule
- generic_export: $(EXPORT_LIST)
- export_product:
-@@ -210,11 +227,17 @@
- C1_BASE_DIR=$(OUTPUTDIR)/$(VM_PLATFORM)_compiler1
- C2_BASE_DIR=$(OUTPUTDIR)/$(VM_PLATFORM)_compiler2
- KERNEL_BASE_DIR=$(OUTPUTDIR)/$(VM_PLATFORM)_kernel
-+ZERO_BASE_DIR=$(OUTPUTDIR)/$(VM_PLATFORM)_zero
- C1_DIR=$(C1_BASE_DIR)/$(VM_SUBDIR)
- C2_DIR=$(C2_BASE_DIR)/$(VM_SUBDIR)
- KERNEL_DIR=$(KERNEL_BASE_DIR)/$(VM_SUBDIR)
-+ZERO_DIR=$(ZERO_BASE_DIR)/$(VM_SUBDIR)
- 
- # Misc files and generated files need to come from C1 or C2 area
-+ifeq ($(ZERO_BUILD), true)
-+  MISC_DIR=$(ZERO_DIR)
-+  GEN_DIR=$(ZERO_BASE_DIR)/generated
-+else
- ifeq ($(ARCH_DATA_MODEL), 32)
-   MISC_DIR=$(C1_DIR)
-   GEN_DIR=$(C1_BASE_DIR)/generated
-@@ -222,6 +245,7 @@
-   MISC_DIR=$(C2_DIR)
-   GEN_DIR=$(C2_BASE_DIR)/generated
- endif
-+endif
- 
- # Bin files (windows)
- ifeq ($(OSNAME),windows)
-@@ -265,6 +289,12 @@
- 
- # Shared Library
- ifneq ($(OSNAME),windows)
-+  ifeq ($(ZERO_BUILD), true)
-+$(EXPORT_JRE_LIB_ARCH_DIR)/%.so: $(ZERO_DIR)/%.so
-+	$(install-file)
-+$(EXPORT_SERVER_DIR)/%.so:       $(ZERO_DIR)/%.so
-+	$(install-file)
-+  else
- $(EXPORT_JRE_LIB_ARCH_DIR)/%.so: $(C2_DIR)/%.so
- 	$(install-file)
- $(EXPORT_CLIENT_DIR)/%.so:       $(C1_DIR)/%.so
-@@ -275,6 +305,7 @@
- 	$(install-file)
- $(EXPORT_SERVER_DIR)/64/%.so:    $(C2_DIR)/%.so
- 	$(install-file)
-+  endif
- endif
- 
- # Jar file (sa-jdi.jar)
-@@ -313,6 +344,7 @@
- 	$(RM) -r $(C1_DIR)
- 	$(RM) -r $(C2_DIR)
- 	$(RM) -r $(KERNEL_DIR)
-+	$(RM) -r $(ZERO_DIR)
- clean_export:
- 	$(RM) -r $(EXPORT_PATH)
- clean_jdk:
-@@ -335,8 +367,10 @@
- 	 ($(CD) $(JDK_IMAGE_DIR) && $(TAR) -xf -)
- 
- test_jdk:
--  ifeq ($(ARCH_DATA_MODEL), 32)
-+  ifneq ($(ZERO_BUILD), true)
-+    ifeq ($(ARCH_DATA_MODEL), 32)
- 	$(JDK_IMAGE_DIR)/bin/java -client -version
-+    endif
-   endif
- 	$(JDK_IMAGE_DIR)/bin/java -server -version
- 
-diff -r 03b336640699 -r 354d3184f6b2 make/defs.make
---- openjdk/hotspot/make/defs.make	Wed Oct 07 15:38:37 2009 -0700
-+++ openjdk/hotspot/make/defs.make	Tue Oct 13 12:04:21 2009 -0700
-@@ -192,13 +192,14 @@
- 
-   # Use uname output for SRCARCH, but deal with platform differences. If ARCH
-   # is not explicitly listed below, it is treated as x86. 
--  SRCARCH     = $(ARCH/$(filter sparc sparc64 ia64 amd64 x86_64,$(ARCH)))
-+  SRCARCH     = $(ARCH/$(filter sparc sparc64 ia64 amd64 x86_64 zero,$(ARCH)))
-   ARCH/       = x86
-   ARCH/sparc  = sparc
-   ARCH/sparc64= sparc
-   ARCH/ia64   = ia64
-   ARCH/amd64  = x86
-   ARCH/x86_64 = x86
-+  ARCH/zero   = zero
- 
-   # BUILDARCH is usually the same as SRCARCH, except for sparcv9
-   BUILDARCH = $(SRCARCH)
-@@ -222,8 +223,9 @@
-   LIBARCH/sparc   = sparc
-   LIBARCH/sparcv9 = sparcv9
-   LIBARCH/ia64    = ia64
-+  LIBARCH/zero    = $(ZERO_LIBARCH)
- 
--  LP64_ARCH = sparcv9 amd64 ia64
-+  LP64_ARCH = sparcv9 amd64 ia64 zero
- endif
- 
- # Required make macro settings for all platforms
-diff -r 03b336640699 -r 354d3184f6b2 make/linux/Makefile
---- openjdk/hotspot/make/linux/Makefile	Wed Oct 07 15:38:37 2009 -0700
-+++ openjdk/hotspot/make/linux/Makefile	Tue Oct 13 12:04:21 2009 -0700
-@@ -132,6 +132,9 @@
- 
- endif
- 
-+# BUILDARCH is set to "zero" for Zero builds.  VARIANTARCH
-+# is used to give the build directories meaningful names.
-+VARIANTARCH = $(subst i386,i486,$(ZERO_LIBARCH))
- 
- # There is a (semi-) regular correspondence between make targets and actions:
- #
-@@ -158,6 +161,13 @@
- #       profiledcore    core            <os>_<arch>_core/profiled
- #       productcore     core            <os>_<arch>_core/product
- #
-+#       debugzero       zero            <os>_<arch>_zero/debug
-+#       fastdebugzero   zero            <os>_<arch>_zero/fastdebug
-+#       jvmgzero        zero            <os>_<arch>_zero/jvmg
-+#       optimizedzero   zero            <os>_<arch>_zero/optimized
-+#       profiledzero    zero            <os>_<arch>_zero/profiled
-+#       productzero     zero            <os>_<arch>_zero/product
-+#
- # What you get with each target:
- #
- # debug*     - "thin" libjvm_g - debug info linked into the gamma_g launcher
-@@ -171,16 +181,22 @@
- # in the build.sh script:
- TARGETS           = debug jvmg fastdebug optimized profiled product
- 
--SUBDIR_DOCS       = $(OSNAME)_$(BUILDARCH)_docs
-+ifeq ($(ZERO_BUILD), true)
-+  SUBDIR_DOCS     = $(OSNAME)_$(VARIANTARCH)_docs
-+else
-+  SUBDIR_DOCS     = $(OSNAME)_$(BUILDARCH)_docs
-+endif
- SUBDIRS_C1        = $(addprefix $(OSNAME)_$(BUILDARCH)_compiler1/,$(TARGETS))
- SUBDIRS_C2        = $(addprefix $(OSNAME)_$(BUILDARCH)_compiler2/,$(TARGETS))
- SUBDIRS_TIERED    = $(addprefix $(OSNAME)_$(BUILDARCH)_tiered/,$(TARGETS))
- SUBDIRS_CORE      = $(addprefix $(OSNAME)_$(BUILDARCH)_core/,$(TARGETS))
-+SUBDIRS_ZERO      = $(addprefix $(OSNAME)_$(VARIANTARCH)_zero/,$(TARGETS))
- 
- TARGETS_C2        = $(TARGETS)
- TARGETS_C1        = $(addsuffix 1,$(TARGETS))
- TARGETS_TIERED    = $(addsuffix tiered,$(TARGETS))
- TARGETS_CORE      = $(addsuffix core,$(TARGETS))
-+TARGETS_ZERO      = $(addsuffix zero,$(TARGETS))
- 
- BUILDTREE_MAKE    = $(GAMMADIR)/make/$(OSNAME)/makefiles/buildtree.make
- BUILDTREE_VARS    = GAMMADIR=$(GAMMADIR) OS_FAMILY=$(OSNAME) ARCH=$(SRCARCH) BUILDARCH=$(BUILDARCH) LIBARCH=$(LIBARCH)
-@@ -196,6 +212,7 @@
- 	@echo "  $(TARGETS_C2)"
- 	@echo "  $(TARGETS_C1)"
- 	@echo "  $(TARGETS_CORE)"
-+	@echo "  $(TARGETS_ZERO)"
- 
- checks: check_os_version check_j2se_version
- 
-@@ -245,6 +262,13 @@
- 	$(QUIETLY) $(MAKE) -f $(GAMMADIR)/make/$(OSNAME)/Makefile checks
- 	$(BUILDTREE) VARIANT=core
- 
-+$(SUBDIRS_ZERO): $(BUILDTREE_MAKE) platform_zero
-+	$(QUIETLY) $(MAKE) -f $(GAMMADIR)/make/$(OSNAME)/Makefile checks
-+	$(BUILDTREE) VARIANT=zero VARIANTARCH=$(VARIANTARCH)
-+
-+platform_zero: $(GAMMADIR)/make/$(OSNAME)/platform_zero.in
-+	$(SED) 's/@ZERO_ARCHDEF@/$(ZERO_ARCHDEF)/g;s/@ZERO_LIBARCH@/$(ZERO_LIBARCH)/g;' < $< > $@
-+
- # Define INSTALL=y at command line to automatically copy JVM into JAVA_HOME
- 
- $(TARGETS_C2):  $(SUBDIRS_C2)
-@@ -275,10 +299,18 @@
- 	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
-+
- # Just build the tree, and nothing else:
- tree:      $(SUBDIRS_C2)
- tree1:     $(SUBDIRS_C1)
- treecore:  $(SUBDIRS_CORE)
-+treezero:  $(SUBDIRS_ZERO)
- 
- # Doc target.  This is the same for all build options.
- #     Hence create a docs directory beside ...$(ARCH)_[...]
-@@ -293,20 +325,22 @@
- 
- core: jvmgcore productcore
- 
-+zero: jvmgzero productzero
-+
- clean_docs:
- 	rm -rf $(SUBDIR_DOCS)
- 
--clean_compiler1 clean_compiler2 clean_core:
-+clean_compiler1 clean_compiler2 clean_core clean_zero:
- 	rm -rf $(OSNAME)_$(BUILDARCH)_$(subst clean_,,$@)
- 
--clean:  clean_compiler2 clean_compiler1 clean_core clean_docs
-+clean:  clean_compiler2 clean_compiler1 clean_core clean_zero clean_docs
- 
- include $(GAMMADIR)/make/$(OSNAME)/makefiles/cscope.make
- 
- #-------------------------------------------------------------------------------
- 
--.PHONY: $(TARGETS_C2) $(TARGETS_C1) $(TARGETS_CORE)
--.PHONY: tree tree1 treecore
--.PHONY: all compiler1 compiler2 core
--.PHONY: clean clean_compiler1 clean_compiler2 clean_core docs clean_docs
-+.PHONY: $(TARGETS_C2) $(TARGETS_C1) $(TARGETS_CORE) $(TARGETS_ZERO)
-+.PHONY: tree tree1 treecore treezero
-+.PHONY: all compiler1 compiler2 core zero
-+.PHONY: clean clean_compiler1 clean_compiler2 clean_core clean_zero docs clean_docs
- .PHONY: checks check_os_version check_j2se_version
-diff -r 03b336640699 -r 354d3184f6b2 make/linux/makefiles/buildtree.make
---- openjdk/hotspot/make/linux/makefiles/buildtree.make	Wed Oct 07 15:38:37 2009 -0700
-+++ openjdk/hotspot/make/linux/makefiles/buildtree.make	Tue Oct 13 12:04:21 2009 -0700
-@@ -63,20 +63,30 @@
- # For now, until the compiler is less wobbly:
- TESTFLAGS	= -Xbatch -showversion
- 
--ifdef USE_SUNCC
--PLATFORM_FILE	= $(GAMMADIR)/make/$(OS_FAMILY)/platform_$(BUILDARCH).suncc
-+ifeq ($(ZERO_BUILD), true)
-+  PLATFORM_FILE = $(shell dirname $(shell dirname $(shell pwd)))/platform_zero
- else
--PLATFORM_FILE   = $(GAMMADIR)/make/$(OS_FAMILY)/platform_$(BUILDARCH)
-+  ifdef USE_SUNCC
-+    PLATFORM_FILE = $(GAMMADIR)/make/$(OS_FAMILY)/platform_$(BUILDARCH).suncc
-+  else
-+    PLATFORM_FILE = $(GAMMADIR)/make/$(OS_FAMILY)/platform_$(BUILDARCH)
-+  endif
-+endif
-+
-+# Allow overriding of the arch part of the directory but default
-+# to BUILDARCH if nothing is specified
-+ifeq ($(VARIANTARCH),)
-+  VARIANTARCH=$(BUILDARCH)
- endif
- 
- ifdef FORCE_TIERED
- ifeq		($(VARIANT),tiered)
--PLATFORM_DIR	= $(OS_FAMILY)_$(BUILDARCH)_compiler2
-+PLATFORM_DIR	= $(OS_FAMILY)_$(VARIANTARCH)_compiler2
- else
--PLATFORM_DIR	= $(OS_FAMILY)_$(BUILDARCH)_$(VARIANT)
-+PLATFORM_DIR	= $(OS_FAMILY)_$(VARIANTARCH)_$(VARIANT)
- endif
- else
--PLATFORM_DIR    = $(OS_FAMILY)_$(BUILDARCH)_$(VARIANT)
-+PLATFORM_DIR    = $(OS_FAMILY)_$(VARIANTARCH)_$(VARIANT)
- endif
- 
- #
-@@ -321,6 +331,7 @@
- DATA_MODE/sparcv9 = 64
- DATA_MODE/amd64   = 64
- DATA_MODE/ia64    = 64
-+DATA_MODE/zero    = $(ARCH_DATA_MODEL)
- 
- JAVA_FLAG/32 = -d32
- JAVA_FLAG/64 = -d64
-diff -r 03b336640699 -r 354d3184f6b2 make/linux/makefiles/defs.make
---- openjdk/hotspot/make/linux/makefiles/defs.make	Wed Oct 07 15:38:37 2009 -0700
-+++ openjdk/hotspot/make/linux/makefiles/defs.make	Tue Oct 13 12:04:21 2009 -0700
-@@ -37,6 +37,17 @@
-   ARCH_DATA_MODEL ?= 32
- endif
- 
-+# zero
-+ifeq ($(ZERO_BUILD), true)
-+  ifeq ($(ARCH_DATA_MODEL), 64)
-+    MAKE_ARGS      += LP64=1
-+  endif
-+  PLATFORM         = linux-zero
-+  VM_PLATFORM      = linux_$(subst i386,i486,$(ZERO_LIBARCH))
-+  HS_ARCH          = zero
-+  ARCH             = zero
-+endif
-+
- # ia64
- ifeq ($(ARCH), ia64)
-   ARCH_DATA_MODEL = 64
-@@ -97,17 +108,19 @@
- EXPORT_LIST += $(EXPORT_SERVER_DIR)/Xusage.txt
- EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjsig.so
- EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjvm.so
--ifeq ($(ARCH_DATA_MODEL), 32)
--  EXPORT_CLIENT_DIR = $(EXPORT_JRE_LIB_ARCH_DIR)/client
--  EXPORT_LIST += $(EXPORT_CLIENT_DIR)/Xusage.txt
--  EXPORT_LIST += $(EXPORT_CLIENT_DIR)/libjsig.so
--  EXPORT_LIST += $(EXPORT_CLIENT_DIR)/libjvm.so 
--  EXPORT_LIST += $(EXPORT_JRE_LIB_ARCH_DIR)/libsaproc.so
--  EXPORT_LIST += $(EXPORT_LIB_DIR)/sa-jdi.jar 
--else
--  ifeq ($(ARCH),ia64)
--    else
--      EXPORT_LIST += $(EXPORT_JRE_LIB_ARCH_DIR)/libsaproc.so
--      EXPORT_LIST += $(EXPORT_LIB_DIR)/sa-jdi.jar
-+ifneq ($(ZERO_BUILD), true)
-+  ifeq ($(ARCH_DATA_MODEL), 32)
-+    EXPORT_CLIENT_DIR = $(EXPORT_JRE_LIB_ARCH_DIR)/client
-+    EXPORT_LIST += $(EXPORT_CLIENT_DIR)/Xusage.txt
-+    EXPORT_LIST += $(EXPORT_CLIENT_DIR)/libjsig.so
-+    EXPORT_LIST += $(EXPORT_CLIENT_DIR)/libjvm.so 
-+    EXPORT_LIST += $(EXPORT_JRE_LIB_ARCH_DIR)/libsaproc.so
-+    EXPORT_LIST += $(EXPORT_LIB_DIR)/sa-jdi.jar 
-+  else
-+    ifeq ($(ARCH),ia64)
-+      else
-+        EXPORT_LIST += $(EXPORT_JRE_LIB_ARCH_DIR)/libsaproc.so
-+        EXPORT_LIST += $(EXPORT_LIB_DIR)/sa-jdi.jar
-     endif
-+  endif
- endif
-diff -r 03b336640699 -r 354d3184f6b2 make/linux/makefiles/gcc.make
---- openjdk/hotspot/make/linux/makefiles/gcc.make	Wed Oct 07 15:38:37 2009 -0700
-+++ openjdk/hotspot/make/linux/makefiles/gcc.make	Tue Oct 13 12:04:21 2009 -0700
-@@ -52,6 +52,9 @@
- VM_PICFLAG/AOUT   =
- VM_PICFLAG        = $(VM_PICFLAG/$(LINK_INTO))
- 
-+ifeq ($(ZERO_BUILD), true)
-+CFLAGS += $(LIBFFI_CFLAGS)
-+endif
- CFLAGS += $(VM_PICFLAG)
- CFLAGS += -fno-rtti
- CFLAGS += -fno-exceptions
-@@ -64,6 +67,7 @@
- ARCHFLAG/ia64    =
- ARCHFLAG/sparc   = -m32 -mcpu=v9
- ARCHFLAG/sparcv9 = -m64 -mcpu=v9
-+ARCHFLAG/zero    = $(ZERO_ARCHFLAG)
- 
- CFLAGS     += $(ARCHFLAG)
- AOUT_FLAGS += $(ARCHFLAG)
-diff -r 03b336640699 -r 354d3184f6b2 make/linux/makefiles/sa.make
---- openjdk/hotspot/make/linux/makefiles/sa.make	Wed Oct 07 15:38:37 2009 -0700
-+++ openjdk/hotspot/make/linux/makefiles/sa.make	Tue Oct 13 12:04:21 2009 -0700
-@@ -52,10 +52,10 @@
- SA_PROPERTIES = $(SA_CLASSDIR)/sa.properties
- 
- # if $(AGENT_DIR) does not exist, we don't build SA
--# also, we don't build SA on Itanium.
-+# also, we don't build SA on Itanium or zero.
- 
- all: 
--	if [ -d $(AGENT_DIR) -a "$(SRCARCH)" != "ia64" ] ; then \
-+	if [ -d $(AGENT_DIR) -a "$(SRCARCH)" != "ia64" -a "$(SRCARCH)" != "zero" ] ; then \
- 	   $(MAKE) -f sa.make $(GENERATED)/sa-jdi.jar; \
- 	fi
- 
-diff -r 03b336640699 -r 354d3184f6b2 make/linux/makefiles/saproc.make
---- openjdk/hotspot/make/linux/makefiles/saproc.make	Wed Oct 07 15:38:37 2009 -0700
-+++ openjdk/hotspot/make/linux/makefiles/saproc.make	Tue Oct 13 12:04:21 2009 -0700
-@@ -49,10 +49,10 @@
- endif
- 
- # if $(AGENT_DIR) does not exist, we don't build SA
--# also, we don't build SA on Itanium.
-+# also, we don't build SA on Itanium or zero.
- 
- checkAndBuildSA:
--	$(QUIETLY) if [ -d $(AGENT_DIR) -a "$(SRCARCH)" != "ia64" ] ; then \
-+	$(QUIETLY) if [ -d $(AGENT_DIR) -a "$(SRCARCH)" != "ia64" -a "$(SRCARCH)" != "zero" ] ; then \
- 	   $(MAKE) -f vm.make $(LIBSAPROC); \
- 	fi
- 
-diff -r 03b336640699 -r 354d3184f6b2 make/linux/makefiles/top.make
---- openjdk/hotspot/make/linux/makefiles/top.make	Wed Oct 07 15:38:37 2009 -0700
-+++ openjdk/hotspot/make/linux/makefiles/top.make	Tue Oct 13 12:04:21 2009 -0700
-@@ -74,6 +74,7 @@
- Include_DBs/COMPILER1   = $(Include_DBs/CORE) $(VM)/includeDB_compiler1
- Include_DBs/COMPILER2   = $(Include_DBs/CORE) $(VM)/includeDB_compiler2
- Include_DBs/TIERED      = $(Include_DBs/CORE) $(VM)/includeDB_compiler1 $(VM)/includeDB_compiler2
-+Include_DBs/ZERO        = $(Include_DBs/CORE) $(VM)/includeDB_zero
- Include_DBs = $(Include_DBs/$(TYPE))
- 
- Cached_plat = $(GENERATED)/platform.current
-diff -r 03b336640699 -r 354d3184f6b2 make/linux/makefiles/vm.make
---- openjdk/hotspot/make/linux/makefiles/vm.make	Wed Oct 07 15:38:37 2009 -0700
-+++ openjdk/hotspot/make/linux/makefiles/vm.make	Tue Oct 13 12:04:21 2009 -0700
-@@ -40,7 +40,11 @@
- include $(GENERATED)/Dependencies
- 
- # read machine-specific adjustments (%%% should do this via buildtree.make?)
--include $(MAKEFILES_DIR)/$(BUILDARCH).make
-+ifeq ($(ZERO_BUILD), true)
-+  include $(MAKEFILES_DIR)/zeroshark.make
-+else
-+  include $(MAKEFILES_DIR)/$(BUILDARCH).make
-+endif
- 
- # set VPATH so make knows where to look for source files
- # Src_Dirs is everything in src/share/vm/*, plus the right os/*/vm and cpu/*/vm
-@@ -124,7 +128,11 @@
- 	rm -f $@
- 	cat $^ > $@
- 
--STATIC_CXX = true
-+ifeq ($(ZERO_LIBARCH), ppc64)
-+  STATIC_CXX = false
-+else
-+  STATIC_CXX = true
-+endif
- 
- ifeq ($(LINK_INTO),AOUT)
-   LIBJVM.o                 =
-@@ -148,6 +156,9 @@
- 
-   LIBS_VM                  += $(LIBS)
- endif
-+ifeq ($(ZERO_BUILD), true)
-+  LIBS_VM += $(LIBFFI_LIBS)
-+endif
- 
- LINK_VM = $(LINK_LIB.c)
- 
-diff -r 03b336640699 -r 354d3184f6b2 src/os/linux/vm/os_linux.cpp
---- openjdk/hotspot/src/os/linux/vm/os_linux.cpp	Wed Oct 07 15:38:37 2009 -0700
-+++ openjdk/hotspot/src/os/linux/vm/os_linux.cpp	Tue Oct 13 12:04:21 2009 -0700
-@@ -176,7 +176,9 @@
- #endif
- 
- // Cpu architecture string
--#if   defined(IA64)
-+#if   defined(ZERO)
-+static char cpu_arch[] = ZERO_LIBARCH;
-+#elif defined(IA64)
- static char cpu_arch[] = "ia64";
- #elif defined(IA32)
- static char cpu_arch[] = "i386";
-@@ -1743,7 +1745,14 @@
-     {EM_SPARC32PLUS, EM_SPARC,   ELFCLASS32, ELFDATA2MSB, (char*)"Sparc 32"},
-     {EM_SPARCV9,     EM_SPARCV9, ELFCLASS64, ELFDATA2MSB, (char*)"Sparc v9 64"},
-     {EM_PPC,         EM_PPC,     ELFCLASS32, ELFDATA2MSB, (char*)"Power PC 32"},
--    {EM_PPC64,       EM_PPC64,   ELFCLASS64, ELFDATA2MSB, (char*)"Power PC 64"}
-+    {EM_PPC64,       EM_PPC64,   ELFCLASS64, ELFDATA2MSB, (char*)"Power PC 64"},
-+    {EM_ARM,         EM_ARM,     ELFCLASS32,   ELFDATA2LSB, (char*)"ARM"},
-+    {EM_S390,        EM_S390,    ELFCLASSNONE, ELFDATA2MSB, (char*)"IBM System/390"},
-+    {EM_ALPHA,       EM_ALPHA,   ELFCLASS64, ELFDATA2LSB, (char*)"Alpha"},
-+    {EM_MIPS_RS3_LE, EM_MIPS_RS3_LE, ELFCLASS32, ELFDATA2LSB, (char*)"MIPSel"},
-+    {EM_MIPS,        EM_MIPS,    ELFCLASS32, ELFDATA2MSB, (char*)"MIPS"},
-+    {EM_PARISC,      EM_PARISC,  ELFCLASS32, ELFDATA2MSB, (char*)"PARISC"},
-+    {EM_68K,         EM_68K,     ELFCLASS32, ELFDATA2MSB, (char*)"M68k"}
-   };
- 
-   #if  (defined IA32)
-@@ -1760,9 +1769,23 @@
-     static  Elf32_Half running_arch_code=EM_PPC64;
-   #elif  (defined __powerpc__)
-     static  Elf32_Half running_arch_code=EM_PPC;
-+  #elif  (defined ARM)
-+    static  Elf32_Half running_arch_code=EM_ARM;
-+  #elif  (defined S390)
-+    static  Elf32_Half running_arch_code=EM_S390;
-+  #elif  (defined ALPHA)
-+    static  Elf32_Half running_arch_code=EM_ALPHA;
-+  #elif  (defined MIPSEL)
-+    static  Elf32_Half running_arch_code=EM_MIPS_RS3_LE;
-+  #elif  (defined PARISC)
-+    static  Elf32_Half running_arch_code=EM_PARISC;
-+  #elif  (defined MIPS)
-+    static  Elf32_Half running_arch_code=EM_MIPS;
-+  #elif  (defined M68K)
-+    static  Elf32_Half running_arch_code=EM_68K;
-   #else
-     #error Method os::dll_load requires that one of following is defined:\
--         IA32, AMD64, IA64, __sparc, __powerpc__
-+         IA32, AMD64, IA64, __sparc, __powerpc__, ARM, S390, ALPHA, MIPS, MIPSEL, PARISC, M68K
-   #endif
- 
-   // Identify compatability class for VM's architecture and library's architecture
-@@ -1794,10 +1817,12 @@
-     return NULL;
-   }
- 
-+#ifndef S390
-   if (lib_arch.elf_class != arch_array[running_arch_index].elf_class) {
-     ::snprintf(diag_msg_buf, diag_msg_max_length-1," (Possible cause: architecture word width mismatch)");
-     return NULL;
-   }
-+#endif // !S390
- 
-   if (lib_arch.compat_class != arch_array[running_arch_index].compat_class) {
-     if ( lib_arch.name!=NULL ) {
-@@ -2586,7 +2611,9 @@
-     // format has been changed), we'll use the largest page size supported by
-     // the processor.
- 
-+#ifndef ZERO
-     _large_page_size = IA32_ONLY(4 * M) AMD64_ONLY(2 * M) IA64_ONLY(256 * M) SPARC_ONLY(4 * M);
-+#endif // ZERO
- 
-     FILE *fp = fopen("/proc/meminfo", "r");
-     if (fp) {
-diff -r 03b336640699 -r 354d3184f6b2 src/share/vm/interpreter/bytecodeInterpreter.cpp
---- openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp	Wed Oct 07 15:38:37 2009 -0700
-+++ openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp	Tue Oct 13 12:04:21 2009 -0700
-@@ -3031,9 +3031,9 @@
-   tty->print_cr("&native_fresult: " INTPTR_FORMAT, (uintptr_t) &this->_native_fresult);
-   tty->print_cr("native_lresult: " INTPTR_FORMAT, (uintptr_t) this->_native_lresult);
- #endif
--#ifdef IA64
-+#if defined(IA64) && !defined(ZERO)
-   tty->print_cr("last_Java_fp: " INTPTR_FORMAT, (uintptr_t) this->_last_Java_fp);
--#endif // IA64
-+#endif // IA64 && !ZERO
-   tty->print_cr("self_link: " INTPTR_FORMAT, (uintptr_t) this->_self_link);
- }
- 
-diff -r 03b336640699 -r 354d3184f6b2 src/share/vm/interpreter/oopMapCache.cpp
---- openjdk/hotspot/src/share/vm/interpreter/oopMapCache.cpp	Wed Oct 07 15:38:37 2009 -0700
-+++ openjdk/hotspot/src/share/vm/interpreter/oopMapCache.cpp	Tue Oct 13 12:04:21 2009 -0700
-@@ -281,7 +281,7 @@
-  public:
-   void pass_int()                                { /* ignore */ }
-   void pass_long()                               { /* ignore */ }
--#ifdef _LP64
-+#if defined(_LP64) || defined(ZERO)
-   void pass_float()                              { /* ignore */ }
- #endif
-   void pass_double()                             { /* ignore */ }
-diff -r 03b336640699 -r 354d3184f6b2 src/share/vm/runtime/arguments.cpp
---- openjdk/hotspot/src/share/vm/runtime/arguments.cpp	Wed Oct 07 15:38:37 2009 -0700
-+++ openjdk/hotspot/src/share/vm/runtime/arguments.cpp	Tue Oct 13 12:04:21 2009 -0700
-@@ -1229,6 +1229,7 @@
-     }
-   }
- 
-+#ifndef ZERO
- #ifdef _LP64
-   // Check that UseCompressedOops can be set with the max heap size allocated
-   // by ergonomics.
-@@ -1254,6 +1255,7 @@
-   // Also checks that certain machines are slower with compressed oops
-   // in vm_version initialization code.
- #endif // _LP64
-+#endif // !ZERO
- }
- 
- void Arguments::set_parallel_gc_flags() {
-diff -r 03b336640699 -r 354d3184f6b2 src/share/vm/runtime/jniHandles.hpp
---- openjdk/hotspot/src/share/vm/runtime/jniHandles.hpp	Wed Oct 07 15:38:37 2009 -0700
-+++ openjdk/hotspot/src/share/vm/runtime/jniHandles.hpp	Tue Oct 13 12:04:21 2009 -0700
-@@ -99,6 +99,8 @@
- 
- class JNIHandleBlock : public CHeapObj {
-   friend class VMStructs;
-+  friend class CppInterpreter;
-+
-  private:
-   enum SomeConstants {
-     block_size_in_oops  = 32                    // Number of handles per handle block
-@@ -126,9 +128,11 @@
-   // Fill block with bad_handle values
-   void zap();
- 
-+ protected:
-   // No more handles in the both the current and following blocks
-   void clear() { _top = 0; }
- 
-+ private:
-   // Free list computation
-   void rebuild_free_list();
- 
-diff -r 03b336640699 -r 354d3184f6b2 src/share/vm/runtime/mutex.hpp
---- openjdk/hotspot/src/share/vm/runtime/mutex.hpp	Wed Oct 07 15:38:37 2009 -0700
-+++ openjdk/hotspot/src/share/vm/runtime/mutex.hpp	Tue Oct 13 12:04:21 2009 -0700
-@@ -61,18 +61,10 @@
- } ;
- 
- // Endian-ness ... index of least-significant byte in SplitWord.Bytes[]
--#ifdef AMD64        // little
-+#ifdef VM_LITTLE_ENDIAN
-  #define _LSBINDEX 0
- #else
--#if IA32            // little
-- #define _LSBINDEX 0
--#else
--#ifdef SPARC        // big
-  #define _LSBINDEX (sizeof(intptr_t)-1)
--#else
-- #error "unknown architecture"
--#endif
--#endif
- #endif
- 
- class ParkEvent ;
-diff -r 03b336640699 -r 354d3184f6b2 src/share/vm/runtime/signature.hpp
---- openjdk/hotspot/src/share/vm/runtime/signature.hpp	Wed Oct 07 15:38:37 2009 -0700
-+++ openjdk/hotspot/src/share/vm/runtime/signature.hpp	Tue Oct 13 12:04:21 2009 -0700
-@@ -275,11 +275,14 @@
- 
-   void do_bool  ()                     { pass_int();    _jni_offset++; _offset++;       }
-   void do_char  ()                     { pass_int();    _jni_offset++; _offset++;       }
-+#if defined(_LP64) || defined(ZERO)
-+  void do_float ()                     { pass_float();  _jni_offset++; _offset++;       }
-+#else
-+  void do_float ()                     { pass_int();    _jni_offset++; _offset++;       }
-+#endif
- #ifdef _LP64
--  void do_float ()                     { pass_float();  _jni_offset++; _offset++;       }
-   void do_double()                     { pass_double(); _jni_offset++; _offset += 2;    }
- #else
--  void do_float ()                     { pass_int();    _jni_offset++; _offset++;       }
-   void do_double()                     { pass_double(); _jni_offset += 2; _offset += 2; }
- #endif
-   void do_byte  ()                     { pass_int();    _jni_offset++; _offset++;       }
-@@ -303,8 +306,10 @@
-   virtual void pass_int()              = 0;
-   virtual void pass_long()             = 0;
-   virtual void pass_object()           = 0;
-+#if defined(_LP64) || defined(ZERO)
-+  virtual void pass_float()            = 0;
-+#endif
- #ifdef _LP64
--  virtual void pass_float()            = 0;
-   virtual void pass_double()           = 0;
- #else
-   virtual void pass_double()           { pass_long(); }  // may be same as long
-diff -r 03b336640699 -r 354d3184f6b2 src/share/vm/runtime/vm_version.cpp
---- openjdk/hotspot/src/share/vm/runtime/vm_version.cpp	Wed Oct 07 15:38:37 2009 -0700
-+++ openjdk/hotspot/src/share/vm/runtime/vm_version.cpp	Tue Oct 13 12:04:21 2009 -0700
-@@ -93,9 +93,13 @@
- #else // KERNEL
- #ifdef TIERED
-   #define VMTYPE "Server"
--#else
--  #define VMTYPE COMPILER1_PRESENT("Client")   \
--                 COMPILER2_PRESENT("Server")
-+#else // TIERED
-+#ifdef ZERO
-+  #define VMTYPE "Zero"
-+#else // ZERO
-+   #define VMTYPE COMPILER1_PRESENT("Client")   \
-+                  COMPILER2_PRESENT("Server")
-+#endif // ZERO
- #endif // TIERED
- #endif // KERNEL
- 
-@@ -142,10 +146,14 @@
-                  WINDOWS_ONLY("windows")         \
-                  SOLARIS_ONLY("solaris")
- 
-+#ifdef ZERO
-+#define CPU      ZERO_LIBARCH
-+#else
- #define CPU      IA32_ONLY("x86")                \
-                  IA64_ONLY("ia64")               \
-                  AMD64_ONLY("amd64")             \
-                  SPARC_ONLY("sparc")
-+#endif // ZERO
- 
- const char *Abstract_VM_Version::vm_platform_string() {
-   return OS "-" CPU;
-diff -r 03b336640699 -r 354d3184f6b2 src/share/vm/utilities/vmError.cpp
---- openjdk/hotspot/src/share/vm/utilities/vmError.cpp	Wed Oct 07 15:38:37 2009 -0700
-+++ openjdk/hotspot/src/share/vm/utilities/vmError.cpp	Tue Oct 13 12:04:21 2009 -0700
-@@ -458,6 +458,40 @@
- 
-      if (_verbose && _thread && _thread->is_Java_thread()) {
-        JavaThread* jt = (JavaThread*)_thread;
-+#ifdef ZERO
-+       if (jt->zero_stack()->sp() && jt->top_zero_frame()) {
-+         // StackFrameStream uses the frame anchor, which may not have
-+         // been set up.  This can be done at any time in Zero, however,
-+         // so if it hasn't been set up then we just set it up now and
-+         // clear it again when we're done.
-+         bool has_last_Java_frame = jt->has_last_Java_frame();
-+         if (!has_last_Java_frame)
-+           jt->set_last_Java_frame();
-+         st->print("Java frames:");
-+
-+         // If the top frame is a Shark frame and the frame anchor isn't
-+         // set up then it's possible that the information in the frame
-+         // is garbage: it could be from a previous decache, or it could
-+         // simply have never been written.  So we print a warning...
-+         StackFrameStream sfs(jt);
-+         if (!has_last_Java_frame && !sfs.is_done()) {
-+           if (sfs.current()->zeroframe()->is_shark_frame()) {
-+             st->print(" (TOP FRAME MAY BE JUNK)");
-+           }
-+         }
-+         st->cr();
-+
-+         // Print the frames
-+         for(int i = 0; !sfs.is_done(); sfs.next(), i++) {
-+           sfs.current()->zero_print_on_error(i, st, buf, sizeof(buf));
-+           st->cr();
-+         }
-+
-+         // Reset the frame anchor if necessary
-+         if (!has_last_Java_frame)
-+           jt->reset_last_Java_frame();
-+       }
-+#else
-        if (jt->has_last_Java_frame()) {
-          st->print_cr("Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)");
-          for(StackFrameStream sfs(jt); !sfs.is_done(); sfs.next()) {
-@@ -465,6 +499,7 @@
-            st->cr();
-          }
-        }
-+#endif // ZERO
-      }
- 
-   STEP(140, "(printing VM operation)" )
--- a/patches/zero/6891677.patch	Sun Apr 18 17:03:04 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,418 +0,0 @@
-diff -r 2c88089b6e1c -r 608937d41381 make/hotspot-rules.gmk
---- openjdk/make/hotspot-rules.gmk	Fri Oct 02 11:26:17 2009 -0700
-+++ openjdk/make/hotspot-rules.gmk	Thu Oct 15 13:26:17 2009 +0100
-@@ -72,6 +72,10 @@
-   HOTSPOT_TARGET = all_fastdebug
- endif
- 
-+ifeq ($(ZERO_BUILD), true)
-+  HOTSPOT_TARGET := $(HOTSPOT_TARGET)zero
-+endif
-+
- HOTSPOT_BUILD_ARGUMENTS += $(COMMON_BUILD_ARGUMENTS)
- HOTSPOT_BUILD_ARGUMENTS += ALT_OUTPUTDIR=$(HOTSPOT_OUTPUTDIR)
- HOTSPOT_BUILD_ARGUMENTS += ALT_EXPORT_PATH=$(HOTSPOT_EXPORT_PATH)
-diff -r 5d0cf59a3203 -r 34a68fa0680b make/common/Defs-linux.gmk
---- openjdk/corba/make/common/Defs-linux.gmk	Fri Oct 02 11:26:18 2009 -0700
-+++ openjdk/corba/make/common/Defs-linux.gmk	Thu Oct 15 13:28:26 2009 +0100
-@@ -99,8 +99,16 @@
- LDFLAGS_COMMON_sparcv9  += -m64 -mcpu=v9
- CFLAGS_REQUIRED_sparc   += -m32 -mcpu=v9
- LDFLAGS_COMMON_sparc    += -m32 -mcpu=v9
--CFLAGS_REQUIRED         =  $(CFLAGS_REQUIRED_$(ARCH))
--LDFLAGS_COMMON          += $(LDFLAGS_COMMON_$(ARCH))
-+ifeq ($(ZERO_BUILD), true)
-+  CFLAGS_REQUIRED       =  $(ZERO_ARCHFLAG)
-+  ifeq ($(ZERO_ENDIANNESS), little)
-+    CFLAGS_REQUIRED     += -D_LITTLE_ENDIAN
-+  endif
-+  LDFLAGS_COMMON        += $(ZERO_ARCHFLAG)
-+else
-+  CFLAGS_REQUIRED       =  $(CFLAGS_REQUIRED_$(ARCH))
-+  LDFLAGS_COMMON        += $(LDFLAGS_COMMON_$(ARCH))
-+endif
- 
- # Add in platform specific optimizations for all opt levels
- CC_HIGHEST_OPT += $(_OPT_$(ARCH))
-@@ -196,7 +204,7 @@
- 
- EXTRA_LIBS += -lc
- 
--LDFLAGS_DEFS_OPTION  = -z defs
-+LDFLAGS_DEFS_OPTION  = -Xlinker -z -Xlinker defs
- LDFLAGS_COMMON  += $(LDFLAGS_DEFS_OPTION)
- 
- #
-diff -r 5d0cf59a3203 -r 34a68fa0680b make/common/shared/Compiler-gcc.gmk
---- openjdk/corba/make/common/shared/Compiler-gcc.gmk	Fri Oct 02 11:26:18 2009 -0700
-+++ openjdk/corba/make/common/shared/Compiler-gcc.gmk	Thu Oct 15 13:28:26 2009 +0100
-@@ -70,6 +70,11 @@
-   else
-     CXX            = $(COMPILER_PATH)g++
-   endif
-+  ifeq ($(ZERO_BUILD), true)
-+    # zero
-+    REQUIRED_CC_VER = 3.2
-+    REQUIRED_GCC_VER = 3.2.*
-+  else
-   ifneq ("$(findstring sparc,$(ARCH))", "")
-     # sparc or sparcv9
-     REQUIRED_CC_VER = 4.0
-@@ -88,6 +93,7 @@
-   endif
-   endif
-   endif
-+  endif
-   # Option used to create a shared library
-   SHARED_LIBRARY_FLAG = -shared -mimpure-text
-   SUN_COMP_VER := $(shell $(CC) --verbose 2>&1 )
-diff -r eacb36e30327 -r e2de121c27c4 make/common/Defs-linux.gmk
---- openjdk/jdk/make/common/Defs-linux.gmk	Wed Oct 14 23:41:11 2009 +0100
-+++ openjdk/jdk/make/common/Defs-linux.gmk	Thu Oct 15 13:27:59 2009 +0100
-@@ -116,8 +116,16 @@
- LDFLAGS_COMMON_sparcv9  += -m64 -mcpu=v9
- CFLAGS_REQUIRED_sparc   += -m32 -mcpu=v9
- LDFLAGS_COMMON_sparc    += -m32 -mcpu=v9
--CFLAGS_REQUIRED         =  $(CFLAGS_REQUIRED_$(ARCH))
--LDFLAGS_COMMON          += $(LDFLAGS_COMMON_$(ARCH))
-+ifeq ($(ZERO_BUILD), true)
-+  CFLAGS_REQUIRED       =  $(ZERO_ARCHFLAG)
-+  ifeq ($(ZERO_ENDIANNESS), little)
-+    CFLAGS_REQUIRED     += -D_LITTLE_ENDIAN
-+  endif
-+  LDFLAGS_COMMON        += $(ZERO_ARCHFLAG)
-+else
-+  CFLAGS_REQUIRED       =  $(CFLAGS_REQUIRED_$(ARCH))
-+  LDFLAGS_COMMON        += $(LDFLAGS_COMMON_$(ARCH))
-+endif
- 
- # If this is a --hash-style=gnu system, use --hash-style=both
- #   The gnu .hash section won't work on some Linux systems like SuSE 10.
-@@ -217,7 +225,7 @@
- 
- EXTRA_LIBS += -lc
- 
--LDFLAGS_DEFS_OPTION  = -z defs
-+LDFLAGS_DEFS_OPTION  = -Xlinker -z -Xlinker defs
- LDFLAGS_COMMON  += $(LDFLAGS_DEFS_OPTION)
- 
- #
-diff -r eacb36e30327 -r e2de121c27c4 make/common/Program.gmk
---- openjdk/jdk/make/common/Program.gmk	Wed Oct 14 23:41:11 2009 +0100
-+++ openjdk/jdk/make/common/Program.gmk	Thu Oct 15 13:27:59 2009 +0100
-@@ -85,7 +85,7 @@
- 	endif
-     endif
-     ifeq ($(PLATFORM), linux)
--	LDFLAGS += -z origin
-+	LDFLAGS += -Wl,-z -Wl,origin
- 	LDFLAGS += -Wl,--allow-shlib-undefined
- 	LDFLAGS += -Wl,-rpath -Wl,\$$ORIGIN/../lib/$(LIBARCH)/jli
- 	LDFLAGS += -Wl,-rpath -Wl,\$$ORIGIN/../jre/lib/$(LIBARCH)/jli
-@@ -279,8 +279,14 @@
- 
- #
- # How to install jvm.cfg. 
--# 
--$(JVMCFG): $(LAUNCHER_PLATFORM_SRC)/bin/$(ARCH)/jvm.cfg 
-+#
-+ifeq ($(ZERO_BUILD), true)
-+JVMCFG_ARCH = zero
-+else
-+JVMCFG_ARCH = $(ARCH)
-+endif
-+
-+$(JVMCFG): $(LAUNCHER_PLATFORM_SRC)/bin/$(JVMCFG_ARCH)/jvm.cfg 
- 	$(install-file)
- 
- #
-diff -r eacb36e30327 -r e2de121c27c4 make/java/instrument/Makefile
---- openjdk/jdk/make/java/instrument/Makefile	Wed Oct 14 23:41:11 2009 +0100
-+++ openjdk/jdk/make/java/instrument/Makefile	Thu Oct 15 13:27:59 2009 +0100
-@@ -109,7 +109,7 @@
-     LDFLAGS += -R \$$ORIGIN/jli
-   endif
-   ifeq ($(PLATFORM), linux)
--    LDFLAGS += -z origin
-+    LDFLAGS += -Wl,-z -Wl,origin
-     LDFLAGS += -Wl,--allow-shlib-undefined
-     LDFLAGS += -Wl,-rpath -Wl,\$$ORIGIN/jli
-   endif
-diff -r eacb36e30327 -r e2de121c27c4 make/java/redist/Makefile
---- openjdk/jdk/make/java/redist/Makefile	Wed Oct 14 23:41:11 2009 +0100
-+++ openjdk/jdk/make/java/redist/Makefile	Thu Oct 15 13:27:59 2009 +0100
-@@ -94,11 +94,13 @@
-   endif
- endif # INCLUDE_SA
- 
--# Hotspot client is only available on 32-bit builds
-+# Hotspot client is only available on 32-bit non-Zero builds
-+ifneq ($(ZERO_BUILD), true)
- ifeq ($(ARCH_DATA_MODEL), 32)
-   IMPORT_LIST += $(LIB_LOCATION)/$(CLIENT_LOCATION)/$(JVM_NAME) \
-                  $(LIB_LOCATION)/$(CLIENT_LOCATION)/Xusage.txt
- endif
-+endif
- 
- ifeq ($(PLATFORM), windows)
- #  Windows     vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv  Windows
-@@ -171,6 +173,7 @@
-   IMPORT_LIST += $(LIB_LOCATION)/$(SERVER_LOCATION)/$(JVMDB_NAME)
- endif 
- 
-+ifneq ($(ZERO_BUILD), true)
- ifeq ($(ARCH_DATA_MODEL), 32)
- 
- IMPORT_LIST += $(LIB_LOCATION)/$(CLIENT_LOCATION)/$(LIBJSIG_NAME)
-@@ -201,6 +204,8 @@
- 
- endif # 32bit
- 
-+endif # ZERO_BUILD
-+
- #  NOT Windows ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ NOT Windows
- 
- endif # PLATFORM
-diff -r eacb36e30327 -r e2de121c27c4 make/javax/sound/SoundDefs.gmk
---- openjdk/jdk/make/javax/sound/SoundDefs.gmk	Wed Oct 14 23:41:11 2009 +0100
-+++ openjdk/jdk/make/javax/sound/SoundDefs.gmk	Thu Oct 15 13:27:59 2009 +0100
-@@ -55,21 +55,25 @@
- 
- endif # PLATFORM solaris
- 
--ifeq ($(ARCH), i586)
--  CPPFLAGS += -DX_ARCH=X_I586
--endif # ARCH i586
-+ifeq ($(ZERO_BUILD), true)
-+  CPPFLAGS += -DX_ARCH=X_ZERO
-+else
-+  ifeq ($(ARCH), i586)
-+    CPPFLAGS += -DX_ARCH=X_I586
-+  endif # ARCH i586
- 
--ifeq ($(ARCH), sparc)
--  CPPFLAGS += -DX_ARCH=X_SPARC
--endif # ARCH sparc
-+  ifeq ($(ARCH), sparc)
-+    CPPFLAGS += -DX_ARCH=X_SPARC
-+  endif # ARCH sparc
- 
--ifeq ($(ARCH), sparcv9)
--  CPPFLAGS += -DX_ARCH=X_SPARCV9
--endif # ARCH sparcv9
-+  ifeq ($(ARCH), sparcv9)
-+    CPPFLAGS += -DX_ARCH=X_SPARCV9
-+  endif # ARCH sparcv9
- 
--ifeq ($(ARCH), amd64)
--  CPPFLAGS += -DX_ARCH=X_AMD64
--endif # ARCH amd64
-+  ifeq ($(ARCH), amd64)
-+    CPPFLAGS += -DX_ARCH=X_AMD64
-+  endif # ARCH amd64
-+endif
- 
- 
- # files needed for MIDI i/o
-diff -r eacb36e30327 -r e2de121c27c4 make/jdk_generic_profile.sh
---- openjdk/jdk/make/jdk_generic_profile.sh	Wed Oct 14 23:41:11 2009 +0100
-+++ openjdk/jdk/make/jdk_generic_profile.sh	Thu Oct 15 13:27:59 2009 +0100
-@@ -339,3 +339,82 @@
- PATH="${path4sdk}"
- export PATH
- 
-+# Export variables required for Zero
-+if [ "${ZERO_BUILD}" = true ] ; then
-+  # ZERO_LIBARCH is the name of the architecture-specific
-+  # subdirectory under $JAVA_HOME/jre/lib
-+  arch=$(uname -m)
-+  case "${arch}" in
-+    x86_64)  ZERO_LIBARCH=amd64     ;;
-+    i?86)    ZERO_LIBARCH=i386      ;;
-+    sparc64) ZERO_LIBARCH=sparcv9   ;;
-+    arm*)    ZERO_LIBARCH=arm       ;;
-+    *)       ZERO_LIBARCH="$(arch)"
-+  esac
-+  export ZERO_LIBARCH
-+
-+  # ARCH_DATA_MODEL is the number of bits in a pointer
-+  case "${ZERO_LIBARCH}" in
-+    i386|ppc|s390|sparc|arm)
-+      ARCH_DATA_MODEL=32
-+      ;;
-+    amd64|ppc64|s390x|sparcv9|ia64|alpha)
-+      ARCH_DATA_MODEL=64
-+      ;;
-+    *)
-+      echo "ERROR: Unable to determine ARCH_DATA_MODEL for ${ZERO_LIBARCH}"
-+      exit 1
-+  esac
-+  export ARCH_DATA_MODEL
-+
-+  # ZERO_ENDIANNESS is the endianness of the processor
-+  case "${ZERO_LIBARCH}" in
-+    i386|amd64|ia64)
-+      ZERO_ENDIANNESS=little
-+      ;;
-+    ppc*|s390*|sparc*|alpha)
-+      ZERO_ENDIANNESS=big
-+      ;;
-+    *)
-+      echo "ERROR: Unable to determine ZERO_ENDIANNESS for ${ZERO_LIBARCH}"
-+      exit 1
-+  esac
-+  export ZERO_ENDIANNESS
-+
-+  # ZERO_ARCHDEF is used to enable architecture-specific code
-+  case "${ZERO_LIBARCH}" in
-+    i386)   ZERO_ARCHDEF=IA32  ;;
-+    ppc*)   ZERO_ARCHDEF=PPC   ;;
-+    s390*)  ZERO_ARCHDEF=S390  ;;
-+    sparc*) ZERO_ARCHDEF=SPARC ;;
-+    *)      ZERO_ARCHDEF=$(echo "${ZERO_LIBARCH}" | tr a-z A-Z)
-+  esac
-+  export ZERO_ARCHDEF
-+
-+  # ZERO_ARCHFLAG tells the compiler which mode to build for
-+  case "${ZERO_LIBARCH}" in
-+    s390)
-+      ZERO_ARCHFLAG="-m31"
-+      ;;
-+    *)
-+      ZERO_ARCHFLAG="-m${ARCH_DATA_MODEL}"
-+  esac
-+  export ZERO_ARCHFLAG
-+
-+  # LIBFFI_CFLAGS and LIBFFI_LIBS tell the compiler how to compile and
-+  # link against libffi
-+  pkgconfig=$(which pkg-config 2>/dev/null)
-+  if [ -x "${pkgconfig}" ] ; then
-+    if [ "${LIBFFI_CFLAGS}" = "" ] ; then
-+      LIBFFI_CFLAGS=$("${pkgconfig}" --cflags libffi)
-+    fi
-+    if [ "${LIBFFI_LIBS}" = "" ] ; then
-+      LIBFFI_LIBS=$("${pkgconfig}" --libs libffi)
-+    fi
-+  fi
-+  if [ "${LIBFFI_LIBS}" = "" ] ; then
-+      LIBFFI_LIBS="-lffi"
-+  fi
-+  export LIBFFI_CFLAGS
-+  export LIBFFI_LIBS
-+fi
-diff -r eacb36e30327 -r e2de121c27c4 src/share/native/com/sun/media/sound/SoundDefs.h
---- openjdk/jdk/src/share/native/com/sun/media/sound/SoundDefs.h	Wed Oct 14 23:41:11 2009 +0100
-+++ openjdk/jdk/src/share/native/com/sun/media/sound/SoundDefs.h	Thu Oct 15 13:27:59 2009 +0100
-@@ -38,6 +38,7 @@
- #define X_SPARCV9       3
- #define X_IA64          4
- #define X_AMD64         5
-+#define X_ZERO          6
- 
- // **********************************
- // Make sure you set X_PLATFORM and X_ARCH defines correctly.
-diff -r eacb36e30327 -r e2de121c27c4 src/solaris/bin/ergo_zero.c
---- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ openjdk/jdk/src/solaris/bin/ergo_zero.c	Thu Oct 15 13:27:59 2009 +0100
-@@ -0,0 +1,58 @@
-+/*
-+ * Copyright 1998-2007 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.
-+ */
-+#include "ergo.h"
-+
-+
-+/* Methods for solaris-sparc and linux-sparc: these are easy. */
-+
-+/* Ask the OS how many processors there are. */
-+static unsigned long
-+physical_processors(void) {
-+  const unsigned long sys_processors = sysconf(_SC_NPROCESSORS_CONF);
-+
-+  JLI_TraceLauncher("sysconf(_SC_NPROCESSORS_CONF): %lu\n", sys_processors);
-+  return sys_processors;
-+}
-+
-+/* The sparc version of the "server-class" predicate. */
-+jboolean
-+ServerClassMachineImpl(void) {
-+  jboolean            result            = JNI_FALSE;
-+  /* How big is a server class machine? */
-+  const unsigned long server_processors = 2UL;
-+  const uint64_t      server_memory     = 2UL * GB;
-+  const uint64_t      actual_memory     = physical_memory();
-+
-+  /* Is this a server class machine? */
-+  if (actual_memory >= server_memory) {
-+    const unsigned long actual_processors = physical_processors();
-+    if (actual_processors >= server_processors) {
-+      result = JNI_TRUE;
-+    }
-+  }
-+  JLI_TraceLauncher("unix_" LIBARCHNAME "_ServerClassMachine: %s\n",
-+           (result == JNI_TRUE ? "JNI_TRUE" : "JNI_FALSE"));
-+  return result;
-+}
-diff -r eacb36e30327 -r e2de121c27c4 src/solaris/bin/zero/jvm.cfg
---- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ openjdk/jdk/src/solaris/bin/zero/jvm.cfg	Thu Oct 15 13:27:59 2009 +0100
-@@ -0,0 +1,39 @@
-+# Copyright 2003 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.
-+#
-+# 
-+# List of JVMs that can be used as an option to java, javac, etc.
-+# Order is important -- first in this list is the default JVM.
-+# NOTE that this both this file and its format are UNSUPPORTED and
-+# WILL GO AWAY in a future release.
-+#
-+# You may also select a JVM in an arbitrary location with the
-+# "-XXaltjvm=<jvm_dir>" option, but that too is unsupported
-+# and may not be available in a future release.
-+#
-+-server KNOWN
-+-client IGNORE
-+-hotspot ERROR
-+-classic WARN
-+-native ERROR
-+-green ERROR
--- a/patches/zero/6896043.patch	Sun Apr 18 17:03:04 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,113 +0,0 @@
-diff -r de44705e6b33 -r 8e7adf982378 src/share/vm/interpreter/bytecodeInterpreter.cpp
---- openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp	Tue Nov 24 11:49:42 2009 -0800
-+++ openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp	Fri Nov 27 07:56:58 2009 -0800
-@@ -281,7 +281,7 @@
- 
- #define DO_BACKEDGE_CHECKS(skip, branch_pc)                                                         \
-     if ((skip) <= 0) {                                                                              \
--      if (UseCompiler && UseLoopCounter) {                                                          \
-+      if (UseLoopCounter) {                                                                         \
-         bool do_OSR = UseOnStackReplacement;                                                        \
-         BACKEDGE_COUNT->increment();                                                                \
-         if (do_OSR) do_OSR = BACKEDGE_COUNT->reached_InvocationLimit();                             \
-@@ -289,16 +289,12 @@
-           nmethod*  osr_nmethod;                                                                    \
-           OSR_REQUEST(osr_nmethod, branch_pc);                                                      \
-           if (osr_nmethod != NULL && osr_nmethod->osr_entry_bci() != InvalidOSREntryBci) {          \
--            intptr_t* buf;                                                                          \
--            CALL_VM(buf=SharedRuntime::OSR_migration_begin(THREAD), handle_exception);              \
-+            intptr_t* buf = SharedRuntime::OSR_migration_begin(THREAD);                             \
-             istate->set_msg(do_osr);                                                                \
-             istate->set_osr_buf((address)buf);                                                      \
-             istate->set_osr_entry(osr_nmethod->osr_entry());                                        \
-             return;                                                                                 \
-           }                                                                                         \
--        } else {                                                                                    \
--          INCR_INVOCATION_COUNT;                                                                    \
--          SAFEPOINT;                                                                                \
-         }                                                                                           \
-       }  /* UseCompiler ... */                                                                      \
-       INCR_INVOCATION_COUNT;                                                                        \
-@@ -1281,12 +1277,7 @@
-           jfloat f;
-           jdouble r;
-           f = STACK_FLOAT(-1);
--#ifdef IA64
--          // IA64 gcc bug
--          r = ( f == 0.0f ) ? (jdouble) f : (jdouble) f + ia64_double_zero;
--#else
-           r = (jdouble) f;
--#endif
-           MORE_STACK(-1); // POP
-           SET_STACK_DOUBLE(r, 1);
-           UPDATE_PC_AND_TOS_AND_CONTINUE(1, 2);
-diff -r de44705e6b33 -r 8e7adf982378 src/share/vm/prims/jni.cpp
---- openjdk/hotspot/src/share/vm/prims/jni.cpp	Tue Nov 24 11:49:42 2009 -0800
-+++ openjdk/hotspot/src/share/vm/prims/jni.cpp	Fri Nov 27 07:56:58 2009 -0800
-@@ -3231,6 +3231,21 @@
-   jint result = JNI_ERR;
-   DT_RETURN_MARK(CreateJavaVM, jint, (const jint&)result);
- 
-+  // We're about to use Atomic::xchg for synchronization.  Some Zero
-+  // platforms use the GCC builtin __sync_lock_test_and_set for this,
-+  // but __sync_lock_test_and_set is not guaranteed to do what we want
-+  // on all architectures.  So we check it works before relying on it.
-+#if defined(ZERO) && defined(ASSERT)
-+  {
-+    jint a = 0xcafebabe;
-+    jint b = Atomic::xchg(0xdeadbeef, &a);
-+    void *c = &a;
-+    void *d = Atomic::xchg_ptr(&b, &c);
-+    assert(a == 0xdeadbeef && b == (jint) 0xcafebabe, "Atomic::xchg() works");
-+    assert(c == &b && d == &a, "Atomic::xchg_ptr() works");
-+  }
-+#endif // ZERO && ASSERT
-+
-   // At the moment it's only possible to have one Java VM,
-   // since some of the runtime state is in global variables.
- 
-diff -r de44705e6b33 -r 8e7adf982378 src/share/vm/prims/jvmtiManageCapabilities.cpp
---- openjdk/hotspot/src/share/vm/prims/jvmtiManageCapabilities.cpp	Tue Nov 24 11:49:42 2009 -0800
-+++ openjdk/hotspot/src/share/vm/prims/jvmtiManageCapabilities.cpp	Fri Nov 27 07:56:58 2009 -0800
-@@ -115,8 +115,10 @@
-   jvmtiCapabilities jc;
- 
-   memset(&jc, 0, sizeof(jc));
-+#ifndef CC_INTERP
-   jc.can_pop_frame = 1;
-   jc.can_force_early_return = 1;
-+#endif // !CC_INTERP
-   jc.can_get_source_debug_extension = 1;
-   jc.can_access_local_variables = 1;
-   jc.can_maintain_original_method_order = 1;
-diff -r de44705e6b33 -r 8e7adf982378 src/share/vm/runtime/os.hpp
---- openjdk/hotspot/src/share/vm/runtime/os.hpp	Tue Nov 24 11:49:42 2009 -0800
-+++ openjdk/hotspot/src/share/vm/runtime/os.hpp	Fri Nov 27 07:56:58 2009 -0800
-@@ -294,19 +294,16 @@
-   }
- 
-   static bool    is_memory_serialize_page(JavaThread *thread, address addr) {
--    address thr_addr;
-     if (UseMembar) return false;
--    // Calculate thread specific address
-+    // Previously this function calculated the exact address of this
-+    // thread's serialize page, and checked if the faulting address
-+    // was equal.  However, some platforms mask off faulting addresses
-+    // to the page size, so now we just check that the address is
-+    // within the page.  This makes the thread argument unnecessary,
-+    // but we retain the NULL check to preserve existing behaviour.
-     if (thread == NULL) return false;
--    // TODO-FIXME: some platforms mask off faulting addresses to the base pagesize.
--    // Instead of using a test for equality we should probably use something
--    // of the form:
--    // return ((_mem_serialize_page ^ addr) & -pagesize) == 0
--    //
--    thr_addr  = (address)(((uintptr_t)thread >>
--                get_serialize_page_shift_count()) &
--                get_serialize_page_mask()) + (uintptr_t)_mem_serialize_page;
--    return  (thr_addr == addr);
-+    address page = (address) _mem_serialize_page;
-+    return addr >= page && addr < (page + os::vm_page_size());
-   }
- 
-   static void block_on_serialize_page_trap();
--- a/patches/zero/6903453.patch	Sun Apr 18 17:03:04 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,38 +0,0 @@
-diff -r 937144222e22 -r 28b983e5bb5f make/common/shared/Platform.gmk
---- openjdk/corba/make/common/shared/Platform.gmk	Sun Nov 08 14:49:40 2009 -0800
-+++ openjdk/corba/make/common/shared/Platform.gmk	Mon Nov 23 10:04:41 2009 +0000
-@@ -187,6 +187,9 @@
-                 sparc*) \
-                     echo sparc \
-                     ;; \
-+                arm*) \
-+                    echo arm \
-+                    ;; \
-                 *) \
-                     echo $(mach) \
-                     ;; \
-diff -r 8fb602395be0 -r ad1c88142958 make/common/shared/Platform.gmk
---- openjdk/jdk/make/common/shared/Platform.gmk	Sun Nov 08 14:49:18 2009 -0800
-+++ openjdk/jdk/make/common/shared/Platform.gmk	Mon Nov 23 10:04:47 2009 +0000
-@@ -165,6 +165,9 @@
-                 sparc*) \
-                     echo sparc \
-                     ;; \
-+                arm*) \
-+                    echo arm \
-+                    ;; \
-                 *) \
-                     echo $(mach) \
-                     ;; \
-diff -r 8fb602395be0 -r ad1c88142958 src/share/native/java/lang/fdlibm/include/fdlibm.h
---- openjdk/jdk/src/share/native/java/lang/fdlibm/include/fdlibm.h	Sun Nov 08 14:49:18 2009 -0800
-+++ openjdk/jdk/src/share/native/java/lang/fdlibm/include/fdlibm.h	Mon Nov 23 10:04:47 2009 +0000
-@@ -29,7 +29,7 @@
- #ifdef __NEWVALID       /* special setup for Sun test regime */
- #if defined(i386) || defined(i486) || \
-         defined(intel) || defined(x86) || \
--        defined(i86pc) || defined(_M_IA64)
-+        defined(i86pc) || defined(_M_IA64) || defined(ia64)
- #define _LITTLE_ENDIAN
- #endif
- #endif
--- a/patches/zero/6909153.patch	Sun Apr 18 17:03:04 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
-diff -r 1ea456c6f2b7 -r 40e7c1d24e4a src/share/vm/compiler/compileBroker.cpp
---- openjdk/hotspot/src/share/vm/compiler/compileBroker.cpp	Tue Dec 22 17:56:03 2009 -0800
-+++ openjdk/hotspot/src/share/vm/compiler/compileBroker.cpp	Mon Jan 04 00:22:57 2010 -0800
-@@ -1820,9 +1820,11 @@
-                 CompileBroker::_t_standard_compilation.seconds(),
-                 CompileBroker::_t_standard_compilation.seconds() / CompileBroker::_total_standard_compile_count);
-   tty->print_cr("    On stack replacement   : %6.3f s, Average : %2.3f", CompileBroker::_t_osr_compilation.seconds(), CompileBroker::_t_osr_compilation.seconds() / CompileBroker::_total_osr_compile_count);
--  compiler(CompLevel_fast_compile)->print_timers();
--  if (compiler(CompLevel_fast_compile) != compiler(CompLevel_highest_tier)) {
--    compiler(CompLevel_highest_tier)->print_timers();
-+
-+  if (compiler(CompLevel_fast_compile)) {
-+    compiler(CompLevel_fast_compile)->print_timers();
-+    if (compiler(CompLevel_fast_compile) != compiler(CompLevel_highest_tier))
-+      compiler(CompLevel_highest_tier)->print_timers();
-   }
- 
-   tty->cr();
-diff -r 1ea456c6f2b7 -r 40e7c1d24e4a src/share/vm/runtime/arguments.cpp
---- openjdk/hotspot/src/share/vm/runtime/arguments.cpp	Tue Dec 22 17:56:03 2009 -0800
-+++ openjdk/hotspot/src/share/vm/runtime/arguments.cpp	Mon Jan 04 00:22:57 2010 -0800
-@@ -2756,9 +2756,16 @@
-   set_aggressive_opts_flags();
- 
- #ifdef CC_INTERP
--  // Biased locking is not implemented with c++ interpreter
-+  // Clear flags not supported by the C++ interpreter
-+  FLAG_SET_DEFAULT(ProfileInterpreter, false);
-   FLAG_SET_DEFAULT(UseBiasedLocking, false);
--#endif /* CC_INTERP */
-+  LP64_ONLY(FLAG_SET_DEFAULT(UseCompressedOops, false));
-+#endif // CC_INTERP
-+
-+#ifdef ZERO
-+  // Clear flags not supported by Zero
-+  FLAG_SET_DEFAULT(TaggedStackInterpreter, false);
-+#endif // ZERO
- 
- #ifdef COMPILER2
-   if (!UseBiasedLocking || EmitSync != 0) {
--- a/patches/zero/6913869.patch	Sun Apr 18 17:03:04 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,12 +0,0 @@
-diff -r 40e7c1d24e4a -r 896da934748c src/share/vm/prims/jni.cpp
---- openjdk/hotspot/src/share/vm/prims/jni.cpp	Mon Jan 04 00:22:57 2010 -0800
-+++ openjdk/hotspot/src/share/vm/prims/jni.cpp	Mon Jan 04 03:34:40 2010 -0800
-@@ -3241,7 +3241,7 @@
-     jint b = Atomic::xchg(0xdeadbeef, &a);
-     void *c = &a;
-     void *d = Atomic::xchg_ptr(&b, &c);
--    assert(a == 0xdeadbeef && b == (jint) 0xcafebabe, "Atomic::xchg() works");
-+    assert(a == (jint) 0xdeadbeef && b == (jint) 0xcafebabe, "Atomic::xchg() works");
-     assert(c == &b && d == &a, "Atomic::xchg_ptr() works");
-   }
- #endif // ZERO && ASSERT
--- a/patches/zero/6914622.patch	Sun Apr 18 17:03:04 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,98 +0,0 @@
-diff -r 9b9c1ee9b3f6 -r f62a22282a47 src/share/vm/runtime/arguments.cpp
---- openjdk/hotspot/src/share/vm/runtime/arguments.cpp	Wed Jan 06 22:21:39 2010 -0800
-+++ openjdk/hotspot/src/share/vm/runtime/arguments.cpp	Thu Jan 07 16:24:17 2010 -0800
-@@ -2633,6 +2633,10 @@
-     if (match_option(option, "-XX:-IgnoreUnrecognizedVMOptions", &tail)) {
-       IgnoreUnrecognizedVMOptions = false;
-     }
-+    if (match_option(option, "-XX:+PrintFlagsInitial", &tail)) {
-+      CommandLineFlags::printFlags();
-+      vm_exit(0);
-+    }
-   }
- 
-   if (IgnoreUnrecognizedVMOptions) {
-@@ -2795,11 +2799,9 @@
-     CommandLineFlags::printSetFlags();
-   }
- 
--#ifdef ASSERT
-   if (PrintFlagsFinal) {
-     CommandLineFlags::printFlags();
-   }
--#endif
- 
-   return JNI_OK;
- }
-diff -r 9b9c1ee9b3f6 -r f62a22282a47 src/share/vm/runtime/globals.cpp
---- openjdk/hotspot/src/share/vm/runtime/globals.cpp	Wed Jan 06 22:21:39 2010 -0800
-+++ openjdk/hotspot/src/share/vm/runtime/globals.cpp	Thu Jan 07 16:24:17 2010 -0800
-@@ -468,6 +468,8 @@
-   assert(Arguments::check_vm_args_consistency(), "Some flag settings conflict");
- }
- 
-+#endif // PRODUCT
-+
- void CommandLineFlags::printFlags() {
-   // Print the flags sorted by name
-   // note: this method is called before the thread structure is in place
-@@ -493,5 +495,3 @@
-   }
-   FREE_C_HEAP_ARRAY(Flag*, array);
- }
--
--#endif
-diff -r 9b9c1ee9b3f6 -r f62a22282a47 src/share/vm/runtime/globals.hpp
---- openjdk/hotspot/src/share/vm/runtime/globals.hpp	Wed Jan 06 22:21:39 2010 -0800
-+++ openjdk/hotspot/src/share/vm/runtime/globals.hpp	Thu Jan 07 16:24:17 2010 -0800
-@@ -211,7 +211,7 @@
-   static bool wasSetOnCmdline(const char* name, bool* value);
-   static void printSetFlags();
- 
--  static void printFlags() PRODUCT_RETURN;
-+  static void printFlags();
- 
-   static void verify() PRODUCT_RETURN;
- };
-@@ -327,9 +327,6 @@
-   product(bool, UseMembar, false,                                           \
-           "(Unstable) Issues membars on thread state transitions")          \
-                                                                             \
--  product(bool, PrintCommandLineFlags, false,                               \
--          "Prints flags that appeared on the command line")                 \
--                                                                            \
-   diagnostic(bool, UnlockDiagnosticVMOptions, trueInDebug,                  \
-           "Enable normal processing of flags relating to field diagnostics")\
-                                                                             \
-@@ -1967,9 +1964,6 @@
-           "number of times a GC thread (minus the coordinator) "            \
-           "will sleep while yielding before giving up and resuming GC")     \
-                                                                             \
--  notproduct(bool, PrintFlagsFinal, false,                                  \
--          "Print all command line flags after argument processing")         \
--                                                                            \
-   /* gc tracing */                                                          \
-   manageable(bool, PrintGC, false,                                          \
-           "Print message at garbage collect")                               \
-@@ -2269,11 +2263,20 @@
-          "If false, restricts profiled locations to the root method only")  \
-                                                                             \
-   product(bool, PrintVMOptions, trueInDebug,                                \
--         "print VM flag settings")                                          \
-+         "Print flags that appeared on the command line")                   \
-                                                                             \
-   product(bool, IgnoreUnrecognizedVMOptions, false,                         \
-          "Ignore unrecognized VM options")                                  \
-                                                                             \
-+  product(bool, PrintCommandLineFlags, false,                               \
-+         "Print flags specified on command line or set by ergonomics")      \
-+                                                                            \
-+  product(bool, PrintFlagsInitial, false,                                   \
-+         "Print all VM flags before argument processing and exit VM")       \
-+                                                                            \
-+  product(bool, PrintFlagsFinal, false,                                     \
-+         "Print all VM flags after argument and ergonomic processing")      \
-+                                                                            \
-   diagnostic(bool, SerializeVMOutput, true,                                 \
-          "Use a mutex to serialize output to tty and hotspot.log")          \
-                                                                             \
--- a/patches/zero/6939845.patch	Sun Apr 18 17:03:04 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,20 +0,0 @@
---- openjdk.old/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp	Wed Mar 31 11:55:22 2010
-+++ openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp	Wed Mar 31 11:55:22 2010
-@@ -2328,6 +2328,17 @@
-       }
- 
-       DEFAULT:
-+#ifdef ZERO
-+          // Some zero configurations use the C++ interpreter as a
-+          // fallback interpreter and have support for platform
-+          // specific fast bytecodes which aren't supported here, so
-+          // redispatch to the equivalent non-fast bytecode when they
-+          // are encountered.
-+          if (Bytecodes::is_defined((Bytecodes::Code)opcode)) {
-+              opcode = (jubyte)Bytecodes::java_code((Bytecodes::Code)opcode);
-+              goto opcode_switch;
-+          }
-+#endif
-           fatal2("\t*** Unimplemented opcode: %d = %s\n",
-                  opcode, Bytecodes::name((Bytecodes::Code)opcode));
-           goto finish;