<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">diff -ur ./build.sh ../../jasmin-2.4/build.sh
--- ./build.sh	2006-02-05 23:20:44.000000000 +0100
+++ ../../jasmin-2.4/build.sh	2011-01-10 00:16:25.000000000 +0100
@@ -1,305 +1,305 @@
-#! /bin/sh
-
-#   Copyright 2001-2004 The Apache Software Foundation
-#
-#   Licensed under the Apache License, Version 2.0 (the "License");
-#   you may not use this file except in compliance with the License.
-#   You may obtain a copy of the License at
-#
-#       http://www.apache.org/licenses/LICENSE-2.0
-#
-#   Unless required by applicable law or agreed to in writing, software
-#   distributed under the License is distributed on an "AS IS" BASIS,
-#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-#   See the License for the specific language governing permissions and
-#   limitations under the License.
-
-ANT_HOME=.
-export ANT_HOME
-
-# Extract launch and ant arguments, (see details below).
-ant_exec_args=
-no_config=false
-use_jikes_default=false
-ant_exec_debug=false
-show_help=false
-for arg in "$@" ; do
-  if [ "$arg" = "--noconfig" ] ; then
-    no_config=true
-  elif [ "$arg" = "--usejikes" ] ; then
-    use_jikes_default=true
-  elif [ "$arg" = "--execdebug" ] ; then
-    ant_exec_debug=true
-  elif [ my"$arg" = my"--h"  -o my"$arg" = my"--help"  ] ; then
-    show_help=true
-    ant_exec_args="$ant_exec_args -h"
-  else
-    if [  my"$arg" = my"-h"  -o  my"$arg" = my"-help" ] ; then
-      show_help=true
-    fi
-    ant_exec_args="$ant_exec_args \"$arg\""
-  fi
-done
-
-# Source/default ant configuration
-if $no_config ; then
-  rpm_mode=false
-  usejikes=$use_jikes_default
-else
-  # load system-wide ant configuration
-  if [ -f "/etc/ant.conf" ] ; then
-    . /etc/ant.conf
-  fi
-
-  # load user ant configuration
-  if [ -f "$HOME/.ant/ant.conf" ] ; then
-    . $HOME/.ant/ant.conf
-  fi
-  if [ -f "$HOME/.antrc" ] ; then
-    . "$HOME/.antrc"
-  fi
-
-  # provide default configuration values
-  if [ -z "$rpm_mode" ] ; then
-    rpm_mode=false
-  fi
-  if [ -z "$usejikes" ] ; then
-    usejikes=$use_jikes_default
-  fi
-fi
-
-# Setup Java environment in rpm mode
-if $rpm_mode ; then
-  if [ -f /usr/share/java-utils/java-functions ] ; then
-    . /usr/share/java-utils/java-functions
-    set_jvm
-    set_javacmd
-  fi
-fi
-
-# OS specific support.  $var _must_ be set to either true or false.
-cygwin=false;
-darwin=false;
-case "`uname`" in
-  CYGWIN*) cygwin=true ;;
-  Darwin*) darwin=true
-           if [ -z "$JAVA_HOME" ] ; then
-             JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Home
-           fi
-           ;;
-esac
-
-if [ -z "$ANT_HOME" -o ! -d "$ANT_HOME" ] ; then
-  # try to find ANT
-  if [ -d /opt/ant ] ; then
-    ANT_HOME=/opt/ant
-  fi
-
-  if [ -d "${HOME}/opt/ant" ] ; then
-    ANT_HOME="${HOME}/opt/ant"
-  fi
-
-  ## resolve links - $0 may be a link to ant's home
-  PRG="$0"
-  progname=`basename "$0"`
-
-  # need this for relative symlinks
-  while [ -h "$PRG" ] ; do
-    ls=`ls -ld "$PRG"`
-    link=`expr "$ls" : '.*-&gt; \(.*\)$'`
-    if expr "$link" : '/.*' &gt; /dev/null; then
-    PRG="$link"
-    else
-    PRG=`dirname "$PRG"`"/$link"
-    fi
-  done
-
-  ANT_HOME=`dirname "$PRG"`/..
-
-  # make it fully qualified
-  ANT_HOME=`cd "$ANT_HOME" &amp;&amp; pwd`
-fi
-
-# For Cygwin, ensure paths are in UNIX format before anything is touched
-if $cygwin ; then
-  [ -n "$ANT_HOME" ] &amp;&amp;
-    ANT_HOME=`cygpath --unix "$ANT_HOME"`
-  [ -n "$JAVA_HOME" ] &amp;&amp;
-    JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
-fi
-
-# set ANT_LIB location
-ANT_LIB="${ANT_HOME}/lib"
-
-if [ -z "$JAVACMD" ] ; then
-  if [ -n "$JAVA_HOME"  ] ; then
-    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
-      # IBM's JDK on AIX uses strange locations for the executables
-      JAVACMD="$JAVA_HOME/jre/sh/java"
-    else
-      JAVACMD="$JAVA_HOME/bin/java"
-    fi
-  else
-    JAVACMD=`which java 2&gt; /dev/null `
-    if [ -z "$JAVACMD" ] ; then
-        JAVACMD=java
-    fi
-  fi
-fi
-
-if [ ! -x "$JAVACMD" ] ; then
-  echo "Error: JAVA_HOME is not defined correctly."
-  echo "  We cannot execute $JAVACMD"
-  exit 1
-fi
-
-# Build local classpath using just the launcher in non-rpm mode or
-# use the Jpackage helper in rpm mode with basic and default jars
-# specified in the ant.conf configuration. Because the launcher is
-# used, libraries linked in ANT_HOME will also be include, but this
-# is discouraged as it is not java-version safe. A user should
-# request optional jars and their dependencies via the OPT_JAR_LIST
-# variable
-if $rpm_mode &amp;&amp; [ -f /usr/bin/build-classpath ] ; then
-  LOCALCLASSPATH="$(/usr/bin/build-classpath ant ant-launcher jaxp_parser_impl xml-commons-apis)"
-  # If the user requested to try to add some other jars to the classpath
-  if [ -n "$OPT_JAR_LIST" ] ; then
-    _OPTCLASSPATH="$(/usr/bin/build-classpath $OPT_JAR_LIST 2&gt; /dev/null)"
-    if [ -n "$_OPTCLASSPATH" ] ; then 
-      LOCALCLASSPATH="$LOCALCLASSPATH:$_OPTCLASSPATH"
-    fi
-  fi
-
-  # Explicitly add javac path to classpath, assume JAVA_HOME set
-  # properly in rpm mode
-  if [ -f "$JAVA_HOME/lib/tools.jar" ] ; then
-    LOCALCLASSPATH="$LOCALCLASSPATH:$JAVA_HOME/lib/tools.jar"
-  fi
-  if [ -f "$JAVA_HOME/lib/classes.zip" ] ; then
-    LOCALCLASSPATH="$LOCALCLASSPATH:$JAVA_HOME/lib/classes.zip"
-  fi
-
-  # if CLASSPATH_OVERRIDE env var is set, LOCALCLASSPATH will be
-  # user CLASSPATH first and ant-found jars after.
-  # In that case, the user CLASSPATH will override ant-found jars
-  #
-  # if CLASSPATH_OVERRIDE is not set, we'll have the normal behaviour
-  # with ant-found jars first and user CLASSPATH after
-  if [ -n "$CLASSPATH" ] ; then
-    # merge local and specified classpath 
-    if [ -z "$LOCALCLASSPATH" ] ; then 
-      LOCALCLASSPATH="$CLASSPATH"
-    elif [ -n "$CLASSPATH_OVERRIDE" ] ; then
-      LOCALCLASSPATH="$CLASSPATH:$LOCALCLASSPATH"
-    else
-      LOCALCLASSPATH="$LOCALCLASSPATH:$CLASSPATH"
-    fi
-
-    # remove class path from launcher -lib option
-    CLASSPATH=""
-  fi
-else
-  # not using rpm_mode; use launcher to determine classpaths
-  if [ -z "$LOCALCLASSPATH" ] ; then
-      LOCALCLASSPATH=$ANT_LIB/ant-launcher.jar
-  else
-      LOCALCLASSPATH=$ANT_LIB/ant-launcher.jar:$LOCALCLASSPATH
-  fi
-fi
-
-if [ -n "$JAVA_HOME" ] ; then
-  # OSX hack to make Ant work with jikes
-  if $darwin ; then
-    OSXHACK="${JAVA_HOME}/../Classes"
-    if [ -d "${OSXHACK}" ] ; then
-      for i in "${OSXHACK}"/*.jar
-      do
-        JIKESPATH="$JIKESPATH:$i"
-      done
-    fi
-  fi
-fi
-
-# Allow Jikes support (off by default)
-if $usejikes; then
-  ANT_OPTS="$ANT_OPTS -Dbuild.compiler=jikes"
-fi
-
-# For Cygwin, switch paths to appropriate format before running java
-if $cygwin; then
-  if [ "$OS" = "Windows_NT" ] &amp;&amp; cygpath -m .&gt;/dev/null 2&gt;/dev/null ; then
-    format=mixed
-  else
-    format=windows
-  fi
-  ANT_HOME=`cygpath --$format "$ANT_HOME"`
-  ANT_LIB=`cygpath --$format "$ANT_LIB"`
-  JAVA_HOME=`cygpath --$format "$JAVA_HOME"`
-  LOCALCLASSPATH=`cygpath --path --$format "$LOCALCLASSPATH"`
-  if [ -n "$CLASSPATH" ] ; then
-    CLASSPATH=`cygpath --path --$format "$CLASSPATH"`
-  fi
-  CYGHOME=`cygpath --$format "$HOME"`
-fi
-
-# Show script help if requested
-if $show_help ; then
-  echo $0 '[script options] [options] [target [target2 [target3] ..]]'
-  echo 'Script Options:'
-  echo '  --help, --h            print this message and ant help'
-  echo '  --noconfig             suppress sourcing of /etc/ant.conf,'
-  echo '                         $HOME/.ant/ant.conf, and $HOME/.antrc'
-  echo '                         configuration files'
-  echo '  --usejikes             enable use of jikes by default, unless'
-  echo '                         set explicitly in configuration files'
-  echo '  --execdebug            print ant exec line generated by this'
-  echo '                         launch script'
-  echo '  '
-fi
-# add a second backslash to variables terminated by a backslash under cygwin
-if $cygwin; then
-  case "$ANT_HOME" in
-    *\\ )
-    ANT_HOME="$ANT_HOME\\"
-    ;;
-  esac
-  case "$CYGHOME" in
-    *\\ )
-    CYGHOME="$CYGHOME\\"
-    ;;
-  esac
-  case "$JIKESPATH" in
-    *\\ )
-    JIKESPATH="$JIKESPATH\\"
-    ;;
-  esac
-  case "$LOCALCLASSPATH" in
-    *\\ )
-    LOCALCLASSPATH="$LOCALCLASSPATH\\"
-    ;;
-  esac
-  case "$CLASSPATH" in
-    *\\ )
-    CLASSPATH="$CLASSPATH\\"
-    ;;
-  esac
-fi
-# Execute ant using eval/exec to preserve spaces in paths,
-# java options, and ant args
-ant_sys_opts=
-if [ -n "$CYGHOME" ]; then
-  if [ -n "$JIKESPATH" ]; then
-    ant_sys_opts="-Djikes.class.path=\"$JIKESPATH\" -Dcygwin.user.home=\"$CYGHOME\""
-  else
-    ant_sys_opts="-Dcygwin.user.home=\"$CYGHOME\""
-  fi
-else
-  if [ -n "$JIKESPATH" ]; then
-    ant_sys_opts="-Djikes.class.path=\"$JIKESPATH\""
-  fi
-fi
-ant_exec_command="exec \"$JAVACMD\" $ANT_OPTS -classpath \"$LOCALCLASSPATH\" -Dant.home=\"$ANT_HOME\" -Dant.library.dir=\"$ANT_LIB\" $ant_sys_opts org.apache.tools.ant.launch.Launcher $ANT_ARGS -lib \"$CLASSPATH\" $ant_exec_args"
-if $ant_exec_debug ; then
-    echo $ant_exec_command
-fi
-eval $ant_exec_command
+#! /bin/sh
+
+#   Copyright 2001-2004 The Apache Software Foundation
+#
+#   Licensed under the Apache License, Version 2.0 (the "License");
+#   you may not use this file except in compliance with the License.
+#   You may obtain a copy of the License at
+#
+#       http://www.apache.org/licenses/LICENSE-2.0
+#
+#   Unless required by applicable law or agreed to in writing, software
+#   distributed under the License is distributed on an "AS IS" BASIS,
+#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#   See the License for the specific language governing permissions and
+#   limitations under the License.
+
+ANT_HOME=.
+export ANT_HOME
+
+# Extract launch and ant arguments, (see details below).
+ant_exec_args=
+no_config=false
+use_jikes_default=false
+ant_exec_debug=false
+show_help=false
+for arg in "$@" ; do
+  if [ "$arg" = "--noconfig" ] ; then
+    no_config=true
+  elif [ "$arg" = "--usejikes" ] ; then
+    use_jikes_default=true
+  elif [ "$arg" = "--execdebug" ] ; then
+    ant_exec_debug=true
+  elif [ my"$arg" = my"--h"  -o my"$arg" = my"--help"  ] ; then
+    show_help=true
+    ant_exec_args="$ant_exec_args -h"
+  else
+    if [  my"$arg" = my"-h"  -o  my"$arg" = my"-help" ] ; then
+      show_help=true
+    fi
+    ant_exec_args="$ant_exec_args \"$arg\""
+  fi
+done
+
+# Source/default ant configuration
+if $no_config ; then
+  rpm_mode=false
+  usejikes=$use_jikes_default
+else
+  # load system-wide ant configuration
+  if [ -f "/etc/ant.conf" ] ; then
+    . /etc/ant.conf
+  fi
+
+  # load user ant configuration
+  if [ -f "$HOME/.ant/ant.conf" ] ; then
+    . $HOME/.ant/ant.conf
+  fi
+  if [ -f "$HOME/.antrc" ] ; then
+    . "$HOME/.antrc"
+  fi
+
+  # provide default configuration values
+  if [ -z "$rpm_mode" ] ; then
+    rpm_mode=false
+  fi
+  if [ -z "$usejikes" ] ; then
+    usejikes=$use_jikes_default
+  fi
+fi
+
+# Setup Java environment in rpm mode
+if $rpm_mode ; then
+  if [ -f /usr/share/java-utils/java-functions ] ; then
+    . /usr/share/java-utils/java-functions
+    set_jvm
+    set_javacmd
+  fi
+fi
+
+# OS specific support.  $var _must_ be set to either true or false.
+cygwin=false;
+darwin=false;
+case "`uname`" in
+  CYGWIN*) cygwin=true ;;
+  Darwin*) darwin=true
+           if [ -z "$JAVA_HOME" ] ; then
+             JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Home
+           fi
+           ;;
+esac
+
+if [ -z "$ANT_HOME" -o ! -d "$ANT_HOME" ] ; then
+  # try to find ANT
+  if [ -d /opt/ant ] ; then
+    ANT_HOME=/opt/ant
+  fi
+
+  if [ -d "${HOME}/opt/ant" ] ; then
+    ANT_HOME="${HOME}/opt/ant"
+  fi
+
+  ## resolve links - $0 may be a link to ant's home
+  PRG="$0"
+  progname=`basename "$0"`
+
+  # need this for relative symlinks
+  while [ -h "$PRG" ] ; do
+    ls=`ls -ld "$PRG"`
+    link=`expr "$ls" : '.*-&gt; \(.*\)$'`
+    if expr "$link" : '/.*' &gt; /dev/null; then
+    PRG="$link"
+    else
+    PRG=`dirname "$PRG"`"/$link"
+    fi
+  done
+
+  ANT_HOME=`dirname "$PRG"`/..
+
+  # make it fully qualified
+  ANT_HOME=`cd "$ANT_HOME" &amp;&amp; pwd`
+fi
+
+# For Cygwin, ensure paths are in UNIX format before anything is touched
+if $cygwin ; then
+  [ -n "$ANT_HOME" ] &amp;&amp;
+    ANT_HOME=`cygpath --unix "$ANT_HOME"`
+  [ -n "$JAVA_HOME" ] &amp;&amp;
+    JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
+fi
+
+# set ANT_LIB location
+ANT_LIB="${ANT_HOME}/lib"
+
+if [ -z "$JAVACMD" ] ; then
+  if [ -n "$JAVA_HOME"  ] ; then
+    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+      # IBM's JDK on AIX uses strange locations for the executables
+      JAVACMD="$JAVA_HOME/jre/sh/java"
+    else
+      JAVACMD="$JAVA_HOME/bin/java"
+    fi
+  else
+    JAVACMD=`which java 2&gt; /dev/null `
+    if [ -z "$JAVACMD" ] ; then
+        JAVACMD=java
+    fi
+  fi
+fi
+
+if [ ! -x "$JAVACMD" ] ; then
+  echo "Error: JAVA_HOME is not defined correctly."
+  echo "  We cannot execute $JAVACMD"
+  exit 1
+fi
+
+# Build local classpath using just the launcher in non-rpm mode or
+# use the Jpackage helper in rpm mode with basic and default jars
+# specified in the ant.conf configuration. Because the launcher is
+# used, libraries linked in ANT_HOME will also be include, but this
+# is discouraged as it is not java-version safe. A user should
+# request optional jars and their dependencies via the OPT_JAR_LIST
+# variable
+if $rpm_mode &amp;&amp; [ -f /usr/bin/build-classpath ] ; then
+  LOCALCLASSPATH="$(/usr/bin/build-classpath ant ant-launcher jaxp_parser_impl xml-commons-apis)"
+  # If the user requested to try to add some other jars to the classpath
+  if [ -n "$OPT_JAR_LIST" ] ; then
+    _OPTCLASSPATH="$(/usr/bin/build-classpath $OPT_JAR_LIST 2&gt; /dev/null)"
+    if [ -n "$_OPTCLASSPATH" ] ; then 
+      LOCALCLASSPATH="$LOCALCLASSPATH:$_OPTCLASSPATH"
+    fi
+  fi
+
+  # Explicitly add javac path to classpath, assume JAVA_HOME set
+  # properly in rpm mode
+  if [ -f "$JAVA_HOME/lib/tools.jar" ] ; then
+    LOCALCLASSPATH="$LOCALCLASSPATH:$JAVA_HOME/lib/tools.jar"
+  fi
+  if [ -f "$JAVA_HOME/lib/classes.zip" ] ; then
+    LOCALCLASSPATH="$LOCALCLASSPATH:$JAVA_HOME/lib/classes.zip"
+  fi
+
+  # if CLASSPATH_OVERRIDE env var is set, LOCALCLASSPATH will be
+  # user CLASSPATH first and ant-found jars after.
+  # In that case, the user CLASSPATH will override ant-found jars
+  #
+  # if CLASSPATH_OVERRIDE is not set, we'll have the normal behaviour
+  # with ant-found jars first and user CLASSPATH after
+  if [ -n "$CLASSPATH" ] ; then
+    # merge local and specified classpath 
+    if [ -z "$LOCALCLASSPATH" ] ; then 
+      LOCALCLASSPATH="$CLASSPATH"
+    elif [ -n "$CLASSPATH_OVERRIDE" ] ; then
+      LOCALCLASSPATH="$CLASSPATH:$LOCALCLASSPATH"
+    else
+      LOCALCLASSPATH="$LOCALCLASSPATH:$CLASSPATH"
+    fi
+
+    # remove class path from launcher -lib option
+    CLASSPATH=""
+  fi
+else
+  # not using rpm_mode; use launcher to determine classpaths
+  if [ -z "$LOCALCLASSPATH" ] ; then
+      LOCALCLASSPATH=$ANT_LIB/ant-launcher.jar
+  else
+      LOCALCLASSPATH=$ANT_LIB/ant-launcher.jar:$LOCALCLASSPATH
+  fi
+fi
+
+if [ -n "$JAVA_HOME" ] ; then
+  # OSX hack to make Ant work with jikes
+  if $darwin ; then
+    OSXHACK="${JAVA_HOME}/../Classes"
+    if [ -d "${OSXHACK}" ] ; then
+      for i in "${OSXHACK}"/*.jar
+      do
+        JIKESPATH="$JIKESPATH:$i"
+      done
+    fi
+  fi
+fi
+
+# Allow Jikes support (off by default)
+if $usejikes; then
+  ANT_OPTS="$ANT_OPTS -Dbuild.compiler=jikes"
+fi
+
+# For Cygwin, switch paths to appropriate format before running java
+if $cygwin; then
+  if [ "$OS" = "Windows_NT" ] &amp;&amp; cygpath -m .&gt;/dev/null 2&gt;/dev/null ; then
+    format=mixed
+  else
+    format=windows
+  fi
+  ANT_HOME=`cygpath --$format "$ANT_HOME"`
+  ANT_LIB=`cygpath --$format "$ANT_LIB"`
+  JAVA_HOME=`cygpath --$format "$JAVA_HOME"`
+  LOCALCLASSPATH=`cygpath --path --$format "$LOCALCLASSPATH"`
+  if [ -n "$CLASSPATH" ] ; then
+    CLASSPATH=`cygpath --path --$format "$CLASSPATH"`
+  fi
+  CYGHOME=`cygpath --$format "$HOME"`
+fi
+
+# Show script help if requested
+if $show_help ; then
+  echo $0 '[script options] [options] [target [target2 [target3] ..]]'
+  echo 'Script Options:'
+  echo '  --help, --h            print this message and ant help'
+  echo '  --noconfig             suppress sourcing of /etc/ant.conf,'
+  echo '                         $HOME/.ant/ant.conf, and $HOME/.antrc'
+  echo '                         configuration files'
+  echo '  --usejikes             enable use of jikes by default, unless'
+  echo '                         set explicitly in configuration files'
+  echo '  --execdebug            print ant exec line generated by this'
+  echo '                         launch script'
+  echo '  '
+fi
+# add a second backslash to variables terminated by a backslash under cygwin
+if $cygwin; then
+  case "$ANT_HOME" in
+    *\\ )
+    ANT_HOME="$ANT_HOME\\"
+    ;;
+  esac
+  case "$CYGHOME" in
+    *\\ )
+    CYGHOME="$CYGHOME\\"
+    ;;
+  esac
+  case "$JIKESPATH" in
+    *\\ )
+    JIKESPATH="$JIKESPATH\\"
+    ;;
+  esac
+  case "$LOCALCLASSPATH" in
+    *\\ )
+    LOCALCLASSPATH="$LOCALCLASSPATH\\"
+    ;;
+  esac
+  case "$CLASSPATH" in
+    *\\ )
+    CLASSPATH="$CLASSPATH\\"
+    ;;
+  esac
+fi
+# Execute ant using eval/exec to preserve spaces in paths,
+# java options, and ant args
+ant_sys_opts=
+if [ -n "$CYGHOME" ]; then
+  if [ -n "$JIKESPATH" ]; then
+    ant_sys_opts="-Djikes.class.path=\"$JIKESPATH\" -Dcygwin.user.home=\"$CYGHOME\""
+  else
+    ant_sys_opts="-Dcygwin.user.home=\"$CYGHOME\""
+  fi
+else
+  if [ -n "$JIKESPATH" ]; then
+    ant_sys_opts="-Djikes.class.path=\"$JIKESPATH\""
+  fi
+fi
+ant_exec_command="exec \"$JAVACMD\" $ANT_OPTS -classpath \"$LOCALCLASSPATH\" -Dant.home=\"$ANT_HOME\" -Dant.library.dir=\"$ANT_LIB\" $ant_sys_opts org.apache.tools.ant.launch.Launcher $ANT_ARGS -lib \"$CLASSPATH\" $ant_exec_args"
+if $ant_exec_debug ; then
+    echo $ant_exec_command
+fi
+eval $ant_exec_command
diff -ur ./src/jas/CodeAttr.java ../../jasmin-2.4/src/jas/CodeAttr.java
--- ./src/jas/CodeAttr.java	2010-05-07 08:19:16.000000000 +0200
+++ ../../jasmin-2.4/src/jas/CodeAttr.java	2012-09-06 20:32:41.000000000 +0200
@@ -161,6 +161,31 @@
           { insn_pc.put(now, new Integer(code_size)); }
         code_size += now.size(e, this);
       }
+
+    int nr;
+    do {
+      nr = 0;
+      Iterator li = insns.listIterator();
+      int idx = 0;
+      while (li.hasNext()) {
+        Insn now = (Insn) li.next();
+        int diff = now.widen(e, this);
+        if (diff != 0) {
+          Iterator itr = insns.listIterator(idx + 1);
+          while (itr.hasNext()) {
+            Object nf = itr.next();
+            if (nf instanceof Label)
+              nf = ((Label) nf).id;
+            Integer prev = (Integer) insn_pc.get(nf);
+            insn_pc.put(nf, Integer.valueOf(prev.intValue() + diff));
+          }
+          code_size += diff;
+          ++nr;
+        }
+        ++idx;
+      }
+    } while (nr != 0);
+
     int total_size = code_size;
     if (ctb != null) total_size += ctb.size();
     if (ltab != null) total_size += ltab.size();
diff -ur ./src/jas/Insn.java ../../jasmin-2.4/src/jas/Insn.java
--- ./src/jas/Insn.java	2006-08-10 03:51:12.000000000 +0200
+++ ../../jasmin-2.4/src/jas/Insn.java	2012-09-06 20:29:16.000000000 +0200
@@ -305,6 +305,26 @@
   void resolve(ClassEnv e)
   { if (operand != null) { operand.resolve(e); } }
 
+  int widen(ClassEnv e, CodeAttr ce)
+    throws jasError
+  {
+    if (opc != opc_goto &amp;&amp; opc != opc_jsr)
+      return 0;
+    LabelOperand lo = (LabelOperand) operand;
+    int pc = ce.getPc(lo.target);
+    int tpc = ce.getPc(lo.source);
+    int off = pc - tpc;
+    if (off &gt; 32767 || off &lt; -32768) {
+      int prev = size(e, ce);
+      opc = opc == opc_goto ? opc_goto_w : opc_jsr_w;
+      lo.wide = true;
+      int now = size(e, ce);
+      return now - prev;
+    }
+    return 0;
+  }
+
+
   void write(ClassEnv e, CodeAttr ce, DataOutputStream out)
     throws IOException, jasError
   {
diff -ur ./src/jas/InsnOperand.java ../../jasmin-2.4/src/jas/InsnOperand.java
--- ./src/jas/InsnOperand.java	2006-08-10 03:43:14.000000000 +0200
+++ ../../jasmin-2.4/src/jas/InsnOperand.java	2012-09-05 23:45:49.000000000 +0200
@@ -29,7 +29,11 @@
   { target = l; this.source = source; this.wide = false; this.ref = line; }
   LabelOperand(Label l, Insn source, boolean wide, int line)
   { target = l; this.source = source; this.wide = wide; this.ref = line; }
-  int size(ClassEnv ce, CodeAttr code) { if (wide) return 4; else return 2; }
+
+int size(ClassEnv ce, CodeAttr code)
+  {
+    if (wide) return 4; else return 2;
+  }
   void resolve(ClassEnv e) { return; }
   void write(ClassEnv e, CodeAttr ce, DataOutputStream out)
     throws IOException, jasError
@@ -241,7 +245,7 @@
     this.Wide = (Wide ||
                  vindex &gt; 255 ||
                  constt &gt; 127 ||
-                 constt &lt; 127);
+                 constt &lt; -128);
   }
 
   int size(ClassEnv ce, CodeAttr code)
diff -ur ./src/jasmin/ClassFile.java ../../jasmin-2.4/src/jasmin/ClassFile.java
--- ./src/jasmin/ClassFile.java	2006-08-10 04:08:26.000000000 +0200
+++ ../../jasmin-2.4/src/jasmin/ClassFile.java	2011-08-07 15:37:37.000000000 +0200
@@ -341,7 +341,10 @@
         CP cp;
         // create a constant pool entry for the initial value
         if (value instanceof Integer) {
-          cp = new IntegerCP(((Integer)value).intValue());
+	  if (desc.charAt(0) != 'J')
+            cp = new IntegerCP(((Integer)value).intValue());
+	  else
+	    cp = new LongCP(((Integer)value).intValue());
         } else if (value instanceof Float) {
           cp = new FloatCP(((Float)value).floatValue());
         } else if (value instanceof Double) {
diff -ur ./src/jasmin/ScannerUtils.java ../../jasmin-2.4/src/jasmin/ScannerUtils.java
--- ./src/jasmin/ScannerUtils.java	2010-05-07 07:18:34.000000000 +0200
+++ ../../jasmin-2.4/src/jasmin/ScannerUtils.java	2011-01-29 22:33:48.000000000 +0100
@@ -32,7 +32,15 @@
         if(str.startsWith("+")) {
             return new Integer(str.substring(1,str.length()));
         }
-        if (str.startsWith("0x")) {
+        if (str.startsWith("0fx")) {
+            // base 16 float
+            int intbits = convertInt(str.substring(3), 16).intValue();
+            return new Float(Float.intBitsToFloat(intbits));
+        } else if (str.startsWith("0dx")) {
+            // base 16 double
+            long longbits = convertInt(str.substring(3), 16).longValue();
+            return new Double(Double.longBitsToDouble(longbits));
+        } else if (str.startsWith("0x")) {
             // base 16 integer
             return (convertInt(str.substring(2), 16));
         } else if (str.indexOf('.') != -1) {
diff -ur ./src/jasmin/parser.cup ../../jasmin-2.4/src/jasmin/parser.cup
--- ./src/jasmin/parser.cup	2006-08-10 04:08:42.000000000 +0200
+++ ../../jasmin-2.4/src/jasmin/parser.cup	2011-01-10 00:15:34.000000000 +0100
@@ -207,7 +207,7 @@
     DINTERFACE access:a classname:name SEP
         {: classFile.setClass(name.str_val,
                 (short)(a.int_val |
-                        RuntimeConstants.ACC_SUPER |
+//                        RuntimeConstants.ACC_SUPER |
                         RuntimeConstants.ACC_INTERFACE)); :}
 ;
 
diff -ur ./src/jasmin/parser.java ../../jasmin-2.4/src/jasmin/parser.java
--- ./src/jasmin/parser.java	2010-05-07 07:55:06.000000000 +0200
+++ ../../jasmin-2.4/src/jasmin/parser.java	2011-08-18 17:56:01.000000000 +0200
@@ -1,10 +1,10 @@
 
 //----------------------------------------------------
 // The following code was generated by Java(tm) CUP v0.9d
-// Fri May 07 07:55:04 MSD 2010
+// Mon Jan 10 00:16:53 CET 2011
 //----------------------------------------------------
 
-package jasmin;
+package jasmin;
 
 import java_cup.runtime.*;
 import jas.*;
@@ -2634,7 +2634,7 @@
               CUP$result = new symbol(/*class_spec*/13);
                classFile.setClass((/*name*/(str_token)CUP$stack.elementAt(CUP$top-1)).str_val,
                 (short)((/*a*/(int_token)CUP$stack.elementAt(CUP$top-2)).int_val |
-                        RuntimeConstants.ACC_SUPER |
+//                        RuntimeConstants.ACC_SUPER |
                         RuntimeConstants.ACC_INTERFACE)); 
             }
           return CUP$result;
@@ -2769,5 +2769,5 @@
 
         }
     }
-};
+};
 
diff -ur ./src/jasmin/sym.java ../../jasmin-2.4/src/jasmin/sym.java
--- ./src/jasmin/sym.java	2010-05-07 07:55:06.000000000 +0200
+++ ../../jasmin-2.4/src/jasmin/sym.java	2011-08-18 17:50:05.000000000 +0200
@@ -1,10 +1,10 @@
 
 //----------------------------------------------------
 // The following code was generated by Java(tm) CUP v0.9d
-// Fri May 07 07:55:04 MSD 2010
+// Mon Jan 10 00:16:53 CET 2011
 //----------------------------------------------------
 
-package jasmin;
+package jasmin;
 
 /** JavaCup generated class containing symbol constants. */
 public class sym {
@@ -81,5 +81,5 @@
   static final int STATIC = 50;
   static final int Str = 66;
   static final int Num = 70;
-};
+};
 
</pre></body></html>