openjdk-6: remove one patch which is not needed anymore
authorHenning Heinold <heinold@inf.fu-berlin.de>
Fri, 4 Feb 2011 17:57:18 +0000 (18:57 +0100)
committerHenning Heinold <heinold@inf.fu-berlin.de>
Fri, 4 Feb 2011 18:13:16 +0000 (19:13 +0100)
recipes/openjdk/openjdk-6-6b18-1.8/icedtea1.8-pre1.8.1-releasebranch-fixes.patch [deleted file]

diff --git a/recipes/openjdk/openjdk-6-6b18-1.8/icedtea1.8-pre1.8.1-releasebranch-fixes.patch b/recipes/openjdk/openjdk-6-6b18-1.8/icedtea1.8-pre1.8.1-releasebranch-fixes.patch
deleted file mode 100644 (file)
index b48bcf0..0000000
+++ /dev/null
@@ -1,4784 +0,0 @@
-diff -r d1ad52447673 ChangeLog
---- a/ChangeLog        Wed Apr 14 12:21:30 2010 +0200
-+++ b/ChangeLog        Tue Jul 20 16:36:52 2010 +0200
-@@ -1,3 +1,261 @@
-+2010-07-19  Gary Benson  <gbenson@redhat.com>
-+
-+      PR icedtea/483
-+      * ports/hotspot/src/share/vm/shark/sharkNativeWrapper.cpp
-+      (SharkNativeWrapper::initialize): Fix signedness of T_BYTE
-+      and T_CHAR results.
-+
-+2010-07-16  Deepak Bhole <dbhole@redhat.com>
-+
-+      * patches/icedtea-policy-evaluation.patch: New patch. Fixes policy
-+      evaluation to match the proprietary JDK.
-+
-+2010-07-15  Deepak Bhole <dbhole@redhat.com>
-+
-+      * patches/openjdk/6678385.patch: New file. Backpatched from jdk7 for 
-+      upstream bug#6678385. Fixes rhbz# 551835. Fixes jvm crashes when window is
-+      resized.
-+
-+2010-07-14  Jon VanAlten  <jon.vanalten@redhat.com>
-+
-+      * patches/icedtea-override-redirect-metacity.patch: Produces the
-+      "expected" behavior for full screen applications or other situations
-+      where developers wish to present elements that would cover things like
-+      panels.  We previously had a version of this patch since changeset 876
-+      ebc064e8892d, but dropped it in changeset changeset 1731
-+      83619682858e because upstream had rejected as a metacity bug[1].
-+      Metacity maintains that this behavior does not break any spec and does
-+      not appear likely to change either[2], so we must be the "good guys" and
-+      provide the expected behavior.  See discussion[3].
-+      [1] http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6514512
-+      [2] https://bugzilla.gnome.org/show_bug.cgi?id=405269
-+      [3] http://mail.openjdk.java.net/pipermail/distro-pkg-dev/2010-April/008862.html
-+      * Makefile.am: Apply icedtea-override-redirect-metacity.patch.
-+
-+2010-07-13  Mark Wielaard  <mjw@redhat.com>
-+
-+      Reported by William Cohen <wcohen@redhat.com>
-+      * tapset/hotspot.stp.in (object_alloc): size is arg4, not arg3.
-+
-+2010-07-14  Deepak Bhole <dbhole@redhat.com>
-+
-+      * plugin/icedteanp/java/sun/applet/PluginMessageConsumer.java: Add a new
-+      processedIds list to track which instances have been instantiated.
-+      (okToProcess): Register width as priority only after handle is acquired.
-+      Process resize messages only after tag and handle are processed.
-+      (notifyWorkerIsFree): Add instance id to processedIds list if the worked
-+      being free'd is an init worker.
-+      (getFreeWorker): Create new normal worked only if worker count is less
-+      than MAX_WORKERS - PRIORITY_WORKERS.
-+      (dumpWorkerStatus): New method. Useful when debugging -- prints status of
-+      all workers.
-+      * plugin/icedteanp/java/sun/applet/PluginMessageHandlerWorker.java
-+      (toString): New method. Returns the string representation of the worker
-+      instance at call time.
-+
-+2010-07-13  Matthias Klose  <doko@ubuntu.com>
-+
-+      * acinclude.m4 (IT_CHECK_PLUGIN_DEPENDENCIES): Don't require libxul
-+      libraries.
-+      (IT_CHECK_XULRUNNER_VERSION): Use pkgconfig --modversion as version.
-+
-+2010-07-13  Deepak Bhole <dbhole@redhat.com>
-+
-+      * plugin/icedteanp/IcedTeaJavaRequestProcessor.h: Set timeout to 120
-+      seconds (previous commit mistakenly changed it to 10).
-+      * plugin/icedteanp/IcedTeaPluginUtils.h: Print debug info only in debug
-+      mode.
-+
-+2010-06-14  Deepak Bhole <dbhole@redhat.com>
-+
-+      * plugin/icedteanp/IcedTeaJavaRequestProcessor.cc: Use variadic macro
-+      for debug message printing.
-+      * plugin/icedteanp/IcedTeaJavaRequestProcessor.h: Same.
-+      * plugin/icedteanp/IcedTeaNPPlugin.cc: Same.
-+      * plugin/icedteanp/IcedTeaPluginRequestProcessor.cc: Same.
-+      * plugin/icedteanp/IcedTeaPluginUtils.cc: Same.
-+      * plugin/icedteanp/IcedTeaPluginUtils.h: Same.
-+      * plugin/icedteanp/IcedTeaScriptablePluginObject.cc: Same.
-+
-+2010-07-12 Jon VanAlten <jon.vanalten@redhat.com>
-+      * pulseaudio/src/java/org/classpath/icedtea/pulseaudio/PulseAudioDataLine.java
-+      * pulseaudio/src/java/org/classpath/icedtea/pulseaudio/PulseAudioLine.java
-+      * pulseaudio/src/java/org/classpath/icedtea/pulseaudio/PulseAudioSourceDataLine.java
-+      * pulseaudio/src/java/org/classpath/icedtea/pulseaudio/PulseAudioTargetDataLine.java:
-+      Eliminate spurious exception throwing from open, close, read, write,
-+      drain, and flush calls on closed lines.
-+      Use isOpen() API call instead of instance variable where appropriate.
-+
-+2010-07-08  Man Lung Wong  <mwong@redhat.com>
-+
-+      * netx/net/sourceforge/jnlp/Parser.java:
-+      (getRootNode): Used BufferedInputStream instead of InputStream to
-+      have mark and reset method available. Passed the encoding to the
-+      constructor of InputStreamReader, such that the stream will now
-+      be parsed with the encoding the jnlp file is in.
-+      (getEncoding): A new method which checks the first four bytes of input
-+      and determines what the files encoding is.
-+
-+2010-06-24 Omair Majid <omajid@redhat.com>
-+
-+      * netx/net/sourceforge/jnlp/SecurityDesc.java: Fix comments.
-+      * netx/net/sourceforge/jnlp/JNLPClassLoader.java
-+      (activateJars): Always call activateNative.
-+      (activateNative): Search for native code anywhere in the jar.
-+
-+2010-06-29  Omair Majid <omajid@redhat.com>
-+
-+      * netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java
-+      nativeDirectories: New variable. Contains a list of directories that
-+      contain native libraries.
-+      (getInstance): Tell other classloaders about the native directory.
-+      (getNativeDir): Add the new native directory to nativeDirectories.
-+      (addNativeDirectory): New function.
-+      (getNativeDirectories): New function.
-+      (findLibrary): Look in all the native directories for the native library.
-+
-+2010-06-29  Omair Majid <omajid@redhat.com>
-+
-+      * netx/net/sourceforge/jnlp/services/XSingleInstanceService.java
-+      (startListeningServer): Mark the thread as a daemon so the JVM can
-+      shutdown if there are no other non-daemon thread running.
-+
-+2010-06-29 Omair Majid <omajid@redhat.com>
-+
-+      * netx/net/sourceforge/jnlp/cache/CacheUtil.java
-+      (urlToPath): Call FileUtils.sanitizePath.
-+      (fixPath): Moved to...
-+      * netx/net/sourceforge/jnlp/util/FileUtils.java
-+      (sanitizePath): New function. Moved from CacheUtil.java
-+      (sanitizeFileName): Use a blacklisting approach rather than a whitelisting
-+      approach: should work better with non ascii filenames.
-+
-+2010-07-08  Omair Majid  <omajid@redhat.com>
-+
-+      * plugin/icedteanp/java/sun/applet/PluginAppletViewer.java:
-+      (reFrame): Pass the panel to the constructor, dont set it yourself.
-+      (PluginAppletViewer): Set the panel to be the passed in object and only
-+      then add it to the list of all panels.
-+
-+2010-07-08  Omair Majid  <omajid@redhat.com>
-+
-+      PR icedtea/460
-+      * plugin/icedteanp/java/netscape/security/ForbiddenTargetException.java:
-+      New file. Some applets, for legacy support, expect this class to be
-+      present.
-+
-+2010-06-14 Andrew John Hughes  <ahughes@redhat.com>
-+
-+      Don't print out the return value of pthread_self
-+      which is a pthread_t.  pthread_t is an opaque type
-+      and we don't know what it actually is (it varies
-+      from system to system; recent versions of Linux
-+      use an unsigned long int).
-+      * plugin/icedteanp/IcedTeaPluginUtils.h:
-+      (PLUGIN_DEBUG_0ARG(str)): Don't print the thread_t.
-+      (PLUGIN_DEBUG_1ARG(str,arg1)): Likewise.
-+      (PLUGIN_DEBUG_2ARG(str,arg1,arg2)): Likewise.
-+      (PLUGIN_DEBUG_3ARG(str,arg1,arg2,arg3)): Likewise.
-+      (PLUGIN_DEBUG_4ARG(str,arg1,arg2,arg3,arg4)): Likewise.
-+      (PLUGIN_DEBUG_5ARG(str,arg1,arg2,arg3,arg4,arg5)): Likewise.
-+
-+2010-06-14  Deepak Bhole <dbhole@redhat.com>
-+
-+      * plugin/icedteanp/java/sun/applet/PluginMessageConsumer.java: Fix bug
-+      causing 100% CPU usage (rhbz# 592553).
-+
-+2010-06-14  Omair Majid <omajid@redhat.com>
-+
-+      PR icedtea/488
-+      * plugin/icedteanp/IcedTeaPluginUtils.h: Bug #488. Fix bug due to
-+      incorrect assumption that 'A' > 'a'.
-+
-+2010-06-14  Omair Majid <omajid@redhat.com>
-+
-+      PR icedtea/480
-+      * plugin/icedteanp/IcedTeaNPPlugin.cc: Use getproperty NPAPI call instead
-+      of evaluate, to get page URL.
-+
-+2010-05-07  Deepak Bhole <dbhole@redhat.com>
-+
-+      PR icedtea/436:
-+      * plugin/icedteanp/java/sun/applet/PluginAppletViewer.java
-+      (handleMessage): Don't print stack trace on InterruptedException.
-+      (appletClose): Kill misbehaving applets that don't shut down properly.
-+
-+2010-05-07  Deepak Bhole <dbhole@redhat.com>
-+
-+      * netx/net/sourceforge/jnlp/Launcher.java
-+      (setContextClassLoaderForAllThreads): Change to set context CL only for
-+      given threadgroup.
-+      (launchApplication): Supply threadgroup to
-+      setContextClassLoaderForAllThreads.
-+      (createApplet): Same.
-+
-+2010-05-07  Gary Benson  <gbenson@redhat.com>
-+
-+      * netx/net/sourceforge/jnlp/runtime/JNLPSecurityManager.java:
-+      Removed a stray semicolon.
-+
-+2010-05-06  Deepak Bhole <dbhole@redhat.com>
-+
-+      * netx/net/sourceforge/jnlp/runtime/JNLPSecurityManager.java:
-+      Add imports missed in last commit.
-+
-+2010-05-06  Deepak Bhole <dbhole@redhat.com>
-+
-+      * rt/net/sourceforge/jnlp/runtime/JNLPSecurityManager.java
-+      (checkPermission): Allow Runtime and Security permission (for
-+      putProvider.SunJCE) if initiated for an https connection.
-+      (inTrustedCallChain): New method. Returns if given class/method is
-+      in the call chain, and everything upto there is trusted.
-+
-+2010-05-05  Gary Benson  <gbenson@redhat.com>
-+
-+      PR icedtea/481
-+      * ports/hotspot/src/share/vm/shark/sharkTopLevelBlock.cpp
-+      (SharkTopLevelBlock::improve_virtual_call): Disable an
-+      optimization that cannot currently be supported.
-+
-+2010-04-30  Gary Benson  <gbenson@redhat.com>
-+
-+      PR icedtea/324
-+      * ports/hotspot/src/share/vm/shark/sharkTopLevelBlock.cpp
-+      (SharkTopLevelBlock::do_aload): Cope with cases where
-+      the array's type is unknown.
-+      (SharkTopLevelBlock::do_astore): Likewise.
-+
-+2010-04-28  Andrew John Hughes  <ahughes@redhat.com>
-+
-+      PR icedtea/476
-+      * Makefile.am:
-+      Add patch when SystemTap is enabled to support
-+      building with GCC 4.5.
-+      * patches/systemtap-gcc-4.5.patch:
-+      Add cast to NULL (doesn't apply to DTrace due
-+      to differences between SystemTap and DTrace macros).
-+
-+2010-04-24  Matthias Klose  <doko@ubuntu.com>
-+
-+      * Makefile.am (check-langtools, check-jdk): Allow overwriting -samevm
-+      with the environment variable ICEDTEA_JTREG_OTHERVM.
-+
-+2010-04-22  Xerxes RĂ„nby  <xerxes@zafena.se>
-+
-+      * ports/hotspot/src/share/vm/shark/sharkNativeWrapper.cpp
-+      (SharkNativeWrapper::initialize): Shark calling static jni
-+      methods jclass argument fix.
-+
-+2010-04-04  Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
-+
-+      * acinclude.m4 (IT_SET_ARCH_SETTINGS): Fix Hitachi SH settings.
-+
-+2010-04-21  Deepak Bhole <dbhole@redhat.com>
-+
-+      * plugin/icedteanp/IcedTeaNPPlugin.cc
-+      (plugin_filter_environment): Increment malloc size by one to account for
-+      NULL terminator. Bug# 474.
-+
- 2010-04-12  Andrew John Hughes  <ahughes@redhat.com>
-       PR icedtea/373
-diff -r d1ad52447673 Makefile.am
---- a/Makefile.am      Wed Apr 14 12:21:30 2010 +0200
-+++ b/Makefile.am      Tue Jul 20 16:36:52 2010 +0200
-@@ -298,6 +298,7 @@
-       patches/icedtea-linux-separate-debuginfo.patch \
-       patches/icedtea-parisc.patch \
-       patches/icedtea-sh4-support.patch \
-+      patches/icedtea-policy-evaluation.patch \
-       patches/libpng.patch \
-       patches/extensions/netx.patch \
-       patches/extensions/netx-dist.patch \
-@@ -326,7 +327,9 @@
-       patches/security/20100330/6932480.patch \
-       patches/ant-1.8.0.patch \
-       patches/icedtea-nss-6763530.patch \
--      patches/nss-debug.patch
-+      patches/nss-debug.patch \
-+      patches/icedtea-override-redirect-metacity.patch \
-+      patches/openjdk/6678385.patch
- if WITH_RHINO
- ICEDTEA_PATCHES += \
-@@ -374,7 +377,8 @@
- endif
- if ENABLE_SYSTEMTAP
--ICEDTEA_PATCHES += patches/icedtea-systemtap.patch
-+ICEDTEA_PATCHES += patches/icedtea-systemtap.patch \
-+      patches/systemtap-gcc-4.5.patch
- endif
- if ENABLE_NSS
-@@ -2024,7 +2028,8 @@
-       mkdir -p test/langtools/JTwork test/langtools/JTreport
-       $(ICEDTEA_BOOT_DIR)/bin/java -jar test/jtreg.jar -v1 -a -ignore:quiet \
-               -w:test/langtools/JTwork -r:test/langtools/JTreport \
--              -s -jdk:`pwd`/$(BUILD_OUTPUT_DIR)/j2sdk-image \
-+              $${ICEDTEA_JTREG_OTHERVM:--samevm} \
-+              -jdk:`pwd`/$(BUILD_OUTPUT_DIR)/j2sdk-image \
-               $(ICEDTEA_JTREG_OPTIONS) \
-               `pwd`/openjdk/langtools/test \
-           | tee test/$@.log
-@@ -2033,7 +2038,8 @@
-       mkdir -p test/jdk/JTwork test/jdk/JTreport
-       $(ICEDTEA_BOOT_DIR)/bin/java -jar test/jtreg.jar -v1 -a -ignore:quiet \
-               -w:test/jdk/JTwork -r:test/jdk/JTreport \
--              -s -jdk:`pwd`/$(BUILD_OUTPUT_DIR)/j2sdk-image \
-+              $${ICEDTEA_JTREG_OTHERVM:--samevm} \
-+              -jdk:`pwd`/$(BUILD_OUTPUT_DIR)/j2sdk-image \
-               -exclude:$(abs_top_srcdir)/test/jtreg/excludelist.jdk.jtx \
-               $(ICEDTEA_JTREG_OPTIONS) \
-               `pwd`/openjdk/jdk/test \
-diff -r d1ad52447673 acinclude.m4
---- a/acinclude.m4     Wed Apr 14 12:21:30 2010 +0200
-+++ b/acinclude.m4     Tue Jul 20 16:36:52 2010 +0200
-@@ -85,7 +85,7 @@
-       CROSS_TARGET_ARCH=s390x
-       ARCHFLAG="-m64"
-        ;;
--    sh*-*-*)
-+    sh*)
-       BUILD_ARCH_DIR=sh
-       INSTALL_ARCH_DIR=sh
-       JRE_ARCH_DIR=sh
-@@ -1461,15 +1461,7 @@
-   AC_SUBST(GTK_CFLAGS)
-   AC_SUBST(GTK_LIBS)
--
--  if $PKG_CONFIG --atleast-version 1.9.2 libxul 2>&AS_MESSAGE_LOG_FD ; then
--    xullibs=libxul
--  else
--    xullibs="libxul libxul-unstable"
--  fi
--
--  PKG_CHECK_MODULES(MOZILLA, \
--    mozilla-plugin ${xullibs})
-+  PKG_CHECK_MODULES(MOZILLA, mozilla-plugin)
-     
-   AC_SUBST(MOZILLA_CFLAGS)
-   AC_SUBST(MOZILLA_LIBS)
-@@ -1482,52 +1474,13 @@
- AC_REQUIRE([IT_CHECK_PLUGIN_DEPENDENCIES])
- if test "x${enable_plugin}" = "xyes"
- then
--  AC_LANG_PUSH([C++])
--  OLDCPPFLAGS="$CPPFLAGS"
--  CPPFLAGS="$CPPFLAGS $MOZILLA_CFLAGS"
--
--  AC_CACHE_CHECK([for xulrunner version], [xulrunner_cv_collapsed_version],
--      [AC_RUN_IFELSE(
--        [AC_LANG_PROGRAM([[
--#include <mozilla-config.h>
--#include <math.h>
--#include <string.h>
--#include <stdlib.h>
--#include <stdio.h>
--]],[[
--int version = 0;
--const char* token = NULL;
--int power=6;
--FILE *datafile;
--
--datafile = fopen ("conftest.vdata", "w");
--if (!datafile) return 1;
--
--// 32 chars is more than enough to hold version
--char* mozilla_version = (char*) malloc(32*sizeof(char));
--snprintf(mozilla_version, 32, "%s", MOZILLA_VERSION);
--
--token = strtok(mozilla_version, ".");
--while (token)
--{
--    version += atoi(token)*(pow(10, power));
--    power -=2;
--    token = strtok(NULL, ".");
--}
--
--fprintf (datafile, "%d\n", version);
--free(mozilla_version);
--if (fclose(datafile)) return 1;
--
--return EXIT_SUCCESS;
--]])],
--    [xulrunner_cv_collapsed_version="$(cat conftest.vdata)"],
--    [AC_MSG_FAILURE([cannot determine xulrunner version])])],
--  [xulrunner_cv_collapsed_version="190000"])
--
--  CPPFLAGS="$OLDCPPFLAGS"
--  AC_LANG_POP([C++])
--
-+  AC_CACHE_CHECK([for xulrunner version], [xulrunner_cv_collapsed_version],[
-+    if pkg-config --modversion libxul >/dev/null 2>&1
-+    then
-+      xulrunner_cv_collapsed_version=`pkg-config --modversion libxul | awk -F. '{power=6; v=0; for (i=1; i <= NF; i++) {v += $i * 10 ^ power; power -=2}; print v}'`
-+    else
-+      AC_MSG_FAILURE([cannot determine xulrunner version])
-+    fi])
-   AC_SUBST(MOZILLA_VERSION_COLLAPSED, $xulrunner_cv_collapsed_version)
- fi
- ])
-diff -r d1ad52447673 netx/net/sourceforge/jnlp/Launcher.java
---- a/netx/net/sourceforge/jnlp/Launcher.java  Wed Apr 14 12:21:30 2010 +0200
-+++ b/netx/net/sourceforge/jnlp/Launcher.java  Tue Jul 20 16:36:52 2010 +0200
-@@ -442,7 +442,7 @@
-             Method main = mainClass.getDeclaredMethod("main", new Class[] {String[].class} );
-             String args[] = file.getApplication().getArguments();
--            setContextClassLoaderForAllThreads(app.getClassLoader());
-+            setContextClassLoaderForAllThreads(app.getThreadGroup(), app.getClassLoader());
-             if (splashScreen != null) {
-                 if (splashScreen.isSplashScreenValid()) {
-@@ -464,30 +464,24 @@
-     }
-     /**
--     * Set the classloader as the context classloader for all threads. This is
--     * required to make some applications work. For example, an application that
--     * provides a custom Swing LnF may ask the swing thread to load resources
--     * from their JNLP, which would only work if the Swing thread knows about
--     * the JNLPClassLoader.
-+     * Set the classloader as the context classloader for all threads in 
-+     * the given threadgroup. This is required to make some applications 
-+     * work. For example, an application that provides a custom Swing LnF 
-+     * may ask the swing thread to load resources from their JNLP, which 
-+     * would only work if the Swing thread knows about the JNLPClassLoader.
-      * 
-+     * @param tg The threadgroup for which the context classloader should be set
-      * @param classLoader the classloader to set as the context classloader
-      */
--    private void setContextClassLoaderForAllThreads(ClassLoader classLoader) {
--        ThreadMXBean threadBean = ManagementFactory.getThreadMXBean();
--        ThreadGroup root;
--        
--        root = Thread.currentThread().getThreadGroup();
--        while (root.getParent() != null) {
--            root = root.getParent();
--        }
-+    private void setContextClassLoaderForAllThreads(ThreadGroup tg, ClassLoader classLoader) {
-         /* be prepared for change in thread size */
--        int threadCountGuess = threadBean.getThreadCount();
-+        int threadCountGuess = tg.activeCount();
-         Thread[] threads;
-         do {
-             threadCountGuess = threadCountGuess * 2;
-             threads = new Thread[threadCountGuess];
--            root.enumerate(threads, true);
-+            tg.enumerate(threads, true);
-         } while (threads[threadCountGuess-1] != null);
-         
-         
-@@ -595,7 +589,7 @@
-             group.setApplication(appletInstance);
-             loader.setApplication(appletInstance);
--            setContextClassLoaderForAllThreads(appletInstance.getClassLoader());
-+            setContextClassLoaderForAllThreads(appletInstance.getThreadGroup(), appletInstance.getClassLoader());
-             return appletInstance;
-         }
-diff -r d1ad52447673 netx/net/sourceforge/jnlp/Parser.java
---- a/netx/net/sourceforge/jnlp/Parser.java    Wed Apr 14 12:21:30 2010 +0200
-+++ b/netx/net/sourceforge/jnlp/Parser.java    Tue Jul 20 16:36:52 2010 +0200
-@@ -1169,11 +1169,15 @@
-             Node jnlpNode = getChildNode(document, "jnlp"); // skip comments
-             */
-+            //A BufferedInputStream is used to allow marking and reseting 
-+            //of a stream.    
-+            BufferedInputStream bs = new BufferedInputStream(input);
-+
-             /* NANO */
-             final XMLElement xml = new XMLElement();
-             final PipedInputStream pin = new PipedInputStream();
-             final PipedOutputStream pout = new PipedOutputStream(pin);
--            final InputStreamReader isr = new InputStreamReader(input);    
-+            final InputStreamReader isr = new InputStreamReader(bs, getEncoding(bs));
-             // Clean the jnlp xml file of all comments before passing
-             // it to the parser.
-             new Thread(
-@@ -1196,7 +1200,69 @@
-             throw new ParseException(R("PBadXML"), ex);
-         }
-     }
-+    
-+    /**
-+     * Returns the name of the encoding used in this InputStream.
-+     *
-+     * @param input the InputStream
-+     * @return a String representation of encoding
-+     */
-+    private static String getEncoding(InputStream input) throws IOException{
-+        //Fixme: This only recognizes UTF-8, UTF-16, and 
-+        //UTF-32, which is enough to parse the prolog portion of xml to
-+        //find out the exact encoding (if it exists). The reason being
-+        //there could be other encodings, such as ISO 8859 which is 8-bits
-+        //but it supports latin characters.  
-+        //So what needs to be done is to parse the prolog and retrieve
-+        //the exact encoding from it.
-+        int[] s = new int[4];
-+        String encoding = "UTF-8";
-+
-+        //Determine what the first four bytes are and store 
-+        //them into an int array.
-+        input.mark(4);
-+        for (int i = 0; i < 4; i++) {
-+            s[i] = input.read(); 
-+        }
-+        input.reset();
-+
-+        //Set the encoding base on what the first four bytes of the
-+        //inputstream turn out to be (following the information from
-+        //www.w3.org/TR/REC-xml/#sec-guessing).
-+        if (s[0] == 255) {
-+            if (s[1] == 254) {
-+                if (s[2] != 0 || s[3] != 0) {
-+                    encoding = "UnicodeLittle";
-+                } else {
-+                    encoding = "X-UTF-32LE-BOM";
-+                }
-+            }
-+        } else if (s[0] == 254 && s[1] == 255 && (s[2] != 0 || 
-+          s[3] != 0)) {
-+            encoding = "UTF-16";
-+
-+        } else if (s[0] == 0 && s[1] == 0 && s[2] == 254 && 
-+          s[3] == 255) {
-+            encoding = "X-UTF-32BE-BOM";
-+
-+        } else if (s[0] == 0 && s[1] == 0 && s[2] == 0 && 
-+          s[3] == 60) {
-+            encoding = "UTF-32BE";
-+ 
-+        } else if (s[0] == 60 && s[1] == 0 && s[2] == 0 && 
-+          s[3] == 0) {
-+            encoding = "UTF-32LE";
-+
-+        } else if (s[0] == 0 && s[1] == 60 && s[2] == 0 && 
-+          s[3] == 63) { 
-+            encoding = "UTF-16BE"; 
-+        } else if (s[0] == 60 && s[1] == 0 && s[2] == 63 &&
-+          s[3] == 0) { 
-+            encoding = "UTF-16LE";
-+        }
-+
-+        return encoding;
-+    }
- }
--
-diff -r d1ad52447673 netx/net/sourceforge/jnlp/SecurityDesc.java
---- a/netx/net/sourceforge/jnlp/SecurityDesc.java      Wed Apr 14 12:21:30 2010 +0200
-+++ b/netx/net/sourceforge/jnlp/SecurityDesc.java      Tue Jul 20 16:36:52 2010 +0200
-@@ -31,12 +31,9 @@
-  */
- public class SecurityDesc {
--    // todo: make sure classloader's native code support checks
--    // the security permissions
--
--    // shouldn't need to verify that native code only runs in
--    // trusted environment because the parser and/or classloader
--    // should kick it.
-+    /*
-+     * We do not verify security here, the classloader deals with security
-+     */
-     /** All permissions. */
-     public static final Object ALL_PERMISSIONS = "All";
-diff -r d1ad52447673 netx/net/sourceforge/jnlp/cache/CacheUtil.java
---- a/netx/net/sourceforge/jnlp/cache/CacheUtil.java   Wed Apr 14 12:21:30 2010 +0200
-+++ b/netx/net/sourceforge/jnlp/cache/CacheUtil.java   Tue Jul 20 16:36:52 2010 +0200
-@@ -26,6 +26,7 @@
- import net.sourceforge.jnlp.*;
- import net.sourceforge.jnlp.runtime.*;
-+import net.sourceforge.jnlp.util.FileUtils;
- /**
-  * Provides static methods to interact with the cache, download
-@@ -300,23 +301,9 @@
-         path.append(File.separatorChar);
-         path.append(location.getPath().replace('/', File.separatorChar));
--        return new File(JNLPRuntime.getBaseDir(), fixPath(path.toString()));
-+        return new File(JNLPRuntime.getBaseDir(), FileUtils.sanitizePath(path.toString()));
-     }
--    /**
--     * Clean up a string by removing characters that can't appear in
--     * a local file name.
--     */
--    private static String fixPath(String path) {
--        char badChars[] = { '\\', '/', ':', '*', '?', '"', '<', '>', '|' };
--
--        for (int i=0; i < badChars.length; i++)
--            if (badChars[i] != File.separatorChar)
--                if (-1 != path.indexOf(badChars[i]))
--                    path = path.replace(badChars[i], 'X');
--
--        return path;
--    }
-     /**
-      * Waits until the resources are downloaded, while showing a
-diff -r d1ad52447673 netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java
---- a/netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java   Wed Apr 14 12:21:30 2010 +0200
-+++ b/netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java   Tue Jul 20 16:36:52 2010 +0200
-@@ -32,6 +32,7 @@
- import java.security.Permissions;
- import java.security.PrivilegedAction;
- import java.util.ArrayList;
-+import java.util.Collections;
- import java.util.Enumeration;
- import java.util.HashMap;
- import java.util.LinkedList;
-@@ -80,12 +81,12 @@
-     /** map from JNLPFile url to shared classloader */
-     private static Map urlToLoader = new HashMap(); // never garbage collected!
--    /** number of times a classloader with native code is created */
--    private static int nativeCounter = 0;
--
-     /** the directory for native code */
-     private File nativeDir = null; // if set, some native code exists
-+    /** a list of directories that contain native libraries */
-+    private List<File> nativeDirectories = Collections.synchronizedList(new LinkedList<File>());
-+
-     /** security context */
-     private AccessControlContext acc = AccessController.getContext();
-@@ -240,18 +241,22 @@
-                       // loader for this unique key. Check.
-                       JNLPClassLoader extLoader = (JNLPClassLoader) urlToLoader.get(uniqueKey);
--                      if (extLoader != null) {
-+                      if (extLoader != null && extLoader != loader) {
-                           for (URL u : loader.getURLs())
-                               extLoader.addURL(u);
-+                          for (File nativeDirectory: loader.getNativeDirectories())
-+                              extLoader.addNativeDirectory(nativeDirectory);
-                           loader = extLoader;
-                       }
-                 // loader is now current + ext. But we also need to think of 
-                 // the baseLoader
--                      if (baseLoader != null) {
-+                      if (baseLoader != null && baseLoader != loader) {
-                     for (URL u : loader.getURLs())
-                         baseLoader.addURL(u);
-+                    for (File nativeDirectory: loader.getNativeDirectories())
-+                        baseLoader.addNativeDirectory(nativeDirectory);
-                     loader = baseLoader;
-                 } 
-@@ -642,8 +647,8 @@
-                             ex.printStackTrace();
-                     }
--                    if (jar.isNative())
--                        activateNative(jar);
-+                    // some programs place a native library in any jar
-+                    activateNative(jar);
-                 }
-                 return null;
-@@ -654,9 +659,9 @@
-     }
-     /**
--     * Enable the native code contained in a JAR by copying the
--     * native files into the filesystem.  Called in the security
--     * context of the classloader.
-+     * Search for and enable any native code contained in a JAR by copying the
-+     * native files into the filesystem. Called in the security context of the
-+     * classloader.
-      */
-     protected void activateNative(JARDesc jar) {
-         if (JNLPRuntime.isDebug())
-@@ -669,17 +674,33 @@
-         if (nativeDir == null)
-             nativeDir = getNativeDir();
-+        String[] librarySuffixes = { ".so", ".dylib", ".jnilib", ".framework", ".dll" };
-+
-         try {
-             JarFile jarFile = new JarFile(localFile, false);
--            Enumeration entries = jarFile.entries();
-+            Enumeration<JarEntry> entries = jarFile.entries();
-             while (entries.hasMoreElements()) {
--                JarEntry e = (JarEntry) entries.nextElement();
-+                JarEntry e = entries.nextElement();
--                if (e.isDirectory() || e.getName().indexOf('/') != -1)
-+                if (e.isDirectory()) {
-                     continue;
-+                }
--                File outFile = new File(nativeDir, e.getName());
-+                String name = new File(e.getName()).getName();
-+                boolean isLibrary = false;
-+
-+                for (String suffix: librarySuffixes) {
-+                    if (name.endsWith(suffix)) {
-+                       isLibrary = true;
-+                       break;
-+                    }
-+                }
-+                if (!isLibrary) {
-+                    continue;
-+                }
-+
-+                File outFile = new File(nativeDir, name);
-                 CacheUtil.streamCopy(jarFile.getInputStream(e),
-                                      new FileOutputStream(outFile));
-@@ -703,29 +724,47 @@
-         if (!nativeDir.mkdirs()) 
-             return null;
--        else
-+        else {
-+            // add this new native directory to the search path
-+            addNativeDirectory(nativeDir);
-             return nativeDir;
-+        }
-+    }
-+
-+    /**
-+     * Adds the {@link File} to the search path of this {@link JNLPClassLoader}
-+     * when trying to find a native library
-+     */
-+    protected void addNativeDirectory(File nativeDirectory) {
-+        nativeDirectories.add(nativeDirectory);
-+    }
-+
-+    /**
-+     * Returns a list of all directories in the search path of the current classloader
-+     * when it tires to find a native library.
-+     * @return a list of directories in the search path for native libraries
-+     */
-+    protected List<File> getNativeDirectories() {
-+        return nativeDirectories;
-     }
-     /**
-      * Return the absolute path to the native library.
-      */
-     protected String findLibrary(String lib) {
--        if (nativeDir == null)
--            return null;
--
-         String syslib = System.mapLibraryName(lib);
--        File target = new File(nativeDir, syslib);
--        if (target.exists())
--            return target.toString();
--        else {
--            String result = super.findLibrary(lib);
--            if (result != null)
--                return result;
-+        for (File dir: getNativeDirectories()) {
-+            File target = new File(dir, syslib);
-+            if (target.exists())
-+                return target.toString();
-+        }
--            return findLibraryExt(lib);
--        }
-+        String result = super.findLibrary(lib);
-+        if (result != null)
-+            return result;
-+
-+        return findLibraryExt(lib);
-     }
-     /**
-diff -r d1ad52447673 netx/net/sourceforge/jnlp/runtime/JNLPSecurityManager.java
---- a/netx/net/sourceforge/jnlp/runtime/JNLPSecurityManager.java       Wed Apr 14 12:21:30 2010 +0200
-+++ b/netx/net/sourceforge/jnlp/runtime/JNLPSecurityManager.java       Tue Jul 20 16:36:52 2010 +0200
-@@ -23,10 +23,12 @@
- import java.awt.event.WindowEvent;
- import java.lang.ref.WeakReference;
- import java.net.SocketPermission;
-+import java.security.AllPermission;
- import java.security.AccessControlException;
- import java.security.AccessController;
- import java.security.Permission;
- import java.security.PrivilegedAction;
-+import java.security.SecurityPermission;
- import java.util.PropertyPermission;
- import javax.swing.JWindow;
-@@ -395,6 +397,24 @@
-                                   // Everything else is denied
-                                   throw se;
-+                              } else if (perm instanceof SecurityPermission) {
-+
-+                                  // JCE's initialization requires putProviderProperty permission
-+                                  if (perm.equals(new SecurityPermission("putProviderProperty.SunJCE"))) {
-+                                      if (inTrustedCallChain("com.sun.crypto.provider.SunJCE", "run")) {
-+                                          return;
-+                                      }
-+                                  }
-+
-+                              } else if (perm instanceof RuntimePermission) {
-+
-+                                  // KeyGenerator's init method requires internal spec access
-+                                  if (perm.equals(new SecurityPermission("accessClassInPackage.sun.security.internal.spec"))) {
-+                                      if (inTrustedCallChain("javax.crypto.KeyGenerator", "init")) {
-+                                          return;
-+                                      }
-+                                  }
-+
-                               } else {
-                                   tmpPerm = perm;
-                               }
-@@ -419,6 +439,34 @@
-         }
-     }
-+    /** 
-+     * Returns weather the given class and method are in the current stack, 
-+     * and whether or not everything upto then is trusted
-+     * 
-+     * @param className The name of the class to look for in the stack
-+     * @param methodName The name of the method for the given class to look for in the stack
-+     * @return Weather or not class::method() are in the chain, and everything upto there is trusted
-+     */
-+    private boolean inTrustedCallChain(String className, String methodName) {
-+        
-+        StackTraceElement[] stack =  Thread.currentThread().getStackTrace();
-+        
-+        for (int i=0; i < stack.length; i++) {
-+
-+            // Everything up to the desired class/method must be trusted
-+            if (!stack[i].getClass().getProtectionDomain().implies(new AllPermission())) {
-+                return false;
-+            }
-+
-+            if (stack[i].getClassName().equals(className) &&
-+                stack[i].getMethodName().equals(methodName)) {
-+                return true;
-+            }
-+        }
-+        
-+        return false;
-+    }
-+    
-     /**
-      * Asks the user whether or not to grant permission.
-      * @param perm the permission to be granted
-diff -r d1ad52447673 netx/net/sourceforge/jnlp/services/XSingleInstanceService.java
---- a/netx/net/sourceforge/jnlp/services/XSingleInstanceService.java   Wed Apr 14 12:21:30 2010 +0200
-+++ b/netx/net/sourceforge/jnlp/services/XSingleInstanceService.java   Tue Jul 20 16:36:52 2010 +0200
-@@ -145,14 +145,21 @@
-     }
-     /**
--     * Start the listening server to accept arguments from new isntances of
-+     * Start the listening server to accept arguments from new instances of
-      * applications
-      * 
-      * @param lockFile
-+     *            the {@link SingleInstanceLock} that the server should use
-      */
-     private void startListeningServer(SingleInstanceLock lockFile) {
-         SingleInstanceServer server = new SingleInstanceServer(lockFile);
--        new Thread(server).start();
-+        Thread serverThread = new Thread(server);
-+        /* 
-+         * mark as daemon so the JVM can shutdown if the server is the only
-+         * thread running
-+         */
-+        serverThread.setDaemon(true);
-+        serverThread.start();
-     }
-     /**
-diff -r d1ad52447673 netx/net/sourceforge/jnlp/util/FileUtils.java
---- a/netx/net/sourceforge/jnlp/util/FileUtils.java    Wed Apr 14 12:21:30 2010 +0200
-+++ b/netx/net/sourceforge/jnlp/util/FileUtils.java    Tue Jul 20 16:36:52 2010 +0200
-@@ -14,35 +14,58 @@
- // License along with this library; if not, write to the Free Software
- // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
--
- package net.sourceforge.jnlp.util;
-+import java.io.File;
-+
- /**
-- * This class contains a few file-related utility functions. 
-+ * This class contains a few file-related utility functions.
-  * 
-  * @author Omair Majid
-  */
--public class FileUtils {
-+public final class FileUtils {
--    
-+    /**
-+     * list of characters not allowed in filenames
-+     */
-+    private static final char INVALID_CHARS[] = { '\\', '/', ':', '*', '?', '"', '<', '>', '|' };
-+
-+    private static final char SANITIZED_CHAR = '_';
-+
-+    /**
-+     * Clean up a string by removing characters that can't appear in a local
-+     * file name.
-+     *
-+     * @param path
-+     *        the path to sanitize
-+     * @return a sanitized version of the input which is suitable for using as a
-+     *         file path
-+     */
-+    public static String sanitizePath(String path) {
-+
-+        for (int i = 0; i < INVALID_CHARS.length; i++)
-+            if (INVALID_CHARS[i] != File.separatorChar)
-+                if (-1 != path.indexOf(INVALID_CHARS[i]))
-+                    path = path.replace(INVALID_CHARS[i], SANITIZED_CHAR);
-+
-+        return path;
-+    }
-+
-     /**
-      * Given an input, return a sanitized form of the input suitable for use as
-      * a file/directory name
--     * 
-+     *
-      * @param input
-      * @return a sanitized version of the input
-      */
--    public static String sanitizeFileName(String input) {
-+    public static String sanitizeFileName(String filename) {
--        /*
--         * FIXME
--         * 
--         * Assuming safe characters are 'a-z','A-Z','0-9', '_', '.'
--         */
-+        for (int i = 0; i < INVALID_CHARS.length; i++)
-+            if (-1 != filename.indexOf(INVALID_CHARS[i]))
-+                filename = filename.replace(INVALID_CHARS[i], SANITIZED_CHAR);
--        String sanitizedName = input.replaceAll("[^a-zA-Z0-9.]", "_");
--        return sanitizedName;
-+        return filename;
-     }
--    
-+
- }
-diff -r d1ad52447673 patches/icedtea-override-redirect-metacity.patch
---- /dev/null  Thu Jan 01 00:00:00 1970 +0000
-+++ b/patches/icedtea-override-redirect-metacity.patch Tue Jul 20 16:36:52 2010 +0200
-@@ -0,0 +1,11 @@
-+--- openjdk/jdk/src/solaris/classes/sun/awt/X11/XWindowPeer.java.orig 2008-05-25 17:31:31.000000000 +0200
-++++ openjdk/jdk/src/solaris/classes/sun/awt/X11/XWindowPeer.java      2008-05-25 17:33:32.000000000 +0200
-+@@ -1124,6 +1124,8 @@
-+ 
-+     boolean isOverrideRedirect() {
-+         return (XWM.getWMID() == XWM.OPENLOOK_WM ? true : false) ||
-++            (XWM.getWMID() == XWM.METACITY_WM ? true : false) ||
-++            target.getName().equals("###overrideRedirect###") ||
-+             ((XToolkit)Toolkit.getDefaultToolkit()).isOverrideRedirect((Window)target) ||
-+             XTrayIconPeer.isTrayIconStuffWindow((Window)target);
-+     }
-diff -r d1ad52447673 patches/icedtea-policy-evaluation.patch
---- /dev/null  Thu Jan 01 00:00:00 1970 +0000
-+++ b/patches/icedtea-policy-evaluation.patch  Tue Jul 20 16:36:52 2010 +0200
-@@ -0,0 +1,35 @@
-+# This patch aligns policy evaluation to be the same as the proprietary JDK.
-+# http://mail.openjdk.java.net/pipermail/distro-pkg-dev/2010-July/009658.html
-+# https://bugs.openjdk.java.net/show_bug.cgi?id=100142
-+
-+diff -up ./openjdk/jdk/src/share/classes/sun/security/provider/PolicyFile.java.sav ./jdk/src/share/classes/sun/security/provider/PolicyFile.java
-+--- ./openjdk.orig/jdk/src/share/classes/sun/security/provider/PolicyFile.java.sav    2010-04-20 14:49:13.000000000 -0400
-++++ ./openjdk/jdk/src/share/classes/sun/security/provider/PolicyFile.java     2010-04-20 14:50:26.000000000 -0400
-+@@ -1799,6 +1799,27 @@ public class PolicyFile extends java.sec
-+ 
-+         CodeSource canonCs = cs;
-+         URL u = cs.getLocation();
-++        
-++        // If this is a jar protocol url, collapse it to a 
-++        // file protocol to process it as per the javadocs
-++        if (u != null && u.getProtocol().equals("jar")) {
-++            try {
-++                String fileURL = "";
-++            
-++                // remove the initial jar:
-++                fileURL = u.getPath();
-++            
-++                // remove the part after the !
-++                fileURL = fileURL.substring(0, fileURL.indexOf('!'));
-++                
-++                u = new URL(fileURL);
-++
-++            } catch (Exception e) {
-++                // Fail silently. In this case, url stays what it was above
-++            }
-++            
-++        }
-++        
-+         if (u != null && u.getProtocol().equals("file")) {
-+             boolean isLocalFile = false;
-+             String host = u.getHost();
-diff -r d1ad52447673 patches/openjdk/6678385.patch
---- /dev/null  Thu Jan 01 00:00:00 1970 +0000
-+++ b/patches/openjdk/6678385.patch    Tue Jul 20 16:36:52 2010 +0200
-@@ -0,0 +1,1241 @@
-+# HG changeset patch
-+# User art
-+# Date 1242387635 -14400
-+# Node ID f62f7fcc9965cd0b110f07b4cd42c419f77717c1
-+# Parent  b28b073e72b625a4d8b6e71010a2968b5fc85124
-+6678385: Random java.lang.StackOverflowError from various JDKs
-+Reviewed-by: stayer
-+
-+IcedTea6 note: This patch (upstream bz#6678385) fixes rhbz# 551835.
-+
-+diff -uNr openjdk.orig/jdk/make/sun/xawt/mapfile-vers openjdk/jdk/make/sun/xawt/mapfile-vers
-+--- openjdk.orig/jdk/make/sun/xawt/mapfile-vers       2010-07-15 10:28:21.755105655 -0400
-++++ openjdk/jdk/make/sun/xawt/mapfile-vers    2010-07-15 10:28:42.630981569 -0400
-+@@ -125,6 +125,7 @@
-+         Java_sun_awt_X11_XlibWrapper_SetToolkitErrorHandler;
-+         Java_sun_awt_X11_XlibWrapper_XSetErrorHandler;
-+         Java_sun_awt_X11_XlibWrapper_CallErrorHandler;
-++        Java_sun_awt_X11_XlibWrapper_PrintXErrorEvent;
-+         Java_sun_awt_X11_XlibWrapper_XInternAtoms;
-+         Java_sun_awt_X11_XlibWrapper_XChangeWindowAttributes;
-+         Java_sun_awt_X11_XlibWrapper_XDeleteProperty;
-+@@ -269,7 +270,6 @@
-+         Java_sun_awt_X11_XToolkit_getDefaultXColormap;
-+         Java_sun_awt_X11_XToolkit_getDefaultScreenData;
-+         Java_sun_awt_X11_XToolkit_getEnv;
-+-        Java_sun_awt_X11_XToolkit_setNoisyXErrorHandler;
-+         Java_sun_awt_X11_XlibWrapper_XCreateBitmapFromData;
-+         Java_sun_awt_X11_XlibWrapper_XFreePixmap;
-+         Java_sun_awt_X11_XlibWrapper_XAllocColor;
-+diff -uNr openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/MotifDnDConstants.java openjdk/jdk/src/solaris/classes/sun/awt/X11/MotifDnDConstants.java
-+--- openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/MotifDnDConstants.java   2010-07-15 10:28:21.905105617 -0400
-++++ openjdk/jdk/src/solaris/classes/sun/awt/X11/MotifDnDConstants.java        2010-07-15 10:28:42.631981678 -0400
-+@@ -119,7 +119,7 @@
-+                                                             false,
-+                                                             XlibWrapper.AnyPropertyType);
-+         try {
-+-            int status = wpg.execute(XToolkit.IgnoreBadWindowHandler);
-++            int status = wpg.execute(XErrorHandler.IgnoreBadWindowHandler.getInstance());
-+ 
-+             if (status == XlibWrapper.Success &&
-+                 wpg.getData() != 0 &&
-+@@ -189,7 +189,7 @@
-+                 try {
-+                     Native.putLong(data, motifWindow);
-+ 
-+-                    XToolkit.WITH_XERROR_HANDLER(XWM.VerifyChangePropertyHandler);
-++                    XToolkit.WITH_XERROR_HANDLER(XErrorHandler.VerifyChangePropertyHandler.getInstance());
-+                     XlibWrapper.XChangeProperty(XToolkit.getDisplay(),
-+                                                 defaultRootWindow,
-+                                                 XA_MOTIF_DRAG_WINDOW.getAtom(),
-+@@ -276,7 +276,7 @@
-+                                                             false,
-+                                                             XA_MOTIF_DRAG_TARGETS.getAtom());
-+         try {
-+-            int status = wpg.execute(XToolkit.IgnoreBadWindowHandler);
-++            int status = wpg.execute(XErrorHandler.IgnoreBadWindowHandler.getInstance());
-+ 
-+             if (status != XlibWrapper.Success
-+                 || wpg.getActualType() != XA_MOTIF_DRAG_TARGETS.getAtom()
-+@@ -390,7 +390,7 @@
-+                 }
-+             }
-+ 
-+-            XToolkit.WITH_XERROR_HANDLER(XWM.VerifyChangePropertyHandler);
-++            XToolkit.WITH_XERROR_HANDLER(XErrorHandler.VerifyChangePropertyHandler.getInstance());
-+             XlibWrapper.XChangeProperty(XToolkit.getDisplay(),
-+                                         motifWindow,
-+                                         XA_MOTIF_DRAG_TARGETS.getAtom(),
-+@@ -406,7 +406,7 @@
-+                 // Create a new motif window and retry.
-+                 motifWindow = createMotifWindow();
-+ 
-+-                XToolkit.WITH_XERROR_HANDLER(XWM.VerifyChangePropertyHandler);
-++                XToolkit.WITH_XERROR_HANDLER(XErrorHandler.VerifyChangePropertyHandler.getInstance());
-+                 XlibWrapper.XChangeProperty(XToolkit.getDisplay(),
-+                                             motifWindow,
-+                                             XA_MOTIF_DRAG_TARGETS.getAtom(),
-+@@ -530,7 +530,7 @@
-+             // CARD32 icc_handle
-+             unsafe.putInt(structData + 4, (int)XA_MOTIF_ATOM_0.getAtom());
-+ 
-+-            XToolkit.WITH_XERROR_HANDLER(XWM.VerifyChangePropertyHandler);
-++            XToolkit.WITH_XERROR_HANDLER(XErrorHandler.VerifyChangePropertyHandler.getInstance());
-+             XlibWrapper.XChangeProperty(XToolkit.getDisplay(), window,
-+                                         XA_MOTIF_ATOM_0.getAtom(),
-+                                         XA_MOTIF_DRAG_INITIATOR_INFO.getAtom(),
-+@@ -563,7 +563,7 @@
-+             unsafe.putShort(data + 10, (short)0); /* pad */
-+             unsafe.putInt(data + 12, dataSize);
-+ 
-+-            XToolkit.WITH_XERROR_HANDLER(XWM.VerifyChangePropertyHandler);
-++            XToolkit.WITH_XERROR_HANDLER(XErrorHandler.VerifyChangePropertyHandler.getInstance());
-+             XlibWrapper.XChangeProperty(XToolkit.getDisplay(), window,
-+                                         XA_MOTIF_DRAG_RECEIVER_INFO.getAtom(),
-+                                         XA_MOTIF_DRAG_RECEIVER_INFO.getAtom(),
-+diff -uNr openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/MotifDnDDragSourceProtocol.java openjdk/jdk/src/solaris/classes/sun/awt/X11/MotifDnDDragSourceProtocol.java
-+--- openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/MotifDnDDragSourceProtocol.java  2010-07-15 10:28:21.905105617 -0400
-++++ openjdk/jdk/src/solaris/classes/sun/awt/X11/MotifDnDDragSourceProtocol.java       2010-07-15 10:28:42.633981353 -0400
-+@@ -184,7 +184,7 @@
-+                                      XlibWrapper.AnyPropertyType);
-+ 
-+         try {
-+-            int status = wpg.execute(XToolkit.IgnoreBadWindowHandler);
-++            int status = wpg.execute(XErrorHandler.IgnoreBadWindowHandler.getInstance());
-+ 
-+             /*
-+              * DragICCI.h:
-+diff -uNr openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/MotifDnDDropTargetProtocol.java openjdk/jdk/src/solaris/classes/sun/awt/X11/MotifDnDDropTargetProtocol.java
-+--- openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/MotifDnDDropTargetProtocol.java  2010-07-15 10:28:21.904105558 -0400
-++++ openjdk/jdk/src/solaris/classes/sun/awt/X11/MotifDnDDropTargetProtocol.java       2010-07-15 10:28:42.636014780 -0400
-+@@ -102,7 +102,7 @@
-+                                      XlibWrapper.AnyPropertyType);
-+ 
-+         try {
-+-            status = wpg.execute(XToolkit.IgnoreBadWindowHandler);
-++            status = wpg.execute(XErrorHandler.IgnoreBadWindowHandler.getInstance());
-+ 
-+             /*
-+              * DragICCI.h:
-+@@ -162,7 +162,7 @@
-+                 unsafe.putInt(data + 12, dataSize);
-+             }
-+ 
-+-            XToolkit.WITH_XERROR_HANDLER(XWM.VerifyChangePropertyHandler);
-++            XToolkit.WITH_XERROR_HANDLER(XErrorHandler.VerifyChangePropertyHandler.getInstance());
-+             XlibWrapper.XChangeProperty(XToolkit.getDisplay(), embedder,
-+                                         MotifDnDConstants.XA_MOTIF_DRAG_RECEIVER_INFO.getAtom(),
-+                                         MotifDnDConstants.XA_MOTIF_DRAG_RECEIVER_INFO.getAtom(),
-+@@ -204,7 +204,7 @@
-+                                          XlibWrapper.AnyPropertyType);
-+ 
-+             try {
-+-                status = wpg.execute(XToolkit.IgnoreBadWindowHandler);
-++                status = wpg.execute(XErrorHandler.IgnoreBadWindowHandler.getInstance());
-+ 
-+                 /*
-+                  * DragICCI.h:
-+@@ -236,7 +236,7 @@
-+ 
-+                     unsafe.putInt(data + 4, tproxy);
-+ 
-+-                    XToolkit.WITH_XERROR_HANDLER(XWM.VerifyChangePropertyHandler);
-++                    XToolkit.WITH_XERROR_HANDLER(XErrorHandler.VerifyChangePropertyHandler.getInstance());
-+                     XlibWrapper.XChangeProperty(XToolkit.getDisplay(), embedder,
-+                                                 MotifDnDConstants.XA_MOTIF_DRAG_RECEIVER_INFO.getAtom(),
-+                                                 MotifDnDConstants.XA_MOTIF_DRAG_RECEIVER_INFO.getAtom(),
-+@@ -276,7 +276,7 @@
-+                                      XlibWrapper.AnyPropertyType);
-+ 
-+         try {
-+-            status = wpg.execute(XToolkit.IgnoreBadWindowHandler);
-++            status = wpg.execute(XErrorHandler.IgnoreBadWindowHandler.getInstance());
-+ 
-+             /*
-+              * DragICCI.h:
-+@@ -325,7 +325,7 @@
-+                                      XlibWrapper.AnyPropertyType);
-+ 
-+         try {
-+-            int status = wpg.execute(XToolkit.IgnoreBadWindowHandler);
-++            int status = wpg.execute(XErrorHandler.IgnoreBadWindowHandler.getInstance());
-+ 
-+             if (status == (int)XlibWrapper.Success && wpg.getData() != 0 &&
-+                 wpg.getActualType() != 0 && wpg.getActualFormat() == 8 &&
-+@@ -375,7 +375,7 @@
-+                                          MotifDnDConstants.XA_MOTIF_DRAG_INITIATOR_INFO.getAtom());
-+ 
-+             try {
-+-                int status = wpg.execute(XToolkit.IgnoreBadWindowHandler);
-++                int status = wpg.execute(XErrorHandler.IgnoreBadWindowHandler.getInstance());
-+ 
-+                 if (status == XlibWrapper.Success && wpg.getData() != 0 &&
-+                     wpg.getActualType() ==
-+@@ -412,7 +412,7 @@
-+          */
-+         XWindowAttributes wattr = new XWindowAttributes();
-+         try {
-+-            XToolkit.WITH_XERROR_HANDLER(XToolkit.IgnoreBadWindowHandler);
-++            XToolkit.WITH_XERROR_HANDLER(XErrorHandler.IgnoreBadWindowHandler.getInstance());
-+             int status = XlibWrapper.XGetWindowAttributes(XToolkit.getDisplay(),
-+                                                           source_win, wattr.pData);
-+ 
-+@@ -429,7 +429,7 @@
-+             wattr.dispose();
-+         }
-+ 
-+-        XToolkit.WITH_XERROR_HANDLER(XToolkit.IgnoreBadWindowHandler);
-++        XToolkit.WITH_XERROR_HANDLER(XErrorHandler.IgnoreBadWindowHandler.getInstance());
-+         XlibWrapper.XSelectInput(XToolkit.getDisplay(), source_win,
-+                                  source_win_mask |
-+                                  XlibWrapper.StructureNotifyMask);
-+@@ -1020,7 +1020,7 @@
-+         if (sourceWindow != 0) {
-+             XToolkit.awtLock();
-+             try {
-+-                XToolkit.WITH_XERROR_HANDLER(XToolkit.IgnoreBadWindowHandler);
-++                XToolkit.WITH_XERROR_HANDLER(XErrorHandler.IgnoreBadWindowHandler.getInstance());
-+                 XlibWrapper.XSelectInput(XToolkit.getDisplay(), sourceWindow,
-+                                          sourceWindowMask);
-+                 XToolkit.RESTORE_XERROR_HANDLER();
-+diff -uNr openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/WindowPropertyGetter.java openjdk/jdk/src/solaris/classes/sun/awt/X11/WindowPropertyGetter.java
-+--- openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/WindowPropertyGetter.java        2010-07-15 10:28:21.900105578 -0400
-++++ openjdk/jdk/src/solaris/classes/sun/awt/X11/WindowPropertyGetter.java     2010-07-15 10:28:42.637046074 -0400
-+@@ -75,7 +75,7 @@
-+     public int execute() {
-+         return execute(null);
-+     }
-+-    public int execute(XToolkit.XErrorHandler errorHandler) {
-++    public int execute(XErrorHandler errorHandler) {
-+ 
-+         XToolkit.awtLock();
-+         try {
-+@@ -94,7 +94,7 @@
-+ 
-+             // Fix for performance problem - IgnodeBadWindowHandler is
-+             // used too much without reason, just ignore it
-+-            if (errorHandler == XToolkit.IgnoreBadWindowHandler) {
-++            if (errorHandler instanceof XErrorHandler.IgnoreBadWindowHandler) {
-+                 errorHandler = null;
-+             }
-+ 
-+diff -uNr openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XAWTXSettings.java openjdk/jdk/src/solaris/classes/sun/awt/X11/XAWTXSettings.java
-+--- openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XAWTXSettings.java       2010-07-15 10:28:21.896105637 -0400
-++++ openjdk/jdk/src/solaris/classes/sun/awt/X11/XAWTXSettings.java    2010-07-15 10:28:42.637981716 -0400
-+@@ -122,7 +122,7 @@
-+                 new WindowPropertyGetter(owner, xSettingsPropertyAtom, 0, MAX_LENGTH,
-+                         false, xSettingsPropertyAtom.getAtom() );
-+             try {
-+-                int status = getter.execute(XToolkit.IgnoreBadWindowHandler);
-++                int status = getter.execute(XErrorHandler.IgnoreBadWindowHandler.getInstance());
-+ 
-+                 if (status != XlibWrapper.Success || getter.getData() == 0) {
-+                     if (log.isLoggable(Level.FINE)) log.fine("OH OH : getter failed  status = " + status );
-+diff -uNr openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XDecoratedPeer.java openjdk/jdk/src/solaris/classes/sun/awt/X11/XDecoratedPeer.java
-+--- openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XDecoratedPeer.java      2010-07-15 10:28:21.895105718 -0400
-++++ openjdk/jdk/src/solaris/classes/sun/awt/X11/XDecoratedPeer.java   2010-07-15 10:28:42.640232090 -0400
-+@@ -1155,7 +1155,8 @@
-+     }
-+ 
-+     boolean isOverrideRedirect() {
-+-        return false;
-++//        return false;
-++        return ((XToolkit)Toolkit.getDefaultToolkit()).isOverrideRedirect((Window)target);
-+     }
-+ 
-+     public boolean requestWindowFocus(long time, boolean timeProvided) {
-+diff -uNr openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XDnDDragSourceProtocol.java openjdk/jdk/src/solaris/classes/sun/awt/X11/XDnDDragSourceProtocol.java
-+--- openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XDnDDragSourceProtocol.java      2010-07-15 10:28:21.906105640 -0400
-++++ openjdk/jdk/src/solaris/classes/sun/awt/X11/XDnDDragSourceProtocol.java   2010-07-15 10:28:42.642232277 -0400
-+@@ -96,7 +96,7 @@
-+                 action_count++;
-+             }
-+ 
-+-            XToolkit.WITH_XERROR_HANDLER(XWM.VerifyChangePropertyHandler);
-++            XToolkit.WITH_XERROR_HANDLER(XErrorHandler.VerifyChangePropertyHandler.getInstance());
-+             XDnDConstants.XA_XdndActionList.setAtomData(window,
-+                                                         XAtom.XA_ATOM,
-+                                                         data, action_count);
-+@@ -117,7 +117,7 @@
-+         try {
-+             Native.put(data, formats);
-+ 
-+-            XToolkit.WITH_XERROR_HANDLER(XWM.VerifyChangePropertyHandler);
-++            XToolkit.WITH_XERROR_HANDLER(XErrorHandler.VerifyChangePropertyHandler.getInstance());
-+             XDnDConstants.XA_XdndTypeList.setAtomData(window,
-+                                                       XAtom.XA_ATOM,
-+                                                       data, formats.length);
-+@@ -195,7 +195,7 @@
-+             new WindowPropertyGetter(window, XDnDConstants.XA_XdndAware, 0, 1,
-+                                      false, XlibWrapper.AnyPropertyType);
-+ 
-+-        int status = wpg1.execute(XToolkit.IgnoreBadWindowHandler);
-++        int status = wpg1.execute(XErrorHandler.IgnoreBadWindowHandler.getInstance());
-+ 
-+         if (status == XlibWrapper.Success &&
-+             wpg1.getData() != 0 && wpg1.getActualType() == XAtom.XA_ATOM) {
-+@@ -215,7 +215,7 @@
-+                                              0, 1, false, XAtom.XA_WINDOW);
-+ 
-+                 try {
-+-                    status = wpg2.execute(XToolkit.IgnoreBadWindowHandler);
-++                    status = wpg2.execute(XErrorHandler.IgnoreBadWindowHandler.getInstance());
-+ 
-+                     if (status == XlibWrapper.Success &&
-+                         wpg2.getData() != 0 &&
-+@@ -233,7 +233,7 @@
-+                                                  0, 1, false, XAtom.XA_WINDOW);
-+ 
-+                     try {
-+-                        status = wpg3.execute(XToolkit.IgnoreBadWindowHandler);
-++                        status = wpg3.execute(XErrorHandler.IgnoreBadWindowHandler.getInstance());
-+ 
-+                         if (status != XlibWrapper.Success ||
-+                             wpg3.getData() == 0 ||
-+@@ -249,7 +249,7 @@
-+                                                          XlibWrapper.AnyPropertyType);
-+ 
-+                             try {
-+-                                status = wpg4.execute(XToolkit.IgnoreBadWindowHandler);
-++                                status = wpg4.execute(XErrorHandler.IgnoreBadWindowHandler.getInstance());
-+ 
-+                                 if (status != XlibWrapper.Success ||
-+                                     wpg4.getData() == 0 ||
-+diff -uNr openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XDnDDropTargetProtocol.java openjdk/jdk/src/solaris/classes/sun/awt/X11/XDnDDropTargetProtocol.java
-+--- openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XDnDDropTargetProtocol.java      2010-07-15 10:28:21.903105589 -0400
-++++ openjdk/jdk/src/solaris/classes/sun/awt/X11/XDnDDropTargetProtocol.java   2010-07-15 10:28:42.645236553 -0400
-+@@ -88,7 +88,7 @@
-+         try {
-+             Native.putLong(data, 0, XDnDConstants.XDND_PROTOCOL_VERSION);
-+ 
-+-            XToolkit.WITH_XERROR_HANDLER(XWM.VerifyChangePropertyHandler);
-++            XToolkit.WITH_XERROR_HANDLER(XErrorHandler.VerifyChangePropertyHandler.getInstance());
-+             XDnDConstants.XA_XdndAware.setAtomData(window, XAtom.XA_ATOM, data, 1);
-+             XToolkit.RESTORE_XERROR_HANDLER();
-+ 
-+@@ -122,7 +122,7 @@
-+                                      false, XlibWrapper.AnyPropertyType);
-+ 
-+         try {
-+-            status = wpg1.execute(XToolkit.IgnoreBadWindowHandler);
-++            status = wpg1.execute(XErrorHandler.IgnoreBadWindowHandler.getInstance());
-+ 
-+             if (status == XlibWrapper.Success &&
-+                 wpg1.getData() != 0 && wpg1.getActualType() == XAtom.XA_ATOM) {
-+@@ -141,7 +141,7 @@
-+                                          0, 1, false, XAtom.XA_WINDOW);
-+ 
-+             try {
-+-                status = wpg2.execute(XToolkit.IgnoreBadWindowHandler);
-++                status = wpg2.execute(XErrorHandler.IgnoreBadWindowHandler.getInstance());
-+ 
-+                 if (status == XlibWrapper.Success &&
-+                     wpg2.getData() != 0 &&
-+@@ -159,7 +159,7 @@
-+                                              0, 1, false, XAtom.XA_WINDOW);
-+ 
-+                 try {
-+-                    status = wpg3.execute(XToolkit.IgnoreBadWindowHandler);
-++                    status = wpg3.execute(XErrorHandler.IgnoreBadWindowHandler.getInstance());
-+ 
-+                     if (status != XlibWrapper.Success ||
-+                         wpg3.getData() == 0 ||
-+@@ -175,7 +175,7 @@
-+                                                      XlibWrapper.AnyPropertyType);
-+ 
-+                         try {
-+-                            status = wpg4.execute(XToolkit.IgnoreBadWindowHandler);
-++                            status = wpg4.execute(XErrorHandler.IgnoreBadWindowHandler.getInstance());
-+ 
-+                             if (status != XlibWrapper.Success ||
-+                                 wpg4.getData() == 0 ||
-+@@ -205,7 +205,7 @@
-+ 
-+             /* The proxy window must have the XdndAware set, as XDnD protocol
-+                prescribes to check the proxy window for XdndAware. */
-+-            XToolkit.WITH_XERROR_HANDLER(XWM.VerifyChangePropertyHandler);
-++            XToolkit.WITH_XERROR_HANDLER(XErrorHandler.VerifyChangePropertyHandler.getInstance());
-+             XDnDConstants.XA_XdndAware.setAtomData(newProxy, XAtom.XA_ATOM,
-+                                                    data, 1);
-+             XToolkit.RESTORE_XERROR_HANDLER();
-+@@ -219,7 +219,7 @@
-+             Native.putLong(data, 0, newProxy);
-+ 
-+             /* The proxy window must have the XdndProxy set to point to itself.*/
-+-            XToolkit.WITH_XERROR_HANDLER(XWM.VerifyChangePropertyHandler);
-++            XToolkit.WITH_XERROR_HANDLER(XErrorHandler.VerifyChangePropertyHandler.getInstance());
-+             XDnDConstants.XA_XdndProxy.setAtomData(newProxy, XAtom.XA_WINDOW,
-+                                                    data, 1);
-+             XToolkit.RESTORE_XERROR_HANDLER();
-+@@ -232,7 +232,7 @@
-+ 
-+             Native.putLong(data, 0, XDnDConstants.XDND_PROTOCOL_VERSION);
-+ 
-+-            XToolkit.WITH_XERROR_HANDLER(XWM.VerifyChangePropertyHandler);
-++            XToolkit.WITH_XERROR_HANDLER(XErrorHandler.VerifyChangePropertyHandler.getInstance());
-+             XDnDConstants.XA_XdndAware.setAtomData(embedder, XAtom.XA_ATOM,
-+                                                    data, 1);
-+             XToolkit.RESTORE_XERROR_HANDLER();
-+@@ -245,7 +245,7 @@
-+ 
-+             Native.putLong(data, 0, newProxy);
-+ 
-+-            XToolkit.WITH_XERROR_HANDLER(XWM.VerifyChangePropertyHandler);
-++            XToolkit.WITH_XERROR_HANDLER(XErrorHandler.VerifyChangePropertyHandler.getInstance());
-+             XDnDConstants.XA_XdndProxy.setAtomData(embedder, XAtom.XA_WINDOW,
-+                                                    data, 1);
-+             XToolkit.RESTORE_XERROR_HANDLER();
-+@@ -278,7 +278,7 @@
-+             try {
-+                 Native.putLong(data, 0, entry.getVersion());
-+ 
-+-                XToolkit.WITH_XERROR_HANDLER(XWM.VerifyChangePropertyHandler);
-++                XToolkit.WITH_XERROR_HANDLER(XErrorHandler.VerifyChangePropertyHandler.getInstance());
-+                 XDnDConstants.XA_XdndAware.setAtomData(embedder, XAtom.XA_ATOM,
-+                                                        data, 1);
-+                 XToolkit.RESTORE_XERROR_HANDLER();
-+@@ -291,7 +291,7 @@
-+ 
-+                 Native.putLong(data, 0, (int)entry.getProxy());
-+ 
-+-                XToolkit.WITH_XERROR_HANDLER(XWM.VerifyChangePropertyHandler);
-++                XToolkit.WITH_XERROR_HANDLER(XErrorHandler.VerifyChangePropertyHandler.getInstance());
-+                 XDnDConstants.XA_XdndProxy.setAtomData(embedder, XAtom.XA_WINDOW,
-+                                                        data, 1);
-+                 XToolkit.RESTORE_XERROR_HANDLER();
-+@@ -329,7 +329,7 @@
-+                                      false, XlibWrapper.AnyPropertyType);
-+ 
-+         try {
-+-            status = wpg1.execute(XToolkit.IgnoreBadWindowHandler);
-++            status = wpg1.execute(XErrorHandler.IgnoreBadWindowHandler.getInstance());
-+ 
-+             if (status == XlibWrapper.Success &&
-+                 wpg1.getData() != 0 && wpg1.getActualType() == XAtom.XA_ATOM) {
-+@@ -348,7 +348,7 @@
-+                                          0, 1, false, XAtom.XA_WINDOW);
-+ 
-+             try {
-+-                status = wpg2.execute(XToolkit.IgnoreBadWindowHandler);
-++                status = wpg2.execute(XErrorHandler.IgnoreBadWindowHandler.getInstance());
-+ 
-+                 if (status == XlibWrapper.Success &&
-+                     wpg2.getData() != 0 &&
-+@@ -366,7 +366,7 @@
-+                                              0, 1, false, XAtom.XA_WINDOW);
-+ 
-+                 try {
-+-                    status = wpg3.execute(XToolkit.IgnoreBadWindowHandler);
-++                    status = wpg3.execute(XErrorHandler.IgnoreBadWindowHandler.getInstance());
-+ 
-+                     if (status != XlibWrapper.Success ||
-+                         wpg3.getData() == 0 ||
-+@@ -382,7 +382,7 @@
-+                                                      XlibWrapper.AnyPropertyType);
-+ 
-+                         try {
-+-                            status = wpg4.execute(XToolkit.IgnoreBadWindowHandler);
-++                            status = wpg4.execute(XErrorHandler.IgnoreBadWindowHandler.getInstance());
-+ 
-+                             if (status != XlibWrapper.Success ||
-+                                 wpg4.getData() == 0 ||
-+@@ -411,7 +411,7 @@
-+                                      false, XlibWrapper.AnyPropertyType);
-+ 
-+         try {
-+-            int status = wpg1.execute(XToolkit.IgnoreBadWindowHandler);
-++            int status = wpg1.execute(XErrorHandler.IgnoreBadWindowHandler.getInstance());
-+ 
-+             if (status == XlibWrapper.Success &&
-+                 wpg1.getData() != 0 && wpg1.getActualType() == XAtom.XA_ATOM) {
-+@@ -473,7 +473,7 @@
-+                                          0, 0xFFFF, false,
-+                                          XAtom.XA_ATOM);
-+             try {
-+-                wpg.execute(XToolkit.IgnoreBadWindowHandler);
-++                wpg.execute(XErrorHandler.IgnoreBadWindowHandler.getInstance());
-+ 
-+                 if (wpg.getActualType() == XAtom.XA_ATOM &&
-+                     wpg.getActualFormat() == 32) {
-+@@ -505,7 +505,7 @@
-+                                          0, 0xFFFF, false,
-+                                          XAtom.XA_ATOM);
-+             try {
-+-                wpg.execute(XToolkit.IgnoreBadWindowHandler);
-++                wpg.execute(XErrorHandler.IgnoreBadWindowHandler.getInstance());
-+ 
-+                 if (wpg.getActualType() == XAtom.XA_ATOM &&
-+                     wpg.getActualFormat() == 32) {
-+@@ -541,7 +541,7 @@
-+          */
-+         XWindowAttributes wattr = new XWindowAttributes();
-+         try {
-+-            XToolkit.WITH_XERROR_HANDLER(XToolkit.IgnoreBadWindowHandler);
-++            XToolkit.WITH_XERROR_HANDLER(XErrorHandler.IgnoreBadWindowHandler.getInstance());
-+             int status = XlibWrapper.XGetWindowAttributes(XToolkit.getDisplay(),
-+                                                           source_win, wattr.pData);
-+ 
-+@@ -558,7 +558,7 @@
-+             wattr.dispose();
-+         }
-+ 
-+-        XToolkit.WITH_XERROR_HANDLER(XToolkit.IgnoreBadWindowHandler);
-++        XToolkit.WITH_XERROR_HANDLER(XErrorHandler.IgnoreBadWindowHandler.getInstance());
-+         XlibWrapper.XSelectInput(XToolkit.getDisplay(), source_win,
-+                                  source_win_mask |
-+                                  XlibWrapper.StructureNotifyMask);
-+@@ -963,7 +963,7 @@
-+         if (sourceWindow != 0) {
-+             XToolkit.awtLock();
-+             try {
-+-                XToolkit.WITH_XERROR_HANDLER(XToolkit.IgnoreBadWindowHandler);
-++                XToolkit.WITH_XERROR_HANDLER(XErrorHandler.IgnoreBadWindowHandler.getInstance());
-+                 XlibWrapper.XSelectInput(XToolkit.getDisplay(), sourceWindow,
-+                                          sourceWindowMask);
-+                 XToolkit.RESTORE_XERROR_HANDLER();
-+@@ -1104,14 +1104,14 @@
-+                                                  0, 0xFFFF, false,
-+                                                  XAtom.XA_ATOM);
-+                     try {
-+-                        wpg.execute(XToolkit.IgnoreBadWindowHandler);
-++                        wpg.execute(XErrorHandler.IgnoreBadWindowHandler.getInstance());
-+ 
-+                         if (wpg.getActualType() == XAtom.XA_ATOM &&
-+                             wpg.getActualFormat() == 32) {
-+ 
-+                             XToolkit.awtLock();
-+                             try {
-+-                                XToolkit.WITH_XERROR_HANDLER(XWM.VerifyChangePropertyHandler);
-++                                XToolkit.WITH_XERROR_HANDLER(XErrorHandler.VerifyChangePropertyHandler.getInstance());
-+                                 XDnDConstants.XA_XdndTypeList.setAtomData(xclient.get_window(),
-+                                                                           XAtom.XA_ATOM,
-+                                                                           wpg.getData(),
-+diff -uNr openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XDragSourceProtocol.java openjdk/jdk/src/solaris/classes/sun/awt/X11/XDragSourceProtocol.java
-+--- openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XDragSourceProtocol.java 2010-07-15 10:28:21.896105637 -0400
-++++ openjdk/jdk/src/solaris/classes/sun/awt/X11/XDragSourceProtocol.java      2010-07-15 10:28:42.646232066 -0400
-+@@ -181,7 +181,7 @@
-+                                    long time) {
-+         XWindowAttributes wattr = new XWindowAttributes();
-+         try {
-+-            XToolkit.WITH_XERROR_HANDLER(XToolkit.IgnoreBadWindowHandler);
-++            XToolkit.WITH_XERROR_HANDLER(XErrorHandler.IgnoreBadWindowHandler.getInstance());
-+             int status = XlibWrapper.XGetWindowAttributes(XToolkit.getDisplay(),
-+                                                           targetWindow, wattr.pData);
-+ 
-+@@ -198,7 +198,7 @@
-+             wattr.dispose();
-+         }
-+ 
-+-        XToolkit.WITH_XERROR_HANDLER(XToolkit.IgnoreBadWindowHandler);
-++        XToolkit.WITH_XERROR_HANDLER(XErrorHandler.IgnoreBadWindowHandler.getInstance());
-+         XlibWrapper.XSelectInput(XToolkit.getDisplay(), targetWindow,
-+                                  targetWindowMask |
-+                                  XlibWrapper.StructureNotifyMask);
-+@@ -214,7 +214,7 @@
-+     }
-+ 
-+     protected final void finalizeDrop() {
-+-        XToolkit.WITH_XERROR_HANDLER(XToolkit.IgnoreBadWindowHandler);
-++        XToolkit.WITH_XERROR_HANDLER(XErrorHandler.IgnoreBadWindowHandler.getInstance());
-+         XlibWrapper.XSelectInput(XToolkit.getDisplay(), targetWindow,
-+                                  targetWindowMask);
-+         XToolkit.RESTORE_XERROR_HANDLER();
-+diff -uNr openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XDropTargetRegistry.java openjdk/jdk/src/solaris/classes/sun/awt/X11/XDropTargetRegistry.java
-+--- openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XDropTargetRegistry.java 2010-07-15 10:28:21.906105640 -0400
-++++ openjdk/jdk/src/solaris/classes/sun/awt/X11/XDropTargetRegistry.java      2010-07-15 10:28:42.648232198 -0400
-+@@ -172,7 +172,7 @@
-+                 if (dest_x >= 0 && dest_y >= 0) {
-+                     XWindowAttributes wattr = new XWindowAttributes();
-+                     try {
-+-                        XToolkit.WITH_XERROR_HANDLER(XToolkit.IgnoreBadWindowHandler);
-++                        XToolkit.WITH_XERROR_HANDLER(XErrorHandler.IgnoreBadWindowHandler.getInstance());
-+                         int status = XlibWrapper.XGetWindowAttributes(XToolkit.getDisplay(),
-+                                                                       window, wattr.pData);
-+                         XToolkit.RESTORE_XERROR_HANDLER();
-+@@ -226,7 +226,7 @@
-+             long event_mask = 0;
-+             XWindowAttributes wattr = new XWindowAttributes();
-+             try {
-+-                XToolkit.WITH_XERROR_HANDLER(XToolkit.IgnoreBadWindowHandler);
-++                XToolkit.WITH_XERROR_HANDLER(XErrorHandler.IgnoreBadWindowHandler.getInstance());
-+                 int status = XlibWrapper.XGetWindowAttributes(XToolkit.getDisplay(),
-+                                                               embedder, wattr.pData);
-+                 XToolkit.RESTORE_XERROR_HANDLER();
-+@@ -244,7 +244,7 @@
-+             }
-+ 
-+             if ((event_mask & XlibWrapper.PropertyChangeMask) == 0) {
-+-                XToolkit.WITH_XERROR_HANDLER(XToolkit.IgnoreBadWindowHandler);
-++                XToolkit.WITH_XERROR_HANDLER(XErrorHandler.IgnoreBadWindowHandler.getInstance());
-+                 XlibWrapper.XSelectInput(XToolkit.getDisplay(), embedder,
-+                                          event_mask | XlibWrapper.PropertyChangeMask);
-+                 XToolkit.RESTORE_XERROR_HANDLER();
-+@@ -398,7 +398,7 @@
-+ 
-+             /* Restore the original event mask for the embedder. */
-+             if ((event_mask & XlibWrapper.PropertyChangeMask) == 0) {
-+-                XToolkit.WITH_XERROR_HANDLER(XToolkit.IgnoreBadWindowHandler);
-++                XToolkit.WITH_XERROR_HANDLER(XErrorHandler.IgnoreBadWindowHandler.getInstance());
-+                 XlibWrapper.XSelectInput(XToolkit.getDisplay(), embedder,
-+                                          event_mask);
-+                 XToolkit.RESTORE_XERROR_HANDLER();
-+diff -uNr openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XEmbedCanvasPeer.java openjdk/jdk/src/solaris/classes/sun/awt/X11/XEmbedCanvasPeer.java
-+--- openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XEmbedCanvasPeer.java    2010-07-15 10:28:21.897105547 -0400
-++++ openjdk/jdk/src/solaris/classes/sun/awt/X11/XEmbedCanvasPeer.java 2010-07-15 10:28:42.650232331 -0400
-+@@ -301,7 +301,7 @@
-+         try {
-+             XWindowAttributes wattr = new XWindowAttributes();
-+             try {
-+-                XToolkit.WITH_XERROR_HANDLER(XToolkit.IgnoreBadWindowHandler);
-++                XToolkit.WITH_XERROR_HANDLER(XErrorHandler.IgnoreBadWindowHandler.getInstance());
-+                 int status = XlibWrapper.XGetWindowAttributes(XToolkit.getDisplay(),
-+                                                               xembed.handle, wattr.pData);
-+ 
-+diff -uNr openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XErrorHandler.java openjdk/jdk/src/solaris/classes/sun/awt/X11/XErrorHandler.java
-+--- openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XErrorHandler.java       1969-12-31 19:00:00.000000000 -0500
-++++ openjdk/jdk/src/solaris/classes/sun/awt/X11/XErrorHandler.java    2010-07-15 10:28:42.651989313 -0400
-+@@ -0,0 +1,79 @@
-++/*
-++ * Copyright 2009 Sun Microsystems, Inc.  All Rights Reserved.
-++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-++ *
-++ * This code is free software; you can redistribute it and/or modify it
-++ * under the terms of the GNU General Public License version 2 only, as
-++ * published by the Free Software Foundation.  Sun designates this
-++ * particular file as subject to the "Classpath" exception as provided
-++ * by Sun in the LICENSE file that accompanied this code.
-++ *
-++ * This code is distributed in the hope that it will be useful, but WITHOUT
-++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-++ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-++ * version 2 for more details (a copy is included in the LICENSE file that
-++ * accompanied this code).
-++ *
-++ * You should have received a copy of the GNU General Public License version
-++ * 2 along with this work; if not, write to the Free Software Foundation,
-++ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-++ *
-++ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
-++ * CA 95054 USA or visit www.sun.com if you need additional information or
-++ * have any questions.
-++ */
-++package sun.awt.X11;
-++
-++public abstract class XErrorHandler {
-++
-++    /*
-++     * Called under AWT lock
-++     */
-++    public abstract int handleError(long display, XErrorEvent err);
-++
-++    /*
-++     * Forwards all the errors to saved error handler (which was
-++     * set before XToolkit had been initialized).
-++     */
-++    public static class XBaseErrorHandler extends XErrorHandler {
-++        @Override
-++        public int handleError(long display, XErrorEvent err) {
-++            return XToolkit.SAVED_ERROR_HANDLER(display, err);
-++        }
-++    }
-++
-++    /*
-++     * Instead of validating window id, we simply call XGetWindowProperty,
-++     * but temporary install this function as the error handler to ignore
-++     * BadWindow error.
-++     */
-++    public static class IgnoreBadWindowHandler extends XBaseErrorHandler {
-++        @Override
-++        public int handleError(long display, XErrorEvent err) {
-++            if (err.get_error_code() == XConstants.BadWindow) {
-++                return 0;
-++            }
-++            return super.handleError(display, err);
-++        }
-++        // Shared instance
-++        private static IgnoreBadWindowHandler theInstance = new IgnoreBadWindowHandler();
-++        public static IgnoreBadWindowHandler getInstance() {
-++            return theInstance;
-++        }
-++    }
-++
-++    public static class VerifyChangePropertyHandler extends XBaseErrorHandler {
-++        @Override
-++        public int handleError(long display, XErrorEvent err) {
-++            if (err.get_request_code() == XProtocolConstants.X_ChangeProperty) {
-++                return 0;
-++            }
-++            return super.handleError(display, err);
-++        }
-++        // Shared instance
-++        private static IgnoreBadWindowHandler theInstance = new IgnoreBadWindowHandler();
-++        public static IgnoreBadWindowHandler getInstance() {
-++            return theInstance;
-++        }
-++    }
-++}
-+diff -uNr openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XlibUtil.java openjdk/jdk/src/solaris/classes/sun/awt/X11/XlibUtil.java
-+--- openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XlibUtil.java    2010-07-15 10:28:21.893105473 -0400
-++++ openjdk/jdk/src/solaris/classes/sun/awt/X11/XlibUtil.java 2010-07-15 10:28:42.651989313 -0400
-+@@ -149,7 +149,7 @@
-+                 new XTranslateCoordinates(src, dst, p.x, p.y);
-+             try
-+             {
-+-                int status = xtc.execute(XToolkit.IgnoreBadWindowHandler);
-++                int status = xtc.execute(XErrorHandler.IgnoreBadWindowHandler.getInstance());
-+                 if ((status != 0) &&
-+                     ((XToolkit.saved_error == null) ||
-+                      (XToolkit.saved_error.get_error_code() == XlibWrapper.Success)))
-+@@ -306,7 +306,7 @@
-+                                          XWM.XA_WM_STATE);
-+             try
-+             {
-+-                wpg.execute(XToolkit.IgnoreBadWindowHandler);
-++                wpg.execute(XErrorHandler.IgnoreBadWindowHandler.getInstance());
-+                 if (wpg.getActualType() == XWM.XA_WM_STATE.getAtom())
-+                 {
-+                     return true;
-+@@ -345,7 +345,7 @@
-+         XWindowAttributes wattr = new XWindowAttributes();
-+         try
-+         {
-+-            XToolkit.WITH_XERROR_HANDLER(XToolkit.IgnoreBadWindowHandler);
-++            XToolkit.WITH_XERROR_HANDLER(XErrorHandler.IgnoreBadWindowHandler.getInstance());
-+             int status = XlibWrapper.XGetWindowAttributes(XToolkit.getDisplay(),
-+                                                           window, wattr.pData);
-+             XToolkit.RESTORE_XERROR_HANDLER();
-+diff -uNr openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XlibWrapper.java openjdk/jdk/src/solaris/classes/sun/awt/X11/XlibWrapper.java
-+--- openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XlibWrapper.java 2010-07-15 10:28:21.905105617 -0400
-++++ openjdk/jdk/src/solaris/classes/sun/awt/X11/XlibWrapper.java      2010-07-15 10:28:42.654187919 -0400
-+@@ -613,4 +613,6 @@
-+         String javaVersion = XToolkit.getSystemProperty("java.version");
-+         return javaVersion != null && javaVersion.contains("internal");
-+     }
-++
-++    static native void PrintXErrorEvent(long display, long event_ptr);
-+ }
-+diff -uNr openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XProtocol.java openjdk/jdk/src/solaris/classes/sun/awt/X11/XProtocol.java
-+--- openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XProtocol.java   2010-07-15 10:28:21.893105473 -0400
-++++ openjdk/jdk/src/solaris/classes/sun/awt/X11/XProtocol.java        2010-07-15 10:28:42.655357930 -0400
-+@@ -35,20 +35,6 @@
-+     private Map<XAtom, XAtomList> atomToList = new HashMap<XAtom, XAtomList>();
-+     private Map<XAtom, Long> atomToAnchor = new HashMap<XAtom, Long>();
-+ 
-+-    /*
-+-     * Temporary error handler that ensures that we know if
-+-     * XChangeProperty succeeded or not.
-+-     */
-+-    static XToolkit.XErrorHandler VerifyChangePropertyHandler = new XToolkit.XErrorHandler() {
-+-            public int handleError(long display, XErrorEvent err) {
-+-                XToolkit.XERROR_SAVE(err);
-+-                if (err.get_request_code() == XlibWrapper.X_ChangeProperty) {
-+-                    return 0;
-+-                } else {
-+-                    return XToolkit.SAVED_ERROR_HANDLER(display, err);
-+-                }
-+-            }
-+-        };
-+     volatile boolean firstCheck = true;
-+     /*
-+      * Check that that the list of protocols specified by WM in property
-+diff -uNr openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XQueryTree.java openjdk/jdk/src/solaris/classes/sun/awt/X11/XQueryTree.java
-+--- openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XQueryTree.java  2010-07-15 10:28:21.894105746 -0400
-++++ openjdk/jdk/src/solaris/classes/sun/awt/X11/XQueryTree.java       2010-07-15 10:28:42.662356819 -0400
-+@@ -51,7 +51,7 @@
-+         public int execute() {
-+                 return execute(null);
-+         }
-+-        public int execute(XToolkit.XErrorHandler errorHandler) {
-++        public int execute(XErrorHandler errorHandler) {
-+                 XToolkit.awtLock();
-+                 try {
-+                     if (isDisposed()) {
-+diff -uNr openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XToolkit.java openjdk/jdk/src/solaris/classes/sun/awt/X11/XToolkit.java
-+--- openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XToolkit.java    2010-07-15 10:28:21.896105637 -0400
-++++ openjdk/jdk/src/solaris/classes/sun/awt/X11/XToolkit.java 2010-07-15 10:30:45.039232001 -0400
-+@@ -48,6 +48,7 @@
-+ import sun.font.FontManager;
-+ import sun.misc.PerformanceLogger;
-+ import sun.print.PrintJob2D;
-++import sun.security.action.GetBooleanAction;
-+ import java.lang.reflect.*;
-+ 
-+ public class XToolkit extends UNIXToolkit implements Runnable, XConstants {
-+@@ -120,62 +121,78 @@
-+             setBackingStoreType();
-+         }
-+         m_removeSourceEvents = SunToolkit.getMethod(EventQueue.class, "removeSourceEvents", new Class[] {Object.class, Boolean.TYPE}) ;
-++        noisyAwtHandler = AccessController.doPrivileged(new GetBooleanAction("sun.awt.noisyerrorhandler"));
-++
-+     }
-+ 
-+-    // Error handler stuff
-+-    static XErrorEvent saved_error;
-+-    static long saved_error_handler;
-+-    static XErrorHandler curErrorHandler;
-+-    // Should be called under LOCK, before releasing LOCK RESTORE_XERROR_HANDLER should be called
-+-    static void WITH_XERROR_HANDLER(XErrorHandler handler) {
-++    //---- ERROR HANDLER CODE ----//
-++
-++    /*
-++     * Error handler at the moment of XToolkit initialization
-++     */
-++    private static long saved_error_handler;
-++
-++    /*
-++     * XErrorEvent being handled
-++     */
-++    static volatile XErrorEvent saved_error;
-++
-++    /*
-++     * Current error handler or null if no error handler is set
-++     */
-++    private static XErrorHandler current_error_handler;
-++
-++    /*
-++     * Value of sun.awt.noisyerrorhandler system property
-++     */
-++    private static boolean noisyAwtHandler;
-++
-++    public static void WITH_XERROR_HANDLER(XErrorHandler handler) {
-+         saved_error = null;
-+-        curErrorHandler = handler;
-+-        XSync();
-+-        saved_error_handler = XlibWrapper.SetToolkitErrorHandler();
-+-    }
-+-    static void XERROR_SAVE(XErrorEvent event) {
-+-        saved_error = event;
-++        current_error_handler = handler;
-+     }
-+-    // Should be called under LOCK
-+-    static void RESTORE_XERROR_HANDLER() {
-+-       XSync();
-+-        XlibWrapper.XSetErrorHandler(saved_error_handler);
-+-        curErrorHandler = null;
-++
-++    public static void RESTORE_XERROR_HANDLER() {
-++        current_error_handler = null;
-+     }
-++
-+     // Should be called under LOCK
-+-    static int SAVED_ERROR_HANDLER(long display, XErrorEvent error) {
-+-        return XlibWrapper.CallErrorHandler(saved_error_handler, display, error.pData);
-+-    }
-+-    interface XErrorHandler {
-+-        int handleError(long display, XErrorEvent err);
-++    public static int SAVED_ERROR_HANDLER(long display, XErrorEvent error) {
-++        if (saved_error_handler != 0) {
-++            // Default XErrorHandler may just terminate the process. Don't call it.
-++            // return XlibWrapper.CallErrorHandler(saved_error_handler, display, error.pData);
-++        }
-++        if (log.isLoggable(Level.FINE)) {
-++            log.log(Level.FINE, "Unhandled XErrorEvent: " +
-++                    "id=" + error.get_resourceid() + ", " +
-++                    "serial=" + error.get_serial() + ", " +
-++                    "ec=" + error.get_error_code() + ", " +
-++                    "rc=" + error.get_request_code() + ", " +
-++                    "mc=" + error.get_minor_code());
-++        }
-++        return 0;
-+     }
-+-    static int GlobalErrorHandler(long display, long event_ptr) {
-++
-++    // Called from the native code when an error occurs
-++    private static int globalErrorHandler(long display, long event_ptr) {
-++        if (noisyAwtHandler) {
-++            XlibWrapper.PrintXErrorEvent(display, event_ptr);
-++        }
-+         XErrorEvent event = new XErrorEvent(event_ptr);
-++        saved_error = event;
-+         try {
-+-            if (curErrorHandler != null) {
-+-                return curErrorHandler.handleError(display, event);
-++            if (current_error_handler != null) {
-++                return current_error_handler.handleError(display, event);
-+             } else {
-+                 return SAVED_ERROR_HANDLER(display, event);
-+             }
-+-        } finally {
-++        } catch (Throwable z) {
-++            log.log(Level.FINE, "Error in GlobalErrorHandler", z);
-+         }
-++        return 0;
-+     }
-+ 
-+-/*
-+- * Instead of validating window id, we simply call XGetWindowProperty,
-+- * but temporary install this function as the error handler to ignore
-+- * BadWindow error.
-+- */
-+-    static XErrorHandler IgnoreBadWindowHandler = new XErrorHandler() {
-+-            public int handleError(long display, XErrorEvent err) {
-+-                XERROR_SAVE(err);
-+-                if (err.get_error_code() == BadWindow) {
-+-                    return 0;
-+-                } else {
-+-                    return SAVED_ERROR_HANDLER(display, err);
-+-                }
-+-            }
-+-        };
-++    //---- END OF ERROR HANDLER CODE ----//
-+ 
-+ 
-+     private native static void initIDs();
-+@@ -269,17 +286,27 @@
-+ 
-+             arrowCursor = XlibWrapper.XCreateFontCursor(XToolkit.getDisplay(),
-+                 XCursorFontConstants.XC_arrow);
-++
-++            saved_error_handler = XlibWrapper.SetToolkitErrorHandler();
-++
-+         } finally {
-+             awtUnlock();
-+         }
-+ 
-+-        if (log.isLoggable(Level.FINE)) {
-+-            Runtime.getRuntime().addShutdownHook(new Thread() {
-+-                    public void run() {
-++        Runtime.getRuntime().addShutdownHook(new Thread() {
-++            public void run() {
-++                if (log.isLoggable(Level.FINE)) {
-+                         dumpPeers();
-+-                    }
-+-                });
-+-        }
-++                }
-++
-++                awtLock();
-++                try {
-++                        XlibWrapper.XSetErrorHandler(saved_error_handler);
-++                } finally {
-++                        awtUnlock();
-++                }
-++            }
-++        });
-+     }
-+ 
-+     static String getCorrectXIDString(String val) {
-+@@ -2162,5 +2189,4 @@
-+         return new XDesktopPeer();
-+     }
-+ 
-+-    public static native void setNoisyXErrorHandler();
-+ }
-+diff -uNr openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XTranslateCoordinates.java openjdk/jdk/src/solaris/classes/sun/awt/X11/XTranslateCoordinates.java
-+--- openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XTranslateCoordinates.java       2010-07-15 10:28:21.900105578 -0400
-++++ openjdk/jdk/src/solaris/classes/sun/awt/X11/XTranslateCoordinates.java    2010-07-15 10:28:42.666356882 -0400
-+@@ -57,7 +57,7 @@
-+         public int execute() {
-+                 return execute(null);
-+         }
-+-        public int execute(XToolkit.XErrorHandler errorHandler) {
-++        public int execute(XErrorHandler errorHandler) {
-+                 XToolkit.awtLock();
-+                 try {
-+                 if (isDisposed()) {
-+diff -uNr openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XWM.java openjdk/jdk/src/solaris/classes/sun/awt/X11/XWM.java
-+--- openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XWM.java 2010-07-15 10:28:21.896105637 -0400
-++++ openjdk/jdk/src/solaris/classes/sun/awt/X11/XWM.java      2010-07-15 10:28:42.668356704 -0400
-+@@ -273,7 +273,7 @@
-+             winmgr_running = false;
-+             substruct.set_event_mask(XlibWrapper.SubstructureRedirectMask);
-+ 
-+-            XToolkit.WITH_XERROR_HANDLER(DetectWMHandler);
-++            XToolkit.WITH_XERROR_HANDLER(detectWMHandler);
-+             XlibWrapper.XChangeWindowAttributes(XToolkit.getDisplay(),
-+                                                 XToolkit.getDefaultRootWindow(),
-+                                                 XlibWrapper.CWEventMask,
-+@@ -318,7 +318,7 @@
-+             new WindowPropertyGetter(window, XA_ENLIGHTENMENT_COMMS, 0, 14, false,
-+                                      XAtom.XA_STRING);
-+         try {
-+-            int status = getter.execute(XToolkit.IgnoreBadWindowHandler);
-++            int status = getter.execute(XErrorHandler.IgnoreBadWindowHandler.getInstance());
-+             if (status != XlibWrapper.Success || getter.getData() == 0) {
-+                 return 0;
-+             }
-+@@ -442,7 +442,7 @@
-+                 new WindowPropertyGetter(wmwin, XA_DT_SM_STATE_INFO, 0, 1,
-+                                          false, XA_DT_SM_STATE_INFO);
-+             try {
-+-                status = getter2.execute(XToolkit.IgnoreBadWindowHandler);
-++                status = getter2.execute(XErrorHandler.IgnoreBadWindowHandler.getInstance());
-+ 
-+ 
-+                 if (status != XlibWrapper.Success || getter2.getData() == 0) {
-+@@ -574,21 +574,6 @@
-+     }
-+ 
-+     /*
-+-     * Temporary error handler that ensures that we know if
-+-     * XChangeProperty succeeded or not.
-+-     */
-+-    static XToolkit.XErrorHandler VerifyChangePropertyHandler = new XToolkit.XErrorHandler() {
-+-            public int handleError(long display, XErrorEvent err) {
-+-                XToolkit.XERROR_SAVE(err);
-+-                if (err.get_request_code() == XlibWrapper.X_ChangeProperty) {
-+-                    return 0;
-+-                } else {
-+-                    return XToolkit.SAVED_ERROR_HANDLER(display, err);
-+-                }
-+-            }
-+-        };
-+-
-+-    /*
-+      * Prepare IceWM check.
-+      *
-+      * The only way to detect IceWM, seems to be by setting
-+@@ -623,7 +608,7 @@
-+ 
-+         XToolkit.awtLock();
-+         try {
-+-            XToolkit.WITH_XERROR_HANDLER(VerifyChangePropertyHandler);
-++            XToolkit.WITH_XERROR_HANDLER(XErrorHandler.VerifyChangePropertyHandler.getInstance());
-+             XlibWrapper.XChangePropertyS(XToolkit.getDisplay(), XToolkit.getDefaultRootWindow(),
-+                                          XA_ICEWM_WINOPTHINT.getAtom(),
-+                                          XA_ICEWM_WINOPTHINT.getAtom(),
-+@@ -691,20 +676,19 @@
-+      * Temporary error handler that checks if selecting for
-+      * SubstructureRedirect failed.
-+      */
-+-    static boolean winmgr_running = false;
-+-    static XToolkit.XErrorHandler DetectWMHandler = new XToolkit.XErrorHandler() {
-+-            public int handleError(long display, XErrorEvent err) {
-+-                XToolkit.XERROR_SAVE(err);
-+-                if (err.get_request_code() == XlibWrapper.X_ChangeWindowAttributes
-+-                    && err.get_error_code() == XlibWrapper.BadAccess)
-+-                {
-+-                    winmgr_running = true;
-+-                    return 0;
-+-                } else {
-+-                    return XToolkit.SAVED_ERROR_HANDLER(display, err);
-+-                }
-++    private static boolean winmgr_running = false;
-++    private static XErrorHandler detectWMHandler = new XErrorHandler.XBaseErrorHandler() {
-++        @Override
-++        public int handleError(long display, XErrorEvent err) {
-++            if ((err.get_request_code() == XProtocolConstants.X_ChangeWindowAttributes) &&
-++                (err.get_error_code() == XConstants.BadAccess))
-++            {
-++                winmgr_running = true;
-++                return 0;
-+             }
-+-        };
-++            return super.handleError(display, err);
-++        }
-++    };
-+ 
-+     /*
-+      * Make an educated guess about running window manager.
-+diff -uNr openjdk.orig/jdk/src/solaris/native/sun/awt/awt_GraphicsEnv.c openjdk/jdk/src/solaris/native/sun/awt/awt_GraphicsEnv.c
-+--- openjdk.orig/jdk/src/solaris/native/sun/awt/awt_GraphicsEnv.c     2010-07-15 10:28:21.866105645 -0400
-++++ openjdk/jdk/src/solaris/native/sun/awt/awt_GraphicsEnv.c  2010-07-15 10:28:42.670355820 -0400
-+@@ -175,42 +175,11 @@
-+ }
-+ 
-+ #ifndef HEADLESS
-++
-+ /*
-+- * error handlers
-++ * XIOErrorHandler
-+  */
-+-
-+-int
-+-xerror_handler(Display * disp, XErrorEvent * err)
-+-{
-+-/* #ifdef DEBUG */
-+-    char msg[128];
-+-    char buf[128];
-+-    char *ev = getenv("NOISY_AWT");
-+-
-+-    if (!ev || !ev[0])
-+-        return 0;
-+-    XGetErrorText(disp, err->error_code, msg, sizeof(msg));
-+-    jio_fprintf(stderr, "Xerror %s, XID %x, ser# %d\n", msg, err->resourceid, err->serial);
-+-    jio_snprintf(buf, sizeof(buf), "%d", err->request_code);
-+-    XGetErrorDatabaseText(disp, "XRequest", buf, "Unknown", msg, sizeof(msg));
-+-    jio_fprintf(stderr, "Major opcode %d (%s)\n", err->request_code, msg);
-+-    if (err->request_code > 128) {
-+-        jio_fprintf(stderr, "Minor opcode %d\n", err->minor_code);
-+-    }
-+-    if (awtLockInited) {
-+-        /*SignalError(lockedee->lastpc, lockedee, "fp/ade/gui/GUIException", msg); */
-+-    }
-+-    if (strcasecmp(ev, "abort") == 0) {
-+-        JNIEnv *env = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2);
-+-
-+-        (*env)->FatalError(env, "xerror_handler abort");
-+-    }
-+-/* #endif */
-+-    return 0;
-+-}
-+-
-+-static int
-+-xioerror_handler(Display * disp)
-++static int xioerror_handler(Display *disp)
-+ {
-+     if (awtLockInited) {
-+         if (errno == EPIPE) {
-+@@ -806,7 +775,6 @@
-+         return NULL;
-+     }
-+ 
-+-    XSetErrorHandler(xerror_handler);
-+     XSetIOErrorHandler(xioerror_handler);
-+ 
-+     /* set awt_numScreens, and whether or not we're using Xinerama */
-+diff -uNr openjdk.orig/jdk/src/solaris/native/sun/awt/awt_InputMethod.c openjdk/jdk/src/solaris/native/sun/awt/awt_InputMethod.c
-+--- openjdk.orig/jdk/src/solaris/native/sun/awt/awt_InputMethod.c     2010-07-15 10:28:21.865105640 -0400
-++++ openjdk/jdk/src/solaris/native/sun/awt/awt_InputMethod.c  2010-07-15 10:28:42.671355975 -0400
-+@@ -1458,7 +1458,6 @@
-+ }
-+ 
-+ static void OpenXIMCallback(Display *display, XPointer client_data, XPointer call_data) {
-+-    extern int xerror_handler();
-+     XIMCallback ximCallback;
-+ 
-+     X11im = XOpenIM(display, NULL, NULL, NULL);
-+@@ -1469,13 +1468,6 @@
-+     ximCallback.callback = (XIMProc)DestroyXIMCallback;
-+     ximCallback.client_data = NULL;
-+     XSetIMValues(X11im, XNDestroyCallback, &ximCallback, NULL);
-+-
-+-    /* Workaround for Solaris 2.6 bug 4097754. We're affected by this problem
-+-     * because Motif also calls XOpenIM for us. Re-registering the error handler
-+-     * that MToolkit has registered already after calling XOpenIM avoids the
-+-     * problem.
-+-     */
-+-    XSetErrorHandler(xerror_handler);
-+ }
-+ 
-+ static void DestroyXIMCallback(XIM im, XPointer client_data, XPointer call_data) {
-+diff -uNr openjdk.orig/jdk/src/solaris/native/sun/awt/awt_MToolkit.c openjdk/jdk/src/solaris/native/sun/awt/awt_MToolkit.c
-+--- openjdk.orig/jdk/src/solaris/native/sun/awt/awt_MToolkit.c        2010-07-15 10:28:21.867105700 -0400
-++++ openjdk/jdk/src/solaris/native/sun/awt/awt_MToolkit.c     2010-07-15 10:28:42.673355929 -0400
-+@@ -1926,26 +1926,6 @@
-+               XtAppProcessEvent(awt_appContext, iMask & ~XtIMXEvent);
-+             }
-+ 
-+-            /*
-+-            ** Bug #4361799: Forte4J sometimes crashes on Solaris:
-+-            ** There is an underlying bug in Selection.c in Xt lib.
-+-            ** The routine HandleSelectionEvents, can call EndProtectedSection()
-+-            ** more than  StartProtectedSection(), and then EndProtectedSection
-+-            ** will restore the default XError handler.  As a result awt's
-+-            ** XError handler gets removed and we later crash on an XError.
-+-            **
-+-            ** This happens when we call XtAppProcessEvent with event type 1e
-+-            ** (SelectionRequest) when running two copies of Forte
-+-            **
-+-            ** XSetErrorHandler can safely be called repeatedly, so we are
-+-            ** fixing this with the sledgehammer, and resetting our XError
-+-            ** handler every time through the loop:
-+-            */
-+-            {
-+-                extern int32_t xerror_handler();
-+-                XSetErrorHandler(xerror_handler);
-+-            }
-+-
-+ } /* processOneEvent() */
-+ 
-+ /*
-+diff -uNr openjdk.orig/jdk/src/solaris/native/sun/xawt/XlibWrapper.c openjdk/jdk/src/solaris/native/sun/xawt/XlibWrapper.c
-+--- openjdk.orig/jdk/src/solaris/native/sun/xawt/XlibWrapper.c        2010-07-15 10:28:21.882105738 -0400
-++++ openjdk/jdk/src/solaris/native/sun/xawt/XlibWrapper.c     2010-07-15 10:28:42.675169363 -0400
-+@@ -1097,7 +1097,7 @@
-+ static int ToolkitErrorHandler(Display * dpy, XErrorEvent * event) {
-+     if (jvm != NULL) {
-+         JNIEnv * env = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2);
-+-        return JNU_CallStaticMethodByName(env, NULL, "sun/awt/X11/XToolkit", "GlobalErrorHandler", "(JJ)I",
-++        return JNU_CallStaticMethodByName(env, NULL, "sun/awt/X11/XToolkit", "globalErrorHandler", "(JJ)I",
-+                                           ptr_to_jlong(dpy), ptr_to_jlong(event)).i;
-+     } else {
-+         return 0;
-+@@ -1140,6 +1140,28 @@
-+     return (*(XErrorHandler)jlong_to_ptr(handler))((Display*) jlong_to_ptr(display), (XErrorEvent*) jlong_to_ptr(event_ptr));
-+ }
-+ 
-++/*
-++ * Class:     sun_awt_X11_XlibWrapper
-++ * Method:    PrintXErrorEvent
-++ * Signature: (JJ)V
-++ */
-++JNIEXPORT void JNICALL Java_sun_awt_X11_XlibWrapper_PrintXErrorEvent
-++(JNIEnv *env, jclass clazz, jlong display, jlong event_ptr)
-++{
-++    char msg[128];
-++    char buf[128];
-++
-++    XErrorEvent* err = (XErrorEvent *)jlong_to_ptr(event_ptr);
-++
-++    XGetErrorText((Display *)jlong_to_ptr(display), err->error_code, msg, sizeof(msg));
-++    jio_fprintf(stderr, "Xerror %s, XID %x, ser# %d\n", msg, err->resourceid, err->serial);
-++    jio_snprintf(buf, sizeof(buf), "%d", err->request_code);
-++    XGetErrorDatabaseText((Display *)jlong_to_ptr(display), "XRequest", buf, "Unknown", msg, sizeof(msg));
-++    jio_fprintf(stderr, "Major opcode %d (%s)\n", err->request_code, msg);
-++    if (err->request_code > 128) {
-++        jio_fprintf(stderr, "Minor opcode %d\n", err->minor_code);
-++    }
-++}
-+ 
-+ 
-+ /*
-+diff -uNr openjdk.orig/jdk/src/solaris/native/sun/xawt/XToolkit.c openjdk/jdk/src/solaris/native/sun/xawt/XToolkit.c
-+--- openjdk.orig/jdk/src/solaris/native/sun/xawt/XToolkit.c   2010-07-15 10:28:21.883105599 -0400
-++++ openjdk/jdk/src/solaris/native/sun/xawt/XToolkit.c        2010-07-15 10:28:42.676355933 -0400
-+@@ -581,7 +581,6 @@
-+         pollFds[1].revents = 0;
-+     }
-+ 
-+-
-+     AWT_NOFLUSH_UNLOCK();
-+ 
-+     /* ACTUALLY DO THE POLL() */
-+@@ -690,8 +689,6 @@
-+     return ret;
-+ }
-+ 
-+-static XErrorHandler saved_error_handler = NULL;
-+-
-+ #ifdef __linux__
-+ void print_stack(void)
-+ {
-+@@ -712,38 +709,6 @@
-+ }
-+ #endif
-+ 
-+-static int NoisyXErrorHandler(Display * dpy, XErrorEvent * event) {
-+-    fprintf(stderr, "id=%x, serial=%x, ec=%d, rc=%d, mc=%d\n",
-+-            event->resourceid, event->serial, event->error_code,
-+-            event->request_code, event->minor_code);
-+-    /*
-+-    #ifdef __linux__
-+-        print_stack();
-+-    #endif
-+-    */
-+-    if (jvm != NULL) {
-+-      JNIEnv * env = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2);
-+-      JNU_CallStaticMethodByName(env, NULL, "java/lang/Thread", "dumpStack", "()V");
-+-    }
-+-    if (!saved_error_handler) {
-+-        return saved_error_handler(dpy, event);
-+-    }
-+-    return 0;
-+-}
-+-
-+-/*
-+- * Class:     sun_awt_X11_XToolkit
-+- * Method:    setNoisyXErrorHandler
-+- * Signature: ()V
-+- */
-+-JNIEXPORT void JNICALL Java_sun_awt_X11_XToolkit_setNoisyXErrorHandler
-+-(JNIEnv *env , jclass clazz)
-+-{
-+-    (*env)->GetJavaVM(env, &jvm);
-+-    saved_error_handler = XSetErrorHandler(NoisyXErrorHandler);
-+-}
-+-
-+-
-+ Window get_xawt_root_shell(JNIEnv *env) {
-+   static jclass classXRootWindow = NULL;
-+   static jmethodID methodGetXRootWindow = NULL;
-diff -r d1ad52447673 patches/systemtap-gcc-4.5.patch
---- /dev/null  Thu Jan 01 00:00:00 1970 +0000
-+++ b/patches/systemtap-gcc-4.5.patch  Tue Jul 20 16:36:52 2010 +0200
-@@ -0,0 +1,11 @@
-+--- openjdk.orig/hotspot/src/share/vm/prims/jni.cpp   2010-04-28 08:51:29.000000000 +0100
-++++ openjdk/hotspot/src/share/vm/prims/jni.cpp        2010-04-28 09:29:22.000000000 +0100
-+@@ -2723,7 +2723,7 @@
-+ 
-+   if (!directBufferSupportInitializeEnded) {
-+     if (!initializeDirectBufferSupport(env, thread)) {
-+-      DTRACE_PROBE1(hotspot_jni, NewDirectByteBuffer__return, NULL);
-++      DTRACE_PROBE1(hotspot_jni, NewDirectByteBuffer__return, (uintptr_t) NULL);
-+       return NULL;
-+     }
-+   }
-diff -r d1ad52447673 plugin/icedteanp/IcedTeaJavaRequestProcessor.cc
---- a/plugin/icedteanp/IcedTeaJavaRequestProcessor.cc  Wed Apr 14 12:21:30 2010 +0200
-+++ b/plugin/icedteanp/IcedTeaJavaRequestProcessor.cc  Tue Jul 20 16:36:52 2010 +0200
-@@ -179,7 +179,7 @@
- JavaRequestProcessor::JavaRequestProcessor()
- {
--    PLUGIN_DEBUG_0ARG("JavaRequestProcessor constructor\n");
-+    PLUGIN_DEBUG("JavaRequestProcessor constructor\n");
-       // caller frees this
-       result = new JavaResultData();
-@@ -200,7 +200,7 @@
- JavaRequestProcessor::~JavaRequestProcessor()
- {
--    PLUGIN_DEBUG_0ARG("JavaRequestProcessor::~JavaRequestProcessor\n");
-+    PLUGIN_DEBUG("JavaRequestProcessor::~JavaRequestProcessor\n");
-       if (result)
-       {
-@@ -271,7 +271,7 @@
-       result->error_msg->append("Error: Timed out when waiting for response");
-       // Report error
--      PLUGIN_DEBUG_1ARG("Error: Timed out when waiting for response to %s\n", message.c_str());
-+      PLUGIN_DEBUG("Error: Timed out when waiting for response to %s\n", message.c_str());
-     }
-     java_to_plugin_bus->unSubscribe(this);
-@@ -847,12 +847,12 @@
-     if (NPVARIANT_IS_VOID(variant))
-     {
--      PLUGIN_DEBUG_1ARG("VOID %d\n", variant);
-+      PLUGIN_DEBUG("VOID %d\n", variant);
-       id->append("0");
-       return; // no need to go further
-     } else if (NPVARIANT_IS_NULL(variant))
-     {
--      PLUGIN_DEBUG_1ARG("NULL\n", variant);
-+      PLUGIN_DEBUG("NULL\n", variant);
-       id->append("0");
-       return; // no need to go further
-     } else if (NPVARIANT_IS_BOOLEAN(variant))
-@@ -894,18 +894,18 @@
-         NPObject* obj = NPVARIANT_TO_OBJECT(variant);
-         if (IcedTeaScriptableJavaPackageObject::is_valid_java_object(obj))
-         {
--            PLUGIN_DEBUG_0ARG("NPObject is a Java object\n");
-+            PLUGIN_DEBUG("NPObject is a Java object\n");
-             alreadyCreated = true;
-         } else
-         {
--            PLUGIN_DEBUG_0ARG("NPObject is not a Java object\n");
-+            PLUGIN_DEBUG("NPObject is not a Java object\n");
-             NPIdentifier length_id = browser_functions.getstringidentifier("length");
-             // FIXME: We currently only handle <= 2 dim arrays. Do we really need more though?
-             // Is it an array?
-             if (IcedTeaPluginUtilities::isObjectJSArray(instance, obj)) {
--                PLUGIN_DEBUG_0ARG("NPObject is an array\n");
-+                PLUGIN_DEBUG("NPObject is an array\n");
-                 std::string array_id = std::string();
-                 std::string java_array_type = std::string();
-diff -r d1ad52447673 plugin/icedteanp/IcedTeaNPPlugin.cc
---- a/plugin/icedteanp/IcedTeaNPPlugin.cc      Wed Apr 14 12:21:30 2010 +0200
-+++ b/plugin/icedteanp/IcedTeaNPPlugin.cc      Tue Jul 20 16:36:52 2010 +0200
-@@ -262,7 +262,7 @@
-          int16_t argc, char* argn[], char* argv[],
-          NPSavedData* saved)
- {
--  PLUGIN_DEBUG_0ARG("ITNP_New\n");
-+  PLUGIN_DEBUG("ITNP_New\n");
-   static NPObject *window_ptr;
-   NPIdentifier identifier;
-@@ -275,7 +275,7 @@
-   }
-   browser_functions.getproperty(instance, window_ptr, identifier, &member_ptr);
--  PLUGIN_DEBUG_1ARG("Got variant %p\n", &member_ptr);
-+  PLUGIN_DEBUG("Got variant %p\n", &member_ptr);
-   NPError np_error = NPERR_NO_ERROR;
-@@ -395,12 +395,12 @@
-   documentbase = NULL;
-   // store an identifier for this plugin
--  PLUGIN_DEBUG_2ARG("Mapping id %d and instance %p\n", instance_counter, instance);
-+  PLUGIN_DEBUG("Mapping id %d and instance %p\n", instance_counter, instance);
-   g_hash_table_insert(instance_to_id_map, instance, GINT_TO_POINTER(instance_counter));
-   g_hash_table_insert(id_to_instance_map, GINT_TO_POINTER(instance_counter), instance);
-   instance_counter++;
--  PLUGIN_DEBUG_0ARG ("ITNP_New return\n");
-+  PLUGIN_DEBUG ("ITNP_New return\n");
-   return np_error;
- }
-@@ -415,16 +415,16 @@
-   GMutex *vm_start_mutex = g_mutex_new();
-   g_mutex_lock(vm_start_mutex);
--  PLUGIN_DEBUG_0ARG("Checking JVM status...\n");
-+  PLUGIN_DEBUG("Checking JVM status...\n");
-   // If the jvm is already up, do nothing
-   if (jvm_up)
-   {
--      PLUGIN_DEBUG_0ARG("JVM is up. Returning.\n");
-+      PLUGIN_DEBUG("JVM is up. Returning.\n");
-       return;
-   }
--  PLUGIN_DEBUG_0ARG("No JVM is running. Attempting to start one...\n");
-+  PLUGIN_DEBUG("No JVM is running. Attempting to start one...\n");
-   NPError np_error = NPERR_NO_ERROR;
-   ITNPPluginData* data = NULL;
-@@ -447,14 +447,14 @@
-   // clean up any older pip
-   unlink (in_pipe_name);
--  PLUGIN_DEBUG_1ARG ("ITNP_New: creating input fifo: %s\n", in_pipe_name);
-+  PLUGIN_DEBUG ("ITNP_New: creating input fifo: %s\n", in_pipe_name);
-   if (mkfifo (in_pipe_name, 0600) == -1 && errno != EEXIST)
-     {
-       PLUGIN_ERROR_TWO ("Failed to create input pipe", strerror (errno));
-       np_error = NPERR_GENERIC_ERROR;
-       goto cleanup_in_pipe_name;
-     }
--  PLUGIN_DEBUG_1ARG ("ITNP_New: created input fifo: %s\n", in_pipe_name);
-+  PLUGIN_DEBUG ("ITNP_New: created input fifo: %s\n", in_pipe_name);
-   // Create plugin-to-appletviewer pipe which we refer to as the
-   // output pipe.
-@@ -473,14 +473,14 @@
-   // clean up any older pip
-   unlink (out_pipe_name);
--  PLUGIN_DEBUG_1ARG ("ITNP_New: creating output fifo: %s\n", out_pipe_name);
-+  PLUGIN_DEBUG ("ITNP_New: creating output fifo: %s\n", out_pipe_name);
-   if (mkfifo (out_pipe_name, 0600) == -1 && errno != EEXIST)
-     {
-       PLUGIN_ERROR_TWO ("Failed to create output pipe", strerror (errno));
-       np_error = NPERR_GENERIC_ERROR;
-       goto cleanup_out_pipe_name;
-     }
--  PLUGIN_DEBUG_1ARG ("ITNP_New: created output fifo: %s\n", out_pipe_name);
-+  PLUGIN_DEBUG ("ITNP_New: created output fifo: %s\n", out_pipe_name);
-   // Start a separate appletviewer process for each applet, even if
-   // there are multiple applets in the same page.  We may need to
-@@ -571,9 +571,9 @@
-   // cleanup_out_pipe:
-   // Delete output pipe.
--  PLUGIN_DEBUG_1ARG ("ITNP_New: deleting input fifo: %s\n", in_pipe_name);
-+  PLUGIN_DEBUG ("ITNP_New: deleting input fifo: %s\n", in_pipe_name);
-   unlink (out_pipe_name);
--  PLUGIN_DEBUG_1ARG ("ITNP_New: deleted input fifo: %s\n", in_pipe_name);
-+  PLUGIN_DEBUG ("ITNP_New: deleted input fifo: %s\n", in_pipe_name);
-  cleanup_out_pipe_name:
-   g_free (out_pipe_name);
-@@ -581,9 +581,9 @@
-   // cleanup_in_pipe:
-   // Delete input pipe.
--  PLUGIN_DEBUG_1ARG ("ITNP_New: deleting output fifo: %s\n", out_pipe_name);
-+  PLUGIN_DEBUG ("ITNP_New: deleting output fifo: %s\n", out_pipe_name);
-   unlink (in_pipe_name);
--  PLUGIN_DEBUG_1ARG ("ITNP_New: deleted output fifo: %s\n", out_pipe_name);
-+  PLUGIN_DEBUG ("ITNP_New: deleted output fifo: %s\n", out_pipe_name);
-  cleanup_in_pipe_name:
-   g_free (in_pipe_name);
-@@ -599,7 +599,7 @@
- NPError
- ITNP_GetValue (NPP instance, NPPVariable variable, void* value)
- {
--  PLUGIN_DEBUG_0ARG ("ITNP_GetValue\n");
-+  PLUGIN_DEBUG ("ITNP_GetValue\n");
-   NPError np_error = NPERR_NO_ERROR;
-@@ -608,7 +608,7 @@
-     // This plugin needs XEmbed support.
-     case NPPVpluginNeedsXEmbed:
-       {
--        PLUGIN_DEBUG_0ARG ("ITNP_GetValue: returning TRUE for NeedsXEmbed.\n");
-+        PLUGIN_DEBUG ("ITNP_GetValue: returning TRUE for NeedsXEmbed.\n");
-         bool* bool_value = (bool*) value;
-         *bool_value = true;
-       }
-@@ -624,7 +624,7 @@
-       break;
-     }
--  PLUGIN_DEBUG_0ARG ("ITNP_GetValue return\n");
-+  PLUGIN_DEBUG ("ITNP_GetValue return\n");
-   return np_error;
- }
-@@ -632,7 +632,7 @@
- NPError
- ITNP_Destroy (NPP instance, NPSavedData** save)
- {
--  PLUGIN_DEBUG_1ARG ("ITNP_Destroy %p\n", instance);
-+  PLUGIN_DEBUG ("ITNP_Destroy %p\n", instance);
-   ITNPPluginData* data = (ITNPPluginData*) instance->pdata;
-@@ -649,7 +649,7 @@
-   IcedTeaPluginUtilities::invalidateInstance(instance);
--  PLUGIN_DEBUG_0ARG ("ITNP_Destroy return\n");
-+  PLUGIN_DEBUG ("ITNP_Destroy return\n");
-   return NPERR_NO_ERROR;
- }
-@@ -657,7 +657,7 @@
- NPError
- ITNP_SetWindow (NPP instance, NPWindow* window)
- {
--  PLUGIN_DEBUG_0ARG ("ITNP_SetWindow\n");
-+  PLUGIN_DEBUG ("ITNP_SetWindow\n");
-   if (instance == NULL)
-     {
-@@ -679,7 +679,7 @@
-   // Simply return if we receive a NULL window.
-   if ((window == NULL) || (window->window == NULL))
-     {
--      PLUGIN_DEBUG_0ARG ("ITNP_SetWindow: got NULL window.\n");
-+      PLUGIN_DEBUG ("ITNP_SetWindow: got NULL window.\n");
-       return NPERR_NO_ERROR;
-     }
-@@ -690,7 +690,7 @@
-       if (data->window_handle == window->window)
-     {
-           // The parent window is the same as in previous calls.
--          PLUGIN_DEBUG_0ARG ("ITNP_SetWindow: window already exists.\n");
-+          PLUGIN_DEBUG ("ITNP_SetWindow: window already exists.\n");
-           // Critical region.  Read data->appletviewer_mutex and send
-           // a message to the appletviewer.
-@@ -704,7 +704,7 @@
-           // SetWindow call.
-           if (window->width != data->window_width)
-         {
--                  PLUGIN_DEBUG_0ARG ("ITNP_SetWindow: window width changed.\n");
-+                  PLUGIN_DEBUG ("ITNP_SetWindow: window width changed.\n");
-           // The width of the plugin window has changed.
-                   // Store the new width.
-@@ -714,7 +714,7 @@
-           if (window->height != data->window_height)
-         {
--                  PLUGIN_DEBUG_0ARG ("ITNP_SetWindow: window height changed.\n");
-+                  PLUGIN_DEBUG ("ITNP_SetWindow: window height changed.\n");
-           // The height of the plugin window has changed.
-                   // Store the new height.
-@@ -736,7 +736,7 @@
-       else
-         {
-               // The appletviewer is not running.
--          PLUGIN_DEBUG_0ARG ("ITNP_SetWindow: appletviewer is not running.\n");
-+          PLUGIN_DEBUG ("ITNP_SetWindow: appletviewer is not running.\n");
-         }
-           g_mutex_unlock (data->appletviewer_mutex);
-@@ -745,12 +745,12 @@
-     {
-       // The parent window has changed.  This branch does run but
-       // doing nothing in response seems to be sufficient.
--      PLUGIN_DEBUG_0ARG ("ITNP_SetWindow: parent window changed.\n");
-+      PLUGIN_DEBUG ("ITNP_SetWindow: parent window changed.\n");
-     }
-     }
-   else
-     {
--      PLUGIN_DEBUG_0ARG ("ITNP_SetWindow: setting window.\n");
-+      PLUGIN_DEBUG ("ITNP_SetWindow: setting window.\n");
-       // Critical region.  Send messages to appletviewer.
-       g_mutex_lock (data->appletviewer_mutex);
-@@ -774,7 +774,7 @@
-       data->window_handle = window->window;
-     }
--  PLUGIN_DEBUG_0ARG ("ITNP_SetWindow return\n");
-+  PLUGIN_DEBUG ("ITNP_SetWindow return\n");
-   return NPERR_NO_ERROR;
- }
-@@ -783,9 +783,9 @@
- ITNP_NewStream (NPP instance, NPMIMEType type, NPStream* stream,
-                NPBool seekable, uint16_t* stype)
- {
--  PLUGIN_DEBUG_0ARG ("ITNP_NewStream\n");
-+  PLUGIN_DEBUG ("ITNP_NewStream\n");
--  PLUGIN_DEBUG_0ARG ("ITNP_NewStream return\n");
-+  PLUGIN_DEBUG ("ITNP_NewStream return\n");
-   return NPERR_NO_ERROR;
- }
-@@ -793,17 +793,17 @@
- void
- ITNP_StreamAsFile (NPP instance, NPStream* stream, const char* filename)
- {
--  PLUGIN_DEBUG_0ARG ("ITNP_StreamAsFile\n");
-+  PLUGIN_DEBUG ("ITNP_StreamAsFile\n");
--  PLUGIN_DEBUG_0ARG ("ITNP_StreamAsFile return\n");
-+  PLUGIN_DEBUG ("ITNP_StreamAsFile return\n");
- }
- NPError
- ITNP_DestroyStream (NPP instance, NPStream* stream, NPReason reason)
- {
--  PLUGIN_DEBUG_0ARG ("ITNP_DestroyStream\n");
-+  PLUGIN_DEBUG ("ITNP_DestroyStream\n");
--  PLUGIN_DEBUG_0ARG ("ITNP_DestroyStream return\n");
-+  PLUGIN_DEBUG ("ITNP_DestroyStream return\n");
-   return NPERR_NO_ERROR;
- }
-@@ -811,9 +811,9 @@
- int32_t
- ITNP_WriteReady (NPP instance, NPStream* stream)
- {
--  PLUGIN_DEBUG_0ARG ("ITNP_WriteReady\n");
-+  PLUGIN_DEBUG ("ITNP_WriteReady\n");
--  PLUGIN_DEBUG_0ARG ("ITNP_WriteReady return\n");
-+  PLUGIN_DEBUG ("ITNP_WriteReady return\n");
-   return 0;
- }
-@@ -822,9 +822,9 @@
- ITNP_Write (NPP instance, NPStream* stream, int32_t offset, int32_t len,
-            void* buffer)
- {
--  PLUGIN_DEBUG_0ARG ("ITNP_Write\n");
-+  PLUGIN_DEBUG ("ITNP_Write\n");
--  PLUGIN_DEBUG_0ARG ("ITNP_Write return\n");
-+  PLUGIN_DEBUG ("ITNP_Write return\n");
-   return 0;
- }
-@@ -832,17 +832,17 @@
- void
- ITNP_Print (NPP instance, NPPrint* platformPrint)
- {
--  PLUGIN_DEBUG_0ARG ("ITNP_Print\n");
-+  PLUGIN_DEBUG ("ITNP_Print\n");
--  PLUGIN_DEBUG_0ARG ("ITNP_Print return\n");
-+  PLUGIN_DEBUG ("ITNP_Print return\n");
- }
- int16_t
- ITNP_HandleEvent (NPP instance, void* event)
- {
--  PLUGIN_DEBUG_0ARG ("ITNP_HandleEvent\n");
-+  PLUGIN_DEBUG ("ITNP_HandleEvent\n");
--  PLUGIN_DEBUG_0ARG ("ITNP_HandleEvent return\n");
-+  PLUGIN_DEBUG ("ITNP_HandleEvent return\n");
-   return 0;
- }
-@@ -851,9 +851,9 @@
- ITNP_URLNotify (NPP instance, const char* url, NPReason reason,
-                void* notifyData)
- {
--  PLUGIN_DEBUG_0ARG ("ITNP_URLNotify\n");
-+  PLUGIN_DEBUG ("ITNP_URLNotify\n");
--  PLUGIN_DEBUG_0ARG ("ITNP_URLNotify return\n");
-+  PLUGIN_DEBUG ("ITNP_URLNotify return\n");
- }
- NPError
-@@ -924,7 +924,7 @@
- static void
- plugin_data_new (ITNPPluginData** data)
- {
--  PLUGIN_DEBUG_0ARG ("plugin_data_new\n");
-+  PLUGIN_DEBUG ("plugin_data_new\n");
-   *data = (ITNPPluginData*)
-     (*browser_functions.memalloc) (sizeof (struct ITNPPluginData));
-@@ -933,7 +933,7 @@
-   if (*data)
-     memset (*data, 0, sizeof (struct ITNPPluginData));
--  PLUGIN_DEBUG_0ARG ("plugin_data_new return\n");
-+  PLUGIN_DEBUG ("plugin_data_new return\n");
- }
-@@ -948,7 +948,7 @@
- static gchar*
- plugin_get_documentbase (NPP instance)
- {
--  PLUGIN_DEBUG_0ARG ("plugin_get_documentbase\n");
-+  PLUGIN_DEBUG ("plugin_get_documentbase\n");
-   nsIPluginInstance* xpcom_instance = NULL;
-   nsIPluginInstancePeer* peer = NULL;
-@@ -1000,16 +1000,16 @@
-   NS_RELEASE (peer);
-  cleanup_done:
--  PLUGIN_DEBUG_0ARG ("plugin_get_documentbase return\n");
-+  PLUGIN_DEBUG ("plugin_get_documentbase return\n");
--  PLUGIN_DEBUG_1ARG("plugin_get_documentbase returning: %s\n", documentbase_copy);
-+  PLUGIN_DEBUG("plugin_get_documentbase returning: %s\n", documentbase_copy);
-   return documentbase_copy;
- }
- #else
- static gchar*
- plugin_get_documentbase (NPP instance)
- {
--  PLUGIN_DEBUG_0ARG ("plugin_get_documentbase\n");
-+  PLUGIN_DEBUG ("plugin_get_documentbase\n");
-   char const* documentbase = NULL;
-   gchar* documentbase_copy = NULL;
-@@ -1021,30 +1021,26 @@
-   // Additionally, since it is insecure, we cannot use it for making
-   // security decisions.
-   NPObject* window;
--  NPString script = NPString();
--  std::string script_str = std::string();
--  NPVariant* location = new NPVariant();
--  std::string location_str = std::string();
-+  browser_functions.getvalue(instance, NPNVWindowNPObject, &window);
--  browser_functions.getvalue(instance, NPNVWindowNPObject, &window);
--  script_str += "window.location.href";
--#if MOZILLA_VERSION_COLLAPSED < 1090200
--  script.utf8characters = script_str.c_str();
--  script.utf8length = script_str.size();
--#else
--  script.UTF8Characters = script_str.c_str();
--  script.UTF8Length = script_str.size();
--#endif
--  browser_functions.evaluate(instance, window, &script, location);
-+  NPVariant location;
-+  NPIdentifier location_id = browser_functions.getstringidentifier("location");
-+  browser_functions.getproperty(instance, window, location_id, &location);
-+
-+  NPVariant href;
-+  NPIdentifier href_id = browser_functions.getstringidentifier("href");
-+  browser_functions.getproperty(instance, NPVARIANT_TO_OBJECT(location), 
-+                               href_id, &href);
-   // Strip everything after the last "/"
- #if MOZILLA_VERSION_COLLAPSED < 1090200
--  gchar** parts = g_strsplit (NPVARIANT_TO_STRING(*location).utf8characters, "/", -1);
-+  gchar** parts = g_strsplit (NPVARIANT_TO_STRING(href).utf8characters, "/", -1);
- #else
--  gchar** parts = g_strsplit (NPVARIANT_TO_STRING(*location).UTF8Characters, "/", -1);
-+  gchar** parts = g_strsplit (NPVARIANT_TO_STRING(href).UTF8Characters, "/", -1);
- #endif
-   guint parts_sz = g_strv_length (parts);
-+  std::string location_str;
-   for (int i=0; i < parts_sz - 1; i++)
-   {
-       location_str += parts[i];
-@@ -1054,9 +1050,11 @@
-   documentbase_copy = g_strdup (location_str.c_str());
-   // Release references.
-+  browser_functions.releasevariantvalue(&href);
-+  browser_functions.releasevariantvalue(&location);
-  cleanup_done:
--  PLUGIN_DEBUG_0ARG ("plugin_get_documentbase return\n");
--  PLUGIN_DEBUG_1ARG("plugin_get_documentbase returning: %s\n", documentbase_copy);
-+  PLUGIN_DEBUG ("plugin_get_documentbase return\n");
-+  PLUGIN_DEBUG("plugin_get_documentbase returning: %s\n", documentbase_copy);
-   return documentbase_copy;
- }
-@@ -1069,7 +1067,7 @@
- {
-   GtkWidget* dialog = NULL;
--  PLUGIN_DEBUG_0ARG ("plugin_display_failure_dialog\n");
-+  PLUGIN_DEBUG ("plugin_display_failure_dialog\n");
-   dialog = gtk_message_dialog_new (NULL,
-                                    GTK_DIALOG_DESTROY_WITH_PARENT,
-@@ -1081,7 +1079,7 @@
-   gtk_dialog_run (GTK_DIALOG (dialog));
-   gtk_widget_destroy (dialog);
--  PLUGIN_DEBUG_0ARG ("plugin_display_failure_dialog return\n");
-+  PLUGIN_DEBUG ("plugin_display_failure_dialog return\n");
- }
-@@ -1095,7 +1093,7 @@
-                          GIOCondition condition,
-                          gpointer plugin_data)
- {
--  PLUGIN_DEBUG_0ARG ("plugin_in_pipe_callback\n");
-+  PLUGIN_DEBUG ("plugin_in_pipe_callback\n");
-   gboolean keep_installed = TRUE;
-@@ -1130,18 +1128,18 @@
-   if (condition & (G_IO_ERR | G_IO_HUP))
-     {
--      PLUGIN_DEBUG_0ARG ("appletviewer has stopped.\n");
-+      PLUGIN_DEBUG ("appletviewer has stopped.\n");
-       keep_installed = FALSE;
-     }
--  PLUGIN_DEBUG_0ARG ("plugin_in_pipe_callback return\n");
-+  PLUGIN_DEBUG ("plugin_in_pipe_callback return\n");
-   return keep_installed;
- }
- void consume_message(gchar* message) {
--      PLUGIN_DEBUG_1ARG ("  PIPE: plugin read: %s\n", message);
-+      PLUGIN_DEBUG ("  PIPE: plugin read: %s\n", message);
-   if (g_str_has_prefix (message, "instance"))
-     {
-@@ -1156,7 +1154,7 @@
-       if (instance_id > 0 && !instance)
-         {
--          PLUGIN_DEBUG_2ARG("Instance %d is not active. Refusing to consume message \"%s\"\n", instance_id, message);
-+          PLUGIN_DEBUG("Instance %d is not active. Refusing to consume message \"%s\"\n", instance_id, message);
-           return;
-         }
-       else if (instance)
-@@ -1170,8 +1168,8 @@
-           gchar* decoded_url = (gchar*) calloc(strlen(parts[3]) + 1, sizeof(gchar));
-           IcedTeaPluginUtilities::decodeURL(parts[3], &decoded_url);
--          PLUGIN_DEBUG_1ARG ("plugin_in_pipe_callback: opening URL %s\n", decoded_url);
--          PLUGIN_DEBUG_1ARG ("plugin_in_pipe_callback: URL target %s\n", parts[4]);
-+          PLUGIN_DEBUG ("plugin_in_pipe_callback: opening URL %s\n", decoded_url);
-+          PLUGIN_DEBUG ("plugin_in_pipe_callback: URL target %s\n", parts[4]);
-           NPError np_error =
-             (*browser_functions.geturl) (data->owner, decoded_url, parts[4]);
-@@ -1193,7 +1191,7 @@
-           // join the rest
-           gchar* status_message = g_strjoinv(" ", parts);
--          PLUGIN_DEBUG_1ARG ("plugin_in_pipe_callback: setting status %s\n", status_message);
-+          PLUGIN_DEBUG ("plugin_in_pipe_callback: setting status %s\n", status_message);
-           (*browser_functions.status) (data->owner, status_message);
-           g_free(status_message);
-@@ -1229,7 +1227,7 @@
-         gchar* decoded_url = (gchar*) calloc(strlen(parts[4]) + 1, sizeof(gchar));
-         IcedTeaPluginUtilities::decodeURL(parts[4], &decoded_url);
--        PLUGIN_DEBUG_5ARG("parts[0]=%s, parts[1]=%s, reference, parts[3]=%s, parts[4]=%s -- decoded_url=%s\n", parts[0], parts[1], parts[3], parts[4], decoded_url);
-+        PLUGIN_DEBUG("parts[0]=%s, parts[1]=%s, reference, parts[3]=%s, parts[4]=%s -- decoded_url=%s\n", parts[0], parts[1], parts[3], parts[4], decoded_url);
-         gchar* proxy_info;
-@@ -1243,7 +1241,7 @@
-             proxy_info = g_strconcat (proxy_info, proxy, NULL);
-           }
--        PLUGIN_DEBUG_1ARG("Proxy info: %s\n", proxy_info);
-+        PLUGIN_DEBUG("Proxy info: %s\n", proxy_info);
-         plugin_send_message_to_appletviewer(proxy_info);
-         g_free(decoded_url);
-@@ -1269,7 +1267,7 @@
-             cookie_info = g_strconcat (cookie_info, cookie_string, NULL);
-         }
--        PLUGIN_DEBUG_1ARG("Cookie info: %s\n", cookie_info);
-+        PLUGIN_DEBUG("Cookie info: %s\n", cookie_info);
-         plugin_send_message_to_appletviewer(cookie_info);
-         g_free(decoded_url);
-@@ -1294,7 +1292,7 @@
- {
-     int id = GPOINTER_TO_INT(g_hash_table_lookup(instance_to_id_map,
-                                                        instance));
--    PLUGIN_DEBUG_2ARG("Returning id %d for instance %p\n", id, instance);
-+    PLUGIN_DEBUG("Returning id %d for instance %p\n", id, instance);
-     return id;
- }
-@@ -1329,7 +1327,7 @@
-   // if there is no proxy found, return immediately
-   if (!info) {
--     PLUGIN_DEBUG_1ARG("%s does not need a proxy\n", siteAddr);
-+     PLUGIN_DEBUG("%s does not need a proxy\n", siteAddr);
-      return NPERR_GENERIC_ERROR;
-   }
-@@ -1367,7 +1365,7 @@
-   *len = strlen(*proxy);
--  PLUGIN_DEBUG_2ARG("Proxy info for %s: %s\n", siteAddr, *proxy);
-+  PLUGIN_DEBUG("Proxy info for %s: %s\n", siteAddr, *proxy);
- #else
-@@ -1400,13 +1398,13 @@
-                           GIOCondition condition,
-                           gpointer plugin_data)
- {
--  PLUGIN_DEBUG_0ARG ("plugin_out_pipe_callback\n");
-+  PLUGIN_DEBUG ("plugin_out_pipe_callback\n");
-   ITNPPluginData* data = (ITNPPluginData*) plugin_data;
--  PLUGIN_DEBUG_0ARG ("plugin_out_pipe_callback: appletviewer has stopped.\n");
-+  PLUGIN_DEBUG ("plugin_out_pipe_callback: appletviewer has stopped.\n");
--  PLUGIN_DEBUG_0ARG ("plugin_out_pipe_callback return\n");
-+  PLUGIN_DEBUG ("plugin_out_pipe_callback return\n");
-   return FALSE;
- }
-@@ -1449,12 +1447,12 @@
-   if (path_new == NULL || strlen (path_new) == 0)
-     {
--      PLUGIN_DEBUG_0ARG("Unset LD_LIBRARY_PATH\n");
-+      PLUGIN_DEBUG("Unset LD_LIBRARY_PATH\n");
-       return NULL;
-     }
-   else
-     {
--      PLUGIN_DEBUG_1ARG ("Set LD_LIBRARY_PATH: %s\n", path_new);
-+      PLUGIN_DEBUG ("Set LD_LIBRARY_PATH: %s\n", path_new);
-       return path_new;
-     }
- }
-@@ -1464,7 +1462,7 @@
- plugin_filter_environment(void)
- {
-   gchar **var_names = g_listenv();
--  gchar **new_env = (gchar**) malloc(sizeof(gchar*) * g_strv_length (var_names));
-+  gchar **new_env = (gchar**) malloc(sizeof(gchar*) * (g_strv_length (var_names) + 1));
-   int i_var, i_env;
-   for (i_var = 0, i_env = 0; var_names[i_var] != NULL; i_var++)
-@@ -1486,7 +1484,7 @@
- static NPError
- plugin_test_appletviewer ()
- {
--  PLUGIN_DEBUG_1ARG ("plugin_test_appletviewer: %s\n", appletviewer_executable);
-+  PLUGIN_DEBUG ("plugin_test_appletviewer: %s\n", appletviewer_executable);
-   NPError error = NPERR_NO_ERROR;
-   gchar* command_line[3] = { NULL, NULL, NULL };
-@@ -1523,14 +1521,14 @@
-   g_free (command_line[2]);
-   command_line[2] = NULL;
--  PLUGIN_DEBUG_0ARG ("plugin_test_appletviewer return\n");
-+  PLUGIN_DEBUG ("plugin_test_appletviewer return\n");
-   return error;
- }
- static NPError
- plugin_start_appletviewer (ITNPPluginData* data)
- {
--  PLUGIN_DEBUG_0ARG ("plugin_start_appletviewer\n");
-+  PLUGIN_DEBUG ("plugin_start_appletviewer\n");
-   NPError error = NPERR_NO_ERROR;
-   gchar** command_line;
-@@ -1599,12 +1597,12 @@
-   if (appletviewer_pid)
-     {
--      PLUGIN_DEBUG_1ARG("Initialized VM with pid=%d\n", appletviewer_pid);
-+      PLUGIN_DEBUG("Initialized VM with pid=%d\n", appletviewer_pid);
-       appletviewer_watch_id = g_child_watch_add(appletviewer_pid, (GChildWatchFunc) appletviewer_monitor, (gpointer) appletviewer_pid);
-     }
--  PLUGIN_DEBUG_0ARG ("plugin_start_appletviewer return\n");
-+  PLUGIN_DEBUG ("plugin_start_appletviewer return\n");
-   return error;
- }
-@@ -1613,7 +1611,7 @@
- static gchar*
- plugin_create_applet_tag (int16_t argc, char* argn[], char* argv[])
- {
--  PLUGIN_DEBUG_0ARG ("plugin_create_applet_tag\n");
-+  PLUGIN_DEBUG ("plugin_create_applet_tag\n");
-   gchar* applet_tag = g_strdup ("<EMBED ");
-   gchar* parameters = g_strdup ("");
-@@ -1712,7 +1710,7 @@
-   g_free (parameters);
-   parameters = NULL;
--  PLUGIN_DEBUG_0ARG ("plugin_create_applet_tag return\n");
-+  PLUGIN_DEBUG ("plugin_create_applet_tag return\n");
-   return applet_tag;
- }
-@@ -1722,7 +1720,7 @@
- void
- plugin_send_message_to_appletviewer (gchar const* message)
- {
--  PLUGIN_DEBUG_0ARG ("plugin_send_message_to_appletviewer\n");
-+  PLUGIN_DEBUG ("plugin_send_message_to_appletviewer\n");
-   if (jvm_up)
-     {
-@@ -1767,10 +1765,10 @@
-       g_free (newline_message);
-       newline_message = NULL;
--      PLUGIN_DEBUG_1ARG ("  PIPE: plugin wrote: %s\n", message);
-+      PLUGIN_DEBUG ("  PIPE: plugin wrote: %s\n", message);
-     }
--  PLUGIN_DEBUG_0ARG ("plugin_send_message_to_appletviewer return\n");
-+  PLUGIN_DEBUG ("plugin_send_message_to_appletviewer return\n");
- }
- // Stop the appletviewer process.  When this is called the
-@@ -1789,7 +1787,7 @@
- static void
- plugin_stop_appletviewer ()
- {
--  PLUGIN_DEBUG_0ARG ("plugin_stop_appletviewer\n");
-+  PLUGIN_DEBUG ("plugin_stop_appletviewer\n");
-   if (jvm_up)
-     {
-@@ -1865,21 +1863,21 @@
-   jvm_up = FALSE;
-   sleep(2); /* Needed to prevent crashes during debug (when JDWP port is not freed by the kernel right away) */
--  PLUGIN_DEBUG_0ARG ("plugin_stop_appletviewer return\n");
-+  PLUGIN_DEBUG ("plugin_stop_appletviewer return\n");
- }
- static void appletviewer_monitor(GPid pid, gint status, gpointer data)
- {
--    PLUGIN_DEBUG_0ARG ("appletviewer_monitor\n");
-+    PLUGIN_DEBUG ("appletviewer_monitor\n");
-     jvm_up = FALSE;
-     pid = -1;
--    PLUGIN_DEBUG_0ARG ("appletviewer_monitor return\n");
-+    PLUGIN_DEBUG ("appletviewer_monitor return\n");
- }
- static void
- plugin_data_destroy (NPP instance)
- {
--  PLUGIN_DEBUG_0ARG ("plugin_data_destroy\n");
-+  PLUGIN_DEBUG ("plugin_data_destroy\n");
-   ITNPPluginData* tofree = (ITNPPluginData*) instance->pdata;
-@@ -1914,7 +1912,7 @@
-   (*browser_functions.memfree) (tofree);
-   tofree = NULL;
--  PLUGIN_DEBUG_0ARG ("plugin_data_destroy return\n");
-+  PLUGIN_DEBUG ("plugin_data_destroy return\n");
- }
- // FACTORY FUNCTIONS
-@@ -1931,7 +1929,7 @@
- NPError
- NP_Initialize (NPNetscapeFuncs* browserTable, NPPluginFuncs* pluginTable)
- {
--  PLUGIN_DEBUG_0ARG ("NP_Initialize\n");
-+  PLUGIN_DEBUG ("NP_Initialize\n");
-   if (initialized)
-     return NPERR_NO_ERROR;
-@@ -2145,7 +2143,7 @@
-   appletviewer_executable = g_strdup_printf ("%s/../../bin/java",
-                                              dirname (filename));
--  PLUGIN_DEBUG_4ARG(".so is located at: %s and the link points to: %s. Executing java from dir %s to run %s\n", info.dli_fname, filename, dirname (filename), appletviewer_executable);
-+  PLUGIN_DEBUG(".so is located at: %s and the link points to: %s. Executing java from dir %s to run %s\n", info.dli_fname, filename, dirname (filename), appletviewer_executable);
-   if (!appletviewer_executable)
-     {
-       PLUGIN_ERROR ("Failed to create appletviewer executable name.");
-@@ -2169,9 +2167,9 @@
-   plugin_instance_mutex = g_mutex_new ();
--  PLUGIN_DEBUG_1ARG ("NP_Initialize: using %s\n", appletviewer_executable);
-+  PLUGIN_DEBUG ("NP_Initialize: using %s\n", appletviewer_executable);
--  PLUGIN_DEBUG_0ARG ("NP_Initialize return\n");
-+  PLUGIN_DEBUG ("NP_Initialize return\n");
-   plugin_req_proc = new PluginRequestProcessor();
-   java_req_proc = new JavaMessageSender();
-@@ -2218,9 +2216,9 @@
- char*
- NP_GetMIMEDescription ()
- {
--  PLUGIN_DEBUG_0ARG ("NP_GetMIMEDescription\n");
-+  PLUGIN_DEBUG ("NP_GetMIMEDescription\n");
--  PLUGIN_DEBUG_0ARG ("NP_GetMIMEDescription return\n");
-+  PLUGIN_DEBUG ("NP_GetMIMEDescription return\n");
-   return (char*) PLUGIN_MIME_DESC;
- }
-@@ -2230,7 +2228,7 @@
- NPError
- NP_GetValue (void* future, NPPVariable variable, void* value)
- {
--  PLUGIN_DEBUG_0ARG ("NP_GetValue\n");
-+  PLUGIN_DEBUG ("NP_GetValue\n");
-   NPError result = NPERR_NO_ERROR;
-   gchar** char_value = (gchar**) value;
-@@ -2238,12 +2236,12 @@
-   switch (variable)
-     {
-     case NPPVpluginNameString:
--      PLUGIN_DEBUG_0ARG ("NP_GetValue: returning plugin name.\n");
-+      PLUGIN_DEBUG ("NP_GetValue: returning plugin name.\n");
-       *char_value = g_strdup (PLUGIN_NAME);
-       break;
-     case NPPVpluginDescriptionString:
--      PLUGIN_DEBUG_0ARG ("NP_GetValue: returning plugin description.\n");
-+      PLUGIN_DEBUG ("NP_GetValue: returning plugin description.\n");
-       *char_value = g_strdup (PLUGIN_DESC);
-       break;
-@@ -2253,7 +2251,7 @@
-       break;
-     }
--  PLUGIN_DEBUG_0ARG ("NP_GetValue return\n");
-+  PLUGIN_DEBUG ("NP_GetValue return\n");
-   return result;
- }
-@@ -2263,7 +2261,7 @@
- NPError
- NP_Shutdown (void)
- {
--  PLUGIN_DEBUG_0ARG ("NP_Shutdown\n");
-+  PLUGIN_DEBUG ("NP_Shutdown\n");
-   // Free mutex.
-   if (plugin_instance_mutex)
-@@ -2312,9 +2310,9 @@
-   // cleanup_out_pipe:
-   // Delete output pipe.
--  PLUGIN_DEBUG_1ARG ("NP_Shutdown: deleting output fifo: %s\n", out_pipe_name);
-+  PLUGIN_DEBUG ("NP_Shutdown: deleting output fifo: %s\n", out_pipe_name);
-   unlink (out_pipe_name);
--  PLUGIN_DEBUG_1ARG ("NP_Shutdown: deleted output fifo: %s\n", out_pipe_name);
-+  PLUGIN_DEBUG ("NP_Shutdown: deleted output fifo: %s\n", out_pipe_name);
-   // cleanup_out_pipe_name:
-   g_free (out_pipe_name);
-@@ -2322,9 +2320,9 @@
-   // cleanup_in_pipe:
-   // Delete input pipe.
--  PLUGIN_DEBUG_1ARG ("NP_Shutdown: deleting input fifo: %s\n", in_pipe_name);
-+  PLUGIN_DEBUG ("NP_Shutdown: deleting input fifo: %s\n", in_pipe_name);
-   unlink (in_pipe_name);
--  PLUGIN_DEBUG_1ARG ("NP_Shutdown: deleted input fifo: %s\n", in_pipe_name);
-+  PLUGIN_DEBUG ("NP_Shutdown: deleted input fifo: %s\n", in_pipe_name);
-   // cleanup_in_pipe_name:
-   g_free (in_pipe_name);
-@@ -2347,7 +2345,7 @@
-   delete plugin_to_java_bus;
-   //delete internal_bus;
--  PLUGIN_DEBUG_0ARG ("NP_Shutdown return\n");
-+  PLUGIN_DEBUG ("NP_Shutdown return\n");
-   return NPERR_NO_ERROR;
- }
-@@ -2415,6 +2413,6 @@
- NPObject*
- allocate_scriptable_object(NPP npp, NPClass *aClass)
- {
--      PLUGIN_DEBUG_0ARG("Allocating new scriptable object\n");
-+      PLUGIN_DEBUG("Allocating new scriptable object\n");
-       return new IcedTeaScriptablePluginObject(npp);
- }
-diff -r d1ad52447673 plugin/icedteanp/IcedTeaPluginRequestProcessor.cc
---- a/plugin/icedteanp/IcedTeaPluginRequestProcessor.cc        Wed Apr 14 12:21:30 2010 +0200
-+++ b/plugin/icedteanp/IcedTeaPluginRequestProcessor.cc        Tue Jul 20 16:36:52 2010 +0200
-@@ -73,7 +73,7 @@
- PluginRequestProcessor::~PluginRequestProcessor()
- {
--    PLUGIN_DEBUG_0ARG("PluginRequestProcessor::~PluginRequestProcessor\n");
-+    PLUGIN_DEBUG("PluginRequestProcessor::~PluginRequestProcessor\n");
-     if (pendingRequests)
-         delete pendingRequests;
-@@ -89,7 +89,7 @@
- bool
- PluginRequestProcessor::newMessageOnBus(const char* message)
- {
--    PLUGIN_DEBUG_1ARG("PluginRequestProcessor processing %s\n", message);
-+    PLUGIN_DEBUG("PluginRequestProcessor processing %s\n", message);
-     std::string* type;
-     std::string* command;
-@@ -169,7 +169,7 @@
-     get_instance_from_id(id, instance);
-     browser_functions.getvalue(instance, NPNVWindowNPObject, &window_ptr);
--    PLUGIN_DEBUG_3ARG("ID=%d, Instance=%p, WindowPTR = %p\n", id, instance, window_ptr);
-+    PLUGIN_DEBUG("ID=%d, Instance=%p, WindowPTR = %p\n", id, instance, window_ptr);
-     OBJECT_TO_NPVARIANT(window_ptr, *variant);
-     browser_functions.retainobject(window_ptr);
-@@ -592,7 +592,7 @@
-     }
- #endif
--    PLUGIN_DEBUG_1ARG("Member PTR after internal request: %s\n", thread_data.result.c_str());
-+    PLUGIN_DEBUG("Member PTR after internal request: %s\n", thread_data.result.c_str());
-     java_result = java_request.findClass(0, "netscape.javascript.JSObject");
-@@ -711,7 +711,7 @@
-     std::string command;
-     pthread_mutex_t wait_mutex = PTHREAD_MUTEX_INITIALIZER; // This is needed for API compat. and is unused
--    PLUGIN_DEBUG_1ARG("Queue processor initialized. Queue = %p\n", message_queue);
-+    PLUGIN_DEBUG("Queue processor initialized. Queue = %p\n", message_queue);
-     while (true)
-     {
-@@ -787,7 +787,7 @@
-         message_parts = NULL;
-     }
--    PLUGIN_DEBUG_0ARG("Queue processing stopped.\n");
-+    PLUGIN_DEBUG("Queue processing stopped.\n");
- }
- /******************************************
-@@ -810,7 +810,7 @@
-     property = (NPIdentifier*) parameters.at(2);
-     value = (std::string*) parameters.at(3);
--    PLUGIN_DEBUG_4ARG("Setting %s on instance %p, object %p to value %s\n", browser_functions.utf8fromidentifier(*property), instance, member, value->c_str());
-+    PLUGIN_DEBUG("Setting %s on instance %p, object %p to value %s\n", browser_functions.utf8fromidentifier(*property), instance, member, value->c_str());
-     IcedTeaPluginUtilities::javaResultToNPVariant(instance, value, &value_variant);
-@@ -834,7 +834,7 @@
-     NPIdentifier* member_identifier = (NPIdentifier*) parameters.at(2);
-     // Get the NPVariant corresponding to this member
--    PLUGIN_DEBUG_4ARG("Looking for %p %p %p (%s)\n", instance, parent_ptr, member_identifier, browser_functions.utf8fromidentifier(*member_identifier));
-+    PLUGIN_DEBUG("Looking for %p %p %p (%s)\n", instance, parent_ptr, member_identifier, browser_functions.utf8fromidentifier(*member_identifier));
-     if (!browser_functions.hasproperty(instance, parent_ptr, *member_identifier))
-     {
-@@ -854,7 +854,7 @@
-     // store member -> instance link
-     IcedTeaPluginUtilities::storeInstanceID(member_ptr, instance);
--    PLUGIN_DEBUG_0ARG("_getMember returning.\n");
-+    PLUGIN_DEBUG("_getMember returning.\n");
- }
- void
-@@ -868,7 +868,7 @@
-     NPVariant* eval_result = new NPVariant();
-     std::string eval_result_ptr_str = std::string();
--    PLUGIN_DEBUG_0ARG("_eval called\n");
-+    PLUGIN_DEBUG("_eval called\n");
-     std::vector<void*>* call_data = (std::vector<void*>*) data;
-@@ -880,12 +880,12 @@
-     script.utf8characters = script_str->c_str();
-     script.utf8length = script_str->size();
--    PLUGIN_DEBUG_1ARG("Evaluating: %s\n", script.utf8characters);
-+    PLUGIN_DEBUG("Evaluating: %s\n", script.utf8characters);
- #else
-     script.UTF8Characters = script_str->c_str();
-     script.UTF8Length = script_str->size();
--    PLUGIN_DEBUG_1ARG("Evaluating: %s\n", script.UTF8Characters);
-+    PLUGIN_DEBUG("Evaluating: %s\n", script.UTF8Characters);
- #endif
-     ((AsyncCallThreadData*) data)->call_successful = browser_functions.evaluate(instance, window_ptr, &script, eval_result);
-@@ -898,7 +898,7 @@
-     }
-     ((AsyncCallThreadData*) data)->result_ready = true;
--    PLUGIN_DEBUG_0ARG("_eval returning\n");
-+    PLUGIN_DEBUG("_eval returning\n");
- }
-@@ -914,7 +914,7 @@
-     NPVariant* call_result = new NPVariant();
-     std::string call_result_ptr_str = std::string();
--    PLUGIN_DEBUG_0ARG("_call called\n");
-+    PLUGIN_DEBUG("_call called\n");
-     std::vector<void*>* call_data = (std::vector<void*>*) data;
-@@ -930,7 +930,9 @@
-         IcedTeaPluginUtilities::printNPVariant(args[i]);
-     }
-+    PLUGIN_DEBUG("_calling\n");
-     ((AsyncCallThreadData*) data)->call_successful = browser_functions.invoke(instance, window_ptr, function, args, *arg_count, call_result);
-+    PLUGIN_DEBUG("_called\n");
-     IcedTeaPluginUtilities::printNPVariant(*call_result);
-@@ -942,7 +944,7 @@
-     ((AsyncCallThreadData*) data)->result_ready = true;
--    PLUGIN_DEBUG_0ARG("_call returning\n");
-+    PLUGIN_DEBUG("_call returning\n");
- }
- void
-@@ -958,7 +960,7 @@
-     instance = (NPP) call_data->at(0);
-     NPVariant* variant = (NPVariant*) call_data->at(1);
--    PLUGIN_DEBUG_2ARG("_getString called with %p and %p\n", instance, variant);
-+    PLUGIN_DEBUG("_getString called with %p and %p\n", instance, variant);
-     if (NPVARIANT_IS_OBJECT(*variant))
-     {
-@@ -972,7 +974,7 @@
-         ((AsyncCallThreadData*) data)->call_successful = true;
-     }
--    PLUGIN_DEBUG_0ARG("ToString result: ");
-+    PLUGIN_DEBUG("ToString result: ");
-     IcedTeaPluginUtilities::printNPVariant(tostring_result);
-     if (((AsyncCallThreadData*) data)->call_successful)
-@@ -981,6 +983,6 @@
-     }
-     ((AsyncCallThreadData*) data)->result_ready = true;
--    PLUGIN_DEBUG_0ARG("_getString returning\n");
-+    PLUGIN_DEBUG("_getString returning\n");
- }
-diff -r d1ad52447673 plugin/icedteanp/IcedTeaPluginUtils.cc
---- a/plugin/icedteanp/IcedTeaPluginUtils.cc   Wed Apr 14 12:21:30 2010 +0200
-+++ b/plugin/icedteanp/IcedTeaPluginUtils.cc   Tue Jul 20 16:36:52 2010 +0200
-@@ -157,7 +157,7 @@
-       result->append(id_str);
--      PLUGIN_DEBUG_2ARG("Converting pointer %p to %s\n", id, id_str);
-+      PLUGIN_DEBUG("Converting pointer %p to %s\n", id, id_str);
-       free(id_str);
- }
-@@ -174,15 +174,15 @@
-       void* ptr;
-       if (sizeof(void*) == sizeof(long long))
-       {
--              PLUGIN_DEBUG_2ARG("Casting (long long) \"%s\" -- %llu\n", id_str.c_str(), strtoull(id_str.c_str(), NULL, 0));
-+              PLUGIN_DEBUG("Casting (long long) \"%s\" -- %llu\n", id_str.c_str(), strtoull(id_str.c_str(), NULL, 0));
-               ptr = reinterpret_cast <void*> ((unsigned long long) strtoull(id_str.c_str(), NULL, 0));
-       } else
-       {
--              PLUGIN_DEBUG_2ARG("Casting (long) \"%s\" -- %lu\n", id_str.c_str(), strtoul(id_str.c_str(), NULL, 0));
-+              PLUGIN_DEBUG("Casting (long) \"%s\" -- %lu\n", id_str.c_str(), strtoul(id_str.c_str(), NULL, 0));
-               ptr = reinterpret_cast <void*> ((unsigned long)  strtoul(id_str.c_str(), NULL, 0));
-       }
--      PLUGIN_DEBUG_1ARG("Casted: %p\n", ptr);
-+      PLUGIN_DEBUG("Casted: %p\n", ptr);
-       return ptr;
- }
-@@ -200,15 +200,15 @@
-     void* ptr;
-     if (sizeof(void*) == sizeof(long long))
-     {
--        PLUGIN_DEBUG_2ARG("Casting (long long) \"%s\" -- %llu\n", id_str->c_str(), strtoull(id_str->c_str(), NULL, 0));
-+        PLUGIN_DEBUG("Casting (long long) \"%s\" -- %llu\n", id_str->c_str(), strtoull(id_str->c_str(), NULL, 0));
-         ptr = reinterpret_cast <void*> ((unsigned long long) strtoull(id_str->c_str(), NULL, 0));
-     } else
-     {
--        PLUGIN_DEBUG_2ARG("Casting (long) \"%s\" -- %lu\n", id_str->c_str(), strtoul(id_str->c_str(), NULL, 0));
-+        PLUGIN_DEBUG("Casting (long) \"%s\" -- %lu\n", id_str->c_str(), strtoul(id_str->c_str(), NULL, 0));
-         ptr = reinterpret_cast <void*> ((unsigned long)  strtoul(id_str->c_str(), NULL, 0));
-     }
--    PLUGIN_DEBUG_1ARG("Casted: %p\n", ptr);
-+    PLUGIN_DEBUG("Casted: %p\n", ptr);
-     return ptr;
- }
-@@ -344,7 +344,7 @@
-       for (int i = begin; i < begin+length; i++)
-           result_unicode_str->push_back((char) strtol(unicode_byte_array->at(i)->c_str(), NULL, 16));
--      PLUGIN_DEBUG_2ARG("Converted UTF-8 string: %s. Length=%d\n", result_unicode_str->c_str(), result_unicode_str->length());
-+      PLUGIN_DEBUG("Converted UTF-8 string: %s. Length=%d\n", result_unicode_str->c_str(), result_unicode_str->length());
- }
- /**
-@@ -381,7 +381,7 @@
-       *utf_str = ostream.str();
-       free(hex_value);
--      PLUGIN_DEBUG_2ARG("Converted %s to UTF-8 string %s\n", str->c_str(), utf_str->c_str());
-+      PLUGIN_DEBUG("Converted %s to UTF-8 string %s\n", str->c_str(), utf_str->c_str());
- }
- /**
-@@ -451,7 +451,7 @@
-       *str += " }";
--      PLUGIN_DEBUG_2ARG("%s %s\n", prefix, str->c_str());
-+      PLUGIN_DEBUG("%s %s\n", prefix, str->c_str());
-       delete str;
- }
-@@ -483,7 +483,7 @@
- void
- IcedTeaPluginUtilities::storeInstanceID(void* member_ptr, NPP instance)
- {
--    PLUGIN_DEBUG_2ARG("Storing instance %p with key %p\n", instance, member_ptr);
-+    PLUGIN_DEBUG("Storing instance %p with key %p\n", instance, member_ptr);
-     instance_map->insert(std::make_pair(member_ptr, instance));
- }
-@@ -496,7 +496,7 @@
- void
- IcedTeaPluginUtilities::removeInstanceID(void* member_ptr)
- {
--    PLUGIN_DEBUG_1ARG("Removing key %p from instance map\n", member_ptr);
-+    PLUGIN_DEBUG("Removing key %p from instance map\n", member_ptr);
-     instance_map->erase(member_ptr);
- }
-@@ -506,7 +506,7 @@
- void
- IcedTeaPluginUtilities::invalidateInstance(NPP instance)
- {
--    PLUGIN_DEBUG_1ARG("Invalidating instance %p\n", instance);
-+    PLUGIN_DEBUG("Invalidating instance %p\n", instance);
-     std::map<void*,NPP>::iterator iterator;
-@@ -531,14 +531,14 @@
- {
-     NPP instance = NULL;
--    PLUGIN_DEBUG_1ARG("getInstanceFromMemberPtr looking for %p\n", member_ptr);
-+    PLUGIN_DEBUG("getInstanceFromMemberPtr looking for %p\n", member_ptr);
-     std::map<void*, NPP>::iterator iterator = instance_map->find(member_ptr);
-     if (iterator != instance_map->end())
-     {
-         instance = instance_map->find(member_ptr)->second;
--        PLUGIN_DEBUG_2ARG("getInstanceFromMemberPtr found %p. Instance = %p\n", member_ptr, instance);
-+        PLUGIN_DEBUG("getInstanceFromMemberPtr found %p. Instance = %p\n", member_ptr, instance);
-     }
-     return instance;
-@@ -556,7 +556,7 @@
- {
-     NPObject* object = NULL;
--    PLUGIN_DEBUG_1ARG("getNPObjectFromJavaKey looking for %s\n", key.c_str());
-+    PLUGIN_DEBUG("getNPObjectFromJavaKey looking for %s\n", key.c_str());
-     std::map<std::string, NPObject*>::iterator iterator = object_map->find(key);
-@@ -567,7 +567,7 @@
-         if (getInstanceFromMemberPtr(mapped_object) != NULL)
-         {
-             object = mapped_object;
--            PLUGIN_DEBUG_2ARG("getNPObjectFromJavaKey found %s. NPObject = %p\n", key.c_str(), object);
-+            PLUGIN_DEBUG("getNPObjectFromJavaKey found %s. NPObject = %p\n", key.c_str(), object);
-         }
-     }
-@@ -584,7 +584,7 @@
- void
- IcedTeaPluginUtilities::storeObjectMapping(std::string key, NPObject* object)
- {
--    PLUGIN_DEBUG_2ARG("Storing object %p with key %s\n", object, key.c_str());
-+    PLUGIN_DEBUG("Storing object %p with key %s\n", object, key.c_str());
-     object_map->insert(std::make_pair(key, object));
- }
-@@ -597,7 +597,7 @@
- void
- IcedTeaPluginUtilities::removeObjectMapping(std::string key)
- {
--    PLUGIN_DEBUG_1ARG("Removing key %s from object map\n", key.c_str());
-+    PLUGIN_DEBUG("Removing key %s from object map\n", key.c_str());
-     object_map->erase(key);
- }
-@@ -627,7 +627,7 @@
-       *str += " }";
--      PLUGIN_DEBUG_2ARG("%s %s\n", prefix, str->c_str());
-+      PLUGIN_DEBUG("%s %s\n", prefix, str->c_str());
-       delete str;
- }
-@@ -641,35 +641,35 @@
-     if (NPVARIANT_IS_VOID(variant))
-     {
--      PLUGIN_DEBUG_1ARG("VOID %d\n", variant);
-+      PLUGIN_DEBUG("VOID %d\n", variant);
-     }
-     else if (NPVARIANT_IS_NULL(variant))
-     {
--      PLUGIN_DEBUG_1ARG("NULL\n", variant);
-+      PLUGIN_DEBUG("NULL\n", variant);
-     }
-     else if (NPVARIANT_IS_BOOLEAN(variant))
-     {
--      PLUGIN_DEBUG_1ARG("BOOL: %d\n", NPVARIANT_TO_BOOLEAN(variant));
-+      PLUGIN_DEBUG("BOOL: %d\n", NPVARIANT_TO_BOOLEAN(variant));
-     }
-     else if (NPVARIANT_IS_INT32(variant))
-     {
--      PLUGIN_DEBUG_1ARG("INT32: %d\n", NPVARIANT_TO_INT32(variant));
-+      PLUGIN_DEBUG("INT32: %d\n", NPVARIANT_TO_INT32(variant));
-     }
-     else if (NPVARIANT_IS_DOUBLE(variant))
-     {
--      PLUGIN_DEBUG_1ARG("DOUBLE: %f\n", NPVARIANT_TO_DOUBLE(variant));
-+      PLUGIN_DEBUG("DOUBLE: %f\n", NPVARIANT_TO_DOUBLE(variant));
-     }
-     else if (NPVARIANT_IS_STRING(variant))
-     {
- #if MOZILLA_VERSION_COLLAPSED < 1090200
--      PLUGIN_DEBUG_1ARG("STRING: %s\n", NPVARIANT_TO_STRING(variant).utf8characters);
-+      PLUGIN_DEBUG("STRING: %s\n", NPVARIANT_TO_STRING(variant).utf8characters);
- #else
--      PLUGIN_DEBUG_1ARG("STRING: %s\n", NPVARIANT_TO_STRING(variant).UTF8Characters);
-+      PLUGIN_DEBUG("STRING: %s\n", NPVARIANT_TO_STRING(variant).UTF8Characters);
- #endif
-     }
-     else
-     {
--      PLUGIN_DEBUG_1ARG("OBJ: %p\n", NPVARIANT_TO_OBJECT(variant));
-+      PLUGIN_DEBUG("OBJ: %p\n", NPVARIANT_TO_OBJECT(variant));
-     }
- }
-@@ -738,19 +738,19 @@
-         if (value == "void")
-         {
--            PLUGIN_DEBUG_0ARG("Method call returned void\n");
-+            PLUGIN_DEBUG("Method call returned void\n");
-             VOID_TO_NPVARIANT(*variant);
-         } else if (value == "null")
-         {
--            PLUGIN_DEBUG_0ARG("Method call returned null\n");
-+            PLUGIN_DEBUG("Method call returned null\n");
-             NULL_TO_NPVARIANT(*variant);
-         }else if (value == "true")
-         {
--            PLUGIN_DEBUG_0ARG("Method call returned a boolean (true)\n");
-+            PLUGIN_DEBUG("Method call returned a boolean (true)\n");
-             BOOLEAN_TO_NPVARIANT(true, *variant);
-         } else if (value == "false")
-         {
--            PLUGIN_DEBUG_0ARG("Method call returned a boolean (false)\n");
-+            PLUGIN_DEBUG("Method call returned a boolean (false)\n");
-             BOOLEAN_TO_NPVARIANT(false, *variant);
-         } else
-         {
-@@ -761,12 +761,12 @@
-                 d < -(0x7fffffffL - 1L) ||
-                 d > 0x7fffffffL)
-             {
--                PLUGIN_DEBUG_1ARG("Method call returned a double %f\n", d);
-+                PLUGIN_DEBUG("Method call returned a double %f\n", d);
-                 DOUBLE_TO_NPVARIANT(d, *variant);
-             } else
-             {
-                 int32_t i = (int32_t) d;
--                PLUGIN_DEBUG_1ARG("Method call returned an int %d\n", i);
-+                PLUGIN_DEBUG("Method call returned an int %d\n", i);
-                 INT32_TO_NPVARIANT(i, *variant);
-             }
-         }
-@@ -803,7 +803,7 @@
-             NPUTF8* return_str = (NPUTF8*) malloc(sizeof(NPUTF8)*java_result->return_string->size() + 1);
-             strcpy(return_str, java_result->return_string->c_str());
--            PLUGIN_DEBUG_1ARG("Method call returned a string: \"%s\"\n", return_str);
-+            PLUGIN_DEBUG("Method call returned a string: \"%s\"\n", return_str);
-             STRINGZ_TO_NPVARIANT(return_str, *variant);
-         } else {
-@@ -865,7 +865,7 @@
-     constructor_name.append(NPVARIANT_TO_STRING(constructor_str).UTF8Characters);
- #endif
--    PLUGIN_DEBUG_1ARG("Constructor for NPObject is %s\n", constructor_name.c_str());
-+    PLUGIN_DEBUG("Constructor for NPObject is %s\n", constructor_name.c_str());
-     return constructor_name.find("function Array") == 0;
- }
-@@ -874,7 +874,7 @@
- IcedTeaPluginUtilities::decodeURL(const gchar* url, gchar** decoded_url)
- {
--    PLUGIN_DEBUG_2ARG("GOT URL: %s -- %s\n", url, *decoded_url);
-+    PLUGIN_DEBUG("GOT URL: %s -- %s\n", url, *decoded_url);
-     int length = strlen(url);
-     for (int i=0; i < length; i++)
-     {
-@@ -903,7 +903,7 @@
-         }
-     }
--    PLUGIN_DEBUG_1ARG("SENDING URL: %s\n", *decoded_url);
-+    PLUGIN_DEBUG("SENDING URL: %s\n", *decoded_url);
- }
- /******************************************
-@@ -951,13 +951,13 @@
-       ret = pthread_mutex_init(&subscriber_mutex, NULL);
-       if(ret)
--              PLUGIN_DEBUG_1ARG("Error: Unable to initialize subscriber mutex: %d\n", ret);
-+              PLUGIN_DEBUG("Error: Unable to initialize subscriber mutex: %d\n", ret);
-       ret = pthread_mutex_init(&msg_queue_mutex, NULL);
-       if(ret)
--              PLUGIN_DEBUG_1ARG("Error: Unable to initialize message queue mutex: %d\n", ret);
-+              PLUGIN_DEBUG("Error: Unable to initialize message queue mutex: %d\n", ret);
--      PLUGIN_DEBUG_2ARG("Mutexs %p and %p initialized\n", &subscriber_mutex, &msg_queue_mutex);
-+      PLUGIN_DEBUG("Mutexs %p and %p initialized\n", &subscriber_mutex, &msg_queue_mutex);
- }
- /**
-@@ -968,17 +968,17 @@
- MessageBus::~MessageBus()
- {
--    PLUGIN_DEBUG_0ARG("MessageBus::~MessageBus\n");
-+    PLUGIN_DEBUG("MessageBus::~MessageBus\n");
-       int ret;
-       ret = pthread_mutex_destroy(&subscriber_mutex);
-       if(ret)
--              PLUGIN_DEBUG_1ARG("Error: Unable to destroy subscriber mutex: %d\n", ret);
-+              PLUGIN_DEBUG("Error: Unable to destroy subscriber mutex: %d\n", ret);
-       ret = pthread_mutex_destroy(&msg_queue_mutex);
-       if(ret)
--                      PLUGIN_DEBUG_1ARG("Error: Unable to destroy message queue mutex: %d\n", ret);
-+                      PLUGIN_DEBUG("Error: Unable to destroy message queue mutex: %d\n", ret);
- }
- /**
-@@ -991,7 +991,7 @@
- {
-     // Applets may initialize in parallel. So lock before pushing.
--      PLUGIN_DEBUG_2ARG("Subscribing %p to bus %p\n", b, this);
-+      PLUGIN_DEBUG("Subscribing %p to bus %p\n", b, this);
-     pthread_mutex_lock(&subscriber_mutex);
-     subscribers.push_back(b);
-     pthread_mutex_unlock(&subscriber_mutex);
-@@ -1007,7 +1007,7 @@
- {
-     // Applets may initialize in parallel. So lock before pushing.
--      PLUGIN_DEBUG_2ARG("Un-subscribing %p from bus %p\n", b, this);
-+      PLUGIN_DEBUG("Un-subscribing %p from bus %p\n", b, this);
-     pthread_mutex_lock(&subscriber_mutex);
-     subscribers.remove(b);
-     pthread_mutex_unlock(&subscriber_mutex);
-@@ -1027,21 +1027,21 @@
-       // consumer frees this memory
-       strcpy(msg, message);
--      PLUGIN_DEBUG_1ARG("Trying to lock %p...\n", &msg_queue_mutex);
-+      PLUGIN_DEBUG("Trying to lock %p...\n", &msg_queue_mutex);
-       pthread_mutex_lock(&subscriber_mutex);
--    PLUGIN_DEBUG_1ARG("Message %s received on bus. Notifying subscribers.\n", msg);
-+    PLUGIN_DEBUG("Message %s received on bus. Notifying subscribers.\n", msg);
-     std::list<BusSubscriber*>::const_iterator i;
-     for( i = subscribers.begin(); i != subscribers.end() && !message_consumed; ++i ) {
--      PLUGIN_DEBUG_2ARG("Notifying subscriber %p of %s\n", *i, msg);
-+      PLUGIN_DEBUG("Notifying subscriber %p of %s\n", *i, msg);
-       message_consumed = ((BusSubscriber*) *i)->newMessageOnBus(msg);
-     }
-     pthread_mutex_unlock(&subscriber_mutex);
-     if (!message_consumed)
--      PLUGIN_DEBUG_1ARG("Warning: No consumer found for message %s\n", msg);
-+      PLUGIN_DEBUG("Warning: No consumer found for message %s\n", msg);
--    PLUGIN_DEBUG_1ARG("%p unlocked...\n", &msg_queue_mutex);
-+    PLUGIN_DEBUG("%p unlocked...\n", &msg_queue_mutex);
- }
-diff -r d1ad52447673 plugin/icedteanp/IcedTeaPluginUtils.h
---- a/plugin/icedteanp/IcedTeaPluginUtils.h    Wed Apr 14 12:21:30 2010 +0200
-+++ b/plugin/icedteanp/IcedTeaPluginUtils.h    Tue Jul 20 16:36:52 2010 +0200
-@@ -66,64 +66,14 @@
- #include "IcedTeaNPPlugin.h"
--#define PLUGIN_DEBUG_0ARG(str) \
--  do                                        \
--  {                                         \
--    if (plugin_debug)                       \
--    {                                       \
--      fprintf(stderr, "ICEDTEA NP PLUGIN: thread %p: ", pthread_self()); \
--      fprintf(stderr, str);                \
--    }                                       \
--  } while (0)
--
--#define PLUGIN_DEBUG_1ARG(str, arg1) \
--  do                                        \
--  {                                         \
--    if (plugin_debug)                       \
--    {                                       \
--      fprintf(stderr, "ICEDTEA NP PLUGIN: thread %p: ", pthread_self()); \
--      fprintf(stderr, str, arg1);          \
--    }                                       \
--  } while (0)
--
--#define PLUGIN_DEBUG_2ARG(str, arg1, arg2)  \
--  do                                        \
--  {                                         \
--    if (plugin_debug)                       \
--    {                                       \
--      fprintf(stderr, "ICEDTEA NP PLUGIN: thread %p: ", pthread_self()); \
--      fprintf(stderr, str, arg1, arg2);    \
--    }                                       \
--  } while (0)
--
--#define PLUGIN_DEBUG_3ARG(str, arg1, arg2, arg3) \
--  do                                           \
--  {                                            \
--    if (plugin_debug)                          \
--    {                                          \
--      fprintf(stderr, "ICEDTEA NP PLUGIN: thread %p: ", pthread_self()); \
--      fprintf(stderr, str, arg1, arg2, arg3); \
--    }                                          \
--  } while (0)
--
--#define PLUGIN_DEBUG_4ARG(str, arg1, arg2, arg3, arg4) \
--  do                                                 \
--  {                                                  \
--    if (plugin_debug)                                \
--    {                                                \
--      fprintf(stderr, "ICEDTEA NP PLUGIN: thread %p: ", pthread_self()); \
--      fprintf(stderr, str, arg1, arg2, arg3, arg4); \
--    }                                                \
--  } while (0)
--
--#define PLUGIN_DEBUG_5ARG(str, arg1, arg2, arg3, arg4, arg5) \
--  do                                                 \
--  {                                                  \
--    if (plugin_debug)                                \
--    {                                                \
--      fprintf(stderr, "ICEDTEA NP PLUGIN: thread %p: ", pthread_self()); \
--      fprintf(stderr, str, arg1, arg2, arg3, arg4, arg5); \
--    }                                                \
-+#define PLUGIN_DEBUG(...) \
-+  do                                                          \
-+  {                                                           \
-+    if (plugin_debug)                                         \
-+    {                                                         \
-+      fprintf (stderr, "ITNPP Thread# %ld: ", pthread_self()); \
-+      fprintf (stderr, __VA_ARGS__);                          \
-+    }                                                         \
-   } while (0)
- #define CHECK_JAVA_RESULT(result_data)                               \
-@@ -137,8 +87,8 @@
- }
- #define HEX_TO_INT(c) \
--    ((*c >= 'A') ? *c - 'A' + 10 : \
--     (*c >= 'a') ? *c - 'a' + 10 : \
-+    ((*c >= 'a') ? *c - 'a' + 10 : \
-+     (*c >= 'A') ? *c - 'A' + 10 : \
-      *c - '0')
- #define IS_VALID_HEX(c) \
-diff -r d1ad52447673 plugin/icedteanp/IcedTeaScriptablePluginObject.cc
---- a/plugin/icedteanp/IcedTeaScriptablePluginObject.cc        Wed Apr 14 12:21:30 2010 +0200
-+++ b/plugin/icedteanp/IcedTeaScriptablePluginObject.cc        Tue Jul 20 16:36:52 2010 +0200
-@@ -135,7 +135,7 @@
- NPObject*
- allocate_scriptable_jp_object(NPP npp, NPClass *aClass)
- {
--    PLUGIN_DEBUG_0ARG("Allocating new scriptable Java Package object\n");
-+    PLUGIN_DEBUG("Allocating new scriptable Java Package object\n");
-     return new IcedTeaScriptableJavaPackageObject(npp);
- }
-@@ -161,7 +161,7 @@
-       np_class->construct = IcedTeaScriptableJavaPackageObject::construct;
-       scriptable_object = browser_functions.createobject(instance, np_class);
--      PLUGIN_DEBUG_3ARG("Returning new scriptable package class: %p from instance %p with name %s\n", scriptable_object, instance, name);
-+      PLUGIN_DEBUG("Returning new scriptable package class: %p from instance %p with name %s\n", scriptable_object, instance, name);
-     ((IcedTeaScriptableJavaPackageObject*) scriptable_object)->setPackageName(name);
-@@ -172,7 +172,7 @@
- IcedTeaScriptableJavaPackageObject::IcedTeaScriptableJavaPackageObject(NPP instance)
- {
--    PLUGIN_DEBUG_0ARG("Constructing new scriptable java package object\n");
-+    PLUGIN_DEBUG("Constructing new scriptable java package object\n");
-       this->instance = instance;
-       this->package_name = new std::string();
- }
-@@ -232,7 +232,7 @@
- bool
- IcedTeaScriptableJavaPackageObject::hasProperty(NPObject *npobj, NPIdentifier name)
- {
--      PLUGIN_DEBUG_1ARG("IcedTeaScriptableJavaPackageObject::hasProperty %s\n", browser_functions.utf8fromidentifier(name));
-+      PLUGIN_DEBUG("IcedTeaScriptableJavaPackageObject::hasProperty %s\n", browser_functions.utf8fromidentifier(name));
-       bool hasProperty = false;
-       JavaResultData* java_result;
-@@ -240,7 +240,7 @@
-     NPP instance = IcedTeaPluginUtilities::getInstanceFromMemberPtr(npobj);
-     int plugin_instance_id = get_id_from_instance(instance);
--      PLUGIN_DEBUG_1ARG("Object package name: \"%s\"\n", ((IcedTeaScriptableJavaPackageObject*) npobj)->getPackageName().c_str());
-+      PLUGIN_DEBUG("Object package name: \"%s\"\n", ((IcedTeaScriptableJavaPackageObject*) npobj)->getPackageName().c_str());
-       // "^java" is always a package
-       if (((IcedTeaScriptableJavaPackageObject*) npobj)->getPackageName().length() == 0 &&
-@@ -255,7 +255,7 @@
-           property_name += ".";
-       property_name += browser_functions.utf8fromidentifier(name);
--      PLUGIN_DEBUG_1ARG("Looking for name \"%s\"\n", property_name.c_str());
-+      PLUGIN_DEBUG("Looking for name \"%s\"\n", property_name.c_str());
-       java_result = java_request->hasPackage(plugin_instance_id, property_name);
-@@ -278,7 +278,7 @@
- IcedTeaScriptableJavaPackageObject::getProperty(NPObject *npobj, NPIdentifier name, NPVariant *result)
- {
--      PLUGIN_DEBUG_1ARG("IcedTeaScriptableJavaPackageObject::getProperty %s\n", browser_functions.utf8fromidentifier(name));
-+      PLUGIN_DEBUG("IcedTeaScriptableJavaPackageObject::getProperty %s\n", browser_functions.utf8fromidentifier(name));
-       if (!browser_functions.utf8fromidentifier(name))
-           return false;
-@@ -303,14 +303,14 @@
-       if (isPropertyClass)
-       {
--              PLUGIN_DEBUG_0ARG("Returning package object\n");
-+              PLUGIN_DEBUG("Returning package object\n");
-               obj = IcedTeaScriptablePluginObject::get_scriptable_java_package_object(
-                                   IcedTeaPluginUtilities::getInstanceFromMemberPtr(npobj),
-                                   property_name.c_str());
-       }
-       else
-       {
--              PLUGIN_DEBUG_0ARG("Returning Java object\n");
-+              PLUGIN_DEBUG("Returning Java object\n");
-               obj = IcedTeaScriptableJavaPackageObject::get_scriptable_java_object(
-                               IcedTeaPluginUtilities::getInstanceFromMemberPtr(npobj),
-                               *(java_result->return_string), "0", false);
-@@ -353,7 +353,7 @@
- NPObject*
- allocate_scriptable_java_object(NPP npp, NPClass *aClass)
- {
--    PLUGIN_DEBUG_0ARG("Allocating new scriptable Java object\n");
-+    PLUGIN_DEBUG("Allocating new scriptable Java object\n");
-     return new IcedTeaScriptableJavaObject(npp);
- }
-@@ -370,12 +370,12 @@
-     obj_key += ":";
-     obj_key += instance_id;
--    PLUGIN_DEBUG_1ARG("get_scriptable_java_object searching for %s...\n", obj_key.c_str());
-+    PLUGIN_DEBUG("get_scriptable_java_object searching for %s...\n", obj_key.c_str());
-     scriptable_object = IcedTeaPluginUtilities::getNPObjectFromJavaKey(obj_key);
-     if (scriptable_object != NULL)
-     {
--        PLUGIN_DEBUG_1ARG("Returning existing object %p\n", scriptable_object);
-+        PLUGIN_DEBUG("Returning existing object %p\n", scriptable_object);
-         browser_functions.retainobject(scriptable_object);
-         return scriptable_object;
-     }
-@@ -420,7 +420,7 @@
-         browser_functions.retainobject(scriptable_object);
-     }
--    PLUGIN_DEBUG_4ARG("Constructed new Java Object with classid=%s, instanceid=%s, isArray=%d and scriptable_object=%p\n", class_id.c_str(), instance_id.c_str(), isArray, scriptable_object);
-+    PLUGIN_DEBUG("Constructed new Java Object with classid=%s, instanceid=%s, isArray=%d and scriptable_object=%p\n", class_id.c_str(), instance_id.c_str(), isArray, scriptable_object);
-       ((IcedTeaScriptableJavaObject*) scriptable_object)->setClassIdentifier(class_id);
-     ((IcedTeaScriptableJavaObject*) scriptable_object)->setIsArray(isArray);
-@@ -431,7 +431,7 @@
-       IcedTeaPluginUtilities::storeInstanceID(scriptable_object, instance);
-       IcedTeaPluginUtilities::storeObjectMapping(obj_key, scriptable_object);
--      PLUGIN_DEBUG_2ARG("Inserting into object_map key %s->%p\n", obj_key.c_str(), scriptable_object);
-+      PLUGIN_DEBUG("Inserting into object_map key %s->%p\n", obj_key.c_str(), scriptable_object);
-       return scriptable_object;
- }
-@@ -439,7 +439,7 @@
- void
- _createAndRetainJavaObject(void* data)
- {
--    PLUGIN_DEBUG_0ARG("Asynchronously creating/retaining object ...\n");
-+    PLUGIN_DEBUG("Asynchronously creating/retaining object ...\n");
-     std::vector<void*> parameters = ((AsyncCallThreadData*) data)->parameters;
-     NPP instance = (NPP) parameters.at(0);
-@@ -510,7 +510,7 @@
- bool
- IcedTeaScriptableJavaObject::hasMethod(NPObject *npobj, NPIdentifier name)
- {
--    PLUGIN_DEBUG_2ARG("IcedTeaScriptableJavaObject::hasMethod %s (ival=%d)\n", browser_functions.utf8fromidentifier(name), browser_functions.intfromidentifier(name));
-+    PLUGIN_DEBUG("IcedTeaScriptableJavaObject::hasMethod %s (ival=%d)\n", browser_functions.utf8fromidentifier(name), browser_functions.intfromidentifier(name));
-     bool hasMethod = false;
-     // If object is an array and requested "method" may be a number, check for it first
-@@ -531,7 +531,7 @@
-         hasMethod = java_result->return_identifier != 0;
-     }
--    PLUGIN_DEBUG_1ARG("IcedTeaScriptableJavaObject::hasMethod returning %d\n", hasMethod);
-+    PLUGIN_DEBUG("IcedTeaScriptableJavaObject::hasMethod returning %d\n", hasMethod);
-     return hasMethod;
- }
-@@ -542,7 +542,7 @@
-     NPUTF8* method_name = browser_functions.utf8fromidentifier(name);
-     // Extract arg type array
--    PLUGIN_DEBUG_1ARG("IcedTeaScriptableJavaObject::invoke %s. Args follow.\n", method_name);
-+    PLUGIN_DEBUG("IcedTeaScriptableJavaObject::invoke %s. Args follow.\n", method_name);
-     for (int i=0; i < argCount; i++)
-     {
-         IcedTeaPluginUtilities::printNPVariant(args[i]);
-@@ -577,14 +577,14 @@
-     if (instance_id.length() == 0) // Static
-     {
--        PLUGIN_DEBUG_0ARG("Calling static method\n");
-+        PLUGIN_DEBUG("Calling static method\n");
-         callee = ((IcedTeaScriptableJavaObject*) npobj)->getClassID();
-         java_result = java_request.callStaticMethod(
-                         IcedTeaPluginUtilities::getSourceFromInstance(instance),
-                         callee, browser_functions.utf8fromidentifier(name), arg_ids);
-     } else
-     {
--        PLUGIN_DEBUG_0ARG("Calling method normally\n");
-+        PLUGIN_DEBUG("Calling method normally\n");
-         callee = ((IcedTeaScriptableJavaObject*) npobj)->getInstanceID();
-         java_result = java_request.callMethod(
-                         IcedTeaPluginUtilities::getSourceFromInstance(instance),
-@@ -600,7 +600,7 @@
-         return false;
-     }
--    PLUGIN_DEBUG_0ARG("IcedTeaScriptableJavaObject::invoke converting and returning.\n");
-+    PLUGIN_DEBUG("IcedTeaScriptableJavaObject::invoke converting and returning.\n");
-     return IcedTeaPluginUtilities::javaResultToNPVariant(instance, java_result->return_string, result);
- }
-@@ -615,7 +615,7 @@
- bool
- IcedTeaScriptableJavaObject::hasProperty(NPObject *npobj, NPIdentifier name)
- {
--    PLUGIN_DEBUG_2ARG("IcedTeaScriptableJavaObject::hasProperty %s (ival=%d)\n", browser_functions.utf8fromidentifier(name), browser_functions.intfromidentifier(name));
-+    PLUGIN_DEBUG("IcedTeaScriptableJavaObject::hasProperty %s (ival=%d)\n", browser_functions.utf8fromidentifier(name), browser_functions.intfromidentifier(name));
-     bool hasProperty = false;
-     // If it is an array, only length and indexes are valid
-@@ -648,14 +648,14 @@
-         }
-     }
--      PLUGIN_DEBUG_1ARG("IcedTeaScriptableJavaObject::hasProperty returning %d\n", hasProperty);
-+      PLUGIN_DEBUG("IcedTeaScriptableJavaObject::hasProperty returning %d\n", hasProperty);
-       return hasProperty;
- }
- bool
- IcedTeaScriptableJavaObject::getProperty(NPObject *npobj, NPIdentifier name, NPVariant *result)
- {
--    PLUGIN_DEBUG_2ARG("IcedTeaScriptableJavaObject::getProperty %s (ival=%d)\n", browser_functions.utf8fromidentifier(name), browser_functions.intfromidentifier(name));
-+    PLUGIN_DEBUG("IcedTeaScriptableJavaObject::getProperty %s (ival=%d)\n", browser_functions.utf8fromidentifier(name), browser_functions.intfromidentifier(name));
-     bool isPropertyClass = false;
-     JavaResultData* java_result;
-@@ -730,14 +730,14 @@
-         return false;
-     }
--    PLUGIN_DEBUG_0ARG("IcedTeaScriptableJavaObject::getProperty converting and returning.\n");
-+    PLUGIN_DEBUG("IcedTeaScriptableJavaObject::getProperty converting and returning.\n");
-     return IcedTeaPluginUtilities::javaResultToNPVariant(instance, java_result->return_string, result);
- }
- bool
- IcedTeaScriptableJavaObject::setProperty(NPObject *npobj, NPIdentifier name, const NPVariant *value)
- {
--    PLUGIN_DEBUG_2ARG("IcedTeaScriptableJavaObject::setProperty %s (ival=%d) to:\n", browser_functions.utf8fromidentifier(name), browser_functions.intfromidentifier(name));
-+    PLUGIN_DEBUG("IcedTeaScriptableJavaObject::setProperty %s (ival=%d) to:\n", browser_functions.utf8fromidentifier(name), browser_functions.intfromidentifier(name));
-     IcedTeaPluginUtilities::printNPVariant(*value);
-     bool isPropertyClass = false;
-@@ -811,7 +811,7 @@
-         return false;
-     }
--    PLUGIN_DEBUG_0ARG("IcedTeaScriptableJavaObject::setProperty returning.\n");
-+    PLUGIN_DEBUG("IcedTeaScriptableJavaObject::setProperty returning.\n");
-     return true;
- }
-@@ -834,7 +834,7 @@
-                  NPVariant *result)
- {
-     // Extract arg type array
--    PLUGIN_DEBUG_1ARG("IcedTeaScriptableJavaObject::construct %s. Args follow.\n", ((IcedTeaScriptableJavaObject*) npobj)->getClassID().c_str());
-+    PLUGIN_DEBUG("IcedTeaScriptableJavaObject::construct %s. Args follow.\n", ((IcedTeaScriptableJavaObject*) npobj)->getClassID().c_str());
-     for (int i=0; i < argCount; i++)
-     {
-         IcedTeaPluginUtilities::printNPVariant(args[i]);
-@@ -892,6 +892,6 @@
-     OBJECT_TO_NPVARIANT(obj, *result);
--    PLUGIN_DEBUG_0ARG("IcedTeaScriptableJavaObject::construct returning.\n");
-+    PLUGIN_DEBUG("IcedTeaScriptableJavaObject::construct returning.\n");
-     return true;
- }
-diff -r d1ad52447673 plugin/icedteanp/java/netscape/security/ForbiddenTargetException.java
---- /dev/null  Thu Jan 01 00:00:00 1970 +0000
-+++ b/plugin/icedteanp/java/netscape/security/ForbiddenTargetException.java    Tue Jul 20 16:36:52 2010 +0200
-@@ -0,0 +1,52 @@
-+/* ForbiddenTargetException.java
-+   Copyright (C) 2010  Red Hat
-+
-+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 IcedTea; 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 netscape.security;
-+
-+public class ForbiddenTargetException extends RuntimeException{
-+
-+    private static final long serialVersionUID = 1271219852541058396L;
-+
-+    public ForbiddenTargetException() {
-+        super();
-+    }
-+
-+    public ForbiddenTargetException(String s) {
-+        super(s);
-+    }
-+
-+}
-diff -r d1ad52447673 plugin/icedteanp/java/sun/applet/PluginAppletViewer.java
---- a/plugin/icedteanp/java/sun/applet/PluginAppletViewer.java Wed Apr 14 12:21:30 2010 +0200
-+++ b/plugin/icedteanp/java/sun/applet/PluginAppletViewer.java Tue Jul 20 16:36:52 2010 +0200
-@@ -1,4 +1,4 @@
--/* VoidPluginCallRequest -- represent Java-to-JavaScript requests
-+/* PluginAppletViewer -- Handles embedding of the applet panel
-    Copyright (C) 2008  Red Hat 
- This file is part of IcedTea.
-@@ -393,8 +393,7 @@
-          if (oldFrame != null && handle == oldFrame.handle)
-              return;
--         PluginAppletViewer newFrame = new PluginAppletViewer(handle, identifier, statusMsgStream, heightFactor, widthFactor);
--         newFrame.panel = panel;
-+         PluginAppletViewer newFrame = new PluginAppletViewer(handle, identifier, statusMsgStream, heightFactor, widthFactor, panel);
-          if (oldFrame != null) {
-              applets.remove(oldFrame.identifier);
-@@ -425,13 +424,14 @@
-       */
-      private PluginAppletViewer(long handle, final int identifier, 
-                          PrintStream statusMsgStream, double heightFactor, 
--                         double widthFactor) {
-+                         double widthFactor, AppletViewerPanel appletPanel) {
-          
-          super(handle, true);
-          this.statusMsgStream = statusMsgStream;
-          this.identifier = identifier;
-          this.proposedHeightFactor = heightFactor;
-          this.proposedWidthFactor = widthFactor;
-+         this.panel = appletPanel;
-          if (!appletPanels.contains(panel))
-              appletPanels.addElement(panel);
-@@ -735,7 +735,7 @@
-                       Thread.sleep(50);
-                       wait += 50;
-                   } catch (InterruptedException ie) {
--                      ie.printStackTrace();
-+                      // just wait
-                   }
-              }
-              
-@@ -1605,10 +1605,15 @@
-          {
-              public void run()
-              {
-+                 ThreadGroup tg = ((JNLPClassLoader) p.applet.getClass().getClassLoader()).getApplication().getThreadGroup();
-+                
-                  appletShutdown(p);
-                  appletPanels.removeElement(p);
-                  dispose();
-+                 if (tg.activeCount() > 0)
-+                 tg.stop();
-+
-                  if (countApplets() == 0) {
-                      appletSystemExit();
-                  }
-diff -r d1ad52447673 plugin/icedteanp/java/sun/applet/PluginMessageConsumer.java
---- a/plugin/icedteanp/java/sun/applet/PluginMessageConsumer.java      Wed Apr 14 12:21:30 2010 +0200
-+++ b/plugin/icedteanp/java/sun/applet/PluginMessageConsumer.java      Tue Jul 20 16:36:52 2010 +0200
-@@ -61,6 +61,7 @@
-       PluginStreamHandler streamHandler = null;
-       AppletSecurity as;
-       ConsumerThread consumerThread = new ConsumerThread();
-+      private static ArrayList<Integer> processedIds = new ArrayList<Integer>();
-       /** 
-        * Registers a reference to wait for. Responses to registered priority 
-@@ -162,15 +163,24 @@
-               }
-               
-               registerPriorityWait("instance " + instanceNum + " handle");
--              registerPriorityWait("instance " + instanceNum + " width");
--          } else if (msgParts[2].equals("handle") || msgParts[2].equals("width")) {
-+          } else if (msgParts[2].equals("handle")) {
-                   Integer instanceNum = new Integer(msgParts[1]);
-                   // If this instance is not in init, return false immediately. 
--                  // Handle/Width messages should NEVER go before tag messages
-+                  // Handle messages should NEVER go before tag messages
-                   if (!isInInit(instanceNum))
-                       return false;
-+
-+                      registerPriorityWait("instance " + instanceNum + " width");
-+          } else if (msgParts[2].equals("width")) {
-+              
-+              // width messages cannot proceed until handle and tag have been resolved
-+              Integer instanceNum = new Integer(msgParts[1]);
-+
-+              if (!processedIds.contains(instanceNum)) {
-+                return false;
-+            }
-           }
-           return true;
-@@ -181,8 +191,10 @@
-               Iterator<Integer> i = initWorkers.keySet().iterator();
-             while (i.hasNext()) {
-                 Integer key = i.next();
--                if (initWorkers.get(key).equals(worker))
-+                if (initWorkers.get(key).equals(worker)) {
-+                    processedIds.add(key);
-                     initWorkers.remove(key);
-+                }
-             }
-           }
-           
-@@ -270,7 +282,7 @@
-                       if (workers.size() <= MAX_WORKERS) {
-                           PluginMessageHandlerWorker worker = null;
-                           
--                          if (workers.size() <= (MAX_WORKERS - PRIORITY_WORKERS)) {
-+                          if (workers.size() < (MAX_WORKERS - PRIORITY_WORKERS)) {
-                               PluginDebug.debug("Cannot find free worker, creating worker " + workers.size());
-                               worker = new PluginMessageHandlerWorker(this, streamHandler, workers.size(), as, false);
-                           } else if (prioritized) {
-@@ -291,4 +303,9 @@
-                       return null;
-       }
-       
-+      private void dumpWorkerStatus() {
-+              for (PluginMessageHandlerWorker worker: workers) {
-+                      PluginDebug.debug(worker.toString());
-+              }
-+      }
- }
-diff -r d1ad52447673 plugin/icedteanp/java/sun/applet/PluginMessageHandlerWorker.java
---- a/plugin/icedteanp/java/sun/applet/PluginMessageHandlerWorker.java Wed Apr 14 12:21:30 2010 +0200
-+++ b/plugin/icedteanp/java/sun/applet/PluginMessageHandlerWorker.java Tue Jul 20 16:36:52 2010 +0200
-@@ -72,7 +72,7 @@
-                       if (message != null) {
-                               
--                          PluginDebug.debug("Consumer thread " + id + " consuming " + message);
-+                          PluginDebug.debug("Consumer (priority=" + isPriorityWorker + ") thread " + id + " consuming " + message);
-                           
-                               // ideally, whoever returns things object should mark it 
-                               // busy first, but just in case..
-@@ -90,7 +90,7 @@
-                               this.message = null;
-                               
--                              PluginDebug.debug("Consumption completed by consumer thread " + id);
-+                              PluginDebug.debug("Consumption (priority=" + isPriorityWorker + ") completed by consumer thread " + id);
-                   // mark ourselves free again
-                               free();
-@@ -140,4 +140,8 @@
-               return free && (prioritized == isPriorityWorker);
-           }
-       }
-+
-+      public String toString() {
-+              return "Worker #" + this.id + "/IsPriority=" + this.isPriorityWorker + "/IsFree=" + this.free + "/Message=" + message;  
-+      }
- }
-diff -r d1ad52447673 ports/hotspot/src/share/vm/shark/sharkNativeWrapper.cpp
---- a/ports/hotspot/src/share/vm/shark/sharkNativeWrapper.cpp  Wed Apr 14 12:21:30 2010 +0200
-+++ b/ports/hotspot/src/share/vm/shark/sharkNativeWrapper.cpp  Tue Jul 20 16:36:52 2010 +0200
-@@ -98,7 +98,8 @@
-   if (is_static()) {
-     builder()->CreateStore(
-       builder()->CreateInlineOop(
--        JNIHandles::make_local(target()->method_holder())),
-+        JNIHandles::make_local(
-+        target()->method_holder()->klass_part()->java_mirror())),
-       oop_tmp_slot());
-     param_types.push_back(box_type);
-@@ -326,11 +327,11 @@
-       needs_cast = true;
-       break;
--    case T_BYTE:
-+    case T_CHAR:
-       needs_cast = true;
-       break;
--    case T_CHAR:
-+    case T_BYTE:
-     case T_SHORT:
-       needs_cast = true;
-       is_signed = true;
-diff -r d1ad52447673 ports/hotspot/src/share/vm/shark/sharkTopLevelBlock.cpp
---- a/ports/hotspot/src/share/vm/shark/sharkTopLevelBlock.cpp  Wed Apr 14 12:21:30 2010 +0200
-+++ b/ports/hotspot/src/share/vm/shark/sharkTopLevelBlock.cpp  Tue Jul 20 16:36:52 2010 +0200
-@@ -691,12 +691,6 @@
-   SharkValue *index = pop();
-   SharkValue *array = pop();
--  assert(array->type()->is_array_klass(), "should be");
--  ciType *element_type = ((ciArrayKlass *) array->type())->element_type();
--  assert((element_type->basic_type() == T_BOOLEAN && basic_type == T_BYTE) ||
--         (element_type->basic_type() == T_ARRAY && basic_type == T_OBJECT) ||
--         (element_type->basic_type() == basic_type), "type mismatch");
--
-   check_null(array);
-   check_bounds(array, index);
-@@ -729,7 +723,21 @@
-     break;
-   case T_OBJECT:
--    push(SharkValue::create_generic(element_type, value, false));
-+    // You might expect that array->type()->is_array_klass() would
-+    // always be true, but it isn't.  If ciTypeFlow detects that a
-+    // value is always null then that value becomes an untyped null
-+    // object.  Shark doesn't presently support this, so a generic
-+    // T_OBJECT is created.  In this case we guess the type using
-+    // the BasicType we were supplied.  In reality the generated
-+    // code will never be used, as the null value will be caught
-+    // by the above null pointer check.
-+    // http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=324
-+    push(
-+      SharkValue::create_generic(
-+        array->type()->is_array_klass() ?
-+          ((ciArrayKlass *) array->type())->element_type() :
-+          ciType::make(basic_type),
-+        value, false));
-     break;
-   default:
-@@ -743,12 +751,6 @@
-   SharkValue *index  = pop();
-   SharkValue *array  = pop();
--  assert(array->type()->is_array_klass(), "should be");
--  ciType *element_type = ((ciArrayKlass *) array->type())->element_type();
--  assert((element_type->basic_type() == T_BOOLEAN && basic_type == T_BYTE) ||
--         (element_type->basic_type() == T_ARRAY && basic_type == T_OBJECT) ||
--         (element_type->basic_type() == basic_type), "type mismatch");
--
-   check_null(array);
-   check_bounds(array, index);
-@@ -792,7 +794,7 @@
-   builder()->CreateStore(value, addr);
--  if (!element_type->is_primitive_type())
-+  if (basic_type == T_OBJECT) // XXX or T_ARRAY?
-     builder()->CreateUpdateBarrierSet(oopDesc::bs(), addr);
- }
-@@ -901,6 +903,18 @@
-       dest_method->holder() == java_lang_Object_klass())
-     return dest_method;
-+#ifdef SHARK_CAN_DEOPTIMIZE_ANYWHERE
-+  // This code can replace a virtual call with a direct call if this
-+  // class is the only one in the entire set of loaded classes that
-+  // implements this method.  This makes the compiled code dependent
-+  // on other classes that implement the method not being loaded, a
-+  // condition which is enforced by the dependency tracker.  If the
-+  // dependency tracker determines a method has become invalid it
-+  // will mark it for recompilation, causing running copies to be
-+  // deoptimized.  Shark currently can't deoptimize arbitrarily like
-+  // that, so this optimization cannot be used.
-+  // http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=481
-+  
-   // All other interesting cases are instance classes
-   if (!receiver_type->is_instance_klass())
-     return NULL;
-@@ -956,6 +970,8 @@
-   // with non-monomorphic targets if the receiver has an exact
-   // type.  We don't mark types this way, so we can't do this.
-+#endif // SHARK_CAN_DEOPTIMIZE_ANYWHERE
-+
-   return NULL;
- }
-diff -r d1ad52447673 pulseaudio/src/java/org/classpath/icedtea/pulseaudio/PulseAudioDataLine.java
---- a/pulseaudio/src/java/org/classpath/icedtea/pulseaudio/PulseAudioDataLine.java     Wed Apr 14 12:21:30 2010 +0200
-+++ b/pulseaudio/src/java/org/classpath/icedtea/pulseaudio/PulseAudioDataLine.java     Tue Jul 20 16:36:52 2010 +0200
-@@ -86,7 +86,7 @@
-       protected void open(AudioFormat format, int bufferSize)
-                       throws LineUnavailableException {
--              if (isOpen) {
-+              if (isOpen()) {
-                       throw new IllegalStateException("Line is already open");
-               }
-@@ -139,7 +139,7 @@
-                       }
-               }
--              if (!isOpen) {
-+              if (!isOpen()) {
-                       throw new IllegalArgumentException("Invalid format");
-               }
-@@ -299,9 +299,10 @@
-       @Override
-       public void close() {
--              if (!isOpen) {
--                      throw new IllegalStateException(
--                                      "Line must be open for close() to work");
-+              if (!isOpen()) {
-+                      // For whatever reason, we are being asked to close
-+                      // a line that is not even open.
-+                      return;
-               }
-               synchronized (eventLoop.threadLock) {
-@@ -346,7 +347,7 @@
-       @Override
-       public void start() {
--              if (!isOpen) {
-+              if (!isOpen()) {
-                       throw new IllegalStateException(
-                                       "Line must be open()ed before it can be start()ed");
-               }
-@@ -376,10 +377,10 @@
-       @Override
-       public synchronized void stop() {
--              if (!isOpen) {
--                      throw new IllegalStateException(
--                                      "Line must be open()ed before it can be start()ed");
--
-+              if (!isOpen()) {
-+                      // For some reason, we are being asked to stop a line
-+                      // that isn't even open.
-+                      return;
-               }
-               writeInterrupted = true;
-               if (!isStarted) {
-@@ -433,7 +434,7 @@
-                       throws LineUnavailableException;
-       public Stream getStream() {
--              if (!isOpen) {
-+              if (!isOpen()) {
-                       throw new IllegalStateException("Line must be open");
-               }
-@@ -442,7 +443,7 @@
-       @Override
-       public int getBufferSize() {
--              if (!isOpen) {
-+              if (!isOpen()) {
-                       return DEFAULT_BUFFER_SIZE;
-               }
-               return bufferSize;
-@@ -450,7 +451,7 @@
-       @Override
-       public AudioFormat getFormat() {
--              if (!isOpen) {
-+              if (!isOpen()) {
-                       return defaultFormat;
-               }
-               return currentFormat;
-@@ -467,7 +468,7 @@
-        *            the name of this audio stream
-        */
-       public void setName(String streamName) {
--              if (isOpen) {
-+              if (isOpen()) {
-                       Operation o;
-                       synchronized (eventLoop.threadLock) {
-diff -r d1ad52447673 pulseaudio/src/java/org/classpath/icedtea/pulseaudio/PulseAudioLine.java
---- a/pulseaudio/src/java/org/classpath/icedtea/pulseaudio/PulseAudioLine.java Wed Apr 14 12:21:30 2010 +0200
-+++ b/pulseaudio/src/java/org/classpath/icedtea/pulseaudio/PulseAudioLine.java Tue Jul 20 16:36:52 2010 +0200
-@@ -62,7 +62,7 @@
-       @Override
-       public void close() {
--              if (!isOpen) {
-+              if (!isOpen()) {
-                       throw new IllegalStateException("Line is not open");
-               }
-@@ -79,7 +79,7 @@
-       @Override
-       public Control getControl(Type control) {
--              if (isOpen) {
-+              if (isOpen()) {
-                       for (Control aControl : controls) {
-                               if (aControl.getType() == control) {
-                                       return aControl;
-@@ -92,7 +92,7 @@
-       @Override
-       public Control[] getControls() {
--              if (!isOpen) {
-+              if (!isOpen()) {
-                       return new Control[] {};
-               }
-diff -r d1ad52447673 pulseaudio/src/java/org/classpath/icedtea/pulseaudio/PulseAudioSourceDataLine.java
---- a/pulseaudio/src/java/org/classpath/icedtea/pulseaudio/PulseAudioSourceDataLine.java       Wed Apr 14 12:21:30 2010 +0200
-+++ b/pulseaudio/src/java/org/classpath/icedtea/pulseaudio/PulseAudioSourceDataLine.java       Tue Jul 20 16:36:52 2010 +0200
-@@ -142,8 +142,9 @@
-                       writeInterrupted = false;
-               }
--              if (!isOpen) {
--                      throw new IllegalStateException("must call open() before write()");
-+              if (!isOpen()) {
-+                      // A closed line can write exactly 0 bytes.
-+                      return 0;
-               }
-               int frameSize = currentFormat.getFrameSize();
-@@ -259,11 +260,6 @@
-       @Override
-       public void drain() {
--              if (!isOpen) {
--                      throw new IllegalStateException(
--                                      "Line must be open before it can be drain()ed");
--
--              }
-               synchronized (this) {
-                       writeInterrupted = true;
-@@ -271,13 +267,13 @@
-               do {
-                       synchronized (this) {
--                              if (!isOpen) {
-+                              if (!isOpen()) {
-                                       return;
-                               }
-                               if (getBytesInBuffer() == 0) {
-                                       return;
-                               }
--                              if (isStarted || !isOpen) {
-+                              if (isStarted) {
-                                       break;
-                               }
-                               try {
-@@ -301,29 +297,27 @@
-       @Override
-       public void flush() {
--              if (!isOpen) {
--                      throw new IllegalStateException(
--                                      "Line must be open before it can be flush()ed");
--              }
-               synchronized (this) {
-                       writeInterrupted = true;
-               }
--              Operation operation;
--              synchronized (eventLoop.threadLock) {
--                      operation = stream.flush();
-+              if (isOpen()) {
-+                      Operation operation;
-+                      synchronized (eventLoop.threadLock) {
-+                              operation = stream.flush();
-+                      }
-+
-+                      operation.waitForCompletion();
-+                      operation.releaseReference();
-               }
--              operation.waitForCompletion();
--              operation.releaseReference();
--
-       }
-       @Override
-       synchronized public void close() {
--              if (!isOpen) {
--                      throw new IllegalStateException("not open so cant close");
-+              if (!isOpen()) {
-+                      return;
-               }
-               writeInterrupted = true;
-diff -r d1ad52447673 pulseaudio/src/java/org/classpath/icedtea/pulseaudio/PulseAudioTargetDataLine.java
---- a/pulseaudio/src/java/org/classpath/icedtea/pulseaudio/PulseAudioTargetDataLine.java       Wed Apr 14 12:21:30 2010 +0200
-+++ b/pulseaudio/src/java/org/classpath/icedtea/pulseaudio/PulseAudioTargetDataLine.java       Tue Jul 20 16:36:52 2010 +0200
-@@ -76,15 +76,19 @@
-       @Override
-       synchronized public void close() {
-+              if (!isOpen()) {
-+                      // Probably due to some programmer error, we are being
-+                      // asked to close an already closed line.  Oh well.
-+                      Debug.println(DebugLevel.Verbose,
-+                                      "PulseAudioTargetDataLine.close(): "
-+                                      + "Line closed that wasn't open.");
-+                      return;
-+              }
-+
-               /* check for permission to record audio */
-               AudioPermission perm = new AudioPermission("record", null);
-               perm.checkGuard(null);
--              if (!isOpen) {
--                      throw new IllegalStateException(
--                                      "Line cant be closed if it isnt open");
--              }
--
-               PulseAudioMixer parentMixer = PulseAudioMixer.getInstance();
-               parentMixer.removeTargetLine(this);
-@@ -101,7 +105,7 @@
-               AudioPermission perm = new AudioPermission("record", null);
-               perm.checkGuard(null);
--              if (isOpen) {
-+              if (isOpen()) {
-                       throw new IllegalStateException("already open");
-               }
-               super.open(format, bufferSize);
-@@ -142,8 +146,9 @@
-               /* check state and inputs */
--              if (!isOpen) {
--                      throw new IllegalStateException("must call open() before read()");
-+              if (!isOpen()) {
-+                      // A closed line can produce zero bytes of data.
-+                      return 0;
-               }
-               int frameSize = currentFormat.getFrameSize();
-@@ -220,7 +225,7 @@
-               while (remainingLength != 0) {
-                       synchronized (this) {
--                              if (!isOpen || !isStarted) {
-+                              if (!isOpen() || !isStarted) {
-                                       return sizeRead;
-                               }
-@@ -287,57 +292,57 @@
-       @Override
-       public void drain() {
--              if (!isOpen) {
--                      throw new IllegalStateException("must call open() before drain()");
-+              // blocks when there is data on the line
-+              // http://www.jsresources.org/faq_audio.html#stop_drain_tdl
-+              while (true) {
-+                      synchronized (this) {
-+                              if (!isStarted || !isOpen()) {
-+                                      break;
-+                              }
-+                      }
-+                      try {
-+                              //TODO: Is this the best length of sleep?
-+                              //Maybe in case this loop runs for a long time
-+                              //it would be good to switch to a longer
-+                              //sleep.  Like bump it up each iteration after
-+                              //the Nth iteration, up to a MAXSLEEP length.
-+                              Thread.sleep(100);
-+                      } catch (InterruptedException e) {
-+                              // do nothing
-+                      }
-               }
-               synchronized (this) {
-                       drained = true;
-               }
--              // blocks when there is data on the line
--              // http://www.jsresources.org/faq_audio.html#stop_drain_tdl
--              while (true) {
--                      synchronized (this) {
--                              if (!isStarted || !isOpen) {
--                                      break;
--                              }
--                      }
--                      try {
--                              Thread.sleep(100);
--                      } catch (InterruptedException e) {
--                              // do nothing
--                      }
--              }
--
-       }
-       @Override
-       public void flush() {
--              if (!isOpen) {
--                      throw new IllegalStateException("Line must be open");
-+              if (isOpen()) {
-+
-+                      /* flush the buffer on pulseaudio's side */
-+                      Operation operation;
-+                      synchronized (eventLoop.threadLock) {
-+                              operation = stream.flush();
-+                      }
-+                      operation.waitForCompletion();
-+                      operation.releaseReference();
-               }
--              /* flush the buffer on pulseaudio's side */
--              Operation operation;
--              synchronized (eventLoop.threadLock) {
--                      operation = stream.flush();
--              }
--              operation.waitForCompletion();
--              operation.releaseReference();
--
-               synchronized (this) {
-                       flushed = true;
-                       /* flush the partial fragment we stored */
-                       fragmentBuffer = null;
-               }
--
-       }
-       @Override
-       public int available() {
--              if (!isOpen) {
--                      throw new IllegalStateException("Line must be open");
-+              if (!isOpen()) {
-+                      // a closed line has 0 bytes available.
-+                      return 0;
-               }
-               synchronized (eventLoop.threadLock) {
-diff -r d1ad52447673 tapset/hotspot.stp.in
---- a/tapset/hotspot.stp.in    Wed Apr 14 12:21:30 2010 +0200
-+++ b/tapset/hotspot.stp.in    Tue Jul 20 16:36:52 2010 +0200
-@@ -120,7 +120,7 @@
-   name = "object_alloc";
-   thread_id = $arg1;
-   class = user_string_n($arg2, $arg3);
--  size = $arg3;
-+  size = $arg4;
-   probestr = sprintf("%s(thread_id=%d,class='%s',size=0x%x)",
-                      name, thread_id, class, size);
- }