changeset 2640:83034f3f172f

Merge
author Andrew John Hughes <ahughes@redhat.com>
date Wed, 18 May 2011 15:46:37 +0100
parents bef042dcbb2a (current diff) 9cd3b8769614 (diff)
children 36e7e97a3702
files ChangeLog Makefile.am patches/bytebuffer-compact.patch patches/demo-swingapplet.patch patches/gcc-stack-markings.patch patches/headers-hotspot.patch patches/javafiles.patch patches/jpegclasses.patch patches/libpng.patch patches/linux-separate-debuginfo.patch patches/mark_sun_toolkit_privileged_code.patch patches/no-sync.patch patches/nss-debug.patch patches/pr633-no_javaws_man_page.patch patches/rh676659-gcc-export-dynamic.patch patches/rmi_amd64.patch patches/shark-build-hotspot.patch patches/shark-debug-option.patch patches/shark_do_nothing_on_stub_frame.patch patches/ssl.patch patches/tools.patch patches/xrender-gc-cleanup.patch
diffstat 185 files changed, 7831 insertions(+), 3376 deletions(-) [+]
line wrap: on
line diff
--- a/.hgtags	Thu Mar 31 01:04:37 2011 +0100
+++ b/.hgtags	Wed May 18 15:46:37 2011 +0100
@@ -15,8 +15,8 @@
 a7b9087df36ee2c9fe2831f9ff08d0e9070abffd icedtea6-1.5rc1
 07de70c5883a637ea2ef4aba3f8472edd7e12f1e icedtea6-1.5rc2
 926c38e2b2830971f6ca0dff2ce25f78a694b178 icedtea6-1.5rc3
-9420faca6468e1c75e9bfa73b31246ba0b73a77d icedtea-1.6-branchpoint
-8826d5735e2ca97ecdb35e7c977785d3e5b99556 icedtea-1.7-branchpoint
-9420faca6468e1c75e9bfa73b31246ba0b73a77d icedtea6-1.8-branchpoint
+9420faca6468e1c75e9bfa73b31246ba0b73a77d icedtea6-1.6-branchpoint
+8826d5735e2ca97ecdb35e7c977785d3e5b99556 icedtea6-1.7-branchpoint
+1188b1a313b9e968d57ff44eb879d70f543b20fd icedtea6-1.8-branchpoint
 cb463b94b82da269ea089c481ed5e39700525a8a icedtea6-1.9-branchpoint
 21f2a8d158545a161ba0d997c13bdba1e6166394 icedtea6-1.10-branchpoint
--- a/AUTHORS	Thu Mar 31 01:04:37 2011 +0100
+++ b/AUTHORS	Wed May 18 15:46:37 2011 +0100
@@ -19,9 +19,11 @@
 Ioana Ivan <iivan@redhat.com>
 Matthias Klose <doko@ubuntu.com>
 Francis Kung <fkung@redhat.com>
+Denis Lila <dlila@redhat.com>
 DJ Lucas <dj@linuxfromscratch.org>
 Omair Majid <omajid@redhat.com>
 Casey Marshall <csm@gnu.org>
+Paul Maurer <junk4me46806@yahoo.com>
 Dan Munckton <lists@munckfish.net>
 Raif Naffah <admin@naffah-raif.name>
 Parag Nemade <pnemade@redhat.com>
@@ -30,6 +32,7 @@
 Bernhard Rosenkränzer <bero@arklinux.org>
 Marc Schoenefeld <mschoene@redhat.com>
 Keith Seitz <keiths@redhat.com>
+Andrew Su <asu@redhat.com, andrew.su@utoronto.ca>
 Joshua Sumali <jsumali@redhat.com>
 Pavel Tisnovsky <ptisnovs@redhat.com>
 Christian Thalinger <twisti@complang.tuwien.ac.at>
--- a/ChangeLog	Thu Mar 31 01:04:37 2011 +0100
+++ b/ChangeLog	Wed May 18 15:46:37 2011 +0100
@@ -1,13 +1,357 @@
+2011-05-17  Denis Lila <dlila@redhat.com>
+
+	* Makefile.am: Apply patch.
+	* NEWS: Update with backport.
+	* patches/openjdk/mutter.patch: Add Mutter as a window manager,
+	so that a WM specific workaround keeps working.
+
+2011-05-17  Omair Majid  <omajid@redhat.com>
+
+	* patches/linux-separate-debuginfo.patch: Remove unapplied patch. An
+	improved version of this patch (which allows running jmap -heap) without
+	debuginfo packages is already included in openjdk6.
+
+2011-05-17  Omair Majid  <omajid@redhat.com>
+
+	* Makefile.am (ICEDTEA_PATCHES): Remove patches/tools.patch.
+	* patches/tools.patch: Remove file. Not required anymore.
+
+2011-05-17  Omair Majid  <omajid@redhat.com>
+
+	* Makefile.am
+	(ICEDTEA_PATCHES): Replace patches/shark-llvm-2.9.patch with
+	patches/openjdk/7036220-shark_llvm_29_headers.patch.
+	* patches/shark-llvm-2.9.patch: Move to...
+	* patches/openjdk/7036220-shark_llvm_29_headers.patch: New file. Contains
+	contents of patches/shark-llvm-2.9.patch as well as hg metadata.
+
+2011-05-17  Omair Majid  <omajid@redhat.com>
+
+	* Makefile.am
+	(ICEDTEA_PATCHES): Move patches/javafiles.patch to ...
+	(ICEDTEA_ECJ_PATCHES): Add patches/ecj/javafiles.patch.
+	* patches/javafiles.patch: Move to...
+	* patches/ecj/javafiles.patch: New file.
+
+2011-05-17  Pavel Tisnovsky  <ptisnovs@redhat.com>
+
+	* patches/jtreg-6929067-fix.patch: Fix bashism.
+
+2011-05-16  Pavel Tisnovsky  <ptisnovs@redhat.com>
+
+	* patches/jtreg-6929067-fix.patch: fix this regression
+	test so it works on any combination of JVM and platform
+	(32 bit and 64 bit)
+
+2011-05-12  Andrew Su  <asu@redhat.com>
+
+	* AUTHORS: Updated name.
+
+2011-05-12  Andrew Haley  <aph@redhat.com>
+
+	Rename icedtea-hugepage-7034464.patch -> openjdk/7034464-hugepage.patch
+	icedtea-hugepage-7037939.patch -> openjdk/7037939-hugepage.patch
+	* patches/openjdk/7043564-hugepage.patch: Import from upstream.
+	* Makefile.am: move patches, add new patch.
+
+2011-05-12  Denis Lila <dlila@redhat.com>
+
+	* Makefile.am: Apply patch.
+	* NEWS: Update with backport.
+	* patches/openjdk/pgram-pipe-regression.patch: Fix regression a
+	where the wrong user space bounds would be passed to user supplied
+	paint object.
+
+2011-05-12  Omair Majid  <omajid@redhat.com>
+
+	* Makefile.am (ICEDTEA_PATCHES): Remove rmi_amd64.patch. Add
+	7043921-java_rmi_cgi.patch
+	* patches/openjdk/7043921-java_rmi_cgi.patch: New file.
+	* patches/rmi_amd64.patch: Remove.
+
+2011-05-12  Omair Majid  <omajid@redhat.com>
+
+	* Makefile.am (ICEDTEA_PATCHES): Replace patches/libpng.patch with
+	patches/openjdk/6959123-libpng_14.patch.
+	* patches/libpng.patch: Remove.
+	* patches/openjdk/6959123-libpng_14.patch: New file.
+
+2011-05-11  Omair Majid  <omajid@redhat.com>
+
+	* Makefile.am
+	(ICEDTEA_PATCHES): Move headers-hotspot.patch to ...
+	(ICEDTEA_ECJ_PATCHES): New patch.
+	(ICEDTEA_ENV): Moves endorsed dir varaibles to ...
+	(ICEDTEA_ENV_ECJ): Here.
+	* patches/headers-hotspot.patch: Move to ...
+	* patches/ecj/endorsed-dir-for-jvmti.patch: New file.
+
+2011-05-11  Omair Majid  <omajid@redhat.com>
+
+	Backport S7042040: Remove disk space sanity check
+	* Makefile.am (ICEDTEA_PATCHES): Add
+	patches/openjdk/7042040-no_disk_space_check.patch. Remove
+	patches/no-sync.patch.
+	* patches/openjdk/7042040-no_disk_space_check.patch: New file.
+	* patches/no-sync.patch: Remove. Upstream's fix is an improved version.
+
+2011-05-11  Andrew Su  <asu@redhat.com>
+
+	* AUTHORS: Added Denis Lila, Marathon, and Andrew Su.
+
+2011-05-10  Omair Majid  <omajid@redhat.com>
+
+	Move pr633-no_javaws_man_page.patch to proper location
+	* Makefile.am (ICEDTEA_PATCHES): Update patch location and name.
+	* patches/pr633-no_javaws_man_page.patch: Remove.
+	* patches/openjdk/7021314-no_javaws_man_page.patch: New file. Backport
+	from OpenJDK7.
+
+2011-05-10  Omair Majid  <omajid@redhat.com>
+
+	Move fix for S6599601 to proper location.
+	* Makefile.am (ICEDTEA_PATCHES): Update patch location and name.
+	* patches/mark_sun_toolkit_privileged_code.patch: Remove.
+	* patches/openjdk/6599601-mark_sun_toolkit_privileged_code.patch: New
+	file. Backport from OpenJDK6.
+
+2011-05-10  Andrew Su  <asu@redhat.com>
+
+	* Makefile.am:
+	(ICEDTEA_PATCHES): Removed patch jpegclasses.patch.
+	(stamps/overlay.stamp): Added jpeg class overlay path.
+	* patches/jpegclasses.patch: Removed
+	* overlays/jpeg/openjdk/jdk/src/share/classes/com/sun/image/codec/jpeg/ImageFormatException.java,
+	* overlays/jpeg/openjdk/jdk/src/share/classes/com/sun/image/codec/jpeg/JPEGCodec.java,
+	* overlays/jpeg/openjdk/jdk/src/share/classes/com/sun/image/codec/jpeg/JPEGDecodeParam.java,
+	* overlays/jpeg/openjdk/jdk/src/share/classes/com/sun/image/codec/jpeg/JPEGEncodeParam.java,
+	* overlays/jpeg/openjdk/jdk/src/share/classes/com/sun/image/codec/jpeg/JPEGHuffmanTable.java,
+	* overlays/jpeg/openjdk/jdk/src/share/classes/com/sun/image/codec/jpeg/JPEGImageDecoder.java,
+	* overlays/jpeg/openjdk/jdk/src/share/classes/com/sun/image/codec/jpeg/JPEGImageEncoder.java,
+	* overlays/jpeg/openjdk/jdk/src/share/classes/com/sun/image/codec/jpeg/JPEGQTable.java,
+	* overlays/jpeg/openjdk/jdk/src/share/classes/com/sun/image/codec/jpeg/TruncatedFileException.java,
+	* overlays/jpeg/openjdk/jdk/src/share/classes/sun/awt/image/codec/JPEGImageDecoderImpl.java,
+	* overlays/jpeg/openjdk/jdk/src/share/classes/sun/awt/image/codec/JPEGImageEncoderImpl.java,
+	* overlays/jpeg/openjdk/jdk/src/share/classes/sun/awt/image/codec/JPEGParam.java: New classes.
+
+2011-05-09  Andrew Haley  <aph@redhat.com>
+
+	* Makefile (ICEDTEA_PATCHES): Add icedtea-hugepage-7034464.patch,
+	patches/icedtea-hugepage-7037939.patch
+	* patches/icedtea-hugepage-7034464.patch: Support transparent huge
+	pages on Linux available since 2.6.38
+	* patches/icedtea-hugepage-7037939.patch: Disable adaptive
+	resizing if SHM large pages are used.
+	* NEWS: Add S7037939, S7034464.
+
+2011-05-06  Omair Majid  <omajid@redhat.com>
+
+	* Makefile.am (ICEDTEA_PATCHES): Replace
+	patches/rh676659-gcc-export-dynamic.patch with the upstream fix
+	patches/openjdk/7041156-gcc_export_dynamic.patch.
+	* patches/openjdk/7041156-gcc_export_dynamic.patch: New file.
+	* patches/rh676659-gcc-export-dynamic.patch: Remove file.
+
+2011-05-05  Omair Majid  <omajid@redhat.com>
+
+	* patches/shark-build-hotspot.patch,
+	* patches/shark-debug-option.patch,
+	* patches/shark_do_nothing_on_stub_frame.patch: Drop upstreamed/unapplied
+	patches. These were not being applied.
+
+2011-05-05  Omair Majid  <omajid@redhat.com>
+
+	* Makefile.am (ICEDTEA_PATCHES): Replace patches/gcc-stack-markings.patch
+	with patches/openjdk/7019808-stack_noexec.patch.
+	* patches/gcc-stack-markings.patch: Remove
+	* patches/openjdk/7019808-stack_noexec.patch: Fix from upstream.
+
+2011-05-05  Xerxes RÃ¥nby  <xranby@zafena.se>
+
+	CACAO threadlist & threadobject improvements.
+	* NEWS: Updated.
+	* Makefile.am
+	(CACAO_VERSION): Updated to latest CACAO revision.
+	(CACAO_SHA256SUM): Updated.
+
+2011-05-04  Omair Majid  <omajid@redhat.com>
+
+	* Makefile.am (ICEDTEA_PATCHES): Drop bytebuffer-compact.patch. The
+	original issue this patch used to address was fixed upstream. Now this
+	patch just adds another method clearMark in addition to upstream's
+	discardMark.
+	* generated/java/nio/DirectByteBuffer.java,
+	* generated/java/nio/DirectCharBufferS.java,
+	* generated/java/nio/DirectCharBufferU.java,
+	* generated/java/nio/DirectDoubleBufferS.java,
+	* generated/java/nio/DirectDoubleBufferU.java,
+	* generated/java/nio/DirectFloatBufferS.java,
+	* generated/java/nio/DirectFloatBufferU.java,
+	* generated/java/nio/DirectIntBufferS.java,
+	* generated/java/nio/DirectIntBufferU.java,
+	* generated/java/nio/DirectLongBufferS.java,
+	* generated/java/nio/DirectLongBufferU.java,
+	* generated/java/nio/DirectShortBufferS.java,
+	* generated/java/nio/DirectShortBufferU.java,
+	* generated/java/nio/HeapByteBuffer.java,
+	* generated/java/nio/HeapCharBuffer.java,
+	* generated/java/nio/HeapDoubleBuffer.java,
+	* generated/java/nio/HeapFloatBuffer.java,
+	* generated/java/nio/HeapIntBuffer.java,
+	* generated/java/nio/HeapLongBuffer.java,
+	* generated/java/nio/HeapShortBuffer.java: Replace all uses of clearMark
+	with discardMark.
+	* patches/bytebuffer-compact.patch: Remove.
+
+2011-05-04  Omair Majid  <omajid@redhat.com>
+
+	* patches/nss-debug.patch: Remove file. It was upstreamed and was not
+	being applied locally.
+
+2011-05-04  Denis Lila <dlila@redhat.com>
+
+	* Makefile.am: Apply patch.
+	* NEWS: Update with backport.
+	* patches/openjdk/7036754-stroker-nan.patch: New patch. Fix NaN
+	quad stroking problem.
+
+2011-05-04  Xerxes RÃ¥nby  <xerxes@zafena.se>
+
+	* .hgtags Update.
+	icedtea6-1.6-branchpoint renamed from icedtea-1.6-branchpoint
+	icedtea6-1.7-branchpoint renamed from icedtea-1.7-branchpoint
+	icedtea6-1.8-branchpoint corrected to rev 1997:1188b1a313b9
+
+2011-05-03  Omair Majid  <omajid@redhat.com>
+
+	Replace xrender patch with (identical) upstream fix.
+	* NEWS: Document backport of S7018387.
+	* Makefile.am (ICEDTEA_PATCHES): Replace patches/xrender-gc-cleanup.patch
+	with patches/openjdk/7018387-xrender_gc_leak.patch.
+	* patches/openjdk/7018387-xrender_gc_leak.patch: New file.
+	* patches/xrender-gc-cleanup.patch: Remove.
+
+2011-05-03  Andrew Haley  <aph@redhat.com>
+
+	* Makefile.am: Don't fail if sed command to clean jvm.cfg fails.
+
+2011-05-02  Omair Majid  <omajid@redhat.com>
+
+	* NEWS: Update.
+	* Makefile.am (ICEDTEA_PATCHES): Add new patch.
+	* patches/openjdk/6986968-crash_on_xim_restart.patch: New file.
+
+2011-04-29  Omair Majid  <omajid@redhat.com>
+
+	* NEWS: Update.
+	* Makefile.am (ICEDTEA_PATCHES): Replace patches/demo-swingapplet.patch
+	with patches/openjdk/7029905-demo_applet_html_files.patch.
+	* patches/demo-swingapplet.patch: Remove.
+	* patches/openjdk/7029905-demo_applet_html_files.patch: New patch.
+
+2011-04-28  Omair Majid  <omajid@redhat.com>
+
+	Drop ssl.patch
+	* Makefile.am (ICEDTEA_PATCHES): Remove ssl.patch.
+	* patches/ssl.patch: Removed.
+
+2011-04-28  Denis Lila <dlila@redhat.com>
+
+	* Makefile.am: Apply patches.
+	* NEWS: Update with backports.
+	* patches/openjdk/6748082-isDisplayLocal.patch: New patch.
+	* patches/openjdk/6708580-exa_slow.patch: New patch. Speeds
+	up certain rendering operations.
+	* patches/openjdk/6307603-xrender-01.patch: Make it apply when
+	the previous patch has been applied before it.
+
+2011-04-22  Omair Majid  <omajid@redhat.com>
+
+	Revert previous patch.
+	* Makefile.am (ICEDTEA_PATCHES): Apply patch.
+	* patches/bytebuffer-compact.patch: Add back patch file.
+
+2011-04-21  Omair Majid  <omajid@redhat.com>
+
+	* patches/bytebuffer-compact.patch: Drop useless patch.
+	* Makefile.am (ICEDTEA_PATCHES): Do not apply dropped patch.
+
+2011-04-12  Xerxes RÃ¥nby  <xerxes@zafena.se>
+
+	PR689: Shark fails to find LLVM 2.9 System headers during build
+	* Makefile.am: Add patch.
+	* patches/shark-llvm-2.9.patch:
+	In LLVM 2.9 System headers are moved to Support.
+	* NEWS: Updated.
+
+2011-04-10  Yasumasa Suenaga  <suenaga.yasumasa@oss.ntt.co.jp>
+
+	* tapset/hotspot_jni.stp.in (hotspot.jni.CallNonvirtual*):
+	Add missing clazz argument to all probes. Fix methodid
+	to be last argument. Add clazz to probestr.
+
+2011-03-31  Deepak Bhole <dbhole@redhat.com>
+
+	S7031385, PR680: Incorrect register allocation in
+	orderAccess_linux_x86.inline.hpp 
+	* Makefile.am: Apply patch.
+	* NEWS: Updated
+	* patches/openjdk/7031385-gcc-register-allocation-fix.patch: New patch. 
+	Fixes register allocation by constraining output to one of a/b/c/d 
+	registers.
+
 2011-03-31  Andrew John Hughes  <ahughes@redhat.com>
 
 	* patches/jaxp-serial-version-uid.patch,
 	* patches/openjdk/6768387-jtable_not_serializable.patch:
 	Dropped, upstream.
+
+2011-03-31  Andrew John Hughes  <ahughes@redhat.com>
+
+	S7032388, PR682: Make HotSpot work on machines without
+	cmov instruction again
+	* Makefile.am: Add new patch.
+	* NEWS: Mention patch.
+	* patches/hotspot/hs20/7032388-work_without_cmov_instruction.patch,
+	* patches/hotspot/original/7032388-work_without_cmov_instruction.patch:
+	Versions of patch for each HotSpot version.
+
+2011-03-31  Pavel Tisnovsky  <ptisnovs@redhat.com>
+
+	* patches/revert-6885123.patch:
+	Fixed test shell script to work on POSIX shells.
+	This patch also deletes now defunct regression
+	test:
+	openjdk/langtools/test/tools/javac/api/6411310/Test.java
+
+2011-03-31  Andrew John Hughes  <ahughes@redhat.com>
+
 	* Makefile.am:
 	(JAXP_DROP_ZIP): Update.
 	(JAXP_DROP_SHA256SUM): Likewise.
 	(ICEDTEA_PATCHES): Drop above.
 
+2011-03-31  Andrew John Hughes  <ahughes@redhat.com>
+
+	* Makefile.am:
+	Revert broken changes in
+	478d3f5f6a59409078b1adcfba24150158b92695
+	(.PHONY): Remove jtregcheck-summary.
+	(jtregcheck): Revert to version before last change.
+	Remove pointless touch invocation.
+
+2011-03-31  Andrew John Hughes  <ahughes@redhat.com>
+
+	* Makefile.am:
+	Add missing download-openjdk and new download-hotspot aliases.
+	(.PHONY): Add clean-download-hotspot.
+	(download-openjdk): Move HotSpot download to...
+	(clean-download-openjdk): Don't delete hotspot zip.
+	(download-hotspot): ...here.
+	(clean-download-hotspot): Remove hotspot zip and stamp.
+	(download): Add download-hotspot as a dependency.
+	(clean-download): Add clean-download-hotspot as a dependency.
+
 2011-03-29  Pavel Tisnovsky  <ptisnovs@redhat.com>
 
 	* Makefile.am: Add new patch.
--- a/Makefile.am	Thu Mar 31 01:04:37 2011 +0100
+++ b/Makefile.am	Wed May 18 15:46:37 2011 +0100
@@ -5,8 +5,8 @@
 OPENJDK_VERSION = b23
 OPENJDK_URL = http://download.java.net/openjdk/jdk6/promoted/$(OPENJDK_VERSION)/
 
-CACAO_VERSION = c7bf150bfa46
-CACAO_SHA256SUM = 73629f5ac9514afbcf63b6cdf58556e889a5f6a22d4bd70de1dd2816c6500aee
+CACAO_VERSION = d6264eb66506
+CACAO_SHA256SUM = 94ea7899e806ccbc33a732b5113a8f969d8b1f4ce7ffd27cf04577054f65f63c
 CACAO_BASE_URL = http://icedtea.classpath.org/download/drops/cacao
 CACAO_URL = $(CACAO_BASE_URL)/$(CACAO_VERSION).tar.gz
 CACAO_SRC_ZIP = cacao-$(CACAO_VERSION).tar.gz
@@ -203,6 +203,7 @@
 	patches/openjdk/6682046-shape_calculation.patch \
 	patches/openjdk/6797195-hw_lw_mixing.patch \
 	patches/openjdk/6725214-direct3d-01.patch \
+	patches/openjdk/6748082-isDisplayLocal.patch \
 	patches/openjdk/6633275-shaped_translucent_windows.patch \
         patches/openjdk/6791612-opengl-jni-fix.patch \
         patches/openjdk/6755274-glgetstring-crash.patch \
@@ -215,22 +216,16 @@
 	patches/version.patch \
 	patches/version-hotspot.patch \
 	patches/hotspot/$(HSBUILD)/text-relocations.patch \
-	patches/ssl.patch \
-	patches/rmi_amd64.patch \
-	patches/tools.patch \
+	patches/openjdk/7043921-java_rmi_cgi.patch \
 	patches/use-system-tzdata.patch \
 	patches/headers.patch \
-	patches/headers-hotspot.patch \
 	patches/gcc-suffix.patch \
 	patches/hotspot/$(HSBUILD)/gcc-suffix.patch \
-	patches/bytebuffer-compact.patch \
 	patches/memory-limits.patch \
 	patches/libraries.patch \
-	patches/javafiles.patch \
 	patches/jvmtiEnv.patch \
 	patches/lcms.patch \
 	patches/print_lsb_release.patch \
-	patches/jpegclasses.patch \
 	patches/uname.patch \
 	patches/freetypeversion.patch \
 	patches/nomotif-6706121.patch \
@@ -253,7 +248,7 @@
 	patches/sparc64-linux.patch \
 	patches/sparc-ptracefix.patch \
 	patches/sparc-trapsfix.patch \
-	patches/demo-swingapplet.patch \
+	patches/openjdk/7029905-demo_applet_html_files.patch \
 	patches/jtreg-6592792.patch \
 	patches/s390-noinline.patch \
 	patches/jtreg-dnd.patch \
@@ -262,18 +257,18 @@
 	patches/dnd-filelists.patch \
 	patches/disable-cc-incompatible-sanity-checks.patch \
 	patches/explicit-target-arch.patch \
-	patches/gcc-stack-markings.patch \
+	patches/openjdk/7019808-stack_noexec.patch \
 	patches/parisc.patch \
 	patches/sh4-support.patch \
 	patches/policy-evaluation.patch \
 	patches/update-bootclasspath.patch \
-	patches/libpng.patch \
+	patches/openjdk/6959123-libpng_14.patch \
 	patches/applet_hole.patch \
 	patches/jtreg-httpTest.patch \
 	patches/arm.patch \
 	patches/hotspot/$(HSBUILD)/arm.patch \
 	patches/debug-dir.patch \
-	patches/no-sync.patch \
+	patches/openjdk/7042040-no_disk_space_check.patch \
 	patches/override-redirect-metacity.patch \
 	patches/openjdk/6967533-pre_epoch.patch \
 	patches/fonts-rhel.patch \
@@ -305,12 +300,13 @@
 	patches/openjdk/4493128-CubicCurve2D.patch \
 	patches/openjdk/4645692-CubicCurve2D.solveCubic.patch \
 	patches/no-static-linking.patch \
-	patches/rh676659-gcc-export-dynamic.patch \
+	patches/openjdk/7041156-gcc_export_dynamic.patch \
 	patches/g344659-sparc_fix.patch \
 	patches/openjdk/6728834-blurred-lcd-aa-text.patch \
 	patches/openjdk/6749060-bad-lcd-aa-non-opaque-dest.patch \
+	patches/openjdk/6708580-exa_slow.patch \
 	patches/openjdk/6896068-sg2d.patch \
-	patches/pr633-no_javaws_man_page.patch \
+	patches/openjdk/7021314-no_javaws_man_page.patch \
 	patches/pr586-include_all_srcs.patch \
 	patches/jtreg-LastErrorString.patch \
 	patches/openjdk/6663040-com.sun.awt.patch \
@@ -328,9 +324,19 @@
 	patches/openjdk/7023591-AAShapePipe.patch \
 	patches/openjdk/7027667-AAShapePipeRegTest.patch \
 	patches/openjdk/7019861-AA-regression-fix.patch \
-	patches/mark_sun_toolkit_privileged_code.patch \
+	patches/openjdk/6599601-mark_sun_toolkit_privileged_code.patch \
 	patches/g356743-libpng-1.5.patch \
-	patches/revert-6885123.patch
+	patches/revert-6885123.patch \
+	patches/hotspot/$(HSBUILD)/7032388-work_without_cmov_instruction.patch \
+	patches/openjdk/7031385-gcc-register-allocation-fix.patch \
+	patches/openjdk/7036220-shark_llvm_29_headers.patch \
+	patches/openjdk/6986968-crash_on_xim_restart.patch \
+	patches/openjdk/7036754-stroker-nan.patch \
+	patches/openjdk/pgram-pipe-regression.patch \
+	patches/openjdk/7034464-hugepage.patch \
+	patches/openjdk/7037939-hugepage.patch \
+	patches/openjdk/7043564-hugepage.patch \
+	patches/openjdk/mutter.patch
 
 if WITH_ALT_HSBUILD
 ICEDTEA_PATCHES += \
@@ -376,7 +382,7 @@
 if ENABLE_XRENDER
 ICEDTEA_PATCHES += patches/openjdk/6307603-xrender-01.patch \
 	patches/openjdk/6961633-xrender-02.patch \
-	patches/xrender-gc-cleanup.patch
+	patches/openjdk/7018387-xrender_gc_leak.patch
 endif
 
 if ENABLE_NIO2
@@ -406,6 +412,8 @@
 
 ICEDTEA_ECJ_PATCHES = patches/ecj/icedtea.patch \
 	patches/ecj/hotspot.patch \
+	patches/ecj/endorsed-dir-for-jvmti.patch \
+	patches/ecj/javafiles.patch \
 	patches/ecj/spp.patch \
 	patches/ecj/jopt.patch \
 	patches/ecj/jaxp-dependency.patch \
@@ -466,8 +474,6 @@
 	ALT_BOOTDIR="$(BOOT_DIR)" \
 	BUILD_ARCH_DIR="$(BUILD_ARCH_DIR)" \
 	ICEDTEA_CLS_DIR="$(ICEDTEA_CLS_DIR)" \
-	ICEDTEA_ENDORSED_DIR="$(ENDORSED_DIR)" \
-	ENDORSED="-Djava.endorsed.dirs=$(ENDORSED_DIR)" \
 	CLASSPATH="" \
 	LD_LIBRARY_PATH="" \
 	ZERO_BUILD="$(ICEDTEA_ZERO_BUILD)" \
@@ -549,6 +555,8 @@
 	BOOTCLASSPATH_CLS="-bootclasspath $(ICEDTEA_CLS_DIR_ECJ)" \
 	BOOTCLASSPATH_RT_LIBGCJ="-bootclasspath $(RUNTIME)" \
 	CLASSPATH="" \
+	ICEDTEA_ENDORSED_DIR="$(ENDORSED_DIR)" \
+	ENDORSED="-Djava.endorsed.dirs=$(ENDORSED_DIR)" \
 	LD_LIBRARY_PATH="" \
 	GENSRCDIR="$(abs_top_builddir)/generated" \
 	JAR_KNOWS_ATFILE="$(JAR_KNOWS_ATFILE)" \
@@ -630,7 +638,7 @@
 	clean-add-pulseaudio clean-add-pulseaudio-debug clean-add-nss clean-add-nss-debug \
 	clean-add-tzdata-support clean-add-tzdata-support-debug clean-add-systemtap-ecj \
 	clean-add-pulseaudio-ecj clean-add-nss-ecj clean-add-tzdata-support-ecj clean-fonts \
-	jtregcheck-summary
+	clean-download-hotspot
 
 env:
 	@echo 'unset JAVA_HOME'
@@ -839,6 +847,16 @@
 	fi
 endif
 endif
+endif
+	mkdir -p stamps
+	touch stamps/download-openjdk.stamp
+
+clean-download-openjdk:
+	rm -f $(OPENJDK_SRC_ZIP)
+	rm -rf openjdk.hg
+	rm -f stamps/download-openjdk.stamp
+
+stamps/download-hotspot.stamp:
 if WITH_ALT_HSBUILD
 if USE_ALT_HOTSPOT_SRC_ZIP
 	ln -sf $(ALT_HOTSPOT_SRC_ZIP) $(HOTSPOT_SRC_ZIP)
@@ -857,22 +875,19 @@
 	  $(WGET) $${hotspot_url} -O $(HOTSPOT_SRC_ZIP) ; \
 	fi
 endif
-endif
 	mkdir -p stamps
-	touch stamps/download-openjdk.stamp
+	touch stamps/download-hotspot.stamp
 
-clean-download-openjdk:
-	rm -f $(OPENJDK_SRC_ZIP)
+clean-download-hotspot:
 	rm -f $(HOTSPOT_SRC_ZIP)
-	rm -rf openjdk.hg
-	rm -f stamps/download-openjdk.stamp
+	rm -f stamps/download-hotspot.stamp
 
 stamps/download.stamp: stamps/download-drops.stamp stamps/download-cacao.stamp \
- stamps/download-jamvm.stamp stamps/download-openjdk.stamp
+ stamps/download-jamvm.stamp stamps/download-openjdk.stamp stamps/download-hotspot.stamp
 	touch stamps/download.stamp
 
 clean-download: clean-drops clean-download-cacao clean-download-jamvm \
- clean-download-openjdk
+ clean-download-openjdk clean-download-hotspot
 	rm -f stamps/download.stamp
 
 stamps/extract.stamp: stamps/extract-openjdk.stamp \
@@ -1148,6 +1163,7 @@
 if ENABLE_NIO2
 	cp -r $(abs_top_srcdir)/overlays/nio2/openjdk/* openjdk/
 endif
+	cp -r $(abs_top_srcdir)/overlays/jpeg/openjdk/* openjdk/
 	touch stamps/overlay.stamp
 
 clean-overlay:
@@ -1830,7 +1846,7 @@
 
 clean-add-jamvm:
 	rm -rf $(BUILD_JRE_ARCH_DIR)/jamvm
-	sed -i 's#-jamvm KNOWN#-jamvm ERROR#' jvm.cfg
+	-sed -i 's#-jamvm KNOWN#-jamvm ERROR#' jvm.cfg
 	rm -f stamps/add-jamvm.stamp
 
 stamps/add-jamvm-debug.stamp: stamps/icedtea-debug.stamp stamps/jamvm.stamp
@@ -2120,11 +2136,8 @@
 
 jtreg_checks = hotspot langtools jdk
 
-jtregcheck: jtreg $(jtreg_checks:%=check-%) jtregcheck-summary
-
-jtregcheck-summary:
+jtregcheck: jtreg $(jtreg_checks:%=check-%)
 	for i in hotspot langtools jdk; do \
-	  touch test/check-$$i.log; \
 	  echo "--------------- jtreg console summary for $$i ---------------"; \
 	  egrep -v '^(Passed:|Directory|Re[a-z]+\ written\ to)' test/check-$$i.log; \
 	done | tee test/jtreg-summary.log
@@ -2221,6 +2234,8 @@
 
 download-drops: stamps/download-drops.stamp
 
+download-hotspot: stamps/download-hotspot.stamp
+
 download-jamvm: stamps/download-jamvm.stamp
 
 download-jaf-drop: stamps/download-jaf-drop.stamp
@@ -2229,6 +2244,8 @@
 
 download-jaxws-drop: stamps/download-jaxws-drop.stamp
 
+download-openjdk: stamps/download-openjdk.stamp
+
 extract: stamps/extract.stamp
 
 extract-ecj: stamps/extract-ecj.stamp
--- a/NEWS	Thu Mar 31 01:04:37 2011 +0100
+++ b/NEWS	Wed May 18 15:46:37 2011 +0100
@@ -17,11 +17,25 @@
   - S7019861: Last scanline skpped when doing AA.
   - S6768387, PR670: REGRESSION: JTable no longer serializable
   - Add missing privileged block around access to the sun.awt.nativedebug property.
+  - S7032388, PR682: Make HotSpot work on machines without cmov instruction again
+  - S6748082: remove platform-specific code from SwingUtilities2.isDisplayLocal
+  - S6708580: Java applications slow when EXA enabled
+  - S7029905: demo applets missing some html files
+  - S6986968: Crash on XIM server restart
+  - S7034464: Support transparent large pages on Linux
+  - S7037939: NUMA: Disable adaptive resizing if SHM large pages are used
+  - S7018387: Xrender pipeline may leak GC's
+  - S7036754: Stroked quads sometimes contain NaN
+  - S7042040: Remove disk space sanity check
+  - S7043054: REGRESSION - wrong userBounds in Paint.createContext()
+  - S7043963, RH698295: Window manager workaround in AWT was not applied to mutter. Now it is.
 * Bug fixes
   - PR637: make check should exit with an error code if any regression test failed.
   - G356743: Support libpng 1.5.
+  - S7031385, PR680: Incorrect register allocation in orderAccess_linux_x86.inline.hpp
 * Allow selection of test suites using the jtreg_checks argument e.g. jtreg_checks="langtools"
 * CACAO
+  - Threadlist & threadobject improvements.
   - Ignore all unknown options, but report them.
   - Fixes build for newer gcc (at least 4.4) on PPC64, breaks older gcc.
   - CA123: LD_LIBRARY_PATH and java.library.path.
@@ -44,6 +58,8 @@
   - On ARM, force interpreter to be built in ARM mode.
   - MIPS: 64-bit and interpreter inlining by default.
   - Trivial implementation of stubs for MIPS.
+* Shark
+  - PR689: Shark fails to find LLVM 2.9 System headers during build.
 
 New in release 1.10 (2011-XX-XX):
 
--- a/generated/java/lang/CharacterData00.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/java/lang/CharacterData00.java	Wed May 18 15:46:37 2011 +0100
@@ -1,12 +1,12 @@
 /*
- * Copyright 2003-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright (c) 2003, 2006, Oracle and/or its affiliates. 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
+ * published by the Free Software Foundation.  Oracle designates this
  * particular file as subject to the "Classpath" exception as provided
- * by Sun in the LICENSE file that accompanied this code.
+ * by Oracle 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
@@ -18,9 +18,9 @@
  * 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.
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
  */
 
 package java.lang;
--- a/generated/java/lang/CharacterData01.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/java/lang/CharacterData01.java	Wed May 18 15:46:37 2011 +0100
@@ -1,12 +1,12 @@
 /*
- * Copyright 2003-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright (c) 2003, 2006, Oracle and/or its affiliates. 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
+ * published by the Free Software Foundation.  Oracle designates this
  * particular file as subject to the "Classpath" exception as provided
- * by Sun in the LICENSE file that accompanied this code.
+ * by Oracle 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
@@ -18,9 +18,9 @@
  * 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.
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
  */
 
 package java.lang;
--- a/generated/java/lang/CharacterData02.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/java/lang/CharacterData02.java	Wed May 18 15:46:37 2011 +0100
@@ -1,12 +1,12 @@
 /*
- * Copyright 2003-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright (c) 2003, 2006, Oracle and/or its affiliates. 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
+ * published by the Free Software Foundation.  Oracle designates this
  * particular file as subject to the "Classpath" exception as provided
- * by Sun in the LICENSE file that accompanied this code.
+ * by Oracle 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
@@ -18,9 +18,9 @@
  * 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.
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
  */
 
 package java.lang;
--- a/generated/java/lang/CharacterData0E.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/java/lang/CharacterData0E.java	Wed May 18 15:46:37 2011 +0100
@@ -1,12 +1,12 @@
 /*
- * Copyright 2003-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright (c) 2003, 2006, Oracle and/or its affiliates. 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
+ * published by the Free Software Foundation.  Oracle designates this
  * particular file as subject to the "Classpath" exception as provided
- * by Sun in the LICENSE file that accompanied this code.
+ * by Oracle 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
@@ -18,9 +18,9 @@
  * 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.
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
  */
 
 package java.lang;
--- a/generated/java/lang/CharacterDataLatin1.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/java/lang/CharacterDataLatin1.java	Wed May 18 15:46:37 2011 +0100
@@ -1,12 +1,12 @@
 /*
- * Copyright 2002-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright (c) 2002, 2006, Oracle and/or its affiliates. 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
+ * published by the Free Software Foundation.  Oracle designates this
  * particular file as subject to the "Classpath" exception as provided
- * by Sun in the LICENSE file that accompanied this code.
+ * by Oracle 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
@@ -18,9 +18,9 @@
  * 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.
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
  */
 
 package java.lang;
--- a/generated/java/nio/DirectByteBuffer.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/java/nio/DirectByteBuffer.java	Wed May 18 15:46:37 2011 +0100
@@ -354,7 +354,7 @@
         unsafe.copyMemory(ix(pos), ix(0), rem << 0);
         position(rem);
         limit(capacity());
-	clearMark();
+        discardMark();
         return this;
 
 
--- a/generated/java/nio/DirectCharBufferS.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/java/nio/DirectCharBufferS.java	Wed May 18 15:46:37 2011 +0100
@@ -354,7 +354,7 @@
         unsafe.copyMemory(ix(pos), ix(0), rem << 1);
         position(rem);
         limit(capacity());
-	clearMark();
+        discardMark();
         return this;
 
 
--- a/generated/java/nio/DirectCharBufferU.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/java/nio/DirectCharBufferU.java	Wed May 18 15:46:37 2011 +0100
@@ -354,7 +354,7 @@
         unsafe.copyMemory(ix(pos), ix(0), rem << 1);
         position(rem);
         limit(capacity());
-	clearMark();
+        discardMark();
         return this;
 
 
--- a/generated/java/nio/DirectDoubleBufferS.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/java/nio/DirectDoubleBufferS.java	Wed May 18 15:46:37 2011 +0100
@@ -354,7 +354,7 @@
         unsafe.copyMemory(ix(pos), ix(0), rem << 3);
         position(rem);
         limit(capacity());
-	clearMark();
+        discardMark();
         return this;
 
 
--- a/generated/java/nio/DirectDoubleBufferU.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/java/nio/DirectDoubleBufferU.java	Wed May 18 15:46:37 2011 +0100
@@ -354,7 +354,7 @@
         unsafe.copyMemory(ix(pos), ix(0), rem << 3);
         position(rem);
         limit(capacity());
-	clearMark();
+        discardMark();
         return this;
 
 
--- a/generated/java/nio/DirectFloatBufferS.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/java/nio/DirectFloatBufferS.java	Wed May 18 15:46:37 2011 +0100
@@ -354,7 +354,7 @@
         unsafe.copyMemory(ix(pos), ix(0), rem << 2);
         position(rem);
         limit(capacity());
-	clearMark();
+        discardMark();
         return this;
 
 
--- a/generated/java/nio/DirectFloatBufferU.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/java/nio/DirectFloatBufferU.java	Wed May 18 15:46:37 2011 +0100
@@ -354,7 +354,7 @@
         unsafe.copyMemory(ix(pos), ix(0), rem << 2);
         position(rem);
         limit(capacity());
-	clearMark();
+        discardMark();
         return this;
 
 
--- a/generated/java/nio/DirectIntBufferS.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/java/nio/DirectIntBufferS.java	Wed May 18 15:46:37 2011 +0100
@@ -354,7 +354,7 @@
         unsafe.copyMemory(ix(pos), ix(0), rem << 2);
         position(rem);
         limit(capacity());
-	clearMark();
+        discardMark();
         return this;
 
 
--- a/generated/java/nio/DirectIntBufferU.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/java/nio/DirectIntBufferU.java	Wed May 18 15:46:37 2011 +0100
@@ -354,7 +354,7 @@
         unsafe.copyMemory(ix(pos), ix(0), rem << 2);
         position(rem);
         limit(capacity());
-	clearMark();
+        discardMark();
         return this;
 
 
--- a/generated/java/nio/DirectLongBufferS.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/java/nio/DirectLongBufferS.java	Wed May 18 15:46:37 2011 +0100
@@ -354,7 +354,7 @@
         unsafe.copyMemory(ix(pos), ix(0), rem << 3);
         position(rem);
         limit(capacity());
-	clearMark();
+        discardMark();
         return this;
 
 
--- a/generated/java/nio/DirectLongBufferU.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/java/nio/DirectLongBufferU.java	Wed May 18 15:46:37 2011 +0100
@@ -354,7 +354,7 @@
         unsafe.copyMemory(ix(pos), ix(0), rem << 3);
         position(rem);
         limit(capacity());
-	clearMark();
+        discardMark();
         return this;
 
 
--- a/generated/java/nio/DirectShortBufferS.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/java/nio/DirectShortBufferS.java	Wed May 18 15:46:37 2011 +0100
@@ -354,7 +354,7 @@
         unsafe.copyMemory(ix(pos), ix(0), rem << 1);
         position(rem);
         limit(capacity());
-	clearMark();
+        discardMark();
         return this;
 
 
--- a/generated/java/nio/DirectShortBufferU.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/java/nio/DirectShortBufferU.java	Wed May 18 15:46:37 2011 +0100
@@ -354,7 +354,7 @@
         unsafe.copyMemory(ix(pos), ix(0), rem << 1);
         position(rem);
         limit(capacity());
-	clearMark();
+        discardMark();
         return this;
 
 
--- a/generated/java/nio/HeapByteBuffer.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/java/nio/HeapByteBuffer.java	Wed May 18 15:46:37 2011 +0100
@@ -222,7 +222,7 @@
         System.arraycopy(hb, ix(position()), hb, ix(0), remaining());
         position(remaining());
         limit(capacity());
-	clearMark();
+        discardMark();
         return this;
 
 
--- a/generated/java/nio/HeapCharBuffer.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/java/nio/HeapCharBuffer.java	Wed May 18 15:46:37 2011 +0100
@@ -222,7 +222,7 @@
         System.arraycopy(hb, ix(position()), hb, ix(0), remaining());
         position(remaining());
         limit(capacity());
-	clearMark();
+        discardMark();
         return this;
 
 
--- a/generated/java/nio/HeapDoubleBuffer.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/java/nio/HeapDoubleBuffer.java	Wed May 18 15:46:37 2011 +0100
@@ -222,7 +222,7 @@
         System.arraycopy(hb, ix(position()), hb, ix(0), remaining());
         position(remaining());
         limit(capacity());
-	clearMark();
+        discardMark();
         return this;
 
 
--- a/generated/java/nio/HeapFloatBuffer.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/java/nio/HeapFloatBuffer.java	Wed May 18 15:46:37 2011 +0100
@@ -222,7 +222,7 @@
         System.arraycopy(hb, ix(position()), hb, ix(0), remaining());
         position(remaining());
         limit(capacity());
-	clearMark();
+        discardMark();
         return this;
 
 
--- a/generated/java/nio/HeapIntBuffer.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/java/nio/HeapIntBuffer.java	Wed May 18 15:46:37 2011 +0100
@@ -222,7 +222,7 @@
         System.arraycopy(hb, ix(position()), hb, ix(0), remaining());
         position(remaining());
         limit(capacity());
-	clearMark();
+        discardMark();
         return this;
 
 
--- a/generated/java/nio/HeapLongBuffer.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/java/nio/HeapLongBuffer.java	Wed May 18 15:46:37 2011 +0100
@@ -222,7 +222,7 @@
         System.arraycopy(hb, ix(position()), hb, ix(0), remaining());
         position(remaining());
         limit(capacity());
-	clearMark();
+        discardMark();
         return this;
 
 
--- a/generated/java/nio/HeapShortBuffer.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/java/nio/HeapShortBuffer.java	Wed May 18 15:46:37 2011 +0100
@@ -222,7 +222,7 @@
         System.arraycopy(hb, ix(position()), hb, ix(0), remaining());
         position(remaining());
         limit(capacity());
-	clearMark();
+        discardMark();
         return this;
 
 
--- a/generated/sun/awt/X11/AwtGraphicsConfigData.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/sun/awt/X11/AwtGraphicsConfigData.java	Wed May 18 15:46:37 2011 +0100
@@ -8,7 +8,7 @@
 public class AwtGraphicsConfigData extends XWrapperBase { 
 	private Unsafe unsafe = XlibWrapper.unsafe; 
 	private final boolean should_free_memory;
-	public static int getSize() { return 92; }
+	public static int getSize() { return ((XlibWrapper.dataModel == 32)?(92):(168)); }
 	public int getDataSize() { return getSize(); }
 
 	long pData;
@@ -16,14 +16,14 @@
 	public long getPData() { return pData; }
 
 
-	AwtGraphicsConfigData(long addr) {
+	public AwtGraphicsConfigData(long addr) {
 		log.finest("Creating");
 		pData=addr;
 		should_free_memory = false;
 	}
 
 
-	AwtGraphicsConfigData() {
+	public AwtGraphicsConfigData() {
 		log.finest("Creating");
 		pData = unsafe.allocateMemory(getSize());
 		should_free_memory = true;
@@ -39,36 +39,38 @@
 		}
 	public int get_awt_depth() { log.finest("");return (Native.getInt(pData+0)); }
 	public void set_awt_depth(int v) { log.finest(""); Native.putInt(pData+0, v); }
-	public long get_awt_cmap() { log.finest("");return (Native.getLong(pData+4)); }
-	public void set_awt_cmap(long v) { log.finest(""); Native.putLong(pData+4, v); }
-	public XVisualInfo get_awt_visInfo() { log.finest("");return new XVisualInfo(pData + 8); }
-	public int get_awt_num_colors() { log.finest("");return (Native.getInt(pData+48)); }
-	public void set_awt_num_colors(int v) { log.finest(""); Native.putInt(pData+48, v); }
-	public awtImageData get_awtImage(int index) { log.finest(""); return (Native.getLong(pData+52) != 0)?(new awtImageData(Native.getLong(pData+52)+index*304)):(null); }
-	public long get_awtImage() { log.finest("");return Native.getLong(pData+52); }
-	public void set_awtImage(long v) { log.finest(""); Native.putLong(pData + 52, v); }
-	public long get_AwtColorMatch(int index) { log.finest(""); return Native.getLong(pData+56)+index*Native.getLongSize(); }
-	public long get_AwtColorMatch() { log.finest("");return Native.getLong(pData+56); }
-	public void set_AwtColorMatch(long v) { log.finest(""); Native.putLong(pData + 56, v); }
-	public long get_monoImage(int index) { log.finest(""); return Native.getLong(pData+60)+index*Native.getLongSize(); }
-	public long get_monoImage() { log.finest("");return Native.getLong(pData+60); }
-	public void set_monoImage(long v) { log.finest(""); Native.putLong(pData + 60, v); }
-	public long get_monoPixmap() { log.finest("");return (Native.getLong(pData+64)); }
-	public void set_monoPixmap(long v) { log.finest(""); Native.putLong(pData+64, v); }
-	public int get_monoPixmapWidth() { log.finest("");return (Native.getInt(pData+68)); }
-	public void set_monoPixmapWidth(int v) { log.finest(""); Native.putInt(pData+68, v); }
-	public int get_monoPixmapHeight() { log.finest("");return (Native.getInt(pData+72)); }
-	public void set_monoPixmapHeight(int v) { log.finest(""); Native.putInt(pData+72, v); }
-	public long get_monoPixmapGC() { log.finest("");return (Native.getLong(pData+76)); }
-	public void set_monoPixmapGC(long v) { log.finest(""); Native.putLong(pData+76, v); }
-	public int get_pixelStride() { log.finest("");return (Native.getInt(pData+80)); }
-	public void set_pixelStride(int v) { log.finest(""); Native.putInt(pData+80, v); }
-	public ColorData get_color_data(int index) { log.finest(""); return (Native.getLong(pData+84) != 0)?(new ColorData(Native.getLong(pData+84)+index*44)):(null); }
-	public long get_color_data() { log.finest("");return Native.getLong(pData+84); }
-	public void set_color_data(long v) { log.finest(""); Native.putLong(pData + 84, v); }
-	public long get_glxInfo(int index) { log.finest(""); return Native.getLong(pData+88)+index*Native.getLongSize(); }
-	public long get_glxInfo() { log.finest("");return Native.getLong(pData+88); }
-	public void set_glxInfo(long v) { log.finest(""); Native.putLong(pData + 88, v); }
+	public long get_awt_cmap() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)))); }
+	public void set_awt_cmap(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)), v); }
+	public XVisualInfo get_awt_visInfo() { log.finest("");return new XVisualInfo(pData + ((XlibWrapper.dataModel == 32)?(8):(16))); }
+	public int get_awt_num_colors() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(48):(80)))); }
+	public void set_awt_num_colors(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(48):(80)), v); }
+	public awtImageData get_awtImage(int index) { log.finest(""); return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(52):(88))) != 0)?(new awtImageData(Native.getLong(pData+((XlibWrapper.dataModel == 32)?(52):(88)))+index*((XlibWrapper.dataModel == 32)?(304):(560)))):(null); }
+	public long get_awtImage() { log.finest("");return Native.getLong(pData+((XlibWrapper.dataModel == 32)?(52):(88))); }
+	public void set_awtImage(long v) { log.finest(""); Native.putLong(pData + ((XlibWrapper.dataModel == 32)?(52):(88)), v); }
+	public long get_AwtColorMatch(int index) { log.finest(""); return Native.getLong(pData+((XlibWrapper.dataModel == 32)?(56):(96)))+index*Native.getLongSize(); }
+	public long get_AwtColorMatch() { log.finest("");return Native.getLong(pData+((XlibWrapper.dataModel == 32)?(56):(96))); }
+	public void set_AwtColorMatch(long v) { log.finest(""); Native.putLong(pData + ((XlibWrapper.dataModel == 32)?(56):(96)), v); }
+	public long get_monoImage(int index) { log.finest(""); return Native.getLong(pData+((XlibWrapper.dataModel == 32)?(60):(104)))+index*Native.getLongSize(); }
+	public long get_monoImage() { log.finest("");return Native.getLong(pData+((XlibWrapper.dataModel == 32)?(60):(104))); }
+	public void set_monoImage(long v) { log.finest(""); Native.putLong(pData + ((XlibWrapper.dataModel == 32)?(60):(104)), v); }
+	public long get_monoPixmap() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(64):(112)))); }
+	public void set_monoPixmap(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(64):(112)), v); }
+	public int get_monoPixmapWidth() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(68):(120)))); }
+	public void set_monoPixmapWidth(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(68):(120)), v); }
+	public int get_monoPixmapHeight() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(72):(124)))); }
+	public void set_monoPixmapHeight(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(72):(124)), v); }
+	public long get_monoPixmapGC() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(76):(128)))); }
+	public void set_monoPixmapGC(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(76):(128)), v); }
+	public int get_pixelStride() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(80):(136)))); }
+	public void set_pixelStride(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(80):(136)), v); }
+	public ColorData get_color_data(int index) { log.finest(""); return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(84):(144))) != 0)?(new ColorData(Native.getLong(pData+((XlibWrapper.dataModel == 32)?(84):(144)))+index*((XlibWrapper.dataModel == 32)?(44):(88)))):(null); }
+	public long get_color_data() { log.finest("");return Native.getLong(pData+((XlibWrapper.dataModel == 32)?(84):(144))); }
+	public void set_color_data(long v) { log.finest(""); Native.putLong(pData + ((XlibWrapper.dataModel == 32)?(84):(144)), v); }
+	public long get_glxInfo(int index) { log.finest(""); return Native.getLong(pData+((XlibWrapper.dataModel == 32)?(88):(152)))+index*Native.getLongSize(); }
+	public long get_glxInfo() { log.finest("");return Native.getLong(pData+((XlibWrapper.dataModel == 32)?(88):(152))); }
+	public void set_glxInfo(long v) { log.finest(""); Native.putLong(pData + ((XlibWrapper.dataModel == 32)?(88):(152)), v); }
+	public int get_isTranslucencySupported() { log.finest("");return (Native.getInt(pData+160)); }
+	public void set_isTranslucencySupported(int v) { log.finest(""); Native.putInt(pData+160, v); }
 
 
 	String getName() {
@@ -93,6 +95,7 @@
 		ret += ""+"pixelStride = " + get_pixelStride() +", ";
 		ret += ""+"color_data = " + get_color_data() +", ";
 		ret += ""+"glxInfo = " + get_glxInfo() +", ";
+		ret += ""+"isTranslucencySupported = " + get_isTranslucencySupported() +", ";
 		return ret;
 	}
 
--- a/generated/sun/awt/X11/AwtScreenData.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/sun/awt/X11/AwtScreenData.java	Wed May 18 15:46:37 2011 +0100
@@ -8,7 +8,7 @@
 public class AwtScreenData extends XWrapperBase { 
 	private Unsafe unsafe = XlibWrapper.unsafe; 
 	private final boolean should_free_memory;
-	public static int getSize() { return 24; }
+	public static int getSize() { return ((XlibWrapper.dataModel == 32)?(24):(48)); }
 	public int getDataSize() { return getSize(); }
 
 	long pData;
@@ -16,14 +16,14 @@
 	public long getPData() { return pData; }
 
 
-	AwtScreenData(long addr) {
+	public AwtScreenData(long addr) {
 		log.finest("Creating");
 		pData=addr;
 		should_free_memory = false;
 	}
 
 
-	AwtScreenData() {
+	public AwtScreenData() {
 		log.finest("Creating");
 		pData = unsafe.allocateMemory(getSize());
 		should_free_memory = true;
@@ -39,18 +39,18 @@
 		}
 	public int get_numConfigs() { log.finest("");return (Native.getInt(pData+0)); }
 	public void set_numConfigs(int v) { log.finest(""); Native.putInt(pData+0, v); }
-	public long get_root() { log.finest("");return (Native.getLong(pData+4)); }
-	public void set_root(long v) { log.finest(""); Native.putLong(pData+4, v); }
-	public long get_whitepixel() { log.finest("");return (Native.getLong(pData+8)); }
-	public void set_whitepixel(long v) { log.finest(""); Native.putLong(pData+8, v); }
-	public long get_blackpixel() { log.finest("");return (Native.getLong(pData+12)); }
-	public void set_blackpixel(long v) { log.finest(""); Native.putLong(pData+12, v); }
-	public AwtGraphicsConfigData get_defaultConfig(int index) { log.finest(""); return (Native.getLong(pData+16) != 0)?(new AwtGraphicsConfigData(Native.getLong(pData+16)+index*92)):(null); }
-	public long get_defaultConfig() { log.finest("");return Native.getLong(pData+16); }
-	public void set_defaultConfig(long v) { log.finest(""); Native.putLong(pData + 16, v); }
-	public long get_configs(int index) { log.finest(""); return Native.getLong(pData+20)+index*Native.getLongSize(); }
-	public long get_configs() { log.finest("");return Native.getLong(pData+20); }
-	public void set_configs(long v) { log.finest(""); Native.putLong(pData + 20, v); }
+	public long get_root() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)))); }
+	public void set_root(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)), v); }
+	public long get_whitepixel() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(8):(16)))); }
+	public void set_whitepixel(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(8):(16)), v); }
+	public long get_blackpixel() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(12):(24)))); }
+	public void set_blackpixel(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(12):(24)), v); }
+	public AwtGraphicsConfigData get_defaultConfig(int index) { log.finest(""); return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(16):(32))) != 0)?(new AwtGraphicsConfigData(Native.getLong(pData+((XlibWrapper.dataModel == 32)?(16):(32)))+index*((XlibWrapper.dataModel == 32)?(92):(168)))):(null); }
+	public long get_defaultConfig() { log.finest("");return Native.getLong(pData+((XlibWrapper.dataModel == 32)?(16):(32))); }
+	public void set_defaultConfig(long v) { log.finest(""); Native.putLong(pData + ((XlibWrapper.dataModel == 32)?(16):(32)), v); }
+	public long get_configs(int index) { log.finest(""); return Native.getLong(pData+((XlibWrapper.dataModel == 32)?(20):(40)))+index*Native.getLongSize(); }
+	public long get_configs() { log.finest("");return Native.getLong(pData+((XlibWrapper.dataModel == 32)?(20):(40))); }
+	public void set_configs(long v) { log.finest(""); Native.putLong(pData + ((XlibWrapper.dataModel == 32)?(20):(40)), v); }
 
 
 	String getName() {
--- a/generated/sun/awt/X11/ColorData.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/sun/awt/X11/ColorData.java	Wed May 18 15:46:37 2011 +0100
@@ -8,7 +8,7 @@
 public class ColorData extends XWrapperBase { 
 	private Unsafe unsafe = XlibWrapper.unsafe; 
 	private final boolean should_free_memory;
-	public static int getSize() { return 44; }
+	public static int getSize() { return ((XlibWrapper.dataModel == 32)?(44):(88)); }
 	public int getDataSize() { return getSize(); }
 
 	long pData;
@@ -16,14 +16,14 @@
 	public long getPData() { return pData; }
 
 
-	ColorData(long addr) {
+	public ColorData(long addr) {
 		log.finest("Creating");
 		pData=addr;
 		should_free_memory = false;
 	}
 
 
-	ColorData() {
+	public ColorData() {
 		log.finest("Creating");
 		pData = unsafe.allocateMemory(getSize());
 		should_free_memory = true;
@@ -40,34 +40,34 @@
 	public ColorEntry get_awt_Colors(int index) { log.finest(""); return (Native.getLong(pData+0) != 0)?(new ColorEntry(Native.getLong(pData+0)+index*4)):(null); }
 	public long get_awt_Colors() { log.finest("");return Native.getLong(pData+0); }
 	public void set_awt_Colors(long v) { log.finest(""); Native.putLong(pData + 0, v); }
-	public int get_awt_numICMcolors() { log.finest("");return (Native.getInt(pData+4)); }
-	public void set_awt_numICMcolors(int v) { log.finest(""); Native.putInt(pData+4, v); }
-	public int get_awt_icmLUT(int index) { log.finest(""); return Native.getInt(Native.getLong(pData+8)+index*4); }
-	public long get_awt_icmLUT() { log.finest("");return Native.getLong(pData+8); }
-	public void set_awt_icmLUT(long v) { log.finest(""); Native.putLong(pData + 8, v); }
-	public byte get_awt_icmLUT2Colors(int index) { log.finest(""); return Native.getByte(Native.getLong(pData+12)+index*1); }
-	public long get_awt_icmLUT2Colors() { log.finest("");return Native.getLong(pData+12); }
-	public void set_awt_icmLUT2Colors(long v) { log.finest(""); Native.putLong(pData + 12, v); }
-	public byte get_img_grays(int index) { log.finest(""); return Native.getByte(Native.getLong(pData+16)+index*1); }
-	public long get_img_grays() { log.finest("");return Native.getLong(pData+16); }
-	public void set_img_grays(long v) { log.finest(""); Native.putLong(pData + 16, v); }
-	public byte get_img_clr_tbl(int index) { log.finest(""); return Native.getByte(Native.getLong(pData+20)+index*1); }
-	public long get_img_clr_tbl() { log.finest("");return Native.getLong(pData+20); }
-	public void set_img_clr_tbl(long v) { log.finest(""); Native.putLong(pData + 20, v); }
-	public byte get_img_oda_red(int index) { log.finest(""); return Native.getByte(Native.getLong(pData+24)+index*1); }
-	public long get_img_oda_red() { log.finest("");return Native.getLong(pData+24); }
-	public void set_img_oda_red(long v) { log.finest(""); Native.putLong(pData + 24, v); }
-	public byte get_img_oda_green(int index) { log.finest(""); return Native.getByte(Native.getLong(pData+28)+index*1); }
-	public long get_img_oda_green() { log.finest("");return Native.getLong(pData+28); }
-	public void set_img_oda_green(long v) { log.finest(""); Native.putLong(pData + 28, v); }
-	public byte get_img_oda_blue(int index) { log.finest(""); return Native.getByte(Native.getLong(pData+32)+index*1); }
-	public long get_img_oda_blue() { log.finest("");return Native.getLong(pData+32); }
-	public void set_img_oda_blue(long v) { log.finest(""); Native.putLong(pData + 32, v); }
-	public int get_pGrayInverseLutData(int index) { log.finest(""); return Native.getInt(Native.getLong(pData+36)+index*4); }
-	public long get_pGrayInverseLutData() { log.finest("");return Native.getLong(pData+36); }
-	public void set_pGrayInverseLutData(long v) { log.finest(""); Native.putLong(pData + 36, v); }
-	public int get_screendata() { log.finest("");return (Native.getInt(pData+40)); }
-	public void set_screendata(int v) { log.finest(""); Native.putInt(pData+40, v); }
+	public int get_awt_numICMcolors() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(4):(8)))); }
+	public void set_awt_numICMcolors(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(4):(8)), v); }
+	public int get_awt_icmLUT(int index) { log.finest(""); return Native.getInt(Native.getLong(pData+((XlibWrapper.dataModel == 32)?(8):(16)))+index*4); }
+	public long get_awt_icmLUT() { log.finest("");return Native.getLong(pData+((XlibWrapper.dataModel == 32)?(8):(16))); }
+	public void set_awt_icmLUT(long v) { log.finest(""); Native.putLong(pData + ((XlibWrapper.dataModel == 32)?(8):(16)), v); }
+	public byte get_awt_icmLUT2Colors(int index) { log.finest(""); return Native.getByte(Native.getLong(pData+((XlibWrapper.dataModel == 32)?(12):(24)))+index*1); }
+	public long get_awt_icmLUT2Colors() { log.finest("");return Native.getLong(pData+((XlibWrapper.dataModel == 32)?(12):(24))); }
+	public void set_awt_icmLUT2Colors(long v) { log.finest(""); Native.putLong(pData + ((XlibWrapper.dataModel == 32)?(12):(24)), v); }
+	public byte get_img_grays(int index) { log.finest(""); return Native.getByte(Native.getLong(pData+((XlibWrapper.dataModel == 32)?(16):(32)))+index*1); }
+	public long get_img_grays() { log.finest("");return Native.getLong(pData+((XlibWrapper.dataModel == 32)?(16):(32))); }
+	public void set_img_grays(long v) { log.finest(""); Native.putLong(pData + ((XlibWrapper.dataModel == 32)?(16):(32)), v); }
+	public byte get_img_clr_tbl(int index) { log.finest(""); return Native.getByte(Native.getLong(pData+((XlibWrapper.dataModel == 32)?(20):(40)))+index*1); }
+	public long get_img_clr_tbl() { log.finest("");return Native.getLong(pData+((XlibWrapper.dataModel == 32)?(20):(40))); }
+	public void set_img_clr_tbl(long v) { log.finest(""); Native.putLong(pData + ((XlibWrapper.dataModel == 32)?(20):(40)), v); }
+	public byte get_img_oda_red(int index) { log.finest(""); return Native.getByte(Native.getLong(pData+((XlibWrapper.dataModel == 32)?(24):(48)))+index*1); }
+	public long get_img_oda_red() { log.finest("");return Native.getLong(pData+((XlibWrapper.dataModel == 32)?(24):(48))); }
+	public void set_img_oda_red(long v) { log.finest(""); Native.putLong(pData + ((XlibWrapper.dataModel == 32)?(24):(48)), v); }
+	public byte get_img_oda_green(int index) { log.finest(""); return Native.getByte(Native.getLong(pData+((XlibWrapper.dataModel == 32)?(28):(56)))+index*1); }
+	public long get_img_oda_green() { log.finest("");return Native.getLong(pData+((XlibWrapper.dataModel == 32)?(28):(56))); }
+	public void set_img_oda_green(long v) { log.finest(""); Native.putLong(pData + ((XlibWrapper.dataModel == 32)?(28):(56)), v); }
+	public byte get_img_oda_blue(int index) { log.finest(""); return Native.getByte(Native.getLong(pData+((XlibWrapper.dataModel == 32)?(32):(64)))+index*1); }
+	public long get_img_oda_blue() { log.finest("");return Native.getLong(pData+((XlibWrapper.dataModel == 32)?(32):(64))); }
+	public void set_img_oda_blue(long v) { log.finest(""); Native.putLong(pData + ((XlibWrapper.dataModel == 32)?(32):(64)), v); }
+	public int get_pGrayInverseLutData(int index) { log.finest(""); return Native.getInt(Native.getLong(pData+((XlibWrapper.dataModel == 32)?(36):(72)))+index*4); }
+	public long get_pGrayInverseLutData() { log.finest("");return Native.getLong(pData+((XlibWrapper.dataModel == 32)?(36):(72))); }
+	public void set_pGrayInverseLutData(long v) { log.finest(""); Native.putLong(pData + ((XlibWrapper.dataModel == 32)?(36):(72)), v); }
+	public int get_screendata() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(40):(80)))); }
+	public void set_screendata(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(40):(80)), v); }
 
 
 	String getName() {
--- a/generated/sun/awt/X11/ColorEntry.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/sun/awt/X11/ColorEntry.java	Wed May 18 15:46:37 2011 +0100
@@ -16,14 +16,14 @@
 	public long getPData() { return pData; }
 
 
-	ColorEntry(long addr) {
+	public ColorEntry(long addr) {
 		log.finest("Creating");
 		pData=addr;
 		should_free_memory = false;
 	}
 
 
-	ColorEntry() {
+	public ColorEntry() {
 		log.finest("Creating");
 		pData = unsafe.allocateMemory(getSize());
 		should_free_memory = true;
--- a/generated/sun/awt/X11/Depth.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/sun/awt/X11/Depth.java	Wed May 18 15:46:37 2011 +0100
@@ -8,7 +8,7 @@
 public class Depth extends XWrapperBase { 
 	private Unsafe unsafe = XlibWrapper.unsafe; 
 	private final boolean should_free_memory;
-	public static int getSize() { return 12; }
+	public static int getSize() { return ((XlibWrapper.dataModel == 32)?(12):(16)); }
 	public int getDataSize() { return getSize(); }
 
 	long pData;
@@ -16,14 +16,14 @@
 	public long getPData() { return pData; }
 
 
-	Depth(long addr) {
+	public Depth(long addr) {
 		log.finest("Creating");
 		pData=addr;
 		should_free_memory = false;
 	}
 
 
-	Depth() {
+	public Depth() {
 		log.finest("Creating");
 		pData = unsafe.allocateMemory(getSize());
 		should_free_memory = true;
@@ -41,7 +41,7 @@
 	public void set_depth(int v) { log.finest(""); Native.putInt(pData+0, v); }
 	public int get_nvisuals() { log.finest("");return (Native.getInt(pData+4)); }
 	public void set_nvisuals(int v) { log.finest(""); Native.putInt(pData+4, v); }
-	public Visual get_visuals(int index) { log.finest(""); return (Native.getLong(pData+8) != 0)?(new Visual(Native.getLong(pData+8)+index*32)):(null); }
+	public Visual get_visuals(int index) { log.finest(""); return (Native.getLong(pData+8) != 0)?(new Visual(Native.getLong(pData+8)+index*((XlibWrapper.dataModel == 32)?(32):(56)))):(null); }
 	public long get_visuals() { log.finest("");return Native.getLong(pData+8); }
 	public void set_visuals(long v) { log.finest(""); Native.putLong(pData + 8, v); }
 
--- a/generated/sun/awt/X11/PropMwmHints.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/sun/awt/X11/PropMwmHints.java	Wed May 18 15:46:37 2011 +0100
@@ -8,7 +8,7 @@
 public class PropMwmHints extends XWrapperBase { 
 	private Unsafe unsafe = XlibWrapper.unsafe; 
 	private final boolean should_free_memory;
-	public static int getSize() { return 20; }
+	public static int getSize() { return ((XlibWrapper.dataModel == 32)?(20):(40)); }
 	public int getDataSize() { return getSize(); }
 
 	long pData;
@@ -16,14 +16,14 @@
 	public long getPData() { return pData; }
 
 
-	PropMwmHints(long addr) {
+	public PropMwmHints(long addr) {
 		log.finest("Creating");
 		pData=addr;
 		should_free_memory = false;
 	}
 
 
-	PropMwmHints() {
+	public PropMwmHints() {
 		log.finest("Creating");
 		pData = unsafe.allocateMemory(getSize());
 		should_free_memory = true;
@@ -39,14 +39,14 @@
 		}
 	public long get_flags() { log.finest("");return (Native.getLong(pData+0)); }
 	public void set_flags(long v) { log.finest(""); Native.putLong(pData+0, v); }
-	public long get_functions() { log.finest("");return (Native.getLong(pData+4)); }
-	public void set_functions(long v) { log.finest(""); Native.putLong(pData+4, v); }
-	public long get_decorations() { log.finest("");return (Native.getLong(pData+8)); }
-	public void set_decorations(long v) { log.finest(""); Native.putLong(pData+8, v); }
-	public long get_inputMode() { log.finest("");return (Native.getLong(pData+12)); }
-	public void set_inputMode(long v) { log.finest(""); Native.putLong(pData+12, v); }
-	public long get_status() { log.finest("");return (Native.getLong(pData+16)); }
-	public void set_status(long v) { log.finest(""); Native.putLong(pData+16, v); }
+	public long get_functions() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)))); }
+	public void set_functions(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)), v); }
+	public long get_decorations() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(8):(16)))); }
+	public void set_decorations(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(8):(16)), v); }
+	public long get_inputMode() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(12):(24)))); }
+	public void set_inputMode(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(12):(24)), v); }
+	public long get_status() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(16):(32)))); }
+	public void set_status(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(16):(32)), v); }
 
 
 	String getName() {
--- a/generated/sun/awt/X11/Screen.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/sun/awt/X11/Screen.java	Wed May 18 15:46:37 2011 +0100
@@ -8,7 +8,7 @@
 public class Screen extends XWrapperBase { 
 	private Unsafe unsafe = XlibWrapper.unsafe; 
 	private final boolean should_free_memory;
-	public static int getSize() { return 80; }
+	public static int getSize() { return ((XlibWrapper.dataModel == 32)?(80):(128)); }
 	public int getDataSize() { return getSize(); }
 
 	long pData;
@@ -16,14 +16,14 @@
 	public long getPData() { return pData; }
 
 
-	Screen(long addr) {
+	public Screen(long addr) {
 		log.finest("Creating");
 		pData=addr;
 		should_free_memory = false;
 	}
 
 
-	Screen() {
+	public Screen() {
 		log.finest("Creating");
 		pData = unsafe.allocateMemory(getSize());
 		should_free_memory = true;
@@ -37,50 +37,50 @@
 			unsafe.freeMemory(pData); 
 	}
 		}
-	public XExtData get_ext_data(int index) { log.finest(""); return (Native.getLong(pData+0) != 0)?(new XExtData(Native.getLong(pData+0)+index*16)):(null); }
+	public XExtData get_ext_data(int index) { log.finest(""); return (Native.getLong(pData+0) != 0)?(new XExtData(Native.getLong(pData+0)+index*((XlibWrapper.dataModel == 32)?(16):(32)))):(null); }
 	public long get_ext_data() { log.finest("");return Native.getLong(pData+0); }
 	public void set_ext_data(long v) { log.finest(""); Native.putLong(pData + 0, v); }
-	public long get_display(int index) { log.finest(""); return Native.getLong(pData+4)+index*Native.getLongSize(); }
-	public long get_display() { log.finest("");return Native.getLong(pData+4); }
-	public void set_display(long v) { log.finest(""); Native.putLong(pData + 4, v); }
-	public long get_root() { log.finest("");return (Native.getLong(pData+8)); }
-	public void set_root(long v) { log.finest(""); Native.putLong(pData+8, v); }
-	public int get_width() { log.finest("");return (Native.getInt(pData+12)); }
-	public void set_width(int v) { log.finest(""); Native.putInt(pData+12, v); }
-	public int get_height() { log.finest("");return (Native.getInt(pData+16)); }
-	public void set_height(int v) { log.finest(""); Native.putInt(pData+16, v); }
-	public int get_mwidth() { log.finest("");return (Native.getInt(pData+20)); }
-	public void set_mwidth(int v) { log.finest(""); Native.putInt(pData+20, v); }
-	public int get_mheight() { log.finest("");return (Native.getInt(pData+24)); }
-	public void set_mheight(int v) { log.finest(""); Native.putInt(pData+24, v); }
-	public int get_ndepths() { log.finest("");return (Native.getInt(pData+28)); }
-	public void set_ndepths(int v) { log.finest(""); Native.putInt(pData+28, v); }
-	public Depth get_depths(int index) { log.finest(""); return (Native.getLong(pData+32) != 0)?(new Depth(Native.getLong(pData+32)+index*12)):(null); }
-	public long get_depths() { log.finest("");return Native.getLong(pData+32); }
-	public void set_depths(long v) { log.finest(""); Native.putLong(pData + 32, v); }
-	public int get_root_depth() { log.finest("");return (Native.getInt(pData+36)); }
-	public void set_root_depth(int v) { log.finest(""); Native.putInt(pData+36, v); }
-	public Visual get_root_visual(int index) { log.finest(""); return (Native.getLong(pData+40) != 0)?(new Visual(Native.getLong(pData+40)+index*32)):(null); }
-	public long get_root_visual() { log.finest("");return Native.getLong(pData+40); }
-	public void set_root_visual(long v) { log.finest(""); Native.putLong(pData + 40, v); }
-	public long get_default_gc() { log.finest("");return (Native.getLong(pData+44)); }
-	public void set_default_gc(long v) { log.finest(""); Native.putLong(pData+44, v); }
-	public long get_cmap() { log.finest("");return (Native.getLong(pData+48)); }
-	public void set_cmap(long v) { log.finest(""); Native.putLong(pData+48, v); }
-	public long get_white_pixel() { log.finest("");return (Native.getLong(pData+52)); }
-	public void set_white_pixel(long v) { log.finest(""); Native.putLong(pData+52, v); }
-	public long get_black_pixel() { log.finest("");return (Native.getLong(pData+56)); }
-	public void set_black_pixel(long v) { log.finest(""); Native.putLong(pData+56, v); }
-	public int get_max_maps() { log.finest("");return (Native.getInt(pData+60)); }
-	public void set_max_maps(int v) { log.finest(""); Native.putInt(pData+60, v); }
-	public int get_min_maps() { log.finest("");return (Native.getInt(pData+64)); }
-	public void set_min_maps(int v) { log.finest(""); Native.putInt(pData+64, v); }
-	public int get_backing_store() { log.finest("");return (Native.getInt(pData+68)); }
-	public void set_backing_store(int v) { log.finest(""); Native.putInt(pData+68, v); }
-	public boolean get_save_unders() { log.finest("");return (Native.getBool(pData+72)); }
-	public void set_save_unders(boolean v) { log.finest(""); Native.putBool(pData+72, v); }
-	public long get_root_input_mask() { log.finest("");return (Native.getLong(pData+76)); }
-	public void set_root_input_mask(long v) { log.finest(""); Native.putLong(pData+76, v); }
+	public long get_display(int index) { log.finest(""); return Native.getLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)))+index*Native.getLongSize(); }
+	public long get_display() { log.finest("");return Native.getLong(pData+((XlibWrapper.dataModel == 32)?(4):(8))); }
+	public void set_display(long v) { log.finest(""); Native.putLong(pData + ((XlibWrapper.dataModel == 32)?(4):(8)), v); }
+	public long get_root() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(8):(16)))); }
+	public void set_root(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(8):(16)), v); }
+	public int get_width() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(12):(24)))); }
+	public void set_width(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(12):(24)), v); }
+	public int get_height() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(16):(28)))); }
+	public void set_height(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(16):(28)), v); }
+	public int get_mwidth() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(20):(32)))); }
+	public void set_mwidth(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(20):(32)), v); }
+	public int get_mheight() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(24):(36)))); }
+	public void set_mheight(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(24):(36)), v); }
+	public int get_ndepths() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(28):(40)))); }
+	public void set_ndepths(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(28):(40)), v); }
+	public Depth get_depths(int index) { log.finest(""); return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(32):(48))) != 0)?(new Depth(Native.getLong(pData+((XlibWrapper.dataModel == 32)?(32):(48)))+index*((XlibWrapper.dataModel == 32)?(12):(16)))):(null); }
+	public long get_depths() { log.finest("");return Native.getLong(pData+((XlibWrapper.dataModel == 32)?(32):(48))); }
+	public void set_depths(long v) { log.finest(""); Native.putLong(pData + ((XlibWrapper.dataModel == 32)?(32):(48)), v); }
+	public int get_root_depth() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(36):(56)))); }
+	public void set_root_depth(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(36):(56)), v); }
+	public Visual get_root_visual(int index) { log.finest(""); return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(40):(64))) != 0)?(new Visual(Native.getLong(pData+((XlibWrapper.dataModel == 32)?(40):(64)))+index*((XlibWrapper.dataModel == 32)?(32):(56)))):(null); }
+	public long get_root_visual() { log.finest("");return Native.getLong(pData+((XlibWrapper.dataModel == 32)?(40):(64))); }
+	public void set_root_visual(long v) { log.finest(""); Native.putLong(pData + ((XlibWrapper.dataModel == 32)?(40):(64)), v); }
+	public long get_default_gc() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(44):(72)))); }
+	public void set_default_gc(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(44):(72)), v); }
+	public long get_cmap() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(48):(80)))); }
+	public void set_cmap(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(48):(80)), v); }
+	public long get_white_pixel() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(52):(88)))); }
+	public void set_white_pixel(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(52):(88)), v); }
+	public long get_black_pixel() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(56):(96)))); }
+	public void set_black_pixel(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(56):(96)), v); }
+	public int get_max_maps() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(60):(104)))); }
+	public void set_max_maps(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(60):(104)), v); }
+	public int get_min_maps() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(64):(108)))); }
+	public void set_min_maps(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(64):(108)), v); }
+	public int get_backing_store() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(68):(112)))); }
+	public void set_backing_store(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(68):(112)), v); }
+	public boolean get_save_unders() { log.finest("");return (Native.getBool(pData+((XlibWrapper.dataModel == 32)?(72):(116)))); }
+	public void set_save_unders(boolean v) { log.finest(""); Native.putBool(pData+((XlibWrapper.dataModel == 32)?(72):(116)), v); }
+	public long get_root_input_mask() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(76):(120)))); }
+	public void set_root_input_mask(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(76):(120)), v); }
 
 
 	String getName() {
--- a/generated/sun/awt/X11/ScreenFormat.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/sun/awt/X11/ScreenFormat.java	Wed May 18 15:46:37 2011 +0100
@@ -8,7 +8,7 @@
 public class ScreenFormat extends XWrapperBase { 
 	private Unsafe unsafe = XlibWrapper.unsafe; 
 	private final boolean should_free_memory;
-	public static int getSize() { return 16; }
+	public static int getSize() { return ((XlibWrapper.dataModel == 32)?(16):(24)); }
 	public int getDataSize() { return getSize(); }
 
 	long pData;
@@ -16,14 +16,14 @@
 	public long getPData() { return pData; }
 
 
-	ScreenFormat(long addr) {
+	public ScreenFormat(long addr) {
 		log.finest("Creating");
 		pData=addr;
 		should_free_memory = false;
 	}
 
 
-	ScreenFormat() {
+	public ScreenFormat() {
 		log.finest("Creating");
 		pData = unsafe.allocateMemory(getSize());
 		should_free_memory = true;
@@ -37,15 +37,15 @@
 			unsafe.freeMemory(pData); 
 	}
 		}
-	public XExtData get_ext_data(int index) { log.finest(""); return (Native.getLong(pData+0) != 0)?(new XExtData(Native.getLong(pData+0)+index*16)):(null); }
+	public XExtData get_ext_data(int index) { log.finest(""); return (Native.getLong(pData+0) != 0)?(new XExtData(Native.getLong(pData+0)+index*((XlibWrapper.dataModel == 32)?(16):(32)))):(null); }
 	public long get_ext_data() { log.finest("");return Native.getLong(pData+0); }
 	public void set_ext_data(long v) { log.finest(""); Native.putLong(pData + 0, v); }
-	public int get_depth() { log.finest("");return (Native.getInt(pData+4)); }
-	public void set_depth(int v) { log.finest(""); Native.putInt(pData+4, v); }
-	public int get_bits_per_pixel() { log.finest("");return (Native.getInt(pData+8)); }
-	public void set_bits_per_pixel(int v) { log.finest(""); Native.putInt(pData+8, v); }
-	public int get_scanline_pad() { log.finest("");return (Native.getInt(pData+12)); }
-	public void set_scanline_pad(int v) { log.finest(""); Native.putInt(pData+12, v); }
+	public int get_depth() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(4):(8)))); }
+	public void set_depth(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(4):(8)), v); }
+	public int get_bits_per_pixel() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(8):(12)))); }
+	public void set_bits_per_pixel(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(8):(12)), v); }
+	public int get_scanline_pad() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(12):(16)))); }
+	public void set_scanline_pad(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(12):(16)), v); }
 
 
 	String getName() {
--- a/generated/sun/awt/X11/Visual.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/sun/awt/X11/Visual.java	Wed May 18 15:46:37 2011 +0100
@@ -8,7 +8,7 @@
 public class Visual extends XWrapperBase { 
 	private Unsafe unsafe = XlibWrapper.unsafe; 
 	private final boolean should_free_memory;
-	public static int getSize() { return 32; }
+	public static int getSize() { return ((XlibWrapper.dataModel == 32)?(32):(56)); }
 	public int getDataSize() { return getSize(); }
 
 	long pData;
@@ -16,14 +16,14 @@
 	public long getPData() { return pData; }
 
 
-	Visual(long addr) {
+	public Visual(long addr) {
 		log.finest("Creating");
 		pData=addr;
 		should_free_memory = false;
 	}
 
 
-	Visual() {
+	public Visual() {
 		log.finest("Creating");
 		pData = unsafe.allocateMemory(getSize());
 		should_free_memory = true;
@@ -37,23 +37,23 @@
 			unsafe.freeMemory(pData); 
 	}
 		}
-	public XExtData get_ext_data(int index) { log.finest(""); return (Native.getLong(pData+0) != 0)?(new XExtData(Native.getLong(pData+0)+index*16)):(null); }
+	public XExtData get_ext_data(int index) { log.finest(""); return (Native.getLong(pData+0) != 0)?(new XExtData(Native.getLong(pData+0)+index*((XlibWrapper.dataModel == 32)?(16):(32)))):(null); }
 	public long get_ext_data() { log.finest("");return Native.getLong(pData+0); }
 	public void set_ext_data(long v) { log.finest(""); Native.putLong(pData + 0, v); }
-	public long get_visualid() { log.finest("");return (Native.getLong(pData+4)); }
-	public void set_visualid(long v) { log.finest(""); Native.putLong(pData+4, v); }
-	public int get_class() { log.finest("");return (Native.getInt(pData+8)); }
-	public void set_class(int v) { log.finest(""); Native.putInt(pData+8, v); }
-	public long get_red_mask() { log.finest("");return (Native.getLong(pData+12)); }
-	public void set_red_mask(long v) { log.finest(""); Native.putLong(pData+12, v); }
-	public long get_green_mask() { log.finest("");return (Native.getLong(pData+16)); }
-	public void set_green_mask(long v) { log.finest(""); Native.putLong(pData+16, v); }
-	public long get_blue_mask() { log.finest("");return (Native.getLong(pData+20)); }
-	public void set_blue_mask(long v) { log.finest(""); Native.putLong(pData+20, v); }
-	public int get_bits_per_rgb() { log.finest("");return (Native.getInt(pData+24)); }
-	public void set_bits_per_rgb(int v) { log.finest(""); Native.putInt(pData+24, v); }
-	public int get_map_entries() { log.finest("");return (Native.getInt(pData+28)); }
-	public void set_map_entries(int v) { log.finest(""); Native.putInt(pData+28, v); }
+	public long get_visualid() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)))); }
+	public void set_visualid(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)), v); }
+	public int get_class() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(8):(16)))); }
+	public void set_class(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(8):(16)), v); }
+	public long get_red_mask() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(12):(24)))); }
+	public void set_red_mask(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(12):(24)), v); }
+	public long get_green_mask() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(16):(32)))); }
+	public void set_green_mask(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(16):(32)), v); }
+	public long get_blue_mask() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(20):(40)))); }
+	public void set_blue_mask(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(20):(40)), v); }
+	public int get_bits_per_rgb() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(24):(48)))); }
+	public void set_bits_per_rgb(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(24):(48)), v); }
+	public int get_map_entries() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(28):(52)))); }
+	public void set_map_entries(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(28):(52)), v); }
 
 
 	String getName() {
--- a/generated/sun/awt/X11/XAnyEvent.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/sun/awt/X11/XAnyEvent.java	Wed May 18 15:46:37 2011 +0100
@@ -8,7 +8,7 @@
 public class XAnyEvent extends XWrapperBase { 
 	private Unsafe unsafe = XlibWrapper.unsafe; 
 	private final boolean should_free_memory;
-	public static int getSize() { return 20; }
+	public static int getSize() { return ((XlibWrapper.dataModel == 32)?(20):(40)); }
 	public int getDataSize() { return getSize(); }
 
 	long pData;
@@ -16,14 +16,14 @@
 	public long getPData() { return pData; }
 
 
-	XAnyEvent(long addr) {
+	public XAnyEvent(long addr) {
 		log.finest("Creating");
 		pData=addr;
 		should_free_memory = false;
 	}
 
 
-	XAnyEvent() {
+	public XAnyEvent() {
 		log.finest("Creating");
 		pData = unsafe.allocateMemory(getSize());
 		should_free_memory = true;
@@ -39,14 +39,14 @@
 		}
 	public int get_type() { log.finest("");return (Native.getInt(pData+0)); }
 	public void set_type(int v) { log.finest(""); Native.putInt(pData+0, v); }
-	public long get_serial() { log.finest("");return (Native.getLong(pData+4)); }
-	public void set_serial(long v) { log.finest(""); Native.putLong(pData+4, v); }
-	public boolean get_send_event() { log.finest("");return (Native.getBool(pData+8)); }
-	public void set_send_event(boolean v) { log.finest(""); Native.putBool(pData+8, v); }
-	public long get_display() { log.finest("");return (Native.getLong(pData+12)); }
-	public void set_display(long v) { log.finest(""); Native.putLong(pData+12, v); }
-	public long get_window() { log.finest("");return (Native.getLong(pData+16)); }
-	public void set_window(long v) { log.finest(""); Native.putLong(pData+16, v); }
+	public long get_serial() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)))); }
+	public void set_serial(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)), v); }
+	public boolean get_send_event() { log.finest("");return (Native.getBool(pData+((XlibWrapper.dataModel == 32)?(8):(16)))); }
+	public void set_send_event(boolean v) { log.finest(""); Native.putBool(pData+((XlibWrapper.dataModel == 32)?(8):(16)), v); }
+	public long get_display() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(12):(24)))); }
+	public void set_display(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(12):(24)), v); }
+	public long get_window() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(16):(32)))); }
+	public void set_window(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(16):(32)), v); }
 
 
 	String getName() {
--- a/generated/sun/awt/X11/XArc.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/sun/awt/X11/XArc.java	Wed May 18 15:46:37 2011 +0100
@@ -16,14 +16,14 @@
 	public long getPData() { return pData; }
 
 
-	XArc(long addr) {
+	public XArc(long addr) {
 		log.finest("Creating");
 		pData=addr;
 		should_free_memory = false;
 	}
 
 
-	XArc() {
+	public XArc() {
 		log.finest("Creating");
 		pData = unsafe.allocateMemory(getSize());
 		should_free_memory = true;
--- a/generated/sun/awt/X11/XButtonEvent.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/sun/awt/X11/XButtonEvent.java	Wed May 18 15:46:37 2011 +0100
@@ -8,7 +8,7 @@
 public class XButtonEvent extends XWrapperBase { 
 	private Unsafe unsafe = XlibWrapper.unsafe; 
 	private final boolean should_free_memory;
-	public static int getSize() { return 60; }
+	public static int getSize() { return ((XlibWrapper.dataModel == 32)?(60):(96)); }
 	public int getDataSize() { return getSize(); }
 
 	long pData;
@@ -16,14 +16,14 @@
 	public long getPData() { return pData; }
 
 
-	XButtonEvent(long addr) {
+	public XButtonEvent(long addr) {
 		log.finest("Creating");
 		pData=addr;
 		should_free_memory = false;
 	}
 
 
-	XButtonEvent() {
+	public XButtonEvent() {
 		log.finest("Creating");
 		pData = unsafe.allocateMemory(getSize());
 		should_free_memory = true;
@@ -39,34 +39,34 @@
 		}
 	public int get_type() { log.finest("");return (Native.getInt(pData+0)); }
 	public void set_type(int v) { log.finest(""); Native.putInt(pData+0, v); }
-	public long get_serial() { log.finest("");return (Native.getLong(pData+4)); }
-	public void set_serial(long v) { log.finest(""); Native.putLong(pData+4, v); }
-	public boolean get_send_event() { log.finest("");return (Native.getBool(pData+8)); }
-	public void set_send_event(boolean v) { log.finest(""); Native.putBool(pData+8, v); }
-	public long get_display() { log.finest("");return (Native.getLong(pData+12)); }
-	public void set_display(long v) { log.finest(""); Native.putLong(pData+12, v); }
-	public long get_window() { log.finest("");return (Native.getLong(pData+16)); }
-	public void set_window(long v) { log.finest(""); Native.putLong(pData+16, v); }
-	public long get_root() { log.finest("");return (Native.getLong(pData+20)); }
-	public void set_root(long v) { log.finest(""); Native.putLong(pData+20, v); }
-	public long get_subwindow() { log.finest("");return (Native.getLong(pData+24)); }
-	public void set_subwindow(long v) { log.finest(""); Native.putLong(pData+24, v); }
-	public long get_time() { log.finest("");return (Native.getULong(pData+28)); }
-	public void set_time(long v) { log.finest(""); Native.putULong(pData+28, v); }
-	public int get_x() { log.finest("");return (Native.getInt(pData+32)); }
-	public void set_x(int v) { log.finest(""); Native.putInt(pData+32, v); }
-	public int get_y() { log.finest("");return (Native.getInt(pData+36)); }
-	public void set_y(int v) { log.finest(""); Native.putInt(pData+36, v); }
-	public int get_x_root() { log.finest("");return (Native.getInt(pData+40)); }
-	public void set_x_root(int v) { log.finest(""); Native.putInt(pData+40, v); }
-	public int get_y_root() { log.finest("");return (Native.getInt(pData+44)); }
-	public void set_y_root(int v) { log.finest(""); Native.putInt(pData+44, v); }
-	public int get_state() { log.finest("");return (Native.getInt(pData+48)); }
-	public void set_state(int v) { log.finest(""); Native.putInt(pData+48, v); }
-	public int get_button() { log.finest("");return (Native.getInt(pData+52)); }
-	public void set_button(int v) { log.finest(""); Native.putInt(pData+52, v); }
-	public boolean get_same_screen() { log.finest("");return (Native.getBool(pData+56)); }
-	public void set_same_screen(boolean v) { log.finest(""); Native.putBool(pData+56, v); }
+	public long get_serial() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)))); }
+	public void set_serial(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)), v); }
+	public boolean get_send_event() { log.finest("");return (Native.getBool(pData+((XlibWrapper.dataModel == 32)?(8):(16)))); }
+	public void set_send_event(boolean v) { log.finest(""); Native.putBool(pData+((XlibWrapper.dataModel == 32)?(8):(16)), v); }
+	public long get_display() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(12):(24)))); }
+	public void set_display(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(12):(24)), v); }
+	public long get_window() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(16):(32)))); }
+	public void set_window(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(16):(32)), v); }
+	public long get_root() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(20):(40)))); }
+	public void set_root(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(20):(40)), v); }
+	public long get_subwindow() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(24):(48)))); }
+	public void set_subwindow(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(24):(48)), v); }
+	public long get_time() { log.finest("");return (Native.getULong(pData+((XlibWrapper.dataModel == 32)?(28):(56)))); }
+	public void set_time(long v) { log.finest(""); Native.putULong(pData+((XlibWrapper.dataModel == 32)?(28):(56)), v); }
+	public int get_x() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(32):(64)))); }
+	public void set_x(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(32):(64)), v); }
+	public int get_y() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(36):(68)))); }
+	public void set_y(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(36):(68)), v); }
+	public int get_x_root() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(40):(72)))); }
+	public void set_x_root(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(40):(72)), v); }
+	public int get_y_root() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(44):(76)))); }
+	public void set_y_root(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(44):(76)), v); }
+	public int get_state() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(48):(80)))); }
+	public void set_state(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(48):(80)), v); }
+	public int get_button() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(52):(84)))); }
+	public void set_button(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(52):(84)), v); }
+	public boolean get_same_screen() { log.finest("");return (Native.getBool(pData+((XlibWrapper.dataModel == 32)?(56):(88)))); }
+	public void set_same_screen(boolean v) { log.finest(""); Native.putBool(pData+((XlibWrapper.dataModel == 32)?(56):(88)), v); }
 
 
 	String getName() {
--- a/generated/sun/awt/X11/XChar2b.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/sun/awt/X11/XChar2b.java	Wed May 18 15:46:37 2011 +0100
@@ -16,14 +16,14 @@
 	public long getPData() { return pData; }
 
 
-	XChar2b(long addr) {
+	public XChar2b(long addr) {
 		log.finest("Creating");
 		pData=addr;
 		should_free_memory = false;
 	}
 
 
-	XChar2b() {
+	public XChar2b() {
 		log.finest("Creating");
 		pData = unsafe.allocateMemory(getSize());
 		should_free_memory = true;
--- a/generated/sun/awt/X11/XCharStruct.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/sun/awt/X11/XCharStruct.java	Wed May 18 15:46:37 2011 +0100
@@ -16,14 +16,14 @@
 	public long getPData() { return pData; }
 
 
-	XCharStruct(long addr) {
+	public XCharStruct(long addr) {
 		log.finest("Creating");
 		pData=addr;
 		should_free_memory = false;
 	}
 
 
-	XCharStruct() {
+	public XCharStruct() {
 		log.finest("Creating");
 		pData = unsafe.allocateMemory(getSize());
 		should_free_memory = true;
--- a/generated/sun/awt/X11/XCirculateEvent.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/sun/awt/X11/XCirculateEvent.java	Wed May 18 15:46:37 2011 +0100
@@ -8,7 +8,7 @@
 public class XCirculateEvent extends XWrapperBase { 
 	private Unsafe unsafe = XlibWrapper.unsafe; 
 	private final boolean should_free_memory;
-	public static int getSize() { return 28; }
+	public static int getSize() { return ((XlibWrapper.dataModel == 32)?(28):(56)); }
 	public int getDataSize() { return getSize(); }
 
 	long pData;
@@ -16,14 +16,14 @@
 	public long getPData() { return pData; }
 
 
-	XCirculateEvent(long addr) {
+	public XCirculateEvent(long addr) {
 		log.finest("Creating");
 		pData=addr;
 		should_free_memory = false;
 	}
 
 
-	XCirculateEvent() {
+	public XCirculateEvent() {
 		log.finest("Creating");
 		pData = unsafe.allocateMemory(getSize());
 		should_free_memory = true;
@@ -39,18 +39,18 @@
 		}
 	public int get_type() { log.finest("");return (Native.getInt(pData+0)); }
 	public void set_type(int v) { log.finest(""); Native.putInt(pData+0, v); }
-	public long get_serial() { log.finest("");return (Native.getLong(pData+4)); }
-	public void set_serial(long v) { log.finest(""); Native.putLong(pData+4, v); }
-	public boolean get_send_event() { log.finest("");return (Native.getBool(pData+8)); }
-	public void set_send_event(boolean v) { log.finest(""); Native.putBool(pData+8, v); }
-	public long get_display() { log.finest("");return (Native.getLong(pData+12)); }
-	public void set_display(long v) { log.finest(""); Native.putLong(pData+12, v); }
-	public long get_event() { log.finest("");return (Native.getLong(pData+16)); }
-	public void set_event(long v) { log.finest(""); Native.putLong(pData+16, v); }
-	public long get_window() { log.finest("");return (Native.getLong(pData+20)); }
-	public void set_window(long v) { log.finest(""); Native.putLong(pData+20, v); }
-	public int get_place() { log.finest("");return (Native.getInt(pData+24)); }
-	public void set_place(int v) { log.finest(""); Native.putInt(pData+24, v); }
+	public long get_serial() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)))); }
+	public void set_serial(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)), v); }
+	public boolean get_send_event() { log.finest("");return (Native.getBool(pData+((XlibWrapper.dataModel == 32)?(8):(16)))); }
+	public void set_send_event(boolean v) { log.finest(""); Native.putBool(pData+((XlibWrapper.dataModel == 32)?(8):(16)), v); }
+	public long get_display() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(12):(24)))); }
+	public void set_display(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(12):(24)), v); }
+	public long get_event() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(16):(32)))); }
+	public void set_event(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(16):(32)), v); }
+	public long get_window() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(20):(40)))); }
+	public void set_window(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(20):(40)), v); }
+	public int get_place() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(24):(48)))); }
+	public void set_place(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(24):(48)), v); }
 
 
 	String getName() {
--- a/generated/sun/awt/X11/XCirculateRequestEvent.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/sun/awt/X11/XCirculateRequestEvent.java	Wed May 18 15:46:37 2011 +0100
@@ -8,7 +8,7 @@
 public class XCirculateRequestEvent extends XWrapperBase { 
 	private Unsafe unsafe = XlibWrapper.unsafe; 
 	private final boolean should_free_memory;
-	public static int getSize() { return 28; }
+	public static int getSize() { return ((XlibWrapper.dataModel == 32)?(28):(56)); }
 	public int getDataSize() { return getSize(); }
 
 	long pData;
@@ -16,14 +16,14 @@
 	public long getPData() { return pData; }
 
 
-	XCirculateRequestEvent(long addr) {
+	public XCirculateRequestEvent(long addr) {
 		log.finest("Creating");
 		pData=addr;
 		should_free_memory = false;
 	}
 
 
-	XCirculateRequestEvent() {
+	public XCirculateRequestEvent() {
 		log.finest("Creating");
 		pData = unsafe.allocateMemory(getSize());
 		should_free_memory = true;
@@ -39,18 +39,18 @@
 		}
 	public int get_type() { log.finest("");return (Native.getInt(pData+0)); }
 	public void set_type(int v) { log.finest(""); Native.putInt(pData+0, v); }
-	public long get_serial() { log.finest("");return (Native.getLong(pData+4)); }
-	public void set_serial(long v) { log.finest(""); Native.putLong(pData+4, v); }
-	public boolean get_send_event() { log.finest("");return (Native.getBool(pData+8)); }
-	public void set_send_event(boolean v) { log.finest(""); Native.putBool(pData+8, v); }
-	public long get_display() { log.finest("");return (Native.getLong(pData+12)); }
-	public void set_display(long v) { log.finest(""); Native.putLong(pData+12, v); }
-	public long get_parent() { log.finest("");return (Native.getLong(pData+16)); }
-	public void set_parent(long v) { log.finest(""); Native.putLong(pData+16, v); }
-	public long get_window() { log.finest("");return (Native.getLong(pData+20)); }
-	public void set_window(long v) { log.finest(""); Native.putLong(pData+20, v); }
-	public int get_place() { log.finest("");return (Native.getInt(pData+24)); }
-	public void set_place(int v) { log.finest(""); Native.putInt(pData+24, v); }
+	public long get_serial() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)))); }
+	public void set_serial(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)), v); }
+	public boolean get_send_event() { log.finest("");return (Native.getBool(pData+((XlibWrapper.dataModel == 32)?(8):(16)))); }
+	public void set_send_event(boolean v) { log.finest(""); Native.putBool(pData+((XlibWrapper.dataModel == 32)?(8):(16)), v); }
+	public long get_display() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(12):(24)))); }
+	public void set_display(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(12):(24)), v); }
+	public long get_parent() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(16):(32)))); }
+	public void set_parent(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(16):(32)), v); }
+	public long get_window() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(20):(40)))); }
+	public void set_window(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(20):(40)), v); }
+	public int get_place() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(24):(48)))); }
+	public void set_place(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(24):(48)), v); }
 
 
 	String getName() {
--- a/generated/sun/awt/X11/XClassHint.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/sun/awt/X11/XClassHint.java	Wed May 18 15:46:37 2011 +0100
@@ -8,7 +8,7 @@
 public class XClassHint extends XWrapperBase { 
 	private Unsafe unsafe = XlibWrapper.unsafe; 
 	private final boolean should_free_memory;
-	public static int getSize() { return 8; }
+	public static int getSize() { return ((XlibWrapper.dataModel == 32)?(8):(16)); }
 	public int getDataSize() { return getSize(); }
 
 	long pData;
@@ -16,14 +16,14 @@
 	public long getPData() { return pData; }
 
 
-	XClassHint(long addr) {
+	public XClassHint(long addr) {
 		log.finest("Creating");
 		pData=addr;
 		should_free_memory = false;
 	}
 
 
-	XClassHint() {
+	public XClassHint() {
 		log.finest("Creating");
 		pData = unsafe.allocateMemory(getSize());
 		should_free_memory = true;
@@ -40,9 +40,9 @@
 	public long get_res_name(int index) { log.finest(""); return Native.getLong(pData+0)+index*Native.getLongSize(); }
 	public long get_res_name() { log.finest("");return Native.getLong(pData+0); }
 	public void set_res_name(long v) { log.finest(""); Native.putLong(pData + 0, v); }
-	public long get_res_class(int index) { log.finest(""); return Native.getLong(pData+4)+index*Native.getLongSize(); }
-	public long get_res_class() { log.finest("");return Native.getLong(pData+4); }
-	public void set_res_class(long v) { log.finest(""); Native.putLong(pData + 4, v); }
+	public long get_res_class(int index) { log.finest(""); return Native.getLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)))+index*Native.getLongSize(); }
+	public long get_res_class() { log.finest("");return Native.getLong(pData+((XlibWrapper.dataModel == 32)?(4):(8))); }
+	public void set_res_class(long v) { log.finest(""); Native.putLong(pData + ((XlibWrapper.dataModel == 32)?(4):(8)), v); }
 
 
 	String getName() {
--- a/generated/sun/awt/X11/XClientMessageEvent.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/sun/awt/X11/XClientMessageEvent.java	Wed May 18 15:46:37 2011 +0100
@@ -8,7 +8,7 @@
 public class XClientMessageEvent extends XWrapperBase { 
 	private Unsafe unsafe = XlibWrapper.unsafe; 
 	private final boolean should_free_memory;
-	public static int getSize() { return 48; }
+	public static int getSize() { return ((XlibWrapper.dataModel == 32)?(48):(96)); }
 	public int getDataSize() { return getSize(); }
 
 	long pData;
@@ -16,14 +16,14 @@
 	public long getPData() { return pData; }
 
 
-	XClientMessageEvent(long addr) {
+	public XClientMessageEvent(long addr) {
 		log.finest("Creating");
 		pData=addr;
 		should_free_memory = false;
 	}
 
 
-	XClientMessageEvent() {
+	public XClientMessageEvent() {
 		log.finest("Creating");
 		pData = unsafe.allocateMemory(getSize());
 		should_free_memory = true;
@@ -39,21 +39,21 @@
 		}
 	public int get_type() { log.finest("");return (Native.getInt(pData+0)); }
 	public void set_type(int v) { log.finest(""); Native.putInt(pData+0, v); }
-	public long get_serial() { log.finest("");return (Native.getLong(pData+4)); }
-	public void set_serial(long v) { log.finest(""); Native.putLong(pData+4, v); }
-	public boolean get_send_event() { log.finest("");return (Native.getBool(pData+8)); }
-	public void set_send_event(boolean v) { log.finest(""); Native.putBool(pData+8, v); }
-	public long get_display() { log.finest("");return (Native.getLong(pData+12)); }
-	public void set_display(long v) { log.finest(""); Native.putLong(pData+12, v); }
-	public long get_window() { log.finest("");return (Native.getLong(pData+16)); }
-	public void set_window(long v) { log.finest(""); Native.putLong(pData+16, v); }
-	public long get_message_type() { log.finest("");return (Native.getLong(pData+20)); }
-	public void set_message_type(long v) { log.finest(""); Native.putLong(pData+20, v); }
-	public int get_format() { log.finest("");return (Native.getInt(pData+24)); }
-	public void set_format(int v) { log.finest(""); Native.putInt(pData+24, v); }
-	public long get_data(int index) { log.finest("");return Native.getLong(pData + 28+index*Native.getLongSize()); }
-	public void set_data(int index, long v) { log.finest(""); Native.putLong(pData+28 + index*Native.getLongSize(), v); }
-	public long get_data() { log.finest("");return pData+28; }
+	public long get_serial() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)))); }
+	public void set_serial(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)), v); }
+	public boolean get_send_event() { log.finest("");return (Native.getBool(pData+((XlibWrapper.dataModel == 32)?(8):(16)))); }
+	public void set_send_event(boolean v) { log.finest(""); Native.putBool(pData+((XlibWrapper.dataModel == 32)?(8):(16)), v); }
+	public long get_display() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(12):(24)))); }
+	public void set_display(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(12):(24)), v); }
+	public long get_window() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(16):(32)))); }
+	public void set_window(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(16):(32)), v); }
+	public long get_message_type() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(20):(40)))); }
+	public void set_message_type(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(20):(40)), v); }
+	public int get_format() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(24):(48)))); }
+	public void set_format(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(24):(48)), v); }
+	public long get_data(int index) { log.finest("");return Native.getLong(pData + ((XlibWrapper.dataModel == 32)?(28):(56))+index*Native.getLongSize()); }
+	public void set_data(int index, long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(28):(56)) + index*Native.getLongSize(), v); }
+	public long get_data() { log.finest("");return pData+((XlibWrapper.dataModel == 32)?(28):(56)); }
 
 
 	String getName() {
--- a/generated/sun/awt/X11/XColor.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/sun/awt/X11/XColor.java	Wed May 18 15:46:37 2011 +0100
@@ -8,7 +8,7 @@
 public class XColor extends XWrapperBase { 
 	private Unsafe unsafe = XlibWrapper.unsafe; 
 	private final boolean should_free_memory;
-	public static int getSize() { return 12; }
+	public static int getSize() { return ((XlibWrapper.dataModel == 32)?(12):(16)); }
 	public int getDataSize() { return getSize(); }
 
 	long pData;
@@ -16,14 +16,14 @@
 	public long getPData() { return pData; }
 
 
-	XColor(long addr) {
+	public XColor(long addr) {
 		log.finest("Creating");
 		pData=addr;
 		should_free_memory = false;
 	}
 
 
-	XColor() {
+	public XColor() {
 		log.finest("Creating");
 		pData = unsafe.allocateMemory(getSize());
 		should_free_memory = true;
@@ -39,16 +39,16 @@
 		}
 	public long get_pixel() { log.finest("");return (Native.getLong(pData+0)); }
 	public void set_pixel(long v) { log.finest(""); Native.putLong(pData+0, v); }
-	public short get_red() { log.finest("");return (Native.getShort(pData+4)); }
-	public void set_red(short v) { log.finest(""); Native.putShort(pData+4, v); }
-	public short get_green() { log.finest("");return (Native.getShort(pData+6)); }
-	public void set_green(short v) { log.finest(""); Native.putShort(pData+6, v); }
-	public short get_blue() { log.finest("");return (Native.getShort(pData+8)); }
-	public void set_blue(short v) { log.finest(""); Native.putShort(pData+8, v); }
-	public byte get_flags() { log.finest("");return (Native.getByte(pData+10)); }
-	public void set_flags(byte v) { log.finest(""); Native.putByte(pData+10, v); }
-	public byte get_pad() { log.finest("");return (Native.getByte(pData+11)); }
-	public void set_pad(byte v) { log.finest(""); Native.putByte(pData+11, v); }
+	public short get_red() { log.finest("");return (Native.getShort(pData+((XlibWrapper.dataModel == 32)?(4):(8)))); }
+	public void set_red(short v) { log.finest(""); Native.putShort(pData+((XlibWrapper.dataModel == 32)?(4):(8)), v); }
+	public short get_green() { log.finest("");return (Native.getShort(pData+((XlibWrapper.dataModel == 32)?(6):(10)))); }
+	public void set_green(short v) { log.finest(""); Native.putShort(pData+((XlibWrapper.dataModel == 32)?(6):(10)), v); }
+	public short get_blue() { log.finest("");return (Native.getShort(pData+((XlibWrapper.dataModel == 32)?(8):(12)))); }
+	public void set_blue(short v) { log.finest(""); Native.putShort(pData+((XlibWrapper.dataModel == 32)?(8):(12)), v); }
+	public byte get_flags() { log.finest("");return (Native.getByte(pData+((XlibWrapper.dataModel == 32)?(10):(14)))); }
+	public void set_flags(byte v) { log.finest(""); Native.putByte(pData+((XlibWrapper.dataModel == 32)?(10):(14)), v); }
+	public byte get_pad() { log.finest("");return (Native.getByte(pData+((XlibWrapper.dataModel == 32)?(11):(15)))); }
+	public void set_pad(byte v) { log.finest(""); Native.putByte(pData+((XlibWrapper.dataModel == 32)?(11):(15)), v); }
 
 
 	String getName() {
--- a/generated/sun/awt/X11/XColormapEvent.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/sun/awt/X11/XColormapEvent.java	Wed May 18 15:46:37 2011 +0100
@@ -8,7 +8,7 @@
 public class XColormapEvent extends XWrapperBase { 
 	private Unsafe unsafe = XlibWrapper.unsafe; 
 	private final boolean should_free_memory;
-	public static int getSize() { return 32; }
+	public static int getSize() { return ((XlibWrapper.dataModel == 32)?(32):(56)); }
 	public int getDataSize() { return getSize(); }
 
 	long pData;
@@ -16,14 +16,14 @@
 	public long getPData() { return pData; }
 
 
-	XColormapEvent(long addr) {
+	public XColormapEvent(long addr) {
 		log.finest("Creating");
 		pData=addr;
 		should_free_memory = false;
 	}
 
 
-	XColormapEvent() {
+	public XColormapEvent() {
 		log.finest("Creating");
 		pData = unsafe.allocateMemory(getSize());
 		should_free_memory = true;
@@ -39,20 +39,20 @@
 		}
 	public int get_type() { log.finest("");return (Native.getInt(pData+0)); }
 	public void set_type(int v) { log.finest(""); Native.putInt(pData+0, v); }
-	public long get_serial() { log.finest("");return (Native.getLong(pData+4)); }
-	public void set_serial(long v) { log.finest(""); Native.putLong(pData+4, v); }
-	public boolean get_send_event() { log.finest("");return (Native.getBool(pData+8)); }
-	public void set_send_event(boolean v) { log.finest(""); Native.putBool(pData+8, v); }
-	public long get_display() { log.finest("");return (Native.getLong(pData+12)); }
-	public void set_display(long v) { log.finest(""); Native.putLong(pData+12, v); }
-	public long get_window() { log.finest("");return (Native.getLong(pData+16)); }
-	public void set_window(long v) { log.finest(""); Native.putLong(pData+16, v); }
-	public long get_colormap() { log.finest("");return (Native.getLong(pData+20)); }
-	public void set_colormap(long v) { log.finest(""); Native.putLong(pData+20, v); }
-	public boolean get_new() { log.finest("");return (Native.getBool(pData+24)); }
-	public void set_new(boolean v) { log.finest(""); Native.putBool(pData+24, v); }
-	public int get_state() { log.finest("");return (Native.getInt(pData+28)); }
-	public void set_state(int v) { log.finest(""); Native.putInt(pData+28, v); }
+	public long get_serial() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)))); }
+	public void set_serial(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)), v); }
+	public boolean get_send_event() { log.finest("");return (Native.getBool(pData+((XlibWrapper.dataModel == 32)?(8):(16)))); }
+	public void set_send_event(boolean v) { log.finest(""); Native.putBool(pData+((XlibWrapper.dataModel == 32)?(8):(16)), v); }
+	public long get_display() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(12):(24)))); }
+	public void set_display(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(12):(24)), v); }
+	public long get_window() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(16):(32)))); }
+	public void set_window(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(16):(32)), v); }
+	public long get_colormap() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(20):(40)))); }
+	public void set_colormap(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(20):(40)), v); }
+	public boolean get_new() { log.finest("");return (Native.getBool(pData+((XlibWrapper.dataModel == 32)?(24):(48)))); }
+	public void set_new(boolean v) { log.finest(""); Native.putBool(pData+((XlibWrapper.dataModel == 32)?(24):(48)), v); }
+	public int get_state() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(28):(52)))); }
+	public void set_state(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(28):(52)), v); }
 
 
 	String getName() {
--- a/generated/sun/awt/X11/XComposeStatus.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/sun/awt/X11/XComposeStatus.java	Wed May 18 15:46:37 2011 +0100
@@ -8,7 +8,7 @@
 public class XComposeStatus extends XWrapperBase { 
 	private Unsafe unsafe = XlibWrapper.unsafe; 
 	private final boolean should_free_memory;
-	public static int getSize() { return 8; }
+	public static int getSize() { return ((XlibWrapper.dataModel == 32)?(8):(16)); }
 	public int getDataSize() { return getSize(); }
 
 	long pData;
@@ -16,14 +16,14 @@
 	public long getPData() { return pData; }
 
 
-	XComposeStatus(long addr) {
+	public XComposeStatus(long addr) {
 		log.finest("Creating");
 		pData=addr;
 		should_free_memory = false;
 	}
 
 
-	XComposeStatus() {
+	public XComposeStatus() {
 		log.finest("Creating");
 		pData = unsafe.allocateMemory(getSize());
 		should_free_memory = true;
@@ -40,8 +40,8 @@
 	public long get_compose_ptr(int index) { log.finest(""); return Native.getLong(pData+0)+index*Native.getLongSize(); }
 	public long get_compose_ptr() { log.finest("");return Native.getLong(pData+0); }
 	public void set_compose_ptr(long v) { log.finest(""); Native.putLong(pData + 0, v); }
-	public int get_chars_matched() { log.finest("");return (Native.getInt(pData+4)); }
-	public void set_chars_matched(int v) { log.finest(""); Native.putInt(pData+4, v); }
+	public int get_chars_matched() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(4):(8)))); }
+	public void set_chars_matched(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(4):(8)), v); }
 
 
 	String getName() {
--- a/generated/sun/awt/X11/XConfigureEvent.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/sun/awt/X11/XConfigureEvent.java	Wed May 18 15:46:37 2011 +0100
@@ -8,7 +8,7 @@
 public class XConfigureEvent extends XWrapperBase { 
 	private Unsafe unsafe = XlibWrapper.unsafe; 
 	private final boolean should_free_memory;
-	public static int getSize() { return 52; }
+	public static int getSize() { return ((XlibWrapper.dataModel == 32)?(52):(88)); }
 	public int getDataSize() { return getSize(); }
 
 	long pData;
@@ -16,14 +16,14 @@
 	public long getPData() { return pData; }
 
 
-	XConfigureEvent(long addr) {
+	public XConfigureEvent(long addr) {
 		log.finest("Creating");
 		pData=addr;
 		should_free_memory = false;
 	}
 
 
-	XConfigureEvent() {
+	public XConfigureEvent() {
 		log.finest("Creating");
 		pData = unsafe.allocateMemory(getSize());
 		should_free_memory = true;
@@ -39,30 +39,30 @@
 		}
 	public int get_type() { log.finest("");return (Native.getInt(pData+0)); }
 	public void set_type(int v) { log.finest(""); Native.putInt(pData+0, v); }
-	public long get_serial() { log.finest("");return (Native.getLong(pData+4)); }
-	public void set_serial(long v) { log.finest(""); Native.putLong(pData+4, v); }
-	public boolean get_send_event() { log.finest("");return (Native.getBool(pData+8)); }
-	public void set_send_event(boolean v) { log.finest(""); Native.putBool(pData+8, v); }
-	public long get_display() { log.finest("");return (Native.getLong(pData+12)); }
-	public void set_display(long v) { log.finest(""); Native.putLong(pData+12, v); }
-	public long get_event() { log.finest("");return (Native.getLong(pData+16)); }
-	public void set_event(long v) { log.finest(""); Native.putLong(pData+16, v); }
-	public long get_window() { log.finest("");return (Native.getLong(pData+20)); }
-	public void set_window(long v) { log.finest(""); Native.putLong(pData+20, v); }
-	public int get_x() { log.finest("");return (Native.getInt(pData+24)); }
-	public void set_x(int v) { log.finest(""); Native.putInt(pData+24, v); }
-	public int get_y() { log.finest("");return (Native.getInt(pData+28)); }
-	public void set_y(int v) { log.finest(""); Native.putInt(pData+28, v); }
-	public int get_width() { log.finest("");return (Native.getInt(pData+32)); }
-	public void set_width(int v) { log.finest(""); Native.putInt(pData+32, v); }
-	public int get_height() { log.finest("");return (Native.getInt(pData+36)); }
-	public void set_height(int v) { log.finest(""); Native.putInt(pData+36, v); }
-	public int get_border_width() { log.finest("");return (Native.getInt(pData+40)); }
-	public void set_border_width(int v) { log.finest(""); Native.putInt(pData+40, v); }
-	public long get_above() { log.finest("");return (Native.getLong(pData+44)); }
-	public void set_above(long v) { log.finest(""); Native.putLong(pData+44, v); }
-	public boolean get_override_redirect() { log.finest("");return (Native.getBool(pData+48)); }
-	public void set_override_redirect(boolean v) { log.finest(""); Native.putBool(pData+48, v); }
+	public long get_serial() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)))); }
+	public void set_serial(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)), v); }
+	public boolean get_send_event() { log.finest("");return (Native.getBool(pData+((XlibWrapper.dataModel == 32)?(8):(16)))); }
+	public void set_send_event(boolean v) { log.finest(""); Native.putBool(pData+((XlibWrapper.dataModel == 32)?(8):(16)), v); }
+	public long get_display() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(12):(24)))); }
+	public void set_display(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(12):(24)), v); }
+	public long get_event() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(16):(32)))); }
+	public void set_event(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(16):(32)), v); }
+	public long get_window() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(20):(40)))); }
+	public void set_window(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(20):(40)), v); }
+	public int get_x() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(24):(48)))); }
+	public void set_x(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(24):(48)), v); }
+	public int get_y() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(28):(52)))); }
+	public void set_y(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(28):(52)), v); }
+	public int get_width() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(32):(56)))); }
+	public void set_width(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(32):(56)), v); }
+	public int get_height() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(36):(60)))); }
+	public void set_height(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(36):(60)), v); }
+	public int get_border_width() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(40):(64)))); }
+	public void set_border_width(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(40):(64)), v); }
+	public long get_above() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(44):(72)))); }
+	public void set_above(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(44):(72)), v); }
+	public boolean get_override_redirect() { log.finest("");return (Native.getBool(pData+((XlibWrapper.dataModel == 32)?(48):(80)))); }
+	public void set_override_redirect(boolean v) { log.finest(""); Native.putBool(pData+((XlibWrapper.dataModel == 32)?(48):(80)), v); }
 
 
 	String getName() {
--- a/generated/sun/awt/X11/XConfigureRequestEvent.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/sun/awt/X11/XConfigureRequestEvent.java	Wed May 18 15:46:37 2011 +0100
@@ -8,7 +8,7 @@
 public class XConfigureRequestEvent extends XWrapperBase { 
 	private Unsafe unsafe = XlibWrapper.unsafe; 
 	private final boolean should_free_memory;
-	public static int getSize() { return 56; }
+	public static int getSize() { return ((XlibWrapper.dataModel == 32)?(56):(96)); }
 	public int getDataSize() { return getSize(); }
 
 	long pData;
@@ -16,14 +16,14 @@
 	public long getPData() { return pData; }
 
 
-	XConfigureRequestEvent(long addr) {
+	public XConfigureRequestEvent(long addr) {
 		log.finest("Creating");
 		pData=addr;
 		should_free_memory = false;
 	}
 
 
-	XConfigureRequestEvent() {
+	public XConfigureRequestEvent() {
 		log.finest("Creating");
 		pData = unsafe.allocateMemory(getSize());
 		should_free_memory = true;
@@ -39,32 +39,32 @@
 		}
 	public int get_type() { log.finest("");return (Native.getInt(pData+0)); }
 	public void set_type(int v) { log.finest(""); Native.putInt(pData+0, v); }
-	public long get_serial() { log.finest("");return (Native.getLong(pData+4)); }
-	public void set_serial(long v) { log.finest(""); Native.putLong(pData+4, v); }
-	public boolean get_send_event() { log.finest("");return (Native.getBool(pData+8)); }
-	public void set_send_event(boolean v) { log.finest(""); Native.putBool(pData+8, v); }
-	public long get_display() { log.finest("");return (Native.getLong(pData+12)); }
-	public void set_display(long v) { log.finest(""); Native.putLong(pData+12, v); }
-	public long get_parent() { log.finest("");return (Native.getLong(pData+16)); }
-	public void set_parent(long v) { log.finest(""); Native.putLong(pData+16, v); }
-	public long get_window() { log.finest("");return (Native.getLong(pData+20)); }
-	public void set_window(long v) { log.finest(""); Native.putLong(pData+20, v); }
-	public int get_x() { log.finest("");return (Native.getInt(pData+24)); }
-	public void set_x(int v) { log.finest(""); Native.putInt(pData+24, v); }
-	public int get_y() { log.finest("");return (Native.getInt(pData+28)); }
-	public void set_y(int v) { log.finest(""); Native.putInt(pData+28, v); }
-	public int get_width() { log.finest("");return (Native.getInt(pData+32)); }
-	public void set_width(int v) { log.finest(""); Native.putInt(pData+32, v); }
-	public int get_height() { log.finest("");return (Native.getInt(pData+36)); }
-	public void set_height(int v) { log.finest(""); Native.putInt(pData+36, v); }
-	public int get_border_width() { log.finest("");return (Native.getInt(pData+40)); }
-	public void set_border_width(int v) { log.finest(""); Native.putInt(pData+40, v); }
-	public long get_above() { log.finest("");return (Native.getLong(pData+44)); }
-	public void set_above(long v) { log.finest(""); Native.putLong(pData+44, v); }
-	public int get_detail() { log.finest("");return (Native.getInt(pData+48)); }
-	public void set_detail(int v) { log.finest(""); Native.putInt(pData+48, v); }
-	public long get_value_mask() { log.finest("");return (Native.getLong(pData+52)); }
-	public void set_value_mask(long v) { log.finest(""); Native.putLong(pData+52, v); }
+	public long get_serial() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)))); }
+	public void set_serial(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)), v); }
+	public boolean get_send_event() { log.finest("");return (Native.getBool(pData+((XlibWrapper.dataModel == 32)?(8):(16)))); }
+	public void set_send_event(boolean v) { log.finest(""); Native.putBool(pData+((XlibWrapper.dataModel == 32)?(8):(16)), v); }
+	public long get_display() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(12):(24)))); }
+	public void set_display(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(12):(24)), v); }
+	public long get_parent() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(16):(32)))); }
+	public void set_parent(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(16):(32)), v); }
+	public long get_window() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(20):(40)))); }
+	public void set_window(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(20):(40)), v); }
+	public int get_x() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(24):(48)))); }
+	public void set_x(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(24):(48)), v); }
+	public int get_y() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(28):(52)))); }
+	public void set_y(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(28):(52)), v); }
+	public int get_width() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(32):(56)))); }
+	public void set_width(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(32):(56)), v); }
+	public int get_height() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(36):(60)))); }
+	public void set_height(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(36):(60)), v); }
+	public int get_border_width() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(40):(64)))); }
+	public void set_border_width(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(40):(64)), v); }
+	public long get_above() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(44):(72)))); }
+	public void set_above(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(44):(72)), v); }
+	public int get_detail() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(48):(80)))); }
+	public void set_detail(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(48):(80)), v); }
+	public long get_value_mask() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(52):(88)))); }
+	public void set_value_mask(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(52):(88)), v); }
 
 
 	String getName() {
--- a/generated/sun/awt/X11/XCreateWindowEvent.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/sun/awt/X11/XCreateWindowEvent.java	Wed May 18 15:46:37 2011 +0100
@@ -8,7 +8,7 @@
 public class XCreateWindowEvent extends XWrapperBase { 
 	private Unsafe unsafe = XlibWrapper.unsafe; 
 	private final boolean should_free_memory;
-	public static int getSize() { return 48; }
+	public static int getSize() { return ((XlibWrapper.dataModel == 32)?(48):(72)); }
 	public int getDataSize() { return getSize(); }
 
 	long pData;
@@ -16,14 +16,14 @@
 	public long getPData() { return pData; }
 
 
-	XCreateWindowEvent(long addr) {
+	public XCreateWindowEvent(long addr) {
 		log.finest("Creating");
 		pData=addr;
 		should_free_memory = false;
 	}
 
 
-	XCreateWindowEvent() {
+	public XCreateWindowEvent() {
 		log.finest("Creating");
 		pData = unsafe.allocateMemory(getSize());
 		should_free_memory = true;
@@ -39,28 +39,28 @@
 		}
 	public int get_type() { log.finest("");return (Native.getInt(pData+0)); }
 	public void set_type(int v) { log.finest(""); Native.putInt(pData+0, v); }
-	public long get_serial() { log.finest("");return (Native.getLong(pData+4)); }
-	public void set_serial(long v) { log.finest(""); Native.putLong(pData+4, v); }
-	public boolean get_send_event() { log.finest("");return (Native.getBool(pData+8)); }
-	public void set_send_event(boolean v) { log.finest(""); Native.putBool(pData+8, v); }
-	public long get_display() { log.finest("");return (Native.getLong(pData+12)); }
-	public void set_display(long v) { log.finest(""); Native.putLong(pData+12, v); }
-	public long get_parent() { log.finest("");return (Native.getLong(pData+16)); }
-	public void set_parent(long v) { log.finest(""); Native.putLong(pData+16, v); }
-	public long get_window() { log.finest("");return (Native.getLong(pData+20)); }
-	public void set_window(long v) { log.finest(""); Native.putLong(pData+20, v); }
-	public int get_x() { log.finest("");return (Native.getInt(pData+24)); }
-	public void set_x(int v) { log.finest(""); Native.putInt(pData+24, v); }
-	public int get_y() { log.finest("");return (Native.getInt(pData+28)); }
-	public void set_y(int v) { log.finest(""); Native.putInt(pData+28, v); }
-	public int get_width() { log.finest("");return (Native.getInt(pData+32)); }
-	public void set_width(int v) { log.finest(""); Native.putInt(pData+32, v); }
-	public int get_height() { log.finest("");return (Native.getInt(pData+36)); }
-	public void set_height(int v) { log.finest(""); Native.putInt(pData+36, v); }
-	public int get_border_width() { log.finest("");return (Native.getInt(pData+40)); }
-	public void set_border_width(int v) { log.finest(""); Native.putInt(pData+40, v); }
-	public boolean get_override_redirect() { log.finest("");return (Native.getBool(pData+44)); }
-	public void set_override_redirect(boolean v) { log.finest(""); Native.putBool(pData+44, v); }
+	public long get_serial() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)))); }
+	public void set_serial(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)), v); }
+	public boolean get_send_event() { log.finest("");return (Native.getBool(pData+((XlibWrapper.dataModel == 32)?(8):(16)))); }
+	public void set_send_event(boolean v) { log.finest(""); Native.putBool(pData+((XlibWrapper.dataModel == 32)?(8):(16)), v); }
+	public long get_display() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(12):(24)))); }
+	public void set_display(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(12):(24)), v); }
+	public long get_parent() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(16):(32)))); }
+	public void set_parent(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(16):(32)), v); }
+	public long get_window() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(20):(40)))); }
+	public void set_window(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(20):(40)), v); }
+	public int get_x() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(24):(48)))); }
+	public void set_x(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(24):(48)), v); }
+	public int get_y() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(28):(52)))); }
+	public void set_y(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(28):(52)), v); }
+	public int get_width() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(32):(56)))); }
+	public void set_width(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(32):(56)), v); }
+	public int get_height() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(36):(60)))); }
+	public void set_height(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(36):(60)), v); }
+	public int get_border_width() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(40):(64)))); }
+	public void set_border_width(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(40):(64)), v); }
+	public boolean get_override_redirect() { log.finest("");return (Native.getBool(pData+((XlibWrapper.dataModel == 32)?(44):(68)))); }
+	public void set_override_redirect(boolean v) { log.finest(""); Native.putBool(pData+((XlibWrapper.dataModel == 32)?(44):(68)), v); }
 
 
 	String getName() {
--- a/generated/sun/awt/X11/XCrossingEvent.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/sun/awt/X11/XCrossingEvent.java	Wed May 18 15:46:37 2011 +0100
@@ -8,7 +8,7 @@
 public class XCrossingEvent extends XWrapperBase { 
 	private Unsafe unsafe = XlibWrapper.unsafe; 
 	private final boolean should_free_memory;
-	public static int getSize() { return 68; }
+	public static int getSize() { return ((XlibWrapper.dataModel == 32)?(68):(104)); }
 	public int getDataSize() { return getSize(); }
 
 	long pData;
@@ -16,14 +16,14 @@
 	public long getPData() { return pData; }
 
 
-	XCrossingEvent(long addr) {
+	public XCrossingEvent(long addr) {
 		log.finest("Creating");
 		pData=addr;
 		should_free_memory = false;
 	}
 
 
-	XCrossingEvent() {
+	public XCrossingEvent() {
 		log.finest("Creating");
 		pData = unsafe.allocateMemory(getSize());
 		should_free_memory = true;
@@ -39,38 +39,38 @@
 		}
 	public int get_type() { log.finest("");return (Native.getInt(pData+0)); }
 	public void set_type(int v) { log.finest(""); Native.putInt(pData+0, v); }
-	public long get_serial() { log.finest("");return (Native.getLong(pData+4)); }
-	public void set_serial(long v) { log.finest(""); Native.putLong(pData+4, v); }
-	public boolean get_send_event() { log.finest("");return (Native.getBool(pData+8)); }
-	public void set_send_event(boolean v) { log.finest(""); Native.putBool(pData+8, v); }
-	public long get_display() { log.finest("");return (Native.getLong(pData+12)); }
-	public void set_display(long v) { log.finest(""); Native.putLong(pData+12, v); }
-	public long get_window() { log.finest("");return (Native.getLong(pData+16)); }
-	public void set_window(long v) { log.finest(""); Native.putLong(pData+16, v); }
-	public long get_root() { log.finest("");return (Native.getLong(pData+20)); }
-	public void set_root(long v) { log.finest(""); Native.putLong(pData+20, v); }
-	public long get_subwindow() { log.finest("");return (Native.getLong(pData+24)); }
-	public void set_subwindow(long v) { log.finest(""); Native.putLong(pData+24, v); }
-	public long get_time() { log.finest("");return (Native.getULong(pData+28)); }
-	public void set_time(long v) { log.finest(""); Native.putULong(pData+28, v); }
-	public int get_x() { log.finest("");return (Native.getInt(pData+32)); }
-	public void set_x(int v) { log.finest(""); Native.putInt(pData+32, v); }
-	public int get_y() { log.finest("");return (Native.getInt(pData+36)); }
-	public void set_y(int v) { log.finest(""); Native.putInt(pData+36, v); }
-	public int get_x_root() { log.finest("");return (Native.getInt(pData+40)); }
-	public void set_x_root(int v) { log.finest(""); Native.putInt(pData+40, v); }
-	public int get_y_root() { log.finest("");return (Native.getInt(pData+44)); }
-	public void set_y_root(int v) { log.finest(""); Native.putInt(pData+44, v); }
-	public int get_mode() { log.finest("");return (Native.getInt(pData+48)); }
-	public void set_mode(int v) { log.finest(""); Native.putInt(pData+48, v); }
-	public int get_detail() { log.finest("");return (Native.getInt(pData+52)); }
-	public void set_detail(int v) { log.finest(""); Native.putInt(pData+52, v); }
-	public boolean get_same_screen() { log.finest("");return (Native.getBool(pData+56)); }
-	public void set_same_screen(boolean v) { log.finest(""); Native.putBool(pData+56, v); }
-	public boolean get_focus() { log.finest("");return (Native.getBool(pData+60)); }
-	public void set_focus(boolean v) { log.finest(""); Native.putBool(pData+60, v); }
-	public int get_state() { log.finest("");return (Native.getInt(pData+64)); }
-	public void set_state(int v) { log.finest(""); Native.putInt(pData+64, v); }
+	public long get_serial() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)))); }
+	public void set_serial(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)), v); }
+	public boolean get_send_event() { log.finest("");return (Native.getBool(pData+((XlibWrapper.dataModel == 32)?(8):(16)))); }
+	public void set_send_event(boolean v) { log.finest(""); Native.putBool(pData+((XlibWrapper.dataModel == 32)?(8):(16)), v); }
+	public long get_display() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(12):(24)))); }
+	public void set_display(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(12):(24)), v); }
+	public long get_window() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(16):(32)))); }
+	public void set_window(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(16):(32)), v); }
+	public long get_root() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(20):(40)))); }
+	public void set_root(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(20):(40)), v); }
+	public long get_subwindow() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(24):(48)))); }
+	public void set_subwindow(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(24):(48)), v); }
+	public long get_time() { log.finest("");return (Native.getULong(pData+((XlibWrapper.dataModel == 32)?(28):(56)))); }
+	public void set_time(long v) { log.finest(""); Native.putULong(pData+((XlibWrapper.dataModel == 32)?(28):(56)), v); }
+	public int get_x() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(32):(64)))); }
+	public void set_x(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(32):(64)), v); }
+	public int get_y() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(36):(68)))); }
+	public void set_y(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(36):(68)), v); }
+	public int get_x_root() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(40):(72)))); }
+	public void set_x_root(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(40):(72)), v); }
+	public int get_y_root() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(44):(76)))); }
+	public void set_y_root(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(44):(76)), v); }
+	public int get_mode() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(48):(80)))); }
+	public void set_mode(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(48):(80)), v); }
+	public int get_detail() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(52):(84)))); }
+	public void set_detail(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(52):(84)), v); }
+	public boolean get_same_screen() { log.finest("");return (Native.getBool(pData+((XlibWrapper.dataModel == 32)?(56):(88)))); }
+	public void set_same_screen(boolean v) { log.finest(""); Native.putBool(pData+((XlibWrapper.dataModel == 32)?(56):(88)), v); }
+	public boolean get_focus() { log.finest("");return (Native.getBool(pData+((XlibWrapper.dataModel == 32)?(60):(92)))); }
+	public void set_focus(boolean v) { log.finest(""); Native.putBool(pData+((XlibWrapper.dataModel == 32)?(60):(92)), v); }
+	public int get_state() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(64):(96)))); }
+	public void set_state(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(64):(96)), v); }
 
 
 	String getName() {
--- a/generated/sun/awt/X11/XDestroyWindowEvent.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/sun/awt/X11/XDestroyWindowEvent.java	Wed May 18 15:46:37 2011 +0100
@@ -8,7 +8,7 @@
 public class XDestroyWindowEvent extends XWrapperBase { 
 	private Unsafe unsafe = XlibWrapper.unsafe; 
 	private final boolean should_free_memory;
-	public static int getSize() { return 24; }
+	public static int getSize() { return ((XlibWrapper.dataModel == 32)?(24):(48)); }
 	public int getDataSize() { return getSize(); }
 
 	long pData;
@@ -16,14 +16,14 @@
 	public long getPData() { return pData; }
 
 
-	XDestroyWindowEvent(long addr) {
+	public XDestroyWindowEvent(long addr) {
 		log.finest("Creating");
 		pData=addr;
 		should_free_memory = false;
 	}
 
 
-	XDestroyWindowEvent() {
+	public XDestroyWindowEvent() {
 		log.finest("Creating");
 		pData = unsafe.allocateMemory(getSize());
 		should_free_memory = true;
@@ -39,16 +39,16 @@
 		}
 	public int get_type() { log.finest("");return (Native.getInt(pData+0)); }
 	public void set_type(int v) { log.finest(""); Native.putInt(pData+0, v); }
-	public long get_serial() { log.finest("");return (Native.getLong(pData+4)); }
-	public void set_serial(long v) { log.finest(""); Native.putLong(pData+4, v); }
-	public boolean get_send_event() { log.finest("");return (Native.getBool(pData+8)); }
-	public void set_send_event(boolean v) { log.finest(""); Native.putBool(pData+8, v); }
-	public long get_display() { log.finest("");return (Native.getLong(pData+12)); }
-	public void set_display(long v) { log.finest(""); Native.putLong(pData+12, v); }
-	public long get_event() { log.finest("");return (Native.getLong(pData+16)); }
-	public void set_event(long v) { log.finest(""); Native.putLong(pData+16, v); }
-	public long get_window() { log.finest("");return (Native.getLong(pData+20)); }
-	public void set_window(long v) { log.finest(""); Native.putLong(pData+20, v); }
+	public long get_serial() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)))); }
+	public void set_serial(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)), v); }
+	public boolean get_send_event() { log.finest("");return (Native.getBool(pData+((XlibWrapper.dataModel == 32)?(8):(16)))); }
+	public void set_send_event(boolean v) { log.finest(""); Native.putBool(pData+((XlibWrapper.dataModel == 32)?(8):(16)), v); }
+	public long get_display() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(12):(24)))); }
+	public void set_display(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(12):(24)), v); }
+	public long get_event() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(16):(32)))); }
+	public void set_event(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(16):(32)), v); }
+	public long get_window() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(20):(40)))); }
+	public void set_window(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(20):(40)), v); }
 
 
 	String getName() {
--- a/generated/sun/awt/X11/XErrorEvent.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/sun/awt/X11/XErrorEvent.java	Wed May 18 15:46:37 2011 +0100
@@ -8,7 +8,7 @@
 public class XErrorEvent extends XWrapperBase { 
 	private Unsafe unsafe = XlibWrapper.unsafe; 
 	private final boolean should_free_memory;
-	public static int getSize() { return 20; }
+	public static int getSize() { return ((XlibWrapper.dataModel == 32)?(20):(40)); }
 	public int getDataSize() { return getSize(); }
 
 	long pData;
@@ -16,14 +16,14 @@
 	public long getPData() { return pData; }
 
 
-	XErrorEvent(long addr) {
+	public XErrorEvent(long addr) {
 		log.finest("Creating");
 		pData=addr;
 		should_free_memory = false;
 	}
 
 
-	XErrorEvent() {
+	public XErrorEvent() {
 		log.finest("Creating");
 		pData = unsafe.allocateMemory(getSize());
 		should_free_memory = true;
@@ -39,18 +39,18 @@
 		}
 	public int get_type() { log.finest("");return (Native.getInt(pData+0)); }
 	public void set_type(int v) { log.finest(""); Native.putInt(pData+0, v); }
-	public long get_display() { log.finest("");return (Native.getLong(pData+4)); }
-	public void set_display(long v) { log.finest(""); Native.putLong(pData+4, v); }
-	public long get_resourceid() { log.finest("");return (Native.getLong(pData+8)); }
-	public void set_resourceid(long v) { log.finest(""); Native.putLong(pData+8, v); }
-	public long get_serial() { log.finest("");return (Native.getLong(pData+12)); }
-	public void set_serial(long v) { log.finest(""); Native.putLong(pData+12, v); }
-	public byte get_error_code() { log.finest("");return (Native.getByte(pData+16)); }
-	public void set_error_code(byte v) { log.finest(""); Native.putByte(pData+16, v); }
-	public byte get_request_code() { log.finest("");return (Native.getByte(pData+17)); }
-	public void set_request_code(byte v) { log.finest(""); Native.putByte(pData+17, v); }
-	public byte get_minor_code() { log.finest("");return (Native.getByte(pData+18)); }
-	public void set_minor_code(byte v) { log.finest(""); Native.putByte(pData+18, v); }
+	public long get_display() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)))); }
+	public void set_display(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)), v); }
+	public long get_resourceid() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(8):(16)))); }
+	public void set_resourceid(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(8):(16)), v); }
+	public long get_serial() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(12):(24)))); }
+	public void set_serial(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(12):(24)), v); }
+	public byte get_error_code() { log.finest("");return (Native.getByte(pData+((XlibWrapper.dataModel == 32)?(16):(32)))); }
+	public void set_error_code(byte v) { log.finest(""); Native.putByte(pData+((XlibWrapper.dataModel == 32)?(16):(32)), v); }
+	public byte get_request_code() { log.finest("");return (Native.getByte(pData+((XlibWrapper.dataModel == 32)?(17):(33)))); }
+	public void set_request_code(byte v) { log.finest(""); Native.putByte(pData+((XlibWrapper.dataModel == 32)?(17):(33)), v); }
+	public byte get_minor_code() { log.finest("");return (Native.getByte(pData+((XlibWrapper.dataModel == 32)?(18):(34)))); }
+	public void set_minor_code(byte v) { log.finest(""); Native.putByte(pData+((XlibWrapper.dataModel == 32)?(18):(34)), v); }
 
 
 	String getName() {
--- a/generated/sun/awt/X11/XEvent.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/sun/awt/X11/XEvent.java	Wed May 18 15:46:37 2011 +0100
@@ -8,7 +8,7 @@
 public class XEvent extends XWrapperBase { 
 	private Unsafe unsafe = XlibWrapper.unsafe; 
 	private final boolean should_free_memory;
-	public static int getSize() { return 96; }
+	public static int getSize() { return ((XlibWrapper.dataModel == 32)?(96):(192)); }
 	public int getDataSize() { return getSize(); }
 
 	long pData;
@@ -16,14 +16,14 @@
 	public long getPData() { return pData; }
 
 
-	XEvent(long addr) {
+	public XEvent(long addr) {
 		log.finest("Creating");
 		pData=addr;
 		should_free_memory = false;
 	}
 
 
-	XEvent() {
+	public XEvent() {
 		log.finest("Creating");
 		pData = unsafe.allocateMemory(getSize());
 		should_free_memory = true;
--- a/generated/sun/awt/X11/XExposeEvent.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/sun/awt/X11/XExposeEvent.java	Wed May 18 15:46:37 2011 +0100
@@ -8,7 +8,7 @@
 public class XExposeEvent extends XWrapperBase { 
 	private Unsafe unsafe = XlibWrapper.unsafe; 
 	private final boolean should_free_memory;
-	public static int getSize() { return 40; }
+	public static int getSize() { return ((XlibWrapper.dataModel == 32)?(40):(64)); }
 	public int getDataSize() { return getSize(); }
 
 	long pData;
@@ -16,14 +16,14 @@
 	public long getPData() { return pData; }
 
 
-	XExposeEvent(long addr) {
+	public XExposeEvent(long addr) {
 		log.finest("Creating");
 		pData=addr;
 		should_free_memory = false;
 	}
 
 
-	XExposeEvent() {
+	public XExposeEvent() {
 		log.finest("Creating");
 		pData = unsafe.allocateMemory(getSize());
 		should_free_memory = true;
@@ -39,24 +39,24 @@
 		}
 	public int get_type() { log.finest("");return (Native.getInt(pData+0)); }
 	public void set_type(int v) { log.finest(""); Native.putInt(pData+0, v); }
-	public long get_serial() { log.finest("");return (Native.getLong(pData+4)); }
-	public void set_serial(long v) { log.finest(""); Native.putLong(pData+4, v); }
-	public boolean get_send_event() { log.finest("");return (Native.getBool(pData+8)); }
-	public void set_send_event(boolean v) { log.finest(""); Native.putBool(pData+8, v); }
-	public long get_display() { log.finest("");return (Native.getLong(pData+12)); }
-	public void set_display(long v) { log.finest(""); Native.putLong(pData+12, v); }
-	public long get_window() { log.finest("");return (Native.getLong(pData+16)); }
-	public void set_window(long v) { log.finest(""); Native.putLong(pData+16, v); }
-	public int get_x() { log.finest("");return (Native.getInt(pData+20)); }
-	public void set_x(int v) { log.finest(""); Native.putInt(pData+20, v); }
-	public int get_y() { log.finest("");return (Native.getInt(pData+24)); }
-	public void set_y(int v) { log.finest(""); Native.putInt(pData+24, v); }
-	public int get_width() { log.finest("");return (Native.getInt(pData+28)); }
-	public void set_width(int v) { log.finest(""); Native.putInt(pData+28, v); }
-	public int get_height() { log.finest("");return (Native.getInt(pData+32)); }
-	public void set_height(int v) { log.finest(""); Native.putInt(pData+32, v); }
-	public int get_count() { log.finest("");return (Native.getInt(pData+36)); }
-	public void set_count(int v) { log.finest(""); Native.putInt(pData+36, v); }
+	public long get_serial() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)))); }
+	public void set_serial(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)), v); }
+	public boolean get_send_event() { log.finest("");return (Native.getBool(pData+((XlibWrapper.dataModel == 32)?(8):(16)))); }
+	public void set_send_event(boolean v) { log.finest(""); Native.putBool(pData+((XlibWrapper.dataModel == 32)?(8):(16)), v); }
+	public long get_display() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(12):(24)))); }
+	public void set_display(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(12):(24)), v); }
+	public long get_window() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(16):(32)))); }
+	public void set_window(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(16):(32)), v); }
+	public int get_x() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(20):(40)))); }
+	public void set_x(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(20):(40)), v); }
+	public int get_y() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(24):(44)))); }
+	public void set_y(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(24):(44)), v); }
+	public int get_width() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(28):(48)))); }
+	public void set_width(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(28):(48)), v); }
+	public int get_height() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(32):(52)))); }
+	public void set_height(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(32):(52)), v); }
+	public int get_count() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(36):(56)))); }
+	public void set_count(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(36):(56)), v); }
 
 
 	String getName() {
--- a/generated/sun/awt/X11/XExtCodes.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/sun/awt/X11/XExtCodes.java	Wed May 18 15:46:37 2011 +0100
@@ -16,14 +16,14 @@
 	public long getPData() { return pData; }
 
 
-	XExtCodes(long addr) {
+	public XExtCodes(long addr) {
 		log.finest("Creating");
 		pData=addr;
 		should_free_memory = false;
 	}
 
 
-	XExtCodes() {
+	public XExtCodes() {
 		log.finest("Creating");
 		pData = unsafe.allocateMemory(getSize());
 		should_free_memory = true;
--- a/generated/sun/awt/X11/XExtData.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/sun/awt/X11/XExtData.java	Wed May 18 15:46:37 2011 +0100
@@ -8,7 +8,7 @@
 public class XExtData extends XWrapperBase { 
 	private Unsafe unsafe = XlibWrapper.unsafe; 
 	private final boolean should_free_memory;
-	public static int getSize() { return 16; }
+	public static int getSize() { return ((XlibWrapper.dataModel == 32)?(16):(32)); }
 	public int getDataSize() { return getSize(); }
 
 	long pData;
@@ -16,14 +16,14 @@
 	public long getPData() { return pData; }
 
 
-	XExtData(long addr) {
+	public XExtData(long addr) {
 		log.finest("Creating");
 		pData=addr;
 		should_free_memory = false;
 	}
 
 
-	XExtData() {
+	public XExtData() {
 		log.finest("Creating");
 		pData = unsafe.allocateMemory(getSize());
 		should_free_memory = true;
@@ -39,15 +39,15 @@
 		}
 	public int get_number() { log.finest("");return (Native.getInt(pData+0)); }
 	public void set_number(int v) { log.finest(""); Native.putInt(pData+0, v); }
-	public XExtData get_next(int index) { log.finest(""); return (Native.getLong(pData+4) != 0)?(new XExtData(Native.getLong(pData+4)+index*16)):(null); }
-	public long get_next() { log.finest("");return Native.getLong(pData+4); }
-	public void set_next(long v) { log.finest(""); Native.putLong(pData + 4, v); }
-	public long get_free_private(int index) { log.finest(""); return Native.getLong(pData+8)+index*Native.getLongSize(); }
-	public long get_free_private() { log.finest("");return Native.getLong(pData+8); }
-	public void set_free_private(long v) { log.finest(""); Native.putLong(pData + 8, v); }
-	public long get_private_data(int index) { log.finest(""); return Native.getLong(pData+12)+index*Native.getLongSize(); }
-	public long get_private_data() { log.finest("");return Native.getLong(pData+12); }
-	public void set_private_data(long v) { log.finest(""); Native.putLong(pData + 12, v); }
+	public XExtData get_next(int index) { log.finest(""); return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(4):(8))) != 0)?(new XExtData(Native.getLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)))+index*((XlibWrapper.dataModel == 32)?(16):(32)))):(null); }
+	public long get_next() { log.finest("");return Native.getLong(pData+((XlibWrapper.dataModel == 32)?(4):(8))); }
+	public void set_next(long v) { log.finest(""); Native.putLong(pData + ((XlibWrapper.dataModel == 32)?(4):(8)), v); }
+	public long get_free_private(int index) { log.finest(""); return Native.getLong(pData+((XlibWrapper.dataModel == 32)?(8):(16)))+index*Native.getLongSize(); }
+	public long get_free_private() { log.finest("");return Native.getLong(pData+((XlibWrapper.dataModel == 32)?(8):(16))); }
+	public void set_free_private(long v) { log.finest(""); Native.putLong(pData + ((XlibWrapper.dataModel == 32)?(8):(16)), v); }
+	public long get_private_data(int index) { log.finest(""); return Native.getLong(pData+((XlibWrapper.dataModel == 32)?(12):(24)))+index*Native.getLongSize(); }
+	public long get_private_data() { log.finest("");return Native.getLong(pData+((XlibWrapper.dataModel == 32)?(12):(24))); }
+	public void set_private_data(long v) { log.finest(""); Native.putLong(pData + ((XlibWrapper.dataModel == 32)?(12):(24)), v); }
 
 
 	String getName() {
--- a/generated/sun/awt/X11/XFocusChangeEvent.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/sun/awt/X11/XFocusChangeEvent.java	Wed May 18 15:46:37 2011 +0100
@@ -8,7 +8,7 @@
 public class XFocusChangeEvent extends XWrapperBase { 
 	private Unsafe unsafe = XlibWrapper.unsafe; 
 	private final boolean should_free_memory;
-	public static int getSize() { return 28; }
+	public static int getSize() { return ((XlibWrapper.dataModel == 32)?(28):(48)); }
 	public int getDataSize() { return getSize(); }
 
 	long pData;
@@ -16,14 +16,14 @@
 	public long getPData() { return pData; }
 
 
-	XFocusChangeEvent(long addr) {
+	public XFocusChangeEvent(long addr) {
 		log.finest("Creating");
 		pData=addr;
 		should_free_memory = false;
 	}
 
 
-	XFocusChangeEvent() {
+	public XFocusChangeEvent() {
 		log.finest("Creating");
 		pData = unsafe.allocateMemory(getSize());
 		should_free_memory = true;
@@ -39,18 +39,18 @@
 		}
 	public int get_type() { log.finest("");return (Native.getInt(pData+0)); }
 	public void set_type(int v) { log.finest(""); Native.putInt(pData+0, v); }
-	public long get_serial() { log.finest("");return (Native.getLong(pData+4)); }
-	public void set_serial(long v) { log.finest(""); Native.putLong(pData+4, v); }
-	public boolean get_send_event() { log.finest("");return (Native.getBool(pData+8)); }
-	public void set_send_event(boolean v) { log.finest(""); Native.putBool(pData+8, v); }
-	public long get_display() { log.finest("");return (Native.getLong(pData+12)); }
-	public void set_display(long v) { log.finest(""); Native.putLong(pData+12, v); }
-	public long get_window() { log.finest("");return (Native.getLong(pData+16)); }
-	public void set_window(long v) { log.finest(""); Native.putLong(pData+16, v); }
-	public int get_mode() { log.finest("");return (Native.getInt(pData+20)); }
-	public void set_mode(int v) { log.finest(""); Native.putInt(pData+20, v); }
-	public int get_detail() { log.finest("");return (Native.getInt(pData+24)); }
-	public void set_detail(int v) { log.finest(""); Native.putInt(pData+24, v); }
+	public long get_serial() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)))); }
+	public void set_serial(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)), v); }
+	public boolean get_send_event() { log.finest("");return (Native.getBool(pData+((XlibWrapper.dataModel == 32)?(8):(16)))); }
+	public void set_send_event(boolean v) { log.finest(""); Native.putBool(pData+((XlibWrapper.dataModel == 32)?(8):(16)), v); }
+	public long get_display() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(12):(24)))); }
+	public void set_display(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(12):(24)), v); }
+	public long get_window() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(16):(32)))); }
+	public void set_window(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(16):(32)), v); }
+	public int get_mode() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(20):(40)))); }
+	public void set_mode(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(20):(40)), v); }
+	public int get_detail() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(24):(44)))); }
+	public void set_detail(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(24):(44)), v); }
 
 
 	String getName() {
--- a/generated/sun/awt/X11/XFontProp.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/sun/awt/X11/XFontProp.java	Wed May 18 15:46:37 2011 +0100
@@ -8,7 +8,7 @@
 public class XFontProp extends XWrapperBase { 
 	private Unsafe unsafe = XlibWrapper.unsafe; 
 	private final boolean should_free_memory;
-	public static int getSize() { return 8; }
+	public static int getSize() { return ((XlibWrapper.dataModel == 32)?(8):(16)); }
 	public int getDataSize() { return getSize(); }
 
 	long pData;
@@ -16,14 +16,14 @@
 	public long getPData() { return pData; }
 
 
-	XFontProp(long addr) {
+	public XFontProp(long addr) {
 		log.finest("Creating");
 		pData=addr;
 		should_free_memory = false;
 	}
 
 
-	XFontProp() {
+	public XFontProp() {
 		log.finest("Creating");
 		pData = unsafe.allocateMemory(getSize());
 		should_free_memory = true;
@@ -39,8 +39,8 @@
 		}
 	public long get_name() { log.finest("");return (Native.getLong(pData+0)); }
 	public void set_name(long v) { log.finest(""); Native.putLong(pData+0, v); }
-	public long get_card32() { log.finest("");return (Native.getLong(pData+4)); }
-	public void set_card32(long v) { log.finest(""); Native.putLong(pData+4, v); }
+	public long get_card32() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)))); }
+	public void set_card32(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)), v); }
 
 
 	String getName() {
--- a/generated/sun/awt/X11/XFontSetExtents.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/sun/awt/X11/XFontSetExtents.java	Wed May 18 15:46:37 2011 +0100
@@ -16,14 +16,14 @@
 	public long getPData() { return pData; }
 
 
-	XFontSetExtents(long addr) {
+	public XFontSetExtents(long addr) {
 		log.finest("Creating");
 		pData=addr;
 		should_free_memory = false;
 	}
 
 
-	XFontSetExtents() {
+	public XFontSetExtents() {
 		log.finest("Creating");
 		pData = unsafe.allocateMemory(getSize());
 		should_free_memory = true;
--- a/generated/sun/awt/X11/XFontStruct.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/sun/awt/X11/XFontStruct.java	Wed May 18 15:46:37 2011 +0100
@@ -8,7 +8,7 @@
 public class XFontStruct extends XWrapperBase { 
 	private Unsafe unsafe = XlibWrapper.unsafe; 
 	private final boolean should_free_memory;
-	public static int getSize() { return 80; }
+	public static int getSize() { return ((XlibWrapper.dataModel == 32)?(80):(96)); }
 	public int getDataSize() { return getSize(); }
 
 	long pData;
@@ -16,14 +16,14 @@
 	public long getPData() { return pData; }
 
 
-	XFontStruct(long addr) {
+	public XFontStruct(long addr) {
 		log.finest("Creating");
 		pData=addr;
 		should_free_memory = false;
 	}
 
 
-	XFontStruct() {
+	public XFontStruct() {
 		log.finest("Creating");
 		pData = unsafe.allocateMemory(getSize());
 		should_free_memory = true;
@@ -37,37 +37,37 @@
 			unsafe.freeMemory(pData); 
 	}
 		}
-	public XExtData get_ext_data(int index) { log.finest(""); return (Native.getLong(pData+0) != 0)?(new XExtData(Native.getLong(pData+0)+index*16)):(null); }
+	public XExtData get_ext_data(int index) { log.finest(""); return (Native.getLong(pData+0) != 0)?(new XExtData(Native.getLong(pData+0)+index*((XlibWrapper.dataModel == 32)?(16):(32)))):(null); }
 	public long get_ext_data() { log.finest("");return Native.getLong(pData+0); }
 	public void set_ext_data(long v) { log.finest(""); Native.putLong(pData + 0, v); }
-	public long get_fid() { log.finest("");return (Native.getLong(pData+4)); }
-	public void set_fid(long v) { log.finest(""); Native.putLong(pData+4, v); }
-	public int get_direction() { log.finest("");return (Native.getInt(pData+8)); }
-	public void set_direction(int v) { log.finest(""); Native.putInt(pData+8, v); }
-	public int get_min_char_or_byte2() { log.finest("");return (Native.getInt(pData+12)); }
-	public void set_min_char_or_byte2(int v) { log.finest(""); Native.putInt(pData+12, v); }
-	public int get_max_char_or_byte2() { log.finest("");return (Native.getInt(pData+16)); }
-	public void set_max_char_or_byte2(int v) { log.finest(""); Native.putInt(pData+16, v); }
-	public int get_min_byte1() { log.finest("");return (Native.getInt(pData+20)); }
-	public void set_min_byte1(int v) { log.finest(""); Native.putInt(pData+20, v); }
-	public int get_max_byte1() { log.finest("");return (Native.getInt(pData+24)); }
-	public void set_max_byte1(int v) { log.finest(""); Native.putInt(pData+24, v); }
-	public boolean get_all_chars_exist() { log.finest("");return (Native.getBool(pData+28)); }
-	public void set_all_chars_exist(boolean v) { log.finest(""); Native.putBool(pData+28, v); }
-	public int get_n_properties() { log.finest("");return (Native.getInt(pData+36)); }
-	public void set_n_properties(int v) { log.finest(""); Native.putInt(pData+36, v); }
-	public XFontProp get_properties(int index) { log.finest(""); return (Native.getLong(pData+40) != 0)?(new XFontProp(Native.getLong(pData+40)+index*8)):(null); }
-	public long get_properties() { log.finest("");return Native.getLong(pData+40); }
-	public void set_properties(long v) { log.finest(""); Native.putLong(pData + 40, v); }
-	public XCharStruct get_min_bounds() { log.finest("");return new XCharStruct(pData + 44); }
-	public XCharStruct get_max_bounds() { log.finest("");return new XCharStruct(pData + 56); }
-	public XCharStruct get_per_char(int index) { log.finest(""); return (Native.getLong(pData+68) != 0)?(new XCharStruct(Native.getLong(pData+68)+index*12)):(null); }
-	public long get_per_char() { log.finest("");return Native.getLong(pData+68); }
-	public void set_per_char(long v) { log.finest(""); Native.putLong(pData + 68, v); }
-	public int get_ascent() { log.finest("");return (Native.getInt(pData+72)); }
-	public void set_ascent(int v) { log.finest(""); Native.putInt(pData+72, v); }
-	public int get_descent() { log.finest("");return (Native.getInt(pData+76)); }
-	public void set_descent(int v) { log.finest(""); Native.putInt(pData+76, v); }
+	public long get_fid() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)))); }
+	public void set_fid(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)), v); }
+	public int get_direction() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(8):(16)))); }
+	public void set_direction(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(8):(16)), v); }
+	public int get_min_char_or_byte2() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(12):(20)))); }
+	public void set_min_char_or_byte2(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(12):(20)), v); }
+	public int get_max_char_or_byte2() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(16):(24)))); }
+	public void set_max_char_or_byte2(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(16):(24)), v); }
+	public int get_min_byte1() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(20):(28)))); }
+	public void set_min_byte1(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(20):(28)), v); }
+	public int get_max_byte1() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(24):(32)))); }
+	public void set_max_byte1(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(24):(32)), v); }
+	public boolean get_all_chars_exist() { log.finest("");return (Native.getBool(pData+((XlibWrapper.dataModel == 32)?(28):(36)))); }
+	public void set_all_chars_exist(boolean v) { log.finest(""); Native.putBool(pData+((XlibWrapper.dataModel == 32)?(28):(36)), v); }
+	public int get_n_properties() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(36):(44)))); }
+	public void set_n_properties(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(36):(44)), v); }
+	public XFontProp get_properties(int index) { log.finest(""); return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(40):(48))) != 0)?(new XFontProp(Native.getLong(pData+((XlibWrapper.dataModel == 32)?(40):(48)))+index*((XlibWrapper.dataModel == 32)?(8):(16)))):(null); }
+	public long get_properties() { log.finest("");return Native.getLong(pData+((XlibWrapper.dataModel == 32)?(40):(48))); }
+	public void set_properties(long v) { log.finest(""); Native.putLong(pData + ((XlibWrapper.dataModel == 32)?(40):(48)), v); }
+	public XCharStruct get_min_bounds() { log.finest("");return new XCharStruct(pData + ((XlibWrapper.dataModel == 32)?(44):(56))); }
+	public XCharStruct get_max_bounds() { log.finest("");return new XCharStruct(pData + ((XlibWrapper.dataModel == 32)?(56):(68))); }
+	public XCharStruct get_per_char(int index) { log.finest(""); return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(68):(80))) != 0)?(new XCharStruct(Native.getLong(pData+((XlibWrapper.dataModel == 32)?(68):(80)))+index*12)):(null); }
+	public long get_per_char() { log.finest("");return Native.getLong(pData+((XlibWrapper.dataModel == 32)?(68):(80))); }
+	public void set_per_char(long v) { log.finest(""); Native.putLong(pData + ((XlibWrapper.dataModel == 32)?(68):(80)), v); }
+	public int get_ascent() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(72):(88)))); }
+	public void set_ascent(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(72):(88)), v); }
+	public int get_descent() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(76):(92)))); }
+	public void set_descent(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(76):(92)), v); }
 
 
 	String getName() {
--- a/generated/sun/awt/X11/XGCValues.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/sun/awt/X11/XGCValues.java	Wed May 18 15:46:37 2011 +0100
@@ -8,7 +8,7 @@
 public class XGCValues extends XWrapperBase { 
 	private Unsafe unsafe = XlibWrapper.unsafe; 
 	private final boolean should_free_memory;
-	public static int getSize() { return 92; }
+	public static int getSize() { return ((XlibWrapper.dataModel == 32)?(92):(128)); }
 	public int getDataSize() { return getSize(); }
 
 	long pData;
@@ -16,14 +16,14 @@
 	public long getPData() { return pData; }
 
 
-	XGCValues(long addr) {
+	public XGCValues(long addr) {
 		log.finest("Creating");
 		pData=addr;
 		should_free_memory = false;
 	}
 
 
-	XGCValues() {
+	public XGCValues() {
 		log.finest("Creating");
 		pData = unsafe.allocateMemory(getSize());
 		should_free_memory = true;
@@ -39,50 +39,50 @@
 		}
 	public int get_function() { log.finest("");return (Native.getInt(pData+0)); }
 	public void set_function(int v) { log.finest(""); Native.putInt(pData+0, v); }
-	public long get_plane_mask() { log.finest("");return (Native.getLong(pData+4)); }
-	public void set_plane_mask(long v) { log.finest(""); Native.putLong(pData+4, v); }
-	public long get_foreground() { log.finest("");return (Native.getLong(pData+8)); }
-	public void set_foreground(long v) { log.finest(""); Native.putLong(pData+8, v); }
-	public long get_background() { log.finest("");return (Native.getLong(pData+12)); }
-	public void set_background(long v) { log.finest(""); Native.putLong(pData+12, v); }
-	public int get_line_width() { log.finest("");return (Native.getInt(pData+16)); }
-	public void set_line_width(int v) { log.finest(""); Native.putInt(pData+16, v); }
-	public int get_line_style() { log.finest("");return (Native.getInt(pData+20)); }
-	public void set_line_style(int v) { log.finest(""); Native.putInt(pData+20, v); }
-	public int get_cap_style() { log.finest("");return (Native.getInt(pData+24)); }
-	public void set_cap_style(int v) { log.finest(""); Native.putInt(pData+24, v); }
-	public int get_join_style() { log.finest("");return (Native.getInt(pData+28)); }
-	public void set_join_style(int v) { log.finest(""); Native.putInt(pData+28, v); }
-	public int get_fill_style() { log.finest("");return (Native.getInt(pData+32)); }
-	public void set_fill_style(int v) { log.finest(""); Native.putInt(pData+32, v); }
-	public int get_fill_rule() { log.finest("");return (Native.getInt(pData+36)); }
-	public void set_fill_rule(int v) { log.finest(""); Native.putInt(pData+36, v); }
-	public int get_arc_mode() { log.finest("");return (Native.getInt(pData+40)); }
-	public void set_arc_mode(int v) { log.finest(""); Native.putInt(pData+40, v); }
-	public long get_tile() { log.finest("");return (Native.getLong(pData+44)); }
-	public void set_tile(long v) { log.finest(""); Native.putLong(pData+44, v); }
-	public long get_stipple() { log.finest("");return (Native.getLong(pData+48)); }
-	public void set_stipple(long v) { log.finest(""); Native.putLong(pData+48, v); }
-	public int get_ts_x_origin() { log.finest("");return (Native.getInt(pData+52)); }
-	public void set_ts_x_origin(int v) { log.finest(""); Native.putInt(pData+52, v); }
-	public int get_ts_y_origin() { log.finest("");return (Native.getInt(pData+56)); }
-	public void set_ts_y_origin(int v) { log.finest(""); Native.putInt(pData+56, v); }
-	public long get_font() { log.finest("");return (Native.getLong(pData+60)); }
-	public void set_font(long v) { log.finest(""); Native.putLong(pData+60, v); }
-	public int get_subwindow_mode() { log.finest("");return (Native.getInt(pData+64)); }
-	public void set_subwindow_mode(int v) { log.finest(""); Native.putInt(pData+64, v); }
-	public boolean get_graphics_exposures() { log.finest("");return (Native.getBool(pData+68)); }
-	public void set_graphics_exposures(boolean v) { log.finest(""); Native.putBool(pData+68, v); }
-	public int get_clip_x_origin() { log.finest("");return (Native.getInt(pData+72)); }
-	public void set_clip_x_origin(int v) { log.finest(""); Native.putInt(pData+72, v); }
-	public int get_clip_y_origin() { log.finest("");return (Native.getInt(pData+76)); }
-	public void set_clip_y_origin(int v) { log.finest(""); Native.putInt(pData+76, v); }
-	public long get_clip_mask() { log.finest("");return (Native.getLong(pData+80)); }
-	public void set_clip_mask(long v) { log.finest(""); Native.putLong(pData+80, v); }
-	public int get_dash_offset() { log.finest("");return (Native.getInt(pData+84)); }
-	public void set_dash_offset(int v) { log.finest(""); Native.putInt(pData+84, v); }
-	public byte get_dashes() { log.finest("");return (Native.getByte(pData+88)); }
-	public void set_dashes(byte v) { log.finest(""); Native.putByte(pData+88, v); }
+	public long get_plane_mask() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)))); }
+	public void set_plane_mask(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)), v); }
+	public long get_foreground() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(8):(16)))); }
+	public void set_foreground(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(8):(16)), v); }
+	public long get_background() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(12):(24)))); }
+	public void set_background(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(12):(24)), v); }
+	public int get_line_width() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(16):(32)))); }
+	public void set_line_width(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(16):(32)), v); }
+	public int get_line_style() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(20):(36)))); }
+	public void set_line_style(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(20):(36)), v); }
+	public int get_cap_style() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(24):(40)))); }
+	public void set_cap_style(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(24):(40)), v); }
+	public int get_join_style() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(28):(44)))); }
+	public void set_join_style(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(28):(44)), v); }
+	public int get_fill_style() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(32):(48)))); }
+	public void set_fill_style(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(32):(48)), v); }
+	public int get_fill_rule() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(36):(52)))); }
+	public void set_fill_rule(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(36):(52)), v); }
+	public int get_arc_mode() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(40):(56)))); }
+	public void set_arc_mode(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(40):(56)), v); }
+	public long get_tile() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(44):(64)))); }
+	public void set_tile(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(44):(64)), v); }
+	public long get_stipple() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(48):(72)))); }
+	public void set_stipple(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(48):(72)), v); }
+	public int get_ts_x_origin() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(52):(80)))); }
+	public void set_ts_x_origin(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(52):(80)), v); }
+	public int get_ts_y_origin() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(56):(84)))); }
+	public void set_ts_y_origin(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(56):(84)), v); }
+	public long get_font() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(60):(88)))); }
+	public void set_font(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(60):(88)), v); }
+	public int get_subwindow_mode() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(64):(96)))); }
+	public void set_subwindow_mode(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(64):(96)), v); }
+	public boolean get_graphics_exposures() { log.finest("");return (Native.getBool(pData+((XlibWrapper.dataModel == 32)?(68):(100)))); }
+	public void set_graphics_exposures(boolean v) { log.finest(""); Native.putBool(pData+((XlibWrapper.dataModel == 32)?(68):(100)), v); }
+	public int get_clip_x_origin() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(72):(104)))); }
+	public void set_clip_x_origin(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(72):(104)), v); }
+	public int get_clip_y_origin() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(76):(108)))); }
+	public void set_clip_y_origin(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(76):(108)), v); }
+	public long get_clip_mask() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(80):(112)))); }
+	public void set_clip_mask(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(80):(112)), v); }
+	public int get_dash_offset() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(84):(120)))); }
+	public void set_dash_offset(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(84):(120)), v); }
+	public byte get_dashes() { log.finest("");return (Native.getByte(pData+((XlibWrapper.dataModel == 32)?(88):(124)))); }
+	public void set_dashes(byte v) { log.finest(""); Native.putByte(pData+((XlibWrapper.dataModel == 32)?(88):(124)), v); }
 
 
 	String getName() {
--- a/generated/sun/awt/X11/XGraphicsExposeEvent.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/sun/awt/X11/XGraphicsExposeEvent.java	Wed May 18 15:46:37 2011 +0100
@@ -8,7 +8,7 @@
 public class XGraphicsExposeEvent extends XWrapperBase { 
 	private Unsafe unsafe = XlibWrapper.unsafe; 
 	private final boolean should_free_memory;
-	public static int getSize() { return 48; }
+	public static int getSize() { return ((XlibWrapper.dataModel == 32)?(48):(72)); }
 	public int getDataSize() { return getSize(); }
 
 	long pData;
@@ -16,14 +16,14 @@
 	public long getPData() { return pData; }
 
 
-	XGraphicsExposeEvent(long addr) {
+	public XGraphicsExposeEvent(long addr) {
 		log.finest("Creating");
 		pData=addr;
 		should_free_memory = false;
 	}
 
 
-	XGraphicsExposeEvent() {
+	public XGraphicsExposeEvent() {
 		log.finest("Creating");
 		pData = unsafe.allocateMemory(getSize());
 		should_free_memory = true;
@@ -39,28 +39,28 @@
 		}
 	public int get_type() { log.finest("");return (Native.getInt(pData+0)); }
 	public void set_type(int v) { log.finest(""); Native.putInt(pData+0, v); }
-	public long get_serial() { log.finest("");return (Native.getLong(pData+4)); }
-	public void set_serial(long v) { log.finest(""); Native.putLong(pData+4, v); }
-	public boolean get_send_event() { log.finest("");return (Native.getBool(pData+8)); }
-	public void set_send_event(boolean v) { log.finest(""); Native.putBool(pData+8, v); }
-	public long get_display() { log.finest("");return (Native.getLong(pData+12)); }
-	public void set_display(long v) { log.finest(""); Native.putLong(pData+12, v); }
-	public long get_drawable() { log.finest("");return (Native.getLong(pData+16)); }
-	public void set_drawable(long v) { log.finest(""); Native.putLong(pData+16, v); }
-	public int get_x() { log.finest("");return (Native.getInt(pData+20)); }
-	public void set_x(int v) { log.finest(""); Native.putInt(pData+20, v); }
-	public int get_y() { log.finest("");return (Native.getInt(pData+24)); }
-	public void set_y(int v) { log.finest(""); Native.putInt(pData+24, v); }
-	public int get_width() { log.finest("");return (Native.getInt(pData+28)); }
-	public void set_width(int v) { log.finest(""); Native.putInt(pData+28, v); }
-	public int get_height() { log.finest("");return (Native.getInt(pData+32)); }
-	public void set_height(int v) { log.finest(""); Native.putInt(pData+32, v); }
-	public int get_count() { log.finest("");return (Native.getInt(pData+36)); }
-	public void set_count(int v) { log.finest(""); Native.putInt(pData+36, v); }
-	public int get_major_code() { log.finest("");return (Native.getInt(pData+40)); }
-	public void set_major_code(int v) { log.finest(""); Native.putInt(pData+40, v); }
-	public int get_minor_code() { log.finest("");return (Native.getInt(pData+44)); }
-	public void set_minor_code(int v) { log.finest(""); Native.putInt(pData+44, v); }
+	public long get_serial() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)))); }
+	public void set_serial(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)), v); }
+	public boolean get_send_event() { log.finest("");return (Native.getBool(pData+((XlibWrapper.dataModel == 32)?(8):(16)))); }
+	public void set_send_event(boolean v) { log.finest(""); Native.putBool(pData+((XlibWrapper.dataModel == 32)?(8):(16)), v); }
+	public long get_display() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(12):(24)))); }
+	public void set_display(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(12):(24)), v); }
+	public long get_drawable() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(16):(32)))); }
+	public void set_drawable(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(16):(32)), v); }
+	public int get_x() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(20):(40)))); }
+	public void set_x(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(20):(40)), v); }
+	public int get_y() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(24):(44)))); }
+	public void set_y(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(24):(44)), v); }
+	public int get_width() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(28):(48)))); }
+	public void set_width(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(28):(48)), v); }
+	public int get_height() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(32):(52)))); }
+	public void set_height(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(32):(52)), v); }
+	public int get_count() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(36):(56)))); }
+	public void set_count(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(36):(56)), v); }
+	public int get_major_code() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(40):(60)))); }
+	public void set_major_code(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(40):(60)), v); }
+	public int get_minor_code() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(44):(64)))); }
+	public void set_minor_code(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(44):(64)), v); }
 
 
 	String getName() {
--- a/generated/sun/awt/X11/XGravityEvent.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/sun/awt/X11/XGravityEvent.java	Wed May 18 15:46:37 2011 +0100
@@ -8,7 +8,7 @@
 public class XGravityEvent extends XWrapperBase { 
 	private Unsafe unsafe = XlibWrapper.unsafe; 
 	private final boolean should_free_memory;
-	public static int getSize() { return 32; }
+	public static int getSize() { return ((XlibWrapper.dataModel == 32)?(32):(56)); }
 	public int getDataSize() { return getSize(); }
 
 	long pData;
@@ -16,14 +16,14 @@
 	public long getPData() { return pData; }
 
 
-	XGravityEvent(long addr) {
+	public XGravityEvent(long addr) {
 		log.finest("Creating");
 		pData=addr;
 		should_free_memory = false;
 	}
 
 
-	XGravityEvent() {
+	public XGravityEvent() {
 		log.finest("Creating");
 		pData = unsafe.allocateMemory(getSize());
 		should_free_memory = true;
@@ -39,20 +39,20 @@
 		}
 	public int get_type() { log.finest("");return (Native.getInt(pData+0)); }
 	public void set_type(int v) { log.finest(""); Native.putInt(pData+0, v); }
-	public long get_serial() { log.finest("");return (Native.getLong(pData+4)); }
-	public void set_serial(long v) { log.finest(""); Native.putLong(pData+4, v); }
-	public boolean get_send_event() { log.finest("");return (Native.getBool(pData+8)); }
-	public void set_send_event(boolean v) { log.finest(""); Native.putBool(pData+8, v); }
-	public long get_display() { log.finest("");return (Native.getLong(pData+12)); }
-	public void set_display(long v) { log.finest(""); Native.putLong(pData+12, v); }
-	public long get_event() { log.finest("");return (Native.getLong(pData+16)); }
-	public void set_event(long v) { log.finest(""); Native.putLong(pData+16, v); }
-	public long get_window() { log.finest("");return (Native.getLong(pData+20)); }
-	public void set_window(long v) { log.finest(""); Native.putLong(pData+20, v); }
-	public int get_x() { log.finest("");return (Native.getInt(pData+24)); }
-	public void set_x(int v) { log.finest(""); Native.putInt(pData+24, v); }
-	public int get_y() { log.finest("");return (Native.getInt(pData+28)); }
-	public void set_y(int v) { log.finest(""); Native.putInt(pData+28, v); }
+	public long get_serial() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)))); }
+	public void set_serial(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)), v); }
+	public boolean get_send_event() { log.finest("");return (Native.getBool(pData+((XlibWrapper.dataModel == 32)?(8):(16)))); }
+	public void set_send_event(boolean v) { log.finest(""); Native.putBool(pData+((XlibWrapper.dataModel == 32)?(8):(16)), v); }
+	public long get_display() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(12):(24)))); }
+	public void set_display(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(12):(24)), v); }
+	public long get_event() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(16):(32)))); }
+	public void set_event(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(16):(32)), v); }
+	public long get_window() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(20):(40)))); }
+	public void set_window(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(20):(40)), v); }
+	public int get_x() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(24):(48)))); }
+	public void set_x(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(24):(48)), v); }
+	public int get_y() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(28):(52)))); }
+	public void set_y(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(28):(52)), v); }
 
 
 	String getName() {
--- a/generated/sun/awt/X11/XHostAddress.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/sun/awt/X11/XHostAddress.java	Wed May 18 15:46:37 2011 +0100
@@ -8,7 +8,7 @@
 public class XHostAddress extends XWrapperBase { 
 	private Unsafe unsafe = XlibWrapper.unsafe; 
 	private final boolean should_free_memory;
-	public static int getSize() { return 12; }
+	public static int getSize() { return ((XlibWrapper.dataModel == 32)?(12):(16)); }
 	public int getDataSize() { return getSize(); }
 
 	long pData;
@@ -16,14 +16,14 @@
 	public long getPData() { return pData; }
 
 
-	XHostAddress(long addr) {
+	public XHostAddress(long addr) {
 		log.finest("Creating");
 		pData=addr;
 		should_free_memory = false;
 	}
 
 
-	XHostAddress() {
+	public XHostAddress() {
 		log.finest("Creating");
 		pData = unsafe.allocateMemory(getSize());
 		should_free_memory = true;
--- a/generated/sun/awt/X11/XIMCallback.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/sun/awt/X11/XIMCallback.java	Wed May 18 15:46:37 2011 +0100
@@ -8,7 +8,7 @@
 public class XIMCallback extends XWrapperBase { 
 	private Unsafe unsafe = XlibWrapper.unsafe; 
 	private final boolean should_free_memory;
-	public static int getSize() { return 8; }
+	public static int getSize() { return ((XlibWrapper.dataModel == 32)?(8):(16)); }
 	public int getDataSize() { return getSize(); }
 
 	long pData;
@@ -16,14 +16,14 @@
 	public long getPData() { return pData; }
 
 
-	XIMCallback(long addr) {
+	public XIMCallback(long addr) {
 		log.finest("Creating");
 		pData=addr;
 		should_free_memory = false;
 	}
 
 
-	XIMCallback() {
+	public XIMCallback() {
 		log.finest("Creating");
 		pData = unsafe.allocateMemory(getSize());
 		should_free_memory = true;
@@ -40,9 +40,9 @@
 	public long get_client_data(int index) { log.finest(""); return Native.getLong(pData+0)+index*Native.getLongSize(); }
 	public long get_client_data() { log.finest("");return Native.getLong(pData+0); }
 	public void set_client_data(long v) { log.finest(""); Native.putLong(pData + 0, v); }
-	public long get_callback(int index) { log.finest(""); return Native.getLong(pData+4)+index*Native.getLongSize(); }
-	public long get_callback() { log.finest("");return Native.getLong(pData+4); }
-	public void set_callback(long v) { log.finest(""); Native.putLong(pData + 4, v); }
+	public long get_callback(int index) { log.finest(""); return Native.getLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)))+index*Native.getLongSize(); }
+	public long get_callback() { log.finest("");return Native.getLong(pData+((XlibWrapper.dataModel == 32)?(4):(8))); }
+	public void set_callback(long v) { log.finest(""); Native.putLong(pData + ((XlibWrapper.dataModel == 32)?(4):(8)), v); }
 
 
 	String getName() {
--- a/generated/sun/awt/X11/XIMHotKeyTrigger.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/sun/awt/X11/XIMHotKeyTrigger.java	Wed May 18 15:46:37 2011 +0100
@@ -8,7 +8,7 @@
 public class XIMHotKeyTrigger extends XWrapperBase { 
 	private Unsafe unsafe = XlibWrapper.unsafe; 
 	private final boolean should_free_memory;
-	public static int getSize() { return 12; }
+	public static int getSize() { return ((XlibWrapper.dataModel == 32)?(12):(16)); }
 	public int getDataSize() { return getSize(); }
 
 	long pData;
@@ -16,14 +16,14 @@
 	public long getPData() { return pData; }
 
 
-	XIMHotKeyTrigger(long addr) {
+	public XIMHotKeyTrigger(long addr) {
 		log.finest("Creating");
 		pData=addr;
 		should_free_memory = false;
 	}
 
 
-	XIMHotKeyTrigger() {
+	public XIMHotKeyTrigger() {
 		log.finest("Creating");
 		pData = unsafe.allocateMemory(getSize());
 		should_free_memory = true;
@@ -39,10 +39,10 @@
 		}
 	public long get_keysym() { log.finest("");return (Native.getLong(pData+0)); }
 	public void set_keysym(long v) { log.finest(""); Native.putLong(pData+0, v); }
-	public int get_modifier() { log.finest("");return (Native.getInt(pData+4)); }
-	public void set_modifier(int v) { log.finest(""); Native.putInt(pData+4, v); }
-	public int get_modifier_mask() { log.finest("");return (Native.getInt(pData+8)); }
-	public void set_modifier_mask(int v) { log.finest(""); Native.putInt(pData+8, v); }
+	public int get_modifier() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(4):(8)))); }
+	public void set_modifier(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(4):(8)), v); }
+	public int get_modifier_mask() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(8):(12)))); }
+	public void set_modifier_mask(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(8):(12)), v); }
 
 
 	String getName() {
--- a/generated/sun/awt/X11/XIMHotKeyTriggers.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/sun/awt/X11/XIMHotKeyTriggers.java	Wed May 18 15:46:37 2011 +0100
@@ -8,7 +8,7 @@
 public class XIMHotKeyTriggers extends XWrapperBase { 
 	private Unsafe unsafe = XlibWrapper.unsafe; 
 	private final boolean should_free_memory;
-	public static int getSize() { return 8; }
+	public static int getSize() { return ((XlibWrapper.dataModel == 32)?(8):(16)); }
 	public int getDataSize() { return getSize(); }
 
 	long pData;
@@ -16,14 +16,14 @@
 	public long getPData() { return pData; }
 
 
-	XIMHotKeyTriggers(long addr) {
+	public XIMHotKeyTriggers(long addr) {
 		log.finest("Creating");
 		pData=addr;
 		should_free_memory = false;
 	}
 
 
-	XIMHotKeyTriggers() {
+	public XIMHotKeyTriggers() {
 		log.finest("Creating");
 		pData = unsafe.allocateMemory(getSize());
 		should_free_memory = true;
@@ -39,9 +39,9 @@
 		}
 	public int get_num_hot_key() { log.finest("");return (Native.getInt(pData+0)); }
 	public void set_num_hot_key(int v) { log.finest(""); Native.putInt(pData+0, v); }
-	public XIMHotKeyTrigger get_key(int index) { log.finest(""); return (Native.getLong(pData+4) != 0)?(new XIMHotKeyTrigger(Native.getLong(pData+4)+index*12)):(null); }
-	public long get_key() { log.finest("");return Native.getLong(pData+4); }
-	public void set_key(long v) { log.finest(""); Native.putLong(pData + 4, v); }
+	public XIMHotKeyTrigger get_key(int index) { log.finest(""); return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(4):(8))) != 0)?(new XIMHotKeyTrigger(Native.getLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)))+index*((XlibWrapper.dataModel == 32)?(12):(16)))):(null); }
+	public long get_key() { log.finest("");return Native.getLong(pData+((XlibWrapper.dataModel == 32)?(4):(8))); }
+	public void set_key(long v) { log.finest(""); Native.putLong(pData + ((XlibWrapper.dataModel == 32)?(4):(8)), v); }
 
 
 	String getName() {
--- a/generated/sun/awt/X11/XIMPreeditCaretCallbackStruct.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/sun/awt/X11/XIMPreeditCaretCallbackStruct.java	Wed May 18 15:46:37 2011 +0100
@@ -16,14 +16,14 @@
 	public long getPData() { return pData; }
 
 
-	XIMPreeditCaretCallbackStruct(long addr) {
+	public XIMPreeditCaretCallbackStruct(long addr) {
 		log.finest("Creating");
 		pData=addr;
 		should_free_memory = false;
 	}
 
 
-	XIMPreeditCaretCallbackStruct() {
+	public XIMPreeditCaretCallbackStruct() {
 		log.finest("Creating");
 		pData = unsafe.allocateMemory(getSize());
 		should_free_memory = true;
--- a/generated/sun/awt/X11/XIMPreeditDrawCallbackStruct.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/sun/awt/X11/XIMPreeditDrawCallbackStruct.java	Wed May 18 15:46:37 2011 +0100
@@ -8,7 +8,7 @@
 public class XIMPreeditDrawCallbackStruct extends XWrapperBase { 
 	private Unsafe unsafe = XlibWrapper.unsafe; 
 	private final boolean should_free_memory;
-	public static int getSize() { return 16; }
+	public static int getSize() { return ((XlibWrapper.dataModel == 32)?(16):(24)); }
 	public int getDataSize() { return getSize(); }
 
 	long pData;
@@ -16,14 +16,14 @@
 	public long getPData() { return pData; }
 
 
-	XIMPreeditDrawCallbackStruct(long addr) {
+	public XIMPreeditDrawCallbackStruct(long addr) {
 		log.finest("Creating");
 		pData=addr;
 		should_free_memory = false;
 	}
 
 
-	XIMPreeditDrawCallbackStruct() {
+	public XIMPreeditDrawCallbackStruct() {
 		log.finest("Creating");
 		pData = unsafe.allocateMemory(getSize());
 		should_free_memory = true;
@@ -43,9 +43,9 @@
 	public void set_chg_first(int v) { log.finest(""); Native.putInt(pData+4, v); }
 	public int get_chg_length() { log.finest("");return (Native.getInt(pData+8)); }
 	public void set_chg_length(int v) { log.finest(""); Native.putInt(pData+8, v); }
-	public XIMText get_text(int index) { log.finest(""); return (Native.getLong(pData+12) != 0)?(new XIMText(Native.getLong(pData+12)+index*16)):(null); }
-	public long get_text() { log.finest("");return Native.getLong(pData+12); }
-	public void set_text(long v) { log.finest(""); Native.putLong(pData + 12, v); }
+	public XIMText get_text(int index) { log.finest(""); return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(12):(16))) != 0)?(new XIMText(Native.getLong(pData+((XlibWrapper.dataModel == 32)?(12):(16)))+index*((XlibWrapper.dataModel == 32)?(16):(32)))):(null); }
+	public long get_text() { log.finest("");return Native.getLong(pData+((XlibWrapper.dataModel == 32)?(12):(16))); }
+	public void set_text(long v) { log.finest(""); Native.putLong(pData + ((XlibWrapper.dataModel == 32)?(12):(16)), v); }
 
 
 	String getName() {
--- a/generated/sun/awt/X11/XIMPreeditStateNotifyCallbackStruct.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/sun/awt/X11/XIMPreeditStateNotifyCallbackStruct.java	Wed May 18 15:46:37 2011 +0100
@@ -8,7 +8,7 @@
 public class XIMPreeditStateNotifyCallbackStruct extends XWrapperBase { 
 	private Unsafe unsafe = XlibWrapper.unsafe; 
 	private final boolean should_free_memory;
-	public static int getSize() { return 4; }
+	public static int getSize() { return ((XlibWrapper.dataModel == 32)?(4):(8)); }
 	public int getDataSize() { return getSize(); }
 
 	long pData;
@@ -16,14 +16,14 @@
 	public long getPData() { return pData; }
 
 
-	XIMPreeditStateNotifyCallbackStruct(long addr) {
+	public XIMPreeditStateNotifyCallbackStruct(long addr) {
 		log.finest("Creating");
 		pData=addr;
 		should_free_memory = false;
 	}
 
 
-	XIMPreeditStateNotifyCallbackStruct() {
+	public XIMPreeditStateNotifyCallbackStruct() {
 		log.finest("Creating");
 		pData = unsafe.allocateMemory(getSize());
 		should_free_memory = true;
--- a/generated/sun/awt/X11/XIMStatusDrawCallbackStruct.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/sun/awt/X11/XIMStatusDrawCallbackStruct.java	Wed May 18 15:46:37 2011 +0100
@@ -8,7 +8,7 @@
 public class XIMStatusDrawCallbackStruct extends XWrapperBase { 
 	private Unsafe unsafe = XlibWrapper.unsafe; 
 	private final boolean should_free_memory;
-	public static int getSize() { return 8; }
+	public static int getSize() { return ((XlibWrapper.dataModel == 32)?(8):(16)); }
 	public int getDataSize() { return getSize(); }
 
 	long pData;
@@ -16,14 +16,14 @@
 	public long getPData() { return pData; }
 
 
-	XIMStatusDrawCallbackStruct(long addr) {
+	public XIMStatusDrawCallbackStruct(long addr) {
 		log.finest("Creating");
 		pData=addr;
 		should_free_memory = false;
 	}
 
 
-	XIMStatusDrawCallbackStruct() {
+	public XIMStatusDrawCallbackStruct() {
 		log.finest("Creating");
 		pData = unsafe.allocateMemory(getSize());
 		should_free_memory = true;
@@ -39,8 +39,8 @@
 		}
 	public int get_type() { log.finest("");return (Native.getInt(pData+0)); }
 	public void set_type(int v) { log.finest(""); Native.putInt(pData+0, v); }
-	public long get_data() { log.finest("");return (Native.getLong(pData+4)); }
-	public void set_data(long v) { log.finest(""); Native.putLong(pData+4, v); }
+	public long get_data() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)))); }
+	public void set_data(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)), v); }
 
 
 	String getName() {
--- a/generated/sun/awt/X11/XIMStringConversionCallbackStruct.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/sun/awt/X11/XIMStringConversionCallbackStruct.java	Wed May 18 15:46:37 2011 +0100
@@ -8,7 +8,7 @@
 public class XIMStringConversionCallbackStruct extends XWrapperBase { 
 	private Unsafe unsafe = XlibWrapper.unsafe; 
 	private final boolean should_free_memory;
-	public static int getSize() { return 16; }
+	public static int getSize() { return ((XlibWrapper.dataModel == 32)?(16):(24)); }
 	public int getDataSize() { return getSize(); }
 
 	long pData;
@@ -16,14 +16,14 @@
 	public long getPData() { return pData; }
 
 
-	XIMStringConversionCallbackStruct(long addr) {
+	public XIMStringConversionCallbackStruct(long addr) {
 		log.finest("Creating");
 		pData=addr;
 		should_free_memory = false;
 	}
 
 
-	XIMStringConversionCallbackStruct() {
+	public XIMStringConversionCallbackStruct() {
 		log.finest("Creating");
 		pData = unsafe.allocateMemory(getSize());
 		should_free_memory = true;
@@ -45,9 +45,9 @@
 	public void set_operation(short v) { log.finest(""); Native.putShort(pData+8, v); }
 	public short get_factor() { log.finest("");return (Native.getShort(pData+10)); }
 	public void set_factor(short v) { log.finest(""); Native.putShort(pData+10, v); }
-	public XIMStringConversionText get_text(int index) { log.finest(""); return (Native.getLong(pData+12) != 0)?(new XIMStringConversionText(Native.getLong(pData+12)+index*16)):(null); }
-	public long get_text() { log.finest("");return Native.getLong(pData+12); }
-	public void set_text(long v) { log.finest(""); Native.putLong(pData + 12, v); }
+	public XIMStringConversionText get_text(int index) { log.finest(""); return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(12):(16))) != 0)?(new XIMStringConversionText(Native.getLong(pData+((XlibWrapper.dataModel == 32)?(12):(16)))+index*((XlibWrapper.dataModel == 32)?(16):(32)))):(null); }
+	public long get_text() { log.finest("");return Native.getLong(pData+((XlibWrapper.dataModel == 32)?(12):(16))); }
+	public void set_text(long v) { log.finest(""); Native.putLong(pData + ((XlibWrapper.dataModel == 32)?(12):(16)), v); }
 
 
 	String getName() {
--- a/generated/sun/awt/X11/XIMStringConversionText.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/sun/awt/X11/XIMStringConversionText.java	Wed May 18 15:46:37 2011 +0100
@@ -8,7 +8,7 @@
 public class XIMStringConversionText extends XWrapperBase { 
 	private Unsafe unsafe = XlibWrapper.unsafe; 
 	private final boolean should_free_memory;
-	public static int getSize() { return 16; }
+	public static int getSize() { return ((XlibWrapper.dataModel == 32)?(16):(32)); }
 	public int getDataSize() { return getSize(); }
 
 	long pData;
@@ -16,14 +16,14 @@
 	public long getPData() { return pData; }
 
 
-	XIMStringConversionText(long addr) {
+	public XIMStringConversionText(long addr) {
 		log.finest("Creating");
 		pData=addr;
 		should_free_memory = false;
 	}
 
 
-	XIMStringConversionText() {
+	public XIMStringConversionText() {
 		log.finest("Creating");
 		pData = unsafe.allocateMemory(getSize());
 		should_free_memory = true;
@@ -39,14 +39,14 @@
 		}
 	public short get_length() { log.finest("");return (Native.getShort(pData+0)); }
 	public void set_length(short v) { log.finest(""); Native.putShort(pData+0, v); }
-	public long get_feedback(int index) { log.finest(""); return Native.getLong(pData+4)+index*Native.getLongSize(); }
-	public long get_feedback() { log.finest("");return Native.getLong(pData+4); }
-	public void set_feedback(long v) { log.finest(""); Native.putLong(pData + 4, v); }
-	public boolean get_encoding_is_wchar() { log.finest("");return (Native.getBool(pData+8)); }
-	public void set_encoding_is_wchar(boolean v) { log.finest(""); Native.putBool(pData+8, v); }
-	public long get_string(int index) { log.finest(""); return Native.getLong(pData+12)+index*Native.getLongSize(); }
-	public long get_string() { log.finest("");return Native.getLong(pData+12); }
-	public void set_string(long v) { log.finest(""); Native.putLong(pData + 12, v); }
+	public long get_feedback(int index) { log.finest(""); return Native.getLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)))+index*Native.getLongSize(); }
+	public long get_feedback() { log.finest("");return Native.getLong(pData+((XlibWrapper.dataModel == 32)?(4):(8))); }
+	public void set_feedback(long v) { log.finest(""); Native.putLong(pData + ((XlibWrapper.dataModel == 32)?(4):(8)), v); }
+	public boolean get_encoding_is_wchar() { log.finest("");return (Native.getBool(pData+((XlibWrapper.dataModel == 32)?(8):(16)))); }
+	public void set_encoding_is_wchar(boolean v) { log.finest(""); Native.putBool(pData+((XlibWrapper.dataModel == 32)?(8):(16)), v); }
+	public long get_string(int index) { log.finest(""); return Native.getLong(pData+((XlibWrapper.dataModel == 32)?(12):(24)))+index*Native.getLongSize(); }
+	public long get_string() { log.finest("");return Native.getLong(pData+((XlibWrapper.dataModel == 32)?(12):(24))); }
+	public void set_string(long v) { log.finest(""); Native.putLong(pData + ((XlibWrapper.dataModel == 32)?(12):(24)), v); }
 
 
 	String getName() {
--- a/generated/sun/awt/X11/XIMStyles.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/sun/awt/X11/XIMStyles.java	Wed May 18 15:46:37 2011 +0100
@@ -8,7 +8,7 @@
 public class XIMStyles extends XWrapperBase { 
 	private Unsafe unsafe = XlibWrapper.unsafe; 
 	private final boolean should_free_memory;
-	public static int getSize() { return 8; }
+	public static int getSize() { return ((XlibWrapper.dataModel == 32)?(8):(16)); }
 	public int getDataSize() { return getSize(); }
 
 	long pData;
@@ -16,14 +16,14 @@
 	public long getPData() { return pData; }
 
 
-	XIMStyles(long addr) {
+	public XIMStyles(long addr) {
 		log.finest("Creating");
 		pData=addr;
 		should_free_memory = false;
 	}
 
 
-	XIMStyles() {
+	public XIMStyles() {
 		log.finest("Creating");
 		pData = unsafe.allocateMemory(getSize());
 		should_free_memory = true;
@@ -39,9 +39,9 @@
 		}
 	public short get_count_styles() { log.finest("");return (Native.getShort(pData+0)); }
 	public void set_count_styles(short v) { log.finest(""); Native.putShort(pData+0, v); }
-	public long get_supported_styles(int index) { log.finest(""); return Native.getLong(Native.getLong(pData+4)+index*Native.getLongSize()); }
-	public long get_supported_styles() { log.finest("");return Native.getLong(pData+4); }
-	public void set_supported_styles(long v) { log.finest(""); Native.putLong(pData + 4, v); }
+	public long get_supported_styles(int index) { log.finest(""); return Native.getLong(Native.getLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)))+index*Native.getLongSize()); }
+	public long get_supported_styles() { log.finest("");return Native.getLong(pData+((XlibWrapper.dataModel == 32)?(4):(8))); }
+	public void set_supported_styles(long v) { log.finest(""); Native.putLong(pData + ((XlibWrapper.dataModel == 32)?(4):(8)), v); }
 
 
 	String getName() {
--- a/generated/sun/awt/X11/XIMText.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/sun/awt/X11/XIMText.java	Wed May 18 15:46:37 2011 +0100
@@ -8,7 +8,7 @@
 public class XIMText extends XWrapperBase { 
 	private Unsafe unsafe = XlibWrapper.unsafe; 
 	private final boolean should_free_memory;
-	public static int getSize() { return 16; }
+	public static int getSize() { return ((XlibWrapper.dataModel == 32)?(16):(32)); }
 	public int getDataSize() { return getSize(); }
 
 	long pData;
@@ -16,14 +16,14 @@
 	public long getPData() { return pData; }
 
 
-	XIMText(long addr) {
+	public XIMText(long addr) {
 		log.finest("Creating");
 		pData=addr;
 		should_free_memory = false;
 	}
 
 
-	XIMText() {
+	public XIMText() {
 		log.finest("Creating");
 		pData = unsafe.allocateMemory(getSize());
 		should_free_memory = true;
@@ -39,14 +39,14 @@
 		}
 	public short get_length() { log.finest("");return (Native.getShort(pData+0)); }
 	public void set_length(short v) { log.finest(""); Native.putShort(pData+0, v); }
-	public long get_feedback(int index) { log.finest(""); return Native.getLong(pData+4)+index*Native.getLongSize(); }
-	public long get_feedback() { log.finest("");return Native.getLong(pData+4); }
-	public void set_feedback(long v) { log.finest(""); Native.putLong(pData + 4, v); }
-	public boolean get_encoding_is_wchar() { log.finest("");return (Native.getBool(pData+8)); }
-	public void set_encoding_is_wchar(boolean v) { log.finest(""); Native.putBool(pData+8, v); }
-	public long get_string(int index) { log.finest(""); return Native.getLong(pData+12)+index*Native.getLongSize(); }
-	public long get_string() { log.finest("");return Native.getLong(pData+12); }
-	public void set_string(long v) { log.finest(""); Native.putLong(pData + 12, v); }
+	public long get_feedback(int index) { log.finest(""); return Native.getLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)))+index*Native.getLongSize(); }
+	public long get_feedback() { log.finest("");return Native.getLong(pData+((XlibWrapper.dataModel == 32)?(4):(8))); }
+	public void set_feedback(long v) { log.finest(""); Native.putLong(pData + ((XlibWrapper.dataModel == 32)?(4):(8)), v); }
+	public boolean get_encoding_is_wchar() { log.finest("");return (Native.getBool(pData+((XlibWrapper.dataModel == 32)?(8):(16)))); }
+	public void set_encoding_is_wchar(boolean v) { log.finest(""); Native.putBool(pData+((XlibWrapper.dataModel == 32)?(8):(16)), v); }
+	public long get_string(int index) { log.finest(""); return Native.getLong(pData+((XlibWrapper.dataModel == 32)?(12):(24)))+index*Native.getLongSize(); }
+	public long get_string() { log.finest("");return Native.getLong(pData+((XlibWrapper.dataModel == 32)?(12):(24))); }
+	public void set_string(long v) { log.finest(""); Native.putLong(pData + ((XlibWrapper.dataModel == 32)?(12):(24)), v); }
 
 
 	String getName() {
--- a/generated/sun/awt/X11/XIMValuesList.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/sun/awt/X11/XIMValuesList.java	Wed May 18 15:46:37 2011 +0100
@@ -8,7 +8,7 @@
 public class XIMValuesList extends XWrapperBase { 
 	private Unsafe unsafe = XlibWrapper.unsafe; 
 	private final boolean should_free_memory;
-	public static int getSize() { return 8; }
+	public static int getSize() { return ((XlibWrapper.dataModel == 32)?(8):(16)); }
 	public int getDataSize() { return getSize(); }
 
 	long pData;
@@ -16,14 +16,14 @@
 	public long getPData() { return pData; }
 
 
-	XIMValuesList(long addr) {
+	public XIMValuesList(long addr) {
 		log.finest("Creating");
 		pData=addr;
 		should_free_memory = false;
 	}
 
 
-	XIMValuesList() {
+	public XIMValuesList() {
 		log.finest("Creating");
 		pData = unsafe.allocateMemory(getSize());
 		should_free_memory = true;
@@ -39,9 +39,9 @@
 		}
 	public short get_count_values() { log.finest("");return (Native.getShort(pData+0)); }
 	public void set_count_values(short v) { log.finest(""); Native.putShort(pData+0, v); }
-	public long get_supported_values(int index) { log.finest(""); return Native.getLong(pData+4)+index*Native.getLongSize(); }
-	public long get_supported_values() { log.finest("");return Native.getLong(pData+4); }
-	public void set_supported_values(long v) { log.finest(""); Native.putLong(pData + 4, v); }
+	public long get_supported_values(int index) { log.finest(""); return Native.getLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)))+index*Native.getLongSize(); }
+	public long get_supported_values() { log.finest("");return Native.getLong(pData+((XlibWrapper.dataModel == 32)?(4):(8))); }
+	public void set_supported_values(long v) { log.finest(""); Native.putLong(pData + ((XlibWrapper.dataModel == 32)?(4):(8)), v); }
 
 
 	String getName() {
--- a/generated/sun/awt/X11/XIconSize.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/sun/awt/X11/XIconSize.java	Wed May 18 15:46:37 2011 +0100
@@ -16,14 +16,14 @@
 	public long getPData() { return pData; }
 
 
-	XIconSize(long addr) {
+	public XIconSize(long addr) {
 		log.finest("Creating");
 		pData=addr;
 		should_free_memory = false;
 	}
 
 
-	XIconSize() {
+	public XIconSize() {
 		log.finest("Creating");
 		pData = unsafe.allocateMemory(getSize());
 		should_free_memory = true;
--- a/generated/sun/awt/X11/XImage.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/sun/awt/X11/XImage.java	Wed May 18 15:46:37 2011 +0100
@@ -8,7 +8,7 @@
 public class XImage extends XWrapperBase { 
 	private Unsafe unsafe = XlibWrapper.unsafe; 
 	private final boolean should_free_memory;
-	public static int getSize() { return 88; }
+	public static int getSize() { return ((XlibWrapper.dataModel == 32)?(88):(136)); }
 	public int getDataSize() { return getSize(); }
 
 	long pData;
@@ -16,14 +16,14 @@
 	public long getPData() { return pData; }
 
 
-	XImage(long addr) {
+	public XImage(long addr) {
 		log.finest("Creating");
 		pData=addr;
 		should_free_memory = false;
 	}
 
 
-	XImage() {
+	public XImage() {
 		log.finest("Creating");
 		pData = unsafe.allocateMemory(getSize());
 		should_free_memory = true;
@@ -48,47 +48,47 @@
 	public byte get_data(int index) { log.finest(""); return Native.getByte(Native.getLong(pData+16)+index*1); }
 	public long get_data() { log.finest("");return Native.getLong(pData+16); }
 	public void set_data(long v) { log.finest(""); Native.putLong(pData + 16, v); }
-	public int get_byte_order() { log.finest("");return (Native.getInt(pData+20)); }
-	public void set_byte_order(int v) { log.finest(""); Native.putInt(pData+20, v); }
-	public int get_bitmap_unit() { log.finest("");return (Native.getInt(pData+24)); }
-	public void set_bitmap_unit(int v) { log.finest(""); Native.putInt(pData+24, v); }
-	public int get_bitmap_bit_order() { log.finest("");return (Native.getInt(pData+28)); }
-	public void set_bitmap_bit_order(int v) { log.finest(""); Native.putInt(pData+28, v); }
-	public int get_bitmap_pad() { log.finest("");return (Native.getInt(pData+32)); }
-	public void set_bitmap_pad(int v) { log.finest(""); Native.putInt(pData+32, v); }
-	public int get_depth() { log.finest("");return (Native.getInt(pData+36)); }
-	public void set_depth(int v) { log.finest(""); Native.putInt(pData+36, v); }
-	public int get_bytes_per_line() { log.finest("");return (Native.getInt(pData+40)); }
-	public void set_bytes_per_line(int v) { log.finest(""); Native.putInt(pData+40, v); }
-	public int get_bits_per_pixel() { log.finest("");return (Native.getInt(pData+44)); }
-	public void set_bits_per_pixel(int v) { log.finest(""); Native.putInt(pData+44, v); }
-	public long get_red_mask() { log.finest("");return (Native.getLong(pData+48)); }
-	public void set_red_mask(long v) { log.finest(""); Native.putLong(pData+48, v); }
-	public long get_green_mask() { log.finest("");return (Native.getLong(pData+52)); }
-	public void set_green_mask(long v) { log.finest(""); Native.putLong(pData+52, v); }
-	public long get_blue_mask() { log.finest("");return (Native.getLong(pData+56)); }
-	public void set_blue_mask(long v) { log.finest(""); Native.putLong(pData+56, v); }
-	public long get_obdata(int index) { log.finest(""); return Native.getLong(pData+60)+index*Native.getLongSize(); }
-	public long get_obdata() { log.finest("");return Native.getLong(pData+60); }
-	public void set_obdata(long v) { log.finest(""); Native.putLong(pData + 60, v); }
-	public long get_f_create_image(int index) { log.finest(""); return Native.getLong(pData+64)+index*Native.getLongSize(); }
-	public long get_f_create_image() { log.finest("");return Native.getLong(pData+64); }
-	public void set_f_create_image(long v) { log.finest(""); Native.putLong(pData + 64, v); }
-	public long get_f_destroy_image(int index) { log.finest(""); return Native.getLong(pData+68)+index*Native.getLongSize(); }
-	public long get_f_destroy_image() { log.finest("");return Native.getLong(pData+68); }
-	public void set_f_destroy_image(long v) { log.finest(""); Native.putLong(pData + 68, v); }
-	public long get_f_get_pixel(int index) { log.finest(""); return Native.getLong(pData+72)+index*Native.getLongSize(); }
-	public long get_f_get_pixel() { log.finest("");return Native.getLong(pData+72); }
-	public void set_f_get_pixel(long v) { log.finest(""); Native.putLong(pData + 72, v); }
-	public long get_f_put_pixel(int index) { log.finest(""); return Native.getLong(pData+76)+index*Native.getLongSize(); }
-	public long get_f_put_pixel() { log.finest("");return Native.getLong(pData+76); }
-	public void set_f_put_pixel(long v) { log.finest(""); Native.putLong(pData + 76, v); }
-	public long get_f_sub_image(int index) { log.finest(""); return Native.getLong(pData+80)+index*Native.getLongSize(); }
-	public long get_f_sub_image() { log.finest("");return Native.getLong(pData+80); }
-	public void set_f_sub_image(long v) { log.finest(""); Native.putLong(pData + 80, v); }
-	public long get_f_add_pixel(int index) { log.finest(""); return Native.getLong(pData+84)+index*Native.getLongSize(); }
-	public long get_f_add_pixel() { log.finest("");return Native.getLong(pData+84); }
-	public void set_f_add_pixel(long v) { log.finest(""); Native.putLong(pData + 84, v); }
+	public int get_byte_order() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(20):(24)))); }
+	public void set_byte_order(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(20):(24)), v); }
+	public int get_bitmap_unit() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(24):(28)))); }
+	public void set_bitmap_unit(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(24):(28)), v); }
+	public int get_bitmap_bit_order() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(28):(32)))); }
+	public void set_bitmap_bit_order(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(28):(32)), v); }
+	public int get_bitmap_pad() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(32):(36)))); }
+	public void set_bitmap_pad(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(32):(36)), v); }
+	public int get_depth() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(36):(40)))); }
+	public void set_depth(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(36):(40)), v); }
+	public int get_bytes_per_line() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(40):(44)))); }
+	public void set_bytes_per_line(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(40):(44)), v); }
+	public int get_bits_per_pixel() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(44):(48)))); }
+	public void set_bits_per_pixel(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(44):(48)), v); }
+	public long get_red_mask() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(48):(56)))); }
+	public void set_red_mask(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(48):(56)), v); }
+	public long get_green_mask() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(52):(64)))); }
+	public void set_green_mask(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(52):(64)), v); }
+	public long get_blue_mask() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(56):(72)))); }
+	public void set_blue_mask(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(56):(72)), v); }
+	public long get_obdata(int index) { log.finest(""); return Native.getLong(pData+((XlibWrapper.dataModel == 32)?(60):(80)))+index*Native.getLongSize(); }
+	public long get_obdata() { log.finest("");return Native.getLong(pData+((XlibWrapper.dataModel == 32)?(60):(80))); }
+	public void set_obdata(long v) { log.finest(""); Native.putLong(pData + ((XlibWrapper.dataModel == 32)?(60):(80)), v); }
+	public long get_f_create_image(int index) { log.finest(""); return Native.getLong(pData+((XlibWrapper.dataModel == 32)?(64):(88)))+index*Native.getLongSize(); }
+	public long get_f_create_image() { log.finest("");return Native.getLong(pData+((XlibWrapper.dataModel == 32)?(64):(88))); }
+	public void set_f_create_image(long v) { log.finest(""); Native.putLong(pData + ((XlibWrapper.dataModel == 32)?(64):(88)), v); }
+	public long get_f_destroy_image(int index) { log.finest(""); return Native.getLong(pData+((XlibWrapper.dataModel == 32)?(68):(96)))+index*Native.getLongSize(); }
+	public long get_f_destroy_image() { log.finest("");return Native.getLong(pData+((XlibWrapper.dataModel == 32)?(68):(96))); }
+	public void set_f_destroy_image(long v) { log.finest(""); Native.putLong(pData + ((XlibWrapper.dataModel == 32)?(68):(96)), v); }
+	public long get_f_get_pixel(int index) { log.finest(""); return Native.getLong(pData+((XlibWrapper.dataModel == 32)?(72):(104)))+index*Native.getLongSize(); }
+	public long get_f_get_pixel() { log.finest("");return Native.getLong(pData+((XlibWrapper.dataModel == 32)?(72):(104))); }
+	public void set_f_get_pixel(long v) { log.finest(""); Native.putLong(pData + ((XlibWrapper.dataModel == 32)?(72):(104)), v); }
+	public long get_f_put_pixel(int index) { log.finest(""); return Native.getLong(pData+((XlibWrapper.dataModel == 32)?(76):(112)))+index*Native.getLongSize(); }
+	public long get_f_put_pixel() { log.finest("");return Native.getLong(pData+((XlibWrapper.dataModel == 32)?(76):(112))); }
+	public void set_f_put_pixel(long v) { log.finest(""); Native.putLong(pData + ((XlibWrapper.dataModel == 32)?(76):(112)), v); }
+	public long get_f_sub_image(int index) { log.finest(""); return Native.getLong(pData+((XlibWrapper.dataModel == 32)?(80):(120)))+index*Native.getLongSize(); }
+	public long get_f_sub_image() { log.finest("");return Native.getLong(pData+((XlibWrapper.dataModel == 32)?(80):(120))); }
+	public void set_f_sub_image(long v) { log.finest(""); Native.putLong(pData + ((XlibWrapper.dataModel == 32)?(80):(120)), v); }
+	public long get_f_add_pixel(int index) { log.finest(""); return Native.getLong(pData+((XlibWrapper.dataModel == 32)?(84):(128)))+index*Native.getLongSize(); }
+	public long get_f_add_pixel() { log.finest("");return Native.getLong(pData+((XlibWrapper.dataModel == 32)?(84):(128))); }
+	public void set_f_add_pixel(long v) { log.finest(""); Native.putLong(pData + ((XlibWrapper.dataModel == 32)?(84):(128)), v); }
 
 
 	String getName() {
--- a/generated/sun/awt/X11/XKeyEvent.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/sun/awt/X11/XKeyEvent.java	Wed May 18 15:46:37 2011 +0100
@@ -8,7 +8,7 @@
 public class XKeyEvent extends XWrapperBase { 
 	private Unsafe unsafe = XlibWrapper.unsafe; 
 	private final boolean should_free_memory;
-	public static int getSize() { return 60; }
+	public static int getSize() { return ((XlibWrapper.dataModel == 32)?(60):(96)); }
 	public int getDataSize() { return getSize(); }
 
 	long pData;
@@ -16,14 +16,14 @@
 	public long getPData() { return pData; }
 
 
-	XKeyEvent(long addr) {
+	public XKeyEvent(long addr) {
 		log.finest("Creating");
 		pData=addr;
 		should_free_memory = false;
 	}
 
 
-	XKeyEvent() {
+	public XKeyEvent() {
 		log.finest("Creating");
 		pData = unsafe.allocateMemory(getSize());
 		should_free_memory = true;
@@ -39,34 +39,34 @@
 		}
 	public int get_type() { log.finest("");return (Native.getInt(pData+0)); }
 	public void set_type(int v) { log.finest(""); Native.putInt(pData+0, v); }
-	public long get_serial() { log.finest("");return (Native.getLong(pData+4)); }
-	public void set_serial(long v) { log.finest(""); Native.putLong(pData+4, v); }
-	public boolean get_send_event() { log.finest("");return (Native.getBool(pData+8)); }
-	public void set_send_event(boolean v) { log.finest(""); Native.putBool(pData+8, v); }
-	public long get_display() { log.finest("");return (Native.getLong(pData+12)); }
-	public void set_display(long v) { log.finest(""); Native.putLong(pData+12, v); }
-	public long get_window() { log.finest("");return (Native.getLong(pData+16)); }
-	public void set_window(long v) { log.finest(""); Native.putLong(pData+16, v); }
-	public long get_root() { log.finest("");return (Native.getLong(pData+20)); }
-	public void set_root(long v) { log.finest(""); Native.putLong(pData+20, v); }
-	public long get_subwindow() { log.finest("");return (Native.getLong(pData+24)); }
-	public void set_subwindow(long v) { log.finest(""); Native.putLong(pData+24, v); }
-	public long get_time() { log.finest("");return (Native.getULong(pData+28)); }
-	public void set_time(long v) { log.finest(""); Native.putULong(pData+28, v); }
-	public int get_x() { log.finest("");return (Native.getInt(pData+32)); }
-	public void set_x(int v) { log.finest(""); Native.putInt(pData+32, v); }
-	public int get_y() { log.finest("");return (Native.getInt(pData+36)); }
-	public void set_y(int v) { log.finest(""); Native.putInt(pData+36, v); }
-	public int get_x_root() { log.finest("");return (Native.getInt(pData+40)); }
-	public void set_x_root(int v) { log.finest(""); Native.putInt(pData+40, v); }
-	public int get_y_root() { log.finest("");return (Native.getInt(pData+44)); }
-	public void set_y_root(int v) { log.finest(""); Native.putInt(pData+44, v); }
-	public int get_state() { log.finest("");return (Native.getInt(pData+48)); }
-	public void set_state(int v) { log.finest(""); Native.putInt(pData+48, v); }
-	public int get_keycode() { log.finest("");return (Native.getInt(pData+52)); }
-	public void set_keycode(int v) { log.finest(""); Native.putInt(pData+52, v); }
-	public boolean get_same_screen() { log.finest("");return (Native.getBool(pData+56)); }
-	public void set_same_screen(boolean v) { log.finest(""); Native.putBool(pData+56, v); }
+	public long get_serial() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)))); }
+	public void set_serial(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)), v); }
+	public boolean get_send_event() { log.finest("");return (Native.getBool(pData+((XlibWrapper.dataModel == 32)?(8):(16)))); }
+	public void set_send_event(boolean v) { log.finest(""); Native.putBool(pData+((XlibWrapper.dataModel == 32)?(8):(16)), v); }
+	public long get_display() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(12):(24)))); }
+	public void set_display(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(12):(24)), v); }
+	public long get_window() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(16):(32)))); }
+	public void set_window(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(16):(32)), v); }
+	public long get_root() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(20):(40)))); }
+	public void set_root(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(20):(40)), v); }
+	public long get_subwindow() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(24):(48)))); }
+	public void set_subwindow(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(24):(48)), v); }
+	public long get_time() { log.finest("");return (Native.getULong(pData+((XlibWrapper.dataModel == 32)?(28):(56)))); }
+	public void set_time(long v) { log.finest(""); Native.putULong(pData+((XlibWrapper.dataModel == 32)?(28):(56)), v); }
+	public int get_x() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(32):(64)))); }
+	public void set_x(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(32):(64)), v); }
+	public int get_y() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(36):(68)))); }
+	public void set_y(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(36):(68)), v); }
+	public int get_x_root() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(40):(72)))); }
+	public void set_x_root(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(40):(72)), v); }
+	public int get_y_root() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(44):(76)))); }
+	public void set_y_root(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(44):(76)), v); }
+	public int get_state() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(48):(80)))); }
+	public void set_state(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(48):(80)), v); }
+	public int get_keycode() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(52):(84)))); }
+	public void set_keycode(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(52):(84)), v); }
+	public boolean get_same_screen() { log.finest("");return (Native.getBool(pData+((XlibWrapper.dataModel == 32)?(56):(88)))); }
+	public void set_same_screen(boolean v) { log.finest(""); Native.putBool(pData+((XlibWrapper.dataModel == 32)?(56):(88)), v); }
 
 
 	String getName() {
--- a/generated/sun/awt/X11/XKeyboardControl.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/sun/awt/X11/XKeyboardControl.java	Wed May 18 15:46:37 2011 +0100
@@ -16,14 +16,14 @@
 	public long getPData() { return pData; }
 
 
-	XKeyboardControl(long addr) {
+	public XKeyboardControl(long addr) {
 		log.finest("Creating");
 		pData=addr;
 		should_free_memory = false;
 	}
 
 
-	XKeyboardControl() {
+	public XKeyboardControl() {
 		log.finest("Creating");
 		pData = unsafe.allocateMemory(getSize());
 		should_free_memory = true;
--- a/generated/sun/awt/X11/XKeyboardState.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/sun/awt/X11/XKeyboardState.java	Wed May 18 15:46:37 2011 +0100
@@ -8,7 +8,7 @@
 public class XKeyboardState extends XWrapperBase { 
 	private Unsafe unsafe = XlibWrapper.unsafe; 
 	private final boolean should_free_memory;
-	public static int getSize() { return 56; }
+	public static int getSize() { return ((XlibWrapper.dataModel == 32)?(56):(64)); }
 	public int getDataSize() { return getSize(); }
 
 	long pData;
@@ -16,14 +16,14 @@
 	public long getPData() { return pData; }
 
 
-	XKeyboardState(long addr) {
+	public XKeyboardState(long addr) {
 		log.finest("Creating");
 		pData=addr;
 		should_free_memory = false;
 	}
 
 
-	XKeyboardState() {
+	public XKeyboardState() {
 		log.finest("Creating");
 		pData = unsafe.allocateMemory(getSize());
 		should_free_memory = true;
@@ -47,11 +47,11 @@
 	public void set_bell_duration(int v) { log.finest(""); Native.putInt(pData+12, v); }
 	public long get_led_mask() { log.finest("");return (Native.getLong(pData+16)); }
 	public void set_led_mask(long v) { log.finest(""); Native.putLong(pData+16, v); }
-	public int get_global_auto_repeat() { log.finest("");return (Native.getInt(pData+20)); }
-	public void set_global_auto_repeat(int v) { log.finest(""); Native.putInt(pData+20, v); }
-	public byte get_auto_repeats(int index) { log.finest("");return Native.getByte(pData + 24+index*1); }
-	public void set_auto_repeats(int index, byte v) { log.finest(""); Native.putByte(pData+24 + index*1, v); }
-	public long get_auto_repeats() { log.finest("");return pData+24; }
+	public int get_global_auto_repeat() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(20):(24)))); }
+	public void set_global_auto_repeat(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(20):(24)), v); }
+	public byte get_auto_repeats(int index) { log.finest("");return Native.getByte(pData + ((XlibWrapper.dataModel == 32)?(24):(28))+index*1); }
+	public void set_auto_repeats(int index, byte v) { log.finest(""); Native.putByte(pData+((XlibWrapper.dataModel == 32)?(24):(28)) + index*1, v); }
+	public long get_auto_repeats() { log.finest("");return pData+((XlibWrapper.dataModel == 32)?(24):(28)); }
 
 
 	String getName() {
--- a/generated/sun/awt/X11/XKeymapEvent.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/sun/awt/X11/XKeymapEvent.java	Wed May 18 15:46:37 2011 +0100
@@ -8,7 +8,7 @@
 public class XKeymapEvent extends XWrapperBase { 
 	private Unsafe unsafe = XlibWrapper.unsafe; 
 	private final boolean should_free_memory;
-	public static int getSize() { return 52; }
+	public static int getSize() { return ((XlibWrapper.dataModel == 32)?(52):(72)); }
 	public int getDataSize() { return getSize(); }
 
 	long pData;
@@ -16,14 +16,14 @@
 	public long getPData() { return pData; }
 
 
-	XKeymapEvent(long addr) {
+	public XKeymapEvent(long addr) {
 		log.finest("Creating");
 		pData=addr;
 		should_free_memory = false;
 	}
 
 
-	XKeymapEvent() {
+	public XKeymapEvent() {
 		log.finest("Creating");
 		pData = unsafe.allocateMemory(getSize());
 		should_free_memory = true;
@@ -39,17 +39,17 @@
 		}
 	public int get_type() { log.finest("");return (Native.getInt(pData+0)); }
 	public void set_type(int v) { log.finest(""); Native.putInt(pData+0, v); }
-	public long get_serial() { log.finest("");return (Native.getLong(pData+4)); }
-	public void set_serial(long v) { log.finest(""); Native.putLong(pData+4, v); }
-	public boolean get_send_event() { log.finest("");return (Native.getBool(pData+8)); }
-	public void set_send_event(boolean v) { log.finest(""); Native.putBool(pData+8, v); }
-	public long get_display() { log.finest("");return (Native.getLong(pData+12)); }
-	public void set_display(long v) { log.finest(""); Native.putLong(pData+12, v); }
-	public long get_window() { log.finest("");return (Native.getLong(pData+16)); }
-	public void set_window(long v) { log.finest(""); Native.putLong(pData+16, v); }
-	public byte get_key_vector(int index) { log.finest("");return Native.getByte(pData + 20+index*1); }
-	public void set_key_vector(int index, byte v) { log.finest(""); Native.putByte(pData+20 + index*1, v); }
-	public long get_key_vector() { log.finest("");return pData+20; }
+	public long get_serial() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)))); }
+	public void set_serial(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)), v); }
+	public boolean get_send_event() { log.finest("");return (Native.getBool(pData+((XlibWrapper.dataModel == 32)?(8):(16)))); }
+	public void set_send_event(boolean v) { log.finest(""); Native.putBool(pData+((XlibWrapper.dataModel == 32)?(8):(16)), v); }
+	public long get_display() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(12):(24)))); }
+	public void set_display(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(12):(24)), v); }
+	public long get_window() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(16):(32)))); }
+	public void set_window(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(16):(32)), v); }
+	public byte get_key_vector(int index) { log.finest("");return Native.getByte(pData + ((XlibWrapper.dataModel == 32)?(20):(40))+index*1); }
+	public void set_key_vector(int index, byte v) { log.finest(""); Native.putByte(pData+((XlibWrapper.dataModel == 32)?(20):(40)) + index*1, v); }
+	public long get_key_vector() { log.finest("");return pData+((XlibWrapper.dataModel == 32)?(20):(40)); }
 
 
 	String getName() {
--- a/generated/sun/awt/X11/XMapEvent.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/sun/awt/X11/XMapEvent.java	Wed May 18 15:46:37 2011 +0100
@@ -8,7 +8,7 @@
 public class XMapEvent extends XWrapperBase { 
 	private Unsafe unsafe = XlibWrapper.unsafe; 
 	private final boolean should_free_memory;
-	public static int getSize() { return 28; }
+	public static int getSize() { return ((XlibWrapper.dataModel == 32)?(28):(56)); }
 	public int getDataSize() { return getSize(); }
 
 	long pData;
@@ -16,14 +16,14 @@
 	public long getPData() { return pData; }
 
 
-	XMapEvent(long addr) {
+	public XMapEvent(long addr) {
 		log.finest("Creating");
 		pData=addr;
 		should_free_memory = false;
 	}
 
 
-	XMapEvent() {
+	public XMapEvent() {
 		log.finest("Creating");
 		pData = unsafe.allocateMemory(getSize());
 		should_free_memory = true;
@@ -39,18 +39,18 @@
 		}
 	public int get_type() { log.finest("");return (Native.getInt(pData+0)); }
 	public void set_type(int v) { log.finest(""); Native.putInt(pData+0, v); }
-	public long get_serial() { log.finest("");return (Native.getLong(pData+4)); }
-	public void set_serial(long v) { log.finest(""); Native.putLong(pData+4, v); }
-	public boolean get_send_event() { log.finest("");return (Native.getBool(pData+8)); }
-	public void set_send_event(boolean v) { log.finest(""); Native.putBool(pData+8, v); }
-	public long get_display() { log.finest("");return (Native.getLong(pData+12)); }
-	public void set_display(long v) { log.finest(""); Native.putLong(pData+12, v); }
-	public long get_event() { log.finest("");return (Native.getLong(pData+16)); }
-	public void set_event(long v) { log.finest(""); Native.putLong(pData+16, v); }
-	public long get_window() { log.finest("");return (Native.getLong(pData+20)); }
-	public void set_window(long v) { log.finest(""); Native.putLong(pData+20, v); }
-	public int get_override_redirect() { log.finest("");return (Native.getInt(pData+24)); }
-	public void set_override_redirect(int v) { log.finest(""); Native.putInt(pData+24, v); }
+	public long get_serial() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)))); }
+	public void set_serial(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)), v); }
+	public boolean get_send_event() { log.finest("");return (Native.getBool(pData+((XlibWrapper.dataModel == 32)?(8):(16)))); }
+	public void set_send_event(boolean v) { log.finest(""); Native.putBool(pData+((XlibWrapper.dataModel == 32)?(8):(16)), v); }
+	public long get_display() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(12):(24)))); }
+	public void set_display(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(12):(24)), v); }
+	public long get_event() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(16):(32)))); }
+	public void set_event(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(16):(32)), v); }
+	public long get_window() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(20):(40)))); }
+	public void set_window(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(20):(40)), v); }
+	public int get_override_redirect() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(24):(48)))); }
+	public void set_override_redirect(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(24):(48)), v); }
 
 
 	String getName() {
--- a/generated/sun/awt/X11/XMapRequestEvent.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/sun/awt/X11/XMapRequestEvent.java	Wed May 18 15:46:37 2011 +0100
@@ -8,7 +8,7 @@
 public class XMapRequestEvent extends XWrapperBase { 
 	private Unsafe unsafe = XlibWrapper.unsafe; 
 	private final boolean should_free_memory;
-	public static int getSize() { return 24; }
+	public static int getSize() { return ((XlibWrapper.dataModel == 32)?(24):(48)); }
 	public int getDataSize() { return getSize(); }
 
 	long pData;
@@ -16,14 +16,14 @@
 	public long getPData() { return pData; }
 
 
-	XMapRequestEvent(long addr) {
+	public XMapRequestEvent(long addr) {
 		log.finest("Creating");
 		pData=addr;
 		should_free_memory = false;
 	}
 
 
-	XMapRequestEvent() {
+	public XMapRequestEvent() {
 		log.finest("Creating");
 		pData = unsafe.allocateMemory(getSize());
 		should_free_memory = true;
@@ -39,16 +39,16 @@
 		}
 	public int get_type() { log.finest("");return (Native.getInt(pData+0)); }
 	public void set_type(int v) { log.finest(""); Native.putInt(pData+0, v); }
-	public long get_serial() { log.finest("");return (Native.getLong(pData+4)); }
-	public void set_serial(long v) { log.finest(""); Native.putLong(pData+4, v); }
-	public boolean get_send_event() { log.finest("");return (Native.getBool(pData+8)); }
-	public void set_send_event(boolean v) { log.finest(""); Native.putBool(pData+8, v); }
-	public long get_display() { log.finest("");return (Native.getLong(pData+12)); }
-	public void set_display(long v) { log.finest(""); Native.putLong(pData+12, v); }
-	public long get_parent() { log.finest("");return (Native.getLong(pData+16)); }
-	public void set_parent(long v) { log.finest(""); Native.putLong(pData+16, v); }
-	public long get_window() { log.finest("");return (Native.getLong(pData+20)); }
-	public void set_window(long v) { log.finest(""); Native.putLong(pData+20, v); }
+	public long get_serial() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)))); }
+	public void set_serial(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)), v); }
+	public boolean get_send_event() { log.finest("");return (Native.getBool(pData+((XlibWrapper.dataModel == 32)?(8):(16)))); }
+	public void set_send_event(boolean v) { log.finest(""); Native.putBool(pData+((XlibWrapper.dataModel == 32)?(8):(16)), v); }
+	public long get_display() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(12):(24)))); }
+	public void set_display(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(12):(24)), v); }
+	public long get_parent() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(16):(32)))); }
+	public void set_parent(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(16):(32)), v); }
+	public long get_window() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(20):(40)))); }
+	public void set_window(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(20):(40)), v); }
 
 
 	String getName() {
--- a/generated/sun/awt/X11/XMappingEvent.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/sun/awt/X11/XMappingEvent.java	Wed May 18 15:46:37 2011 +0100
@@ -8,7 +8,7 @@
 public class XMappingEvent extends XWrapperBase { 
 	private Unsafe unsafe = XlibWrapper.unsafe; 
 	private final boolean should_free_memory;
-	public static int getSize() { return 32; }
+	public static int getSize() { return ((XlibWrapper.dataModel == 32)?(32):(56)); }
 	public int getDataSize() { return getSize(); }
 
 	long pData;
@@ -16,14 +16,14 @@
 	public long getPData() { return pData; }
 
 
-	XMappingEvent(long addr) {
+	public XMappingEvent(long addr) {
 		log.finest("Creating");
 		pData=addr;
 		should_free_memory = false;
 	}
 
 
-	XMappingEvent() {
+	public XMappingEvent() {
 		log.finest("Creating");
 		pData = unsafe.allocateMemory(getSize());
 		should_free_memory = true;
@@ -39,20 +39,20 @@
 		}
 	public int get_type() { log.finest("");return (Native.getInt(pData+0)); }
 	public void set_type(int v) { log.finest(""); Native.putInt(pData+0, v); }
-	public long get_serial() { log.finest("");return (Native.getLong(pData+4)); }
-	public void set_serial(long v) { log.finest(""); Native.putLong(pData+4, v); }
-	public boolean get_send_event() { log.finest("");return (Native.getBool(pData+8)); }
-	public void set_send_event(boolean v) { log.finest(""); Native.putBool(pData+8, v); }
-	public long get_display() { log.finest("");return (Native.getLong(pData+12)); }
-	public void set_display(long v) { log.finest(""); Native.putLong(pData+12, v); }
-	public long get_window() { log.finest("");return (Native.getLong(pData+16)); }
-	public void set_window(long v) { log.finest(""); Native.putLong(pData+16, v); }
-	public int get_request() { log.finest("");return (Native.getInt(pData+20)); }
-	public void set_request(int v) { log.finest(""); Native.putInt(pData+20, v); }
-	public int get_first_keycode() { log.finest("");return (Native.getInt(pData+24)); }
-	public void set_first_keycode(int v) { log.finest(""); Native.putInt(pData+24, v); }
-	public int get_count() { log.finest("");return (Native.getInt(pData+28)); }
-	public void set_count(int v) { log.finest(""); Native.putInt(pData+28, v); }
+	public long get_serial() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)))); }
+	public void set_serial(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)), v); }
+	public boolean get_send_event() { log.finest("");return (Native.getBool(pData+((XlibWrapper.dataModel == 32)?(8):(16)))); }
+	public void set_send_event(boolean v) { log.finest(""); Native.putBool(pData+((XlibWrapper.dataModel == 32)?(8):(16)), v); }
+	public long get_display() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(12):(24)))); }
+	public void set_display(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(12):(24)), v); }
+	public long get_window() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(16):(32)))); }
+	public void set_window(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(16):(32)), v); }
+	public int get_request() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(20):(40)))); }
+	public void set_request(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(20):(40)), v); }
+	public int get_first_keycode() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(24):(44)))); }
+	public void set_first_keycode(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(24):(44)), v); }
+	public int get_count() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(28):(48)))); }
+	public void set_count(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(28):(48)), v); }
 
 
 	String getName() {
--- a/generated/sun/awt/X11/XModifierKeymap.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/sun/awt/X11/XModifierKeymap.java	Wed May 18 15:46:37 2011 +0100
@@ -8,7 +8,7 @@
 public class XModifierKeymap extends XWrapperBase { 
 	private Unsafe unsafe = XlibWrapper.unsafe; 
 	private final boolean should_free_memory;
-	public static int getSize() { return 8; }
+	public static int getSize() { return ((XlibWrapper.dataModel == 32)?(8):(16)); }
 	public int getDataSize() { return getSize(); }
 
 	long pData;
@@ -16,14 +16,14 @@
 	public long getPData() { return pData; }
 
 
-	XModifierKeymap(long addr) {
+	public XModifierKeymap(long addr) {
 		log.finest("Creating");
 		pData=addr;
 		should_free_memory = false;
 	}
 
 
-	XModifierKeymap() {
+	public XModifierKeymap() {
 		log.finest("Creating");
 		pData = unsafe.allocateMemory(getSize());
 		should_free_memory = true;
@@ -39,9 +39,9 @@
 		}
 	public int get_max_keypermod() { log.finest("");return (Native.getInt(pData+0)); }
 	public void set_max_keypermod(int v) { log.finest(""); Native.putInt(pData+0, v); }
-	public long get_modifiermap(int index) { log.finest(""); return Native.getLong(pData+4)+index*Native.getLongSize(); }
-	public long get_modifiermap() { log.finest("");return Native.getLong(pData+4); }
-	public void set_modifiermap(long v) { log.finest(""); Native.putLong(pData + 4, v); }
+	public long get_modifiermap(int index) { log.finest(""); return Native.getLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)))+index*Native.getLongSize(); }
+	public long get_modifiermap() { log.finest("");return Native.getLong(pData+((XlibWrapper.dataModel == 32)?(4):(8))); }
+	public void set_modifiermap(long v) { log.finest(""); Native.putLong(pData + ((XlibWrapper.dataModel == 32)?(4):(8)), v); }
 
 
 	String getName() {
--- a/generated/sun/awt/X11/XMotionEvent.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/sun/awt/X11/XMotionEvent.java	Wed May 18 15:46:37 2011 +0100
@@ -8,7 +8,7 @@
 public class XMotionEvent extends XWrapperBase { 
 	private Unsafe unsafe = XlibWrapper.unsafe; 
 	private final boolean should_free_memory;
-	public static int getSize() { return 60; }
+	public static int getSize() { return ((XlibWrapper.dataModel == 32)?(60):(96)); }
 	public int getDataSize() { return getSize(); }
 
 	long pData;
@@ -16,14 +16,14 @@
 	public long getPData() { return pData; }
 
 
-	XMotionEvent(long addr) {
+	public XMotionEvent(long addr) {
 		log.finest("Creating");
 		pData=addr;
 		should_free_memory = false;
 	}
 
 
-	XMotionEvent() {
+	public XMotionEvent() {
 		log.finest("Creating");
 		pData = unsafe.allocateMemory(getSize());
 		should_free_memory = true;
@@ -39,34 +39,34 @@
 		}
 	public int get_type() { log.finest("");return (Native.getInt(pData+0)); }
 	public void set_type(int v) { log.finest(""); Native.putInt(pData+0, v); }
-	public long get_serial() { log.finest("");return (Native.getLong(pData+4)); }
-	public void set_serial(long v) { log.finest(""); Native.putLong(pData+4, v); }
-	public boolean get_send_event() { log.finest("");return (Native.getBool(pData+8)); }
-	public void set_send_event(boolean v) { log.finest(""); Native.putBool(pData+8, v); }
-	public long get_display() { log.finest("");return (Native.getLong(pData+12)); }
-	public void set_display(long v) { log.finest(""); Native.putLong(pData+12, v); }
-	public long get_window() { log.finest("");return (Native.getLong(pData+16)); }
-	public void set_window(long v) { log.finest(""); Native.putLong(pData+16, v); }
-	public long get_root() { log.finest("");return (Native.getLong(pData+20)); }
-	public void set_root(long v) { log.finest(""); Native.putLong(pData+20, v); }
-	public long get_subwindow() { log.finest("");return (Native.getLong(pData+24)); }
-	public void set_subwindow(long v) { log.finest(""); Native.putLong(pData+24, v); }
-	public long get_time() { log.finest("");return (Native.getULong(pData+28)); }
-	public void set_time(long v) { log.finest(""); Native.putULong(pData+28, v); }
-	public int get_x() { log.finest("");return (Native.getInt(pData+32)); }
-	public void set_x(int v) { log.finest(""); Native.putInt(pData+32, v); }
-	public int get_y() { log.finest("");return (Native.getInt(pData+36)); }
-	public void set_y(int v) { log.finest(""); Native.putInt(pData+36, v); }
-	public int get_x_root() { log.finest("");return (Native.getInt(pData+40)); }
-	public void set_x_root(int v) { log.finest(""); Native.putInt(pData+40, v); }
-	public int get_y_root() { log.finest("");return (Native.getInt(pData+44)); }
-	public void set_y_root(int v) { log.finest(""); Native.putInt(pData+44, v); }
-	public int get_state() { log.finest("");return (Native.getInt(pData+48)); }
-	public void set_state(int v) { log.finest(""); Native.putInt(pData+48, v); }
-	public byte get_is_hint() { log.finest("");return (Native.getByte(pData+52)); }
-	public void set_is_hint(byte v) { log.finest(""); Native.putByte(pData+52, v); }
-	public boolean get_same_screen() { log.finest("");return (Native.getBool(pData+56)); }
-	public void set_same_screen(boolean v) { log.finest(""); Native.putBool(pData+56, v); }
+	public long get_serial() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)))); }
+	public void set_serial(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)), v); }
+	public boolean get_send_event() { log.finest("");return (Native.getBool(pData+((XlibWrapper.dataModel == 32)?(8):(16)))); }
+	public void set_send_event(boolean v) { log.finest(""); Native.putBool(pData+((XlibWrapper.dataModel == 32)?(8):(16)), v); }
+	public long get_display() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(12):(24)))); }
+	public void set_display(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(12):(24)), v); }
+	public long get_window() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(16):(32)))); }
+	public void set_window(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(16):(32)), v); }
+	public long get_root() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(20):(40)))); }
+	public void set_root(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(20):(40)), v); }
+	public long get_subwindow() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(24):(48)))); }
+	public void set_subwindow(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(24):(48)), v); }
+	public long get_time() { log.finest("");return (Native.getULong(pData+((XlibWrapper.dataModel == 32)?(28):(56)))); }
+	public void set_time(long v) { log.finest(""); Native.putULong(pData+((XlibWrapper.dataModel == 32)?(28):(56)), v); }
+	public int get_x() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(32):(64)))); }
+	public void set_x(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(32):(64)), v); }
+	public int get_y() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(36):(68)))); }
+	public void set_y(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(36):(68)), v); }
+	public int get_x_root() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(40):(72)))); }
+	public void set_x_root(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(40):(72)), v); }
+	public int get_y_root() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(44):(76)))); }
+	public void set_y_root(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(44):(76)), v); }
+	public int get_state() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(48):(80)))); }
+	public void set_state(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(48):(80)), v); }
+	public byte get_is_hint() { log.finest("");return (Native.getByte(pData+((XlibWrapper.dataModel == 32)?(52):(84)))); }
+	public void set_is_hint(byte v) { log.finest(""); Native.putByte(pData+((XlibWrapper.dataModel == 32)?(52):(84)), v); }
+	public boolean get_same_screen() { log.finest("");return (Native.getBool(pData+((XlibWrapper.dataModel == 32)?(56):(88)))); }
+	public void set_same_screen(boolean v) { log.finest(""); Native.putBool(pData+((XlibWrapper.dataModel == 32)?(56):(88)), v); }
 
 
 	String getName() {
--- a/generated/sun/awt/X11/XNoExposeEvent.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/sun/awt/X11/XNoExposeEvent.java	Wed May 18 15:46:37 2011 +0100
@@ -8,7 +8,7 @@
 public class XNoExposeEvent extends XWrapperBase { 
 	private Unsafe unsafe = XlibWrapper.unsafe; 
 	private final boolean should_free_memory;
-	public static int getSize() { return 28; }
+	public static int getSize() { return ((XlibWrapper.dataModel == 32)?(28):(48)); }
 	public int getDataSize() { return getSize(); }
 
 	long pData;
@@ -16,14 +16,14 @@
 	public long getPData() { return pData; }
 
 
-	XNoExposeEvent(long addr) {
+	public XNoExposeEvent(long addr) {
 		log.finest("Creating");
 		pData=addr;
 		should_free_memory = false;
 	}
 
 
-	XNoExposeEvent() {
+	public XNoExposeEvent() {
 		log.finest("Creating");
 		pData = unsafe.allocateMemory(getSize());
 		should_free_memory = true;
@@ -39,18 +39,18 @@
 		}
 	public int get_type() { log.finest("");return (Native.getInt(pData+0)); }
 	public void set_type(int v) { log.finest(""); Native.putInt(pData+0, v); }
-	public long get_serial() { log.finest("");return (Native.getLong(pData+4)); }
-	public void set_serial(long v) { log.finest(""); Native.putLong(pData+4, v); }
-	public boolean get_send_event() { log.finest("");return (Native.getBool(pData+8)); }
-	public void set_send_event(boolean v) { log.finest(""); Native.putBool(pData+8, v); }
-	public long get_display() { log.finest("");return (Native.getLong(pData+12)); }
-	public void set_display(long v) { log.finest(""); Native.putLong(pData+12, v); }
-	public long get_drawable() { log.finest("");return (Native.getLong(pData+16)); }
-	public void set_drawable(long v) { log.finest(""); Native.putLong(pData+16, v); }
-	public int get_major_code() { log.finest("");return (Native.getInt(pData+20)); }
-	public void set_major_code(int v) { log.finest(""); Native.putInt(pData+20, v); }
-	public int get_minor_code() { log.finest("");return (Native.getInt(pData+24)); }
-	public void set_minor_code(int v) { log.finest(""); Native.putInt(pData+24, v); }
+	public long get_serial() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)))); }
+	public void set_serial(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)), v); }
+	public boolean get_send_event() { log.finest("");return (Native.getBool(pData+((XlibWrapper.dataModel == 32)?(8):(16)))); }
+	public void set_send_event(boolean v) { log.finest(""); Native.putBool(pData+((XlibWrapper.dataModel == 32)?(8):(16)), v); }
+	public long get_display() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(12):(24)))); }
+	public void set_display(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(12):(24)), v); }
+	public long get_drawable() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(16):(32)))); }
+	public void set_drawable(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(16):(32)), v); }
+	public int get_major_code() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(20):(40)))); }
+	public void set_major_code(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(20):(40)), v); }
+	public int get_minor_code() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(24):(44)))); }
+	public void set_minor_code(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(24):(44)), v); }
 
 
 	String getName() {
--- a/generated/sun/awt/X11/XOMCharSetList.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/sun/awt/X11/XOMCharSetList.java	Wed May 18 15:46:37 2011 +0100
@@ -8,7 +8,7 @@
 public class XOMCharSetList extends XWrapperBase { 
 	private Unsafe unsafe = XlibWrapper.unsafe; 
 	private final boolean should_free_memory;
-	public static int getSize() { return 8; }
+	public static int getSize() { return ((XlibWrapper.dataModel == 32)?(8):(16)); }
 	public int getDataSize() { return getSize(); }
 
 	long pData;
@@ -16,14 +16,14 @@
 	public long getPData() { return pData; }
 
 
-	XOMCharSetList(long addr) {
+	public XOMCharSetList(long addr) {
 		log.finest("Creating");
 		pData=addr;
 		should_free_memory = false;
 	}
 
 
-	XOMCharSetList() {
+	public XOMCharSetList() {
 		log.finest("Creating");
 		pData = unsafe.allocateMemory(getSize());
 		should_free_memory = true;
@@ -39,9 +39,9 @@
 		}
 	public int get_charset_count() { log.finest("");return (Native.getInt(pData+0)); }
 	public void set_charset_count(int v) { log.finest(""); Native.putInt(pData+0, v); }
-	public long get_charset_list(int index) { log.finest(""); return Native.getLong(pData+4)+index*Native.getLongSize(); }
-	public long get_charset_list() { log.finest("");return Native.getLong(pData+4); }
-	public void set_charset_list(long v) { log.finest(""); Native.putLong(pData + 4, v); }
+	public long get_charset_list(int index) { log.finest(""); return Native.getLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)))+index*Native.getLongSize(); }
+	public long get_charset_list() { log.finest("");return Native.getLong(pData+((XlibWrapper.dataModel == 32)?(4):(8))); }
+	public void set_charset_list(long v) { log.finest(""); Native.putLong(pData + ((XlibWrapper.dataModel == 32)?(4):(8)), v); }
 
 
 	String getName() {
--- a/generated/sun/awt/X11/XOMFontInfo.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/sun/awt/X11/XOMFontInfo.java	Wed May 18 15:46:37 2011 +0100
@@ -8,7 +8,7 @@
 public class XOMFontInfo extends XWrapperBase { 
 	private Unsafe unsafe = XlibWrapper.unsafe; 
 	private final boolean should_free_memory;
-	public static int getSize() { return 12; }
+	public static int getSize() { return ((XlibWrapper.dataModel == 32)?(12):(24)); }
 	public int getDataSize() { return getSize(); }
 
 	long pData;
@@ -16,14 +16,14 @@
 	public long getPData() { return pData; }
 
 
-	XOMFontInfo(long addr) {
+	public XOMFontInfo(long addr) {
 		log.finest("Creating");
 		pData=addr;
 		should_free_memory = false;
 	}
 
 
-	XOMFontInfo() {
+	public XOMFontInfo() {
 		log.finest("Creating");
 		pData = unsafe.allocateMemory(getSize());
 		should_free_memory = true;
@@ -39,12 +39,12 @@
 		}
 	public int get_num_font() { log.finest("");return (Native.getInt(pData+0)); }
 	public void set_num_font(int v) { log.finest(""); Native.putInt(pData+0, v); }
-	public long get_font_struct_list(int index) { log.finest(""); return Native.getLong(pData+4)+index*Native.getLongSize(); }
-	public long get_font_struct_list() { log.finest("");return Native.getLong(pData+4); }
-	public void set_font_struct_list(long v) { log.finest(""); Native.putLong(pData + 4, v); }
-	public long get_font_name_list(int index) { log.finest(""); return Native.getLong(pData+8)+index*Native.getLongSize(); }
-	public long get_font_name_list() { log.finest("");return Native.getLong(pData+8); }
-	public void set_font_name_list(long v) { log.finest(""); Native.putLong(pData + 8, v); }
+	public long get_font_struct_list(int index) { log.finest(""); return Native.getLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)))+index*Native.getLongSize(); }
+	public long get_font_struct_list() { log.finest("");return Native.getLong(pData+((XlibWrapper.dataModel == 32)?(4):(8))); }
+	public void set_font_struct_list(long v) { log.finest(""); Native.putLong(pData + ((XlibWrapper.dataModel == 32)?(4):(8)), v); }
+	public long get_font_name_list(int index) { log.finest(""); return Native.getLong(pData+((XlibWrapper.dataModel == 32)?(8):(16)))+index*Native.getLongSize(); }
+	public long get_font_name_list() { log.finest("");return Native.getLong(pData+((XlibWrapper.dataModel == 32)?(8):(16))); }
+	public void set_font_name_list(long v) { log.finest(""); Native.putLong(pData + ((XlibWrapper.dataModel == 32)?(8):(16)), v); }
 
 
 	String getName() {
--- a/generated/sun/awt/X11/XOMOrientation.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/sun/awt/X11/XOMOrientation.java	Wed May 18 15:46:37 2011 +0100
@@ -8,7 +8,7 @@
 public class XOMOrientation extends XWrapperBase { 
 	private Unsafe unsafe = XlibWrapper.unsafe; 
 	private final boolean should_free_memory;
-	public static int getSize() { return 8; }
+	public static int getSize() { return ((XlibWrapper.dataModel == 32)?(8):(16)); }
 	public int getDataSize() { return getSize(); }
 
 	long pData;
@@ -16,14 +16,14 @@
 	public long getPData() { return pData; }
 
 
-	XOMOrientation(long addr) {
+	public XOMOrientation(long addr) {
 		log.finest("Creating");
 		pData=addr;
 		should_free_memory = false;
 	}
 
 
-	XOMOrientation() {
+	public XOMOrientation() {
 		log.finest("Creating");
 		pData = unsafe.allocateMemory(getSize());
 		should_free_memory = true;
@@ -39,9 +39,9 @@
 		}
 	public int get_num_orientation() { log.finest("");return (Native.getInt(pData+0)); }
 	public void set_num_orientation(int v) { log.finest(""); Native.putInt(pData+0, v); }
-	public int get_orientation(int index) { log.finest(""); return Native.getInt(Native.getLong(pData+4)+index*4); }
-	public long get_orientation() { log.finest("");return Native.getLong(pData+4); }
-	public void set_orientation(long v) { log.finest(""); Native.putLong(pData + 4, v); }
+	public int get_orientation(int index) { log.finest(""); return Native.getInt(Native.getLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)))+index*4); }
+	public long get_orientation() { log.finest("");return Native.getLong(pData+((XlibWrapper.dataModel == 32)?(4):(8))); }
+	public void set_orientation(long v) { log.finest(""); Native.putLong(pData + ((XlibWrapper.dataModel == 32)?(4):(8)), v); }
 
 
 	String getName() {
--- a/generated/sun/awt/X11/XPixmapFormatValues.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/sun/awt/X11/XPixmapFormatValues.java	Wed May 18 15:46:37 2011 +0100
@@ -16,14 +16,14 @@
 	public long getPData() { return pData; }
 
 
-	XPixmapFormatValues(long addr) {
+	public XPixmapFormatValues(long addr) {
 		log.finest("Creating");
 		pData=addr;
 		should_free_memory = false;
 	}
 
 
-	XPixmapFormatValues() {
+	public XPixmapFormatValues() {
 		log.finest("Creating");
 		pData = unsafe.allocateMemory(getSize());
 		should_free_memory = true;
--- a/generated/sun/awt/X11/XPoint.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/sun/awt/X11/XPoint.java	Wed May 18 15:46:37 2011 +0100
@@ -16,14 +16,14 @@
 	public long getPData() { return pData; }
 
 
-	XPoint(long addr) {
+	public XPoint(long addr) {
 		log.finest("Creating");
 		pData=addr;
 		should_free_memory = false;
 	}
 
 
-	XPoint() {
+	public XPoint() {
 		log.finest("Creating");
 		pData = unsafe.allocateMemory(getSize());
 		should_free_memory = true;
--- a/generated/sun/awt/X11/XPropertyEvent.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/sun/awt/X11/XPropertyEvent.java	Wed May 18 15:46:37 2011 +0100
@@ -8,7 +8,7 @@
 public class XPropertyEvent extends XWrapperBase { 
 	private Unsafe unsafe = XlibWrapper.unsafe; 
 	private final boolean should_free_memory;
-	public static int getSize() { return 32; }
+	public static int getSize() { return ((XlibWrapper.dataModel == 32)?(32):(64)); }
 	public int getDataSize() { return getSize(); }
 
 	long pData;
@@ -16,14 +16,14 @@
 	public long getPData() { return pData; }
 
 
-	XPropertyEvent(long addr) {
+	public XPropertyEvent(long addr) {
 		log.finest("Creating");
 		pData=addr;
 		should_free_memory = false;
 	}
 
 
-	XPropertyEvent() {
+	public XPropertyEvent() {
 		log.finest("Creating");
 		pData = unsafe.allocateMemory(getSize());
 		should_free_memory = true;
@@ -39,20 +39,20 @@
 		}
 	public int get_type() { log.finest("");return (Native.getInt(pData+0)); }
 	public void set_type(int v) { log.finest(""); Native.putInt(pData+0, v); }
-	public long get_serial() { log.finest("");return (Native.getLong(pData+4)); }
-	public void set_serial(long v) { log.finest(""); Native.putLong(pData+4, v); }
-	public boolean get_send_event() { log.finest("");return (Native.getBool(pData+8)); }
-	public void set_send_event(boolean v) { log.finest(""); Native.putBool(pData+8, v); }
-	public long get_display() { log.finest("");return (Native.getLong(pData+12)); }
-	public void set_display(long v) { log.finest(""); Native.putLong(pData+12, v); }
-	public long get_window() { log.finest("");return (Native.getLong(pData+16)); }
-	public void set_window(long v) { log.finest(""); Native.putLong(pData+16, v); }
-	public long get_atom() { log.finest("");return (Native.getLong(pData+20)); }
-	public void set_atom(long v) { log.finest(""); Native.putLong(pData+20, v); }
-	public long get_time() { log.finest("");return (Native.getULong(pData+24)); }
-	public void set_time(long v) { log.finest(""); Native.putULong(pData+24, v); }
-	public int get_state() { log.finest("");return (Native.getInt(pData+28)); }
-	public void set_state(int v) { log.finest(""); Native.putInt(pData+28, v); }
+	public long get_serial() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)))); }
+	public void set_serial(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)), v); }
+	public boolean get_send_event() { log.finest("");return (Native.getBool(pData+((XlibWrapper.dataModel == 32)?(8):(16)))); }
+	public void set_send_event(boolean v) { log.finest(""); Native.putBool(pData+((XlibWrapper.dataModel == 32)?(8):(16)), v); }
+	public long get_display() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(12):(24)))); }
+	public void set_display(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(12):(24)), v); }
+	public long get_window() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(16):(32)))); }
+	public void set_window(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(16):(32)), v); }
+	public long get_atom() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(20):(40)))); }
+	public void set_atom(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(20):(40)), v); }
+	public long get_time() { log.finest("");return (Native.getULong(pData+((XlibWrapper.dataModel == 32)?(24):(48)))); }
+	public void set_time(long v) { log.finest(""); Native.putULong(pData+((XlibWrapper.dataModel == 32)?(24):(48)), v); }
+	public int get_state() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(28):(56)))); }
+	public void set_state(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(28):(56)), v); }
 
 
 	String getName() {
--- a/generated/sun/awt/X11/XRectangle.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/sun/awt/X11/XRectangle.java	Wed May 18 15:46:37 2011 +0100
@@ -16,14 +16,14 @@
 	public long getPData() { return pData; }
 
 
-	XRectangle(long addr) {
+	public XRectangle(long addr) {
 		log.finest("Creating");
 		pData=addr;
 		should_free_memory = false;
 	}
 
 
-	XRectangle() {
+	public XRectangle() {
 		log.finest("Creating");
 		pData = unsafe.allocateMemory(getSize());
 		should_free_memory = true;
--- a/generated/sun/awt/X11/XReparentEvent.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/sun/awt/X11/XReparentEvent.java	Wed May 18 15:46:37 2011 +0100
@@ -8,7 +8,7 @@
 public class XReparentEvent extends XWrapperBase { 
 	private Unsafe unsafe = XlibWrapper.unsafe; 
 	private final boolean should_free_memory;
-	public static int getSize() { return 40; }
+	public static int getSize() { return ((XlibWrapper.dataModel == 32)?(40):(72)); }
 	public int getDataSize() { return getSize(); }
 
 	long pData;
@@ -16,14 +16,14 @@
 	public long getPData() { return pData; }
 
 
-	XReparentEvent(long addr) {
+	public XReparentEvent(long addr) {
 		log.finest("Creating");
 		pData=addr;
 		should_free_memory = false;
 	}
 
 
-	XReparentEvent() {
+	public XReparentEvent() {
 		log.finest("Creating");
 		pData = unsafe.allocateMemory(getSize());
 		should_free_memory = true;
@@ -39,24 +39,24 @@
 		}
 	public int get_type() { log.finest("");return (Native.getInt(pData+0)); }
 	public void set_type(int v) { log.finest(""); Native.putInt(pData+0, v); }
-	public long get_serial() { log.finest("");return (Native.getLong(pData+4)); }
-	public void set_serial(long v) { log.finest(""); Native.putLong(pData+4, v); }
-	public boolean get_send_event() { log.finest("");return (Native.getBool(pData+8)); }
-	public void set_send_event(boolean v) { log.finest(""); Native.putBool(pData+8, v); }
-	public long get_display() { log.finest("");return (Native.getLong(pData+12)); }
-	public void set_display(long v) { log.finest(""); Native.putLong(pData+12, v); }
-	public long get_event() { log.finest("");return (Native.getLong(pData+16)); }
-	public void set_event(long v) { log.finest(""); Native.putLong(pData+16, v); }
-	public long get_window() { log.finest("");return (Native.getLong(pData+20)); }
-	public void set_window(long v) { log.finest(""); Native.putLong(pData+20, v); }
-	public long get_parent() { log.finest("");return (Native.getLong(pData+24)); }
-	public void set_parent(long v) { log.finest(""); Native.putLong(pData+24, v); }
-	public int get_x() { log.finest("");return (Native.getInt(pData+28)); }
-	public void set_x(int v) { log.finest(""); Native.putInt(pData+28, v); }
-	public int get_y() { log.finest("");return (Native.getInt(pData+32)); }
-	public void set_y(int v) { log.finest(""); Native.putInt(pData+32, v); }
-	public boolean get_override_redirect() { log.finest("");return (Native.getBool(pData+36)); }
-	public void set_override_redirect(boolean v) { log.finest(""); Native.putBool(pData+36, v); }
+	public long get_serial() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)))); }
+	public void set_serial(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)), v); }
+	public boolean get_send_event() { log.finest("");return (Native.getBool(pData+((XlibWrapper.dataModel == 32)?(8):(16)))); }
+	public void set_send_event(boolean v) { log.finest(""); Native.putBool(pData+((XlibWrapper.dataModel == 32)?(8):(16)), v); }
+	public long get_display() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(12):(24)))); }
+	public void set_display(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(12):(24)), v); }
+	public long get_event() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(16):(32)))); }
+	public void set_event(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(16):(32)), v); }
+	public long get_window() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(20):(40)))); }
+	public void set_window(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(20):(40)), v); }
+	public long get_parent() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(24):(48)))); }
+	public void set_parent(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(24):(48)), v); }
+	public int get_x() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(28):(56)))); }
+	public void set_x(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(28):(56)), v); }
+	public int get_y() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(32):(60)))); }
+	public void set_y(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(32):(60)), v); }
+	public boolean get_override_redirect() { log.finest("");return (Native.getBool(pData+((XlibWrapper.dataModel == 32)?(36):(64)))); }
+	public void set_override_redirect(boolean v) { log.finest(""); Native.putBool(pData+((XlibWrapper.dataModel == 32)?(36):(64)), v); }
 
 
 	String getName() {
--- a/generated/sun/awt/X11/XResizeRequestEvent.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/sun/awt/X11/XResizeRequestEvent.java	Wed May 18 15:46:37 2011 +0100
@@ -8,7 +8,7 @@
 public class XResizeRequestEvent extends XWrapperBase { 
 	private Unsafe unsafe = XlibWrapper.unsafe; 
 	private final boolean should_free_memory;
-	public static int getSize() { return 28; }
+	public static int getSize() { return ((XlibWrapper.dataModel == 32)?(28):(48)); }
 	public int getDataSize() { return getSize(); }
 
 	long pData;
@@ -16,14 +16,14 @@
 	public long getPData() { return pData; }
 
 
-	XResizeRequestEvent(long addr) {
+	public XResizeRequestEvent(long addr) {
 		log.finest("Creating");
 		pData=addr;
 		should_free_memory = false;
 	}
 
 
-	XResizeRequestEvent() {
+	public XResizeRequestEvent() {
 		log.finest("Creating");
 		pData = unsafe.allocateMemory(getSize());
 		should_free_memory = true;
@@ -39,18 +39,18 @@
 		}
 	public int get_type() { log.finest("");return (Native.getInt(pData+0)); }
 	public void set_type(int v) { log.finest(""); Native.putInt(pData+0, v); }
-	public long get_serial() { log.finest("");return (Native.getLong(pData+4)); }
-	public void set_serial(long v) { log.finest(""); Native.putLong(pData+4, v); }
-	public boolean get_send_event() { log.finest("");return (Native.getBool(pData+8)); }
-	public void set_send_event(boolean v) { log.finest(""); Native.putBool(pData+8, v); }
-	public long get_display() { log.finest("");return (Native.getLong(pData+12)); }
-	public void set_display(long v) { log.finest(""); Native.putLong(pData+12, v); }
-	public long get_window() { log.finest("");return (Native.getLong(pData+16)); }
-	public void set_window(long v) { log.finest(""); Native.putLong(pData+16, v); }
-	public int get_width() { log.finest("");return (Native.getInt(pData+20)); }
-	public void set_width(int v) { log.finest(""); Native.putInt(pData+20, v); }
-	public int get_height() { log.finest("");return (Native.getInt(pData+24)); }
-	public void set_height(int v) { log.finest(""); Native.putInt(pData+24, v); }
+	public long get_serial() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)))); }
+	public void set_serial(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)), v); }
+	public boolean get_send_event() { log.finest("");return (Native.getBool(pData+((XlibWrapper.dataModel == 32)?(8):(16)))); }
+	public void set_send_event(boolean v) { log.finest(""); Native.putBool(pData+((XlibWrapper.dataModel == 32)?(8):(16)), v); }
+	public long get_display() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(12):(24)))); }
+	public void set_display(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(12):(24)), v); }
+	public long get_window() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(16):(32)))); }
+	public void set_window(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(16):(32)), v); }
+	public int get_width() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(20):(40)))); }
+	public void set_width(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(20):(40)), v); }
+	public int get_height() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(24):(44)))); }
+	public void set_height(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(24):(44)), v); }
 
 
 	String getName() {
--- a/generated/sun/awt/X11/XSegment.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/sun/awt/X11/XSegment.java	Wed May 18 15:46:37 2011 +0100
@@ -16,14 +16,14 @@
 	public long getPData() { return pData; }
 
 
-	XSegment(long addr) {
+	public XSegment(long addr) {
 		log.finest("Creating");
 		pData=addr;
 		should_free_memory = false;
 	}
 
 
-	XSegment() {
+	public XSegment() {
 		log.finest("Creating");
 		pData = unsafe.allocateMemory(getSize());
 		should_free_memory = true;
--- a/generated/sun/awt/X11/XSelectionClearEvent.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/sun/awt/X11/XSelectionClearEvent.java	Wed May 18 15:46:37 2011 +0100
@@ -8,7 +8,7 @@
 public class XSelectionClearEvent extends XWrapperBase { 
 	private Unsafe unsafe = XlibWrapper.unsafe; 
 	private final boolean should_free_memory;
-	public static int getSize() { return 28; }
+	public static int getSize() { return ((XlibWrapper.dataModel == 32)?(28):(56)); }
 	public int getDataSize() { return getSize(); }
 
 	long pData;
@@ -16,14 +16,14 @@
 	public long getPData() { return pData; }
 
 
-	XSelectionClearEvent(long addr) {
+	public XSelectionClearEvent(long addr) {
 		log.finest("Creating");
 		pData=addr;
 		should_free_memory = false;
 	}
 
 
-	XSelectionClearEvent() {
+	public XSelectionClearEvent() {
 		log.finest("Creating");
 		pData = unsafe.allocateMemory(getSize());
 		should_free_memory = true;
@@ -39,18 +39,18 @@
 		}
 	public int get_type() { log.finest("");return (Native.getInt(pData+0)); }
 	public void set_type(int v) { log.finest(""); Native.putInt(pData+0, v); }
-	public long get_serial() { log.finest("");return (Native.getLong(pData+4)); }
-	public void set_serial(long v) { log.finest(""); Native.putLong(pData+4, v); }
-	public boolean get_send_event() { log.finest("");return (Native.getBool(pData+8)); }
-	public void set_send_event(boolean v) { log.finest(""); Native.putBool(pData+8, v); }
-	public long get_display() { log.finest("");return (Native.getLong(pData+12)); }
-	public void set_display(long v) { log.finest(""); Native.putLong(pData+12, v); }
-	public long get_window() { log.finest("");return (Native.getLong(pData+16)); }
-	public void set_window(long v) { log.finest(""); Native.putLong(pData+16, v); }
-	public long get_selection() { log.finest("");return (Native.getLong(pData+20)); }
-	public void set_selection(long v) { log.finest(""); Native.putLong(pData+20, v); }
-	public long get_time() { log.finest("");return (Native.getULong(pData+24)); }
-	public void set_time(long v) { log.finest(""); Native.putULong(pData+24, v); }
+	public long get_serial() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)))); }
+	public void set_serial(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)), v); }
+	public boolean get_send_event() { log.finest("");return (Native.getBool(pData+((XlibWrapper.dataModel == 32)?(8):(16)))); }
+	public void set_send_event(boolean v) { log.finest(""); Native.putBool(pData+((XlibWrapper.dataModel == 32)?(8):(16)), v); }
+	public long get_display() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(12):(24)))); }
+	public void set_display(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(12):(24)), v); }
+	public long get_window() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(16):(32)))); }
+	public void set_window(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(16):(32)), v); }
+	public long get_selection() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(20):(40)))); }
+	public void set_selection(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(20):(40)), v); }
+	public long get_time() { log.finest("");return (Native.getULong(pData+((XlibWrapper.dataModel == 32)?(24):(48)))); }
+	public void set_time(long v) { log.finest(""); Native.putULong(pData+((XlibWrapper.dataModel == 32)?(24):(48)), v); }
 
 
 	String getName() {
--- a/generated/sun/awt/X11/XSelectionEvent.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/sun/awt/X11/XSelectionEvent.java	Wed May 18 15:46:37 2011 +0100
@@ -8,7 +8,7 @@
 public class XSelectionEvent extends XWrapperBase { 
 	private Unsafe unsafe = XlibWrapper.unsafe; 
 	private final boolean should_free_memory;
-	public static int getSize() { return 36; }
+	public static int getSize() { return ((XlibWrapper.dataModel == 32)?(36):(72)); }
 	public int getDataSize() { return getSize(); }
 
 	long pData;
@@ -16,14 +16,14 @@
 	public long getPData() { return pData; }
 
 
-	XSelectionEvent(long addr) {
+	public XSelectionEvent(long addr) {
 		log.finest("Creating");
 		pData=addr;
 		should_free_memory = false;
 	}
 
 
-	XSelectionEvent() {
+	public XSelectionEvent() {
 		log.finest("Creating");
 		pData = unsafe.allocateMemory(getSize());
 		should_free_memory = true;
@@ -39,22 +39,22 @@
 		}
 	public int get_type() { log.finest("");return (Native.getInt(pData+0)); }
 	public void set_type(int v) { log.finest(""); Native.putInt(pData+0, v); }
-	public long get_serial() { log.finest("");return (Native.getLong(pData+4)); }
-	public void set_serial(long v) { log.finest(""); Native.putLong(pData+4, v); }
-	public boolean get_send_event() { log.finest("");return (Native.getBool(pData+8)); }
-	public void set_send_event(boolean v) { log.finest(""); Native.putBool(pData+8, v); }
-	public long get_display() { log.finest("");return (Native.getLong(pData+12)); }
-	public void set_display(long v) { log.finest(""); Native.putLong(pData+12, v); }
-	public long get_requestor() { log.finest("");return (Native.getLong(pData+16)); }
-	public void set_requestor(long v) { log.finest(""); Native.putLong(pData+16, v); }
-	public long get_selection() { log.finest("");return (Native.getLong(pData+20)); }
-	public void set_selection(long v) { log.finest(""); Native.putLong(pData+20, v); }
-	public long get_target() { log.finest("");return (Native.getLong(pData+24)); }
-	public void set_target(long v) { log.finest(""); Native.putLong(pData+24, v); }
-	public long get_property() { log.finest("");return (Native.getLong(pData+28)); }
-	public void set_property(long v) { log.finest(""); Native.putLong(pData+28, v); }
-	public long get_time() { log.finest("");return (Native.getULong(pData+32)); }
-	public void set_time(long v) { log.finest(""); Native.putULong(pData+32, v); }
+	public long get_serial() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)))); }
+	public void set_serial(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)), v); }
+	public boolean get_send_event() { log.finest("");return (Native.getBool(pData+((XlibWrapper.dataModel == 32)?(8):(16)))); }
+	public void set_send_event(boolean v) { log.finest(""); Native.putBool(pData+((XlibWrapper.dataModel == 32)?(8):(16)), v); }
+	public long get_display() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(12):(24)))); }
+	public void set_display(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(12):(24)), v); }
+	public long get_requestor() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(16):(32)))); }
+	public void set_requestor(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(16):(32)), v); }
+	public long get_selection() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(20):(40)))); }
+	public void set_selection(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(20):(40)), v); }
+	public long get_target() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(24):(48)))); }
+	public void set_target(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(24):(48)), v); }
+	public long get_property() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(28):(56)))); }
+	public void set_property(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(28):(56)), v); }
+	public long get_time() { log.finest("");return (Native.getULong(pData+((XlibWrapper.dataModel == 32)?(32):(64)))); }
+	public void set_time(long v) { log.finest(""); Native.putULong(pData+((XlibWrapper.dataModel == 32)?(32):(64)), v); }
 
 
 	String getName() {
--- a/generated/sun/awt/X11/XSelectionRequestEvent.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/sun/awt/X11/XSelectionRequestEvent.java	Wed May 18 15:46:37 2011 +0100
@@ -8,7 +8,7 @@
 public class XSelectionRequestEvent extends XWrapperBase { 
 	private Unsafe unsafe = XlibWrapper.unsafe; 
 	private final boolean should_free_memory;
-	public static int getSize() { return 40; }
+	public static int getSize() { return ((XlibWrapper.dataModel == 32)?(40):(80)); }
 	public int getDataSize() { return getSize(); }
 
 	long pData;
@@ -16,14 +16,14 @@
 	public long getPData() { return pData; }
 
 
-	XSelectionRequestEvent(long addr) {
+	public XSelectionRequestEvent(long addr) {
 		log.finest("Creating");
 		pData=addr;
 		should_free_memory = false;
 	}
 
 
-	XSelectionRequestEvent() {
+	public XSelectionRequestEvent() {
 		log.finest("Creating");
 		pData = unsafe.allocateMemory(getSize());
 		should_free_memory = true;
@@ -39,24 +39,24 @@
 		}
 	public int get_type() { log.finest("");return (Native.getInt(pData+0)); }
 	public void set_type(int v) { log.finest(""); Native.putInt(pData+0, v); }
-	public long get_serial() { log.finest("");return (Native.getLong(pData+4)); }
-	public void set_serial(long v) { log.finest(""); Native.putLong(pData+4, v); }
-	public boolean get_send_event() { log.finest("");return (Native.getBool(pData+8)); }
-	public void set_send_event(boolean v) { log.finest(""); Native.putBool(pData+8, v); }
-	public long get_display() { log.finest("");return (Native.getLong(pData+12)); }
-	public void set_display(long v) { log.finest(""); Native.putLong(pData+12, v); }
-	public long get_owner() { log.finest("");return (Native.getLong(pData+16)); }
-	public void set_owner(long v) { log.finest(""); Native.putLong(pData+16, v); }
-	public long get_requestor() { log.finest("");return (Native.getLong(pData+20)); }
-	public void set_requestor(long v) { log.finest(""); Native.putLong(pData+20, v); }
-	public long get_selection() { log.finest("");return (Native.getLong(pData+24)); }
-	public void set_selection(long v) { log.finest(""); Native.putLong(pData+24, v); }
-	public long get_target() { log.finest("");return (Native.getLong(pData+28)); }
-	public void set_target(long v) { log.finest(""); Native.putLong(pData+28, v); }
-	public long get_property() { log.finest("");return (Native.getLong(pData+32)); }
-	public void set_property(long v) { log.finest(""); Native.putLong(pData+32, v); }
-	public long get_time() { log.finest("");return (Native.getULong(pData+36)); }
-	public void set_time(long v) { log.finest(""); Native.putULong(pData+36, v); }
+	public long get_serial() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)))); }
+	public void set_serial(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)), v); }
+	public boolean get_send_event() { log.finest("");return (Native.getBool(pData+((XlibWrapper.dataModel == 32)?(8):(16)))); }
+	public void set_send_event(boolean v) { log.finest(""); Native.putBool(pData+((XlibWrapper.dataModel == 32)?(8):(16)), v); }
+	public long get_display() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(12):(24)))); }
+	public void set_display(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(12):(24)), v); }
+	public long get_owner() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(16):(32)))); }
+	public void set_owner(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(16):(32)), v); }
+	public long get_requestor() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(20):(40)))); }
+	public void set_requestor(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(20):(40)), v); }
+	public long get_selection() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(24):(48)))); }
+	public void set_selection(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(24):(48)), v); }
+	public long get_target() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(28):(56)))); }
+	public void set_target(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(28):(56)), v); }
+	public long get_property() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(32):(64)))); }
+	public void set_property(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(32):(64)), v); }
+	public long get_time() { log.finest("");return (Native.getULong(pData+((XlibWrapper.dataModel == 32)?(36):(72)))); }
+	public void set_time(long v) { log.finest(""); Native.putULong(pData+((XlibWrapper.dataModel == 32)?(36):(72)), v); }
 
 
 	String getName() {
--- a/generated/sun/awt/X11/XSetWindowAttributes.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/sun/awt/X11/XSetWindowAttributes.java	Wed May 18 15:46:37 2011 +0100
@@ -8,7 +8,7 @@
 public class XSetWindowAttributes extends XWrapperBase { 
 	private Unsafe unsafe = XlibWrapper.unsafe; 
 	private final boolean should_free_memory;
-	public static int getSize() { return 60; }
+	public static int getSize() { return ((XlibWrapper.dataModel == 32)?(60):(112)); }
 	public int getDataSize() { return getSize(); }
 
 	long pData;
@@ -16,14 +16,14 @@
 	public long getPData() { return pData; }
 
 
-	XSetWindowAttributes(long addr) {
+	public XSetWindowAttributes(long addr) {
 		log.finest("Creating");
 		pData=addr;
 		should_free_memory = false;
 	}
 
 
-	XSetWindowAttributes() {
+	public XSetWindowAttributes() {
 		log.finest("Creating");
 		pData = unsafe.allocateMemory(getSize());
 		should_free_memory = true;
@@ -39,34 +39,34 @@
 		}
 	public long get_background_pixmap() { log.finest("");return (Native.getLong(pData+0)); }
 	public void set_background_pixmap(long v) { log.finest(""); Native.putLong(pData+0, v); }
-	public long get_background_pixel() { log.finest("");return (Native.getLong(pData+4)); }
-	public void set_background_pixel(long v) { log.finest(""); Native.putLong(pData+4, v); }
-	public long get_border_pixmap() { log.finest("");return (Native.getLong(pData+8)); }
-	public void set_border_pixmap(long v) { log.finest(""); Native.putLong(pData+8, v); }
-	public long get_border_pixel() { log.finest("");return (Native.getLong(pData+12)); }
-	public void set_border_pixel(long v) { log.finest(""); Native.putLong(pData+12, v); }
-	public int get_bit_gravity() { log.finest("");return (Native.getInt(pData+16)); }
-	public void set_bit_gravity(int v) { log.finest(""); Native.putInt(pData+16, v); }
-	public int get_win_gravity() { log.finest("");return (Native.getInt(pData+20)); }
-	public void set_win_gravity(int v) { log.finest(""); Native.putInt(pData+20, v); }
-	public int get_backing_store() { log.finest("");return (Native.getInt(pData+24)); }
-	public void set_backing_store(int v) { log.finest(""); Native.putInt(pData+24, v); }
-	public long get_backing_planes() { log.finest("");return (Native.getLong(pData+28)); }
-	public void set_backing_planes(long v) { log.finest(""); Native.putLong(pData+28, v); }
-	public long get_backing_pixel() { log.finest("");return (Native.getLong(pData+32)); }
-	public void set_backing_pixel(long v) { log.finest(""); Native.putLong(pData+32, v); }
-	public boolean get_save_under() { log.finest("");return (Native.getBool(pData+36)); }
-	public void set_save_under(boolean v) { log.finest(""); Native.putBool(pData+36, v); }
-	public long get_event_mask() { log.finest("");return (Native.getLong(pData+40)); }
-	public void set_event_mask(long v) { log.finest(""); Native.putLong(pData+40, v); }
-	public long get_do_not_propagate_mask() { log.finest("");return (Native.getLong(pData+44)); }
-	public void set_do_not_propagate_mask(long v) { log.finest(""); Native.putLong(pData+44, v); }
-	public boolean get_override_redirect() { log.finest("");return (Native.getBool(pData+48)); }
-	public void set_override_redirect(boolean v) { log.finest(""); Native.putBool(pData+48, v); }
-	public long get_colormap() { log.finest("");return (Native.getLong(pData+52)); }
-	public void set_colormap(long v) { log.finest(""); Native.putLong(pData+52, v); }
-	public long get_cursor() { log.finest("");return (Native.getLong(pData+56)); }
-	public void set_cursor(long v) { log.finest(""); Native.putLong(pData+56, v); }
+	public long get_background_pixel() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)))); }
+	public void set_background_pixel(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)), v); }
+	public long get_border_pixmap() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(8):(16)))); }
+	public void set_border_pixmap(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(8):(16)), v); }
+	public long get_border_pixel() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(12):(24)))); }
+	public void set_border_pixel(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(12):(24)), v); }
+	public int get_bit_gravity() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(16):(32)))); }
+	public void set_bit_gravity(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(16):(32)), v); }
+	public int get_win_gravity() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(20):(36)))); }
+	public void set_win_gravity(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(20):(36)), v); }
+	public int get_backing_store() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(24):(40)))); }
+	public void set_backing_store(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(24):(40)), v); }
+	public long get_backing_planes() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(28):(48)))); }
+	public void set_backing_planes(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(28):(48)), v); }
+	public long get_backing_pixel() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(32):(56)))); }
+	public void set_backing_pixel(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(32):(56)), v); }
+	public boolean get_save_under() { log.finest("");return (Native.getBool(pData+((XlibWrapper.dataModel == 32)?(36):(64)))); }
+	public void set_save_under(boolean v) { log.finest(""); Native.putBool(pData+((XlibWrapper.dataModel == 32)?(36):(64)), v); }
+	public long get_event_mask() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(40):(72)))); }
+	public void set_event_mask(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(40):(72)), v); }
+	public long get_do_not_propagate_mask() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(44):(80)))); }
+	public void set_do_not_propagate_mask(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(44):(80)), v); }
+	public boolean get_override_redirect() { log.finest("");return (Native.getBool(pData+((XlibWrapper.dataModel == 32)?(48):(88)))); }
+	public void set_override_redirect(boolean v) { log.finest(""); Native.putBool(pData+((XlibWrapper.dataModel == 32)?(48):(88)), v); }
+	public long get_colormap() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(52):(96)))); }
+	public void set_colormap(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(52):(96)), v); }
+	public long get_cursor() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(56):(104)))); }
+	public void set_cursor(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(56):(104)), v); }
 
 
 	String getName() {
--- a/generated/sun/awt/X11/XSizeHints.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/sun/awt/X11/XSizeHints.java	Wed May 18 15:46:37 2011 +0100
@@ -8,7 +8,7 @@
 public class XSizeHints extends XWrapperBase { 
 	private Unsafe unsafe = XlibWrapper.unsafe; 
 	private final boolean should_free_memory;
-	public static int getSize() { return 72; }
+	public static int getSize() { return ((XlibWrapper.dataModel == 32)?(72):(80)); }
 	public int getDataSize() { return getSize(); }
 
 	long pData;
@@ -16,14 +16,14 @@
 	public long getPData() { return pData; }
 
 
-	XSizeHints(long addr) {
+	public XSizeHints(long addr) {
 		log.finest("Creating");
 		pData=addr;
 		should_free_memory = false;
 	}
 
 
-	XSizeHints() {
+	public XSizeHints() {
 		log.finest("Creating");
 		pData = unsafe.allocateMemory(getSize());
 		should_free_memory = true;
@@ -39,40 +39,40 @@
 		}
 	public long get_flags() { log.finest("");return (Native.getLong(pData+0)); }
 	public void set_flags(long v) { log.finest(""); Native.putLong(pData+0, v); }
-	public int get_x() { log.finest("");return (Native.getInt(pData+4)); }
-	public void set_x(int v) { log.finest(""); Native.putInt(pData+4, v); }
-	public int get_y() { log.finest("");return (Native.getInt(pData+8)); }
-	public void set_y(int v) { log.finest(""); Native.putInt(pData+8, v); }
-	public int get_width() { log.finest("");return (Native.getInt(pData+12)); }
-	public void set_width(int v) { log.finest(""); Native.putInt(pData+12, v); }
-	public int get_height() { log.finest("");return (Native.getInt(pData+16)); }
-	public void set_height(int v) { log.finest(""); Native.putInt(pData+16, v); }
-	public int get_min_width() { log.finest("");return (Native.getInt(pData+20)); }
-	public void set_min_width(int v) { log.finest(""); Native.putInt(pData+20, v); }
-	public int get_min_height() { log.finest("");return (Native.getInt(pData+24)); }
-	public void set_min_height(int v) { log.finest(""); Native.putInt(pData+24, v); }
-	public int get_max_width() { log.finest("");return (Native.getInt(pData+28)); }
-	public void set_max_width(int v) { log.finest(""); Native.putInt(pData+28, v); }
-	public int get_max_height() { log.finest("");return (Native.getInt(pData+32)); }
-	public void set_max_height(int v) { log.finest(""); Native.putInt(pData+32, v); }
-	public int get_width_inc() { log.finest("");return (Native.getInt(pData+36)); }
-	public void set_width_inc(int v) { log.finest(""); Native.putInt(pData+36, v); }
-	public int get_height_inc() { log.finest("");return (Native.getInt(pData+40)); }
-	public void set_height_inc(int v) { log.finest(""); Native.putInt(pData+40, v); }
-	public int get_min_aspect_x() { log.finest("");return (Native.getInt(pData+44)); }
-	public void set_min_aspect_x(int v) { log.finest(""); Native.putInt(pData+44, v); }
-	public int get_min_aspect_y() { log.finest("");return (Native.getInt(pData+48)); }
-	public void set_min_aspect_y(int v) { log.finest(""); Native.putInt(pData+48, v); }
-	public int get_max_aspect_x() { log.finest("");return (Native.getInt(pData+52)); }
-	public void set_max_aspect_x(int v) { log.finest(""); Native.putInt(pData+52, v); }
-	public int get_max_aspect_y() { log.finest("");return (Native.getInt(pData+56)); }
-	public void set_max_aspect_y(int v) { log.finest(""); Native.putInt(pData+56, v); }
-	public int get_base_width() { log.finest("");return (Native.getInt(pData+60)); }
-	public void set_base_width(int v) { log.finest(""); Native.putInt(pData+60, v); }
-	public int get_base_height() { log.finest("");return (Native.getInt(pData+64)); }
-	public void set_base_height(int v) { log.finest(""); Native.putInt(pData+64, v); }
-	public int get_win_gravity() { log.finest("");return (Native.getInt(pData+68)); }
-	public void set_win_gravity(int v) { log.finest(""); Native.putInt(pData+68, v); }
+	public int get_x() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(4):(8)))); }
+	public void set_x(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(4):(8)), v); }
+	public int get_y() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(8):(12)))); }
+	public void set_y(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(8):(12)), v); }
+	public int get_width() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(12):(16)))); }
+	public void set_width(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(12):(16)), v); }
+	public int get_height() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(16):(20)))); }
+	public void set_height(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(16):(20)), v); }
+	public int get_min_width() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(20):(24)))); }
+	public void set_min_width(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(20):(24)), v); }
+	public int get_min_height() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(24):(28)))); }
+	public void set_min_height(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(24):(28)), v); }
+	public int get_max_width() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(28):(32)))); }
+	public void set_max_width(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(28):(32)), v); }
+	public int get_max_height() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(32):(36)))); }
+	public void set_max_height(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(32):(36)), v); }
+	public int get_width_inc() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(36):(40)))); }
+	public void set_width_inc(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(36):(40)), v); }
+	public int get_height_inc() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(40):(44)))); }
+	public void set_height_inc(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(40):(44)), v); }
+	public int get_min_aspect_x() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(44):(48)))); }
+	public void set_min_aspect_x(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(44):(48)), v); }
+	public int get_min_aspect_y() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(48):(52)))); }
+	public void set_min_aspect_y(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(48):(52)), v); }
+	public int get_max_aspect_x() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(52):(56)))); }
+	public void set_max_aspect_x(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(52):(56)), v); }
+	public int get_max_aspect_y() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(56):(60)))); }
+	public void set_max_aspect_y(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(56):(60)), v); }
+	public int get_base_width() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(60):(64)))); }
+	public void set_base_width(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(60):(64)), v); }
+	public int get_base_height() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(64):(68)))); }
+	public void set_base_height(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(64):(68)), v); }
+	public int get_win_gravity() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(68):(72)))); }
+	public void set_win_gravity(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(68):(72)), v); }
 
 
 	String getName() {
--- a/generated/sun/awt/X11/XStandardColormap.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/sun/awt/X11/XStandardColormap.java	Wed May 18 15:46:37 2011 +0100
@@ -8,7 +8,7 @@
 public class XStandardColormap extends XWrapperBase { 
 	private Unsafe unsafe = XlibWrapper.unsafe; 
 	private final boolean should_free_memory;
-	public static int getSize() { return 40; }
+	public static int getSize() { return ((XlibWrapper.dataModel == 32)?(40):(80)); }
 	public int getDataSize() { return getSize(); }
 
 	long pData;
@@ -16,14 +16,14 @@
 	public long getPData() { return pData; }
 
 
-	XStandardColormap(long addr) {
+	public XStandardColormap(long addr) {
 		log.finest("Creating");
 		pData=addr;
 		should_free_memory = false;
 	}
 
 
-	XStandardColormap() {
+	public XStandardColormap() {
 		log.finest("Creating");
 		pData = unsafe.allocateMemory(getSize());
 		should_free_memory = true;
@@ -39,24 +39,24 @@
 		}
 	public long get_colormap() { log.finest("");return (Native.getLong(pData+0)); }
 	public void set_colormap(long v) { log.finest(""); Native.putLong(pData+0, v); }
-	public long get_red_max() { log.finest("");return (Native.getLong(pData+4)); }
-	public void set_red_max(long v) { log.finest(""); Native.putLong(pData+4, v); }
-	public long get_red_mult() { log.finest("");return (Native.getLong(pData+8)); }
-	public void set_red_mult(long v) { log.finest(""); Native.putLong(pData+8, v); }
-	public long get_green_max() { log.finest("");return (Native.getLong(pData+12)); }
-	public void set_green_max(long v) { log.finest(""); Native.putLong(pData+12, v); }
-	public long get_green_mult() { log.finest("");return (Native.getLong(pData+16)); }
-	public void set_green_mult(long v) { log.finest(""); Native.putLong(pData+16, v); }
-	public long get_blue_max() { log.finest("");return (Native.getLong(pData+20)); }
-	public void set_blue_max(long v) { log.finest(""); Native.putLong(pData+20, v); }
-	public long get_blue_mult() { log.finest("");return (Native.getLong(pData+24)); }
-	public void set_blue_mult(long v) { log.finest(""); Native.putLong(pData+24, v); }
-	public long get_base_pixel() { log.finest("");return (Native.getLong(pData+28)); }
-	public void set_base_pixel(long v) { log.finest(""); Native.putLong(pData+28, v); }
-	public long get_visualid() { log.finest("");return (Native.getLong(pData+32)); }
-	public void set_visualid(long v) { log.finest(""); Native.putLong(pData+32, v); }
-	public long get_killid() { log.finest("");return (Native.getLong(pData+36)); }
-	public void set_killid(long v) { log.finest(""); Native.putLong(pData+36, v); }
+	public long get_red_max() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)))); }
+	public void set_red_max(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)), v); }
+	public long get_red_mult() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(8):(16)))); }
+	public void set_red_mult(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(8):(16)), v); }
+	public long get_green_max() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(12):(24)))); }
+	public void set_green_max(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(12):(24)), v); }
+	public long get_green_mult() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(16):(32)))); }
+	public void set_green_mult(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(16):(32)), v); }
+	public long get_blue_max() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(20):(40)))); }
+	public void set_blue_max(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(20):(40)), v); }
+	public long get_blue_mult() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(24):(48)))); }
+	public void set_blue_mult(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(24):(48)), v); }
+	public long get_base_pixel() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(28):(56)))); }
+	public void set_base_pixel(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(28):(56)), v); }
+	public long get_visualid() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(32):(64)))); }
+	public void set_visualid(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(32):(64)), v); }
+	public long get_killid() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(36):(72)))); }
+	public void set_killid(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(36):(72)), v); }
 
 
 	String getName() {
--- a/generated/sun/awt/X11/XTextItem.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/sun/awt/X11/XTextItem.java	Wed May 18 15:46:37 2011 +0100
@@ -8,7 +8,7 @@
 public class XTextItem extends XWrapperBase { 
 	private Unsafe unsafe = XlibWrapper.unsafe; 
 	private final boolean should_free_memory;
-	public static int getSize() { return 16; }
+	public static int getSize() { return ((XlibWrapper.dataModel == 32)?(16):(24)); }
 	public int getDataSize() { return getSize(); }
 
 	long pData;
@@ -16,14 +16,14 @@
 	public long getPData() { return pData; }
 
 
-	XTextItem(long addr) {
+	public XTextItem(long addr) {
 		log.finest("Creating");
 		pData=addr;
 		should_free_memory = false;
 	}
 
 
-	XTextItem() {
+	public XTextItem() {
 		log.finest("Creating");
 		pData = unsafe.allocateMemory(getSize());
 		should_free_memory = true;
@@ -40,12 +40,12 @@
 	public long get_chars(int index) { log.finest(""); return Native.getLong(pData+0)+index*Native.getLongSize(); }
 	public long get_chars() { log.finest("");return Native.getLong(pData+0); }
 	public void set_chars(long v) { log.finest(""); Native.putLong(pData + 0, v); }
-	public int get_nchars() { log.finest("");return (Native.getInt(pData+4)); }
-	public void set_nchars(int v) { log.finest(""); Native.putInt(pData+4, v); }
-	public int get_delta() { log.finest("");return (Native.getInt(pData+8)); }
-	public void set_delta(int v) { log.finest(""); Native.putInt(pData+8, v); }
-	public long get_font() { log.finest("");return (Native.getLong(pData+12)); }
-	public void set_font(long v) { log.finest(""); Native.putLong(pData+12, v); }
+	public int get_nchars() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(4):(8)))); }
+	public void set_nchars(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(4):(8)), v); }
+	public int get_delta() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(8):(12)))); }
+	public void set_delta(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(8):(12)), v); }
+	public long get_font() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(12):(16)))); }
+	public void set_font(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(12):(16)), v); }
 
 
 	String getName() {
--- a/generated/sun/awt/X11/XTextItem16.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/sun/awt/X11/XTextItem16.java	Wed May 18 15:46:37 2011 +0100
@@ -8,7 +8,7 @@
 public class XTextItem16 extends XWrapperBase { 
 	private Unsafe unsafe = XlibWrapper.unsafe; 
 	private final boolean should_free_memory;
-	public static int getSize() { return 16; }
+	public static int getSize() { return ((XlibWrapper.dataModel == 32)?(16):(24)); }
 	public int getDataSize() { return getSize(); }
 
 	long pData;
@@ -16,14 +16,14 @@
 	public long getPData() { return pData; }
 
 
-	XTextItem16(long addr) {
+	public XTextItem16(long addr) {
 		log.finest("Creating");
 		pData=addr;
 		should_free_memory = false;
 	}
 
 
-	XTextItem16() {
+	public XTextItem16() {
 		log.finest("Creating");
 		pData = unsafe.allocateMemory(getSize());
 		should_free_memory = true;
@@ -40,12 +40,12 @@
 	public XChar2b get_chars(int index) { log.finest(""); return (Native.getLong(pData+0) != 0)?(new XChar2b(Native.getLong(pData+0)+index*2)):(null); }
 	public long get_chars() { log.finest("");return Native.getLong(pData+0); }
 	public void set_chars(long v) { log.finest(""); Native.putLong(pData + 0, v); }
-	public int get_nchars() { log.finest("");return (Native.getInt(pData+4)); }
-	public void set_nchars(int v) { log.finest(""); Native.putInt(pData+4, v); }
-	public int get_delta() { log.finest("");return (Native.getInt(pData+8)); }
-	public void set_delta(int v) { log.finest(""); Native.putInt(pData+8, v); }
-	public long get_font() { log.finest("");return (Native.getLong(pData+12)); }
-	public void set_font(long v) { log.finest(""); Native.putLong(pData+12, v); }
+	public int get_nchars() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(4):(8)))); }
+	public void set_nchars(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(4):(8)), v); }
+	public int get_delta() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(8):(12)))); }
+	public void set_delta(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(8):(12)), v); }
+	public long get_font() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(12):(16)))); }
+	public void set_font(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(12):(16)), v); }
 
 
 	String getName() {
--- a/generated/sun/awt/X11/XTextProperty.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/sun/awt/X11/XTextProperty.java	Wed May 18 15:46:37 2011 +0100
@@ -8,7 +8,7 @@
 public class XTextProperty extends XWrapperBase { 
 	private Unsafe unsafe = XlibWrapper.unsafe; 
 	private final boolean should_free_memory;
-	public static int getSize() { return 16; }
+	public static int getSize() { return ((XlibWrapper.dataModel == 32)?(16):(32)); }
 	public int getDataSize() { return getSize(); }
 
 	long pData;
@@ -16,14 +16,14 @@
 	public long getPData() { return pData; }
 
 
-	XTextProperty(long addr) {
+	public XTextProperty(long addr) {
 		log.finest("Creating");
 		pData=addr;
 		should_free_memory = false;
 	}
 
 
-	XTextProperty() {
+	public XTextProperty() {
 		log.finest("Creating");
 		pData = unsafe.allocateMemory(getSize());
 		should_free_memory = true;
@@ -40,12 +40,12 @@
 	public byte get_value(int index) { log.finest(""); return Native.getByte(Native.getLong(pData+0)+index*1); }
 	public long get_value() { log.finest("");return Native.getLong(pData+0); }
 	public void set_value(long v) { log.finest(""); Native.putLong(pData + 0, v); }
-	public long get_encoding() { log.finest("");return (Native.getLong(pData+4)); }
-	public void set_encoding(long v) { log.finest(""); Native.putLong(pData+4, v); }
-	public int get_format() { log.finest("");return (Native.getInt(pData+8)); }
-	public void set_format(int v) { log.finest(""); Native.putInt(pData+8, v); }
-	public long get_nitems() { log.finest("");return (Native.getLong(pData+12)); }
-	public void set_nitems(long v) { log.finest(""); Native.putLong(pData+12, v); }
+	public long get_encoding() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)))); }
+	public void set_encoding(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)), v); }
+	public int get_format() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(8):(16)))); }
+	public void set_format(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(8):(16)), v); }
+	public long get_nitems() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(12):(24)))); }
+	public void set_nitems(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(12):(24)), v); }
 
 
 	String getName() {
--- a/generated/sun/awt/X11/XTimeCoord.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/sun/awt/X11/XTimeCoord.java	Wed May 18 15:46:37 2011 +0100
@@ -8,7 +8,7 @@
 public class XTimeCoord extends XWrapperBase { 
 	private Unsafe unsafe = XlibWrapper.unsafe; 
 	private final boolean should_free_memory;
-	public static int getSize() { return 8; }
+	public static int getSize() { return ((XlibWrapper.dataModel == 32)?(8):(16)); }
 	public int getDataSize() { return getSize(); }
 
 	long pData;
@@ -16,14 +16,14 @@
 	public long getPData() { return pData; }
 
 
-	XTimeCoord(long addr) {
+	public XTimeCoord(long addr) {
 		log.finest("Creating");
 		pData=addr;
 		should_free_memory = false;
 	}
 
 
-	XTimeCoord() {
+	public XTimeCoord() {
 		log.finest("Creating");
 		pData = unsafe.allocateMemory(getSize());
 		should_free_memory = true;
@@ -39,10 +39,10 @@
 		}
 	public long get_time() { log.finest("");return (Native.getULong(pData+0)); }
 	public void set_time(long v) { log.finest(""); Native.putULong(pData+0, v); }
-	public short get_x() { log.finest("");return (Native.getShort(pData+4)); }
-	public void set_x(short v) { log.finest(""); Native.putShort(pData+4, v); }
-	public short get_y() { log.finest("");return (Native.getShort(pData+6)); }
-	public void set_y(short v) { log.finest(""); Native.putShort(pData+6, v); }
+	public short get_x() { log.finest("");return (Native.getShort(pData+((XlibWrapper.dataModel == 32)?(4):(8)))); }
+	public void set_x(short v) { log.finest(""); Native.putShort(pData+((XlibWrapper.dataModel == 32)?(4):(8)), v); }
+	public short get_y() { log.finest("");return (Native.getShort(pData+((XlibWrapper.dataModel == 32)?(6):(10)))); }
+	public void set_y(short v) { log.finest(""); Native.putShort(pData+((XlibWrapper.dataModel == 32)?(6):(10)), v); }
 
 
 	String getName() {
--- a/generated/sun/awt/X11/XUnmapEvent.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/sun/awt/X11/XUnmapEvent.java	Wed May 18 15:46:37 2011 +0100
@@ -8,7 +8,7 @@
 public class XUnmapEvent extends XWrapperBase { 
 	private Unsafe unsafe = XlibWrapper.unsafe; 
 	private final boolean should_free_memory;
-	public static int getSize() { return 28; }
+	public static int getSize() { return ((XlibWrapper.dataModel == 32)?(28):(56)); }
 	public int getDataSize() { return getSize(); }
 
 	long pData;
@@ -16,14 +16,14 @@
 	public long getPData() { return pData; }
 
 
-	XUnmapEvent(long addr) {
+	public XUnmapEvent(long addr) {
 		log.finest("Creating");
 		pData=addr;
 		should_free_memory = false;
 	}
 
 
-	XUnmapEvent() {
+	public XUnmapEvent() {
 		log.finest("Creating");
 		pData = unsafe.allocateMemory(getSize());
 		should_free_memory = true;
@@ -39,18 +39,18 @@
 		}
 	public int get_type() { log.finest("");return (Native.getInt(pData+0)); }
 	public void set_type(int v) { log.finest(""); Native.putInt(pData+0, v); }
-	public long get_serial() { log.finest("");return (Native.getLong(pData+4)); }
-	public void set_serial(long v) { log.finest(""); Native.putLong(pData+4, v); }
-	public boolean get_send_event() { log.finest("");return (Native.getBool(pData+8)); }
-	public void set_send_event(boolean v) { log.finest(""); Native.putBool(pData+8, v); }
-	public long get_display() { log.finest("");return (Native.getLong(pData+12)); }
-	public void set_display(long v) { log.finest(""); Native.putLong(pData+12, v); }
-	public long get_event() { log.finest("");return (Native.getLong(pData+16)); }
-	public void set_event(long v) { log.finest(""); Native.putLong(pData+16, v); }
-	public long get_window() { log.finest("");return (Native.getLong(pData+20)); }
-	public void set_window(long v) { log.finest(""); Native.putLong(pData+20, v); }
-	public boolean get_from_configure() { log.finest("");return (Native.getBool(pData+24)); }
-	public void set_from_configure(boolean v) { log.finest(""); Native.putBool(pData+24, v); }
+	public long get_serial() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)))); }
+	public void set_serial(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)), v); }
+	public boolean get_send_event() { log.finest("");return (Native.getBool(pData+((XlibWrapper.dataModel == 32)?(8):(16)))); }
+	public void set_send_event(boolean v) { log.finest(""); Native.putBool(pData+((XlibWrapper.dataModel == 32)?(8):(16)), v); }
+	public long get_display() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(12):(24)))); }
+	public void set_display(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(12):(24)), v); }
+	public long get_event() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(16):(32)))); }
+	public void set_event(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(16):(32)), v); }
+	public long get_window() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(20):(40)))); }
+	public void set_window(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(20):(40)), v); }
+	public boolean get_from_configure() { log.finest("");return (Native.getBool(pData+((XlibWrapper.dataModel == 32)?(24):(48)))); }
+	public void set_from_configure(boolean v) { log.finest(""); Native.putBool(pData+((XlibWrapper.dataModel == 32)?(24):(48)), v); }
 
 
 	String getName() {
--- a/generated/sun/awt/X11/XVisibilityEvent.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/sun/awt/X11/XVisibilityEvent.java	Wed May 18 15:46:37 2011 +0100
@@ -8,7 +8,7 @@
 public class XVisibilityEvent extends XWrapperBase { 
 	private Unsafe unsafe = XlibWrapper.unsafe; 
 	private final boolean should_free_memory;
-	public static int getSize() { return 24; }
+	public static int getSize() { return ((XlibWrapper.dataModel == 32)?(24):(48)); }
 	public int getDataSize() { return getSize(); }
 
 	long pData;
@@ -16,14 +16,14 @@
 	public long getPData() { return pData; }
 
 
-	XVisibilityEvent(long addr) {
+	public XVisibilityEvent(long addr) {
 		log.finest("Creating");
 		pData=addr;
 		should_free_memory = false;
 	}
 
 
-	XVisibilityEvent() {
+	public XVisibilityEvent() {
 		log.finest("Creating");
 		pData = unsafe.allocateMemory(getSize());
 		should_free_memory = true;
@@ -39,16 +39,16 @@
 		}
 	public int get_type() { log.finest("");return (Native.getInt(pData+0)); }
 	public void set_type(int v) { log.finest(""); Native.putInt(pData+0, v); }
-	public long get_serial() { log.finest("");return (Native.getLong(pData+4)); }
-	public void set_serial(long v) { log.finest(""); Native.putLong(pData+4, v); }
-	public boolean get_send_event() { log.finest("");return (Native.getBool(pData+8)); }
-	public void set_send_event(boolean v) { log.finest(""); Native.putBool(pData+8, v); }
-	public long get_display() { log.finest("");return (Native.getLong(pData+12)); }
-	public void set_display(long v) { log.finest(""); Native.putLong(pData+12, v); }
-	public long get_window() { log.finest("");return (Native.getLong(pData+16)); }
-	public void set_window(long v) { log.finest(""); Native.putLong(pData+16, v); }
-	public int get_state() { log.finest("");return (Native.getInt(pData+20)); }
-	public void set_state(int v) { log.finest(""); Native.putInt(pData+20, v); }
+	public long get_serial() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)))); }
+	public void set_serial(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)), v); }
+	public boolean get_send_event() { log.finest("");return (Native.getBool(pData+((XlibWrapper.dataModel == 32)?(8):(16)))); }
+	public void set_send_event(boolean v) { log.finest(""); Native.putBool(pData+((XlibWrapper.dataModel == 32)?(8):(16)), v); }
+	public long get_display() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(12):(24)))); }
+	public void set_display(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(12):(24)), v); }
+	public long get_window() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(16):(32)))); }
+	public void set_window(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(16):(32)), v); }
+	public int get_state() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(20):(40)))); }
+	public void set_state(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(20):(40)), v); }
 
 
 	String getName() {
--- a/generated/sun/awt/X11/XVisualInfo.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/sun/awt/X11/XVisualInfo.java	Wed May 18 15:46:37 2011 +0100
@@ -8,7 +8,7 @@
 public class XVisualInfo extends XWrapperBase { 
 	private Unsafe unsafe = XlibWrapper.unsafe; 
 	private final boolean should_free_memory;
-	public static int getSize() { return 40; }
+	public static int getSize() { return ((XlibWrapper.dataModel == 32)?(40):(64)); }
 	public int getDataSize() { return getSize(); }
 
 	long pData;
@@ -16,14 +16,14 @@
 	public long getPData() { return pData; }
 
 
-	XVisualInfo(long addr) {
+	public XVisualInfo(long addr) {
 		log.finest("Creating");
 		pData=addr;
 		should_free_memory = false;
 	}
 
 
-	XVisualInfo() {
+	public XVisualInfo() {
 		log.finest("Creating");
 		pData = unsafe.allocateMemory(getSize());
 		should_free_memory = true;
@@ -40,24 +40,24 @@
 	public long get_visual(int index) { log.finest(""); return Native.getLong(pData+0)+index*Native.getLongSize(); }
 	public long get_visual() { log.finest("");return Native.getLong(pData+0); }
 	public void set_visual(long v) { log.finest(""); Native.putLong(pData + 0, v); }
-	public long get_visualid() { log.finest("");return (Native.getLong(pData+4)); }
-	public void set_visualid(long v) { log.finest(""); Native.putLong(pData+4, v); }
-	public int get_screen() { log.finest("");return (Native.getInt(pData+8)); }
-	public void set_screen(int v) { log.finest(""); Native.putInt(pData+8, v); }
-	public int get_depth() { log.finest("");return (Native.getInt(pData+12)); }
-	public void set_depth(int v) { log.finest(""); Native.putInt(pData+12, v); }
-	public int get_class() { log.finest("");return (Native.getInt(pData+16)); }
-	public void set_class(int v) { log.finest(""); Native.putInt(pData+16, v); }
-	public long get_red_mask() { log.finest("");return (Native.getLong(pData+20)); }
-	public void set_red_mask(long v) { log.finest(""); Native.putLong(pData+20, v); }
-	public long get_green_mask() { log.finest("");return (Native.getLong(pData+24)); }
-	public void set_green_mask(long v) { log.finest(""); Native.putLong(pData+24, v); }
-	public long get_blue_mask() { log.finest("");return (Native.getLong(pData+28)); }
-	public void set_blue_mask(long v) { log.finest(""); Native.putLong(pData+28, v); }
-	public int get_colormap_size() { log.finest("");return (Native.getInt(pData+32)); }
-	public void set_colormap_size(int v) { log.finest(""); Native.putInt(pData+32, v); }
-	public int get_bits_per_rgb() { log.finest("");return (Native.getInt(pData+36)); }
-	public void set_bits_per_rgb(int v) { log.finest(""); Native.putInt(pData+36, v); }
+	public long get_visualid() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)))); }
+	public void set_visualid(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(4):(8)), v); }
+	public int get_screen() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(8):(16)))); }
+	public void set_screen(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(8):(16)), v); }
+	public int get_depth() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(12):(20)))); }
+	public void set_depth(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(12):(20)), v); }
+	public int get_class() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(16):(24)))); }
+	public void set_class(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(16):(24)), v); }
+	public long get_red_mask() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(20):(32)))); }
+	public void set_red_mask(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(20):(32)), v); }
+	public long get_green_mask() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(24):(40)))); }
+	public void set_green_mask(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(24):(40)), v); }
+	public long get_blue_mask() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(28):(48)))); }
+	public void set_blue_mask(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(28):(48)), v); }
+	public int get_colormap_size() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(32):(56)))); }
+	public void set_colormap_size(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(32):(56)), v); }
+	public int get_bits_per_rgb() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(36):(60)))); }
+	public void set_bits_per_rgb(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(36):(60)), v); }
 
 
 	String getName() {
--- a/generated/sun/awt/X11/XWMHints.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/sun/awt/X11/XWMHints.java	Wed May 18 15:46:37 2011 +0100
@@ -8,7 +8,7 @@
 public class XWMHints extends XWrapperBase { 
 	private Unsafe unsafe = XlibWrapper.unsafe; 
 	private final boolean should_free_memory;
-	public static int getSize() { return 36; }
+	public static int getSize() { return ((XlibWrapper.dataModel == 32)?(36):(56)); }
 	public int getDataSize() { return getSize(); }
 
 	long pData;
@@ -16,14 +16,14 @@
 	public long getPData() { return pData; }
 
 
-	XWMHints(long addr) {
+	public XWMHints(long addr) {
 		log.finest("Creating");
 		pData=addr;
 		should_free_memory = false;
 	}
 
 
-	XWMHints() {
+	public XWMHints() {
 		log.finest("Creating");
 		pData = unsafe.allocateMemory(getSize());
 		should_free_memory = true;
@@ -39,23 +39,23 @@
 		}
 	public long get_flags() { log.finest("");return (Native.getLong(pData+0)); }
 	public void set_flags(long v) { log.finest(""); Native.putLong(pData+0, v); }
-	public int get_initial_state() { log.finest("");return (Native.getInt(pData+8)); }
-	public void set_initial_state(int v) { log.finest(""); Native.putInt(pData+8, v); }
-	public long get_icon_pixmap(int index) { log.finest(""); return Native.getLong(pData+12)+index*Native.getLongSize(); }
-	public long get_icon_pixmap() { log.finest("");return Native.getLong(pData+12); }
-	public void set_icon_pixmap(long v) { log.finest(""); Native.putLong(pData + 12, v); }
-	public long get_icon_window() { log.finest("");return (Native.getLong(pData+16)); }
-	public void set_icon_window(long v) { log.finest(""); Native.putLong(pData+16, v); }
-	public int get_icon_x() { log.finest("");return (Native.getInt(pData+20)); }
-	public void set_icon_x(int v) { log.finest(""); Native.putInt(pData+20, v); }
-	public int get_icon_y() { log.finest("");return (Native.getInt(pData+24)); }
-	public void set_icon_y(int v) { log.finest(""); Native.putInt(pData+24, v); }
-	public long get_icon_mask() { log.finest("");return (Native.getLong(pData+28)); }
-	public void set_icon_mask(long v) { log.finest(""); Native.putLong(pData+28, v); }
-	public boolean get_input() { log.finest("");return (Native.getBool(pData+4)); }
-	public void set_input(boolean v) { log.finest(""); Native.putBool(pData+4, v); }
-	public long get_window_group() { log.finest("");return (Native.getLong(pData+32)); }
-	public void set_window_group(long v) { log.finest(""); Native.putLong(pData+32, v); }
+	public int get_initial_state() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(8):(12)))); }
+	public void set_initial_state(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(8):(12)), v); }
+	public long get_icon_pixmap(int index) { log.finest(""); return Native.getLong(pData+((XlibWrapper.dataModel == 32)?(12):(16)))+index*Native.getLongSize(); }
+	public long get_icon_pixmap() { log.finest("");return Native.getLong(pData+((XlibWrapper.dataModel == 32)?(12):(16))); }
+	public void set_icon_pixmap(long v) { log.finest(""); Native.putLong(pData + ((XlibWrapper.dataModel == 32)?(12):(16)), v); }
+	public long get_icon_window() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(16):(24)))); }
+	public void set_icon_window(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(16):(24)), v); }
+	public int get_icon_x() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(20):(32)))); }
+	public void set_icon_x(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(20):(32)), v); }
+	public int get_icon_y() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(24):(36)))); }
+	public void set_icon_y(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(24):(36)), v); }
+	public long get_icon_mask() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(28):(40)))); }
+	public void set_icon_mask(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(28):(40)), v); }
+	public boolean get_input() { log.finest("");return (Native.getBool(pData+((XlibWrapper.dataModel == 32)?(4):(8)))); }
+	public void set_input(boolean v) { log.finest(""); Native.putBool(pData+((XlibWrapper.dataModel == 32)?(4):(8)), v); }
+	public long get_window_group() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(32):(48)))); }
+	public void set_window_group(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(32):(48)), v); }
 
 
 	String getName() {
--- a/generated/sun/awt/X11/XWindowAttributes.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/sun/awt/X11/XWindowAttributes.java	Wed May 18 15:46:37 2011 +0100
@@ -8,7 +8,7 @@
 public class XWindowAttributes extends XWrapperBase { 
 	private Unsafe unsafe = XlibWrapper.unsafe; 
 	private final boolean should_free_memory;
-	public static int getSize() { return 92; }
+	public static int getSize() { return ((XlibWrapper.dataModel == 32)?(92):(136)); }
 	public int getDataSize() { return getSize(); }
 
 	long pData;
@@ -16,14 +16,14 @@
 	public long getPData() { return pData; }
 
 
-	XWindowAttributes(long addr) {
+	public XWindowAttributes(long addr) {
 		log.finest("Creating");
 		pData=addr;
 		should_free_memory = false;
 	}
 
 
-	XWindowAttributes() {
+	public XWindowAttributes() {
 		log.finest("Creating");
 		pData = unsafe.allocateMemory(getSize());
 		should_free_memory = true;
@@ -49,42 +49,42 @@
 	public void set_border_width(int v) { log.finest(""); Native.putInt(pData+16, v); }
 	public int get_depth() { log.finest("");return (Native.getInt(pData+20)); }
 	public void set_depth(int v) { log.finest(""); Native.putInt(pData+20, v); }
-	public Visual get_visual(int index) { log.finest(""); return (Native.getLong(pData+24) != 0)?(new Visual(Native.getLong(pData+24)+index*32)):(null); }
+	public Visual get_visual(int index) { log.finest(""); return (Native.getLong(pData+24) != 0)?(new Visual(Native.getLong(pData+24)+index*((XlibWrapper.dataModel == 32)?(32):(56)))):(null); }
 	public long get_visual() { log.finest("");return Native.getLong(pData+24); }
 	public void set_visual(long v) { log.finest(""); Native.putLong(pData + 24, v); }
-	public long get_root() { log.finest("");return (Native.getLong(pData+28)); }
-	public void set_root(long v) { log.finest(""); Native.putLong(pData+28, v); }
-	public int get_class() { log.finest("");return (Native.getInt(pData+32)); }
-	public void set_class(int v) { log.finest(""); Native.putInt(pData+32, v); }
-	public int get_bit_gravity() { log.finest("");return (Native.getInt(pData+36)); }
-	public void set_bit_gravity(int v) { log.finest(""); Native.putInt(pData+36, v); }
-	public int get_win_gravity() { log.finest("");return (Native.getInt(pData+40)); }
-	public void set_win_gravity(int v) { log.finest(""); Native.putInt(pData+40, v); }
-	public int get_backing_store() { log.finest("");return (Native.getInt(pData+44)); }
-	public void set_backing_store(int v) { log.finest(""); Native.putInt(pData+44, v); }
-	public long get_backing_planes() { log.finest("");return (Native.getLong(pData+48)); }
-	public void set_backing_planes(long v) { log.finest(""); Native.putLong(pData+48, v); }
-	public long get_backing_pixel() { log.finest("");return (Native.getLong(pData+52)); }
-	public void set_backing_pixel(long v) { log.finest(""); Native.putLong(pData+52, v); }
-	public boolean get_save_under() { log.finest("");return (Native.getBool(pData+56)); }
-	public void set_save_under(boolean v) { log.finest(""); Native.putBool(pData+56, v); }
-	public long get_colormap() { log.finest("");return (Native.getLong(pData+60)); }
-	public void set_colormap(long v) { log.finest(""); Native.putLong(pData+60, v); }
-	public boolean get_map_installed() { log.finest("");return (Native.getBool(pData+64)); }
-	public void set_map_installed(boolean v) { log.finest(""); Native.putBool(pData+64, v); }
-	public int get_map_state() { log.finest("");return (Native.getInt(pData+68)); }
-	public void set_map_state(int v) { log.finest(""); Native.putInt(pData+68, v); }
-	public long get_all_event_masks() { log.finest("");return (Native.getLong(pData+72)); }
-	public void set_all_event_masks(long v) { log.finest(""); Native.putLong(pData+72, v); }
-	public long get_your_event_mask() { log.finest("");return (Native.getLong(pData+76)); }
-	public void set_your_event_mask(long v) { log.finest(""); Native.putLong(pData+76, v); }
-	public long get_do_not_propagate_mask() { log.finest("");return (Native.getLong(pData+80)); }
-	public void set_do_not_propagate_mask(long v) { log.finest(""); Native.putLong(pData+80, v); }
-	public boolean get_override_redirect() { log.finest("");return (Native.getBool(pData+84)); }
-	public void set_override_redirect(boolean v) { log.finest(""); Native.putBool(pData+84, v); }
-	public Screen get_screen(int index) { log.finest(""); return (Native.getLong(pData+88) != 0)?(new Screen(Native.getLong(pData+88)+index*80)):(null); }
-	public long get_screen() { log.finest("");return Native.getLong(pData+88); }
-	public void set_screen(long v) { log.finest(""); Native.putLong(pData + 88, v); }
+	public long get_root() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(28):(32)))); }
+	public void set_root(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(28):(32)), v); }
+	public int get_class() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(32):(40)))); }
+	public void set_class(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(32):(40)), v); }
+	public int get_bit_gravity() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(36):(44)))); }
+	public void set_bit_gravity(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(36):(44)), v); }
+	public int get_win_gravity() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(40):(48)))); }
+	public void set_win_gravity(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(40):(48)), v); }
+	public int get_backing_store() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(44):(52)))); }
+	public void set_backing_store(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(44):(52)), v); }
+	public long get_backing_planes() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(48):(56)))); }
+	public void set_backing_planes(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(48):(56)), v); }
+	public long get_backing_pixel() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(52):(64)))); }
+	public void set_backing_pixel(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(52):(64)), v); }
+	public boolean get_save_under() { log.finest("");return (Native.getBool(pData+((XlibWrapper.dataModel == 32)?(56):(72)))); }
+	public void set_save_under(boolean v) { log.finest(""); Native.putBool(pData+((XlibWrapper.dataModel == 32)?(56):(72)), v); }
+	public long get_colormap() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(60):(80)))); }
+	public void set_colormap(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(60):(80)), v); }
+	public boolean get_map_installed() { log.finest("");return (Native.getBool(pData+((XlibWrapper.dataModel == 32)?(64):(88)))); }
+	public void set_map_installed(boolean v) { log.finest(""); Native.putBool(pData+((XlibWrapper.dataModel == 32)?(64):(88)), v); }
+	public int get_map_state() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(68):(92)))); }
+	public void set_map_state(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(68):(92)), v); }
+	public long get_all_event_masks() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(72):(96)))); }
+	public void set_all_event_masks(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(72):(96)), v); }
+	public long get_your_event_mask() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(76):(104)))); }
+	public void set_your_event_mask(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(76):(104)), v); }
+	public long get_do_not_propagate_mask() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(80):(112)))); }
+	public void set_do_not_propagate_mask(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(80):(112)), v); }
+	public boolean get_override_redirect() { log.finest("");return (Native.getBool(pData+((XlibWrapper.dataModel == 32)?(84):(120)))); }
+	public void set_override_redirect(boolean v) { log.finest(""); Native.putBool(pData+((XlibWrapper.dataModel == 32)?(84):(120)), v); }
+	public Screen get_screen(int index) { log.finest(""); return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(88):(128))) != 0)?(new Screen(Native.getLong(pData+((XlibWrapper.dataModel == 32)?(88):(128)))+index*((XlibWrapper.dataModel == 32)?(80):(128)))):(null); }
+	public long get_screen() { log.finest("");return Native.getLong(pData+((XlibWrapper.dataModel == 32)?(88):(128))); }
+	public void set_screen(long v) { log.finest(""); Native.putLong(pData + ((XlibWrapper.dataModel == 32)?(88):(128)), v); }
 
 
 	String getName() {
--- a/generated/sun/awt/X11/XWindowChanges.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/sun/awt/X11/XWindowChanges.java	Wed May 18 15:46:37 2011 +0100
@@ -8,7 +8,7 @@
 public class XWindowChanges extends XWrapperBase { 
 	private Unsafe unsafe = XlibWrapper.unsafe; 
 	private final boolean should_free_memory;
-	public static int getSize() { return 28; }
+	public static int getSize() { return ((XlibWrapper.dataModel == 32)?(28):(40)); }
 	public int getDataSize() { return getSize(); }
 
 	long pData;
@@ -16,14 +16,14 @@
 	public long getPData() { return pData; }
 
 
-	XWindowChanges(long addr) {
+	public XWindowChanges(long addr) {
 		log.finest("Creating");
 		pData=addr;
 		should_free_memory = false;
 	}
 
 
-	XWindowChanges() {
+	public XWindowChanges() {
 		log.finest("Creating");
 		pData = unsafe.allocateMemory(getSize());
 		should_free_memory = true;
@@ -47,10 +47,10 @@
 	public void set_height(int v) { log.finest(""); Native.putInt(pData+12, v); }
 	public int get_border_width() { log.finest("");return (Native.getInt(pData+16)); }
 	public void set_border_width(int v) { log.finest(""); Native.putInt(pData+16, v); }
-	public long get_sibling() { log.finest("");return (Native.getLong(pData+20)); }
-	public void set_sibling(long v) { log.finest(""); Native.putLong(pData+20, v); }
-	public int get_stack_mode() { log.finest("");return (Native.getInt(pData+24)); }
-	public void set_stack_mode(int v) { log.finest(""); Native.putInt(pData+24, v); }
+	public long get_sibling() { log.finest("");return (Native.getLong(pData+((XlibWrapper.dataModel == 32)?(20):(24)))); }
+	public void set_sibling(long v) { log.finest(""); Native.putLong(pData+((XlibWrapper.dataModel == 32)?(20):(24)), v); }
+	public int get_stack_mode() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(24):(32)))); }
+	public void set_stack_mode(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(24):(32)), v); }
 
 
 	String getName() {
--- a/generated/sun/awt/X11/XdbeSwapInfo.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/sun/awt/X11/XdbeSwapInfo.java	Wed May 18 15:46:37 2011 +0100
@@ -8,7 +8,7 @@
 public class XdbeSwapInfo extends XWrapperBase { 
 	private Unsafe unsafe = XlibWrapper.unsafe; 
 	private final boolean should_free_memory;
-	public static int getSize() { return 8; }
+	public static int getSize() { return ((XlibWrapper.dataModel == 32)?(8):(16)); }
 	public int getDataSize() { return getSize(); }
 
 	long pData;
@@ -16,14 +16,14 @@
 	public long getPData() { return pData; }
 
 
-	XdbeSwapInfo(long addr) {
+	public XdbeSwapInfo(long addr) {
 		log.finest("Creating");
 		pData=addr;
 		should_free_memory = false;
 	}
 
 
-	XdbeSwapInfo() {
+	public XdbeSwapInfo() {
 		log.finest("Creating");
 		pData = unsafe.allocateMemory(getSize());
 		should_free_memory = true;
@@ -39,8 +39,8 @@
 		}
 	public long get_swap_window() { log.finest("");return (Native.getLong(pData+0)); }
 	public void set_swap_window(long v) { log.finest(""); Native.putLong(pData+0, v); }
-	public int get_swap_action() { log.finest("");return (Native.getInt(pData+4)); }
-	public void set_swap_action(int v) { log.finest(""); Native.putInt(pData+4, v); }
+	public int get_swap_action() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(4):(8)))); }
+	public void set_swap_action(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(4):(8)), v); }
 
 
 	String getName() {
--- a/generated/sun/awt/X11/XmbTextItem.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/sun/awt/X11/XmbTextItem.java	Wed May 18 15:46:37 2011 +0100
@@ -8,7 +8,7 @@
 public class XmbTextItem extends XWrapperBase { 
 	private Unsafe unsafe = XlibWrapper.unsafe; 
 	private final boolean should_free_memory;
-	public static int getSize() { return 16; }
+	public static int getSize() { return ((XlibWrapper.dataModel == 32)?(16):(24)); }
 	public int getDataSize() { return getSize(); }
 
 	long pData;
@@ -16,14 +16,14 @@
 	public long getPData() { return pData; }
 
 
-	XmbTextItem(long addr) {
+	public XmbTextItem(long addr) {
 		log.finest("Creating");
 		pData=addr;
 		should_free_memory = false;
 	}
 
 
-	XmbTextItem() {
+	public XmbTextItem() {
 		log.finest("Creating");
 		pData = unsafe.allocateMemory(getSize());
 		should_free_memory = true;
@@ -40,13 +40,13 @@
 	public byte get_chars(int index) { log.finest(""); return Native.getByte(Native.getLong(pData+0)+index*1); }
 	public long get_chars() { log.finest("");return Native.getLong(pData+0); }
 	public void set_chars(long v) { log.finest(""); Native.putLong(pData + 0, v); }
-	public int get_nchars() { log.finest("");return (Native.getInt(pData+4)); }
-	public void set_nchars(int v) { log.finest(""); Native.putInt(pData+4, v); }
-	public int get_delta() { log.finest("");return (Native.getInt(pData+8)); }
-	public void set_delta(int v) { log.finest(""); Native.putInt(pData+8, v); }
-	public long get_font_set(int index) { log.finest(""); return Native.getLong(pData+12)+index*Native.getLongSize(); }
-	public long get_font_set() { log.finest("");return Native.getLong(pData+12); }
-	public void set_font_set(long v) { log.finest(""); Native.putLong(pData + 12, v); }
+	public int get_nchars() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(4):(8)))); }
+	public void set_nchars(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(4):(8)), v); }
+	public int get_delta() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(8):(12)))); }
+	public void set_delta(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(8):(12)), v); }
+	public long get_font_set(int index) { log.finest(""); return Native.getLong(pData+((XlibWrapper.dataModel == 32)?(12):(16)))+index*Native.getLongSize(); }
+	public long get_font_set() { log.finest("");return Native.getLong(pData+((XlibWrapper.dataModel == 32)?(12):(16))); }
+	public void set_font_set(long v) { log.finest(""); Native.putLong(pData + ((XlibWrapper.dataModel == 32)?(12):(16)), v); }
 
 
 	String getName() {
--- a/generated/sun/awt/X11/XwcTextItem.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/sun/awt/X11/XwcTextItem.java	Wed May 18 15:46:37 2011 +0100
@@ -8,7 +8,7 @@
 public class XwcTextItem extends XWrapperBase { 
 	private Unsafe unsafe = XlibWrapper.unsafe; 
 	private final boolean should_free_memory;
-	public static int getSize() { return 16; }
+	public static int getSize() { return ((XlibWrapper.dataModel == 32)?(16):(24)); }
 	public int getDataSize() { return getSize(); }
 
 	long pData;
@@ -16,14 +16,14 @@
 	public long getPData() { return pData; }
 
 
-	XwcTextItem(long addr) {
+	public XwcTextItem(long addr) {
 		log.finest("Creating");
 		pData=addr;
 		should_free_memory = false;
 	}
 
 
-	XwcTextItem() {
+	public XwcTextItem() {
 		log.finest("Creating");
 		pData = unsafe.allocateMemory(getSize());
 		should_free_memory = true;
@@ -40,13 +40,13 @@
 	public long get_chars(int index) { log.finest(""); return Native.getLong(pData+0)+index*Native.getLongSize(); }
 	public long get_chars() { log.finest("");return Native.getLong(pData+0); }
 	public void set_chars(long v) { log.finest(""); Native.putLong(pData + 0, v); }
-	public int get_nchars() { log.finest("");return (Native.getInt(pData+4)); }
-	public void set_nchars(int v) { log.finest(""); Native.putInt(pData+4, v); }
-	public int get_delta() { log.finest("");return (Native.getInt(pData+8)); }
-	public void set_delta(int v) { log.finest(""); Native.putInt(pData+8, v); }
-	public long get_font_set(int index) { log.finest(""); return Native.getLong(pData+12)+index*Native.getLongSize(); }
-	public long get_font_set() { log.finest("");return Native.getLong(pData+12); }
-	public void set_font_set(long v) { log.finest(""); Native.putLong(pData + 12, v); }
+	public int get_nchars() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(4):(8)))); }
+	public void set_nchars(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(4):(8)), v); }
+	public int get_delta() { log.finest("");return (Native.getInt(pData+((XlibWrapper.dataModel == 32)?(8):(12)))); }
+	public void set_delta(int v) { log.finest(""); Native.putInt(pData+((XlibWrapper.dataModel == 32)?(8):(12)), v); }
+	public long get_font_set(int index) { log.finest(""); return Native.getLong(pData+((XlibWrapper.dataModel == 32)?(12):(16)))+index*Native.getLongSize(); }
+	public long get_font_set() { log.finest("");return Native.getLong(pData+((XlibWrapper.dataModel == 32)?(12):(16))); }
+	public void set_font_set(long v) { log.finest(""); Native.putLong(pData + ((XlibWrapper.dataModel == 32)?(12):(16)), v); }
 
 
 	String getName() {
--- a/generated/sun/awt/X11/awtImageData.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/sun/awt/X11/awtImageData.java	Wed May 18 15:46:37 2011 +0100
@@ -8,7 +8,7 @@
 public class awtImageData extends XWrapperBase { 
 	private Unsafe unsafe = XlibWrapper.unsafe; 
 	private final boolean should_free_memory;
-	public static int getSize() { return 304; }
+	public static int getSize() { return ((XlibWrapper.dataModel == 32)?(304):(560)); }
 	public int getDataSize() { return getSize(); }
 
 	long pData;
@@ -16,14 +16,14 @@
 	public long getPData() { return pData; }
 
 
-	awtImageData(long addr) {
+	public awtImageData(long addr) {
 		log.finest("Creating");
 		pData=addr;
 		should_free_memory = false;
 	}
 
 
-	awtImageData() {
+	public awtImageData() {
 		log.finest("Creating");
 		pData = unsafe.allocateMemory(getSize());
 		should_free_memory = true;
--- a/generated/sun/misc/Version.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/sun/misc/Version.java	Wed May 18 15:46:37 2011 +0100
@@ -1,12 +1,12 @@
 /*
- * Copyright 1999-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright (c) 1999, 2007, Oracle and/or its affiliates. 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
+ * published by the Free Software Foundation.  Oracle designates this
  * particular file as subject to the "Classpath" exception as provided
- * by Sun in the LICENSE file that accompanied this code.
+ * by Oracle 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
@@ -18,9 +18,9 @@
  * 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.
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
  */
 
 package sun.misc;
@@ -33,20 +33,29 @@
         "java";
 
     private static final String java_version =
-        "1.6.0_0";
+        "1.6.0_22";
 
     private static final String java_runtime_name =
         "OpenJDK Runtime Environment";
 
     private static final String java_runtime_version =
-        "1.6.0_0-b17";
+        "1.6.0_22-b22";
 
     private static final String jdk_derivative_name =
-        "IcedTea6 1.7pre-r046c77dadfb3";
+        "IcedTea6 1.11pre+re32979d54978+d778bb012d22+";
+
+    private static final String distro_name =
+        "Fedora";
 
     private static final String distro_package_version =
         "";
 
+    private static final String jdk_revid =
+        "";
+
+    private static final String hotspot_revid =
+        "";
+
     static {
         init();
     }
@@ -90,21 +99,27 @@
         String java_vm_name    = System.getProperty("java.vm.name");
 
         /* Second line: runtime version (ie, libraries). */
-	StringBuilder sb = new StringBuilder();
-	if (java_vm_name.toLowerCase().startsWith("cacao")) {
-	    sb.append("IcedTea Runtime Environment");
-	} else {
-	    sb.append(java_runtime_name);
-	}
-	if (jdk_derivative_name.length() > 0) {
-	    sb.append(" (").append(jdk_derivative_name).append(")");
-	}
-	if (distro_package_version.length() > 0) {
-	    sb.append(" (").append(distro_package_version).append(")");
-	} else {
-	    sb.append(" (build ").append(java_runtime_version).append(")");
-	}
-	ps.println(sb.toString());
+        StringBuilder sb = new StringBuilder();
+        if (java_vm_name.toLowerCase().startsWith("cacao")) {
+            sb.append("IcedTea Runtime Environment");
+        } else {
+            sb.append(java_runtime_name);
+        }
+        if (jdk_derivative_name.length() > 0) {
+            sb.append(" (").append(jdk_derivative_name).append(")");
+        }
+        if (distro_package_version.length() > 0) {
+            sb.append(" (").append(distro_package_version).append(")");
+        } else {
+            sb.append(" (");
+            if (distro_name.length() > 0)
+                sb.append(distro_name).append(" ");
+            sb.append("build ").append(java_runtime_version);
+            if (jdk_revid.length() > 0)
+                sb.append("+").append(jdk_revid);
+            sb.append(")");
+        }
+        ps.println(sb.toString());
 
         /* Third line: JVM information. */
         String java_vm_version = System.getProperty("java.vm.version");
--- a/generated/sun/nio/cs/StandardCharsets.java	Thu Mar 31 01:04:37 2011 +0100
+++ b/generated/sun/nio/cs/StandardCharsets.java	Wed May 18 15:46:37 2011 +0100
@@ -1,13 +1,13 @@
 /*
- * Copyright 2000 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright (c) 2000, 2007, Oracle and/or its affiliates. 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
+ * published by the Free Software Foundation.  Oracle designates this
  * particular file as subject to the "Classpath" exception as provided
- * by Sun in the LICENSE file that accompanied this code.
+ * by Oracle 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
@@ -19,9 +19,9 @@
  * 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.
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
  *
  */
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/overlays/jpeg/openjdk/jdk/src/share/classes/com/sun/image/codec/jpeg/ImageFormatException.java	Wed May 18 15:46:37 2011 +0100
@@ -0,0 +1,49 @@
+/* ImageFormatException.java
+ * Copyright (C) 2007 Matthew Flaschen
+ * 
+ * This file is part of IcedTea
+ * 
+ * IcedTea is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ * 
+ * IcedTea 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 for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Classpath; see the file COPYING. If not, write to the
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02110-1301 USA.
+ * 
+ * Linking this library statically or dynamically with other modules is
+ * making a combined work based on this library. Thus, the terms and
+ * conditions of the GNU General Public License cover the whole
+ * combination.
+ * 
+ * As a special exception, the copyright holders of this library give you
+ * permission to link this library with independent modules to produce an
+ * executable, regardless of the license terms of these independent
+ * modules, and to copy and distribute the resulting executable under
+ * terms of your choice, provided that you also meet, for each linked
+ * independent module, the terms and conditions of the license of that
+ * module. An independent module is a module which is not derived from
+ * or based on this library. If you modify this library, you may extend
+ * this exception to your version of the library, but you are not
+ * obligated to do so. If you do not wish to do so, delete this
+ * exception statement from your version.
+ */
+
+package com.sun.image.codec.jpeg;
+
+public class ImageFormatException extends Exception {
+    public ImageFormatException() {
+	this("");
+    }
+
+    public ImageFormatException(String s) {
+	super(s);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/overlays/jpeg/openjdk/jdk/src/share/classes/com/sun/image/codec/jpeg/JPEGCodec.java	Wed May 18 15:46:37 2011 +0100
@@ -0,0 +1,191 @@
+/* JPEGCodec.java --
+ * Copyright (C) 2007 Free Software Foundation, Inc.
+ * Copyright (C) 2007 Matthew Flaschen
+ * 
+ * This file is part of GNU Classpath.
+ * 
+ * GNU Classpath is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ * 
+ * GNU Classpath 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 for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Classpath; see the file COPYING. If not, write to the
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02110-1301 USA.
+ * 
+ * Linking this library statically or dynamically with other modules is
+ * making a combined work based on this library. Thus, the terms and
+ * conditions of the GNU General Public License cover the whole
+ * combination.
+ * 
+ * As a special exception, the copyright holders of this library give you
+ * permission to link this library with independent modules to produce an
+ * executable, regardless of the license terms of these independent
+ * modules, and to copy and distribute the resulting executable under
+ * terms of your choice, provided that you also meet, for each linked
+ * independent module, the terms and conditions of the license of that
+ * module. An independent module is a module which is not derived from
+ * or based on this library. If you modify this library, you may extend
+ * this exception to your version of the library, but you are not
+ * obligated to do so. If you do not wish to do so, delete this
+ * exception statement from your version.
+ */
+
+package com.sun.image.codec.jpeg;
+
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.awt.color.ColorSpace;
+import java.awt.image.BufferedImage;
+import java.awt.image.ColorModel;
+import java.awt.image.Raster;
+
+import sun.awt.image.codec.JPEGImageDecoderImpl;
+import sun.awt.image.codec.JPEGImageEncoderImpl;
+import sun.awt.image.codec.JPEGParam;
+
+/**
+ * This class is a factory for implementations of the JPEG Image
+ * Decoder/Encoder.
+ */
+public class JPEGCodec {
+
+    /**
+     * This creates an instance of a JPEGImageDecoder that can be used to decode
+     * JPEG Data streams.
+     * 
+     * @param src
+     * @return
+     */
+    public static JPEGImageDecoder createJPEGDecoder(InputStream src) {
+	return new JPEGImageDecoderImpl(src);
+    }
+
+    /**
+     * This creates an instance of a JPEGImageDecoder that can be used to decode
+     * JPEG Data streams.
+     * 
+     * @param src
+     * @param jdp
+     * @return
+     */
+    public static JPEGImageDecoder createJPEGDecoder(InputStream src,
+	    JPEGDecodeParam jdp) {
+	return new JPEGImageDecoderImpl(src, jdp);
+    }
+
+    /**
+     * This creates an instance of a JPEGImageEncoder that can be used to encode
+     * image data as JPEG Data streams.
+     * 
+     * @param os
+     * @return
+     */
+    public static JPEGImageEncoder createJPEGEncoder(OutputStream os) {
+	return new JPEGImageEncoderImpl(os);
+    }
+
+    /**
+     * This creates an instance of a JPEGImageEncoder that can be used to encode
+     * image data as JPEG Data streams.
+     * 
+     * @param dest
+     * @param jep
+     * @return
+     */
+    public static JPEGImageEncoder createJPEGEncoder(OutputStream dest,
+	    JPEGEncodeParam jep) {
+	return new JPEGImageEncoderImpl(dest, jep);
+    }
+
+    /**
+     * This is a factory method for creating JPEGEncodeParam objects.
+     * 
+     * @param bi
+     * @return
+     */
+    public static JPEGEncodeParam getDefaultJPEGEncodeParam(BufferedImage bi) {
+	return getDefaultJPEGEncodeParam(bi.getRaster(),
+		getDefaultColorID(bi.getColorModel()));
+    }
+
+    /**
+     * This is a factory method for creating JPEGEncodeParam objects.
+     * 
+     * @param numBands
+     * @param colorID
+     * @return
+     */
+    public static JPEGEncodeParam getDefaultJPEGEncodeParam(int numBands,
+	    int colorID) {
+	return new JPEGParam(colorID, numBands);
+    }
+
+    /**
+     * This is a factory method for creating a JPEGEncodeParam from a
+     * JPEGDecodeParam.
+     * 
+     * @param jdp
+     * @return
+     */
+    public static JPEGEncodeParam getDefaultJPEGEncodeParam(JPEGDecodeParam jdp) {
+	return new JPEGParam(jdp);
+    }
+
+    /**
+     * This is a factory method for creating JPEGEncodeParam objects.
+     * 
+     * @param ras
+     * @param colorID
+     * @return
+     */
+    public static JPEGEncodeParam getDefaultJPEGEncodeParam(Raster ras,
+	    int colorID) {
+	return getDefaultJPEGEncodeParam(ras.getNumBands(), colorID);
+    }
+
+    private static int getDefaultColorID(ColorModel cm) {
+	ColorSpace cs = cm.getColorSpace();
+	int type = cs.getType();
+	int id = -1;
+	switch (type) {
+	    case ColorSpace.TYPE_GRAY:
+		id = JPEGEncodeParam.COLOR_ID_GRAY;
+		break;
+
+	    case ColorSpace.TYPE_RGB:
+		id = cm.hasAlpha() ? JPEGEncodeParam.COLOR_ID_RGBA
+			: JPEGEncodeParam.COLOR_ID_RGB;
+
+	    case ColorSpace.TYPE_YCbCr:
+		try {
+		    if (cs == ColorSpace.getInstance(ColorSpace.CS_PYCC)) {
+			id = cm.hasAlpha() ? JPEGEncodeParam.COLOR_ID_PYCCA
+				: JPEGEncodeParam.COLOR_ID_PYCC;
+		    }
+		} catch (IllegalArgumentException e) {
+		    /* We know it isn't PYCC type, nothing to handle */
+		}
+		if (id == -1) {
+		    id = cm.hasAlpha() ? JPEGEncodeParam.COLOR_ID_YCbCrA
+			    : JPEGEncodeParam.COLOR_ID_YCbCr;
+		}
+		break;
+
+	    case ColorSpace.TYPE_CMYK:
+		id = JPEGEncodeParam.COLOR_ID_CMYK;
+		break;
+
+	    default:
+		id = JPEGEncodeParam.COLOR_ID_UNKNOWN;
+	}
+
+	return id;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/overlays/jpeg/openjdk/jdk/src/share/classes/com/sun/image/codec/jpeg/JPEGDecodeParam.java	Wed May 18 15:46:37 2011 +0100
@@ -0,0 +1,390 @@
+/* JPEGImageDecoder.java --
+ * Copyright (C) 2007 Free Software Foundation, Inc.
+ * Copyright (C) 2007 Matthew Flaschen
+ * 
+ * This file is part of GNU Classpath.
+ * 
+ * GNU Classpath is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ * 
+ * GNU Classpath 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 for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Classpath; see the file COPYING. If not, write to the
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02110-1301 USA.
+ * 
+ * Linking this library statically or dynamically with other modules is
+ * making a combined work based on this library. Thus, the terms and
+ * conditions of the GNU General Public License cover the whole
+ * combination.
+ * 
+ * As a special exception, the copyright holders of this library give you
+ * permission to link this library with independent modules to produce an
+ * executable, regardless of the license terms of these independent
+ * modules, and to copy and distribute the resulting executable under
+ * terms of your choice, provided that you also meet, for each linked
+ * independent module, the terms and conditions of the license of that
+ * module. An independent module is a module which is not derived from
+ * or based on this library. If you modify this library, you may extend
+ * this exception to your version of the library, but you are not
+ * obligated to do so. If you do not wish to do so, delete this
+ * exception statement from your version.
+ */
+
+package com.sun.image.codec.jpeg;
+
+/**
+ * <p>
+ * JPEGDecodeParam encapsulates tables and options necessary to control decoding
+ * JPEG data streams. Parameters are either set explicitly by the application
+ * for encoding, or read from the JPEG header for decoding. In the case of
+ * decoding abbreviated data streams the application may need to set some/all of
+ * the values it's self.
+ * </p>
+ * <p>
+ * When working with BufferedImages (@see JPEGImageDecoder.decodeBufferedImage),
+ * the codec will attempt to generate an appropriate ColorModel for the JPEG
+ * COLOR_ID. This is not always possible (example mappings are listed below) .
+ * In cases where unsupported conversions are required, or unknown encoded
+ * COLOR_ID's are in use, the user must request the data as a Raster and perform
+ * the transformations themselves. When decoding into a raster (@see
+ * JPEGImageDecoder.decodeRaster) no ColorSpace adjustments are made. Note: The
+ * color ids described herein are simply enumerated values that influence data
+ * processing by the JPEG codec. JPEG compression is by definition color blind.
+ * These values are used as hints when decompressing JPEG data. Of particular
+ * interest is the default conversion from YCbCr to sRGB when decoding buffered
+ * Images.
+ * </p>
+ * <p>
+ * Note: because JPEG is mostly color-blind color fidelity can not be
+ * guaranteed. This will hopefully be rectified in the near future by the wide
+ * spread inclusion of ICC-profiles in the JPEG data stream (as a special
+ * marker). The following is an example of the conversions that take place. This
+ * is only a guide to the types of conversions that are allowed. This list is
+ * likely to change in the future so it is strongly recommended that you check
+ * for thrown ImageFormatExceptions and check the actual ColorModel associated
+ * with the BufferedImage returned rather than make assumptions.
+ * </p>
+ * DECODING:
+ * 
+ * <pre>
+ * JPEG (Encoded) Color ID   BufferedImage ColorSpace 
+ * =======================   ======================== 
+ * COLOR_ID_UNKNOWN          ** Invalid ** 
+ * COLOR_ID_GRAY             CS_GRAY
+ * COLOR_ID_RGB              CS_sRGB 
+ * COLOR_ID_YCbCr            CS_sRGB 
+ * COLOR_ID_CMYK             ** Invalid **
+ * COLOR_ID_PYCC             CS_PYCC 
+ * COLOR_ID_RGBA             CS_sRGB (w/ alpha) 
+ * COLOR_ID_YCbCrA           CS_sRGB (w/ alpha) 
+ * COLOR_ID_RGBA_INVERTED    ** Invalid **
+ * COLOR_ID_YCbCrA_INVERTED  ** Invalid ** 
+ * COLOR_ID_PYCCA            CS_PYCC (w/ alpha)
+ * COLOR_ID_YCCK             ** Invalid **
+ * </pre>
+ * <p>
+ * If the user needs better control over conversion, the user must request the
+ * data as a Raster and handle the conversion of the image data themselves. When
+ * decoding JFIF files the encoded COLOR_ID will always be one of:
+ * COLOR_ID_UNKNOWN, COLOR_ID_GRAY, COLOR_ID_RGB, COLOR_ID_YCbCr, COLOR_ID_CMYK,
+ * or COLOR_ID_YCCK
+ * </p>
+ * <p>
+ * Note that the classes in the com.sun.image.codec.jpeg package are not part of
+ * the core Java APIs. They are a part of Sun's JDK and JRE distributions.
+ * Although other licensees may choose to distribute these classes, developers
+ * cannot depend on their availability in non-Sun implementations. We expect
+ * that equivalent functionality will eventually be available in a core API or
+ * standard extension.
+ * </p>
+ */
+public interface JPEGDecodeParam extends Cloneable {
+
+    /** APP0 marker - JFIF info */
+    public static final int APP0_MARKER = 0xE0;
+    /** APP1 marker */
+    public static final int APP1_MARKER = 0xE1;
+    /** APP2 marker */
+    public static final int APP2_MARKER = 0xE2;
+    /** APP3 marker */
+    public static final int APP3_MARKER = 0xE3;
+    /** APP4 marker */
+    public static final int APP4_MARKER = 0xE4;
+    /** APP5 marker */
+    public static final int APP5_MARKER = 0xE5;
+    /** APP6 marker */
+    public static final int APP6_MARKER = 0xE6;
+    /** APP7 marker */
+    public static final int APP7_MARKER = 0xE7;
+    /** APP8 marker */
+    public static final int APP8_MARKER = 0xE8;
+    /** APP9 marker */
+    public static final int APP9_MARKER = 0xE9;
+    /** APPA marker */
+    public static final int APPA_MARKER = 0xEA;
+    /** APPB marker */
+    public static final int APPB_MARKER = 0xEB;
+    /** APPC marker */
+    public static final int APPC_MARKER = 0xEC;
+    /** APPD marker */
+    public static final int APPD_MARKER = 0xED;
+    /** APPE marker - Adobe info */
+    public static final int APPE_MARKER = 0xEE;
+    /** APPF marker */
+    public static final int APPF_MARKER = 0xEF;
+    /** Adobe marker indicates presence/need for Adobe marker. */
+    public static final int COMMENT_MARKER = 0XFE;
+
+    /* Color ID values */
+    public static final int COLOR_ID_UNKNOWN = 0;
+    public static final int COLOR_ID_GRAY = 1;
+    public static final int COLOR_ID_RGB = 2;
+    public static final int COLOR_ID_YCbCr = 3;
+    public static final int COLOR_ID_CMYK = 4;
+    public static final int COLOR_ID_PYCC = 5;
+    public static final int COLOR_ID_RGBA = 6;
+    public static final int COLOR_ID_YCbCrA = 7;
+    public static final int COLOR_ID_RGBA_INVERTED = 8;
+    public static final int COLOR_ID_YCbCrA_INVERTED = 9;
+    public static final int COLOR_ID_PYCCA = 10;
+    public static final int COLOR_ID_YCCK = 11;
+    public static final int NUM_COLOR_ID = 12;
+
+    /** Number of allowed Huffman and Quantization Tables */
+    public static final int NUM_TABLES = 4;
+
+    /** The X and Y units simply indicate the aspect ratio of the pixels. */
+    public static final int DENSITY_UNIT_ASPECT_RATIO = 0;
+    /** Pixel density is in pixels per inch. */
+    public static final int DENSITY_UNIT_DOTS_INCH = 1;
+    /** Pixel density is in pixels per centimeter. */
+    public static final int DENSITY_UNIT_DOTS_CM = 2;
+    /** The max known value for DENSITY_UNIT */
+    public static final int NUM_DENSITY_UNIT = 3;
+
+    public Object clone();
+
+    /**
+     * Get the image width.
+     * 
+     * @return int the width of the image data in pixels.
+     */
+    public int getWidth();
+
+    /**
+     * Get the image height.
+     * 
+     * @return The height of the image data in pixels.
+     */
+    public int getHeight();
+
+    /**
+     * Return the Horizontal subsampling factor for requested Component. The
+     * Subsample factor is the number of input pixels that contribute to each
+     * output pixel. This is distinct from the way the JPEG to each output
+     * pixel. This is distinct from the way the JPEG standard defines this
+     * quantity, because fractional subsampling factors are not allowed.
+     * 
+     * @param component
+     *            The component of the encoded image to return the subsampling
+     *            factor for.
+     * @return The subsample factor.
+     */
+    public int getHorizontalSubsampling(int component);
+
+    /**
+     * Return the Vertical subsampling factor for requested Component. The
+     * Subsample factor is the number of input pixels that contribute to each
+     * output pixel. This is distinct from the way the JPEG to each output
+     * pixel. This is distinct from the way the JPEG standard defines this
+     * quantity, because fractional subsampling factors are not allowed.
+     * 
+     * @param component
+     *            The component of the encoded image to return the subsampling
+     *            factor for.
+     * @return The subsample factor.
+     */
+    public int getVerticalSubsampling(int component);
+
+    /**
+     * Returns the coefficient quantization tables or NULL if not defined.
+     * tableNum must range in value from 0 - 3.
+     * 
+     * @param tableNum
+     *            the index of the table to be returned.
+     * @return Quantization table stored at index tableNum.
+     */
+    public JPEGQTable getQTable(int tableNum);
+
+    /**
+     * Returns the Quantization table for the requested component.
+     * 
+     * @param component
+     *            the image component of interest.
+     * @return Quantization table associated with component
+     */
+    public JPEGQTable getQTableForComponent(int component);
+
+    /**
+     * Returns the DC Huffman coding table requested or null if not defined
+     * 
+     * @param tableNum
+     *            the index of the table to be returned.
+     * @return Huffman table stored at index tableNum.
+     */
+    public JPEGHuffmanTable getDCHuffmanTable(int tableNum);
+
+    /**
+     * Returns the DC Huffman coding table for the requested component.
+     * 
+     * @param component
+     *            the image component of interest.
+     * @return Huffman table associated with component
+     */
+    public JPEGHuffmanTable getDCHuffmanTableForComponent(int component);
+
+    /**
+     * Returns the AC Huffman coding table requested or null if not defined
+     * 
+     * @param tableNum
+     *            the index of the table to be returned.
+     * @return Huffman table stored at index tableNum.
+     */
+    public JPEGHuffmanTable getACHuffmanTable(int tableNum);
+
+    /**
+     * Returns the AC Huffman coding table for the requested component.
+     * 
+     * @param component
+     *            the image component of interest.
+     * @return Huffman table associated with component
+     */
+    public JPEGHuffmanTable getACHuffmanTableForComponent(int component);
+
+    /**
+     * Get the number of the DC Huffman table that will be used for a particular
+     * component.
+     * 
+     * @param component
+     *            The Component of interest.
+     * @return The table number of the DC Huffman table for component.
+     */
+    public int getDCHuffmanComponentMapping(int component);
+
+    /**
+     * Get the number of the AC Huffman table that will be used for a particular
+     * component.
+     * 
+     * @param component
+     *            The Component of interest.
+     * @return The table number of the AC Huffman table for component.
+     */
+    public int getACHuffmanComponentMapping(int component);
+
+    /**
+     * Get the number of the quantization table that will be used for a
+     * particular component.
+     * 
+     * @param component
+     *            The Component of interest.
+     * @return The table number of the Quantization table for component.
+     */
+    public int getQTableComponentMapping(int component);
+
+    /**
+     * Returns true if the image information in the ParamBlock is currently
+     * valid. This indicates if image data was read from the stream for decoding
+     * and weather image data should be written when encoding.
+     */
+    public boolean isImageInfoValid();
+
+    /**
+     * Returns true if the tables in the ParamBlock are currently valid. This
+     * indicates that tables were read from the stream for decoding. When
+     * encoding this indicates whether tables should be written to the stream.
+     */
+    public boolean isTableInfoValid();
+
+    /**
+     * Returns true if at least one instance of the marker is present in the
+     * Parameter object. For encoding returns true if there is at least one
+     * instance of the marker to be written.
+     * 
+     * @param marker
+     *            The marker of interest.
+     */
+    public boolean getMarker(int marker);
+
+    /**
+     * Returns a 'byte[][]' associated with the requested marker in the
+     * parameter object. Each entry in the 'byte[][]' is the data associated
+     * with one instance of the marker (each marker can theoretically appear any
+     * number of times in a stream).
+     * 
+     * @param marker
+     *            The marker of interest.
+     * @return The 'byte[][]' for this marker or null if none available.
+     */
+    public byte[][] getMarkerData(int marker);
+
+    /**
+     * Returns the JPEG Encoded color id. This is generally speaking only used
+     * if you are decoding into Rasters. Note that when decoding into a Raster
+     * no color conversion is performed.
+     * 
+     * @return The value of the JPEG encoded data's color id.
+     */
+    public int getEncodedColorID();
+
+    /**
+     * Returns the number of components for the current encoding COLOR_ID.
+     * 
+     * @return the number of Components
+     */
+    public int getNumComponents();
+
+    /**
+     * Get the MCUs per restart marker.
+     * 
+     * @return The number of MCUs between restart markers.
+     */
+    public int getRestartInterval();
+
+    /**
+     * Get the code for pixel size units This value is copied from the APP0
+     * marker. It isn't used by the JPEG codec. If the APP0 marker wasn't
+     * present then you can not rely on this value.
+     * 
+     * @return Value indicating the density unit one of the DENSITY_UNIT_*
+     *         constants.
+     */
+    public int getDensityUnit();
+
+    /**
+     * Get the horizontal pixel density This value is copied from the APP0
+     * marker. It isn't used by the JPEG code. If the APP0 marker wasn't present
+     * then you can not rely on this value.
+     * 
+     * @return The horizontal pixel density, in units described by
+     * @see #getDensityUnit()
+     */
+    public int getXDensity();
+
+    /**
+     * Get the vertical pixel density This value is copied into the APP0 marker.
+     * It isn't used by the JPEG code. If the APP0 marker wasn't present then
+     * you can not rely on this value.
+     * 
+     * @return The vertical pixel density, in units described by
+     * @see #getDensityUnit()
+     */
+    public int getYDensity();
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/overlays/jpeg/openjdk/jdk/src/share/classes/com/sun/image/codec/jpeg/JPEGEncodeParam.java	Wed May 18 15:46:37 2011 +0100
@@ -0,0 +1,307 @@
+/* JPEGEncodeParam.java -- 
+   Copyright (C) 2007 Free Software Foundation, Inc.
+
+   This file is part of GNU Classpath.
+
+   GNU Classpath is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   GNU Classpath 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 for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with GNU Classpath; see the file COPYING.  If not, write to the
+   Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+   02110-1301 USA.
+
+   Linking this library statically or dynamically with other modules is
+   making a combined work based on this library.  Thus, the terms and
+   conditions of the GNU General Public License cover the whole
+   combination.
+
+   As a special exception, the copyright holders of this library give you
+   permission to link this library with independent modules to produce an
+   executable, regardless of the license terms of these independent
+   modules, and to copy and distribute the resulting executable under
+   terms of your choice, provided that you also meet, for each linked
+   independent module, the terms and conditions of the license of that
+   module.  An independent module is a module which is not derived from
+   or based on this library.  If you modify this library, you may extend
+   this exception to your version of the library, but you are not
+   obligated to do so.  If you do not wish to do so, delete this
+   exception statement from your version. */
+
+package com.sun.image.codec.jpeg;
+
+/**
+ * <p>
+ * JPEGEncodeParam encapsulates tables and options necessary to control encoding
+ * of JPEG data streams. Parameters are either set explicitly by the application
+ * for encoding, or read from another JPEG header.
+ * </p>
+ * <p>
+ * When working with BufferedImages, the codec will attempt to match the encoded
+ * JPEG COLOR_ID with the ColorModel in the BufferedImage. This is not always
+ * possible (the default mappings are listed below). In cases where unsupported
+ * conversions are required (or odd image colorspaces are in use) the user must
+ * either convert the image data to a known ColorSpace or encode the data from a
+ * raster. When encoding rasters no colorspace adjustments are made, so the user
+ * must do any conversions required to get to the encoded COLOR_ID. The COLOR_ID
+ * for the encoded images is used to control the JPEG codec's inital values for
+ * Huffman and Quantization Tables as well as subsampling factors. It is also
+ * used to determine what color conversion should be performed to obtain the
+ * best encoding.
+ * </p>
+ * <p>
+ * Note: The color ids described herein are simply enumerated values that
+ * influence data processing by the JPEG codec. JPEG compression is, by
+ * definition, color blind. These values are used as hints when compressing JPEG
+ * data. Through these values the JPEG codec can perform some default rotation
+ * of data into spaces that will aid in getting better compression ratios.
+ * </p>
+ * <p>
+ * Example behavior is described below. Since these mappings are likely to
+ * change in the future it is strongly recommended that you make use of the @see
+ * JPEGImageEncoder.getDefaultParamBlock calls and check the encodedColorID for
+ * your particular BufferedImage. In extreme cases is may be necessary for the
+ * user to convert the image to the desired colorspace, and encode it from a
+ * Raster. In this case the API programmer must specify the colorID of the data
+ * in the Raster and no color conversion will take place.
+ * </p>
+ * 
+ * ENCODING:
+ * 
+ * <pre>
+ * BufferedImage Type/Instance   JPEG (Encoded) Color ID
+ * ===========================   ======================= 
+ * TYPE_GRAY                     COLOR_ID_GRAYSCALE 
+ * TYPE_RGB                      COLOR_ID_YCbCr 
+ * TYPE_YCbCr                    COLOR_ID_YCbCr
+ * TYPE_YCbCr/CS_PYCC            COLOR_ID_PYCC 
+ * TYPE_CMYK                     COLOR_ID_CMYK 
+ * TYPE_RGB (w/ alpha)           COLOR_ID_YCbCrA 
+ * TYPE_YCbCr (w/ alpha)         COLOR_ID_YCbCrA 
+ * TYPE_YCbCr/CS_PYCC (w/ alpha) COLOR_ID_PYCCA 
+ * ** Any Other **               COLOR_ID_UNKNOWN
+ * </pre>
+ * <p>
+ * When the user wants more control than the BufferedImage conversions provide,
+ * the user must encode the data from a Raster. In this case the data undergoes
+ * no color conversion at all. It is the user's responsibility to perform the
+ * desired conversions. If you intend to write a JFIF image (by including the
+ * APP0_MARKER) the encoded COLOR_ID must be one of: COLOR_ID_UNKNOWN,
+ * COLOR_ID_GRAYSCALE, COLOR_ID_YCbCr, or COLOR_ID_CMYK. In all other instances
+ * an ImageformatException will be thrown.
+ * </p>
+ * <p>
+ * IMPORTANT: an Alpha RGB BufferedImage will not map to a valid JFIF stream,
+ * you must strip off the alpha prior to encoding if you want a JFIF file. If
+ * the APP0 marker is set and you do not strip off the Alpha, an
+ * ImageFormatException will be thrown.
+ * </p>
+ * <p>
+ * Note that the classes in the com.sun.image.codec.jpeg package are not part of
+ * the core Java APIs. They are a part of Sun's JDK and JRE distributions.
+ * Although other licensees may choose to distribute these classes, developers
+ * cannot depend on their availability in non-Sun implementations. We expect
+ * that equivalent functionality will eventually be available in a core API or
+ * standard extension.
+ * </p>
+ */
+public interface JPEGEncodeParam extends JPEGDecodeParam {
+
+    /**
+     * Set the horizontal subsample factor for the given component. Note that
+     * the subsample factor is the number of input pixels that contribute to
+     * each output pixel (usually 2 for YCC).
+     * 
+     * @param component
+     *            The component being specified.
+     * @param subsample
+     *            The subsampling factor being specified.
+     */
+    public void setHorizontalSubsampling(int component, int subsample);
+
+    /**
+     * Set the vertical subsample factor for the given component. Note that the
+     * subsample factor is the number of input pixels that contribute to each
+     * output pixel (usually 2 for YCC).
+     * 
+     * @param component
+     *            The component being specified.
+     * @param subsample
+     *            The subsampling factor being specified.
+     */
+    public void setVerticalSubsampling(int component, int subsample);
+
+    /**
+     * Sets the coefficient quantization tables at index passed. tableNum must
+     * range in value from 0 - 3.
+     * 
+     * @param qtable
+     *            that will be used.
+     * @param tableNum
+     *            the index of the table to be set.
+     */
+    public void setQTable(int tableNum, JPEGQTable qTable);
+
+    /**
+     * Sets the DC Huffman coding table at index to the table provided.
+     * 
+     * @param huffTable
+     *            JPEGHuffmanTable that will be assigned to index tableNum.
+     * @param tableNum
+     *            - the index of the table to be set.
+     * @exception IllegalArgumentException
+     *                - thrown if the tableNum is out of range. Index must range
+     *                in value from 0 - 3.
+     */
+    public void setDCHuffmanTable(int tableNum, JPEGHuffmanTable huffTable);
+
+    /**
+     * Sets the AC Huffman coding table at index to the table provided.
+     * 
+     * @param huffTable
+     *            JPEGHuffmanTable that will be assigned to index tableNum.
+     * @param tableNum
+     *            - the index of the table to be set.
+     * @exception IllegalArgumentException
+     *                - thrown if the tableNum is out of range. Index must range
+     *                in value from 0 - 3.
+     */
+    public void setACHuffmanTable(int tableNum, JPEGHuffmanTable huffTable);
+
+    /**
+     * Sets the mapping between a component and it's DC Huffman Table.
+     * 
+     * @param component
+     *            The component to set the mapping for
+     * @param table
+     *            The DC Huffman table to use for component
+     */
+    public void setDCHuffmanComponentMapping(int component, int table);
+
+    /**
+     * Sets the mapping between a component and it's AC Huffman Table.
+     * 
+     * @param component
+     *            The component to set the mapping for
+     * @param table
+     *            The AC Huffman table to use for component
+     */
+    public void setACHuffmanComponentMapping(int component, int table);
+
+    /**
+     * Sets the mapping between a component and it's Quantization Table.
+     * 
+     * @param component
+     *            The component to set the mapping for
+     * @param table
+     *            The Quantization Table to use for component
+     */
+    public void setQTableComponentMapping(int component, int table);
+
+    /**
+     * Set the flag indicating the validity of the table information in the
+     * ParamBlock. This is used to indicate if tables should be included when
+     * encoding.
+     */
+    public void setImageInfoValid(boolean flag);
+
+    /**
+     * Set the flag indicating the validity of the image information in the
+     * ParamBlock. This is used to indicates if image data should be written
+     * when encoding.
+     */
+    public void setTableInfoValid(boolean flag);
+
+    /**
+     * Sets the marker data to be written to the output data stream. This
+     * removes any existing marker data in the JPEParm object. This can be used
+     * to remove the default APP0 marker by calling it with data set to null.
+     * 
+     * @param marker
+     *            The marker to set the data for.
+     * @param data
+     *            the new set of data to be written.
+     */
+    public void setMarkerData(int marker, byte[][] data);
+
+    /**
+     * Appends 'data' to the array of byte[] associated with marker. This will
+     * result in additional instance of the marker being written (one for each
+     * byte[] in the array.).
+     * 
+     * @param marker
+     *            The marker to add and instance of.
+     * @param data
+     *            the data to be written.
+     */
+    public void addMarkerData(int marker, byte[] data);
+
+    /**
+     * Set the MCUs per restart, or 0 for no restart markers.
+     * 
+     * @param restartInterval
+     *            number MCUs per restart marker.
+     */
+    public void setRestartInterval(int restartInterval);
+
+    /**
+     * Set the pixel size units This value is copied into the APP0 marker (if
+     * that marker is written). This value isn't used by the JPEG code.
+     * 
+     * @param unit
+     *            One of the DENSITY_UNIT_* values.
+     */
+    public void setDensityUnit(int unit);
+
+    /**
+     * Set the horizontal pixel density. This value is written into the APP0
+     * marker. It isn't used by the JPEG code.
+     * 
+     * @param density
+     *            the horizontal pixel density, in units described by @see
+     *            JPEGParam.getDensityUnit.
+     */
+    public void setXDensity(int density);
+
+    /**
+     * Set the vertical pixel density. This value is copied into the JFIF APP0
+     * marker. It isn't used by the JPEG code.
+     * 
+     * @param density
+     *            The vertical pixel density, in units described by @see
+     *            JPEGParam.getDensityUnit.
+     */
+    public void setYDensity(int density);
+
+    /**
+     * This creates new Quantization tables that replace the currently installed
+     * Quantization tables. It also updates the Component QTable mapping to the
+     * default for the current encoded COLOR_ID.
+     * 
+     * The Created Quantization table varies from very high compression, very
+     * low quality, (0.0) to low compression, very high quality (1.0) based on
+     * the quality parameter.
+     * 
+     * At a quality level of 1.0 the table will be all 1's which will lead to no
+     * loss of data due to quantization (however chrominance subsampling, if
+     * used, and roundoff error in the DCT will still degrade the image some
+     * what).
+     * 
+     * This is a linear manipulation of the standard chrominance Q-Table.
+     * 
+     * Some guidelines: 0.75 high quality 0.5 medium quality 0.25 low quality
+     * 
+     * @param quality
+     *            0.0-1.0 setting of desired quality level.
+     * @param forceBaseline
+     *            force baseline quantization table
+     */
+    public void setQuality(float quality, boolean forceBaseline);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/overlays/jpeg/openjdk/jdk/src/share/classes/com/sun/image/codec/jpeg/JPEGHuffmanTable.java	Wed May 18 15:46:37 2011 +0100
@@ -0,0 +1,97 @@
+/* JPEGHuffmanTable.java -- Huffman table implementation for JPEG.
+Copyright (C) 2011 Red Hat
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program 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 for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+package com.sun.image.codec.jpeg;
+
+/**
+ * A class to encapsulate a JPEG Huffman table.
+ */
+public class JPEGHuffmanTable extends
+	javax.imageio.plugins.jpeg.JPEGHuffmanTable {
+
+    /**
+     * The standard DC luminance Huffman table.
+     */
+    public static final JPEGHuffmanTable StdDCLuminance;
+
+    /**
+     * The standard DC chrominance Huffman table.
+     */
+    public static final JPEGHuffmanTable StdDCChrominance;
+
+    /**
+     * The standard AC luminance Huffman table.
+     */
+    public static final JPEGHuffmanTable StdACLuminance;
+
+    /**
+     * The standard AC chrominance Huffman table.
+     */
+    public static final JPEGHuffmanTable StdACChrominance;
+
+    static {
+	javax.imageio.plugins.jpeg.JPEGHuffmanTable temp = javax.imageio.plugins.jpeg.JPEGHuffmanTable.StdDCLuminance;
+	StdDCLuminance = new JPEGHuffmanTable(temp.getLengths(),
+		temp.getValues());
+
+	temp = javax.imageio.plugins.jpeg.JPEGHuffmanTable.StdDCChrominance;
+	StdDCChrominance = new JPEGHuffmanTable(temp.getLengths(),
+		temp.getValues());
+
+	temp = javax.imageio.plugins.jpeg.JPEGHuffmanTable.StdACLuminance;
+	StdACLuminance = new JPEGHuffmanTable(temp.getLengths(),
+		temp.getValues());
+
+	temp = javax.imageio.plugins.jpeg.JPEGHuffmanTable.StdACChrominance;
+	StdACChrominance = new JPEGHuffmanTable(temp.getLengths(),
+		temp.getValues());
+    }
+
+    /**
+     * Creates a Huffman table and initializes it. The input arrays are copied.
+     * The arrays must describe a possible Huffman table. For example, 3 codes
+     * cannot be expressed with a single bit.
+     * 
+     * @param lengths
+     *            an array of {@code short}s where <code>lengths[k]</code> is
+     *            equal to the number of values with corresponding codes of
+     *            length <code>k + 1</code> bits.
+     * @param values
+     *            an array of shorts containing the values in order of
+     *            increasing code length.
+     * @throws IllegalArgumentException
+     *             if <code>lengths</code> or <code>values</code> are null, the
+     *             length of <code>lengths</code> is greater than 16, the length
+     *             of <code>values</code> is greater than 256, if any value in
+     *             <code>lengths</code> or <code>values</code> is less than
+     *             zero, or if the arrays do not describe a valid Huffman table.
+     */
+    public JPEGHuffmanTable(short lengths[], short symbols[]) {
+	super(lengths, symbols);
+    }
+
+    /**
+     * Return an array containing the Huffman symbols arranged by increasing
+     * length. To make use of this array you must refer the the lengths array.
+     * 
+     * @return A short array of Huffman symbols
+     */
+    public short[] getSymbols() {
+	return getValues();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/overlays/jpeg/openjdk/jdk/src/share/classes/com/sun/image/codec/jpeg/JPEGImageDecoder.java	Wed May 18 15:46:37 2011 +0100
@@ -0,0 +1,102 @@
+/* JPEGImageDecoder.java -- 
+   Copyright (C) 2007 Free Software Foundation, Inc.
+   Copyright (C) 2007 Matthew Flaschen
+
+   This file is part of GNU Classpath.
+
+   GNU Classpath is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   GNU Classpath 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 for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with GNU Classpath; see the file COPYING.  If not, write to the
+   Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+   02110-1301 USA.
+
+   Linking this library statically or dynamically with other modules is
+   making a combined work based on this library.  Thus, the terms and
+   conditions of the GNU General Public License cover the whole
+   combination.
+
+   As a special exception, the copyright holders of this library give you
+   permission to link this library with independent modules to produce an
+   executable, regardless of the license terms of these independent
+   modules, and to copy and distribute the resulting executable under
+   terms of your choice, provided that you also meet, for each linked
+   independent module, the terms and conditions of the license of that
+   module.  An independent module is a module which is not derived from
+   or based on this library.  If you modify this library, you may extend
+   this exception to your version of the library, but you are not
+   obligated to do so.  If you do not wish to do so, delete this
+   exception statement from your version. */
+
+package com.sun.image.codec.jpeg;
+
+import java.awt.image.BufferedImage;
+import java.awt.image.Raster;
+
+import java.io.InputStream;
+import java.io.IOException;
+
+public interface JPEGImageDecoder {
+
+    /**
+     * Decodes the current JPEG data stream. The result of decoding this
+     * InputStream is a BufferedImage the ColorModel associated with this
+     * BufferedImage is determined based on the encoded COLOR_ID of the
+     * JPEGDecodeParam object. For a tables only stream this will return null.
+     * 
+     * @return BufferedImage containing the image data.
+     * @throws ImageFormatException
+     *             If irregularities in the JPEG stream or an unknown condition
+     *             is encountered.
+     * @throws IOException
+     */
+    public BufferedImage decodeAsBufferedImage() throws IOException,
+	    ImageFormatException;
+
+    /**
+     * Decode the JPEG stream that was passed as part of construction. The JPEG
+     * decompression will be performed according to the current settings of the
+     * JPEGDecodeParam object. For a tables only stream this will return null.
+     * 
+     * @return Raster containg the image data. Colorspace and other pertinent
+     *         information can be obtained from the JPEGDecodeParam object.
+     * @throws ImageFormatException
+     *             If irregularities in the JPEG stream or an unknown condition
+     *             is encountered.
+     * @throws IOException
+     */
+    public Raster decodeAsRaster() throws IOException, ImageFormatException;
+
+    /**
+     * Get the input stream that decoding will occur from.
+     * 
+     * @return The stream that the decoder is currently associated with.
+     */
+    public InputStream getInputStream();
+
+    /**
+     * Returns the JPEGDecodeParam object that resulted from the most recent
+     * decoding event.
+     * 
+     * @return
+     */
+    public JPEGDecodeParam getJPEGDecodeParam();
+
+    /**
+     * Sets the JPEGDecodeParam object used to determine the features of the
+     * decompression performed on the JPEG encoded data. This is usually only
+     * needed for decoding abbreviated JPEG data streams.
+     * 
+     * @param jdp
+     *            JPEGDecodeParam object
+     */
+    public void setJPEGDecodeParam(JPEGDecodeParam jdp);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/overlays/jpeg/openjdk/jdk/src/share/classes/com/sun/image/codec/jpeg/JPEGImageEncoder.java	Wed May 18 15:46:37 2011 +0100
@@ -0,0 +1,208 @@
+/* JPEGImageEncoder.java -- 
+   Copyright (C) 2007 Free Software Foundation, Inc.
+
+   This file is part of GNU Classpath.
+
+   GNU Classpath is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   GNU Classpath 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 for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with GNU Classpath; see the file COPYING.  If not, write to the
+   Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+   02110-1301 USA.
+
+   Linking this library statically or dynamically with other modules is
+   making a combined work based on this library.  Thus, the terms and
+   conditions of the GNU General Public License cover the whole
+   combination.
+
+   As a special exception, the copyright holders of this library give you
+   permission to link this library with independent modules to produce an
+   executable, regardless of the license terms of these independent
+   modules, and to copy and distribute the resulting executable under
+   terms of your choice, provided that you also meet, for each linked
+   independent module, the terms and conditions of the license of that
+   module.  An independent module is a module which is not derived from
+   or based on this library.  If you modify this library, you may extend
+   this exception to your version of the library, but you are not
+   obligated to do so.  If you do not wish to do so, delete this
+   exception statement from your version. */
+
+package com.sun.image.codec.jpeg;
+
+import java.io.OutputStream;
+import java.io.IOException;
+
+import java.awt.image.BufferedImage;
+import java.awt.image.ColorModel;
+import java.awt.image.Raster;
+
+public interface JPEGImageEncoder {
+    /**
+     * This is a factory method for creating JPEGEncodeParam objects. The
+     * returned object will do a credible job of encoding the given
+     * BufferedImage.
+     * 
+     * @param bi
+     * @return
+     * @throws ImageFormatException
+     */
+    public JPEGEncodeParam getDefaultJPEGEncodeParam(BufferedImage bi)
+	    throws ImageFormatException;
+
+    /**
+     * This is a factory method for creating JPEGEncodeParam objects. It is the
+     * users responsibility to match the colorID with the given number of bands,
+     * which should match the data being encoded. Failure to do so may lead to
+     * poor compression and/or poor image quality. If you don't understand much
+     * about JPEG it is strongly recommended that you stick to the BufferedImage
+     * interface.
+     * 
+     * @param numBands
+     *            the number of bands that will be encoded (max of four).
+     * @param colorID
+     *            the COLOR_ID for the encoded data. This is used to set
+     *            reasonable defaults in the parameter object. This must match
+     *            the number of bands given.
+     * @return
+     * @throws ImageFormatException
+     */
+    public JPEGEncodeParam getDefaultJPEGEncodeParam(int numBands, int colorID)
+	    throws ImageFormatException;
+
+    /**
+     * This is a factory method for creating a JPEGEncodeParam from a
+     * JPEGDecodeParam. This will return a new JPEGEncodeParam object that is
+     * initialized from the JPEGDecodeParam object. All major pieces of
+     * information will be initialized from the DecodeParam (Markers, Tables,
+     * mappings).
+     * 
+     * @param d
+     *            The JPEGDecodeParam object to copy.
+     * @return
+     * @throws ImageFormatException
+     */
+    public JPEGEncodeParam getDefaultJPEGEncodeParam(JPEGDecodeParam d)
+	    throws ImageFormatException;
+
+    /**
+     * This is a factory method for creating JPEGEncodeParam objects. It is the
+     * users responsiblity to match the colorID with the data contained in the
+     * Raster. Failure to do so may lead to either poor compression or poor
+     * image quality. If you don't understand much about JPEG it is strongly
+     * reccomended that you stick to the BufferedImage interfaces.
+     * 
+     * @param ras
+     * @param colorID
+     * @return
+     * @throws ImageFormatException
+     */
+    public JPEGEncodeParam getDefaultJPEGEncodeParam(Raster ras, int colorID)
+	    throws ImageFormatException;
+
+    public JPEGEncodeParam getJPEGEncodeParam() throws ImageFormatException;
+
+    /**
+     * Set the JPEGEncodeParam object that is to be used for future encoding
+     * operations. 'p' is copied so changes will not be tracked, unless you call
+     * this method again.
+     * 
+     * @param p
+     *            The JPEGEncodeParam object to use for future encodings.
+     */
+    public void setJPEGEncodeParam(JPEGEncodeParam p);
+
+    /**
+     * Return the stream the Encoder is current associated with.
+     * 
+     * @return
+     */
+    public OutputStream getOutputStream();
+
+    /**
+     * Encode a BufferedImage as a JPEG data stream. Note, some color
+     * conversions may takes place. The jep's encoded COLOR_ID should match the
+     * value returned by getDefaultColorID when given the BufferedImage's
+     * ColorModel. This call also sets the current JPEGEncodeParam object. The
+     * given JPEGEncodeParam object will be used for this and future encodings.
+     * If p is null then a new JPEGEncodeParam object will be created by calling
+     * getDefaultJPEGEncodeParam with bi.
+     * 
+     * @param bi
+     *            The BufferedImage to encode.
+     * @param p
+     *            The JPEGEncodeParam object used to control the encoding.
+     * @throws IOException
+     * @throws ImageFormatException
+     */
+    public void encode(BufferedImage bi, JPEGEncodeParam p) throws IOException,
+	    ImageFormatException;
+
+    /**
+     * Encode a Raster as a JPEG data stream. Note that no color conversion
+     * takes place. It is required that you match the Raster to the encoded
+     * COLOR_ID contained in the current JPEGEncodeParam object. If no
+     * JPEGEncodeParam object has been provided yet a new JPEGEncodeParam object
+     * will be created by calling getDefaultJPEGEncodeParam with ras and
+     * COLOR_ID_UNKNOWN.
+     * 
+     * @param ras
+     *            The Raster to encode.
+     * @throws IOException
+     * @throws ImageFormatException
+     */
+    public void encode(Raster ras) throws IOException, ImageFormatException;
+
+    /**
+     * Encode a BufferedImage as a JPEG data stream. Note, some color
+     * conversions may takes place. The current JPEGEncodeParam's encoded
+     * COLOR_ID should match the value returned by getDefaultColorID when given
+     * the BufferedImage's ColorModel. If no JPEGEncodeParam object has been
+     * provided yet a default one will be created by calling
+     * getDefaultJPEGEncodeParam with bi.
+     * 
+     * @param bi
+     *            The BufferedImage to encode.
+     * @throws IOException
+     * @throws ImageFormatException
+     */
+    public void encode(BufferedImage bi) throws IOException,
+	    ImageFormatException;
+
+    /**
+     * Encode a Raster as a JPEG data stream. Note that no color conversion
+     * takes place. It is required that you match the Raster to the encoded
+     * COLOR_ID contained in the JPEGEncodeParam object. If p is null a new
+     * JPEGEncodeParam object will be created by calling
+     * getDefaultJPEGEncodeParam with ras and COLOR_ID_UNKNOWN.
+     * 
+     * @param ras
+     *            The Raster to encode.
+     * @param p
+     *            The JPEGEncodeParam object used to control the encoding.
+     * @throws IOException
+     * @throws ImageFormatException
+     */
+    public void encode(Raster ras, JPEGEncodeParam p) throws IOException,
+	    ImageFormatException;
+
+    /**
+     * Returns the 'default' encoded COLOR_ID for a given ColorModel. This
+     * method is not needed in the simple case of encoding Buffered Images (the
+     * library will figure things out for you). It can be useful for encoding
+     * Rasters. To determine what needs to be done to the image prior to
+     * encoding.
+     * 
+     * @param cm
+     *            The ColorModel to map to an jpeg encoded COLOR_ID.
+     * @return
+     */
+    public int getDefaultColorID(ColorModel cm);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/overlays/jpeg/openjdk/jdk/src/share/classes/com/sun/image/codec/jpeg/JPEGQTable.java	Wed May 18 15:46:37 2011 +0100
@@ -0,0 +1,118 @@
+/* JPEGQTable.java -- 
+   Copyright (C) 2011 Red Hat
+   Copyright (C) 2007 Free Software Foundation, Inc.
+   Copyright (C) 2007 Matthew Flaschen
+
+   This file is part of GNU Classpath.
+
+   GNU Classpath is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   GNU Classpath 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 for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with GNU Classpath; see the file COPYING.  If not, write to the
+   Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+   02110-1301 USA.
+
+   Linking this library statically or dynamically with other modules is
+   making a combined work based on this library.  Thus, the terms and
+   conditions of the GNU General Public License cover the whole
+   combination.
+
+   As a special exception, the copyright holders of this library give you
+   permission to link this library with independent modules to produce an
+   executable, regardless of the license terms of these independent
+   modules, and to copy and distribute the resulting executable under
+   terms of your choice, provided that you also meet, for each linked
+   independent module, the terms and conditions of the license of that
+   module.  An independent module is a module which is not derived from
+   or based on this library.  If you modify this library, you may extend
+   this exception to your version of the library, but you are not
+   obligated to do so.  If you do not wish to do so, delete this
+   exception statement from your version. */
+
+package com.sun.image.codec.jpeg;
+
+import java.util.Arrays;
+
+/**
+ * Class to encapsulate the JPEG quantization tables.
+ * 
+ * Note: The tables K1Luminance, K1Div2Luminance, K2Chrominance,
+ * K2Div2Chrominance is an instance of the superclass.
+ * 
+ * @author Andrew Su (asu@redhat.com)
+ * 
+ */
+public class JPEGQTable {
+
+    /**
+     * Luminance quantization table (in zig-zag order).
+     */
+    public static final JPEGQTable StdLuminance;
+
+    /**
+     * Chromninance quantization table (in zig-zag order).
+     */
+    public static final JPEGQTable StdChrominance;
+
+    static {
+	/* table for luminance values in zig-zag order */
+	int[] table1 = { 16, 11, 12, 14, 12, 10, 16, 14, 13, 14, 18, 17, 16,
+		19, 24, 40, 26, 24, 22, 22, 24, 49, 35, 37, 29, 40, 58, 51, 61,
+		60, 57, 51, 56, 55, 64, 72, 92, 78, 64, 68, 87, 69, 55, 56, 80,
+		109, 81, 87, 95, 98, 103, 104, 103, 62, 77, 113, 121, 112, 100,
+		120, 92, 101, 103, 99 };
+
+	StdLuminance = new JPEGQTable(table1);
+
+	/* table for chrominance values in zig-zag order */
+	int[] table2 = { 17, 18, 18, 24, 21, 24, 47, 26, 26, 47, 99, 66, 56,
+		66, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99,
+		99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99,
+		99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99,
+		99, 99, 99 };
+	StdChrominance = new JPEGQTable(table2);
+    }
+
+    private int[] table;
+
+    /**
+     * Constructs an quantization table from the array that was passed. The
+     * coefficients must be in zig-zag order. The array must be of length 64.
+     * The table will be copied.
+     * 
+     * @param table
+     *            the quantization table, as an int array.
+     * @throws IllegalArgumentException
+     *             if table is null or table.length is not equal to 64.
+     */
+    public JPEGQTable(int[] table) {
+	/* Table must be 8x8 thus 64 entries */
+	if (table == null || table.length != 64) {
+	    throw new IllegalArgumentException("Not a valid table.");
+	}
+	this.table = Arrays.copyOf(table, table.length);
+    }
+
+    public int[] getTable() {
+	return Arrays.copyOf(table, table.length);
+    }
+
+    public JPEGQTable getScaledInstance(float scaleFactor, boolean forceBaseline) {
+	int limit = (forceBaseline) ? 255 : 32767;
+	int[] newTable = new int[table.length];
+	for (int i = 0; i < table.length; i++) {
+	    int newValue = Math.round(table[i] * scaleFactor);
+	    newTable[i] = (newValue < 1) ? 1 : (newValue > limit) ? limit : newValue;
+	}
+	return new JPEGQTable(newTable);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/overlays/jpeg/openjdk/jdk/src/share/classes/com/sun/image/codec/jpeg/TruncatedFileException.java	Wed May 18 15:46:37 2011 +0100
@@ -0,0 +1,54 @@
+/* TruncatedFileException.java
+   Copyright (C) 2007 Matthew Flaschen
+
+   This file is part of IcedTea
+
+   IcedTea is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   IcedTea 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 for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with GNU Classpath; see the file COPYING.  If not, write to the
+   Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+   02110-1301 USA.
+
+   Linking this library statically or dynamically with other modules is
+   making a combined work based on this library.  Thus, the terms and
+   conditions of the GNU General Public License cover the whole
+   combination.
+
+   As a special exception, the copyright holders of this library give you
+   permission to link this library with independent modules to produce an
+   executable, regardless of the license terms of these independent
+   modules, and to copy and distribute the resulting executable under
+   terms of your choice, provided that you also meet, for each linked
+   independent module, the terms and conditions of the license of that
+   module.  An independent module is a module which is not derived from
+   or based on this library.  If you modify this library, you may extend
+   this exception to your version of the library, but you are not
+   obligated to do so.  If you do not wish to do so, delete this
+   exception statement from your version. */
+
+package com.sun.image.codec.jpeg;
+
+import java.awt.image.BufferedImage;
+
+public class TruncatedFileException extends RuntimeException {
+    public TruncatedFileException() {
+	this("");
+    }
+
+    public TruncatedFileException(String s) {
+	super(s);
+    }
+
+    public BufferedImage getBufferedImage() {
+	return null;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/overlays/jpeg/openjdk/jdk/src/share/classes/sun/awt/image/codec/JPEGImageDecoderImpl.java	Wed May 18 15:46:37 2011 +0100
@@ -0,0 +1,103 @@
+/* JPEGImageDecoderImpl.java -- JPEG decoder implementation
+Copyright (C) 2011 Red Hat
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program 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 for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+package sun.awt.image.codec;
+
+import java.awt.image.BufferedImage;
+import java.awt.image.Raster;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Iterator;
+
+import javax.imageio.ImageIO;
+import javax.imageio.ImageReader;
+import javax.imageio.plugins.jpeg.JPEGHuffmanTable;
+import javax.imageio.plugins.jpeg.JPEGImageReadParam;
+import javax.imageio.stream.MemoryCacheImageInputStream;
+
+import com.sun.image.codec.jpeg.ImageFormatException;
+import com.sun.image.codec.jpeg.JPEGDecodeParam;
+import com.sun.image.codec.jpeg.JPEGImageDecoder;
+import com.sun.imageio.plugins.jpeg.JPEGImageReader;
+
+/**
+ * This class provides the implementation for a JPEG decoder.
+ */
+public class JPEGImageDecoderImpl implements JPEGImageDecoder {
+    private static final String JPGMime = "image/jpeg";
+
+    private JPEGImageReader JPGReader;
+    private InputStream in;
+    private JPEGDecodeParam param;
+
+    public JPEGImageDecoderImpl(InputStream in) {
+	this(in, null);
+    }
+
+    public JPEGImageDecoderImpl(InputStream in, JPEGDecodeParam param) {
+	this.in = in;
+	setJPEGDecodeParam(param);
+
+	Iterator<ImageReader> JPGReaderIter = ImageIO
+		.getImageReadersByMIMEType(JPGMime);
+	if (JPGReaderIter.hasNext()) {
+	    JPGReader = (JPEGImageReader) JPGReaderIter.next();
+	}
+
+	JPGReader.setInput(new MemoryCacheImageInputStream(in));
+    }
+
+    public BufferedImage decodeAsBufferedImage() throws IOException,
+	    ImageFormatException {
+	JPEGImageReadParam irp = null;
+
+	if (param != null) {
+	    // We should do more than this, but it's a start.
+	    javax.imageio.plugins.jpeg.JPEGQTable[] qTables = new javax.imageio.plugins.jpeg.JPEGQTable[4];
+	    javax.imageio.plugins.jpeg.JPEGHuffmanTable[] DCHuffmanTables = new JPEGHuffmanTable[4];
+	    javax.imageio.plugins.jpeg.JPEGHuffmanTable[] ACHuffmanTables = new JPEGHuffmanTable[4];
+
+	    for (int i = 0; i < 4; i++) {
+		qTables[i] = new javax.imageio.plugins.jpeg.JPEGQTable(param.getQTable(i).getTable());
+		DCHuffmanTables[i] = param.getDCHuffmanTable(i);
+		ACHuffmanTables[i] = param.getACHuffmanTable(i);
+	    }
+
+	    irp = new JPEGImageReadParam();
+	    irp.setDecodeTables(qTables, DCHuffmanTables, ACHuffmanTables);
+	}
+
+	return JPGReader.read(0, irp);
+    }
+
+    public Raster decodeAsRaster() throws IOException, ImageFormatException {
+	return JPGReader.readRaster(0, null);
+    }
+
+    public InputStream getInputStream() {
+	return in;
+    }
+
+    public JPEGDecodeParam getJPEGDecodeParam() {
+	if (param == null) return null;
+	return (JPEGDecodeParam) param.clone();
+    }
+
+    public void setJPEGDecodeParam(JPEGDecodeParam jdp) {
+	param = jdp;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/overlays/jpeg/openjdk/jdk/src/share/classes/sun/awt/image/codec/JPEGImageEncoderImpl.java	Wed May 18 15:46:37 2011 +0100
@@ -0,0 +1,183 @@
+/* JPEGImageEncoder.java -- JPEG encoder implementation
+Copyright (C) 2011 Red Hat
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program 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 for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+package sun.awt.image.codec;
+
+import java.awt.color.ColorSpace;
+import java.awt.image.BufferedImage;
+import java.awt.image.ColorModel;
+import java.awt.image.Raster;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.util.ArrayList;
+import java.util.Iterator;
+
+import javax.imageio.IIOImage;
+import javax.imageio.ImageIO;
+import javax.imageio.ImageWriteParam;
+import javax.imageio.ImageWriter;
+import javax.imageio.plugins.jpeg.JPEGImageWriteParam;
+import javax.imageio.stream.MemoryCacheImageOutputStream;
+
+import com.sun.image.codec.jpeg.ImageFormatException;
+import com.sun.image.codec.jpeg.JPEGCodec;
+import com.sun.image.codec.jpeg.JPEGDecodeParam;
+import com.sun.image.codec.jpeg.JPEGEncodeParam;
+import com.sun.image.codec.jpeg.JPEGImageEncoder;
+import com.sun.imageio.plugins.jpeg.JPEG;
+
+/**
+ * This class provides the implementation for encoding JPEG images.
+ * 
+ */
+public class JPEGImageEncoderImpl implements JPEGImageEncoder {
+    private static final String JPGMime = "image/jpeg";
+
+    private ImageWriter JPGWriter;
+    private JPEGEncodeParam param;
+    private OutputStream out;
+
+    public JPEGImageEncoderImpl(OutputStream os) {
+	this(os, null);
+    }
+
+    public JPEGImageEncoderImpl(OutputStream out, JPEGEncodeParam newParam) {
+	this.out = out;
+	setJPEGEncodeParam(newParam);
+
+	Iterator<ImageWriter> JPGWriterIter = ImageIO
+		.getImageWritersByMIMEType(JPGMime);
+	if (JPGWriterIter.hasNext()) {
+	    JPGWriter = JPGWriterIter.next();
+	}
+
+	JPGWriter.setOutput(new MemoryCacheImageOutputStream(out));
+    }
+
+    public JPEGEncodeParam getDefaultJPEGEncodeParam(BufferedImage bi)
+	    throws ImageFormatException {
+	return JPEGCodec.getDefaultJPEGEncodeParam(bi);
+    }
+
+    public JPEGEncodeParam getDefaultJPEGEncodeParam(int numBands, int colorID)
+	    throws ImageFormatException {
+	return JPEGCodec.getDefaultJPEGEncodeParam(numBands, colorID);
+    }
+
+    public JPEGEncodeParam getDefaultJPEGEncodeParam(JPEGDecodeParam d)
+	    throws ImageFormatException {
+	return JPEGCodec.getDefaultJPEGEncodeParam(d);
+    }
+
+    public JPEGEncodeParam getDefaultJPEGEncodeParam(Raster ras, int colorID)
+	    throws ImageFormatException {
+	return JPEGCodec.getDefaultJPEGEncodeParam(ras, colorID);
+    }
+
+    public JPEGEncodeParam getJPEGEncodeParam() throws ImageFormatException {
+	if (param == null)
+	    return null;
+	return (JPEGEncodeParam) param.clone();
+    }
+
+    public void setJPEGEncodeParam(JPEGEncodeParam p) {
+	param = p;
+    }
+
+    public OutputStream getOutputStream() {
+	return out;
+    }
+
+    private void encode(IIOImage img) throws IOException, ImageFormatException {
+	if (JPGWriter == null)
+	    throw new ImageFormatException(
+		    "JPEG writer code not implemented in ImageIO");
+
+	JPEGImageWriteParam jiwp = new JPEGImageWriteParam(null);
+	;
+	jiwp.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
+	if (param != null && param instanceof JPEGParam) {
+	    JPEGParam jp = (JPEGParam) param;
+	    jiwp.setCompressionQuality(jp.getQuality());
+	} else {
+	    jiwp.setCompressionQuality(JPEG.DEFAULT_QUALITY);
+	}
+
+	JPGWriter.write(null, img, jiwp);
+    }
+
+    public void encode(BufferedImage bi, JPEGEncodeParam writeParam)
+	    throws IOException, ImageFormatException {
+	setJPEGEncodeParam(writeParam);
+	encode(new IIOImage(bi, new ArrayList<BufferedImage>(), null));
+    }
+
+    public void encode(Raster rs, JPEGEncodeParam writeParam)
+	    throws IOException, ImageFormatException {
+	setJPEGEncodeParam(writeParam);
+	encode(new IIOImage(rs, new ArrayList<BufferedImage>(), null));
+    }
+
+    public void encode(BufferedImage bi) throws IOException,
+	    ImageFormatException {
+	encode(bi, null);
+    }
+
+    public void encode(Raster rs) throws IOException, ImageFormatException {
+	encode(rs, null);
+    }
+
+    @Override
+    public int getDefaultColorID(ColorModel cm) {
+	ColorSpace cs = cm.getColorSpace();
+	int type = cs.getType();
+	int id = -1;
+	switch (type) {
+	    case ColorSpace.TYPE_GRAY:
+		id = JPEGEncodeParam.COLOR_ID_GRAY;
+		break;
+
+	    case ColorSpace.TYPE_RGB:
+		id = cm.hasAlpha() ? JPEGEncodeParam.COLOR_ID_RGBA
+			: JPEGEncodeParam.COLOR_ID_RGB;
+
+	    case ColorSpace.TYPE_YCbCr:
+		try {
+		    if (cs == ColorSpace.getInstance(ColorSpace.CS_PYCC)) {
+			id = cm.hasAlpha() ? JPEGEncodeParam.COLOR_ID_PYCCA
+				: JPEGEncodeParam.COLOR_ID_PYCC;
+		    }
+		} catch (IllegalArgumentException e) {
+		    /* We know it isn't PYCC type, nothing to handle */
+		}
+		if (id == -1) {
+		    id = cm.hasAlpha() ? JPEGEncodeParam.COLOR_ID_YCbCrA
+			    : JPEGEncodeParam.COLOR_ID_YCbCr;
+		}
+		break;
+
+	    case ColorSpace.TYPE_CMYK:
+		id = JPEGEncodeParam.COLOR_ID_CMYK;
+		break;
+
+	    default:
+		id = JPEGEncodeParam.COLOR_ID_UNKNOWN;
+	}
+
+	return id;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/overlays/jpeg/openjdk/jdk/src/share/classes/sun/awt/image/codec/JPEGParam.java	Wed May 18 15:46:37 2011 +0100
@@ -0,0 +1,750 @@
+/* JPEGParam.java -- keeps track of encode and decode parameters for JPEG.
+ * Copyright (C) 2011 Red Hat
+ * 
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ * 
+ * This program 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 for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+package sun.awt.image.codec;
+
+import java.util.Arrays;
+
+import com.sun.image.codec.jpeg.JPEGDecodeParam;
+import com.sun.image.codec.jpeg.JPEGEncodeParam;
+import com.sun.image.codec.jpeg.JPEGHuffmanTable;
+import com.sun.image.codec.jpeg.JPEGQTable;
+import com.sun.imageio.plugins.jpeg.JPEG;
+
+/**
+ * This class encapsulates the information about encoding and decoding the JPEG
+ * image.
+ * 
+ * @author Andrew Su (asu@redhat.com)
+ * 
+ */
+public class JPEGParam implements JPEGEncodeParam {
+    /*
+     * NOTE: bands mean the same thing as components, trying to keep it
+     * Consistent with the documentation
+     * 
+     * NOTE: subsampling is not done implementing.
+     */
+
+    private float quality = JPEG.DEFAULT_QUALITY;
+    private int colorID = -1;
+    private int width;
+    private int height;
+    private int numBands;
+    private boolean imageInfoValid = false;
+    private boolean tableInfoValid = false;
+    private JPEGQTable[] qTable = new JPEGQTable[NUM_TABLES];
+    private JPEGHuffmanTable[] acHuffmanTable = new JPEGHuffmanTable[NUM_TABLES];
+    private JPEGHuffmanTable[] dcHuffmanTable = new JPEGHuffmanTable[NUM_TABLES];
+
+    private int restartInterval = 0;
+    private int[] horizontalSubsampleComponents;
+    private int[] verticalSubsampleComponents;
+
+    /* [marker between 0xE0 to 0xEF minus 0xE0 to get index][data] */
+    private byte[][][] markers = new byte[16][][];
+    private byte[][] commentMarker = null;
+
+    /* number of components each color id has (color id from JPEGDecodeParam) */
+    private static int[] components = { 0, 1, 3, 3, 4, 3, 4, 4, 4, 4, 4, 4, };
+    private int[] qTableComponentMapping;
+    private int[] acHuffmanComponentMapping;
+    private int[] dcHuffmanComponentMapping;
+
+    /*
+     * Breakdown for marker bytes 
+     * 5 for name.
+     * 2 for version.
+     * 1 for density type.
+     * 2 for x density.
+     * 2 for y density.
+     * 2 for thumbnail.
+     */
+    private byte APP0_MARKER_NUM_BYTES = 14;
+
+    public JPEGParam(JPEGEncodeParam param) {
+	this((JPEGDecodeParam) param);
+    }
+
+    public JPEGParam(JPEGDecodeParam param) {
+	this(param.getEncodedColorID(), param.getNumComponents());
+
+	setTableInfoValid(param.isTableInfoValid());
+	setImageInfoValid(param.isImageInfoValid());
+	setRestartInterval(param.getRestartInterval());
+
+	// Copy the Q tables and Huffman tables.
+	for (int i = 0; i < NUM_TABLES; i++) {
+	    qTable[i] = param.getQTable(i);
+	    acHuffmanTable[i] = param.getACHuffmanTable(i);
+	    dcHuffmanTable[i] = param.getDCHuffmanTable(i);
+	}
+
+	// Next we want to copy the component mappings.
+	for (int i = 0; i < getNumComponents(); i++) {
+	    setQTableComponentMapping(i, param.getQTableComponentMapping(i));
+	    setACHuffmanComponentMapping(i,
+		    param.getACHuffmanComponentMapping(i));
+	    setDCHuffmanComponentMapping(i,
+		    param.getDCHuffmanComponentMapping(i));
+	}
+
+	// Copy all the marker data.
+	for (int i = APP0_MARKER; i < APPF_MARKER; i++) {
+	    byte[][] markerData = param.getMarkerData(i);
+	    byte[][] copyMarkerData = null;
+	    if (markerData != null) {
+		copyMarkerData = new byte[markerData.length][];
+		for (int j = 0; j < markerData.length; j++) {
+		    copyMarkerData[j] = Arrays.copyOf(markerData[j],
+			    markerData[j].length);
+		}
+	    }
+	    setMarkerData(i, copyMarkerData);
+	}
+
+	byte[][] commentData = param.getMarkerData(COMMENT_MARKER);
+	byte[][] copyCommentData = null;
+	if (commentData != null) {
+	    copyCommentData = new byte[commentData.length][];
+	    for (int i = 0; i < commentData.length; i++) {
+		copyCommentData[i] = Arrays.copyOf(commentData[i],
+			commentData[i].length);
+	    }
+	    setMarkerData(COMMENT_MARKER, copyCommentData);
+	}
+    }
+
+    public JPEGParam(int colorID) {
+	this(colorID, components[colorID]);
+    }
+
+    public JPEGParam(int colorID, int numBands) {
+	// We were given an invalid color id, or the number of bands given to us
+	// did not match requirements.
+	if (colorID < 0
+		|| colorID >= JPEGDecodeParam.NUM_COLOR_ID
+		|| (colorID != COLOR_ID_UNKNOWN && numBands != components[colorID])) {
+	    throw new IllegalArgumentException();
+	}
+	this.colorID = colorID;
+	this.numBands = numBands;
+
+	initialize();
+    }
+
+    private void initialize() {
+
+	qTable[0] = JPEGQTable.StdLuminance;
+	qTable[1] = JPEGQTable.StdChrominance;
+
+	acHuffmanTable[0] = JPEGHuffmanTable.StdACLuminance;
+	acHuffmanTable[1] = JPEGHuffmanTable.StdACChrominance;
+
+	dcHuffmanTable[0] = JPEGHuffmanTable.StdDCLuminance;
+	dcHuffmanTable[1] = JPEGHuffmanTable.StdDCChrominance;
+
+	qTableComponentMapping = new int[getNumComponents()];
+	acHuffmanComponentMapping = new int[getNumComponents()];
+	dcHuffmanComponentMapping = new int[getNumComponents()];
+
+	horizontalSubsampleComponents = new int[getNumComponents()];
+	verticalSubsampleComponents = new int[getNumComponents()];
+
+	/*
+	 * we can just set these to true since they are using default values
+	 * right now
+	 */
+	setTableInfoValid(true);
+	setImageInfoValid(true);
+
+	setMarkerData(APP0_MARKER,
+		arrayAdd(getMarkerData(APP0_MARKER), createAPP0MarkerData()));
+
+    }
+
+    private byte[] createAPP0MarkerData() {
+	byte[] data = null;
+	// Create JFIF APP0 Marker if compatible.
+	// By compatible, it must be one of the following cases.
+	// Reference:
+	// http://www.jpeg.org/public/jfif.pdf
+	// http://www.sno.phy.queensu.ca/~phil/exiftool/TagNames/JFIF.html
+	switch (colorID) {
+	    case COLOR_ID_UNKNOWN:
+	    case COLOR_ID_GRAY:
+	    case COLOR_ID_RGB:
+	    case COLOR_ID_YCbCr:
+	    case COLOR_ID_CMYK:
+		data = new byte[APP0_MARKER_NUM_BYTES];
+
+		// Null terminated JFIF string. [5 bytes]
+		data[0] = 'J';
+		data[1] = 'F';
+		data[2] = 'I';
+		data[3] = 'F';
+		data[4] = 0x0;
+
+		// Version number [2 bytes]
+		data[5] = 1;
+		data[6] = 2;
+
+		// Density unit [1 byte]
+		data[7] = DENSITY_UNIT_ASPECT_RATIO;
+
+		// X density [2 bytes]
+		data[8] = 0;
+		data[9] = 1;
+
+		// Y density [2 bytes]
+		data[10] = 0;
+		data[11] = 1;
+
+		// Thumbnail [2 bytes]
+		data[12] = 0;
+		data[13] = 0;
+		break;
+	}
+
+	return data;
+    }
+
+    public void setQuality(float quality, boolean forceBaseline) {
+	if (quality < 0.0) {
+	    quality = 0.00f;
+	} else if (quality > 1.0) {
+	    quality = 1.0f;
+	}
+
+	this.quality = quality; // preserve original.
+
+	/*
+	 * Since quality value of 1 is the lowest compression, we want our
+	 * QTable to contain as much 1s as possible. Since scaling is by a
+	 * factor, we want to invert the selection such that highest quality is
+	 * 0 and lowest is 1.
+	 */
+	quality = 1 - quality;
+
+	// We will scale our QTables to match the quality value given to us.
+	for (int i = 0; i < NUM_TABLES; i++) {
+	    if (qTable[i] != null) {
+		qTable[i] = qTable[i].getScaledInstance(quality, forceBaseline);
+	    }
+	}
+    }
+
+    public Object clone() {
+	JPEGParam c = new JPEGParam(this);
+	return c;
+    }
+
+    @Override
+    public int getWidth() {
+	return width;
+    }
+
+    @Override
+    public int getHeight() {
+	return height;
+    }
+
+    @Override
+    public int getHorizontalSubsampling(int component) {
+	if (component < 0 || component > getNumComponents()) {
+	    throw new IllegalArgumentException("Invalid component");
+	}
+
+	return horizontalSubsampleComponents[component];
+    }
+
+    @Override
+    public int getVerticalSubsampling(int component) {
+	if (component < 0 || component > getNumComponents()) {
+	    throw new IllegalArgumentException("Invalid component");
+	}
+
+	return verticalSubsampleComponents[component];
+    }
+
+    @Override
+    public JPEGQTable getQTable(int tableNum) {
+	if (tableNum < 0 || tableNum > NUM_TABLES)
+	    throw new IllegalArgumentException("tableNum must be [0-"
+		    + (NUM_TABLES - 1) + "]");
+	return qTable[tableNum];
+    }
+
+    @Override
+    public JPEGQTable getQTableForComponent(int component) {
+	if (component < 0 || component > getNumComponents()) {
+	    throw new IllegalArgumentException("Invalid component");
+	}
+
+	return qTable[qTableComponentMapping[component]];
+    }
+
+    @Override
+    public JPEGHuffmanTable getDCHuffmanTable(int tableNum) {
+	if (tableNum < 0 || tableNum > NUM_TABLES)
+	    throw new IllegalArgumentException("tableNum must be [0-"
+		    + (NUM_TABLES - 1) + "]");
+	return dcHuffmanTable[tableNum];
+    }
+
+    @Override
+    public JPEGHuffmanTable getDCHuffmanTableForComponent(int component) {
+	if (component < 0 || component > getNumComponents()) {
+	    throw new IllegalArgumentException("Invalid component");
+	}
+
+	return dcHuffmanTable[dcHuffmanComponentMapping[component]];
+    }
+
+    @Override
+    public JPEGHuffmanTable getACHuffmanTable(int tableNum) {
+	if (tableNum < 0 || tableNum > NUM_TABLES)
+	    throw new IllegalArgumentException("tableNum must be [0-"
+		    + (NUM_TABLES - 1) + "]");
+	return acHuffmanTable[tableNum];
+    }
+
+    @Override
+    public JPEGHuffmanTable getACHuffmanTableForComponent(int component) {
+	if (component < 0 || component > getNumComponents()) {
+	    throw new IllegalArgumentException("Invalid component");
+	}
+
+	return acHuffmanTable[acHuffmanComponentMapping[component]];
+    }
+
+    @Override
+    public int getDCHuffmanComponentMapping(int component) {
+	if (component < 0 || component > getNumComponents()) {
+	    throw new IllegalArgumentException("Invalid component");
+	}
+	return dcHuffmanComponentMapping[component];
+    }
+
+    @Override
+    public int getACHuffmanComponentMapping(int component) {
+	if (component < 0 || component > getNumComponents()) {
+	    throw new IllegalArgumentException("Invalid component");
+	}
+	return acHuffmanComponentMapping[component];
+    }
+
+    @Override
+    public int getQTableComponentMapping(int component) {
+	if (component < 0 || component > getNumComponents()) {
+	    throw new IllegalArgumentException("Invalid component");
+	}
+	return qTableComponentMapping[component];
+    }
+
+    @Override
+    public boolean isImageInfoValid() {
+	return imageInfoValid;
+    }
+
+    @Override
+    public boolean isTableInfoValid() {
+	return tableInfoValid;
+    }
+
+    @Override
+    public boolean getMarker(int marker) {
+	byte[][] data = null;
+	switch (marker) {
+	    case APP0_MARKER:
+	    case APP1_MARKER:
+	    case APP2_MARKER:
+	    case APP3_MARKER:
+	    case APP4_MARKER:
+	    case APP5_MARKER:
+	    case APP6_MARKER:
+	    case APP7_MARKER:
+	    case APP8_MARKER:
+	    case APP9_MARKER:
+	    case APPA_MARKER:
+	    case APPB_MARKER:
+	    case APPC_MARKER:
+	    case APPD_MARKER:
+	    case APPE_MARKER:
+	    case APPF_MARKER:
+		data = markers[marker - APP0_MARKER];
+		break;
+	    case COMMENT_MARKER:
+		data = commentMarker;
+		break;
+	    default:
+		throw new IllegalArgumentException("Marker provided is invalid");
+	}
+
+	return data != null && data.length > 0;
+    }
+
+    @Override
+    public byte[][] getMarkerData(int marker) {
+	byte[][] data = null;
+
+	switch (marker) {
+	    case APP0_MARKER:
+	    case APP1_MARKER:
+	    case APP2_MARKER:
+	    case APP3_MARKER:
+	    case APP4_MARKER:
+	    case APP5_MARKER:
+	    case APP6_MARKER:
+	    case APP7_MARKER:
+	    case APP8_MARKER:
+	    case APP9_MARKER:
+	    case APPA_MARKER:
+	    case APPB_MARKER:
+	    case APPC_MARKER:
+	    case APPD_MARKER:
+	    case APPE_MARKER:
+	    case APPF_MARKER:
+		data = markers[marker - APP0_MARKER];
+		break;
+	    case COMMENT_MARKER:
+		// TODO: Add stuff for comment marker
+		break;
+	    default:
+		throw new IllegalArgumentException("Marker provided is invalid");
+	}
+	return data;
+    }
+
+    @Override
+    public int getEncodedColorID() {
+	return colorID;
+    }
+
+    @Override
+    public int getNumComponents() {
+	return numBands;
+    }
+
+    @Override
+    public int getRestartInterval() {
+	return restartInterval;
+    }
+
+    @Override
+    public int getDensityUnit() {
+	if (!getMarker(APP0_MARKER))
+	    throw new IllegalArgumentException("APP0 Marker not found.");
+	byte[] data = getValidAPP0Marker();
+
+	if (data == null)
+	    throw new IllegalArgumentException("No valid APP0 Marker found");
+
+	return data[7];
+    }
+
+    @Override
+    public int getXDensity() {
+	if (!getMarker(APP0_MARKER))
+	    throw new IllegalArgumentException("APP0 Marker not found.");
+	byte[] data = getValidAPP0Marker();
+
+	if (data == null)
+	    throw new IllegalArgumentException("No valid APP0 Marker found");
+
+	// data[8] is the upper portion of the density value
+	// data[9] is the lower portion of the density value
+	int upper = data[8] << 8; // Shift it so we can merge with lower value.
+	int lower = data[9] & 0xFF; // Keep it in bounds 0 - 256
+	return upper | lower; // Merge
+
+    }
+
+    @Override
+    public int getYDensity() {
+	if (!getMarker(APP0_MARKER))
+	    throw new IllegalArgumentException("APP0 Marker not found.");
+	byte[] data = getValidAPP0Marker();
+
+	if (data == null)
+	    throw new IllegalArgumentException("No valid APP0 Marker found");
+
+	// data[10] is the upper portion of the density value
+	// data[11] is the lower portion of the density value
+	int upper = data[10] << 8; // Shift it so we can merge with lower value.
+	int lower = data[11] & 0xFF;// Keep it in bounds 0 - 256
+	return upper | lower; // merge
+    }
+
+    @Override
+    public void setHorizontalSubsampling(int component, int subsample) {
+	if (component < 0 || component > getNumComponents()) {
+	    throw new IllegalArgumentException("Invalid component");
+	}
+
+	horizontalSubsampleComponents[component] = subsample;
+    }
+
+    @Override
+    public void setVerticalSubsampling(int component, int subsample) {
+	if (component < 0 || component > getNumComponents()) {
+	    throw new IllegalArgumentException("Invalid component");
+	}
+
+	verticalSubsampleComponents[component] = subsample;
+    }
+
+    @Override
+    public void setQTable(int tableNum, JPEGQTable qTable) {
+	if (tableNum < 0 || tableNum > NUM_TABLES)
+	    throw new IllegalArgumentException("tableNum must be [0-"
+		    + (NUM_TABLES - 1) + "]");
+
+	this.qTable[tableNum] = qTable;
+    }
+
+    @Override
+    public void setDCHuffmanTable(int tableNum, JPEGHuffmanTable huffTable) {
+	if (tableNum < 0 || tableNum > NUM_TABLES)
+	    throw new IllegalArgumentException("tableNum must be [0-"
+		    + (NUM_TABLES - 1) + "]");
+
+	dcHuffmanTable[tableNum] = huffTable;
+    }
+
+    @Override
+    public void setACHuffmanTable(int tableNum, JPEGHuffmanTable huffTable) {
+	if (tableNum < 0 || tableNum > NUM_TABLES)
+	    throw new IllegalArgumentException("tableNum must be [0-"
+		    + (NUM_TABLES - 1) + "]");
+	acHuffmanTable[tableNum] = huffTable;
+    }
+
+    @Override
+    public void setACHuffmanComponentMapping(int component, int table) {
+	if (component < 0 || component > getNumComponents()) {
+	    throw new IllegalArgumentException("Invalid component specified.");
+	} else if (table < 0 || table > NUM_TABLES) {
+	    throw new IllegalArgumentException("Invalid table specified");
+	}
+
+	acHuffmanComponentMapping[component] = table;
+    }
+
+    @Override
+    public void setDCHuffmanComponentMapping(int component, int table) {
+	if (component < 0 || component > getNumComponents()) {
+	    throw new IllegalArgumentException("Invalid component specified.");
+	} else if (table < 0 || table > NUM_TABLES) {
+	    throw new IllegalArgumentException("Invalid table specified");
+	}
+
+	dcHuffmanComponentMapping[component] = table;
+    }
+
+    @Override
+    public void setQTableComponentMapping(int component, int table) {
+	if (component < 0 || component > getNumComponents()) {
+	    throw new IllegalArgumentException("Invalid component specified.");
+	} else if (table < 0 || table > NUM_TABLES) {
+	    throw new IllegalArgumentException("Invalid table specified");
+	}
+
+	qTableComponentMapping[component] = table;
+    }
+
+    @Override
+    public void setImageInfoValid(boolean flag) {
+	imageInfoValid = flag;
+    }
+
+    @Override
+    public void setTableInfoValid(boolean flag) {
+	tableInfoValid = flag;
+    }
+
+    @Override
+    public void setMarkerData(int marker, byte[][] data) {
+	if (data == null) {
+	    return;
+	}
+
+	switch (marker) {
+	    case APP0_MARKER:
+	    case APP1_MARKER:
+	    case APP2_MARKER:
+	    case APP3_MARKER:
+	    case APP4_MARKER:
+	    case APP5_MARKER:
+	    case APP6_MARKER:
+	    case APP7_MARKER:
+	    case APP8_MARKER:
+	    case APP9_MARKER:
+	    case APPA_MARKER:
+	    case APPB_MARKER:
+	    case APPC_MARKER:
+	    case APPD_MARKER:
+	    case APPE_MARKER:
+	    case APPF_MARKER:
+		markers[marker - APP0_MARKER] = data;
+		break;
+	    case COMMENT_MARKER:
+		commentMarker = data;
+		break;
+	    default:
+		throw new IllegalArgumentException("Marker provided is invalid");
+	}
+    }
+
+    @Override
+    public void addMarkerData(int marker, byte[] data) {
+	if (data == null) {
+	    return;
+	}
+	switch (marker) {
+	    case APP0_MARKER:
+	    case APP1_MARKER:
+	    case APP2_MARKER:
+	    case APP3_MARKER:
+	    case APP4_MARKER:
+	    case APP5_MARKER:
+	    case APP6_MARKER:
+	    case APP7_MARKER:
+	    case APP8_MARKER:
+	    case APP9_MARKER:
+	    case APPA_MARKER:
+	    case APPB_MARKER:
+	    case APPC_MARKER:
+	    case APPD_MARKER:
+	    case APPE_MARKER:
+	    case APPF_MARKER:
+		markers[marker - APP0_MARKER] = arrayAdd(markers[marker
+			- APP0_MARKER], data);
+		break;
+	    case COMMENT_MARKER:
+		commentMarker = arrayAdd(commentMarker, data);
+		break;
+	    default:
+		throw new IllegalArgumentException("Marker provided is invalid");
+	}
+    }
+
+    @Override
+    public void setRestartInterval(int restartInterval) {
+	this.restartInterval = restartInterval;
+    }
+
+    @Override
+    public void setDensityUnit(int unit) {
+	if (unit < 0 || unit > NUM_DENSITY_UNIT) {
+	    throw new IllegalArgumentException("Invalid density unit.");
+	}
+
+	byte[] data = getValidAPP0Marker();
+	if (data == null) { // We will create one now.
+	    data = createAPP0MarkerData();
+	    // markers[0] = array of APP0_MARKER
+	    markers[0] = arrayAdd(markers[0], data);
+	}
+
+	data[7] = (byte) unit;
+    }
+
+    @Override
+    public void setXDensity(int density) {
+	byte[] data = getValidAPP0Marker();
+	if (data == null) { // We will create one now.
+	    data = createAPP0MarkerData();
+	    // markers[0] = array of APP0_MARKER
+	    markers[0] = arrayAdd(markers[0], data);
+	}
+
+	byte upper = (byte) (density >>> 8 & 0xFF); // unsigned shift to keep it
+						    // positive
+	byte lower = (byte) (density & 0xFF);
+	data[8] = upper;
+	data[9] = lower;
+    }
+
+    @Override
+    public void setYDensity(int density) {
+	byte[] data = getValidAPP0Marker();
+	if (data == null) { // We will create one now.
+	    data = createAPP0MarkerData();
+	    // markers[0] = array of APP0_MARKER
+	    markers[0] = arrayAdd(markers[0], data);
+	}
+
+	byte upper = (byte) (density >>> 8 & 0xFF); // unsigned shift to keep it
+						    // positive
+	byte lower = (byte) (density & 0xFF);
+	data[10] = upper;
+	data[11] = lower;
+    }
+
+    public void setWidth(int width) {
+	this.width = width;
+    }
+
+    public void setHeight(int height) {
+	this.height = height;
+    }
+
+    /**
+     * get the quality value.
+     * 
+     * @return currently set quality value.
+     */
+    public float getQuality() {
+	return quality;
+    }
+
+    /**
+     * Appends new data to original array
+     * 
+     * @param origArr
+     * @param newArr
+     * @return
+     */
+    private byte[][] arrayAdd(byte[][] origArr, byte[] newArr) {
+	byte[][] newData;
+	if (origArr != null) {
+	    newData = Arrays.copyOf(origArr, origArr.length + 1);
+	    newData[origArr.length] = Arrays.copyOf(newArr, newArr.length);
+	} else {
+	    newData = new byte[1][];
+	    newData[0] = Arrays.copyOf(newArr, newArr.length);
+	}
+
+	return newData;
+    }
+
+    private byte[] getValidAPP0Marker() {
+	byte[][] app0Markers = getMarkerData(APP0_MARKER);
+	for (int i = 0; i < app0Markers.length; i++) {
+	    byte[] data = app0Markers[i];
+	    if (data[0] == 'J' && data[1] == 'F' && data[2] == 'I'
+		    && data[3] == 'F' && data[4] == 0x0) {
+		if (data[5] <= 1) { // version is 1 or below.
+		    // We have a valid JFIF header.
+		    return data;
+		}
+	    }
+	}
+	return null;
+    }
+}
--- a/patches/bytebuffer-compact.patch	Thu Mar 31 01:04:37 2011 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,62 +0,0 @@
---- ../openjdkb23/openjdk.old/jdk/src/share/classes/java/nio/Buffer.java	2007-10-30 04:36:08.000000000 -0400
-+++ openjdk/jdk/src/share/classes/java/nio/Buffer.java	2007-11-13 13:33:28.000000000 -0500
-@@ -234,8 +234,8 @@
-         if ((newPosition > limit) || (newPosition < 0))
-             throw new IllegalArgumentException();
-         position = newPosition;
--        if (mark > position) mark = -1;
--        return this;
-+        if (mark > position) clearMark();
-+	return this;
-     }
- 
-     /**
-@@ -266,8 +266,8 @@
-             throw new IllegalArgumentException();
-         limit = newLimit;
-         if (position > limit) position = limit;
--        if (mark > limit) mark = -1;
--        return this;
-+        if (mark > position) clearMark();
-+	return this;
-     }
- 
-     /**
-@@ -319,8 +319,8 @@
-     public final Buffer clear() {
-         position = 0;
-         limit = capacity;
--        mark = -1;
--        return this;
-+        clearMark();
-+	return this;
-     }
- 
-     /**
-@@ -347,7 +347,7 @@
-     public final Buffer flip() {
-         limit = position;
-         position = 0;
--        mark = -1;
-+        clearMark();
-         return this;
-     }
- 
-@@ -368,7 +368,7 @@
-      */
-     public final Buffer rewind() {
-         position = 0;
--        mark = -1;
-+        clearMark();
-         return this;
-     }
- 
-@@ -547,4 +547,8 @@
-             throw new IndexOutOfBoundsException();
-     }
- 
-+    final void clearMark() {                            // package-private
-+        mark = -1;
-+    }
-+
- }
--- a/patches/demo-swingapplet.patch	Thu Mar 31 01:04:37 2011 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
---- openjdk/jdk/make/mkdemo/jfc/SwingApplet/Makefile.orig	2009-01-06 17:07:25.000000000 -0500
-+++ openjdk/jdk/make/mkdemo/jfc/SwingApplet/Makefile	2009-01-06 16:47:28.000000000 -0500
-@@ -33,7 +33,7 @@
- include $(BUILDDIR)/common/Defs.gmk
- 
- DEMO_ROOT       = $(SHARE_SRC)/demo/jfc/$(DEMONAME)
--DEMO_TOPFILES   = ./README.txt
-+DEMO_TOPFILES   = ./README.txt ./SwingApplet.html
- DEMO_MAINCLASS  = $(DEMONAME)
- DEMO_DESTDIR    = $(DEMODIR)/jfc/$(DEMONAME)
- 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/ecj/endorsed-dir-for-jvmti.patch	Wed May 18 15:46:37 2011 +0100
@@ -0,0 +1,13 @@
+diff -Nru openjdk.orig/hotspot/make/linux/makefiles/jvmti.make openjdk/hotspot/make/linux/makefiles/jvmti.make
+--- openjdk-ecj.orig/hotspot/make/linux/makefiles/jvmti.make	2008-05-23 20:51:14.000000000 +0100
++++ openjdk-ecj/hotspot/make/linux/makefiles/jvmti.make	2008-05-23 20:54:13.000000000 +0100
+@@ -59,7 +59,7 @@
+ 
+ JvmtiGeneratedFiles = $(JvmtiGeneratedNames:%=$(JvmtiOutDir)/%)
+ 
+-XSLT = $(QUIETLY) $(REMOTE) $(RUN.JAVA) -classpath $(JvmtiOutDir) jvmtiGen
++XSLT = $(QUIETLY) $(REMOTE) $(RUN.JAVA) $(ENDORSED) -classpath $(JvmtiOutDir) jvmtiGen
+ 
+ .PHONY: all jvmtidocs clean cleanall
+ 
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/ecj/javafiles.patch	Wed May 18 15:46:37 2011 +0100
@@ -0,0 +1,157 @@
+--- openjdk-ecj/jdk/make/java/java/FILES_java.gmk.orig	2008-08-28 10:10:48.000000000 +0200
++++ openjdk-ecj/jdk/make/java/java/FILES_java.gmk	2008-09-12 21:12:23.000000000 +0200
+@@ -29,6 +29,80 @@
+ # will generate header files
+ #
+ JAVA_JAVA_java = \
++    java/lang/reflect/AccessibleObject.java \
++    java/lang/reflect/AnnotatedElement.java \
++    java/lang/reflect/Array.java \
++    java/lang/reflect/Constructor.java \
++    java/lang/reflect/Field.java \
++    java/lang/reflect/GenericArrayType.java \
++    java/lang/reflect/GenericDeclaration.java \
++    java/lang/reflect/GenericSignatureFormatError.java \
++    java/lang/reflect/InvocationHandler.java \
++    java/lang/reflect/InvocationTargetException.java \
++    java/lang/reflect/MalformedParameterizedTypeException.java \
++    java/lang/reflect/Member.java \
++    java/lang/reflect/Method.java \
++    java/lang/reflect/Modifier.java \
++    java/lang/reflect/package-info.java \
++    java/lang/reflect/ParameterizedType.java \
++    java/lang/reflect/Proxy.java \
++    java/lang/reflect/ReflectAccess.java \
++    java/lang/reflect/ReflectPermission.java \
++    java/lang/reflect/Type.java \
++    java/lang/reflect/TypeVariable.java \
++    java/lang/reflect/UndeclaredThrowableException.java \
++    java/lang/reflect/WildcardType.java \
++    java/lang/ref/Finalizer.java \
++    java/lang/ref/FinalReference.java \
++    java/lang/ref/PhantomReference.java \
++    java/lang/ref/Reference.java \
++    java/lang/ref/ReferenceQueue.java \
++    java/lang/ref/SoftReference.java \
++    java/lang/ref/WeakReference.java \
++    java/lang/management/ClassLoadingMXBean.java \
++    java/lang/management/CompilationMXBean.java \
++    java/lang/management/GarbageCollectorMXBean.java \
++    java/lang/management/LockInfo.java \
++    java/lang/management/ManagementFactory.java \
++    java/lang/management/ManagementPermission.java \
++    java/lang/management/MemoryManagerMXBean.java \
++    java/lang/management/MemoryMXBean.java \
++    java/lang/management/MemoryNotificationInfo.java \
++    java/lang/management/MemoryPoolMXBean.java \
++    java/lang/management/MemoryType.java \
++    java/lang/management/MemoryUsage.java \
++    java/lang/management/MonitorInfo.java \
++    java/lang/management/OperatingSystemMXBean.java \
++    java/lang/management/RuntimeMXBean.java \
++    java/lang/management/ThreadInfo.java \
++    java/lang/management/ThreadMXBean.java \
++    java/lang/instrument/ClassDefinition.java \
++    java/lang/instrument/ClassFileTransformer.java \
++    java/lang/instrument/IllegalClassFormatException.java \
++    java/lang/instrument/Instrumentation.java \
++    java/lang/instrument/UnmodifiableClassException.java \
++    java/lang/annotation/AnnotationFormatError.java \
++    java/lang/annotation/Annotation.java \
++    java/lang/annotation/AnnotationTypeMismatchException.java \
++    java/lang/annotation/Documented.java \
++    java/lang/annotation/ElementType.java \
++    java/lang/annotation/IncompleteAnnotationException.java \
++    java/lang/annotation/Inherited.java \
++    java/lang/annotation/package-info.java \
++    java/lang/annotation/Retention.java \
++    java/lang/annotation/RetentionPolicy.java \
++    java/lang/annotation/Target.java \
++    java/io/IOError.java \
++    java/lang/Deprecated.java \
++    java/lang/Iterable.java \
++    java/util/RandomAccess.java \
++    java/lang/CharacterData00.java \
++    java/lang/CharacterData01.java \
++    java/lang/CharacterData02.java \
++    java/lang/CharacterData0E.java \
++    java/lang/CharacterDataLatin1.java \
++    java/lang/CharacterDataPrivateUse.java \
++    java/lang/CharacterDataUndefined.java \
+     java/lang/Object.java \
+     java/lang/Class.java \
+     java/lang/Thread.java \
+@@ -135,13 +209,6 @@
+     java/lang/Readable.java \
+     java/lang/Override.java \
+     java/lang/SuppressWarnings.java \
+-    java/lang/ref/Reference.java \
+-        java/lang/ref/SoftReference.java \
+-	java/lang/ref/WeakReference.java \
+-	java/lang/ref/FinalReference.java \
+-	java/lang/ref/PhantomReference.java \
+-    java/lang/ref/ReferenceQueue.java \
+-    java/lang/ref/Finalizer.java \
+     java/util/BitSet.java \
+     java/util/Calendar.java \
+         java/util/GregorianCalendar.java \
+--- openjdk-ecj/corba/make/com/sun/corba/minclude/com_sun_corba_se_impl_encoding.jmk.orig	2008-08-28 10:24:03.000000000 +0200
++++ openjdk-ecj/corba/make/com/sun/corba/minclude/com_sun_corba_se_impl_encoding.jmk	2008-09-12 21:12:23.000000000 +0200
+@@ -62,7 +62,6 @@
+ 	com/sun/corba/se/impl/encoding/TypeCodeInputStream.java \
+ 	com/sun/corba/se/impl/encoding/TypeCodeOutputStream.java \
+ 	com/sun/corba/se/impl/encoding/TypeCodeReader.java \
+-	com/sun/corba/se/impl/encoding/WrapperInputStream.java
+-
+-
+-
++	com/sun/corba/se/impl/encoding/WrapperInputStream.java \
++	com/sun/corba/se/impl/encoding/IDLJavaSerializationInputStream.java \
++	com/sun/corba/se/impl/encoding/IDLJavaSerializationOutputStream.java
+--- openjdk-ecj/corba/make/com/sun/corba/minclude/com_sun_corba_se_spi_presentation_rmi.jmk.orig	2008-08-28 10:24:03.000000000 +0200
++++ openjdk-ecj/corba/make/com/sun/corba/minclude/com_sun_corba_se_spi_presentation_rmi.jmk	2008-09-12 21:12:23.000000000 +0200
+@@ -29,5 +29,6 @@
+ 	com/sun/corba/se/spi/presentation/rmi/IDLNameTranslator.java \
+ 	com/sun/corba/se/spi/presentation/rmi/PresentationDefaults.java \
+ 	com/sun/corba/se/spi/presentation/rmi/PresentationManager.java \
++	com/sun/corba/se/spi/presentation/rmi/PresentationDefaults.java \
+ 	com/sun/corba/se/spi/presentation/rmi/StubAdapter.java
+ 
+--- openjdk-ecj/corba/make/com/sun/corba/minclude/com_sun_corba_se_impl_protocol.jmk.orig	2008-08-28 10:24:03.000000000 +0200
++++ openjdk-ecj/corba/make/com/sun/corba/minclude/com_sun_corba_se_impl_protocol.jmk	2008-09-12 21:12:23.000000000 +0200
+@@ -81,5 +81,5 @@
+ 	com/sun/corba/se/impl/protocol/giopmsgheaders/RequestMessage_1_1.java \
+ 	com/sun/corba/se/impl/protocol/giopmsgheaders/RequestMessage_1_2.java \
+ 	com/sun/corba/se/impl/protocol/giopmsgheaders/TargetAddress.java \
+-	com/sun/corba/se/impl/protocol/giopmsgheaders/TargetAddressHelper.java
+-
++	com/sun/corba/se/impl/protocol/giopmsgheaders/TargetAddressHelper.java \
++	com/sun/corba/se/impl/protocol/giopmsgheaders/LocateReplyOrReplyMessage.java
+--- openjdk-ecj/corba/make/com/sun/corba/minclude/com_sun_corba_se_spi_monitoring.jmk.orig	2008-08-28 10:24:03.000000000 +0200
++++ openjdk-ecj/corba/make/com/sun/corba/minclude/com_sun_corba_se_spi_monitoring.jmk	2008-09-12 21:12:23.000000000 +0200
+@@ -30,6 +30,7 @@
+ 	com/sun/corba/se/spi/monitoring/StringMonitoredAttributeBase.java \
+ 	com/sun/corba/se/spi/monitoring/LongMonitoredAttributeBase.java \
+ 	com/sun/corba/se/spi/monitoring/MonitoringFactories.java \
++	com/sun/corba/se/spi/monitoring/MonitoringConstants.java \
+ 	com/sun/corba/se/spi/monitoring/MonitoredAttributeInfo.java \
+ 	com/sun/corba/se/spi/monitoring/MonitoredObject.java \
+ 	com/sun/corba/se/spi/monitoring/MonitoredObjectFactory.java \
+--- openjdk-ecj/corba/make/com/sun/corba/minclude/com_sun_corba_se_impl_ior.jmk.orig	2008-08-28 10:24:03.000000000 +0200
++++ openjdk-ecj/corba/make/com/sun/corba/minclude/com_sun_corba_se_impl_ior.jmk	2008-09-12 21:12:23.000000000 +0200
+@@ -66,4 +66,5 @@
+ 	com/sun/corba/se/impl/ior/iiop/JavaSerializationComponent.java \
+ 	com/sun/corba/se/impl/ior/iiop/MaxStreamFormatVersionComponentImpl.java \
+ 	com/sun/corba/se/impl/ior/iiop/RequestPartitioningComponentImpl.java \
+-	com/sun/corba/se/impl/ior/iiop/ORBTypeComponentImpl.java
++	com/sun/corba/se/impl/ior/iiop/ORBTypeComponentImpl.java \
++	com/sun/corba/se/impl/ior/iiop/JavaSerializationComponent.java
+--- openjdk-ecj/corba/make/com/sun/corba/minclude/com_sun_corba_se_impl_orbutil.jmk.orig	2008-08-28 10:24:03.000000000 +0200
++++ openjdk-ecj/corba/make/com/sun/corba/minclude/com_sun_corba_se_impl_orbutil.jmk	2008-09-12 21:12:23.000000000 +0200
+@@ -81,4 +81,5 @@
+ 	com/sun/corba/se/impl/orbutil/graph/Node.java \
+ 	com/sun/corba/se/impl/orbutil/graph/NodeData.java \
+ 	com/sun/corba/se/impl/orbutil/graph/Graph.java \
+-	com/sun/corba/se/impl/orbutil/graph/GraphImpl.java 
++	com/sun/corba/se/impl/orbutil/graph/GraphImpl.java \
++	com/sun/corba/se/impl/orbutil/GetPropertyAction.java
--- a/patches/gcc-stack-markings.patch	Thu Mar 31 01:04:37 2011 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,14 +0,0 @@
---- openjdk/hotspot/src/os_cpu/linux_x86/vm/linux_x86_32.s~	2009-08-06 01:08:57.000000000 -0700
-+++ openjdk/hotspot/src/os_cpu/linux_x86/vm/linux_x86_32.s	2009-08-06 01:09:27.000000000 -0700
-@@ -650,3 +650,4 @@ _Atomic_cmpxchg_long:
-         popl     %ebx
-         ret
- 
-+.section        .note.GNU-stack, "", @progbits
---- openjdk/hotspot/src/os_cpu/linux_x86/vm/linux_x86_64.s~	2009-08-06 01:08:57.000000000 -0700
-+++ openjdk/hotspot/src/os_cpu/linux_x86/vm/linux_x86_64.s	2009-08-06 01:09:27.000000000 -0700
-@@ -400,3 +400,4 @@ _Atomic_cmpxchg_long:
-         addq     $4,%rdx
-         jg       4b
-         ret
-+.section        .note.GNU-stack, "", @progbits
--- a/patches/headers-hotspot.patch	Thu Mar 31 01:04:37 2011 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,13 +0,0 @@
-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	2008-05-23 20:51:14.000000000 +0100
-+++ openjdk/hotspot/make/linux/makefiles/jvmti.make	2008-05-23 20:54:13.000000000 +0100
-@@ -59,7 +59,7 @@
- 
- JvmtiGeneratedFiles = $(JvmtiGeneratedNames:%=$(JvmtiOutDir)/%)
- 
--XSLT = $(QUIETLY) $(REMOTE) $(RUN.JAVA) -classpath $(JvmtiOutDir) jvmtiGen
-+XSLT = $(QUIETLY) $(REMOTE) $(RUN.JAVA) $(ENDORSED) -classpath $(JvmtiOutDir) jvmtiGen
- 
- .PHONY: all jvmtidocs clean cleanall
- 
-
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/hotspot/hs20/7032388-work_without_cmov_instruction.patch	Wed May 18 15:46:37 2011 +0100
@@ -0,0 +1,178 @@
+--- openjdk/hotspot/src/cpu/x86/vm/assembler_x86.cpp	2011-03-30 11:31:16.408872134 -0700
++++ openjdk/hotspot/src/cpu/x86/vm/assembler_x86.cpp	2011-03-30 11:31:16.084614406 -0700
+@@ -7769,6 +7769,28 @@
+   }
+ }
+ 
++void MacroAssembler::cmov32(Condition cc, Register dst, Address src) {
++  if (VM_Version::supports_cmov()) {
++    cmovl(cc, dst, src);
++  } else {
++    Label L;
++    jccb(negate_condition(cc), L);
++    movl(dst, src);
++    bind(L);
++  }
++}
++
++void MacroAssembler::cmov32(Condition cc, Register dst, Register src) {
++  if (VM_Version::supports_cmov()) {
++    cmovl(cc, dst, src);
++  } else {
++    Label L;
++    jccb(negate_condition(cc), L);
++    movl(dst, src);
++    bind(L);
++  }
++}
++
+ void MacroAssembler::verify_oop(Register reg, const char* s) {
+   if (!VerifyOops) return;
+ 
+@@ -9019,14 +9041,7 @@
+   movl(result, cnt1);
+   subl(cnt1, cnt2);
+   push(cnt1);
+-  if (VM_Version::supports_cmov()) {
+-    cmovl(Assembler::lessEqual, cnt2, result);
+-  } else {
+-    Label GT_LABEL;
+-    jccb(Assembler::greater, GT_LABEL);
+-    movl(cnt2, result);
+-    bind(GT_LABEL);
+-  }
++  cmov32(Assembler::lessEqual, cnt2, result);
+ 
+   // Is the minimum length zero?
+   testl(cnt2, cnt2);
+--- openjdk/hotspot/src/cpu/x86/vm/assembler_x86.hpp	2011-03-30 11:31:17.757655562 -0700
++++ openjdk/hotspot/src/cpu/x86/vm/assembler_x86.hpp	2011-03-30 11:31:17.553920606 -0700
+@@ -2244,10 +2244,13 @@
+ 
+   // Data
+ 
+-  void cmov(Condition cc, Register dst, Register src) { LP64_ONLY(cmovq(cc, dst, src)) NOT_LP64(cmovl(cc, dst, src)); }
++  void cmov32( Condition cc, Register dst, Address  src);
++  void cmov32( Condition cc, Register dst, Register src);
+ 
+-  void cmovptr(Condition cc, Register dst, Address src) { LP64_ONLY(cmovq(cc, dst, src)) NOT_LP64(cmovl(cc, dst, src)); }
+-  void cmovptr(Condition cc, Register dst, Register src) { LP64_ONLY(cmovq(cc, dst, src)) NOT_LP64(cmovl(cc, dst, src)); }
++  void cmov(   Condition cc, Register dst, Register src) { cmovptr(cc, dst, src); }
++
++  void cmovptr(Condition cc, Register dst, Address  src) { LP64_ONLY(cmovq(cc, dst, src)) NOT_LP64(cmov32(cc, dst, src)); }
++  void cmovptr(Condition cc, Register dst, Register src) { LP64_ONLY(cmovq(cc, dst, src)) NOT_LP64(cmov32(cc, dst, src)); }
+ 
+   void movoop(Register dst, jobject obj);
+   void movoop(Address dst, jobject obj);
+--- openjdk/hotspot/src/cpu/x86/vm/c1_LIRAssembler_x86.cpp	2011-03-30 11:31:18.743456717 -0700
++++ openjdk/hotspot/src/cpu/x86/vm/c1_LIRAssembler_x86.cpp	2011-03-30 11:31:18.541656202 -0700
+@@ -23,6 +23,7 @@
+  */
+ 
+ #include "precompiled.hpp"
++#include "asm/assembler.hpp"
+ #include "c1/c1_Compilation.hpp"
+ #include "c1/c1_LIRAssembler.hpp"
+ #include "c1/c1_MacroAssembler.hpp"
+@@ -569,24 +570,13 @@
+   __ lea          (rdi, Address(rdi, rcx, Address::times_2, arrayOopDesc::base_offset_in_bytes(T_CHAR)));
+ 
+   // compute minimum length (in rax) and difference of lengths (on top of stack)
+-  if (VM_Version::supports_cmov()) {
+-    __ movl     (rbx, Address(rbx, java_lang_String::count_offset_in_bytes()));
+-    __ movl     (rax, Address(rax, java_lang_String::count_offset_in_bytes()));
+-    __ mov      (rcx, rbx);
+-    __ subptr   (rbx, rax); // subtract lengths
+-    __ push     (rbx);      // result
+-    __ cmov     (Assembler::lessEqual, rax, rcx);
+-  } else {
+-    Label L;
+-    __ movl     (rbx, Address(rbx, java_lang_String::count_offset_in_bytes()));
+-    __ movl     (rcx, Address(rax, java_lang_String::count_offset_in_bytes()));
+-    __ mov      (rax, rbx);
+-    __ subptr   (rbx, rcx);
+-    __ push     (rbx);
+-    __ jcc      (Assembler::lessEqual, L);
+-    __ mov      (rax, rcx);
+-    __ bind (L);
+-  }
++  __ movl  (rbx, Address(rbx, java_lang_String::count_offset_in_bytes()));
++  __ movl  (rax, Address(rax, java_lang_String::count_offset_in_bytes()));
++  __ mov   (rcx, rbx);
++  __ subptr(rbx, rax); // subtract lengths
++  __ push  (rbx);      // result
++  __ cmov  (Assembler::lessEqual, rax, rcx);
++
+   // is minimum length 0?
+   Label noLoop, haveResult;
+   __ testptr (rax, rax);
+--- openjdk/hotspot/src/cpu/x86/vm/c1_Runtime1_x86.cpp	2011-03-30 11:31:19.824124145 -0700
++++ openjdk/hotspot/src/cpu/x86/vm/c1_Runtime1_x86.cpp	2011-03-30 11:31:19.606167752 -0700
+@@ -23,6 +23,7 @@
+  */
+ 
+ #include "precompiled.hpp"
++#include "asm/assembler.hpp"
+ #include "c1/c1_Defs.hpp"
+ #include "c1/c1_MacroAssembler.hpp"
+ #include "c1/c1_Runtime1.hpp"
+--- openjdk/hotspot/src/cpu/x86/vm/templateTable_x86_32.cpp	2011-03-30 11:31:20.910918826 -0700
++++ openjdk/hotspot/src/cpu/x86/vm/templateTable_x86_32.cpp	2011-03-30 11:31:20.703693030 -0700
+@@ -23,6 +23,7 @@
+  */
+ 
+ #include "precompiled.hpp"
++#include "asm/assembler.hpp"
+ #include "interpreter/interpreter.hpp"
+ #include "interpreter/interpreterRuntime.hpp"
+ #include "interpreter/templateTable.hpp"
+@@ -1939,18 +1940,10 @@
+     __ movl(temp, Address(array, h, Address::times_8, 0*wordSize));
+     __ bswapl(temp);
+     __ cmpl(key, temp);
+-    if (VM_Version::supports_cmov()) {
+-      __ cmovl(Assembler::less        , j, h);   // j = h if (key <  array[h].fast_match())
+-      __ cmovl(Assembler::greaterEqual, i, h);   // i = h if (key >= array[h].fast_match())
+-    } else {
+-      Label set_i, end_of_if;
+-      __ jccb(Assembler::greaterEqual, set_i);     // {
+-      __ mov(j, h);                                //   j = h;
+-      __ jmp(end_of_if);                           // }
+-      __ bind(set_i);                              // else {
+-      __ mov(i, h);                                //   i = h;
+-      __ bind(end_of_if);                          // }
+-    }
++    // j = h if (key <  array[h].fast_match())
++    __ cmov32(Assembler::less        , j, h);
++    // i = h if (key >= array[h].fast_match())
++    __ cmov32(Assembler::greaterEqual, i, h);
+     // while (i+1 < j)
+     __ bind(entry);
+     __ leal(h, Address(i, 1));                   // i+1
+@@ -3478,22 +3471,14 @@
+ 
+   // find a free slot in the monitor block (result in rdx)
+   { Label entry, loop, exit;
+-    __ movptr(rcx, monitor_block_top);            // points to current entry, starting with top-most entry
+-    __ lea(rbx, monitor_block_bot);               // points to word before bottom of monitor block
++    __ movptr(rcx, monitor_block_top);           // points to current entry, starting with top-most entry
++
++    __ lea(rbx, monitor_block_bot);              // points to word before bottom of monitor block
+     __ jmpb(entry);
+ 
+     __ bind(loop);
+     __ cmpptr(Address(rcx, BasicObjectLock::obj_offset_in_bytes()), (int32_t)NULL_WORD);  // check if current entry is used
+-
+-// TODO - need new func here - kbt
+-    if (VM_Version::supports_cmov()) {
+-      __ cmov(Assembler::equal, rdx, rcx);       // if not used then remember entry in rdx
+-    } else {
+-      Label L;
+-      __ jccb(Assembler::notEqual, L);
+-      __ mov(rdx, rcx);                          // if not used then remember entry in rdx
+-      __ bind(L);
+-    }
++    __ cmovptr(Assembler::equal, rdx, rcx);      // if not used then remember entry in rdx
+     __ cmpptr(rax, Address(rcx, BasicObjectLock::obj_offset_in_bytes()));   // check if current entry is for same object
+     __ jccb(Assembler::equal, exit);             // if same object then stop searching
+     __ addptr(rcx, entry_size);                  // otherwise advance to next entry
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/hotspot/original/7032388-work_without_cmov_instruction.patch	Wed May 18 15:46:37 2011 +0100
@@ -0,0 +1,156 @@
+diff -Nru openjdk.orig/hotspot/src/cpu/x86/vm/assembler_x86.cpp openjdk/hotspot/src/cpu/x86/vm/assembler_x86.cpp
+--- openjdk.orig/hotspot/src/cpu/x86/vm/assembler_x86.cpp	2011-02-28 16:03:14.000000000 +0000
++++ openjdk/hotspot/src/cpu/x86/vm/assembler_x86.cpp	2011-03-31 03:28:54.031901634 +0100
+@@ -7643,6 +7643,28 @@
+   }
+ }
+ 
++void MacroAssembler::cmov32(Condition cc, Register dst, Address src) {
++  if (VM_Version::supports_cmov()) {
++    cmovl(cc, dst, src);
++  } else {
++    Label L;
++    jccb(negate_condition(cc), L);
++    movl(dst, src);
++    bind(L);
++  }
++}
++
++void MacroAssembler::cmov32(Condition cc, Register dst, Register src) {
++  if (VM_Version::supports_cmov()) {
++    cmovl(cc, dst, src);
++  } else {
++    Label L;
++    jccb(negate_condition(cc), L);
++    movl(dst, src);
++    bind(L);
++  }
++}
++
+ void MacroAssembler::verify_oop(Register reg, const char* s) {
+   if (!VerifyOops) return;
+ 
+@@ -8559,14 +8581,7 @@
+   movl(result, cnt1);
+   subl(cnt1, cnt2);
+   push(cnt1);
+-  if (VM_Version::supports_cmov()) {
+-    cmovl(Assembler::lessEqual, cnt2, result);
+-  } else {
+-    Label GT_LABEL;
+-    jccb(Assembler::greater, GT_LABEL);
+-    movl(cnt2, result);
+-    bind(GT_LABEL);
+-  }
++  cmov32(Assembler::lessEqual, cnt2, result);
+ 
+   // Is the minimum length zero?
+   testl(cnt2, cnt2);
+diff -Nru openjdk.orig/hotspot/src/cpu/x86/vm/assembler_x86.hpp openjdk/hotspot/src/cpu/x86/vm/assembler_x86.hpp
+--- openjdk.orig/hotspot/src/cpu/x86/vm/assembler_x86.hpp	2011-02-28 16:03:14.000000000 +0000
++++ openjdk/hotspot/src/cpu/x86/vm/assembler_x86.hpp	2011-03-31 03:28:54.031901634 +0100
+@@ -2174,10 +2174,13 @@
+ 
+   // Data
+ 
+-  void cmov(Condition cc, Register dst, Register src) { LP64_ONLY(cmovq(cc, dst, src)) NOT_LP64(cmovl(cc, dst, src)); }
++  void cmov32( Condition cc, Register dst, Address  src);
++  void cmov32( Condition cc, Register dst, Register src);
+ 
+-  void cmovptr(Condition cc, Register dst, Address src) { LP64_ONLY(cmovq(cc, dst, src)) NOT_LP64(cmovl(cc, dst, src)); }
+-  void cmovptr(Condition cc, Register dst, Register src) { LP64_ONLY(cmovq(cc, dst, src)) NOT_LP64(cmovl(cc, dst, src)); }
++  void cmov(   Condition cc, Register dst, Register src) { cmovptr(cc, dst, src); }
++
++  void cmovptr(Condition cc, Register dst, Address  src) { LP64_ONLY(cmovq(cc, dst, src)) NOT_LP64(cmov32(cc, dst, src)); }
++  void cmovptr(Condition cc, Register dst, Register src) { LP64_ONLY(cmovq(cc, dst, src)) NOT_LP64(cmov32(cc, dst, src)); }
+ 
+   void movoop(Register dst, jobject obj);
+   void movoop(Address dst, jobject obj);
+diff -Nru openjdk.orig/hotspot/src/cpu/x86/vm/c1_LIRAssembler_x86.cpp openjdk/hotspot/src/cpu/x86/vm/c1_LIRAssembler_x86.cpp
+--- openjdk.orig/hotspot/src/cpu/x86/vm/c1_LIRAssembler_x86.cpp	2011-02-28 16:03:14.000000000 +0000
++++ openjdk/hotspot/src/cpu/x86/vm/c1_LIRAssembler_x86.cpp	2011-03-31 03:28:54.035901697 +0100
+@@ -559,24 +559,13 @@
+   __ lea    (rdi, Address(rdi, rcx, Address::times_2, arrayOopDesc::base_offset_in_bytes(T_CHAR)));
+ 
+   // compute minimum length (in rax) and difference of lengths (on top of stack)
+-  if (VM_Version::supports_cmov()) {
+-    __ movl     (rbx, Address(rbx, java_lang_String::count_offset_in_bytes()));
+-    __ movl     (rax, Address(rax, java_lang_String::count_offset_in_bytes()));
+-    __ mov      (rcx, rbx);
+-    __ subptr   (rbx, rax); // subtract lengths
+-    __ push     (rbx);      // result
+-    __ cmov     (Assembler::lessEqual, rax, rcx);
+-  } else {
+-    Label L;
+-    __ movl     (rbx, Address(rbx, java_lang_String::count_offset_in_bytes()));
+-    __ movl     (rcx, Address(rax, java_lang_String::count_offset_in_bytes()));
+-    __ mov      (rax, rbx);
+-    __ subptr   (rbx, rcx);
+-    __ push     (rbx);
+-    __ jcc      (Assembler::lessEqual, L);
+-    __ mov      (rax, rcx);
+-    __ bind (L);
+-  }
++  __ movl  (rbx, Address(rbx, java_lang_String::count_offset_in_bytes()));
++  __ movl  (rax, Address(rax, java_lang_String::count_offset_in_bytes()));
++  __ mov   (rcx, rbx);
++  __ subptr(rbx, rax); // subtract lengths
++  __ push  (rbx);      // result
++  __ cmov  (Assembler::lessEqual, rax, rcx);
++
+   // is minimum length 0?
+   Label noLoop, haveResult;
+   __ testptr (rax, rax);
+diff -Nru openjdk.orig/hotspot/src/cpu/x86/vm/templateTable_x86_32.cpp openjdk/hotspot/src/cpu/x86/vm/templateTable_x86_32.cpp
+--- openjdk.orig/hotspot/src/cpu/x86/vm/templateTable_x86_32.cpp	2011-02-28 16:03:14.000000000 +0000
++++ openjdk/hotspot/src/cpu/x86/vm/templateTable_x86_32.cpp	2011-03-31 03:28:54.035901697 +0100
+@@ -1931,18 +1931,10 @@
+     __ movl(temp, Address(array, h, Address::times_8, 0*wordSize));
+     __ bswapl(temp);
+     __ cmpl(key, temp);
+-    if (VM_Version::supports_cmov()) {
+-      __ cmovl(Assembler::less        , j, h);   // j = h if (key <  array[h].fast_match())
+-      __ cmovl(Assembler::greaterEqual, i, h);   // i = h if (key >= array[h].fast_match())
+-    } else {
+-      Label set_i, end_of_if;
+-      __ jccb(Assembler::greaterEqual, set_i);     // {
+-      __ mov(j, h);                                //   j = h;
+-      __ jmp(end_of_if);                           // }
+-      __ bind(set_i);                              // else {
+-      __ mov(i, h);                                //   i = h;
+-      __ bind(end_of_if);                          // }
+-    }
++    // j = h if (key <  array[h].fast_match())
++    __ cmov32(Assembler::less        , j, h);
++    // i = h if (key >= array[h].fast_match())
++    __ cmov32(Assembler::greaterEqual, i, h);
+     // while (i+1 < j)
+     __ bind(entry);
+     __ leal(h, Address(i, 1));                   // i+1
+@@ -3463,22 +3455,14 @@
+ 
+   // find a free slot in the monitor block (result in rdx)
+   { Label entry, loop, exit;
+-    __ movptr(rcx, monitor_block_top);            // points to current entry, starting with top-most entry
+-    __ lea(rbx, monitor_block_bot);               // points to word before bottom of monitor block
++    __ movptr(rcx, monitor_block_top);           // points to current entry, starting with top-most entry
++
++    __ lea(rbx, monitor_block_bot);              // points to word before bottom of monitor block
+     __ jmpb(entry);
+ 
+     __ bind(loop);
+     __ cmpptr(Address(rcx, BasicObjectLock::obj_offset_in_bytes()), (int32_t)NULL_WORD);  // check if current entry is used
+-
+-// TODO - need new func here - kbt
+-    if (VM_Version::supports_cmov()) {
+-      __ cmov(Assembler::equal, rdx, rcx);       // if not used then remember entry in rdx
+-    } else {
+-      Label L;
+-      __ jccb(Assembler::notEqual, L);
+-      __ mov(rdx, rcx);                          // if not used then remember entry in rdx
+-      __ bind(L);
+-    }
++    __ cmovptr(Assembler::equal, rdx, rcx);      // if not used then remember entry in rdx
+     __ cmpptr(rax, Address(rcx, BasicObjectLock::obj_offset_in_bytes()));   // check if current entry is for same object
+     __ jccb(Assembler::equal, exit);             // if same object then stop searching
+     __ addptr(rcx, entry_size);                  // otherwise advance to next entry
--- a/patches/javafiles.patch	Thu Mar 31 01:04:37 2011 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,157 +0,0 @@
---- openjdk/jdk/make/java/java/FILES_java.gmk.orig	2008-08-28 10:10:48.000000000 +0200
-+++ openjdk/jdk/make/java/java/FILES_java.gmk	2008-09-12 21:12:23.000000000 +0200
-@@ -29,6 +29,80 @@
- # will generate header files
- #
- JAVA_JAVA_java = \
-+    java/lang/reflect/AccessibleObject.java \
-+    java/lang/reflect/AnnotatedElement.java \
-+    java/lang/reflect/Array.java \
-+    java/lang/reflect/Constructor.java \
-+    java/lang/reflect/Field.java \
-+    java/lang/reflect/GenericArrayType.java \
-+    java/lang/reflect/GenericDeclaration.java \
-+    java/lang/reflect/GenericSignatureFormatError.java \
-+    java/lang/reflect/InvocationHandler.java \
-+    java/lang/reflect/InvocationTargetException.java \
-+    java/lang/reflect/MalformedParameterizedTypeException.java \
-+    java/lang/reflect/Member.java \
-+    java/lang/reflect/Method.java \
-+    java/lang/reflect/Modifier.java \
-+    java/lang/reflect/package-info.java \
-+    java/lang/reflect/ParameterizedType.java \
-+    java/lang/reflect/Proxy.java \
-+    java/lang/reflect/ReflectAccess.java \
-+    java/lang/reflect/ReflectPermission.java \
-+    java/lang/reflect/Type.java \
-+    java/lang/reflect/TypeVariable.java \
-+    java/lang/reflect/UndeclaredThrowableException.java \
-+    java/lang/reflect/WildcardType.java \
-+    java/lang/ref/Finalizer.java \
-+    java/lang/ref/FinalReference.java \
-+    java/lang/ref/PhantomReference.java \
-+    java/lang/ref/Reference.java \
-+    java/lang/ref/ReferenceQueue.java \
-+    java/lang/ref/SoftReference.java \
-+    java/lang/ref/WeakReference.java \
-+    java/lang/management/ClassLoadingMXBean.java \
-+    java/lang/management/CompilationMXBean.java \
-+    java/lang/management/GarbageCollectorMXBean.java \
-+    java/lang/management/LockInfo.java \
-+    java/lang/management/ManagementFactory.java \
-+    java/lang/management/ManagementPermission.java \
-+    java/lang/management/MemoryManagerMXBean.java \
-+    java/lang/management/MemoryMXBean.java \
-+    java/lang/management/MemoryNotificationInfo.java \
-+    java/lang/management/MemoryPoolMXBean.java \
-+    java/lang/management/MemoryType.java \
-+    java/lang/management/MemoryUsage.java \
-+    java/lang/management/MonitorInfo.java \
-+    java/lang/management/OperatingSystemMXBean.java \
-+    java/lang/management/RuntimeMXBean.java \
-+    java/lang/management/ThreadInfo.java \
-+    java/lang/management/ThreadMXBean.java \
-+    java/lang/instrument/ClassDefinition.java \
-+    java/lang/instrument/ClassFileTransformer.java \
-+    java/lang/instrument/IllegalClassFormatException.java \
-+    java/lang/instrument/Instrumentation.java \
-+    java/lang/instrument/UnmodifiableClassException.java \
-+    java/lang/annotation/AnnotationFormatError.java \
-+    java/lang/annotation/Annotation.java \
-+    java/lang/annotation/AnnotationTypeMismatchException.java \
-+    java/lang/annotation/Documented.java \
-+    java/lang/annotation/ElementType.java \
-+    java/lang/annotation/IncompleteAnnotationException.java \
-+    java/lang/annotation/Inherited.java \
-+    java/lang/annotation/package-info.java \
-+    java/lang/annotation/Retention.java \
-+    java/lang/annotation/RetentionPolicy.java \
-+    java/lang/annotation/Target.java \
-+    java/io/IOError.java \
-+    java/lang/Deprecated.java \
-+    java/lang/Iterable.java \
-+    java/util/RandomAccess.java \
-+    java/lang/CharacterData00.java \
-+    java/lang/CharacterData01.java \
-+    java/lang/CharacterData02.java \
-+    java/lang/CharacterData0E.java \
-+    java/lang/CharacterDataLatin1.java \
-+    java/lang/CharacterDataPrivateUse.java \
-+    java/lang/CharacterDataUndefined.java \
-     java/lang/Object.java \
-     java/lang/Class.java \
-     java/lang/Thread.java \
-@@ -135,13 +209,6 @@
-     java/lang/Readable.java \
-     java/lang/Override.java \
-     java/lang/SuppressWarnings.java \
--    java/lang/ref/Reference.java \
--        java/lang/ref/SoftReference.java \
--	java/lang/ref/WeakReference.java \
--	java/lang/ref/FinalReference.java \
--	java/lang/ref/PhantomReference.java \
--    java/lang/ref/ReferenceQueue.java \
--    java/lang/ref/Finalizer.java \
-     java/util/BitSet.java \
-     java/util/Calendar.java \
-         java/util/GregorianCalendar.java \
---- openjdk/corba/make/com/sun/corba/minclude/com_sun_corba_se_impl_encoding.jmk.orig	2008-08-28 10:24:03.000000000 +0200
-+++ openjdk/corba/make/com/sun/corba/minclude/com_sun_corba_se_impl_encoding.jmk	2008-09-12 21:12:23.000000000 +0200
-@@ -62,7 +62,6 @@
- 	com/sun/corba/se/impl/encoding/TypeCodeInputStream.java \
- 	com/sun/corba/se/impl/encoding/TypeCodeOutputStream.java \
- 	com/sun/corba/se/impl/encoding/TypeCodeReader.java \
--	com/sun/corba/se/impl/encoding/WrapperInputStream.java
--
--
--
-+	com/sun/corba/se/impl/encoding/WrapperInputStream.java \
-+	com/sun/corba/se/impl/encoding/IDLJavaSerializationInputStream.java \
-+	com/sun/corba/se/impl/encoding/IDLJavaSerializationOutputStream.java
---- openjdk/corba/make/com/sun/corba/minclude/com_sun_corba_se_spi_presentation_rmi.jmk.orig	2008-08-28 10:24:03.000000000 +0200
-+++ openjdk/corba/make/com/sun/corba/minclude/com_sun_corba_se_spi_presentation_rmi.jmk	2008-09-12 21:12:23.000000000 +0200
-@@ -29,5 +29,6 @@
- 	com/sun/corba/se/spi/presentation/rmi/IDLNameTranslator.java \
- 	com/sun/corba/se/spi/presentation/rmi/PresentationDefaults.java \
- 	com/sun/corba/se/spi/presentation/rmi/PresentationManager.java \
-+	com/sun/corba/se/spi/presentation/rmi/PresentationDefaults.java \
- 	com/sun/corba/se/spi/presentation/rmi/StubAdapter.java
- 
---- openjdk/corba/make/com/sun/corba/minclude/com_sun_corba_se_impl_protocol.jmk.orig	2008-08-28 10:24:03.000000000 +0200
-+++ openjdk/corba/make/com/sun/corba/minclude/com_sun_corba_se_impl_protocol.jmk	2008-09-12 21:12:23.000000000 +0200
-@@ -81,5 +81,5 @@
- 	com/sun/corba/se/impl/protocol/giopmsgheaders/RequestMessage_1_1.java \
- 	com/sun/corba/se/impl/protocol/giopmsgheaders/RequestMessage_1_2.java \
- 	com/sun/corba/se/impl/protocol/giopmsgheaders/TargetAddress.java \
--	com/sun/corba/se/impl/protocol/giopmsgheaders/TargetAddressHelper.java
--
-+	com/sun/corba/se/impl/protocol/giopmsgheaders/TargetAddressHelper.java \
-+	com/sun/corba/se/impl/protocol/giopmsgheaders/LocateReplyOrReplyMessage.java
---- openjdk/corba/make/com/sun/corba/minclude/com_sun_corba_se_spi_monitoring.jmk.orig	2008-08-28 10:24:03.000000000 +0200
-+++ openjdk/corba/make/com/sun/corba/minclude/com_sun_corba_se_spi_monitoring.jmk	2008-09-12 21:12:23.000000000 +0200
-@@ -30,6 +30,7 @@
- 	com/sun/corba/se/spi/monitoring/StringMonitoredAttributeBase.java \
- 	com/sun/corba/se/spi/monitoring/LongMonitoredAttributeBase.java \
- 	com/sun/corba/se/spi/monitoring/MonitoringFactories.java \
-+	com/sun/corba/se/spi/monitoring/MonitoringConstants.java \
- 	com/sun/corba/se/spi/monitoring/MonitoredAttributeInfo.java \
- 	com/sun/corba/se/spi/monitoring/MonitoredObject.java \
- 	com/sun/corba/se/spi/monitoring/MonitoredObjectFactory.java \
---- openjdk/corba/make/com/sun/corba/minclude/com_sun_corba_se_impl_ior.jmk.orig	2008-08-28 10:24:03.000000000 +0200
-+++ openjdk/corba/make/com/sun/corba/minclude/com_sun_corba_se_impl_ior.jmk	2008-09-12 21:12:23.000000000 +0200
-@@ -66,4 +66,5 @@
- 	com/sun/corba/se/impl/ior/iiop/JavaSerializationComponent.java \
- 	com/sun/corba/se/impl/ior/iiop/MaxStreamFormatVersionComponentImpl.java \
- 	com/sun/corba/se/impl/ior/iiop/RequestPartitioningComponentImpl.java \
--	com/sun/corba/se/impl/ior/iiop/ORBTypeComponentImpl.java
-+	com/sun/corba/se/impl/ior/iiop/ORBTypeComponentImpl.java \
-+	com/sun/corba/se/impl/ior/iiop/JavaSerializationComponent.java
---- openjdk/corba/make/com/sun/corba/minclude/com_sun_corba_se_impl_orbutil.jmk.orig	2008-08-28 10:24:03.000000000 +0200
-+++ openjdk/corba/make/com/sun/corba/minclude/com_sun_corba_se_impl_orbutil.jmk	2008-09-12 21:12:23.000000000 +0200
-@@ -81,4 +81,5 @@
- 	com/sun/corba/se/impl/orbutil/graph/Node.java \
- 	com/sun/corba/se/impl/orbutil/graph/NodeData.java \
- 	com/sun/corba/se/impl/orbutil/graph/Graph.java \
--	com/sun/corba/se/impl/orbutil/graph/GraphImpl.java 
-+	com/sun/corba/se/impl/orbutil/graph/GraphImpl.java \
-+	com/sun/corba/se/impl/orbutil/GetPropertyAction.java
--- a/patches/jpegclasses.patch	Thu Mar 31 01:04:37 2011 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,651 +0,0 @@
-diff -ruN openjdkold/jdk/src/share/classes/com/sun/image/codec/jpeg/ImageFormatException.java openjdk/jdk/src/share/classes/com/sun/image/codec/jpeg/ImageFormatException.java
---- openjdkold/jdk/src/share/classes/com/sun/image/codec/jpeg/ImageFormatException.java	1969-12-31 19:00:00.000000000 -0500
-+++ openjdk/jdk/src/share/classes/com/sun/image/codec/jpeg/ImageFormatException.java	2008-03-31 18:04:57.000000000 -0400
-@@ -0,0 +1,51 @@
-+/* ImageFormatException.java
-+   Copyright (C) 2007 Matthew Flaschen
-+
-+   This file is part of IcedTea
-+
-+   IcedTea is free software; you can redistribute it and/or modify
-+   it under the terms of the GNU General Public License as published by
-+   the Free Software Foundation; either version 2, or (at your option)
-+   any later version.
-+
-+   IcedTea 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 for more details.
-+
-+   You should have received a copy of the GNU General Public License
-+   along with GNU Classpath; see the file COPYING.  If not, write to the
-+   Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-+   02110-1301 USA.
-+
-+   Linking this library statically or dynamically with other modules is
-+   making a combined work based on this library.  Thus, the terms and
-+   conditions of the GNU General Public License cover the whole
-+   combination.
-+
-+   As a special exception, the copyright holders of this library give you
-+   permission to link this library with independent modules to produce an
-+   executable, regardless of the license terms of these independent
-+   modules, and to copy and distribute the resulting executable under
-+   terms of your choice, provided that you also meet, for each linked
-+   independent module, the terms and conditions of the license of that
-+   module.  An independent module is a module which is not derived from
-+   or based on this library.  If you modify this library, you may extend
-+   this exception to your version of the library, but you are not
-+   obligated to do so.  If you do not wish to do so, delete this
-+   exception statement from your version. */
-+
-+package com.sun.image.codec.jpeg;
-+
-+public class ImageFormatException extends RuntimeException
-+{
-+	public ImageFormatException()
-+	{
-+		this("");
-+	}
-+
-+	public ImageFormatException(String s)
-+	{
-+		super(s);
-+	}
-+}
-diff -ruN openjdkold/jdk/src/share/classes/com/sun/image/codec/jpeg/JPEGCodec.java openjdk/jdk/src/share/classes/com/sun/image/codec/jpeg/JPEGCodec.java
---- openjdkold/jdk/src/share/classes/com/sun/image/codec/jpeg/JPEGCodec.java	1969-12-31 19:00:00.000000000 -0500
-+++ openjdk/jdk/src/share/classes/com/sun/image/codec/jpeg/JPEGCodec.java	2008-03-31 18:04:57.000000000 -0400
-@@ -0,0 +1,146 @@
-+/* JPEGCodec.java -- 
-+   Copyright (C) 2007 Free Software Foundation, Inc.
-+   Copyright (C) 2007 Matthew Flaschen
-+
-+   This file is part of GNU Classpath.
-+
-+   GNU Classpath is free software; you can redistribute it and/or modify
-+   it under the terms of the GNU General Public License as published by
-+   the Free Software Foundation; either version 2, or (at your option)
-+   any later version.
-+
-+   GNU Classpath 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 for more details.
-+
-+   You should have received a copy of the GNU General Public License
-+   along with GNU Classpath; see the file COPYING.  If not, write to the
-+   Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-+   02110-1301 USA.
-+
-+   Linking this library statically or dynamically with other modules is
-+   making a combined work based on this library.  Thus, the terms and
-+   conditions of the GNU General Public License cover the whole
-+   combination.
-+
-+   As a special exception, the copyright holders of this library give you
-+   permission to link this library with independent modules to produce an
-+   executable, regardless of the license terms of these independent
-+   modules, and to copy and distribute the resulting executable under
-+   terms of your choice, provided that you also meet, for each linked
-+   independent module, the terms and conditions of the license of that
-+   module.  An independent module is a module which is not derived from
-+   or based on this library.  If you modify this library, you may extend
-+   this exception to your version of the library, but you are not
-+   obligated to do so.  If you do not wish to do so, delete this
-+   exception statement from your version. */
-+
-+package com.sun.image.codec.jpeg;
-+
-+import java.io.InputStream;
-+import java.io.OutputStream;
-+import java.io.IOException;
-+
-+import java.awt.image.BufferedImage;
-+import java.awt.image.Raster;
-+
-+import javax.imageio.*;
-+import javax.imageio.stream.*;
-+import javax.imageio.plugins.jpeg.*;
-+
-+import java.util.Iterator;
-+
-+public class JPEGCodec
-+{
-+
-+	public static JPEGImageDecoder createJPEGDecoder(InputStream is)
-+	{
-+		return new ImageIOJPEGImageDecoder(is);
-+	}
-+
-+	public static JPEGImageEncoder createJPEGEncoder(OutputStream os)
-+	{
-+		return null;
-+	}
-+
-+	public static JPEGImageDecoder createJPEGDecoder(InputStream src, JPEGDecodeParam jdp)
-+	{
-+		return null; 
-+	}
-+        
-+	public static JPEGImageEncoder createJPEGEncoder(OutputStream dest, JPEGEncodeParam jep)
-+	{
-+		return null;
-+	}
-+        
-+	public static JPEGEncodeParam getDefaultJPEGEncodeParam(BufferedImage bi)
-+	{
-+		return null;
-+	}
-+        
-+	public static JPEGEncodeParam getDefaultJPEGEncodeParam(int numBands, int colorID)
-+	{
-+		return null;
-+	}
-+		
-+	public static JPEGEncodeParam getDefaultJPEGEncodeParam(JPEGDecodeParam jdp)
-+	{
-+		return null;
-+	}
-+        
-+	public static JPEGEncodeParam getDefaultJPEGEncodeParam(Raster ras, int colorID)
-+	{
-+		return null;
-+	}
-+        
-+
-+	private static class ImageIOJPEGImageDecoder implements JPEGImageDecoder
-+	{
-+		
-+		private static final String JPGMime = "image/jpeg";
-+    
-+		private ImageReader JPGReader;
-+		
-+		private InputStream in;
-+		
-+		private ImageIOJPEGImageDecoder (InputStream newIs)
-+		{
-+			in = newIs;
-+			
-+			Iterator<ImageReader> JPGReaderIter = ImageIO.getImageReadersByMIMEType(JPGMime);
-+			if(JPGReaderIter.hasNext())
-+			{
-+				JPGReader  = JPGReaderIter.next();
-+			}
-+			
-+			JPGReader.setInput(new MemoryCacheImageInputStream(in));
-+		}
-+
-+		public BufferedImage decodeAsBufferedImage() throws IOException, ImageFormatException
-+		{
-+			return JPGReader.read(0);
-+		}
-+		
-+		public Raster decodeAsRaster() throws IOException, ImageFormatException
-+		{
-+			return JPGReader.readRaster(0, null);
-+		}
-+		
-+		public InputStream getInputStream()
-+		{
-+			return in;
-+		}
-+		
-+		public JPEGDecodeParam getJPEGDecodeParam()
-+		{
-+			return null;
-+		}
-+
-+		public void setJPEGDecodeParam(JPEGDecodeParam jdp)
-+		{
-+			return;
-+		}
-+
-+	}
-+}
-diff -ruN openjdkold/jdk/src/share/classes/com/sun/image/codec/jpeg/JPEGDecodeParam.java openjdk/jdk/src/share/classes/com/sun/image/codec/jpeg/JPEGDecodeParam.java
---- openjdkold/jdk/src/share/classes/com/sun/image/codec/jpeg/JPEGDecodeParam.java	1969-12-31 19:00:00.000000000 -0500
-+++ openjdk/jdk/src/share/classes/com/sun/image/codec/jpeg/JPEGDecodeParam.java	2008-03-31 18:04:57.000000000 -0400
-@@ -0,0 +1,50 @@
-+/* JPEGImageDecoder.java -- 
-+   Copyright (C) 2007 Free Software Foundation, Inc.
-+   Copyright (C) 2007 Matthew Flaschen
-+
-+   This file is part of GNU Classpath.
-+
-+   GNU Classpath is free software; you can redistribute it and/or modify
-+   it under the terms of the GNU General Public License as published by
-+   the Free Software Foundation; either version 2, or (at your option)
-+   any later version.
-+
-+   GNU Classpath 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 for more details.
-+
-+   You should have received a copy of the GNU General Public License
-+   along with GNU Classpath; see the file COPYING.  If not, write to the
-+   Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-+   02110-1301 USA.
-+
-+   Linking this library statically or dynamically with other modules is
-+   making a combined work based on this library.  Thus, the terms and
-+   conditions of the GNU General Public License cover the whole
-+   combination.
-+
-+   As a special exception, the copyright holders of this library give you
-+   permission to link this library with independent modules to produce an
-+   executable, regardless of the license terms of these independent
-+   modules, and to copy and distribute the resulting executable under
-+   terms of your choice, provided that you also meet, for each linked
-+   independent module, the terms and conditions of the license of that
-+   module.  An independent module is a module which is not derived from
-+   or based on this library.  If you modify this library, you may extend
-+   this exception to your version of the library, but you are not
-+   obligated to do so.  If you do not wish to do so, delete this
-+   exception statement from your version. */
-+
-+package com.sun.image.codec.jpeg;
-+
-+public interface JPEGDecodeParam
-+{
-+
-+  public static final int COLOR_ID_UNKNOWN = 0;
-+  public static final int COLOR_ID_RGBA = 1;
-+  public static final int COLOR_ID_RGB = 2;
-+  public static final int COLOR_ID_GRAY = 3;
-+  public static final int COLOR_ID_YCbCrA = 4;
-+  public static final int COLOR_ID_YCbCr = 5;
-+}
-diff -ruN openjdkold/jdk/src/share/classes/com/sun/image/codec/jpeg/JPEGEncodeParam.java openjdk/jdk/src/share/classes/com/sun/image/codec/jpeg/JPEGEncodeParam.java
---- openjdkold/jdk/src/share/classes/com/sun/image/codec/jpeg/JPEGEncodeParam.java	1969-12-31 19:00:00.000000000 -0500
-+++ openjdk/jdk/src/share/classes/com/sun/image/codec/jpeg/JPEGEncodeParam.java	2008-03-31 18:04:57.000000000 -0400
-@@ -0,0 +1,139 @@
-+/* JPEGEncodeParam.java -- 
-+   Copyright (C) 2007 Free Software Foundation, Inc.
-+
-+   This file is part of GNU Classpath.
-+
-+   GNU Classpath is free software; you can redistribute it and/or modify
-+   it under the terms of the GNU General Public License as published by
-+   the Free Software Foundation; either version 2, or (at your option)
-+   any later version.
-+
-+   GNU Classpath 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 for more details.
-+
-+   You should have received a copy of the GNU General Public License
-+   along with GNU Classpath; see the file COPYING.  If not, write to the
-+   Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-+   02110-1301 USA.
-+
-+   Linking this library statically or dynamically with other modules is
-+   making a combined work based on this library.  Thus, the terms and
-+   conditions of the GNU General Public License cover the whole
-+   combination.
-+
-+   As a special exception, the copyright holders of this library give you
-+   permission to link this library with independent modules to produce an
-+   executable, regardless of the license terms of these independent
-+   modules, and to copy and distribute the resulting executable under
-+   terms of your choice, provided that you also meet, for each linked
-+   independent module, the terms and conditions of the license of that
-+   module.  An independent module is a module which is not derived from
-+   or based on this library.  If you modify this library, you may extend
-+   this exception to your version of the library, but you are not
-+   obligated to do so.  If you do not wish to do so, delete this
-+   exception statement from your version. */
-+
-+package com.sun.image.codec.jpeg;
-+
-+public class JPEGEncodeParam
-+{
-+	public static final int COLOR_ID_UNKNOWN = 0;
-+	public static final int COLOR_ID_RGBA = 1;
-+	public static final int COLOR_ID_RGB = 2;
-+	public static final int COLOR_ID_GRAY = 3;
-+	public static final int COLOR_ID_YCbCrA = 4;
-+	public static final int COLOR_ID_CMYK = 5;
-+	public static final int COLOR_ID_YCbCr = 6;
-+
-+	public JPEGEncodeParam()
-+	{
-+	}
-+
-+	public void setQuality(float i, boolean b)
-+        {
-+        }	
-+
-+	public void setQuality(int i, boolean b)
-+	{
-+	}
-+
-+	public JPEGEncodeParam clone()
-+	{
-+	  return null;
-+	}
-+
-+	public void setTableInfoValid(boolean b)
-+	{
-+	}
-+
-+	public void setImageInfoValid(boolean b)
-+	{
-+	}
-+
-+	public int getHorizontalSubsampling(int i)
-+	{
-+	  return 0;
-+	}
-+
-+	public int getVerticalSubsampling(int i)
-+        {
-+          return 0;
-+        }
-+
-+	public int getWidth()
-+	{
-+	  return 0;
-+	}
-+
-+	public int getHeight()
-+	{
-+	  return 0;
-+	}
-+
-+	public int getDensityUnit()
-+        {
-+          return 0;
-+        }
-+
-+        public int getXDensity()
-+        {
-+          return 0;
-+        }
-+
-+        public int getYDensity()
-+        {
-+          return 0;
-+        }
-+
-+        public int getRestartInterval()
-+        {
-+          return 0;
-+        }
-+
-+        public JPEGQTable getQTable(int i)
-+        {
-+          return new JPEGQTable();
-+        }	
-+
-+	public void setDensityUnit(int i)
-+	{
-+	}
-+
-+	public void setXDensity(int i)
-+	{
-+	}
-+
-+	public void setYDensity(int i)
-+	{
-+	}
-+
-+	public void setRestartInterval(int i)
-+	{
-+	}
-+
-+	public void setQTable(int i, JPEGQTable jqt)
-+	{
-+	}
-+}
-diff -ruN openjdkold/jdk/src/share/classes/com/sun/image/codec/jpeg/JPEGImageDecoder.java openjdk/jdk/src/share/classes/com/sun/image/codec/jpeg/JPEGImageDecoder.java
---- openjdkold/jdk/src/share/classes/com/sun/image/codec/jpeg/JPEGImageDecoder.java	1969-12-31 19:00:00.000000000 -0500
-+++ openjdk/jdk/src/share/classes/com/sun/image/codec/jpeg/JPEGImageDecoder.java	2008-03-31 18:04:57.000000000 -0400
-@@ -0,0 +1,60 @@
-+/* JPEGImageDecoder.java -- 
-+   Copyright (C) 2007 Free Software Foundation, Inc.
-+   Copyright (C) 2007 Matthew Flaschen
-+
-+   This file is part of GNU Classpath.
-+
-+   GNU Classpath is free software; you can redistribute it and/or modify
-+   it under the terms of the GNU General Public License as published by
-+   the Free Software Foundation; either version 2, or (at your option)
-+   any later version.
-+
-+   GNU Classpath 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 for more details.
-+
-+   You should have received a copy of the GNU General Public License
-+   along with GNU Classpath; see the file COPYING.  If not, write to the
-+   Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-+   02110-1301 USA.
-+
-+   Linking this library statically or dynamically with other modules is
-+   making a combined work based on this library.  Thus, the terms and
-+   conditions of the GNU General Public License cover the whole
-+   combination.
-+
-+   As a special exception, the copyright holders of this library give you
-+   permission to link this library with independent modules to produce an
-+   executable, regardless of the license terms of these independent
-+   modules, and to copy and distribute the resulting executable under
-+   terms of your choice, provided that you also meet, for each linked
-+   independent module, the terms and conditions of the license of that
-+   module.  An independent module is a module which is not derived from
-+   or based on this library.  If you modify this library, you may extend
-+   this exception to your version of the library, but you are not
-+   obligated to do so.  If you do not wish to do so, delete this
-+   exception statement from your version. */
-+
-+
-+package com.sun.image.codec.jpeg;
-+import java.awt.image.BufferedImage;
-+import java.awt.image.Raster;
-+
-+import java.io.InputStream;
-+import java.io.IOException;
-+
-+
-+public interface JPEGImageDecoder
-+{
-+
-+	public BufferedImage decodeAsBufferedImage() throws IOException, ImageFormatException;
-+	
-+	public Raster decodeAsRaster() throws IOException, ImageFormatException;
-+	
-+	public InputStream getInputStream();
-+
-+	public JPEGDecodeParam getJPEGDecodeParam();
-+
-+	public void setJPEGDecodeParam(JPEGDecodeParam jdp);
-+}
-diff -ruN openjdkold/jdk/src/share/classes/com/sun/image/codec/jpeg/JPEGImageEncoder.java openjdk/jdk/src/share/classes/com/sun/image/codec/jpeg/JPEGImageEncoder.java
---- openjdkold/jdk/src/share/classes/com/sun/image/codec/jpeg/JPEGImageEncoder.java	1969-12-31 19:00:00.000000000 -0500
-+++ openjdk/jdk/src/share/classes/com/sun/image/codec/jpeg/JPEGImageEncoder.java	2008-03-31 18:04:57.000000000 -0400
-@@ -0,0 +1,71 @@
-+/* JPEGImageEncoder.java -- 
-+   Copyright (C) 2007 Free Software Foundation, Inc.
-+
-+   This file is part of GNU Classpath.
-+
-+   GNU Classpath is free software; you can redistribute it and/or modify
-+   it under the terms of the GNU General Public License as published by
-+   the Free Software Foundation; either version 2, or (at your option)
-+   any later version.
-+
-+   GNU Classpath 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 for more details.
-+
-+   You should have received a copy of the GNU General Public License
-+   along with GNU Classpath; see the file COPYING.  If not, write to the
-+   Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-+   02110-1301 USA.
-+
-+   Linking this library statically or dynamically with other modules is
-+   making a combined work based on this library.  Thus, the terms and
-+   conditions of the GNU General Public License cover the whole
-+   combination.
-+
-+   As a special exception, the copyright holders of this library give you
-+   permission to link this library with independent modules to produce an
-+   executable, regardless of the license terms of these independent
-+   modules, and to copy and distribute the resulting executable under
-+   terms of your choice, provided that you also meet, for each linked
-+   independent module, the terms and conditions of the license of that
-+   module.  An independent module is a module which is not derived from
-+   or based on this library.  If you modify this library, you may extend
-+   this exception to your version of the library, but you are not
-+   obligated to do so.  If you do not wish to do so, delete this
-+   exception statement from your version. */
-+
-+package com.sun.image.codec.jpeg;
-+
-+import com.sun.image.codec.jpeg.*;
-+import java.awt.image.BufferedImage;
-+import java.awt.image.Raster;
-+
-+public class JPEGImageEncoder
-+{
-+	public JPEGImageEncoder()
-+	{
-+	}
-+	
-+	public JPEGEncodeParam getDefaultJPEGEncodeParam(BufferedImage bi)
-+	{
-+		return null;
-+	}
-+
-+	public void setJPEGEncodeParam(JPEGEncodeParam p)
-+	{
-+	}
-+
-+	public void encode(BufferedImage bi, JPEGEncodeParam p)
-+	{
-+	}
-+
-+	public void encode(Raster bi)
-+        {
-+        }
-+
-+	public void encode(BufferedImage bi)
-+        {
-+        }
-+
-+}
-diff -ruN openjdkold/jdk/src/share/classes/com/sun/image/codec/jpeg/JPEGQTable.java openjdk/jdk/src/share/classes/com/sun/image/codec/jpeg/JPEGQTable.java
---- openjdkold/jdk/src/share/classes/com/sun/image/codec/jpeg/JPEGQTable.java	1969-12-31 19:00:00.000000000 -0500
-+++ openjdk/jdk/src/share/classes/com/sun/image/codec/jpeg/JPEGQTable.java	2008-03-31 18:04:57.000000000 -0400
-@@ -0,0 +1,44 @@
-+/* JPEGQTable.java -- 
-+   Copyright (C) 2007 Free Software Foundation, Inc.
-+   Copyright (C) 2007 Matthew Flaschen
-+
-+   This file is part of GNU Classpath.
-+
-+   GNU Classpath is free software; you can redistribute it and/or modify
-+   it under the terms of the GNU General Public License as published by
-+   the Free Software Foundation; either version 2, or (at your option)
-+   any later version.
-+
-+   GNU Classpath 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 for more details.
-+
-+   You should have received a copy of the GNU General Public License
-+   along with GNU Classpath; see the file COPYING.  If not, write to the
-+   Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-+   02110-1301 USA.
-+
-+   Linking this library statically or dynamically with other modules is
-+   making a combined work based on this library.  Thus, the terms and
-+   conditions of the GNU General Public License cover the whole
-+   combination.
-+
-+   As a special exception, the copyright holders of this library give you
-+   permission to link this library with independent modules to produce an
-+   executable, regardless of the license terms of these independent
-+   modules, and to copy and distribute the resulting executable under
-+   terms of your choice, provided that you also meet, for each linked
-+   independent module, the terms and conditions of the license of that
-+   module.  An independent module is a module which is not derived from
-+   or based on this library.  If you modify this library, you may extend
-+   this exception to your version of the library, but you are not
-+   obligated to do so.  If you do not wish to do so, delete this
-+   exception statement from your version. */
-+
-+package com.sun.image.codec.jpeg;
-+
-+public class JPEGQTable
-+{
-+
-+}
-diff -ruN openjdkold/jdk/src/share/classes/com/sun/image/codec/jpeg/TruncatedFileException.java openjdk/jdk/src/share/classes/com/sun/image/codec/jpeg/TruncatedFileException.java
---- openjdkold/jdk/src/share/classes/com/sun/image/codec/jpeg/TruncatedFileException.java	1969-12-31 19:00:00.000000000 -0500
-+++ openjdk/jdk/src/share/classes/com/sun/image/codec/jpeg/TruncatedFileException.java	2008-03-31 19:38:37.000000000 -0400
-@@ -0,0 +1,58 @@
-+/* TruncatedFileException.java
-+   Copyright (C) 2007 Matthew Flaschen
-+
-+   This file is part of IcedTea
-+
-+   IcedTea is free software; you can redistribute it and/or modify
-+   it under the terms of the GNU General Public License as published by
-+   the Free Software Foundation; either version 2, or (at your option)
-+   any later version.
-+
-+   IcedTea 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 for more details.
-+
-+   You should have received a copy of the GNU General Public License
-+   along with GNU Classpath; see the file COPYING.  If not, write to the
-+   Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-+   02110-1301 USA.
-+
-+   Linking this library statically or dynamically with other modules is
-+   making a combined work based on this library.  Thus, the terms and
-+   conditions of the GNU General Public License cover the whole
-+   combination.
-+
-+   As a special exception, the copyright holders of this library give you
-+   permission to link this library with independent modules to produce an
-+   executable, regardless of the license terms of these independent
-+   modules, and to copy and distribute the resulting executable under
-+   terms of your choice, provided that you also meet, for each linked
-+   independent module, the terms and conditions of the license of that
-+   module.  An independent module is a module which is not derived from
-+   or based on this library.  If you modify this library, you may extend
-+   this exception to your version of the library, but you are not
-+   obligated to do so.  If you do not wish to do so, delete this
-+   exception statement from your version. */
-+
-+package com.sun.image.codec.jpeg;
-+
-+import java.awt.image.BufferedImage;
-+
-+public class TruncatedFileException extends RuntimeException
-+{
-+	public TruncatedFileException()
-+	{
-+		this("");
-+	}
-+
-+	public TruncatedFileException(String s)
-+	{
-+		super(s);
-+	}
-+
-+	public BufferedImage getBufferedImage()
-+	{
-+	  return null;
-+	}
-+}
--- a/patches/jtreg-6929067-fix.patch	Thu Mar 31 01:04:37 2011 +0100
+++ b/patches/jtreg-6929067-fix.patch	Wed May 18 15:46:37 2011 +0100
@@ -1,28 +1,27 @@
 --- openjdk-old/hotspot/test/runtime/6929067/Test6929067.sh	2010-10-08 22:29:24.000000000 +0200
 +++ openjdk/hotspot/test/runtime/6929067/Test6929067.sh	2010-12-08 13:45:18.000000000 +0100
-@@ -7,6 +7,7 @@
- ## @run shell Test6929067.sh
- ##
- 
-+
- if [ "${TESTSRC}" = "" ]
- then TESTSRC=.
- fi
-@@ -42,7 +43,24 @@
+@@ -42,7 +42,31 @@
      ;;
  esac
  
 -LD_LIBRARY_PATH=.:${TESTJAVA}/jre/lib/i386/client:/usr/openwin/lib:/usr/dt/lib:/usr/lib:$LD_LIBRARY_PATH
 +COMP_FLAG="-m32"
 +
++# Test if JDK is 32 or 64 bits
++${TESTJAVA}/bin/java -d64
++
++if [ $? -eq 0 ]
++then
++    COMP_FLAG="-m64"
++fi
++
 +# Get ARCH specifics
 +ARCH=`uname -m`
 +case "$ARCH" in
 +  x86_64)
 +    ARCH=amd64
-+    COMP_FLAG="-m64"
 +    ;;
-+  i585)
++  i586)
 +    ARCH=i386
 +    ;;
 +  i686)
@@ -34,7 +33,7 @@
  export LD_LIBRARY_PATH
  
  THIS_DIR=`pwd`
-@@ -55,6 +73,13 @@
+@@ -55,6 +79,13 @@
  
  ${TESTJAVA}${FS}bin${FS}javac T.java
  
--- a/patches/libpng.patch	Thu Mar 31 01:04:37 2011 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,12 +0,0 @@
-diff -r 93c580ce5e88 jdk/src/share/native/sun/awt/splashscreen/splashscreen_png.c
---- openjdk.orig/jdk/src/share/native/sun/awt/splashscreen/splashscreen_png.c	Fri Jan 15 08:41:51 2010 -0800
-+++ openjdk/jdk/src/share/native/sun/awt/splashscreen/splashscreen_png.c	Wed Jan 27 16:52:44 2010 +0000
-@@ -182,7 +182,7 @@
-     int success = 0;
- 
-     stream->read(stream, sig, SIG_BYTES);
--    if (!png_check_sig(sig, SIG_BYTES)) {
-+    if (png_sig_cmp(sig, 0, SIG_BYTES)) {
-         goto done;
-     }
-     success = SplashDecodePng(splash, my_png_read_stream, stream);
--- a/patches/linux-separate-debuginfo.patch	Thu Mar 31 01:04:37 2011 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,379 +0,0 @@
-2009-12-09  Andrew Haley  <aph@redhat.com>
-
-	* openjdk/hotspot/agent/src/os/linux/symtab.c (debug_file_directory):
-	New variable.
-	(gnu_debuglink_crc32): New.
-	(build_symtab_internal): Rename from build_symtab, make static.
-	Add logic to look inside debuginfo files.
-	(open_debug_file, find_section_by_name, open_file_from_debug_link,
-	build_id_to_debug_filename, build_symtab_from_build_id,
-	build_symtab): New.
-	* openjdk/hotspot/agent/src/os/linux/libproc_impl.c (add_lib_info_fd):
-	Pass FILENAME to build_symtab().
-	* openjdk/hotspot/agent/src/os/linux/symtab.h (build_symtab):
-	Add FILENAME arg.
-
-2009-12-16  Andrew Haley  <aph@redhat.com>
-
-	* openjdk/hotspot/agent/src/os/linux/symtab.c (open_file_from_debug_link):
-	Check for NULL.
-	Fix off by one error in aligning the CRC: the offset is 4 bytes,
-	not 3.
-
-diff -u ../openjdk/icedtea6/openjdk/hotspot/agent/src/os/linux/libproc_impl.c openjdk/hotspot/agent/src/os/linux/libproc_impl.c
---- ../openjdk/icedtea6/openjdk/hotspot/agent/src/os/linux/libproc_impl.c	2009-05-15 00:36:38.000000000 +0100
-+++ openjdk/hotspot/agent/src/os/linux/libproc_impl.c	2009-12-04 16:29:27.552837905 +0000
-@@ -174,7 +174,7 @@
-       return NULL;
-    }
- 
--   newlib->symtab = build_symtab(newlib->fd);
-+   newlib->symtab = build_symtab(newlib->fd, libname);
-    if (newlib->symtab == NULL) {
-       print_debug("symbol table build failed for %s\n", newlib->name);
-    }
-diff -u ../openjdk/icedtea6/openjdk/hotspot/agent/src/os/linux/symtab.h openjdk/hotspot/agent/src/os/linux/symtab.h
---- ../openjdk/icedtea6/openjdk/hotspot/agent/src/os/linux/symtab.h	2009-05-15 00:36:38.000000000 +0100
-+++ openjdk/hotspot/agent/src/os/linux/symtab.h	2009-12-04 16:30:38.797838015 +0000
-@@ -32,7 +32,7 @@
- struct symtab;
- 
- // build symbol table for a given ELF file descriptor
--struct symtab* build_symtab(int fd);
-+struct symtab* build_symtab(int fd, const char *filename);
- 
- // destroy the symbol table
- void destroy_symtab(struct symtab* symtab);
-
---- openjdk/hotspot/agent/src/os/linux/symtab.c	2009-12-16 17:13:28.879599584 +0000
-+++ openjdk/hotspot/agent/src/os/linux/symtab.c	2009-12-16 17:14:15.871601226 +0000
-@@ -53,8 +53,274 @@
-   struct hsearch_data *hash_table;
- } symtab_t;
- 
--// read symbol table from given fd.
--struct symtab* build_symtab(int fd) {
-+
-+// Directory that contains global debuginfo files.  In theory it
-+// should be possible to change this, but in a Java environment there
-+// is no obvious place to put a user interface to do it.  Maybe this
-+// could be set with an environment variable.
-+static const char debug_file_directory[] = "/usr/lib/debug";
-+
-+/* The CRC used in gnu_debuglink, retrieved from
-+   http://sourceware.org/gdb/current/onlinedocs/gdb/Separate-Debug-Files.html#Separate-Debug-Files. */
-+unsigned long gnu_debuglink_crc32 (unsigned long crc,
-+				   unsigned char *buf, size_t len)
-+{
-+  static const unsigned long crc32_table[256] =
-+    {
-+      0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419,
-+      0x706af48f, 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4,
-+      0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07,
-+      0x90bf1d91, 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de,
-+      0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 0x136c9856,
-+      0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9,
-+      0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4,
-+      0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b,
-+      0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3,
-+      0x45df5c75, 0xdcd60dcf, 0xabd13d59, 0x26d930ac, 0x51de003a,
-+      0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599,
-+      0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,
-+      0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190,
-+      0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f,
-+      0x9fbfe4a5, 0xe8b8d433, 0x7807c9a2, 0x0f00f934, 0x9609a88e,
-+      0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01,
-+      0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed,
-+      0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950,
-+      0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3,
-+      0xfbd44c65, 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2,
-+      0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a,
-+      0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5,
-+      0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, 0xbe0b1010,
-+      0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,
-+      0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17,
-+      0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6,
-+      0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615,
-+      0x73dc1683, 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8,
-+      0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, 0xf00f9344,
-+      0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb,
-+      0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a,
-+      0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5,
-+      0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1,
-+      0xa6bc5767, 0x3fb506dd, 0x48b2364b, 0xd80d2bda, 0xaf0a1b4c,
-+      0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef,
-+      0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,
-+      0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe,
-+      0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31,
-+      0x2cd99e8b, 0x5bdeae1d, 0x9b64c2b0, 0xec63f226, 0x756aa39c,
-+      0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713,
-+      0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b,
-+      0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242,
-+      0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1,
-+      0x18b74777, 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c,
-+      0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, 0xa00ae278,
-+      0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7,
-+      0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, 0x40df0b66,
-+      0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
-+      0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605,
-+      0xcdd70693, 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8,
-+      0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b,
-+      0x2d02ef8d
-+    };
-+  unsigned char *end;
-+
-+  crc = ~crc & 0xffffffff;
-+  for (end = buf + len; buf < end; ++buf)
-+    crc = crc32_table[(crc ^ *buf) & 0xff] ^ (crc >> 8);
-+  return ~crc & 0xffffffff;
-+}
-+
-+/* Open a debuginfo file and check its CRC.  If it exists and the CRC
-+   matches return its fd.  */
-+static int
-+open_debug_file (const char *pathname, unsigned int crc)
-+{
-+  unsigned int file_crc = 0;
-+  unsigned char buffer[8 * 1024];
-+
-+  int fd = pathmap_open(pathname);
-+
-+  if (fd < 0)
-+    return -1;
-+
-+  lseek(fd, 0, SEEK_SET);
-+
-+  for (;;) {
-+    int len = read(fd, buffer, sizeof buffer);
-+    if (len <= 0)
-+      break;
-+    file_crc = gnu_debuglink_crc32(file_crc, buffer, len);
-+  }
-+
-+  if (crc == file_crc)
-+    return fd;
-+  else {
-+    close(fd);
-+    return -1;
-+  }
-+}
-+
-+/* Find an ELF section.  */
-+static struct elf_section *find_section_by_name(char *name,
-+						int fd,
-+						ELF_EHDR *ehdr,
-+						ELF_SHDR *shbuf,
-+						struct elf_section *scn_cache)
-+{
-+  ELF_SHDR* cursct = NULL;
-+  char *strtab;
-+  int cnt;
-+
-+  if (scn_cache[ehdr->e_shstrndx].c_data == NULL) {
-+    if ((scn_cache[ehdr->e_shstrndx].c_data
-+	 = read_section_data(fd, ehdr, cursct)) == NULL) {
-+      return NULL;
-+    }
-+  }
-+
-+  strtab = scn_cache[ehdr->e_shstrndx].c_data;
-+
-+  for (cursct = shbuf, cnt = 0;
-+       cnt < ehdr->e_shnum;
-+       cnt++, cursct++) {
-+    if (strcmp(cursct->sh_name + strtab, name) == 0) {
-+      scn_cache[cnt].c_data = read_section_data(fd, ehdr, cursct);
-+      return &scn_cache[cnt];
-+    }
-+  }
-+
-+  return NULL;
-+}
-+
-+/* Look for a ".gnu_debuglink" section.  If one exists, try to open a
-+   suitable debuginfo file.  */
-+static int open_file_from_debug_link(const char *name,
-+				     int fd,
-+				     ELF_EHDR *ehdr,
-+				     ELF_SHDR *shbuf,
-+				     struct elf_section *scn_cache)
-+{
-+  int debug_fd;
-+  struct elf_section *debug_link = find_section_by_name(".gnu_debuglink", fd, ehdr,
-+							shbuf, scn_cache);
-+  if (debug_link == NULL)
-+    return -1;
-+  char *debug_filename = debug_link->c_data;
-+  int offset = (strlen(debug_filename) + 4) >> 2;
-+  static unsigned int crc;
-+  crc = ((unsigned int*)debug_link->c_data)[offset];
-+  char *debug_pathname = malloc(strlen(debug_filename)
-+				+ strlen(name)
-+				+ strlen(".debug/")
-+				+ strlen(debug_file_directory)
-+				+ 2);
-+  strcpy(debug_pathname, name);
-+  char *last_slash = strrchr(debug_pathname, '/');
-+  if (last_slash == NULL)
-+    return -1;
-+
-+  /* Look in the same directory as the object.  */
-+  strcpy(last_slash+1, debug_filename);
-+
-+  debug_fd = open_debug_file(debug_pathname, crc);
-+  if (debug_fd >= 0) {
-+    free(debug_pathname);
-+    return debug_fd;
-+  }
-+
-+  /* Look in a subdirectory named ".debug".  */
-+  strcpy(last_slash+1, ".debug/");
-+  strcat(last_slash, debug_filename);
-+
-+  debug_fd = open_debug_file(debug_pathname, crc);
-+  if (debug_fd >= 0) {
-+    free(debug_pathname);
-+    return debug_fd;
-+  }
-+
-+  /* Look in /usr/lib/debug + the full pathname.  */
-+  strcpy(debug_pathname, debug_file_directory);
-+  strcat(debug_pathname, name);
-+  last_slash = strrchr(debug_pathname, '/');
-+  strcpy(last_slash+1, debug_filename);
-+
-+  debug_fd = open_debug_file(debug_pathname, crc);
-+  if (debug_fd >= 0) {
-+    free(debug_pathname);
-+    return debug_fd;
-+  }
-+
-+  free(debug_pathname);
-+  return -1;
-+}
-+
-+static struct symtab* build_symtab_internal(int fd, const char *filename, bool try_debuginfo);
-+
-+/* Look for a ".gnu_debuglink" section.  If one exists, try to open a
-+   suitable debuginfo file and read a symbol table from it.  */
-+static struct symtab *build_symtab_from_debug_link(const char *name,
-+				     int fd,
-+				     ELF_EHDR *ehdr,
-+				     ELF_SHDR *shbuf,
-+				     struct elf_section *scn_cache)
-+{
-+  fd = open_file_from_debug_link(name, fd, ehdr, shbuf, scn_cache);
-+
-+  if (fd >= 0) {
-+    struct symtab *symtab = build_symtab_internal(fd, NULL, /* try_debuginfo */ false);
-+    close(fd);
-+    return symtab;
-+  }
-+
-+  return NULL;
-+}
-+
-+// Given a build_id, find the associated debuginfo file
-+static char *
-+build_id_to_debug_filename (size_t size, unsigned char *data)
-+{
-+  char *filename, *s;
-+
-+  filename = malloc(strlen (debug_file_directory) + (sizeof "/.build-id/" - 1) + 1
-+		    + 2 * size + (sizeof ".debug" - 1) + 1);
-+  s = filename + sprintf (filename, "%s/.build-id/", debug_file_directory);
-+  if (size > 0)
-+    {
-+      size--;
-+      s += sprintf (s, "%02x", *data++);
-+    }
-+  if (size > 0)
-+    *s++ = '/';
-+  while (size-- > 0)
-+    s += sprintf (s, "%02x", *data++);
-+  strcpy (s, ".debug");
-+
-+  return filename;
-+}
-+
-+// Read a build ID note.  Try to open any associated debuginfo file
-+// and return its symtab
-+static struct symtab* build_symtab_from_build_id(Elf64_Nhdr *note)
-+{
-+  int fd;
-+  struct symtab *symtab = NULL;
-+
-+  unsigned char *bytes
-+    = (unsigned char*)(note+1) + note->n_namesz;
-+  unsigned char *filename 
-+    = (build_id_to_debug_filename (note->n_descsz, bytes));
-+
-+  fd = pathmap_open(filename);
-+  if (fd >= 0) {
-+    symtab = build_symtab_internal(fd, NULL, /* try_debuginfo */ false);
-+    close(fd);
-+  }
-+  free(filename);
-+
-+  return symtab;
-+}
-+
-+// read symbol table from given fd.  If try_debuginfo) is true, also
-+// try to open an associated debuginfo file
-+static struct symtab* build_symtab_internal(int fd, const char *filename, bool try_debuginfo) {
-   ELF_EHDR ehdr;
-   char *names = NULL;
-   struct symtab* symtab = NULL;
-@@ -90,7 +356,8 @@
- 
-   for (cursct = shbuf, cnt = 0; cnt < ehdr.e_shnum; cnt++) {
-     scn_cache[cnt].c_shdr = cursct;
--    if (cursct->sh_type == SHT_SYMTAB || cursct->sh_type == SHT_STRTAB) {
-+    if (cursct->sh_type == SHT_SYMTAB || cursct->sh_type == SHT_STRTAB
-+	|| cursct->sh_type == SHT_NOTE) {
-       if ( (scn_cache[cnt].c_data = read_section_data(fd, &ehdr, cursct)) == NULL) {
-          goto quit;
-       }
-@@ -163,6 +430,30 @@
-     }
-   }
- 
-+  // If we have no symtab in this file, look for a separate debuginfo file
-+  if (try_debuginfo) {
-+#ifdef NT_GNU_BUILD_ID
-+    // First we look for a Build ID
-+    for (cursct = shbuf, cnt = 0;
-+	 symtab == NULL && cnt < ehdr.e_shnum;
-+	 cnt++) {
-+      if (cursct->sh_type == SHT_NOTE) {
-+	Elf64_Nhdr *note = (Elf64_Nhdr *)scn_cache[cnt].c_data;
-+	if (note->n_type == NT_GNU_BUILD_ID) {
-+	  symtab = build_symtab_from_build_id(note);
-+	}
-+      }
-+      cursct++;
-+    }
-+#endif
-+
-+    // Then, if that doesn't work, the debug link
-+    if (symtab == NULL) {
-+      symtab = build_symtab_from_debug_link(filename, fd, &ehdr, shbuf,
-+					    scn_cache);
-+    }
-+  }
-+
- quit:
-   if (shbuf) free(shbuf);
-   if (phbuf) free(phbuf);
-@@ -177,6 +468,11 @@
-   return symtab;
- }
- 
-+struct symtab* build_symtab(int fd, const char *filename) {
-+  return build_symtab_internal(fd, filename, /* try_debuginfo */ true);
-+}
-+
-+
- void destroy_symtab(struct symtab* symtab) {
-   if (!symtab) return;
-   if (symtab->strs) free(symtab->strs);
--- a/patches/mark_sun_toolkit_privileged_code.patch	Thu Mar 31 01:04:37 2011 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,12 +0,0 @@
---- openjdk/jdk/src/share/classes/sun/awt/SunToolkit.orig.java	2011-03-11 10:48:29.000000000 +0100
-+++ openjdk/jdk/src/share/classes/sun/awt/SunToolkit.java	2011-03-11 11:24:33.000000000 +0100
-@@ -65,8 +65,7 @@
-
-     /* Load debug settings for native code */
-     static {
--        String nativeDebug = System.getProperty("sun.awt.nativedebug");
--        if ("true".equalsIgnoreCase(nativeDebug)) {
-+        if (AccessController.doPrivileged(new GetBooleanAction("sun.awt.nativedebug"))) {
-             DebugSettings.init();
-         }
-     };
--- a/patches/no-sync.patch	Thu Mar 31 01:04:37 2011 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,14 +0,0 @@
-diff -r 388276965253 make/common/shared/Sanity.gmk
---- openjdk.orig/jdk/make/common/shared/Sanity.gmk	Wed Jun 16 20:46:10 2010 +0200
-+++ openjdk/jdk/make/common/shared/Sanity.gmk	Wed Jun 30 00:50:32 2010 +0100
-@@ -57,8 +57,8 @@
- endif
- 
- ifeq ($(PLATFORM), linux)
--  FREE_SPACE := $(shell $(DF) --sync -kP $(OUTPUTDIR) | $(TAIL) -1 | $(NAWK) '{print $$4;}')
--  TEMP_FREE_SPACE := $(shell $(DF) --sync -kP $(TEMP_DISK) | $(TAIL) -1 | $(NAWK) '{print $$4;}')
-+  FREE_SPACE := $(shell $(DF) -kP $(OUTPUTDIR) | $(TAIL) -1 | $(NAWK) '{print $$4;}')
-+  TEMP_FREE_SPACE := $(shell $(DF) -kP $(TEMP_DISK) | $(TAIL) -1 | $(NAWK) '{print $$4;}')
-   ifeq ($(ARCH), amd64)
-     LINUX_VERSION := $(shell \
-         if [ -r "$(LINUX_VERSION_INFO)" ] ; then \
--- a/patches/nss-debug.patch	Thu Mar 31 01:04:37 2011 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-diff -r 5b407bce9940 src/share/classes/sun/security/pkcs11/wrapper/PKCS11Exception.java
---- openjdk.orig/jdk/src/share/classes/sun/security/pkcs11/wrapper/PKCS11Exception.java	Fri Apr 09 01:08:35 2010 +0100
-+++ openjdk/jdk/src/share/classes/sun/security/pkcs11/wrapper/PKCS11Exception.java	Mon Apr 12 20:55:39 2010 +0100
-@@ -148,6 +148,7 @@
-             0x00000115,
-             0x00000120,
-             0x00000121,
-+            0x00000130,
-             0x00000150,
-             0x00000160,
-             0x00000170,
-@@ -156,6 +157,7 @@
-             0x00000191,
-             0x000001A0,
-             0x000001A1,
-+            0x00000200,
-             0x80000000,
-         };
-         String[] errorMessages = new String[] {
-@@ -234,6 +236,7 @@
-             "CKR_WRAPPING_KEY_TYPE_INCONSISTENT",
-             "CKR_RANDOM_SEED_NOT_SUPPORTED",
-             "CKR_RANDOM_NO_RNG",
-+            "CKR_DOMAIN_PARAMS_INVALID",
-             "CKR_BUFFER_TOO_SMALL",
-             "CKR_SAVED_STATE_INVALID",
-             "CKR_INFORMATION_SENSITIVE",
-@@ -242,6 +245,7 @@
-             "CKR_CRYPTOKI_ALREADY_INITIALIZED",
-             "CKR_MUTEX_BAD",
-             "CKR_MUTEX_NOT_LOCKED",
-+            "CKR_FUNCTION_REJECTED",
-             "CKR_VENDOR_DEFINED",
-         };
-         errorMap = new HashMap<Long,String>();
-diff -r 5b407bce9940 src/share/classes/sun/security/x509/X509Key.java
---- openjdk.orig/jdk/src/share/classes/sun/security/x509/X509Key.java	Fri Apr 09 01:08:35 2010 +0100
-+++ openjdk/jdk/src/share/classes/sun/security/x509/X509Key.java	Mon Apr 12 20:55:39 2010 +0100
-@@ -171,7 +171,7 @@
-                                       in.data.getUnalignedBitString());
- 
-         } catch (InvalidKeyException e) {
--            throw new IOException("subject key, " + e.getMessage());
-+            throw new IOException("subject key, " + e.getMessage(), e);
-         }
- 
-         if (in.data.available() != 0)
-@@ -224,7 +224,7 @@
-         } catch (NoSuchAlgorithmException e) {
-             // Return generic X509Key with opaque key data (see below)
-         } catch (InvalidKeySpecException e) {
--            throw new InvalidKeyException(e.getMessage());
-+            throw new InvalidKeyException(e.getMessage(), e);
-         }
- 
-         /*
--- a/patches/openjdk/6307603-xrender-01.patch	Thu Mar 31 01:04:37 2011 +0100
+++ b/patches/openjdk/6307603-xrender-01.patch	Wed May 18 15:46:37 2011 +0100
@@ -9,12 +9,13 @@
                  #Java_sun_awt_motif_MEmbedCanvasPeer_initXEmbedServer;
                  #Java_sun_awt_motif_MEmbedCanvasPeer_destroyXEmbedServer;
                  #Java_sun_awt_motif_MEmbedCanvasPeer_isXEmbedActive;
-@@ -406,17 +407,52 @@
+@@ -406,18 +407,53 @@
  		Java_sun_java2d_x11_X11SurfaceData_initIDs;
  		Java_sun_java2d_x11_X11SurfaceData_initOps;
  		Java_sun_java2d_x11_X11SurfaceData_initSurface;
 -		Java_sun_java2d_x11_X11SurfaceData_isDrawableValid;
  		Java_sun_java2d_x11_X11SurfaceData_isDgaAvailable;
+ 		Java_sun_java2d_x11_X11SurfaceData_isShmPMAvailable;
 -		Java_sun_java2d_x11_X11SurfaceData_setInvalid;
 -		Java_sun_java2d_x11_X11SurfaceData_flushNativeSurface;
 -                Java_sun_java2d_x11_X11SurfaceData_XCreateGC;
@@ -178,7 +179,7 @@
          Java_sun_awt_X11GraphicsEnvironment_checkShmExt;
          Java_sun_awt_X11GraphicsEnvironment_getNumScreens;
          Java_sun_awt_X11GraphicsEnvironment_getDefaultScreenNum;
-@@ -337,20 +338,51 @@
+@@ -337,21 +338,52 @@
  	Java_sun_java2d_x11_X11Renderer_XFillRect;
  	Java_sun_java2d_x11_X11Renderer_XFillRoundRect;
          Java_sun_java2d_x11_X11Renderer_devCopyArea;
@@ -186,6 +187,7 @@
          Java_sun_java2d_x11_X11SurfaceData_initIDs;
 -	Java_sun_java2d_x11_X11SurfaceData_isDrawableValid;
          Java_sun_java2d_x11_X11SurfaceData_isDgaAvailable;
+ 	Java_sun_java2d_x11_X11SurfaceData_isShmPMAvailable;
 -        Java_sun_java2d_x11_X11SurfaceData_initOps;
          Java_sun_java2d_x11_X11SurfaceData_initSurface;
 -        Java_sun_java2d_x11_X11SurfaceData_flushNativeSurface;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/openjdk/6599601-mark_sun_toolkit_privileged_code.patch	Wed May 18 15:46:37 2011 +0100
@@ -0,0 +1,22 @@
+# HG changeset patch
+# User ptisnovs
+# Date 1305021522 -7200
+# Node ID fe6a8ddfe33d460fe19867c6625ee6390934e4b7
+# Parent  593007922695685523c0730db47e379c26490967
+6599601: Permissions/AWTWindowTest and Permissions/DFLoadTest failed in PIT 7.0 B20 on Windows Vista
+Summary: Correction of checking sun.awt.nativedebug flag.
+Reviewed-by: ohair
+
+diff -r 593007922695 -r fe6a8ddfe33d src/share/classes/sun/awt/SunToolkit.java
+--- openjdk/jdk/src/share/classes/sun/awt/SunToolkit.java	Tue Jan 11 12:36:43 2011 -0500
++++ openjdk/jdk/src/share/classes/sun/awt/SunToolkit.java	Tue May 10 11:58:42 2011 +0200
+@@ -70,8 +70,7 @@
+ 
+     /* Load debug settings for native code */
+     static {
+-        String nativeDebug = System.getProperty("sun.awt.nativedebug");
+-        if ("true".equalsIgnoreCase(nativeDebug)) {
++        if (AccessController.doPrivileged(new GetBooleanAction("sun.awt.nativedebug"))) {
+             DebugSettings.init();
+         }
+     };
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/openjdk/6708580-exa_slow.patch	Wed May 18 15:46:37 2011 +0100
@@ -0,0 +1,103 @@
+# HG changeset patch
+# User tdv
+# Date 1228418486 28800
+# Node ID 15435c60c751bc39af2fc6b3a30744c6713db1de
+# Parent  c8eea39734e85b50977434a5b37b3eb8ac8c0a59
+6708580: Java applications slow when EXA enabled
+Reviewed-by: prr, tdv
+Contributed-by: ceisserer <linuxhippy@gmail.com>
+
+diff -r c8eea39734e8 -r 15435c60c751 make/sun/awt/mapfile-mawt-vers
+--- openjdk.orig/jdk/make/sun/awt/mapfile-mawt-vers	Thu Dec 04 10:05:36 2008 -0800
++++ openjdk/jdk/make/sun/awt/mapfile-mawt-vers	Thu Dec 04 11:21:26 2008 -0800
+@@ -407,6 +407,7 @@
+ 		Java_sun_java2d_x11_X11SurfaceData_initSurface;
+ 		Java_sun_java2d_x11_X11SurfaceData_isDrawableValid;
+ 		Java_sun_java2d_x11_X11SurfaceData_isDgaAvailable;
++		Java_sun_java2d_x11_X11SurfaceData_isShmPMAvailable;
+ 		Java_sun_java2d_x11_X11SurfaceData_setInvalid;
+ 		Java_sun_java2d_x11_X11SurfaceData_flushNativeSurface;
+                 Java_sun_java2d_x11_X11SurfaceData_XCreateGC;
+diff -r c8eea39734e8 -r 15435c60c751 make/sun/xawt/mapfile-vers
+--- openjdk.orig/jdk/make/sun/xawt/mapfile-vers	Thu Dec 04 10:05:36 2008 -0800
++++ openjdk/jdk/make/sun/xawt/mapfile-vers	Thu Dec 04 11:21:26 2008 -0800
+@@ -337,6 +337,7 @@
+         Java_sun_java2d_x11_X11SurfaceData_initIDs;
+ 	Java_sun_java2d_x11_X11SurfaceData_isDrawableValid;
+         Java_sun_java2d_x11_X11SurfaceData_isDgaAvailable;
++	Java_sun_java2d_x11_X11SurfaceData_isShmPMAvailable;
+         Java_sun_java2d_x11_X11SurfaceData_initOps;
+         Java_sun_java2d_x11_X11SurfaceData_initSurface;
+         Java_sun_java2d_x11_X11SurfaceData_flushNativeSurface;
+diff -r c8eea39734e8 -r 15435c60c751 src/solaris/classes/sun/java2d/x11/X11SurfaceData.java
+--- openjdk.orig/jdk/src/solaris/classes/sun/java2d/x11/X11SurfaceData.java	Thu Dec 04 10:05:36 2008 -0800
++++ openjdk/jdk/src/solaris/classes/sun/java2d/x11/X11SurfaceData.java	Thu Dec 04 11:21:26 2008 -0800
+@@ -50,6 +50,7 @@
+ import sun.font.X11TextRenderer;
+ import sun.java2d.InvalidPipeException;
+ import sun.java2d.SunGraphics2D;
++import sun.java2d.SunGraphicsEnvironment;
+ import sun.java2d.SurfaceData;
+ import sun.java2d.SurfaceDataProxy;
+ import sun.java2d.loops.SurfaceType;
+@@ -240,6 +241,11 @@
+      */
+     public static native boolean isDgaAvailable();
+ 
++    /**
++     * Returns true if shared memory pixmaps are available
++     */
++    private static native boolean isShmPMAvailable();
++
+     public static boolean isAccelerationEnabled() {
+         if (accelerationEnabled == null) {
+ 
+@@ -253,8 +259,17 @@
+                     // true iff prop==true, false otherwise
+                     accelerationEnabled = Boolean.valueOf(prop);
+                 } else {
+-                    // use pixmaps if there is no dga, no matter local or remote
+-                    accelerationEnabled = Boolean.valueOf(!isDgaAvailable());
++                    boolean isDisplayLocal = false;
++                    GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
++                    if (ge instanceof SunGraphicsEnvironment) {
++                        isDisplayLocal = ((SunGraphicsEnvironment) ge).isDisplayLocal();
++                     }
++
++                    // EXA based drivers tend to place pixmaps in VRAM, slowing down readbacks.
++                    // Don't use pixmaps if dga is available,
++                    // or we are local and shared memory Pixmaps are not available.
++                    accelerationEnabled =
++                        !(isDgaAvailable() || (isDisplayLocal && !isShmPMAvailable()));
+                 }
+             }
+         }
+diff -r c8eea39734e8 -r 15435c60c751 src/solaris/native/sun/java2d/x11/X11SurfaceData.c
+--- openjdk.orig/jdk/src/solaris/native/sun/java2d/x11/X11SurfaceData.c	Thu Dec 04 10:05:36 2008 -0800
++++ openjdk/jdk/src/solaris/native/sun/java2d/x11/X11SurfaceData.c	Thu Dec 04 11:21:26 2008 -0800
+@@ -208,6 +208,23 @@
+ #endif /* HEADLESS */
+ }
+ 
++
++/*
++ * Class:     sun_java2d_x11_X11SurfaceData
++ * Method:    isShmPMAvailable
++ * Signature: ()Z
++ */
++JNIEXPORT jboolean JNICALL
++Java_sun_java2d_x11_X11SurfaceData_isShmPMAvailable(JNIEnv *env, jobject this)
++{
++#if defined(HEADLESS) || !defined(MITSHM)
++    return JNI_FALSE;
++#else
++    return useMitShmPixmaps;
++#endif /* HEADLESS, MITSHM */
++}
++
++
+ /*
+  * Class:     sun_java2d_x11_X11SurfaceData
+  * Method:    initOps
+exporting patch:
+<fdopen>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/openjdk/6748082-isDisplayLocal.patch	Wed May 18 15:46:37 2011 +0100
@@ -0,0 +1,116 @@
+# HG changeset patch
+# User tdv
+# Date 1221256905 25200
+# Node ID b8f91ea2fb33cdbbc177ab1f68170ce7966b5d7b
+# Parent  cd88b4ad7f258f023f12ebcc3b5a01a826e9392d
+6748082: remove platform-specific code from SwingUtilities2.isDisplayLocal
+Reviewed-by: prr, tdv
+Contributed-by: rkennke@kennke.org
+
+diff -r cd88b4ad7f25 -r b8f91ea2fb33 src/share/classes/sun/java2d/SunGraphicsEnvironment.java
+--- openjdk.orig/jdk/src/share/classes/sun/java2d/SunGraphicsEnvironment.java	Thu Aug 28 11:27:14 2008 -0700
++++ openjdk/jdk/src/share/classes/sun/java2d/SunGraphicsEnvironment.java	Fri Sep 12 15:01:45 2008 -0700
+@@ -1272,6 +1272,13 @@
+         displayChanger.notifyPaletteChanged();
+     }
+ 
++    /**
++     * Returns true when the display is local, false for remote displays.
++     *
++     * @return true when the display is local, false for remote displays
++     */
++    public abstract boolean isDisplayLocal();
++
+     /*
+      * ----DISPLAY CHANGE SUPPORT----
+      */
+diff -r cd88b4ad7f25 -r b8f91ea2fb33 src/share/classes/sun/swing/SwingUtilities2.java
+--- openjdk.orig/jdk/src/share/classes/sun/swing/SwingUtilities2.java	Thu Aug 28 11:27:14 2008 -0700
++++ openjdk/jdk/src/share/classes/sun/swing/SwingUtilities2.java	Fri Sep 12 15:01:45 2008 -0700
+@@ -55,6 +55,7 @@
+ import java.util.*;
+ import sun.font.FontDesignMetrics;
+ import sun.font.FontManager;
++import sun.java2d.SunGraphicsEnvironment;
+ 
+ import java.util.concurrent.Callable;
+ import java.util.concurrent.Future;
+@@ -1482,22 +1483,14 @@
+      * appear capable of performing gamma correction needed for LCD text.
+      */
+     public static boolean isLocalDisplay() {
+-        try {
+-            // On Windows just return true. Permission to read os.name
+-            // is granted to all code but wrapped in try to be safe.
+-            if (OSInfo.getOSType() == OSInfo.OSType.WINDOWS) {
+-                return true;
+-            }
+-            // Else probably Solaris or Linux in which case may be remote X11
+-            Class x11Class = Class.forName("sun.awt.X11GraphicsEnvironment");
+-            Method isDisplayLocalMethod = x11Class.getMethod(
+-                      "isDisplayLocal", new Class[0]);
+-            return (Boolean)isDisplayLocalMethod.invoke(null, (Object[])null);
+-        } catch (Throwable t) {
++        boolean isLocal;
++        GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
++        if (ge instanceof SunGraphicsEnvironment) {
++            isLocal = ((SunGraphicsEnvironment) ge).isDisplayLocal();
++        } else {
++            isLocal = true;
+         }
+-        // If we get here we're most likely being run on some other O/S
+-        // or we didn't properly detect Windows.
+-        return true;
++        return isLocal;
+     }
+ 
+     /**
+diff -r cd88b4ad7f25 -r b8f91ea2fb33 src/solaris/classes/sun/awt/X11GraphicsEnvironment.java
+--- openjdk.orig/jdk/src/solaris/classes/sun/awt/X11GraphicsEnvironment.java	Thu Aug 28 11:27:14 2008 -0700
++++ openjdk/jdk/src/solaris/classes/sun/awt/X11GraphicsEnvironment.java	Fri Sep 12 15:01:45 2008 -0700
+@@ -209,7 +209,7 @@
+     private static native int checkShmExt();
+ 
+     private static  native String getDisplayString();
+-    private static Boolean isDisplayLocal;
++    private Boolean isDisplayLocal;
+ 
+     /**
+      * This should only be called from the static initializer, so no need for
+@@ -234,7 +234,8 @@
+         return getScreenDevices()[getDefaultScreenNum()];
+     }
+ 
+-    public static boolean isDisplayLocal() {
++    @Override
++    public boolean isDisplayLocal() {
+         if (isDisplayLocal == null) {
+             SunToolkit.awtLock();
+             try {
+diff -r cd88b4ad7f25 -r b8f91ea2fb33 src/solaris/native/sun/awt/fontpath.c
+--- openjdk.orig/jdk/src/solaris/native/sun/awt/fontpath.c	Thu Aug 28 11:27:14 2008 -0700
++++ openjdk/jdk/src/solaris/native/sun/awt/fontpath.c	Fri Sep 12 15:01:45 2008 -0700
+@@ -156,7 +156,7 @@
+ 
+     isLocal = JNU_CallStaticMethodByName(env, NULL,
+                                          "sun/awt/X11GraphicsEnvironment",
+-                                         "isDisplayLocal",
++                                         "_isDisplayLocal",
+                                          "()Z").z;
+     isLocalSet = True;
+     return isLocal;
+diff -r cd88b4ad7f25 -r b8f91ea2fb33 src/windows/classes/sun/awt/Win32GraphicsEnvironment.java
+--- openjdk.orig/jdk/src/windows/classes/sun/awt/Win32GraphicsEnvironment.java	Thu Aug 28 11:27:14 2008 -0700
++++ openjdk/jdk/src/windows/classes/sun/awt/Win32GraphicsEnvironment.java	Fri Sep 12 15:01:45 2008 -0700
+@@ -393,4 +393,9 @@
+     private static void dwmCompositionChanged(boolean enabled) {
+         isDWMCompositionEnabled = enabled;
+     }
++
++    @Override
++    public boolean isDisplayLocal() {
++        return true;
++    }
+ }
+exporting patch:
+<fdopen>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/openjdk/6959123-libpng_14.patch	Wed May 18 15:46:37 2011 +0100
@@ -0,0 +1,21 @@
+# HG changeset patch
+# User andrew
+# Date 1276015967 -3600
+# Node ID 4d55419ce99e749da5037fa4d8247117f1a5cc2e
+# Parent  be6f14f83ea7cfbb4b9d167d853b1fda420bb2cf
+6959123: Remove use of obsolete png_check_sig function in splashscreen_png.c
+Summary: Avoid use of deprecated libpng macro (removed in some 1.4.x releases)
+Reviewed-by: prr
+
+diff --git a/src/share/native/sun/awt/splashscreen/splashscreen_png.c b/src/share/native/sun/awt/splashscreen/splashscreen_png.c
+--- openjdk/jdk/src/share/native/sun/awt/splashscreen/splashscreen_png.c
++++ openjdk/jdk/src/share/native/sun/awt/splashscreen/splashscreen_png.c
+@@ -182,7 +182,7 @@
+     int success = 0;
+ 
+     stream->read(stream, sig, SIG_BYTES);
+-    if (!png_check_sig(sig, SIG_BYTES)) {
++    if (png_sig_cmp(sig, 0, SIG_BYTES)) {
+         goto done;
+     }
+     success = SplashDecodePng(splash, my_png_read_stream, stream);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/openjdk/6986968-crash_on_xim_restart.patch	Wed May 18 15:46:37 2011 +0100
@@ -0,0 +1,23 @@
+# HG changeset patch
+# User omajid
+# Date 1285601403 14400
+# Node ID bbadb9484f537ce1e6ecf6e0d1f130235367c7e4
+# Parent  278c8daa30750577cadb47f7c6c827d2dfb7d0bd
+6986968: Crash on XIM server restart
+Summary: Free XIM data structures on DestroyXIMCallback
+Reviewed-by: naoto
+
+diff -r 278c8daa3075 -r bbadb9484f53 src/solaris/native/sun/awt/awt_InputMethod.c
+--- openjdk/jdk/src/solaris/native/sun/awt/awt_InputMethod.c	Mon Sep 27 13:38:49 2010 +0400
++++ openjdk/jdk/src/solaris/native/sun/awt/awt_InputMethod.c	Mon Sep 27 11:30:03 2010 -0400
+@@ -1473,6 +1473,10 @@
+ static void DestroyXIMCallback(XIM im, XPointer client_data, XPointer call_data) {
+     /* mark that XIM server was destroyed */
+     X11im = NULL;
++    JNIEnv* env = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2);
++    /* free the old pX11IMData and set it to null. this also avoids crashing
++     * the jvm if the XIM server reappears */
++    X11InputMethodData *pX11IMData = getX11InputMethodData(env, currentX11InputMethodInstance);
+ }
+ 
+ /*
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/openjdk/7018387-xrender_gc_leak.patch	Wed May 18 15:46:37 2011 +0100
@@ -0,0 +1,21 @@
+# HG changeset patch
+# User ceisserer
+# Date 1297290844 28800
+# Node ID 37d20456c54c11402b4c62c6f4d7a50b563c1308
+# Parent  d42ce0b309ae19742cd509dfbadba37d868b592f
+7018387: Xrender pipeline may leak GC's
+Reviewed-by: prr
+
+diff -r d42ce0b309ae -r 37d20456c54c src/solaris/classes/sun/java2d/xr/XRSurfaceData.java
+--- openjdk/jdk/src/solaris/classes/sun/java2d/xr/XRSurfaceData.java	Wed Feb 09 22:24:42 2011 +0300
++++ openjdk/jdk/src/solaris/classes/sun/java2d/xr/XRSurfaceData.java	Wed Feb 09 14:34:04 2011 -0800
+@@ -479,8 +479,7 @@
+         if (xrpipe == null) {
+             try {
+                 SunToolkit.awtLock();
+-                xgc = renderQueue.createGC(xid); // TODO: GC leak? where to
+-                // clean up?
++                xgc = XCreateGC(getNativeOps());
+ 
+                 xrpipe = new XRRenderer(maskBuffer.getMaskBuffer());
+                 xrtxpipe = new PixelToShapeConverter(xrpipe);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/openjdk/7019808-stack_noexec.patch	Wed May 18 15:46:37 2011 +0100
@@ -0,0 +1,23 @@
+# HG changeset patch
+# User dsamersoff
+# Date 1304097180 -14400
+# Node ID dddc5753c53a063c94c9949c623babe4f946c7e6
+# Parent  0cddebc420d8b0fff85f4e0071d531e966372b80
+7019808: build fails on Fedora 14: SELinux run-time check: execution of stack in libjvm.so
+Summary: executable flag is set in the elf header of libjvm.so during build, instruct ld to don't do it.
+Reviewed-by: acorn, phh
+
+diff -r 0cddebc420d8 -r dddc5753c53a make/linux/makefiles/vm.make
+--- openjdk/hotspot/make/linux/makefiles/vm.make	Thu Apr 28 08:24:46 2011 -0700
++++ openjdk/hotspot/make/linux/makefiles/vm.make	Fri Apr 29 21:13:00 2011 +0400
+@@ -102,6 +102,10 @@
+ CFLAGS += $(EXTRA_CFLAGS)
+ LFLAGS += $(EXTRA_CFLAGS)
+ 
++# Don't set excutable bit on stack segment
++# the same could be done by separate execstack command
++LFLAGS += -Xlinker -z -Xlinker noexecstack
++
+ LIBS += -lm -ldl -lpthread
+ 
+ # By default, link the *.o into the library, not the executable.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/openjdk/7021314-no_javaws_man_page.patch	Wed May 18 15:46:37 2011 +0100
@@ -0,0 +1,24 @@
+# HG changeset patch
+# User andrew
+# Date 1298481016 0
+# Node ID 5e09deee19671a6d10c7cb24ba789b5bbf6636b8
+# Parent  9b2631288894758318b59caac3b1f079fa36e98a
+7021314: Build should not install javaws man page
+Summary: Only install javaws.1 when not building OpenJDK
+Reviewed-by: alanb, ohair
+
+diff -r 9b2631288894 -r 5e09deee1967 make/common/Release.gmk
+--- openjdk/jdk/make/common/Release.gmk	Wed Feb 16 14:33:48 2011 -0800
++++ openjdk/jdk/make/common/Release.gmk	Wed Feb 23 17:10:16 2011 +0000
+@@ -124,9 +124,11 @@
+ 	tnameserv.1     \
+ 	unpack200.1
+ 
++ifndef OPENJDK
+ ifeq ($(ARCH_DATA_MODEL),32)
+   JRE_MAN_PAGES += javaws.1
+ endif
++endif
+ 
+ JDK_MAN_PAGES =            \
+ 	$(JRE_MAN_PAGES)   \
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/openjdk/7029905-demo_applet_html_files.patch	Wed May 18 15:46:37 2011 +0100
@@ -0,0 +1,56 @@
+# HG changeset patch
+# User ohair
+# Date 1301955066 25200
+# Node ID 9d1f5ad258f89cde283c7c468bfd4d04f91f9c29
+# Parent  aa13e7702cd9d8aca9aa38f1227f966990866944
+7029905: demo applets missing some html files
+Reviewed-by: omajid, mchung, igor
+
+diff -r aa13e7702cd9 -r 9d1f5ad258f8 make/mkdemo/jfc/Font2DTest/Makefile
+--- openjdk/jdk/make/mkdemo/jfc/Font2DTest/Makefile	Tue Mar 29 20:19:55 2011 -0700
++++ openjdk/jdk/make/mkdemo/jfc/Font2DTest/Makefile	Mon Apr 04 15:11:06 2011 -0700
+@@ -33,7 +33,7 @@
+ include $(BUILDDIR)/common/Defs.gmk
+ 
+ DEMO_ROOT       = $(SHARE_SRC)/demo/jfc/$(DEMONAME)
+-DEMO_TOPFILES   = ./README.txt
++DEMO_TOPFILES   = ./README.txt ./$(DEMONAME).html
+ DEMO_MAINCLASS  = $(DEMONAME)
+ DEMO_DESTDIR    = $(DEMODIR)/jfc/$(DEMONAME)
+ 
+diff -r aa13e7702cd9 -r 9d1f5ad258f8 make/mkdemo/jfc/Java2D/Makefile
+--- openjdk/jdk/make/mkdemo/jfc/Java2D/Makefile	Tue Mar 29 20:19:55 2011 -0700
++++ openjdk/jdk/make/mkdemo/jfc/Java2D/Makefile	Mon Apr 04 15:11:06 2011 -0700
+@@ -33,7 +33,7 @@
+ include $(BUILDDIR)/common/Defs.gmk
+ 
+ DEMO_ROOT       = $(CLOSED_SRC)/share/demo/jfc/Java2D
+-DEMO_TOPFILES   = ./Java2Demo.html ./README.txt
++DEMO_TOPFILES   = ./README.txt ./$(DEMONAME).html
+ DEMO_MAINCLASS  = java2d.Java2Demo
+ DEMO_DESTDIR    = $(DEMODIR)/jfc/Java2D
+ 
+diff -r aa13e7702cd9 -r 9d1f5ad258f8 make/mkdemo/jfc/SwingApplet/Makefile
+--- openjdk/jdk/make/mkdemo/jfc/SwingApplet/Makefile	Tue Mar 29 20:19:55 2011 -0700
++++ openjdk/jdk/make/mkdemo/jfc/SwingApplet/Makefile	Mon Apr 04 15:11:06 2011 -0700
+@@ -33,7 +33,7 @@
+ include $(BUILDDIR)/common/Defs.gmk
+ 
+ DEMO_ROOT       = $(SHARE_SRC)/demo/jfc/$(DEMONAME)
+-DEMO_TOPFILES   = ./README.txt
++DEMO_TOPFILES   = ./README.txt ./$(DEMONAME).html
+ DEMO_MAINCLASS  = $(DEMONAME)
+ DEMO_DESTDIR    = $(DEMODIR)/jfc/$(DEMONAME)
+ 
+diff -r aa13e7702cd9 -r 9d1f5ad258f8 make/mkdemo/jfc/SwingSet2/Makefile
+--- openjdk/jdk/make/mkdemo/jfc/SwingSet2/Makefile	Tue Mar 29 20:19:55 2011 -0700
++++ openjdk/jdk/make/mkdemo/jfc/SwingSet2/Makefile	Mon Apr 04 15:11:06 2011 -0700
+@@ -33,7 +33,7 @@
+ include $(BUILDDIR)/common/Defs.gmk
+ 
+ DEMO_ROOT       = $(CLOSED_SRC)/share/demo/jfc/$(DEMONAME)
+-DEMO_TOPFILES   = ./README.txt
++DEMO_TOPFILES   = ./README.txt ./$(DEMONAME).html
+ DEMO_MAINCLASS  = $(DEMONAME)
+ DEMO_MANIFEST_ATTR = SplashScreen-Image: resources/images/splash.png
+ DEMO_DESTDIR    = $(DEMODIR)/jfc/$(DEMONAME)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/openjdk/7031385-gcc-register-allocation-fix.patch	Wed May 18 15:46:37 2011 +0100
@@ -0,0 +1,21 @@
+diff -ur openjdk.orig/hotspot/src/os_cpu/linux_x86/vm/orderAccess_linux_x86.inline.hpp openjdk/hotspot/src/os_cpu/linux_x86/vm/orderAccess_linux_x86.inline.hpp
+--- openjdk.orig/hotspot/src/os_cpu/linux_x86/vm/orderAccess_linux_x86.inline.hpp	2011-03-31 13:05:19.924400634 -0400
++++ openjdk/hotspot/src/os_cpu/linux_x86/vm/orderAccess_linux_x86.inline.hpp	2011-03-31 13:06:00.617400605 -0400
+@@ -93,7 +93,7 @@
+ 
+ inline void     OrderAccess::store_fence(jbyte*  p, jbyte  v) {
+   __asm__ volatile (  "xchgb (%2),%0"
+-                    : "=r" (v)
++                    : "=q" (v)
+                     : "0" (v), "r" (p)
+                     : "memory");
+ }
+@@ -155,7 +155,7 @@
+ // Must duplicate definitions instead of calling store_fence because we don't want to cast away volatile.
+ inline void     OrderAccess::release_store_fence(volatile jbyte*  p, jbyte  v) {
+   __asm__ volatile (  "xchgb (%2),%0"
+-                    : "=r" (v)
++                    : "=q" (v)
+                     : "0" (v), "r" (p)
+                     : "memory");
+ }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/openjdk/7034464-hugepage.patch	Wed May 18 15:46:37 2011 +0100
@@ -0,0 +1,458 @@
+# HG changeset patch
+# User iveresov
+# Date 1303344724 25200
+# Node ID 139667d9836ae218ab06a74d5813a5a700a076c9
+# Parent  49a67202bc671d23d719c9e14752d80295a9e8f6
+7034464: Support transparent large pages on Linux
+Summary: Support transparent huge pages on Linux available since 2.6.38
+Reviewed-by: iveresov, ysr
+Contributed-by: aph@redhat.com
+diff -u -r openjdk.patched/hotspot/src/os/linux/vm/globals_linux.hpp openjdk/hotspot/src/os/linux/vm/globals_linux.hpp
+--- openjdk.patched/hotspot/src/os/linux/vm/globals_linux.hpp	2011-03-16 02:30:16.000000000 +0000
++++ openjdk/hotspot/src/os/linux/vm/globals_linux.hpp	2011-05-04 11:57:15.083470027 +0100
+@@ -29,13 +29,19 @@
+ // Defines Linux specific flags. They are not available on other platforms.
+ //
+ #define RUNTIME_OS_FLAGS(develop, develop_pd, product, product_pd, diagnostic, notproduct) \
+-  product(bool, UseOprofile, false,                                 \
+-        "enable support for Oprofile profiler")                     \
+-                                                                    \
+-  product(bool, UseLinuxPosixThreadCPUClocks, true,                 \
+-          "enable fast Linux Posix clocks where available")
+-// NB: The default value of UseLinuxPosixThreadCPUClocks may be
+-// overridden in Arguments::parse_each_vm_init_arg.
++  product(bool, UseOprofile, false,                                     \
++        "enable support for Oprofile profiler")                         \
++                                                                        \
++  product(bool, UseLinuxPosixThreadCPUClocks, true,                     \
++          "enable fast Linux Posix clocks where available")             \
++/*  NB: The default value of UseLinuxPosixThreadCPUClocks may be        \
++    overridden in Arguments::parse_each_vm_init_arg.  */                \
++                                                                        \
++  product(bool, UseHugeTLBFS, false,                                    \
++          "Use MAP_HUGETLB for large pages")                            \
++                                                                        \
++  product(bool, UseSHM, false,                                          \
++          "Use SYSV shared memory for large pages")
+ 
+ //
+ // Defines Linux-specific default values. The flags are available on all
+diff -u -r openjdk.patched/hotspot/src/os/linux/vm/os_linux.cpp openjdk/hotspot/src/os/linux/vm/os_linux.cpp
+--- openjdk.patched/hotspot/src/os/linux/vm/os_linux.cpp	2011-05-03 14:32:54.285722656 +0100
++++ openjdk/hotspot/src/os/linux/vm/os_linux.cpp	2011-05-09 14:31:51.358502774 +0100
+@@ -2495,16 +2495,40 @@
+   return res != (uintptr_t) MAP_FAILED;
+ }
+ 
++// Define MAP_HUGETLB here so we can build HotSpot on old systems.
++#ifndef MAP_HUGETLB
++#define MAP_HUGETLB 0x40000
++#endif
++
++// Define MADV_HUGEPAGE here so we can build HotSpot on old systems.
++#ifndef MADV_HUGEPAGE
++#define MADV_HUGEPAGE 14
++#endif
++
+ bool os::commit_memory(char* addr, size_t size, size_t alignment_hint,
+                        bool exec) {
++  if (UseHugeTLBFS && alignment_hint > (size_t)vm_page_size()) {
++    int prot = exec ? PROT_READ|PROT_WRITE|PROT_EXEC : PROT_READ|PROT_WRITE;
++    uintptr_t res =
++      (uintptr_t) ::mmap(addr, size, prot,
++                         MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS|MAP_HUGETLB,
++                         -1, 0);
++    return res != (uintptr_t) MAP_FAILED;
++  }
++
+   return commit_memory(addr, size, exec);
+ }
+ 
+-void os::realign_memory(char *addr, size_t bytes, size_t alignment_hint) { }
++void os::realign_memory(char *addr, size_t bytes, size_t alignment_hint) {
++  if (UseHugeTLBFS && alignment_hint > (size_t)vm_page_size()) {
++    // We don't check the return value: madvise(MADV_HUGEPAGE) may not
++    // be supported or the memory may already be backed by huge pages.
++    ::madvise(addr, bytes, MADV_HUGEPAGE);
++  }
++}
+ 
+ void os::free_memory(char *addr, size_t bytes) {
+-  ::mmap(addr, bytes, PROT_READ | PROT_WRITE,
+-         MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0);
++  ::madvise(addr, bytes, MADV_DONTNEED);
+ }
+ 
+ void os::numa_make_global(char *addr, size_t bytes) {
+@@ -2870,7 +2894,16 @@
+ static size_t _large_page_size = 0;
+ 
+ bool os::large_page_init() {
+-  if (!UseLargePages) return false;
++  if (!UseLargePages) {
++    UseHugeTLBFS = false;
++    UseSHM = false;
++    return false;
++  }
++
++  if (FLAG_IS_DEFAULT(UseHugeTLBFS) && FLAG_IS_DEFAULT(UseSHM)) {
++    // Our user has not expressed a preference, so we'll try both.
++    UseHugeTLBFS = UseSHM = true;
++  }
+ 
+   if (LargePageSizeInBytes) {
+     _large_page_size = LargePageSizeInBytes;
+@@ -2915,6 +2948,9 @@
+     }
+   }
+ 
++  // print a warning if any large page related flag is specified on command line
++  bool warn_on_failure = !FLAG_IS_DEFAULT(UseHugeTLBFS);
++
+   const size_t default_page_size = (size_t)Linux::page_size();
+   if (_large_page_size > default_page_size) {
+     _page_sizes[0] = _large_page_size;
+@@ -2922,6 +2958,14 @@
+     _page_sizes[2] = 0;
+   }
+ 
++  UseHugeTLBFS = UseHugeTLBFS &&
++                 Linux::hugetlbfs_sanity_check(warn_on_failure, _large_page_size);
++
++  if (UseHugeTLBFS)
++    UseSHM = false;
++
++  UseLargePages = UseHugeTLBFS || UseSHM;
++
+   // Large page support is available on 2.6 or newer kernel, some vendors
+   // (e.g. Redhat) have backported it to their 2.4 based distributions.
+   // We optimistically assume the support is available. If later it turns out
+@@ -2936,7 +2980,7 @@
+ char* os::reserve_memory_special(size_t bytes, char* req_addr, bool exec) {
+   // "exec" is passed in but not used.  Creating the shared image for
+   // the code cache doesn't have an SHM_X executable permission to check.
+-  assert(UseLargePages, "only for large pages");
++  assert(UseLargePages && UseSHM, "only for SHM large pages");
+ 
+   key_t key = IPC_PRIVATE;
+   char *addr;
+@@ -3003,19 +3047,19 @@
+   return _large_page_size;
+ }
+ 
+-// Linux does not support anonymous mmap with large page memory. The only way
+-// to reserve large page memory without file backing is through SysV shared
+-// memory API. The entire memory region is committed and pinned upfront.
+-// Hopefully this will change in the future...
++// HugeTLBFS allows application to commit large page memory on demand;
++// with SysV SHM the entire memory region must be allocated as shared
++// memory.
+ bool os::can_commit_large_page_memory() {
+-  return false;
++  return UseHugeTLBFS;
+ }
+ 
+ bool os::can_execute_large_page_memory() {
+-  return false;
++  return UseHugeTLBFS;
+ }
+ 
+ // Reserve memory at an arbitrary address, only if that area is
++// Reserve memory at an arbitrary address, only if that area is
+ // available (and not reserved for something else).
+ 
+ char* os::attempt_reserve_memory_at(size_t bytes, char* requested_addr) {
+@@ -5009,6 +5053,43 @@
+ // JSR166
+ // -------------------------------------------------------
+ 
++bool os::Linux::hugetlbfs_sanity_check(bool warn, size_t page_size) {
++  bool result = false;
++  void *p = mmap (NULL, page_size, PROT_READ|PROT_WRITE,
++                  MAP_ANONYMOUS|MAP_PRIVATE|MAP_HUGETLB,
++                  -1, 0);
++
++  if (p != (void *) -1) {
++    // We don't know if this really is a huge page or not.
++    FILE *fp = fopen("/proc/self/maps", "r");
++    if (fp) {
++      while (!feof(fp)) {
++        char chars[257];
++        long x = 0;
++        if (fgets(chars, sizeof(chars), fp)) {
++          if (sscanf(chars, "%lx-%*lx", &x) == 1
++              && x == (long)p) {
++            if (strstr (chars, "hugepage")) {
++              result = true;
++              break;
++            }
++          }
++        }
++      }
++      fclose(fp);
++    }
++    munmap (p, page_size);
++    if (result)
++      return true;
++  }
++
++  if (warn) {
++    warning("HugeTLBFS is not supported by the operating system.");
++  }
++
++  return result;
++}
++
+ /*
+  * The solaris and linux implementations of park/unpark are fairly
+  * conservative for now, but can be improved. They currently use a
+diff -u -r openjdk.patched/hotspot/src/os/linux/vm/os_linux.cpp.orig openjdk/hotspot/src/os/linux/vm/os_linux.cpp.orig
+--- openjdk.patched/hotspot/src/os/linux/vm/os_linux.cpp.orig	2011-05-03 14:32:53.972649764 +0100
++++ openjdk/hotspot/src/os/linux/vm/os_linux.cpp.orig	2011-05-04 11:57:15.085470494 +0100
+@@ -117,6 +117,10 @@
+ # include <inttypes.h>
+ # include <sys/ioctl.h>
+ 
++#if __x86_64__
++#include <asm/vsyscall.h>
++#endif
++
+ #define MAX_PATH    (2 * K)
+ 
+ // for timer info max values which include all bits
+@@ -2491,16 +2495,40 @@
+   return res != (uintptr_t) MAP_FAILED;
+ }
+ 
++// Define MAP_HUGETLB here so we can build HotSpot on old systems.
++#ifndef MAP_HUGETLB
++#define MAP_HUGETLB 0x40000
++#endif
++
++// Define MADV_HUGEPAGE here so we can build HotSpot on old systems.
++#ifndef MADV_HUGEPAGE
++#define MADV_HUGEPAGE 14
++#endif
++
+ bool os::commit_memory(char* addr, size_t size, size_t alignment_hint,
+                        bool exec) {
++  if (UseHugeTLBFS && alignment_hint > (size_t)vm_page_size()) {
++    int prot = exec ? PROT_READ|PROT_WRITE|PROT_EXEC : PROT_READ|PROT_WRITE;
++    uintptr_t res =
++      (uintptr_t) ::mmap(addr, size, prot,
++                         MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS|MAP_HUGETLB,
++                         -1, 0);
++    return res != (uintptr_t) MAP_FAILED;
++  }
++
+   return commit_memory(addr, size, exec);
+ }
+ 
+-void os::realign_memory(char *addr, size_t bytes, size_t alignment_hint) { }
++void os::realign_memory(char *addr, size_t bytes, size_t alignment_hint) {
++  if (UseHugeTLBFS && alignment_hint > (size_t)vm_page_size()) {
++    // We don't check the return value: madvise(MADV_HUGEPAGE) may not
++    // be supported or the memory may already be backed by huge pages.
++    ::madvise(addr, bytes, MADV_HUGEPAGE);
++  }
++}
+ 
+ void os::free_memory(char *addr, size_t bytes) {
+-  ::mmap(addr, bytes, PROT_READ | PROT_WRITE,
+-         MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0);
++  ::madvise(addr, bytes, MADV_DONTNEED);
+ }
+ 
+ void os::numa_make_global(char *addr, size_t bytes) {
+@@ -2544,6 +2572,21 @@
+   return end;
+ }
+ 
++static int sched_getcpu_syscall(void) {
++  unsigned int cpu;
++  int retval = -1;
++
++#if __x86_64__
++  typedef long (*vgetcpu_t)(unsigned int *cpu, unsigned int *node, unsigned long *tcache);
++  vgetcpu_t vgetcpu = (vgetcpu_t)VSYSCALL_ADDR(__NR_vgetcpu);
++  retval = vgetcpu(&cpu, NULL, NULL);
++#elif __i386__
++  retval = syscall(SYS_getcpu, &cpu, NULL, NULL);
++#endif
++
++  return (retval == -1) ? retval : cpu;
++}
++
+ extern "C" void numa_warn(int number, char *where, ...) { }
+ extern "C" void numa_error(char *where) { }
+ 
+@@ -2565,6 +2608,10 @@
+   set_sched_getcpu(CAST_TO_FN_PTR(sched_getcpu_func_t,
+                                   dlsym(RTLD_DEFAULT, "sched_getcpu")));
+ 
++  // If it's not, try a direct syscall.
++  if (sched_getcpu() == -1)
++    set_sched_getcpu(CAST_TO_FN_PTR(sched_getcpu_func_t, (void*)&sched_getcpu_syscall));
++
+   if (sched_getcpu() != -1) { // Does it work?
+     void *handle = dlopen("libnuma.so.1", RTLD_LAZY);
+     if (handle != NULL) {
+@@ -2847,7 +2894,16 @@
+ static size_t _large_page_size = 0;
+ 
+ bool os::large_page_init() {
+-  if (!UseLargePages) return false;
++  if (!UseLargePages) {
++    UseHugeTLBFS = false;
++    UseSHM = false;
++    return false;
++  }
++
++  if (FLAG_IS_DEFAULT(UseHugeTLBFS) && FLAG_IS_DEFAULT(UseSHM)) {
++    // Our user has not expressed a preference, so we'll try both.
++    UseHugeTLBFS = UseSHM = true;
++  }
+ 
+   if (LargePageSizeInBytes) {
+     _large_page_size = LargePageSizeInBytes;
+@@ -2892,6 +2948,9 @@
+     }
+   }
+ 
++  // print a warning if any large page related flag is specified on command line
++  bool warn_on_failure = !FLAG_IS_DEFAULT(UseHugeTLBFS);
++
+   const size_t default_page_size = (size_t)Linux::page_size();
+   if (_large_page_size > default_page_size) {
+     _page_sizes[0] = _large_page_size;
+@@ -2899,6 +2958,14 @@
+     _page_sizes[2] = 0;
+   }
+ 
++  UseHugeTLBFS = UseHugeTLBFS &&
++                 Linux::hugetlbfs_sanity_check(warn_on_failure, _large_page_size);
++
++  if (UseHugeTLBFS)
++    UseSHM = false;
++
++  UseLargePages = UseHugeTLBFS || UseSHM;
++
+   // Large page support is available on 2.6 or newer kernel, some vendors
+   // (e.g. Redhat) have backported it to their 2.4 based distributions.
+   // We optimistically assume the support is available. If later it turns out
+@@ -2913,7 +2980,7 @@
+ char* os::reserve_memory_special(size_t bytes, char* req_addr, bool exec) {
+   // "exec" is passed in but not used.  Creating the shared image for
+   // the code cache doesn't have an SHM_X executable permission to check.
+-  assert(UseLargePages, "only for large pages");
++  assert(UseLargePages && UseSHM, "only for SHM large pages");
+ 
+   key_t key = IPC_PRIVATE;
+   char *addr;
+@@ -2980,19 +3047,19 @@
+   return _large_page_size;
+ }
+ 
+-// Linux does not support anonymous mmap with large page memory. The only way
+-// to reserve large page memory without file backing is through SysV shared
+-// memory API. The entire memory region is committed and pinned upfront.
+-// Hopefully this will change in the future...
++// HugeTLBFS allows application to commit large page memory on demand;
++// with SysV SHM the entire memory region must be allocated as shared
++// memory.
+ bool os::can_commit_large_page_memory() {
+-  return false;
++  return UseHugeTLBFS;
+ }
+ 
+ bool os::can_execute_large_page_memory() {
+-  return false;
++  return UseHugeTLBFS;
+ }
+ 
+ // Reserve memory at an arbitrary address, only if that area is
++// Reserve memory at an arbitrary address, only if that area is
+ // available (and not reserved for something else).
+ 
+ char* os::attempt_reserve_memory_at(size_t bytes, char* requested_addr) {
+@@ -4081,6 +4148,23 @@
+         UseNUMA = false;
+       }
+     }
++    // With SHM large pages we cannot uncommit a page, so there's not way
++    // we can make the adaptive lgrp chunk resizing work. If the user specified
++    // both UseNUMA and UseLargePages (or UseSHM) on the command line - warn and
++    // disable adaptive resizing.
++    if (UseNUMA && UseLargePages && UseSHM) {
++      if (!FLAG_IS_DEFAULT(UseNUMA)) {
++        if (FLAG_IS_DEFAULT(UseLargePages) && FLAG_IS_DEFAULT(UseSHM)) {
++          UseLargePages = false;
++        } else {
++          warning("UseNUMA is not fully compatible with SHM large pages, disabling adaptive resizing");
++          UseAdaptiveSizePolicy = false;
++          UseAdaptiveNUMAChunkSizing = false;
++        }
++      } else {
++        UseNUMA = false;
++      }
++    }
+     if (!UseNUMA && ForceNUMA) {
+       UseNUMA = true;
+     }
+@@ -4986,6 +5070,43 @@
+ // JSR166
+ // -------------------------------------------------------
+ 
++bool os::Linux::hugetlbfs_sanity_check(bool warn, size_t page_size) {
++  bool result = false;
++  void *p = mmap (NULL, page_size, PROT_READ|PROT_WRITE,
++                  MAP_ANONYMOUS|MAP_PRIVATE|MAP_HUGETLB,
++                  -1, 0);
++
++  if (p != (void *) -1) {
++    // We don't know if this really is a huge page or not.
++    FILE *fp = fopen("/proc/self/maps", "r");
++    if (fp) {
++      while (!feof(fp)) {
++        char chars[257];
++        long x = 0;
++        if (fgets(chars, sizeof(chars), fp)) {
++          if (sscanf(chars, "%lx-%*lx", &x) == 1
++              && x == (long)p) {
++            if (strstr (chars, "hugepage")) {
++              result = true;
++              break;
++            }
++          }
++<+        }
++      }
++      fclose(fp);
++    }
++    munmap (p, page_size);
++    if (result)
++      return true;
++  }
++
++  if (warn) {
++    warning("HugeTLBFS is not supported by the operating system.");
++  }
++
++  return result;
++}
++
+ /*
+  * The solaris and linux implementations of park/unpark are fairly
+  * conservative for now, but can be improved. They currently use a
+diff -u -r openjdk.patched/hotspot/src/os/linux/vm/os_linux.hpp openjdk/hotspot/src/os/linux/vm/os_linux.hpp
+--- openjdk.patched/hotspot/src/os/linux/vm/os_linux.hpp	2011-03-16 02:30:16.000000000 +0000
++++ openjdk/hotspot/src/os/linux/vm/os_linux.hpp	2011-05-04 11:57:15.088471194 +0100
+@@ -86,6 +86,9 @@
+ 
+   static void rebuild_cpu_to_node_map();
+   static GrowableArray<int>* cpu_to_node()    { return _cpu_to_node; }
++
++  static bool hugetlbfs_sanity_check(bool warn, size_t page_size);
++
+  public:
+   static void init_thread_fpu_state();
+   static int  get_fpu_control_word();
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/openjdk/7036220-shark_llvm_29_headers.patch	Wed May 18 15:46:37 2011 +0100
@@ -0,0 +1,44 @@
+# HG changeset patch
+# User twisti
+# Date 1302771192 25200
+# Node ID 1fcd6e9c3965f4bf23f6a8f4fbb77fdf74de37a7
+# Parent  3a808be061ffc10da5647e50cc28252d70f21883
+7036220: Shark fails to find LLVM 2.9 System headers during build
+Reviewed-by: gbenson, twisti
+Contributed-by: Xerxes Ranby <xerxes@zafena.se>
+
+diff -r 3a808be061ff -r 1fcd6e9c3965 src/share/vm/shark/llvmHeaders.hpp
+--- openjdk/hotspot/src/share/vm/shark/llvmHeaders.hpp	Wed Apr 13 14:33:03 2011 -0700
++++ openjdk/hotspot/src/share/vm/shark/llvmHeaders.hpp	Thu Apr 14 01:53:12 2011 -0700
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved.
+  * Copyright 2008, 2009, 2010 Red Hat, Inc.
+  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+  *
+@@ -46,7 +46,11 @@
+ #include <llvm/ModuleProvider.h>
+ #endif
+ #include <llvm/Support/IRBuilder.h>
++#if SHARK_LLVM_VERSION >= 29
++#include <llvm/Support/Threading.h>
++#else
+ #include <llvm/System/Threading.h>
++#endif
+ #include <llvm/Target/TargetSelect.h>
+ #include <llvm/Type.h>
+ #include <llvm/ExecutionEngine/JITMemoryManager.h>
+@@ -55,8 +59,12 @@
+ #include <llvm/ExecutionEngine/JIT.h>
+ #include <llvm/ADT/StringMap.h>
+ #include <llvm/Support/Debug.h>
++#if SHARK_LLVM_VERSION >= 29
++#include <llvm/Support/Host.h>
++#else
+ #include <llvm/System/Host.h>
+ #endif
++#endif
+ 
+ #include <map>
+ 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/openjdk/7036754-stroker-nan.patch	Wed May 18 15:46:37 2011 +0100
@@ -0,0 +1,490 @@
+# HG changeset patch
+# User dlila
+# Date 1303995319 14400
+# Node ID 24f474ad17038b0bef4686c79c8b8de25ab23723
+# Parent  a07c9e09b4caa5690209af460e8c9371b8384cb0
+7036754: NaNs in stroked quadratics.
+Summary: Check for them and remove them.
+Reviewed-by: flar
+
+diff -r a07c9e09b4ca -r 24f474ad1703 src/share/classes/sun/java2d/pisces/Stroker.java
+--- openjdk.orig/jdk/src/share/classes/sun/java2d/pisces/Stroker.java	Wed Apr 27 12:15:34 2011 +0400
++++ openjdk/jdk/src/share/classes/sun/java2d/pisces/Stroker.java	Thu Apr 28 08:55:19 2011 -0400
+@@ -27,6 +27,8 @@
+ 
+ import java.util.Arrays;
+ import java.util.Iterator;
++import static java.lang.Math.ulp;
++import static java.lang.Math.sqrt;
+ 
+ import sun.awt.geom.PathConsumer2D;
+ 
+@@ -130,7 +132,7 @@
+     private static void computeOffset(final float lx, final float ly,
+                                       final float w, final float[] m)
+     {
+-        final float len = (float)Math.sqrt(lx*lx + ly*ly);
++        final float len = (float) sqrt(lx*lx + ly*ly);
+         if (len == 0) {
+             m[0] = m[1] = 0;
+         } else {
+@@ -217,7 +219,7 @@
+             // this normal's length is at least 0.5 and at most sqrt(2)/2 (because
+             // we know the angle of the arc is > 90 degrees).
+             float nx = my - omy, ny = omx - mx;
+-            float nlen = (float)Math.sqrt(nx*nx + ny*ny);
++            float nlen = (float) sqrt(nx*nx + ny*ny);
+             float scale = lineWidth2/nlen;
+             float mmx = nx * scale, mmy = ny * scale;
+ 
+@@ -246,8 +248,8 @@
+         // define the bezier curve we're computing.
+         // It is computed using the constraints that P1-P0 and P3-P2 are parallel
+         // to the arc tangents at the endpoints, and that |P1-P0|=|P3-P2|.
+-        float cv = (float)((4.0 / 3.0) * Math.sqrt(0.5-cosext2) /
+-                           (1.0 + Math.sqrt(cosext2+0.5)));
++        float cv = (float) ((4.0 / 3.0) * sqrt(0.5-cosext2) /
++                            (1.0 + sqrt(cosext2+0.5)));
+         // if clockwise, we need to negate cv.
+         if (rev) { // rev is equivalent to isCW(omx, omy, mx, my)
+             cv = -cv;
+@@ -284,28 +286,20 @@
+                     false);
+     }
+ 
+-    // Return the intersection point of the lines (x0, y0) -> (x1, y1)
+-    // and (x0p, y0p) -> (x1p, y1p) in m[0] and m[1]
+-    private void computeMiter(final float x0, final float y0,
+-                              final float x1, final float y1,
+-                              final float x0p, final float y0p,
+-                              final float x1p, final float y1p,
+-                              final float[] m, int off)
++    // Put the intersection point of the lines (x0, y0) -> (x1, y1)
++    // and (x0p, y0p) -> (x1p, y1p) in m[off] and m[off+1].
++    // If the lines are parallel, it will put a non finite number in m.
++    private void computeIntersection(final float x0, final float y0,
++                                     final float x1, final float y1,
++                                     final float x0p, final float y0p,
++                                     final float x1p, final float y1p,
++                                     final float[] m, int off)
+     {
+         float x10 = x1 - x0;
+         float y10 = y1 - y0;
+         float x10p = x1p - x0p;
+         float y10p = y1p - y0p;
+ 
+-        // if this is 0, the lines are parallel. If they go in the
+-        // same direction, there is no intersection so m[off] and
+-        // m[off+1] will contain infinity, so no miter will be drawn.
+-        // If they go in the same direction that means that the start of the
+-        // current segment and the end of the previous segment have the same
+-        // tangent, in which case this method won't even be involved in
+-        // miter drawing because it won't be called by drawMiter (because
+-        // (mx == omx && my == omy) will be true, and drawMiter will return
+-        // immediately).
+         float den = x10*y10p - x10p*y10;
+         float t = x10p*(y0-y0p) - y10p*(x0-x0p);
+         t /= den;
+@@ -321,7 +315,8 @@
+     {
+         if ((mx == omx && my == omy) ||
+             (pdx == 0 && pdy == 0) ||
+-            (dx == 0 && dy == 0)) {
++            (dx == 0 && dy == 0))
++        {
+             return;
+         }
+ 
+@@ -332,12 +327,17 @@
+             my = -my;
+         }
+ 
+-        computeMiter((x0 - pdx) + omx, (y0 - pdy) + omy, x0 + omx, y0 + omy,
+-                     (dx + x0) + mx, (dy + y0) + my, x0 + mx, y0 + my,
+-                     miter, 0);
++        computeIntersection((x0 - pdx) + omx, (y0 - pdy) + omy, x0 + omx, y0 + omy,
++                            (dx + x0) + mx, (dy + y0) + my, x0 + mx, y0 + my,
++                            miter, 0);
+ 
+         float lenSq = (miter[0]-x0)*(miter[0]-x0) + (miter[1]-y0)*(miter[1]-y0);
+ 
++        // If the lines are parallel, lenSq will be either NaN or +inf
++        // (actually, I'm not sure if the latter is possible. The important
++        // thing is that -inf is not possible, because lenSq is a square).
++        // For both of those values, the comparison below will fail and
++        // no miter will be drawn, which is correct.
+         if (lenSq < miterLimitSq) {
+             emitLineTo(miter[0], miter[1], rev);
+         }
+@@ -566,8 +566,8 @@
+ 
+         // if p1 == p2 && p3 == p4: draw line from p1->p4, unless p1 == p4,
+         // in which case ignore if p1 == p2
+-        final boolean p1eqp2 = within(x1,y1,x2,y2, 6 * Math.ulp(y2));
+-        final boolean p3eqp4 = within(x3,y3,x4,y4, 6 * Math.ulp(y4));
++        final boolean p1eqp2 = within(x1,y1,x2,y2, 6 * ulp(y2));
++        final boolean p3eqp4 = within(x3,y3,x4,y4, 6 * ulp(y4));
+         if (p1eqp2 && p3eqp4) {
+             getLineOffsets(x1, y1, x4, y4, leftOff, rightOff);
+             return 4;
+@@ -583,7 +583,7 @@
+         float dotsq = (dx1 * dx4 + dy1 * dy4);
+         dotsq = dotsq * dotsq;
+         float l1sq = dx1 * dx1 + dy1 * dy1, l4sq = dx4 * dx4 + dy4 * dy4;
+-        if (Helpers.within(dotsq, l1sq * l4sq, 4 * Math.ulp(dotsq))) {
++        if (Helpers.within(dotsq, l1sq * l4sq, 4 * ulp(dotsq))) {
+             getLineOffsets(x1, y1, x4, y4, leftOff, rightOff);
+             return 4;
+         }
+@@ -693,8 +693,6 @@
+         return 8;
+     }
+ 
+-    // compute offset curves using bezier spline through t=0.5 (i.e.
+-    // ComputedCurve(0.5) == IdealParallelCurve(0.5))
+     // return the kind of curve in the right and left arrays.
+     private int computeOffsetQuad(float[] pts, final int off,
+                                   float[] leftOff, float[] rightOff)
+@@ -703,56 +701,67 @@
+         final float x2 = pts[off + 2], y2 = pts[off + 3];
+         final float x3 = pts[off + 4], y3 = pts[off + 5];
+ 
+-        float dx3 = x3 - x2;
+-        float dy3 = y3 - y2;
+-        float dx1 = x2 - x1;
+-        float dy1 = y2 - y1;
++        final float dx3 = x3 - x2;
++        final float dy3 = y3 - y2;
++        final float dx1 = x2 - x1;
++        final float dy1 = y2 - y1;
+ 
+-        // if p1=p2 or p3=p4 it means that the derivative at the endpoint
+-        // vanishes, which creates problems with computeOffset. Usually
+-        // this happens when this stroker object is trying to winden
+-        // a curve with a cusp. What happens is that curveTo splits
+-        // the input curve at the cusp, and passes it to this function.
+-        // because of inaccuracies in the splitting, we consider points
+-        // equal if they're very close to each other.
++        // this computes the offsets at t = 0, 1
++        computeOffset(dx1, dy1, lineWidth2, offset[0]);
++        computeOffset(dx3, dy3, lineWidth2, offset[1]);
+ 
+-        // if p1 == p2 && p3 == p4: draw line from p1->p4, unless p1 == p4,
+-        // in which case ignore.
+-        final boolean p1eqp2 = within(x1,y1,x2,y2, 6 * Math.ulp(y2));
+-        final boolean p2eqp3 = within(x2,y2,x3,y3, 6 * Math.ulp(y3));
+-        if (p1eqp2 || p2eqp3) {
+-            getLineOffsets(x1, y1, x3, y3, leftOff, rightOff);
+-            return 4;
++        leftOff[0]  = x1 + offset[0][0];  leftOff[1] = y1 + offset[0][1];
++        leftOff[4]  = x3 + offset[1][0];  leftOff[5] = y3 + offset[1][1];
++        rightOff[0] = x1 - offset[0][0]; rightOff[1] = y1 - offset[0][1];
++        rightOff[4] = x3 - offset[1][0]; rightOff[5] = y3 - offset[1][1];
++
++        float x1p = leftOff[0]; // start
++        float y1p = leftOff[1]; // point
++        float x3p = leftOff[4]; // end
++        float y3p = leftOff[5]; // point
++
++        // Corner cases:
++        // 1. If the two control vectors are parallel, we'll end up with NaN's
++        //    in leftOff (and rightOff in the body of the if below), so we'll
++        //    do getLineOffsets, which is right.
++        // 2. If the first or second two points are equal, then (dx1,dy1)==(0,0)
++        //    or (dx3,dy3)==(0,0), so (x1p, y1p)==(x1p+dx1, y1p+dy1)
++        //    or (x3p, y3p)==(x3p-dx3, y3p-dy3), which means that
++        //    computeIntersection will put NaN's in leftOff and right off, and
++        //    we will do getLineOffsets, which is right.
++        computeIntersection(x1p, y1p, x1p+dx1, y1p+dy1, x3p, y3p, x3p-dx3, y3p-dy3, leftOff, 2);
++        float cx = leftOff[2];
++        float cy = leftOff[3];
++
++        if (!(isFinite(cx) && isFinite(cy))) {
++            // maybe the right path is not degenerate.
++            x1p = rightOff[0];
++            y1p = rightOff[1];
++            x3p = rightOff[4];
++            y3p = rightOff[5];
++            computeIntersection(x1p, y1p, x1p+dx1, y1p+dy1, x3p, y3p, x3p-dx3, y3p-dy3, rightOff, 2);
++            cx = rightOff[2];
++            cy = rightOff[3];
++            if (!(isFinite(cx) && isFinite(cy))) {
++                // both are degenerate. This curve is a line.
++                getLineOffsets(x1, y1, x3, y3, leftOff, rightOff);
++                return 4;
++            }
++            // {left,right}Off[0,1,4,5] are already set to the correct values.
++            leftOff[2] = 2*x2 - cx;
++            leftOff[3] = 2*y2 - cy;
++            return 6;
+         }
+ 
+-        // if p2-p1 and p4-p3 are parallel, that must mean this curve is a line
+-        float dotsq = (dx1 * dx3 + dy1 * dy3);
+-        dotsq = dotsq * dotsq;
+-        float l1sq = dx1 * dx1 + dy1 * dy1, l3sq = dx3 * dx3 + dy3 * dy3;
+-        if (Helpers.within(dotsq, l1sq * l3sq, 4 * Math.ulp(dotsq))) {
+-            getLineOffsets(x1, y1, x3, y3, leftOff, rightOff);
+-            return 4;
+-        }
++        // rightOff[2,3] = (x2,y2) - ((left_x2, left_y2) - (x2, y2))
++        // == 2*(x2, y2) - (left_x2, left_y2)
++        rightOff[2] = 2*x2 - cx;
++        rightOff[3] = 2*y2 - cy;
++        return 6;
++    }
+ 
+-        // this computes the offsets at t=0, 0.5, 1, using the property that
+-        // for any bezier curve the vectors p2-p1 and p4-p3 are parallel to
+-        // the (dx/dt, dy/dt) vectors at the endpoints.
+-        computeOffset(dx1, dy1, lineWidth2, offset[0]);
+-        computeOffset(dx3, dy3, lineWidth2, offset[1]);
+-        float x1p = x1 + offset[0][0]; // start
+-        float y1p = y1 + offset[0][1]; // point
+-        float x3p = x3 + offset[1][0]; // end
+-        float y3p = y3 + offset[1][1]; // point
+-
+-        computeMiter(x1p, y1p, x1p+dx1, y1p+dy1, x3p, y3p, x3p-dx3, y3p-dy3, leftOff, 2);
+-        leftOff[0] = x1p; leftOff[1] = y1p;
+-        leftOff[4] = x3p; leftOff[5] = y3p;
+-        x1p = x1 - offset[0][0]; y1p = y1 - offset[0][1];
+-        x3p = x3 - offset[1][0]; y3p = y3 - offset[1][1];
+-        computeMiter(x1p, y1p, x1p+dx1, y1p+dy1, x3p, y3p, x3p-dx3, y3p-dy3, rightOff, 2);
+-        rightOff[0] = x1p; rightOff[1] = y1p;
+-        rightOff[4] = x3p; rightOff[5] = y3p;
+-        return 6;
++    private static boolean isFinite(float x) {
++        return (Float.NEGATIVE_INFINITY < x && x < Float.POSITIVE_INFINITY);
+     }
+ 
+     // This is where the curve to be processed is put. We give it
+@@ -812,12 +821,12 @@
+         // if these vectors are too small, normalize them, to avoid future
+         // precision problems.
+         if (Math.abs(dxs) < 0.1f && Math.abs(dys) < 0.1f) {
+-            float len = (float)Math.sqrt(dxs*dxs + dys*dys);
++            float len = (float) sqrt(dxs*dxs + dys*dys);
+             dxs /= len;
+             dys /= len;
+         }
+         if (Math.abs(dxf) < 0.1f && Math.abs(dyf) < 0.1f) {
+-            float len = (float)Math.sqrt(dxf*dxf + dyf*dyf);
++            float len = (float) sqrt(dxf*dxf + dyf*dyf);
+             dxf /= len;
+             dyf /= len;
+         }
+@@ -834,7 +843,6 @@
+         while(it.hasNext()) {
+             int curCurveOff = it.next();
+ 
+-            kind = 0;
+             switch (type) {
+             case 8:
+                 kind = computeOffsetCubic(middle, curCurveOff, lp, rp);
+@@ -843,24 +851,22 @@
+                 kind = computeOffsetQuad(middle, curCurveOff, lp, rp);
+                 break;
+             }
+-            if (kind != 0) {
+-                emitLineTo(lp[0], lp[1]);
+-                switch(kind) {
+-                case 8:
+-                    emitCurveTo(lp[0], lp[1], lp[2], lp[3], lp[4], lp[5], lp[6], lp[7], false);
+-                    emitCurveTo(rp[0], rp[1], rp[2], rp[3], rp[4], rp[5], rp[6], rp[7], true);
+-                    break;
+-                case 6:
+-                    emitQuadTo(lp[0], lp[1], lp[2], lp[3], lp[4], lp[5], false);
+-                    emitQuadTo(rp[0], rp[1], rp[2], rp[3], rp[4], rp[5], true);
+-                    break;
+-                case 4:
+-                    emitLineTo(lp[2], lp[3]);
+-                    emitLineTo(rp[0], rp[1], true);
+-                    break;
+-                }
+-                emitLineTo(rp[kind - 2], rp[kind - 1], true);
++            emitLineTo(lp[0], lp[1]);
++            switch(kind) {
++            case 8:
++                emitCurveTo(lp[0], lp[1], lp[2], lp[3], lp[4], lp[5], lp[6], lp[7], false);
++                emitCurveTo(rp[0], rp[1], rp[2], rp[3], rp[4], rp[5], rp[6], rp[7], true);
++                break;
++            case 6:
++                emitQuadTo(lp[0], lp[1], lp[2], lp[3], lp[4], lp[5], false);
++                emitQuadTo(rp[0], rp[1], rp[2], rp[3], rp[4], rp[5], true);
++                break;
++            case 4:
++                emitLineTo(lp[2], lp[3]);
++                emitLineTo(rp[0], rp[1], true);
++                break;
+             }
++            emitLineTo(rp[kind - 2], rp[kind - 1], true);
+         }
+ 
+         this.cmx = (lp[kind - 2] - rp[kind - 2]) / 2;
+@@ -887,7 +893,7 @@
+             // we rotate it so that the first vector in the control polygon is
+             // parallel to the x-axis. This will ensure that rotated quarter
+             // circles won't be subdivided.
+-            final float hypot = (float)Math.sqrt(x12 * x12 + y12 * y12);
++            final float hypot = (float) sqrt(x12 * x12 + y12 * y12);
+             final float cos = x12 / hypot;
+             final float sin = y12 / hypot;
+             final float x1 = cos * pts[0] + sin * pts[1];
+@@ -976,12 +982,12 @@
+         // if these vectors are too small, normalize them, to avoid future
+         // precision problems.
+         if (Math.abs(dxs) < 0.1f && Math.abs(dys) < 0.1f) {
+-            float len = (float)Math.sqrt(dxs*dxs + dys*dys);
++            float len = (float) sqrt(dxs*dxs + dys*dys);
+             dxs /= len;
+             dys /= len;
+         }
+         if (Math.abs(dxf) < 0.1f && Math.abs(dyf) < 0.1f) {
+-            float len = (float)Math.sqrt(dxf*dxf + dyf*dyf);
++            float len = (float) sqrt(dxf*dxf + dyf*dyf);
+             dxf /= len;
+             dyf /= len;
+         }
+@@ -999,20 +1005,18 @@
+             int curCurveOff = it.next();
+ 
+             kind = computeOffsetCubic(middle, curCurveOff, lp, rp);
+-            if (kind != 0) {
+-                emitLineTo(lp[0], lp[1]);
+-                switch(kind) {
+-                case 8:
+-                    emitCurveTo(lp[0], lp[1], lp[2], lp[3], lp[4], lp[5], lp[6], lp[7], false);
+-                    emitCurveTo(rp[0], rp[1], rp[2], rp[3], rp[4], rp[5], rp[6], rp[7], true);
+-                    break;
+-                case 4:
+-                    emitLineTo(lp[2], lp[3]);
+-                    emitLineTo(rp[0], rp[1], true);
+-                    break;
+-                }
+-                emitLineTo(rp[kind - 2], rp[kind - 1], true);
++            emitLineTo(lp[0], lp[1]);
++            switch(kind) {
++            case 8:
++                emitCurveTo(lp[0], lp[1], lp[2], lp[3], lp[4], lp[5], lp[6], lp[7], false);
++                emitCurveTo(rp[0], rp[1], rp[2], rp[3], rp[4], rp[5], rp[6], rp[7], true);
++                break;
++            case 4:
++                emitLineTo(lp[2], lp[3]);
++                emitLineTo(rp[0], rp[1], true);
++                break;
+             }
++            emitLineTo(rp[kind - 2], rp[kind - 1], true);
+         }
+ 
+         this.cmx = (lp[kind - 2] - rp[kind - 2]) / 2;
+@@ -1050,12 +1054,12 @@
+         // if these vectors are too small, normalize them, to avoid future
+         // precision problems.
+         if (Math.abs(dxs) < 0.1f && Math.abs(dys) < 0.1f) {
+-            float len = (float)Math.sqrt(dxs*dxs + dys*dys);
++            float len = (float) sqrt(dxs*dxs + dys*dys);
+             dxs /= len;
+             dys /= len;
+         }
+         if (Math.abs(dxf) < 0.1f && Math.abs(dyf) < 0.1f) {
+-            float len = (float)Math.sqrt(dxf*dxf + dyf*dyf);
++            float len = (float) sqrt(dxf*dxf + dyf*dyf);
+             dxf /= len;
+             dyf /= len;
+         }
+@@ -1073,20 +1077,18 @@
+             int curCurveOff = it.next();
+ 
+             kind = computeOffsetQuad(middle, curCurveOff, lp, rp);
+-            if (kind != 0) {
+-                emitLineTo(lp[0], lp[1]);
+-                switch(kind) {
+-                case 6:
+-                    emitQuadTo(lp[0], lp[1], lp[2], lp[3], lp[4], lp[5], false);
+-                    emitQuadTo(rp[0], rp[1], rp[2], rp[3], rp[4], rp[5], true);
+-                    break;
+-                case 4:
+-                    emitLineTo(lp[2], lp[3]);
+-                    emitLineTo(rp[0], rp[1], true);
+-                    break;
+-                }
+-                emitLineTo(rp[kind - 2], rp[kind - 1], true);
++            emitLineTo(lp[0], lp[1]);
++            switch(kind) {
++            case 6:
++                emitQuadTo(lp[0], lp[1], lp[2], lp[3], lp[4], lp[5], false);
++                emitQuadTo(rp[0], rp[1], rp[2], rp[3], rp[4], rp[5], true);
++                break;
++            case 4:
++                emitLineTo(lp[2], lp[3]);
++                emitLineTo(rp[0], rp[1], true);
++                break;
+             }
++            emitLineTo(rp[kind - 2], rp[kind - 1], true);
+         }
+ 
+         this.cmx = (lp[kind - 2] - rp[kind - 2]) / 2;
+diff -r a07c9e09b4ca -r 24f474ad1703 test/sun/java2d/pisces/Test7036754.java
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ openjdk/jdk/test/sun/java2d/pisces/Test7036754.java	Thu Apr 28 08:55:19 2011 -0400
+@@ -0,0 +1,58 @@
++/*
++ * Copyright (c) 2011, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
++ * or visit www.oracle.com if you need additional information or have any
++ * questions.
++ */
++
++/**
++ * @test
++ * @bug     7036754
++ *
++ * @summary Verifies that there are no non-finite numbers when stroking
++ *          certain quadratic curves.
++ *
++ * @author Jim Graham
++ * @run     main Test7036754
++ */
++
++import java.awt.*;
++import java.awt.geom.*;
++
++public class Test7036754 {
++    public static void main(String argv[]) {
++        Shape s = new QuadCurve2D.Float(839.24677f, 508.97888f,
++                                        839.2953f, 508.97122f,
++                                        839.3438f, 508.96353f);
++        s = new BasicStroke(10f).createStrokedShape(s);
++        float nsegs[] = {2, 2, 4, 6, 0};
++        float coords[] = new float[6];
++        PathIterator pi = s.getPathIterator(null);
++        while (!pi.isDone()) {
++            int type = pi.currentSegment(coords);
++            for (int i = 0; i < nsegs[type]; i++) {
++                float c = coords[i];
++                if (Float.isNaN(c) || Float.isInfinite(c)) {
++                    throw new RuntimeException("bad value in stroke");
++                }
++            }
++            pi.next();
++        }
++    }
++}
+exporting patch:
+<fdopen>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/openjdk/7037939-hugepage.patch	Wed May 18 15:46:37 2011 +0100
@@ -0,0 +1,71 @@
+
+# HG changeset patch
+# User iveresov
+# Date 1303843594 25200
+# Node ID c303b3532d4ada074facc42292219952c2a4204e
+# Parent d6cdc6c77582408f6450bdda3ffc831d44298714
+7037939: NUMA: Disable adaptive resizing if SHM large pages are used
+Summary: Make the NUMA allocator behave properly with SHM and ISM large pages.
+Reviewed-by: ysr
+
+--- openjdk.patched/hotspot/src/os/linux/vm/os_linux.cpp	Sat Apr 23 04:20:09 2011 -0700
++++ openjdk/hotspot/src/os/linux/vm/os_linux.cpp	Tue Apr 26 11:46:34 2011 -0700
+@@ -4170,6 +4170,23 @@ jint os::init_2(void)
+         UseNUMA = false;
+       }
+     }
++    // With SHM large pages we cannot uncommit a page, so there's not way
++    // we can make the adaptive lgrp chunk resizing work. If the user specified
++    // both UseNUMA and UseLargePages (or UseSHM) on the command line - warn and
++    // disable adaptive resizing.
++    if (UseNUMA && UseLargePages && UseSHM) {
++      if (!FLAG_IS_DEFAULT(UseNUMA)) {
++        if (FLAG_IS_DEFAULT(UseLargePages) && FLAG_IS_DEFAULT(UseSHM)) {
++          UseLargePages = false;
++        } else {
++          warning("UseNUMA is not fully compatible with SHM large pages, disabling adaptive resizing");
++          UseAdaptiveSizePolicy = false;
++          UseAdaptiveNUMAChunkSizing = false;
++        }
++      } else {
++        UseNUMA = false;
++      }
++    }
+     if (!UseNUMA && ForceNUMA) {
+       UseNUMA = true;
+     }
+--- openjdk.patched/hotspot/src/os/solaris/vm/os_solaris.cpp	Sat Apr 23 04:20:09 2011 -0700
++++ openjdk/hotspot/src/os/solaris/vm/os_solaris.cpp	Tue Apr 26 11:46:34 2011 -0700
+@@ -2826,7 +2826,9 @@ void os::realign_memory(char *addr, size
+ void os::realign_memory(char *addr, size_t bytes, size_t alignment_hint) {
+   assert((intptr_t)addr % alignment_hint == 0, "Address should be aligned.");
+   assert((intptr_t)(addr + bytes) % alignment_hint == 0, "End should be aligned.");
+-  Solaris::set_mpss_range(addr, bytes, alignment_hint);
++  if (UseLargePages && UseMPSS) {
++    Solaris::set_mpss_range(addr, bytes, alignment_hint);
++  }
+ }
+ 
+ // Tell the OS to make the range local to the first-touching LWP
+@@ -5041,6 +5043,20 @@ jint os::init_2(void) {
+       FREE_C_HEAP_ARRAY(int, lgrp_ids);
+       if (lgrp_num < 2) {
+         // There's only one locality group, disable NUMA.
++        UseNUMA = false;
++      }
++    }
++    // ISM is not compatible with the NUMA allocator - it always allocates
++    // pages round-robin across the lgroups.
++    if (UseNUMA && UseLargePages && UseISM) {
++      if (!FLAG_IS_DEFAULT(UseNUMA)) {
++        if (FLAG_IS_DEFAULT(UseLargePages) && FLAG_IS_DEFAULT(UseISM)) {
++          UseLargePages = false;
++        } else {
++          warning("UseNUMA is not compatible with ISM large pages, disabling NUMA allocator");
++          UseNUMA = false;
++        }
++      } else {
+         UseNUMA = false;
+       }
+     }
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/openjdk/7041156-gcc_export_dynamic.patch	Wed May 18 15:46:37 2011 +0100
@@ -0,0 +1,22 @@
+# HG changeset patch
+# User dsamersoff
+# Date 1304432695 -14400
+# Node ID 250642c729b42043ea99e5e4e27d153b0c766da0
+# Parent  405c634f4aaa2e91cc87598c60a4ece6e345e5b1
+7041156: gcc 4.6 doesn't recognise -export-dynamic option
+Summary: Since -export-dynamic is a linker option, the correct way to pass it is -Xlinker -export-dynamic
+Reviewed-by: dsamersoff, dholmes
+Contributed-by: omajid@redhat.com
+
+diff -r 405c634f4aaa -r 250642c729b4 make/linux/makefiles/gcc.make
+--- openjdk/hotspot/make/linux/makefiles/gcc.make	Mon May 02 14:53:49 2011 -0700
++++ openjdk/hotspot/make/linux/makefiles/gcc.make	Tue May 03 18:24:55 2011 +0400
+@@ -205,7 +205,7 @@
+ SHARED_FLAG = -shared
+ 
+ # Keep symbols even they are not used
+-AOUT_FLAGS += -export-dynamic
++AOUT_FLAGS += -Xlinker -export-dynamic
+ 
+ #------------------------------------------------------------------------
+ # Debug flags
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/openjdk/7042040-no_disk_space_check.patch	Wed May 18 15:46:37 2011 +0100
@@ -0,0 +1,115 @@
+# HG changeset patch
+# User andrew
+# Date 1305128024 14400
+# Node ID 6b74421f46b04f8cbe898ed4d8896b46be70becf
+# Parent  fe6a8ddfe33d460fe19867c6625ee6390934e4b7
+7042040: Remove disk space sanity check
+Summary: Remove outdated disk space checks using df
+Reviewed-by: ohair, omajid
+
+diff -r fe6a8ddfe33d -r 6b74421f46b0 make/common/shared/Platform.gmk
+--- openjdk/jdk/make/common/shared/Platform.gmk	Tue May 10 11:58:42 2011 +0200
++++ openjdk/jdk/make/common/shared/Platform.gmk	Wed May 11 11:33:44 2011 -0400
+@@ -75,7 +75,6 @@
+ #     USING_CYGWIN                windows only: true or false
+ #     WINDOWS_NT_VERSION_STRING   windows only: long version name
+ #     REQUIRED_OS_VERSION         required OS version, e.g. 5.10, 2.4
+-#     REQUIRED_FREE_SPACE         minimum disk space needed for outputdir
+ #     ISHIELD_TEMP_MIN            windows only: minimum disk space in temp area
+ #     REQUIRED_ZIP_VER            required version of zip
+ #     REQUIRED_UNZIP_VER          required version of unzip
+@@ -171,13 +170,6 @@
+   else
+     REQUIRED_OS_VERSION = 5.8
+   endif
+-  # Minimum disk space needed as determined by running 'du -sk' on 
+-  #    a fully built workspace.
+-  ifeq ($(ARCH_FAMILY), sparc)
+-    REQUIRED_FREE_SPACE=1300000
+-  else
+-    REQUIRED_FREE_SPACE=1040000
+-  endif
+   # How much RAM does this machine have:
+   MB_OF_MEMORY=$(shell /etc/prtconf | fgrep 'Memory size:' | expand | cut -d' ' -f3)
+ endif
+@@ -247,9 +239,6 @@
+ 
+   # Suffix for file bundles used in previous release
+   BUNDLE_FILE_SUFFIX=.tar.gz
+-  # Minimum disk space needed as determined by running 'du -sk' on 
+-  #    a fully built workspace.
+-  REQUIRED_FREE_SPACE=1460000
+   LINUX_VERSION_INFO = /etc/redhat-release
+   ifeq ($(ARCH_DATA_MODEL), 32)
+     REQUIRED_LINUX_VER = Advanced Server
+@@ -371,9 +360,6 @@
+   ARCH_VM_SUBDIR=jre/bin
+   # Suffix for file bundles used in previous release
+   BUNDLE_FILE_SUFFIX=.tar
+-  # Minimum disk space needed as determined by running 'du -sk' on 
+-  #    a fully built workspace.
+-  REQUIRED_FREE_SPACE=500000
+   # ISHIELD_TEMP_MIN is the difference of an empty C:\TEMP vs. one after a
+   #     bundles build on windows.
+   ISHIELD_TEMP_MIN=250000
+diff -r fe6a8ddfe33d -r 6b74421f46b0 make/common/shared/Sanity-Settings.gmk
+--- openjdk/jdk/make/common/shared/Sanity-Settings.gmk	Tue May 10 11:58:42 2011 +0200
++++ openjdk/jdk/make/common/shared/Sanity-Settings.gmk	Wed May 11 11:33:44 2011 -0400
+@@ -189,8 +189,6 @@
+ endif
+ ALL_SETTINGS+=$(call addRequiredVersionSetting,OS_VERSION)
+ ALL_SETTINGS+=$(call addRequiredSetting,OS_NAME)
+-ALL_SETTINGS+=$(call addRequiredSetting,TEMP_FREE_SPACE)
+-ALL_SETTINGS+=$(call addRequiredSetting,FREE_SPACE)
+ ALL_SETTINGS+=$(call addRequiredSetting,MB_OF_MEMORY)
+ 
+ 
+diff -r fe6a8ddfe33d -r 6b74421f46b0 make/common/shared/Sanity.gmk
+--- openjdk/jdk/make/common/shared/Sanity.gmk	Tue May 10 11:58:42 2011 +0200
++++ openjdk/jdk/make/common/shared/Sanity.gmk	Wed May 11 11:33:44 2011 -0400
+@@ -46,8 +46,6 @@
+ # Settings and rules to validate the JDK build environment.
+ 
+ ifeq ($(PLATFORM), solaris)
+-  FREE_SPACE := $(shell $(DF) -b $(OUTPUTDIR) | $(TAIL) -1 | $(NAWK) '{print $$2;}')
+-  TEMP_FREE_SPACE := $(shell $(DF) -b $(TEMP_DISK) | $(TAIL) -1 | $(NAWK) '{print $$2;}')
+   REQ_PATCH_LIST = $(JDK_TOPDIR)/make/PatchList.solaris
+   ifeq ($(ARCH_FAMILY), sparc)
+     PATCH_POSITION = $$4
+@@ -57,8 +55,6 @@
+ endif
+ 
+ ifeq ($(PLATFORM), linux)
+-  FREE_SPACE := $(shell $(DF) --sync -kP $(OUTPUTDIR) | $(TAIL) -1 | $(NAWK) '{print $$4;}')
+-  TEMP_FREE_SPACE := $(shell $(DF) --sync -kP $(TEMP_DISK) | $(TAIL) -1 | $(NAWK) '{print $$4;}')
+   ifeq ($(ARCH), amd64)
+     LINUX_VERSION := $(shell \
+         if [ -r "$(LINUX_VERSION_INFO)" ] ; then \
+@@ -82,8 +78,6 @@
+ endif
+ 
+ ifeq ($(PLATFORM), windows)
+-  FREE_SPACE := $(shell $(DF) -kP $(OUTPUTDIR) | $(TAIL) -1 | $(NAWK) '{print $$4;}')
+-  TEMP_FREE_SPACE := $(shell $(DF) -kP $(TEMP_DISK) | $(TAIL) -1 | $(NAWK) '{print $$4;}')
+   # Localized systeminfo has localized labels, but not localized values.
+   _WINDOWS_VERSION := \
+     $(shell systeminfo 2> $(DEV_NULL) | grep 'Microsoft' | grep 'Windows' | \
+@@ -675,18 +669,6 @@
+ 	    "      Either obtain these permissions or set ALT_OUTPUTDIR. \n" \
+ 	    "" >> $(ERROR_FILE) ; \
+ 	fi
+-	@#
+-	@# OUTPUTDIR must have enough free space...
+-	@#
+-	@if [ $(FREE_SPACE) -lt $(REQUIRED_FREE_SPACE) ]; then \
+-	  $(ECHO) "WARNING: You may not have enough free space in your OUTPUTDIR. The \n" \
+-	    "        current value of OUTPUTDIR is \n" \
+-	    "            $(OUTPUTDIR) \n" \
+-	    "        You need "$(REQUIRED_FREE_SPACE)" Kbytes free on this device to build \n" \
+-	    "        and it appears that only "$(FREE_SPACE)" Kbytes are free. \n" \
+-	    "        Either obtain more space or set ALT_OUTPUTDIR to a larger disk. \n" \
+-	    "" >> $(WARNING_FILE) ; \
+-	fi
+ 
+ ######################################################
+ # if specified, ALT_BOOTDIR must point to non-relative path if set
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/openjdk/7043564-hugepage.patch	Wed May 18 15:46:37 2011 +0100
@@ -0,0 +1,21 @@
+
+# HG changeset patch
+# User iveresov
+# Date 1305055570 25200
+# Node ID 97b64f73103bddbcd9d987fd13854957d2a80600
+# Parent fc2b798ab316df025526f208aeeef19609ad51b3
+7043564: compile warning and copyright fixes
+Summary: Fixed the warning, also fixed copyrights in a bunch of files.
+Reviewed-by: johnc, kvn
+
+--- openjdk.prev/hotspot/src/os/linux/vm/os_linux.cpp	Tue May 10 00:33:21 2011 -0700
++++ openjdk/hotspot/src/os/linux/vm/os_linux.cpp	Tue May 10 12:26:10 2011 -0700
+@@ -2850,7 +2850,7 @@ bool os::Linux::hugetlbfs_sanity_check(b
+         char chars[257];
+         long x = 0;
+         if (fgets(chars, sizeof(chars), fp)) {
+-          if (sscanf(chars, "%lx-%*lx", &x) == 1
++          if (sscanf(chars, "%lx-%*x", &x) == 1
+               && x == (long)p) {
+             if (strstr (chars, "hugepage")) {
+               result = true;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/openjdk/7043921-java_rmi_cgi.patch	Wed May 18 15:46:37 2011 +0100
@@ -0,0 +1,40 @@
+# HG changeset patch
+# User ohair
+# Date 1305210277 25200
+# Node ID 13fa9a0c628f58326cc376b7623a03b9d796136e
+# Parent  caed82420c5d01f5aaee5b15e8e37befc8db3d49
+7043921: generate java-rmi.cgi on 64 bit platform
+Reviewed-by: omajid, katleman
+
+diff -r caed82420c5d -r 13fa9a0c628f make/sun/rmi/rmi/Makefile
+--- openjdk/jdk/make/sun/rmi/rmi/Makefile	Wed May 11 14:12:50 2011 -0700
++++ openjdk/jdk/make/sun/rmi/rmi/Makefile	Thu May 12 07:24:37 2011 -0700
+@@ -85,16 +85,21 @@
+ 	sun.rmi.registry.RegistryImpl \
+ 	sun.rmi.transport.DGCImpl
+ 
+-ifeq ($(PLATFORM), windows)
+-build: stubs
+-else # PLATFORM
+-ifneq ($(ARCH_DATA_MODEL), 32)
+-build: stubs
+-else # ARCH_DATA_MODEL
+-build: stubs bin
++#
++# The java-rmi.cgi script in bin/ only gets delivered in certain situations
++#
++BUILD_TARGETS = stubs
++ifeq ($(PLATFORM), linux)
++  BUILD_TARGETS += bin
+ endif
++ifeq ($(PLATFORM), solaris)
++  ifeq ($(ARCH_DATA_MODEL), 32)
++    BUILD_TARGETS += bin
++  endif
+ endif
+ 
++build: $(BUILD_TARGETS)
++
+ clean clobber:: bin.clean
+ 
+ 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/openjdk/mutter.patch	Wed May 18 15:46:37 2011 +0100
@@ -0,0 +1,311 @@
+# HG changeset patch
+# User Denis Lila <dlila@redhat.com>
+# Date 1305642927 14400
+# Node ID 49098163596b4e2972ddad36550e0b9801d3170b
+# Parent  cf7c64f276c60d1bab5b26b87a4e337dadbb4888
+Add mutter as a window manager.
+
+diff -r cf7c64f276c6 -r 49098163596b src/solaris/classes/sun/awt/X11/XDecoratedPeer.java
+--- openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XDecoratedPeer.java	Wed May 11 11:08:03 2011 -0400
++++ openjdk/jdk/src/solaris/classes/sun/awt/X11/XDecoratedPeer.java	Tue May 17 10:35:27 2011 -0400
+@@ -721,7 +721,7 @@
+             // Location, Client size + insets
+             newLocation = new Point(xe.get_x() - currentInsets.left, xe.get_y() - currentInsets.top);
+         } else {
+-            // CDE/MWM/Metacity/Sawfish bug: if shell is resized using
++            // CDE/MWM/Metacity/Sawfish/Mutter bug: if shell is resized using
+             // top or left border, we don't receive synthetic
+             // ConfigureNotify, only the one from X with zero
+             // coordinates.  This is the workaround to get real
+@@ -731,6 +731,7 @@
+                 case XWM.MOTIF_WM:
+                 case XWM.METACITY_WM:
+                 case XWM.SAWFISH_WM:
++                case XWM.MUTTER_WM:
+                 {
+                     Point xlocation = queryXLocation();
+                     if (log.isLoggable(PlatformLogger.FINE)) log.fine("New X location: {0}", xlocation);
+diff -r cf7c64f276c6 -r 49098163596b src/solaris/classes/sun/awt/X11/XWM.java
+--- openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XWM.java	Wed May 11 11:08:03 2011 -0400
++++ openjdk/jdk/src/solaris/classes/sun/awt/X11/XWM.java	Tue May 17 10:35:27 2011 -0400
+@@ -101,7 +101,8 @@
+         ICE_WM = 10,
+         METACITY_WM = 11,
+         COMPIZ_WM = 12,
+-        LG3D_WM = 13;
++        LG3D_WM = 13,
++        MUTTER_WM = 14;
+     public String toString() {
+         switch  (WMID) {
+           case NO_WM:
+@@ -128,6 +129,8 @@
+               return "Compiz";
+           case LG3D_WM:
+               return "LookingGlass";
++          case MUTTER_WM:
++              return "Mutter";
+           case UNDETERMINED_WM:
+           default:
+               return "Undetermined WM";
+@@ -566,6 +569,12 @@
+ //                            getIntProperty(XToolkit.getDefaultRootWindow(), XAtom.XA_CARDINAL)) == 0);
+     }
+ 
++    static boolean isMutter() {
++        return isNetWMName("Mutter");
++    }
++
++    // TODO: according to wikipedia, compiz is now reparenting. This should
++    // probably be updated.
+     static boolean isNonReparentingWM() {
+         return (XWM.getWMID() == XWM.COMPIZ_WM || XWM.getWMID() == XWM.LG3D_WM);
+     }
+@@ -735,10 +744,12 @@
+                 awt_wmgr = XWM.ENLIGHTEN_WM;
+             } else if (isMetacity()) {
+                 awt_wmgr = XWM.METACITY_WM;
++            } else if (isMutter()) {
++                awt_wmgr = XWM.MUTTER_WM;
+             } else if (isSawfish()) {
+                 awt_wmgr = XWM.SAWFISH_WM;
+             } else if (isKDE2()) {
+-                awt_wmgr =XWM.KDE2_WM;
++                awt_wmgr = XWM.KDE2_WM;
+             } else if (isCompiz()) {
+                 awt_wmgr = XWM.COMPIZ_WM;
+             } else if (isLookingGlass()) {
+@@ -1036,6 +1047,8 @@
+ 
+     boolean supportsDynamicLayout() {
+         int wm = getWMID();
++        // TODO: does mutter support this? It's a fancy new WM, so it probably
++        // does. Confirm and fix this.
+         switch (wm) {
+           case XWM.ENLIGHTEN_WM:
+           case XWM.KDE2_WM:
+@@ -1360,6 +1373,7 @@
+                 return insets;
+             }
+         }
++        // TODO: figure out if Mutter implements the insets property.
+         switch(getWMID()) {
+           case XWM.KDE2_WM:
+               return getInsetsFromProp(window, XA_KDE_NET_WM_FRAME_STRUT);
+@@ -1554,6 +1568,9 @@
+                       correctWM.bottom = correctWM.left;
+                       break;
+                   }
++                  case XWM.MUTTER_WM:
++                      // TODO: Figure out if Mutter is double reparenting.
++                      // For now the fallback code is good enough.
+                   case XWM.OTHER_WM:
+                   default: {                /* this is very similar to the E! case above */
+                       insLog.finest("Getting correct insets for OTHER_WM/default, parent: {0}", parent);
+diff -r cf7c64f276c6 -r 49098163596b test/java/awt/WMSpecificTests/Mutter/MutterMaximizeTest.java
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ openjdk/jdk/test/java/awt/WMSpecificTests/Mutter/MutterMaximizeTest.java	Tue May 17 10:35:27 2011 -0400
+@@ -0,0 +1,161 @@
++/*
++ * Copyright 2011 Red Hat, Inc.  All Rights Reserved.
++ * Copyright (c) 2011, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
++ * or visit www.oracle.com if you need additional information or have any
++ * questions.
++ */
++
++
++/*
++  @test
++  @bug      7043963
++  @summary  Tests  that the screen location of windows is
++            updated properly after a maximize.
++  @author   Denis Lila
++  @library  ../../regtesthelpers
++  @build    Util
++  @run      main MutterMaximizeTest
++*/
++
++import java.awt.AWTException;
++import java.awt.Dimension;
++import java.awt.Frame;
++import java.awt.Point;
++import java.awt.Robot;
++import java.awt.Window;
++import java.awt.event.InputEvent;
++import java.awt.event.WindowAdapter;
++import java.awt.event.WindowEvent;
++
++import test.java.awt.regtesthelpers.Util;
++
++@SuppressWarnings("serial")
++public class MutterMaximizeTest extends Frame {
++
++    public static void main(String[] args) throws InterruptedException {
++        if (Util.getWMID() != Util.MUTTER_WM) {
++            System.out.println("This test is only useful on Mutter");
++            return;
++        }
++        MutterMaximizeTest frame = new MutterMaximizeTest();
++        frame.addWindowListener(Util.getClosingWindowAdapter());
++
++        //Display the window.
++        frame.pack();
++        frame.setSize(500, 500);
++        Util.showWindowWait(frame);
++        runRobotTest(frame);
++    }
++
++    private static void runRobotTest(Frame frame) {
++        try {
++            Thread robotThread = startRegTest(frame);
++            robotThread.start();
++            waitForThread(robotThread);
++        } finally {
++            frame.dispose();
++        }
++    }
++
++    private static void waitForThread(Thread t) {
++        while (t.isAlive()) {
++            try {
++                t.join();
++            } catch (InterruptedException e) {
++            }
++        }
++    }
++
++    private static void sleepFor(long millis) {
++        long dT = 0;
++        long start = System.nanoTime();
++        while (dT < millis) {
++            try {
++                long toSleep = millis - dT/1000000;
++                if (toSleep > 0) {
++                    Thread.sleep(toSleep);
++                }
++                // if this ends without an interrupted exception,
++                // that's good enough.
++                break;
++            } catch (InterruptedException e) {
++                long now = System.nanoTime();
++                dT = now - start;
++            }
++        }
++    }
++
++    private static void rmove(Robot robot, Point p) {
++        robot.mouseMove(p.x, p.y);
++    }
++    private static void rdown(Robot robot) {
++        robot.mousePress(InputEvent.BUTTON1_MASK);
++        robot.delay(50);
++    }
++    private static void rup(Robot robot) {
++        robot.mouseRelease(InputEvent.BUTTON1_MASK);
++        robot.delay(50);
++    }
++
++    public static void click(Robot robot) {
++        rdown(robot);
++        rup(robot);
++    }
++
++    public static void doubleClick(Robot robot) {
++        click(robot);
++        click(robot);
++    }
++
++    private static void dragWindow(Window w, int dx, int dy, Robot robot) {
++        Point p = Util.getTitlePoint(w);
++        rmove(robot, p);
++        rdown(robot);
++        p.translate(dx, dy);
++        rmove(robot, p);
++        rup(robot);
++    }
++
++    // f must be visible
++    private static Thread startRegTest(final Frame f) {
++        Thread robot = new Thread(new Runnable() {
++            public void run() {
++                Robot r = Util.createRobot();
++                dragWindow(f, 100, 100, r);
++                // wait for the location to be set.
++                sleepFor(2000);
++
++                final Point l2 = f.getLocationOnScreen();
++
++                // double click should maximize the frame
++                doubleClick(r);
++
++                // wait for location again.
++                sleepFor(2000);
++                final Point l3 = f.getLocationOnScreen();
++                if (l3.equals(l2)) {
++                    throw new RuntimeException("Bad location after maximize. Window location has not moved");
++                }
++            }
++        });
++        return robot;
++    }
++}
++
+diff -r cf7c64f276c6 -r 49098163596b test/java/awt/regtesthelpers/Util.java
+--- openjdk.orig/jdk/test/java/awt/regtesthelpers/Util.java	Wed May 11 11:08:03 2011 -0400
++++ openjdk/jdk/test/java/awt/regtesthelpers/Util.java	Tue May 17 10:35:27 2011 -0400
+@@ -140,6 +140,13 @@
+         robot.mouseMove(bounds.x + bounds.width / 2, bounds.y + bounds.height / 2);
+     }
+ 
++    public static Point getTitlePoint(Window decoratedWindow) {
++        Point p = decoratedWindow.getLocationOnScreen();
++        Dimension d = decoratedWindow.getSize();
++        return new Point(p.x + (int)(d.getWidth()/2),
++                         p.y + (int)decoratedWindow.getInsets().top/2);
++    }
++
+     /**
+      * Moves mouse pointer in the center of a given {@code comp} component
+      * and performs a left mouse button click using the {@code robot} parameter
+@@ -167,11 +174,9 @@
+      * WARNING: it may fail on some platforms when the window is not wide enough.
+      */
+     public static void clickOnTitle(final Window decoratedWindow, final Robot robot) {
+-        Point p = decoratedWindow.getLocationOnScreen();
+-        Dimension d = decoratedWindow.getSize();
+-
+         if (decoratedWindow instanceof Frame || decoratedWindow instanceof Dialog) {
+-            robot.mouseMove(p.x + (int)(d.getWidth()/2), p.y + (int)decoratedWindow.getInsets().top/2);
++            Point p = getTitlePoint(decoratedWindow);
++            robot.mouseMove(p.x, p.y);
+             robot.delay(50);
+             robot.mousePress(InputEvent.BUTTON1_MASK);
+             robot.delay(50);
+@@ -409,7 +414,8 @@
+         ICE_WM = 10,
+         METACITY_WM = 11,
+         COMPIZ_WM = 12,
+-        LG3D_WM = 13;
++        LG3D_WM = 13,
++        MUTTER_WM = 14;
+ 
+     /*
+      * Returns -1 in case of not X Window or any problems.
+exporting patch:
+<fdopen>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/openjdk/pgram-pipe-regression.patch	Wed May 18 15:46:37 2011 +0100
@@ -0,0 +1,552 @@
+# HG changeset patch
+# User flar
+# Date 1305155521 25200
+# Node ID f290441b0cb7f5059caab84936b363b1f45e9e2f
+# Parent  85f53467c30ce903c3ea51cfea7759d9c7e39edc
+7043054: REGRESSION: JDK 7 b126 : Wrong userBounds in Paint.createContext()
+Reviewed-by: prr
+
+diff -r 85f53467c30c -r f290441b0cb7 src/share/classes/sun/java2d/opengl/OGLRenderer.java
+--- openjdk.orig/jdk/src/share/classes/sun/java2d/opengl/OGLRenderer.java	Tue May 10 15:59:01 2011 -0700
++++ openjdk/jdk/src/share/classes/sun/java2d/opengl/OGLRenderer.java	Wed May 11 16:12:01 2011 -0700
+@@ -102,15 +102,20 @@
+             final ParallelogramPipe realpipe = oglr.getAAParallelogramPipe();
+             return new ParallelogramPipe() {
+                 public void fillParallelogram(SunGraphics2D sg2d,
++                                              double ux1, double uy1,
++                                              double ux2, double uy2,
+                                               double x, double y,
+                                               double dx1, double dy1,
+                                               double dx2, double dy2)
+                 {
+                     GraphicsPrimitive.tracePrimitive("OGLFillAAParallelogram");
+                     realpipe.fillParallelogram(sg2d,
++                                               ux1, uy1, ux2, uy2,
+                                                x, y, dx1, dy1, dx2, dy2);
+                 }
+                 public void drawParallelogram(SunGraphics2D sg2d,
++                                              double ux1, double uy1,
++                                              double ux2, double uy2,
+                                               double x, double y,
+                                               double dx1, double dy1,
+                                               double dx2, double dy2,
+@@ -118,6 +123,7 @@
+                 {
+                     GraphicsPrimitive.tracePrimitive("OGLDrawAAParallelogram");
+                     realpipe.drawParallelogram(sg2d,
++                                               ux1, uy1, ux2, uy2,
+                                                x, y, dx1, dy1, dx2, dy2,
+                                                lw1, lw2);
+                 }
+@@ -166,21 +172,29 @@
+             oglr.fillSpans(sg2d, si, transx, transy);
+         }
+         public void fillParallelogram(SunGraphics2D sg2d,
++                                      double ux1, double uy1,
++                                      double ux2, double uy2,
+                                       double x, double y,
+                                       double dx1, double dy1,
+                                       double dx2, double dy2)
+         {
+             GraphicsPrimitive.tracePrimitive("OGLFillParallelogram");
+-            oglr.fillParallelogram(sg2d, x, y, dx1, dy1, dx2, dy2);
++            oglr.fillParallelogram(sg2d,
++                                   ux1, uy1, ux2, uy2,
++                                   x, y, dx1, dy1, dx2, dy2);
+         }
+         public void drawParallelogram(SunGraphics2D sg2d,
++                                      double ux1, double uy1,
++                                      double ux2, double uy2,
+                                       double x, double y,
+                                       double dx1, double dy1,
+                                       double dx2, double dy2,
+                                       double lw1, double lw2)
+         {
+             GraphicsPrimitive.tracePrimitive("OGLDrawParallelogram");
+-            oglr.drawParallelogram(sg2d, x, y, dx1, dy1, dx2, dy2, lw1, lw2);
++            oglr.drawParallelogram(sg2d,
++                                   ux1, uy1, ux2, uy2,
++                                   x, y, dx1, dy1, dx2, dy2, lw1, lw2);
+         }
+         public void copyArea(SunGraphics2D sg2d,
+                              int x, int y, int w, int h, int dx, int dy)
+diff -r 85f53467c30c -r f290441b0cb7 src/share/classes/sun/java2d/pipe/AAShapePipe.java
+--- openjdk.orig/jdk/src/share/classes/sun/java2d/pipe/AAShapePipe.java	Tue May 10 15:59:01 2011 -0700
++++ openjdk/jdk/src/share/classes/sun/java2d/pipe/AAShapePipe.java	Wed May 11 16:12:01 2011 -0700
+@@ -68,21 +68,23 @@
+         renderPath(sg, s, null);
+     }
+ 
+-    private static Rectangle2D computeBBox(double x, double y,
+-                                           double dx1, double dy1,
+-                                           double dx2, double dy2)
++    private static Rectangle2D computeBBox(double ux1, double uy1,
++                                           double ux2, double uy2)
+     {
+-        double lox, loy, hix, hiy;
+-        lox = hix = x;
+-        loy = hiy = y;
+-        if (dx1 < 0) { lox += dx1; } else { hix += dx1; }
+-        if (dy1 < 0) { loy += dy1; } else { hiy += dy1; }
+-        if (dx2 < 0) { lox += dx2; } else { hix += dx2; }
+-        if (dy2 < 0) { loy += dy2; } else { hiy += dy2; }
+-        return new Rectangle2D.Double(lox, loy, hix-lox, hiy-loy);
++        if ((ux2 -= ux1) < 0) {
++            ux1 += ux2;
++            ux2 = -ux2;
++        }
++        if ((uy2 -= uy1) < 0) {
++            uy1 += uy2;
++            uy2 = -uy2;
++        }
++        return new Rectangle2D.Double(ux1, uy1, ux2, uy2);
+     }
+ 
+     public void fillParallelogram(SunGraphics2D sg,
++                                  double ux1, double uy1,
++                                  double ux2, double uy2,
+                                   double x, double y,
+                                   double dx1, double dy1,
+                                   double dx2, double dy2)
+@@ -97,10 +99,12 @@
+             return;
+         }
+ 
+-        renderTiles(sg, computeBBox(x, y, dx1, dy1, dx2, dy2), aatg, abox);
++        renderTiles(sg, computeBBox(ux1, uy1, ux2, uy2), aatg, abox);
+     }
+ 
+     public void drawParallelogram(SunGraphics2D sg,
++                                  double ux1, double uy1,
++                                  double ux2, double uy2,
+                                   double x, double y,
+                                   double dx1, double dy1,
+                                   double dx2, double dy2,
+@@ -118,7 +122,7 @@
+ 
+         // Note that bbox is of the original shape, not the wide path.
+         // This is appropriate for handing to Paint methods...
+-        renderTiles(sg, computeBBox(x, y, dx1, dy1, dx2, dy2), aatg, abox);
++        renderTiles(sg, computeBBox(ux1, uy1, ux2, uy2), aatg, abox);
+     }
+ 
+     private static byte[] theTile;
+diff -r 85f53467c30c -r f290441b0cb7 src/share/classes/sun/java2d/pipe/AlphaColorPipe.java
+--- openjdk.orig/jdk/src/share/classes/sun/java2d/pipe/AlphaColorPipe.java	Tue May 10 15:59:01 2011 -0700
++++ openjdk/jdk/src/share/classes/sun/java2d/pipe/AlphaColorPipe.java	Wed May 11 16:12:01 2011 -0700
+@@ -66,6 +66,8 @@
+     }
+ 
+     public void fillParallelogram(SunGraphics2D sg,
++                                  double ux1, double uy1,
++                                  double ux2, double uy2,
+                                   double x, double y,
+                                   double dx1, double dy1,
+                                   double dx2, double dy2)
+@@ -75,6 +77,8 @@
+     }
+ 
+     public void drawParallelogram(SunGraphics2D sg,
++                                  double ux1, double uy1,
++                                  double ux2, double uy2,
+                                   double x, double y,
+                                   double dx1, double dy1,
+                                   double dx2, double dy2,
+diff -r 85f53467c30c -r f290441b0cb7 src/share/classes/sun/java2d/pipe/BufferedRenderPipe.java
+--- openjdk.orig/jdk/src/share/classes/sun/java2d/pipe/BufferedRenderPipe.java	Tue May 10 15:59:01 2011 -0700
++++ openjdk/jdk/src/share/classes/sun/java2d/pipe/BufferedRenderPipe.java	Wed May 11 16:12:01 2011 -0700
+@@ -408,6 +408,8 @@
+     }
+ 
+     public void fillParallelogram(SunGraphics2D sg2d,
++                                  double ux1, double uy1,
++                                  double ux2, double uy2,
+                                   double x, double y,
+                                   double dx1, double dy1,
+                                   double dx2, double dy2)
+@@ -429,6 +431,8 @@
+     }
+ 
+     public void drawParallelogram(SunGraphics2D sg2d,
++                                  double ux1, double uy1,
++                                  double ux2, double uy2,
+                                   double x, double y,
+                                   double dx1, double dy1,
+                                   double dx2, double dy2,
+@@ -454,6 +458,8 @@
+ 
+     private class AAParallelogramPipe implements ParallelogramPipe {
+         public void fillParallelogram(SunGraphics2D sg2d,
++                                      double ux1, double uy1,
++                                      double ux2, double uy2,
+                                       double x, double y,
+                                       double dx1, double dy1,
+                                       double dx2, double dy2)
+@@ -475,6 +481,8 @@
+         }
+ 
+         public void drawParallelogram(SunGraphics2D sg2d,
++                                      double ux1, double uy1,
++                                      double ux2, double uy2,
+                                       double x, double y,
+                                       double dx1, double dy1,
+                                       double dx2, double dy2,
+diff -r 85f53467c30c -r f290441b0cb7 src/share/classes/sun/java2d/pipe/LoopPipe.java
+--- openjdk.orig/jdk/src/share/classes/sun/java2d/pipe/LoopPipe.java	Tue May 10 15:59:01 2011 -0700
++++ openjdk/jdk/src/share/classes/sun/java2d/pipe/LoopPipe.java	Wed May 11 16:12:01 2011 -0700
+@@ -352,6 +352,8 @@
+     }
+ 
+     public void fillParallelogram(SunGraphics2D sg2d,
++                                  double ux1, double uy1,
++                                  double ux2, double uy2,
+                                   double x, double y,
+                                   double dx1, double dy1,
+                                   double dx2, double dy2)
+@@ -362,6 +364,8 @@
+     }
+ 
+     public void drawParallelogram(SunGraphics2D sg2d,
++                                  double ux1, double uy1,
++                                  double ux2, double uy2,
+                                   double x, double y,
+                                   double dx1, double dy1,
+                                   double dx2, double dy2,
+diff -r 85f53467c30c -r f290441b0cb7 src/share/classes/sun/java2d/pipe/ParallelogramPipe.java
+--- openjdk.orig/jdk/src/share/classes/sun/java2d/pipe/ParallelogramPipe.java	Tue May 10 15:59:01 2011 -0700
++++ openjdk/jdk/src/share/classes/sun/java2d/pipe/ParallelogramPipe.java	Wed May 11 16:12:01 2011 -0700
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 2008, 2011 Oracle and/or its affiliates. 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
+@@ -40,9 +40,17 @@
+  *          => (x+dx2, y+dy2)
+  *          => origin
+  * </pre>
++ * The four u[xy][12] parameters are the unsorted extreme coordinates
++ * of the primitive in user space.  They may have been generated by a
++ * line or a rectangle so they could have u[xy]2 < u[xy]1 in some cases.
++ * They should be sorted before calculating the bounds of the original
++ * primitive (such as for calculating the user space bounds for the
++ * Paint.createContext() method).
+  */
+ public interface ParallelogramPipe {
+     public void fillParallelogram(SunGraphics2D sg,
++                                  double ux1, double uy1,
++                                  double ux2, double uy2,
+                                   double x, double y,
+                                   double dx1, double dy1,
+                                   double dx2, double dy2);
+@@ -59,6 +67,8 @@
+      * difference between the outer and inner parallelograms.
+      */
+     public void drawParallelogram(SunGraphics2D sg,
++                                  double ux1, double uy1,
++                                  double ux2, double uy2,
+                                   double x, double y,
+                                   double dx1, double dy1,
+                                   double dx2, double dy2,
+diff -r 85f53467c30c -r f290441b0cb7 src/share/classes/sun/java2d/pipe/PixelToParallelogramConverter.java
+--- openjdk.orig/jdk/src/share/classes/sun/java2d/pipe/PixelToParallelogramConverter.java	Tue May 10 15:59:01 2011 -0700
++++ openjdk/jdk/src/share/classes/sun/java2d/pipe/PixelToParallelogramConverter.java	Wed May 11 16:12:01 2011 -0700
+@@ -175,8 +175,8 @@
+     }
+ 
+     public boolean drawGeneralLine(SunGraphics2D sg2d,
+-                                   double x1, double y1,
+-                                   double x2, double y2)
++                                   double ux1, double uy1,
++                                   double ux2, double uy2)
+     {
+         if (sg2d.strokeState == SunGraphics2D.STROKE_CUSTOM ||
+             sg2d.strokeState == SunGraphics2D.STROKE_THINDASHED)
+@@ -194,13 +194,14 @@
+         double lw = bs.getLineWidth();
+         // Save the original dx, dy in case we need it to transform
+         // the linewidth as a perpendicular vector below
+-        double dx = x2 - x1;
+-        double dy = y2 - y1;
++        double dx = ux2 - ux1;
++        double dy = uy2 - uy1;
++        double x1, y1, x2, y2;
+         switch (sg2d.transformState) {
+         case SunGraphics2D.TRANSFORM_GENERIC:
+         case SunGraphics2D.TRANSFORM_TRANSLATESCALE:
+             {
+-                double coords[] = {x1, y1, x2, y2};
++                double coords[] = {ux1, uy1, ux2, uy2};
+                 sg2d.transform.transform(coords, 0, coords, 0, 2);
+                 x1 = coords[0];
+                 y1 = coords[1];
+@@ -213,13 +214,17 @@
+             {
+                 double tx = sg2d.transform.getTranslateX();
+                 double ty = sg2d.transform.getTranslateY();
+-                x1 += tx;
+-                y1 += ty;
+-                x2 += tx;
+-                y2 += ty;
++                x1 = ux1 + tx;
++                y1 = uy1 + ty;
++                x2 = ux2 + tx;
++                y2 = uy2 + ty;
+             }
+             break;
+         case SunGraphics2D.TRANSFORM_ISIDENT:
++            x1 = ux1;
++            y1 = uy1;
++            x2 = ux2;
++            y2 = uy2;
+             break;
+         default:
+             throw new InternalError("unknown TRANSFORM state...");
+@@ -279,7 +284,8 @@
+             dx += udx;
+             dy += udy;
+         }
+-        outrenderer.fillParallelogram(sg2d, px, py, -udy, udx, dx, dy);
++        outrenderer.fillParallelogram(sg2d, ux1, uy1, ux2, uy2,
++                                      px, py, -udy, udx, dx, dy);
+         return true;
+     }
+ 
+@@ -313,7 +319,8 @@
+             px = newx;
+             py = newy;
+         }
+-        outrenderer.fillParallelogram(sg2d, px, py, dx1, dy1, dx2, dy2);
++        outrenderer.fillParallelogram(sg2d, rx, ry, rx+rw, ry+rh,
++                                      px, py, dx1, dy1, dx2, dy2);
+     }
+ 
+     public void drawRectangle(SunGraphics2D sg2d,
+@@ -360,10 +367,12 @@
+             // entire hole in the middle of the parallelogram
+             // so we can just fill the outer parallelogram.
+             fillOuterParallelogram(sg2d,
++                                   rx, ry, rx+rw, ry+rh,
+                                    px, py, dx1, dy1, dx2, dy2,
+                                    len1, len2, lw1, lw2);
+         } else {
+             outrenderer.drawParallelogram(sg2d,
++                                          rx, ry, rx+rw, ry+rh,
+                                           px, py, dx1, dy1, dx2, dy2,
+                                           lw1 / len1, lw2 / len2);
+         }
+@@ -377,6 +386,8 @@
+      * and issues a single fillParallelogram request to fill it.
+      */
+     public void fillOuterParallelogram(SunGraphics2D sg2d,
++                                       double ux1, double uy1,
++                                       double ux2, double uy2,
+                                        double px, double py,
+                                        double dx1, double dy1,
+                                        double dx2, double dy2,
+@@ -412,6 +423,7 @@
+         dx2 += udx2;
+         dy2 += udy2;
+ 
+-        outrenderer.fillParallelogram(sg2d, px, py, dx1, dy1, dx2, dy2);
++        outrenderer.fillParallelogram(sg2d, ux1, uy1, ux2, uy2,
++                                      px, py, dx1, dy1, dx2, dy2);
+     }
+ }
+diff -r 85f53467c30c -r f290441b0cb7 src/windows/classes/sun/java2d/d3d/D3DRenderer.java
+--- openjdk.orig/jdk/src/windows/classes/sun/java2d/d3d/D3DRenderer.java	Tue May 10 15:59:01 2011 -0700
++++ openjdk/jdk/src/windows/classes/sun/java2d/d3d/D3DRenderer.java	Wed May 11 16:12:01 2011 -0700
+@@ -102,15 +102,20 @@
+             final ParallelogramPipe realpipe = d3dr.getAAParallelogramPipe();
+             return new ParallelogramPipe() {
+                 public void fillParallelogram(SunGraphics2D sg2d,
++                                              double ux1, double uy1,
++                                              double ux2, double uy2,
+                                               double x, double y,
+                                               double dx1, double dy1,
+                                               double dx2, double dy2)
+                 {
+                     GraphicsPrimitive.tracePrimitive("D3DFillAAParallelogram");
+                     realpipe.fillParallelogram(sg2d,
++                                               ux1, uy1, ux2, uy2,
+                                                x, y, dx1, dy1, dx2, dy2);
+                 }
+                 public void drawParallelogram(SunGraphics2D sg2d,
++                                              double ux1, double uy1,
++                                              double ux2, double uy2,
+                                               double x, double y,
+                                               double dx1, double dy1,
+                                               double dx2, double dy2,
+@@ -118,6 +123,7 @@
+                 {
+                     GraphicsPrimitive.tracePrimitive("D3DDrawAAParallelogram");
+                     realpipe.drawParallelogram(sg2d,
++                                               ux1, uy1, ux2, uy2,
+                                                x, y, dx1, dy1, dx2, dy2,
+                                                lw1, lw2);
+                 }
+@@ -167,21 +173,29 @@
+             d3dr.fillSpans(sg2d, si, transx, transy);
+         }
+         public void fillParallelogram(SunGraphics2D sg2d,
++                                      double ux1, double uy1,
++                                      double ux2, double uy2,
+                                       double x, double y,
+                                       double dx1, double dy1,
+                                       double dx2, double dy2)
+         {
+             GraphicsPrimitive.tracePrimitive("D3DFillParallelogram");
+-            d3dr.fillParallelogram(sg2d, x, y, dx1, dy1, dx2, dy2);
++            d3dr.fillParallelogram(sg2d,
++                                   ux1, uy1, ux2, uy2,
++                                   x, y, dx1, dy1, dx2, dy2);
+         }
+         public void drawParallelogram(SunGraphics2D sg2d,
++                                      double ux1, double uy1,
++                                      double ux2, double uy2,
+                                       double x, double y,
+                                       double dx1, double dy1,
+                                       double dx2, double dy2,
+                                       double lw1, double lw2)
+         {
+             GraphicsPrimitive.tracePrimitive("D3DDrawParallelogram");
+-            d3dr.drawParallelogram(sg2d, x, y, dx1, dy1, dx2, dy2, lw1, lw2);
++            d3dr.drawParallelogram(sg2d,
++                                   ux1, uy1, ux2, uy2,
++                                   x, y, dx1, dy1, dx2, dy2, lw1, lw2);
+         }
+         public void copyArea(SunGraphics2D sg2d,
+                              int x, int y, int w, int h, int dx, int dy)
+diff -r 85f53467c30c -r f290441b0cb7 test/java/awt/Paint/PgramUserBoundsTest.java
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ openjdk/jdk/test/java/awt/Paint/PgramUserBoundsTest.java	Wed May 11 16:12:01 2011 -0700
+@@ -0,0 +1,126 @@
++/*
++ * Copyright (c) 2011, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
++ * or visit www.oracle.com if you need additional information or have any
++ * questions.
++ */
++
++/**
++ * @test
++ * @bug 7043054
++ * @summary Verifies that Paint objects receive the appropriate user space
++ *          bounds in their createContext() method
++ * @run main PgramUserBoundsTest
++ */
++
++import java.awt.Color;
++import java.awt.Graphics2D;
++import java.awt.Paint;
++import java.awt.PaintContext;
++import java.awt.RenderingHints;
++import java.awt.Rectangle;
++import java.awt.geom.AffineTransform;
++import java.awt.geom.Line2D;
++import java.awt.geom.Rectangle2D;
++import java.awt.image.BufferedImage;
++import java.awt.image.ColorModel;
++
++public class PgramUserBoundsTest {
++    static final int MinX = 10;
++    static final int MinY = 20;
++    static final int MaxX = 30;
++    static final int MaxY = 50;
++    static AffineTransform identity = new AffineTransform();
++
++    public static void main(String argv[]) {
++        BufferedImage bimg =
++            new BufferedImage(100, 100, BufferedImage.TYPE_INT_RGB);
++        Graphics2D g2d = bimg.createGraphics();
++        g2d.setPaint(new BoundsCheckerPaint(MinX, MinY, MaxX, MaxY));
++        testAll(g2d);
++        g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
++                             RenderingHints.VALUE_ANTIALIAS_ON);
++        testAll(g2d);
++    }
++
++    static void testAll(Graphics2D g2d) {
++        g2d.setTransform(identity);
++        g2d.translate(100, 100);
++        testPrimitives(g2d);
++
++        g2d.setTransform(identity);
++        g2d.scale(10, 10);
++        testPrimitives(g2d);
++
++        g2d.setTransform(identity);
++        g2d.rotate(Math.PI/6);
++        testPrimitives(g2d);
++    }
++
++    static void testPrimitives(Graphics2D g2d) {
++        testLine(g2d);
++        testRect(g2d);
++    }
++
++    static void testLine(Graphics2D g2d) {
++        testLine(g2d, MinX, MinY, MaxX, MaxY);
++        testLine(g2d, MaxX, MinY, MinX, MaxY);
++        testLine(g2d, MinX, MaxY, MaxX, MinY);
++        testLine(g2d, MaxX, MaxY, MinX, MinY);
++    }
++
++    static void testRect(Graphics2D g2d) {
++        g2d.fillRect(MinX, MinY, MaxX - MinX, MaxY - MinY);
++        g2d.fill(new Rectangle(MinX, MinY, MaxX - MinX, MaxY - MinY));
++    }
++
++    static void testLine(Graphics2D g2d, int x1, int y1, int x2, int y2) {
++        g2d.drawLine(x1, y1, x2, y2);
++        g2d.draw(new Line2D.Double(x1, y1, x2, y2));
++    }
++
++    static class BoundsCheckerPaint implements Paint {
++        private Color c = Color.WHITE;
++        private Rectangle2D expectedBounds;
++
++        public BoundsCheckerPaint(double x1, double y1,
++                                  double x2, double y2)
++        {
++            expectedBounds = new Rectangle2D.Double();
++            expectedBounds.setFrameFromDiagonal(x1, y1, x2, y2);
++        }
++
++        public int getTransparency() {
++            return c.getTransparency();
++        }
++
++        public PaintContext createContext(ColorModel cm,
++                                          Rectangle deviceBounds,
++                                          Rectangle2D userBounds,
++                                          AffineTransform xform,
++                                          RenderingHints hints)
++        {
++            System.out.println("user bounds = "+userBounds);
++            if (!userBounds.equals(expectedBounds)) {
++                throw new RuntimeException("bounds fail to match");
++            }
++            return c.createContext(cm, deviceBounds, userBounds, xform, hints);
++        }
++    }
++}
+exporting patch:
+<fdopen>
--- a/patches/pr633-no_javaws_man_page.patch	Thu Mar 31 01:04:37 2011 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,15 +0,0 @@
-diff -Nru openjdk.orig/jdk/make/common/Release.gmk openjdk/jdk/make/common/Release.gmk
---- openjdk.orig/jdk/make/common/Release.gmk	2011-02-22 08:36:53.832333120 +0000
-+++ openjdk/jdk/make/common/Release.gmk	2011-02-22 08:37:11.462960201 +0000
-@@ -145,9 +145,11 @@
- 	tnameserv.1     \
- 	unpack200.1
- 
-+ifndef OPENJDK
- ifeq ($(ARCH_DATA_MODEL),32)
-   JRE_MAN_PAGES += javaws.1
- endif
-+endif
- 
- JDK_MAN_PAGES =            \
- 	$(JRE_MAN_PAGES)   \
--- a/patches/revert-6885123.patch	Thu Mar 31 01:04:37 2011 +0100
+++ b/patches/revert-6885123.patch	Wed May 18 15:46:37 2011 +0100
@@ -165,7 +165,7 @@
 +
 +
 +# check arguments set by JTreg
-+function checkArgs() {
++checkArgs() {
 +    if [ "${TESTSRC}" = "" ]
 +    then
 +        echo "TESTSRC not set.  Test cannot execute.  Failed."
@@ -188,7 +188,7 @@
 +
 +
 +# print paths to test sources and test classes
-+function printPaths() {
++printPaths() {
 +    echo "TESTCLASSES=${TESTCLASSES}"
 +    echo "CLASSPATH=${CLASSPATH}"
 +}
@@ -196,7 +196,7 @@
 +
 +
 +# copy of all necessarry files into work directory
-+function copyWorkFiles() {
++copyWorkFiles() {
 +    cp -r "${TESTSRC}/test_data" "${TESTCLASSES}/"
 +    result=$?
 +    if [ $result -eq 0 ]
@@ -221,7 +221,7 @@
 +
 +
 +# compilation of Test class which is stored in test_data subdirectory
-+function compileTestClass() {
++compileTestClass() {
 +    COMPILE="${TESTJAVA}/bin/javac ${TESTCLASSES}/test_data/Test.java"
 +    echo ${COMPILE}
 +    ${COMPILE}
@@ -241,7 +241,7 @@
 +
 +
 +# compilation of the Test itself
-+function compileTest() {
++compileTest() {
 +    COMPILE="${TESTJAVA}/bin/javac ${TESTCLASSES}/JavaFileManagerTest.java"
 +    echo ${COMPILE}
 +    ${COMPILE}
@@ -261,7 +261,7 @@
 +
 +
 +# run the test
-+function runTest() {
++runTest() {
 +    cd ${TESTCLASSES}
 +    RUNCMD="${TESTJAVA}/bin/java JavaFileManagerTest"
 +    echo ${RUNCMD}
@@ -308,3 +308,260 @@
 @@ -0,0 +1,2 @@
 +42
 +
+--- openjdk/langtools/test/tools/javac/api/6411310/Test.java	2011-02-28 17:07:32.000000000 +0100
++++ /dev/null	2011-03-27 16:20:13.277479669 +0200
+@@ -1,254 +0,0 @@
+-/*
+- * Copyright (c) 2009, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+- * or visit www.oracle.com if you need additional information or have any
+- * questions.
+- */
+-
+-/*
+- * @test
+- * @bug 6410367 6411310
+- * @summary FileObject should support user-friendly names via getName()
+- */
+-
+-import java.io.*;
+-import java.util.*;
+-import java.util.jar.*;
+-import java.util.zip.*;
+-import javax.tools.*;
+-
+-import com.sun.tools.javac.file.JavacFileManager;
+-import com.sun.tools.javac.util.Context;
+-import com.sun.tools.javac.util.Options;
+-
+-// Test FileObject.getName returned from JavacFileManager and its support classes.
+-
+-public class Test {
+-    public static void main(String... args) throws Exception {
+-        new Test().run();
+-    }
+-
+-    Set<String> foundClasses = new TreeSet<String>();
+-    Set<String> foundJars = new TreeSet<String>();
+-
+-    void run() throws Exception {
+-        File rt_jar = findRtJar();
+-
+-        // names for entries to be created in directories and jar files
+-        String[] entries = { "p/A.java", "p/A.class", "p/resources/A-1.html" };
+-
+-        // test various combinations of directories and jar files, intended to
+-        // cover all sources of file objects within JavacFileManager's support classes
+-
+-        test(createFileManager(), createDir("dir", entries), "p", entries);
+-        test(createFileManager(), createDir("a b/dir", entries), "p", entries);
+-
+-        for (boolean useJavaUtilZip: new boolean[] { false, true }) {
+-            test(createFileManager(useJavaUtilZip), createJar("jar", entries), "p", entries);
+-            test(createFileManager(useJavaUtilZip), createJar("jar jar", entries), "p", entries);
+-
+-            for (boolean useSymbolFile: new boolean[] { false, true }) {
+-                test(createFileManager(useJavaUtilZip, useSymbolFile), rt_jar, "java.lang.ref", null);
+-            }
+-        }
+-
+-        if (errors > 0)
+-            throw new Exception(errors + " errors found");
+-
+-        // Verify that we hit all the impl classes we intended
+-        checkCoverage("classes", foundClasses,
+-                "RegularFileObject", "SymbolFileObject", "ZipFileIndexFileObject", "ZipFileObject");
+-
+-        // Verify that we hit the jar files we intended, specifically ct.sym as well as rt.jar
+-        checkCoverage("jar files", foundJars,
+-                "ct.sym", "jar", "jar jar", "rt.jar");
+-    }
+-
+-    // use a new file manager for each test
+-    void test(StandardJavaFileManager fm, File f, String pkg, String[] entries) throws Exception {
+-        System.err.println("Test " + f);
+-        try {
+-            if (f.isDirectory()) {
+-                for (File dir: new File[] { f, f.getAbsoluteFile() }) {
+-                    for (String e: entries) {
+-                        JavaFileObject fo = fm.getJavaFileObjects(new File(dir, e)).iterator().next();
+-                        test(fo, dir, e);
+-                    }
+-                }
+-            }
+-
+-            fm.setLocation(StandardLocation.CLASS_PATH, Collections.singleton(f));
+-            fm.setLocation(StandardLocation.SOURCE_PATH, Collections.singleton(f.getAbsoluteFile()));
+-            for (StandardLocation l: EnumSet.of(StandardLocation.CLASS_PATH, StandardLocation.SOURCE_PATH)) {
+-                for (JavaFileObject fo: fm.list(l, pkg, EnumSet.allOf(JavaFileObject.Kind.class), true)) {
+-                    // we could use fm.getLocation but the following guarantees we preserve the original filename
+-                    File dir = (l == StandardLocation.CLASS_PATH ? f : f.getAbsoluteFile());
+-                    char sep = (dir.isDirectory() ? File.separatorChar : '/');
+-                    String b = fm.inferBinaryName(l, fo);
+-                    String e = fo.getKind().extension;
+-                    test(fo, dir, b.replace('.', sep) + e);
+-                }
+-            }
+-        } finally {
+-            fm.close();
+-        }
+-    }
+-
+-    void test(JavaFileObject fo, File dir, String p) {
+-        System.err.println("Test: " + fo);
+-        String expect = dir.isDirectory() ? new File(dir, p).getPath() : (dir.getPath() + "(" + p + ")");
+-        String found = fo.getName();
+-        // if ct.sym is found, replace it with the equivalent rt.jar
+-        String found2 = found.replaceAll("lib([\\\\/])ct.sym\\(META-INF/sym/rt.jar/", "jre$1lib$1rt.jar(");
+-        if (!expect.equals(found2)) {
+-            System.err.println("expected: " + expect);
+-            System.err.println("   found: " + found);
+-            if (!found.equals(found2))
+-                System.err.println("  found2: " + found2);
+-            error("Failed: " + fo);
+-        }
+-
+-        // record the file object class name for coverage checks later
+-        foundClasses.add(fo.getClass().getSimpleName());
+-
+-        if (found.contains("(")) {
+-            // record access to the jar file for coverage checks later
+-            foundJars.add(new File(found.substring(0, found.indexOf("("))).getName());
+-        }
+-    }
+-
+-    void checkCoverage(String label, Set<String> found, String... expect) throws Exception {
+-        Set<String> e = new TreeSet<String>(Arrays.asList(expect));
+-        if (!found.equals(e)) {
+-            e.removeAll(found);
+-            throw new Exception("expected " + label + " not used: " + e);
+-        }
+-    }
+-
+-    JavacFileManager createFileManager() {
+-        return createFileManager(false, false);
+-    }
+-
+-    JavacFileManager createFileManager(boolean useJavaUtilZip) {
+-        return createFileManager(useJavaUtilZip, false);
+-    }
+-
+-    JavacFileManager createFileManager(boolean useJavaUtilZip, boolean useSymbolFile) {
+-        // javac should really not be using system properties like this
+-        // -- it should really be using (hidden) options -- but until then
+-        // take care to leave system properties as we find them, so as not
+-        // to adversely affect other tests that might follow.
+-        String prev = System.getProperty("useJavaUtilZip");
+-        boolean resetProperties = false;
+-        try {
+-            if (useJavaUtilZip) {
+-                System.setProperty("useJavaUtilZip", "true");
+-                resetProperties = true;
+-            } else if (System.getProperty("useJavaUtilZip") != null) {
+-                System.getProperties().remove("useJavaUtilZip");
+-                resetProperties = true;
+-            }
+-
+-            Context c = new Context();
+-            if (!useSymbolFile) {
+-                Options options = Options.instance(c);
+-                options.put("ignore.symbol.file", "true");
+-            }
+-
+-            return new JavacFileManager(c, false, null);
+-        } finally {
+-            if (resetProperties) {
+-                if (prev == null) {
+-                    System.getProperties().remove("useJavaUtilZip");
+-                } else {
+-                    System.setProperty("useJavaUtilZip", prev);
+-                }
+-            }
+-        }
+-    }
+-
+-    File createDir(String name, String... entries) throws Exception {
+-        File dir = new File(name);
+-        if (!dir.mkdirs())
+-            throw new Exception("cannot create directories " + dir);
+-        for (String e: entries) {
+-            writeFile(new File(dir, e), e);
+-        }
+-        return dir;
+-    }
+-
+-    File createJar(String name, String... entries) throws IOException {
+-        File jar = new File(name);
+-        OutputStream out = new FileOutputStream(jar);
+-        try {
+-            JarOutputStream jos = new JarOutputStream(out);
+-            for (String e: entries) {
+-                jos.putNextEntry(new ZipEntry(e));
+-                jos.write(e.getBytes());
+-            }
+-            jos.close();
+-        } finally {
+-            out.close();
+-        }
+-        return jar;
+-    }
+-
+-    File findRtJar() throws Exception {
+-        File java_home = new File(System.getProperty("java.home"));
+-        if (java_home.getName().equals("jre"))
+-            java_home = java_home.getParentFile();
+-        File rt_jar = new File(new File(new File(java_home, "jre"), "lib"), "rt.jar");
+-        if (!rt_jar.exists())
+-            throw new Exception("can't find rt.jar");
+-        return rt_jar;
+-    }
+-
+-    byte[] read(InputStream in) throws IOException {
+-        byte[] data = new byte[1024];
+-        int offset = 0;
+-        try {
+-            int n;
+-            while ((n = in.read(data, offset, data.length - offset)) != -1) {
+-                offset += n;
+-                if (offset == data.length)
+-                    data = Arrays.copyOf(data, 2 * data.length);
+-            }
+-        } finally {
+-            in.close();
+-        }
+-        return Arrays.copyOf(data, offset);
+-    }
+-
+-    void writeFile(File f, String s) throws IOException {
+-        f.getParentFile().mkdirs();
+-        FileWriter out = new FileWriter(f);
+-        try {
+-            out.write(s);
+-        } finally {
+-            out.close();
+-        }
+-    }
+-
+-    void error(String msg) {
+-        System.err.println(msg);
+-        errors++;
+-    }
+-
+-    int errors;
+-}
--- a/patches/rh676659-gcc-export-dynamic.patch	Thu Mar 31 01:04:37 2011 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,12 +0,0 @@
-diff -r 55b9f498dbce make/linux/makefiles/gcc.make
---- openjdk/hotspot/make/linux/makefiles/gcc.make	Thu Feb 10 16:24:29 2011 -0800
-+++ openjdk/hotspot/make/linux/makefiles/gcc.make	Fri Feb 11 18:09:21 2011 -0500
-@@ -196,7 +196,7 @@
- SHARED_FLAG = -shared
- 
- # Keep symbols even they are not used
--AOUT_FLAGS += -export-dynamic
-+AOUT_FLAGS += -Wl,-export-dynamic
- 
- #------------------------------------------------------------------------
- # Debug flags
--- a/patches/rmi_amd64.patch	Thu Mar 31 01:04:37 2011 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,15 +0,0 @@
---- ../openjdk/jdk/make/sun/rmi/rmi/Makefile	2007-08-16 03:17:52.000000000 -0400
-+++ openjdk/jdk/make/sun/rmi/rmi/Makefile	2007-08-30 12:36:07.000000000 -0400
-@@ -88,12 +88,8 @@
- ifeq ($(PLATFORM), windows)
- build: stubs
- else # PLATFORM
--ifneq ($(ARCH_DATA_MODEL), 32)
--build: stubs
--else # ARCH_DATA_MODEL
- build: stubs bin
- endif
--endif
- 
- clean clobber:: bin.clean
- 
--- a/patches/shark-build-hotspot.patch	Thu Mar 31 01:04:37 2011 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,266 +0,0 @@
-diff -Nru openjdk.orig/hotspot/make/linux/Makefile openjdk/hotspot/make/linux/Makefile
---- openjdk.orig/hotspot/make/linux/Makefile	2008-07-03 08:39:52.000000000 +0100
-+++ openjdk/hotspot/make/linux/Makefile	2008-07-13 00:59:03.000000000 +0100
-@@ -168,6 +168,13 @@
- #       profiledzero    zero            <os>_<arch>_zero/profiled
- #       productzero     zero            <os>_<arch>_zero/product
- #
-+#       debugshark      shark           <os>_<arch>_shark/debug
-+#       fastdebugshark  shark           <os>_<arch>_shark/fastdebug
-+#       jvmgshark       shark           <os>_<arch>_shark/jvmg
-+#       optimizedshark  shark           <os>_<arch>_shark/optimized
-+#       profiledshark   shark           <os>_<arch>_shark/profiled
-+#       productshark    shark           <os>_<arch>_shark/product
-+#
- # What you get with each target:
- #
- # debug*     - "thin" libjvm_g - debug info linked into the gamma_g launcher
-@@ -191,12 +198,14 @@
- SUBDIRS_TIERED    = $(addprefix $(OSNAME)_$(BUILDARCH)_tiered/,$(TARGETS))
- SUBDIRS_CORE      = $(addprefix $(OSNAME)_$(BUILDARCH)_core/,$(TARGETS))
- SUBDIRS_ZERO      = $(addprefix $(OSNAME)_$(VARIANTARCH)_zero/,$(TARGETS))
-+SUBDIRS_SHARK     = $(addprefix $(OSNAME)_$(VARIANTARCH)_shark/,$(TARGETS))
- 
- TARGETS_C2        = $(TARGETS)
- TARGETS_C1        = $(addsuffix 1,$(TARGETS))
- TARGETS_TIERED    = $(addsuffix tiered,$(TARGETS))
- TARGETS_CORE      = $(addsuffix core,$(TARGETS))
- TARGETS_ZERO      = $(addsuffix zero,$(TARGETS))
-+TARGETS_SHARK     = $(addsuffix shark,$(TARGETS))
- 
- BUILDTREE_MAKE    = $(GAMMADIR)/make/$(OSNAME)/makefiles/buildtree.make
- BUILDTREE_VARS    = GAMMADIR=$(GAMMADIR) OS_FAMILY=$(OSNAME) ARCH=$(SRCARCH) BUILDARCH=$(BUILDARCH) LIBARCH=$(LIBARCH)
-@@ -213,6 +222,7 @@
- 	@echo "  $(TARGETS_C1)"
- 	@echo "  $(TARGETS_CORE)"
- 	@echo "  $(TARGETS_ZERO)"
-+	@echo "  $(TARGETS_SHARK)"
- 
- checks: check_os_version check_j2se_version
- 
-@@ -266,6 +276,10 @@
- 	$(QUIETLY) $(MAKE) -f $(GAMMADIR)/make/$(OSNAME)/Makefile checks
- 	$(BUILDTREE) VARIANT=zero VARIANTARCH=$(VARIANTARCH)
- 
-+$(SUBDIRS_SHARK): $(BUILDTREE_MAKE) platform_zero
-+	$(QUIETLY) $(MAKE) -f $(GAMMADIR)/make/$(OSNAME)/Makefile checks
-+	$(BUILDTREE) VARIANT=shark VARIANTARCH=$(VARIANTARCH)
-+
- platform_zero: $(GAMMADIR)/make/$(OSNAME)/platform_zero.in
- 	$(SED) 's/@ZERO_ARCHDEF@/$(ZERO_ARCHDEF)/g;s/@ZERO_LIBARCH@/$(ZERO_LIBARCH)/g;' < $< > $@
- 
-@@ -306,11 +320,19 @@
- 	cd $(OSNAME)_$(VARIANTARCH)_zero/$(patsubst %zero,%,$@) && $(MAKE) $(MFLAGS) install
- endif
- 
-+$(TARGETS_SHARK):  $(SUBDIRS_SHARK)
-+	cd $(OSNAME)_$(VARIANTARCH)_shark/$(patsubst %shark,%,$@) && $(MAKE) $(MFLAGS)
-+	cd $(OSNAME)_$(VARIANTARCH)_shark/$(patsubst %shark,%,$@) && ./test_gamma
-+ifdef INSTALL
-+	cd $(OSNAME)_$(VARIANTARCH)_shark/$(patsubst %shark,%,$@) && $(MAKE) $(MFLAGS) install
-+endif
-+
- # Just build the tree, and nothing else:
- tree:      $(SUBDIRS_C2)
- tree1:     $(SUBDIRS_C1)
- treecore:  $(SUBDIRS_CORE)
- treezero:  $(SUBDIRS_ZERO)
-+treeshark: $(SUBDIRS_SHARK)
- 
- # Doc target.  This is the same for all build options.
- #     Hence create a docs directory beside ...$(ARCH)_[...]
-@@ -327,20 +349,22 @@
- 
- zero: jvmgzero productzero
- 
-+shark: jvmgshark productshark
-+
- clean_docs:
- 	rm -rf $(SUBDIR_DOCS)
- 
--clean_compiler1 clean_compiler2 clean_core clean_zero:
-+clean_compiler1 clean_compiler2 clean_core clean_zero clean_shark:
- 	rm -rf $(OSNAME)_$(BUILDARCH)_$(subst clean_,,$@)
- 
--clean:  clean_compiler2 clean_compiler1 clean_core clean_zero clean_docs
-+clean:  clean_compiler2 clean_compiler1 clean_core clean_zero clean_shark clean_docs
- 
- include $(GAMMADIR)/make/$(OSNAME)/makefiles/cscope.make
- 
- #-------------------------------------------------------------------------------
- 
--.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: $(TARGETS_C2) $(TARGETS_C1) $(TARGETS_CORE) $(TARGETS_ZERO) $(TARGETS_SHARK)
-+.PHONY: tree tree1 treecore treezero treeshark
-+.PHONY: all compiler1 compiler2 core zero shark
-+.PHONY: clean clean_compiler1 clean_compiler2 clean_core clean_zero clean_shark docs clean_docs
- .PHONY: checks check_os_version check_j2se_version
-diff -Nru openjdk.orig/hotspot/make/linux/makefiles/buildtree.make openjdk/hotspot/make/linux/makefiles/buildtree.make
---- openjdk.orig/hotspot/make/linux/makefiles/buildtree.make	2008-07-13 00:38:03.000000000 +0100
-+++ openjdk/hotspot/make/linux/makefiles/buildtree.make	2008-07-13 00:59:03.000000000 +0100
-@@ -215,8 +215,8 @@
- 
- ../shared_dirs.lst:  $(BUILDTREE_MAKE) $(GAMMADIR)/src/share/vm
- 	@echo Creating directory list $@
--	$(QUIETLY) find $(GAMMADIR)/src/share/vm/* -prune \
--	-type d \! \( $(TOPLEVEL_EXCLUDE_DIRS) \) -exec find {} \
-+	$(QUIETLY) find -L $(GAMMADIR)/src/share/vm/* -prune \
-+	-type d \! \( $(TOPLEVEL_EXCLUDE_DIRS) \) -exec find -L {} \
-         \( $(ALWAYS_EXCLUDE_DIRS) \) -prune -o -type d -print \; > $@
- 
- Makefile: $(BUILDTREE_MAKE)
-diff -Nru openjdk.orig/hotspot/make/linux/makefiles/gcc.make openjdk/hotspot/make/linux/makefiles/gcc.make
---- openjdk.orig/hotspot/make/linux/makefiles/gcc.make	2008-07-13 00:38:03.000000000 +0100
-+++ openjdk/hotspot/make/linux/makefiles/gcc.make	2008-07-13 00:59:03.000000000 +0100
-@@ -64,6 +64,9 @@
- ifdef ICEDTEA_ZERO_BUILD
- CFLAGS += $(LIBFFI_CFLAGS)
- endif
-+ifeq ($(SHARK_BUILD), true)
-+CFLAGS += $(LLVM_CFLAGS)
-+endif
- CFLAGS += $(VM_PICFLAG)
- CFLAGS += -fno-rtti
- CFLAGS += -fno-exceptions
-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	2008-07-03 08:39:53.000000000 +0100
-+++ openjdk/hotspot/make/linux/makefiles/top.make	2008-07-13 00:59:03.000000000 +0100
-@@ -75,6 +75,7 @@
- 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/SHARK       = $(Include_DBs/ZERO) $(VM)/includeDB_shark
- Include_DBs = $(Include_DBs/$(TYPE))
- 
- Cached_plat = $(GENERATED)/platform.current
-diff -Nru openjdk.orig/hotspot/make/linux/makefiles/vm.make openjdk/hotspot/make/linux/makefiles/vm.make
---- openjdk.orig/hotspot/make/linux/makefiles/vm.make	2008-07-13 00:38:03.000000000 +0100
-+++ openjdk/hotspot/make/linux/makefiles/vm.make	2008-07-13 00:59:03.000000000 +0100
-@@ -126,10 +126,14 @@
- 
- STATIC_CXX = true
- 
--ifeq ($(ZERO_LIBARCH), ppc64)
-+ifeq ($(SHARK_BUILD), true)
-   STATIC_CXX = false
- else
--  STATIC_CXX = true
-+  ifeq ($(ZERO_LIBARCH), ppc64)
-+    STATIC_CXX = false
-+  else
-+    STATIC_CXX = true
-+  endif
- endif
- 
- ifeq ($(LINK_INTO),AOUT)
-@@ -157,6 +161,10 @@
- ifdef ICEDTEA_ZERO_BUILD
- LIBS_VM += $(LIBFFI_LIBS)
- endif
-+ifeq ($(SHARK_BUILD), true)
-+LFLAGS_VM += $(LLVM_LDFLAGS)
-+LIBS_VM   += $(LLVM_LIBS)
-+endif
- 
- LINK_VM = $(LINK_LIB.c)
- 
-diff -Nru openjdk.orig/hotspot/make/Makefile openjdk/hotspot/make/Makefile
---- openjdk.orig/hotspot/make/Makefile	2008-07-13 00:38:02.000000000 +0100
-+++ openjdk/hotspot/make/Makefile	2008-07-13 00:59:03.000000000 +0100
-@@ -85,6 +85,7 @@
- C2_VM_TARGETS=product  fastdebug  optimized  jvmg
- KERNEL_VM_TARGETS=productkernel fastdebugkernel optimizedkernel jvmgkernel
- ZERO_VM_TARGETS=productzero fastdebugzero optimizedzero jvmgzero
-+SHARK_VM_TARGETS=productshark fastdebugshark optimizedshark jvmgshark
- 
- # JDK directory list
- JDK_DIRS=bin include jre lib demo
-@@ -101,6 +102,12 @@
- all_debugzero:     jvmgzero docs export_debug
- all_optimizedzero: optimizedzero docs export_optimized
- 
-+allshark:           all_productshark all_fastdebugshark
-+all_productshark:   productshark docs export_product
-+all_fastdebugshark: fastdebugshark docs export_fastdebug
-+all_debugshark:     jvmgshark docs export_debug
-+all_optimizedshark: optimizedshark docs export_optimized
-+
- # Do everything
- world:         all create_jdk
- 
-@@ -131,6 +138,10 @@
- 	$(CD) $(GAMMADIR)/make; \
- 	$(MAKE) VM_TARGET=$@ generic_buildzero $(ALT_OUT)
- 
-+$(SHARK_VM_TARGETS):
-+	$(CD) $(GAMMADIR)/make; \
-+	$(MAKE) VM_TARGET=$@ generic_buildshark $(ALT_OUT)
-+
- # Build compiler1 (client) rule, different for platforms
- generic_build1:
- 	$(MKDIR) -p $(OUTPUTDIR)
-@@ -197,6 +208,12 @@
- 		$(MAKE) -f $(ABS_OS_MAKEFILE) \
- 			$(MAKE_ARGS) $(VM_TARGET)
- 
-+generic_buildshark:
-+	$(MKDIR) -p $(OUTPUTDIR)
-+	$(CD) $(OUTPUTDIR); \
-+		$(MAKE) -f $(ABS_OS_MAKEFILE) \
-+			$(MAKE_ARGS) $(VM_TARGET) 
-+
- # Export file rule
- generic_export: $(EXPORT_LIST)
- export_product:
-@@ -228,15 +245,22 @@
- C2_BASE_DIR=$(OUTPUTDIR)/$(VM_PLATFORM)_compiler2
- KERNEL_BASE_DIR=$(OUTPUTDIR)/$(VM_PLATFORM)_kernel
- ZERO_BASE_DIR=$(OUTPUTDIR)/$(VM_PLATFORM)_zero
-+SHARK_BASE_DIR=$(OUTPUTDIR)/$(VM_PLATFORM)_shark
- 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)
-+SHARK_DIR=$(SHARK_BASE_DIR)/$(VM_SUBDIR)
- 
- # Misc files and generated files need to come from C1 or C2 area
- ifeq ($(ZERO_BUILD), true)
-+ifeq ($(SHARK_BUILD), true)
-+  MISC_DIR=$(SHARK_DIR)
-+  GEN_DIR=$(SHARK_BASE_DIR)/generated
-+else
-   MISC_DIR=$(ZERO_DIR)
-   GEN_DIR=$(ZERO_BASE_DIR)/generated
-+endif
- else
- ifeq ($(ARCH_DATA_MODEL), 32)
-   MISC_DIR=$(C1_DIR)
-@@ -290,10 +314,17 @@
- # Shared Library
- ifneq ($(OSNAME),windows)
-   ifeq ($(ZERO_BUILD), true)
-+    ifeq ($(SHARK_BUILD), true)
-+$(EXPORT_JRE_LIB_ARCH_DIR)/%.so: $(SHARK_DIR)/%.so
-+	$(install-file)
-+$(EXPORT_SERVER_DIR)/%.so:       $(SHARK_DIR)/%.so
-+	$(install-file)
-+    else
- $(EXPORT_JRE_LIB_ARCH_DIR)/%.so: $(ZERO_DIR)/%.so
- 	$(install-file)
- $(EXPORT_SERVER_DIR)/%.so:       $(ZERO_DIR)/%.so
- 	$(install-file)
-+    endif
-   else
- $(EXPORT_JRE_LIB_ARCH_DIR)/%.so: $(C2_DIR)/%.so
- 	$(install-file)
-@@ -345,6 +376,7 @@
- 	$(RM) -r $(C2_DIR)
- 	$(RM) -r $(KERNEL_DIR)
- 	$(RM) -r $(ZERO_DIR)
-+	$(RM) -r $(SHARK_DIR)
- clean_export:
- 	$(RM) -r $(EXPORT_PATH)
- clean_jdk:
--- a/patches/shark-debug-option.patch	Thu Mar 31 01:04:37 2011 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-diff -Nru openjdk.orig/hotspot/src/cpu/zero/vm/disassembler_zero.hpp openjdk/hotspot/src/cpu/zero/vm/disassembler_zero.hpp
---- openjdk.orig/hotspot/src/cpu/zero/vm/disassembler_zero.hpp	2010-05-28 11:10:31.000000000 +0100
-+++ openjdk/hotspot/src/cpu/zero/vm/disassembler_zero.hpp	2010-06-17 19:29:24.000000000 +0100
-@@ -23,13 +23,10 @@
-  *
-  */
- 
--// The disassembler prints out zero code annotated
--// with Java specific information.
--
-   static int pd_instruction_alignment() {
--    ShouldNotCallThis();
-+    return 1;
-   }
- 
-   static const char* pd_cpu_opts() {
--    ShouldNotCallThis();
-+    return "";
-   }
-diff -Nru openjdk.orig/hotspot/src/cpu/zero/vm/globals_zero.hpp openjdk/hotspot/src/cpu/zero/vm/globals_zero.hpp
---- openjdk.orig/hotspot/src/cpu/zero/vm/globals_zero.hpp	2010-05-28 11:10:31.000000000 +0100
-+++ openjdk/hotspot/src/cpu/zero/vm/globals_zero.hpp	2010-06-17 19:29:07.000000000 +0100
-@@ -35,6 +35,7 @@
- define_pd_global(bool,  UncommonNullCast,     true);
- 
- define_pd_global(intx,  CodeEntryAlignment,   32);
-+define_pd_global(intx,  OptoLoopAlignment,    16);
- define_pd_global(intx,  InlineFrequencyCount, 100);
- define_pd_global(intx,  PreInflateSpin,       10);
- 
--- a/patches/shark_do_nothing_on_stub_frame.patch	Thu Mar 31 01:04:37 2011 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,14 +0,0 @@
-diff -Nru openjdk.orig/hotspot/src/share/vm/runtime/frame.cpp openjdk/hotspot/src/share/vm/runtime/frame.cpp
---- openjdk.orig/hotspot/src/share/vm/runtime/frame.cpp	2010-04-17 02:15:34.000000000 +0100
-+++ openjdk/hotspot/src/share/vm/runtime/frame.cpp	2010-04-18 17:37:54.000000000 +0100
-@@ -1212,6 +1212,10 @@
-     oops_entry_do(f, map);
-   } else if (CodeCache::contains(pc())) {
-     oops_code_blob_do(f, cf, map);
-+#ifdef SHARK
-+  } else if (is_fake_stub_frame()) {
-+    // nothing to do
-+#endif // SHARK
-   } else {
-     ShouldNotReachHere();
-   }
--- a/patches/ssl.patch	Thu Mar 31 01:04:37 2011 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,43 +0,0 @@
---- ../openjdkb23/openjdk/jdk/src/share/classes/sun/security/ssl/Handshaker.java	2007-10-30 04:38:10.000000000 -0400
-+++ openjdk/jdk/src/share/classes/sun/security/ssl/Handshaker.java	2007-11-13 13:06:01.000000000 -0500
-@@ -36,6 +36,7 @@
- import java.security.PrivilegedExceptionAction;
- import java.security.PrivilegedActionException;
- import java.security.cert.X509Certificate;
-+import java.security.spec.AlgorithmParameterSpec;
- 
- import javax.crypto.*;
- import javax.crypto.spec.*;
-@@ -688,8 +683,8 @@
-         SecretKey masterSecret;
-         try {
-             KeyGenerator kg = JsseJce.getKeyGenerator("SunTlsMasterSecret");
--            kg.init(spec);
--            masterSecret = kg.generateKey();
-+            kg.init((AlgorithmParameterSpec) spec);
-+	    masterSecret = kg.generateKey();
-         } catch (GeneralSecurityException e) {
-             // For RSA premaster secrets, do not signal a protocol error
-             // due to the Bleichenbacher attack. See comments further down.
---- ../openjdkb23/openjdk/jdk/src/share/classes/sun/security/ssl/RSAClientKeyExchange.java	2007-10-30 04:38:10.000000000 -0400
-+++ openjdk/jdk/src/share/classes/sun/security/ssl/RSAClientKeyExchange.java	2007-11-13 13:06:42.000000000 -0500
-@@ -36,6 +36,8 @@
- import javax.net.ssl.*;
- 
- import sun.security.internal.spec.TlsRsaPremasterSecretParameterSpec;
-+import java.security.spec.AlgorithmParameterSpec;
-+
- 
- /**
-  * This is the client key exchange message (CLIENT --> SERVER) used with
-@@ -104,8 +106,8 @@
- 
-         try {
-             KeyGenerator kg = JsseJce.getKeyGenerator("SunTlsRsaPremasterSecret");
--            kg.init(new TlsRsaPremasterSecretParameterSpec(major, minor));
--            preMaster = kg.generateKey();
-+            kg.init((AlgorithmParameterSpec) (new TlsRsaPremasterSecretParameterSpec(major, minor)));
-+	    preMaster = kg.generateKey();
- 
-             Cipher cipher = JsseJce.getCipher(JsseJce.CIPHER_RSA_PKCS1);
-             cipher.init(Cipher.WRAP_MODE, publicKey, generator);
--- a/patches/tools.patch	Thu Mar 31 01:04:37 2011 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,83 +0,0 @@
-diff -ruN openjdk-ecj/jdk/make/tools/sharing/classlist.linux openjdk/jdk/make/tools/sharing/classlist.linux
---- openjdk-ecj/jdk/make/tools/sharing/classlist.linux	2007-08-30 03:19:44.000000000 -0400
-+++ openjdk/jdk/make/tools/sharing/classlist.linux	2007-09-04 13:33:52.000000000 -0400
-@@ -330,7 +330,6 @@
- java/beans/PropertyChangeEvent
- java/util/EventObject
- java/awt/Component$AWTTreeLock
--sun/awt/DebugHelper
- sun/awt/NativeLibLoader
- sun/security/action/LoadLibraryAction
- java/awt/GraphicsEnvironment
-@@ -341,7 +340,6 @@
- java/lang/ProcessEnvironment$Value
- java/lang/ProcessEnvironment$StringEnvironment
- java/util/Collections$UnmodifiableMap
--sun/awt/DebugHelperStub
- java/awt/Toolkit
- java/awt/Toolkit$3
- sun/util/CoreResourceBundleControl
-diff -ruN openjdk-ecj/jdk/make/tools/sharing/classlist.solaris openjdk/jdk/make/tools/sharing/classlist.solaris
---- openjdk-ecj/jdk/make/tools/sharing/classlist.solaris	2007-08-30 03:19:44.000000000 -0400
-+++ openjdk/jdk/make/tools/sharing/classlist.solaris	2007-09-04 13:34:17.000000000 -0400
-@@ -332,7 +332,6 @@
- java/beans/PropertyChangeEvent
- java/util/EventObject
- java/awt/Component$AWTTreeLock
--sun/awt/DebugHelper
- sun/awt/NativeLibLoader
- sun/security/action/LoadLibraryAction
- java/awt/GraphicsEnvironment
-@@ -343,7 +342,6 @@
- java/lang/ProcessEnvironment$Value
- java/lang/ProcessEnvironment$StringEnvironment
- java/util/Collections$UnmodifiableMap
--sun/awt/DebugHelperStub
- java/awt/Toolkit
- java/awt/Toolkit$3
- sun/util/CoreResourceBundleControl
-diff -ruN openjdk-ecj/jdk/make/tools/sharing/classlist.windows openjdk/jdk/make/tools/sharing/classlist.windows
---- openjdk-ecj/jdk/make/tools/sharing/classlist.windows	2007-08-30 03:19:44.000000000 -0400
-+++ openjdk/jdk/make/tools/sharing/classlist.windows	2007-09-04 13:34:05.000000000 -0400
-@@ -333,10 +333,8 @@
- java/beans/PropertyChangeEvent
- java/util/EventObject
- java/awt/Component$AWTTreeLock
--sun/awt/DebugHelper
- sun/awt/NativeLibLoader
- sun/security/action/LoadLibraryAction
--sun/awt/DebugHelperStub
- java/awt/Toolkit
- java/awt/Toolkit$3
- sun/util/CoreResourceBundleControl
---- openjdk.orig/jdk/make/java/awt/Makefile	2008-02-28 04:39:42.000000000 -0500
-+++ openjdk/jdk/make/java/awt/Makefile	2008-02-29 14:58:50.000000000 -0500
-@@ -34,7 +34,7 @@
- #
- AUTO_FILES_JAVA_DIRS = java/awt sun/awt/geom
- 
--build: properties cursors
-+build: sources properties cursors
- 
- #
- # Resources
-@@ -47,9 +47,11 @@
- #
- include $(BUILDDIR)/common/Classes.gmk
- 
-+sources:
- 
- clean:: properties.clean sun.geom.clean cursors.clean
- 
-+
- _LIBPROPS = \
- 	flavormap.properties
- 
-@@ -102,6 +104,6 @@
- cursors.clean :
- 	$(RM) -r $(CURSORDIR)
- 
--.PHONY: properties properties.clean \
-+.PHONY: sources properties properties.clean \
- 	cursors sun.geom.clean cursors.clean
- 
--- a/patches/xrender-gc-cleanup.patch	Thu Mar 31 01:04:37 2011 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,12 +0,0 @@
---- openjdk.orig/jdk/src/solaris/classes/sun/java2d/xr/XRSurfaceData.java	2010-10-22 19:59:12.530975783 +0200
-+++ openjdk/jdk/src/solaris/classes/sun/java2d/xr/XRSurfaceData.java	2010-10-22 19:59:12.020734687 +0200
-@@ -479,8 +485,7 @@
-         if (xrpipe == null) {
-             try {
-                 SunToolkit.awtLock();
--                xgc = renderQueue.createGC(xid); // TODO: GC leak? where to
--                // clean up?
-+                xgc = XCreateGC(getNativeOps());
- 
-                 xrpipe = new XRRenderer(maskBuffer.getMaskBuffer());
-                 xrtxpipe = new PixelToShapeConverter(xrpipe);
--- a/tapset/hotspot_jni.stp.in	Thu Mar 31 01:04:37 2011 +0100
+++ b/tapset/hotspot_jni.stp.in	Wed May 18 15:46:37 2011 +0100
@@ -1067,6 +1067,7 @@
  *
  * env - JNIEnv pointer.
  * obj - jobject reference.
+ * clazz - jclass reference.
  * methodid - ID of the method to call.
  */
 probe hotspot.jni.CallNonvirtualBooleanMethodA =
@@ -1076,8 +1077,9 @@
   name = "CallNonvirtualBooleanMethodA"
   env = $arg1
   obj = $arg2
-  methodid = $arg3
-  probestr = sprintf("%s(env=0x%x,obj=0x%x,methodid=0x%x)", name, env, obj, methodid)
+  clazz = $arg3
+  methodid = $arg4
+  probestr = sprintf("%s(env=0x%x,obj=0x%x,clazz=0x%x,methodid=0x%x)", name, env, obj, clazz, methodid)
 }
 
 /* hotspot.jni.CallNonvirtualBooleanMethodA.return
@@ -1099,6 +1101,7 @@
  *
  * env - JNIEnv pointer.
  * obj - jobject reference.
+ * clazz - jclass reference.
  * methodid - ID of the method to call.
  */
 probe hotspot.jni.CallNonvirtualBooleanMethod =
@@ -1108,8 +1111,9 @@
   name = "CallNonvirtualBooleanMethod"
   env = $arg1
   obj = $arg2
-  methodid = $arg3
-  probestr = sprintf("%s(env=0x%x,obj=0x%x,methodid=0x%x)", name, env, obj, methodid)
+  clazz = $arg3
+  methodid = $arg4
+  probestr = sprintf("%s(env=0x%x,obj=0x%x,clazz=0x%x,methodid=0x%x)", name, env, obj, clazz, methodid)
 }
 
 /* hotspot.jni.CallNonvirtualBooleanMethod.return
@@ -1131,6 +1135,7 @@
  *
  * env - JNIEnv pointer.
  * obj - jobject reference.
+ * clazz - jclass reference.
  * methodid - ID of the method to call.
  */
 probe hotspot.jni.CallNonvirtualBooleanMethodV =
@@ -1140,8 +1145,9 @@
   name = "CallNonvirtualBooleanMethodV"
   env = $arg1
   obj = $arg2
-  methodid = $arg3
-  probestr = sprintf("%s(env=0x%x,obj=0x%x,methodid=0x%x)", name, env, obj, methodid)
+  clazz = $arg3
+  methodid = $arg4
+  probestr = sprintf("%s(env=0x%x,obj=0x%x,clazz=0x%x,methodid=0x%x)", name, env, obj, clazz, methodid)
 }
 
 /* hotspot.jni.CallNonvirtualBooleanMethodV.return
@@ -1163,6 +1169,7 @@
  *
  * env - JNIEnv pointer.
  * obj - jobject reference.
+ * clazz - jclass reference.
  * methodid - ID of the method to call.
  */
 probe hotspot.jni.CallNonvirtualByteMethodA =
@@ -1172,8 +1179,9 @@
   name = "CallNonvirtualByteMethodA"
   env = $arg1
   obj = $arg2
-  methodid = $arg3
-  probestr = sprintf("%s(env=0x%x,obj=0x%x,methodid=0x%x)", name, env, obj, methodid)
+  clazz = $arg3
+  methodid = $arg4
+  probestr = sprintf("%s(env=0x%x,obj=0x%x,clazz=0x%x,methodid=0x%x)", name, env, obj, clazz, methodid)
 }
 
 /* hotspot.jni.CallNonvirtualByteMethodA.return
@@ -1195,6 +1203,7 @@
  *
  * env - JNIEnv pointer.
  * obj - jobject reference.
+ * clazz - jclass reference.
  * methodid - ID of the method to call.
  */
 probe hotspot.jni.CallNonvirtualByteMethod =
@@ -1204,8 +1213,9 @@
   name = "CallNonvirtualByteMethod"
   env = $arg1
   obj = $arg2
-  methodid = $arg3
-  probestr = sprintf("%s(env=0x%x,obj=0x%x,methodid=0x%x)", name, env, obj, methodid)
+  clazz = $arg3
+  methodid = $arg4
+  probestr = sprintf("%s(env=0x%x,obj=0x%x,clazz=0x%x,methodid=0x%x)", name, env, obj, clazz, methodid)
 }
 
 /* hotspot.jni.CallNonvirtualByteMethod.return
@@ -1227,6 +1237,7 @@
  *
  * env - JNIEnv pointer.
  * obj - jobject reference.
+ * clazz - jclass reference.
  * methodid - ID of the method to call.
  */
 probe hotspot.jni.CallNonvirtualByteMethodV =
@@ -1236,8 +1247,9 @@
   name = "CallNonvirtualByteMethodV"
   env = $arg1
   obj = $arg2
-  methodid = $arg3
-  probestr = sprintf("%s(env=0x%x,obj=0x%x,methodid=0x%x)", name, env, obj, methodid)
+  clazz = $arg3
+  methodid = $arg4
+  probestr = sprintf("%s(env=0x%x,obj=0x%x,clazz=0x%x,methodid=0x%x)", name, env, obj, clazz, methodid)
 }
 
 /* hotspot.jni.CallNonvirtualByteMethodV.return
@@ -1259,6 +1271,7 @@
  *
  * env - JNIEnv pointer.
  * obj - jobject reference.
+ * clazz - jclass reference.
  * methodid - ID of the method to call.
  */
 probe hotspot.jni.CallNonvirtualCharMethodA =
@@ -1268,8 +1281,9 @@
   name = "CallNonvirtualCharMethodA"
   env = $arg1
   obj = $arg2
-  methodid = $arg3
-  probestr = sprintf("%s(env=0x%x,obj=0x%x,methodid=0x%x)", name, env, obj, methodid)
+  clazz = $arg3
+  methodid = $arg4
+  probestr = sprintf("%s(env=0x%x,obj=0x%x,clazz=0x%x,methodid=0x%x)", name, env, obj, clazz, methodid)
 }
 
 /* hotspot.jni.CallNonvirtualCharMethodA.return
@@ -1291,6 +1305,7 @@
  *
  * env - JNIEnv pointer.
  * obj - jobject reference.
+ * clazz - jclass reference.
  * methodid - ID of the method to call.
  */
 probe hotspot.jni.CallNonvirtualCharMethod =
@@ -1300,8 +1315,9 @@
   name = "CallNonvirtualCharMethod"
   env = $arg1
   obj = $arg2
-  methodid = $arg3
-  probestr = sprintf("%s(env=0x%x,obj=0x%x,methodid=0x%x)", name, env, obj, methodid)
+  clazz = $arg3
+  methodid = $arg4
+  probestr = sprintf("%s(env=0x%x,obj=0x%x,clazz=0x%x,methodid=0x%x)", name, env, obj, clazz, methodid)
 }
 
 /* hotspot.jni.CallNonvirtualCharMethod.return
@@ -1323,6 +1339,7 @@
  *
  * env - JNIEnv pointer.
  * obj - jobject reference.
+ * clazz - jclass reference.
  * methodid - ID of the method to call.
  */
 probe hotspot.jni.CallNonvirtualCharMethodV =
@@ -1332,8 +1349,9 @@
   name = "CallNonvirtualCharMethodV"
   env = $arg1
   obj = $arg2
-  methodid = $arg3
-  probestr = sprintf("%s(env=0x%x,obj=0x%x,methodid=0x%x)", name, env, obj, methodid)
+  clazz = $arg3
+  methodid = $arg4
+  probestr = sprintf("%s(env=0x%x,obj=0x%x,clazz=0x%x,methodid=0x%x)", name, env, obj, clazz, methodid)
 }
 
 /* hotspot.jni.CallNonvirtualCharMethodV.return
@@ -1355,6 +1373,7 @@
  *
  * env - JNIEnv pointer.
  * obj - jobject reference.
+ * clazz - jclass reference.
  * methodid - ID of the method to call.
  */
 probe hotspot.jni.CallNonvirtualDoubleMethodA =
@@ -1364,8 +1383,9 @@
   name = "CallNonvirtualDoubleMethodA"
   env = $arg1
   obj = $arg2
-  methodid = $arg3
-  probestr = sprintf("%s(env=0x%x,obj=0x%x,methodid=0x%x)", name, env, obj, methodid)
+  clazz = $arg3
+  methodid = $arg4
+  probestr = sprintf("%s(env=0x%x,obj=0x%x,clazz=0x%x,methodid=0x%x)", name, env, obj, clazz, methodid)
 }
 
 /* hotspot.jni.CallNonvirtualDoubleMethodA.return
@@ -1384,6 +1404,7 @@
  *
  * env - JNIEnv pointer.
  * obj - jobject reference.
+ * clazz - jclass reference.
  * methodid - ID of the method to call.
  */
 probe hotspot.jni.CallNonvirtualDoubleMethod =
@@ -1393,8 +1414,9 @@
   name = "CallNonvirtualDoubleMethod"
   env = $arg1
   obj = $arg2
-  methodid = $arg3
-  probestr = sprintf("%s(env=0x%x,obj=0x%x,methodid=0x%x)", name, env, obj, methodid)
+  clazz = $arg3
+  methodid = $arg4
+  probestr = sprintf("%s(env=0x%x,obj=0x%x,clazz=0x%x,methodid=0x%x)", name, env, obj, clazz, methodid)
 }
 
 /* hotspot.jni.CallNonvirtualDoubleMethod.return
@@ -1413,6 +1435,7 @@
  *
  * env - JNIEnv pointer.
  * obj - jobject reference.
+ * clazz - jclass reference.
  * methodid - ID of the method to call.
  */
 probe hotspot.jni.CallNonvirtualDoubleMethodV =
@@ -1422,8 +1445,9 @@
   name = "CallNonvirtualDoubleMethodV"
   env = $arg1
   obj = $arg2
-  methodid = $arg3
-  probestr = sprintf("%s(env=0x%x,obj=0x%x,methodid=0x%x)", name, env, obj, methodid)
+  clazz = $arg3
+  methodid = $arg4
+  probestr = sprintf("%s(env=0x%x,obj=0x%x,clazz=0x%x,methodid=0x%x)", name, env, obj, clazz, methodid)
 }
 
 /* hotspot.jni.CallNonvirtualDoubleMethodV.return
@@ -1442,6 +1466,7 @@
  *
  * env - JNIEnv pointer.
  * obj - jobject reference.
+ * clazz - jclass reference.
  * methodid - ID of the method to call.
  */
 probe hotspot.jni.CallNonvirtualFloatMethodA =
@@ -1451,8 +1476,9 @@
   name = "CallNonvirtualFloatMethodA"
   env = $arg1
   obj = $arg2
-  methodid = $arg3
-  probestr = sprintf("%s(env=0x%x,obj=0x%x,methodid=0x%x)", name, env, obj, methodid)
+  clazz = $arg3
+  methodid = $arg4
+  probestr = sprintf("%s(env=0x%x,obj=0x%x,clazz=0x%x,methodid=0x%x)", name, env, obj, clazz, methodid)
 }
 
 /* hotspot.jni.CallNonvirtualFloatMethodA.return
@@ -1471,6 +1497,7 @@
  *
  * env - JNIEnv pointer.
  * obj - jobject reference.
+ * clazz - jclass reference.
  * methodid - ID of the method to call.
  */
 probe hotspot.jni.CallNonvirtualFloatMethod =
@@ -1480,8 +1507,9 @@
   name = "CallNonvirtualFloatMethod"
   env = $arg1
   obj = $arg2
-  methodid = $arg3
-  probestr = sprintf("%s(env=0x%x,obj=0x%x,methodid=0x%x)", name, env, obj, methodid)
+  clazz = $arg3
+  methodid = $arg4
+  probestr = sprintf("%s(env=0x%x,obj=0x%x,clazz=0x%x,methodid=0x%x)", name, env, obj, clazz, methodid)
 }
 
 /* hotspot.jni.CallNonvirtualFloatMethod.return
@@ -1500,6 +1528,7 @@
  *
  * env - JNIEnv pointer.
  * obj - jobject reference.
+ * clazz - jclass reference.
  * methodid - ID of the method to call.
  */
 probe hotspot.jni.CallNonvirtualFloatMethodV =
@@ -1509,8 +1538,9 @@
   name = "CallNonvirtualFloatMethodV"
   env = $arg1
   obj = $arg2
-  methodid = $arg3
-  probestr = sprintf("%s(env=0x%x,obj=0x%x,methodid=0x%x)", name, env, obj, methodid)
+  clazz = $arg3
+  methodid = $arg4
+  probestr = sprintf("%s(env=0x%x,obj=0x%x,clazz=0x%x,methodid=0x%x)", name, env, obj, clazz, methodid)
 }
 
 /* hotspot.jni.CallNonvirtualFloatMethodV.return
@@ -1529,6 +1559,7 @@
  *
  * env - JNIEnv pointer.
  * obj - jobject reference.
+ * clazz - jclass reference.
  * methodid - ID of the method to call.
  */
 probe hotspot.jni.CallNonvirtualIntMethodA =
@@ -1538,8 +1569,9 @@
   name = "CallNonvirtualIntMethodA"
   env = $arg1
   obj = $arg2
-  methodid = $arg3
-  probestr = sprintf("%s(env=0x%x,obj=0x%x,methodid=0x%x)", name, env, obj, methodid)
+  clazz = $arg3
+  methodid = $arg4
+  probestr = sprintf("%s(env=0x%x,obj=0x%x,clazz=0x%x,methodid=0x%x)", name, env, obj, clazz, methodid)
 }
 
 /* hotspot.jni.CallNonvirtualIntMethodA.return
@@ -1561,6 +1593,7 @@
  *
  * env - JNIEnv pointer.
  * obj - jobject reference.
+ * clazz - jclass reference.
  * methodid - ID of the method to call.
  */
 probe hotspot.jni.CallNonvirtualIntMethod =
@@ -1570,8 +1603,9 @@
   name = "CallNonvirtualIntMethod"
   env = $arg1
   obj = $arg2
-  methodid = $arg3
-  probestr = sprintf("%s(env=0x%x,obj=0x%x,methodid=0x%x)", name, env, obj, methodid)
+  clazz = $arg3
+  methodid = $arg4
+  probestr = sprintf("%s(env=0x%x,obj=0x%x,clazz=0x%x,methodid=0x%x)", name, env, obj, clazz, methodid)
 }
 
 /* hotspot.jni.CallNonvirtualIntMethod.return
@@ -1593,6 +1627,7 @@
  *
  * env - JNIEnv pointer.
  * obj - jobject reference.
+ * clazz - jclass reference.
  * methodid - ID of the method to call.
  */
 probe hotspot.jni.CallNonvirtualIntMethodV =
@@ -1602,8 +1637,9 @@
   name = "CallNonvirtualIntMethodV"
   env = $arg1
   obj = $arg2
-  methodid = $arg3
-  probestr = sprintf("%s(env=0x%x,obj=0x%x,methodid=0x%x)", name, env, obj, methodid)
+  clazz = $arg3
+  methodid = $arg4
+  probestr = sprintf("%s(env=0x%x,obj=0x%x,clazz=0x%x,methodid=0x%x)", name, env, obj, clazz, methodid)
 }
 
 /* hotspot.jni.CallNonvirtualIntMethodV.return
@@ -1625,6 +1661,7 @@
  *
  * env - JNIEnv pointer.
  * obj - jobject reference.
+ * clazz - jclass reference.
  * methodid - ID of the method to call.
  */
 probe hotspot.jni.CallNonvirtualLongMethodA =
@@ -1634,8 +1671,9 @@
   name = "CallNonvirtualLongMethodA"
   env = $arg1
   obj = $arg2
-  methodid = $arg3
-  probestr = sprintf("%s(env=0x%x,obj=0x%x,methodid=0x%x)", name, env, obj, methodid)
+  clazz = $arg3
+  methodid = $arg4
+  probestr = sprintf("%s(env=0x%x,obj=0x%x,clazz=0x%x,methodid=0x%x)", name, env, obj, clazz, methodid)
 }
 
 /* hotspot.jni.CallNonvirtualLongMethodA.return
@@ -1657,6 +1695,7 @@
  *
  * env - JNIEnv pointer.
  * obj - jobject reference.
+ * clazz - jclass reference.
  * methodid - ID of the method to call.
  */
 probe hotspot.jni.CallNonvirtualLongMethod =
@@ -1666,8 +1705,9 @@
   name = "CallNonvirtualLongMethod"
   env = $arg1
   obj = $arg2
-  methodid = $arg3
-  probestr = sprintf("%s(env=0x%x,obj=0x%x,methodid=0x%x)", name, env, obj, methodid)
+  clazz = $arg3
+  methodid = $arg4
+  probestr = sprintf("%s(env=0x%x,obj=0x%x,clazz=0x%x,methodid=0x%x)", name, env, obj, clazz, methodid)
 }
 
 /* hotspot.jni.CallNonvirtualLongMethod.return
@@ -1689,6 +1729,7 @@
  *
  * env - JNIEnv pointer.
  * obj - jobject reference.
+ * clazz - jclass reference.
  * methodid - ID of the method to call.
  */
 probe hotspot.jni.CallNonvirtualLongMethodV =
@@ -1698,8 +1739,9 @@
   name = "CallNonvirtualLongMethodV"
   env = $arg1
   obj = $arg2
-  methodid = $arg3
-  probestr = sprintf("%s(env=0x%x,obj=0x%x,methodid=0x%x)", name, env, obj, methodid)
+  clazz = $arg3
+  methodid = $arg4
+  probestr = sprintf("%s(env=0x%x,obj=0x%x,clazz=0x%x,methodid=0x%x)", name, env, obj, clazz, methodid)
 }
 
 /* hotspot.jni.CallNonvirtualLongMethodV.return
@@ -1721,6 +1763,7 @@
  *
  * env - JNIEnv pointer.
  * obj - jobject reference.
+ * clazz - jclass reference.
  * methodid - ID of the method to call.
  */
 probe hotspot.jni.CallNonvirtualObjectMethodA =
@@ -1730,8 +1773,9 @@
   name = "CallNonvirtualObjectMethodA"
   env = $arg1
   obj = $arg2
-  methodid = $arg3
-  probestr = sprintf("%s(env=0x%x,obj=0x%x,methodid=0x%x)", name, env, obj, methodid)
+  clazz = $arg3
+  methodid = $arg4
+  probestr = sprintf("%s(env=0x%x,obj=0x%x,clazz=0x%x,methodid=0x%x)", name, env, obj, clazz, methodid)
 }
 
 /* hotspot.jni.CallNonvirtualObjectMethodA.return
@@ -1753,6 +1797,7 @@
  *
  * env - JNIEnv pointer.
  * obj - jobject reference.
+ * clazz - jclass reference.
  * methodid - ID of the method to call.
  */
 probe hotspot.jni.CallNonvirtualObjectMethod =
@@ -1762,8 +1807,9 @@
   name = "CallNonvirtualObjectMethod"
   env = $arg1
   obj = $arg2
-  methodid = $arg3
-  probestr = sprintf("%s(env=0x%x,obj=0x%x,methodid=0x%x)", name, env, obj, methodid)
+  clazz = $arg3
+  methodid = $arg4
+  probestr = sprintf("%s(env=0x%x,obj=0x%x,clazz=0x%x,methodid=0x%x)", name, env, obj, clazz, methodid)
 }
 
 /* hotspot.jni.CallNonvirtualObjectMethod.return
@@ -1785,6 +1831,7 @@
  *
  * env - JNIEnv pointer.
  * obj - jobject reference.
+ * clazz - jclass reference.
  * methodid - ID of the method to call.
  */
 probe hotspot.jni.CallNonvirtualObjectMethodV =
@@ -1794,8 +1841,9 @@
   name = "CallNonvirtualObjectMethodV"
   env = $arg1
   obj = $arg2
-  methodid = $arg3
-  probestr = sprintf("%s(env=0x%x,obj=0x%x,methodid=0x%x)", name, env, obj, methodid)
+  clazz = $arg3
+  methodid = $arg4
+  probestr = sprintf("%s(env=0x%x,obj=0x%x,clazz=0x%x,methodid=0x%x)", name, env, obj, clazz, methodid)
 }
 
 /* hotspot.jni.CallNonvirtualObjectMethodV.return
@@ -1817,6 +1865,7 @@
  *
  * env - JNIEnv pointer.
  * obj - jobject reference.
+ * clazz - jclass reference.
  * methodid - ID of the method to call.
  */
 probe hotspot.jni.CallNonvirtualShortMethodA =
@@ -1826,8 +1875,9 @@
   name = "CallNonvirtualShortMethodA"
   env = $arg1
   obj = $arg2
-  methodid = $arg3
-  probestr = sprintf("%s(env=0x%x,obj=0x%x,methodid=0x%x)", name, env, obj, methodid)
+  clazz = $arg3
+  methodid = $arg4
+  probestr = sprintf("%s(env=0x%x,obj=0x%x,clazz=0x%x,methodid=0x%x)", name, env, obj, clazz, methodid)
 }
 
 /* hotspot.jni.CallNonvirtualShortMethodA.return
@@ -1849,6 +1899,7 @@
  *
  * env - JNIEnv pointer.
  * obj - jobject reference.
+ * clazz - jclass reference.
  * methodid - ID of the method to call.
  */
 probe hotspot.jni.CallNonvirtualShortMethod =
@@ -1858,8 +1909,9 @@
   name = "CallNonvirtualShortMethod"
   env = $arg1
   obj = $arg2
-  methodid = $arg3
-  probestr = sprintf("%s(env=0x%x,obj=0x%x,methodid=0x%x)", name, env, obj, methodid)
+  clazz = $arg3
+  methodid = $arg4
+  probestr = sprintf("%s(env=0x%x,obj=0x%x,clazz=0x%x,methodid=0x%x)", name, env, obj, clazz, methodid)
 }
 
 /* hotspot.jni.CallNonvirtualShortMethod.return
@@ -1881,6 +1933,7 @@
  *
  * env - JNIEnv pointer.
  * obj - jobject reference.
+ * clazz - jclass reference.
  * methodid - ID of the method to call.
  */
 probe hotspot.jni.CallNonvirtualShortMethodV =
@@ -1890,8 +1943,9 @@
   name = "CallNonvirtualShortMethodV"
   env = $arg1
   obj = $arg2
-  methodid = $arg3
-  probestr = sprintf("%s(env=0x%x,obj=0x%x,methodid=0x%x)", name, env, obj, methodid)
+  clazz = $arg3
+  methodid = $arg4
+  probestr = sprintf("%s(env=0x%x,obj=0x%x,clazz=0x%x,methodid=0x%x)", name, env, obj, clazz, methodid)
 }
 
 /* hotspot.jni.CallNonvirtualShortMethodV.return
@@ -1913,6 +1967,7 @@
  *
  * env - JNIEnv pointer.
  * obj - jobject reference.
+ * clazz - jclass reference.
  * methodid - ID of the method to call.
  */
 probe hotspot.jni.CallNonvirtualVoidMethodA =
@@ -1922,8 +1977,9 @@
   name = "CallNonvirtualVoidMethodA"
   env = $arg1
   obj = $arg2
-  methodid = $arg3
-  probestr = sprintf("%s(env=0x%x,obj=0x%x,methodid=0x%x)", name, env, obj, methodid)
+  clazz = $arg3
+  methodid = $arg4
+  probestr = sprintf("%s(env=0x%x,obj=0x%x,clazz=0x%x,methodid=0x%x)", name, env, obj, clazz, methodid)
 }
 
 /* hotspot.jni.CallNonvirtualVoidMethodA.return
@@ -1942,6 +1998,7 @@
  *
  * env - JNIEnv pointer.
  * obj - jobject reference.
+ * clazz - jclass reference.
  * methodid - ID of the method to call.
  */
 probe hotspot.jni.CallNonvirtualVoidMethod =
@@ -1951,8 +2008,9 @@
   name = "CallNonvirtualVoidMethod"
   env = $arg1
   obj = $arg2
-  methodid = $arg3
-  probestr = sprintf("%s(env=0x%x,obj=0x%x,methodid=0x%x)", name, env, obj, methodid)
+  clazz = $arg3
+  methodid = $arg4
+  probestr = sprintf("%s(env=0x%x,obj=0x%x,clazz=0x%x,methodid=0x%x)", name, env, obj, clazz, methodid)
 }
 
 /* hotspot.jni.CallNonvirtualVoidMethod.return
@@ -1971,6 +2029,7 @@
  *
  * env - JNIEnv pointer.
  * obj - jobject reference.
+ * clazz - jclass reference.
  * methodid - ID of the method to call.
  */
 probe hotspot.jni.CallNonvirtualVoidMethodV =
@@ -1980,8 +2039,9 @@
   name = "CallNonvirtualVoidMethodV"
   env = $arg1
   obj = $arg2
-  methodid = $arg3
-  probestr = sprintf("%s(env=0x%x,obj=0x%x,methodid=0x%x)", name, env, obj, methodid)
+  clazz = $arg3
+  methodid = $arg4
+  probestr = sprintf("%s(env=0x%x,obj=0x%x,clazz=0x%x,methodid=0x%x)", name, env, obj, clazz, methodid)
 }
 
 /* hotspot.jni.CallNonvirtualVoidMethodV.return